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=-12.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED,USER_AGENT_SANE_1 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 9DE45C433FE for ; Fri, 4 Dec 2020 16:52:28 +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 52963205CB for ; Fri, 4 Dec 2020 16:52:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 52963205CB 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 E9D816E19C; Fri, 4 Dec 2020 16:52:27 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E27F6E19C for ; Fri, 4 Dec 2020 16:52:26 +0000 (UTC) IronPort-SDR: epNl7lVpbuDGe1Oc/CQw3Le8VE4yUZWUvkRxhipXst6SziMp7pF9Pm3bbFn0kkp9eLzrQtKAV0 9WebLCnEJCdw== X-IronPort-AV: E=McAfee;i="6000,8403,9825"; a="191651168" X-IronPort-AV: E=Sophos;i="5.78,393,1599548400"; d="scan'208";a="191651168" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2020 08:52:24 -0800 IronPort-SDR: hGledw3jrNBMsIcztWUD2IafewvT/qzS8U+lP/qnqOnH7ywd38VcYS7AMO6UnzN/csrqqB+CnL kkJJNprtSRYg== X-IronPort-AV: E=Sophos;i="5.78,393,1599548400"; d="scan'208";a="551009678" Received: from genxfsim-desktop.iind.intel.com (HELO intel.com) ([10.223.74.178]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2020 08:52:22 -0800 Date: Fri, 4 Dec 2020 22:08:50 +0530 From: Anshuman Gupta To: Gwan-gyeong Mun Message-ID: <20201204163849.GF30377@intel.com> References: <20201106101443.686053-1-gwan-gyeong.mun@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201106101443.686053-1-gwan-gyeong.mun@intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [Intel-gfx] [PATCH v4 1/2] drm/i915/display: Support PSR Multiple Transcoders 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: "intel-gfx@lists.freedesktop.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gMjAyMC0xMS0wNiBhdCAxNTo0NDo0MiArMDUzMCwgR3dhbi1neWVvbmcgTXVuIHdyb3RlOgo+ IEl0IGlzIGEgcHJlbGltaW5hcnkgd29yayBmb3Igc3VwcG9ydGluZyBtdWx0aXBsZSBFRFAgUFNS IGFuZAo+IERQIFBhbmVsUmVwbGF5LiBBbmQgaXQgcmVmYWN0b3JzIHNpbmdsZXRvbiBQU1IgdG8g TXVsdGkgVHJhbnNjb2Rlcgo+IHN1cHBvcnRhYmxlIFBTUi4KPiBBbmQgdGhpcyBtb3ZlcyBhbmQg cmVuYW1lcyB0aGUgaTkxNV9wc3Igc3RydWN0dXJlIG9mIGRybV9pOTE1X3ByaXZhdGUncyB0bwo+ IGludGVsX2RwJ3MgaW50ZWxfcHNyIHN0cnVjdHVyZS4KPiBJdCBhbHNvIGNhdXNlcyBjaGFuZ2Vz IGluIFBTUiBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZSBmb3Igc3VwcG9ydGluZwo+IG11bHRp cGxlIHRyYW5zY29kZXJzLiBCdXQgaXQgZG9lcyBub3QgY2hhbmdlIHRoZSBzY2VuYXJpbyBhbmQg dGltaW5nIG9mCj4gZW5hYmxpbmcgYW5kIGRpc2FibGluZyBQU1IuCkNvdWxkIHlvdSBwbGVhc2Ug YnJlYWsgdGhpcyBwYXRjaCwgaXQgY2FuIGJlIGJyZWFrIGluIGZvbGxvd2luZyBwYXJ0cy4KMS4g cHNyIGluaXQgcGF0aAoyLiBhdG9taWMgY29tbWl0IHBhdGgKMy4gaXJxIHBhdGgKMy4gZGVidWdm cyBwYXRoIAoKVGhlcmUgYXJlIGNvdXBsZSBvZiBjb21tZW50cywgc2VlIGJlbG93LiAKPiAKPiB2 MjogRml4IGluZGVudGF0aW9uIGFuZCBhZGQgY29tbWVudHMKPiB2MzogUmVtb3ZlIEJsYW5rIGxp bmUKPiB2NDogUmViYXNlZAo+IAo+IFNpZ25lZC1vZmYtYnk6IEd3YW4tZ3llb25nIE11biA8Z3dh bi1neWVvbmcubXVuQGludGVsLmNvbT4KPiBDYzogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9z ZS5zb3V6YUBpbnRlbC5jb20+Cj4gQ2M6IEp1aGEtUGVra2EgSGVpa2tpbGEgPGp1aGFwZWtrYS5o ZWlra2lsYUBnbWFpbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGRpLmMgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jICB8ICAgNCAtCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfZGVidWdmcy5jICB8IDExMSArKy0tCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAzOCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmMgICAgICAgfCAgMjMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9wc3IuYyAgICAgIHwgNTg1ICsrKysrKysrKystLS0tLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oICAgICAgfCAgMTQgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyAgIHwgICA2ICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAzOCAtLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgICAgfCAgNDcgKy0KPiAgMTAg ZmlsZXMgY2hhbmdlZCwgNDkxIGluc2VydGlvbnMoKyksIDM4MCBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiBpbmRleCAxOWIxNjUxN2E1 MDIuLjk4Mzc4MWNlMzY4MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kZGkuYwo+IEBAIC00MTI3LDcgKzQxMjcsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3Vw ZGF0ZV9waXBlX2RwKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAKPiAgCWlu dGVsX2RkaV9zZXRfZHBfbXNhKGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ICAKPiArCS8vVE9E TzogbW92ZSBQU1IgcmVsYXRlZCBmdW5jdGlvbnMgaW50byBpbnRlbF9wc3JfdXBkYXRlKCkKPiAr CWludGVsX3BzcjJfcHJvZ3JhbV90cmFuc19tYW5fdHJrX2N0bChpbnRlbF9kcCwgY3J0Y19zdGF0 ZSk7Cj4gIAlpbnRlbF9wc3JfdXBkYXRlKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRl KTsKPiArCj4gIAlpbnRlbF9kcF9zZXRfaW5mb2ZyYW1lcyhlbmNvZGVyLCB0cnVlLCBjcnRjX3N0 YXRlLCBjb25uX3N0YXRlKTsKPiAgCWludGVsX2VkcF9kcnJzX3VwZGF0ZShpbnRlbF9kcCwgY3J0 Y19zdGF0ZSk7Cj4gIAo+IEBAIC01Mjc1LDYgKzUyNzgsOCBAQCB2b2lkIGludGVsX2RkaV9pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCj4gIAkJ CWdvdG8gZXJyOwo+ICAKPiAgCQlkaWdfcG9ydC0+aHBkX3B1bHNlID0gaW50ZWxfZHBfaHBkX3B1 bHNlOwo+ICsKPiArCQlpbnRlbF9wc3JfaW5pdCgmZGlnX3BvcnQtPmRwKTsKSU1ITyB0aGlzIHNo b3VsZCBiZSBjYWxsZWQgZnJvbSBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rvci4KPiAgCX0KPiAgCj4g IAkvKiBJbiB0aGVvcnkgd2UgZG9uJ3QgbmVlZCB0aGUgZW5jb2Rlci0+dHlwZSBjaGVjaywgYnV0 IGxlYXZlIGl0IGp1c3QgaW4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwo+IGluZGV4IDhjNDY4N2IxOTgxNC4uNDY2OTIzYTU0MzcwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTU1MDYs OCArMTU1MDYsNiBAQCBzdGF0aWMgdm9pZCBjb21taXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAo+ICAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRl X3BpcGUpCj4gIAkJCWludGVsX3BpcGVfZmFzdHNldChvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNf c3RhdGUpOwo+IC0KPiAtCQlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwobmV3 X2NydGNfc3RhdGUpOwo+ICAJfQo+ICAKPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNf dXBkYXRlX3dhdGVybWFya3MpCj4gQEAgLTE3NDM1LDggKzE3NDMzLDYgQEAgc3RhdGljIHZvaWQg aW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAkJaW50ZWxfZHZvX2luaXQoZGV2X3ByaXYpOwo+ICAJfQo+ICAKPiAtCWludGVsX3Bzcl9pbml0 KGRldl9wcml2KTsKPiAtCj4gIAlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKCZkZXZfcHJpdi0+ZHJt LCBlbmNvZGVyKSB7Cj4gIAkJZW5jb2Rlci0+YmFzZS5wb3NzaWJsZV9jcnRjcyA9Cj4gIAkJCWlu dGVsX2VuY29kZXJfcG9zc2libGVfY3J0Y3MoZW5jb2Rlcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCj4gaW5kZXggY2Zi NGMxNDc0OTgyLi44NDAyZTZhYzlmNzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMKPiBAQCAtMjQ4LDE4ICsyNDgs MTcgQEAgc3RhdGljIGludCBpOTE1X3Bzcl9zaW5rX3N0YXR1c19zaG93KHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkic2luayBpbnRlcm5hbCBlcnJvciIsCj4gIAl9Owo+ICAJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IG0tPnByaXZhdGU7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ZGV2KTsKPiAg CXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+ICAJCWludGVsX2F0dGFjaGVkX2RwKHRvX2lu dGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpKTsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKCFDQU5f UFNSKGRldl9wcml2KSkgewo+IC0JCXNlcV9wdXRzKG0sICJQU1IgVW5zdXBwb3J0ZWRcbiIpOwo+ ICsJaWYgKGNvbm5lY3Rvci0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+ ICAJCXJldHVybiAtRU5PREVWOwo+IC0JfQo+ICAKPiAtCWlmIChjb25uZWN0b3ItPnN0YXR1cyAh PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkp IHsKPiArCQlzZXFfcHV0cyhtLCAiUFNSIFVuc3VwcG9ydGVkXG4iKTsKPiAgCQlyZXR1cm4gLUVO T0RFVjsKPiArCX0KPiAgCj4gIAlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1 eCwgRFBfUFNSX1NUQVRVUywgJnZhbCk7Cj4gIAo+IEBAIC0yNzksMTIgKzI3OCwxMyBAQCBzdGF0 aWMgaW50IGk5MTVfcHNyX3Npbmtfc3RhdHVzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQo+ICBERUZJTkVfU0hPV19BVFRSSUJVVEUoaTkxNV9wc3Jfc2lua19zdGF0dXMpOwo+ ICAKPiAgc3RhdGljIHZvaWQKPiAtcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gK3Bzcl9zb3VyY2Vfc3RhdHVz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgewo+ICAJ dTMyIHZhbCwgc3RhdHVzX3ZhbDsKPiAgCWNvbnN0IGNoYXIgKnN0YXR1cyA9ICJ1bmtub3duIjsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxf ZHApOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJaWYgKGlu dGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gIAkJc3RhdGljIGNvbnN0IGNoYXIgKiBjb25z dCBsaXZlX3N0YXR1c1tdID0gewo+ICAJCQkiSURMRSIsCj4gIAkJCSJDQVBUVVJFIiwKPiBAQCAt Mjk5LDcgKzI5OSw3IEBAIHBzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgc3RydWN0IHNlcV9maWxlICptKQo+ICAJCQkiVEdfT04iCj4gIAkJfTsKPiAg CQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJICAgIEVEUF9QU1IyX1NUQVRV UyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCQkJCSAgICBFRFBfUFNSMl9TVEFUVVMo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7Cj4gIAkJc3RhdHVzX3ZhbCA9ICh2YWwgJiBFRFBf UFNSMl9TVEFUVVNfU1RBVEVfTUFTSykgPj4KPiAgCQkJICAgICAgRURQX1BTUjJfU1RBVFVTX1NU QVRFX1NISUZUOwo+ICAJCWlmIChzdGF0dXNfdmFsIDwgQVJSQVlfU0laRShsaXZlX3N0YXR1cykp Cj4gQEAgLTMxNiw3ICszMTYsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgCQkJIlNSREVOVF9PTiIs Cj4gIAkJfTsKPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJICAgIEVE UF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOwo+ICsJCQkJICAgIEVEUF9Q U1JfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwo+ICAJCXN0YXR1c192YWwgPSAo dmFsICYgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPj4KPiAgCQkJICAgICAgRURQX1BTUl9T VEFUVVNfU1RBVEVfU0hJRlQ7Cj4gIAkJaWYgKHN0YXR1c192YWwgPCBBUlJBWV9TSVpFKGxpdmVf c3RhdHVzKSkKPiBAQCAtMzI2LDIxICszMjYsMTggQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gIAlzZXFf cHJpbnRmKG0sICJTb3VyY2UgUFNSIHN0YXR1czogJXMgWzB4JTA4eF1cbiIsIHN0YXR1cywgdmFs KTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiArc3RhdGljIGludCBpbnRlbF9wc3Jfc3RhdHVzKHN0cnVj dCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICsJc3RydWN0 IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKPiAgCWNvbnN0IGNoYXIgKnN0YXR1czsKPiAgCWJvb2wgZW5hYmxlZDsKPiAgCXUzMiB2 YWw7Cj4gIAo+IC0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiAtCQlyZXR1cm4gLUVOT0RFVjsK PiAtCj4gIAlzZXFfcHJpbnRmKG0sICJTaW5rIHN1cHBvcnQ6ICVzIiwgeWVzbm8ocHNyLT5zaW5r X3N1cHBvcnQpKTsKPiAtCWlmIChwc3ItPmRwKQo+IC0JCXNlcV9wcmludGYobSwgIiBbMHglMDJ4 XSIsIHBzci0+ZHAtPnBzcl9kcGNkWzBdKTsKPiArCWlmIChwc3ItPnNpbmtfc3VwcG9ydCkKPiAr CQlzZXFfcHJpbnRmKG0sICIgWzB4JTAyeF0iLCBpbnRlbF9kcC0+cHNyX2RwY2RbMF0pOwo+ICAJ c2VxX3B1dHMobSwgIlxuIik7Cj4gIAo+ICAJaWYgKCFwc3ItPnNpbmtfc3VwcG9ydCkKPiBAQCAt MzY0LDE2ICszNjEsMTYgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCj4gIAlpZiAocHNyLT5wc3IyX2VuYWJsZWQpIHsK PiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJICAgIEVEUF9QU1IyX0NU TChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCQkJCSAgICBFRFBfUFNSMl9DVEwoaW50 ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7Cj4gIAkJZW5hYmxlZCA9IHZhbCAmIEVEUF9QU1IyX0VO QUJMRTsKPiAgCX0gZWxzZSB7Cj4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwKPiAt CQkJCSAgICBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCQkJCSAg ICBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKPiAgCQllbmFibGVkID0g dmFsICYgRURQX1BTUl9FTkFCTEU7Cj4gIAl9Cj4gIAlzZXFfcHJpbnRmKG0sICJTb3VyY2UgUFNS IGN0bDogJXMgWzB4JTA4eF1cbiIsCj4gIAkJICAgZW5hYmxlZGRpc2FibGVkKGVuYWJsZWQpLCB2 YWwpOwo+IC0JcHNyX3NvdXJjZV9zdGF0dXMoZGV2X3ByaXYsIG0pOwo+ICsJcHNyX3NvdXJjZV9z dGF0dXMoaW50ZWxfZHAsIG0pOwo+ICAJc2VxX3ByaW50ZihtLCAiQnVzeSBmcm9udGJ1ZmZlciBi aXRzOiAweCUwOHhcbiIsCj4gIAkJICAgcHNyLT5idXN5X2Zyb250YnVmZmVyX2JpdHMpOwo+ICAK PiBAQCAtMzgyLDcgKzM3OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkgKi8KPiAgCWlmIChJU19IQVNXRUxMKGRl dl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gIAkJdmFsID0gaW50ZWxfZGVf cmVhZChkZXZfcHJpdiwKPiAtCQkJCSAgICBFRFBfUFNSX1BFUkZfQ05UKGRldl9wcml2LT5wc3Iu dHJhbnNjb2RlcikpOwo+ICsJCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQoaW50ZWxfZHAtPnBzci50 cmFuc2NvZGVyKSk7Cj4gIAkJdmFsICY9IEVEUF9QU1JfUEVSRl9DTlRfTUFTSzsKPiAgCQlzZXFf cHJpbnRmKG0sICJQZXJmb3JtYW5jZSBjb3VudGVyOiAldVxuIiwgdmFsKTsKPiAgCX0KPiBAQCAt NDAzLDcgKzQwMCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkJICovCj4gIAkJZm9yIChmcmFtZSA9IDA7IGZyYW1l IDwgUFNSMl9TVV9TVEFUVVNfRlJBTUVTOyBmcmFtZSArPSAzKSB7Cj4gIAkJCXZhbCA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsCj4gLQkJCQkJICAgIFBTUjJfU1VfU1RBVFVTKGRldl9wcml2LT5w c3IudHJhbnNjb2RlciwgZnJhbWUpKTsKPiArCQkJCQkgICAgUFNSMl9TVV9TVEFUVVMoaW50ZWxf ZHAtPnBzci50cmFuc2NvZGVyLCBmcmFtZSkpOwo+ICAJCQlzdV9mcmFtZXNfdmFsW2ZyYW1lIC8g M10gPSB2YWw7Cj4gIAkJfQo+ICAKPiBAQCAtNDI5LDIzICs0MjYsNTcgQEAgc3RhdGljIGludCBp OTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcjsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBOVUxMOwo+ ICsKPiArCWlmICghSEFTX1BTUihkZXZfcHJpdikpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ ICsJLyogRmluZCB0aGUgZmlyc3QgRURQICovCj4gKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3By aXYtPmRybSwgZW5jb2Rlcikgewo+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9FRFApIHsKPiArCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4gKwkJ CWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoIWludGVsX2RwKQo+ICsJCXJldHVybiAt RU5PREVWOwo+ICsKPiArCXJldHVybiBpbnRlbF9wc3Jfc3RhdHVzKG0sIGludGVsX2RwKTsKPiAr fQo+ICsKPiAgc3RhdGljIGludAo+ICBpOTE1X2VkcF9wc3JfZGVidWdfc2V0KHZvaWQgKmRhdGEs IHU2NCB2YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRh dGE7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAtCWludCByZXQ7Cj4gKwlpbnQgcmV0 ID0gLUVOT0RFVjsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAKPiAtCWlm ICghQ0FOX1BTUihkZXZfcHJpdikpCj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gKwlpZiAoIUhBU19Q U1IoZGV2X3ByaXYpKQo+ICsJCXJldHVybiByZXQ7Cj4gIAo+IC0JZHJtX2RiZ19rbXMoJmRldl9w cml2LT5kcm0sICJTZXR0aW5nIFBTUiBkZWJ1ZyB0byAlbGx4XG4iLCB2YWwpOwo+ICsJZm9yX2Vh Y2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiArCQlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICAKPiAtCXdha2VyZWYg PSBpbnRlbF9ydW50aW1lX3BtX2dldCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0pOwo+ICsJCWlmICgh Q0FOX1BTUihpbnRlbF9kcCkpCj4gKwkJCWNvbnRpbnVlOwo+ICAKPiAtCXJldCA9IGludGVsX3Bz cl9kZWJ1Z19zZXQoZGV2X3ByaXYsIHZhbCk7Cj4gKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5U RUxfT1VUUFVUX0VEUCkgewo+ICsJCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlNldHRp bmcgUFNSIGRlYnVnIHRvICVsbHhcbiIsIHZhbCk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9w dXQoJmRldl9wcml2LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsKPiArCQkJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KCZkZXZfcHJpdi0+cnVudGltZV9wbSk7Cj4gKwo+ICsJCQkvLyBUT0RP OiBzcGxpdCB0byBlYWNoIHRyYW5zY29kZXIncyBQU1IgZGVidWcgc3RhdGUKPiArCQkJcmV0ID0g aW50ZWxfcHNyX2RlYnVnX3NldChpbnRlbF9kcCwgdmFsKTsKPiArCj4gKwkJCWludGVsX3J1bnRp bWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gKwkJfQo+ICsJfQo+ ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtNDU0LDEyICs0ODUsMjUgQEAgc3RhdGljIGlu dAo+ICBpOTE1X2VkcF9wc3JfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwo+ICsJc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAo+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkKPiAr CWlmICghSEFTX1BTUihkZXZfcHJpdikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+IC0JKnZh bCA9IFJFQURfT05DRShkZXZfcHJpdi0+cHNyLmRlYnVnKTsKPiAtCXJldHVybiAwOwo+ICsJZm9y X2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiArCQlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICsKPiArCQlpZiAo IUNBTl9QU1IoaW50ZWxfZHApKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLy8gVE9ETzogc3Bs aXQgdG8gZWFjaCB0cmFuc2NvZGVyJ3MgUFNSIGRlYnVnIHN0YXRlCj4gKwkJaWYgKGVuY29kZXIt PnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ICsJCQkqdmFsID0gUkVBRF9PTkNFKGludGVs X2RwLT5wc3IuZGVidWcpOwo+ICsJCQlyZXR1cm4gMDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIC1FTk9ERVY7Cj4gIH0KPiAgCj4gIERFRklORV9TSU1QTEVfQVRUUklCVVRFKGk5MTVfZWRw X3Bzcl9kZWJ1Z19mb3BzLAo+IEBAIC0xMTAzLDkgKzExNDcsNiBAQCBzdGF0aWMgdm9pZCBkcnJz X3N0YXR1c19wZXJfY3J0YyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gIAkJLyogZGlzYWJsZV9kcnJz KCkgd2lsbCBtYWtlIGRycnMtPmRwIE5VTEwgKi8KPiAgCQlpZiAoIWRycnMtPmRwKSB7Cj4gIAkJ CXNlcV9wdXRzKG0sICJJZGxlbmVzcyBEUlJTOiBEaXNhYmxlZFxuIik7Cj4gLQkJCWlmIChkZXZf cHJpdi0+cHNyLmVuYWJsZWQpCj4gLQkJCQlzZXFfcHV0cyhtLAo+IC0JCQkJIlx0QXMgUFNSIGlz IGVuYWJsZWQsIERSUlMgaXMgbm90IGVuYWJsZWRcbiIpOwo+ICAJCQltdXRleF91bmxvY2soJmRy cnMtPm11dGV4KTsKPiAgCQkJcmV0dXJuOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IGluZGV4IGY2ZjA2MjY2NDll MC4uMmU0MGZjYmFiMmFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBAQCAtMTI4Niw2ICsxMjg2LDQyIEBAIHN0cnVj dCBpbnRlbF9kcF9jb21wbGlhbmNlIHsKPiAgCXU4IHRlc3RfbGFuZV9jb3VudDsKPiAgfTsKPiAg Cj4gK3N0cnVjdCBpbnRlbF9wc3Igewo+ICsJLyogTXV0ZXggZm9yIFBTUiBzdGF0ZSBvZiB0aGUg dHJhbnNjb2RlciAqLwo+ICsJc3RydWN0IG11dGV4IGxvY2s7Cj4gKwo+ICsjZGVmaW5lIEk5MTVf UFNSX0RFQlVHX01PREVfTUFTSwkweDBmCj4gKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfREVGQVVM VAkJMHgwMAo+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJCTB4MDEKPiArI2RlZmlu ZSBJOTE1X1BTUl9ERUJVR19FTkFCTEUJCTB4MDIKPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19G T1JDRV9QU1IxCTB4MDMKPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19JUlEJCTB4MTAKPiArCj4g Kwl1MzIgZGVidWc7Cj4gKwlib29sIHNpbmtfc3VwcG9ydDsKPiArCWJvb2wgZW5hYmxlZDsKPiAr CWVudW0gcGlwZSBwaXBlOwo+ICsJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7Cj4gKwlib29s IGFjdGl2ZTsKPiArCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+ICsJdW5zaWduZWQgaW50IGJ1 c3lfZnJvbnRidWZmZXJfYml0czsKPiArCWJvb2wgc2lua19wc3IyX3N1cHBvcnQ7Cj4gKwlib29s IGxpbmtfc3RhbmRieTsKPiArCWJvb2wgY29sb3JpbWV0cnlfc3VwcG9ydDsKPiArCWJvb2wgcHNy Ml9lbmFibGVkOwo+ICsJYm9vbCBwc3IyX3NlbF9mZXRjaF9lbmFibGVkOwo+ICsJdTggc2lua19z eW5jX2xhdGVuY3k7Cj4gKwlrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsKPiArCWt0aW1lX3Qg bGFzdF9leGl0Owo+ICsJYm9vbCBzaW5rX25vdF9yZWxpYWJsZTsKPiArCWJvb2wgaXJxX2F1eF9l cnJvcjsKPiArCXUxNiBzdV94X2dyYW51bGFyaXR5Owo+ICsJYm9vbCBkYzNjb19lbmFibGVkOwo+ ICsJdTMyIGRjM2NvX2V4aXRfZGVsYXk7Cj4gKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGRjM2NvX3dv cms7Cj4gKwlzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgdnNjOwo+ICt9Owo+ICsKPiAgc3RydWN0IGlu dGVsX2RwIHsKPiAgCWk5MTVfcmVnX3Qgb3V0cHV0X3JlZzsKPiAgCXUzMiBEUDsKPiBAQCAtMTQw Niw2ICsxNDQyLDggQEAgc3RydWN0IGludGVsX2RwIHsKPiAgCj4gIAlib29sIGhvYmxfZmFpbGVk Owo+ICAJYm9vbCBob2JsX2FjdGl2ZTsKPiArCj4gKwlzdHJ1Y3QgaW50ZWxfcHNyIHBzcjsKPiAg fTsKPiAgCj4gIGVudW0gbHNwY29uX3ZlbmRvciB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYwo+IGluZGV4IDNiMGRiZGE1OTE5YS4uNjRhYmM5ZDAzN2Y4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0yNjQwLDEyICsyNjQw LDEwIEBAIHZvaWQgaW50ZWxfZHBfY29tcHV0ZV9wc3JfdnNjX3NkcChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAo+ICAJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29u bl9zdGF0ZSwKPiAgCQkJCSAgc3RydWN0IGRybV9kcF92c2Nfc2RwICp2c2MpCj4gIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ IC0KPiAgCXZzYy0+c2RwX3R5cGUgPSBEUF9TRFBfVlNDOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+ cHNyLnBzcjJfZW5hYmxlZCkgewo+IC0JCWlmIChkZXZfcHJpdi0+cHNyLmNvbG9yaW1ldHJ5X3N1 cHBvcnQgJiYKPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJCWlmIChp bnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgJiYKPiAgCQkgICAgaW50ZWxfZHBfbmVl ZHNfdnNjX3NkcChjcnRjX3N0YXRlLCBjb25uX3N0YXRlKSkgewo+ICAJCQkvKiBbUFNSMiwgK0Nv bG9yaW1ldHJ5XSAqLwo+ICAJCQlpbnRlbF9kcF9jb21wdXRlX3ZzY19jb2xvcmltZXRyeShjcnRj X3N0YXRlLCBjb25uX3N0YXRlLAo+IEBAIC0zNzc4LDcgKzM3NzYsNyBAQCBib29sIGludGVsX2Rw X2luaXRpYWxfZmFzdHNldF9jaGVjayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg CQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+IC0JaWYgKENBTl9QU1IoaTkxNSkgJiYgaW50ZWxf ZHBfaXNfZWRwKGludGVsX2RwKSkgewo+ICsJaWYgKENBTl9QU1IoaW50ZWxfZHApICYmIGludGVs X2RwX2lzX2VkcChpbnRlbF9kcCkpIHsKPiAgCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiRm9y Y2luZyBmdWxsIG1vZGVzZXQgdG8gY29tcHV0ZSBQU1Igc3RhdGVcbiIpOwo+ICAJCWNydGNfc3Rh dGUtPnVhcGkubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gQEAgLTc5 NzgsNiArNzk3NiwxNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9tb2Rlc2V0X3JldHJ5X3dvcmtf Zm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChjb25uZWN0b3ItPmRldik7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX3Vw ZGF0ZV9waXBlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJIHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICsKPiArCWludGVsX3BhbmVsX3VwZGF0ZV9iYWNrbGln aHQoc3RhdGUsIGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ICsJaW50ZWxfcHNy Ml9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiArfQo+ ICsKPiAgYm9vbAo+ICBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkaWdfcG9ydCwKPiAgCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQo+IEBAIC04MTMzLDcgKzgxNDIsNyBAQCBib29sIGludGVsX2RwX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJaW50ZWxfZW5jb2Rlci0+Z2V0X2NvbmZp ZyA9IGludGVsX2RwX2dldF9jb25maWc7Cj4gIAlpbnRlbF9lbmNvZGVyLT5zeW5jX3N0YXRlID0g aW50ZWxfZHBfc3luY19zdGF0ZTsKPiAgCWludGVsX2VuY29kZXItPmluaXRpYWxfZmFzdHNldF9j aGVjayA9IGludGVsX2RwX2luaXRpYWxfZmFzdHNldF9jaGVjazsKPiAtCWludGVsX2VuY29kZXIt PnVwZGF0ZV9waXBlID0gaW50ZWxfcGFuZWxfdXBkYXRlX2JhY2tsaWdodDsKPiArCWludGVsX2Vu Y29kZXItPnVwZGF0ZV9waXBlID0gaW50ZWxfZHBfdXBkYXRlX3BpcGU7Cj4gIAlpbnRlbF9lbmNv ZGVyLT5zdXNwZW5kID0gaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kOwo+ICAJaW50ZWxfZW5jb2Rl ci0+c2h1dGRvd24gPSBpbnRlbF9kcF9lbmNvZGVyX3NodXRkb3duOwo+ICAJaWYgKElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKSB7Cj4gQEAgLTgyMjAsNiArODIyOSw4IEBAIGJvb2wgaW50ZWxfZHBf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAoIWludGVsX2Rw X2luaXRfY29ubmVjdG9yKGRpZ19wb3J0LCBpbnRlbF9jb25uZWN0b3IpKQo+ICAJCWdvdG8gZXJy X2luaXRfY29ubmVjdG9yOwo+ICAKPiArCWludGVsX3Bzcl9pbml0KCZkaWdfcG9ydC0+ZHApOwpJ TUhPIHRoaXMgd2lsbCBub3QgZ2V0IGNhbGxlZCBmb3IgRERJIGVuY29kZXIgaW50ZWxfZHBfaW5p dF9jb25uZWN0b3IgaXMgY29ycmVjciBwbGFjZQp0byBpbml0aWFsaXplIGl0LgoKVGhhbmtzLApB bnNodW1hbiBHdXB0YS4KPiArCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgCj4gIGVycl9pbml0X2Nvbm5l Y3RvcjoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9w c3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKPiBpbmRleCBi MzYzMWI3MjJkZTMuLjhkODU4ZDU2YzczNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9wc3IuYwo+IEBAIC03OSwxMSArNzksMTMgQEAKPiAgICogdXNlIHBhZ2UgZmxp cHMuCj4gICAqLwo+ICAKPiAtc3RhdGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICtzdGF0aWMgYm9vbCBwc3JfZ2xvYmFsX2VuYWJsZWQo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0Jc3dpdGNoIChpOTE1LT5wc3IuZGVi dWcgJiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICsKPiArCXN3aXRjaCAoaW50 ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgewo+ICAJY2FzZSBJ OTE1X1BTUl9ERUJVR19ERUZBVUxUOgo+IC0JCXJldHVybiBpOTE1LT5wYXJhbXMuZW5hYmxlX3Bz cjsKPiArCQlyZXR1cm4gZGV2X3ByaXYtPnBhcmFtcy5lbmFibGVfcHNyOwo+ICAJY2FzZSBJOTE1 X1BTUl9ERUJVR19ESVNBQkxFOgo+ICAJCXJldHVybiBmYWxzZTsKPiAgCWRlZmF1bHQ6Cj4gQEAg LTkxLDkgKzkzLDkgQEAgc3RhdGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBwc3IyX2ds b2JhbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGlj IGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7 Cj4gLQlzd2l0Y2ggKGRldl9wcml2LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19NT0RFX01B U0spIHsKPiArCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01P REVfTUFTSykgewo+ICAJY2FzZSBJOTE1X1BTUl9ERUJVR19ESVNBQkxFOgo+ICAJY2FzZSBJOTE1 X1BTUl9ERUJVR19GT1JDRV9QU1IxOgo+ICAJCXJldHVybiBmYWxzZTsKPiBAQCAtMTAyLDExICsx MDQsMTIgQEAgc3RhdGljIGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBzcl9pcnFf Y29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lk IHBzcl9pcnFfY29udHJvbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gIAllbnVt IHRyYW5zY29kZXIgdHJhbnNfc2hpZnQ7Cj4gIAl1MzIgbWFzaywgdmFsOwo+ICAJaTkxNV9yZWdf dCBpbXJfcmVnOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9f aTkxNShpbnRlbF9kcCk7Cj4gIAo+ICAJLyoKPiAgCSAqIGdlbjEyKyBoYXMgcmVnaXN0ZXJzIHJl bGF0aXZlIHRvIHRyYW5zY29kZXIgYW5kIG9uZSBwZXIgdHJhbnNjb2Rlcgo+IEBAIC0xMTUsMTQg KzExOCwxNCBAQCBzdGF0aWMgdm9pZCBwc3JfaXJxX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJICovCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAx Mikgewo+ICAJCXRyYW5zX3NoaWZ0ID0gMDsKPiAtCQlpbXJfcmVnID0gVFJBTlNfUFNSX0lNUihk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOwo+ICsJCWltcl9yZWcgPSBUUkFOU19QU1JfSU1SKGlu dGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7Cj4gIAl9IGVsc2Ugewo+IC0JCXRyYW5zX3NoaWZ0ID0g ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyOwo+ICsJCXRyYW5zX3NoaWZ0ID0gaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyOwo+ICAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsKPiAgCX0KPiAgCj4gIAlt YXNrID0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7Cj4gLQlpZiAoZGV2X3ByaXYtPnBzci5k ZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX0lSUSkKPiArCWlmIChpbnRlbF9kcC0+cHNyLmRlYnVnICYg STkxNV9QU1JfREVCVUdfSVJRKQo+ICAJCW1hc2sgfD0gRURQX1BTUl9QT1NUX0VYSVQodHJhbnNf c2hpZnQpIHwKPiAgCQkJRURQX1BTUl9QUkVfRU5UUlkodHJhbnNfc2hpZnQpOwo+ICAKPiBAQCAt MTcxLDM4ICsxNzQsMzcgQEAgc3RhdGljIHZvaWQgcHNyX2V2ZW50X3ByaW50KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICAJCWRybV9kYmdfa21zKCZpOTE1LT5kcm0sICJcdFBTUiBk aXNhYmxlZFxuIik7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpCj4gK3ZvaWQgaW50ZWxf cHNyX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHUzMiBwc3JfaWlyKQo+ ICB7Cj4gLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBkZXZfcHJpdi0+cHNyLnRy YW5zY29kZXI7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19p OTE1KGludGVsX2RwKTsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVs X2RwLT5wc3IudHJhbnNjb2RlcjsKPiAgCWVudW0gdHJhbnNjb2RlciB0cmFuc19zaGlmdDsKPiAg CWk5MTVfcmVnX3QgaW1yX3JlZzsKPiAgCWt0aW1lX3QgdGltZV9ucyA9ICBrdGltZV9nZXQoKTsK PiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewo+ICAJCXRyYW5zX3NoaWZ0 ID0gMDsKPiAtCQlpbXJfcmVnID0gVFJBTlNfUFNSX0lNUihkZXZfcHJpdi0+cHNyLnRyYW5zY29k ZXIpOwo+ICsJCWltcl9yZWcgPSBUUkFOU19QU1JfSU1SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rl cik7Cj4gIAl9IGVsc2Ugewo+IC0JCXRyYW5zX3NoaWZ0ID0gZGV2X3ByaXYtPnBzci50cmFuc2Nv ZGVyOwo+ICsJCXRyYW5zX3NoaWZ0ID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOwo+ICAJCWlt cl9yZWcgPSBFRFBfUFNSX0lNUjsKPiAgCX0KPiAgCj4gIAlpZiAocHNyX2lpciAmIEVEUF9QU1Jf UFJFX0VOVFJZKHRyYW5zX3NoaWZ0KSkgewo+IC0JCWRldl9wcml2LT5wc3IubGFzdF9lbnRyeV9h dHRlbXB0ID0gdGltZV9uczsKPiAtCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiAtCQkJ ICAgICJbdHJhbnNjb2RlciAlc10gUFNSIGVudHJ5IGF0dGVtcHQgaW4gMiB2YmxhbmtzXG4iLAo+ IC0JCQkgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4gKwkJaW50ZWxfZHAt PnBzci5sYXN0X2VudHJ5X2F0dGVtcHQgPSB0aW1lX25zOwo+ICsJCURSTV9ERUJVR19LTVMoIlt0 cmFuc2NvZGVyICVzXSBQU1IgZW50cnkgYXR0ZW1wdCBpbiAyIHZibGFua3NcbiIsCj4gKwkJCSAg ICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwo+ICAJfQo+ICAKPiAgCWlmIChw c3JfaWlyICYgRURQX1BTUl9QT1NUX0VYSVQodHJhbnNfc2hpZnQpKSB7Cj4gLQkJZGV2X3ByaXYt PnBzci5sYXN0X2V4aXQgPSB0aW1lX25zOwo+IC0JCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJt LAo+IC0JCQkgICAgIlt0cmFuc2NvZGVyICVzXSBQU1IgZXhpdCBjb21wbGV0ZWRcbiIsCj4gLQkJ CSAgICB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5zY29kZXIpKTsKPiArCQlpbnRlbF9kcC0+cHNy Lmxhc3RfZXhpdCA9IHRpbWVfbnM7Cj4gKwkJRFJNX0RFQlVHX0tNUygiW3RyYW5zY29kZXIgJXNd IFBTUiBleGl0IGNvbXBsZXRlZFxuIiwKPiArCQkJICAgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90 cmFuc2NvZGVyKSk7Cj4gIAo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiAg CQkJdTMyIHZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCj4gIAkJCQkJCVBTUl9FVkVOVChj cHVfdHJhbnNjb2RlcikpOwo+IC0JCQlib29sIHBzcjJfZW5hYmxlZCA9IGRldl9wcml2LT5wc3Iu cHNyMl9lbmFibGVkOwo+ICsJCQlib29sIHBzcjJfZW5hYmxlZCA9IGludGVsX2RwLT5wc3IucHNy Ml9lbmFibGVkOwo+ICAKPiAgCQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBTUl9FVkVOVChj cHVfdHJhbnNjb2RlciksCj4gIAkJCQkgICAgICAgdmFsKTsKPiBAQCAtMjEzLDEwICsyMTUsMTAg QEAgdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1MzIgcHNyX2lpcikKPiAgCWlmIChwc3JfaWlyICYgRURQX1BTUl9FUlJPUih0cmFu c19zaGlmdCkpIHsKPiAgCQl1MzIgdmFsOwo+ICAKPiAtCQlkcm1fd2FybigmZGV2X3ByaXYtPmRy bSwgIlt0cmFuc2NvZGVyICVzXSBQU1IgYXV4IGVycm9yXG4iLAo+ICsJCURSTV9XQVJOKCJbdHJh bnNjb2RlciAlc10gUFNSIGF1eCBlcnJvclxuIiwKPiAgCQkJIHRyYW5zY29kZXJfbmFtZShjcHVf dHJhbnNjb2RlcikpOwo+ICAKPiAtCQlkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3IgPSB0cnVl Owo+ICsJCWludGVsX2RwLT5wc3IuaXJxX2F1eF9lcnJvciA9IHRydWU7Cj4gIAo+ICAJCS8qCj4g IAkJICogSWYgdGhpcyBpbnRlcnJ1cHRpb24gaXMgbm90IG1hc2tlZCBpdCB3aWxsIGtlZXAKPiBA QCAtMjMwLDcgKzIzMiw3IEBAIHZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpCj4gIAkJdmFsIHw9IEVEUF9QU1Jf RVJST1IodHJhbnNfc2hpZnQpOwo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbXJfcmVn LCB2YWwpOwo+ICAKPiAtCQlzY2hlZHVsZV93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmspOwo+ICsJ CXNjaGVkdWxlX3dvcmsoJmludGVsX2RwLT5wc3Iud29yayk7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAg LTI5MSwxMiArMjkzLDYgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJ CXRvX2k5MTUoZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLmJhc2UuZGV2KTsKPiAgCj4g LQlpZiAoZGV2X3ByaXYtPnBzci5kcCkgewo+IC0JCWRybV93YXJuKCZkZXZfcHJpdi0+ZHJtLAo+ IC0JCQkgIk1vcmUgdGhhbiBvbmUgZURQIHBhbmVsIGZvdW5kLCBQU1Igc3VwcG9ydCBzaG91bGQg YmUgZXh0ZW5kZWRcbiIpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gIAlkcm1fZHBfZHBjZF9y ZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfU1VQUE9SVCwgaW50ZWxfZHAtPnBzcl9kcGNkLAo+ ICAJCQkgc2l6ZW9mKGludGVsX2RwLT5wc3JfZHBjZCkpOwo+ICAKPiBAQCAtMzE3LDEyICszMTMs MTAgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAtCWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0ID0g dHJ1ZTsKPiAtCWRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQo+ICsJaW50ZWxfZHAt PnBzci5zaW5rX3N1cHBvcnQgPSB0cnVlOwo+ICsJaW50ZWxfZHAtPnBzci5zaW5rX3N5bmNfbGF0 ZW5jeSA9Cj4gIAkJaW50ZWxfZHBfZ2V0X3Npbmtfc3luY19sYXRlbmN5KGludGVsX2RwKTsKPiAg Cj4gLQlkZXZfcHJpdi0+cHNyLmRwID0gaW50ZWxfZHA7Cj4gLQo+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSAmJgo+ICAJICAgIChpbnRlbF9kcC0+cHNyX2RwY2RbMF0gPT0gRFBfUFNS Ml9XSVRIX1lfQ09PUkRfSVNfU1VQUE9SVEVEKSkgewo+ICAJCWJvb2wgeV9yZXEgPSBpbnRlbF9k cC0+cHNyX2RwY2RbMV0gJgo+IEBAIC0zNDAsMTQgKzMzNCwxNCBAQCB2b2lkIGludGVsX3Bzcl9p bml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQkgKiBZLWNvb3JkaW5hdGUg cmVxdWlyZW1lbnQgcGFuZWxzIHdlIHdvdWxkIG5lZWQgdG8gZW5hYmxlCj4gIAkJICogR1RDIGZp cnN0Lgo+ICAJCSAqLwo+IC0JCWRldl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPSB5X3Jl cSAmJiBhbHBtOwo+ICsJCWludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPSB5X3JlcSAm JiBhbHBtOwo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiUFNSMiAlc3N1cHBvcnRl ZFxuIiwKPiAtCQkJICAgIGRldl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPyAiIiA6ICJu b3QgIik7Cj4gKwkJCSAgICBpbnRlbF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0ID8gIiIgOiAi bm90ICIpOwo+ICAKPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCkgewo+ IC0JCQlkZXZfcHJpdi0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgPQo+ICsJCWlmIChpbnRlbF9k cC0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KSB7Cj4gKwkJCWludGVsX2RwLT5wc3IuY29sb3JpbWV0 cnlfc3VwcG9ydCA9Cj4gIAkJCQlpbnRlbF9kcF9nZXRfY29sb3JpbWV0cnlfc3RhdHVzKGludGVs X2RwKTsKPiAtCQkJZGV2X3ByaXYtPnBzci5zdV94X2dyYW51bGFyaXR5ID0KPiArCQkJaW50ZWxf ZHAtPnBzci5zdV94X2dyYW51bGFyaXR5ID0KPiAgCQkJCWludGVsX2RwX2dldF9zdV94X2dyYW51 bGFydGl5KGludGVsX2RwKTsKPiAgCQl9Cj4gIAl9Cj4gQEAgLTM3Myw3ICszNjcsNyBAQCBzdGF0 aWMgdm9pZCBoc3dfcHNyX3NldHVwX2F1eChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJ QlVJTERfQlVHX09OKHNpemVvZihhdXhfbXNnKSA+IDIwKTsKPiAgCWZvciAoaSA9IDA7IGkgPCBz aXplb2YoYXV4X21zZyk7IGkgKz0gNCkKPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwKPiAt CQkJICAgICAgIEVEUF9QU1JfQVVYX0RBVEEoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyLCBpID4+ IDIpLAo+ICsJCQkgICAgICAgRURQX1BTUl9BVVhfREFUQShpbnRlbF9kcC0+cHNyLnRyYW5zY29k ZXIsIGkgPj4gMiksCj4gIAkJCSAgICAgICBpbnRlbF9kcF9wYWNrX2F1eCgmYXV4X21zZ1tpXSwg c2l6ZW9mKGF1eF9tc2cpIC0gaSkpOwo+ICAKPiAgCWF1eF9jbG9ja19kaXZpZGVyID0gaW50ZWxf ZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlcihpbnRlbF9kcCwgMCk7Cj4gQEAgLTM4NCw3ICszNzgs NyBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX3NldHVwX2F1eChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICAKPiAgCS8qIFNlbGVjdCBvbmx5IHZhbGlkIGJpdHMgZm9yIFNSRF9BVVhfQ1RMICov Cj4gIAlhdXhfY3RsICY9IHBzcl9hdXhfbWFzazsKPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBFRFBfUFNSX0FVWF9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwKPiArCWludGVsX2Rl X3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0FVWF9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVy KSwKPiAgCQkgICAgICAgYXV4X2N0bCk7Cj4gIH0KPiAgCj4gQEAgLTM5NCwxNCArMzg4LDE0IEBA IHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICAJdTggZHBjZF92YWwgPSBEUF9QU1JfRU5BQkxFOwo+ICAKPiAgCS8qIEVuYWJsZSBB TFBNIGF0IHNpbmsgZm9yIHBzcjIgKi8KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxl ZCkgewo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gIAkJZHJtX2RwX2Rw Y2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9SRUNFSVZFUl9BTFBNX0NPTkZJRywKPiAgCQkJ CSAgIERQX0FMUE1fRU5BQkxFIHwKPiAgCQkJCSAgIERQX0FMUE1fTE9DS19FUlJPUl9JUlFfSFBE X0VOQUJMRSk7Cj4gIAo+ICAJCWRwY2RfdmFsIHw9IERQX1BTUl9FTkFCTEVfUFNSMiB8IERQX1BT Ul9JUlFfSFBEX1dJVEhfQ1JDX0VSUk9SUzsKPiAgCX0gZWxzZSB7Cj4gLQkJaWYgKGRldl9wcml2 LT5wc3IubGlua19zdGFuZGJ5KQo+ICsJCWlmIChpbnRlbF9kcC0+cHNyLmxpbmtfc3RhbmRieSkK PiAgCQkJZHBjZF92YWwgfD0gRFBfUFNSX01BSU5fTElOS19BQ1RJVkU7Cj4gIAo+ICAJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gQEAgLTQ2NCw3ICs0NTgsNyBAQCBzdGF0aWMgdTgg cHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCSAq IG9mZi1ieS1vbmUgaXNzdWUgdGhhdCBIVyBoYXMgaW4gc29tZSBjYXNlcy4KPiAgCSAqLwo+ICAJ aWRsZV9mcmFtZXMgPSBtYXgoNiwgZGV2X3ByaXYtPnZidC5wc3IuaWRsZV9mcmFtZXMpOwo+IC0J aWRsZV9mcmFtZXMgPSBtYXgoaWRsZV9mcmFtZXMsIGRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xh dGVuY3kgKyAxKTsKPiArCWlkbGVfZnJhbWVzID0gbWF4KGlkbGVfZnJhbWVzLCBpbnRlbF9kcC0+ cHNyLnNpbmtfc3luY19sYXRlbmN5ICsgMSk7Cj4gIAo+ICAJaWYgKGRybV9XQVJOX09OKCZkZXZf cHJpdi0+ZHJtLCBpZGxlX2ZyYW1lcyA+IDB4ZikpCj4gIAkJaWRsZV9mcmFtZXMgPSAweGY7Cj4g QEAgLTQ4NCw3ICs0NzgsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAJCXZh bCB8PSBFRFBfUFNSX01JTl9MSU5LX0VOVFJZX1RJTUVfOF9MSU5FUzsKPiAgCj4gLQlpZiAoZGV2 X3ByaXYtPnBzci5saW5rX3N0YW5kYnkpCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5saW5rX3N0YW5k YnkpCj4gIAkJdmFsIHw9IEVEUF9QU1JfTElOS19TVEFOREJZOwo+ICAKPiAgCXZhbCB8PSBpbnRl bF9wc3IxX2dldF90cF90aW1lKGludGVsX2RwKTsKPiBAQCAtNDkyLDkgKzQ4Niw5IEBAIHN0YXRp YyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IxKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ICAJCXZhbCB8PSBFRFBfUFNSX0NSQ19FTkFC TEU7Cj4gIAo+IC0JdmFsIHw9IChpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NUTChk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKSAmCj4gKwl2YWwgfD0gKGludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIEVEUF9QU1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpICYKPiAgCQlFRFBf UFNSX1JFU1RPUkVfUFNSX0FDVElWRV9DVFhfTUFTSyk7Cj4gLQlpbnRlbF9kZV93cml0ZShkZXZf cHJpdiwgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsKPiArCWlu dGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29k ZXIpLCB2YWwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdTMyIGludGVsX3BzcjJfZ2V0X3RwX3RpbWUo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiBAQCAtNTI5LDcgKzUyMyw3IEBAIHN0YXRpYyB2 b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiAg CQl2YWwgfD0gRURQX1lfQ09PUkRJTkFURV9FTkFCTEU7Cj4gIAo+IC0JdmFsIHw9IEVEUF9QU1Iy X0ZSQU1FX0JFRk9SRV9TVShkZXZfcHJpdi0+cHNyLnNpbmtfc3luY19sYXRlbmN5ICsgMSk7Cj4g Kwl2YWwgfD0gRURQX1BTUjJfRlJBTUVfQkVGT1JFX1NVKGludGVsX2RwLT5wc3Iuc2lua19zeW5j X2xhdGVuY3kgKyAxKTsKPiAgCXZhbCB8PSBpbnRlbF9wc3IyX2dldF90cF90aW1lKGludGVsX2Rw KTsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewo+IEBAIC01NDgsNyAr NTQyLDcgQEAgc3RhdGljIHZvaWQgaHN3X2FjdGl2YXRlX3BzcjIoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiAgCQl2YWwgfD0gRURQX1BTUjJfRkFTVF9XQUtFKDcpOwo+ICAJfQo+ICAKPiAt CWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQpIHsKPiArCWlmIChpbnRl bF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQpIHsKPiAgCQkvKiBXQSAxNDA4MzMwODQ3 ICovCj4gIAkJaWYgKElTX1RHTF9ESVNQX1JFVklEKGRldl9wcml2LCBUR0xfUkVWSURfQTAsIFRH TF9SRVZJRF9BMCkgfHwKPiAgCQkgICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVWSURf QTAsIFJLTF9SRVZJRF9BMCkpCj4gQEAgLTU1NywyMCArNTUxLDIwIEBAIHN0YXRpYyB2b2lkIGhz d19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJCQkgICAgIERJ U19SQU1fQllQQVNTX1BTUjJfTUFOX1RSQUNLKTsKPiAgCj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsCj4gLQkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNj b2RlciksCj4gKwkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNj b2RlciksCj4gIAkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMX0VOQUJMRSk7Cj4gIAl9IGVsc2Ug aWYgKEhBU19QU1IyX1NFTF9GRVRDSChkZXZfcHJpdikpIHsKPiAgCQlpbnRlbF9kZV93cml0ZShk ZXZfcHJpdiwKPiAtCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwoZGV2X3ByaXYtPnBzci50cmFu c2NvZGVyKSwgMCk7Cj4gKwkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMKGludGVsX2RwLT5wc3Iu dHJhbnNjb2RlciksIDApOwo+ICAJfQo+ICAKPiAgCS8qCj4gIAkgKiBQU1IyIEhXIGlzIGluY29y cmVjdGx5IHVzaW5nIEVEUF9QU1JfVFAxX1RQM19TRUwgYW5kIEJTcGVjIGlzCj4gIAkgKiByZWNv bW1lbmRpbmcga2VlcCB0aGlzIGJpdCB1bnNldCB3aGlsZSBQU1IyIGlzIGVuYWJsZWQuCj4gIAkg Ki8KPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNy LnRyYW5zY29kZXIpLCAwKTsKPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NU TChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCAwKTsKPiAgCj4gLQlpbnRlbF9kZV93cml0ZShk ZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIHZhbCk7Cj4g KwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJh bnNjb2RlciksIHZhbCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sCj4gQEAgLTU5Myw1NSArNTg3 LDU4IEBAIHN0YXRpYyB1MzIgaW50ZWxfZ2V0X2ZyYW1lX3RpbWVfdXMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiAgCQkJICAgIGRybV9tb2RlX3ZyZWZyZXNoKCZjc3Rh dGUtPmh3LmFkanVzdGVkX21vZGUpKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgcHNyMl9wcm9n cmFtX2lkbGVfZnJhbWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArc3Rh dGljIHZvaWQgcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gIAkJCQkgICAgIHUzMiBpZGxlX2ZyYW1lcykKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gIAl1MzIgdmFsOwo+ ICAKPiAgCWlkbGVfZnJhbWVzIDw8PSAgRURQX1BTUjJfSURMRV9GUkFNRV9TSElGVDsKPiAtCXZh bCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRy YW5zY29kZXIpKTsKPiArCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NU TChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKPiAgCXZhbCAmPSB+RURQX1BTUjJfSURMRV9G UkFNRV9NQVNLOwo+ICAJdmFsIHw9IGlkbGVfZnJhbWVzOwo+IC0JaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwo+ICsJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5z Y29kZXIpLCB2YWwpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCB0Z2xfcHNyMl9lbmFibGVfZGMz Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCB0Z2xf cHNyMl9lbmFibGVfZGMzY28oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0JcHNy Ml9wcm9ncmFtX2lkbGVfZnJhbWVzKGRldl9wcml2LCAwKTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICsKPiArCXBzcjJfcHJv Z3JhbV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCwgMCk7Cj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3Nl dF90YXJnZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0VOX0RDM0NPKTsKPiAgfQo+ICAK PiAtc3RhdGljIHZvaWQgdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIHRnbF9wc3IyX2Rpc2FibGVfZGMzY28oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0Jc3RydWN0IGludGVsX2RwICppbnRlbF9k cCA9IGRldl9wcml2LT5wc3IuZHA7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiAgCj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3Nl dF90YXJnZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0VOX1VQVE9fREM2KTsKPiAtCXBz cjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhkZXZfcHJpdiwgcHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMo aW50ZWxfZHApKTsKPiArCXBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCwgcHNyX2Nv bXB1dGVfaWRsZV9mcmFtZXMoaW50ZWxfZHApKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdGds X2RjM2NvX2Rpc2FibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJY29udGFpbmVyX29mKHdvcmss IHR5cGVvZigqZGV2X3ByaXYpLCBwc3IuZGMzY29fd29yay53b3JrKTsKPiArCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPQo+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVsX2Rw KSwgcHNyLmRjM2NvX3dvcmsud29yayk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBz ci5sb2NrKTsKPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIAkvKiBJZiBk ZWxheWVkIHdvcmsgaXMgcGVuZGluZywgaXQgaXMgbm90IGlkbGUgKi8KPiAtCWlmIChkZWxheWVk X3dvcmtfcGVuZGluZygmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrKSkKPiArCWlmIChkZWxheWVk X3dvcmtfcGVuZGluZygmaW50ZWxfZHAtPnBzci5kYzNjb193b3JrKSkKPiAgCQlnb3RvIHVubG9j azsKPiAgCj4gLQl0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGRldl9wcml2KTsKPiArCXRnbF9wc3Iy X2Rpc2FibGVfZGMzY28oaW50ZWxfZHApOwo+ICB1bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Cj4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCB0Z2xfZGlz YWxsb3dfZGMzY29fb25fcHNyMl9leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsK PiAtCWlmICghZGV2X3ByaXYtPnBzci5kYzNjb19lbmFibGVkKQo+ICsJaWYgKCFpbnRlbF9kcC0+ cHNyLmRjM2NvX2VuYWJsZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWNhbmNlbF9kZWxheWVkX3dv cmsoJmRldl9wcml2LT5wc3IuZGMzY29fd29yayk7Cj4gKwljYW5jZWxfZGVsYXllZF93b3JrKCZp bnRlbF9kcC0+cHNyLmRjM2NvX3dvcmspOwo+ICAJLyogQmVmb3JlIFBTUjIgZXhpdCBkaXNhbGxv dyBkYzNjbyovCj4gLQl0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGRldl9wcml2KTsKPiArCXRnbF9w c3IyX2Rpc2FibGVfZGMzY28oaW50ZWxfZHApOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBA IC03MTQsNyArNzExLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdfdmFsaWQoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCWludCBjcnRjX3ZkaXNwbGF5ID0gY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ICAJaW50IHBzcl9tYXhfaCA9IDAs IHBzcl9tYXhfdiA9IDAsIG1heF9icHAgPSAwOwo+ICAKPiAtCWlmICghZGV2X3ByaXYtPnBzci5z aW5rX3BzcjJfc3VwcG9ydCkKPiArCWlmICghaW50ZWxfZHAtPnBzci5zaW5rX3BzcjJfc3VwcG9y dCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJaWYgKCF0cmFuc2NvZGVyX2hhc19wc3IyKGRl dl9wcml2LCBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcikpIHsKPiBAQCAtNzI0LDcgKzcyMSw3 IEBAIHN0YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAtCWlmICghcHNyMl9nbG9i YWxfZW5hYmxlZChkZXZfcHJpdikpIHsKPiArCWlmICghcHNyMl9nbG9iYWxfZW5hYmxlZChpbnRl bF9kcCkpIHsKPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlBTUjIgZGlzYWJsZWQg YnkgZmxhZ1xuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+IEBAIC03NzMsMTAgKzc3MCwx MCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAo+ICAJICogb25seSBuZWVkIHRvIHZhbGlkYXRlIHRoZSBTVSBibG9jayB3aWR0 aCBpcyBhIG11bHRpcGxlIG9mCj4gIAkgKiB4IGdyYW51bGFyaXR5Lgo+ICAJICovCj4gLQlpZiAo Y3J0Y19oZGlzcGxheSAlIGRldl9wcml2LT5wc3Iuc3VfeF9ncmFudWxhcml0eSkgewo+ICsJaWYg KGNydGNfaGRpc3BsYXkgJSBpbnRlbF9kcC0+cHNyLnN1X3hfZ3JhbnVsYXJpdHkpIHsKPiAgCQlk cm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiAgCQkJICAgICJQU1IyIG5vdCBlbmFibGVkLCBo ZGlzcGxheSglZCkgbm90IG11bHRpcGxlIG9mICVkXG4iLAo+IC0JCQkgICAgY3J0Y19oZGlzcGxh eSwgZGV2X3ByaXYtPnBzci5zdV94X2dyYW51bGFyaXR5KTsKPiArCQkJICAgIGNydGNfaGRpc3Bs YXksIGludGVsX2RwLT5wc3Iuc3VfeF9ncmFudWxhcml0eSk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ ICAJfQo+ICAKPiBAQCAtODExLDEzICs4MDgsMTAgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsKPiAgCWludCBwc3Jfc2V0dXBfdGltZTsKPiAgCj4gLQlpZiAoIUNBTl9QU1Io ZGV2X3ByaXYpKQo+IC0JCXJldHVybjsKPiAtCj4gLQlpZiAoaW50ZWxfZHAgIT0gZGV2X3ByaXYt PnBzci5kcCkKPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCj4gIAkJcmV0dXJuOwo+ICAKPiAt CWlmICghcHNyX2dsb2JhbF9lbmFibGVkKGRldl9wcml2KSkgewo+ICsJaWYgKCFwc3JfZ2xvYmFs X2VuYWJsZWQoaW50ZWxfZHApKSB7Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJQ U1IgZGlzYWJsZWQgYnkgZmxhZ1xuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+IEBAIC04MzQsNyAr ODI4LDcgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JaWYgKGRldl9wcml2LT5wc3Iuc2lu a19ub3RfcmVsaWFibGUpIHsKPiArCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtfbm90X3JlbGlhYmxl KSB7Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gIAkJCSAgICAiUFNSIHNpbmsg aW1wbGVtZW50YXRpb24gaXMgbm90IHJlbGlhYmxlXG4iKTsKPiAgCQlyZXR1cm47Cj4gQEAgLTg3 MCwyMyArODY0LDI0IEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9hY3RpdmF0ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiArCWVudW0gdHJhbnNjb2RlciB0cmFuc2Nv ZGVyID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOwo+ICAKPiAtCWlmICh0cmFuc2NvZGVyX2hh c19wc3IyKGRldl9wcml2LCBkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKQo+ICsJaWYgKHRyYW5z Y29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIHRyYW5zY29kZXIpKQo+ICAJCWRybV9XQVJOX09OKCZk ZXZfcHJpdi0+ZHJtLAo+IC0JCQkgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUjJf Q1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYgRURQX1BTUjJfRU5BQkxFKTsKPiArCQkJ ICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTCh0cmFuc2NvZGVyKSkgJiBF RFBfUFNSMl9FTkFCTEUpOwo+ICAKPiAgCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLAo+IC0J CSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRy YW5zY29kZXIpKSAmIEVEUF9QU1JfRU5BQkxFKTsKPiAtCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ ZHJtLCBkZXZfcHJpdi0+cHNyLmFjdGl2ZSk7Cj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZf cHJpdi0+cHNyLmxvY2spOwo+ICsJCSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNS X0NUTCh0cmFuc2NvZGVyKSkgJiBFRFBfUFNSX0VOQUJMRSk7Cj4gKwlkcm1fV0FSTl9PTigmZGV2 X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBzci5hY3RpdmUpOwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiAgCj4gIAkvKiBwc3IxIGFuZCBwc3IyIGFyZSBtdXR1 YWxseSBleGNsdXNpdmUuKi8KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkKPiAr CWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkKPiAgCQloc3dfYWN0aXZhdGVfcHNyMihp bnRlbF9kcCk7Cj4gIAllbHNlCj4gIAkJaHN3X2FjdGl2YXRlX3BzcjEoaW50ZWxfZHApOwo+ICAK PiAtCWRldl9wcml2LT5wc3IuYWN0aXZlID0gdHJ1ZTsKPiArCWludGVsX2RwLT5wc3IuYWN0aXZl ID0gdHJ1ZTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiBAQCAtOTAyLDcgKzg5Nyw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g IAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAg CQloc3dfcHNyX3NldHVwX2F1eChpbnRlbF9kcCk7Cj4gIAo+IC0JaWYgKGRldl9wcml2LT5wc3Iu cHNyMl9lbmFibGVkICYmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCj4gKwlpZiAoaW50ZWxfZHAt PnBzci5wc3IyX2VuYWJsZWQgJiYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYKPiAgCQkJCQkgICAh SVNfR0VNSU5JTEFLRShkZXZfcHJpdikpKSB7Cj4gIAkJaTkxNV9yZWdfdCByZWcgPSBDSElDS0VO X1RSQU5TKGNwdV90cmFuc2NvZGVyKTsKPiAgCQl1MzIgY2hpY2tlbiA9IGludGVsX2RlX3JlYWQo ZGV2X3ByaXYsIHJlZyk7Cj4gQEAgLTkyNiwxMCArOTIxLDEwIEBAIHN0YXRpYyB2b2lkIGludGVs X3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDExKQo+ICAJCW1hc2sgfD0gRURQX1BTUl9ERUJVR19NQVNLX0RJ U1BfUkVHX1dSSVRFOwo+ICAKPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0RF QlVHKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksCj4gKwlpbnRlbF9kZV93cml0ZShkZXZfcHJp diwgRURQX1BTUl9ERUJVRyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLAo+ICAJCSAgICAgICBt YXNrKTsKPiAgCj4gLQlwc3JfaXJxX2NvbnRyb2woZGV2X3ByaXYpOwo+ICsJcHNyX2lycV9jb250 cm9sKGludGVsX2RwKTsKPiAgCj4gIAlpZiAoY3J0Y19zdGF0ZS0+ZGMzY29fZXhpdGxpbmUpIHsK PiAgCQl1MzIgdmFsOwo+IEBAIC05NDcsMzAgKzk0MiwzMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9w c3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAKPiAgCWlmIChI QVNfUFNSX0hXX1RSQUNLSU5HKGRldl9wcml2KSAmJiBIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3By aXYpKQo+ICAJCWludGVsX2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIxXzEsIElHTk9SRV9Q U1IyX0hXX1RSQUNLSU5HLAo+IC0JCQkgICAgIGRldl9wcml2LT5wc3IucHNyMl9zZWxfZmV0Y2hf ZW5hYmxlZCA/Cj4gKwkJCSAgICAgaW50ZWxfZHAtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVk ID8KPiAgCQkJICAgICBJR05PUkVfUFNSMl9IV19UUkFDS0lORyA6IDApOwo+ICB9Cj4gIAo+IC1z dGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gK3N0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBk ZXZfcHJpdi0+cHNyLmRwOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdf cG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyID0gJmRpZ19wb3J0LT5iYXNlOwo+ICAJdTMyIHZhbDsKPiAgCj4gLQlkcm1fV0FS Tl9PTigmZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYtPnBzci5lbmFibGVkKTsKPiArCWRybV9XQVJO X09OKCZkZXZfcHJpdi0+ZHJtLCBpbnRlbF9kcC0+cHNyLmVuYWJsZWQpOwo+ICAKPiAtCWRldl9w cml2LT5wc3IucHNyMl9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7Cj4gLQlkZXZfcHJp di0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyA9IDA7Cj4gLQlkZXZfcHJpdi0+cHNyLnBpcGUg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7Cj4gLQlkZXZfcHJp di0+cHNyLmRjM2NvX2VuYWJsZWQgPSAhIWNydGNfc3RhdGUtPmRjM2NvX2V4aXRsaW5lOwo+IC0J ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7Cj4g KwlpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmhhc19wc3IyOwo+ICsJ aW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOwo+ICsJaW50ZWxfZHAtPnBz ci5waXBlID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpLT5waXBlOwo+ICsJ aW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkID0gISFjcnRjX3N0YXRlLT5kYzNjb19leGl0bGlu ZTsKPiArCWludGVsX2RwLT5wc3IudHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2Nv ZGVyOwo+ICAJLyogREM1L0RDNiByZXF1aXJlcyBhdCBsZWFzdCA2IGlkbGUgZnJhbWVzICovCj4g IAl2YWwgPSB1c2Vjc190b19qaWZmaWVzKGludGVsX2dldF9mcmFtZV90aW1lX3VzKGNydGNfc3Rh dGUpICogNik7Cj4gLQlkZXZfcHJpdi0+cHNyLmRjM2NvX2V4aXRfZGVsYXkgPSB2YWw7Cj4gLQlk ZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5lbmFibGVf cHNyMl9zZWxfZmV0Y2g7Cj4gKwlpbnRlbF9kcC0+cHNyLmRjM2NvX2V4aXRfZGVsYXkgPSB2YWw7 Cj4gKwlpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5l bmFibGVfcHNyMl9zZWxfZmV0Y2g7Cj4gIAo+ICAJLyoKPiAgCSAqIElmIGEgUFNSIGVycm9yIGhh cHBlbmVkIGFuZCB0aGUgZHJpdmVyIGlzIHJlbG9hZGVkLCB0aGUgRURQX1BTUl9JSVIKPiBAQCAt OTgyLDI3ICs5NzcsMjcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICovCj4gIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMikgewo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCj4g LQkJCQkgICAgVFJBTlNfUFNSX0lJUihkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCQkJ CSAgICBUUkFOU19QU1JfSUlSKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwo+ICAJCXZhbCAm PSBFRFBfUFNSX0VSUk9SKDApOwo+ICAJfSBlbHNlIHsKPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFk KGRldl9wcml2LCBFRFBfUFNSX0lJUik7Cj4gLQkJdmFsICY9IEVEUF9QU1JfRVJST1IoZGV2X3By aXYtPnBzci50cmFuc2NvZGVyKTsKPiArCQl2YWwgJj0gRURQX1BTUl9FUlJPUihpbnRlbF9kcC0+ cHNyLnRyYW5zY29kZXIpOwo+ICAJfQo+ICAJaWYgKHZhbCkgewo+IC0JCWRldl9wcml2LT5wc3Iu c2lua19ub3RfcmVsaWFibGUgPSB0cnVlOwo+ICsJCWludGVsX2RwLT5wc3Iuc2lua19ub3RfcmVs aWFibGUgPSB0cnVlOwo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAo+ICAJCQkgICAg IlBTUiBpbnRlcnJ1cHRpb24gZXJyb3Igc2V0LCBub3QgZW5hYmxpbmcgUFNSXG4iKTsKPiAgCQly ZXR1cm47Cj4gIAl9Cj4gIAo+ICAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJFbmFibGlu ZyBQU1Ilc1xuIiwKPiAtCQkgICAgZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgPyAiMiIgOiAi MSIpOwo+ICsJCSAgICBpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIxIik7Cj4g IAlpbnRlbF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25u X3N0YXRlLAo+IC0JCQkJICAgICAmZGV2X3ByaXYtPnBzci52c2MpOwo+IC0JaW50ZWxfd3JpdGVf ZHBfdnNjX3NkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCAmZGV2X3ByaXYtPnBzci52c2MpOwo+ICsJ CQkJICAgICAmaW50ZWxfZHAtPnBzci52c2MpOwo+ICsJaW50ZWxfd3JpdGVfZHBfdnNjX3NkcChl bmNvZGVyLCBjcnRjX3N0YXRlLCAmaW50ZWxfZHAtPnBzci52c2MpOwo+ICAJaW50ZWxfcHNyX2Vu YWJsZV9zaW5rKGludGVsX2RwKTsKPiAgCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2Rw LCBjcnRjX3N0YXRlKTsKPiAtCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IHRydWU7Cj4gKwlpbnRl bF9kcC0+cHNyLmVuYWJsZWQgPSB0cnVlOwo+ICAKPiAgCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRl bF9kcCk7Cj4gIH0KPiBAQCAtMTAyMSw3ICsxMDE2LDcgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxl KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICAKPiAtCWlmICghQ0FOX1BT UihkZXZfcHJpdikgfHwgZGV2X3ByaXYtPnBzci5kcCAhPSBpbnRlbF9kcCkKPiArCWlmICghQ0FO X1BTUihpbnRlbF9kcCkpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmICghY3J0Y19zdGF0ZS0+aGFz X3BzcikKPiBAQCAtMTAyOSw0NiArMTAyNCw0NyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCj4gIAlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRy bSwgZGV2X3ByaXYtPmRycnMuZHApOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7Cj4gLQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSwg Y29ubl9zdGF0ZSk7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwlt dXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICsJaW50ZWxfcHNyX2VuYWJsZV9sb2Nr ZWQoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ICsJbXV0ZXhfdW5sb2NrKCZp bnRlbF9kcC0+cHNyLmxvY2spOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9wc3JfZXhp dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGludGVs X3Bzcl9leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICAJdTMyIHZh bDsKPiAgCj4gLQlpZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlKSB7Cj4gLQkJaWYgKHRyYW5zY29k ZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpIHsKPiArCWlm ICghaW50ZWxfZHAtPnBzci5hY3RpdmUpIHsKPiArCQlpZiAodHJhbnNjb2Rlcl9oYXNfcHNyMihk ZXZfcHJpdiwgaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSkgewo+ICAJCQl2YWwgPSBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJCSAgICBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKSk7Cj4gKwkJCQkJICAgIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5z Y29kZXIpKTsKPiAgCQkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIHZhbCAmIEVEUF9QU1Iy X0VOQUJMRSk7Cj4gIAkJfQo+ICAKPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+ IC0JCQkJICAgIEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOwo+ICsJCQkJ ICAgIEVEUF9QU1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwo+ICAJCWRybV9XQVJO X09OKCZkZXZfcHJpdi0+ZHJtLCB2YWwgJiBFRFBfUFNSX0VOQUJMRSk7Cj4gIAo+ICAJCXJldHVy bjsKPiAgCX0KPiAgCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiAtCQl0 Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KGRldl9wcml2KTsKPiArCWlmIChpbnRlbF9k cC0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJCXRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4 aXQoaW50ZWxfZHApOwo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCj4gLQkJCQkg ICAgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOwo+ICsJCQkJICAgIEVE UF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKPiAgCQlkcm1fV0FSTl9PTigm ZGV2X3ByaXYtPmRybSwgISh2YWwgJiBFRFBfUFNSMl9FTkFCTEUpKTsKPiAgCQl2YWwgJj0gfkVE UF9QU1IyX0VOQUJMRTsKPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwKPiAtCQkJICAgICAg IEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwo+ICsJCQkgICAg ICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIHZhbCk7Cj4gIAl9IGVs c2Ugewo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCj4gLQkJCQkgICAgRURQX1BT Ul9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7Cj4gKwkJCQkgICAgRURQX1BTUl9DVEwo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7Cj4gIAkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5k cm0sICEodmFsICYgRURQX1BTUl9FTkFCTEUpKTsKPiAgCQl2YWwgJj0gfkVEUF9QU1JfRU5BQkxF Owo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAo+IC0JCQkgICAgICAgRURQX1BTUl9DVEwo ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsKPiArCQkJICAgICAgIEVEUF9QU1JfQ1RM KGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIHZhbCk7Cj4gIAl9Cj4gLQlkZXZfcHJpdi0+cHNy LmFjdGl2ZSA9IGZhbHNlOwo+ICsJaW50ZWxfZHAtPnBzci5hY3RpdmUgPSBmYWxzZTsKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gQEAgLTEwNzcsMjEgKzEwNzMsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxf cHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpOTE1X3Jl Z190IHBzcl9zdGF0dXM7Cj4gIAl1MzIgcHNyX3N0YXR1c19tYXNrOwo+ICAKPiAtCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxk KCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICAKPiAtCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVk KQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWRy bV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRGlzYWJsaW5nIFBTUiVzXG4iLAo+IC0JCSAgICBk ZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIxIik7Cj4gKwkJICAgIGludGVsX2Rw LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKPiAgCj4gLQlpbnRlbF9wc3JfZXhpdChk ZXZfcHJpdik7Cj4gKwlpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7Cj4gIAo+IC0JaWYgKGRldl9w cml2LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gLQkJcHNyX3N0YXR1cyA9IEVEUF9QU1IyX1NUQVRV UyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOwo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9l bmFibGVkKSB7Cj4gKwkJcHNyX3N0YXR1cyA9IEVEUF9QU1IyX1NUQVRVUyhpbnRlbF9kcC0+cHNy LnRyYW5zY29kZXIpOwo+ICAJCXBzcl9zdGF0dXNfbWFzayA9IEVEUF9QU1IyX1NUQVRVU19TVEFU RV9NQVNLOwo+ICAJfSBlbHNlIHsKPiAtCQlwc3Jfc3RhdHVzID0gRURQX1BTUl9TVEFUVVMoZGV2 X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKPiArCQlwc3Jfc3RhdHVzID0gRURQX1BTUl9TVEFUVVMo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKPiAgCQlwc3Jfc3RhdHVzX21hc2sgPSBFRFBfUFNS X1NUQVRVU19TVEFURV9NQVNLOwo+ICAJfQo+ICAKPiBAQCAtMTEwMSw3ICsxMDk3LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlRpbWVkIG91dCB3YWl0aW5nIFBTUiBp ZGxlIHN0YXRlXG4iKTsKPiAgCj4gIAkvKiBXQSAxNDA4MzMwODQ3ICovCj4gLQlpZiAoZGV2X3By aXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkICYmCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5w c3IyX3NlbF9mZXRjaF9lbmFibGVkICYmCj4gIAkgICAgKElTX1RHTF9ESVNQX1JFVklEKGRldl9w cml2LCBUR0xfUkVWSURfQTAsIFRHTF9SRVZJRF9BMCkgfHwKPiAgCSAgICAgSVNfUktMX1JFVklE KGRldl9wcml2LCBSS0xfUkVWSURfQTAsIFJLTF9SRVZJRF9BMCkpKQo+ICAJCWludGVsX2RlX3Jt dyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIxXzEsCj4gQEAgLTExMTAsMTAgKzExMDYsMTAgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gIAkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovCj4gIAlkcm1fZHBfZHBjZF93cml0ZWIo JmludGVsX2RwLT5hdXgsIERQX1BTUl9FTl9DRkcsIDApOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+ cHNyLnBzcjJfZW5hYmxlZCkKPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkKPiAg CQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1JFQ0VJVkVSX0FMUE1fQ09O RklHLCAwKTsKPiAgCj4gLQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBmYWxzZTsKPiArCWludGVs X2RwLT5wc3IuZW5hYmxlZCA9IGZhbHNlOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtMTEzMSwyMCAr MTEyNywyMiBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gIAlpZiAoIW9sZF9jcnRjX3N0YXRlLT5oYXNfcHNyKQo+ICAJCXJldHVybjsKPiAgCj4g LQlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFDQU5fUFNSKGRldl9wcml2KSkpCj4g KwlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFDQU5fUFNSKGludGVsX2RwKSkpCj4g IAkJcmV0dXJuOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwlt dXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICAKPiAgCWludGVsX3Bzcl9kaXNhYmxl X2xvY2tlZChpbnRlbF9kcCk7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOwo+IC0JY2FuY2VsX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci53b3JrKTsKPiAtCWNhbmNl bF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrKTsKPiArCW11dGV4 X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiArCWNhbmNlbF93b3JrX3N5bmMoJmludGVs X2RwLT5wc3Iud29yayk7Cj4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmludGVsX2RwLT5w c3IuZGMzY29fd29yayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBzcl9mb3JjZV9od190cmFj a2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGljIHZv aWQgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShp bnRlbF9kcCk7Cj4gKwo+ICAJaWYgKElTX1RJR0VSTEFLRShkZXZfcHJpdikpCj4gIAkJLyoKPiAg CQkgKiBXcml0ZXMgdG8gQ1VSU1VSRkxJVkUgaW4gVEdMIGFyZSBjYXVzaW5nIElPTU1VIGVycm9y cyBhbmQKPiBAQCAtMTE1OCw3ICsxMTU2LDcgQEAgc3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3Ry YWNraW5nX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCSAqIFNv IHVzaW5nIHRoaXMgd29ya2Fyb3VuZCB1bnRpbCB0aGlzIGlzc3VlIGlzIHJvb3QgY2F1c2VkCj4g IAkJICogYW5kIGEgYmV0dGVyIGZpeCBpcyBmb3VuZC4KPiAgCQkgKi8KPiAtCQlpbnRlbF9wc3Jf ZXhpdChkZXZfcHJpdik7Cj4gKwkJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOwo+ICAJZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAJCS8qCj4gIAkJICogRGlzcGxheSBXQSAj MDg4NDogc2tsKwo+IEBAIC0xMTY5LDEzICsxMTY3LDEzIEBAIHN0YXRpYyB2b2lkIHBzcl9mb3Jj ZV9od190cmFja2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CQkgKiBidXQgaXQgbWFrZXMgbW9yZSBzZW5zZSB3cml0ZSB0byB0aGUgY3VycmVudCBhY3RpdmUK PiAgCQkgKiBwaXBlLgo+ICAJCSAqLwo+IC0JCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBDVVJT VVJGTElWRShkZXZfcHJpdi0+cHNyLnBpcGUpLCAwKTsKPiArCQlpbnRlbF9kZV93cml0ZShkZXZf cHJpdiwgQ1VSU1VSRkxJVkUoaW50ZWxfZHAtPnBzci5waXBlKSwgMCk7Cj4gIAllbHNlCj4gIAkJ LyoKPiAgCQkgKiBBIHdyaXRlIHRvIENVUlNVUkZMSVZFIGRvIG5vdCBjYXVzZSBIVyB0cmFja2lu ZyB0byBleGl0IFBTUgo+ICAJCSAqIG9uIG9sZGVyIGdlbnMgc28gZG9pbmcgdGhlIG1hbnVhbCBl eGl0IGluc3RlYWQuCj4gIAkJICovCj4gLQkJaW50ZWxfcHNyX2V4aXQoZGV2X3ByaXYpOwo+ICsJ CWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9wc3IyX3By b2dyYW1fcGxhbmVfc2VsX2ZldGNoKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gQEAgLTEy MTAsMTEgKzEyMDgsMTEgQEAgdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fcGxhbmVfc2VsX2ZldGNo KHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJp diwgUExBTkVfU0VMX0ZFVENIX1NJWkUocGlwZSwgcGxhbmUtPmlkKSwgdmFsKTsKPiAgfQo+ICAK PiAtdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3ZvaWQgaW50ZWxfcHNyMl9wcm9ncmFt X3RyYW5zX21hbl90cmtfY3RsKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKwkJCQkJICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKPiAtCXN0cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsK PiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwo+ICAKPiAgCWlmICgh SEFTX1BTUjJfU0VMX0ZFVENIKGRldl9wcml2KSB8fAo+ICAJICAgICFjcnRjX3N0YXRlLT5lbmFi bGVfcHNyMl9zZWxfZmV0Y2gpCj4gQEAgLTEzMjYsMTMgKzEzMjQsMTMgQEAgdm9pZCBpbnRlbF9w c3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJICAgICAgY29uc3Qgc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+IC0Jc3RydWN0 IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBz ciA9ICZpbnRlbF9kcC0+cHNyOwo+ICAJYm9vbCBlbmFibGUsIHBzcjJfZW5hYmxlOwo+ICAKPiAt CWlmICghQ0FOX1BTUihkZXZfcHJpdikgfHwgUkVBRF9PTkNFKHBzci0+ZHApICE9IGludGVsX2Rw KQo+ICsJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3Iu bG9jayk7Cj4gIAo+ICAJZW5hYmxlID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjsKPiAgCXBzcjJfZW5h YmxlID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7Cj4gQEAgLTEzNDAsMTUgKzEzMzgsMTUgQEAgdm9p ZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlpZiAoZW5h YmxlID09IHBzci0+ZW5hYmxlZCAmJiBwc3IyX2VuYWJsZSA9PSBwc3ItPnBzcjJfZW5hYmxlZCkg ewo+ICAJCS8qIEZvcmNlIGEgUFNSIGV4aXQgd2hlbiBlbmFibGluZyBDUkMgdG8gYXZvaWQgQ1JD IHRpbWVvdXRzICovCj4gIAkJaWYgKGNydGNfc3RhdGUtPmNyY19lbmFibGVkICYmIHBzci0+ZW5h YmxlZCkKPiAtCQkJcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoZGV2X3ByaXYpOwo+ICsJCQlw c3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChpbnRlbF9kcCk7Cj4gIAkJZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDkgJiYgcHNyLT5lbmFibGVkKSB7Cj4gIAkJCS8qCj4gIAkJCSAqIEFj dGl2YXRlIFBTUiBhZ2FpbiBhZnRlciBhIGZvcmNlIGV4aXQgd2hlbiBlbmFibGluZwo+ICAJCQkg KiBDUkMgaW4gb2xkZXIgZ2Vucwo+ICAJCQkgKi8KPiAtCQkJaWYgKCFkZXZfcHJpdi0+cHNyLmFj dGl2ZSAmJgo+IC0JCQkgICAgIWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQo+ IC0JCQkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPnBzci53b3JrKTsKPiArCQkJaWYgKCFpbnRl bF9kcC0+cHNyLmFjdGl2ZSAmJgo+ICsJCQkgICAgIWludGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1 ZmZlcl9iaXRzKQo+ICsJCQkJc2NoZWR1bGVfd29yaygmaW50ZWxfZHAtPnBzci53b3JrKTsKPiAg CQl9Cj4gIAo+ICAJCWdvdG8gdW5sb2NrOwo+IEBAIC0xMzU4LDM0ICsxMzU2LDIzIEBAIHZvaWQg aW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCWludGVsX3Bz cl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7Cj4gIAo+ICAJaWYgKGVuYWJsZSkKPiAtCQlpbnRl bF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7Cj4g KwkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3Rh dGUpOwo+ICAKPiAgdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Owo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICB9Cj4gIAo+ICAvKioK PiAtICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3YWl0IGZvciBQU1IxIHRvIGlkbGUKPiAt ICogQG5ld19jcnRjX3N0YXRlOiBuZXcgQ1JUQyBzdGF0ZQo+ICsgKiBwc3Jfd2FpdF9mb3JfaWRs ZSAtIHdhaXQgZm9yIFBTUjEgdG8gaWRsZQo+ICsgKiBAaW50ZWxfZHA6IEludGVsIERQCj4gICAq IEBvdXRfdmFsdWU6IFBTUiBzdGF0dXMgaW4gY2FzZSBvZiBmYWlsdXJlCj4gICAqCj4gLSAqIFRo aXMgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZyb20gcGlwZV91cGRhdGVfc3Rh cnQoKSB3aGVyZSBpdCBpcwo+IC0gKiBub3QgZXhwZWN0ZWQgdG8gcmFjZSB3aXRoIFBTUiBlbmFi bGUgb3IgZGlzYWJsZS4KPiAtICoKPiAgICogUmV0dXJuczogMCBvbiBzdWNjZXNzIG9yIC1FVElN RU9VVCBpZiBQU1Igc3RhdHVzIGRvZXMgbm90IGlkbGUuCj4gKyAqCj4gICAqLwo+IC1pbnQgaW50 ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlLAo+IC0JCQkgICAgdTMyICpvdXRfdmFsdWUpCj4gK3N0YXRpYyBpbnQgcHNyX3dh aXRfZm9yX2lkbGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTMyICpvdXRfdmFsdWUpCj4g IHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhuZXdfY3J0Y19z dGF0ZS0+dWFwaS5jcnRjKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0KPiAtCWlmICghZGV2X3ByaXYtPnBzci5lbmFi bGVkIHx8ICFuZXdfY3J0Y19zdGF0ZS0+aGFzX3BzcikKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQkv KiBGSVhNRTogVXBkYXRlIHRoaXMgZm9yIFBTUjIgaWYgd2UgbmVlZCB0byB3YWl0IGZvciBpZGxl ICovCj4gLQlpZiAoUkVBRF9PTkNFKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSkKPiAtCQly ZXR1cm4gMDsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOwo+ICAKPiAgCS8qCj4gIAkgKiBGcm9tIGJzcGVjOiBQYW5lbCBTZWxmIFJl ZnJlc2ggKEJEVyspCj4gQEAgLTEzOTMsMzIgKzEzODAsNjcgQEAgaW50IGludGVsX3Bzcl93YWl0 X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSwK PiAgCSAqIGV4aXQgdHJhaW5pbmcgdGltZSArIDEuNSBtcyBvZiBhdXggY2hhbm5lbCBoYW5kc2hh a2UuIDUwIG1zIGlzCj4gIAkgKiBkZWZlbnNpdmUgZW5vdWdoIHRvIGNvdmVyIGV2ZXJ5dGhpbmcu Cj4gIAkgKi8KPiAtCj4gIAlyZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3By aXYtPnVuY29yZSwKPiAtCQkJCQkgRURQX1BTUl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2Nv ZGVyKSwKPiArCQkJCQkgRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwK PiAgCQkJCQkgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSywKPiAgCQkJCQkgRURQX1BTUl9TVEFU VVNfU1RBVEVfSURMRSwgMiwgNTAsCj4gIAkJCQkJIG91dF92YWx1ZSk7Cj4gIH0KPiAgCj4gLXN0 YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiArLyoqCj4gKyAqIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlIC0gd2Fp dCBmb3IgUFNSMSB0byBpZGxlCj4gKyAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3IENSVEMgc3RhdGUK PiArICoKPiArICogVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgZnJvbSBw aXBlX3VwZGF0ZV9zdGFydCgpIHdoZXJlIGl0IGlzCj4gKyAqIG5vdCBleHBlY3RlZCB0byByYWNl IHdpdGggUFNSIGVuYWJsZSBvciBkaXNhYmxlLgo+ICsgKi8KPiArdm9pZCBpbnRlbF9wc3Jfd2Fp dF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUp Cj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUobmV3 X2NydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyOwo+ICsJdTMyIHBzcl9zdGF0dXM7Cj4gKwo+ICsJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+ aGFzX3BzcikKPiArCQlyZXR1cm47Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2 LT5kcm0sIGVuY29kZXIpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKGVuY29kZXIpOwo+ICsKPiArCQlpZiAoZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9P VVRQVVRfRURQKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLyogd2hlbiB0aGUgUFNSMSBpcyBl bmFibGVkICovCj4gKwkJaWYgKGludGVsX2RwLT5wc3IuZW5hYmxlZCAmJiAhaW50ZWxfZHAtPnBz ci5wc3IyX2VuYWJsZWQpIHsKPiArCQkJaWYgKHBzcl93YWl0X2Zvcl9pZGxlKGludGVsX2RwLCAm cHNyX3N0YXR1cykpCj4gKwkJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+ICsJCQkJCSJQU1Ig aWRsZSB0aW1lZCBvdXQgMHgleCwgYXRvbWljIHVwZGF0ZSBtYXkgZmFpbFxuIiwKPiArCQkJCQlw c3Jfc3RhdHVzKTsKPiArCj4gKwkJCS8qIG9ubHkgb25lIHRyYW5jb2RlciBjYW4gZW5hYmxlIFBT UjEgKi8KPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBf X3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7 Cj4gIAlpOTE1X3JlZ190IHJlZzsKPiAgCXUzMiBtYXNrOwo+ICAJaW50IGVycjsKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICAK PiAtCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmVu YWJsZWQpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCkgewo+IC0JCXJlZyA9IEVEUF9QU1IyX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5z Y29kZXIpOwo+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gKwkJcmVnID0g RURQX1BTUjJfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7Cj4gIAkJbWFzayA9IEVE UF9QU1IyX1NUQVRVU19TVEFURV9NQVNLOwo+ICAJfSBlbHNlIHsKPiAtCQlyZWcgPSBFRFBfUFNS X1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOwo+ICsJCXJlZyA9IEVEUF9QU1JfU1RB VFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7Cj4gIAkJbWFzayA9IEVEUF9QU1JfU1RBVFVT X1NUQVRFX01BU0s7Cj4gIAl9Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOwo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICAKPiAgCWVyciA9 IGludGVsX2RlX3dhaXRfZm9yX2NsZWFyKGRldl9wcml2LCByZWcsIG1hc2ssIDUwKTsKPiAgCWlm IChlcnIpCj4gQEAgLTE0MjYsOCArMTQ0OCw4IEBAIHN0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9y X2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJIlRp bWVkIG91dCB3YWl0aW5nIGZvciBQU1IgSWRsZSBmb3IgcmUtZW5hYmxlXG4iKTsKPiAgCj4gIAkv KiBBZnRlciB0aGUgdW5sb2NrZWQgd2FpdCwgdmVyaWZ5IHRoYXQgUFNSIGlzIHN0aWxsIHdhbnRl ZCEgKi8KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gLQlyZXR1cm4gZXJy ID09IDAgJiYgZGV2X3ByaXYtPnBzci5lbmFibGVkOwo+ICsJbXV0ZXhfbG9jaygmaW50ZWxfZHAt PnBzci5sb2NrKTsKPiArCXJldHVybiBlcnIgPT0gMCAmJiBpbnRlbF9kcC0+cHNyLmVuYWJsZWQ7 Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxfcHNyX2Zhc3RzZXRfZm9yY2Uoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBAIC0xNDkzLDExICsxNTE1LDEyIEBAIHN0YXRp YyBpbnQgaW50ZWxfcHNyX2Zhc3RzZXRfZm9yY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJcmV0dXJuIGVycjsKPiAgfQo+ICAKPiAtaW50IGludGVsX3Bzcl9kZWJ1Z19z ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgdmFsKQo+ICtpbnQgaW50 ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFsKQo+ICB7 Cj4gIAljb25zdCB1MzIgbW9kZSA9IHZhbCAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsKPiAg CXUzMiBvbGRfbW9kZTsKPiAgCWludCByZXQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiAgCj4gIAlpZiAodmFsICYgfihJOTE1 X1BTUl9ERUJVR19JUlEgfCBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spIHx8Cj4gIAkgICAgbW9k ZSA+IEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjEpIHsKPiBAQCAtMTUwNSwyMSArMTUyOCwyMSBA QCBpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHU2NCB2YWwpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ICsJcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICAJaWYgKHJldCkK PiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCW9sZF9tb2RlID0gZGV2X3ByaXYtPnBzci5kZWJ1ZyAm IEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsKPiAtCWRldl9wcml2LT5wc3IuZGVidWcgPSB2YWw7 Cj4gKwlvbGRfbW9kZSA9IGludGVsX2RwLT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19NT0RF X01BU0s7Cj4gKwlpbnRlbF9kcC0+cHNyLmRlYnVnID0gdmFsOwo+ICAKPiAgCS8qCj4gIAkgKiBE byBpdCByaWdodCBhd2F5IGlmIGl0J3MgYWxyZWFkeSBlbmFibGVkLCBvdGhlcndpc2UgaXQgd2ls bCBiZSBkb25lCj4gIAkgKiB3aGVuIGVuYWJsaW5nIHRoZSBzb3VyY2UuCj4gIAkgKi8KPiAtCWlm IChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCj4gLQkJcHNyX2lycV9jb250cm9sKGRldl9wcml2KTsK PiArCWlmIChpbnRlbF9kcC0+cHNyLmVuYWJsZWQpCj4gKwkJcHNyX2lycV9jb250cm9sKGludGVs X2RwKTsKPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwltdXRl eF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIAo+ICAJaWYgKG9sZF9tb2RlICE9IG1v ZGUpCj4gIAkJcmV0ID0gaW50ZWxfcHNyX2Zhc3RzZXRfZm9yY2UoZGV2X3ByaXYpOwo+IEBAIC0x NTI3LDI4ICsxNTUwLDI4IEBAIGludCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHZhbCkKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4g LXN0YXRpYyB2b2lkIGludGVsX3Bzcl9oYW5kbGVfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiArc3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3By aXYtPnBzcjsKPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwo+ICAK PiAtCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChwc3ItPmRwKTsKPiArCWludGVsX3Bzcl9kaXNh YmxlX2xvY2tlZChpbnRlbF9kcCk7Cj4gIAlwc3ItPnNpbmtfbm90X3JlbGlhYmxlID0gdHJ1ZTsK PiAgCS8qIGxldCdzIG1ha2Ugc3VyZSB0aGF0IHNpbmsgaXMgYXdha2VuICovCj4gLQlkcm1fZHBf ZHBjZF93cml0ZWIoJnBzci0+ZHAtPmF1eCwgRFBfU0VUX1BPV0VSLCBEUF9TRVRfUE9XRVJfRDAp Owo+ICsJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9TRVRfUE9XRVIsIERQ X1NFVF9QT1dFUl9EMCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0KPiAtCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiksIHBz ci53b3JrKTsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+ICsJCWNvbnRhaW5lcl9v Zih3b3JrLCB0eXBlb2YoKmludGVsX2RwKSwgcHNyLndvcmspOwo+ICAKPiAtCW11dGV4X2xvY2so JmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2sp Owo+ICAKPiAtCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQo+ICsJaWYgKCFpbnRlbF9kcC0+ cHNyLmVuYWJsZWQpCj4gIAkJZ290byB1bmxvY2s7Cj4gIAo+IC0JaWYgKFJFQURfT05DRShkZXZf cHJpdi0+cHNyLmlycV9hdXhfZXJyb3IpKQo+IC0JCWludGVsX3Bzcl9oYW5kbGVfaXJxKGRldl9w cml2KTsKPiArCWlmIChSRUFEX09OQ0UoaW50ZWxfZHAtPnBzci5pcnFfYXV4X2Vycm9yKSkKPiAr CQlpbnRlbF9wc3JfaGFuZGxlX2lycShpbnRlbF9kcCk7Cj4gIAo+ICAJLyoKPiAgCSAqIFdlIGhh dmUgdG8gbWFrZSBzdXJlIFBTUiBpcyByZWFkeSBmb3IgcmUtZW5hYmxlCj4gQEAgLTE1NTYsNyAr MTU3OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKPiAgCSAqIFBTUiBtaWdodCB0YWtlIHNvbWUgdGltZSB0byBnZXQgZnVsbHkgZGlzYWJs ZWQKPiAgCSAqIGFuZCBiZSByZWFkeSBmb3IgcmUtZW5hYmxlLgo+ICAJICovCj4gLQlpZiAoIV9f cHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKGRldl9wcml2KSkKPiArCWlmICghX19wc3Jfd2FpdF9m b3JfaWRsZV9sb2NrZWQoaW50ZWxfZHApKQo+ICAJCWdvdG8gdW5sb2NrOwo+ICAKPiAgCS8qCj4g QEAgLTE1NjQsMTIgKzE1ODcsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAJICogcmVjaGVjay4gU2luY2UgcHNyX2ZsdXNoIGZpcnN0 IGNsZWFycyB0aGlzIGFuZCB0aGVuIHJlc2NoZWR1bGVzIHdlCj4gIAkgKiB3b24ndCBldmVyIG1p c3MgYSBmbHVzaCB3aGVuIGJhaWxpbmcgb3V0IGhlcmUuCj4gIAkgKi8KPiAtCWlmIChkZXZfcHJp di0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8fCBkZXZfcHJpdi0+cHNyLmFjdGl2ZSkKPiAr CWlmIChpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8fCBpbnRlbF9kcC0+cHNy LmFjdGl2ZSkKPiAgCQlnb3RvIHVubG9jazsKPiAgCj4gLQlpbnRlbF9wc3JfYWN0aXZhdGUoZGV2 X3ByaXYtPnBzci5kcCk7Cj4gKwlpbnRlbF9wc3JfYWN0aXZhdGUoaW50ZWxfZHApOwo+ICB1bmxv Y2s6Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwltdXRleF91bmxv Y2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xNTg4LDI3ICsx NjExLDM1IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKPiAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCSAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywgZW51bSBmYl9v cF9vcmlnaW4gb3JpZ2luKQo+ICB7Cj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQo+IC0JCXJl dHVybjsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICsJc3RydWN0IGludGVs X2RwICppbnRlbF9kcDsKPiAgCj4gLQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQo+IC0JCXJl dHVybjsKPiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7Cj4g IAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAtCWlmICghZGV2X3ByaXYt PnBzci5lbmFibGVkKSB7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ IC0JCXJldHVybjsKPiAtCX0KPiArCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVy KTsKPiArCQlpZiAoZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQo+ICsJCQljb250 aW51ZTsKPiArCQlpZiAoIUNBTl9QU1IoaW50ZWxfZHApKQo+ICsJCQljb250aW51ZTsKPiArCj4g KwkJaWYgKG9yaWdpbiA9PSBPUklHSU5fRkxJUCkKPiArCQkJY29udGludWU7Cj4gIAo+IC0JZnJv bnRidWZmZXJfYml0cyAmPSBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0+cHNy LnBpcGUpOwo+IC0JZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgfD0gZnJvbnRi dWZmZXJfYml0czsKPiArCQltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICsJCWlm ICghaW50ZWxfZHAtPnBzci5lbmFibGVkKSB7Cj4gKwkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAt PnBzci5sb2NrKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICAKPiAtCWlmIChmcm9udGJ1ZmZl cl9iaXRzKQo+IC0JCWludGVsX3Bzcl9leGl0KGRldl9wcml2KTsKPiArCQlmcm9udGJ1ZmZlcl9i aXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlwZSk7Cj4g KwkJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgfD0gZnJvbnRidWZmZXJfYml0 czsKPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gLX0KPiArCQlp ZiAoZnJvbnRidWZmZXJfYml0cykKPiArCQkJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOwo+ICAK PiArCQltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gKwl9Cj4gK30KPiAgLyoK PiAgICogV2hlbiB3ZSB3aWxsIGJlIGNvbXBsZXRlbHkgcmVseSBvbiBQU1IyIFMvVyB0cmFja2lu ZyBpbiBmdXR1cmUsCj4gICAqIGludGVsX3Bzcl9mbHVzaCgpIHdpbGwgaW52YWxpZGF0ZSBhbmQg Zmx1c2ggdGhlIFBTUiBmb3IgT1JJR0lOX0ZMSVAKPiBAQCAtMTYxNiwxNSArMTY0NywxNSBAQCB2 b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgICogYWNjb3JkaW5nbHkgaW4gZnV0dXJlLgo+ICAgKi8KPiAgc3RhdGljIHZvaWQKPiAt dGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQl1 bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cywgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQo+ ICt0Z2xfZGMzY29fZmx1c2goc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdW5zaWduZWQgaW50 IGZyb250YnVmZmVyX2JpdHMsCj4gKwkJZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQo+ICB7Cj4g LQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ICsJbXV0ZXhfbG9jaygmaW50ZWxf ZHAtPnBzci5sb2NrKTsKPiAgCj4gLQlpZiAoIWRldl9wcml2LT5wc3IuZGMzY29fZW5hYmxlZCkK PiArCWlmICghaW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkKQo+ICAJCWdvdG8gdW5sb2NrOwo+ ICAKPiAtCWlmICghZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgfHwgIWRldl9wcml2LT5wc3Iu YWN0aXZlKQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCB8fCAhaW50ZWxfZHAt PnBzci5hY3RpdmUpCj4gIAkJZ290byB1bmxvY2s7Cj4gIAo+ICAJLyoKPiBAQCAtMTYzMiwxNSAr MTY2MywxNSBAQCB0Z2xfZGMzY29fZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJICogd2hlbiBkZWxheWVkIHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVhbnMgZGlzcGxh eSBoYXMgYmVlbiBpZGxlLgo+ICAJICovCj4gIAlpZiAoIShmcm9udGJ1ZmZlcl9iaXRzICYKPiAt CSAgICBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpKSkKPiAr CSAgICBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhpbnRlbF9kcC0+cHNyLnBpcGUpKSkKPiAg CQlnb3RvIHVubG9jazsKPiAgCj4gLQl0Z2xfcHNyMl9lbmFibGVfZGMzY28oZGV2X3ByaXYpOwo+ IC0JbW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fd3EsICZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmss Cj4gLQkJCSBkZXZfcHJpdi0+cHNyLmRjM2NvX2V4aXRfZGVsYXkpOwo+ICsJdGdsX3BzcjJfZW5h YmxlX2RjM2NvKGludGVsX2RwKTsKPiArCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmaW50 ZWxfZHAtPnBzci5kYzNjb193b3JrLAo+ICsJCQkgaW50ZWxfZHAtPnBzci5kYzNjb19leGl0X2Rl bGF5KTsKPiAgCj4gIHVubG9jazoKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2Nr KTsKPiArCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiAgfQo+ICAKPiAgLyoq Cj4gQEAgLTE2NTksNDUgKzE2OTAsNTQgQEAgdGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCSAgICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0 cywgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQo+ICB7Cj4gLQlpZiAoIUNBTl9QU1IoZGV2X3By aXYpKQo+IC0JCXJldHVybjsKPiAtCj4gLQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKSB7Cj4g LQkJdGdsX2RjM2NvX2ZsdXNoKGRldl9wcml2LCBmcm9udGJ1ZmZlcl9iaXRzLCBvcmlnaW4pOwo+ IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Owo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsKPiAtCQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Cj4gLQkJcmV0dXJuOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOwo+ICsKPiArCWZvcl9lYWNo X2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7Cj4gKwkJaW50ZWxfZHAgPSBlbmNf dG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4gKwo+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVM X09VVFBVVF9FRFAgJiYgQ0FOX1BTUihpbnRlbF9kcCkpIHsKPiArCQkJaWYgKG9yaWdpbiA9PSBP UklHSU5fRkxJUCkgewo+ICsJCQkJdGdsX2RjM2NvX2ZsdXNoKGludGVsX2RwLCBmcm9udGJ1ZmZl cl9iaXRzLCBvcmlnaW4pOwo+ICsJCQkJY29udGludWU7Cj4gKwkJCX0KPiArCj4gKwkJCW11dGV4 X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gKwkJCWlmICghaW50ZWxfZHAtPnBzci5lbmFi bGVkKSB7Cj4gKwkJCQltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gKwkJCQlj b250aW51ZTsKPiArCQkJfQo+ICsKPiArCQkJZnJvbnRidWZmZXJfYml0cyAmPSBJTlRFTF9GUk9O VEJVRkZFUl9BTExfTUFTSyhpbnRlbF9kcC0+cHNyLnBpcGUpOwo+ICsJCQlpbnRlbF9kcC0+cHNy LmJ1c3lfZnJvbnRidWZmZXJfYml0cyAmPSB+ZnJvbnRidWZmZXJfYml0czsKPiArCj4gKwkJCS8q IEJ5IGRlZmluaXRpb24gZmx1c2ggPSBpbnZhbGlkYXRlICsgZmx1c2ggKi8KPiArCQkJaWYgKGZy b250YnVmZmVyX2JpdHMpCj4gKwkJCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChpbnRlbF9k cCk7Cj4gKwo+ICsJCQlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYmICFpbnRlbF9kcC0+cHNy LmJ1c3lfZnJvbnRidWZmZXJfYml0cykKPiArCQkJCXNjaGVkdWxlX3dvcmsoJmludGVsX2RwLT5w c3Iud29yayk7Cj4gKwkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiArCQl9 Cj4gIAl9Cj4gLQo+IC0JZnJvbnRidWZmZXJfYml0cyAmPSBJTlRFTF9GUk9OVEJVRkZFUl9BTExf TUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpOwo+IC0JZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVm ZmVyX2JpdHMgJj0gfmZyb250YnVmZmVyX2JpdHM7Cj4gLQo+IC0JLyogQnkgZGVmaW5pdGlvbiBm bHVzaCA9IGludmFsaWRhdGUgKyBmbHVzaCAqLwo+IC0JaWYgKGZyb250YnVmZmVyX2JpdHMpCj4g LQkJcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoZGV2X3ByaXYpOwo+IC0KPiAtCWlmICghZGV2 X3ByaXYtPnBzci5hY3RpdmUgJiYgIWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRz KQo+IC0JCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5wc3Iud29yayk7Cj4gLQltdXRleF91bmxv Y2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gIH0KPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9wc3Jf aW5pdCAtIEluaXQgYmFzaWMgUFNSIHdvcmsgYW5kIG11dGV4Lgo+IC0gKiBAZGV2X3ByaXY6IGk5 MTUgZGV2aWNlIHByaXZhdGUKPiArICogQGludGVsX2RwOiBJbnRlbCBEUAo+ICAgKgo+IC0gKiBU aGlzIGZ1bmN0aW9uIGlzICBjYWxsZWQgb25seSBvbmNlIGF0IGRyaXZlciBsb2FkIHRvIGluaXRp YWxpemUgYmFzaWMKPiAtICogUFNSIHN0dWZmLgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZCBhZnRlciB0aGUgaW5pdGlhbGl6aW5nIGNvbm5lY3Rvci4KPiArICogKHRoZSBpbml0aWFsaXpp bmcgb2YgY29ubmVjdG9yIHRyZWF0cyB0aGUgaGFuZGxpbmcgb2YgY29ubmVjdG9yIGNhcGFiaWxp dGllcykKPiArICogQW5kIGl0IGluaXRpYWxpemVzIGJhc2ljIFBTUiBzdHVmZiBmb3IgZWFjaCBE UCBFbmNvZGVyLgo+ICAgKi8KPiAtdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gKwo+ICAJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiAg CQlyZXR1cm47Cj4gIAo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKPiArCWlm ICghaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmIChJ U19IQVNXRUxMKGRldl9wcml2KSkKPiBAQCAtMTcxNSwxNCArMTc1NSwxNCBAQCB2b2lkIGludGVs X3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIFNldCBs aW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwo+ICAJaWYgKElTX0hBU1dFTEwoZGV2 X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJLyogSFNXIGFuZCBCRFcgcmVx dWlyZSB3b3JrYXJvdW5kcyB0aGF0IHdlIGRvbid0IGltcGxlbWVudC4gKi8KPiAtCQlkZXZfcHJp di0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOwo+ICsJCWludGVsX2RwLT5wc3IubGlua19zdGFu ZGJ5ID0gZmFsc2U7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTIpCj4gIAkJ LyogRm9yIG5ldyBwbGF0Zm9ybXMgdXAgdG8gVEdMIGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdh aW4gKi8KPiAtCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGRldl9wcml2LT52YnQucHNy LmZ1bGxfbGluazsKPiArCQlpbnRlbF9kcC0+cHNyLmxpbmtfc3RhbmRieSA9IGRldl9wcml2LT52 YnQucHNyLmZ1bGxfbGluazsKPiAgCj4gLQlJTklUX1dPUksoJmRldl9wcml2LT5wc3Iud29yaywg aW50ZWxfcHNyX3dvcmspOwo+IC0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5wc3IuZGMz Y29fd29yaywgdGdsX2RjM2NvX2Rpc2FibGVfd29yayk7Cj4gLQltdXRleF9pbml0KCZkZXZfcHJp di0+cHNyLmxvY2spOwo+ICsJSU5JVF9XT1JLKCZpbnRlbF9kcC0+cHNyLndvcmssIGludGVsX3Bz cl93b3JrKTsKPiArCUlOSVRfREVMQVlFRF9XT1JLKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmss IHRnbF9kYzNjb19kaXNhYmxlX3dvcmspOwo+ICsJbXV0ZXhfaW5pdCgmaW50ZWxfZHAtPnBzci5s b2NrKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBwc3JfZ2V0X3N0YXR1c19hbmRfZXJyb3Jfc3Rh dHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gQEAgLTE3NDgsNyArMTc4OCw3IEBAIHN0 YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxf ZHApOwo+ICAJc3RydWN0IGRybV9kcF9hdXggKmF1eCA9ICZpbnRlbF9kcC0+YXV4Owo+IC0Jc3Ry dWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKPiArCXN0cnVjdCBpbnRlbF9wc3Ig KnBzciA9ICZpbnRlbF9kcC0+cHNyOwo+ICAJdTggdmFsOwo+ICAJaW50IHI7Cj4gIAo+IEBAIC0x Nzc1LDcgKzE4MTUsNyBAQCBzdGF0aWMgdm9pZCBwc3JfYWxwbV9jaGVjayhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+ICBzdGF0aWMgdm9pZCBwc3JfY2FwYWJpbGl0eV9jaGFuZ2VkX2NoZWNr KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+IC0Jc3RydWN0IGk5MTVfcHNy ICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRl bF9kcC0+cHNyOwo+ICAJdTggdmFsOwo+ICAJaW50IHI7Cj4gIAo+IEBAIC0xNzk5LDE4ICsxODM5 LDE4IEBAIHN0YXRpYyB2b2lkIHBzcl9jYXBhYmlsaXR5X2NoYW5nZWRfY2hlY2soc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZk ZXZfcHJpdi0+cHNyOwo+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7 Cj4gIAl1OCBzdGF0dXMsIGVycm9yX3N0YXR1czsKPiAgCWNvbnN0IHU4IGVycm9ycyA9IERQX1BT Ul9SRkJfU1RPUkFHRV9FUlJPUiB8Cj4gIAkJCSAgRFBfUFNSX1ZTQ19TRFBfVU5DT1JSRUNUQUJM RV9FUlJPUiB8Cj4gIAkJCSAgRFBfUFNSX0xJTktfQ1JDX0VSUk9SOwo+ICAKPiAtCWlmICghQ0FO X1BTUihkZXZfcHJpdikgfHwgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCj4gKwlpZiAoIUNB Tl9QU1IoaW50ZWxfZHApIHx8ICFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQo+ICAJCXJldHVy bjsKPiAgCj4gIAltdXRleF9sb2NrKCZwc3ItPmxvY2spOwo+ICAKPiAtCWlmICghcHNyLT5lbmFi bGVkIHx8IHBzci0+ZHAgIT0gaW50ZWxfZHApCj4gKwlpZiAoIXBzci0+ZW5hYmxlZCkKPiAgCQln b3RvIGV4aXQ7Cj4gIAo+ICAJaWYgKHBzcl9nZXRfc3RhdHVzX2FuZF9lcnJvcl9zdGF0dXMoaW50 ZWxfZHAsICZzdGF0dXMsICZlcnJvcl9zdGF0dXMpKSB7Cj4gQEAgLTE4NTMsMTUgKzE4OTMsMTQg QEAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCj4gIGJvb2wgaW50ZWxfcHNyX2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShp bnRlbF9kcCk7Cj4gIAlib29sIHJldDsKPiAgCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8 ICFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQo+ICsJaWYgKCFDQU5fUFNSKGludGVsX2RwKSB8 fCAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAtCXJldCA9IChkZXZfcHJpdi0+cHNy LmRwID09IGludGVsX2RwICYmIGRldl9wcml2LT5wc3IuZW5hYmxlZCk7Cj4gLQltdXRleF91bmxv Y2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxv Y2spOwo+ICsJcmV0ID0gaW50ZWxfZHAtPnBzci5lbmFibGVkOwo+ICsJbXV0ZXhfdW5sb2NrKCZp bnRlbF9kcC0+cHNyLmxvY2spOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmgKPiBpbmRleCAwYTUxNzk3OGU4YWYuLjAzZWIx OTU0N2QwOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3Bzci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaAo+ IEBAIC0xOCw3ICsxOCw3IEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGU7Cj4gIHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZTsKPiAgc3RydWN0IGludGVsX3BsYW5lOwo+ICAKPiAtI2RlZmluZSBD QU5fUFNSKGRldl9wcml2KSAoSEFTX1BTUihkZXZfcHJpdikgJiYgZGV2X3ByaXYtPnBzci5zaW5r X3N1cHBvcnQpCj4gKyNkZWZpbmUgQ0FOX1BTUihpbnRlbF9kcCkgKEhBU19QU1IoZHBfdG9faTkx NShpbnRlbF9kcCkpICYmIGludGVsX2RwLT5wc3Iuc2lua19zdXBwb3J0KQo+ICB2b2lkIGludGVs X3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIHZvaWQgaW50ZWxf cHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCSAgICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IEBAIC0yOCwyNCArMjgsMjQgQEAg dm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICB2b2lk IGludGVsX3Bzcl91cGRhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCQkgICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICAgICBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7Cj4gLWludCBpbnRlbF9w c3JfZGVidWdfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHZhbHVl KTsKPiAraW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwg dTY0IHZhbHVlKTsKPiAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywKPiAg CQkJICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ICB2b2lkIGludGVsX3Bzcl9mbHVzaChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJICAgICB1bnNpZ25lZCBmcm9u dGJ1ZmZlcl9iaXRzLAo+ICAJCSAgICAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKTsKPiAtdm9p ZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2 b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ICB2b2lkIGlu dGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkg ICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gLXZvaWQgaW50ZWxf cHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBz cl9paXIpOwo+ICt2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCB1MzIgcHNyX2lpcik7Cj4gIHZvaWQgaW50ZWxfcHNyX3Nob3J0X3B1bHNlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+IC1pbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLAo+IC0JCQkgICAgdTMy ICpvdXRfdmFsdWUpOwo+ICt2b2lkIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7Cj4gIGJvb2wgaW50ZWxfcHNyX2Vu YWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIGludCBpbnRlbF9wc3IyX3NlbF9m ZXRjaF91cGRhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gLXZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21h bl90cmtfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAr dm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiArCQkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKTsKPiAgdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fcGxhbmVfc2VsX2ZldGNoKHN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIAkJCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRl LmMKPiBpbmRleCBiNmRlZWIzMzg0NzcuLmNjZDg2ZjE2ODM1NyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwo+IEBAIC05Miw3ICs5Miw2IEBAIHZv aWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlKQo+ICAJYm9vbCBuZWVkX3Zsdl9kc2lfd2EgPSAoSVNfVkFMTEVZVklF VyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpICYmCj4gIAkJaW50ZWxfY3J0 Y19oYXNfdHlwZShuZXdfY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0RTSSk7Cj4gIAlERUZJTkVf V0FJVCh3YWl0KTsKPiAtCXUzMiBwc3Jfc3RhdHVzOwo+ICAKPiAgCWlmIChuZXdfY3J0Y19zdGF0 ZS0+dWFwaS5hc3luY19mbGlwKQo+ICAJCXJldHVybjsKPiBAQCAtMTE3LDEwICsxMTYsNyBAQCB2 b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpuZXdfY3J0Y19zdGF0ZSkKPiAgCSAqIFZCTCBpbnRlcnJ1cHRzIHdpbGwgc3RhcnQgdGhlIFBT UiBleGl0IGFuZCBwcmV2ZW50IGEgUFNSCj4gIAkgKiByZS1lbnRyeSBhcyB3ZWxsLgo+ICAJICov Cj4gLQlpZiAoaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUobmV3X2NydGNfc3RhdGUsICZwc3Jfc3Rh dHVzKSkKPiAtCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+IC0JCQkiUFNSIGlkbGUgdGltZWQg b3V0IDB4JXgsIGF0b21pYyB1cGRhdGUgbWF5IGZhaWxcbiIsCj4gLQkJCXBzcl9zdGF0dXMpOwo+ ICsJaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUobmV3X2NydGNfc3RhdGUpOwo+ICAKPiAgCWxvY2Fs X2lycV9kaXNhYmxlKCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDE1YmU4 ZGViYWU1NC4uNWE0MDI5NTI2MGMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAg LTQ3NSw0MiArNDc1LDYgQEAgc3RydWN0IGk5MTVfZHJycyB7Cj4gIAllbnVtIGRycnNfc3VwcG9y dF90eXBlIHR5cGU7Cj4gIH07Cj4gIAo+IC1zdHJ1Y3QgaTkxNV9wc3Igewo+IC0Jc3RydWN0IG11 dGV4IGxvY2s7Cj4gLQo+IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSwkweDBmCj4g LSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfREVGQVVMVAkJMHgwMAo+IC0jZGVmaW5lIEk5MTVfUFNS X0RFQlVHX0RJU0FCTEUJCTB4MDEKPiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19FTkFCTEUJCTB4 MDIKPiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19GT1JDRV9QU1IxCTB4MDMKPiAtI2RlZmluZSBJ OTE1X1BTUl9ERUJVR19JUlEJCTB4MTAKPiAtCj4gLQl1MzIgZGVidWc7Cj4gLQlib29sIHNpbmtf c3VwcG9ydDsKPiAtCWJvb2wgZW5hYmxlZDsKPiAtCXN0cnVjdCBpbnRlbF9kcCAqZHA7Cj4gLQll bnVtIHBpcGUgcGlwZTsKPiAtCWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyOwo+IC0JYm9vbCBh Y3RpdmU7Cj4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiAtCXVuc2lnbmVkIGJ1c3lfZnJv bnRidWZmZXJfYml0czsKPiAtCWJvb2wgc2lua19wc3IyX3N1cHBvcnQ7Cj4gLQlib29sIGxpbmtf c3RhbmRieTsKPiAtCWJvb2wgY29sb3JpbWV0cnlfc3VwcG9ydDsKPiAtCWJvb2wgcHNyMl9lbmFi bGVkOwo+IC0JYm9vbCBwc3IyX3NlbF9mZXRjaF9lbmFibGVkOwo+IC0JdTggc2lua19zeW5jX2xh dGVuY3k7Cj4gLQlrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsKPiAtCWt0aW1lX3QgbGFzdF9l eGl0Owo+IC0JYm9vbCBzaW5rX25vdF9yZWxpYWJsZTsKPiAtCWJvb2wgaXJxX2F1eF9lcnJvcjsK PiAtCXUxNiBzdV94X2dyYW51bGFyaXR5Owo+IC0JYm9vbCBkYzNjb19lbmFibGVkOwo+IC0JdTMy IGRjM2NvX2V4aXRfZGVsYXk7Cj4gLQlzdHJ1Y3QgZGVsYXllZF93b3JrIGRjM2NvX3dvcms7Cj4g LQlzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgdnNjOwo+IC19Owo+IC0KPiAgI2RlZmluZSBRVUlSS19M VkRTX1NTQ19ESVNBQkxFICgxPDwxKQo+ICAjZGVmaW5lIFFVSVJLX0lOVkVSVF9CUklHSFRORVNT ICgxPDwyKQo+ICAjZGVmaW5lIFFVSVJLX0JBQ0tMSUdIVF9QUkVTRU5UICgxPDwzKQo+IEBAIC0x MDQxLDggKzEwMDUsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAo+ICAJc3RydWN0 IGk5MTVfcG93ZXJfZG9tYWlucyBwb3dlcl9kb21haW5zOwo+ICAKPiAtCXN0cnVjdCBpOTE1X3Bz ciBwc3I7Cj4gLQo+ICAJc3RydWN0IGk5MTVfZ3B1X2Vycm9yIGdwdV9lcnJvcjsKPiAgCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdmx2X3BjdHg7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCj4gaW5kZXggZTBlYjMyYmQ5NjA3Li42ZDQzMjk4YzQ2ZGQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMKPiBAQCAtMjA1NywxMCArMjA1NywyMCBAQCBzdGF0aWMgdm9pZCBpdmJfZGlz cGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ aXZiX2Vycl9pbnRfaGFuZGxlcihkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKGRlX2lpciAmIERFX0VE UF9QU1JfSU5UX0hTVykgewo+IC0JCXUzMiBwc3JfaWlyID0gSTkxNV9SRUFEKEVEUF9QU1JfSUlS KTsKPiArCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAgCj4gLQkJaW50ZWxfcHNy X2lycV9oYW5kbGVyKGRldl9wcml2LCBwc3JfaWlyKTsKPiAtCQlJOTE1X1dSSVRFKEVEUF9QU1Jf SUlSLCBwc3JfaWlyKTsKPiArCQlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5j b2Rlcikgewo+ICsJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2Rw KGVuY29kZXIpOwo+ICsKPiArCQkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VE UCAmJgo+ICsJCQkgICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsKPiArCQkJCXUzMiBwc3JfaWlyID0g STkxNV9SRUFEKEVEUF9QU1JfSUlSKTsKPiArCj4gKwkJCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIo aW50ZWxfZHAsIHBzcl9paXIpOwo+ICsJCQkJSTkxNV9XUklURShFRFBfUFNSX0lJUiwgcHNyX2lp cik7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsJCX0KPiAgCX0KPiAgCj4gIAlpZiAoZGVfaWly ICYgREVfQVVYX0NIQU5ORUxfQV9JVkIpCj4gQEAgLTIyNjgsMjEgKzIyNzgsMzQgQEAgZ2VuOF9k ZV9taXNjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMy IGlpcikKPiAgCX0KPiAgCj4gIAlpZiAoaWlyICYgR0VOOF9ERV9FRFBfUFNSKSB7Cj4gKwkJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAkJdTMyIHBzcl9paXI7Cj4gIAkJaTkxNV9y ZWdfdCBpaXJfcmVnOwo+ICAKPiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKPiAt CQkJaWlyX3JlZyA9IFRSQU5TX1BTUl9JSVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKPiAt CQllbHNlCj4gLQkJCWlpcl9yZWcgPSBFRFBfUFNSX0lJUjsKPiArCQlmb3JfZWFjaF9pbnRlbF9k cCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgewo+ICsJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICAKPiAtCQlwc3JfaWlyID0gSTkxNV9S RUFEKGlpcl9yZWcpOwo+IC0JCUk5MTVfV1JJVEUoaWlyX3JlZywgcHNyX2lpcik7Cj4gKwkJCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyICYmIENBTl9QU1IoaW50ZWxfZHApKSB7Cj4gKwkJ CQlpaXJfcmVnID0gVFJBTlNfUFNSX0lJUihpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOwo+ICsJ CQl9IGVsc2UgaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCAmJgo+ICsJCQkJ ICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsKPiArCQkJCWlpcl9yZWcgPSBFRFBfUFNSX0lJUjsKPiAr CQkJfSBlbHNlIHsKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQl9Cj4gKwo+ICsJCQlwc3JfaWlyID0g STkxNV9SRUFEKGlpcl9yZWcpOwo+ICsJCQlJOTE1X1dSSVRFKGlpcl9yZWcsIHBzcl9paXIpOwo+ ICsKPiArCQkJaWYgKHBzcl9paXIpCj4gKwkJCQlmb3VuZCA9IHRydWU7Cj4gIAo+IC0JCWlmIChw c3JfaWlyKQo+IC0JCQlmb3VuZCA9IHRydWU7Cj4gKwkJCWludGVsX3Bzcl9pcnFfaGFuZGxlcihp bnRlbF9kcCwgcHNyX2lpcik7Cj4gIAo+IC0JCWludGVsX3Bzcl9pcnFfaGFuZGxlcihkZXZfcHJp diwgcHNyX2lpcik7Cj4gKwkJCS8qIHByaW9yIEdFTjEyIG9ubHkgaGF2ZSBvbmUgRURQIFBTUiAq Lwo+ICsJCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDEyKQo+ICsJCQkJYnJlYWs7Cj4gKwkJ fQo+ICAJfQo+ICAKPiAgCWlmICghZm91bmQpCj4gLS0gCj4gMi4yNS4wCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=