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=-13.7 required=3.0 tests=BAYES_00, 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 B545BC433E0 for ; Fri, 5 Feb 2021 13:48:45 +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 4232764FBF for ; Fri, 5 Feb 2021 13:48:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4232764FBF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.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 A00386F420; Fri, 5 Feb 2021 13:48:44 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6FAC26F420 for ; Fri, 5 Feb 2021 13:48:43 +0000 (UTC) IronPort-SDR: wkVM23XvrJc3uc3v2A7cZKs2Qy/RoLdOT8xXN01Bz9rPYaXWNs1ydaKu91wiLaiLKqE9oo9YFs X6mnEIoG+liQ== X-IronPort-AV: E=McAfee;i="6000,8403,9885"; a="242936348" X-IronPort-AV: E=Sophos;i="5.81,154,1610438400"; d="scan'208";a="242936348" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Feb 2021 05:48:38 -0800 IronPort-SDR: L+41dLm6mSDcWcWGSRLq1QYnY3Gnc195LfqfRmu6XhWKe0WWfW4GpVq7uRGN7jGqKqOhysxoxx EHLlA1+saGdg== X-IronPort-AV: E=Sophos;i="5.81,154,1610438400"; d="scan'208";a="393872308" Received: from fuhrberg-mobl1.ger.corp.intel.com (HELO localhost) ([10.252.33.102]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Feb 2021 05:48:34 -0800 From: Jani Nikula To: intel-gfx@lists.freedesktop.org In-Reply-To: Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: Date: Fri, 05 Feb 2021 15:48:32 +0200 Message-ID: <87v9b6eibz.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v11 01/10] drm/i915: refactor ddi translations into a separate file (v2) 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" T24gVGh1LCAwNCBGZWIgMjAyMSwgSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4g d3JvdGU6Cj4gRnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPgo+IFZpbGxl IHN1Z2dlc3RlZCB0aGlzLCB0aGVzZSB0YWJsZXMgYXJlIHByb2JhYmx5IGJldHRlciBiZWluZwo+ IHN0YW5kYWxvbmUuCj4KPiBUaGlzIGZpeGVzIHVwIHRoZSBjbmwvYnh0IGludGVyZmFjZXMgdG8g YmUgbGlrZSB0aGUgb3RoZXJzLAo+IHRoZSBpbnRlbCBvbmUgSSBsZWZ0IGFsb25lIHNpbmNlIGl0 IGhhcyBhIGZldyBleHRyYSBlbnRyeXBvaW50cy4KPgo+IHYyOiBhZGQgYmFjayBtaXNzaW5nIHJv Y2tldGxha2UgYml0cy4KPiBSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGll ZEByZWRoYXQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBp bnRlbC5jb20+CgpQdXNoZWQgdGhpcyBvbmUsIHdpdGggdGhlIHNwYXJzZSBjb21wbGFpbnRzIGZp eGVkIGJ5IG1ha2luZyBzb21lCmZ1bmN0aW9ucyBzdGF0aWMuCgpCUiwKSmFuaS4KCgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgICAxICsK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAgICAgIHwgMTQxNyAr LS0tLS0tLS0tLS0tLS0tLQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3Ry YW5zLmMgICAgfCAxMzk0ICsrKysrKysrKysrKysrKysKPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGRpX2J1Zl90cmFucy5oICAgIHwgIDEwMCArKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE1 MDcgaW5zZXJ0aW9ucygrKSwgMTQwNSBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5jCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9i dWZfdHJhbnMuaAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBjZTAxNjM0ZDRlYTcuLmQ1 NzFlODc0MTZkYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTI0Myw2ICsyNDMsNyBA QCBpOTE1LXkgKz0gXAo+ICAJZGlzcGxheS9pY2xfZHNpLm8gXAo+ICAJZGlzcGxheS9pbnRlbF9j cnQubyBcCj4gIAlkaXNwbGF5L2ludGVsX2RkaS5vIFwKPiArCWRpc3BsYXkvaW50ZWxfZGRpX2J1 Zl90cmFucy5vIFwKPiAgCWRpc3BsYXkvaW50ZWxfZHAubyBcCj4gIAlkaXNwbGF5L2ludGVsX2Rw X2F1eC5vIFwKPiAgCWRpc3BsYXkvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5vIFwKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiBpbmRleCA1YmM1MDMzYTJkZWEuLmUy YjgyZTA1NTdlNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGku Ywo+IEBAIC0zMyw2ICszMyw3IEBACj4gICNpbmNsdWRlICJpbnRlbF9jb21ib19waHkuaCIKPiAg I2luY2x1ZGUgImludGVsX2Nvbm5lY3Rvci5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZGRpLmgiCj4g KyNpbmNsdWRlICJpbnRlbF9kZGlfYnVmX3RyYW5zLmgiCj4gICNpbmNsdWRlICJpbnRlbF9kaXNw bGF5X3R5cGVzLmgiCj4gICNpbmNsdWRlICJpbnRlbF9kcC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxf ZHBfbXN0LmgiCj4gQEAgLTUzLDEyICs1NCw2IEBACj4gICNpbmNsdWRlICJpbnRlbF92ZHNjLmgi Cj4gICNpbmNsdWRlICJpbnRlbF92cnIuaCIKPiAgCj4gLXN0cnVjdCBkZGlfYnVmX3RyYW5zIHsK PiAtCXUzMiB0cmFuczE7CS8qIGJhbGFuY2UgbGVnIGVuYWJsZSwgZGUtZW1waCBsZXZlbCAqLwo+ IC0JdTMyIHRyYW5zMjsJLyogdnJlZiBzZWwsIHZzd2luZyAqLwo+IC0JdTggaV9ib29zdDsJLyog U0tMOiBJX2Jvb3N0OyB2YWxpZDogMHgwLCAweDEsIDB4MywgMHg3ICovCj4gLX07Cj4gLQo+ICBz dGF0aWMgY29uc3QgdTggaW5kZXhfdG9fZHBfc2lnbmFsX2xldmVsc1tdID0gewo+ICAJWzBdID0g RFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxf MCwKPiAgCVsxXSA9IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMCB8IERQX1RSQUlOX1BS RV9FTVBIX0xFVkVMXzEsCj4gQEAgLTcyLDEzODkgKzY3LDE1IEBAIHN0YXRpYyBjb25zdCB1OCBp bmRleF90b19kcF9zaWduYWxfbGV2ZWxzW10gPSB7Cj4gIAlbOV0gPSBEUF9UUkFJTl9WT0xUQUdF X1NXSU5HX0xFVkVMXzMgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wLAo+ICB9Owo+ICAKPiAt LyogSERNSS9EVkkgbW9kZXMgaWdub3JlIGV2ZXJ5dGhpbmcgYnV0IHRoZSBsYXN0IDIgaXRlbXMu IFNvIHdlIHNoYXJlCj4gLSAqIHRoZW0gZm9yIGJvdGggRFAgYW5kIEZESSB0cmFuc3BvcnRzLCBh bGxvd2luZyB0aG9zZSBwb3J0cyB0bwo+IC0gKiBhdXRvbWF0aWNhbGx5IGFkYXB0IHRvIEhETUkg Y29ubmVjdGlvbnMgYXMgd2VsbAo+IC0gKi8KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVm X3RyYW5zIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Cj4gLQl7IDB4MDBGRkZGRkYsIDB4 MDAwNjAwMEUsIDB4MCB9LAo+IC0JeyAweDAwRDc1RkZGLCAweDAwMDUwMDBBLCAweDAgfSwKPiAt CXsgMHgwMEMzMEZGRiwgMHgwMDA0MDAwNiwgMHgwIH0sCj4gLQl7IDB4ODBBQUFGRkYsIDB4MDAw QjAwMDAsIDB4MCB9LAo+IC0JeyAweDAwRkZGRkZGLCAweDAwMDUwMDBBLCAweDAgfSwKPiAtCXsg MHgwMEQ3NUZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sCj4gLQl7IDB4ODBDMzBGRkYsIDB4MDAwQjAw MDAsIDB4MCB9LAo+IC0JeyAweDAwRkZGRkZGLCAweDAwMDQwMDA2LCAweDAgfSwKPiAtCXsgMHg4 MEQ3NUZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3Ry dWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpW10gPSB7Cj4gLQl7IDB4 MDBGRkZGRkYsIDB4MDAwNzAwMEUsIDB4MCB9LAo+IC0JeyAweDAwRDc1RkZGLCAweDAwMEYwMDBB LCAweDAgfSwKPiAtCXsgMHgwMEMzMEZGRiwgMHgwMDA2MDAwNiwgMHgwIH0sCj4gLQl7IDB4MDBB QUFGRkYsIDB4MDAxRTAwMDAsIDB4MCB9LAo+IC0JeyAweDAwRkZGRkZGLCAweDAwMEYwMDBBLCAw eDAgfSwKPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDE2MDAwNCwgMHgwIH0sCj4gLQl7IDB4MDBDMzBG RkYsIDB4MDAxRTAwMDAsIDB4MCB9LAo+IC0JeyAweDAwRkZGRkZGLCAweDAwMDYwMDA2LCAweDAg fSwKPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDFFMDAwMCwgMHgwIH0sCj4gLX07Cj4gLQo+IC1zdGF0 aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtd ID0gewo+IC0JCQkJCS8qIElkeAlOVCBtViBkCVQgbVYgZAlkYgkqLwo+IC0JeyAweDAwRkZGRkZG LCAweDAwMDYwMDBFLCAweDAgfSwvKiAwOgk0MDAJNDAwCTAJKi8KPiAtCXsgMHgwMEU3OUZGRiwg MHgwMDBFMDAwQywgMHgwIH0sLyogMToJNDAwCTUwMAkyCSovCj4gLQl7IDB4MDBENzVGRkYsIDB4 MDAwNTAwMEEsIDB4MCB9LC8qIDI6CTQwMAk2MDAJMy41CSovCj4gLQl7IDB4MDBGRkZGRkYsIDB4 MDAwNTAwMEEsIDB4MCB9LC8qIDM6CTYwMAk2MDAJMAkqLwo+IC0JeyAweDAwRTc5RkZGLCAweDAw MUQwMDA3LCAweDAgfSwvKiA0Ogk2MDAJNzUwCTIJKi8KPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDBD MDAwNCwgMHgwIH0sLyogNToJNjAwCTkwMAkzLjUJKi8KPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDA0 MDAwNiwgMHgwIH0sLyogNjoJODAwCTgwMAkwCSovCj4gLQl7IDB4ODBFNzlGRkYsIDB4MDAwMzAw MDIsIDB4MCB9LC8qIDc6CTgwMAkxMDAwCTIJKi8KPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDE0MDAw NSwgMHgwIH0sLyogODoJODUwCTg1MAkwCSovCj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAwQzAwMDQs IDB4MCB9LC8qIDk6CTkwMAk5MDAJMAkqLwo+IC0JeyAweDAwRkZGRkZGLCAweDAwMUMwMDAzLCAw eDAgfSwvKiAxMDoJOTUwCTk1MAkwCSovCj4gLQl7IDB4ODBGRkZGRkYsIDB4MDAwMzAwMDIsIDB4 MCB9LC8qIDExOgkxMDAwCTEwMDAJMAkqLwo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewo+IC0JeyAweDAw RkZGRkZGLCAweDAwMDAwMDEyLCAweDAgfSwKPiAtCXsgMHgwMEVCQUZGRiwgMHgwMDAyMDAxMSwg MHgwIH0sCj4gLQl7IDB4MDBDNzFGRkYsIDB4MDAwNjAwMEYsIDB4MCB9LAo+IC0JeyAweDAwQUFB RkZGLCAweDAwMEUwMDBBLCAweDAgfSwKPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDAyMDAxMSwgMHgw IH0sCj4gLQl7IDB4MDBEQjZGRkYsIDB4MDAwNTAwMEYsIDB4MCB9LAo+IC0JeyAweDAwQkVFRkZG LCAweDAwMEEwMDBDLCAweDAgfSwKPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwRiwgMHgwIH0s Cj4gLQl7IDB4MDBEQjZGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAo+IC19Owo+IC0KPiAtc3RhdGlj IGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7 Cj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUsIDB4MCB9LAo+IC0JeyAweDAwRDc1RkZGLCAw eDAwMEUwMDBBLCAweDAgfSwKPiAtCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sCj4g LQl7IDB4ODBCMkNGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAo+IC0JeyAweDAwRkZGRkZGLCAweDAw MEUwMDBBLCAweDAgfSwKPiAtCXsgMHgwMERCNkZGRiwgMHgwMDE2MDAwNSwgMHgwIH0sCj4gLQl7 IDB4ODBDNzFGRkYsIDB4MDAxQTAwMDIsIDB4MCB9LAo+IC0JeyAweDAwRjdERkZGLCAweDAwMTgw MDA0LCAweDAgfSwKPiAtCXsgMHg4MEQ3NUZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCj4gLX07Cj4g LQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3X2RkaV90cmFuc2xhdGlv bnNfZmRpW10gPSB7Cj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAwMTAwMEUsIDB4MCB9LAo+IC0JeyAw eDAwRDc1RkZGLCAweDAwMDQwMDBBLCAweDAgfSwKPiAtCXsgMHgwMEMzMEZGRiwgMHgwMDA3MDAw NiwgMHgwIH0sCj4gLQl7IDB4MDBBQUFGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAo+IC0JeyAweDAw RkZGRkZGLCAweDAwMDQwMDBBLCAweDAgfSwKPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDA5MDAwNCwg MHgwIH0sCj4gLQl7IDB4MDBDMzBGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAo+IC0JeyAweDAwRkZG RkZGLCAweDAwMDcwMDA2LCAweDAgfSwKPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwMCwgMHgw IH0sCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3X2Rk aV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewo+IC0JCQkJCS8qIElkeAlOVCBtViBkCVQgbVYgZGYJ ZGIJKi8KPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0sLyogMDoJNDAwCTQwMAkw CSovCj4gLQl7IDB4MDBENzVGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LC8qIDE6CTQwMAk2MDAJMy41 CSovCj4gLQl7IDB4MDBCRUZGRkYsIDB4MDAxNDAwMDYsIDB4MCB9LC8qIDI6CTQwMAk4MDAJNgkq Lwo+IC0JeyAweDAwRkZGRkZGLCAweDAwMDkwMDBELCAweDAgfSwvKiAzOgk0NTAJNDUwCTAJKi8K PiAtCXsgMHgwMEZGRkZGRiwgMHgwMDBFMDAwQSwgMHgwIH0sLyogNDoJNjAwCTYwMAkwCSovCj4g LQl7IDB4MDBEN0ZGRkYsIDB4MDAxNDAwMDYsIDB4MCB9LC8qIDU6CTYwMAk4MDAJMi41CSovCj4g LQl7IDB4ODBDQjJGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDY6CTYwMAkxMDAwCTQuNQkqLwo+ IC0JeyAweDAwRkZGRkZGLCAweDAwMTQwMDA2LCAweDAgfSwvKiA3Ogk4MDAJODAwCTAJKi8KPiAt CXsgMHg4MEU3OUZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sLyogODoJODAwCTEwMDAJMgkqLwo+IC0J eyAweDgwRkZGRkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA5OgkxMDAwCTEwMDAJMAkqLwo+IC19 Owo+IC0KPiAtLyogU2t5bGFrZSBIIGFuZCBTICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewo+IC0JeyAweDAwMDAyMDE2 LCAweDAwMDAwMEEwLCAweDAgfSwKPiAtCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0s Cj4gLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAo+IC0JeyAweDgwMDA5MDEwLCAw eDAwMDAwMEMwLCAweDEgfSwKPiAtCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5QiwgMHgwIH0sCj4g LQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAo+IC0JeyAweDgwMDA3MDExLCAweDAw MDAwMEMwLCAweDEgfSwKPiAtCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBERiwgMHgwIH0sCj4gLQl7 IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAo+IC19Owo+IC0KPiAtLyogU2t5bGFrZSBV ICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNs YXRpb25zX2RwW10gPSB7Cj4gLQl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTIsIDB4MCB9LAo+IC0J eyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKPiAtCXsgMHg4MDAwNzAxMSwgMHgwMDAw MDBDRCwgMHgxIH0sCj4gLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MSB9LAo+IC0JeyAw eDAwMDAyMDFCLCAweDAwMDAwMDlELCAweDAgfSwKPiAtCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBD MCwgMHgxIH0sCj4gLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAo+IC0JeyAweDAw MDAyMDE2LCAweDAwMDAwMDg4LCAweDAgfSwKPiAtCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwg MHgxIH0sCj4gLX07Cj4gLQo+IC0vKiBTa3lsYWtlIFkgKi8KPiAtc3RhdGljIGNvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKPiAtCXsgMHgw MDAwMDAxOCwgMHgwMDAwMDBBMiwgMHgwIH0sCj4gLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgs IDB4MCB9LAo+IC0JeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKPiAtCXsgMHg4MDAw OTAxMCwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOUQsIDB4 MCB9LAo+IC0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKPiAtCXsgMHg4MDAwNzAx MSwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwODgsIDB4MCB9 LAo+IC0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKPiAtfTsKPiAtCj4gLS8qIEth YnlsYWtlIEggYW5kIFMgKi8KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGti bF9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Cj4gLQl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQTAs IDB4MCB9LAo+IC0JeyAweDAwMDA1MDEyLCAweDAwMDAwMDlCLCAweDAgfSwKPiAtCXsgMHgwMDAw NzAxMSwgMHgwMDAwMDA4OCwgMHgwIH0sCj4gLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4 MSB9LAo+IC0JeyAweDAwMDAyMDE2LCAweDAwMDAwMDlCLCAweDAgfSwKPiAtCXsgMHgwMDAwNTAx MiwgMHgwMDAwMDA4OCwgMHgwIH0sCj4gLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9 LAo+IC0JeyAweDAwMDAyMDE2LCAweDAwMDAwMDk3LCAweDAgfSwKPiAtCXsgMHg4MDAwNTAxMiwg MHgwMDAwMDBDMCwgMHgxIH0sCj4gLX07Cj4gLQo+IC0vKiBLYWJ5bGFrZSBVICovCj4gLXN0YXRp YyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfdV9kZGlfdHJhbnNsYXRpb25zX2RwW10g PSB7Cj4gLQl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTEsIDB4MCB9LAo+IC0JeyAweDAwMDA1MDEy LCAweDAwMDAwMDg4LCAweDAgfSwKPiAtCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDRCwgMHgzIH0s Cj4gLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAo+IC0JeyAweDAwMDAyMDFCLCAw eDAwMDAwMDlELCAweDAgfSwKPiAtCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCj4g LQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MyB9LAo+IC0JeyAweDAwMDAyMDE2LCAweDAw MDAwMDRGLCAweDAgfSwKPiAtCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gLX07 Cj4gLQo+IC0vKiBLYWJ5bGFrZSBZICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90 cmFucyBrYmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Cj4gLQl7IDB4MDAwMDEwMTcsIDB4 MDAwMDAwQTEsIDB4MCB9LAo+IC0JeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKPiAt CXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDRCwgMHgzIH0sCj4gLQl7IDB4ODAwMDgwMEYsIDB4MDAw MDAwQzAsIDB4MyB9LAo+IC0JeyAweDAwMDAxMDE3LCAweDAwMDAwMDlELCAweDAgfSwKPiAtCXsg MHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAw QzAsIDB4MyB9LAo+IC0JeyAweDAwMDAxMDE3LCAweDAwMDAwMDRDLCAweDAgfSwKPiAtCXsgMHg4 MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gLX07Cj4gLQo+IC0vKgo+IC0gKiBTa3lsYWtl L0thYnlsYWtlIEggYW5kIFMKPiAtICogZURQIDEuNCBsb3cgdnN3aW5nIHRyYW5zbGF0aW9uIHBh cmFtZXRlcnMKPiAtICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xf ZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwg MHgwIH0sCj4gLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAo+IC0JeyAweDAwMDA3 MDExLCAweDAwMDAwMEEyLCAweDAgfSwKPiAtCXsgMHgwMDAwOTAxMCwgMHgwMDAwMDA5QywgMHgw IH0sCj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9LAo+IC0JeyAweDAwMDA2MDEz LCAweDAwMDAwMEEyLCAweDAgfSwKPiAtCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBNiwgMHgwIH0s Cj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQUIsIDB4MCB9LAo+IC0JeyAweDAwMDA3MDEzLCAw eDAwMDAwMDlGLCAweDAgfSwKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBERiwgMHgwIH0sCj4g LX07Cj4gLQo+IC0vKgo+IC0gKiBTa3lsYWtlL0thYnlsYWtlIFUKPiAtICogZURQIDEuNCBsb3cg dnN3aW5nIHRyYW5zbGF0aW9uIHBhcmFtZXRlcnMKPiAtICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewo+IC0JeyAw eDAwMDAwMDE4LCAweDAwMDAwMEE4LCAweDAgfSwKPiAtCXsgMHgwMDAwNDAxMywgMHgwMDAwMDBB OSwgMHgwIH0sCj4gLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTIsIDB4MCB9LAo+IC0JeyAweDAw MDA5MDEwLCAweDAwMDAwMDlDLCAweDAgfSwKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOSwg MHgwIH0sCj4gLQl7IDB4MDAwMDYwMTMsIDB4MDAwMDAwQTIsIDB4MCB9LAo+IC0JeyAweDAwMDA3 MDExLCAweDAwMDAwMEE2LCAweDAgfSwKPiAtCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBBQiwgMHgw IH0sCj4gLQl7IDB4MDAwMDUwMTMsIDB4MDAwMDAwOUYsIDB4MCB9LAo+IC0JeyAweDAwMDAwMDE4 LCAweDAwMDAwMERGLCAweDAgfSwKPiAtfTsKPiAtCj4gLS8qCj4gLSAqIFNreWxha2UvS2FieWxh a2UgWQo+IC0gKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycwo+IC0g Ki8KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90cmFuc2xh dGlvbnNfZWRwW10gPSB7Cj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAo+IC0J eyAweDAwMDA0MDEzLCAweDAwMDAwMEFCLCAweDAgfSwKPiAtCXsgMHgwMDAwNzAxMSwgMHgwMDAw MDBBNCwgMHgwIH0sCj4gLQl7IDB4MDAwMDkwMTAsIDB4MDAwMDAwREYsIDB4MCB9LAo+IC0JeyAw eDAwMDAwMDE4LCAweDAwMDAwMEFBLCAweDAgfSwKPiAtCXsgMHgwMDAwNjAxMywgMHgwMDAwMDBB NCwgMHgwIH0sCj4gLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwOUQsIDB4MCB9LAo+IC0JeyAweDAw MDAwMDE4LCAweDAwMDAwMEEwLCAweDAgfSwKPiAtCXsgMHgwMDAwNjAxMiwgMHgwMDAwMDBERiwg MHgwIH0sCj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9LAo+IC19Owo+IC0KPiAt LyogU2t5bGFrZS9LYWJ5bGFrZSBVLCBIIGFuZCBTICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7Cj4gLQl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwQUMsIDB4MCB9LAo+IC0JeyAweDAwMDA1MDEyLCAweDAwMDAwMDlELCAw eDAgfSwKPiAtCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA4OCwgMHgwIH0sCj4gLQl7IDB4MDAwMDAw MTgsIDB4MDAwMDAwQTEsIDB4MCB9LAo+IC0JeyAweDAwMDAwMDE4LCAweDAwMDAwMDk4LCAweDAg fSwKPiAtCXsgMHgwMDAwNDAxMywgMHgwMDAwMDA4OCwgMHgwIH0sCj4gLQl7IDB4ODAwMDYwMTIs IDB4MDAwMDAwQ0QsIDB4MSB9LAo+IC0JeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwK PiAtCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDRCwgMHgxIH0sCS8qIERlZmF1bHQgKi8KPiAtCXsg MHg4MDAwMzAxNSwgMHgwMDAwMDBDMCwgMHgxIH0sCj4gLQl7IDB4ODAwMDAwMTgsIDB4MDAwMDAw QzAsIDB4MSB9LAo+IC19Owo+IC0KPiAtLyogU2t5bGFrZS9LYWJ5bGFrZSBZICovCj4gLXN0YXRp YyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWlb XSA9IHsKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0sCj4gLQl7IDB4MDAwMDUw MTIsIDB4MDAwMDAwREYsIDB4MCB9LAo+IC0JeyAweDgwMDA3MDExLCAweDAwMDAwMENCLCAweDMg fSwKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBNCwgMHgwIH0sCj4gLQl7IDB4MDAwMDAwMTgs IDB4MDAwMDAwOUQsIDB4MCB9LAo+IC0JeyAweDAwMDA0MDEzLCAweDAwMDAwMDgwLCAweDAgfSwK PiAtCXsgMHg4MDAwNjAxMywgMHgwMDAwMDBDMCwgMHgzIH0sCj4gLQl7IDB4MDAwMDAwMTgsIDB4 MDAwMDAwOEEsIDB4MCB9LAo+IC0JeyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDMgfSwJLyog RGVmYXVsdCAqLwo+IC0JeyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDMgfSwKPiAtCXsgMHg4 MDAwMDAxOCwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gLX07Cj4gLQo+IC1zdHJ1Y3QgYnh0X2RkaV9i dWZfdHJhbnMgewo+IC0JdTggbWFyZ2luOwkvKiBzd2luZyB2YWx1ZSAqLwo+IC0JdTggc2NhbGU7 CS8qIHNjYWxlIHZhbHVlICovCj4gLQl1OCBlbmFibGU7CS8qIHNjYWxlIGVuYWJsZSAqLwo+IC0J dTggZGVlbXBoYXNpczsKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9i dWZfdHJhbnMgYnh0X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKPiAtCQkJCQkvKiBJZHgJTlQg bVYgZGlmZglkYiAgKi8KPiAtCXsgNTIsICAweDlBLCAwLCAxMjgsIH0sCS8qIDA6CTQwMAkJMCAg ICovCj4gLQl7IDc4LCAgMHg5QSwgMCwgODUsICB9LAkvKiAxOgk0MDAJCTMuNSAqLwo+IC0JeyAx MDQsIDB4OUEsIDAsIDY0LCAgfSwJLyogMjoJNDAwCQk2ICAgKi8KPiAtCXsgMTU0LCAweDlBLCAw LCA0MywgIH0sCS8qIDM6CTQwMAkJOS41ICovCj4gLQl7IDc3LCAgMHg5QSwgMCwgMTI4LCB9LAkv KiA0Ogk2MDAJCTAgICAqLwo+IC0JeyAxMTYsIDB4OUEsIDAsIDg1LCAgfSwJLyogNToJNjAwCQkz LjUgKi8KPiAtCXsgMTU0LCAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYwMAkJNiAgICovCj4gLQl7 IDEwMiwgMHg5QSwgMCwgMTI4LCB9LAkvKiA3Ogk4MDAJCTAgICAqLwo+IC0JeyAxNTQsIDB4OUEs IDAsIDg1LCAgfSwJLyogODoJODAwCQkzLjUgKi8KPiAtCXsgMTU0LCAweDlBLCAxLCAxMjgsIH0s CS8qIDk6CTEyMDAJCTAgICAqLwo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBieHRf ZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKPiAtCQkJCQkvKiBJ ZHgJTlQgbVYgZGlmZglkYiAgKi8KPiAtCXsgMjYsIDAsIDAsIDEyOCwgfSwJLyogMDoJMjAwCQkw ICAgKi8KPiAtCXsgMzgsIDAsIDAsIDExMiwgfSwJLyogMToJMjAwCQkxLjUgKi8KPiAtCXsgNDgs IDAsIDAsIDk2LCAgfSwJLyogMjoJMjAwCQk0ICAgKi8KPiAtCXsgNTQsIDAsIDAsIDY5LCAgfSwJ LyogMzoJMjAwCQk2ICAgKi8KPiAtCXsgMzIsIDAsIDAsIDEyOCwgfSwJLyogNDoJMjUwCQkwICAg Ki8KPiAtCXsgNDgsIDAsIDAsIDEwNCwgfSwJLyogNToJMjUwCQkxLjUgKi8KPiAtCXsgNTQsIDAs IDAsIDg1LCAgfSwJLyogNjoJMjUwCQk0ICAgKi8KPiAtCXsgNDMsIDAsIDAsIDEyOCwgfSwJLyog NzoJMzAwCQkwICAgKi8KPiAtCXsgNTQsIDAsIDAsIDEwMSwgfSwJLyogODoJMzAwCQkxLjUgKi8K PiAtCXsgNDgsIDAsIDAsIDEyOCwgfSwJLyogOToJMzAwCQkwICAgKi8KPiAtfTsKPiAtCj4gLS8q IEJTcGVjIGhhcyAyIHJlY29tbWVuZGVkIHZhbHVlcyAtIGVudHJpZXMgMCBhbmQgOC4KPiAtICog VXNpbmcgdGhlIGVudHJ5IHdpdGggaGlnaGVyIHZzd2luZy4KPiAtICovCj4gLXN0YXRpYyBjb25z dCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0g ewo+IC0JCQkJCS8qIElkeAlOVCBtViBkaWZmCWRiICAqLwo+IC0JeyA1MiwgIDB4OUEsIDAsIDEy OCwgfSwJLyogMDoJNDAwCQkwICAgKi8KPiAtCXsgNTIsICAweDlBLCAwLCA4NSwgIH0sCS8qIDE6 CTQwMAkJMy41ICovCj4gLQl7IDUyLCAgMHg5QSwgMCwgNjQsICB9LAkvKiAyOgk0MDAJCTYgICAq Lwo+IC0JeyA0MiwgIDB4OUEsIDAsIDQzLCAgfSwJLyogMzoJNDAwCQk5LjUgKi8KPiAtCXsgNzcs ICAweDlBLCAwLCAxMjgsIH0sCS8qIDQ6CTYwMAkJMCAgICovCj4gLQl7IDc3LCAgMHg5QSwgMCwg ODUsICB9LAkvKiA1Ogk2MDAJCTMuNSAqLwo+IC0JeyA3NywgIDB4OUEsIDAsIDY0LCAgfSwJLyog NjoJNjAwCQk2ICAgKi8KPiAtCXsgMTAyLCAweDlBLCAwLCAxMjgsIH0sCS8qIDc6CTgwMAkJMCAg ICovCj4gLQl7IDEwMiwgMHg5QSwgMCwgODUsICB9LAkvKiA4Ogk4MDAJCTMuNSAqLwo+IC0JeyAx NTQsIDB4OUEsIDEsIDEyOCwgfSwJLyogOToJMTIwMAkJMCAgICovCj4gLX07Cj4gLQo+IC1zdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgewo+IC0JdTggZHcyX3N3aW5nX3NlbDsKPiAtCXU4IGR3N19u X3NjYWxhcjsKPiAtCXU4IGR3NF9jdXJzb3JfY29lZmY7Cj4gLQl1OCBkdzRfcG9zdF9jdXJzb3Jf MjsKPiAtCXU4IGR3NF9wb3N0X2N1cnNvcl8xOwo+IC19Owo+IC0KPiAtLyogVm9sdGFnZSBTd2lu ZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIERQICovCj4gLXN0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVZbXSA9 IHsKPiAtCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiAtCXsgMHhBLCAweDVELCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCj4gLQl7IDB4QSwg MHg2QSwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwo+IC0J eyAweEIsIDB4N0EsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAg Ki8KPiAtCXsgMHg2LCAweDdDLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1MCAgIDkwMCAgICAg IDguMiAgICovCj4gLQl7IDB4QSwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1 MDAgICAgICAwLjAgICAqLwo+IC0JeyAweEIsIDB4N0EsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyog NTAwICAgNzAwICAgICAgMi45ICAgKi8KPiAtCXsgMHg2LCAweDdDLCAweDMwLCAweDAwLCAweDBG IH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCj4gLQl7IDB4QiwgMHg3RCwgMHgzQywgMHgw MCwgMHgwMyB9LAkvKiA2NTAgICA3MjUgICAgICAwLjkgICAqLwo+IC0JeyAweDYsIDB4N0MsIDB4 MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KPiAtCXsgMHg2LCAw eDdCLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCj4gLX07 Cj4gLQo+IC0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3Ig SERNSSAqLwo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlf dHJhbnNsYXRpb25zX2hkbWlfMF84NVZbXSA9IHsKPiAtCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYg ZGIgICAgKi8KPiAtCXsgMHhBLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1 MCAgICAgIDAuMCAgICovCj4gLQl7IDB4QiwgMHg3MywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA0 NTAgICA2NTAgICAgICAzLjIgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUg fSwJLyogNDUwICAgODUwICAgICAgNS41ICAgKi8KPiAtCXsgMHhCLCAweDczLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDY1MCAgIDY1MCAgICAgIDAuMCAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgz NywgMHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4NTAgICAgICAyLjMgICAqLwo+IC0JeyAweDYsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KPiAtCXsg MHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICov Cj4gLX07Cj4gLQo+IC0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1 ViBmb3IgZURQICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25s X2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWW10gPSB7Cj4gLQkJCQkJCS8qIE5UIG1WIFRyYW5z IG1WIGRiICAgICovCj4gLQl7IDB4QSwgMHg2NiwgMHgzQSwgMHgwMCwgMHgwNSB9LAkvKiAzODQg ICA1MDAgICAgICAyLjMgICAqLwo+IC0JeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJ LyogMTUzICAgMjAwICAgICAgMi4zICAgKi8KPiAtCXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAw eDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAgICovCj4gLQl7IDB4MSwgMHg3RiwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwo+IC0JeyAweDksIDB4N0Ys IDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8KPiAtCXsgMHhB LCAweDY2LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUwMCAgICAgIDEuMCAgICovCj4g LQl7IDB4QiwgMHg3MCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMg ICAqLwo+IC0JeyAweEMsIDB4NzUsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNTM3ICAgNzAwICAg ICAgMi4zICAgKi8KPiAtCXsgMHgyLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAg IDQwMCAgICAgIDAuMCAgICovCj4gLX07Cj4gLQo+IC0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1t aW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgRFAgKi8KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VltdID0gewo+IC0JCQkJ CQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+IC0JeyAweEEsIDB4NUQsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiAtCXsgMHhBLCAweDZBLCAweDM4 LCAweDAwLCAweDA3IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4gLQl7IDB4QiwgMHg3 QSwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwo+IC0JeyAw eDYsIDB4N0MsIDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8K PiAtCXsgMHhBLCAweDY5LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAu MCAgICovCj4gLQl7IDB4QiwgMHg3QSwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAg ICAgICAyLjkgICAqLwo+IC0JeyAweDYsIDB4N0MsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAw ICAgOTAwICAgICAgNS4xICAgKi8KPiAtCXsgMHhCLCAweDdELCAweDNDLCAweDAwLCAweDAzIH0s CS8qIDY1MCAgIDcyNSAgICAgIDAuOSAgICovCj4gLQl7IDB4NiwgMHg3QywgMHgzNCwgMHgwMCwg MHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+IC0JeyAweDYsIDB4N0IsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KPiAtfTsKPiAtCj4gLS8q IFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuOTVWIGZvciBIRE1JICovCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlv bnNfaGRtaV8wXzk1VltdID0gewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ IC0JeyAweEEsIDB4NUMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4w ICAgKi8KPiAtCXsgMHhCLCAweDY5LCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDQwMCAgIDYwMCAg ICAgIDMuNSAgICovCj4gLQl7IDB4NSwgMHg3NiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0MDAg ICA4MDAgICAgICA2LjAgICAqLwo+IC0JeyAweEEsIDB4NUUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KPiAtCXsgMHhCLCAweDY5LCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCj4gLQl7IDB4QiwgMHg3OSwgMHgzNSwg MHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwo+IC0JeyAweDYsIDB4N0Qs IDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogNjAwICAgMTAwMCAgICAgNC40ICAgKi8KPiAtCXsgMHg1 LCAweDc2LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAgIDgwMCAgICAgIDAuMCAgICovCj4g LQl7IDB4NiwgMHg3RCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4MDAgICAxMDAwICAgICAxLjkg ICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODUwICAgMTA1MCAg ICAgMS44ICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAg IDEwNTAgICAgIDAuMCAgICovCj4gLX07Cj4gLQo+IC0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1t aW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgZURQICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWW10gPSB7Cj4gLQkJ CQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCj4gLQl7IDB4QSwgMHg2MSwgMHgzQSwgMHgw MCwgMHgwNSB9LAkvKiAzODQgICA1MDAgICAgICAyLjMgICAqLwo+IC0JeyAweDAsIDB4N0YsIDB4 MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUzICAgMjAwICAgICAgMi4zICAgKi8KPiAtCXsgMHg4LCAw eDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAgICovCj4gLQl7 IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAq Lwo+IC0JeyAweDksIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAg Mi4zICAgKi8KPiAtCXsgMHhBLCAweDYxLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUw MCAgICAgIDEuMCAgICovCj4gLQl7IDB4QiwgMHg2OCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA0 NjAgICA2MDAgICAgICAyLjMgICAqLwo+IC0JeyAweEMsIDB4NkUsIDB4MzksIDB4MDAsIDB4MDYg fSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAgKi8KPiAtCXsgMHg0LCAweDdGLCAweDNBLCAweDAw LCAweDA1IH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCj4gLQl7IDB4MiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwo+IC19Owo+IC0KPiAt LyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIERQICovCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlv bnNfZHBfMV8wNVZbXSA9IHsKPiAtCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiAt CXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAg ICovCj4gLQl7IDB4QiwgMHg2NCwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAg ICAzLjUgICAqLwo+IC0JeyAweDUsIDB4NzAsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDAwICAg ODAwICAgICAgNi4wICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDJDLCAweDAwLCAweDEzIH0sCS8q IDQwMCAgIDEwNTAgICAgIDguNCAgICovCj4gLQl7IDB4QiwgMHg2NCwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiA2MDAgICA2MDAgICAgICAwLjAgICAqLwo+IC0JeyAweDUsIDB4NzMsIDB4MzUsIDB4 MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KPiAtCXsgMHg2LCAweDdGLCAw eDMwLCAweDAwLCAweDBGIH0sCS8qIDU1MCAgIDEwNTAgICAgIDUuNiAgICovCj4gLQl7IDB4NSwg MHg3NiwgMHgzRSwgMHgwMCwgMHgwMSB9LAkvKiA4NTAgICA5MDAgICAgICAwLjUgICAqLwo+IC0J eyAweDYsIDB4N0YsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNzUwICAgMTA1MCAgICAgMi45ICAg Ki8KPiAtCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAgICAg IDAuMCAgICovCj4gLX07Cj4gLQo+IC0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBW Y2NJTyAxLjA1ViBmb3IgSERNSSAqLwo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVZbXSA9IHsKPiAtCQkJCQkJLyog TlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiAtCXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCj4gLQl7IDB4QiwgMHg2NCwgMHgzNywgMHgw MCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAqLwo+IC0JeyAweDUsIDB4NzAsIDB4 MzEsIDB4MDAsIDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KPiAtCXsgMHhBLCAw eDVCLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAgICovCj4gLQl7 IDB4QiwgMHg2NCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2MDAgICA2MDAgICAgICAwLjAgICAq Lwo+IC0JeyAweDUsIDB4NzMsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAg My4wICAgKi8KPiAtCXsgMHg2LCAweDdDLCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDYwMCAgIDEw MDAgICAgIDQuNCAgICovCj4gLQl7IDB4NSwgMHg3MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4 MDAgICA4MDAgICAgICAwLjAgICAqLwo+IC0JeyAweDYsIDB4N0MsIDB4MzksIDB4MDAsIDB4MDYg fSwJLyogODAwICAgMTAwMCAgICAgMS45ICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDM5LCAweDAw LCAweDA2IH0sCS8qIDg1MCAgIDEwNTAgICAgIDEuOCAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAxMDUwICAxMDUwICAgICAwLjAgICAqLwo+IC19Owo+IC0KPiAt LyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIGVEUCAqLwo+ IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRp b25zX2VkcF8xXzA1VltdID0gewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ IC0JeyAweEEsIDB4NUUsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4z ICAgKi8KPiAtCXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE1MyAgIDIwMCAg ICAgIDIuMyAgICovCj4gLQl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxOTIg ICAyNTAgICAgICAyLjMgICAqLwo+IC0JeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJ LyogMjMwICAgMzAwICAgICAgMi4zICAgKi8KPiAtCXsgMHg5LCAweDdGLCAweDM4LCAweDAwLCAw eDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAgICovCj4gLQl7IDB4QSwgMHg1RSwgMHgzQywg MHgwMCwgMHgwMyB9LAkvKiA0NDYgICA1MDAgICAgICAxLjAgICAqLwo+IC0JeyAweEIsIDB4NjQs IDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNDYwICAgNjAwICAgICAgMi4zICAgKi8KPiAtCXsgMHhF LCAweDZBLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAgICovCj4g LQl7IDB4MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAg ICAqLwo+IC19Owo+IC0KPiAtLyogaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zICovCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2RwX2hicjJbXSA9IHsKPiAtCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIg ICAgKi8KPiAtCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAg ICAgIDAuMCAgICovCj4gLQl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAg ICA1MDAgICAgICAzLjEgICAqLwo+IC0JeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJ LyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAw eDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCj4gLQl7IDB4QSwgMHg0QywgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwo+IC0JeyAweEMsIDB4NzMs IDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KPiAtCXsgMHg2 LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCj4g LQl7IDB4QywgMHg2QywgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYg ICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAg ICAgMy41ICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAg IDkwMCAgICAgIDAuMCAgICovCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMltdID0g ewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+IC0JeyAweDAsIDB4N0YsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgMjAwICAgICAgMC4wICAgKi8KPiAtCXsgMHg4LCAw eDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCj4gLQl7 IDB4MSwgMHg3RiwgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAyMDAgICAzMDAgICAgICAzLjUgICAq Lwo+IC0JeyAweDksIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogMjAwICAgMzUwICAgICAg NC45ICAgKi8KPiAtCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgIDI1 MCAgICAgIDAuMCAgICovCj4gLQl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAy NTAgICAzMDAgICAgICAxLjYgICAqLwo+IC0JeyAweDksIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEg fSwJLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8KPiAtCXsgMHgxLCAweDdGLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCj4gLQl7IDB4OSwgMHg3RiwgMHgz OCwgMHgwMCwgMHgwNyB9LAkvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLwo+IC0JeyAweDksIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiAtfTsK PiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzW10gPSB7Cj4gLQkJCQkJCS8qIE5UIG1WIFRyYW5z IG1WIGRiICAgICovCj4gLQl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAg ICAzNTAgICAgICAwLjAgICAqLwo+IC0JeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJ LyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KPiAtCXsgMHhDLCAweDcxLCAweDJGLCAweDAwLCAw eDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgyQiwg MHgwMCwgMHgxNCB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwo+IC0JeyAweEEsIDB4NEMs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KPiAtCXsgMHhD LCAweDczLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCj4g LQl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEg ICAqLwo+IC0JeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAg ICAgMC42ICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAg IDkwMCAgICAgIDMuNSAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA5MDAgICA5MDAgICAgICAwLjAgICAqLwo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtd ID0gewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+IC0JeyAweEEsIDB4NjAs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KPiAtCXsgMHhC LCAweDczLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDQ1MCAgIDY1MCAgICAgIDMuMiAgICovCj4g LQl7IDB4NiwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0NTAgICA4NTAgICAgICA1LjUg ICAqLwo+IC0JeyAweEIsIDB4NzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNjUwICAg ICAgMC4wICAgQUxTICovCj4gLQl7IDB4NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2 NTAgICA4NTAgICAgICAyLjMgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAg fSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDM1LCAweDAw LCAweDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCj4gLX07Cj4gLQo+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcFtdID0gewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+IC0JeyAw eEEsIDB4MzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8K PiAtCXsgMHhBLCAweDQ3LCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMu MSAgICovCj4gLQl7IDB4QywgMHg2NCwgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiAzNTAgICA3MDAg ICAgICA2LjAgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogMzUw ICAgOTAwICAgICAgOC4yICAgKi8KPiAtCXsgMHhBLCAweDQ2LCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4gLQl7IDB4QywgMHg2NCwgMHgzOCwgMHgwMCwg MHgwNyB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4MzIs IDB4MDAsIDB4MEQgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiAtCXsgMHhDLCAweDYx LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4gLQl7IDB4 NiwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+ IC0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4w ICAgKi8KPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg anNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnJbXSA9IHsKPiAtCQkJCQkJLyog TlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiAtCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAw IH0sICAgICAgICAvKiAyMDAgICAyMDAgICAgICAwLjAgICAqLwo+IC0JeyAweDgsIDB4N0YsIDB4 MzgsIDB4MDAsIDB4MDcgfSwgICAgICAgIC8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCj4gLQl7 IDB4MSwgMHg3RiwgMHgzMywgMHgwMCwgMHgwQyB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAg My41ICAgKi8KPiAtCXsgMHhBLCAweDM1LCAweDM2LCAweDAwLCAweDA5IH0sICAgICAgICAvKiAy MDAgICAzNTAgICAgICA0LjkgICAqLwo+IC0JeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAg fSwgICAgICAgIC8qIDI1MCAgIDI1MCAgICAgIDAuMCAgICovCj4gLQl7IDB4MSwgMHg3RiwgMHgz OCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KPiAtCXsg MHhBLCAweDM1LCAweDM1LCAweDAwLCAweDBBIH0sICAgICAgICAvKiAyNTAgICAzNTAgICAgICAy LjkgICAqLwo+IC0JeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDMw MCAgIDMwMCAgICAgIDAuMCAgICovCj4gLQl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9 LCAgICAgICAgLyogMzAwICAgMzUwICAgICAgMS4zICAgKi8KPiAtCXsgMHhBLCAweDM1LCAweDNG LCAweDAwLCAweDAwIH0sICAgICAgICAvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+IC19Owo+ IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBqc2xfY29tYm9fcGh5 X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJbXSA9IHsKPiAtCQkJCQkJLyogTlQgbVYgVHJhbnMg bVYgZGIgICAgKi8KPiAtCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAv KiAyMDAgICAyMDAgICAgICAwLjAgICAqLwo+IC0JeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4 MDAgfSwgICAgICAgIC8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCj4gLQl7IDB4MSwgMHg3Riwg MHgzRCwgMHgwMCwgMHgwMiB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAgMy41ICAgKi8KPiAt CXsgMHhBLCAweDM1LCAweDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAyMDAgICAzNTAgICAg ICA0LjkgICAqLwo+IC0JeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8q IDI1MCAgIDI1MCAgICAgIDAuMCAgICovCj4gLQl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgw MCB9LCAgICAgICAgLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KPiAtCXsgMHhBLCAweDM1LCAw eDNBLCAweDAwLCAweDA1IH0sICAgICAgICAvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLwo+IC0J eyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDMwMCAgIDMwMCAgICAg IDAuMCAgICovCj4gLQl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyog MzAwICAgMzUwICAgICAgMS4zICAgKi8KPiAtCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAw IH0sICAgICAgICAvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+IC19Owo+IC0KPiAtc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHBfcmJyX2hicltdID0gewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAq Lwo+IC0JeyAweEEsIDB4MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAg MC4wICAgKi8KPiAtCXsgMHhBLCAweDQ4LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDM1MCAgIDUw MCAgICAgIDMuMSAgICovCj4gLQl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAz NTAgICA3MDAgICAgICA2LjAgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMg fSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KPiAtCXsgMHhBLCAweDQzLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4gLQl7IDB4QywgMHg2MCwgMHgz NiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+IC0JeyAweDYsIDB4 N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiAtCXsg MHhDLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICov Cj4gLQl7IDB4NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2MDAgICA5MDAgICAgICAz LjUgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAw ICAgICAgMC4wICAgKi8KPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyM1tdID0g ewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+IC0JeyAweEEsIDB4MzIsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiAtCXsgMHhBLCAw eDQ4LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4gLQl7 IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAq Lwo+IC0JeyAweDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyogMzUwICAgOTAwICAgICAg OC4yICAgKi8KPiAtCXsgMHhBLCAweDQzLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUw MCAgICAgIDAuMCAgICovCj4gLQl7IDB4QywgMHg2MCwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1 MDAgICA3MDAgICAgICAyLjkgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYg fSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiAtCXsgMHhDLCAweDU4LCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgz NSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+IC0JeyAweDYsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KPiAtfTsK PiAtCj4gLXN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgewo+IC0JdTMyIGNyaV90eGRl ZW1waF9vdmVycmlkZV8xMV82Owo+IC0JdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV81XzA7Cj4g LQl1MzIgY3JpX3R4ZGVlbXBoX292ZXJyaWRlXzE3XzEyOwo+IC19Owo+IC0KPiAtc3RhdGljIGNv bnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9kZGlfdHJhbnNs YXRpb25zX3Jicl9oYnJbXSA9IHsKPiAtCQkJCS8qIFZvbHRhZ2Ugc3dpbmcgIHByZS1lbXBoYXNp cyAqLwo+IC0JeyAweDE4LCAweDAwLCAweDAwIH0sCS8qIDAgICAgICAgICAgICAgIDAgICAqLwo+ IC0JeyAweDFELCAweDAwLCAweDA1IH0sCS8qIDAgICAgICAgICAgICAgIDEgICAqLwo+IC0JeyAw eDI0LCAweDAwLCAweDBDIH0sCS8qIDAgICAgICAgICAgICAgIDIgICAqLwo+IC0JeyAweDJCLCAw eDAwLCAweDE0IH0sCS8qIDAgICAgICAgICAgICAgIDMgICAqLwo+IC0JeyAweDIxLCAweDAwLCAw eDAwIH0sCS8qIDEgICAgICAgICAgICAgIDAgICAqLwo+IC0JeyAweDJCLCAweDAwLCAweDA4IH0s CS8qIDEgICAgICAgICAgICAgIDEgICAqLwo+IC0JeyAweDMwLCAweDAwLCAweDBGIH0sCS8qIDEg ICAgICAgICAgICAgIDIgICAqLwo+IC0JeyAweDMxLCAweDAwLCAweDAzIH0sCS8qIDIgICAgICAg ICAgICAgIDAgICAqLwo+IC0JeyAweDM0LCAweDAwLCAweDBCIH0sCS8qIDIgICAgICAgICAgICAg IDEgICAqLwo+IC0JeyAweDNGLCAweDAwLCAweDAwIH0sCS8qIDMgICAgICAgICAgICAgIDAgICAq Lwo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJh bnMgaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyM1tdID0gewo+IC0JCQkJLyog Vm9sdGFnZSBzd2luZyAgcHJlLWVtcGhhc2lzICovCj4gLQl7IDB4MTgsIDB4MDAsIDB4MDAgfSwJ LyogMCAgICAgICAgICAgICAgMCAgICovCj4gLQl7IDB4MUQsIDB4MDAsIDB4MDUgfSwJLyogMCAg ICAgICAgICAgICAgMSAgICovCj4gLQl7IDB4MjQsIDB4MDAsIDB4MEMgfSwJLyogMCAgICAgICAg ICAgICAgMiAgICovCj4gLQl7IDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMCAgICAgICAgICAgICAg MyAgICovCj4gLQl7IDB4MjYsIDB4MDAsIDB4MDAgfSwJLyogMSAgICAgICAgICAgICAgMCAgICov Cj4gLQl7IDB4MkMsIDB4MDAsIDB4MDcgfSwJLyogMSAgICAgICAgICAgICAgMSAgICovCj4gLQl7 IDB4MzMsIDB4MDAsIDB4MEMgfSwJLyogMSAgICAgICAgICAgICAgMiAgICovCj4gLQl7IDB4MkUs IDB4MDAsIDB4MDAgfSwJLyogMiAgICAgICAgICAgICAgMCAgICovCj4gLQl7IDB4MzYsIDB4MDAs IDB4MDkgfSwJLyogMiAgICAgICAgICAgICAgMSAgICovCj4gLQl7IDB4M0YsIDB4MDAsIDB4MDAg fSwJLyogMyAgICAgICAgICAgICAgMCAgICovCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3Ry dWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNf aGRtaVtdID0gewo+IC0JCQkJLyogSERNSSBQcmVzZXQJVlMJUHJlLWVtcGggKi8KPiAtCXsgMHgx QSwgMHgwLCAweDAgfSwJLyogMQkJNDAwbVYJMGRCICovCj4gLQl7IDB4MjAsIDB4MCwgMHgwIH0s CS8qIDIJCTUwMG1WCTBkQiAqLwo+IC0JeyAweDI5LCAweDAsIDB4MCB9LAkvKiAzCQk2NTBtVgkw ZEIgKi8KPiAtCXsgMHgzMiwgMHgwLCAweDAgfSwJLyogNAkJODAwbVYJMGRCICovCj4gLQl7IDB4 M0YsIDB4MCwgMHgwIH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8KPiAtCXsgMHgzQSwgMHgwLCAweDUg fSwJLyogNgkJRnVsbAktMS41IGRCICovCj4gLQl7IDB4MzksIDB4MCwgMHg2IH0sCS8qIDcJCUZ1 bGwJLTEuOCBkQiAqLwo+IC0JeyAweDM4LCAweDAsIDB4NyB9LAkvKiA4CQlGdWxsCS0yIGRCICov Cj4gLQl7IDB4MzcsIDB4MCwgMHg4IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLwo+IC0JeyAweDM2 LCAweDAsIDB4OSB9LAkvKiAxMAkJRnVsbAktMyBkQiAqLwo+IC19Owo+IC0KPiAtc3RydWN0IHRn bF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgewo+IC0JdTMyIGRrbF92c3dpbmdfY29udHJvbDsKPiAt CXUzMiBka2xfcHJlc2hvb3RfY29udHJvbDsKPiAtCXUzMiBka2xfZGVfZW1waGFzaXNfY29udHJv bDsKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90 cmFucyB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNbXSA9IHsKPiAtCQkJCS8qIFZTCXByZS1lbXAJ Tm9uLXRyYW5zIG1WCVByZS1lbXBoIGRCICovCj4gLQl7IDB4NywgMHgwLCAweDAwIH0sCS8qIDAJ MAk0MDBtVgkJMCBkQiAqLwo+IC0JeyAweDUsIDB4MCwgMHgwNSB9LAkvKiAwCTEJNDAwbVYJCTMu NSBkQiAqLwo+IC0JeyAweDIsIDB4MCwgMHgwQiB9LAkvKiAwCTIJNDAwbVYJCTYgZEIgKi8KPiAt CXsgMHgwLCAweDAsIDB4MTggfSwJLyogMAkzCTQwMG1WCQk5LjUgZEIgKi8KPiAtCXsgMHg1LCAw eDAsIDB4MDAgfSwJLyogMQkwCTYwMG1WCQkwIGRCICovCj4gLQl7IDB4MiwgMHgwLCAweDA4IH0s CS8qIDEJMQk2MDBtVgkJMy41IGRCICovCj4gLQl7IDB4MCwgMHgwLCAweDE0IH0sCS8qIDEJMgk2 MDBtVgkJNiBkQiAqLwo+IC0JeyAweDIsIDB4MCwgMHgwMCB9LAkvKiAyCTAJODAwbVYJCTAgZEIg Ki8KPiAtCXsgMHgwLCAweDAsIDB4MEIgfSwJLyogMgkxCTgwMG1WCQkzLjUgZEIgKi8KPiAtCXsg MHgwLCAweDAsIDB4MDAgfSwJLyogMwkwCTEyMDBtVgkJMCBkQiBIRE1JIGRlZmF1bHQgKi8KPiAt fTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyB0 Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNfaGJyMltdID0gewo+IC0JCQkJLyogVlMJcHJlLWVtcAlO b24tdHJhbnMgbVYJUHJlLWVtcGggZEIgKi8KPiAtCXsgMHg3LCAweDAsIDB4MDAgfSwJLyogMAkw CTQwMG1WCQkwIGRCICovCj4gLQl7IDB4NSwgMHgwLCAweDA1IH0sCS8qIDAJMQk0MDBtVgkJMy41 IGRCICovCj4gLQl7IDB4MiwgMHgwLCAweDBCIH0sCS8qIDAJMgk0MDBtVgkJNiBkQiAqLwo+IC0J eyAweDAsIDB4MCwgMHgxOSB9LAkvKiAwCTMJNDAwbVYJCTkuNSBkQiAqLwo+IC0JeyAweDUsIDB4 MCwgMHgwMCB9LAkvKiAxCTAJNjAwbVYJCTAgZEIgKi8KPiAtCXsgMHgyLCAweDAsIDB4MDggfSwJ LyogMQkxCTYwMG1WCQkzLjUgZEIgKi8KPiAtCXsgMHgwLCAweDAsIDB4MTQgfSwJLyogMQkyCTYw MG1WCQk2IGRCICovCj4gLQl7IDB4MiwgMHgwLCAweDAwIH0sCS8qIDIJMAk4MDBtVgkJMCBkQiAq Lwo+IC0JeyAweDAsIDB4MCwgMHgwQiB9LAkvKiAyCTEJODAwbVYJCTMuNSBkQiAqLwo+IC0JeyAw eDAsIDB4MCwgMHgwMCB9LAkvKiAzCTAJMTIwMG1WCQkwIGRCIEhETUkgZGVmYXVsdCAqLwo+IC19 Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRn bF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zW10gPSB7Cj4gLQkJCQkvKiBIRE1JIFByZXNldAlWUwlQ cmUtZW1waCAqLwo+IC0JeyAweDcsIDB4MCwgMHgwIH0sCS8qIDEJCTQwMG1WCTBkQiAqLwo+IC0J eyAweDYsIDB4MCwgMHgwIH0sCS8qIDIJCTUwMG1WCTBkQiAqLwo+IC0JeyAweDQsIDB4MCwgMHgw IH0sCS8qIDMJCTY1MG1WCTBkQiAqLwo+IC0JeyAweDIsIDB4MCwgMHgwIH0sCS8qIDQJCTgwMG1W CTBkQiAqLwo+IC0JeyAweDAsIDB4MCwgMHgwIH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8KPiAtCXsg MHgwLCAweDAsIDB4NSB9LAkvKiA2CQlGdWxsCS0xLjUgZEIgKi8KPiAtCXsgMHgwLCAweDAsIDB4 NiB9LAkvKiA3CQlGdWxsCS0xLjggZEIgKi8KPiAtCXsgMHgwLCAweDAsIDB4NyB9LAkvKiA4CQlG dWxsCS0yIGRCICovCj4gLQl7IDB4MCwgMHgwLCAweDggfSwJLyogOQkJRnVsbAktMi41IGRCICov Cj4gLQl7IDB4MCwgMHgwLCAweEEgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KPiAtfTsKPiAtCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2RwX2hicltdID0gewo+IC0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAg ICAqLwo+IC0JeyAweEEsIDB4MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAg ICAgMC4wICAgKi8KPiAtCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAg IDUwMCAgICAgIDMuMSAgICovCj4gLQl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkv KiAzNTAgICA3MDAgICAgICA2LjAgICAqLwo+IC0JeyAweDYsIDB4N0QsIDB4MkIsIDB4MDAsIDB4 MTQgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KPiAtCXsgMHhBLCAweDRDLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4gLQl7IDB4QywgMHg3Mywg MHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+IC0JeyAweDYs IDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiAt CXsgMHhDLCAweDZDLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAg ICovCj4gLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAg ICAzLjUgICAqLwo+IC0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAg OTAwICAgICAgMC4wICAgKi8KPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2Rk aV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJbXSA9IHsK PiAtCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiAtCXsgMHhBLCAweDM1LCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCj4gLQl7IDB4QSwgMHg0 RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwo+IC0JeyAw eEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8K PiAtCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDgu MiAgICovCj4gLQl7IDB4QSwgMHg0NywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAg ICAgICAwLjAgICAqLwo+IC0JeyAweEMsIDB4NjMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAw ICAgNzAwICAgICAgMi45ICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0s CS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCj4gLQl7IDB4QywgMHg2MSwgMHgzQywgMHgwMCwg MHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwo+IC0JeyAweDYsIDB4N0IsIDB4MzUs IDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KPiAtCXsgMHg2LCAweDdG LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCj4gLX07Cj4g LQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF91eV9jb21ib19w aHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyW10gPSB7Cj4gLQkJCQkJCS8qIE5UIG1WIFRyYW5z IG1WIGRiICAgICovCj4gLQl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAg ICAzNTAgICAgICAwLjAgICAqLwo+IC0JeyAweEEsIDB4NEYsIDB4MzYsIDB4MDAsIDB4MDkgfSwJ LyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KPiAtCXsgMHhDLCAweDYwLCAweDMyLCAweDAwLCAw eDBEIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCj4gLQl7IDB4QywgMHg3RiwgMHgyRCwg MHgwMCwgMHgxMiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwo+IC0JeyAweEMsIDB4NDcs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KPiAtCXsgMHhD LCAweDZGLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCj4g LQl7IDB4NiwgMHg3RCwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEg ICAqLwo+IC0JeyAweDYsIDB4NjAsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAg ICAgMC42ICAgKi8KPiAtCXsgMHg2LCAweDdGLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDYwMCAg IDkwMCAgICAgIDMuNSAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA5MDAgICA5MDAgICAgICAwLjAgICAqLwo+IC19Owo+IC0KPiAtLyoKPiAtICogQ2xvbmVkIHRo ZSBIT0JMIGVudHJ5IHRvIGNvbXBseSB3aXRoIHRoZSB2b2x0YWdlIGFuZCBwcmUtZW1waGFzaXMg ZW50cmllcwo+IC0gKiB0aGF0IERpc3BsYXlQb3J0IHNwZWNpZmljYXRpb24gcmVxdWlyZXMKPiAt ICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyX2hvYmxbXSA9IHsKPiAtCQkJCQkJLyogVlMJcHJl LWVtcAkqLwo+IC0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkwCSovCj4g LQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTEJKi8KPiAtCXsgMHg2LCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDAJMgkqLwo+IC0JeyAweDYsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogMAkzCSovCj4gLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiAxCTAJKi8KPiAtCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEJ MQkqLwo+IC0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMQkyCSovCj4gLQl7 IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAyCTAJKi8KPiAtCXsgMHg2LCAweDdG LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDIJMQkqLwo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyW10gPSB7Cj4gLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCj4gLQl7IDB4 QSwgMHgyRiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+ IC0JeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4x ICAgKi8KPiAtCXsgMHhDLCAweDYzLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAg ICAgIDYuMCAgICovCj4gLQl7IDB4NiwgMHg3RCwgMHgyQSwgMHgwMCwgMHgxNSB9LAkvKiAzNTAg ICA5MDAgICAgICA4LjIgICAqLwo+IC0JeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KPiAtCXsgMHhDLCAweDczLCAweDM0LCAweDAwLCAw eDBCIH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgyRiwg MHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwo+IC0JeyAweEMsIDB4NkUs IDB4M0UsIDB4MDAsIDB4MDEgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KPiAtCXsgMHg2 LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCj4g LQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAg ICAqLwo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBy a2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzW10gPSB7Cj4gLQkJCQkJ CS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCj4gLQl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+IC0JeyAweEEsIDB4NTAsIDB4Mzgs IDB4MDAsIDB4MDcgfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KPiAtCXsgMHhDLCAweDYx LCAweDMzLCAweDAwLCAweDBDIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCj4gLQl7IDB4 NiwgMHg3RiwgMHgyRSwgMHgwMCwgMHgxMSB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwo+ IC0JeyAweEEsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4w ICAgKi8KPiAtCXsgMHhDLCAweDVGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDUwMCAgIDcwMCAg ICAgIDIuOSAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAg ICA5MDAgICAgICA1LjEgICAqLwo+IC0JeyAweEMsIDB4NUYsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KPiAtCXsgMHg2LCAweDdFLCAweDM2LCAweDAwLCAw eDA5IH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCj4gLQl7IDB4NiwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwo+IC19Owo+IC0KPiAtc3Rh dGljIGJvb2wgaXNfaG9ibF9idWZfdHJhbnMoY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z ICp0YWJsZSkKPiAtewo+IC0JcmV0dXJuIHRhYmxlID09IHRnbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19lZHBfaGJyMl9ob2JsOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMgKgo+IC1iZHdfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlpZiAo ZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+IC0JCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2VkcCk7Cj4gLQkJcmV0dXJuIGJkd19kZGlfdHJhbnNs YXRpb25zX2VkcDsKPiAtCX0gZWxzZSB7Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3 X2RkaV90cmFuc2xhdGlvbnNfZHApOwo+IC0JCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19k cDsKPiAtCX0KPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoK PiAtc2tsX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGlu dCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlpZiAoSVNfU0tMX1VMWChkZXZf cHJpdikpIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRp b25zX2RwKTsKPiAtCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiAtCX0gZWxz ZSBpZiAoSVNfU0tMX1VMVChkZXZfcHJpdikpIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiAtCQlyZXR1cm4gc2tsX3VfZGRpX3RyYW5z bGF0aW9uc19kcDsKPiAtCX0gZWxzZSB7Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2ts X2RkaV90cmFuc2xhdGlvbnNfZHApOwo+IC0JCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19k cDsKPiAtCX0KPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoK PiAta2JsX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGlu dCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlpZiAoSVNfS0JMX1VMWChkZXZf cHJpdikgfHwKPiAtCSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8fAo+IC0JICAgIElTX0NNTF9V TFgoZGV2X3ByaXYpKSB7Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3lfZGRpX3Ry YW5zbGF0aW9uc19kcCk7Cj4gLQkJcmV0dXJuIGtibF95X2RkaV90cmFuc2xhdGlvbnNfZHA7Cj4g LQl9IGVsc2UgaWYgKElTX0tCTF9VTFQoZGV2X3ByaXYpIHx8Cj4gLQkJICAgSVNfQ0ZMX1VMVChk ZXZfcHJpdikgfHwKPiAtCQkgICBJU19DTUxfVUxUKGRldl9wcml2KSkgewo+IC0JCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGtibF91X2RkaV90cmFuc2xhdGlvbnNfZHApOwo+IC0JCXJldHVybiBr YmxfdV9kZGlfdHJhbnNsYXRpb25zX2RwOwo+IC0JfSBlbHNlIHsKPiAtCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShrYmxfZGRpX3RyYW5zbGF0aW9uc19kcCk7Cj4gLQkJcmV0dXJuIGtibF9kZGlf dHJhbnNsYXRpb25zX2RwOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMgKgo+IC1za2xfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlpZiAo ZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+IC0JCWlmIChJU19TS0xfVUxYKGRldl9w cml2KSB8fAo+IC0JCSAgICBJU19LQkxfVUxYKGRldl9wcml2KSB8fAo+IC0JCSAgICBJU19DRkxf VUxYKGRldl9wcml2KSB8fAo+IC0JCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgewo+IC0JCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRpb25zX2VkcCk7Cj4gLQkJ CXJldHVybiBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2VkcDsKPiAtCQl9IGVsc2UgaWYgKElTX1NL TF9VTFQoZGV2X3ByaXYpIHx8Cj4gLQkJCSAgIElTX0tCTF9VTFQoZGV2X3ByaXYpIHx8Cj4gLQkJ CSAgIElTX0NGTF9VTFQoZGV2X3ByaXYpIHx8Cj4gLQkJCSAgIElTX0NNTF9VTFQoZGV2X3ByaXYp KSB7Cj4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF91X2RkaV90cmFuc2xhdGlvbnNf ZWRwKTsKPiAtCQkJcmV0dXJuIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZWRwOwo+IC0JCX0gZWxz ZSB7Cj4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF9kZGlfdHJhbnNsYXRpb25zX2Vk cCk7Cj4gLQkJCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19lZHA7Cj4gLQkJfQo+IC0JfQo+ IC0KPiAtCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgfHwKPiAtCSAgICBJU19DT0ZGRUVMQUtF KGRldl9wcml2KSB8fAo+IC0JICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpCj4gLQkJcmV0dXJu IGtibF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gLQllbHNlCj4gLQkJ cmV0dXJuIHNrbF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCj4gLXNrbF9nZXRfYnVmX3Ry YW5zX2hkbWkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgKm5fZW50cmll cykKPiAtewo+IC0JaWYgKElTX1NLTF9VTFgoZGV2X3ByaXYpIHx8Cj4gLQkgICAgSVNfS0JMX1VM WChkZXZfcHJpdikgfHwKPiAtCSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8fAo+IC0JICAgIElT X0NNTF9VTFgoZGV2X3ByaXYpKSB7Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3lf ZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKPiAtCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9u c19oZG1pOwo+IC0JfSBlbHNlIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRp X3RyYW5zbGF0aW9uc19oZG1pKTsKPiAtCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRt aTsKPiAtCX0KPiAtfQo+IC0KPiAtc3RhdGljIGludCBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVz KGVudW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQo+IC17Cj4gLQkvKiBPbmx5IERESUEgYW5k IERESUUgY2FuIHNlbGVjdCB0aGUgMTB0aCByZWdpc3RlciB3aXRoIERQICovCj4gLQlpZiAocG9y dCA9PSBQT1JUX0EgfHwgcG9ydCA9PSBQT1JUX0UpCj4gLQkJcmV0dXJuIG1pbihuX2VudHJpZXMs IDEwKTsKPiAtCWVsc2UKPiAtCQlyZXR1cm4gbWluKG5fZW50cmllcywgOSk7Cj4gLX0KPiAtCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCj4gLWludGVsX2RkaV9nZXRfYnVm X3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykK PiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7Cj4gLQo+IC0JaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSB8fAo+IC0J ICAgIElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpIHx8Cj4gLQkgICAgSVNfQ09NRVRMQUtFKGRldl9w cml2KSkgewo+IC0JCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25z ID0KPiAtCQkJa2JsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKPiAtCQkq bl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9l bnRyaWVzKTsKPiAtCQlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKPiAtCX0gZWxzZSBpZiAoSVNf U0tZTEFLRShkZXZfcHJpdikpIHsKPiAtCQljb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqZGRp X3RyYW5zbGF0aW9ucyA9Cj4gLQkJCXNrbF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50 cmllcyk7Cj4gLQkJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW5jb2Rl ci0+cG9ydCwgKm5fZW50cmllcyk7Cj4gLQkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7Cj4gLQl9 IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShiZHdfZGRpX3RyYW5zbGF0aW9uc19kcCk7Cj4gLQkJcmV0dXJuICBiZHdfZGRpX3Ry YW5zbGF0aW9uc19kcDsKPiAtCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKPiAt CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19kcCk7Cj4gLQkJ cmV0dXJuIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwOwo+IC0JfQo+IC0KPiAtCSpuX2VudHJpZXMg PSAwOwo+IC0JcmV0dXJuIE5VTEw7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyAqCj4gLWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+IC0KPiAt CWlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+IC0JCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3Ry YW5zICpkZGlfdHJhbnNsYXRpb25zID0KPiAtCQkJc2tsX2dldF9idWZfdHJhbnNfZWRwKGVuY29k ZXIsIG5fZW50cmllcyk7Cj4gLQkJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJp ZXMoZW5jb2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Cj4gLQkJcmV0dXJuIGRkaV90cmFuc2xhdGlv bnM7Cj4gLQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAtCQlyZXR1cm4g YmR3X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gLQl9IGVsc2UgaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaHN3 X2RkaV90cmFuc2xhdGlvbnNfZHApOwo+IC0JCXJldHVybiBoc3dfZGRpX3RyYW5zbGF0aW9uc19k cDsKPiAtCX0KPiAtCj4gLQkqbl9lbnRyaWVzID0gMDsKPiAtCXJldHVybiBOVUxMOwo+IC19Cj4g LQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgo+IC1pbnRlbF9kZGlfZ2V0 X2J1Zl90cmFuc19mZGkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkg ICAgaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7 Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfZmRpKTsK PiAtCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfZmRpOwo+IC0JfSBlbHNlIGlmIChJU19I QVNXRUxMKGRldl9wcml2KSkgewo+IC0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlf dHJhbnNsYXRpb25zX2ZkaSk7Cj4gLQkJcmV0dXJuIGhzd19kZGlfdHJhbnNsYXRpb25zX2ZkaTsK PiAtCX0KPiAtCj4gLQkqbl9lbnRyaWVzID0gMDsKPiAtCXJldHVybiBOVUxMOwo+IC19Cj4gLQo+ IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgo+IC1pbnRlbF9kZGlfZ2V0X2J1 Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQkgICAgIGlu dCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlpZiAoSVNfR0VOOV9CQyhkZXZf cHJpdikpIHsKPiAtCQlyZXR1cm4gc2tsX2dldF9idWZfdHJhbnNfaGRtaShkZXZfcHJpdiwgbl9l bnRyaWVzKTsKPiAtCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+IC0JCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwo+IC0JCXJl dHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwo+IC0JfSBlbHNlIGlmIChJU19IQVNXRUxM KGRldl9wcml2KSkgewo+IC0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNs YXRpb25zX2hkbWkpOwo+IC0JCXJldHVybiBoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwo+IC0J fQo+IC0KPiAtCSpuX2VudHJpZXMgPSAwOwo+IC0JcmV0dXJuIE5VTEw7Cj4gLX0KPiAtCj4gLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgo+IC1ieHRfZ2V0X2J1Zl90cmFu c19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gLXsK PiAtCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiAt CXJldHVybiBieHRfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0 IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCj4gLWJ4dF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp Owo+IC0KPiAtCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Cj4gLQkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoYnh0X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKPiAtCQlyZXR1cm4g Ynh0X2RkaV90cmFuc2xhdGlvbnNfZWRwOwo+IC0JfQo+IC0KPiAtCXJldHVybiBieHRfZ2V0X2J1 Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qg c3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKPiAtYnh0X2dldF9idWZfdHJhbnNfaGRtaShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwo+IC0JcmV0dXJu IGJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+IC1jbmxfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKPiAtewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4g LQl1MzIgdm9sdGFnZSA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFcz KSAmIFZPTFRBR0VfSU5GT19NQVNLOwo+IC0KPiAtCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5G T18wXzg1Vikgewo+IC0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRp b25zX2hkbWlfMF84NVYpOwo+IC0JCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBf ODVWOwo+IC0JfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1Vikgewo+IC0J CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVYp Owo+IC0JCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfOTVWOwo+IC0JfSBlbHNl IGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18xXzA1Vikgewo+IC0JCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVYpOwo+IC0JCXJldHVybiBj bmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzFfMDVWOwo+IC0JfSBlbHNlIHsKPiAtCQkqbl9lbnRy aWVzID0gMTsgLyogc2h1dCB1cCBnY2MgKi8KPiAtCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7Cj4g LQl9Cj4gLQlyZXR1cm4gTlVMTDsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyAqCj4gLWNubF9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQl1MzIgdm9s dGFnZSA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRB R0VfSU5GT19NQVNLOwo+IC0KPiAtCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1Vikg ewo+IC0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzBf ODVWKTsKPiAtCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVY7Cj4gLQl9IGVs c2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7Cj4gLQkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF85NVYpOwo+IC0JCXJldHVybiBj bmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VjsKPiAtCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBW T0xUQUdFX0lORk9fMV8wNVYpIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRp X3RyYW5zbGF0aW9uc19kcF8xXzA1Vik7Cj4gLQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25z X2RwXzFfMDVWOwo+IC0JfSBlbHNlIHsKPiAtCQkqbl9lbnRyaWVzID0gMTsgLyogc2h1dCB1cCBn Y2MgKi8KPiAtCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7Cj4gLQl9Cj4gLQlyZXR1cm4gTlVMTDsK PiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gLWNu bF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpu X2VudHJpZXMpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+IC0JdTMyIHZvbHRhZ2UgPSBpbnRlbF9kZV9yZWFk KGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdFX0lORk9fTUFTSzsKPiAtCj4g LQlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+IC0JCWlmICh2b2x0YWdlID09 IFZPTFRBR0VfSU5GT18wXzg1Vikgewo+IC0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxf ZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYpOwo+IC0JCQlyZXR1cm4gY25sX2RkaV90cmFuc2xh dGlvbnNfZWRwXzBfODVWOwo+IC0JCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9f MF85NVYpIHsKPiAtCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlv bnNfZWRwXzBfOTVWKTsKPiAtCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1 VjsKPiAtCQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7Cj4gLQkJ CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1Vik7 Cj4gLQkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVY7Cj4gLQkJfSBlbHNl IHsKPiAtCQkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCj4gLQkJCU1JU1NJTkdf Q0FTRSh2b2x0YWdlKTsKPiAtCQl9Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQl9IGVsc2Ugewo+IC0J CXJldHVybiBjbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+IC0JfQo+ IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAtaWNs X2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAtCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAt CQkJICAgICBpbnQgKm5fZW50cmllcykKPiAtewo+IC0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo aWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwo+IC0JcmV0dXJuIGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAtaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gLQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IC0JCQkgICBpbnQgKm5fZW50cmllcykKPiAtewo+IC0J Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Rw X2hicjIpOwo+IC0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIy Owo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAt aWNsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+IC0JCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g LQkJCSAgICBpbnQgKm5fZW50cmllcykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQo+IC0JaWYgKGNydGNf c3RhdGUtPnBvcnRfY2xvY2sgPiA1NDAwMDApIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjMpOwo+IC0JCXJldHVybiBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7Cj4gLQl9IGVsc2UgaWYgKGRl dl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOwo+IC0JCXJldHVybiBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7Cj4gLQl9IGVsc2UgaWYgKElT X0RHMShkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgewo+IC0J CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGRnMV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19k cF9oYnIyX2hicjMpOwo+IC0JCXJldHVybiBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyMl9oYnIzOwo+IC0JfSBlbHNlIGlmIChJU19ERzEoZGV2X3ByaXYpKSB7Cj4gLQkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX3Ji cl9oYnIpOwo+IC0JCXJldHVybiBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJy X2hicjsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5j b2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gLWljbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCQkJaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCWlmIChpbnRl bF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKPiAtCQlyZXR1 cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2Vu dHJpZXMpOwo+IC0JZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfRURQKSkKPiAtCQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVu Y29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cj4gLQllbHNlCj4gLQkJcmV0dXJuIGljbF9n ZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cj4g LX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoK PiAtaWNsX2dldF9tZ19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAtCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAt CQkJICBpbnQgKm5fZW50cmllcykKPiAtewo+IC0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNs X21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwo+IC0JcmV0dXJuIGljbF9tZ19waHlfZGRp X3RyYW5zbGF0aW9uc19oZG1pOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9t Z19waHlfZGRpX2J1Zl90cmFucyAqCj4gLWljbF9nZXRfbWdfYnVmX3RyYW5zX2RwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAtCQkJaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCWlmIChjcnRjX3N0 YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo aWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyMyk7Cj4gLQkJcmV0dXJuIGljbF9t Z19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjM7Cj4gLQl9IGVsc2Ugewo+IC0JCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19yYnJfaGJyKTsK PiAtCQlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX3Jicl9oYnI7Cj4gLQl9Cj4g LX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoK PiAtaWNsX2dldF9tZ19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g LQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCQkg ICAgIGludCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCj4gLQkJcmV0dXJuIGljbF9nZXRfbWdfYnVmX3Ry YW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiAtCWVsc2UKPiAtCQly ZXR1cm4gaWNsX2dldF9tZ19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRy aWVzKTsKPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAq Cj4gLWVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gLQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gLQkJCSAgICAgaW50ICpuX2VudHJpZXMpCj4gLXsKPiAtCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKPiAtCXJldHVybiBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKPiAtfQo+IC0KPiAtc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gLWVobF9nZXRfY29tYm9fYnVmX3RyYW5z X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQkgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCQkJICAgaW50ICpuX2VudHJpZXMpCj4g LXsKPiAtCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcCk7Cj4gLQlyZXR1cm4gZWhsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwOwo+ IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAtZWhs X2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ IC0JCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJ CSAgICBpbnQgKm5fZW50cmllcykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQo+IC0JaWYgKGRldl9wcml2 LT52YnQuZWRwLmxvd192c3dpbmcpIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOwo+IC0JCXJldHVybiBpY2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIGVo bF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+IC1l aGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAt CQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJCWludCAq bl9lbnRyaWVzKQo+IC17Cj4gLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfSERNSSkpCj4gLQkJcmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2hk bWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiAtCWVsc2UgaWYgKGludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4gLQkJcmV0dXJuIGVo bF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMp Owo+IC0JZWxzZQo+IC0JCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVy LCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoKPiAtanNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAtCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCQkJICAgICBpbnQgKm5fZW50cmllcykKPiAtewo+ IC0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2hkbWkpOwo+IC0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwo+ IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAtanNs X2dldF9jb21ib19idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g LQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IC0JCQkg ICBpbnQgKm5fZW50cmllcykKPiAtewo+IC0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjIpOwo+IC0JcmV0dXJuIGljbF9jb21ib19w aHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAtanNsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQkgICAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJCSAgICBpbnQgKm5fZW50cmllcykKPiAtewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4gLQo+IC0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKPiAt CQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgewo+IC0JCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOwo+ IC0JCQlyZXR1cm4ganNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyOwo+IC0J CX0gZWxzZSB7Cj4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGpzbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19lZHBfaGJyKTsKPiAtCQkJcmV0dXJuIGpzbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19lZHBfaGJyOwo+IC0JCX0KPiAtCX0KPiAtCj4gLQlyZXR1cm4ganNsX2dldF9j b21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiAtfQo+ IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gLWpzbF9nZXRf Y29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQljb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCQkJaW50ICpuX2VudHJp ZXMpCj4gLXsKPiAtCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09V VFBVVF9IRE1JKSkKPiAtCQlyZXR1cm4ganNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNv ZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+IC0JZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNf dHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKPiAtCQlyZXR1cm4ganNsX2dldF9j b21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cj4gLQll bHNlCj4gLQkJcmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNf c3RhdGUsIG5fZW50cmllcyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2Rk aV9idWZfdHJhbnMgKgo+IC10Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+IC0JCQkgICAgIGludCAqbl9lbnRyaWVzKQo+IC17Cj4gLQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7 Cj4gLQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+IC10Z2xfZ2V0X2Nv bWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAtCQkJICAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJCSAgIGludCAq bl9lbnRyaWVzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCj4gLQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9j bG9jayA+IDI3MDAwMCkgewo+IC0JCWlmIChJU19ST0NLRVRMQUtFKGRldl9wcml2KSkgewo+IC0J CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyMl9oYnIzKTsKPiAtCQkJcmV0dXJuIHJrbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcF9oYnIyX2hicjM7Cj4gLQkJfSBlbHNlIGlmIChJU19UR0xfVShkZXZfcHJpdikgfHwgSVNf VEdMX1koZGV2X3ByaXYpKSB7Cj4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF91eV9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyKTsKPiAtCQkJcmV0dXJuIHRnbF91eV9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwo+IC0JCX0gZWxzZSB7Cj4gLQkJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9o YnIyKTsKPiAtCQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIy Owo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gLQkJaWYgKElTX1JPQ0tFVExBS0UoZGV2X3ByaXYpKSB7 Cj4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHJrbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcF9oYnIpOwo+IC0JCQlyZXR1cm4gcmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2RwX2hicjsKPiAtCQl9IGVsc2Ugewo+IC0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyKTsKPiAtCQkJcmV0dXJuIHRnbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnI7Cj4gLQkJfQo+IC0JfQo+IC19Cj4gLQo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAtdGdsX2dldF9jb21ib19i dWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJCSAgICBpbnQgKm5f ZW50cmllcykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g ZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+IC0KPiAtCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Ns b2NrID4gNTQwMDAwKSB7Cj4gLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzKTsKPiAtCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzOwo+IC0JfSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVk cC5ob2JsICYmICFpbnRlbF9kcC0+aG9ibF9mYWlsZWQpIHsKPiAtCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRSh0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJfaG9ibCk7Cj4g LQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2JsOwo+ IC0JfSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Cj4gLQkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIy KTsKPiAtCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyOwo+ IC0JfQo+IC0KPiAtCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBj cnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zICoKPiAtdGdsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gLQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+IC0JCQlpbnQgKm5fZW50cmllcykKPiAtewo+IC0JaWYgKGludGVsX2NydGNf aGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQo+IC0JCXJldHVybiB0Z2xf Z2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7 Cj4gLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9FRFApKQo+IC0JCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiAtCWVsc2UKPiAtCQlyZXR1cm4gdGdsX2dldF9jb21i b19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiAtfQo+IC0K PiAtc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKPiAtdGds X2dldF9ka2xfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g LQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IC0JCQkg ICBpbnQgKm5fZW50cmllcykKPiAtewo+IC0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2Rr bF9waHlfaGRtaV9kZGlfdHJhbnMpOwo+IC0JcmV0dXJuIHRnbF9ka2xfcGh5X2hkbWlfZGRpX3Ry YW5zOwo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZf dHJhbnMgKgo+IC10Z2xfZ2V0X2RrbF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gLQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAtCQkJIGludCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9j bG9jayA+IDI3MDAwMCkgewo+IC0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5 X2RwX2RkaV90cmFuc19oYnIyKTsKPiAtCQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5z X2hicjI7Cj4gLQl9IGVsc2Ugewo+IC0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xf cGh5X2RwX2RkaV90cmFucyk7Cj4gLQkJcmV0dXJuIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuczsK PiAtCX0KPiAtfQo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVm X3RyYW5zICoKPiAtdGdsX2dldF9ka2xfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+IC0JCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+IC0JCSAgICAgIGludCAqbl9lbnRyaWVzKQo+IC17Cj4gLQlpZiAoaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCj4gLQkJcmV0dXJuIHRnbF9n ZXRfZGtsX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cj4g LQllbHNlCj4gLQkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRj X3N0YXRlLCBuX2VudHJpZXMpOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW50IGludGVsX2RkaV9oZG1p X2xldmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJaW50IG5f ZW50cmllcywgbGV2ZWwsIGRlZmF1bHRfZW50cnk7Cj4gLQllbnVtIHBoeSBwaHkgPSBpbnRlbF9w b3J0X3RvX3BoeShkZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCk7Cj4gIAo+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTIpIHsKPiAtCQlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2 LCBwaHkpKQo+IC0JCQl0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNf c3RhdGUsICZuX2VudHJpZXMpOwo+IC0JCWVsc2UKPiAtCQkJdGdsX2dldF9ka2xfYnVmX3RyYW5z X2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7Cj4gLQkJZGVmYXVsdF9lbnRy eSA9IG5fZW50cmllcyAtIDE7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0g MTEpIHsKPiAtCQlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBwaHkpKQo+IC0JCQlp Y2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJp ZXMpOwo+IC0JCWVsc2UKPiAtCQkJaWNsX2dldF9tZ19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBj cnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKPiAtCQlkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0g MTsKPiAtCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKPiAtCQljbmxfZ2V0 X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwo+IC0JCWRlZmF1bHRfZW50cnkg PSBuX2VudHJpZXMgLSAxOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ IC0JCWJ4dF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Cj4gLQkJZGVm YXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2 X3ByaXYpKSB7Cj4gLQkJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9l bnRyaWVzKTsKPiAtCQlkZWZhdWx0X2VudHJ5ID0gODsKPiAtCX0gZWxzZSBpZiAoSVNfQlJPQURX RUxMKGRldl9wcml2KSkgewo+IC0JCWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2Rl ciwgJm5fZW50cmllcyk7Cj4gLQkJZGVmYXVsdF9lbnRyeSA9IDc7Cj4gLQl9IGVsc2UgaWYgKElT X0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gLQkJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShl bmNvZGVyLCAmbl9lbnRyaWVzKTsKPiAtCQlkZWZhdWx0X2VudHJ5ID0gNjsKPiAtCX0gZWxzZSB7 Cj4gLQkJZHJtX1dBUk4oJmRldl9wcml2LT5kcm0sIDEsICJkZGkgdHJhbnNsYXRpb24gdGFibGUg bWlzc2luZ1xuIik7Cj4gKwluX2VudHJpZXMgPSBpbnRlbF9kZGlfaGRtaV9udW1fZW50cmllcyhl bmNvZGVyLCBjcnRjX3N0YXRlLCAmZGVmYXVsdF9lbnRyeSk7Cj4gKwlpZiAobl9lbnRyaWVzID09 IDApCj4gIAkJcmV0dXJuIDA7Cj4gLQl9Cj4gLQo+IC0JaWYgKGRybV9XQVJOX09OX09OQ0UoJmRl dl9wcml2LT5kcm0sIG5fZW50cmllcyA9PSAwKSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gIAlsZXZl bCA9IGludGVsX2Jpb3NfaGRtaV9sZXZlbF9zaGlmdChlbmNvZGVyKTsKPiAgCWlmIChsZXZlbCA8 IDApCj4gIAkJbGV2ZWwgPSBkZWZhdWx0X2VudHJ5Owo+IEBAIC0xNjM3LDYgKzI1OCw5IEBAIHZv aWQgaHN3X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiAgCXUzMiB0ZW1wLCBpLCByeF9jdGxfdmFsLCBkZGlfcGxsX3NlbDsK PiArCWludCBuX2VudHJpZXM7Cj4gKwo+ICsJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZmRpKGRl dl9wcml2LCAmbl9lbnRyaWVzKTsKPiAgCj4gIAlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJz KGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ICAKPiBAQCAtMTY2OSw3ICsyOTMsNyBAQCB2b2lkIGhz d19mZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAkv KiBTdGFydCB0aGUgdHJhaW5pbmcgaXRlcmF0aW5nIHRocm91Z2ggYXZhaWxhYmxlIHZvbHRhZ2Vz IGFuZCBlbXBoYXNpcywKPiAgCSAqIHRlc3RpbmcgZWFjaCB2YWx1ZSB0d2ljZS4gKi8KPiAtCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2ZkaSkgKiAyOyBp KyspIHsKPiArCWZvciAoaSA9IDA7IGkgPCBuX2VudHJpZXMgKiAyOyBpKyspIHsKPiAgCQkvKiBD b25maWd1cmUgRFBfVFBfQ1RMIHdpdGggYXV0by10cmFpbmluZyAqLwo+ICAJCWludGVsX2RlX3dy aXRlKGRldl9wcml2LCBEUF9UUF9DVEwoUE9SVF9FKSwKPiAgCQkJICAgICAgIERQX1RQX0NUTF9G RElfQVVUT1RSQUlOIHwKPiBAQCAtMTcxOCw3ICszNDIsNyBAQCB2b2lkIGhzd19mZGlfbGlua190 cmFpbihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkgKiBMZWF2ZSB0aGluZ3Mg ZW5hYmxlZCBldmVuIGlmIHdlIGZhaWxlZCB0byB0cmFpbiBGREkuCj4gIAkJICogUmVzdWx0cyBp biBsZXNzIGZpcmV3b3JrcyBmcm9tIHRoZSBzdGF0ZSBjaGVja2VyLgo+ICAJCSAqLwo+IC0JCWlm IChpID09IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpKSAqIDIgLSAxKSB7Cj4g KwkJaWYgKGkgPT0gbl9lbnRyaWVzICogMiAtIDEpIHsKPiAgCQkJZHJtX2VycigmZGV2X3ByaXYt PmRybSwgIkZESSBsaW5rIHRyYWluaW5nIGZhaWxlZCFcbiIpOwo+ICAJCQlicmVhazsKPiAgCQl9 Cj4gQEAgLTI0ODAsMTMgKzExMDQsNyBAQCBzdGF0aWMgdm9pZCBieHRfZGRpX3Zzd2luZ19zZXF1 ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCWVudW0gcG9ydCBwb3J0ID0g ZW5jb2Rlci0+cG9ydDsKPiAgCWludCBuX2VudHJpZXM7Cj4gIAo+IC0JaWYgKGludGVsX2NydGNf aGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQo+IC0JCWRkaV90cmFuc2xh dGlvbnMgPSBieHRfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwo+IC0J ZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQ KSkKPiAtCQlkZGlfdHJhbnNsYXRpb25zID0gYnh0X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIs ICZuX2VudHJpZXMpOwo+IC0JZWxzZQo+IC0JCWRkaV90cmFuc2xhdGlvbnMgPSBieHRfZ2V0X2J1 Zl90cmFuc19kcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKPiAtCj4gKwlkZGlfdHJhbnNsYXRpb25z ID0gYnh0X2dldF9idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7Cj4g IAlpZiAoZHJtX1dBUk5fT05fT05DRSgmZGV2X3ByaXYtPmRybSwgIWRkaV90cmFuc2xhdGlvbnMp KQo+ICAJCXJldHVybjsKPiAgCWlmIChkcm1fV0FSTl9PTl9PTkNFKCZkZXZfcHJpdi0+ZHJtLCBs ZXZlbCA+PSBuX2VudHJpZXMpKQo+IEBAIC0yNTIzLDE1ICsxMTQxLDkgQEAgc3RhdGljIHU4IGlu dGVsX2RkaV9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCWVs c2UKPiAgCQkJaWNsX2dldF9tZ19idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50 cmllcyk7Cj4gIAl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Cj4gLQkJaWYg KGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4gLQkJ CWNubF9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKPiAtCQllbHNlCj4g LQkJCWNubF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsICZuX2VudHJpZXMpOwo+ICsJCWNubF9n ZXRfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwo+ICAJfSBlbHNl IGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+IC0JCWlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQo+IC0JCQlieHRfZ2V0X2J1Zl90cmFuc19l ZHAoZW5jb2RlciwgJm5fZW50cmllcyk7Cj4gLQkJZWxzZQo+IC0JCQlieHRfZ2V0X2J1Zl90cmFu c19kcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKPiArCQlieHRfZ2V0X2J1Zl90cmFucyhlbmNvZGVy LCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKPiAgCX0gZWxzZSB7Cj4gIAkJaWYgKGludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4gIAkJCWludGVsX2Rk aV9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKPiBAQCAtMjU2OSwxMiAr MTE4MSw3IEBAIHN0YXRpYyB2b2lkIGNubF9kZGlfdnN3aW5nX3Byb2dyYW0oc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gIAlpbnQgbl9lbnRyaWVzLCBsbjsKPiAgCXUzMiB2YWw7Cj4g IAo+IC0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hE TUkpKQo+IC0JCWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29k ZXIsICZuX2VudHJpZXMpOwo+IC0JZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0 YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKPiAtCQlkZGlfdHJhbnNsYXRpb25zID0gY25sX2dldF9i dWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwo+IC0JZWxzZQo+IC0JCWRkaV90cmFu c2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKPiAr CWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFucyhlbmNvZGVyLCBjcnRjX3N0YXRl LCAmbl9lbnRyaWVzKTsKPiAgCj4gIAlpZiAoZHJtX1dBUk5fT05fT05DRSgmZGV2X3ByaXYtPmRy bSwgIWRkaV90cmFuc2xhdGlvbnMpKQo+ICAJCXJldHVybjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuYwo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wYjAwYjMxZGJlNTkKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5z LmMKPiBAQCAtMCwwICsxLDEzOTQgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1J VAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8K PiArCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZGRpLmgiCj4g KyNpbmNsdWRlICJpbnRlbF9kZGlfYnVmX3RyYW5zLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9kaXNw bGF5X3R5cGVzLmgiCj4gKwo+ICsvKiBIRE1JL0RWSSBtb2RlcyBpZ25vcmUgZXZlcnl0aGluZyBi dXQgdGhlIGxhc3QgMiBpdGVtcy4gU28gd2Ugc2hhcmUKPiArICogdGhlbSBmb3IgYm90aCBEUCBh bmQgRkRJIHRyYW5zcG9ydHMsIGFsbG93aW5nIHRob3NlIHBvcnRzIHRvCj4gKyAqIGF1dG9tYXRp Y2FsbHkgYWRhcHQgdG8gSERNSSBjb25uZWN0aW9ucyBhcyB3ZWxsCj4gKyAqLwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsK PiArCXsgMHgwMEZGRkZGRiwgMHgwMDA2MDAwRSwgMHgwIH0sCj4gKwl7IDB4MDBENzVGRkYsIDB4 MDAwNTAwMEEsIDB4MCB9LAo+ICsJeyAweDAwQzMwRkZGLCAweDAwMDQwMDA2LCAweDAgfSwKPiAr CXsgMHg4MEFBQUZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAw NTAwMEEsIDB4MCB9LAo+ICsJeyAweDAwRDc1RkZGLCAweDAwMEMwMDA0LCAweDAgfSwKPiArCXsg MHg4MEMzMEZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwNDAw MDYsIDB4MCB9LAo+ICsJeyAweDgwRDc1RkZGLCAweDAwMEIwMDAwLCAweDAgfSwKPiArfTsKPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBoc3dfZGRpX3RyYW5zbGF0aW9u c19mZGlbXSA9IHsKPiArCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0sCj4gKwl7IDB4 MDBENzVGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAo+ICsJeyAweDAwQzMwRkZGLCAweDAwMDYwMDA2 LCAweDAgfSwKPiArCXsgMHgwMEFBQUZGRiwgMHgwMDFFMDAwMCwgMHgwIH0sCj4gKwl7IDB4MDBG RkZGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAo+ICsJeyAweDAwRDc1RkZGLCAweDAwMTYwMDA0LCAw eDAgfSwKPiArCXsgMHgwMEMzMEZGRiwgMHgwMDFFMDAwMCwgMHgwIH0sCj4gKwl7IDB4MDBGRkZG RkYsIDB4MDAwNjAwMDYsIDB4MCB9LAo+ICsJeyAweDAwRDc1RkZGLCAweDAwMUUwMDAwLCAweDAg fSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBoc3dfZGRp X3RyYW5zbGF0aW9uc19oZG1pW10gPSB7Cj4gKwkJCQkJLyogSWR4CU5UIG1WIGQJVCBtViBkCWRi CSovCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMEUsIDB4MCB9LC8qIDA6CTQwMAk0MDAJMAkq Lwo+ICsJeyAweDAwRTc5RkZGLCAweDAwMEUwMDBDLCAweDAgfSwvKiAxOgk0MDAJNTAwCTIJKi8K PiArCXsgMHgwMEQ3NUZGRiwgMHgwMDA1MDAwQSwgMHgwIH0sLyogMjoJNDAwCTYwMAkzLjUJKi8K PiArCXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwQSwgMHgwIH0sLyogMzoJNjAwCTYwMAkwCSovCj4g Kwl7IDB4MDBFNzlGRkYsIDB4MDAxRDAwMDcsIDB4MCB9LC8qIDQ6CTYwMAk3NTAJMgkqLwo+ICsJ eyAweDAwRDc1RkZGLCAweDAwMEMwMDA0LCAweDAgfSwvKiA1Ogk2MDAJOTAwCTMuNQkqLwo+ICsJ eyAweDAwRkZGRkZGLCAweDAwMDQwMDA2LCAweDAgfSwvKiA2Ogk4MDAJODAwCTAJKi8KPiArCXsg MHg4MEU3OUZGRiwgMHgwMDAzMDAwMiwgMHgwIH0sLyogNzoJODAwCTEwMDAJMgkqLwo+ICsJeyAw eDAwRkZGRkZGLCAweDAwMTQwMDA1LCAweDAgfSwvKiA4Ogk4NTAJODUwCTAJKi8KPiArCXsgMHgw MEZGRkZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sLyogOToJOTAwCTkwMAkwCSovCj4gKwl7IDB4MDBG RkZGRkYsIDB4MDAxQzAwMDMsIDB4MCB9LC8qIDEwOgk5NTAJOTUwCTAJKi8KPiArCXsgMHg4MEZG RkZGRiwgMHgwMDAzMDAwMiwgMHgwIH0sLyogMTE6CTEwMDAJMTAwMAkwCSovCj4gK307Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3X2RkaV90cmFuc2xhdGlvbnNf ZWRwW10gPSB7Cj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwMDAwMTIsIDB4MCB9LAo+ICsJeyAweDAw RUJBRkZGLCAweDAwMDIwMDExLCAweDAgfSwKPiArCXsgMHgwMEM3MUZGRiwgMHgwMDA2MDAwRiwg MHgwIH0sCj4gKwl7IDB4MDBBQUFGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAo+ICsJeyAweDAwRkZG RkZGLCAweDAwMDIwMDExLCAweDAgfSwKPiArCXsgMHgwMERCNkZGRiwgMHgwMDA1MDAwRiwgMHgw IH0sCj4gKwl7IDB4MDBCRUVGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAo+ICsJeyAweDAwRkZGRkZG LCAweDAwMDUwMDBGLCAweDAgfSwKPiArCXsgMHgwMERCNkZGRiwgMHgwMDBBMDAwQywgMHgwIH0s Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3X2RkaV90 cmFuc2xhdGlvbnNfZHBbXSA9IHsKPiArCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0s Cj4gKwl7IDB4MDBENzVGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAo+ICsJeyAweDAwQkVGRkZGLCAw eDAwMTQwMDA2LCAweDAgfSwKPiArCXsgMHg4MEIyQ0ZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCj4g Kwl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAo+ICsJeyAweDAwREI2RkZGLCAweDAw MTYwMDA1LCAweDAgfSwKPiArCXsgMHg4MEM3MUZGRiwgMHgwMDFBMDAwMiwgMHgwIH0sCj4gKwl7 IDB4MDBGN0RGRkYsIDB4MDAxODAwMDQsIDB4MCB9LAo+ICsJeyAweDgwRDc1RkZGLCAweDAwMUIw MDAyLCAweDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFu cyBiZHdfZGRpX3RyYW5zbGF0aW9uc19mZGlbXSA9IHsKPiArCXsgMHgwMEZGRkZGRiwgMHgwMDAx MDAwRSwgMHgwIH0sCj4gKwl7IDB4MDBENzVGRkYsIDB4MDAwNDAwMEEsIDB4MCB9LAo+ICsJeyAw eDAwQzMwRkZGLCAweDAwMDcwMDA2LCAweDAgfSwKPiArCXsgMHgwMEFBQUZGRiwgMHgwMDBDMDAw MCwgMHgwIH0sCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwNDAwMEEsIDB4MCB9LAo+ICsJeyAweDAw RDc1RkZGLCAweDAwMDkwMDA0LCAweDAgfSwKPiArCXsgMHgwMEMzMEZGRiwgMHgwMDBDMDAwMCwg MHgwIH0sCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMDYsIDB4MCB9LAo+ICsJeyAweDAwRDc1 RkZGLCAweDAwMEMwMDAwLCAweDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGRpX2J1Zl90cmFucyBiZHdfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7Cj4gKwkJCQkJLyog SWR4CU5UIG1WIGQJVCBtViBkZglkYgkqLwo+ICsJeyAweDAwRkZGRkZGLCAweDAwMDcwMDBFLCAw eDAgfSwvKiAwOgk0MDAJNDAwCTAJKi8KPiArCXsgMHgwMEQ3NUZGRiwgMHgwMDBFMDAwQSwgMHgw IH0sLyogMToJNDAwCTYwMAkzLjUJKi8KPiArCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAwNiwgMHgw IH0sLyogMjoJNDAwCTgwMAk2CSovCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwOTAwMEQsIDB4MCB9 LC8qIDM6CTQ1MAk0NTAJMAkqLwo+ICsJeyAweDAwRkZGRkZGLCAweDAwMEUwMDBBLCAweDAgfSwv KiA0Ogk2MDAJNjAwCTAJKi8KPiArCXsgMHgwMEQ3RkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyog NToJNjAwCTgwMAkyLjUJKi8KPiArCXsgMHg4MENCMkZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sLyog NjoJNjAwCTEwMDAJNC41CSovCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAxNDAwMDYsIDB4MCB9LC8q IDc6CTgwMAk4MDAJMAkqLwo+ICsJeyAweDgwRTc5RkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA4 Ogk4MDAJMTAwMAkyCSovCj4gKwl7IDB4ODBGRkZGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDk6 CTEwMDAJMTAwMAkwCSovCj4gK307Cj4gKwo+ICsvKiBTa3lsYWtlIEggYW5kIFMgKi8KPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF9kZGlfdHJhbnNsYXRpb25zX2RwW10g PSB7Cj4gKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQTAsIDB4MCB9LAo+ICsJeyAweDAwMDA1MDEy LCAweDAwMDAwMDlCLCAweDAgfSwKPiArCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA4OCwgMHgwIH0s Cj4gKwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MSB9LAo+ICsJeyAweDAwMDAyMDE2LCAw eDAwMDAwMDlCLCAweDAgfSwKPiArCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCj4g Kwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAo+ICsJeyAweDAwMDAyMDE2LCAweDAw MDAwMERGLCAweDAgfSwKPiArCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgxIH0sCj4gK307 Cj4gKwo+ICsvKiBTa3lsYWtlIFUgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3Ry YW5zIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKPiArCXsgMHgwMDAwMjAxQiwgMHgw MDAwMDBBMiwgMHgwIH0sCj4gKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJ eyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDEgfSwKPiArCXsgMHg4MDAwOTAxMCwgMHgwMDAw MDBDMCwgMHgxIH0sCj4gKwl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwOUQsIDB4MCB9LAo+ICsJeyAw eDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKPiArCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBD MCwgMHgxIH0sCj4gKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAweDgw MDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKPiArfTsKPiArCj4gKy8qIFNreWxha2UgWSAqLwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9u c19kcFtdID0gewo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEEyLCAweDAgfSwKPiArCXsgMHgw MDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCj4gKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQ0Qs IDB4MyB9LAo+ICsJeyAweDgwMDA5MDEwLCAweDAwMDAwMEMwLCAweDMgfSwKPiArCXsgMHgwMDAw MDAxOCwgMHgwMDAwMDA5RCwgMHgwIH0sCj4gKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4 MyB9LAo+ICsJeyAweDgwMDA3MDExLCAweDAwMDAwMEMwLCAweDMgfSwKPiArCXsgMHgwMDAwMDAx OCwgMHgwMDAwMDA4OCwgMHgwIH0sCj4gKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MyB9 LAo+ICt9Owo+ICsKPiArLyogS2FieWxha2UgSCBhbmQgUyAqLwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRkaV9idWZfdHJhbnMga2JsX2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKPiArCXsgMHgw MDAwMjAxNiwgMHgwMDAwMDBBMCwgMHgwIH0sCj4gKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwOUIs IDB4MCB9LAo+ICsJeyAweDAwMDA3MDExLCAweDAwMDAwMDg4LCAweDAgfSwKPiArCXsgMHg4MDAw OTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCj4gKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwOUIsIDB4 MCB9LAo+ICsJeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKPiArCXsgMHg4MDAwNzAx MSwgMHgwMDAwMDBDMCwgMHgxIH0sCj4gKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwOTcsIDB4MCB9 LAo+ICsJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKPiArfTsKPiArCj4gKy8qIEth YnlsYWtlIFUgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGtibF91X2Rk aV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKPiArCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDBBMSwgMHgw IH0sCj4gKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAweDgwMDA3MDEx LCAweDAwMDAwMENELCAweDMgfSwKPiArCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgzIH0s Cj4gKwl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwOUQsIDB4MCB9LAo+ICsJeyAweDgwMDA1MDEyLCAw eDAwMDAwMEMwLCAweDMgfSwKPiArCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgzIH0sCj4g Kwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwNEYsIDB4MCB9LAo+ICsJeyAweDgwMDA1MDEyLCAweDAw MDAwMEMwLCAweDMgfSwKPiArfTsKPiArCj4gKy8qIEthYnlsYWtlIFkgKi8KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGtibF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsK PiArCXsgMHgwMDAwMTAxNywgMHgwMDAwMDBBMSwgMHgwIH0sCj4gKwl7IDB4MDAwMDUwMTIsIDB4 MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKPiAr CXsgMHg4MDAwODAwRiwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gKwl7IDB4MDAwMDEwMTcsIDB4MDAw MDAwOUQsIDB4MCB9LAo+ICsJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKPiArCXsg MHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgzIH0sCj4gKwl7IDB4MDAwMDEwMTcsIDB4MDAwMDAw NEMsIDB4MCB9LAo+ICsJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKPiArfTsKPiAr Cj4gKy8qCj4gKyAqIFNreWxha2UvS2FieWxha2UgSCBhbmQgUwo+ICsgKiBlRFAgMS40IGxvdyB2 c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycwo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zIHNrbF9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewo+ICsJeyAweDAw MDAwMDE4LCAweDAwMDAwMEE4LCAweDAgfSwKPiArCXsgMHgwMDAwNDAxMywgMHgwMDAwMDBBOSwg MHgwIH0sCj4gKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTIsIDB4MCB9LAo+ICsJeyAweDAwMDA5 MDEwLCAweDAwMDAwMDlDLCAweDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOSwgMHgw IH0sCj4gKwl7IDB4MDAwMDYwMTMsIDB4MDAwMDAwQTIsIDB4MCB9LAo+ICsJeyAweDAwMDA3MDEx LCAweDAwMDAwMEE2LCAweDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQiwgMHgwIH0s Cj4gKwl7IDB4MDAwMDcwMTMsIDB4MDAwMDAwOUYsIDB4MCB9LAo+ICsJeyAweDAwMDAwMDE4LCAw eDAwMDAwMERGLCAweDAgfSwKPiArfTsKPiArCj4gKy8qCj4gKyAqIFNreWxha2UvS2FieWxha2Ug VQo+ICsgKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycwo+ICsgKi8K PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF91X2RkaV90cmFuc2xhdGlv bnNfZWRwW10gPSB7Cj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAo+ICsJeyAw eDAwMDA0MDEzLCAweDAwMDAwMEE5LCAweDAgfSwKPiArCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBB MiwgMHgwIH0sCj4gKwl7IDB4MDAwMDkwMTAsIDB4MDAwMDAwOUMsIDB4MCB9LAo+ICsJeyAweDAw MDAwMDE4LCAweDAwMDAwMEE5LCAweDAgfSwKPiArCXsgMHgwMDAwNjAxMywgMHgwMDAwMDBBMiwg MHgwIH0sCj4gKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTYsIDB4MCB9LAo+ICsJeyAweDAwMDAy MDE2LCAweDAwMDAwMEFCLCAweDAgfSwKPiArCXsgMHgwMDAwNTAxMywgMHgwMDAwMDA5RiwgMHgw IH0sCj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwREYsIDB4MCB9LAo+ICt9Owo+ICsKPiArLyoK PiArICogU2t5bGFrZS9LYWJ5bGFrZSBZCj4gKyAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xh dGlvbiBwYXJhbWV0ZXJzCj4gKyAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKPiArCXsgMHgwMDAwMDAxOCwgMHgw MDAwMDBBOCwgMHgwIH0sCj4gKwl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQUIsIDB4MCB9LAo+ICsJ eyAweDAwMDA3MDExLCAweDAwMDAwMEE0LCAweDAgfSwKPiArCXsgMHgwMDAwOTAxMCwgMHgwMDAw MDBERiwgMHgwIH0sCj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQUEsIDB4MCB9LAo+ICsJeyAw eDAwMDA2MDEzLCAweDAwMDAwMEE0LCAweDAgfSwKPiArCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA5 RCwgMHgwIH0sCj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTAsIDB4MCB9LAo+ICsJeyAweDAw MDA2MDEyLCAweDAwMDAwMERGLCAweDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4QSwg MHgwIH0sCj4gK307Cj4gKwo+ICsvKiBTa3lsYWtlL0thYnlsYWtlIFUsIEggYW5kIFMgKi8KPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF9kZGlfdHJhbnNsYXRpb25zX2hk bWlbXSA9IHsKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQywgMHgwIH0sCj4gKwl7IDB4MDAw MDUwMTIsIDB4MDAwMDAwOUQsIDB4MCB9LAo+ICsJeyAweDAwMDA3MDExLCAweDAwMDAwMDg4LCAw eDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0sCj4gKwl7IDB4MDAwMDAw MTgsIDB4MDAwMDAwOTgsIDB4MCB9LAo+ICsJeyAweDAwMDA0MDEzLCAweDAwMDAwMDg4LCAweDAg fSwKPiArCXsgMHg4MDAwNjAxMiwgMHgwMDAwMDBDRCwgMHgxIH0sCj4gKwl7IDB4MDAwMDAwMTgs IDB4MDAwMDAwREYsIDB4MCB9LAo+ICsJeyAweDgwMDAzMDE1LCAweDAwMDAwMENELCAweDEgfSwJ LyogRGVmYXVsdCAqLwo+ICsJeyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDEgfSwKPiArCXsg MHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwgMHgxIH0sCj4gK307Cj4gKwo+ICsvKiBTa3lsYWtlL0th YnlsYWtlIFkgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95X2Rk aV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEExLCAw eDAgfSwKPiArCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDBERiwgMHgwIH0sCj4gKwl7IDB4ODAwMDcw MTEsIDB4MDAwMDAwQ0IsIDB4MyB9LAo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEE0LCAweDAg fSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5RCwgMHgwIH0sCj4gKwl7IDB4MDAwMDQwMTMs IDB4MDAwMDAwODAsIDB4MCB9LAo+ICsJeyAweDgwMDA2MDEzLCAweDAwMDAwMEMwLCAweDMgfSwK PiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4QSwgMHgwIH0sCj4gKwl7IDB4ODAwMDMwMTUsIDB4 MDAwMDAwQzAsIDB4MyB9LAkvKiBEZWZhdWx0ICovCj4gKwl7IDB4ODAwMDMwMTUsIDB4MDAwMDAw QzAsIDB4MyB9LAo+ICsJeyAweDgwMDAwMDE4LCAweDAwMDAwMEMwLCAweDMgfSwKPiArfTsKPiAr Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zIGJ4dF9kZGlfdHJh bnNsYXRpb25zX2RwW10gPSB7Cj4gKwkJCQkJLyogSWR4CU5UIG1WIGRpZmYJZGIgICovCj4gKwl7 IDUyLCAgMHg5QSwgMCwgMTI4LCB9LAkvKiAwOgk0MDAJCTAgICAqLwo+ICsJeyA3OCwgIDB4OUEs IDAsIDg1LCAgfSwJLyogMToJNDAwCQkzLjUgKi8KPiArCXsgMTA0LCAweDlBLCAwLCA2NCwgIH0s CS8qIDI6CTQwMAkJNiAgICovCj4gKwl7IDE1NCwgMHg5QSwgMCwgNDMsICB9LAkvKiAzOgk0MDAJ CTkuNSAqLwo+ICsJeyA3NywgIDB4OUEsIDAsIDEyOCwgfSwJLyogNDoJNjAwCQkwICAgKi8KPiAr CXsgMTE2LCAweDlBLCAwLCA4NSwgIH0sCS8qIDU6CTYwMAkJMy41ICovCj4gKwl7IDE1NCwgMHg5 QSwgMCwgNjQsICB9LAkvKiA2Ogk2MDAJCTYgICAqLwo+ICsJeyAxMDIsIDB4OUEsIDAsIDEyOCwg fSwJLyogNzoJODAwCQkwICAgKi8KPiArCXsgMTU0LCAweDlBLCAwLCA4NSwgIH0sCS8qIDg6CTgw MAkJMy41ICovCj4gKwl7IDE1NCwgMHg5QSwgMSwgMTI4LCB9LAkvKiA5OgkxMjAwCQkwICAgKi8K PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2Rk aV90cmFuc2xhdGlvbnNfZWRwW10gPSB7Cj4gKwkJCQkJLyogSWR4CU5UIG1WIGRpZmYJZGIgICov Cj4gKwl7IDI2LCAwLCAwLCAxMjgsIH0sCS8qIDA6CTIwMAkJMCAgICovCj4gKwl7IDM4LCAwLCAw LCAxMTIsIH0sCS8qIDE6CTIwMAkJMS41ICovCj4gKwl7IDQ4LCAwLCAwLCA5NiwgIH0sCS8qIDI6 CTIwMAkJNCAgICovCj4gKwl7IDU0LCAwLCAwLCA2OSwgIH0sCS8qIDM6CTIwMAkJNiAgICovCj4g Kwl7IDMyLCAwLCAwLCAxMjgsIH0sCS8qIDQ6CTI1MAkJMCAgICovCj4gKwl7IDQ4LCAwLCAwLCAx MDQsIH0sCS8qIDU6CTI1MAkJMS41ICovCj4gKwl7IDU0LCAwLCAwLCA4NSwgIH0sCS8qIDY6CTI1 MAkJNCAgICovCj4gKwl7IDQzLCAwLCAwLCAxMjgsIH0sCS8qIDc6CTMwMAkJMCAgICovCj4gKwl7 IDU0LCAwLCAwLCAxMDEsIH0sCS8qIDg6CTMwMAkJMS41ICovCj4gKwl7IDQ4LCAwLCAwLCAxMjgs IH0sCS8qIDk6CTMwMAkJMCAgICovCj4gK307Cj4gKwo+ICsvKiBCU3BlYyBoYXMgMiByZWNvbW1l bmRlZCB2YWx1ZXMgLSBlbnRyaWVzIDAgYW5kIDguCj4gKyAqIFVzaW5nIHRoZSBlbnRyeSB3aXRo IGhpZ2hlciB2c3dpbmcuCj4gKyAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVm X3RyYW5zIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKPiArCQkJCQkvKiBJZHgJTlQg bVYgZGlmZglkYiAgKi8KPiArCXsgNTIsICAweDlBLCAwLCAxMjgsIH0sCS8qIDA6CTQwMAkJMCAg ICovCj4gKwl7IDUyLCAgMHg5QSwgMCwgODUsICB9LAkvKiAxOgk0MDAJCTMuNSAqLwo+ICsJeyA1 MiwgIDB4OUEsIDAsIDY0LCAgfSwJLyogMjoJNDAwCQk2ICAgKi8KPiArCXsgNDIsICAweDlBLCAw LCA0MywgIH0sCS8qIDM6CTQwMAkJOS41ICovCj4gKwl7IDc3LCAgMHg5QSwgMCwgMTI4LCB9LAkv KiA0Ogk2MDAJCTAgICAqLwo+ICsJeyA3NywgIDB4OUEsIDAsIDg1LCAgfSwJLyogNToJNjAwCQkz LjUgKi8KPiArCXsgNzcsICAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYwMAkJNiAgICovCj4gKwl7 IDEwMiwgMHg5QSwgMCwgMTI4LCB9LAkvKiA3Ogk4MDAJCTAgICAqLwo+ICsJeyAxMDIsIDB4OUEs IDAsIDg1LCAgfSwJLyogODoJODAwCQkzLjUgKi8KPiArCXsgMTU0LCAweDlBLCAxLCAxMjgsIH0s CS8qIDk6CTEyMDAJCTAgICAqLwo+ICt9Owo+ICsKPiArLyogVm9sdGFnZSBTd2luZyBQcm9ncmFt bWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIERQICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVZbXSA9IHsKPiArCQkJ CQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiArCXsgMHhBLCAweDVELCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCj4gKwl7IDB4QSwgMHg2QSwgMHgz OCwgMHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwo+ICsJeyAweEIsIDB4 N0EsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KPiArCXsg MHg2LCAweDdDLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICov Cj4gKwl7IDB4QSwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAw LjAgICAqLwo+ICsJeyAweEIsIDB4N0EsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAw ICAgICAgMi45ICAgKi8KPiArCXsgMHg2LCAweDdDLCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDUw MCAgIDkwMCAgICAgIDUuMSAgICovCj4gKwl7IDB4QiwgMHg3RCwgMHgzQywgMHgwMCwgMHgwMyB9 LAkvKiA2NTAgICA3MjUgICAgICAwLjkgICAqLwo+ICsJeyAweDYsIDB4N0MsIDB4MzQsIDB4MDAs IDB4MEIgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KPiArCXsgMHg2LCAweDdCLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCj4gK307Cj4gKwo+ICsv KiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgSERNSSAqLwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRp b25zX2hkbWlfMF84NVZbXSA9IHsKPiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8K PiArCXsgMHhBLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAu MCAgICovCj4gKwl7IDB4QiwgMHg3MywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA0NTAgICA2NTAg ICAgICAzLjIgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDUw ICAgODUwICAgICAgNS41ICAgKi8KPiArCXsgMHhCLCAweDczLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDY1MCAgIDY1MCAgICAgIDAuMCAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgzNywgMHgwMCwg MHgwOCB9LAkvKiA2NTAgICA4NTAgICAgICAyLjMgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KPiArCXsgMHg2LCAweDdG LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCj4gK307Cj4g Kwo+ICsvKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgZURQ ICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFu c2xhdGlvbnNfZWRwXzBfODVWW10gPSB7Cj4gKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAg ICovCj4gKwl7IDB4QSwgMHg2NiwgMHgzQSwgMHgwMCwgMHgwNSB9LAkvKiAzODQgICA1MDAgICAg ICAyLjMgICAqLwo+ICsJeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUzICAg MjAwICAgICAgMi4zICAgKi8KPiArCXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8q IDE5MiAgIDI1MCAgICAgIDIuMyAgICovCj4gKwl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgw NyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwo+ICsJeyAweDksIDB4N0YsIDB4MzgsIDB4 MDAsIDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8KPiArCXsgMHhBLCAweDY2LCAw eDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUwMCAgICAgIDEuMCAgICovCj4gKwl7IDB4Qiwg MHg3MCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwo+ICsJ eyAweEMsIDB4NzUsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAg Ki8KPiArCXsgMHgyLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAg IDAuMCAgICovCj4gK307Cj4gKwo+ICsvKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBW Y2NJTyAwLjk1ViBmb3IgRFAgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90 cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VltdID0gewo+ICsJCQkJCQkvKiBOVCBt ViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweEEsIDB4NUQsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiArCXsgMHhBLCAweDZBLCAweDM4LCAweDAwLCAw eDA3IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4gKwl7IDB4QiwgMHg3QSwgMHgzMiwg MHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwo+ICsJeyAweDYsIDB4N0Ms IDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KPiArCXsgMHhB LCAweDY5LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4g Kwl7IDB4QiwgMHg3QSwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkg ICAqLwo+ICsJeyAweDYsIDB4N0MsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAg ICAgNS4xICAgKi8KPiArCXsgMHhCLCAweDdELCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAg IDcyNSAgICAgIDAuOSAgICovCj4gKwl7IDB4NiwgMHg3QywgMHgzNCwgMHgwMCwgMHgwQiB9LAkv KiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+ICsJeyAweDYsIDB4N0IsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KPiArfTsKPiArCj4gKy8qIFZvbHRhZ2Ug U3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuOTVWIGZvciBIRE1JICovCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8w Xzk1VltdID0gewo+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweEEs IDB4NUMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KPiAr CXsgMHhCLCAweDY5LCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDQwMCAgIDYwMCAgICAgIDMuNSAg ICovCj4gKwl7IDB4NSwgMHg3NiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0MDAgICA4MDAgICAg ICA2LjAgICAqLwo+ICsJeyAweEEsIDB4NUUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAg NDUwICAgICAgMC4wICAgKi8KPiArCXsgMHhCLCAweDY5LCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDYwMCAgIDYwMCAgICAgIDAuMCAgICovCj4gKwl7IDB4QiwgMHg3OSwgMHgzNSwgMHgwMCwgMHgw QSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwo+ICsJeyAweDYsIDB4N0QsIDB4MzIsIDB4 MDAsIDB4MEQgfSwJLyogNjAwICAgMTAwMCAgICAgNC40ICAgKi8KPiArCXsgMHg1LCAweDc2LCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAgIDgwMCAgICAgIDAuMCAgICovCj4gKwl7IDB4Niwg MHg3RCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4MDAgICAxMDAwICAgICAxLjkgICAqLwo+ICsJ eyAweDYsIDB4N0YsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODUwICAgMTA1MCAgICAgMS44ICAg Ki8KPiArCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAgICAg IDAuMCAgICovCj4gK307Cj4gKwo+ICsvKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBW Y2NJTyAwLjk1ViBmb3IgZURQICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZf dHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWW10gPSB7Cj4gKwkJCQkJCS8qIE5U IG1WIFRyYW5zIG1WIGRiICAgICovCj4gKwl7IDB4QSwgMHg2MSwgMHgzQSwgMHgwMCwgMHgwNSB9 LAkvKiAzODQgICA1MDAgICAgICAyLjMgICAqLwo+ICsJeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMTUzICAgMjAwICAgICAgMi4zICAgKi8KPiArCXsgMHg4LCAweDdGLCAweDM4 LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAgICovCj4gKwl7IDB4MSwgMHg3 RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwo+ICsJeyAw eDksIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8K PiArCXsgMHhBLCAweDYxLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUwMCAgICAgIDEu MCAgICovCj4gKwl7IDB4QiwgMHg2OCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA0NjAgICA2MDAg ICAgICAyLjMgICAqLwo+ICsJeyAweEMsIDB4NkUsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNTM3 ICAgNzAwICAgICAgMi4zICAgKi8KPiArCXsgMHg0LCAweDdGLCAweDNBLCAweDAwLCAweDA1IH0s CS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCj4gKwl7IDB4MiwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwo+ICt9Owo+ICsKPiArLyogVm9sdGFn ZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIERQICovCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8w NVZbXSA9IHsKPiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiArCXsgMHhBLCAw eDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCj4gKwl7 IDB4QiwgMHg2NCwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAq Lwo+ICsJeyAweDUsIDB4NzAsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDAwICAgODAwICAgICAg Ni4wICAgKi8KPiArCXsgMHg2LCAweDdGLCAweDJDLCAweDAwLCAweDEzIH0sCS8qIDQwMCAgIDEw NTAgICAgIDguNCAgICovCj4gKwl7IDB4QiwgMHg2NCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2 MDAgICA2MDAgICAgICAwLjAgICAqLwo+ICsJeyAweDUsIDB4NzMsIDB4MzUsIDB4MDAsIDB4MEEg fSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KPiArCXsgMHg2LCAweDdGLCAweDMwLCAweDAw LCAweDBGIH0sCS8qIDU1MCAgIDEwNTAgICAgIDUuNiAgICovCj4gKwl7IDB4NSwgMHg3NiwgMHgz RSwgMHgwMCwgMHgwMSB9LAkvKiA4NTAgICA5MDAgICAgICAwLjUgICAqLwo+ICsJeyAweDYsIDB4 N0YsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNzUwICAgMTA1MCAgICAgMi45ICAgKi8KPiArCXsg MHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAgICAgIDAuMCAgICov Cj4gK307Cj4gKwo+ICsvKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAxLjA1 ViBmb3IgSERNSSAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNu bF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVZbXSA9IHsKPiArCQkJCQkJLyogTlQgbVYgVHJh bnMgbVYgZGIgICAgKi8KPiArCXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQw MCAgIDQwMCAgICAgIDAuMCAgICovCj4gKwl7IDB4QiwgMHg2NCwgMHgzNywgMHgwMCwgMHgwOCB9 LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAqLwo+ICsJeyAweDUsIDB4NzAsIDB4MzEsIDB4MDAs IDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KPiArCXsgMHhBLCAweDVCLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAgICovCj4gKwl7IDB4QiwgMHg2 NCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2MDAgICA2MDAgICAgICAwLjAgICAqLwo+ICsJeyAw eDUsIDB4NzMsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8K PiArCXsgMHg2LCAweDdDLCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDYwMCAgIDEwMDAgICAgIDQu NCAgICovCj4gKwl7IDB4NSwgMHg3MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4MDAgICA4MDAg ICAgICAwLjAgICAqLwo+ICsJeyAweDYsIDB4N0MsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODAw ICAgMTAwMCAgICAgMS45ICAgKi8KPiArCXsgMHg2LCAweDdGLCAweDM5LCAweDAwLCAweDA2IH0s CS8qIDg1MCAgIDEwNTAgICAgIDEuOCAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiAxMDUwICAxMDUwICAgICAwLjAgICAqLwo+ICt9Owo+ICsKPiArLyogVm9sdGFn ZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIGVEUCAqLwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8x XzA1VltdID0gewo+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweEEs IDB4NUUsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4zICAgKi8KPiAr CXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAg ICovCj4gKwl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxOTIgICAyNTAgICAg ICAyLjMgICAqLwo+ICsJeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMwICAg MzAwICAgICAgMi4zICAgKi8KPiArCXsgMHg5LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8q IDI2OSAgIDM1MCAgICAgIDIuMyAgICovCj4gKwl7IDB4QSwgMHg1RSwgMHgzQywgMHgwMCwgMHgw MyB9LAkvKiA0NDYgICA1MDAgICAgICAxLjAgICAqLwo+ICsJeyAweEIsIDB4NjQsIDB4MzksIDB4 MDAsIDB4MDYgfSwJLyogNDYwICAgNjAwICAgICAgMi4zICAgKi8KPiArCXsgMHhFLCAweDZBLCAw eDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAgICovCj4gKwl7IDB4Miwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwo+ICt9 Owo+ICsKPiArLyogaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zICovCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2RwX2hicjJbXSA9IHsKPiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiAr CXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAg ICovCj4gKwl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAg ICAzLjEgICAqLwo+ICsJeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAg NzAwICAgICAgNi4wICAgKi8KPiArCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8q IDM1MCAgIDkwMCAgICAgIDguMiAgICovCj4gKwl7IDB4QSwgMHg0QywgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwo+ICsJeyAweEMsIDB4NzMsIDB4MzQsIDB4 MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KPiArCXsgMHg2LCAweDdGLCAw eDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCj4gKwl7IDB4Qywg MHg2QywgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwo+ICsJ eyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAg Ki8KPiArCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAg IDAuMCAgICovCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMltdID0gewo+ICsJCQkJ CQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweDAsIDB4N0YsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogMjAwICAgMjAwICAgICAgMC4wICAgKi8KPiArCXsgMHg4LCAweDdGLCAweDM4 LCAweDAwLCAweDA3IH0sCS8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCj4gKwl7IDB4MSwgMHg3 RiwgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAyMDAgICAzMDAgICAgICAzLjUgICAqLwo+ICsJeyAw eDksIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogMjAwICAgMzUwICAgICAgNC45ICAgKi8K PiArCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgIDI1MCAgICAgIDAu MCAgICovCj4gKwl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNTAgICAzMDAg ICAgICAxLjYgICAqLwo+ICsJeyAweDksIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogMjUw ICAgMzUwICAgICAgMi45ICAgKi8KPiArCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCj4gKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwg MHgwNyB9LAkvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLwo+ICsJeyAweDksIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF9oYnIzW10gPSB7Cj4gKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAg ICovCj4gKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAg ICAwLjAgICAqLwo+ICsJeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAg NTAwICAgICAgMy4xICAgKi8KPiArCXsgMHhDLCAweDcxLCAweDJGLCAweDAwLCAweDEwIH0sCS8q IDM1MCAgIDcwMCAgICAgIDYuMCAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwgMHgx NCB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwo+ICsJeyAweEEsIDB4NEMsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KPiArCXsgMHhDLCAweDczLCAw eDM0LCAweDAwLCAweDBCIH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCj4gKwl7IDB4Niwg MHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwo+ICsJ eyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAg Ki8KPiArCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAg IDMuNSAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5 MDAgICAgICAwLjAgICAqLwo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewo+ICsJ CQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweEEsIDB4NjAsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KPiArCXsgMHhCLCAweDczLCAw eDM2LCAweDAwLCAweDA5IH0sCS8qIDQ1MCAgIDY1MCAgICAgIDMuMiAgICovCj4gKwl7IDB4Niwg MHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0NTAgICA4NTAgICAgICA1LjUgICAqLwo+ICsJ eyAweEIsIDB4NzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNjUwICAgICAgMC4wICAg QUxTICovCj4gKwl7IDB4NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4NTAg ICAgICAyLjMgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODUw ICAgODUwICAgICAgMC4wICAgKi8KPiArCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0s CS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zIGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcFtd ID0gewo+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweEEsIDB4MzMs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiArCXsgMHhB LCAweDQ3LCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4g Kwl7IDB4QywgMHg2NCwgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAg ICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogMzUwICAgOTAwICAg ICAgOC4yICAgKi8KPiArCXsgMHhBLCAweDQ2LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAg IDUwMCAgICAgIDAuMCAgICovCj4gKwl7IDB4QywgMHg2NCwgMHgzOCwgMHgwMCwgMHgwNyB9LAkv KiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4MzIsIDB4MDAsIDB4 MEQgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiArCXsgMHhDLCAweDYxLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4gKwl7IDB4NiwgMHg3Riwg MHgzOCwgMHgwMCwgMHgwNyB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+ICsJeyAweDYs IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMganNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnJbXSA9IHsKPiArCQkJCQkJLyogTlQgbVYgVHJh bnMgbVYgZGIgICAgKi8KPiArCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAg ICAvKiAyMDAgICAyMDAgICAgICAwLjAgICAqLwo+ICsJeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwgICAgICAgIC8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCj4gKwl7IDB4MSwgMHg3 RiwgMHgzMywgMHgwMCwgMHgwQyB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAgMy41ICAgKi8K PiArCXsgMHhBLCAweDM1LCAweDM2LCAweDAwLCAweDA5IH0sICAgICAgICAvKiAyMDAgICAzNTAg ICAgICA0LjkgICAqLwo+ICsJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAg IC8qIDI1MCAgIDI1MCAgICAgIDAuMCAgICovCj4gKwl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwg MHgwNyB9LCAgICAgICAgLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KPiArCXsgMHhBLCAweDM1 LCAweDM1LCAweDAwLCAweDBBIH0sICAgICAgICAvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLwo+ ICsJeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDMwMCAgIDMwMCAg ICAgIDAuMCAgICovCj4gKwl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAg LyogMzAwICAgMzUwICAgICAgMS4zICAgKi8KPiArCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAw eDAwIH0sICAgICAgICAvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+ICt9Owo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBqc2xfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfZWRwX2hicjJbXSA9IHsKPiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAg Ki8KPiArCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyMDAgICAy MDAgICAgICAwLjAgICAqLwo+ICsJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAg ICAgIC8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCj4gKwl7IDB4MSwgMHg3RiwgMHgzRCwgMHgw MCwgMHgwMiB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAgMy41ICAgKi8KPiArCXsgMHhBLCAw eDM1LCAweDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAyMDAgICAzNTAgICAgICA0LjkgICAq Lwo+ICsJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDI1MCAgIDI1 MCAgICAgIDAuMCAgICovCj4gKwl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAg ICAgLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KPiArCXsgMHhBLCAweDM1LCAweDNBLCAweDAw LCAweDA1IH0sICAgICAgICAvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLwo+ICsJeyAweDEsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICov Cj4gKwl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMzAwICAgMzUw ICAgICAgMS4zICAgKi8KPiArCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sICAgICAg ICAvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBf cmJyX2hicltdID0gewo+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAw eEEsIDB4MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8K PiArCXsgMHhBLCAweDQ4LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDM1MCAgIDUwMCAgICAgIDMu MSAgICovCj4gKwl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAg ICAgICA2LjAgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyogMzUw ICAgOTAwICAgICAgOC4yICAgKi8KPiArCXsgMHhBLCAweDQzLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4gKwl7IDB4QywgMHg2MCwgMHgzNiwgMHgwMCwg MHgwOSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4MzAs IDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiArCXsgMHhDLCAweDYw LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4gKwl7IDB4 NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+ ICsJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4w ICAgKi8KPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg ZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyM1tdID0gewo+ICsJCQkJ CQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweEEsIDB4MzIsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiArCXsgMHhBLCAweDQ4LCAweDM1 LCAweDAwLCAweDBBIH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4gKwl7IDB4QywgMHg2 MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwo+ICsJeyAw eDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8K PiArCXsgMHhBLCAweDQzLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAu MCAgICovCj4gKwl7IDB4QywgMHg2MCwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAg ICAgICAyLjkgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAw ICAgOTAwICAgICAgNS4xICAgKi8KPiArCXsgMHhDLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwg MHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19waHlfZGRp X3RyYW5zbGF0aW9uc19yYnJfaGJyW10gPSB7Cj4gKwkJCQkvKiBWb2x0YWdlIHN3aW5nICBwcmUt ZW1waGFzaXMgKi8KPiArCXsgMHgxOCwgMHgwMCwgMHgwMCB9LAkvKiAwICAgICAgICAgICAgICAw ICAgKi8KPiArCXsgMHgxRCwgMHgwMCwgMHgwNSB9LAkvKiAwICAgICAgICAgICAgICAxICAgKi8K PiArCXsgMHgyNCwgMHgwMCwgMHgwQyB9LAkvKiAwICAgICAgICAgICAgICAyICAgKi8KPiArCXsg MHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAwICAgICAgICAgICAgICAzICAgKi8KPiArCXsgMHgyMSwg MHgwMCwgMHgwMCB9LAkvKiAxICAgICAgICAgICAgICAwICAgKi8KPiArCXsgMHgyQiwgMHgwMCwg MHgwOCB9LAkvKiAxICAgICAgICAgICAgICAxICAgKi8KPiArCXsgMHgzMCwgMHgwMCwgMHgwRiB9 LAkvKiAxICAgICAgICAgICAgICAyICAgKi8KPiArCXsgMHgzMSwgMHgwMCwgMHgwMyB9LAkvKiAy ICAgICAgICAgICAgICAwICAgKi8KPiArCXsgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiAyICAgICAg ICAgICAgICAxICAgKi8KPiArCXsgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzICAgICAgICAgICAg ICAwICAgKi8KPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlf YnVmX3RyYW5zIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjNbXSA9IHsKPiAr CQkJCS8qIFZvbHRhZ2Ugc3dpbmcgIHByZS1lbXBoYXNpcyAqLwo+ICsJeyAweDE4LCAweDAwLCAw eDAwIH0sCS8qIDAgICAgICAgICAgICAgIDAgICAqLwo+ICsJeyAweDFELCAweDAwLCAweDA1IH0s CS8qIDAgICAgICAgICAgICAgIDEgICAqLwo+ICsJeyAweDI0LCAweDAwLCAweDBDIH0sCS8qIDAg ICAgICAgICAgICAgIDIgICAqLwo+ICsJeyAweDJCLCAweDAwLCAweDE0IH0sCS8qIDAgICAgICAg ICAgICAgIDMgICAqLwo+ICsJeyAweDI2LCAweDAwLCAweDAwIH0sCS8qIDEgICAgICAgICAgICAg IDAgICAqLwo+ICsJeyAweDJDLCAweDAwLCAweDA3IH0sCS8qIDEgICAgICAgICAgICAgIDEgICAq Lwo+ICsJeyAweDMzLCAweDAwLCAweDBDIH0sCS8qIDEgICAgICAgICAgICAgIDIgICAqLwo+ICsJ eyAweDJFLCAweDAwLCAweDAwIH0sCS8qIDIgICAgICAgICAgICAgIDAgICAqLwo+ICsJeyAweDM2 LCAweDAwLCAweDA5IH0sCS8qIDIgICAgICAgICAgICAgIDEgICAqLwo+ICsJeyAweDNGLCAweDAw LCAweDAwIH0sCS8qIDMgICAgICAgICAgICAgIDAgICAqLwo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9kZGlfdHJhbnNs YXRpb25zX2hkbWlbXSA9IHsKPiArCQkJCS8qIEhETUkgUHJlc2V0CVZTCVByZS1lbXBoICovCj4g Kwl7IDB4MUEsIDB4MCwgMHgwIH0sCS8qIDEJCTQwMG1WCTBkQiAqLwo+ICsJeyAweDIwLCAweDAs IDB4MCB9LAkvKiAyCQk1MDBtVgkwZEIgKi8KPiArCXsgMHgyOSwgMHgwLCAweDAgfSwJLyogMwkJ NjUwbVYJMGRCICovCj4gKwl7IDB4MzIsIDB4MCwgMHgwIH0sCS8qIDQJCTgwMG1WCTBkQiAqLwo+ ICsJeyAweDNGLCAweDAsIDB4MCB9LAkvKiA1CQkxMDAwbVYJMGRCICovCj4gKwl7IDB4M0EsIDB4 MCwgMHg1IH0sCS8qIDYJCUZ1bGwJLTEuNSBkQiAqLwo+ICsJeyAweDM5LCAweDAsIDB4NiB9LAkv KiA3CQlGdWxsCS0xLjggZEIgKi8KPiArCXsgMHgzOCwgMHgwLCAweDcgfSwJLyogOAkJRnVsbAkt MiBkQiAqLwo+ICsJeyAweDM3LCAweDAsIDB4OCB9LAkvKiA5CQlGdWxsCS0yLjUgZEIgKi8KPiAr CXsgMHgzNiwgMHgwLCAweDkgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyB0Z2xfZGtsX3BoeV9k cF9kZGlfdHJhbnNbXSA9IHsKPiArCQkJCS8qIFZTCXByZS1lbXAJTm9uLXRyYW5zIG1WCVByZS1l bXBoIGRCICovCj4gKwl7IDB4NywgMHgwLCAweDAwIH0sCS8qIDAJMAk0MDBtVgkJMCBkQiAqLwo+ ICsJeyAweDUsIDB4MCwgMHgwNSB9LAkvKiAwCTEJNDAwbVYJCTMuNSBkQiAqLwo+ICsJeyAweDIs IDB4MCwgMHgwQiB9LAkvKiAwCTIJNDAwbVYJCTYgZEIgKi8KPiArCXsgMHgwLCAweDAsIDB4MTgg fSwJLyogMAkzCTQwMG1WCQk5LjUgZEIgKi8KPiArCXsgMHg1LCAweDAsIDB4MDAgfSwJLyogMQkw CTYwMG1WCQkwIGRCICovCj4gKwl7IDB4MiwgMHgwLCAweDA4IH0sCS8qIDEJMQk2MDBtVgkJMy41 IGRCICovCj4gKwl7IDB4MCwgMHgwLCAweDE0IH0sCS8qIDEJMgk2MDBtVgkJNiBkQiAqLwo+ICsJ eyAweDIsIDB4MCwgMHgwMCB9LAkvKiAyCTAJODAwbVYJCTAgZEIgKi8KPiArCXsgMHgwLCAweDAs IDB4MEIgfSwJLyogMgkxCTgwMG1WCQkzLjUgZEIgKi8KPiArCXsgMHgwLCAweDAsIDB4MDAgfSwJ LyogMwkwCTEyMDBtVgkJMCBkQiBIRE1JIGRlZmF1bHQgKi8KPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyB0Z2xfZGtsX3BoeV9kcF9kZGlf dHJhbnNfaGJyMltdID0gewo+ICsJCQkJLyogVlMJcHJlLWVtcAlOb24tdHJhbnMgbVYJUHJlLWVt cGggZEIgKi8KPiArCXsgMHg3LCAweDAsIDB4MDAgfSwJLyogMAkwCTQwMG1WCQkwIGRCICovCj4g Kwl7IDB4NSwgMHgwLCAweDA1IH0sCS8qIDAJMQk0MDBtVgkJMy41IGRCICovCj4gKwl7IDB4Miwg MHgwLCAweDBCIH0sCS8qIDAJMgk0MDBtVgkJNiBkQiAqLwo+ICsJeyAweDAsIDB4MCwgMHgxOSB9 LAkvKiAwCTMJNDAwbVYJCTkuNSBkQiAqLwo+ICsJeyAweDUsIDB4MCwgMHgwMCB9LAkvKiAxCTAJ NjAwbVYJCTAgZEIgKi8KPiArCXsgMHgyLCAweDAsIDB4MDggfSwJLyogMQkxCTYwMG1WCQkzLjUg ZEIgKi8KPiArCXsgMHgwLCAweDAsIDB4MTQgfSwJLyogMQkyCTYwMG1WCQk2IGRCICovCj4gKwl7 IDB4MiwgMHgwLCAweDAwIH0sCS8qIDIJMAk4MDBtVgkJMCBkQiAqLwo+ICsJeyAweDAsIDB4MCwg MHgwQiB9LAkvKiAyCTEJODAwbVYJCTMuNSBkQiAqLwo+ICsJeyAweDAsIDB4MCwgMHgwMCB9LAkv KiAzCTAJMTIwMG1WCQkwIGRCIEhETUkgZGVmYXVsdCAqLwo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5X2hkbWlfZGRp X3RyYW5zW10gPSB7Cj4gKwkJCQkvKiBIRE1JIFByZXNldAlWUwlQcmUtZW1waCAqLwo+ICsJeyAw eDcsIDB4MCwgMHgwIH0sCS8qIDEJCTQwMG1WCTBkQiAqLwo+ICsJeyAweDYsIDB4MCwgMHgwIH0s CS8qIDIJCTUwMG1WCTBkQiAqLwo+ICsJeyAweDQsIDB4MCwgMHgwIH0sCS8qIDMJCTY1MG1WCTBk QiAqLwo+ICsJeyAweDIsIDB4MCwgMHgwIH0sCS8qIDQJCTgwMG1WCTBkQiAqLwo+ICsJeyAweDAs IDB4MCwgMHgwIH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8KPiArCXsgMHgwLCAweDAsIDB4NSB9LAkv KiA2CQlGdWxsCS0xLjUgZEIgKi8KPiArCXsgMHgwLCAweDAsIDB4NiB9LAkvKiA3CQlGdWxsCS0x LjggZEIgKi8KPiArCXsgMHgwLCAweDAsIDB4NyB9LAkvKiA4CQlGdWxsCS0yIGRCICovCj4gKwl7 IDB4MCwgMHgwLCAweDggfSwJLyogOQkJRnVsbAktMi41IGRCICovCj4gKwl7IDB4MCwgMHgwLCAw eEEgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hi cltdID0gewo+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ICsJeyAweEEsIDB4 MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiArCXsg MHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICov Cj4gKwl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2 LjAgICAqLwo+ICsJeyAweDYsIDB4N0QsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAw ICAgICAgOC4yICAgKi8KPiArCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUw MCAgIDUwMCAgICAgIDAuMCAgICovCj4gKwl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9 LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+ICsJeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAs IDB4MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiArCXsgMHhDLCAweDZDLCAweDND LCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4gKwl7IDB4NiwgMHg3 RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+ICsJeyAw eDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8K PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJbXSA9IHsKPiArCQkJCQkJLyogTlQgbVYg VHJhbnMgbVYgZGIgICAgKi8KPiArCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDM1MCAgIDM1MCAgICAgIDAuMCAgICovCj4gKwl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgw OCB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwo+ICsJeyAweEMsIDB4NjMsIDB4MkYsIDB4 MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KPiArCXsgMHg2LCAweDdGLCAw eDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCj4gKwl7IDB4QSwg MHg0NywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAqLwo+ICsJ eyAweEMsIDB4NjMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAg Ki8KPiArCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAg IDUuMSAgICovCj4gKwl7IDB4QywgMHg2MSwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3 MDAgICAgICAwLjYgICAqLwo+ICsJeyAweDYsIDB4N0IsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyog NjAwICAgOTAwICAgICAgMy41ICAgKi8KPiArCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcF9oYnIyW10gPSB7Cj4gKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCj4gKwl7 IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAq Lwo+ICsJeyAweEEsIDB4NEYsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogMzUwICAgNTAwICAgICAg My4xICAgKi8KPiArCXsgMHhDLCAweDYwLCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDM1MCAgIDcw MCAgICAgIDYuMCAgICovCj4gKwl7IDB4QywgMHg3RiwgMHgyRCwgMHgwMCwgMHgxMiB9LAkvKiAz NTAgICA5MDAgICAgICA4LjIgICAqLwo+ICsJeyAweEMsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAg fSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KPiArCXsgMHhDLCAweDZGLCAweDM2LCAweDAw LCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCj4gKwl7IDB4NiwgMHg3RCwgMHgz MiwgMHgwMCwgMHgwRCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwo+ICsJeyAweDYsIDB4 NjAsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KPiArCXsg MHg2LCAweDdGLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICov Cj4gKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAw LjAgICAqLwo+ICt9Owo+ICsKPiArLyoKPiArICogQ2xvbmVkIHRoZSBIT0JMIGVudHJ5IHRvIGNv bXBseSB3aXRoIHRoZSB2b2x0YWdlIGFuZCBwcmUtZW1waGFzaXMgZW50cmllcwo+ICsgKiB0aGF0 IERpc3BsYXlQb3J0IHNwZWNpZmljYXRpb24gcmVxdWlyZXMKPiArICovCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnIyX2hvYmxbXSA9IHsKPiArCQkJCQkJLyogVlMJcHJlLWVtcAkqLwo+ICsJeyAweDYs IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkwCSovCj4gKwl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAwCTEJKi8KPiArCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDAJMgkqLwo+ICsJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog MAkzCSovCj4gKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTAJKi8KPiAr CXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEJMQkqLwo+ICsJeyAweDYsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMQkyCSovCj4gKwl7IDB4NiwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiAyCTAJKi8KPiArCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDIJMQkqLwo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyBya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyW10gPSB7Cj4gKwkJ CQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCj4gKwl7IDB4QSwgMHgyRiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+ICsJeyAweEEsIDB4NEYsIDB4 MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KPiArCXsgMHhDLCAw eDYzLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCj4gKwl7 IDB4NiwgMHg3RCwgMHgyQSwgMHgwMCwgMHgxNSB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAq Lwo+ICsJeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAg MC4wICAgKi8KPiArCXsgMHhDLCAweDczLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDUwMCAgIDcw MCAgICAgIDIuOSAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1 MDAgICA5MDAgICAgICA1LjEgICAqLwo+ICsJeyAweEMsIDB4NkUsIDB4M0UsIDB4MDAsIDB4MDEg fSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KPiArCXsgMHg2LCAweDdGLCAweDM1LCAweDAw LCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwo+ICt9Owo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBya2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzW10gPSB7Cj4gKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1W IGRiICAgICovCj4gKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAz NTAgICAgICAwLjAgICAqLwo+ICsJeyAweEEsIDB4NTAsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyog MzUwICAgNTAwICAgICAgMy4xICAgKi8KPiArCXsgMHhDLCAweDYxLCAweDMzLCAweDAwLCAweDBD IH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgyRSwgMHgw MCwgMHgxMSB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwo+ICsJeyAweEEsIDB4NDcsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KPiArCXsgMHhDLCAw eDVGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCj4gKwl7 IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAq Lwo+ICsJeyAweEMsIDB4NUYsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNzAwICAgICAg MC42ICAgKi8KPiArCXsgMHg2LCAweDdFLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDYwMCAgIDkw MCAgICAgIDMuNSAgICovCj4gKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5 MDAgICA5MDAgICAgICAwLjAgICAqLwo+ICt9Owo+ICsKPiArYm9vbCBpc19ob2JsX2J1Zl90cmFu cyhjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKnRhYmxlKQo+ICt7Cj4gKwlyZXR1cm4g dGFibGUgPT0gdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyX2hvYmw7Cj4g K30KPiArCj4gK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKPiArYmR3X2dldF9idWZfdHJh bnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVy LT5iYXNlLmRldik7Cj4gKwo+ICsJaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsK PiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3RyYW5zbGF0aW9uc19lZHApOwo+ ICsJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19lZHA7Cj4gKwl9IGVsc2Ugewo+ICsJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCQlyZXR1 cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfZHA7Cj4gKwl9Cj4gK30KPiArCj4gK2NvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zICoKPiArc2tsX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiArCj4gKwlp ZiAoSVNfU0tMX1VMWChkZXZfcHJpdikpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShz a2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0 aW9uc19kcDsKPiArCX0gZWxzZSBpZiAoSVNfU0tMX1VMVChkZXZfcHJpdikpIHsKPiArCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCQlyZXR1 cm4gc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiArCX0gZWxzZSB7Cj4gKwkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfZHApOwo+ICsJCXJldHVybiBza2xf ZGRpX3RyYW5zbGF0aW9uc19kcDsKPiArCX0KPiArfQo+ICsKPiArY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgKgo+ICtrYmxfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsKPiArCWlmIChJU19L QkxfVUxYKGRldl9wcml2KSB8fAo+ICsJICAgIElTX0NGTF9VTFgoZGV2X3ByaXYpIHx8Cj4gKwkg ICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShr YmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCQlyZXR1cm4ga2JsX3lfZGRpX3RyYW5zbGF0 aW9uc19kcDsKPiArCX0gZWxzZSBpZiAoSVNfS0JMX1VMVChkZXZfcHJpdikgfHwKPiArCQkgICBJ U19DRkxfVUxUKGRldl9wcml2KSB8fAo+ICsJCSAgIElTX0NNTF9VTFQoZGV2X3ByaXYpKSB7Cj4g KwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3VfZGRpX3RyYW5zbGF0aW9uc19kcCk7Cj4g KwkJcmV0dXJuIGtibF91X2RkaV90cmFuc2xhdGlvbnNfZHA7Cj4gKwl9IGVsc2Ugewo+ICsJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGtibF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCQlyZXR1 cm4ga2JsX2RkaV90cmFuc2xhdGlvbnNfZHA7Cj4gKwl9Cj4gK30KPiArCj4gK2NvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zICoKPiArc2tsX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwo+ICsJ aWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKPiArCQlpZiAoSVNfU0tMX1VMWChk ZXZfcHJpdikgfHwKPiArCQkgICAgSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKPiArCQkgICAgSVNf Q0ZMX1VMWChkZXZfcHJpdikgfHwKPiArCQkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsKPiAr CQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHApOwo+ ICsJCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHA7Cj4gKwkJfSBlbHNlIGlmIChJ U19TS0xfVUxUKGRldl9wcml2KSB8fAo+ICsJCQkgICBJU19LQkxfVUxUKGRldl9wcml2KSB8fAo+ ICsJCQkgICBJU19DRkxfVUxUKGRldl9wcml2KSB8fAo+ICsJCQkgICBJU19DTUxfVUxUKGRldl9w cml2KSkgewo+ICsJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfdV9kZGlfdHJhbnNsYXRp b25zX2VkcCk7Cj4gKwkJCXJldHVybiBza2xfdV9kZGlfdHJhbnNsYXRpb25zX2VkcDsKPiArCQl9 IGVsc2Ugewo+ICsJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3RyYW5zbGF0aW9u c19lZHApOwo+ICsJCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwOwo+ICsJCX0KPiAr CX0KPiArCj4gKwlpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8Cj4gKwkgICAgSVNfQ09GRkVF TEFLRShkZXZfcHJpdikgfHwKPiArCSAgICBJU19DT01FVExBS0UoZGV2X3ByaXYpKQo+ICsJCXJl dHVybiBrYmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICsJZWxzZQo+ ICsJCXJldHVybiBza2xfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICt9 Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCj4gK3NrbF9nZXRfYnVmX3RyYW5z X2hkbWkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgKm5fZW50cmllcykK PiArewo+ICsJaWYgKElTX1NLTF9VTFgoZGV2X3ByaXYpIHx8Cj4gKwkgICAgSVNfS0JMX1VMWChk ZXZfcHJpdikgfHwKPiArCSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8fAo+ICsJICAgIElTX0NN TF9VTFgoZGV2X3ByaXYpKSB7Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3lfZGRp X3RyYW5zbGF0aW9uc19oZG1pKTsKPiArCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19o ZG1pOwo+ICsJfSBlbHNlIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3Ry YW5zbGF0aW9uc19oZG1pKTsKPiArCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaTsK PiArCX0KPiArfQo+ICsKPiAraW50IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW51bSBwb3J0 IHBvcnQsIGludCBuX2VudHJpZXMpCj4gK3sKPiArCS8qIE9ubHkgRERJQSBhbmQgRERJRSBjYW4g c2VsZWN0IHRoZSAxMHRoIHJlZ2lzdGVyIHdpdGggRFAgKi8KPiArCWlmIChwb3J0ID09IFBPUlRf QSB8fCBwb3J0ID09IFBPUlRfRSkKPiArCQlyZXR1cm4gbWluKG5fZW50cmllcywgMTApOwo+ICsJ ZWxzZQo+ICsJCXJldHVybiBtaW4obl9lbnRyaWVzLCA5KTsKPiArfQo+ICsKPiArY29uc3Qgc3Ry dWN0IGRkaV9idWZfdHJhbnMgKgo+ICtpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ ICsKPiArCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgfHwKPiArCSAgICBJU19DT0ZGRUVMQUtF KGRldl9wcml2KSB8fAo+ICsJICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpIHsKPiArCQljb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9Cj4gKwkJCWtibF9nZXRf YnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gKwkJKm5fZW50cmllcyA9IHNrbF9i dWZfdHJhbnNfbnVtX2VudHJpZXMoZW5jb2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Cj4gKwkJcmV0 dXJuIGRkaV90cmFuc2xhdGlvbnM7Cj4gKwl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYp KSB7Cj4gKwkJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQo+ ICsJCQlza2xfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICsJCSpuX2Vu dHJpZXMgPSBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVuY29kZXItPnBvcnQsICpuX2VudHJp ZXMpOwo+ICsJCXJldHVybiBkZGlfdHJhbnNsYXRpb25zOwo+ICsJfSBlbHNlIGlmIChJU19CUk9B RFdFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3X2RkaV90 cmFuc2xhdGlvbnNfZHApOwo+ICsJCXJldHVybiAgYmR3X2RkaV90cmFuc2xhdGlvbnNfZHA7Cj4g Kwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZHApOwo+ICsJCXJldHVybiBoc3dfZGRpX3Ry YW5zbGF0aW9uc19kcDsKPiArCX0KPiArCj4gKwkqbl9lbnRyaWVzID0gMDsKPiArCXJldHVybiBO VUxMOwo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCj4gK2ludGVsX2Rk aV9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpu X2VudHJpZXMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsKPiArCWlmIChJU19HRU45X0JDKGRldl9wcml2 KSkgewo+ICsJCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0K PiArCQkJc2tsX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gKwkJKm5f ZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW5jb2Rlci0+cG9ydCwgKm5fZW50 cmllcyk7Cj4gKwkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7Cj4gKwl9IGVsc2UgaWYgKElTX0JS T0FEV0VMTChkZXZfcHJpdikpIHsKPiArCQlyZXR1cm4gYmR3X2dldF9idWZfdHJhbnNfZWRwKGVu Y29kZXIsIG5fZW50cmllcyk7Cj4gKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7 Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZHApOwo+ ICsJCXJldHVybiBoc3dfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiArCX0KPiArCj4gKwkqbl9lbnRy aWVzID0gMDsKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyAqCj4gK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2ZkaShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICBpbnQgKm5fZW50cmllcykKPiArewo+ICsJaWYg KElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShi ZHdfZGRpX3RyYW5zbGF0aW9uc19mZGkpOwo+ICsJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9u c19mZGk7Cj4gKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpKTsKPiArCQlyZXR1cm4g aHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpOwo+ICsJfQo+ICsKPiArCSpuX2VudHJpZXMgPSAwOwo+ ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoK PiAraW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiArCQkJICAgICBpbnQgKm5fZW50cmllcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwo+ICsJ aWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Cj4gKwkJcmV0dXJuIHNrbF9nZXRfYnVmX3RyYW5z X2hkbWkoZGV2X3ByaXYsIG5fZW50cmllcyk7Cj4gKwl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChk ZXZfcHJpdikpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3RyYW5zbGF0 aW9uc19oZG1pKTsKPiArCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKPiArCX0g ZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlf U0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKPiArCQlyZXR1cm4gaHN3X2RkaV90cmFu c2xhdGlvbnNfaGRtaTsKPiArCX0KPiArCj4gKwkqbl9lbnRyaWVzID0gMDsKPiArCXJldHVybiBO VUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoK PiArYnh0X2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGlu dCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShieHRfZGRpX3Ry YW5zbGF0aW9uc19kcCk7Cj4gKwlyZXR1cm4gYnh0X2RkaV90cmFuc2xhdGlvbnNfZHA7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgo+ICtieHRfZ2V0 X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRy aWVzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItPmJhc2UuZGV2KTsKPiArCj4gKwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zz d2luZykgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlfdHJhbnNsYXRpb25z X2VkcCk7Cj4gKwkJcmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2VkcDsKPiArCX0KPiArCj4g KwlyZXR1cm4gYnh0X2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKPiArfQo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCj4gK2J4dF9nZXRf YnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRy aWVzKQo+ICt7Cj4gKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9u c19oZG1pKTsKPiArCXJldHVybiBieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwo+ICt9Cj4gKwo+ ICtjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgo+ICtieHRfZ2V0X2J1Zl90cmFucyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCSAgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCWlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKPiAr CQlyZXR1cm4gYnh0X2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICsJ aWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4g KwkJcmV0dXJuIGJ4dF9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICsJ cmV0dXJuIGJ4dF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtjbmxfZ2V0X2J1 Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmll cykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShl bmNvZGVyLT5iYXNlLmRldik7Cj4gKwl1MzIgdm9sdGFnZSA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5GT19NQVNLOwo+ICsKPiArCWlmICh2 b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1Vikgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVYpOwo+ICsJCXJldHVybiBjbmxfZGRp X3RyYW5zbGF0aW9uc19oZG1pXzBfODVWOwo+ICsJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRB R0VfSU5GT18wXzk1Vikgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJh bnNsYXRpb25zX2hkbWlfMF85NVYpOwo+ICsJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19o ZG1pXzBfOTVWOwo+ICsJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18xXzA1Vikg ewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlf MV8wNVYpOwo+ICsJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzFfMDVWOwo+ICsJ fSBlbHNlIHsKPiArCQkqbl9lbnRyaWVzID0gMTsgLyogc2h1dCB1cCBnY2MgKi8KPiArCQlNSVNT SU5HX0NBU0Uodm9sdGFnZSk7Cj4gKwl9Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gK2NubF9nZXRfYnVmX3RyYW5z X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKPiArewo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4gKwl1MzIgdm9sdGFnZSA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9Q T1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5GT19NQVNLOwo+ICsKPiArCWlmICh2b2x0YWdlID09 IFZPTFRBR0VfSU5GT18wXzg1Vikgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9k ZGlfdHJhbnNsYXRpb25zX2RwXzBfODVWKTsKPiArCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlv bnNfZHBfMF84NVY7Cj4gKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVW KSB7Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBf MF85NVYpOwo+ICsJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VjsKPiArCX0g ZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsKPiArCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8xXzA1Vik7Cj4gKwkJcmV0dXJu IGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWOwo+ICsJfSBlbHNlIHsKPiArCQkqbl9lbnRy aWVzID0gMTsgLyogc2h1dCB1cCBnY2MgKi8KPiArCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7Cj4g Kwl9Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyAqCj4gK2NubF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJdTMyIHZv bHRhZ2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xU QUdFX0lORk9fTUFTSzsKPiArCj4gKwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykg ewo+ICsJCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1Vikgewo+ICsJCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYpOwo+ICsJCQly ZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWOwo+ICsJCX0gZWxzZSBpZiAodm9s dGFnZSA9PSBWT0xUQUdFX0lORk9fMF85NVYpIHsKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWKTsKPiArCQkJcmV0dXJuIGNubF9kZGlf dHJhbnNsYXRpb25zX2VkcF8wXzk1VjsKPiArCQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFH RV9JTkZPXzFfMDVWKSB7Cj4gKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJh bnNsYXRpb25zX2VkcF8xXzA1Vik7Cj4gKwkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19l ZHBfMV8wNVY7Cj4gKwkJfSBlbHNlIHsKPiArCQkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAg Z2NjICovCj4gKwkJCU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsKPiArCQl9Cj4gKwkJcmV0dXJuIE5V TEw7Cj4gKwl9IGVsc2Ugewo+ICsJCXJldHVybiBjbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVy LCBuX2VudHJpZXMpOwo+ICsJfQo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZf dHJhbnMgKgo+ICtjbmxfZ2V0X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiArCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJ CSAgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNf c3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKPiArCQlyZXR1cm4gY25sX2dldF9idWZfdHJhbnNf aGRtaShlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0 Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4gKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5z X2VkcChlbmNvZGVyLCBuX2VudHJpZXMpOwo+ICsJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2Rw KGVuY29kZXIsIG5fZW50cmllcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICAgIGludCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRt aSk7Cj4gKwlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0 X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJ ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCSAgIGlu dCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7Cj4gKwlyZXR1cm4gaWNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2RwX2hicjI7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJICAgIGludCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKPiArCj4gKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDU0MDAwMCkgewo+ICsJ CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19l ZHBfaGJyMyk7Cj4gKwkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyMzsKPiArCX0gZWxzZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+ICsJ CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19l ZHBfaGJyMik7Cj4gKwkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyMjsKPiArCX0gZWxzZSBpZiAoSVNfREcxKGRldl9wcml2KSAmJiBjcnRjX3N0YXRlLT5wb3J0 X2Nsb2NrID4gMjcwMDAwKSB7Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZGcxX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJyMyk7Cj4gKwkJcmV0dXJuIGRnMV9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyX2hicjM7Cj4gKwl9IGVsc2UgaWYgKElTX0RH MShkZXZfcHJpdikpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShkZzFfY29tYm9fcGh5 X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicik7Cj4gKwkJcmV0dXJuIGRnMV9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19kcF9yYnJfaGJyOwo+ICsJfQo+ICsKPiArCXJldHVybiBpY2xfZ2V0 X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+ICt9 Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0X2NvbWJv X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCWludCAqbl9lbnRyaWVzKQo+ ICt7Cj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRf SERNSSkpCj4gKwkJcmV0dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiArCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUo Y3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4gKwkJcmV0dXJuIGljbF9nZXRfY29tYm9f YnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+ICsJZWxzZQo+ ICsJCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRl LCBuX2VudHJpZXMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlf ZGRpX2J1Zl90cmFucyAqCj4gK2ljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gKwkJCSAgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKPiArCXJldHVy biBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKPiArfQo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0X21nX2J1Zl90 cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCWludCAqbl9lbnRyaWVzKQo+ICt7 Cj4gKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgewo+ICsJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjMpOwo+ ICsJCXJldHVybiBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGJyMl9oYnIzOwo+ICsJfSBl bHNlIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFuc2xh dGlvbnNfcmJyX2hicik7Cj4gKwkJcmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19y YnJfaGJyOwo+ICsJfQo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVm X3RyYW5zICoKPiAraWNsX2dldF9tZ19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gKwkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiArCQkgICAgIGludCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNf dHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCj4gKwkJcmV0dXJuIGljbF9nZXRf bWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiArCWVs c2UKPiArCQlyZXR1cm4gaWNsX2dldF9tZ19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0 ZSwgbl9lbnRyaWVzKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyAqCj4gK2VobF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gKwkJCSAgICAgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKPiAr CXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKPiArfQo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gK2VobF9nZXRfY29tYm9f YnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJICAgaW50ICpuX2Vu dHJpZXMpCj4gK3sKPiArCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGVobF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19kcCk7Cj4gKwlyZXR1cm4gZWhsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2RwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z ICoKPiArZWhsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICsJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gKwkJCSAgICBpbnQgKm5fZW50cmllcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwo+ICsJaWYg KGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlf U0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOwo+ICsJCXJldHVy biBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5f ZW50cmllcyk7Cj4gK30KPiArCj4gK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4g K2VobF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ICsJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJaW50 ICpuX2VudHJpZXMpCj4gK3sKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUs IElOVEVMX09VVFBVVF9IRE1JKSkKPiArCQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNf aGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+ICsJZWxzZSBpZiAoaW50ZWxf Y3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKPiArCQlyZXR1cm4g ZWhsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmll cyk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICAgIGludCAqbl9lbnRyaWVzKQo+ICt7 Cj4gKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfaGRtaSk7Cj4gKwlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtq c2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiArCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJ CSAgIGludCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7Cj4gKwlyZXR1cm4gaWNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjI7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJICAgIGludCAqbl9lbnRyaWVzKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKPiArCj4gKwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+ ICsJCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Cj4gKwkJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7 Cj4gKwkJCXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7Cj4g KwkJfSBlbHNlIHsKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoanNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIpOwo+ICsJCQlyZXR1cm4ganNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF9oYnI7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiBqc2xfZ2V0 X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+ICt9 Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtqc2xfZ2V0X2NvbWJv X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCWludCAqbl9lbnRyaWVzKQo+ ICt7Cj4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRf SERNSSkpCj4gKwkJcmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiArCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUo Y3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4gKwkJcmV0dXJuIGpzbF9nZXRfY29tYm9f YnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwo+ICsJZWxzZQo+ ICsJCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRl LCBuX2VudHJpZXMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zICoKPiArdGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiArCQkJICAgICBpbnQgKm5fZW50cmllcykKPiArewo+ICsJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwo+ICsJ cmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiArdGdsX2dldF9jb21ib19i dWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICBpbnQgKm5fZW50 cmllcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sg PiAyNzAwMDApIHsKPiArCQlpZiAoSVNfUk9DS0VUTEFLRShkZXZfcHJpdikpIHsKPiArCQkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUocmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hi cjJfaGJyMyk7Cj4gKwkJCXJldHVybiBya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBf aGJyMl9oYnIzOwo+ICsJCX0gZWxzZSBpZiAoSVNfVEdMX1UoZGV2X3ByaXYpIHx8IElTX1RHTF9Z KGRldl9wcml2KSkgewo+ICsJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfdXlfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7Cj4gKwkJCXJldHVybiB0Z2xfdXlfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsKPiArCQl9IGVsc2Ugewo+ICsJCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRSh0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7 Cj4gKwkJCXJldHVybiB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsKPiAr CQl9Cj4gKwl9IGVsc2Ugewo+ICsJCWlmIChJU19ST0NLRVRMQUtFKGRldl9wcml2KSkgewo+ICsJ CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyKTsKPiArCQkJcmV0dXJuIHJrbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9o YnI7Cj4gKwkJfSBlbHNlIHsKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicik7Cj4gKwkJCXJldHVybiB0Z2xfY29tYm9fcGh5 X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gK3RnbF9nZXRfY29tYm9fYnVmX3Ry YW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICAgaW50ICpuX2VudHJp ZXMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190 b19pbnRlbF9kcChlbmNvZGVyKTsKPiArCj4gKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+ IDU0MDAwMCkgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7Cj4gKwkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19lZHBfaGJyMzsKPiArCX0gZWxzZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAuaG9i bCAmJiAhaW50ZWxfZHAtPmhvYmxfZmFpbGVkKSB7Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUodGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyX2hvYmwpOwo+ICsJCXJl dHVybiB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJfaG9ibDsKPiArCX0g ZWxzZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+ICsJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7Cj4g KwkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKPiArCX0K PiArCj4gKwlyZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19z dGF0ZSwgbl9lbnRyaWVzKTsKPiArfQo+ICsKPiArY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zICoKPiArdGdsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICsJCQlpbnQgKm5fZW50cmllcykKPiArewo+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0 Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQo+ICsJCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cj4gKwllbHNlIGlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQo+ICsJ CXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwg bl9lbnRyaWVzKTsKPiArCWVsc2UKPiArCQlyZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNf ZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiArfQo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKPiArdGdsX2dldF9ka2xfYnVm X3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICBpbnQgKm5fZW50 cmllcykKPiArewo+ICsJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2RrbF9waHlfaGRtaV9k ZGlfdHJhbnMpOwo+ICsJcmV0dXJuIHRnbF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgKgo+ICt0 Z2xfZ2V0X2RrbF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g KwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJIGlu dCAqbl9lbnRyaWVzKQo+ICt7Cj4gKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAw MCkgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5X2RwX2RkaV90cmFu c19oYnIyKTsKPiArCQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zX2hicjI7Cj4gKwl9 IGVsc2Ugewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5X2RwX2RkaV90 cmFucyk7Cj4gKwkJcmV0dXJuIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuczsKPiArCX0KPiArfQo+ ICsKPiArY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgKgo+ICt0Z2xfZ2V0 X2RrbF9idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJICAgICAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJICAgICAgaW50 ICpuX2VudHJpZXMpCj4gK3sKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUs IElOVEVMX09VVFBVVF9IRE1JKSkKPiArCQlyZXR1cm4gdGdsX2dldF9ka2xfYnVmX3RyYW5zX2hk bWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKPiArCWVsc2UKPiArCQlyZXR1cm4g dGdsX2dldF9ka2xfYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7 Cj4gK30KPiArCj4gK2ludCBpbnRlbF9kZGlfaGRtaV9udW1fZW50cmllcyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICAgICAgaW50ICpkZWZhdWx0X2VudHJ5KQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJh c2UuZGV2KTsKPiArCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBl bmNvZGVyLT5wb3J0KTsKPiArCWludCBuX2VudHJpZXM7Cj4gKwo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTIpIHsKPiArCQlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBw aHkpKQo+ICsJCQl0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3Rh dGUsICZuX2VudHJpZXMpOwo+ICsJCWVsc2UKPiArCQkJdGdsX2dldF9ka2xfYnVmX3RyYW5zX2hk bWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7Cj4gKwkJKmRlZmF1bHRfZW50cnkg PSBuX2VudHJpZXMgLSAxOwo+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID09IDEx KSB7Cj4gKwkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKPiArCQkJaWNs X2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVz KTsKPiArCQllbHNlCj4gKwkJCWljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0 Y19zdGF0ZSwgJm5fZW50cmllcyk7Cj4gKwkJKmRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAx Owo+ICsJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgewo+ICsJCWNubF9nZXRf YnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Cj4gKwkJKmRlZmF1bHRfZW50cnkg PSBuX2VudHJpZXMgLSAxOwo+ICsJfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ ICsJCWJ4dF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Cj4gKwkJKmRl ZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwo+ICsJfSBlbHNlIGlmIChJU19HRU45X0JDKGRl dl9wcml2KSkgewo+ICsJCWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5f ZW50cmllcyk7Cj4gKwkJKmRlZmF1bHRfZW50cnkgPSA4Owo+ICsJfSBlbHNlIGlmIChJU19CUk9B RFdFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShlbmNv ZGVyLCAmbl9lbnRyaWVzKTsKPiArCQkqZGVmYXVsdF9lbnRyeSA9IDc7Cj4gKwl9IGVsc2UgaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRt aShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKPiArCQkqZGVmYXVsdF9lbnRyeSA9IDY7Cj4gKwl9IGVs c2Ugewo+ICsJCWRybV9XQVJOKCZkZXZfcHJpdi0+ZHJtLCAxLCAiZGRpIHRyYW5zbGF0aW9uIHRh YmxlIG1pc3NpbmdcbiIpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWlmIChkcm1fV0FS Tl9PTl9PTkNFKCZkZXZfcHJpdi0+ZHJtLCBuX2VudHJpZXMgPT0gMCkpCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJcmV0dXJuIG5fZW50cmllczsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmY4ZjBlZjg3ZTk3Nwo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuaAo+ IEBAIC0wLDAgKzEsMTAwIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8K PiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4g Kwo+ICsjaWZuZGVmIF9JTlRFTF9ERElfQlVGX1RSQU5TX0hfCj4gKyNkZWZpbmUgX0lOVEVMX0RE SV9CVUZfVFJBTlNfSF8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsKPiArc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gK3N0cnVjdCBpbnRlbF9lbmNvZGVyOwo+ICtzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZTsKPiArCj4gK3N0cnVjdCBkZGlfYnVmX3RyYW5zIHsKPiArCXUzMiB0 cmFuczE7CS8qIGJhbGFuY2UgbGVnIGVuYWJsZSwgZGUtZW1waCBsZXZlbCAqLwo+ICsJdTMyIHRy YW5zMjsJLyogdnJlZiBzZWwsIHZzd2luZyAqLwo+ICsJdTggaV9ib29zdDsJLyogU0tMOiBJX2Jv b3N0OyB2YWxpZDogMHgwLCAweDEsIDB4MywgMHg3ICovCj4gK307Cj4gKwo+ICtzdHJ1Y3QgYnh0 X2RkaV9idWZfdHJhbnMgewo+ICsJdTggbWFyZ2luOwkvKiBzd2luZyB2YWx1ZSAqLwo+ICsJdTgg c2NhbGU7CS8qIHNjYWxlIHZhbHVlICovCj4gKwl1OCBlbmFibGU7CS8qIHNjYWxlIGVuYWJsZSAq Lwo+ICsJdTggZGVlbXBoYXNpczsKPiArfTsKPiArCj4gK3N0cnVjdCBjbmxfZGRpX2J1Zl90cmFu cyB7Cj4gKwl1OCBkdzJfc3dpbmdfc2VsOwo+ICsJdTggZHc3X25fc2NhbGFyOwo+ICsJdTggZHc0 X2N1cnNvcl9jb2VmZjsKPiArCXU4IGR3NF9wb3N0X2N1cnNvcl8yOwo+ICsJdTggZHc0X3Bvc3Rf Y3Vyc29yXzE7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIHsK PiArCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVfMTFfNjsKPiArCXUzMiBjcmlfdHhkZWVtcGhf b3ZlcnJpZGVfNV8wOwo+ICsJdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV8xN18xMjsKPiArfTsK PiArCj4gK3N0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHsKPiArCXUzMiBka2xfdnN3 aW5nX2NvbnRyb2w7Cj4gKwl1MzIgZGtsX3ByZXNob290X2NvbnRyb2w7Cj4gKwl1MzIgZGtsX2Rl X2VtcGhhc2lzX2NvbnRyb2w7Cj4gK307Cj4gKwo+ICtib29sIGlzX2hvYmxfYnVmX3RyYW5zKGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqdGFibGUpOwo+ICsKPiAraW50IGludGVsX2Rk aV9oZG1pX251bV9lbnRyaWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkg ICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCSAg ICAgICBpbnQgKmRlZmF1bHRfZW50cnkpOwo+ICsKPiArY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgKgo+ICtpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsIGludCAqbl9lbnRyaWVzKTsKPiArY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMg Kgo+ICtpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICsJCQkgICAgaW50ICpuX2VudHJpZXMpOwo+ICtjb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyAqCj4gK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgICAgaW50ICpuX2VudHJpZXMpOwo+ICtjb25zdCBz dHJ1Y3QgZGRpX2J1Zl90cmFucyAqCj4gK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2RwKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcyk7Cj4gKwo+ICtjb25zdCBz dHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgo+ICtieHRfZ2V0X2J1Zl90cmFucyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICsJCSAgaW50ICpuX2VudHJpZXMpOwo+ICsKPiArY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoKPiArdGdsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICsJCQlpbnQgKm5fZW50cmllcyk7Cj4gK2NvbnN0IHN0cnVjdCB0Z2xf ZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKPiArdGdsX2dldF9ka2xfYnVmX3RyYW5zKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCSAgICAgIGludCAqbl9lbnRyaWVzKTsKPiArY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAranNsX2dldF9jb21ib19idWZfdHJhbnMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQlpbnQgKm5fZW50cmllcyk7Cj4gK2NvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gK2VobF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiArCQkJaW50ICpuX2VudHJpZXMpOwo+ICtjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiArCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gKwkJCWludCAqbl9lbnRyaWVzKTsKPiArY29uc3Qgc3RydWN0IGljbF9tZ19w aHlfZGRpX2J1Zl90cmFucyAqCj4gK2ljbF9nZXRfbWdfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICsJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gKwkJICAgICBpbnQgKm5fZW50cmllcyk7Cj4gKwo+ICtjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtjbmxfZ2V0X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiArCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICsJCSAgaW50ICpuX2VudHJpZXMpOwo+ICsKPiArI2VuZGlmCgotLSAKSmFu aSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK