From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D668C4361B for ; Wed, 9 Dec 2020 10:48:23 +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 B0B7F23B6C for ; Wed, 9 Dec 2020 10:48:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B0B7F23B6C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 32CDB6E152; Wed, 9 Dec 2020 10:48:22 +0000 (UTC) Received: from mail-oi1-x241.google.com (mail-oi1-x241.google.com [IPv6:2607:f8b0:4864:20::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF0066E152 for ; Wed, 9 Dec 2020 10:48:20 +0000 (UTC) Received: by mail-oi1-x241.google.com with SMTP id p126so1246412oif.7 for ; Wed, 09 Dec 2020 02:48:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=DWHFdxGGWdcG0a0NFPQdbmC0bsboH6onNiCLM6UJ//0=; b=dDlm8mAISp0kgglpzXZ7fjQeHP1JSzCH9W6t+fdYq6GKrmKXcIUoDjn2fbRrZutsj2 9hrNma75sX/B83dmcek39Z6t7Xjt0GlOy88aarinUM51LLJ9yYEFb7zTskt6rLlHRVMZ YraZxIJAXh2q7KwD2rAIhoxhLghEJwCT6Xdsg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=DWHFdxGGWdcG0a0NFPQdbmC0bsboH6onNiCLM6UJ//0=; b=sda2ic5JB08W6+wSSGMZaPi3tBLU74jWWpRGhfqkcKzop71uhgBsAaXAh4aBkitrg4 +Pg0yE81aPWeVEYZZx++4tV8WTB2HnsX3qW1V461iSdV3Ur5qh98G7Mj32hhp4RVXypK a0jVOp4BOL0LZOBtKpfjqUUcK+dgeigzdlBw2xOSkxPsW/Dr7/sOwArXwXBI8WVQbV1f jP142MR0oQz2u8UBEL+hzQhBjH+m7U9R4dklojQpCsHu58XEq3uGaGqN8ylS+g39xBtd asZbl2t2Fl4ORyF93+6QcNwikJt62ZPLItXyNj91+fq68KVfTJl1NJbRmaVJAYJErVL/ cUxg== X-Gm-Message-State: AOAM530qaMqQxdzVxM5Ku6/Ngmw9tprMJ1IhTsvTO1gAlw2OpafXXISd G81McbecTspHZkWjiMLImK8wEXjFxsU8jv7PKdop3w== X-Google-Smtp-Source: ABdhPJxYRx49BKIkEn8iAZ92CUmJYyWfmly1mqmTIdco9/vusFARZx0xXlcDJC5xeM94s3+bKW8bKhXdPxTmkVtcE/k= X-Received: by 2002:aca:4e11:: with SMTP id c17mr1229027oib.14.1607510899761; Wed, 09 Dec 2020 02:48:19 -0800 (PST) MIME-Version: 1.0 References: <20201209042144.2281-1-airlied@gmail.com> <20201209042144.2281-5-airlied@gmail.com> In-Reply-To: <20201209042144.2281-5-airlied@gmail.com> From: Daniel Vetter Date: Wed, 9 Dec 2020 11:48:08 +0100 Message-ID: To: Dave Airlie Subject: Re: [Intel-gfx] [PATCH 4/4] drm/i915: split fdi code out from intel_display.c 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gV2VkLCBEZWMgOSwgMjAyMCBhdCA1OjIyIEFNIERhdmUgQWlybGllIDxhaXJsaWVkQGdtYWls LmNvbT4gd3JvdGU6Cj4KPiBGcm9tOiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgo+ Cj4gVGhpcyBqdXN0IHJlZmFjdG9ycyBvdXQgdGhlIGZkaSBjb2RlIHRvIGEgc2VwYXJhdGUgZmls ZS4KPgo+IFNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CgpU aGVyZSdzIGFsc28gaHN3X2ZkaV9saW5rX3RyYWluIGZyb20gaW50ZWxfZGRpLmMgKGFub3RoZXIg ZmFpcmx5IGJpZwpmaWxlKSwgSSB0aGluayB0aGF0IGFsc28gYmVsb25ncyBpbiBoZXJlLiBJdCdz IG5vdCBpbiB0aGUgdnRhYmxlCmJlY2F1c2UgaXQncyBkaXJlY3RseSBjYWxsZWQgZnJvbSB0aGUg aHN3IGNydCBlbmNvZGVyLiBXaXRoIHRoYXQgdGhpcwpsb29rcyByZWFzb25hYmxlIHRvIG1lLgot RGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYyAgfCA2ODQgKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5oICB8ICAxMCArCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAgOSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZmRpLmMgICAgICB8IDY4MiArKysrKysrKysrKysrKysrKwo+ICA1IGZpbGVz IGNoYW5nZWQsIDcwNCBpbnNlcnRpb25zKCspLCA2ODIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZkaS5jCj4KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDhiMzU3YzIxMmFlMi4uZjc0YjdjMTNmZmJkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMjA2LDYgKzIwNiw3IEBAIGk5MTUteSArPSBcCj4g ICAgICAgICBkaXNwbGF5L2ludGVsX2RwbGxfbWdyLm8gXAo+ICAgICAgICAgZGlzcGxheS9pbnRl bF9kc2IubyBcCj4gICAgICAgICBkaXNwbGF5L2ludGVsX2ZiYy5vIFwKPiArICAgICAgIGRpc3Bs YXkvaW50ZWxfZmRpLm8gXAo+ICAgICAgICAgZGlzcGxheS9pbnRlbF9maWZvX3VuZGVycnVuLm8g XAo+ICAgICAgICAgZGlzcGxheS9pbnRlbF9mcm9udGJ1ZmZlci5vIFwKPiAgICAgICAgIGRpc3Bs YXkvaW50ZWxfZ2xvYmFsX3N0YXRlLm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNzg4YjFkZWY2MWVlLi41MTE5YTAwNDBlMzYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IEBA IC0xNzAsMTYgKzE3MCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jemNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAgICAgICAgICAgICAgIGRldl9wcml2LT5j emNsa19mcmVxKTsKPiAgfQo+Cj4gLS8qIHVuaXRzIG9mIDEwME1IeiAqLwo+IC1zdGF0aWMgdTMy IGludGVsX2ZkaV9saW5rX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCj4gLXsKPiAtICAgICAgIGlmIChIQVNfRERJKGRldl9wcml2KSkK PiAtICAgICAgICAgICAgICAgcmV0dXJuIHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrOyAvKiBTUExM ICovCj4gLSAgICAgICBlbHNlCj4gLSAgICAgICAgICAgICAgIHJldHVybiBkZXZfcHJpdi0+ZmRp X3BsbF9mcmVxOwo+IC19Cj4gLQo+ICAvKiBXQSBEaXNwbGF5ICMwODI3OiBHZW45OmFsbCAqLwo+ ICBzdGF0aWMgdm9pZAo+ICBza2xfd2FfODI3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUsIGJvb2wgZW5hYmxlKQo+IEBAIC0zNzc2LDUzMiArMzc2Niw2 IEBAIHN0YXRpYyB2b2lkIGljbF9zZXRfcGlwZV9jaGlja2VuKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQo+ICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBJUEVfQ0hJQ0tFTihwaXBl KSwgdG1wKTsKPiAgfQo+Cj4gLXN0YXRpYyB2b2lkIGludGVsX2ZkaV9ub3JtYWxfdHJhaW4oc3Ry dWN0IGludGVsX2NydGMgKmNydGMpCj4gLXsKPiAtICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAtICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtICAgICAgIGVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKPiAtICAgICAgIGk5MTVfcmVnX3QgcmVnOwo+IC0gICAgICAgdTMyIHRlbXA7Cj4gLQo+ IC0gICAgICAgLyogZW5hYmxlIG5vcm1hbCB0cmFpbiAqLwo+IC0gICAgICAgcmVnID0gRkRJX1RY X0NUTChwaXBlKTsKPiAtICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcp Owo+IC0gICAgICAgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpIHsKPiAtICAgICAgICAgICAg ICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORV9JVkI7Cj4gLSAgICAgICAgICAgICAgIHRl bXAgfD0gRkRJX0xJTktfVFJBSU5fTk9ORV9JVkIgfCBGRElfVFhfRU5IQU5DRV9GUkFNRV9FTkFC TEU7Cj4gLSAgICAgICB9IGVsc2Ugewo+IC0gICAgICAgICAgICAgICB0ZW1wICY9IH5GRElfTElO S19UUkFJTl9OT05FOwo+IC0gICAgICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX05P TkUgfCBGRElfVFhfRU5IQU5DRV9GUkFNRV9FTkFCTEU7Cj4gLSAgICAgICB9Cj4gLSAgICAgICBp bnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsKPiAtCj4gLSAgICAgICByZWcgPSBG RElfUlhfQ1RMKHBpcGUpOwo+IC0gICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYs IHJlZyk7Cj4gLSAgICAgICBpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpKSB7Cj4gLSAgICAgICAg ICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1BBVFRFUk5fTUFTS19DUFQ7Cj4gLSAgICAg ICAgICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fTk9STUFMX0NQVDsKPiAtICAgICAgIH0g ZWxzZSB7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05PTkU7Cj4g LSAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fTk9ORTsKPiAtICAgICAgIH0K PiAtICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBGRElfUlhfRU5I QU5DRV9GUkFNRV9FTkFCTEUpOwo+IC0KPiAtICAgICAgIC8qIHdhaXQgb25lIGlkbGUgcGF0dGVy biB0aW1lICovCj4gLSAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7 Cj4gLSAgICAgICB1ZGVsYXkoMTAwMCk7Cj4gLQo+IC0gICAgICAgLyogSVZCIHdhbnRzIGVycm9y IGNvcnJlY3Rpb24gZW5hYmxlZCAqLwo+IC0gICAgICAgaWYgKElTX0lWWUJSSURHRShkZXZfcHJp dikpCj4gLSAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZykg fCBGRElfRlNfRVJSQ19FTkFCTEUgfCBGRElfRkVfRVJSQ19FTkFCTEUpOwo+IC19Cj4gLQo+IC0v KiBUaGUgRkRJIGxpbmsgdHJhaW5pbmcgZnVuY3Rpb25zIGZvciBJTEsvSWJleHBlYWsuICovCj4g LXN0YXRpYyB2b2lkIGlsa19mZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gLXsKPiAtICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKPiAtICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtICAgICAgIGVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiAtICAgICAgIGk5MTVfcmVnX3QgcmVnOwo+IC0gICAgICAgdTMyIHRlbXAsIHRyaWVzOwo+ IC0KPiAtICAgICAgIC8qIEZESSBuZWVkcyBiaXRzIGZyb20gcGlwZSBmaXJzdCAqLwo+IC0gICAg ICAgYXNzZXJ0X3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29k ZXIpOwo+IC0KPiAtICAgICAgIC8qIFRyYWluIDE6IHVtYXNrIEZESSBSWCBJbnRlcnJ1cHQgc3lt Ym9sX2xvY2sgYW5kIGJpdF9sb2NrIGJpdAo+IC0gICAgICAgICAgZm9yIHRyYWluIHJlc3VsdCAq Lwo+IC0gICAgICAgcmVnID0gRkRJX1JYX0lNUihwaXBlKTsKPiAtICAgICAgIHRlbXAgPSBpbnRl bF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+IC0gICAgICAgdGVtcCAmPSB+RkRJX1JYX1NZTUJP TF9MT0NLOwo+IC0gICAgICAgdGVtcCAmPSB+RkRJX1JYX0JJVF9MT0NLOwo+IC0gICAgICAgaW50 ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gLSAgICAgICBpbnRlbF9kZV9yZWFk KGRldl9wcml2LCByZWcpOwo+IC0gICAgICAgdWRlbGF5KDE1MCk7Cj4gLQo+IC0gICAgICAgLyog ZW5hYmxlIENQVSBGREkgVFggYW5kIFBDSCBGREkgUlggKi8KPiAtICAgICAgIHJlZyA9IEZESV9U WF9DVEwocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVn KTsKPiAtICAgICAgIHRlbXAgJj0gfkZESV9EUF9QT1JUX1dJRFRIX01BU0s7Cj4gLSAgICAgICB0 ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRIKGNydGNfc3RhdGUtPmZkaV9sYW5lcyk7Cj4gLSAgICAg ICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9OT05FOwo+IC0gICAgICAgdGVtcCB8PSBGRElfTElO S19UUkFJTl9QQVRURVJOXzE7Cj4gLSAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVn LCB0ZW1wIHwgRkRJX1RYX0VOQUJMRSk7Cj4gLQo+IC0gICAgICAgcmVnID0gRkRJX1JYX0NUTChw aXBlKTsKPiAtICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+IC0g ICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORTsKPiAtICAgICAgIHRlbXAgfD0gRkRJ X0xJTktfVFJBSU5fUEFUVEVSTl8xOwo+IC0gICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYs IHJlZywgdGVtcCB8IEZESV9SWF9FTkFCTEUpOwo+IC0KPiAtICAgICAgIGludGVsX2RlX3Bvc3Rp bmdfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHVkZWxheSgxNTApOwo+IC0KPiAtICAg ICAgIC8qIElyb25sYWtlIHdvcmthcm91bmQsIGVuYWJsZSBjbG9jayBwb2ludGVyIGFmdGVyIEZE SSBlbmFibGUqLwo+IC0gICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEZESV9SWF9DSElD S0VOKHBpcGUpLAo+IC0gICAgICAgICAgICAgICAgICAgICAgRkRJX1JYX1BIQVNFX1NZTkNfUE9J TlRFUl9PVlIpOwo+IC0gICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEZESV9SWF9DSElD S0VOKHBpcGUpLAo+IC0gICAgICAgICAgICAgICAgICAgICAgRkRJX1JYX1BIQVNFX1NZTkNfUE9J TlRFUl9PVlIgfCBGRElfUlhfUEhBU0VfU1lOQ19QT0lOVEVSX0VOKTsKPiAtCj4gLSAgICAgICBy ZWcgPSBGRElfUlhfSUlSKHBpcGUpOwo+IC0gICAgICAgZm9yICh0cmllcyA9IDA7IHRyaWVzIDwg NTsgdHJpZXMrKykgewo+IC0gICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgcmVnKTsKPiAtICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0s ICJGRElfUlhfSUlSIDB4JXhcbiIsIHRlbXApOwo+IC0KPiAtICAgICAgICAgICAgICAgaWYgKCh0 ZW1wICYgRkRJX1JYX0JJVF9MT0NLKSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIGRybV9k Ymdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRkRJIHRyYWluIDEgZG9uZS5cbiIpOwo+IC0gICAgICAg ICAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBGRElf UlhfQklUX0xPQ0spOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAg ICAgICAgICB9Cj4gLSAgICAgICB9Cj4gLSAgICAgICBpZiAodHJpZXMgPT0gNSkKPiAtICAgICAg ICAgICAgICAgZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIkZESSB0cmFpbiAxIGZhaWwhXG4iKTsK PiAtCj4gLSAgICAgICAvKiBUcmFpbiAyICovCj4gLSAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBp cGUpOwo+IC0gICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAg ICAgICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9OT05FOwo+IC0gICAgICAgdGVtcCB8PSBGRElf TElOS19UUkFJTl9QQVRURVJOXzI7Cj4gLSAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwg cmVnLCB0ZW1wKTsKPiAtCj4gLSAgICAgICByZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+IC0gICAg ICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICB0ZW1wICY9 IH5GRElfTElOS19UUkFJTl9OT05FOwo+IC0gICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl9Q QVRURVJOXzI7Cj4gLSAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsK PiAtCj4gLSAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAg ICAgICB1ZGVsYXkoMTUwKTsKPiAtCj4gLSAgICAgICByZWcgPSBGRElfUlhfSUlSKHBpcGUpOwo+ IC0gICAgICAgZm9yICh0cmllcyA9IDA7IHRyaWVzIDwgNTsgdHJpZXMrKykgewo+IC0gICAgICAg ICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgICAg ICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJGRElfUlhfSUlSIDB4JXhcbiIsIHRl bXApOwo+IC0KPiAtICAgICAgICAgICAgICAgaWYgKHRlbXAgJiBGRElfUlhfU1lNQk9MX0xPQ0sp IHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVn LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgfCBGRElfUlhf U1lNQk9MX0xPQ0spOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIGRybV9kYmdfa21zKCZkZXZf cHJpdi0+ZHJtLCAiRkRJIHRyYWluIDIgZG9uZS5cbiIpOwo+IC0gICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwo+IC0gICAgICAgICAgICAgICB9Cj4gLSAgICAgICB9Cj4gLSAgICAgICBpZiAo dHJpZXMgPT0gNSkKPiAtICAgICAgICAgICAgICAgZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIkZE SSB0cmFpbiAyIGZhaWwhXG4iKTsKPiAtCj4gLSAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYt PmRybSwgIkZESSB0cmFpbiBkb25lXG4iKTsKPiAtCj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBp bnQgc25iX2JfZmRpX3RyYWluX3BhcmFtW10gPSB7Cj4gLSAgICAgICBGRElfTElOS19UUkFJTl80 MDBNVl8wREJfU05CX0IsCj4gLSAgICAgICBGRElfTElOS19UUkFJTl80MDBNVl82REJfU05CX0Is Cj4gLSAgICAgICBGRElfTElOS19UUkFJTl82MDBNVl8zXzVEQl9TTkJfQiwKPiAtICAgICAgIEZE SV9MSU5LX1RSQUlOXzgwME1WXzBEQl9TTkJfQiwKPiAtfTsKPiAtCj4gLS8qIFRoZSBGREkgbGlu ayB0cmFpbmluZyBmdW5jdGlvbnMgZm9yIFNOQi9Db3VnYXJwb2ludC4gKi8KPiAtc3RhdGljIHZv aWQgZ2VuNl9mZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+IC17Cj4gLSAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Cj4gLSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4gLSAgICAgICBlbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gLSAg ICAgICBpOTE1X3JlZ190IHJlZzsKPiAtICAgICAgIHUzMiB0ZW1wLCBpLCByZXRyeTsKPiAtCj4g LSAgICAgICAvKiBUcmFpbiAxOiB1bWFzayBGREkgUlggSW50ZXJydXB0IHN5bWJvbF9sb2NrIGFu ZCBiaXRfbG9jayBiaXQKPiAtICAgICAgICAgIGZvciB0cmFpbiByZXN1bHQgKi8KPiAtICAgICAg IHJlZyA9IEZESV9SWF9JTVIocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHRlbXAgJj0gfkZESV9SWF9TWU1CT0xfTE9DSzsKPiAt ICAgICAgIHRlbXAgJj0gfkZESV9SWF9CSVRfTE9DSzsKPiAtICAgICAgIGludGVsX2RlX3dyaXRl KGRldl9wcml2LCByZWcsIHRlbXApOwo+IC0KPiAtICAgICAgIGludGVsX2RlX3Bvc3RpbmdfcmVh ZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHVkZWxheSgxNTApOwo+IC0KPiAtICAgICAgIC8q IGVuYWJsZSBDUFUgRkRJIFRYIGFuZCBQQ0ggRkRJIFJYICovCj4gLSAgICAgICByZWcgPSBGRElf VFhfQ1RMKHBpcGUpOwo+IC0gICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJl Zyk7Cj4gLSAgICAgICB0ZW1wICY9IH5GRElfRFBfUE9SVF9XSURUSF9NQVNLOwo+IC0gICAgICAg dGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChjcnRjX3N0YXRlLT5mZGlfbGFuZXMpOwo+IC0gICAg ICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORTsKPiAtICAgICAgIHRlbXAgfD0gRkRJX0xJ TktfVFJBSU5fUEFUVEVSTl8xOwo+IC0gICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fVk9M X0VNUF9NQVNLOwo+IC0gICAgICAgLyogU05CLUIgKi8KPiAtICAgICAgIHRlbXAgfD0gRkRJX0xJ TktfVFJBSU5fNDAwTVZfMERCX1NOQl9COwo+IC0gICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsIHJlZywgdGVtcCB8IEZESV9UWF9FTkFCTEUpOwo+IC0KPiAtICAgICAgIGludGVsX2RlX3dy aXRlKGRldl9wcml2LCBGRElfUlhfTUlTQyhwaXBlKSwKPiAtICAgICAgICAgICAgICAgICAgICAg IEZESV9SWF9UUDFfVE9fVFAyXzQ4IHwgRkRJX1JYX0ZESV9ERUxBWV85MCk7Cj4gLQo+IC0gICAg ICAgcmVnID0gRkRJX1JYX0NUTChwaXBlKTsKPiAtICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFk KGRldl9wcml2LCByZWcpOwo+IC0gICAgICAgaWYgKEhBU19QQ0hfQ1BUKGRldl9wcml2KSkgewo+ IC0gICAgICAgICAgICAgICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9QQVRURVJOX01BU0tfQ1BU Owo+IC0gICAgICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMV9DUFQ7 Cj4gLSAgICAgICB9IGVsc2Ugewo+IC0gICAgICAgICAgICAgICB0ZW1wICY9IH5GRElfTElOS19U UkFJTl9OT05FOwo+IC0gICAgICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRF Uk5fMTsKPiAtICAgICAgIH0KPiAtICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcs IHRlbXAgfCBGRElfUlhfRU5BQkxFKTsKPiAtCj4gLSAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3Jl YWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICB1ZGVsYXkoMTUwKTsKPiAtCj4gLSAgICAgICBm b3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgIHJlZyA9IEZESV9UWF9D VEwocGlwZSk7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2 LCByZWcpOwo+IC0gICAgICAgICAgICAgICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9WT0xfRU1Q X01BU0s7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgfD0gc25iX2JfZmRpX3RyYWluX3BhcmFtW2ld Owo+IC0gICAgICAgICAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsK PiAtCj4gLSAgICAgICAgICAgICAgIGludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgcmVn KTsKPiAtICAgICAgICAgICAgICAgdWRlbGF5KDUwMCk7Cj4gLQo+IC0gICAgICAgICAgICAgICBm b3IgKHJldHJ5ID0gMDsgcmV0cnkgPCA1OyByZXRyeSsrKSB7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgcmVnID0gRkRJX1JYX0lJUihwaXBlKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICB0 ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgICAgICAgICAgICAg ICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkZESV9SWF9JSVIgMHgleFxuIiwgdGVt cCk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgJiBGRElfUlhfQklUX0xPQ0sp IHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9w cml2LCByZWcsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZW1wIHwgRkRJX1JYX0JJVF9MT0NLKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkZESSB0cmFpbiAxIGRvbmUuXG4iKTsKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIH0K PiAtICAgICAgICAgICAgICAgICAgICAgICB1ZGVsYXkoNTApOwo+IC0gICAgICAgICAgICAgICB9 Cj4gLSAgICAgICAgICAgICAgIGlmIChyZXRyeSA8IDUpCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gLSAgICAgICB9Cj4gLSAgICAgICBpZiAoaSA9PSA0KQo+IC0gICAgICAgICAg ICAgICBkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLCAiRkRJIHRyYWluIDEgZmFpbCFcbiIpOwo+IC0K PiAtICAgICAgIC8qIFRyYWluIDIgKi8KPiAtICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7 Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAg IHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05PTkU7Cj4gLSAgICAgICB0ZW1wIHw9IEZESV9MSU5L X1RSQUlOX1BBVFRFUk5fMjsKPiAtICAgICAgIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4g LSAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1ZPTF9FTVBfTUFTSzsKPiAt ICAgICAgICAgICAgICAgLyogU05CLUIgKi8KPiAtICAgICAgICAgICAgICAgdGVtcCB8PSBGRElf TElOS19UUkFJTl80MDBNVl8wREJfU05CX0I7Cj4gLSAgICAgICB9Cj4gLSAgICAgICBpbnRlbF9k ZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsKPiAtCj4gLSAgICAgICByZWcgPSBGRElfUlhf Q1RMKHBpcGUpOwo+IC0gICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7 Cj4gLSAgICAgICBpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpKSB7Cj4gLSAgICAgICAgICAgICAg IHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1BBVFRFUk5fTUFTS19DUFQ7Cj4gLSAgICAgICAgICAg ICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8yX0NQVDsKPiAtICAgICAgIH0gZWxz ZSB7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05PTkU7Cj4gLSAg ICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8yOwo+IC0gICAgICAg fQo+IC0gICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gLQo+IC0g ICAgICAgaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCByZWcpOwo+IC0gICAgICAgdWRl bGF5KDE1MCk7Cj4gLQo+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+IC0gICAg ICAgICAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+IC0gICAgICAgICAgICAgICB0ZW1w ID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgICAgICAgICAgdGVtcCAm PSB+RkRJX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLOwo+IC0gICAgICAgICAgICAgICB0ZW1wIHw9 IHNuYl9iX2ZkaV90cmFpbl9wYXJhbVtpXTsKPiAtICAgICAgICAgICAgICAgaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gLQo+IC0gICAgICAgICAgICAgICBpbnRlbF9kZV9w b3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICAgICAgICAgIHVkZWxheSg1MDAp Owo+IC0KPiAtICAgICAgICAgICAgICAgZm9yIChyZXRyeSA9IDA7IHJldHJ5IDwgNTsgcmV0cnkr Kykgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IEZESV9SWF9JSVIocGlwZSk7Cj4g LSAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJl Zyk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0s ICJGRElfUlhfSUlSIDB4JXhcbiIsIHRlbXApOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIGlm ICh0ZW1wICYgRkRJX1JYX1NZTUJPTF9MT0NLKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCB8IEZESV9SWF9TWU1CT0xfTE9DSyk7 Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYt PmRybSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGREkg dHJhaW4gMiBkb25lLlxuIik7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKPiAtICAgICAgICAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgICAgICAgICAg dWRlbGF5KDUwKTsKPiAtICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICBpZiAocmV0 cnkgPCA1KQo+IC0gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgfQo+IC0g ICAgICAgaWYgKGkgPT0gNCkKPiAtICAgICAgICAgICAgICAgZHJtX2VycigmZGV2X3ByaXYtPmRy bSwgIkZESSB0cmFpbiAyIGZhaWwhXG4iKTsKPiAtCj4gLSAgICAgICBkcm1fZGJnX2ttcygmZGV2 X3ByaXYtPmRybSwgIkZESSB0cmFpbiBkb25lLlxuIik7Cj4gLX0KPiAtCj4gLS8qIE1hbnVhbCBs aW5rIHRyYWluaW5nIGZvciBJdnkgQnJpZGdlIEEwIHBhcnRzICovCj4gLXN0YXRpYyB2b2lkIGl2 Yl9tYW51YWxfZmRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiAtewo+IC0gICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmJhc2UuZGV2Owo+IC0gICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+IC0gICAgICAgZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl Owo+IC0gICAgICAgaTkxNV9yZWdfdCByZWc7Cj4gLSAgICAgICB1MzIgdGVtcCwgaSwgajsKPiAt Cj4gLSAgICAgICAvKiBUcmFpbiAxOiB1bWFzayBGREkgUlggSW50ZXJydXB0IHN5bWJvbF9sb2Nr IGFuZCBiaXRfbG9jayBiaXQKPiAtICAgICAgICAgIGZvciB0cmFpbiByZXN1bHQgKi8KPiAtICAg ICAgIHJlZyA9IEZESV9SWF9JTVIocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVh ZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHRlbXAgJj0gfkZESV9SWF9TWU1CT0xfTE9DSzsK PiAtICAgICAgIHRlbXAgJj0gfkZESV9SWF9CSVRfTE9DSzsKPiAtICAgICAgIGludGVsX2RlX3dy aXRlKGRldl9wcml2LCByZWcsIHRlbXApOwo+IC0KPiAtICAgICAgIGludGVsX2RlX3Bvc3Rpbmdf cmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHVkZWxheSgxNTApOwo+IC0KPiAtICAgICAg IGRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRkRJX1JYX0lJUiBiZWZvcmUgbGluayB0cmFp biAweCV4XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwg RkRJX1JYX0lJUihwaXBlKSkpOwo+IC0KPiAtICAgICAgIC8qIFRyeSBlYWNoIHZzd2luZyBhbmQg cHJlZW1waGFzaXMgc2V0dGluZyB0d2ljZSBiZWZvcmUgbW92aW5nIG9uICovCj4gLSAgICAgICBm b3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShzbmJfYl9mZGlfdHJhaW5fcGFyYW0pICogMjsgaisr KSB7Cj4gLSAgICAgICAgICAgICAgIC8qIGRpc2FibGUgZmlyc3QgaW4gY2FzZSB3ZSBuZWVkIHRv IHJldHJ5ICovCj4gLSAgICAgICAgICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gLSAg ICAgICAgICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+IC0gICAg ICAgICAgICAgICB0ZW1wICY9IH4oRkRJX0xJTktfVFJBSU5fQVVUTyB8IEZESV9MSU5LX1RSQUlO X05PTkVfSVZCKTsKPiAtICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX1RYX0VOQUJMRTsKPiAt ICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gLQo+ IC0gICAgICAgICAgICAgICByZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+IC0gICAgICAgICAgICAg ICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgICAgICAgICAg dGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fQVVUTzsKPiAtICAgICAgICAgICAgICAgdGVtcCAmPSB+ RkRJX0xJTktfVFJBSU5fUEFUVEVSTl9NQVNLX0NQVDsKPiAtICAgICAgICAgICAgICAgdGVtcCAm PSB+RkRJX1JYX0VOQUJMRTsKPiAtICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsIHJlZywgdGVtcCk7Cj4gLQo+IC0gICAgICAgICAgICAgICAvKiBlbmFibGUgQ1BVIEZESSBU WCBhbmQgUENIIEZESSBSWCAqLwo+IC0gICAgICAgICAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBp cGUpOwo+IC0gICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVn KTsKPiAtICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPiAt ICAgICAgICAgICAgICAgdGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChjcnRjX3N0YXRlLT5mZGlf bGFuZXMpOwo+IC0gICAgICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5f MV9JVkI7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1ZPTF9FTVBf TUFTSzsKPiAtICAgICAgICAgICAgICAgdGVtcCB8PSBzbmJfYl9mZGlfdHJhaW5fcGFyYW1bai8y XTsKPiAtICAgICAgICAgICAgICAgdGVtcCB8PSBGRElfQ09NUE9TSVRFX1NZTkM7Cj4gLSAgICAg ICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBGRElfVFhfRU5B QkxFKTsKPiAtCj4gLSAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBGRElf UlhfTUlTQyhwaXBlKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRJX1JYX1RQ MV9UT19UUDJfNDggfCBGRElfUlhfRkRJX0RFTEFZXzkwKTsKPiAtCj4gLSAgICAgICAgICAgICAg IHJlZyA9IEZESV9SWF9DVEwocGlwZSk7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgPSBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCByZWcpOwo+IC0gICAgICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5L X1RSQUlOX1BBVFRFUk5fMV9DUFQ7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0NPTVBP U0lURV9TWU5DOwo+IC0gICAgICAgICAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVn LCB0ZW1wIHwgRkRJX1JYX0VOQUJMRSk7Cj4gLQo+IC0gICAgICAgICAgICAgICBpbnRlbF9kZV9w b3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICAgICAgICAgIHVkZWxheSgxKTsg Lyogc2hvdWxkIGJlIDAuNXVzICovCj4gLQo+IC0gICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBp IDwgNDsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gRkRJX1JYX0lJUihw aXBlKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgcmVnKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3By aXYtPmRybSwgIkZESV9SWF9JSVIgMHgleFxuIiwgdGVtcCk7Cj4gLQo+IC0gICAgICAgICAgICAg ICAgICAgICAgIGlmICh0ZW1wICYgRkRJX1JYX0JJVF9MT0NLIHx8Cj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpICYgRkRJX1JYX0JJVF9M T0NLKSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUo ZGV2X3ByaXYsIHJlZywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRlbXAgfCBGRElfUlhfQklUX0xPQ0spOwo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiRkRJIHRyYWluIDEgZG9uZSwgbGV2ZWwgJWkuXG4i LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7Cj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAgICAgICAg ICAgICB9Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgdWRlbGF5KDEpOyAvKiBzaG91bGQgYmUg MC41dXMgKi8KPiAtICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICBpZiAoaSA9PSA0 KSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0s Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZESSB0cmFpbiAxIGZhaWwg b24gdnN3aW5nICVkXG4iLCBqIC8gMik7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gLSAgICAgICAgICAgICAgIH0KPiAtCj4gLSAgICAgICAgICAgICAgIC8qIFRyYWluIDIg Ki8KPiAtICAgICAgICAgICAgICAgcmVnID0gRkRJX1RYX0NUTChwaXBlKTsKPiAtICAgICAgICAg ICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICAgICAg ICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05PTkVfSVZCOwo+IC0gICAgICAgICAgICAgICB0 ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMl9JVkI7Cj4gLSAgICAgICAgICAgICAgIGlu dGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXApOwo+IC0KPiAtICAgICAgICAgICAgICAg cmVnID0gRkRJX1JYX0NUTChwaXBlKTsKPiAtICAgICAgICAgICAgICAgdGVtcCA9IGludGVsX2Rl X3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5L X1RSQUlOX1BBVFRFUk5fTUFTS19DUFQ7Cj4gLSAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0xJ TktfVFJBSU5fUEFUVEVSTl8yX0NQVDsKPiAtICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUo ZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gLQo+IC0gICAgICAgICAgICAgICBpbnRlbF9kZV9wb3N0 aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICAgICAgICAgIHVkZWxheSgyKTsgLyog c2hvdWxkIGJlIDEuNXVzICovCj4gLQo+IC0gICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg NDsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gRkRJX1JYX0lJUihwaXBl KTsKPiAtICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJp diwgcmVnKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYt PmRybSwgIkZESV9SWF9JSVIgMHgleFxuIiwgdGVtcCk7Cj4gLQo+IC0gICAgICAgICAgICAgICAg ICAgICAgIGlmICh0ZW1wICYgRkRJX1JYX1NZTUJPTF9MT0NLIHx8Cj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpICYgRkRJX1JYX1NZTUJP TF9MT0NLKSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsIHJlZywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRlbXAgfCBGRElfUlhfU1lNQk9MX0xPQ0spOwo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkRJIHRyYWluIDIgZG9uZSwgbGV2ZWwg JWkuXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7 Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHRyYWluX2RvbmU7Cj4gLSAg ICAgICAgICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAgICAgICAgIHVkZWxheSgy KTsgLyogc2hvdWxkIGJlIDEuNXVzICovCj4gLSAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAg ICAgICAgaWYgKGkgPT0gNCkKPiAtICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygm ZGV2X3ByaXYtPmRybSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkRJ IHRyYWluIDIgZmFpbCBvbiB2c3dpbmcgJWRcbiIsIGogLyAyKTsKPiAtICAgICAgIH0KPiAtCj4g LXRyYWluX2RvbmU6Cj4gLSAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkZESSB0 cmFpbiBkb25lLlxuIik7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGlsa19mZGlfcGxsX2VuYWJs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAtewo+IC0gICAg ICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPnVhcGkuY3J0Yyk7Cj4gLSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGludGVsX2NydGMtPmJhc2UuZGV2KTsKPiAtICAgICAgIGVudW0gcGlwZSBw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtICAgICAgIGk5MTVfcmVnX3QgcmVnOwo+IC0gICAg ICAgdTMyIHRlbXA7Cj4gLQo+IC0gICAgICAgLyogZW5hYmxlIFBDSCBGREkgUlggUExMLCB3YWl0 IHdhcm11cCBwbHVzIERNSSBsYXRlbmN5ICovCj4gLSAgICAgICByZWcgPSBGRElfUlhfQ1RMKHBp cGUpOwo+IC0gICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAg ICAgICB0ZW1wICY9IH4oRkRJX0RQX1BPUlRfV0lEVEhfTUFTSyB8ICgweDcgPDwgMTYpKTsKPiAt ICAgICAgIHRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgoY3J0Y19zdGF0ZS0+ZmRpX2xhbmVzKTsK PiAtICAgICAgIHRlbXAgfD0gKGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIFBJUEVDT05GKHBpcGUp KSAmIFBJUEVDT05GX0JQQ19NQVNLKSA8PCAxMTsKPiAtICAgICAgIGludGVsX2RlX3dyaXRlKGRl dl9wcml2LCByZWcsIHRlbXAgfCBGRElfUlhfUExMX0VOQUJMRSk7Cj4gLQo+IC0gICAgICAgaW50 ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCByZWcpOwo+IC0gICAgICAgdWRlbGF5KDIwMCk7 Cj4gLQo+IC0gICAgICAgLyogU3dpdGNoIGZyb20gUmF3Y2xrIHRvIFBDRGNsayAqLwo+IC0gICAg ICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICBpbnRlbF9k ZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wIHwgRkRJX1BDRENMSyk7Cj4gLQo+IC0gICAgICAg aW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCByZWcpOwo+IC0gICAgICAgdWRlbGF5KDIw MCk7Cj4gLQo+IC0gICAgICAgLyogRW5hYmxlIENQVSBGREkgVFggUExMLCBhbHdheXMgb24gZm9y IElyb25sYWtlICovCj4gLSAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+IC0gICAgICAg dGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICBpZiAoKHRlbXAg JiBGRElfVFhfUExMX0VOQUJMRSkgPT0gMCkgewo+IC0gICAgICAgICAgICAgICBpbnRlbF9kZV93 cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wIHwgRkRJX1RYX1BMTF9FTkFCTEUpOwo+IC0KPiAtICAg ICAgICAgICAgICAgaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCByZWcpOwo+IC0gICAg ICAgICAgICAgICB1ZGVsYXkoMTAwKTsKPiAtICAgICAgIH0KPiAtfQo+IC0KPiAtc3RhdGljIHZv aWQgaWxrX2ZkaV9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAt ewo+IC0gICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2 Owo+IC0gICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+IC0gICAgICAgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0gICAg ICAgaTkxNV9yZWdfdCByZWc7Cj4gLSAgICAgICB1MzIgdGVtcDsKPiAtCj4gLSAgICAgICAvKiBT d2l0Y2ggZnJvbSBQQ0RjbGsgdG8gUmF3Y2xrICovCj4gLSAgICAgICByZWcgPSBGRElfUlhfQ1RM KHBpcGUpOwo+IC0gICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4g LSAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wICYgfkZESV9QQ0RDTEsp Owo+IC0KPiAtICAgICAgIC8qIERpc2FibGUgQ1BVIEZESSBUWCBQTEwgKi8KPiAtICAgICAgIHJl ZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgcmVnKTsKPiAtICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAg JiB+RkRJX1RYX1BMTF9FTkFCTEUpOwo+IC0KPiAtICAgICAgIGludGVsX2RlX3Bvc3RpbmdfcmVh ZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHVkZWxheSgxMDApOwo+IC0KPiAtICAgICAgIHJl ZyA9IEZESV9SWF9DVEwocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgcmVnKTsKPiAtICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAg JiB+RkRJX1JYX1BMTF9FTkFCTEUpOwo+IC0KPiAtICAgICAgIC8qIFdhaXQgZm9yIHRoZSBjbG9j a3MgdG8gdHVybiBvZmYuICovCj4gLSAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3By aXYsIHJlZyk7Cj4gLSAgICAgICB1ZGVsYXkoMTAwKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQg aWxrX2ZkaV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IC17Cj4gLSAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiAtICAgICAgIGVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAtICAgICAgIGk5MTVf cmVnX3QgcmVnOwo+IC0gICAgICAgdTMyIHRlbXA7Cj4gLQo+IC0gICAgICAgLyogZGlzYWJsZSBD UFUgRkRJIHR4IGFuZCBQQ0ggRkRJIHJ4ICovCj4gLSAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBp cGUpOwo+IC0gICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAg ICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wICYgfkZESV9UWF9FTkFCTEUp Owo+IC0gICAgICAgaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCByZWcpOwo+IC0KPiAt ICAgICAgIHJlZyA9IEZESV9SWF9DVEwocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVf cmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHRlbXAgJj0gfigweDcgPDwgMTYpOwo+IC0g ICAgICAgdGVtcCB8PSAoaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgUElQRUNPTkYocGlwZSkpICYg UElQRUNPTkZfQlBDX01BU0spIDw8IDExOwo+IC0gICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsIHJlZywgdGVtcCAmIH5GRElfUlhfRU5BQkxFKTsKPiAtCj4gLSAgICAgICBpbnRlbF9kZV9w b3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICB1ZGVsYXkoMTAwKTsKPiAtCj4g LSAgICAgICAvKiBJcm9ubGFrZSB3b3JrYXJvdW5kLCBkaXNhYmxlIGNsb2NrIHBvaW50ZXIgYWZ0 ZXIgZG93bmluZyBGREkgKi8KPiAtICAgICAgIGlmIChIQVNfUENIX0lCWChkZXZfcHJpdikpCj4g LSAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBGRElfUlhfQ0hJQ0tFTihw aXBlKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRJX1JYX1BIQVNFX1NZTkNf UE9JTlRFUl9PVlIpOwo+IC0KPiAtICAgICAgIC8qIHN0aWxsIHNldCB0cmFpbiBwYXR0ZXJuIDEg Ki8KPiAtICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50 ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RS QUlOX05PTkU7Cj4gLSAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMTsKPiAt ICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXApOwo+IC0KPiAtICAgICAg IHJlZyA9IEZESV9SWF9DVEwocGlwZSk7Cj4gLSAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwgcmVnKTsKPiAtICAgICAgIGlmIChIQVNfUENIX0NQVChkZXZfcHJpdikpIHsKPiAt ICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fUEFUVEVSTl9NQVNLX0NQVDsK PiAtICAgICAgICAgICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJOXzFfQ1BUOwo+ IC0gICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJB SU5fTk9ORTsKPiAtICAgICAgICAgICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJO XzE7Cj4gLSAgICAgICB9Cj4gLSAgICAgICAvKiBCUEMgaW4gRkRJIHJ4IGlzIGNvbnNpc3RlbnQg d2l0aCB0aGF0IGluIFBJUEVDT05GICovCj4gLSAgICAgICB0ZW1wICY9IH4oMHgwNyA8PCAxNik7 Cj4gLSAgICAgICB0ZW1wIHw9IChpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBQSVBFQ09ORihwaXBl KSkgJiBQSVBFQ09ORl9CUENfTUFTSykgPDwgMTE7Cj4gLSAgICAgICBpbnRlbF9kZV93cml0ZShk ZXZfcHJpdiwgcmVnLCB0ZW1wKTsKPiAtCj4gLSAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQo ZGV2X3ByaXYsIHJlZyk7Cj4gLSAgICAgICB1ZGVsYXkoMTAwKTsKPiAtfQo+IC0KPiAgYm9vbCBp bnRlbF9oYXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiBAQCAtNjcwOCwxNDMg KzYxNzIsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jb25uZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAgICAgICAgfQo+ICB9Cj4KPiAtc3Rh dGljIGludCBwaXBlX3JlcXVpcmVkX2ZkaV9sYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAtewo+IC0gICAgICAgaWYgKGNydGNfc3RhdGUtPmh3LmVuYWJsZSAmJiBj cnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCj4gLSAgICAgICAgICAgICAgIHJldHVybiBjcnRj X3N0YXRlLT5mZGlfbGFuZXM7Cj4gLQo+IC0gICAgICAgcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0 YXRpYyBpbnQgaWxrX2NoZWNrX2ZkaV9sYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVt IHBpcGUgcGlwZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+IC17Cj4gLSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLSAgICAgICBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+dWFwaS5zdGF0ZTsKPiAtICAgICAgIHN0 cnVjdCBpbnRlbF9jcnRjICpvdGhlcl9jcnRjOwo+IC0gICAgICAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm90aGVyX2NydGNfc3RhdGU7Cj4gLQo+IC0gICAgICAgZHJtX2RiZ19rbXMoJmRldl9w cml2LT5kcm0sCj4gLSAgICAgICAgICAgICAgICAgICAiY2hlY2tpbmcgZmRpIGNvbmZpZyBvbiBw aXBlICVjLCBsYW5lcyAlaVxuIiwKPiAtICAgICAgICAgICAgICAgICAgIHBpcGVfbmFtZShwaXBl KSwgcGlwZV9jb25maWctPmZkaV9sYW5lcyk7Cj4gLSAgICAgICBpZiAocGlwZV9jb25maWctPmZk aV9sYW5lcyA+IDQpIHsKPiAtICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5k cm0sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZkaSBsYW5lIGNvbmZp ZyBvbiBwaXBlICVjOiAlaSBsYW5lc1xuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg cGlwZV9uYW1lKHBpcGUpLCBwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzKTsKPiAtICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICB9Cj4gLQo+IC0gICAgICAgaWYgKElTX0hBU1dF TEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAtICAgICAgICAgICAg ICAgaWYgKHBpcGVfY29uZmlnLT5mZGlfbGFuZXMgPiAyKSB7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIm9ubHkgMiBsYW5lcyBvbiBoYXN3ZWxsLCByZXF1aXJlZDogJWkgbGFu ZXNcbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZV9jb25maWct PmZkaV9sYW5lcyk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g LSAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IDA7Cj4gLSAgICAgICAgICAgICAgIH0KPiAtICAgICAgIH0KPiAtCj4gLSAgICAgICBpZiAoSU5U RUxfTlVNX1BJUEVTKGRldl9wcml2KSA9PSAyKQo+IC0gICAgICAgICAgICAgICByZXR1cm4gMDsK PiAtCj4gLSAgICAgICAvKiBJdnlicmlkZ2UgMyBwaXBlIGlzIHJlYWxseSBjb21wbGljYXRlZCAq Lwo+IC0gICAgICAgc3dpdGNoIChwaXBlKSB7Cj4gLSAgICAgICBjYXNlIFBJUEVfQToKPiAtICAg ICAgICAgICAgICAgcmV0dXJuIDA7Cj4gLSAgICAgICBjYXNlIFBJUEVfQjoKPiAtICAgICAgICAg ICAgICAgaWYgKHBpcGVfY29uZmlnLT5mZGlfbGFuZXMgPD0gMikKPiAtICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gMDsKPiAtCj4gLSAgICAgICAgICAgICAgIG90aGVyX2NydGMgPSBpbnRl bF9nZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwgUElQRV9DKTsKPiAtICAgICAgICAgICAgICAg b3RoZXJfY3J0Y19zdGF0ZSA9Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfYXRvbWlj X2dldF9jcnRjX3N0YXRlKHN0YXRlLCBvdGhlcl9jcnRjKTsKPiAtICAgICAgICAgICAgICAgaWYg KElTX0VSUihvdGhlcl9jcnRjX3N0YXRlKSkKPiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUihvdGhlcl9jcnRjX3N0YXRlKTsKPiAtCj4gLSAgICAgICAgICAgICAgIGlmIChw aXBlX3JlcXVpcmVkX2ZkaV9sYW5lcyhvdGhlcl9jcnRjX3N0YXRlKSA+IDApIHsKPiAtICAgICAg ICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBzaGFyZWQgZmRpIGxhbmUgY29uZmln IG9uIHBpcGUgJWM6ICVpIGxhbmVzXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBpcGVfbmFtZShwaXBlKSwgcGlwZV9jb25maWctPmZkaV9sYW5lcyk7Cj4gLSAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICAgICAgICAgIH0KPiAt ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gLSAgICAgICBjYXNlIFBJUEVfQzoKPiAtICAgICAg ICAgICAgICAgaWYgKHBpcGVfY29uZmlnLT5mZGlfbGFuZXMgPiAyKSB7Cj4gLSAgICAgICAgICAg ICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIm9ubHkgMiBsYW5lcyBvbiBwaXBlICVjOiByZXF1aXJlZCAl aSBsYW5lc1xuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlX25h bWUocGlwZSksIHBpcGVfY29uZmlnLT5mZGlfbGFuZXMpOwo+IC0gICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAgICAgICAgICB9Cj4gLQo+IC0gICAgICAgICAg ICAgICBvdGhlcl9jcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsIFBJUEVf Qik7Cj4gLSAgICAgICAgICAgICAgIG90aGVyX2NydGNfc3RhdGUgPQo+IC0gICAgICAgICAgICAg ICAgICAgICAgIGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgb3RoZXJfY3J0Yyk7 Cj4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIob3RoZXJfY3J0Y19zdGF0ZSkpCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIob3RoZXJfY3J0Y19zdGF0ZSk7Cj4gLQo+ IC0gICAgICAgICAgICAgICBpZiAocGlwZV9yZXF1aXJlZF9mZGlfbGFuZXMob3RoZXJfY3J0Y19z dGF0ZSkgPiAyKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9w cml2LT5kcm0sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZkaSBsaW5r IEIgdXNlcyB0b28gbWFueSBsYW5lcyB0byBlbmFibGUgbGluayBDXG4iKTsKPiAtICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtICAgICAgICAgICAgICAgfQo+IC0gICAg ICAgICAgICAgICByZXR1cm4gMDsKPiAtICAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgICAgICAg IEJVRygpOwo+IC0gICAgICAgfQo+IC19Cj4gLQo+IC0jZGVmaW5lIFJFVFJZIDEKPiAtc3RhdGlj IGludCBpbGtfZmRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCj4gLXsKPiAtICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiAtICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShkZXYpOwo+IC0gICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4g LSAgICAgICBpbnQgbGFuZSwgbGlua19idywgZmRpX2RvdGNsb2NrLCByZXQ7Cj4gLSAgICAgICBi b29sIG5lZWRzX3JlY29tcHV0ZSA9IGZhbHNlOwo+IC0KPiAtcmV0cnk6Cj4gLSAgICAgICAvKiBG REkgaXMgYSBiaW5hcnkgc2lnbmFsIHJ1bm5pbmcgYXQgfjIuN0dIeiwgZW5jb2RpbmcKPiAtICAg ICAgICAqIGVhY2ggb3V0cHV0IG9jdGV0IGFzIDEwIGJpdHMuIFRoZSBhY3R1YWwgZnJlcXVlbmN5 Cj4gLSAgICAgICAgKiBpcyBzdG9yZWQgYXMgYSBkaXZpZGVyIGludG8gYSAxMDBNSHogY2xvY2ss IGFuZCB0aGUKPiAtICAgICAgICAqIG1vZGUgcGl4ZWwgY2xvY2sgaXMgc3RvcmVkIGluIHVuaXRz IG9mIDFLSHouCj4gLSAgICAgICAgKiBIZW5jZSB0aGUgYncgb2YgZWFjaCBsYW5lIGluIHRlcm1z IG9mIHRoZSBtb2RlIHNpZ25hbAo+IC0gICAgICAgICogaXM6Cj4gLSAgICAgICAgKi8KPiAtICAg ICAgIGxpbmtfYncgPSBpbnRlbF9mZGlfbGlua19mcmVxKGk5MTUsIHBpcGVfY29uZmlnKTsKPiAt Cj4gLSAgICAgICBmZGlfZG90Y2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+IC0K PiAtICAgICAgIGxhbmUgPSBpbGtfZ2V0X2xhbmVzX3JlcXVpcmVkKGZkaV9kb3RjbG9jaywgbGlu a19idywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVfY29uZmln LT5waXBlX2JwcCk7Cj4gLQo+IC0gICAgICAgcGlwZV9jb25maWctPmZkaV9sYW5lcyA9IGxhbmU7 Cj4gLQo+IC0gICAgICAgaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9i cHAsIGxhbmUsIGZkaV9kb3RjbG9jaywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlua19idywgJnBpcGVfY29uZmlnLT5mZGlfbV9uLCBmYWxzZSwgZmFsc2UpOwo+IC0KPiAtICAg ICAgIHJldCA9IGlsa19jaGVja19mZGlfbGFuZXMoZGV2LCBpbnRlbF9jcnRjLT5waXBlLCBwaXBl X2NvbmZpZyk7Cj4gLSAgICAgICBpZiAocmV0ID09IC1FREVBRExLKQo+IC0gICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+IC0KPiAtICAgICAgIGlmIChyZXQgPT0gLUVJTlZBTCAmJiBwaXBlX2Nv bmZpZy0+cGlwZV9icHAgPiA2KjMpIHsKPiAtICAgICAgICAgICAgICAgcGlwZV9jb25maWctPnBp cGVfYnBwIC09IDIqMzsKPiAtICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmk5MTUtPmRybSwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgImZkaSBsaW5rIGJ3IGNvbnN0cmFpbnQsIHJl ZHVjaW5nIHBpcGUgYnBwIHRvICVpXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBw aXBlX2NvbmZpZy0+cGlwZV9icHApOwo+IC0gICAgICAgICAgICAgICBuZWVkc19yZWNvbXB1dGUg PSB0cnVlOwo+IC0gICAgICAgICAgICAgICBwaXBlX2NvbmZpZy0+YndfY29uc3RyYWluZWQgPSB0 cnVlOwo+IC0KPiAtICAgICAgICAgICAgICAgZ290byByZXRyeTsKPiAtICAgICAgIH0KPiAtCj4g LSAgICAgICBpZiAobmVlZHNfcmVjb21wdXRlKQo+IC0gICAgICAgICAgICAgICByZXR1cm4gUkVU Ulk7Cj4gLQo+IC0gICAgICAgcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAgYm9vbCBoc3dfY3J0Y19z dGF0ZV9pcHNfY2FwYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiAgewo+ICAgICAgICAgc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gQEAgLTExMzc5LDcgKzEwNzA2LDcgQEAgaW50ZWxf bW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgaWYgKHJl dCA9PSBSRVRSWSkgewo+ICsgICAgICAgaWYgKHJldCA9PSBJOTE1X0RJU1BMQVlfQ09ORklHX1JF VFJZKSB7Cj4gICAgICAgICAgICAgICAgIGlmIChkcm1fV0FSTigmaTkxNS0+ZHJtLCAhcmV0cnks Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9vcCBpbiBwaXBlIGNvbmZpZ3VyYXRp b24gY29tcHV0YXRpb25cbiIpKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+IEBAIC0xNTE3OCwxNCArMTQ1MDUsNyBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9o b29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAgICAgICAgICAgICAg IGRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZSA9IGk5eHhfY3J0Y19kaXNhYmxlOwo+ICAg ICAgICAgfQo+Cj4gLSAgICAgICBpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkgewo+IC0gICAgICAg ICAgICAgICBkZXZfcHJpdi0+ZGlzcGxheS5mZGlfbGlua190cmFpbiA9IGlsa19mZGlfbGlua190 cmFpbjsKPiAtICAgICAgIH0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+IC0gICAg ICAgICAgICAgICBkZXZfcHJpdi0+ZGlzcGxheS5mZGlfbGlua190cmFpbiA9IGdlbjZfZmRpX2xp bmtfdHJhaW47Cj4gLSAgICAgICB9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpIHsK PiAtICAgICAgICAgICAgICAgLyogRklYTUU6IGRldGVjdCBCMCsgc3RlcHBpbmcgYW5kIHVzZSBh dXRvIHRyYWluaW5nICovCj4gLSAgICAgICAgICAgICAgIGRldl9wcml2LT5kaXNwbGF5LmZkaV9s aW5rX3RyYWluID0gaXZiX21hbnVhbF9mZGlfbGlua190cmFpbjsKPiAtICAgICAgIH0KPiArICAg ICAgIGludGVsX2luaXRfZmRpX2hvb2soZGV2X3ByaXYpOwo+Cj4gICAgICAgICBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gICAgICAgICAgICAgICAgIGRldl9wcml2LT5kaXNwbGF5 LmNvbW1pdF9tb2Rlc2V0X2VuYWJsZXMgPSBza2xfY29tbWl0X21vZGVzZXRfZW5hYmxlczsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaAo+IGluZGV4IGYx ZTM2Y2NhODZjMS4uNzMxZWE2Zjc3NzdhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgKPiBAQCAtNjc3LDYgKzY3NywxNiBAQCB2b2lkIHZsdl9j b21wdXRlX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIHZvaWQgY2h2X2NvbXB1dGVf ZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPgo+ICsvKiBmZGkgKi8KPiArI2Rl ZmluZSBJOTE1X0RJU1BMQVlfQ09ORklHX1JFVFJZIDEKPiAraW50IGlsa19mZGlfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiArdm9pZCBp bnRlbF9mZGlfbm9ybWFsX3RyYWluKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKPiArdm9pZCBp bGtfZmRpX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ICt2b2lkIGlsa19mZGlf cGxsX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpOwo+ICt2b2lkIGlsa19m ZGlfcGxsX2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7 Cj4gK3ZvaWQgaW50ZWxfaW5pdF9mZGlfaG9vayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICsKPiAgLyogbW9kZXNldHRpbmcgKi8KPiAgdm9pZCBpbnRlbF9tb2Rlc2V0X2lu aXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICBpbnQgaW50ZWxfbW9kZXNl dF9pbml0X25vaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IGluZGV4 IDgyMzA4M2IyMzFiYy4uOWM2ODQ1NTI5MDNjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBAQCAtMTgwNCw0ICsxODA0 LDEzIEBAIHN0YXRpYyBpbmxpbmUgdTMyIGk5eHhfZHBsbF9jb21wdXRlX2ZwKHN0cnVjdCBkcGxs ICpkcGxsKQo+ICAgICAgICAgcmV0dXJuIGRwbGwtPm4gPDwgMTYgfCBkcGxsLT5tMSA8PCA4IHwg ZHBsbC0+bTI7Cj4gIH0KPgo+ICtzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9mZGlfbGlua19mcmVx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKPiArewo+ICsgICAgICAgaWYgKEhBU19EREkoZGV2X3ByaXYpKQo+ICsgICAgICAgICAg ICAgICByZXR1cm4gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7IC8qIFNQTEwgKi8KPiArICAgICAg IGVsc2UKPiArICAgICAgICAgICAgICAgcmV0dXJuIGRldl9wcml2LT5mZGlfcGxsX2ZyZXE7Cj4g K30KPiArCj4gICNlbmRpZiAvKiAgX19JTlRFTF9ESVNQTEFZX1RZUEVTX0hfXyAqLwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZkaS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mZGkuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iZjRlZjg0Njg2ZWYKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mZGkuYwo+IEBAIC0wLDAgKzEs NjgyIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArLyoKPiArICogQ29w eXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKyNpbmNsdWRlICJpbnRl bF9hdG9taWMuaCIKPiArI2luY2x1ZGUgImludGVsX2Rpc3BsYXlfdHlwZXMuaCIKPiArCj4gKy8q IHVuaXRzIG9mIDEwME1IeiAqLwo+ICtzdGF0aWMgaW50IHBpcGVfcmVxdWlyZWRfZmRpX2xhbmVz KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKyAgICAgICBpZiAo Y3J0Y19zdGF0ZS0+aHcuZW5hYmxlICYmIGNydGNfc3RhdGUtPmhhc19wY2hfZW5jb2RlcikKPiAr ICAgICAgICAgICAgICAgcmV0dXJuIGNydGNfc3RhdGUtPmZkaV9sYW5lczsKPiArCj4gKyAgICAg ICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBpbGtfY2hlY2tfZmRpX2xhbmVzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gK3sK PiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiArICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IHBpcGVfY29uZmln LT51YXBpLnN0YXRlOwo+ICsgICAgICAgc3RydWN0IGludGVsX2NydGMgKm90aGVyX2NydGM7Cj4g KyAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb3RoZXJfY3J0Y19zdGF0ZTsKPiArCj4g KyAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiArICAgICAgICAgICAgICAgICAg ICJjaGVja2luZyBmZGkgY29uZmlnIG9uIHBpcGUgJWMsIGxhbmVzICVpXG4iLAo+ICsgICAgICAg ICAgICAgICAgICAgcGlwZV9uYW1lKHBpcGUpLCBwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzKTsKPiAr ICAgICAgIGlmIChwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzID4gNCkgewo+ICsgICAgICAgICAgICAg ICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgImludmFsaWQgZmRpIGxhbmUgY29uZmlnIG9uIHBpcGUgJWM6ICVpIGxhbmVzXG4iLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlX25hbWUocGlwZSksIHBpcGVfY29uZmlnLT5m ZGlfbGFuZXMpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgIH0K PiArCj4gKyAgICAgICBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRl dl9wcml2KSkgewo+ICsgICAgICAgICAgICAgICBpZiAocGlwZV9jb25maWctPmZkaV9sYW5lcyA+ IDIpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRy bSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSAyIGxhbmVzIG9u IGhhc3dlbGwsIHJlcXVpcmVkOiAlaSBsYW5lc1xuIiwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzKTsKPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgICAgICAgICAgfSBlbHNlIHsKPiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIGlmIChJTlRFTF9OVU1fUElQRVMoZGV2X3ByaXYpID09IDIpCj4g KyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAgIC8qIEl2eWJyaWRnZSAzIHBp cGUgaXMgcmVhbGx5IGNvbXBsaWNhdGVkICovCj4gKyAgICAgICBzd2l0Y2ggKHBpcGUpIHsKPiAr ICAgICAgIGNhc2UgUElQRV9BOgo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPiArICAgICAg IGNhc2UgUElQRV9COgo+ICsgICAgICAgICAgICAgICBpZiAocGlwZV9jb25maWctPmZkaV9sYW5l cyA8PSAyKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAg ICAgICAgICAgb3RoZXJfY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9waXBlKGRldl9wcml2LCBQ SVBFX0MpOwo+ICsgICAgICAgICAgICAgICBvdGhlcl9jcnRjX3N0YXRlID0KPiArICAgICAgICAg ICAgICAgICAgICAgICBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIG90aGVyX2Ny dGMpOwo+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKG90aGVyX2NydGNfc3RhdGUpKQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKG90aGVyX2NydGNfc3RhdGUpOwo+ ICsKPiArICAgICAgICAgICAgICAgaWYgKHBpcGVfcmVxdWlyZWRfZmRpX2xhbmVzKG90aGVyX2Ny dGNfc3RhdGUpID4gMCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRybV9kYmdfa21zKCZk ZXZfcHJpdi0+ZHJtLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZh bGlkIHNoYXJlZCBmZGkgbGFuZSBjb25maWcgb24gcGlwZSAlYzogJWkgbGFuZXNcbiIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZV9uYW1lKHBpcGUpLCBwaXBlX2Nv bmZpZy0+ZmRpX2xhbmVzKTsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPiArICAg ICAgIGNhc2UgUElQRV9DOgo+ICsgICAgICAgICAgICAgICBpZiAocGlwZV9jb25maWctPmZkaV9s YW5lcyA+IDIpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3By aXYtPmRybSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSAyIGxh bmVzIG9uIHBpcGUgJWM6IHJlcXVpcmVkICVpIGxhbmVzXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBpcGVfbmFtZShwaXBlKSwgcGlwZV9jb25maWctPmZkaV9sYW5l cyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICAg ICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIG90aGVyX2NydGMgPSBpbnRlbF9nZXRfY3J0 Y19mb3JfcGlwZShkZXZfcHJpdiwgUElQRV9CKTsKPiArICAgICAgICAgICAgICAgb3RoZXJfY3J0 Y19zdGF0ZSA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfYXRvbWljX2dldF9jcnRj X3N0YXRlKHN0YXRlLCBvdGhlcl9jcnRjKTsKPiArICAgICAgICAgICAgICAgaWYgKElTX0VSUihv dGhlcl9jcnRjX3N0YXRlKSkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VS UihvdGhlcl9jcnRjX3N0YXRlKTsKPiArCj4gKyAgICAgICAgICAgICAgIGlmIChwaXBlX3JlcXVp cmVkX2ZkaV9sYW5lcyhvdGhlcl9jcnRjX3N0YXRlKSA+IDIpIHsKPiArICAgICAgICAgICAgICAg ICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZmRpIGxpbmsgQiB1c2VzIHRvbyBtYW55IGxhbmVzIHRvIGVuYWJs ZSBsaW5rIENcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgICAg ZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgQlVHKCk7Cj4gKyAgICAgICB9Cj4gK30KPiArCj4g K2ludCBpbGtfZmRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShkZXYpOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4g KyAgICAgICBpbnQgbGFuZSwgbGlua19idywgZmRpX2RvdGNsb2NrLCByZXQ7Cj4gKyAgICAgICBi b29sIG5lZWRzX3JlY29tcHV0ZSA9IGZhbHNlOwo+ICsKPiArcmV0cnk6Cj4gKyAgICAgICAvKiBG REkgaXMgYSBiaW5hcnkgc2lnbmFsIHJ1bm5pbmcgYXQgfjIuN0dIeiwgZW5jb2RpbmcKPiArICAg ICAgICAqIGVhY2ggb3V0cHV0IG9jdGV0IGFzIDEwIGJpdHMuIFRoZSBhY3R1YWwgZnJlcXVlbmN5 Cj4gKyAgICAgICAgKiBpcyBzdG9yZWQgYXMgYSBkaXZpZGVyIGludG8gYSAxMDBNSHogY2xvY2ss IGFuZCB0aGUKPiArICAgICAgICAqIG1vZGUgcGl4ZWwgY2xvY2sgaXMgc3RvcmVkIGluIHVuaXRz IG9mIDFLSHouCj4gKyAgICAgICAgKiBIZW5jZSB0aGUgYncgb2YgZWFjaCBsYW5lIGluIHRlcm1z IG9mIHRoZSBtb2RlIHNpZ25hbAo+ICsgICAgICAgICogaXM6Cj4gKyAgICAgICAgKi8KPiArICAg ICAgIGxpbmtfYncgPSBpbnRlbF9mZGlfbGlua19mcmVxKGk5MTUsIHBpcGVfY29uZmlnKTsKPiAr Cj4gKyAgICAgICBmZGlfZG90Y2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICsK PiArICAgICAgIGxhbmUgPSBpbGtfZ2V0X2xhbmVzX3JlcXVpcmVkKGZkaV9kb3RjbG9jaywgbGlu a19idywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVfY29uZmln LT5waXBlX2JwcCk7Cj4gKwo+ICsgICAgICAgcGlwZV9jb25maWctPmZkaV9sYW5lcyA9IGxhbmU7 Cj4gKwo+ICsgICAgICAgaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9i cHAsIGxhbmUsIGZkaV9kb3RjbG9jaywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlua19idywgJnBpcGVfY29uZmlnLT5mZGlfbV9uLCBmYWxzZSwgZmFsc2UpOwo+ICsKPiArICAg ICAgIHJldCA9IGlsa19jaGVja19mZGlfbGFuZXMoZGV2LCBpbnRlbF9jcnRjLT5waXBlLCBwaXBl X2NvbmZpZyk7Cj4gKyAgICAgICBpZiAocmV0ID09IC1FREVBRExLKQo+ICsgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgIGlmIChyZXQgPT0gLUVJTlZBTCAmJiBwaXBlX2Nv bmZpZy0+cGlwZV9icHAgPiA2KjMpIHsKPiArICAgICAgICAgICAgICAgcGlwZV9jb25maWctPnBp cGVfYnBwIC09IDIqMzsKPiArICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmk5MTUtPmRybSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgImZkaSBsaW5rIGJ3IGNvbnN0cmFpbnQsIHJl ZHVjaW5nIHBpcGUgYnBwIHRvICVpXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBw aXBlX2NvbmZpZy0+cGlwZV9icHApOwo+ICsgICAgICAgICAgICAgICBuZWVkc19yZWNvbXB1dGUg PSB0cnVlOwo+ICsgICAgICAgICAgICAgICBwaXBlX2NvbmZpZy0+YndfY29uc3RyYWluZWQgPSB0 cnVlOwo+ICsKPiArICAgICAgICAgICAgICAgZ290byByZXRyeTsKPiArICAgICAgIH0KPiArCj4g KyAgICAgICBpZiAobmVlZHNfcmVjb21wdXRlKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gSTkx NV9ESVNQTEFZX0NPTkZJR19SRVRSWTsKPiArCj4gKyAgICAgICByZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICt2b2lkIGludGVsX2ZkaV9ub3JtYWxfdHJhaW4oc3RydWN0IGludGVsX2NydGMgKmNydGMp Cj4gK3sKPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsK PiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiArICAgICAgIGVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiArICAgICAgIGk5MTVf cmVnX3QgcmVnOwo+ICsgICAgICAgdTMyIHRlbXA7Cj4gKwo+ICsgICAgICAgLyogZW5hYmxlIG5v cm1hbCB0cmFpbiAqLwo+ICsgICAgICAgcmVnID0gRkRJX1RYX0NUTChwaXBlKTsKPiArICAgICAg IHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+ICsgICAgICAgaWYgKElTX0lW WUJSSURHRShkZXZfcHJpdikpIHsKPiArICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0xJTktf VFJBSU5fTk9ORV9JVkI7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5f Tk9ORV9JVkIgfCBGRElfVFhfRU5IQU5DRV9GUkFNRV9FTkFCTEU7Cj4gKyAgICAgICB9IGVsc2Ug ewo+ICsgICAgICAgICAgICAgICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9OT05FOwo+ICsgICAg ICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX05PTkUgfCBGRElfVFhfRU5IQU5DRV9G UkFNRV9FTkFCTEU7Cj4gKyAgICAgICB9Cj4gKyAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJp diwgcmVnLCB0ZW1wKTsKPiArCj4gKyAgICAgICByZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+ICsg ICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICBpZiAo SEFTX1BDSF9DUFQoZGV2X3ByaXYpKSB7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9M SU5LX1RSQUlOX1BBVFRFUk5fTUFTS19DUFQ7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJ X0xJTktfVFJBSU5fTk9STUFMX0NQVDsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAg ICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05PTkU7Cj4gKyAgICAgICAgICAgICAgIHRlbXAg fD0gRkRJX0xJTktfVFJBSU5fTk9ORTsKPiArICAgICAgIH0KPiArICAgICAgIGludGVsX2RlX3dy aXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBGRElfUlhfRU5IQU5DRV9GUkFNRV9FTkFCTEUpOwo+ ICsKPiArICAgICAgIC8qIHdhaXQgb25lIGlkbGUgcGF0dGVybiB0aW1lICovCj4gKyAgICAgICBp bnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB1ZGVsYXkoMTAw MCk7Cj4gKwo+ICsgICAgICAgLyogSVZCIHdhbnRzIGVycm9yIGNvcnJlY3Rpb24gZW5hYmxlZCAq Lwo+ICsgICAgICAgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gKyAgICAgICAgICAgICAg IGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZykgfCBGRElfRlNfRVJSQ19FTkFCTEUg fCBGRElfRkVfRVJSQ19FTkFCTEUpOwo+ICt9Cj4gKwo+ICsvKiBUaGUgRkRJIGxpbmsgdHJhaW5p bmcgZnVuY3Rpb25zIGZvciBJTEsvSWJleHBlYWsuICovCj4gK3N0YXRpYyB2b2lkIGlsa19mZGlf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g K3sKPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAr ICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiArICAgICAgIGVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiArICAgICAgIGk5MTVfcmVn X3QgcmVnOwo+ICsgICAgICAgdTMyIHRlbXAsIHRyaWVzOwo+ICsKPiArICAgICAgIC8qIEZESSBu ZWVkcyBiaXRzIGZyb20gcGlwZSBmaXJzdCAqLwo+ICsgICAgICAgYXNzZXJ0X3BpcGVfZW5hYmxl ZChkZXZfcHJpdiwgY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIpOwo+ICsKPiArICAgICAgIC8q IFRyYWluIDE6IHVtYXNrIEZESSBSWCBJbnRlcnJ1cHQgc3ltYm9sX2xvY2sgYW5kIGJpdF9sb2Nr IGJpdAo+ICsgICAgICAgICAgZm9yIHRyYWluIHJlc3VsdCAqLwo+ICsgICAgICAgcmVnID0gRkRJ X1JYX0lNUihwaXBlKTsKPiArICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBy ZWcpOwo+ICsgICAgICAgdGVtcCAmPSB+RkRJX1JYX1NZTUJPTF9MT0NLOwo+ICsgICAgICAgdGVt cCAmPSB+RkRJX1JYX0JJVF9MT0NLOwo+ICsgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYs IHJlZywgdGVtcCk7Cj4gKyAgICAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+ICsg ICAgICAgdWRlbGF5KDE1MCk7Cj4gKwo+ICsgICAgICAgLyogZW5hYmxlIENQVSBGREkgVFggYW5k IFBDSCBGREkgUlggKi8KPiArICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gKyAgICAg ICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgIHRlbXAgJj0g fkZESV9EUF9QT1JUX1dJRFRIX01BU0s7Cj4gKyAgICAgICB0ZW1wIHw9IEZESV9EUF9QT1JUX1dJ RFRIKGNydGNfc3RhdGUtPmZkaV9sYW5lcyk7Cj4gKyAgICAgICB0ZW1wICY9IH5GRElfTElOS19U UkFJTl9OT05FOwo+ICsgICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJOXzE7Cj4g KyAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wIHwgRkRJX1RYX0VOQUJM RSk7Cj4gKwo+ICsgICAgICAgcmVnID0gRkRJX1JYX0NUTChwaXBlKTsKPiArICAgICAgIHRlbXAg PSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+ICsgICAgICAgdGVtcCAmPSB+RkRJX0xJ TktfVFJBSU5fTk9ORTsKPiArICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8x Owo+ICsgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCB8IEZESV9SWF9F TkFCTEUpOwo+ICsKPiArICAgICAgIGludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgcmVn KTsKPiArICAgICAgIHVkZWxheSgxNTApOwo+ICsKPiArICAgICAgIC8qIElyb25sYWtlIHdvcmth cm91bmQsIGVuYWJsZSBjbG9jayBwb2ludGVyIGFmdGVyIEZESSBlbmFibGUqLwo+ICsgICAgICAg aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEZESV9SWF9DSElDS0VOKHBpcGUpLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgRkRJX1JYX1BIQVNFX1NZTkNfUE9JTlRFUl9PVlIpOwo+ICsgICAgICAg aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEZESV9SWF9DSElDS0VOKHBpcGUpLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgRkRJX1JYX1BIQVNFX1NZTkNfUE9JTlRFUl9PVlIgfCBGRElfUlhfUEhB U0VfU1lOQ19QT0lOVEVSX0VOKTsKPiArCj4gKyAgICAgICByZWcgPSBGRElfUlhfSUlSKHBpcGUp Owo+ICsgICAgICAgZm9yICh0cmllcyA9IDA7IHRyaWVzIDwgNTsgdHJpZXMrKykgewo+ICsgICAg ICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAg ICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJGRElfUlhfSUlSIDB4JXhcbiIs IHRlbXApOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKCh0ZW1wICYgRkRJX1JYX0JJVF9MT0NL KSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJt LCAiRkRJIHRyYWluIDEgZG9uZS5cbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGludGVs X2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBGRElfUlhfQklUX0xPQ0spOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9 Cj4gKyAgICAgICBpZiAodHJpZXMgPT0gNSkKPiArICAgICAgICAgICAgICAgZHJtX2VycigmZGV2 X3ByaXYtPmRybSwgIkZESSB0cmFpbiAxIGZhaWwhXG4iKTsKPiArCj4gKyAgICAgICAvKiBUcmFp biAyICovCj4gKyAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+ICsgICAgICAgdGVtcCA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB0ZW1wICY9IH5GRElfTElO S19UUkFJTl9OT05FOwo+ICsgICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJOXzI7 Cj4gKyAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsKPiArCj4gKyAg ICAgICByZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+ICsgICAgICAgdGVtcCA9IGludGVsX2RlX3Jl YWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9OT05F Owo+ICsgICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJOXzI7Cj4gKyAgICAgICBp bnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsKPiArCj4gKyAgICAgICBpbnRlbF9k ZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB1ZGVsYXkoMTUwKTsKPiAr Cj4gKyAgICAgICByZWcgPSBGRElfUlhfSUlSKHBpcGUpOwo+ICsgICAgICAgZm9yICh0cmllcyA9 IDA7IHRyaWVzIDwgNTsgdHJpZXMrKykgewo+ICsgICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxf ZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMoJmRl dl9wcml2LT5kcm0sICJGRElfUlhfSUlSIDB4JXhcbiIsIHRlbXApOwo+ICsKPiArICAgICAgICAg ICAgICAgaWYgKHRlbXAgJiBGRElfUlhfU1lNQk9MX0xPQ0spIHsKPiArICAgICAgICAgICAgICAg ICAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRlbXAgfCBGRElfUlhfU1lNQk9MX0xPQ0spOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRkRJIHRyYWlu IDIgZG9uZS5cbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg ICAgICAgICB9Cj4gKyAgICAgICB9Cj4gKyAgICAgICBpZiAodHJpZXMgPT0gNSkKPiArICAgICAg ICAgICAgICAgZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIkZESSB0cmFpbiAyIGZhaWwhXG4iKTsK PiArCj4gKyAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkZESSB0cmFpbiBkb25l XG4iKTsKPiArCj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBpbnQgc25iX2JfZmRpX3RyYWluX3Bh cmFtW10gPSB7Cj4gKyAgICAgICBGRElfTElOS19UUkFJTl80MDBNVl8wREJfU05CX0IsCj4gKyAg ICAgICBGRElfTElOS19UUkFJTl80MDBNVl82REJfU05CX0IsCj4gKyAgICAgICBGRElfTElOS19U UkFJTl82MDBNVl8zXzVEQl9TTkJfQiwKPiArICAgICAgIEZESV9MSU5LX1RSQUlOXzgwME1WXzBE Ql9TTkJfQiwKPiArfTsKPiArCj4gKy8qIFRoZSBGREkgbGluayB0cmFpbmluZyBmdW5jdGlvbnMg Zm9yIFNOQi9Db3VnYXJwb2ludC4gKi8KPiArc3RhdGljIHZvaWQgZ2VuNl9mZGlfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKyAg ICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gKyAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKyAgICAg ICBlbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKyAgICAgICBpOTE1X3JlZ190IHJlZzsK PiArICAgICAgIHUzMiB0ZW1wLCBpLCByZXRyeTsKPiArCj4gKyAgICAgICAvKiBUcmFpbiAxOiB1 bWFzayBGREkgUlggSW50ZXJydXB0IHN5bWJvbF9sb2NrIGFuZCBiaXRfbG9jayBiaXQKPiArICAg ICAgICAgIGZvciB0cmFpbiByZXN1bHQgKi8KPiArICAgICAgIHJlZyA9IEZESV9SWF9JTVIocGlw ZSk7Cj4gKyAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAg ICAgIHRlbXAgJj0gfkZESV9SWF9TWU1CT0xfTE9DSzsKPiArICAgICAgIHRlbXAgJj0gfkZESV9S WF9CSVRfTE9DSzsKPiArICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAp Owo+ICsKPiArICAgICAgIGludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAr ICAgICAgIHVkZWxheSgxNTApOwo+ICsKPiArICAgICAgIC8qIGVuYWJsZSBDUFUgRkRJIFRYIGFu ZCBQQ0ggRkRJIFJYICovCj4gKyAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+ICsgICAg ICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB0ZW1wICY9 IH5GRElfRFBfUE9SVF9XSURUSF9NQVNLOwo+ICsgICAgICAgdGVtcCB8PSBGRElfRFBfUE9SVF9X SURUSChjcnRjX3N0YXRlLT5mZGlfbGFuZXMpOwo+ICsgICAgICAgdGVtcCAmPSB+RkRJX0xJTktf VFJBSU5fTk9ORTsKPiArICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xOwo+ ICsgICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLOwo+ICsgICAgICAg LyogU05CLUIgKi8KPiArICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fNDAwTVZfMERCX1NO Ql9COwo+ICsgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCB8IEZESV9U WF9FTkFCTEUpOwo+ICsKPiArICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBGRElfUlhf TUlTQyhwaXBlKSwKPiArICAgICAgICAgICAgICAgICAgICAgIEZESV9SWF9UUDFfVE9fVFAyXzQ4 IHwgRkRJX1JYX0ZESV9ERUxBWV85MCk7Cj4gKwo+ICsgICAgICAgcmVnID0gRkRJX1JYX0NUTChw aXBlKTsKPiArICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+ICsg ICAgICAgaWYgKEhBU19QQ0hfQ1BUKGRldl9wcml2KSkgewo+ICsgICAgICAgICAgICAgICB0ZW1w ICY9IH5GRElfTElOS19UUkFJTl9QQVRURVJOX01BU0tfQ1BUOwo+ICsgICAgICAgICAgICAgICB0 ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMV9DUFQ7Cj4gKyAgICAgICB9IGVsc2Ugewo+ ICsgICAgICAgICAgICAgICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9OT05FOwo+ICsgICAgICAg ICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMTsKPiArICAgICAgIH0KPiAr ICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBGRElfUlhfRU5BQkxF KTsKPiArCj4gKyAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4g KyAgICAgICB1ZGVsYXkoMTUwKTsKPiArCj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsr KSB7Cj4gKyAgICAgICAgICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gKyAgICAgICAg ICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+ICsgICAgICAgICAg ICAgICB0ZW1wICY9IH5GRElfTElOS19UUkFJTl9WT0xfRU1QX01BU0s7Cj4gKyAgICAgICAgICAg ICAgIHRlbXAgfD0gc25iX2JfZmRpX3RyYWluX3BhcmFtW2ldOwo+ICsgICAgICAgICAgICAgICBp bnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsKPiArCj4gKyAgICAgICAgICAgICAg IGludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgICAgICAgICAg dWRlbGF5KDUwMCk7Cj4gKwo+ICsgICAgICAgICAgICAgICBmb3IgKHJldHJ5ID0gMDsgcmV0cnkg PCA1OyByZXRyeSsrKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gRkRJX1JYX0lJ UihwaXBlKTsKPiArICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwgcmVnKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2 X3ByaXYtPmRybSwgIkZESV9SWF9JSVIgMHgleFxuIiwgdGVtcCk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHRlbXAgJiBGRElfUlhfQklUX0xPQ0spIHsKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wIHwgRkRJX1JYX0JJVF9M T0NLKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9kYmdfa21zKCZkZXZf cHJpdi0+ZHJtLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkZESSB0cmFpbiAxIGRvbmUuXG4iKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAg ICAgICB1ZGVsYXkoNTApOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIGlm IChyZXRyeSA8IDUpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICB9 Cj4gKyAgICAgICBpZiAoaSA9PSA0KQo+ICsgICAgICAgICAgICAgICBkcm1fZXJyKCZkZXZfcHJp di0+ZHJtLCAiRkRJIHRyYWluIDEgZmFpbCFcbiIpOwo+ICsKPiArICAgICAgIC8qIFRyYWluIDIg Ki8KPiArICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gKyAgICAgICB0ZW1wID0gaW50 ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RS QUlOX05PTkU7Cj4gKyAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMjsKPiAr ICAgICAgIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gKyAgICAgICAgICAgICAgIHRlbXAg Jj0gfkZESV9MSU5LX1RSQUlOX1ZPTF9FTVBfTUFTSzsKPiArICAgICAgICAgICAgICAgLyogU05C LUIgKi8KPiArICAgICAgICAgICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl80MDBNVl8wREJf U05CX0I7Cj4gKyAgICAgICB9Cj4gKyAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVn LCB0ZW1wKTsKPiArCj4gKyAgICAgICByZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+ICsgICAgICAg dGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICBpZiAoSEFTX1BD SF9DUFQoZGV2X3ByaXYpKSB7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RS QUlOX1BBVFRFUk5fTUFTS19DUFQ7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0xJTktf VFJBSU5fUEFUVEVSTl8yX0NQVDsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAg IHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05PTkU7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgfD0g RkRJX0xJTktfVFJBSU5fUEFUVEVSTl8yOwo+ICsgICAgICAgfQo+ICsgICAgICAgaW50ZWxfZGVf d3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gKwo+ICsgICAgICAgaW50ZWxfZGVfcG9zdGlu Z19yZWFkKGRldl9wcml2LCByZWcpOwo+ICsgICAgICAgdWRlbGF5KDE1MCk7Cj4gKwo+ICsgICAg ICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ICsgICAgICAgICAgICAgICByZWcgPSBGRElf VFhfQ1RMKHBpcGUpOwo+ICsgICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgcmVnKTsKPiArICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fVk9M X0VNUF9NQVNLOwo+ICsgICAgICAgICAgICAgICB0ZW1wIHw9IHNuYl9iX2ZkaV90cmFpbl9wYXJh bVtpXTsKPiArICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVt cCk7Cj4gKwo+ICsgICAgICAgICAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYs IHJlZyk7Cj4gKyAgICAgICAgICAgICAgIHVkZWxheSg1MDApOwo+ICsKPiArICAgICAgICAgICAg ICAgZm9yIChyZXRyeSA9IDA7IHJldHJ5IDwgNTsgcmV0cnkrKykgewo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJlZyA9IEZESV9SWF9JSVIocGlwZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJGRElfUlhfSUlSIDB4JXhcbiIs IHRlbXApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wICYgRkRJX1JYX1NZTUJP TF9MT0NLKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbF9kZV93cml0 ZShkZXZfcHJpdiwgcmVnLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGVtcCB8IEZESV9SWF9TWU1CT0xfTE9DSyk7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGREkgdHJhaW4gMiBkb25lLlxuIik7Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAg ICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgdWRlbGF5KDUwKTsKPiArICAgICAg ICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICBpZiAocmV0cnkgPCA1KQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsgICAgICAgaWYgKGkgPT0gNCkKPiAr ICAgICAgICAgICAgICAgZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIkZESSB0cmFpbiAyIGZhaWwh XG4iKTsKPiArCj4gKyAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkZESSB0cmFp biBkb25lLlxuIik7Cj4gK30KPiArCj4gKy8qIE1hbnVhbCBsaW5rIHRyYWluaW5nIGZvciBJdnkg QnJpZGdlIEEwIHBhcnRzICovCj4gK3N0YXRpYyB2b2lkIGl2Yl9tYW51YWxfZmRpX2xpbmtfdHJh aW4oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAr ewo+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICsg ICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ ICsgICAgICAgZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICsgICAgICAgaTkxNV9yZWdf dCByZWc7Cj4gKyAgICAgICB1MzIgdGVtcCwgaSwgajsKPiArCj4gKyAgICAgICAvKiBUcmFpbiAx OiB1bWFzayBGREkgUlggSW50ZXJydXB0IHN5bWJvbF9sb2NrIGFuZCBiaXRfbG9jayBiaXQKPiAr ICAgICAgICAgIGZvciB0cmFpbiByZXN1bHQgKi8KPiArICAgICAgIHJlZyA9IEZESV9SWF9JTVIo cGlwZSk7Cj4gKyAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAr ICAgICAgIHRlbXAgJj0gfkZESV9SWF9TWU1CT0xfTE9DSzsKPiArICAgICAgIHRlbXAgJj0gfkZE SV9SWF9CSVRfTE9DSzsKPiArICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRl bXApOwo+ICsKPiArICAgICAgIGludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgcmVnKTsK PiArICAgICAgIHVkZWxheSgxNTApOwo+ICsKPiArICAgICAgIGRybV9kYmdfa21zKCZkZXZfcHJp di0+ZHJtLCAiRkRJX1JYX0lJUiBiZWZvcmUgbGluayB0cmFpbiAweCV4XG4iLAo+ICsgICAgICAg ICAgICAgICAgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRkRJX1JYX0lJUihwaXBlKSkpOwo+ ICsKPiArICAgICAgIC8qIFRyeSBlYWNoIHZzd2luZyBhbmQgcHJlZW1waGFzaXMgc2V0dGluZyB0 d2ljZSBiZWZvcmUgbW92aW5nIG9uICovCj4gKyAgICAgICBmb3IgKGogPSAwOyBqIDwgQVJSQVlf U0laRShzbmJfYl9mZGlfdHJhaW5fcGFyYW0pICogMjsgaisrKSB7Cj4gKyAgICAgICAgICAgICAg IC8qIGRpc2FibGUgZmlyc3QgaW4gY2FzZSB3ZSBuZWVkIHRvIHJldHJ5ICovCj4gKyAgICAgICAg ICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgPSBp bnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOwo+ICsgICAgICAgICAgICAgICB0ZW1wICY9IH4o RkRJX0xJTktfVFJBSU5fQVVUTyB8IEZESV9MSU5LX1RSQUlOX05PTkVfSVZCKTsKPiArICAgICAg ICAgICAgICAgdGVtcCAmPSB+RkRJX1RYX0VOQUJMRTsKPiArICAgICAgICAgICAgICAgaW50ZWxf ZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gKwo+ICsgICAgICAgICAgICAgICByZWcg PSBGRElfUlhfQ1RMKHBpcGUpOwo+ICsgICAgICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVh ZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJB SU5fQVVUTzsKPiArICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fUEFUVEVS Tl9NQVNLX0NQVDsKPiArICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX1JYX0VOQUJMRTsKPiAr ICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7Cj4gKwo+ ICsgICAgICAgICAgICAgICAvKiBlbmFibGUgQ1BVIEZESSBUWCBhbmQgUENIIEZESSBSWCAqLwo+ ICsgICAgICAgICAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+ICsgICAgICAgICAgICAg ICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgICAgICAgICAg dGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPiArICAgICAgICAgICAgICAgdGVtcCB8 PSBGRElfRFBfUE9SVF9XSURUSChjcnRjX3N0YXRlLT5mZGlfbGFuZXMpOwo+ICsgICAgICAgICAg ICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMV9JVkI7Cj4gKyAgICAgICAgICAg ICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1ZPTF9FTVBfTUFTSzsKPiArICAgICAgICAgICAg ICAgdGVtcCB8PSBzbmJfYl9mZGlfdHJhaW5fcGFyYW1bai8yXTsKPiArICAgICAgICAgICAgICAg dGVtcCB8PSBGRElfQ09NUE9TSVRFX1NZTkM7Cj4gKyAgICAgICAgICAgICAgIGludGVsX2RlX3dy aXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBGRElfVFhfRU5BQkxFKTsKPiArCj4gKyAgICAgICAg ICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBGRElfUlhfTUlTQyhwaXBlKSwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRJX1JYX1RQMV9UT19UUDJfNDggfCBGRElfUlhf RkRJX0RFTEFZXzkwKTsKPiArCj4gKyAgICAgICAgICAgICAgIHJlZyA9IEZESV9SWF9DVEwocGlw ZSk7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcp Owo+ICsgICAgICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMV9DUFQ7 Cj4gKyAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0NPTVBPU0lURV9TWU5DOwo+ICsgICAgICAg ICAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wIHwgRkRJX1JYX0VOQUJM RSk7Cj4gKwo+ICsgICAgICAgICAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYs IHJlZyk7Cj4gKyAgICAgICAgICAgICAgIHVkZWxheSgxKTsgLyogc2hvdWxkIGJlIDAuNXVzICov Cj4gKwo+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmVnID0gRkRJX1JYX0lJUihwaXBlKTsKPiArICAgICAgICAgICAg ICAgICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAg ICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkZESV9SWF9JSVIg MHgleFxuIiwgdGVtcCk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wICYg RkRJX1JYX0JJVF9MT0NLIHx8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCByZWcpICYgRkRJX1JYX0JJVF9MT0NLKSkgewo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgfCBGRElfUlhf QklUX0xPQ0spOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJtX2RiZ19rbXMo JmRldl9wcml2LT5kcm0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiRkRJIHRyYWluIDEgZG9uZSwgbGV2ZWwgJWkuXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgdWRlbGF5KDEpOyAvKiBzaG91bGQgYmUgMC41dXMgKi8KPiArICAgICAgICAg ICAgICAgfQo+ICsgICAgICAgICAgICAgICBpZiAoaSA9PSA0KSB7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkZESSB0cmFpbiAxIGZhaWwgb24gdnN3aW5nICVkXG4iLCBqIC8g Mik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgICAg IH0KPiArCj4gKyAgICAgICAgICAgICAgIC8qIFRyYWluIDIgKi8KPiArICAgICAgICAgICAgICAg cmVnID0gRkRJX1RYX0NUTChwaXBlKTsKPiArICAgICAgICAgICAgICAgdGVtcCA9IGludGVsX2Rl X3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5L X1RSQUlOX05PTkVfSVZCOwo+ICsgICAgICAgICAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlO X1BBVFRFUk5fMl9JVkI7Cj4gKyAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2 LCByZWcsIHRlbXApOwo+ICsKPiArICAgICAgICAgICAgICAgcmVnID0gRkRJX1JYX0NUTChwaXBl KTsKPiArICAgICAgICAgICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7 Cj4gKyAgICAgICAgICAgICAgIHRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1BBVFRFUk5fTUFTS19D UFQ7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8yX0NQ VDsKPiArICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCk7 Cj4gKwo+ICsgICAgICAgICAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJl Zyk7Cj4gKyAgICAgICAgICAgICAgIHVkZWxheSgyKTsgLyogc2hvdWxkIGJlIDEuNXVzICovCj4g Kwo+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmVnID0gRkRJX1JYX0lJUihwaXBlKTsKPiArICAgICAgICAgICAgICAg ICAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgICAg ICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkZESV9SWF9JSVIgMHgl eFxuIiwgdGVtcCk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wICYgRkRJ X1JYX1NZTUJPTF9MT0NLIHx8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCByZWcpICYgRkRJX1JYX1NZTUJPTF9MT0NLKSkgewo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgfCBGRElf UlhfU1lNQk9MX0xPQ0spOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJtX2Ri Z19rbXMoJmRldl9wcml2LT5kcm0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiRkRJIHRyYWluIDIgZG9uZSwgbGV2ZWwgJWkuXG4iLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIHRyYWluX2RvbmU7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg fQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHVkZWxheSgyKTsgLyogc2hvdWxkIGJlIDEuNXVz ICovCj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgaWYgKGkgPT0gNCkKPiAr ICAgICAgICAgICAgICAgICAgICAgICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkRJIHRyYWluIDIgZmFpbCBvbiB2c3dp bmcgJWRcbiIsIGogLyAyKTsKPiArICAgICAgIH0KPiArCj4gK3RyYWluX2RvbmU6Cj4gKyAgICAg ICBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkZESSB0cmFpbiBkb25lLlxuIik7Cj4gK30K PiArCj4gK3ZvaWQgaWxrX2ZkaV9wbGxfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiArICAgICAgIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFz ZS5kZXYpOwo+ICsgICAgICAgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsg ICAgICAgaTkxNV9yZWdfdCByZWc7Cj4gKyAgICAgICB1MzIgdGVtcDsKPiArCj4gKyAgICAgICAv KiBlbmFibGUgUENIIEZESSBSWCBQTEwsIHdhaXQgd2FybXVwIHBsdXMgRE1JIGxhdGVuY3kgKi8K PiArICAgICAgIHJlZyA9IEZESV9SWF9DVEwocGlwZSk7Cj4gKyAgICAgICB0ZW1wID0gaW50ZWxf ZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgIHRlbXAgJj0gfihGRElfRFBfUE9SVF9X SURUSF9NQVNLIHwgKDB4NyA8PCAxNikpOwo+ICsgICAgICAgdGVtcCB8PSBGRElfRFBfUE9SVF9X SURUSChjcnRjX3N0YXRlLT5mZGlfbGFuZXMpOwo+ICsgICAgICAgdGVtcCB8PSAoaW50ZWxfZGVf cmVhZChkZXZfcHJpdiwgUElQRUNPTkYocGlwZSkpICYgUElQRUNPTkZfQlBDX01BU0spIDw8IDEx Owo+ICsgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCB8IEZESV9SWF9Q TExfRU5BQkxFKTsKPiArCj4gKyAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYs IHJlZyk7Cj4gKyAgICAgICB1ZGVsYXkoMjAwKTsKPiArCj4gKyAgICAgICAvKiBTd2l0Y2ggZnJv bSBSYXdjbGsgdG8gUENEY2xrICovCj4gKyAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgcmVnKTsKPiArICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAg fCBGRElfUENEQ0xLKTsKPiArCj4gKyAgICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3By aXYsIHJlZyk7Cj4gKyAgICAgICB1ZGVsYXkoMjAwKTsKPiArCj4gKyAgICAgICAvKiBFbmFibGUg Q1BVIEZESSBUWCBQTEwsIGFsd2F5cyBvbiBmb3IgSXJvbmxha2UgKi8KPiArICAgICAgIHJlZyA9 IEZESV9UWF9DVEwocGlwZSk7Cj4gKyAgICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJp diwgcmVnKTsKPiArICAgICAgIGlmICgodGVtcCAmIEZESV9UWF9QTExfRU5BQkxFKSA9PSAwKSB7 Cj4gKyAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAgfCBG RElfVFhfUExMX0VOQUJMRSk7Cj4gKwo+ICsgICAgICAgICAgICAgICBpbnRlbF9kZV9wb3N0aW5n X3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICAgICAgICAgIHVkZWxheSgxMDApOwo+ICsg ICAgICAgfQo+ICt9Cj4gKwo+ICt2b2lkIGlsa19mZGlfcGxsX2Rpc2FibGUoc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArICAgICAgIGVudW0gcGlwZSBwaXBlID0gaW50 ZWxfY3J0Yy0+cGlwZTsKPiArICAgICAgIGk5MTVfcmVnX3QgcmVnOwo+ICsgICAgICAgdTMyIHRl bXA7Cj4gKwo+ICsgICAgICAgLyogU3dpdGNoIGZyb20gUENEY2xrIHRvIFJhd2NsayAqLwo+ICsg ICAgICAgcmVnID0gRkRJX1JYX0NUTChwaXBlKTsKPiArICAgICAgIHRlbXAgPSBpbnRlbF9kZV9y ZWFkKGRldl9wcml2LCByZWcpOwo+ICsgICAgICAgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIHJl ZywgdGVtcCAmIH5GRElfUENEQ0xLKTsKPiArCj4gKyAgICAgICAvKiBEaXNhYmxlIENQVSBGREkg VFggUExMICovCj4gKyAgICAgICByZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+ICsgICAgICAgdGVt cCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICBpbnRlbF9kZV93cml0 ZShkZXZfcHJpdiwgcmVnLCB0ZW1wICYgfkZESV9UWF9QTExfRU5BQkxFKTsKPiArCj4gKyAgICAg ICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB1ZGVsYXko MTAwKTsKPiArCj4gKyAgICAgICByZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+ICsgICAgICAgdGVt cCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICBpbnRlbF9kZV93cml0 ZShkZXZfcHJpdiwgcmVnLCB0ZW1wICYgfkZESV9SWF9QTExfRU5BQkxFKTsKPiArCj4gKyAgICAg ICAvKiBXYWl0IGZvciB0aGUgY2xvY2tzIHRvIHR1cm4gb2ZmLiAqLwo+ICsgICAgICAgaW50ZWxf ZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCByZWcpOwo+ICsgICAgICAgdWRlbGF5KDEwMCk7Cj4g K30KPiArCj4gK3ZvaWQgaWxrX2ZkaV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsKPiArICAgICAgIGVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsK PiArICAgICAgIGk5MTVfcmVnX3QgcmVnOwo+ICsgICAgICAgdTMyIHRlbXA7Cj4gKwo+ICsgICAg ICAgLyogZGlzYWJsZSBDUFUgRkRJIHR4IGFuZCBQQ0ggRkRJIHJ4ICovCj4gKyAgICAgICByZWcg PSBGRElfVFhfQ1RMKHBpcGUpOwo+ICsgICAgICAgdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsIHJlZyk7Cj4gKyAgICAgICBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wICYg fkZESV9UWF9FTkFCTEUpOwo+ICsgICAgICAgaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2 LCByZWcpOwo+ICsKPiArICAgICAgIHJlZyA9IEZESV9SWF9DVEwocGlwZSk7Cj4gKyAgICAgICB0 ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgIHRlbXAgJj0gfigw eDcgPDwgMTYpOwo+ICsgICAgICAgdGVtcCB8PSAoaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgUElQ RUNPTkYocGlwZSkpICYgUElQRUNPTkZfQlBDX01BU0spIDw8IDExOwo+ICsgICAgICAgaW50ZWxf ZGVfd3JpdGUoZGV2X3ByaXYsIHJlZywgdGVtcCAmIH5GRElfUlhfRU5BQkxFKTsKPiArCj4gKyAg ICAgICBpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB1ZGVs YXkoMTAwKTsKPiArCj4gKyAgICAgICAvKiBJcm9ubGFrZSB3b3JrYXJvdW5kLCBkaXNhYmxlIGNs b2NrIHBvaW50ZXIgYWZ0ZXIgZG93bmluZyBGREkgKi8KPiArICAgICAgIGlmIChIQVNfUENIX0lC WChkZXZfcHJpdikpCj4gKyAgICAgICAgICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBG RElfUlhfQ0hJQ0tFTihwaXBlKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRJ X1JYX1BIQVNFX1NZTkNfUE9JTlRFUl9PVlIpOwo+ICsKPiArICAgICAgIC8qIHN0aWxsIHNldCB0 cmFpbiBwYXR0ZXJuIDEgKi8KPiArICAgICAgIHJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4gKyAg ICAgICB0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgIHRlbXAg Jj0gfkZESV9MSU5LX1RSQUlOX05PTkU7Cj4gKyAgICAgICB0ZW1wIHw9IEZESV9MSU5LX1RSQUlO X1BBVFRFUk5fMTsKPiArICAgICAgIGludGVsX2RlX3dyaXRlKGRldl9wcml2LCByZWcsIHRlbXAp Owo+ICsKPiArICAgICAgIHJlZyA9IEZESV9SWF9DVEwocGlwZSk7Cj4gKyAgICAgICB0ZW1wID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiArICAgICAgIGlmIChIQVNfUENIX0NQVChk ZXZfcHJpdikpIHsKPiArICAgICAgICAgICAgICAgdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fUEFU VEVSTl9NQVNLX0NQVDsKPiArICAgICAgICAgICAgICAgdGVtcCB8PSBGRElfTElOS19UUkFJTl9Q QVRURVJOXzFfQ1BUOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgdGVtcCAm PSB+RkRJX0xJTktfVFJBSU5fTk9ORTsKPiArICAgICAgICAgICAgICAgdGVtcCB8PSBGRElfTElO S19UUkFJTl9QQVRURVJOXzE7Cj4gKyAgICAgICB9Cj4gKyAgICAgICAvKiBCUEMgaW4gRkRJIHJ4 IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGF0IGluIFBJUEVDT05GICovCj4gKyAgICAgICB0ZW1wICY9 IH4oMHgwNyA8PCAxNik7Cj4gKyAgICAgICB0ZW1wIHw9IChpbnRlbF9kZV9yZWFkKGRldl9wcml2 LCBQSVBFQ09ORihwaXBlKSkgJiBQSVBFQ09ORl9CUENfTUFTSykgPDwgMTE7Cj4gKyAgICAgICBp bnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB0ZW1wKTsKPiArCj4gKyAgICAgICBpbnRlbF9k ZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gKyAgICAgICB1ZGVsYXkoMTAwKTsKPiAr fQo+ICsKPiArdm9pZAo+ICtpbnRlbF9pbml0X2ZkaV9ob29rKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiArewo+ICsgICAgICAgaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpIHsK PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBpbGtf ZmRpX2xpbmtfdHJhaW47Cj4gKyAgICAgICB9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNikp IHsKPiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBn ZW42X2ZkaV9saW5rX3RyYWluOwo+ICsgICAgICAgfSBlbHNlIGlmIChJU19JVllCUklER0UoZGV2 X3ByaXYpKSB7Cj4gKyAgICAgICAgICAgICAgIC8qIEZJWE1FOiBkZXRlY3QgQjArIHN0ZXBwaW5n IGFuZCB1c2UgYXV0byB0cmFpbmluZyAqLwo+ICsgICAgICAgICAgICAgICBkZXZfcHJpdi0+ZGlz cGxheS5mZGlfbGlua190cmFpbiA9IGl2Yl9tYW51YWxfZmRpX2xpbmtfdHJhaW47Cj4gKyAgICAg ICB9Cj4gK30KPiAtLQo+IDIuMjcuMAo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgoKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2lu ZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK