From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 74A83A0C56 for ; Wed, 1 Sep 2021 21:47:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 641FC40687; Wed, 1 Sep 2021 21:47:01 +0200 (CEST) Received: from mail-qk1-f228.google.com (mail-qk1-f228.google.com [209.85.222.228]) by mails.dpdk.org (Postfix) with ESMTP id 6DF5140686 for ; Wed, 1 Sep 2021 21:46:59 +0200 (CEST) Received: by mail-qk1-f228.google.com with SMTP id a10so707738qka.12 for ; Wed, 01 Sep 2021 12:46:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=mime-version:subject:from:to:cc:message-id:date; bh=wVJFP+5qgiwhPhQXVt4IgD95tgXXIOlfSc8mp/sePLQ=; b=aHk8NSW2gLY4Nj8zvDbKjwdb5mVMrWdCAWdp3UBWz0azbENJ4EMsSVQCFiUf+FWrwK T8Xn6xHOoDCud9OZt25eH4pSa8E0KvxbFC6kjgsdS3AOQo8KvG1kEZLa/4t9jqaslDQt taZ9cY12UhcrCoBfajQXsN8XxeVLWr86t1Y0A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:to:cc:message-id:date; bh=wVJFP+5qgiwhPhQXVt4IgD95tgXXIOlfSc8mp/sePLQ=; b=ocOEcPsJNQik2/db18MHACevkkHqatH41gkC7syh75PZkmtFC+vJ7GVqfQz/lIkqD3 oil1F8/Q6sZAJ7fWK8oD8HMpUD8+cQTuDCotWPDfbkwpTdWSiux7kxbQl1Ry6zvkJhGG AeK6TFMiZOc5juea0cfEnI5xGYBZTihSa2clape/t+6qS4p0TbmYVm1po3z09bUEzp83 Ug7pXU8lszWbgfdZTEIF4O8KJ9nQXYr2qOWZ7R+NKnsjq5CbYsfD7oZTOd5SbPxt1MxR UVs5NQ6JjkCllLmvQqMHQqH9H6esBhQqMxG6N+GtOAcNI2u+qq4xyyAurMGkRv/l6WgD f6LA== X-Gm-Message-State: AOAM533SGvR69Q0oo/TsvaKk6kg26fKNolFvBVLYkAliAA4mj8xvSABT wS2CEWVZ2IN8eSnmLuvEyU10qTDyanLyBO7kS3sKZnqShoS2fvqUaew4W43cYyjvXg== X-Google-Smtp-Source: ABdhPJz1WekcXoSCheb6eZk/a3IPr5P1D/nYO0vNlt1tGMlRwBKtrHw9l0+HpkAp/w6s1kDDPiyRTOyuItT7 X-Received: by 2002:a05:620a:89b:: with SMTP id b27mr1279034qka.429.1630525618793; Wed, 01 Sep 2021 12:46:58 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [2606:4100:3880:1234::84]) by smtp-relay.gmail.com with ESMTPS id c16sm245209qkk.5.2021.09.01.12.46.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Sep 2021 12:46:58 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from noxus.dpdklab.iol.unh.edu (unknown [IPv6:2606:4100:3880:1722::4]) by postal.iol.unh.edu (Postfix) with ESMTP id 27469605248B; Wed, 1 Sep 2021 15:46:58 -0400 (EDT) Received: from noxus.dpdklab.iol.unh.edu (localhost [IPv6:::1]) by noxus.dpdklab.iol.unh.edu (Postfix) with ESMTP id 1C22289060; Wed, 1 Sep 2021 15:46:58 -0400 (EDT) Content-Type: multipart/mixed; boundary="===============2568575288038424870==" MIME-Version: 1.0 From: dpdklab@iol.unh.edu To: test-report@dpdk.org Cc: dpdk-test-reports@iol.unh.edu Message-Id: <20210901194658.1C22289060@noxus.dpdklab.iol.unh.edu> Date: Wed, 1 Sep 2021 15:46:58 -0400 (EDT) Subject: [dpdk-test-report] |WARNING| pw97688-97698 [PATCH] [14/14] net/bnxt: add support for testpmd co-existence X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org Sender: "test-report" --===============2568575288038424870== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogaW9sLXRlc3RpbmcKVGVzdC1TdGF0dXM6IFdBUk5JTkcKaHR0cDovL2RwZGsu b3JnL3BhdGNoLzk3Njg4CgpfYXBwbHkgcGF0Y2ggZmFpbHVyZV8KClN1Ym1pdHRlcjogVmVua2F0 IER1dnZ1cnUgPHZlbmthdGt1bWFyLmR1dnZ1cnVAYnJvYWRjb20uY29tPgpEYXRlOiBXZWRuZXNk YXksIFNlcHRlbWJlciAwMSAyMDIxIDE0OjI0OjMzIApBcHBsaWVkIG9uOiBDb21taXRJRDoxNzVh ZjI1NzM0ZjI5NTg3NGUzMWIzM2NjZDA4NzllNjlmZDE1MmE5CkFwcGx5IHBhdGNoIHNldCA5NzY4 OC05NzY5OCBmYWlsZWQ6CgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUv dGZfY29yZS5jLi4uCkh1bmsgIzEgc3VjY2VlZGVkIGF0IDk0MSAob2Zmc2V0IC0xNjQgbGluZXMp LgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfY29yZS5oLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiBAcmVmIHRmX2dldF9zaGFyZWRfdGJsX2luY3Jl bWVudAogKi8KCi8qKgogKiB0Zl9hbGxvY190YmxfZW50cnkgcGFyYW1ldGVyIGRlZmluaXRpb24K ICovCnN0cnVjdCB0Zl9zZWFyY2hfdGJsX2VudHJ5X3Bhcm1zIHsKCS8qKgoJICogW2luXSBSZWNl aXZlIG9yIHRyYW5zbWl0IGRpcmVjdGlvbgoJICovCgllbnVtIHRmX2RpciBkaXI7CgkvKioKCSAq IFtpbl0gVHlwZSBvZiB0aGUgYWxsb2NhdGlvbgoJICovCgllbnVtIHRmX3RibF90eXBlIHR5cGU7 CgkvKioKCSAqIFtpbl0gVGFibGUgc2NvcGUgaWRlbnRpZmllciAoaWdub3JlZCB1bmxlc3MgVEZf VEJMX1RZUEVfRVhUKQoJICovCgl1aW50MzJfdCB0Ymxfc2NvcGVfaWQ7CgkvKioKCSAqIFtpbl0g UmVzdWx0IGRhdGEgdG8gc2VhcmNoIGZvcgoJICovCgl1aW50OF90ICpyZXN1bHQ7CgkvKioKCSAq IFtpbl0gUmVzdWx0IGRhdGEgc2l6ZSBpbiBieXRlcwoJICovCgl1aW50MTZfdCByZXN1bHRfc3pf aW5fYnl0ZXM7CgkvKioKCSAqIFtpbl0gQWxsb2NhdGUgb24gbWlzcy4KCSAqLwoJdWludDhfdCBh bGxvYzsKCS8qKgoJICogW291dF0gU2V0IGlmIG1hdGNoaW5nIGVudHJ5IGZvdW5kCgkgKi8KCXVp bnQ4X3QgaGl0OwoJLyoqCgkgKiBbb3V0XSBTZWFyY2ggcmVzdWx0IHN0YXR1cyAoaGl0LCBtaXNz LCByZWplY3QpCgkgKi8KCWVudW0gdGZfc2VhcmNoX3N0YXR1cyBzZWFyY2hfc3RhdHVzOwoJLyoq CgkgKiBbb3V0XSBDdXJyZW50IHJlZiBjb3VudCBhZnRlciBhbGxvY2F0aW9uCgkgKi8KCXVpbnQx Nl90IHJlZl9jbnQ7CgkvKioKCSAqIFtvdXRdIElkeCBvZiBhbGxvY2F0ZWQgZW50cnkgb3IgZm91 bmQgZW50cnkKCSAqLwoJdWludDMyX3QgaWR4Owp9OwoKLyoqCiAqIHNlYXJjaCBUYWJsZSBFbnRy eSAoZXhwZXJpbWVudGFsKQogKgogKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIHRoZSBzaGFkb3cg Y29weSBvZiBhbiBpbmRleCB0YWJsZSBmb3IgYSBtYXRjaGluZwogKiBlbnRyeS4gIFRoZSByZXN1 bHQgZGF0YSBtdXN0IG1hdGNoIGZvciBoaXQgdG8gYmUgc2V0LiAgT25seSBUcnVGbG93IGNvcmUK ICogZGF0YSBpcyBhY2Nlc3NlZC4gIElmIHNoYWRvd19jb3B5IGlzIG5vdCBlbmFibGVkLCBhbiBl cnJvciBpcyByZXR1cm5lZC4KICoKICogSW1wbGVtZW50YXRpb246CiAqCiAqIEEgaGFzaCBpcyBw ZXJmb3JtZWQgb24gdGhlIHJlc3VsdCBkYXRhIGFuZCBtYXBwZWQgdG8gYSBzaGFkb3cgY29weSBl bnRyeQogKiB3aGVyZSB0aGUgcmVzdWx0IGlzIHBvcHVsYXRlZC4gIElmIHRoZSByZXN1bHQgbWF0 Y2hlcyB0aGUgZW50cnksIGhpdCBpcyBzZXQsCiAqIHJlZl9jbnQgaXMgaW5jcmVtZW50ZWQgKGlm IGFsbG9jKSwgYW5kIHRoZSBzZWFyY2ggc3RhdHVzIGluZGljYXRlcyB3aGF0CiAqIGFjdGlvbiB0 aGUgY2FsbGVyIGNhbiB0YWtlIHJlZ2FyZGluZyBzZXR0aW5nIHRoZSBlbnRyeS4KICoKICogc2Vh cmNoIHN0YXR1cyBzaG91bGQgYmUgdXNlZCBhcyBmb2xsb3dzOgogKiAtIE9uIE1JU1MsIHRoZSBj YWxsZXIgc2hvdWxkIHNldCB0aGUgcmVzdWx0IGludG8gdGhlIHJldHVybmVkIGluZGV4LgogKgog KiAtIE9uIFJFSkVDVCwgdGhlIGNhbGxlciBzaG91bGQgcmVqZWN0IHRoZSBmbG93IHNpbmNlIHRo ZXJlIGFyZSBubyByZXNvdXJjZXMuCiAqCiAqIC0gT24gSGl0LCB0aGUgbWF0Y2hpbmcgaW5kZXgg aXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIEFkZGl0aW9uYWxseSwgdGhlCiAqICAgcmVmX2Nu dCBpcyB1cGRhdGVkLgogKgogKiBBbHNvIHJldHVybnMgc3VjY2VzcyBvciBmYWlsdXJlIGNvZGUu CiAqLwppbnQgdGZfc2VhcmNoX3RibF9lbnRyeShzdHJ1Y3QgdGYgKnRmcCwKCQkJc3RydWN0IHRm X3NlYXJjaF90YmxfZW50cnlfcGFybXMgKnBhcm1zKTsKCi8qKgogKiB0Zl9hbGxvY190YmxfZW50 cnkgcGFyYW1ldGVyIGRlZmluaXRpb24KICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJz L25ldC9ibnh0L3RmX2NvcmUvdGZfY29yZS5oOjE2MjIKSHVuayAjMiBzdWNjZWVkZWQgYXQgMTQw OSAob2Zmc2V0IC0yMjkgbGluZXMpLgpIdW5rICMzIHN1Y2NlZWRlZCBhdCAxNDY3IChvZmZzZXQg LTIyOSBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9k ZXZpY2UuaC4uLgpIdW5rICMxIHN1Y2NlZWRlZCBhdCAyOTYgKG9mZnNldCAtNTEgbGluZXMpLgpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlX3A0LmMuLi4K SHVuayAjMSBzdWNjZWVkZWQgYXQgMTUwIChvZmZzZXQgLTg2IGxpbmVzKS4KSHVuayAjMiBzdWNj ZWVkZWQgYXQgMTg2IChvZmZzZXQgLTk1IGxpbmVzKS4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvYm54dC90Zl9jb3JlL3RmX2RldmljZV9wNTguYy4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54 dC90Zl9jb3JlL3RmX2RldmljZV9wNTguYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tp bmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2NvbW1vbi5jLi4uCkNoZWNr aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCnN0cnVjdCB0ZjsKCi8qKgogKiBUYWJsZSBTaGFkb3cgREJzCiAq LwpzdGF0aWMgdm9pZCAqc2hhZG93X3RibF9kYltURl9ESVJfTUFYXTsKCi8qKgogKiBTaGFkb3cg aW5pdCBmbGFnLCBzZXQgb24gYmluZCBhbmQgY2xlYXJlZCBvbiB1bmJpbmQKICovCgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsLmM6MjYKZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsKfQoKaW50CnRmX3RibF9hbGxvY19zZWFy Y2goc3RydWN0IHRmICp0ZnAsCgkJICAgIHN0cnVjdCB0Zl90YmxfYWxsb2Nfc2VhcmNoX3Bhcm1z ICpwYXJtcykKewoJaW50IHJjID0gMDsKCVRGX0NIRUNLX1BBUk1TMih0ZnAsIHBhcm1zKTsKCglp ZiAoIXNoYWRvd19pbml0IHx8ICFzaGFkb3dfdGJsX2RiW3Bhcm1zLT5kaXJdKSB7CgkJVEZQX0RS Vl9MT0coRVJSLCAiJXM6IFNoYWRvdyBUQkwgbm90IGluaXRpYWxpemVkLlxuIiwKCQkJICAgIHRm X2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSk7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9CgoJcmV0dXJuIHJj Owp9CgppbnQKdGZfdGJsX3NldChzdHJ1Y3QgdGYgKnRmcCwKCSAgIHN0cnVjdCB0Zl90Ymxfc2V0 X3Bhcm1zICpwYXJtcykKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZf Y29yZS90Zl90YmwuYzozMjcKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3Jl L3RmX3RibC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiBUaGUgVGFibGUgbW9k dWxlIHByb3ZpZGVzIHByb2Nlc3Npbmcgb2YgSW50ZXJuYWwgVEYgdGFibGUgdHlwZXMuCiAqLwoK LyoqIEludmFsaWQgdGFibGUgc2NvcGUgaWQgKi8KI2RlZmluZSBURl9UQkxfU0NPUEVfSU5WQUxJ RCAweGZmZmZmZmZmCgovKioKICogVGFibGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCgplcnJv cjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsLmg6MTUKSHVu ayAjMiBzdWNjZWVkZWQgYXQgMTE2IChvZmZzZXQgMzIgbGluZXMpLgpIdW5rICMzIHN1Y2NlZWRl ZCBhdCAyOTUgKG9mZnNldCAyMiBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Ju eHQvdGZfdWxwL3VscF9tYXBwZXIuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglh cGFybXMudHlwZSA9IGdsYl9yZXMtPnJlc291cmNlX3R5cGU7CglhcGFybXMuZGlyID0gZ2xiX3Jl cy0+ZGlyZWN0aW9uOwoJYXBhcm1zLnNlYXJjaF9lbmFibGUgPSAwOwoJYXBhcm1zLnRibF9zY29w ZV9pZCA9IHRibF9zY29wZV9pZDsKCgkvKiBBbGxvY2F0ZSB0aGUgaW5kZXggdGJsIHVzaW5nIHRm IGFwaSAqLwoJcmMgPSB0Zl9hbGxvY190YmxfZW50cnkodGZwLCAmYXBhcm1zKTsKCWlmIChyYykg ewoJCUJOWFRfVEZfREJHKEVSUiwgIkZhaWxlZCB0byBhbGxvYyBpZGVudGlmaWVyIFslc11bJWRd XG4iLAoJCQkgICAgdGZfZGlyXzJfc3RyKGFwYXJtcy5kaXIpLCBhcGFybXMudHlwZSk7CgkJcmV0 dXJuIHJjOwoJfQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl91bHAv dWxwX21hcHBlci5jOjE4OQpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90 Zl9jb3JlLmMgY2xlYW5seS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3Jl L3RmX2NvcmUuaCB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCkh1bmsgIzIgYXBw bGllZCBjbGVhbmx5LgpIdW5rICMzIGFwcGxpZWQgY2xlYW5seS4KQXBwbGllZCBwYXRjaCBkcml2 ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlLmggY2xlYW5seS4KQXBwbGllZCBwYXRjaCBk cml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlX3A0LmMgY2xlYW5seS4KQXBwbGllZCBw YXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZW1fY29tbW9uLmMgY2xlYW5seS4KQXBw bHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jIHdpdGggMiByZWpl Y3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuCkFwcGx5aW5nIHBhdGNo IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuaCB3aXRoIDEgcmVqZWN0Li4uClJlamVj dGVkIGh1bmsgIzEuCkh1bmsgIzIgYXBwbGllZCBjbGVhbmx5LgpIdW5rICMzIGFwcGxpZWQgY2xl YW5seS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX21hcHBlci5j IHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KZGlmZiBhL2RyaXZlcnMvbmV0L2Ju eHQvdGZfY29yZS90Zl9jb3JlLmggYi9kcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfY29yZS5o CShyZWplY3RlZCBodW5rcykKQEAgLTE2MjIsNzkgKzE2MjIsNiBAQCBpbnQgdGZfY2xlYXJfdGNh bV9zaGFyZWRfZW50cmllcyhzdHJ1Y3QgdGYgKnRmcCwKICAqIEByZWYgdGZfZ2V0X3NoYXJlZF90 YmxfaW5jcmVtZW50CiAgKi8KIAotLyoqCi0gKiB0Zl9hbGxvY190YmxfZW50cnkgcGFyYW1ldGVy IGRlZmluaXRpb24KLSAqLwotc3RydWN0IHRmX3NlYXJjaF90YmxfZW50cnlfcGFybXMgewotCS8q KgotCSAqIFtpbl0gUmVjZWl2ZSBvciB0cmFuc21pdCBkaXJlY3Rpb24KLQkgKi8KLQllbnVtIHRm X2RpciBkaXI7Ci0JLyoqCi0JICogW2luXSBUeXBlIG9mIHRoZSBhbGxvY2F0aW9uCi0JICovCi0J ZW51bSB0Zl90YmxfdHlwZSB0eXBlOwotCS8qKgotCSAqIFtpbl0gVGFibGUgc2NvcGUgaWRlbnRp ZmllciAoaWdub3JlZCB1bmxlc3MgVEZfVEJMX1RZUEVfRVhUKQotCSAqLwotCXVpbnQzMl90IHRi bF9zY29wZV9pZDsKLQkvKioKLQkgKiBbaW5dIFJlc3VsdCBkYXRhIHRvIHNlYXJjaCBmb3IKLQkg Ki8KLQl1aW50OF90ICpyZXN1bHQ7Ci0JLyoqCi0JICogW2luXSBSZXN1bHQgZGF0YSBzaXplIGlu IGJ5dGVzCi0JICovCi0JdWludDE2X3QgcmVzdWx0X3N6X2luX2J5dGVzOwotCS8qKgotCSAqIFtp bl0gQWxsb2NhdGUgb24gbWlzcy4KLQkgKi8KLQl1aW50OF90IGFsbG9jOwotCS8qKgotCSAqIFtv dXRdIFNldCBpZiBtYXRjaGluZyBlbnRyeSBmb3VuZAotCSAqLwotCXVpbnQ4X3QgaGl0OwotCS8q KgotCSAqIFtvdXRdIFNlYXJjaCByZXN1bHQgc3RhdHVzIChoaXQsIG1pc3MsIHJlamVjdCkKLQkg Ki8KLQllbnVtIHRmX3NlYXJjaF9zdGF0dXMgc2VhcmNoX3N0YXR1czsKLQkvKioKLQkgKiBbb3V0 XSBDdXJyZW50IHJlZiBjb3VudCBhZnRlciBhbGxvY2F0aW9uCi0JICovCi0JdWludDE2X3QgcmVm X2NudDsKLQkvKioKLQkgKiBbb3V0XSBJZHggb2YgYWxsb2NhdGVkIGVudHJ5IG9yIGZvdW5kIGVu dHJ5Ci0JICovCi0JdWludDMyX3QgaWR4OwotfTsKLQotLyoqCi0gKiBzZWFyY2ggVGFibGUgRW50 cnkgKGV4cGVyaW1lbnRhbCkKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIHRoZSBzaGFk b3cgY29weSBvZiBhbiBpbmRleCB0YWJsZSBmb3IgYSBtYXRjaGluZwotICogZW50cnkuICBUaGUg cmVzdWx0IGRhdGEgbXVzdCBtYXRjaCBmb3IgaGl0IHRvIGJlIHNldC4gIE9ubHkgVHJ1RmxvdyBj b3JlCi0gKiBkYXRhIGlzIGFjY2Vzc2VkLiAgSWYgc2hhZG93X2NvcHkgaXMgbm90IGVuYWJsZWQs IGFuIGVycm9yIGlzIHJldHVybmVkLgotICoKLSAqIEltcGxlbWVudGF0aW9uOgotICoKLSAqIEEg aGFzaCBpcyBwZXJmb3JtZWQgb24gdGhlIHJlc3VsdCBkYXRhIGFuZCBtYXBwZWQgdG8gYSBzaGFk b3cgY29weSBlbnRyeQotICogd2hlcmUgdGhlIHJlc3VsdCBpcyBwb3B1bGF0ZWQuICBJZiB0aGUg cmVzdWx0IG1hdGNoZXMgdGhlIGVudHJ5LCBoaXQgaXMgc2V0LAotICogcmVmX2NudCBpcyBpbmNy ZW1lbnRlZCAoaWYgYWxsb2MpLCBhbmQgdGhlIHNlYXJjaCBzdGF0dXMgaW5kaWNhdGVzIHdoYXQK LSAqIGFjdGlvbiB0aGUgY2FsbGVyIGNhbiB0YWtlIHJlZ2FyZGluZyBzZXR0aW5nIHRoZSBlbnRy eS4KLSAqCi0gKiBzZWFyY2ggc3RhdHVzIHNob3VsZCBiZSB1c2VkIGFzIGZvbGxvd3M6Ci0gKiAt IE9uIE1JU1MsIHRoZSBjYWxsZXIgc2hvdWxkIHNldCB0aGUgcmVzdWx0IGludG8gdGhlIHJldHVy bmVkIGluZGV4LgotICoKLSAqIC0gT24gUkVKRUNULCB0aGUgY2FsbGVyIHNob3VsZCByZWplY3Qg dGhlIGZsb3cgc2luY2UgdGhlcmUgYXJlIG5vIHJlc291cmNlcy4KLSAqCi0gKiAtIE9uIEhpdCwg dGhlIG1hdGNoaW5nIGluZGV4IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBBZGRpdGlvbmFs bHksIHRoZQotICogICByZWZfY250IGlzIHVwZGF0ZWQuCi0gKgotICogQWxzbyByZXR1cm5zIHN1 Y2Nlc3Mgb3IgZmFpbHVyZSBjb2RlLgotICovCi1pbnQgdGZfc2VhcmNoX3RibF9lbnRyeShzdHJ1 Y3QgdGYgKnRmcCwKLQkJCXN0cnVjdCB0Zl9zZWFyY2hfdGJsX2VudHJ5X3Bhcm1zICpwYXJtcyk7 Ci0KIC8qKgogICogdGZfYWxsb2NfdGJsX2VudHJ5IHBhcmFtZXRlciBkZWZpbml0aW9uCiAgKi8K ZGlmZiBhL2RyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuYyBiL2RyaXZlcnMvbmV0L2Ju eHQvdGZfY29yZS90Zl90YmwuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0yNiwxMSArMjYsNiBAQAog CiBzdHJ1Y3QgdGY7CiAKLS8qKgotICogVGFibGUgU2hhZG93IERCcwotICovCi1zdGF0aWMgdm9p ZCAqc2hhZG93X3RibF9kYltURl9ESVJfTUFYXTsKLQogLyoqCiAgKiBTaGFkb3cgaW5pdCBmbGFn LCBzZXQgb24gYmluZCBhbmQgY2xlYXJlZCBvbiB1bmJpbmQKICAqLwpAQCAtMzI3LDIyICszMjIs NiBAQCB0Zl90YmxfZnJlZShzdHJ1Y3QgdGYgKnRmcCBfX3J0ZV91bnVzZWQsCiAJcmV0dXJuIDA7 CiB9CiAKLWludAotdGZfdGJsX2FsbG9jX3NlYXJjaChzdHJ1Y3QgdGYgKnRmcCwKLQkJICAgIHN0 cnVjdCB0Zl90YmxfYWxsb2Nfc2VhcmNoX3Bhcm1zICpwYXJtcykKLXsKLQlpbnQgcmMgPSAwOwot CVRGX0NIRUNLX1BBUk1TMih0ZnAsIHBhcm1zKTsKLQotCWlmICghc2hhZG93X2luaXQgfHwgIXNo YWRvd190YmxfZGJbcGFybXMtPmRpcl0pIHsKLQkJVEZQX0RSVl9MT0coRVJSLCAiJXM6IFNoYWRv dyBUQkwgbm90IGluaXRpYWxpemVkLlxuIiwKLQkJCSAgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRp cikpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlyZXR1cm4gcmM7Ci19Ci0KIGludAogdGZf dGJsX3NldChzdHJ1Y3QgdGYgKnRmcCwKIAkgICBzdHJ1Y3QgdGZfdGJsX3NldF9wYXJtcyAqcGFy bXMpCmRpZmYgYS9kcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsLmggYi9kcml2ZXJzL25l dC9ibnh0L3RmX2NvcmUvdGZfdGJsLmgJKHJlamVjdGVkIGh1bmtzKQpAQCAtMTUsOCArMTUsNiBA QCBzdHJ1Y3QgdGY7CiAgKiBUaGUgVGFibGUgbW9kdWxlIHByb3ZpZGVzIHByb2Nlc3Npbmcgb2Yg SW50ZXJuYWwgVEYgdGFibGUgdHlwZXMuCiAgKi8KIAotLyoqIEludmFsaWQgdGFibGUgc2NvcGUg aWQgKi8KLSNkZWZpbmUgVEZfVEJMX1NDT1BFX0lOVkFMSUQgMHhmZmZmZmZmZgogCiAvKioKICAq IFRhYmxlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycwpkaWZmIGEvZHJpdmVycy9uZXQvYm54dC90 Zl91bHAvdWxwX21hcHBlci5jIGIvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX21hcHBlci5j CShyZWplY3RlZCBodW5rcykKQEAgLTE4OSwxMyArMTg5LDEyIEBAIHVscF9tYXBwZXJfcmVzb3Vy Y2VfaW5kZXhfdGJsX2FsbG9jKHN0cnVjdCBibnh0X3VscF9jb250ZXh0ICp1bHBfY3R4LAogCiAJ YXBhcm1zLnR5cGUgPSBnbGJfcmVzLT5yZXNvdXJjZV90eXBlOwogCWFwYXJtcy5kaXIgPSBnbGJf cmVzLT5kaXJlY3Rpb247Ci0JYXBhcm1zLnNlYXJjaF9lbmFibGUgPSAwOwogCWFwYXJtcy50Ymxf c2NvcGVfaWQgPSB0Ymxfc2NvcGVfaWQ7CiAKIAkvKiBBbGxvY2F0ZSB0aGUgaW5kZXggdGJsIHVz aW5nIHRmIGFwaSAqLwogCXJjID0gdGZfYWxsb2NfdGJsX2VudHJ5KHRmcCwgJmFwYXJtcyk7CiAJ aWYgKHJjKSB7Ci0JCUJOWFRfVEZfREJHKEVSUiwgIkZhaWxlZCB0byBhbGxvYyBpZGVudGlmaWVy IFslc11bJWRdXG4iLAorCQlCTlhUX1RGX0RCRyhFUlIsICJGYWlsZWQgdG8gYWxsb2MgaW5kZXgg dGFibGUgWyVzXVslZF1cbiIsCiAJCQkgICAgdGZfZGlyXzJfc3RyKGFwYXJtcy5kaXIpLCBhcGFy bXMudHlwZSk7CiAJCXJldHVybiByYzsKIAl9CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Ju eHQvdGZfY29yZS90Zl9kZXZpY2VfcDU4LmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZf Y29yZS90Zl9kZXZpY2VfcDU4LmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9lbS5oLi4uCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoKI2luY2x1ZGUgImhjYXBpX2NmYV9kZWZzLmgiCgovKioKICogVEZfRU1fQUxM T0MKICoKICogMDogVXNlIHN0YWNrIGFsbG9jYXRvciB3aXRoIGZpeGVkIHNpemVkIGVudHJpZXMK ICogICAgKGRlZmF1bHQpLgogKiAxOiBVc2UgZHBvb2wgYWxsb2NhdG9yIHdpdGggdmFyaWFibGUg c2l6ZQogKiAgICBlbnRyaWVzLgogKi8KI2RlZmluZSBURl9FTV9BTExPQyAwCgojZGVmaW5lIFRG X0VNX01JTl9FTlRSSUVTICAgICAoMSA8PCAxNSkgLyogMzJLICovCiNkZWZpbmUgVEZfRU1fTUFY X0VOVFJJRVMgICAgICgxIDw8IDI3KSAvKiAxMjhNICovCgoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtLmg6MTMKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2hhc2hfaW50ZXJuYWwuYy4uLgplcnJvcjogZHJpdmVy cy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2hhc2hfaW50ZXJuYWwuYzogZG9lcyBub3QgZXhpc3Qg aW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2lu dGVybmFsLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Ci8qKgogKiBFTSBQb29sCiAq LwojaWYgKFRGX0VNX0FMTE9DID09IDEpCiNpbmNsdWRlICJkcG9vbC5oIgojZWxzZQoKLyoqCiAq IENyZWF0ZSBFTSBUYmwgcG9vbCBvZiBtZW1vcnkgaW5kZXhlcy4KICoKICogW2luXSBkaXIKICog ICBkaXJlY3Rpb24KICogW2luXSBudW1fZW50cmllcwogKiAgIG51bWJlciBvZiBlbnRyaWVzIHRv IHdyaXRlCiAqIFtpbl0gc3RhcnQKICogICBzdGFydGluZyBvZmZzZXQKICoKICogUmV0dXJuOgog KiAgMCAgICAgICAtIFN1Y2Nlc3MsIGVudHJ5IGFsbG9jYXRlZCAtIG5vIHNlYXJjaCBzdXBwb3J0 CiAqICAtRU5PTUVNIC1FSU5WQUwgLUVPUE5PVFNVUFAKICogICAgICAgICAgLSBGYWlsdXJlLCBl bnRyeSBub3QgYWxsb2NhdGVkLCBvdXQgb2YgcmVzb3VyY2VzCiAqLwpzdGF0aWMgaW50CnRmX2Ny ZWF0ZV9lbV9wb29sKHN0cnVjdCB0Zl9zZXNzaW9uICp0ZnMsCgkJICBlbnVtIHRmX2RpciBkaXIs CgkJICB1aW50MzJfdCBudW1fZW50cmllcywKCQkgIHVpbnQzMl90IHN0YXJ0KQp7CglzdHJ1Y3Qg dGZwX2NhbGxvY19wYXJtcyBwYXJtczsKCXVpbnQzMl90IGksIGo7CglpbnQgcmMgPSAwOwoJc3Ry dWN0IHN0YWNrICpwb29sOwoKCS8qCgkgKiBBbGxvY2F0ZSBzdGFjayBwb29sCgkgKi8KCXBhcm1z Lm5pdGVtcyA9IDE7CglwYXJtcy5zaXplID0gc2l6ZW9mKHN0cnVjdCBzdGFjayk7CglwYXJtcy5h bGlnbm1lbnQgPSAwOwoKCXJjID0gdGZwX2NhbGxvYygmcGFybXMpOwoKCWlmIChyYykgewoJCVRG UF9EUlZfTE9HKEVSUiwKCQkJICAgICIlcywgRU0gc3RhY2sgYWxsb2NhdGlvbiBmYWlsdXJlICVz XG4iLAoJCQkgICAgdGZfZGlyXzJfc3RyKGRpciksCgkJCSAgICBzdHJlcnJvcigtcmMpKTsKCQly ZXR1cm4gcmM7Cgl9CgoJcG9vbCA9IChzdHJ1Y3Qgc3RhY2sgKilwYXJtcy5tZW1fdmE7Cgl0ZnMt PmVtX3Bvb2xbZGlyXSA9ICh2b2lkICopcG9vbDsKCgkvKiBBc3N1bWVzIHRoYXQgbnVtX2VudHJp ZXMgaGFzIGJlZW4gY2hlY2tlZCBiZWZvcmUgd2UgZ2V0IGhlcmUgKi8KCXBhcm1zLm5pdGVtcyA9 IG51bV9lbnRyaWVzIC8gVEZfU0VTU0lPTl9FTV9FTlRSWV9TSVpFOwoJcGFybXMuc2l6ZSA9IHNp emVvZih1aW50MzJfdCk7CglwYXJtcy5hbGlnbm1lbnQgPSAwOwoKCXJjID0gdGZwX2NhbGxvYygm cGFybXMpOwoKCWlmIChyYykgewoJCVRGUF9EUlZfTE9HKEVSUiwKCQkJICAgICIlcywgRU0gcG9v bCBhbGxvY2F0aW9uIGZhaWx1cmUgJXNcbiIsCgkJCSAgICB0Zl9kaXJfMl9zdHIoZGlyKSwKCQkJ ICAgIHN0cmVycm9yKC1yYykpOwoJCXJldHVybiByYzsKCX0KCgkvKiBDcmVhdGUgZW1wdHkgc3Rh Y2sKCSAqLwoJcmMgPSBzdGFja19pbml0KG51bV9lbnRyaWVzIC8gVEZfU0VTU0lPTl9FTV9FTlRS WV9TSVpFLAoJCQkodWludDMyX3QgKilwYXJtcy5tZW1fdmEsCgkJCXBvb2wpOwoKCWlmIChyYykg ewoJCVRGUF9EUlZfTE9HKEVSUiwKCQkJICAgICIlcywgRU0gcG9vbCBzdGFjayBpbml0IGZhaWx1 cmUgJXNcbiIsCgkJCSAgICB0Zl9kaXJfMl9zdHIoZGlyKSwKCQkJICAgIHN0cmVycm9yKC1yYykp OwoJCWdvdG8gY2xlYW51cDsKCX0KCgkvKiBGaWxsIHBvb2wgd2l0aCBpbmRleGVzCgkgKi8KCWog PSBzdGFydCArIG51bV9lbnRyaWVzIC0gVEZfU0VTU0lPTl9FTV9FTlRSWV9TSVpFOwoKCWZvciAo aSA9IDA7IGkgPCAobnVtX2VudHJpZXMgLyBURl9TRVNTSU9OX0VNX0VOVFJZX1NJWkUpOyBpKysp IHsKCQlyYyA9IHN0YWNrX3B1c2gocG9vbCwgaik7CgkJaWYgKHJjKSB7CgkJCVRGUF9EUlZfTE9H KEVSUiwKCQkJCSAgICAiJXMsIEVNIHBvb2wgc3RhY2sgcHVzaCBmYWlsdXJlICVzXG4iLAoJCQkJ ICAgIHRmX2Rpcl8yX3N0cihkaXIpLAoJCQkJICAgIHN0cmVycm9yKC1yYykpOwoJCQlnb3RvIGNs ZWFudXA7CgkJfQoKCQlqIC09IFRGX1NFU1NJT05fRU1fRU5UUllfU0laRTsKCX0KCglpZiAoIXN0 YWNrX2lzX2Z1bGwocG9vbCkpIHsKCQlyYyA9IC1FSU5WQUw7CgkJVEZQX0RSVl9MT0coRVJSLAoJ CQkgICAgIiVzLCBFTSBwb29sIHN0YWNrIGZhaWx1cmUgJXNcbiIsCgkJCSAgICB0Zl9kaXJfMl9z dHIoZGlyKSwKCQkJICAgIHN0cmVycm9yKC1yYykpOwoJCWdvdG8gY2xlYW51cDsKCX0KCglyZXR1 cm4gMDsKY2xlYW51cDoKCXRmcF9mcmVlKCh2b2lkICopcGFybXMubWVtX3ZhKTsKCXRmcF9mcmVl KCh2b2lkICopdGZzLT5lbV9wb29sW2Rpcl0pOwoJdGZzLT5lbV9wb29sW2Rpcl0gPSBOVUxMOwoJ cmV0dXJuIHJjOwp9CgovKioKICogQ3JlYXRlIEVNIFRibCBwb29sIG9mIG1lbW9yeSBpbmRleGVz LgogKgogKiBbaW5dIGRpcgogKiAgIGRpcmVjdGlvbgogKgogKiBSZXR1cm46CiAqLwpzdGF0aWMg dm9pZAp0Zl9mcmVlX2VtX3Bvb2woc3RydWN0IHRmX3Nlc3Npb24gKnRmcywKCQllbnVtIHRmX2Rp ciBkaXIpCnsKCXN0cnVjdCBzdGFjayAqcG9vbCA9IChzdHJ1Y3Qgc3RhY2sgKil0ZnMtPmVtX3Bv b2xbZGlyXTsKCXVpbnQzMl90ICpwdHI7CgoJaWYgKHBvb2wgIT0gTlVMTCkgewoJCXB0ciA9IHN0 YWNrX2l0ZW1zKHBvb2wpOwoKCQlpZiAocHRyICE9IE5VTEwpCgkJCXRmcF9mcmVlKHB0cik7CgoJ CXRmcF9mcmVlKHBvb2wpOwoJCXRmcy0+ZW1fcG9vbFtkaXJdID0gTlVMTDsKCX0KfQojZW5kaWYg LyogVEZfRU1fQUxMT0MgIT0gMSAqLwoKLyoqCiAqIEluc2VydCBFTSBpbnRlcm5hbCBlbnRyeSBB UEkKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9lbV9p bnRlcm5hbC5jOjIyCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJdWludDhfdCBycHRyX2Vu dHJ5ID0gMDsKCXVpbnQ4X3QgbnVtX29mX2VudHJpZXMgPSAwOwoJc3RydWN0IHRmX3Nlc3Npb24g KnRmczsKI2lmIChURl9FTV9BTExPQyA9PSAxKQoJc3RydWN0IGRwb29sICpwb29sOwojZWxzZQoJ c3RydWN0IHN0YWNrICpwb29sOwojZW5kaWYKCXVpbnQzMl90IGluZGV4OwoKCS8qIFJldHJpZXZl IHRoZSBzZXNzaW9uIGluZm9ybWF0aW9uICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJz L25ldC9ibnh0L3RmX2NvcmUvdGZfZW1faW50ZXJuYWwuYzoxNzgKZXJyb3I6IHdoaWxlIHNlYXJj aGluZyBmb3I6CgkJcmV0dXJuIHJjOwoJfQoKI2lmIChURl9FTV9BTExPQyA9PSAxKQoJcG9vbCA9 IChzdHJ1Y3QgZHBvb2wgKil0ZnMtPmVtX3Bvb2xbcGFybXMtPmRpcl07CglpbmRleCA9IGRwb29s X2FsbG9jKHBvb2wsIFRGX1NFU1NJT05fRU1fRU5UUllfU0laRSwgMCk7CglpZiAoaW5kZXggPT0g RFBfSU5WQUxJRF9JTkRFWCkgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54 dC90Zl9jb3JlL3RmX2VtX2ludGVybmFsLmM6MTk1CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJCQkgICAgdGZfZGlyXzJfc3RyKHBhcm1zLT5kaXIpKTsKCQlyZXR1cm4gLTE7Cgl9CiNlbHNl Cglwb29sID0gKHN0cnVjdCBzdGFjayAqKXRmcy0+ZW1fcG9vbFtwYXJtcy0+ZGlyXTsKCXJjID0g c3RhY2tfcG9wKHBvb2wsICZpbmRleCk7CglpZiAocmMpIHsKCQlQTURfRFJWX0xPRyhFUlIsCgkJ CSAgICAiJXMsIEVNIGVudHJ5IGluZGV4IGFsbG9jYXRpb24gZmFpbGVkXG4iLAoJCQkgICAgdGZf ZGlyXzJfc3RyKHBhcm1zLT5kaXIpKTsKCQlyZXR1cm4gcmM7Cgl9CiNlbmRpZgoKCglycHRyX2lu ZGV4ID0gaW5kZXg7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2Nv cmUvdGZfZW1faW50ZXJuYWwuYzoyMDQKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCQkJ ICAgICAmbnVtX29mX2VudHJpZXMpOwoJaWYgKHJjKSB7CgkJLyogRnJlZSB0aGUgYWxsb2NhdGVk IGluZGV4IGJlZm9yZSByZXR1cm5pbmcgKi8KI2lmIChURl9FTV9BTExPQyA9PSAxKQoJCWRwb29s X2ZyZWUocG9vbCwgaW5kZXgpOwojZWxzZQoJCXN0YWNrX3B1c2gocG9vbCwgaW5kZXgpOwojZW5k aWYKCQlyZXR1cm4gLTE7Cgl9CglURl9TRVRfR0ZJRChnZmlkLAoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2ludGVybmFsLmM6MjI0CmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgp7CglpbnQgcmMgPSAwOwoJc3RydWN0IHRmX3Nlc3Npb24gKnRm czsKI2lmIChURl9FTV9BTExPQyA9PSAxKQoJc3RydWN0IGRwb29sICpwb29sOwojZWxzZQoJc3Ry dWN0IHN0YWNrICpwb29sOwojZW5kaWYKCS8qIFJldHJpZXZlIHRoZSBzZXNzaW9uIGluZm9ybWF0 aW9uICovCglyYyA9IHRmX3Nlc3Npb25fZ2V0X3Nlc3Npb24odGZwLCAmdGZzKTsKCWlmIChyYykg ewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2lu dGVybmFsLmM6MjY0CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCS8qIFJldHVybiByZXNv dXJjZSB0byBwb29sICovCglpZiAocmMgPT0gMCkgewojaWYgKFRGX0VNX0FMTE9DID09IDEpCgkJ cG9vbCA9IChzdHJ1Y3QgZHBvb2wgKil0ZnMtPmVtX3Bvb2xbcGFybXMtPmRpcl07CgkJZHBvb2xf ZnJlZShwb29sLCBwYXJtcy0+aW5kZXgpOwojZWxzZQoJCXBvb2wgPSAoc3RydWN0IHN0YWNrICop dGZzLT5lbV9wb29sW3Bhcm1zLT5kaXJdOwoJCXN0YWNrX3B1c2gocG9vbCwgcGFybXMtPmluZGV4 KTsKI2VuZGlmCgl9CgoJcmV0dXJuIHJjOwp9CgojaWYgKFRGX0VNX0FMTE9DID09IDEpCnN0YXRp YyBpbnQKdGZfZW1fbW92ZV9jYWxsYmFjayh2b2lkICp1c2VyX2RhdGEsCgkJICAgIHVpbnQ2NF90 IGVudHJ5X2RhdGEsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2Nv cmUvdGZfZW1faW50ZXJuYWwuYzoyODMKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJcmV0 dXJuIHJjOwp9CiNlbmRpZgoKaW50CnRmX2VtX2ludF9iaW5kKHN0cnVjdCB0ZiAqdGZwLAoKZXJy b3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2ludGVybmFs LmM6MzQyCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkJCSAgICB0Zl9kaXJfMl9zdHIo aSkpOwoJCQkJcmV0dXJuIHJjOwoJCQl9CiNpZiAoVEZfRU1fQUxMT0MgPT0gMSkKCQkJLyoKCQkJ ICogQWxsb2NhdGUgc3RhY2sgcG9vbAoJCQkgKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2JueHQvdGZfY29yZS90Zl9lbV9pbnRlcm5hbC5jOjQzNAplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKCQkJCQk3LAoJCQkJCSh2b2lkICopdGZwLAoJCQkJCXRmX2VtX21vdmVfY2Fs bGJhY2spOwojZWxzZQoJCQlyYyA9IHRmX2NyZWF0ZV9lbV9wb29sKHRmcywKCQkJCSAgICAgICBp LAoJCQkJICAgICAgIGlwYXJtcy5pbmZvLT5lbnRyeS5zdHJpZGUsCgkJCQkgICAgICAgaXBhcm1z LmluZm8tPmVudHJ5LnN0YXJ0KTsKI2VuZGlmCgkJCS8qIExvZ2dpbmcgaGFuZGxlZCBpbiB0Zl9j cmVhdGVfZW1fcG9vbCAqLwoJCQlpZiAocmMpCgkJCQlyZXR1cm4gcmM7CgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZW1faW50ZXJuYWwuYzo0NjAKZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJaWYgKCF0Zl9zZXNzaW9uX2lzX3NoYXJlZF9zZXNz aW9uKHRmcykpIHsKCQlmb3IgKGkgPSAwOyBpIDwgVEZfRElSX01BWDsgaSsrKQojaWYgKFRGX0VN X0FMTE9DID09IDEpCgkJCWRwb29sX2ZyZWVfYWxsKHRmcy0+ZW1fcG9vbFtpXSk7CiNlbHNlCgkJ dGZfZnJlZV9lbV9wb29sKHRmcywgaSk7CiNlbmRpZgoJfQoKCXJjID0gdGZfc2Vzc2lvbl9nZXRf ZGIodGZwLCBURl9NT0RVTEVfVFlQRV9FTSwgJmVtX2RiX3B0cik7CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZW1faW50ZXJuYWwuYzo1MDEKQXBwbHlp bmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtLmggd2l0aCAxIHJlamVjdC4u LgpSZWplY3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2Nv cmUvdGZfZW1faW50ZXJuYWwuYyB3aXRoIDExIHJlamVjdHMuLi4KUmVqZWN0ZWQgaHVuayAjMS4K UmVqZWN0ZWQgaHVuayAjMi4KUmVqZWN0ZWQgaHVuayAjMy4KUmVqZWN0ZWQgaHVuayAjNC4KUmVq ZWN0ZWQgaHVuayAjNS4KUmVqZWN0ZWQgaHVuayAjNi4KUmVqZWN0ZWQgaHVuayAjNy4KUmVqZWN0 ZWQgaHVuayAjOC4KUmVqZWN0ZWQgaHVuayAjOS4KUmVqZWN0ZWQgaHVuayAjMTAuClJlamVjdGVk IGh1bmsgIzExLgpkaWZmIGEvZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtLmggYi9kcml2 ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZW0uaAkocmVqZWN0ZWQgaHVua3MpCkBAIC0xMywxNiAr MTMsNiBAQAogCiAjaW5jbHVkZSAiaGNhcGlfY2ZhX2RlZnMuaCIKIAotLyoqCi0gKiBURl9FTV9B TExPQwotICoKLSAqIDA6IFVzZSBzdGFjayBhbGxvY2F0b3Igd2l0aCBmaXhlZCBzaXplZCBlbnRy aWVzCi0gKiAgICAoZGVmYXVsdCkuCi0gKiAxOiBVc2UgZHBvb2wgYWxsb2NhdG9yIHdpdGggdmFy aWFibGUgc2l6ZQotICogICAgZW50cmllcy4KLSAqLwotI2RlZmluZSBURl9FTV9BTExPQyAwCi0K ICNkZWZpbmUgVEZfRU1fTUlOX0VOVFJJRVMgICAgICgxIDw8IDE1KSAvKiAzMksgKi8KICNkZWZp bmUgVEZfRU1fTUFYX0VOVFJJRVMgICAgICgxIDw8IDI3KSAvKiAxMjhNICovCiAKZGlmZiBhL2Ry aXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9lbV9pbnRlcm5hbC5jIGIvZHJpdmVycy9uZXQvYm54 dC90Zl9jb3JlL3RmX2VtX2ludGVybmFsLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMjIsMTQ1ICsy Miw3IEBACiAvKioKICAqIEVNIFBvb2wKICAqLwotI2lmIChURl9FTV9BTExPQyA9PSAxKQogI2lu Y2x1ZGUgImRwb29sLmgiCi0jZWxzZQotCi0vKioKLSAqIENyZWF0ZSBFTSBUYmwgcG9vbCBvZiBt ZW1vcnkgaW5kZXhlcy4KLSAqCi0gKiBbaW5dIGRpcgotICogICBkaXJlY3Rpb24KLSAqIFtpbl0g bnVtX2VudHJpZXMKLSAqICAgbnVtYmVyIG9mIGVudHJpZXMgdG8gd3JpdGUKLSAqIFtpbl0gc3Rh cnQKLSAqICAgc3RhcnRpbmcgb2Zmc2V0Ci0gKgotICogUmV0dXJuOgotICogIDAgICAgICAgLSBT dWNjZXNzLCBlbnRyeSBhbGxvY2F0ZWQgLSBubyBzZWFyY2ggc3VwcG9ydAotICogIC1FTk9NRU0g LUVJTlZBTCAtRU9QTk9UU1VQUAotICogICAgICAgICAgLSBGYWlsdXJlLCBlbnRyeSBub3QgYWxs b2NhdGVkLCBvdXQgb2YgcmVzb3VyY2VzCi0gKi8KLXN0YXRpYyBpbnQKLXRmX2NyZWF0ZV9lbV9w b29sKHN0cnVjdCB0Zl9zZXNzaW9uICp0ZnMsCi0JCSAgZW51bSB0Zl9kaXIgZGlyLAotCQkgIHVp bnQzMl90IG51bV9lbnRyaWVzLAotCQkgIHVpbnQzMl90IHN0YXJ0KQotewotCXN0cnVjdCB0ZnBf Y2FsbG9jX3Bhcm1zIHBhcm1zOwotCXVpbnQzMl90IGksIGo7Ci0JaW50IHJjID0gMDsKLQlzdHJ1 Y3Qgc3RhY2sgKnBvb2w7Ci0KLQkvKgotCSAqIEFsbG9jYXRlIHN0YWNrIHBvb2wKLQkgKi8KLQlw YXJtcy5uaXRlbXMgPSAxOwotCXBhcm1zLnNpemUgPSBzaXplb2Yoc3RydWN0IHN0YWNrKTsKLQlw YXJtcy5hbGlnbm1lbnQgPSAwOwotCi0JcmMgPSB0ZnBfY2FsbG9jKCZwYXJtcyk7Ci0KLQlpZiAo cmMpIHsKLQkJVEZQX0RSVl9MT0coRVJSLAotCQkJICAgICIlcywgRU0gc3RhY2sgYWxsb2NhdGlv biBmYWlsdXJlICVzXG4iLAotCQkJICAgIHRmX2Rpcl8yX3N0cihkaXIpLAotCQkJICAgIHN0cmVy cm9yKC1yYykpOwotCQlyZXR1cm4gcmM7Ci0JfQotCi0JcG9vbCA9IChzdHJ1Y3Qgc3RhY2sgKilw YXJtcy5tZW1fdmE7Ci0JdGZzLT5lbV9wb29sW2Rpcl0gPSAodm9pZCAqKXBvb2w7Ci0KLQkvKiBB c3N1bWVzIHRoYXQgbnVtX2VudHJpZXMgaGFzIGJlZW4gY2hlY2tlZCBiZWZvcmUgd2UgZ2V0IGhl cmUgKi8KLQlwYXJtcy5uaXRlbXMgPSBudW1fZW50cmllcyAvIFRGX1NFU1NJT05fRU1fRU5UUllf U0laRTsKLQlwYXJtcy5zaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKLQlwYXJtcy5hbGlnbm1lbnQg PSAwOwotCi0JcmMgPSB0ZnBfY2FsbG9jKCZwYXJtcyk7Ci0KLQlpZiAocmMpIHsKLQkJVEZQX0RS Vl9MT0coRVJSLAotCQkJICAgICIlcywgRU0gcG9vbCBhbGxvY2F0aW9uIGZhaWx1cmUgJXNcbiIs Ci0JCQkgICAgdGZfZGlyXzJfc3RyKGRpciksCi0JCQkgICAgc3RyZXJyb3IoLXJjKSk7Ci0JCXJl dHVybiByYzsKLQl9Ci0KLQkvKiBDcmVhdGUgZW1wdHkgc3RhY2sKLQkgKi8KLQlyYyA9IHN0YWNr X2luaXQobnVtX2VudHJpZXMgLyBURl9TRVNTSU9OX0VNX0VOVFJZX1NJWkUsCi0JCQkodWludDMy X3QgKilwYXJtcy5tZW1fdmEsCi0JCQlwb29sKTsKLQotCWlmIChyYykgewotCQlURlBfRFJWX0xP RyhFUlIsCi0JCQkgICAgIiVzLCBFTSBwb29sIHN0YWNrIGluaXQgZmFpbHVyZSAlc1xuIiwKLQkJ CSAgICB0Zl9kaXJfMl9zdHIoZGlyKSwKLQkJCSAgICBzdHJlcnJvcigtcmMpKTsKLQkJZ290byBj bGVhbnVwOwotCX0KLQotCS8qIEZpbGwgcG9vbCB3aXRoIGluZGV4ZXMKLQkgKi8KLQlqID0gc3Rh cnQgKyBudW1fZW50cmllcyAtIFRGX1NFU1NJT05fRU1fRU5UUllfU0laRTsKLQotCWZvciAoaSA9 IDA7IGkgPCAobnVtX2VudHJpZXMgLyBURl9TRVNTSU9OX0VNX0VOVFJZX1NJWkUpOyBpKyspIHsK LQkJcmMgPSBzdGFja19wdXNoKHBvb2wsIGopOwotCQlpZiAocmMpIHsKLQkJCVRGUF9EUlZfTE9H KEVSUiwKLQkJCQkgICAgIiVzLCBFTSBwb29sIHN0YWNrIHB1c2ggZmFpbHVyZSAlc1xuIiwKLQkJ CQkgICAgdGZfZGlyXzJfc3RyKGRpciksCi0JCQkJICAgIHN0cmVycm9yKC1yYykpOwotCQkJZ290 byBjbGVhbnVwOwotCQl9Ci0KLQkJaiAtPSBURl9TRVNTSU9OX0VNX0VOVFJZX1NJWkU7Ci0JfQot Ci0JaWYgKCFzdGFja19pc19mdWxsKHBvb2wpKSB7Ci0JCXJjID0gLUVJTlZBTDsKLQkJVEZQX0RS Vl9MT0coRVJSLAotCQkJICAgICIlcywgRU0gcG9vbCBzdGFjayBmYWlsdXJlICVzXG4iLAotCQkJ ICAgIHRmX2Rpcl8yX3N0cihkaXIpLAotCQkJICAgIHN0cmVycm9yKC1yYykpOwotCQlnb3RvIGNs ZWFudXA7Ci0JfQotCi0JcmV0dXJuIDA7Ci1jbGVhbnVwOgotCXRmcF9mcmVlKCh2b2lkICopcGFy bXMubWVtX3ZhKTsKLQl0ZnBfZnJlZSgodm9pZCAqKXRmcy0+ZW1fcG9vbFtkaXJdKTsKLQl0ZnMt PmVtX3Bvb2xbZGlyXSA9IE5VTEw7Ci0JcmV0dXJuIHJjOwotfQotCi0vKioKLSAqIENyZWF0ZSBF TSBUYmwgcG9vbCBvZiBtZW1vcnkgaW5kZXhlcy4KLSAqCi0gKiBbaW5dIGRpcgotICogICBkaXJl Y3Rpb24KLSAqCi0gKiBSZXR1cm46Ci0gKi8KLXN0YXRpYyB2b2lkCi10Zl9mcmVlX2VtX3Bvb2wo c3RydWN0IHRmX3Nlc3Npb24gKnRmcywKLQkJZW51bSB0Zl9kaXIgZGlyKQotewotCXN0cnVjdCBz dGFjayAqcG9vbCA9IChzdHJ1Y3Qgc3RhY2sgKil0ZnMtPmVtX3Bvb2xbZGlyXTsKLQl1aW50MzJf dCAqcHRyOwotCi0JaWYgKHBvb2wgIT0gTlVMTCkgewotCQlwdHIgPSBzdGFja19pdGVtcyhwb29s KTsKLQotCQlpZiAocHRyICE9IE5VTEwpCi0JCQl0ZnBfZnJlZShwdHIpOwotCi0JCXRmcF9mcmVl KHBvb2wpOwotCQl0ZnMtPmVtX3Bvb2xbZGlyXSA9IE5VTEw7Ci0JfQotfQotI2VuZGlmIC8qIFRG X0VNX0FMTE9DICE9IDEgKi8KIAogLyoqCiAgKiBJbnNlcnQgRU0gaW50ZXJuYWwgZW50cnkgQVBJ CkBAIC0xNzgsMTEgKzQwLDcgQEAgdGZfZW1faW5zZXJ0X2ludF9lbnRyeShzdHJ1Y3QgdGYgKnRm cCwKIAl1aW50OF90IHJwdHJfZW50cnkgPSAwOwogCXVpbnQ4X3QgbnVtX29mX2VudHJpZXMgPSAw OwogCXN0cnVjdCB0Zl9zZXNzaW9uICp0ZnM7Ci0jaWYgKFRGX0VNX0FMTE9DID09IDEpCiAJc3Ry dWN0IGRwb29sICpwb29sOwotI2Vsc2UKLQlzdHJ1Y3Qgc3RhY2sgKnBvb2w7Ci0jZW5kaWYKIAl1 aW50MzJfdCBpbmRleDsKIAogCS8qIFJldHJpZXZlIHRoZSBzZXNzaW9uIGluZm9ybWF0aW9uICov CkBAIC0xOTUsNyArNTMsNiBAQCB0Zl9lbV9pbnNlcnRfaW50X2VudHJ5KHN0cnVjdCB0ZiAqdGZw LAogCQlyZXR1cm4gcmM7CiAJfQogCi0jaWYgKFRGX0VNX0FMTE9DID09IDEpCiAJcG9vbCA9IChz dHJ1Y3QgZHBvb2wgKil0ZnMtPmVtX3Bvb2xbcGFybXMtPmRpcl07CiAJaW5kZXggPSBkcG9vbF9h bGxvYyhwb29sLCBURl9TRVNTSU9OX0VNX0VOVFJZX1NJWkUsIDApOwogCWlmIChpbmRleCA9PSBE UF9JTlZBTElEX0lOREVYKSB7CkBAIC0yMDQsMTYgKzYxLDYgQEAgdGZfZW1faW5zZXJ0X2ludF9l bnRyeShzdHJ1Y3QgdGYgKnRmcCwKIAkJCSAgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRpcikpOwog CQlyZXR1cm4gLTE7CiAJfQotI2Vsc2UKLQlwb29sID0gKHN0cnVjdCBzdGFjayAqKXRmcy0+ZW1f cG9vbFtwYXJtcy0+ZGlyXTsKLQlyYyA9IHN0YWNrX3BvcChwb29sLCAmaW5kZXgpOwotCWlmIChy YykgewotCQlQTURfRFJWX0xPRyhFUlIsCi0JCQkgICAgIiVzLCBFTSBlbnRyeSBpbmRleCBhbGxv Y2F0aW9uIGZhaWxlZFxuIiwKLQkJCSAgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRpcikpOwotCQly ZXR1cm4gcmM7Ci0JfQotI2VuZGlmCiAKIAogCXJwdHJfaW5kZXggPSBpbmRleDsKQEAgLTIyNCwx MSArNzEsNyBAQCB0Zl9lbV9pbnNlcnRfaW50X2VudHJ5KHN0cnVjdCB0ZiAqdGZwLAogCQkJCQkg ICAgICZudW1fb2ZfZW50cmllcyk7CiAJaWYgKHJjKSB7CiAJCS8qIEZyZWUgdGhlIGFsbG9jYXRl ZCBpbmRleCBiZWZvcmUgcmV0dXJuaW5nICovCi0jaWYgKFRGX0VNX0FMTE9DID09IDEpCiAJCWRw b29sX2ZyZWUocG9vbCwgaW5kZXgpOwotI2Vsc2UKLQkJc3RhY2tfcHVzaChwb29sLCBpbmRleCk7 Ci0jZW5kaWYKIAkJcmV0dXJuIC0xOwogCX0KIAlURl9TRVRfR0ZJRChnZmlkLApAQCAtMjY0LDEx ICsxMDcsNyBAQCB0Zl9lbV9kZWxldGVfaW50X2VudHJ5KHN0cnVjdCB0ZiAqdGZwLAogewogCWlu dCByYyA9IDA7CiAJc3RydWN0IHRmX3Nlc3Npb24gKnRmczsKLSNpZiAoVEZfRU1fQUxMT0MgPT0g MSkKIAlzdHJ1Y3QgZHBvb2wgKnBvb2w7Ci0jZWxzZQotCXN0cnVjdCBzdGFjayAqcG9vbDsKLSNl bmRpZgogCS8qIFJldHJpZXZlIHRoZSBzZXNzaW9uIGluZm9ybWF0aW9uICovCiAJcmMgPSB0Zl9z ZXNzaW9uX2dldF9zZXNzaW9uKHRmcCwgJnRmcyk7CiAJaWYgKHJjKSB7CkBAIC0yODMsMTkgKzEy MiwxMyBAQCB0Zl9lbV9kZWxldGVfaW50X2VudHJ5KHN0cnVjdCB0ZiAqdGZwLAogCiAJLyogUmV0 dXJuIHJlc291cmNlIHRvIHBvb2wgKi8KIAlpZiAocmMgPT0gMCkgewotI2lmIChURl9FTV9BTExP QyA9PSAxKQogCQlwb29sID0gKHN0cnVjdCBkcG9vbCAqKXRmcy0+ZW1fcG9vbFtwYXJtcy0+ZGly XTsKIAkJZHBvb2xfZnJlZShwb29sLCBwYXJtcy0+aW5kZXgpOwotI2Vsc2UKLQkJcG9vbCA9IChz dHJ1Y3Qgc3RhY2sgKil0ZnMtPmVtX3Bvb2xbcGFybXMtPmRpcl07Ci0JCXN0YWNrX3B1c2gocG9v bCwgcGFybXMtPmluZGV4KTsKLSNlbmRpZgogCX0KIAogCXJldHVybiByYzsKIH0KIAotI2lmIChU Rl9FTV9BTExPQyA9PSAxKQogc3RhdGljIGludAogdGZfZW1fbW92ZV9jYWxsYmFjayh2b2lkICp1 c2VyX2RhdGEsCiAJCSAgICB1aW50NjRfdCBlbnRyeV9kYXRhLApAQCAtMzQyLDcgKzE3NSw2IEBA IHRmX2VtX21vdmVfY2FsbGJhY2sodm9pZCAqdXNlcl9kYXRhLAogCiAJcmV0dXJuIHJjOwogfQot I2VuZGlmCiAKIGludAogdGZfZW1faW50X2JpbmQoc3RydWN0IHRmICp0ZnAsCkBAIC00MzQsNyAr MjY2LDcgQEAgdGZfZW1faW50X2JpbmQoc3RydWN0IHRmICp0ZnAsCiAJCQkJCSAgICB0Zl9kaXJf Ml9zdHIoaSkpOwogCQkJCXJldHVybiByYzsKIAkJCX0KLSNpZiAoVEZfRU1fQUxMT0MgPT0gMSkK KwogCQkJLyoKIAkJCSAqIEFsbG9jYXRlIHN0YWNrIHBvb2wKIAkJCSAqLwpAQCAtNDYwLDEyICsy OTIsNiBAQCB0Zl9lbV9pbnRfYmluZChzdHJ1Y3QgdGYgKnRmcCwKIAkJCQkJNywKIAkJCQkJKHZv aWQgKil0ZnAsCiAJCQkJCXRmX2VtX21vdmVfY2FsbGJhY2spOwotI2Vsc2UKLQkJCXJjID0gdGZf Y3JlYXRlX2VtX3Bvb2wodGZzLAotCQkJCSAgICAgICBpLAotCQkJCSAgICAgICBpcGFybXMuaW5m by0+ZW50cnkuc3RyaWRlLAotCQkJCSAgICAgICBpcGFybXMuaW5mby0+ZW50cnkuc3RhcnQpOwot I2VuZGlmCiAJCQkvKiBMb2dnaW5nIGhhbmRsZWQgaW4gdGZfY3JlYXRlX2VtX3Bvb2wgKi8KIAkJ CWlmIChyYykKIAkJCQlyZXR1cm4gcmM7CkBAIC01MDEsMTEgKzMyNyw3IEBAIHRmX2VtX2ludF91 bmJpbmQoc3RydWN0IHRmICp0ZnApCiAKIAlpZiAoIXRmX3Nlc3Npb25faXNfc2hhcmVkX3Nlc3Np b24odGZzKSkgewogCQlmb3IgKGkgPSAwOyBpIDwgVEZfRElSX01BWDsgaSsrKQotI2lmIChURl9F TV9BTExPQyA9PSAxKQogCQkJZHBvb2xfZnJlZV9hbGwodGZzLT5lbV9wb29sW2ldKTsKLSNlbHNl Ci0JCXRmX2ZyZWVfZW1fcG9vbCh0ZnMsIGkpOwotI2VuZGlmCiAJfQogCiAJcmMgPSB0Zl9zZXNz aW9uX2dldF9kYih0ZnAsIFRGX01PRFVMRV9UWVBFX0VNLCAmZW1fZGJfcHRyKTsKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL2NmYV9yZXNvdXJjZV90eXBlcy5oLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojZGVmaW5lIENGQV9SRVNPVVJDRV9UWVBFX1A1OF9X Q19GS0IgICAgICAgICAgICAgMHgxMlVMCi8qIFZFQiBUQ0FNICovCiNkZWZpbmUgQ0ZBX1JFU09V UkNFX1RZUEVfUDU4X1ZFQl9UQ0FNICAgICAgICAgICAweDEzVUwKLyogTWV0ZXIgZHJvcCBjb3Vu dGVyICovCiNkZWZpbmUgQ0ZBX1JFU09VUkNFX1RZUEVfUDU4X01FVEVSX0RST1BfQ05UICAgICAw eDE1VUwKI2RlZmluZSBDRkFfUkVTT1VSQ0VfVFlQRV9QNThfTEFTVCAgICAgICAgICAgICAgIENG QV9SRVNPVVJDRV9UWVBFX1A1OF9NRVRFUl9EUk9QX0NOVAoKCi8qIE11bHRpY2FzdCBHcm91cCAq LwojZGVmaW5lIENGQV9SRVNPVVJDRV9UWVBFX1A0NV9NQ0cgICAgICAgICAgICAgICAgIDB4MFVM CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvY2ZhX3Jlc291 cmNlX3R5cGVzLmg6MTA0CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90 Zl9jb3JlLmguLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9jb3JlLmg6IGRv ZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29y ZS90Zl9kZXZpY2VfcDU4LmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9k ZXZpY2VfcDU4LmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZl cnMvbmV0L2JueHQvdGZfY29yZS90Zl9kZXZpY2VfcDU4LmguLi4KZXJyb3I6IGRyaXZlcnMvbmV0 L2JueHQvdGZfY29yZS90Zl9kZXZpY2VfcDU4Lmg6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuYy4uLgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKCQl9Cgl9CgoJLyogVmVyaWZ5IHRoYXQgdGhlIGVudHJ5IGhh cyBiZWVuIHByZXZpb3VzbHkgYWxsb2NhdGVkICovCglhcGFybXMucm1fZGIgPSB0YmxfZGItPnRi bF9kYltwYXJtcy0+ZGlyXTsKCWFwYXJtcy5zdWJ0eXBlID0gcGFybXMtPnR5cGU7CglURl9UQkxf UFRSX1RPX1JNKCZhcGFybXMuaW5kZXgsIHBhcm1zLT5pZHgsIGJhc2UsIHNoaWZ0KTsKCglhcGFy bXMuYWxsb2NhdGVkID0gJmFsbG9jYXRlZDsKCXJjID0gdGZfcm1faXNfYWxsb2NhdGVkKCZhcGFy bXMpOwoJaWYgKHJjKQoJCXJldHVybiByYzsKCglpZiAoYWxsb2NhdGVkICE9IFRGX1JNX0FMTE9D QVRFRF9FTlRSWV9JTl9VU0UpIHsKCQlURlBfRFJWX0xPRyhFUlIsCgkJICAgIiVzLCBJbnZhbGlk IG9yIG5vdCBhbGxvY2F0ZWQgaW5kZXgsIHR5cGU6JWQsIGlkeDolZFxuIiwKCQkgICB0Zl9kaXJf Ml9zdHIocGFybXMtPmRpciksCgkJICAgcGFybXMtPnR5cGUsCgkJICAgcGFybXMtPmlkeCk7CgkJ cmV0dXJuIC1FSU5WQUw7Cgl9CgoJLyogU2V0IHRoZSBlbnRyeSAqLwoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjM3NAplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKCQl9Cgl9CgoJLyogVmVyaWZ5IHRoYXQgdGhlIGVudHJ5IGhhcyBiZWVu IHByZXZpb3VzbHkgYWxsb2NhdGVkICovCglhcGFybXMucm1fZGIgPSB0YmxfZGItPnRibF9kYltw YXJtcy0+ZGlyXTsKCWFwYXJtcy5zdWJ0eXBlID0gcGFybXMtPnR5cGU7CglURl9UQkxfUFRSX1RP X1JNKCZhcGFybXMuaW5kZXgsIHBhcm1zLT5pZHgsIGJhc2UsIHNoaWZ0KTsKCglhcGFybXMuYWxs b2NhdGVkID0gJmFsbG9jYXRlZDsKCXJjID0gdGZfcm1faXNfYWxsb2NhdGVkKCZhcGFybXMpOwoJ aWYgKHJjKQoJCXJldHVybiByYzsKCglpZiAoYWxsb2NhdGVkICE9IFRGX1JNX0FMTE9DQVRFRF9F TlRSWV9JTl9VU0UpIHsKCQlURlBfRFJWX0xPRyhFUlIsCgkJICAgIiVzLCBJbnZhbGlkIG9yIG5v dCBhbGxvY2F0ZWQgaW5kZXgsIHR5cGU6JWQsIGlkeDolZFxuIiwKCQkgICB0Zl9kaXJfMl9zdHIo cGFybXMtPmRpciksCgkJICAgcGFybXMtPnR5cGUsCgkJICAgcGFybXMtPmlkeCk7CgkJcmV0dXJu IC1FSU5WQUw7Cgl9CgoJLyogU2V0IHRoZSBlbnRyeSAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjQ3NwpDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdXRpbC5jLi4uCkh1bmsgIzEgc3VjY2VlZGVkIGF0IDEy NCAob2Zmc2V0IDEyIGxpbmVzKS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9j b3JlL2NmYV9yZXNvdXJjZV90eXBlcy5oIHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAj MS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jIHdpdGgg MiByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuCkFwcGxpZWQg cGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3V0aWwuYyBjbGVhbmx5LgpkaWZmIGEv ZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL2NmYV9yZXNvdXJjZV90eXBlcy5oIGIvZHJpdmVycy9u ZXQvYm54dC90Zl9jb3JlL2NmYV9yZXNvdXJjZV90eXBlcy5oCShyZWplY3RlZCBodW5rcykKQEAg LTEwNCwxMCArMTA0LDExIEBACiAjZGVmaW5lIENGQV9SRVNPVVJDRV9UWVBFX1A1OF9XQ19GS0Ig ICAgICAgICAgICAgMHgxMlVMCiAvKiBWRUIgVENBTSAqLwogI2RlZmluZSBDRkFfUkVTT1VSQ0Vf VFlQRV9QNThfVkVCX1RDQU0gICAgICAgICAgIDB4MTNVTAorLyogTWV0YWRhdGEgKi8KKyNkZWZp bmUgQ0ZBX1JFU09VUkNFX1RZUEVfUDU4X01FVEFEQVRBICAgICAgICAgICAweDE0VUwKIC8qIE1l dGVyIGRyb3AgY291bnRlciAqLwogI2RlZmluZSBDRkFfUkVTT1VSQ0VfVFlQRV9QNThfTUVURVJf RFJPUF9DTlQgICAgIDB4MTVVTAotI2RlZmluZSBDRkFfUkVTT1VSQ0VfVFlQRV9QNThfTEFTVCAg ICAgICAgICAgICAgIENGQV9SRVNPVVJDRV9UWVBFX1A1OF9NRVRFUl9EUk9QX0NOVAotCisjZGVm aW5lIENGQV9SRVNPVVJDRV9UWVBFX1A1OF9MQVNUICAgICAgICAgICAgICBDRkFfUkVTT1VSQ0Vf VFlQRV9QNThfTUVURVJfRFJPUF9DTlQKIAogLyogTXVsdGljYXN0IEdyb3VwICovCiAjZGVmaW5l IENGQV9SRVNPVVJDRV9UWVBFX1A0NV9NQ0cgICAgICAgICAgICAgICAgIDB4MFVMCmRpZmYgYS9k cml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsLmMgYi9kcml2ZXJzL25ldC9ibnh0L3RmX2Nv cmUvdGZfdGJsLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMzc0LDIzICszNzQsMjggQEAgdGZfdGJs X3NldChzdHJ1Y3QgdGYgKnRmcCwKIAkJfQogCX0KIAotCS8qIFZlcmlmeSB0aGF0IHRoZSBlbnRy eSBoYXMgYmVlbiBwcmV2aW91c2x5IGFsbG9jYXRlZCAqLwotCWFwYXJtcy5ybV9kYiA9IHRibF9k Yi0+dGJsX2RiW3Bhcm1zLT5kaXJdOwotCWFwYXJtcy5zdWJ0eXBlID0gcGFybXMtPnR5cGU7Ci0J VEZfVEJMX1BUUl9UT19STSgmYXBhcm1zLmluZGV4LCBwYXJtcy0+aWR4LCBiYXNlLCBzaGlmdCk7 Ci0KLQlhcGFybXMuYWxsb2NhdGVkID0gJmFsbG9jYXRlZDsKLQlyYyA9IHRmX3JtX2lzX2FsbG9j YXRlZCgmYXBhcm1zKTsKLQlpZiAocmMpCi0JCXJldHVybiByYzsKKwkvKiBEbyBub3QgY2hlY2sg bWV0ZXIgZHJvcCBjb3VudGVyIGJlY2F1c2UgaXQgaXMgbm90IGFsbG9jYXRlZAorCSAqIHJlc291 cmNlcworCSAqLworCWlmIChwYXJtcy0+dHlwZSAhPSBURl9UQkxfVFlQRV9NRVRFUl9EUk9QX0NO VCkgeworCQkvKiBWZXJpZnkgdGhhdCB0aGUgZW50cnkgaGFzIGJlZW4gcHJldmlvdXNseSBhbGxv Y2F0ZWQgKi8KKwkJYXBhcm1zLnJtX2RiID0gdGJsX2RiLT50YmxfZGJbcGFybXMtPmRpcl07CisJ CWFwYXJtcy5zdWJ0eXBlID0gcGFybXMtPnR5cGU7CisJCVRGX1RCTF9QVFJfVE9fUk0oJmFwYXJt cy5pbmRleCwgcGFybXMtPmlkeCwgYmFzZSwgc2hpZnQpOworCisJCWFwYXJtcy5hbGxvY2F0ZWQg PSAmYWxsb2NhdGVkOworCQlyYyA9IHRmX3JtX2lzX2FsbG9jYXRlZCgmYXBhcm1zKTsKKwkJaWYg KHJjKQorCQkJcmV0dXJuIHJjOwogCi0JaWYgKGFsbG9jYXRlZCAhPSBURl9STV9BTExPQ0FURURf RU5UUllfSU5fVVNFKSB7Ci0JCVRGUF9EUlZfTE9HKEVSUiwKLQkJICAgIiVzLCBJbnZhbGlkIG9y IG5vdCBhbGxvY2F0ZWQgaW5kZXgsIHR5cGU6JWQsIGlkeDolZFxuIiwKLQkJICAgdGZfZGlyXzJf c3RyKHBhcm1zLT5kaXIpLAotCQkgICBwYXJtcy0+dHlwZSwKLQkJICAgcGFybXMtPmlkeCk7Ci0J CXJldHVybiAtRUlOVkFMOworCQlpZiAoYWxsb2NhdGVkICE9IFRGX1JNX0FMTE9DQVRFRF9FTlRS WV9JTl9VU0UpIHsKKwkJCVRGUF9EUlZfTE9HKEVSUiwKKwkJCSAgICIlcywgSW52YWxpZCBvciBu b3QgYWxsb2NhdGVkIGluZGV4LCB0eXBlOiVkLCBpZHg6JWRcbiIsCisJCQkgICB0Zl9kaXJfMl9z dHIocGFybXMtPmRpciksCisJCQkgICBwYXJtcy0+dHlwZSwKKwkJCSAgIHBhcm1zLT5pZHgpOwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KIAl9CiAKIAkvKiBTZXQgdGhlIGVudHJ5ICovCkBAIC00 NzcsMjMgKzQ4MiwyOCBAQCB0Zl90YmxfZ2V0KHN0cnVjdCB0ZiAqdGZwLAogCQl9CiAJfQogCi0J LyogVmVyaWZ5IHRoYXQgdGhlIGVudHJ5IGhhcyBiZWVuIHByZXZpb3VzbHkgYWxsb2NhdGVkICov Ci0JYXBhcm1zLnJtX2RiID0gdGJsX2RiLT50YmxfZGJbcGFybXMtPmRpcl07Ci0JYXBhcm1zLnN1 YnR5cGUgPSBwYXJtcy0+dHlwZTsKLQlURl9UQkxfUFRSX1RPX1JNKCZhcGFybXMuaW5kZXgsIHBh cm1zLT5pZHgsIGJhc2UsIHNoaWZ0KTsKLQotCWFwYXJtcy5hbGxvY2F0ZWQgPSAmYWxsb2NhdGVk OwotCXJjID0gdGZfcm1faXNfYWxsb2NhdGVkKCZhcGFybXMpOwotCWlmIChyYykKLQkJcmV0dXJu IHJjOworCS8qIERvIG5vdCBjaGVjayBtZXRlciBkcm9wIGNvdW50ZXIgYmVjYXVzZSBpdCBpcyBu b3QgYWxsb2NhdGVkCisJICogcmVzb3VyY2VzLgorCSAqLworCWlmIChwYXJtcy0+dHlwZSAhPSBU Rl9UQkxfVFlQRV9NRVRFUl9EUk9QX0NOVCkgeworCQkvKiBWZXJpZnkgdGhhdCB0aGUgZW50cnkg aGFzIGJlZW4gcHJldmlvdXNseSBhbGxvY2F0ZWQgKi8KKwkJYXBhcm1zLnJtX2RiID0gdGJsX2Ri LT50YmxfZGJbcGFybXMtPmRpcl07CisJCWFwYXJtcy5zdWJ0eXBlID0gcGFybXMtPnR5cGU7CisJ CVRGX1RCTF9QVFJfVE9fUk0oJmFwYXJtcy5pbmRleCwgcGFybXMtPmlkeCwgYmFzZSwgc2hpZnQp OworCisJCWFwYXJtcy5hbGxvY2F0ZWQgPSAmYWxsb2NhdGVkOworCQlyYyA9IHRmX3JtX2lzX2Fs bG9jYXRlZCgmYXBhcm1zKTsKKwkJaWYgKHJjKQorCQkJcmV0dXJuIHJjOwogCi0JaWYgKGFsbG9j YXRlZCAhPSBURl9STV9BTExPQ0FURURfRU5UUllfSU5fVVNFKSB7Ci0JCVRGUF9EUlZfTE9HKEVS UiwKLQkJICAgIiVzLCBJbnZhbGlkIG9yIG5vdCBhbGxvY2F0ZWQgaW5kZXgsIHR5cGU6JWQsIGlk eDolZFxuIiwKLQkJICAgdGZfZGlyXzJfc3RyKHBhcm1zLT5kaXIpLAotCQkgICBwYXJtcy0+dHlw ZSwKLQkJICAgcGFybXMtPmlkeCk7Ci0JCXJldHVybiAtRUlOVkFMOworCQlpZiAoYWxsb2NhdGVk ICE9IFRGX1JNX0FMTE9DQVRFRF9FTlRSWV9JTl9VU0UpIHsKKwkJCVRGUF9EUlZfTE9HKEVSUiwK KwkJCSAgICIlcywgSW52YWxpZCBvciBub3QgYWxsb2NhdGVkIGluZGV4LCB0eXBlOiVkLCBpZHg6 JWRcbiIsCisJCQkgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRpciksCisJCQkgICBwYXJtcy0+dHlw ZSwKKwkJCSAgIHBhcm1zLT5pZHgpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KIAl9CiAKIAkv KiBTZXQgdGhlIGVudHJ5ICovCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29y ZS9sbC5jLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS9sbC5oLi4u CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS9tZXNvbi5idWlsZC4uLgpl cnJvcjogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL21lc29uLmJ1aWxkOiBkb2VzIG5vdCBleGlz dCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfY29y ZS5jLi4uCmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfY29yZS5jOiBkb2VzIG5v dCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZf Y29yZS5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfY29yZS5oOiBkb2Vz IG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUv dGZfZGV2aWNlLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpbmNsdWRlICJ0Zl9y bS5oIgojaWZkZWYgVEZfVENBTV9TSEFSRUQKI2luY2x1ZGUgInRmX3RjYW1fc2hhcmVkLmgiCiNl bmRpZiAvKiBURl9UQ0FNX1NIQVJFRCAqLwoKc3RydWN0IHRmOwoKLyogRm9yd2FyZCBkZWNsYXJh dGlvbnMgKi8Kc3RhdGljIGludCB0Zl9kZXZfdW5iaW5kX3A0KHN0cnVjdCB0ZiAqdGZwKTsKc3Rh dGljIGludCB0Zl9kZXZfdW5iaW5kX3A1OChzdHJ1Y3QgdGYgKnRmcCk7CgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlLmM6MTEKSHVuayAjMiBz dWNjZWVkZWQgYXQgMzYgKG9mZnNldCAtNTEgbGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKCWlmIChyc3ZfY250KSB7CgkJdGJsX2NmZy5udW1fZWxlbWVudHMgPSBURl9UQkxfVFlQ RV9NQVg7CgkJdGJsX2NmZy5jZmcgPSB0Zl90YmxfcDQ7CgkJdGJsX2NmZy5zaGFkb3dfY29weSA9 IHNoYWRvd19jb3B5OwoJCXRibF9jZmcucmVzb3VyY2VzID0gcmVzb3VyY2VzOwoJCXJjID0gdGZf dGJsX2JpbmQodGZwLCAmdGJsX2NmZyk7CgkJaWYgKHJjKSB7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlLmM6MTMxCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgoJCXRjYW1fY2ZnLmNmZyA9IHRmX3RjYW1fcDQ7CgkJdGNhbV9jZmcuc2hh ZG93X2NvcHkgPSBzaGFkb3dfY29weTsKCQl0Y2FtX2NmZy5yZXNvdXJjZXMgPSByZXNvdXJjZXM7 CiNpZmRlZiBURl9UQ0FNX1NIQVJFRAoJCXJjID0gdGZfdGNhbV9zaGFyZWRfYmluZCh0ZnAsICZ0 Y2FtX2NmZyk7CiNlbHNlIC8qICFURl9UQ0FNX1NIQVJFRCAqLwoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2RldmljZS5jOjE1MQplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKdGZfZGV2X2JpbmRfcDU4KHN0cnVjdCB0ZiAqdGZwLAoJCWJvb2wgc2hh ZG93X2NvcHksCgkJc3RydWN0IHRmX3Nlc3Npb25fcmVzb3VyY2VzICpyZXNvdXJjZXMsCgkJc3Ry dWN0IHRmX2Rldl9pbmZvICpkZXZfaGFuZGxlKQp7CglpbnQgcmM7CglpbnQgZnJjOwoKZXJyb3I6 IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2RldmljZS5jOjM2OQpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCWlmIChyc3ZfY250KSB7CgkJdGJsX2NmZy5udW1f ZWxlbWVudHMgPSBURl9UQkxfVFlQRV9NQVg7CgkJdGJsX2NmZy5jZmcgPSB0Zl90YmxfcDU4OwoJ CXRibF9jZmcuc2hhZG93X2NvcHkgPSBzaGFkb3dfY29weTsKCQl0YmxfY2ZnLnJlc291cmNlcyA9 IHJlc291cmNlczsKCQlyYyA9IHRmX3RibF9iaW5kKHRmcCwgJnRibF9jZmcpOwoJCWlmIChyYykg ewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2Rldmlj ZS5jOjQxNAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJZ290byBmYWlsOwoJCX0KCQlu b19yc3ZfZmxhZyA9IGZhbHNlOwoJfQoKCXJzdl9jbnQgPSB0Zl9kZXZfcmVzZXJ2YXRpb25fY2hl Y2soVEZfVENBTV9UQkxfVFlQRV9NQVgsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25l dC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlLmM6NDIzCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJCXRjYW1fY2ZnLmNmZyA9IHRmX3RjYW1fcDU4OwoJCXRjYW1fY2ZnLnNoYWRvd19jb3B5ID0g c2hhZG93X2NvcHk7CgkJdGNhbV9jZmcucmVzb3VyY2VzID0gcmVzb3VyY2VzOwojaWZkZWYgVEZf VENBTV9TSEFSRUQKCQlyYyA9IHRmX3RjYW1fc2hhcmVkX2JpbmQodGZwLCAmdGNhbV9jZmcpOwoj ZWxzZSAvKiAhVEZfVENBTV9TSEFSRUQgKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L2JueHQvdGZfY29yZS90Zl9kZXZpY2UuYzo0MzMKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CgkJZmFpbCA9IHRydWU7Cgl9CgoJcmMgPSB0Zl90YmxfdW5iaW5kKHRmcCk7CglpZiAocmMp IHsKCQlURlBfRFJWX0xPRyhJTkZPLAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv Ym54dC90Zl9jb3JlL3RmX2RldmljZS5jOjU2NQpIdW5rICMxMCBzdWNjZWVkZWQgYXQgMjQwIChv ZmZzZXQgLTM5MSBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCXJldHVybiB0 Zl9kZXZfYmluZF9wNCh0ZnAsCgkJCQkgICAgICBzaGFkb3dfY29weSwKCQkJCSAgICAgIHJlc291 cmNlcywKCQkJCSAgICAgIGRldl9oYW5kbGUpOwoJY2FzZSBURl9ERVZJQ0VfVFlQRV9USE9SOgoJ CWRldl9oYW5kbGUtPnR5cGUgPSB0eXBlOwoJCXJldHVybiB0Zl9kZXZfYmluZF9wNTgodGZwLAoJ CQkJICAgICAgIHNoYWRvd19jb3B5LAoJCQkJICAgICAgIHJlc291cmNlcywKCQkJCSAgICAgICBk ZXZfaGFuZGxlKTsKCWRlZmF1bHQ6CgkJVEZQX0RSVl9MT0coRVJSLAoJCQkgICAgIk5vIHN1Y2gg ZGV2aWNlXG4iKTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29y ZS90Zl9kZXZpY2UuYzo2MTUKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3Jl L3RmX2RldmljZS5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNl Lmg6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQv dGZfY29yZS90Zl9kZXZpY2VfcDQuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54dC90Zl9jb3Jl L3RmX2RldmljZV9wNC5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlX3A0LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJj aGluZyBmb3I6CnN0cnVjdCB0Zl9ybV9lbGVtZW50X2NmZyB0Zl9pZGVudF9wNFtURl9JREVOVF9U WVBFX01BWF0gPSB7CglbVEZfSURFTlRfVFlQRV9MMl9DVFhUX0hJR0hdID0gewoJCVRGX1JNX0VM RU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9MMl9DVFhUX1JFTUFQX0hJR0gs CgkJMCwgMCwgMAoJfSwKCVtURl9JREVOVF9UWVBFX0wyX0NUWFRfTE9XXSA9IHsKCQlURl9STV9F TEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfTDJfQ1RYVF9SRU1BUF9MT1cs CgkJMCwgMCwgMAoJfSwKCVtURl9JREVOVF9UWVBFX1BST0ZfRlVOQ10gPSB7CgkJVEZfUk1fRUxF TV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X1BST0ZfRlVOQywKCQkwLCAwLCAw Cgl9LAoJW1RGX0lERU5UX1RZUEVfV0NfUFJPRl0gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUElf QkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X1dDX1RDQU1fUFJPRl9JRCwKCQkwLCAwLCAwCgl9LAoJ W1RGX0lERU5UX1RZUEVfRU1fUFJPRl0gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENG QV9SRVNPVVJDRV9UWVBFX1A0X0VNX1BST0ZfSUQsCgkJMCwgMCwgMAoJfSwKfTsKCnN0cnVjdCB0 Zl9ybV9lbGVtZW50X2NmZyB0Zl90Y2FtX3A0W1RGX1RDQU1fVEJMX1RZUEVfTUFYXSA9IHsKCVtU Rl9UQ0FNX1RCTF9UWVBFX0wyX0NUWFRfVENBTV9ISUdIXSA9IHsKCQlURl9STV9FTEVNX0NGR19I Q0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfTDJfQ1RYVF9UQ0FNX0hJR0gsCgkJMCwgMCwg MAoJfSwKCVtURl9UQ0FNX1RCTF9UWVBFX0wyX0NUWFRfVENBTV9MT1ddID0gewoJCVRGX1JNX0VM RU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9MMl9DVFhUX1RDQU1fTE9XLAoJ CTAsIDAsIDAKCX0sCglbVEZfVENBTV9UQkxfVFlQRV9QUk9GX1RDQU1dID0gewoJCVRGX1JNX0VM RU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9QUk9GX1RDQU0sCgkJMCwgMCwg MAoJfSwKCVtURl9UQ0FNX1RCTF9UWVBFX1dDX1RDQU1dID0gewoJCVRGX1JNX0VMRU1fQ0ZHX0hD QVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9XQ19UQ0FNLAoJCTAsIDAsIDAKCX0sCglbVEZf VENBTV9UQkxfVFlQRV9TUF9UQ0FNXSA9IHsKCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZB X1JFU09VUkNFX1RZUEVfUDRfU1BfVENBTSwKCQkwLCAwLCAwCgl9LAp9OwoKc3RydWN0IHRmX3Jt X2VsZW1lbnRfY2ZnIHRmX3RibF9wNFtURl9UQkxfVFlQRV9NQVhdID0gewoJW1RGX1RCTF9UWVBF X0ZVTExfQUNUX1JFQ09SRF0gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNP VVJDRV9UWVBFX1A0X0ZVTExfQUNUSU9OLAoJCTAsIDAsIDAKCX0sCglbVEZfVEJMX1RZUEVfTUNB U1RfR1JPVVBTXSA9IHsKCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZ UEVfUDRfTUNHLAoJCTAsIDAsIDAKCX0sCglbVEZfVEJMX1RZUEVfQUNUX0VOQ0FQXzhCXSA9IHsK CQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfRU5DQVBfOEIs CgkJMCwgMCwgMAoJfSwKCVtURl9UQkxfVFlQRV9BQ1RfRU5DQVBfMTZCXSA9IHsKCQlURl9STV9F TEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfRU5DQVBfMTZCLAoJCTAsIDAs IDAKCX0sCglbVEZfVEJMX1RZUEVfQUNUX0VOQ0FQXzY0Ql0gPSB7CgkJVEZfUk1fRUxFTV9DRkdf SENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X0VOQ0FQXzY0QiwKCQkwLCAwLCAwCgl9LAoJ W1RGX1RCTF9UWVBFX0FDVF9TUF9TTUFDXSA9IHsKCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwg Q0ZBX1JFU09VUkNFX1RZUEVfUDRfU1BfTUFDLAoJCTAsIDAsIDAKCX0sCglbVEZfVEJMX1RZUEVf QUNUX1NQX1NNQUNfSVBWNF0gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNP VVJDRV9UWVBFX1A0X1NQX01BQ19JUFY0LAoJCTAsIDAsIDAKCX0sCglbVEZfVEJMX1RZUEVfQUNU X1NQX1NNQUNfSVBWNl0gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJD RV9UWVBFX1A0X1NQX01BQ19JUFY2LAoJCTAsIDAsIDAKCX0sCglbVEZfVEJMX1RZUEVfQUNUX1NU QVRTXzY0XSA9IHsKCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVf UDRfQ09VTlRFUl82NEIsCgkJMCwgMCwgMAoJfSwKCVtURl9UQkxfVFlQRV9BQ1RfTU9ESUZZX0lQ VjRdID0gewoJCVRGX1JNX0VMRU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9O QVRfSVBWNCwKCQkwLCAwLCAwCgl9LAoJW1RGX1RCTF9UWVBFX01FVEVSX1BST0ZdID0gewoJCVRG X1JNX0VMRU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9NRVRFUl9QUk9GLAoJ CTAsIDAsIDAKCX0sCglbVEZfVEJMX1RZUEVfTUVURVJfSU5TVF0gPSB7CgkJVEZfUk1fRUxFTV9D RkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X01FVEVSLAoJCTAsIDAsIDAKCX0sCglb VEZfVEJMX1RZUEVfTUlSUk9SX0NPTkZJR10gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEs IENGQV9SRVNPVVJDRV9UWVBFX1A0X01JUlJPUiwKCQkwLCAwLCAwCgl9LAoKfTsKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9kZXZpY2VfcDQuaDoxNQpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3RydWN0IHRmX3JtX2VsZW1lbnRfY2ZnIHRmX2Vt X2V4dF9wNFtURl9FTV9UQkxfVFlQRV9NQVhdID0gewoJW1RGX0VNX1RCTF9UWVBFX1RCTF9TQ09Q RV0gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X1RC TF9TQ09QRSwKCQkwLCAwLCAwCgl9LAp9OwoKc3RydWN0IHRmX3JtX2VsZW1lbnRfY2ZnIHRmX2Vt X2ludF9wNFtURl9FTV9UQkxfVFlQRV9NQVhdID0gewoJW1RGX0VNX1RCTF9UWVBFX0VNX1JFQ09S RF0gPSB7CgkJVEZfUk1fRUxFTV9DRkdfSENBUEksIENGQV9SRVNPVVJDRV9UWVBFX1A0X0VNX1JF QywKCQkwLCAwLCAwCgl9LAp9OwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2Ju eHQvdGZfY29yZS90Zl9kZXZpY2VfcDQuaDoxMTcKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv Ym54dC90Zl9jb3JlL3RmX2RldmljZV9wNTguYy4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54dC90 Zl9jb3JlL3RmX2RldmljZV9wNTguYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2RldmljZV9wNTguaC4uLgplcnJvcjog ZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2RldmljZV9wNTguaDogZG9lcyBub3QgZXhpc3Qg aW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX21zZy5j Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJaWYgKHJjICE9IDApCgkJcmV0dXJuIHJj OwoKCXRmcF9tZW1jcHkocGFyYW1zLT5kYXRhLCByZXNwLmRhdGEsIHJlcS5zaXplKTsKCglyZXR1 cm4gMDsKfQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3Rm X21zZy5jOjIyMzEKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3Jt LmMuLi4KSHVuayAjMSBzdWNjZWVkZWQgYXQgMzYgKG9mZnNldCAyIGxpbmVzKS4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CiAqICAgICAtICAgICAgICAgIC0gRmFpbHVyZSBpZiBuZWdhdGl2 ZQogKi8Kc3RhdGljIGludAp0Zl9ybV91cGRhdGVfcGFyZW50X3Jlc2VydmF0aW9ucyhzdHJ1Y3Qg dGZfcm1fZWxlbWVudF9jZmcgKmNmZywKCQkJCSB1aW50MTZfdCAqYWxsb2NfY250LAoJCQkJIHVp bnQxNl90IG51bV9lbGVtZW50cywKCQkJCSB1aW50MTZfdCAqcmVxX2NudCkKewoJaW50IHBhcmVu dCwgY2hpbGQ7CgoJLyogU2VhcmNoIHRocm91Z2ggYWxsIHRoZSBlbGVtZW50cyAqLwoJZm9yIChw YXJlbnQgPSAwOyBwYXJlbnQgPCBudW1fZWxlbWVudHM7IHBhcmVudCsrKSB7CgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfcm0uYzozNTYKZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CgkJCWlmIChhbGxvY19jbnRbcGFyZW50XSAlIGNmZ1twYXJlbnRd LnNsaWNlcykKCQkJCWNvbWJpbmVkX2NudCsrOwoKCQkJLyogU2VhcmNoIGFnYWluIHRocm91Z2gg YWxsIHRoZSBlbGVtZW50cyAqLwoJCQlmb3IgKGNoaWxkID0gMDsgY2hpbGQgPCBudW1fZWxlbWVu dHM7IGNoaWxkKyspIHsKCQkJCS8qIElmIHRoaXMgaXMgb25lIG9mIG15IGNoaWxkcmVuICovCgkJ CQlpZiAoY2ZnW2NoaWxkXS5jZmdfdHlwZSA9PQoJCQkJICAgIFRGX1JNX0VMRU1fQ0ZHX0hDQVBJ X0JBX0NISUxEICYmCgkJCQkgICAgY2ZnW2NoaWxkXS5wYXJlbnRfc3VidHlwZSA9PSBwYXJlbnQp IHsKCQkJCQl1aW50MTZfdCBjbnQgPSAwOwoJCQkJCVJURV9BU1NFUlQoY2ZnW2NoaWxkXS5zbGlj ZXMpOwoKCQkJCQkvKiBJbmNyZW1lbnQgdGhlIHBhcmVudHMgY29tYmluZWQgY291bnQKCQkJCQkg KiB3aXRoIGVhY2ggY2hpbGQncyBjb3VudCBhZGp1c3RlZCBmb3IKCQkJCQkgKiBudW1iZXIgb2Yg c2xpY2VzIHBlciBSTSBhbGxvY2F0ZWQgaXRlbS4KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2JueHQvdGZfY29yZS90Zl9ybS5jOjM3NwplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKCgkvKiBVcGRhdGUgdGhlIHJlcV9jbnQgYmFzZWQgdXBvbiB0aGUgZWxlbWVudCBjb25maWd1 cmF0aW9uCgkgKi8KCXRmX3JtX3VwZGF0ZV9wYXJlbnRfcmVzZXJ2YXRpb25zKHBhcm1zLT5jZmcs CgkJCQkJIHBhcm1zLT5hbGxvY19jbnQsCgkJCQkJIHBhcm1zLT5udW1fZWxlbWVudHMsCgkJCQkJ IHJlcV9jbnQpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3Jl L3RmX3JtLmM6NDc5CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCQlkYltpXS5jZmdfdHlw ZSA9IGNmZy0+Y2ZnX3R5cGU7CgkJZGJbaV0uaGNhcGlfdHlwZSA9IGNmZy0+aGNhcGlfdHlwZTsK CgkJLyogU2F2ZSB0aGUgcGFyZW50IHN1YnR5cGUgZm9yIGxhdGVyIHVzZSB0byBmaW5kIHRoZSBw b29sCgkJICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUv dGZfcm0uYzo1OTQKSHVuayAjNiBzdWNjZWVkZWQgYXQgOTEwIChvZmZzZXQgLTM4MSBsaW5lcyku CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9ybS5oLi4uCkh1bmsg IzIgc3VjY2VlZGVkIGF0IDk1IChvZmZzZXQgLTkgbGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKCXVpbnQxNl90IGhjYXBpX3R5cGU7CgoJLyoqCgkgKiBpZiBjZmdfdHlwZSA9PSBU Rl9STV9FTEVNX0NGR19IQ0FQSV9CQV9DSElMRAoJICoKCSAqIFBhcmVudCBUcnVmbG93IG1vZHVs ZSBzdWJ0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlIHR5cGUuCgkgKi8KCXVpbnQx Nl90IHBhcmVudF9zdWJ0eXBlOwoKCS8qKgoJICogaWYgY2ZnX3R5cGUgPT0gVEZfUk1fRUxFTV9D RkdfSENBUElfQkFfQ0hJTEQKCSAqCgkgKiBSZXNvdXJjZSBzbGljZXMuICBIb3cgbWFueSBzbGlj ZXMgd2lsbCBmaXQgaW4gdGhlCgkgKiByZXNvdXJjZSBwb29sIGNodW5rIHNpemUuCgkgKi8KCXVp bnQ4X3Qgc2xpY2VzOwoKCS8qKgoJICogUG9vbCBlbGVtZW50IGRpdmlkZXIgY291bnQKCSAqIElm IDAgb3IgMSwgdGhlcmUgaXMgMToxIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhlIFJNCgkgKiBC QSBwb29sIHJlc291cmNlIGVsZW1lbnQgYW5kIHRoZSBIQ0FQSSBSTSBmaXJtd2FyZQoJICogcmVz b3VyY2UuICBJZiA+IDEsIHRoZSBSTSBCQSBwb29sIGVsZW1lbnQgaGFzIGEgMTpuCgkgKiBjb3Jy ZXNwb25kZW5jZSB0byB0aGUgSENBUEkgUk0gZmlybXdhcmUgcmVzb3VyY2UuCgkgKi8KCXVpbnQ4 X3QgZGl2aWRlcjsKfTsKCi8qKgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54 dC90Zl9jb3JlL3RmX3JtLmg6MTI1Ckh1bmsgIzQgc3VjY2VlZGVkIGF0IDExMyAob2Zmc2V0IC0y NCBsaW5lcykuCkh1bmsgIzUgc3VjY2VlZGVkIGF0IDI4MCAob2Zmc2V0IC0yOCBsaW5lcykuCkh1 bmsgIzYgc3VjY2VlZGVkIGF0IDM2MCAob2Zmc2V0IC0zMCBsaW5lcykuCkh1bmsgIzcgc3VjY2Vl ZGVkIGF0IDUwNSAob2Zmc2V0IC02NCBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2JueHQvdGZfY29yZS90Zl9zZXNzaW9uLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgkJCSBwYXJtcy0+b3Blbl9jZmctPmRldmljZV90eXBlLAoJCQkgc2Vzc2lvbi0+c2hhZG93X2Nv cHksCgkJCSAmcGFybXMtPm9wZW5fY2ZnLT5yZXNvdXJjZXMsCgkJCSAmc2Vzc2lvbi0+ZGV2KTsK CgkvKiBMb2dnaW5nIGhhbmRsZWQgYnkgZGV2X2JpbmQgKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9zZXNzaW9uLmM6MjAyCkh1bmsgIzIgc3VjY2Vl ZGVkIGF0IDY0MCAob2Zmc2V0IC02NiBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJdGZzLT50Y2FtX3NoYXJlZF9kYl9oYW5kbGUgPSB0Y2FtX3NoYXJlZF9kYl9oYW5kbGU7Cgly ZXR1cm4gcmM7Cn0KI2VuZGlmIC8qIFRGX1RDQU1fU0hBUkVEICovCgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfc2Vzc2lvbi5jOjEwMTIKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3Nlc3Npb24uaC4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCSAqLwoJdm9pZCAqdGNhbV9zaGFyZWRfZGJfaGFuZGxlOwojZW5k aWYgLyogVEZfVENBTV9TSEFSRUQgKi8KfTsKCi8qKgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3Nlc3Npb24uaDoxNjYKZXJyb3I6IHdoaWxlIHNlYXJj aGluZyBmb3I6CiAqCiAqIEByZWYgdGZfc2Vzc2lvbl9zZXRfdGNhbV9zaGFyZWRfZGIKICogI2Vu ZGlmCiAqLwoKLyoqCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2Nv cmUvdGZfc2Vzc2lvbi5oOjI3OApIdW5rICMzIHN1Y2NlZWRlZCBhdCAzNjUgKG9mZnNldCAtNzgg bGluZXMpLgpIdW5rICM0IHN1Y2NlZWRlZCBhdCAzNzggKG9mZnNldCAtNzggbGluZXMpLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKdGZfc2Vzc2lvbl9nZXRfdGNhbV9zaGFyZWRfZGIoc3Ry dWN0IHRmICp0ZnAsCgkJCSAgICAgIHZvaWQgKip0Y2FtX3NoYXJlZF9kYl9oYW5kbGUpOwoKI2Vu ZGlmIC8qIF9URl9TRVNTSU9OX0hfICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25l dC9ibnh0L3RmX2NvcmUvdGZfc2Vzc2lvbi5oOjYxNApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9ibnh0L3RmX2NvcmUvdGZfc3JhbV9tZ3IuYy4uLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9ibnh0L3RmX2NvcmUvdGZfc3JhbV9tZ3IuaC4uLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9ibnh0L3RmX2NvcmUvdGZfdGJsLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNp bmNsdWRlICJ0Zl9zZXNzaW9uLmgiCiNpbmNsdWRlICJ0Zl9kZXZpY2UuaCIKCiNkZWZpbmUgVEZf VEJMX1JNX1RPX1BUUihuZXdfaWR4LCBpZHgsIGJhc2UsIHNoaWZ0KSB7CQlcCgkJKihuZXdfaWR4 KSA9ICgoKGlkeCkgKyAoYmFzZSkpIDw8IChzaGlmdCkpOwlcCn0KCiNkZWZpbmUgVEZfVEJMX1BU Ul9UT19STShuZXdfaWR4LCBpZHgsIGJhc2UsIHNoaWZ0KSB7CQlcCgkJKihuZXdfaWR4KSA9ICgo KGlkeCkgPj4gKHNoaWZ0KSkgLSAoYmFzZSkpOwlcCn0KCnN0cnVjdCB0ZjsKCi8qKgogKiBTaGFk b3cgaW5pdCBmbGFnLCBzZXQgb24gYmluZCBhbmQgY2xlYXJlZCBvbiB1bmJpbmQKICovCnN0YXRp YyB1aW50OF90IHNoYWRvd19pbml0OwoKaW50CnRmX3RibF9iaW5kKHN0cnVjdCB0ZiAqdGZwLAoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjE2 CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCXRibF9kYi0+dGJsX2RiW2ldID0gTlVMTDsK CX0KCglzaGFkb3dfaW5pdCA9IDA7CgoJcmV0dXJuIDA7Cn0KCgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsLmM6MTIxCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoJc3RydWN0IHRmX3JtX2FsbG9jYXRlX3Bhcm1zIGFwYXJtcyA9IHsgMCB9OwoJ c3RydWN0IHRmX3Nlc3Npb24gKnRmczsKCXN0cnVjdCB0Zl9kZXZfaW5mbyAqZGV2OwoJdWludDE2 X3QgYmFzZSA9IDAsIHNoaWZ0ID0gMDsKCXN0cnVjdCB0Ymxfcm1fZGIgKnRibF9kYjsKCXZvaWQg KnRibF9kYl9wdHIgPSBOVUxMOwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2Ju eHQvdGZfY29yZS90Zl90YmwuYzoxMzUKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyYyA9 IHRmX3Nlc3Npb25fZ2V0X2RiKHRmcCwgVEZfTU9EVUxFX1RZUEVfVEFCTEUsICZ0YmxfZGJfcHRy KTsKCWlmIChyYykgewoJCVRGUF9EUlZfTE9HKEVSUiwKCQkJICAgICJGYWlsZWQgdG8gZ2V0IGVt X2V4dF9kYiBmcm9tIHNlc3Npb24sIHJjOiVzXG4iLAoJCQkgICAgc3RyZXJyb3IoLXJjKSk7CgkJ cmV0dXJuIHJjOwoJfQoJdGJsX2RiID0gKHN0cnVjdCB0Ymxfcm1fZGIgKil0YmxfZGJfcHRyOwoK CS8qIE9ubHkgZ2V0IHRhYmxlIGluZm8gaWYgcmVxdWlyZWQgZm9yIHRoZSBkZXZpY2UgKi8KCWlm IChkZXYtPm9wcy0+dGZfZGV2X2dldF90YmxfaW5mbykgewoJCXJjID0gZGV2LT5vcHMtPnRmX2Rl dl9nZXRfdGJsX2luZm8odGZwLAoJCQkJCQkgICB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXSwK CQkJCQkJICAgcGFybXMtPnR5cGUsCgkJCQkJCSAgICZiYXNlLAoJCQkJCQkgICAmc2hpZnQpOwoJ CWlmIChyYykgewoJCQlURlBfRFJWX0xPRyhFUlIsCgkJCQkgICAgIiVzOiBGYWlsZWQgdG8gZ2V0 IHRhYmxlIGluZm86JWRcbiIsCgkJCQkgICAgdGZfZGlyXzJfc3RyKHBhcm1zLT5kaXIpLAoJCQkJ ICAgIHBhcm1zLT50eXBlKTsKCQkJcmV0dXJuIHJjOwoJCX0KCX0KCgkvKiBBbGxvY2F0ZSByZXF1 ZXN0ZWQgZWxlbWVudCAqLwoJYXBhcm1zLnJtX2RiID0gdGJsX2RiLT50YmxfZGJbcGFybXMtPmRp cl07CglhcGFybXMuc3VidHlwZSA9IHBhcm1zLT50eXBlOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjE1NAplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKCXJjID0gdGZfcm1fYWxsb2NhdGUoJmFwYXJtcyk7CglpZiAocmMpIHsKCQlURlBf RFJWX0xPRyhFUlIsCgkJCSAgICAiJXM6IEZhaWxlZCBhbGxvY2F0ZSwgdHlwZTolZFxuIiwKCQkJ ICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKCQkJICAgIHBhcm1zLT50eXBlKTsKCQlyZXR1 cm4gcmM7Cgl9CgoJVEZfVEJMX1JNX1RPX1BUUigmaWR4LCBpZHgsIGJhc2UsIHNoaWZ0KTsKCSpw YXJtcy0+aWR4ID0gaWR4OwoKCXJldHVybiAwOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjE4MwplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKCWludCBhbGxvY2F0ZWQgPSAwOwoJc3RydWN0IHRmX3Nlc3Npb24gKnRmczsKCXN0cnVjdCB0 Zl9kZXZfaW5mbyAqZGV2OwoJdWludDE2X3QgYmFzZSA9IDAsIHNoaWZ0ID0gMDsKCXN0cnVjdCB0 Ymxfcm1fZGIgKnRibF9kYjsKCXZvaWQgKnRibF9kYl9wdHIgPSBOVUxMOwoKCmVycm9yOiBwYXRj aCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuYzoyMDUKZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6Cgl9Cgl0YmxfZGIgPSAoc3RydWN0IHRibF9ybV9kYiAqKXRibF9k Yl9wdHI7CgoJLyogT25seSBnZXQgdGFibGUgaW5mbyBpZiByZXF1aXJlZCBmb3IgdGhlIGRldmlj ZSAqLwoJaWYgKGRldi0+b3BzLT50Zl9kZXZfZ2V0X3RibF9pbmZvKSB7CgkJcmMgPSBkZXYtPm9w cy0+dGZfZGV2X2dldF90YmxfaW5mbyh0ZnAsCgkJCQkJCSAgIHRibF9kYi0+dGJsX2RiW3Bhcm1z LT5kaXJdLAoJCQkJCQkgICBwYXJtcy0+dHlwZSwKCQkJCQkJICAgJmJhc2UsCgkJCQkJCSAgICZz aGlmdCk7CgkJaWYgKHJjKSB7CgkJCVRGUF9EUlZfTE9HKEVSUiwKCQkJCSAgICAiJXM6IEZhaWxl ZCB0byBnZXQgdGFibGUgaW5mbzolZFxuIiwKCQkJCSAgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRp ciksCgkJCQkgICAgcGFybXMtPnR5cGUpOwoJCQlyZXR1cm4gcmM7CgkJfQoJfQoKCS8qIENoZWNr IGlmIGVsZW1lbnQgaXMgaW4gdXNlICovCglhcGFybXMucm1fZGIgPSB0YmxfZGItPnRibF9kYltw YXJtcy0+ZGlyXTsKCWFwYXJtcy5zdWJ0eXBlID0gcGFybXMtPnR5cGU7CgoJVEZfVEJMX1BUUl9U T19STSgmYXBhcm1zLmluZGV4LCBwYXJtcy0+aWR4LCBiYXNlLCBzaGlmdCk7CgoJYXBhcm1zLmFs bG9jYXRlZCA9ICZhbGxvY2F0ZWQ7CglyYyA9IHRmX3JtX2lzX2FsbG9jYXRlZCgmYXBhcm1zKTsK CWlmIChyYykKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90 Zl90YmwuYzoyMzAKSHVuayAjOCBzdWNjZWVkZWQgYXQgMjUzIChvZmZzZXQgNDIgbGluZXMpLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQlyYyA9IHRmX3JtX2dldF9oY2FwaV90eXBlKCZo cGFybXMpOwoJCWlmIChyYykgewoJCQlURlBfRFJWX0xPRyhFUlIsCgkJCQkgICAgIiVzLCBGYWls ZWQgdHlwZSBsb29rdXAsIHR5cGU6JWQsIHJjOiVzXG4iLAoJCQkJICAgIHRmX2Rpcl8yX3N0cihw YXJtcy0+ZGlyKSwKCQkJCSAgICBwYXJtcy0+dHlwZSwKCQkJCSAgICBzdHJlcnJvcigtcmMpKTsK CQkJcmV0dXJuIHJjOwoJCX0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQv dGZfY29yZS90Zl90YmwuYzoyNzkKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCQkJICBw YXJtcy0+aWR4KTsKCQlpZiAocmMpIHsKCQkJVEZQX0RSVl9MT0coRVJSLAoJCQkJICAgICIlcywg U2V0IGZhaWxlZCwgdHlwZTolZCwgcmM6JXNcbiIsCgkJCQkgICAgdGZfZGlyXzJfc3RyKHBhcm1z LT5kaXIpLAoJCQkJICAgIHBhcm1zLT50eXBlLAoJCQkJICAgIHN0cmVycm9yKC1yYykpOwoJCQly ZXR1cm4gcmM7CgkJfQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9j b3JlL3RmX3RibC5jOjI5NQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCS8qIEZyZWUgcmVx dWVzdGVkIGVsZW1lbnQgKi8KCWZwYXJtcy5ybV9kYiA9IHRibF9kYi0+dGJsX2RiW3Bhcm1zLT5k aXJdOwoJZnBhcm1zLnN1YnR5cGUgPSBwYXJtcy0+dHlwZTsKCglURl9UQkxfUFRSX1RPX1JNKCZm cGFybXMuaW5kZXgsIHBhcm1zLT5pZHgsIGJhc2UsIHNoaWZ0KTsKCglyYyA9IHRmX3JtX2ZyZWUo JmZwYXJtcyk7CglpZiAocmMpIHsKCQlURlBfRFJWX0xPRyhFUlIsCgkJCSAgICAiJXM6IEZyZWUg ZmFpbGVkLCB0eXBlOiVkLCBpbmRleDolZFxuIiwKCQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ ZGlyKSwKCQkJICAgIHBhcm1zLT50eXBlLAoJCQkgICAgcGFybXMtPmlkeCk7CgkJcmV0dXJuIHJj OwoJfQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3Ri bC5jOjMwNgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXN0cnVjdCB0Zl9ybV9nZXRfaGNh cGlfcGFybXMgaHBhcm1zID0geyAwIH07CglzdHJ1Y3QgdGZfc2Vzc2lvbiAqdGZzOwoJc3RydWN0 IHRmX2Rldl9pbmZvICpkZXY7Cgl1aW50MTZfdCBiYXNlID0gMCwgc2hpZnQgPSAwOwoJc3RydWN0 IHRibF9ybV9kYiAqdGJsX2RiOwoJdm9pZCAqdGJsX2RiX3B0ciA9IE5VTEw7CgoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjMzMwplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKCX0KCXRibF9kYiA9IChzdHJ1Y3QgdGJsX3JtX2RiICopdGJs X2RiX3B0cjsKCgkvKiBPbmx5IGdldCB0YWJsZSBpbmZvIGlmIHJlcXVpcmVkIGZvciB0aGUgZGV2 aWNlICovCglpZiAoZGV2LT5vcHMtPnRmX2Rldl9nZXRfdGJsX2luZm8pIHsKCQlyYyA9IGRldi0+ b3BzLT50Zl9kZXZfZ2V0X3RibF9pbmZvKHRmcCwKCQkJCQkJICAgdGJsX2RiLT50YmxfZGJbcGFy bXMtPmRpcl0sCgkJCQkJCSAgIHBhcm1zLT50eXBlLAoJCQkJCQkgICAmYmFzZSwKCQkJCQkJICAg JnNoaWZ0KTsKCQlpZiAocmMpIHsKCQkJVEZQX0RSVl9MT0coRVJSLAoJCQkJICAgICIlczogRmFp bGVkIHRvIGdldCB0YWJsZSBpbmZvOiVkXG4iLAoJCQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ ZGlyKSwKCQkJCSAgICBwYXJtcy0+dHlwZSk7CgkJCXJldHVybiByYzsKCQl9Cgl9CgoJLyogRG8g bm90IGNoZWNrIG1ldGVyIGRyb3AgY291bnRlciBiZWNhdXNlIGl0IGlzIG5vdCBhbGxvY2F0ZWQK CSAqIHJlc291cmNlcwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9j b3JlL3RmX3RibC5jOjM1OAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkvKiBWZXJpZnkg dGhhdCB0aGUgZW50cnkgaGFzIGJlZW4gcHJldmlvdXNseSBhbGxvY2F0ZWQgKi8KCQlhcGFybXMu cm1fZGIgPSB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXTsKCQlhcGFybXMuc3VidHlwZSA9IHBh cm1zLT50eXBlOwoJCVRGX1RCTF9QVFJfVE9fUk0oJmFwYXJtcy5pbmRleCwgcGFybXMtPmlkeCwg YmFzZSwgc2hpZnQpOwoKCQlhcGFybXMuYWxsb2NhdGVkID0gJmFsbG9jYXRlZDsKCQlyYyA9IHRm X3JtX2lzX2FsbG9jYXRlZCgmYXBhcm1zKTsKCQlpZiAocmMpCgkJCXJldHVybiByYzsKCgkJaWYg KGFsbG9jYXRlZCAhPSBURl9STV9BTExPQ0FURURfRU5UUllfSU5fVVNFKSB7CgkJCVRGUF9EUlZf TE9HKEVSUiwKCQkJICAgIiVzLCBJbnZhbGlkIG9yIG5vdCBhbGxvY2F0ZWQgaW5kZXgsIHR5cGU6 JWQsIGlkeDolZFxuIiwKCQkJICAgdGZfZGlyXzJfc3RyKHBhcm1zLT5kaXIpLAoJCQkgICBwYXJt cy0+dHlwZSwKCQkJICAgcGFybXMtPmlkeCk7CgkJCXJldHVybiAtRUlOVkFMOwoJCX0KCX0KCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuYzozODEK SHVuayAjMTUgc3VjY2VlZGVkIGF0IDQ3MiAob2Zmc2V0IDEzNCBsaW5lcykuCkh1bmsgIzE2IHN1 Y2NlZWRlZCBhdCA0ODcgKG9mZnNldCAxMzQgbGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKCXN0cnVjdCB0Zl9ybV9nZXRfaGNhcGlfcGFybXMgaHBhcm1zID0geyAwIH07CglzdHJ1 Y3QgdGZfc2Vzc2lvbiAqdGZzOwoJc3RydWN0IHRmX2Rldl9pbmZvICpkZXY7Cgl1aW50MTZfdCBi YXNlID0gMCwgc2hpZnQgPSAwOwoJc3RydWN0IHRibF9ybV9kYiAqdGJsX2RiOwoJdm9pZCAqdGJs X2RiX3B0ciA9IE5VTEw7CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90 Zl9jb3JlL3RmX3RibC5jOjQ0MQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCX0KCXRibF9k YiA9IChzdHJ1Y3QgdGJsX3JtX2RiICopdGJsX2RiX3B0cjsKCgkvKiBPbmx5IGdldCB0YWJsZSBp bmZvIGlmIHJlcXVpcmVkIGZvciB0aGUgZGV2aWNlICovCglpZiAoZGV2LT5vcHMtPnRmX2Rldl9n ZXRfdGJsX2luZm8pIHsKCQlyYyA9IGRldi0+b3BzLT50Zl9kZXZfZ2V0X3RibF9pbmZvKHRmcCwK CQkJCQkJICAgdGJsX2RiLT50YmxfZGJbcGFybXMtPmRpcl0sCgkJCQkJCSAgIHBhcm1zLT50eXBl LAoJCQkJCQkgICAmYmFzZSwKCQkJCQkJICAgJnNoaWZ0KTsKCQlpZiAocmMpIHsKCQkJVEZQX0RS Vl9MT0coRVJSLAoJCQkJICAgICIlczogRmFpbGVkIHRvIGdldCB0YWJsZSBpbmZvOiVkXG4iLAoJ CQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKCQkJCSAgICBwYXJtcy0+dHlwZSk7CgkJ CXJldHVybiByYzsKCQl9Cgl9CgoJLyogRG8gbm90IGNoZWNrIG1ldGVyIGRyb3AgY291bnRlciBi ZWNhdXNlIGl0IGlzIG5vdCBhbGxvY2F0ZWQKCSAqIHJlc291cmNlcy4KCSAqLwoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjQ2NgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkvKiBWZXJpZnkgdGhhdCB0aGUgZW50cnkgaGFzIGJlZW4g cHJldmlvdXNseSBhbGxvY2F0ZWQgKi8KCQlhcGFybXMucm1fZGIgPSB0YmxfZGItPnRibF9kYltw YXJtcy0+ZGlyXTsKCQlhcGFybXMuc3VidHlwZSA9IHBhcm1zLT50eXBlOwoJCVRGX1RCTF9QVFJf VE9fUk0oJmFwYXJtcy5pbmRleCwgcGFybXMtPmlkeCwgYmFzZSwgc2hpZnQpOwoKCQlhcGFybXMu YWxsb2NhdGVkID0gJmFsbG9jYXRlZDsKCQlyYyA9IHRmX3JtX2lzX2FsbG9jYXRlZCgmYXBhcm1z KTsKCQlpZiAocmMpCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2Nv cmUvdGZfdGJsLmM6NDg5CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCQlpZiAoYWxsb2Nh dGVkICE9IFRGX1JNX0FMTE9DQVRFRF9FTlRSWV9JTl9VU0UpIHsKCQkJVEZQX0RSVl9MT0coRVJS LAoJCQkgICAiJXMsIEludmFsaWQgb3Igbm90IGFsbG9jYXRlZCBpbmRleCwgdHlwZTolZCwgaWR4 OiVkXG4iLAoJCQkgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRpciksCgkJCSAgIHBhcm1zLT50eXBl LAoJCQkgICBwYXJtcy0+aWR4KTsKCQkJcmV0dXJuIC1FSU5WQUw7CgkJfQoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5jOjQ5OApIdW5rICMyMSBz dWNjZWVkZWQgYXQgNTQxIChvZmZzZXQgMTEzIGxpbmVzKS4KSHVuayAjMjIgc3VjY2VlZGVkIGF0 IDU1NyAob2Zmc2V0IDExMyBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJc3Ry dWN0IHRmX3JtX2NoZWNrX2luZGV4ZXNfaW5fcmFuZ2VfcGFybXMgY3Bhcm1zID0geyAwIH07Cglz dHJ1Y3QgdGZfc2Vzc2lvbiAqdGZzOwoJc3RydWN0IHRmX2Rldl9pbmZvICpkZXY7Cgl1aW50MTZf dCBiYXNlID0gMCwgc2hpZnQgPSAwOwoJc3RydWN0IHRibF9ybV9kYiAqdGJsX2RiOwoJdm9pZCAq dGJsX2RiX3B0ciA9IE5VTEw7CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54 dC90Zl9jb3JlL3RmX3RibC5jOjU0OQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCX0KCXRi bF9kYiA9IChzdHJ1Y3QgdGJsX3JtX2RiICopdGJsX2RiX3B0cjsKCgkvKiBPbmx5IGdldCB0YWJs ZSBpbmZvIGlmIHJlcXVpcmVkIGZvciB0aGUgZGV2aWNlICovCglpZiAoZGV2LT5vcHMtPnRmX2Rl dl9nZXRfdGJsX2luZm8pIHsKCQlyYyA9IGRldi0+b3BzLT50Zl9kZXZfZ2V0X3RibF9pbmZvKHRm cCwKCQkJCQkJICAgdGJsX2RiLT50YmxfZGJbcGFybXMtPmRpcl0sCgkJCQkJCSAgIHBhcm1zLT50 eXBlLAoJCQkJCQkgICAmYmFzZSwKCQkJCQkJICAgJnNoaWZ0KTsKCQlpZiAocmMpIHsKCQkJVEZQ X0RSVl9MT0coRVJSLAoJCQkJICAgICIlczogRmFpbGVkIHRvIGdldCB0YWJsZSBpbmZvOiVkXG4i LAoJCQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKCQkJCSAgICBwYXJtcy0+dHlwZSk7 CgkJCXJldHVybiByYzsKCQl9Cgl9CgoJLyogVmVyaWZ5IHRoYXQgdGhlIGVudHJpZXMgYXJlIGlu IHRoZSByYW5nZSBvZiByZXNlcnZlZCByZXNvdXJjZXMuICovCgljcGFybXMucm1fZGIgPSB0Ymxf ZGItPnRibF9kYltwYXJtcy0+ZGlyXTsKCWNwYXJtcy5zdWJ0eXBlID0gcGFybXMtPnR5cGU7CgoJ VEZfVEJMX1BUUl9UT19STSgmY3Bhcm1zLnN0YXJ0aW5nX2luZGV4LCBwYXJtcy0+c3RhcnRpbmdf aWR4LAoJCQkgYmFzZSwgc2hpZnQpOwoKCWNwYXJtcy5udW1fZW50cmllcyA9IHBhcm1zLT5udW1f ZW50cmllczsKCglyYyA9IHRmX3JtX2NoZWNrX2luZGV4ZXNfaW5fcmFuZ2UoJmNwYXJtcyk7Cglp ZiAocmMpIHsKCQlURlBfRFJWX0xPRyhFUlIsCgkJCSAgICAiJXMsIEludmFsaWQgb3IgJWQgaW5k ZXggc3RhcnRpbmcgZnJvbSAlZCIKCQkJICAgICIgbm90IGluIHJhbmdlLCB0eXBlOiVkIiwKCQkJ ICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKCQkJICAgIHBhcm1zLT5zdGFydGluZ19pZHgs CgkJCSAgICBwYXJtcy0+bnVtX2VudHJpZXMsCgkJCSAgICBwYXJtcy0+dHlwZSk7CgkJcmV0dXJu IHJjOwoJfQoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90 Zl90YmwuYzo1NzQKSHVuayAjMjUgc3VjY2VlZGVkIGF0IDYxMCAob2Zmc2V0IDk4IGxpbmVzKS4K SHVuayAjMjYgc3VjY2VlZGVkIGF0IDYyNyAob2Zmc2V0IDk4IGxpbmVzKS4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CglzdHJ1Y3QgdGZfcm1fZ2V0X2FsbG9jX2luZm9fcGFybXMgYWluZm87 Cgl2b2lkICp0YmxfZGJfcHRyID0gTlVMTDsKCXN0cnVjdCB0Ymxfcm1fZGIgKnRibF9kYjsKCXVp bnQxNl90IGJhc2UgPSAwLCBzaGlmdCA9IDA7CglzdHJ1Y3QgdGZfZGV2X2luZm8gKmRldjsKCXN0 cnVjdCB0Zl9zZXNzaW9uICp0ZnM7CgoJVEZfQ0hFQ0tfUEFSTVMyKHRmcCwgdGJsKTsKCgplcnJv cjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsLmM6NjUzCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCXRibF9kYiA9IChzdHJ1Y3QgdGJsX3JtX2RiICop dGJsX2RiX3B0cjsKCgkvKiBjaGVjayBpZiByZXNlcnZlZCByZXNvdXJjZSBmb3IgV0MgaXMgbXVs dGlwbGUgb2YgbnVtX3NsaWNlcyAqLwoJZm9yIChkID0gMDsgZCA8IFRGX0RJUl9NQVg7IGQrKykg ewoJCWFpbmZvLnJtX2RiID0gdGJsX2RiLT50YmxfZGJbZF07CgkJZGluZm8gPSB0YmxbZF0uaW5m bzsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Ymwu Yzo2NzcKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibC5oLi4u CmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsLmg6IGRvZXMgbm90IG1hdGNo IGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Ymxfc3Jh bS5jLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Ymxfc3Jh bS5oLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Y2FtLmMu Li4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglzdHJ1Y3QgdGZfc2hhZG93X3RjYW1fZnJl ZV9kYl9wYXJtcyBmc2hhZG93OwoJc3RydWN0IHRmX3NoYWRvd190Y2FtX2NmZ19wYXJtcyBzaGFk b3dfY2ZnOwoJc3RydWN0IHRmX3NoYWRvd190Y2FtX2NyZWF0ZV9kYl9wYXJtcyBzaGFkb3dfY2Ri OwoJdWludDE2X3QgbnVtX3NsaWNlcyA9IDE7CglzdHJ1Y3QgdGZfc2Vzc2lvbiAqdGZzOwoJc3Ry dWN0IHRmX2Rldl9pbmZvICpkZXY7CglzdHJ1Y3QgdGNhbV9ybV9kYiAqdGNhbV9kYjsKCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Y2FtLmM6NDMKZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglpZiAocmMpCgkJcmV0dXJuIHJjOwoKCWlmIChkZXYt Pm9wcy0+dGZfZGV2X2dldF90Y2FtX3NsaWNlX2luZm8gPT0gTlVMTCkgewoJCXJjID0gLUVPUE5P VFNVUFA7CgkJVEZQX0RSVl9MT0coRVJSLAoJCQkgICAgIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVk LCByYzolc1xuIiwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29y ZS90Zl90Y2FtLmM6NjEKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJcmV0dXJuIHJjOwoJ fQoKCXJjID0gZGV2LT5vcHMtPnRmX2Rldl9nZXRfdGNhbV9zbGljZV9pbmZvKHRmcCwKCQkJCQkJ ICBURl9UQ0FNX1RCTF9UWVBFX1dDX1RDQU0sCgkJCQkJCSAgMCwKCQkJCQkJICAmbnVtX3NsaWNl cyk7CglpZiAocmMpCgkJcmV0dXJuIHJjOwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L2JueHQvdGZfY29yZS90Zl90Y2FtLmM6NjkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv Ym54dC90Zl9jb3JlL3RmX3RjYW0uaC4uLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0 L3RmX2NvcmUvdGZfdGNhbV9zaGFyZWQuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54dC90Zl9j b3JlL3RmX3RjYW1fc2hhcmVkLmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl91dGlsLmMuLi4KZXJyb3I6IGRyaXZlcnMv bmV0L2JueHQvdGZfY29yZS90Zl91dGlsLmM6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2JueHRfdWxwLmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CglzaXplX3QgY29weV9uYnl0ZXM7Cgl1aW50MzJfdCB1bHBfZGV2X2lk ID0gQk5YVF9VTFBfREVWSUNFX0lEX0xBU1Q7CglpbnQzMl90CXJjID0gMDsKCgkvKiBvbmx5IHBl cmZvcm0gdGhpcyBpZiBzaGFyZWQgc2Vzc2lvbiBpcyBlbmFibGVkLiAqLwoJaWYgKCFibnh0X3Vs cF9jbnR4dF9zaGFyZWRfc2Vzc2lvbl9lbmFibGVkKGJwLT51bHBfY3R4KSkKCmVycm9yOiBwYXRj aCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2JueHRfdWxwLmM6Mzg0CmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgoJaWYgKHJjKQoJCXJldHVybiByYzsKCglyYyA9IGJueHRfdWxw X2NudHh0X2Rldl9pZF9nZXQoYnAtPnVscF9jdHgsICZ1bHBfZGV2X2lkKTsKCWlmIChyYykgewoJ CUJOWFRfVEZfREJHKEVSUiwgIlVuYWJsZSB0byBnZXQgZGV2aWNlIGlkIGZyb20gdWxwLlxuIik7 CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC9ibnh0X3VscC5j OjQyMgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglwYXJtcy5zaGFkb3dfY29weSA9IHRy dWU7CglwYXJtcy5icCA9IGJwOwoKCS8qCgkgKiBPcGVuIHRoZSBzZXNzaW9uIGhlcmUsIGJ1dCB0 aGUgY29sbGVjdCB0aGUgcmVzb3VyY2VzIGR1cmluZyB0aGUKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2JueHRfdWxwLmM6NDQ1CmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoJc3RydWN0IHRmX29wZW5fc2Vzc2lvbl9wYXJtcwlwYXJhbXM7CglzdHJ1Y3Qg dGZfc2Vzc2lvbl9yZXNvdXJjZXMJKnJlc291cmNlczsKCXVpbnQzMl90IHVscF9kZXZfaWQgPSBC TlhUX1VMUF9ERVZJQ0VfSURfTEFTVDsKCgltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFt cykpOwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2JueHRf dWxwLmM6NTE2Ckh1bmsgIzUgc3VjY2VlZGVkIGF0IDI2MSAob2Zmc2V0IC0yODAgbGluZXMpLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQlyZXR1cm4gcmM7CgoJcGFyYW1zLmJwID0gYnA7 CglyYyA9IHRmX29wZW5fc2Vzc2lvbigmYnAtPnRmcCwgJnBhcmFtcyk7CglpZiAocmMpIHsKCQlC TlhUX1RGX0RCRyhFUlIsICJGYWlsZWQgdG8gb3BlbiBURiBzZXNzaW9uIC0gJXMsIHJjID0gJWRc biIsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC9ibnh0X3Vs cC5jOjU1NgpDaGVja2luZyBwYXRjaCBtZXNvbl9vcHRpb25zLnR4dC4uLgpIdW5rICMxIHN1Y2Nl ZWRlZCBhdCA0NCAob2Zmc2V0IC0yIGxpbmVzKS4KQXBwbGllZCBwYXRjaCBkcml2ZXJzL25ldC9i bnh0L3RmX2NvcmUvbGwuYyBjbGVhbmx5LgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQv dGZfY29yZS9sbC5oIGNsZWFubHkuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZf Y29yZS90Zl9kZXZpY2UuYyB3aXRoIDkgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpIdW5r ICMyIGFwcGxpZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjMy4KUmVqZWN0ZWQgaHVuayAjNC4K UmVqZWN0ZWQgaHVuayAjNS4KUmVqZWN0ZWQgaHVuayAjNi4KUmVqZWN0ZWQgaHVuayAjNy4KUmVq ZWN0ZWQgaHVuayAjOC4KUmVqZWN0ZWQgaHVuayAjOS4KSHVuayAjMTAgYXBwbGllZCBjbGVhbmx5 LgpSZWplY3RlZCBodW5rICMxMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9j b3JlL3RmX2RldmljZV9wNC5oIHdpdGggMiByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJl amVjdGVkIGh1bmsgIzIuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90 Zl9tc2cuYyB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCkFwcGx5aW5nIHBhdGNo IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9ybS5jIHdpdGggNCByZWplY3RzLi4uCkh1bmsg IzEgYXBwbGllZCBjbGVhbmx5LgpSZWplY3RlZCBodW5rICMyLgpSZWplY3RlZCBodW5rICMzLgpS ZWplY3RlZCBodW5rICM0LgpSZWplY3RlZCBodW5rICM1LgpIdW5rICM2IGFwcGxpZWQgY2xlYW5s eS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3JtLmggd2l0aCAx IHJlamVjdC4uLgpIdW5rICMxIGFwcGxpZWQgY2xlYW5seS4KSHVuayAjMiBhcHBsaWVkIGNsZWFu bHkuClJlamVjdGVkIGh1bmsgIzMuCkh1bmsgIzQgYXBwbGllZCBjbGVhbmx5LgpIdW5rICM1IGFw cGxpZWQgY2xlYW5seS4KSHVuayAjNiBhcHBsaWVkIGNsZWFubHkuCkh1bmsgIzcgYXBwbGllZCBj bGVhbmx5LgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfc2Vzc2lv bi5jIHdpdGggMiByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuCkh1bmsgIzIgYXBwbGllZCBj bGVhbmx5LgpSZWplY3RlZCBodW5rICMzLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0 L3RmX2NvcmUvdGZfc2Vzc2lvbi5oIHdpdGggMyByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEu ClJlamVjdGVkIGh1bmsgIzIuCkh1bmsgIzMgYXBwbGllZCBjbGVhbmx5LgpIdW5rICM0IGFwcGxp ZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjNS4KQXBwbGllZCBwYXRjaCBkcml2ZXJzL25ldC9i bnh0L3RmX2NvcmUvdGZfc3JhbV9tZ3IuYyBjbGVhbmx5LgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMv bmV0L2JueHQvdGZfY29yZS90Zl9zcmFtX21nci5oIGNsZWFubHkuCkFwcGx5aW5nIHBhdGNoIGRy aXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuYyB3aXRoIDIxIHJlamVjdHMuLi4KUmVqZWN0 ZWQgaHVuayAjMS4KUmVqZWN0ZWQgaHVuayAjMi4KUmVqZWN0ZWQgaHVuayAjMy4KUmVqZWN0ZWQg aHVuayAjNC4KUmVqZWN0ZWQgaHVuayAjNS4KUmVqZWN0ZWQgaHVuayAjNi4KUmVqZWN0ZWQgaHVu ayAjNy4KSHVuayAjOCBhcHBsaWVkIGNsZWFubHkuClJlamVjdGVkIGh1bmsgIzkuClJlamVjdGVk IGh1bmsgIzEwLgpSZWplY3RlZCBodW5rICMxMS4KUmVqZWN0ZWQgaHVuayAjMTIuClJlamVjdGVk IGh1bmsgIzEzLgpSZWplY3RlZCBodW5rICMxNC4KSHVuayAjMTUgYXBwbGllZCBjbGVhbmx5LgpI dW5rICMxNiBhcHBsaWVkIGNsZWFubHkuClJlamVjdGVkIGh1bmsgIzE3LgpSZWplY3RlZCBodW5r ICMxOC4KUmVqZWN0ZWQgaHVuayAjMTkuClJlamVjdGVkIGh1bmsgIzIwLgpIdW5rICMyMSBhcHBs aWVkIGNsZWFubHkuCkh1bmsgIzIyIGFwcGxpZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjMjMu ClJlamVjdGVkIGh1bmsgIzI0LgpIdW5rICMyNSBhcHBsaWVkIGNsZWFubHkuCkh1bmsgIzI2IGFw cGxpZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjMjcuClJlamVjdGVkIGh1bmsgIzI4LgpBcHBs aWVkIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Ymxfc3JhbS5jIGNsZWFubHku CkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibF9zcmFtLmggY2xl YW5seS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RjYW0uYyB3 aXRoIDMgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5rICMyLgpSZWpl Y3RlZCBodW5rICMzLgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90 Y2FtLmggY2xlYW5seS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvYm54 dF91bHAuYyB3aXRoIDUgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5r ICMyLgpSZWplY3RlZCBodW5rICMzLgpSZWplY3RlZCBodW5rICM0LgpIdW5rICM1IGFwcGxpZWQg Y2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjNi4KQXBwbGllZCBwYXRjaCBtZXNvbl9vcHRpb25zLnR4 dCBjbGVhbmx5LgpkaWZmIGEvZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2RldmljZS5jIGIv ZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2RldmljZS5jCShyZWplY3RlZCBodW5rcykKQEAg LTExLDEwICsxMSwxNCBAQAogI2luY2x1ZGUgInRmX3JtLmgiCiAjaWZkZWYgVEZfVENBTV9TSEFS RUQKICNpbmNsdWRlICJ0Zl90Y2FtX3NoYXJlZC5oIgorI2luY2x1ZGUgInRmX3RibF9zcmFtLmgi CiAjZW5kaWYgLyogVEZfVENBTV9TSEFSRUQgKi8KIAogc3RydWN0IHRmOwogCisvKiBOdW1iZXIg b2Ygc2xpY2VzIHBlciByb3cgZm9yIFdDIFRDQU0gKi8KK3VpbnQxNl90IGdfd2NfbnVtX3NsaWNl c19wZXJfcm93ID0gVEZfV0NfVENBTV8xX1NMSUNFX1BFUl9ST1c7CisKIC8qIEZvcndhcmQgZGVj bGFyYXRpb25zICovCiBzdGF0aWMgaW50IHRmX2Rldl91bmJpbmRfcDQoc3RydWN0IHRmICp0ZnAp Owogc3RhdGljIGludCB0Zl9kZXZfdW5iaW5kX3A1OChzdHJ1Y3QgdGYgKnRmcCk7CkBAIC0xMzEs NyArMTM2LDYgQEAgdGZfZGV2X2JpbmRfcDQoc3RydWN0IHRmICp0ZnAsCiAJaWYgKHJzdl9jbnQp IHsKIAkJdGJsX2NmZy5udW1fZWxlbWVudHMgPSBURl9UQkxfVFlQRV9NQVg7CiAJCXRibF9jZmcu Y2ZnID0gdGZfdGJsX3A0OwotCQl0YmxfY2ZnLnNoYWRvd19jb3B5ID0gc2hhZG93X2NvcHk7CiAJ CXRibF9jZmcucmVzb3VyY2VzID0gcmVzb3VyY2VzOwogCQlyYyA9IHRmX3RibF9iaW5kKHRmcCwg JnRibF9jZmcpOwogCQlpZiAocmMpIHsKQEAgLTE1MSw2ICsxNTUsNyBAQCB0Zl9kZXZfYmluZF9w NChzdHJ1Y3QgdGYgKnRmcCwKIAkJdGNhbV9jZmcuY2ZnID0gdGZfdGNhbV9wNDsKIAkJdGNhbV9j Zmcuc2hhZG93X2NvcHkgPSBzaGFkb3dfY29weTsKIAkJdGNhbV9jZmcucmVzb3VyY2VzID0gcmVz b3VyY2VzOworCQl0Y2FtX2NmZy53Y19udW1fc2xpY2VzID0gd2NfbnVtX3NsaWNlczsKICNpZmRl ZiBURl9UQ0FNX1NIQVJFRAogCQlyYyA9IHRmX3RjYW1fc2hhcmVkX2JpbmQodGZwLCAmdGNhbV9j ZmcpOwogI2Vsc2UgLyogIVRGX1RDQU1fU0hBUkVEICovCkBAIC0zNjksNyArMzc0LDggQEAgc3Rh dGljIGludAogdGZfZGV2X2JpbmRfcDU4KHN0cnVjdCB0ZiAqdGZwLAogCQlib29sIHNoYWRvd19j b3B5LAogCQlzdHJ1Y3QgdGZfc2Vzc2lvbl9yZXNvdXJjZXMgKnJlc291cmNlcywKLQkJc3RydWN0 IHRmX2Rldl9pbmZvICpkZXZfaGFuZGxlKQorCQlzdHJ1Y3QgdGZfZGV2X2luZm8gKmRldl9oYW5k bGUsCisJCWVudW0gdGZfd2NfbnVtX3NsaWNlIHdjX251bV9zbGljZXMpCiB7CiAJaW50IHJjOwog CWludCBmcmM7CkBAIC00MTQsNyArNDIwLDYgQEAgdGZfZGV2X2JpbmRfcDU4KHN0cnVjdCB0ZiAq dGZwLAogCWlmIChyc3ZfY250KSB7CiAJCXRibF9jZmcubnVtX2VsZW1lbnRzID0gVEZfVEJMX1RZ UEVfTUFYOwogCQl0YmxfY2ZnLmNmZyA9IHRmX3RibF9wNTg7Ci0JCXRibF9jZmcuc2hhZG93X2Nv cHkgPSBzaGFkb3dfY29weTsKIAkJdGJsX2NmZy5yZXNvdXJjZXMgPSByZXNvdXJjZXM7CiAJCXJj ID0gdGZfdGJsX2JpbmQodGZwLCAmdGJsX2NmZyk7CiAJCWlmIChyYykgewpAQCAtNDIzLDYgKzQy OCwxMyBAQCB0Zl9kZXZfYmluZF9wNTgoc3RydWN0IHRmICp0ZnAsCiAJCQlnb3RvIGZhaWw7CiAJ CX0KIAkJbm9fcnN2X2ZsYWcgPSBmYWxzZTsKKworCQlyYyA9IHRmX3RibF9zcmFtX2JpbmQodGZw KTsKKwkJaWYgKHJjKSB7CisJCQlURlBfRFJWX0xPRyhFUlIsCisJCQkJICAgICJTUkFNIHRhYmxl IGluaXRpYWxpemF0aW9uIGZhaWx1cmVcbiIpOworCQkJZ290byBmYWlsOworCQl9CiAJfQogCiAJ cnN2X2NudCA9IHRmX2Rldl9yZXNlcnZhdGlvbl9jaGVjayhURl9UQ0FNX1RCTF9UWVBFX01BWCwK QEAgLTQzMyw2ICs0NDUsNyBAQCB0Zl9kZXZfYmluZF9wNTgoc3RydWN0IHRmICp0ZnAsCiAJCXRj YW1fY2ZnLmNmZyA9IHRmX3RjYW1fcDU4OwogCQl0Y2FtX2NmZy5zaGFkb3dfY29weSA9IHNoYWRv d19jb3B5OwogCQl0Y2FtX2NmZy5yZXNvdXJjZXMgPSByZXNvdXJjZXM7CisJCXRjYW1fY2ZnLndj X251bV9zbGljZXMgPSB3Y19udW1fc2xpY2VzOwogI2lmZGVmIFRGX1RDQU1fU0hBUkVECiAJCXJj ID0gdGZfdGNhbV9zaGFyZWRfYmluZCh0ZnAsICZ0Y2FtX2NmZyk7CiAjZWxzZSAvKiAhVEZfVENB TV9TSEFSRUQgKi8KQEAgLTU2NSw2ICs1NzgsMTggQEAgdGZfZGV2X3VuYmluZF9wNTgoc3RydWN0 IHRmICp0ZnApCiAJCWZhaWwgPSB0cnVlOwogCX0KIAorCS8qIFVuYmluZCB0aGUgU1JBTSB0YWJs ZSBwcmlvciB0byB0YWJsZSBhcyB0aGUgdGFibGUgbWFuYWdlcgorCSAqIG93bnMgYW5kIGZyZWVz IHRoZSB0YWJsZSBEQiB3aGlsZSB0aGUgU1JBTSB0YWJsZSBtYW5hZ2VyIG93bnMKKwkgKiBhbmQg bWFuYWdlcyBpdCdzIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gIFNSQU0gdGFibGUgbWFuYWdl cgorCSAqIHJlbGllcyBvbiB0aGUgdGFibGUgcm1fZGIgdG8gZXhpc3QuCisJICovCisJcmMgPSB0 Zl90Ymxfc3JhbV91bmJpbmQodGZwKTsKKwlpZiAocmMpIHsKKwkJVEZQX0RSVl9MT0coRVJSLAor CQkJICAgICJEZXZpY2UgdW5iaW5kIGZhaWxlZCwgU1JBTSB0YWJsZVxuIik7CisJCWZhaWwgPSB0 cnVlOworCX0KKwogCXJjID0gdGZfdGJsX3VuYmluZCh0ZnApOwogCWlmIChyYykgewogCQlURlBf RFJWX0xPRyhJTkZPLApAQCAtNjE1LDEzICs2NDEsMTUgQEAgdGZfZGV2X2JpbmQoc3RydWN0IHRm ICp0ZnAgX19ydGVfdW51c2VkLAogCQlyZXR1cm4gdGZfZGV2X2JpbmRfcDQodGZwLAogCQkJCSAg ICAgIHNoYWRvd19jb3B5LAogCQkJCSAgICAgIHJlc291cmNlcywKLQkJCQkgICAgICBkZXZfaGFu ZGxlKTsKKwkJCQkgICAgICBkZXZfaGFuZGxlLAorCQkJCSAgICAgIHdjX251bV9zbGljZXMpOwog CWNhc2UgVEZfREVWSUNFX1RZUEVfVEhPUjoKIAkJZGV2X2hhbmRsZS0+dHlwZSA9IHR5cGU7CiAJ CXJldHVybiB0Zl9kZXZfYmluZF9wNTgodGZwLAogCQkJCSAgICAgICBzaGFkb3dfY29weSwKIAkJ CQkgICAgICAgcmVzb3VyY2VzLAotCQkJCSAgICAgICBkZXZfaGFuZGxlKTsKKwkJCQkgICAgICAg ZGV2X2hhbmRsZSwKKwkJCQkgICAgICAgd2NfbnVtX3NsaWNlcyk7CiAJZGVmYXVsdDoKIAkJVEZQ X0RSVl9MT0coRVJSLAogCQkJICAgICJObyBzdWNoIGRldmljZVxuIik7CmRpZmYgYS9kcml2ZXJz L25ldC9ibnh0L3RmX2NvcmUvdGZfZGV2aWNlX3A0LmggYi9kcml2ZXJzL25ldC9ibnh0L3RmX2Nv cmUvdGZfZGV2aWNlX3A0LmgJKHJlamVjdGVkIGh1bmtzKQpAQCAtMTUsMTAxICsxNSwxMDEgQEAK IHN0cnVjdCB0Zl9ybV9lbGVtZW50X2NmZyB0Zl9pZGVudF9wNFtURl9JREVOVF9UWVBFX01BWF0g PSB7CiAJW1RGX0lERU5UX1RZUEVfTDJfQ1RYVF9ISUdIXSA9IHsKIAkJVEZfUk1fRUxFTV9DRkdf SENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X0wyX0NUWFRfUkVNQVBfSElHSCwKLQkJMCwg MCwgMAorCQkwLCAwCiAJfSwKIAlbVEZfSURFTlRfVFlQRV9MMl9DVFhUX0xPV10gPSB7CiAJCVRG X1JNX0VMRU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9MMl9DVFhUX1JFTUFQ X0xPVywKLQkJMCwgMCwgMAorCQkwLCAwCiAJfSwKIAlbVEZfSURFTlRfVFlQRV9QUk9GX0ZVTkNd ID0gewogCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfUFJP Rl9GVU5DLAotCQkwLCAwLCAwCisJCTAsIDAKIAl9LAogCVtURl9JREVOVF9UWVBFX1dDX1BST0Zd ID0gewogCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfV0Nf VENBTV9QUk9GX0lELAotCQkwLCAwLCAwCisJCTAsIDAKIAl9LAogCVtURl9JREVOVF9UWVBFX0VN X1BST0ZdID0gewogCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVf UDRfRU1fUFJPRl9JRCwKLQkJMCwgMCwgMAorCQkwLCAwCiAJfSwKIH07CiAKIHN0cnVjdCB0Zl9y bV9lbGVtZW50X2NmZyB0Zl90Y2FtX3A0W1RGX1RDQU1fVEJMX1RZUEVfTUFYXSA9IHsKIAlbVEZf VENBTV9UQkxfVFlQRV9MMl9DVFhUX1RDQU1fSElHSF0gPSB7CiAJCVRGX1JNX0VMRU1fQ0ZHX0hD QVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9MMl9DVFhUX1RDQU1fSElHSCwKLQkJMCwgMCwg MAorCQkwLCAwCiAJfSwKIAlbVEZfVENBTV9UQkxfVFlQRV9MMl9DVFhUX1RDQU1fTE9XXSA9IHsK IAkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X0wyX0NUWFRf VENBTV9MT1csCi0JCTAsIDAsIDAKKwkJMCwgMAogCX0sCiAJW1RGX1RDQU1fVEJMX1RZUEVfUFJP Rl9UQ0FNXSA9IHsKIAkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBF X1A0X1BST0ZfVENBTSwKLQkJMCwgMCwgMAorCQkwLCAwCiAJfSwKIAlbVEZfVENBTV9UQkxfVFlQ RV9XQ19UQ0FNXSA9IHsKIAkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9U WVBFX1A0X1dDX1RDQU0sCi0JCTAsIDAsIDAKKwkJMCwgMAogCX0sCiAJW1RGX1RDQU1fVEJMX1RZ UEVfU1BfVENBTV0gPSB7CiAJCVRGX1JNX0VMRU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0Vf VFlQRV9QNF9TUF9UQ0FNLAotCQkwLCAwLCAwCisJCTAsIDAKIAl9LAogfTsKIAogc3RydWN0IHRm X3JtX2VsZW1lbnRfY2ZnIHRmX3RibF9wNFtURl9UQkxfVFlQRV9NQVhdID0gewogCVtURl9UQkxf VFlQRV9GVUxMX0FDVF9SRUNPUkRdID0gewogCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZB X1JFU09VUkNFX1RZUEVfUDRfRlVMTF9BQ1RJT04sCi0JCTAsIDAsIDAKKwkJMCwgMAogCX0sCiAJ W1RGX1RCTF9UWVBFX01DQVNUX0dST1VQU10gPSB7CiAJCVRGX1JNX0VMRU1fQ0ZHX0hDQVBJX0JB LCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9NQ0csCi0JCTAsIDAsIDAKKwkJMCwgMAogCX0sCiAJW1RG X1RCTF9UWVBFX0FDVF9FTkNBUF84Ql0gPSB7CiAJCVRGX1JNX0VMRU1fQ0ZHX0hDQVBJX0JBLCBD RkFfUkVTT1VSQ0VfVFlQRV9QNF9FTkNBUF84QiwKLQkJMCwgMCwgMAorCQkwLCAwCiAJfSwKIAlb VEZfVEJMX1RZUEVfQUNUX0VOQ0FQXzE2Ql0gPSB7CiAJCVRGX1JNX0VMRU1fQ0ZHX0hDQVBJX0JB LCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9FTkNBUF8xNkIsCi0JCTAsIDAsIDAKKwkJMCwgMAogCX0s CiAJW1RGX1RCTF9UWVBFX0FDVF9FTkNBUF82NEJdID0gewogCQlURl9STV9FTEVNX0NGR19IQ0FQ SV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfRU5DQVBfNjRCLAotCQkwLCAwLCAwCisJCTAsIDAK IAl9LAogCVtURl9UQkxfVFlQRV9BQ1RfU1BfU01BQ10gPSB7CiAJCVRGX1JNX0VMRU1fQ0ZHX0hD QVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9TUF9NQUMsCi0JCTAsIDAsIDAKKwkJMCwgMAog CX0sCiAJW1RGX1RCTF9UWVBFX0FDVF9TUF9TTUFDX0lQVjRdID0gewogCQlURl9STV9FTEVNX0NG R19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfU1BfTUFDX0lQVjQsCi0JCTAsIDAsIDAK KwkJMCwgMAogCX0sCiAJW1RGX1RCTF9UWVBFX0FDVF9TUF9TTUFDX0lQVjZdID0gewogCQlURl9S TV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfU1BfTUFDX0lQVjYsCi0J CTAsIDAsIDAKKwkJMCwgMAogCX0sCiAJW1RGX1RCTF9UWVBFX0FDVF9TVEFUU182NF0gPSB7CiAJ CVRGX1JNX0VMRU1fQ0ZHX0hDQVBJX0JBLCBDRkFfUkVTT1VSQ0VfVFlQRV9QNF9DT1VOVEVSXzY0 QiwKLQkJMCwgMCwgMAorCQkwLCAwCiAJfSwKIAlbVEZfVEJMX1RZUEVfQUNUX01PRElGWV9JUFY0 XSA9IHsKIAkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X05B VF9JUFY0LAotCQkwLCAwLCAwCisJCTAsIDAKIAl9LAogCVtURl9UQkxfVFlQRV9NRVRFUl9QUk9G XSA9IHsKIAkJVEZfUk1fRUxFTV9DRkdfSENBUElfQkEsIENGQV9SRVNPVVJDRV9UWVBFX1A0X01F VEVSX1BST0YsCi0JCTAsIDAsIDAKKwkJMCwgMAogCX0sCiAJW1RGX1RCTF9UWVBFX01FVEVSX0lO U1RdID0gewogCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRf TUVURVIsCi0JCTAsIDAsIDAKKwkJMCwgMAogCX0sCiAJW1RGX1RCTF9UWVBFX01JUlJPUl9DT05G SUddID0gewogCQlURl9STV9FTEVNX0NGR19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRf TUlSUk9SLAotCQkwLCAwLCAwCisJCTAsIDAKIAl9LAogCiB9OwpAQCAtMTE3LDE0ICsxMTcsMTQg QEAgc3RydWN0IHRmX3JtX2VsZW1lbnRfY2ZnIHRmX3RibF9wNFtURl9UQkxfVFlQRV9NQVhdID0g ewogc3RydWN0IHRmX3JtX2VsZW1lbnRfY2ZnIHRmX2VtX2V4dF9wNFtURl9FTV9UQkxfVFlQRV9N QVhdID0gewogCVtURl9FTV9UQkxfVFlQRV9UQkxfU0NPUEVdID0gewogCQlURl9STV9FTEVNX0NG R19IQ0FQSV9CQSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfVEJMX1NDT1BFLAotCQkwLCAwLCAwCisJ CTAsIDAKIAl9LAogfTsKIAogc3RydWN0IHRmX3JtX2VsZW1lbnRfY2ZnIHRmX2VtX2ludF9wNFtU Rl9FTV9UQkxfVFlQRV9NQVhdID0gewogCVtURl9FTV9UQkxfVFlQRV9FTV9SRUNPUkRdID0gewog CQlURl9STV9FTEVNX0NGR19IQ0FQSSwgQ0ZBX1JFU09VUkNFX1RZUEVfUDRfRU1fUkVDLAotCQkw LCAwLCAwCisJCTAsIDAKIAl9LAogfTsKIApkaWZmIGEvZHJpdmVycy9uZXQvYm54dC90Zl9jb3Jl L3RmX21zZy5jIGIvZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX21zZy5jCShyZWplY3RlZCBo dW5rcykKQEAgLTIyMzEsNyArMjIzMSw3IEBAIHRmX21zZ19nZXRfaWZfdGJsX2VudHJ5KHN0cnVj dCB0ZiAqdGZwLAogCWlmIChyYyAhPSAwKQogCQlyZXR1cm4gcmM7CiAKLQl0ZnBfbWVtY3B5KHBh cmFtcy0+ZGF0YSwgcmVzcC5kYXRhLCByZXEuc2l6ZSk7CisJdGZwX21lbWNweSgmcGFyYW1zLT5k YXRhWzBdLCByZXNwLmRhdGEsIHJlcS5zaXplKTsKIAogCXJldHVybiAwOwogfQpkaWZmIGEvZHJp dmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3JtLmMgYi9kcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUv dGZfcm0uYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0zNTYsMTIgKzM2MiwxNSBAQCB0Zl9ybV9jaGVj a19yZXNpZHVhbHMoc3RydWN0IHRmX3JtX25ld19kYiAqcm1fZGIsCiAgKiAgICAgLSAgICAgICAg ICAtIEZhaWx1cmUgaWYgbmVnYXRpdmUKICAqLwogc3RhdGljIGludAotdGZfcm1fdXBkYXRlX3Bh cmVudF9yZXNlcnZhdGlvbnMoc3RydWN0IHRmX3JtX2VsZW1lbnRfY2ZnICpjZmcsCit0Zl9ybV91 cGRhdGVfcGFyZW50X3Jlc2VydmF0aW9ucyhzdHJ1Y3QgdGYgKnRmcCwKKwkJCQkgc3RydWN0IHRm X2Rldl9pbmZvICpkZXYsCisJCQkJIHN0cnVjdCB0Zl9ybV9lbGVtZW50X2NmZyAqY2ZnLAogCQkJ CSB1aW50MTZfdCAqYWxsb2NfY250LAogCQkJCSB1aW50MTZfdCBudW1fZWxlbWVudHMsCiAJCQkJ IHVpbnQxNl90ICpyZXFfY250KQogewogCWludCBwYXJlbnQsIGNoaWxkOworCWNvbnN0IGNoYXIg KnR5cGVfc3RyOwogCiAJLyogU2VhcmNoIHRocm91Z2ggYWxsIHRoZSBlbGVtZW50cyAqLwogCWZv ciAocGFyZW50ID0gMDsgcGFyZW50IDwgbnVtX2VsZW1lbnRzOyBwYXJlbnQrKykgewpAQCAtMzc3 LDE1ICszODYsMjUgQEAgdGZfcm1fdXBkYXRlX3BhcmVudF9yZXNlcnZhdGlvbnMoc3RydWN0IHRm X3JtX2VsZW1lbnRfY2ZnICpjZmcsCiAJCQlpZiAoYWxsb2NfY250W3BhcmVudF0gJSBjZmdbcGFy ZW50XS5zbGljZXMpCiAJCQkJY29tYmluZWRfY250Kys7CiAKKwkJCWlmIChhbGxvY19jbnRbcGFy ZW50XSkgeworCQkJCWRldi0+b3BzLT50Zl9kZXZfZ2V0X3Jlc291cmNlX3N0cih0ZnAsCisJCQkJ CQkJIGNmZ1twYXJlbnRdLmhjYXBpX3R5cGUsCisJCQkJCQkJICZ0eXBlX3N0cik7CisJCQl9CisK IAkJCS8qIFNlYXJjaCBhZ2FpbiB0aHJvdWdoIGFsbCB0aGUgZWxlbWVudHMgKi8KIAkJCWZvciAo Y2hpbGQgPSAwOyBjaGlsZCA8IG51bV9lbGVtZW50czsgY2hpbGQrKykgewogCQkJCS8qIElmIHRo aXMgaXMgb25lIG9mIG15IGNoaWxkcmVuICovCiAJCQkJaWYgKGNmZ1tjaGlsZF0uY2ZnX3R5cGUg PT0KIAkJCQkgICAgVEZfUk1fRUxFTV9DRkdfSENBUElfQkFfQ0hJTEQgJiYKLQkJCQkgICAgY2Zn W2NoaWxkXS5wYXJlbnRfc3VidHlwZSA9PSBwYXJlbnQpIHsKKwkJCQkgICAgY2ZnW2NoaWxkXS5w YXJlbnRfc3VidHlwZSA9PSBwYXJlbnQgJiYKKwkJCQkgICAgYWxsb2NfY250W2NoaWxkXSkgewog CQkJCQl1aW50MTZfdCBjbnQgPSAwOwogCQkJCQlSVEVfQVNTRVJUKGNmZ1tjaGlsZF0uc2xpY2Vz KTsKIAorCQkJCQlkZXYtPm9wcy0+dGZfZGV2X2dldF9yZXNvdXJjZV9zdHIodGZwLAorCQkJCQkJ CSAgY2ZnW2NoaWxkXS5oY2FwaV90eXBlLAorCQkJCQkJCSAgICZ0eXBlX3N0cik7CiAJCQkJCS8q IEluY3JlbWVudCB0aGUgcGFyZW50cyBjb21iaW5lZCBjb3VudAogCQkJCQkgKiB3aXRoIGVhY2gg Y2hpbGQncyBjb3VudCBhZGp1c3RlZCBmb3IKIAkJCQkJICogbnVtYmVyIG9mIHNsaWNlcyBwZXIg Uk0gYWxsb2NhdGVkIGl0ZW0uCkBAIC00NzksNyArNDk4LDcgQEAgdGZfcm1fY3JlYXRlX2RiKHN0 cnVjdCB0ZiAqdGZwLAogCiAJLyogVXBkYXRlIHRoZSByZXFfY250IGJhc2VkIHVwb24gdGhlIGVs ZW1lbnQgY29uZmlndXJhdGlvbgogCSAqLwotCXRmX3JtX3VwZGF0ZV9wYXJlbnRfcmVzZXJ2YXRp b25zKHBhcm1zLT5jZmcsCisJdGZfcm1fdXBkYXRlX3BhcmVudF9yZXNlcnZhdGlvbnModGZwLCBk ZXYsIHBhcm1zLT5jZmcsCiAJCQkJCSBwYXJtcy0+YWxsb2NfY250LAogCQkJCQkgcGFybXMtPm51 bV9lbGVtZW50cywKIAkJCQkJIHJlcV9jbnQpOwpAQCAtNTk0LDYgKzYxMyw3IEBAIHRmX3JtX2Ny ZWF0ZV9kYihzdHJ1Y3QgdGYgKnRmcCwKIAogCQlkYltpXS5jZmdfdHlwZSA9IGNmZy0+Y2ZnX3R5 cGU7CiAJCWRiW2ldLmhjYXBpX3R5cGUgPSBjZmctPmhjYXBpX3R5cGU7CisJCWRiW2ldLnNsaWNl cyA9IGNmZy0+c2xpY2VzOwogCiAJCS8qIFNhdmUgdGhlIHBhcmVudCBzdWJ0eXBlIGZvciBsYXRl ciB1c2UgdG8gZmluZCB0aGUgcG9vbAogCQkgKi8KZGlmZiBhL2RyaXZlcnMvbmV0L2JueHQvdGZf Y29yZS90Zl9ybS5oIGIvZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3JtLmgJKHJlamVjdGVk IGh1bmtzKQpAQCAtMTI1LDI4ICsxMTEsMTkgQEAgc3RydWN0IHRmX3JtX2VsZW1lbnRfY2ZnIHsK IAl1aW50MTZfdCBoY2FwaV90eXBlOwogCiAJLyoqCi0JICogaWYgY2ZnX3R5cGUgPT0gVEZfUk1f RUxFTV9DRkdfSENBUElfQkFfQ0hJTEQKKwkgKiBpZiBjZmdfdHlwZSA9PSBURl9STV9FTEVNX0NG R19IQ0FQSV9CQV9DSElMRC9QQVJFTlQKIAkgKgogCSAqIFBhcmVudCBUcnVmbG93IG1vZHVsZSBz dWJ0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlIHR5cGUuCiAJICovCiAJdWludDE2 X3QgcGFyZW50X3N1YnR5cGU7CiAKIAkvKioKLQkgKiBpZiBjZmdfdHlwZSA9PSBURl9STV9FTEVN X0NGR19IQ0FQSV9CQV9DSElMRAorCSAqIGlmIGNmZ190eXBlID09IFRGX1JNX0VMRU1fQ0ZHX0hD QVBJX0JBX0NISUxEL1BBUkVOVAogCSAqCiAJICogUmVzb3VyY2Ugc2xpY2VzLiAgSG93IG1hbnkg c2xpY2VzIHdpbGwgZml0IGluIHRoZQogCSAqIHJlc291cmNlIHBvb2wgY2h1bmsgc2l6ZS4KIAkg Ki8KIAl1aW50OF90IHNsaWNlczsKLQotCS8qKgotCSAqIFBvb2wgZWxlbWVudCBkaXZpZGVyIGNv dW50Ci0JICogSWYgMCBvciAxLCB0aGVyZSBpcyAxOjEgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiB0 aGUgUk0KLQkgKiBCQSBwb29sIHJlc291cmNlIGVsZW1lbnQgYW5kIHRoZSBIQ0FQSSBSTSBmaXJt d2FyZQotCSAqIHJlc291cmNlLiAgSWYgPiAxLCB0aGUgUk0gQkEgcG9vbCBlbGVtZW50IGhhcyBh IDE6bgotCSAqIGNvcnJlc3BvbmRlbmNlIHRvIHRoZSBIQ0FQSSBSTSBmaXJtd2FyZSByZXNvdXJj ZS4KLQkgKi8KLQl1aW50OF90IGRpdmlkZXI7CiB9OwogCiAvKioKZGlmZiBhL2RyaXZlcnMvbmV0 L2JueHQvdGZfY29yZS90Zl9zZXNzaW9uLmMgYi9kcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZf c2Vzc2lvbi5jCShyZWplY3RlZCBodW5rcykKQEAgLTIwMiw2ICsyMDIsNyBAQCB0Zl9zZXNzaW9u X2NyZWF0ZShzdHJ1Y3QgdGYgKnRmcCwKIAkJCSBwYXJtcy0+b3Blbl9jZmctPmRldmljZV90eXBl LAogCQkJIHNlc3Npb24tPnNoYWRvd19jb3B5LAogCQkJICZwYXJtcy0+b3Blbl9jZmctPnJlc291 cmNlcywKKwkJCSBwYXJtcy0+b3Blbl9jZmctPndjX251bV9zbGljZXMsCiAJCQkgJnNlc3Npb24t PmRldik7CiAKIAkvKiBMb2dnaW5nIGhhbmRsZWQgYnkgZGV2X2JpbmQgKi8KQEAgLTEwMTIsNCAr MTAyOSw0MyBAQCB0Zl9zZXNzaW9uX3NldF90Y2FtX3NoYXJlZF9kYihzdHJ1Y3QgdGYgKnRmcCwK IAl0ZnMtPnRjYW1fc2hhcmVkX2RiX2hhbmRsZSA9IHRjYW1fc2hhcmVkX2RiX2hhbmRsZTsKIAly ZXR1cm4gcmM7CiB9CisKK2ludAordGZfc2Vzc2lvbl9nZXRfc3JhbV9kYihzdHJ1Y3QgdGYgKnRm cCwKKwkJICAgICAgIHZvaWQgKipzcmFtX2hhbmRsZSkKK3sKKwlzdHJ1Y3QgdGZfc2Vzc2lvbiAq dGZzID0gTlVMTDsKKwlpbnQgcmMgPSAwOworCisJKnNyYW1faGFuZGxlID0gTlVMTDsKKworCWlm ICh0ZnAgPT0gTlVMTCkKKwkJcmV0dXJuICgtRUlOVkFMKTsKKworCXJjID0gdGZfc2Vzc2lvbl9n ZXRfc2Vzc2lvbl9pbnRlcm5hbCh0ZnAsICZ0ZnMpOworCWlmIChyYykKKwkJcmV0dXJuIHJjOwor CisJKnNyYW1faGFuZGxlID0gdGZzLT5zcmFtX2hhbmRsZTsKKwlyZXR1cm4gcmM7Cit9CisKK2lu dAordGZfc2Vzc2lvbl9zZXRfc3JhbV9kYihzdHJ1Y3QgdGYgKnRmcCwKKwkJICAgICAgIHZvaWQg KnNyYW1faGFuZGxlKQoreworCXN0cnVjdCB0Zl9zZXNzaW9uICp0ZnMgPSBOVUxMOworCWludCBy YyA9IDA7CisKKwlpZiAodGZwID09IE5VTEwpCisJCXJldHVybiAoLUVJTlZBTCk7CisKKwlyYyA9 IHRmX3Nlc3Npb25fZ2V0X3Nlc3Npb25faW50ZXJuYWwodGZwLCAmdGZzKTsKKwlpZiAocmMpCisJ CXJldHVybiByYzsKKworCXRmcy0+c3JhbV9oYW5kbGUgPSBzcmFtX2hhbmRsZTsKKwlyZXR1cm4g cmM7Cit9CisKICNlbmRpZiAvKiBURl9UQ0FNX1NIQVJFRCAqLwpkaWZmIGEvZHJpdmVycy9uZXQv Ym54dC90Zl9jb3JlL3RmX3Nlc3Npb24uaCBiL2RyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9z ZXNzaW9uLmgJKHJlamVjdGVkIGh1bmtzKQpAQCAtMTY2LDYgKzE2NiwxMCBAQCBzdHJ1Y3QgdGZf c2Vzc2lvbiB7CiAJICovCiAJdm9pZCAqdGNhbV9zaGFyZWRfZGJfaGFuZGxlOwogI2VuZGlmIC8q IFRGX1RDQU1fU0hBUkVEICovCisJLyoqCisJICogU1JBTSBkYiByZWZlcmVuY2UgZm9yIHRoZSBz ZXNzaW9uCisJICovCisJdm9pZCAqc3JhbV9oYW5kbGU7CiB9OwogCiAvKioKQEAgLTI3OCw2ICsy ODIsMTAgQEAgc3RydWN0IHRmX3Nlc3Npb25fY2xvc2Vfc2Vzc2lvbl9wYXJtcyB7CiAgKgogICog QHJlZiB0Zl9zZXNzaW9uX3NldF90Y2FtX3NoYXJlZF9kYgogICogI2VuZGlmCisgKgorICogQHJl ZiB0Zl9zZXNzaW9uX2dldF9zcmFtX2RiCisgKgorICogQHJlZiB0Zl9zZXNzaW9uX3NldF9zcmFt X2RiCiAgKi8KIAogLyoqCkBAIC02MTQsNCArNjQyLDI4IEBAIGludAogdGZfc2Vzc2lvbl9nZXRf dGNhbV9zaGFyZWRfZGIoc3RydWN0IHRmICp0ZnAsCiAJCQkgICAgICB2b2lkICoqdGNhbV9zaGFy ZWRfZGJfaGFuZGxlKTsKIAorLyoqCisgKiBTZXQgdGhlIHBvaW50ZXIgdG8gdGhlIFNSQU0gZGF0 YWJhc2UKKyAqCisgKiBbaW5dIHNlc3Npb24sIHBvaW50ZXIgdG8gdGhlIHNlc3Npb24KKyAqCisg KiBSZXR1cm5zOgorICogICAtIHRoZSBwb2ludGVyIHRvIHRoZSBwYXJlbnQgYm54dCBzdHJ1Y3QK KyAqLworaW50Cit0Zl9zZXNzaW9uX3NldF9zcmFtX2RiKHN0cnVjdCB0ZiAqdGZwLAorCQkgICAg ICAgdm9pZCAqc3JhbV9oYW5kbGUpOworCisvKioKKyAqIEdldCB0aGUgcG9pbnRlciB0byB0aGUg U1JBTSBkYXRhYmFzZQorICoKKyAqIFtpbl0gc2Vzc2lvbiwgcG9pbnRlciB0byB0aGUgc2Vzc2lv bgorICoKKyAqIFJldHVybnM6CisgKiAgIC0gdGhlIHBvaW50ZXIgdG8gdGhlIHBhcmVudCBibnh0 IHN0cnVjdAorICovCitpbnQKK3RmX3Nlc3Npb25fZ2V0X3NyYW1fZGIoc3RydWN0IHRmICp0ZnAs CisJCSAgICAgICB2b2lkICoqc3JhbV9oYW5kbGUpOworCiAjZW5kaWYgLyogX1RGX1NFU1NJT05f SF8gKi8KZGlmZiBhL2RyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90YmwuYyBiL2RyaXZlcnMv bmV0L2JueHQvdGZfY29yZS90Zl90YmwuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0xNiwyMCArMTYs MTEgQEAKICNpbmNsdWRlICJ0Zl9zZXNzaW9uLmgiCiAjaW5jbHVkZSAidGZfZGV2aWNlLmgiCiAK LSNkZWZpbmUgVEZfVEJMX1JNX1RPX1BUUihuZXdfaWR4LCBpZHgsIGJhc2UsIHNoaWZ0KSB7CQlc Ci0JCSoobmV3X2lkeCkgPSAoKChpZHgpICsgKGJhc2UpKSA8PCAoc2hpZnQpKTsJXAotfQotCi0j ZGVmaW5lIFRGX1RCTF9QVFJfVE9fUk0obmV3X2lkeCwgaWR4LCBiYXNlLCBzaGlmdCkgewkJXAot CQkqKG5ld19pZHgpID0gKCgoaWR4KSA+PiAoc2hpZnQpKSAtIChiYXNlKSk7CVwKLX0KLQogc3Ry dWN0IHRmOwogCi0vKioKLSAqIFNoYWRvdyBpbml0IGZsYWcsIHNldCBvbiBiaW5kIGFuZCBjbGVh cmVkIG9uIHVuYmluZAotICovCi1zdGF0aWMgdWludDhfdCBzaGFkb3dfaW5pdDsKKyNkZWZpbmUg VEZfVEJMX1JNX1RPX1BUUihuZXdfaWR4LCBpZHgsIGJhc2UsIHNoaWZ0KSB7ICAgICAgICAgIFwK KwkJKihuZXdfaWR4KSA9ICgoKGlkeCkgKyAoYmFzZSkpIDw8IChzaGlmdCkpOyAgICBcCit9CiAK IGludAogdGZfdGJsX2JpbmQoc3RydWN0IHRmICp0ZnAsCkBAIC0xMjEsOCArMTEyLDYgQEAgdGZf dGJsX3VuYmluZChzdHJ1Y3QgdGYgKnRmcCkKIAkJdGJsX2RiLT50YmxfZGJbaV0gPSBOVUxMOwog CX0KIAotCXNoYWRvd19pbml0ID0gMDsKLQogCXJldHVybiAwOwogfQogCkBAIC0xMzUsNyArMTI0 LDYgQEAgdGZfdGJsX2FsbG9jKHN0cnVjdCB0ZiAqdGZwIF9fcnRlX3VudXNlZCwKIAlzdHJ1Y3Qg dGZfcm1fYWxsb2NhdGVfcGFybXMgYXBhcm1zID0geyAwIH07CiAJc3RydWN0IHRmX3Nlc3Npb24g KnRmczsKIAlzdHJ1Y3QgdGZfZGV2X2luZm8gKmRldjsKLQl1aW50MTZfdCBiYXNlID0gMCwgc2hp ZnQgPSAwOwogCXN0cnVjdCB0Ymxfcm1fZGIgKnRibF9kYjsKIAl2b2lkICp0YmxfZGJfcHRyID0g TlVMTDsKIApAQCAtMTU0LDI4ICsxNDIsMTIgQEAgdGZfdGJsX2FsbG9jKHN0cnVjdCB0ZiAqdGZw IF9fcnRlX3VudXNlZCwKIAlyYyA9IHRmX3Nlc3Npb25fZ2V0X2RiKHRmcCwgVEZfTU9EVUxFX1RZ UEVfVEFCTEUsICZ0YmxfZGJfcHRyKTsKIAlpZiAocmMpIHsKIAkJVEZQX0RSVl9MT0coRVJSLAot CQkJICAgICJGYWlsZWQgdG8gZ2V0IGVtX2V4dF9kYiBmcm9tIHNlc3Npb24sIHJjOiVzXG4iLAor CQkJICAgICJGYWlsZWQgdG8gZ2V0IHRibF9kYiBmcm9tIHNlc3Npb24sIHJjOiVzXG4iLAogCQkJ ICAgIHN0cmVycm9yKC1yYykpOwogCQlyZXR1cm4gcmM7CiAJfQogCXRibF9kYiA9IChzdHJ1Y3Qg dGJsX3JtX2RiICopdGJsX2RiX3B0cjsKIAotCS8qIE9ubHkgZ2V0IHRhYmxlIGluZm8gaWYgcmVx dWlyZWQgZm9yIHRoZSBkZXZpY2UgKi8KLQlpZiAoZGV2LT5vcHMtPnRmX2Rldl9nZXRfdGJsX2lu Zm8pIHsKLQkJcmMgPSBkZXYtPm9wcy0+dGZfZGV2X2dldF90YmxfaW5mbyh0ZnAsCi0JCQkJCQkg ICB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXSwKLQkJCQkJCSAgIHBhcm1zLT50eXBlLAotCQkJ CQkJICAgJmJhc2UsCi0JCQkJCQkgICAmc2hpZnQpOwotCQlpZiAocmMpIHsKLQkJCVRGUF9EUlZf TE9HKEVSUiwKLQkJCQkgICAgIiVzOiBGYWlsZWQgdG8gZ2V0IHRhYmxlIGluZm86JWRcbiIsCi0J CQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKLQkJCQkgICAgcGFybXMtPnR5cGUpOwot CQkJcmV0dXJuIHJjOwotCQl9Ci0JfQotCiAJLyogQWxsb2NhdGUgcmVxdWVzdGVkIGVsZW1lbnQg Ki8KIAlhcGFybXMucm1fZGIgPSB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXTsKIAlhcGFybXMu c3VidHlwZSA9IHBhcm1zLT50eXBlOwpAQCAtMTgzLDEzICsxNTUsMTIgQEAgdGZfdGJsX2FsbG9j KHN0cnVjdCB0ZiAqdGZwIF9fcnRlX3VudXNlZCwKIAlyYyA9IHRmX3JtX2FsbG9jYXRlKCZhcGFy bXMpOwogCWlmIChyYykgewogCQlURlBfRFJWX0xPRyhFUlIsCi0JCQkgICAgIiVzOiBGYWlsZWQg YWxsb2NhdGUsIHR5cGU6JWRcbiIsCisJCQkgICAgIiVzOiBGYWlsZWQgYWxsb2NhdGUsIHR5cGU6 JXNcbiIsCiAJCQkgICAgdGZfZGlyXzJfc3RyKHBhcm1zLT5kaXIpLAotCQkJICAgIHBhcm1zLT50 eXBlKTsKKwkJCSAgICB0Zl90YmxfdHlwZV8yX3N0cihwYXJtcy0+dHlwZSkpOwogCQlyZXR1cm4g cmM7CiAJfQogCi0JVEZfVEJMX1JNX1RPX1BUUigmaWR4LCBpZHgsIGJhc2UsIHNoaWZ0KTsKIAkq cGFybXMtPmlkeCA9IGlkeDsKIAogCXJldHVybiAwOwpAQCAtMjA1LDcgKzE3Niw2IEBAIHRmX3Ri bF9mcmVlKHN0cnVjdCB0ZiAqdGZwIF9fcnRlX3VudXNlZCwKIAlpbnQgYWxsb2NhdGVkID0gMDsK IAlzdHJ1Y3QgdGZfc2Vzc2lvbiAqdGZzOwogCXN0cnVjdCB0Zl9kZXZfaW5mbyAqZGV2OwotCXVp bnQxNl90IGJhc2UgPSAwLCBzaGlmdCA9IDA7CiAJc3RydWN0IHRibF9ybV9kYiAqdGJsX2RiOwog CXZvaWQgKnRibF9kYl9wdHIgPSBOVUxMOwogCkBAIC0yMzAsMjggKzIwMCwxMCBAQCB0Zl90Ymxf ZnJlZShzdHJ1Y3QgdGYgKnRmcCBfX3J0ZV91bnVzZWQsCiAJfQogCXRibF9kYiA9IChzdHJ1Y3Qg dGJsX3JtX2RiICopdGJsX2RiX3B0cjsKIAotCS8qIE9ubHkgZ2V0IHRhYmxlIGluZm8gaWYgcmVx dWlyZWQgZm9yIHRoZSBkZXZpY2UgKi8KLQlpZiAoZGV2LT5vcHMtPnRmX2Rldl9nZXRfdGJsX2lu Zm8pIHsKLQkJcmMgPSBkZXYtPm9wcy0+dGZfZGV2X2dldF90YmxfaW5mbyh0ZnAsCi0JCQkJCQkg ICB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXSwKLQkJCQkJCSAgIHBhcm1zLT50eXBlLAotCQkJ CQkJICAgJmJhc2UsCi0JCQkJCQkgICAmc2hpZnQpOwotCQlpZiAocmMpIHsKLQkJCVRGUF9EUlZf TE9HKEVSUiwKLQkJCQkgICAgIiVzOiBGYWlsZWQgdG8gZ2V0IHRhYmxlIGluZm86JWRcbiIsCi0J CQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKLQkJCQkgICAgcGFybXMtPnR5cGUpOwot CQkJcmV0dXJuIHJjOwotCQl9Ci0JfQotCiAJLyogQ2hlY2sgaWYgZWxlbWVudCBpcyBpbiB1c2Ug Ki8KIAlhcGFybXMucm1fZGIgPSB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXTsKIAlhcGFybXMu c3VidHlwZSA9IHBhcm1zLT50eXBlOwotCi0JVEZfVEJMX1BUUl9UT19STSgmYXBhcm1zLmluZGV4 LCBwYXJtcy0+aWR4LCBiYXNlLCBzaGlmdCk7Ci0KKwlhcGFybXMuaW5kZXggPSBwYXJtcy0+aWR4 OwogCWFwYXJtcy5hbGxvY2F0ZWQgPSAmYWxsb2NhdGVkOwogCXJjID0gdGZfcm1faXNfYWxsb2Nh dGVkKCZhcGFybXMpOwogCWlmIChyYykKQEAgLTI3OSw5ICsyMzEsOSBAQCB0Zl90YmxfZnJlZShz dHJ1Y3QgdGYgKnRmcCBfX3J0ZV91bnVzZWQsCiAJCXJjID0gdGZfcm1fZ2V0X2hjYXBpX3R5cGUo JmhwYXJtcyk7CiAJCWlmIChyYykgewogCQkJVEZQX0RSVl9MT0coRVJSLAotCQkJCSAgICAiJXMs IEZhaWxlZCB0eXBlIGxvb2t1cCwgdHlwZTolZCwgcmM6JXNcbiIsCisJCQkJICAgICIlcywgRmFp bGVkIHR5cGUgbG9va3VwLCB0eXBlOiVzLCByYzolc1xuIiwKIAkJCQkgICAgdGZfZGlyXzJfc3Ry KHBhcm1zLT5kaXIpLAotCQkJCSAgICBwYXJtcy0+dHlwZSwKKwkJCQkgICAgdGZfdGJsX3R5cGVf Ml9zdHIocGFybXMtPnR5cGUpLAogCQkJCSAgICBzdHJlcnJvcigtcmMpKTsKIAkJCXJldHVybiBy YzsKIAkJfQpAQCAtMjk1LDkgKzI0Nyw5IEBAIHRmX3RibF9mcmVlKHN0cnVjdCB0ZiAqdGZwIF9f cnRlX3VudXNlZCwKIAkJCQkJICBwYXJtcy0+aWR4KTsKIAkJaWYgKHJjKSB7CiAJCQlURlBfRFJW X0xPRyhFUlIsCi0JCQkJICAgICIlcywgU2V0IGZhaWxlZCwgdHlwZTolZCwgcmM6JXNcbiIsCisJ CQkJICAgICIlcywgU2V0IGZhaWxlZCwgdHlwZTolcywgcmM6JXNcbiIsCiAJCQkJICAgIHRmX2Rp cl8yX3N0cihwYXJtcy0+ZGlyKSwKLQkJCQkgICAgcGFybXMtPnR5cGUsCisJCQkJICAgIHRmX3Ri bF90eXBlXzJfc3RyKHBhcm1zLT50eXBlKSwKIAkJCQkgICAgc3RyZXJyb3IoLXJjKSk7CiAJCQly ZXR1cm4gcmM7CiAJCX0KQEAgLTMwNiwxNSArMjU4LDEzIEBAIHRmX3RibF9mcmVlKHN0cnVjdCB0 ZiAqdGZwIF9fcnRlX3VudXNlZCwKIAkvKiBGcmVlIHJlcXVlc3RlZCBlbGVtZW50ICovCiAJZnBh cm1zLnJtX2RiID0gdGJsX2RiLT50YmxfZGJbcGFybXMtPmRpcl07CiAJZnBhcm1zLnN1YnR5cGUg PSBwYXJtcy0+dHlwZTsKLQotCVRGX1RCTF9QVFJfVE9fUk0oJmZwYXJtcy5pbmRleCwgcGFybXMt PmlkeCwgYmFzZSwgc2hpZnQpOwotCisJZnBhcm1zLmluZGV4ID0gcGFybXMtPmlkeDsKIAlyYyA9 IHRmX3JtX2ZyZWUoJmZwYXJtcyk7CiAJaWYgKHJjKSB7CiAJCVRGUF9EUlZfTE9HKEVSUiwKLQkJ CSAgICAiJXM6IEZyZWUgZmFpbGVkLCB0eXBlOiVkLCBpbmRleDolZFxuIiwKKwkJCSAgICAiJXM6 IEZyZWUgZmFpbGVkLCB0eXBlOiVzLCBpbmRleDolZFxuIiwKIAkJCSAgICB0Zl9kaXJfMl9zdHIo cGFybXMtPmRpciksCi0JCQkgICAgcGFybXMtPnR5cGUsCisJCQkgICAgdGZfdGJsX3R5cGVfMl9z dHIocGFybXMtPnR5cGUpLAogCQkJICAgIHBhcm1zLT5pZHgpOwogCQlyZXR1cm4gcmM7CiAJfQpA QCAtMzMzLDcgKzI4Myw2IEBAIHRmX3RibF9zZXQoc3RydWN0IHRmICp0ZnAsCiAJc3RydWN0IHRm X3JtX2dldF9oY2FwaV9wYXJtcyBocGFybXMgPSB7IDAgfTsKIAlzdHJ1Y3QgdGZfc2Vzc2lvbiAq dGZzOwogCXN0cnVjdCB0Zl9kZXZfaW5mbyAqZGV2OwotCXVpbnQxNl90IGJhc2UgPSAwLCBzaGlm dCA9IDA7CiAJc3RydWN0IHRibF9ybV9kYiAqdGJsX2RiOwogCXZvaWQgKnRibF9kYl9wdHIgPSBO VUxMOwogCkBAIC0zNTgsMjEgKzMwNyw2IEBAIHRmX3RibF9zZXQoc3RydWN0IHRmICp0ZnAsCiAJ fQogCXRibF9kYiA9IChzdHJ1Y3QgdGJsX3JtX2RiICopdGJsX2RiX3B0cjsKIAotCS8qIE9ubHkg Z2V0IHRhYmxlIGluZm8gaWYgcmVxdWlyZWQgZm9yIHRoZSBkZXZpY2UgKi8KLQlpZiAoZGV2LT5v cHMtPnRmX2Rldl9nZXRfdGJsX2luZm8pIHsKLQkJcmMgPSBkZXYtPm9wcy0+dGZfZGV2X2dldF90 YmxfaW5mbyh0ZnAsCi0JCQkJCQkgICB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXSwKLQkJCQkJ CSAgIHBhcm1zLT50eXBlLAotCQkJCQkJICAgJmJhc2UsCi0JCQkJCQkgICAmc2hpZnQpOwotCQlp ZiAocmMpIHsKLQkJCVRGUF9EUlZfTE9HKEVSUiwKLQkJCQkgICAgIiVzOiBGYWlsZWQgdG8gZ2V0 IHRhYmxlIGluZm86JWRcbiIsCi0JCQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKLQkJ CQkgICAgcGFybXMtPnR5cGUpOwotCQkJcmV0dXJuIHJjOwotCQl9Ci0JfQogCiAJLyogRG8gbm90 IGNoZWNrIG1ldGVyIGRyb3AgY291bnRlciBiZWNhdXNlIGl0IGlzIG5vdCBhbGxvY2F0ZWQKIAkg KiByZXNvdXJjZXMKQEAgLTM4MSwxOSArMzE1LDE4IEBAIHRmX3RibF9zZXQoc3RydWN0IHRmICp0 ZnAsCiAJCS8qIFZlcmlmeSB0aGF0IHRoZSBlbnRyeSBoYXMgYmVlbiBwcmV2aW91c2x5IGFsbG9j YXRlZCAqLwogCQlhcGFybXMucm1fZGIgPSB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXTsKIAkJ YXBhcm1zLnN1YnR5cGUgPSBwYXJtcy0+dHlwZTsKLQkJVEZfVEJMX1BUUl9UT19STSgmYXBhcm1z LmluZGV4LCBwYXJtcy0+aWR4LCBiYXNlLCBzaGlmdCk7Ci0KIAkJYXBhcm1zLmFsbG9jYXRlZCA9 ICZhbGxvY2F0ZWQ7CisJCWFwYXJtcy5pbmRleCA9IHBhcm1zLT5pZHg7CiAJCXJjID0gdGZfcm1f aXNfYWxsb2NhdGVkKCZhcGFybXMpOwogCQlpZiAocmMpCiAJCQlyZXR1cm4gcmM7CiAKIAkJaWYg KGFsbG9jYXRlZCAhPSBURl9STV9BTExPQ0FURURfRU5UUllfSU5fVVNFKSB7CiAJCQlURlBfRFJW X0xPRyhFUlIsCi0JCQkgICAiJXMsIEludmFsaWQgb3Igbm90IGFsbG9jYXRlZCBpbmRleCwgdHlw ZTolZCwgaWR4OiVkXG4iLAotCQkJICAgdGZfZGlyXzJfc3RyKHBhcm1zLT5kaXIpLAotCQkJICAg cGFybXMtPnR5cGUsCi0JCQkgICBwYXJtcy0+aWR4KTsKKwkJCSAgICAgICIlcywgSW52YWxpZCBv ciBub3QgYWxsb2NhdGVkLCB0eXBlOiVzLCBpZHg6JWRcbiIsCisJCQkgICAgICB0Zl9kaXJfMl9z dHIocGFybXMtPmRpciksCisJCQkgICAgICB0Zl90YmxfdHlwZV8yX3N0cihwYXJtcy0+dHlwZSks CisJCQkgICAgICBwYXJtcy0+aWR4KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAJfQpAQCAt NDQxLDcgKzM3NCw2IEBAIHRmX3RibF9nZXQoc3RydWN0IHRmICp0ZnAsCiAJc3RydWN0IHRmX3Jt X2dldF9oY2FwaV9wYXJtcyBocGFybXMgPSB7IDAgfTsKIAlzdHJ1Y3QgdGZfc2Vzc2lvbiAqdGZz OwogCXN0cnVjdCB0Zl9kZXZfaW5mbyAqZGV2OwotCXVpbnQxNl90IGJhc2UgPSAwLCBzaGlmdCA9 IDA7CiAJc3RydWN0IHRibF9ybV9kYiAqdGJsX2RiOwogCXZvaWQgKnRibF9kYl9wdHIgPSBOVUxM OwogCkBAIC00NjYsMjIgKzM5OCw2IEBAIHRmX3RibF9nZXQoc3RydWN0IHRmICp0ZnAsCiAJfQog CXRibF9kYiA9IChzdHJ1Y3QgdGJsX3JtX2RiICopdGJsX2RiX3B0cjsKIAotCS8qIE9ubHkgZ2V0 IHRhYmxlIGluZm8gaWYgcmVxdWlyZWQgZm9yIHRoZSBkZXZpY2UgKi8KLQlpZiAoZGV2LT5vcHMt PnRmX2Rldl9nZXRfdGJsX2luZm8pIHsKLQkJcmMgPSBkZXYtPm9wcy0+dGZfZGV2X2dldF90Ymxf aW5mbyh0ZnAsCi0JCQkJCQkgICB0YmxfZGItPnRibF9kYltwYXJtcy0+ZGlyXSwKLQkJCQkJCSAg IHBhcm1zLT50eXBlLAotCQkJCQkJICAgJmJhc2UsCi0JCQkJCQkgICAmc2hpZnQpOwotCQlpZiAo cmMpIHsKLQkJCVRGUF9EUlZfTE9HKEVSUiwKLQkJCQkgICAgIiVzOiBGYWlsZWQgdG8gZ2V0IHRh YmxlIGluZm86JWRcbiIsCi0JCQkJICAgIHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKLQkJCQkg ICAgcGFybXMtPnR5cGUpOwotCQkJcmV0dXJuIHJjOwotCQl9Ci0JfQotCiAJLyogRG8gbm90IGNo ZWNrIG1ldGVyIGRyb3AgY291bnRlciBiZWNhdXNlIGl0IGlzIG5vdCBhbGxvY2F0ZWQKIAkgKiBy ZXNvdXJjZXMuCiAJICovCkBAIC00ODksOCArNDA1LDcgQEAgdGZfdGJsX2dldChzdHJ1Y3QgdGYg KnRmcCwKIAkJLyogVmVyaWZ5IHRoYXQgdGhlIGVudHJ5IGhhcyBiZWVuIHByZXZpb3VzbHkgYWxs b2NhdGVkICovCiAJCWFwYXJtcy5ybV9kYiA9IHRibF9kYi0+dGJsX2RiW3Bhcm1zLT5kaXJdOwog CQlhcGFybXMuc3VidHlwZSA9IHBhcm1zLT50eXBlOwotCQlURl9UQkxfUFRSX1RPX1JNKCZhcGFy bXMuaW5kZXgsIHBhcm1zLT5pZHgsIGJhc2UsIHNoaWZ0KTsKLQorCQlhcGFybXMuaW5kZXggPSBw YXJtcy0+aWR4OwogCQlhcGFybXMuYWxsb2NhdGVkID0gJmFsbG9jYXRlZDsKIAkJcmMgPSB0Zl9y bV9pc19hbGxvY2F0ZWQoJmFwYXJtcyk7CiAJCWlmIChyYykKQEAgLTQ5OCw5ICs0MTMsOSBAQCB0 Zl90YmxfZ2V0KHN0cnVjdCB0ZiAqdGZwLAogCiAJCWlmIChhbGxvY2F0ZWQgIT0gVEZfUk1fQUxM T0NBVEVEX0VOVFJZX0lOX1VTRSkgewogCQkJVEZQX0RSVl9MT0coRVJSLAotCQkJICAgIiVzLCBJ bnZhbGlkIG9yIG5vdCBhbGxvY2F0ZWQgaW5kZXgsIHR5cGU6JWQsIGlkeDolZFxuIiwKKwkJCSAg ICIlcywgSW52YWxpZCBvciBub3QgYWxsb2NhdGVkIGluZGV4LCB0eXBlOiVzLCBpZHg6JWRcbiIs CiAJCQkgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRpciksCi0JCQkgICBwYXJtcy0+dHlwZSwKKwkJ CSAgIHRmX3RibF90eXBlXzJfc3RyKHBhcm1zLT50eXBlKSwKIAkJCSAgIHBhcm1zLT5pZHgpOwog CQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KQEAgLTU0OSw3ICs0NjQsNiBAQCB0Zl90YmxfYnVsa19n ZXQoc3RydWN0IHRmICp0ZnAsCiAJc3RydWN0IHRmX3JtX2NoZWNrX2luZGV4ZXNfaW5fcmFuZ2Vf cGFybXMgY3Bhcm1zID0geyAwIH07CiAJc3RydWN0IHRmX3Nlc3Npb24gKnRmczsKIAlzdHJ1Y3Qg dGZfZGV2X2luZm8gKmRldjsKLQl1aW50MTZfdCBiYXNlID0gMCwgc2hpZnQgPSAwOwogCXN0cnVj dCB0Ymxfcm1fZGIgKnRibF9kYjsKIAl2b2lkICp0YmxfZGJfcHRyID0gTlVMTDsKIApAQCAtNTc0 LDQwICs0ODgsMjEgQEAgdGZfdGJsX2J1bGtfZ2V0KHN0cnVjdCB0ZiAqdGZwLAogCX0KIAl0Ymxf ZGIgPSAoc3RydWN0IHRibF9ybV9kYiAqKXRibF9kYl9wdHI7CiAKLQkvKiBPbmx5IGdldCB0YWJs ZSBpbmZvIGlmIHJlcXVpcmVkIGZvciB0aGUgZGV2aWNlICovCi0JaWYgKGRldi0+b3BzLT50Zl9k ZXZfZ2V0X3RibF9pbmZvKSB7Ci0JCXJjID0gZGV2LT5vcHMtPnRmX2Rldl9nZXRfdGJsX2luZm8o dGZwLAotCQkJCQkJICAgdGJsX2RiLT50YmxfZGJbcGFybXMtPmRpcl0sCi0JCQkJCQkgICBwYXJt cy0+dHlwZSwKLQkJCQkJCSAgICZiYXNlLAotCQkJCQkJICAgJnNoaWZ0KTsKLQkJaWYgKHJjKSB7 Ci0JCQlURlBfRFJWX0xPRyhFUlIsCi0JCQkJICAgICIlczogRmFpbGVkIHRvIGdldCB0YWJsZSBp bmZvOiVkXG4iLAotCQkJCSAgICB0Zl9kaXJfMl9zdHIocGFybXMtPmRpciksCi0JCQkJICAgIHBh cm1zLT50eXBlKTsKLQkJCXJldHVybiByYzsKLQkJfQotCX0KLQogCS8qIFZlcmlmeSB0aGF0IHRo ZSBlbnRyaWVzIGFyZSBpbiB0aGUgcmFuZ2Ugb2YgcmVzZXJ2ZWQgcmVzb3VyY2VzLiAqLwogCWNw YXJtcy5ybV9kYiA9IHRibF9kYi0+dGJsX2RiW3Bhcm1zLT5kaXJdOwogCWNwYXJtcy5zdWJ0eXBl ID0gcGFybXMtPnR5cGU7Ci0KLQlURl9UQkxfUFRSX1RPX1JNKCZjcGFybXMuc3RhcnRpbmdfaW5k ZXgsIHBhcm1zLT5zdGFydGluZ19pZHgsCi0JCQkgYmFzZSwgc2hpZnQpOwotCiAJY3Bhcm1zLm51 bV9lbnRyaWVzID0gcGFybXMtPm51bV9lbnRyaWVzOworCWNwYXJtcy5zdGFydGluZ19pbmRleCA9 IHBhcm1zLT5zdGFydGluZ19pZHg7CiAKIAlyYyA9IHRmX3JtX2NoZWNrX2luZGV4ZXNfaW5fcmFu Z2UoJmNwYXJtcyk7CiAJaWYgKHJjKSB7CiAJCVRGUF9EUlZfTE9HKEVSUiwKIAkJCSAgICAiJXMs IEludmFsaWQgb3IgJWQgaW5kZXggc3RhcnRpbmcgZnJvbSAlZCIKLQkJCSAgICAiIG5vdCBpbiBy YW5nZSwgdHlwZTolZCIsCisJCQkgICAgIiBub3QgaW4gcmFuZ2UsIHR5cGU6JXMiLAogCQkJICAg IHRmX2Rpcl8yX3N0cihwYXJtcy0+ZGlyKSwKIAkJCSAgICBwYXJtcy0+c3RhcnRpbmdfaWR4LAog CQkJICAgIHBhcm1zLT5udW1fZW50cmllcywKLQkJCSAgICBwYXJtcy0+dHlwZSk7CisJCQkgICAg dGZfdGJsX3R5cGVfMl9zdHIocGFybXMtPnR5cGUpKTsKIAkJcmV0dXJuIHJjOwogCX0KIApAQCAt NjUzLDkgKzU0OCw5IEBAIHRmX3RibF9nZXRfcmVzY19pbmZvKHN0cnVjdCB0ZiAqdGZwLAogCXN0 cnVjdCB0Zl9ybV9nZXRfYWxsb2NfaW5mb19wYXJtcyBhaW5mbzsKIAl2b2lkICp0YmxfZGJfcHRy ID0gTlVMTDsKIAlzdHJ1Y3QgdGJsX3JtX2RiICp0YmxfZGI7Ci0JdWludDE2X3QgYmFzZSA9IDAs IHNoaWZ0ID0gMDsKIAlzdHJ1Y3QgdGZfZGV2X2luZm8gKmRldjsKIAlzdHJ1Y3QgdGZfc2Vzc2lv biAqdGZzOworCXVpbnQxNl90IGJhc2UgPSAwLCBzaGlmdCA9IDA7CiAKIAlURl9DSEVDS19QQVJN UzIodGZwLCB0YmwpOwogCkBAIC02NzcsNyArNTcyLDYgQEAgdGZfdGJsX2dldF9yZXNjX2luZm8o c3RydWN0IHRmICp0ZnAsCiAKIAl0YmxfZGIgPSAoc3RydWN0IHRibF9ybV9kYiAqKXRibF9kYl9w dHI7CiAKLQkvKiBjaGVjayBpZiByZXNlcnZlZCByZXNvdXJjZSBmb3IgV0MgaXMgbXVsdGlwbGUg b2YgbnVtX3NsaWNlcyAqLwogCWZvciAoZCA9IDA7IGQgPCBURl9ESVJfTUFYOyBkKyspIHsKIAkJ YWluZm8ucm1fZGIgPSB0YmxfZGItPnRibF9kYltkXTsKIAkJZGluZm8gPSB0YmxbZF0uaW5mbzsK ZGlmZiBhL2RyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Y2FtLmMgYi9kcml2ZXJzL25ldC9i bnh0L3RmX2NvcmUvdGZfdGNhbS5jCShyZWplY3RlZCBodW5rcykKQEAgLTQzLDcgKzQzLDcgQEAg dGZfdGNhbV9iaW5kKHN0cnVjdCB0ZiAqdGZwLAogCXN0cnVjdCB0Zl9zaGFkb3dfdGNhbV9mcmVl X2RiX3Bhcm1zIGZzaGFkb3c7CiAJc3RydWN0IHRmX3NoYWRvd190Y2FtX2NmZ19wYXJtcyBzaGFk b3dfY2ZnOwogCXN0cnVjdCB0Zl9zaGFkb3dfdGNhbV9jcmVhdGVfZGJfcGFybXMgc2hhZG93X2Nk YjsKLQl1aW50MTZfdCBudW1fc2xpY2VzID0gMTsKKwl1aW50MTZfdCBudW1fc2xpY2VzID0gcGFy bXMtPndjX251bV9zbGljZXM7CiAJc3RydWN0IHRmX3Nlc3Npb24gKnRmczsKIAlzdHJ1Y3QgdGZf ZGV2X2luZm8gKmRldjsKIAlzdHJ1Y3QgdGNhbV9ybV9kYiAqdGNhbV9kYjsKQEAgLTYxLDcgKzYx LDcgQEAgdGZfdGNhbV9iaW5kKHN0cnVjdCB0ZiAqdGZwLAogCWlmIChyYykKIAkJcmV0dXJuIHJj OwogCi0JaWYgKGRldi0+b3BzLT50Zl9kZXZfZ2V0X3RjYW1fc2xpY2VfaW5mbyA9PSBOVUxMKSB7 CisJaWYgKGRldi0+b3BzLT50Zl9kZXZfc2V0X3RjYW1fc2xpY2VfaW5mbyA9PSBOVUxMKSB7CiAJ CXJjID0gLUVPUE5PVFNVUFA7CiAJCVRGUF9EUlZfTE9HKEVSUiwKIAkJCSAgICAiT3BlcmF0aW9u IG5vdCBzdXBwb3J0ZWQsIHJjOiVzXG4iLApAQCAtNjksMTAgKzY5LDggQEAgdGZfdGNhbV9iaW5k KHN0cnVjdCB0ZiAqdGZwLAogCQlyZXR1cm4gcmM7CiAJfQogCi0JcmMgPSBkZXYtPm9wcy0+dGZf ZGV2X2dldF90Y2FtX3NsaWNlX2luZm8odGZwLAotCQkJCQkJICBURl9UQ0FNX1RCTF9UWVBFX1dD X1RDQU0sCi0JCQkJCQkgIDAsCi0JCQkJCQkgICZudW1fc2xpY2VzKTsKKwlyYyA9IGRldi0+b3Bz LT50Zl9kZXZfc2V0X3RjYW1fc2xpY2VfaW5mbyh0ZnAsCisJCQkJCQkgIG51bV9zbGljZXMpOwog CWlmIChyYykKIAkJcmV0dXJuIHJjOwogCmRpZmYgYS9kcml2ZXJzL25ldC9ibnh0L3RmX3VscC9i bnh0X3VscC5jIGIvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvYm54dF91bHAuYwkocmVqZWN0ZWQg aHVua3MpCkBAIC0zODQsNiArMzg0LDcgQEAgdWxwX2N0eF9zaGFyZWRfc2Vzc2lvbl9vcGVuKHN0 cnVjdCBibnh0ICpicCwKIAlzaXplX3QgY29weV9uYnl0ZXM7CiAJdWludDMyX3QgdWxwX2Rldl9p ZCA9IEJOWFRfVUxQX0RFVklDRV9JRF9MQVNUOwogCWludDMyX3QJcmMgPSAwOworCXVpbnQ4X3Qg YXBwX2lkOwogCiAJLyogb25seSBwZXJmb3JtIHRoaXMgaWYgc2hhcmVkIHNlc3Npb24gaXMgZW5h YmxlZC4gKi8KIAlpZiAoIWJueHRfdWxwX2NudHh0X3NoYXJlZF9zZXNzaW9uX2VuYWJsZWQoYnAt PnVscF9jdHgpKQpAQCAtNDIyLDYgKzQyMywxMiBAQCB1bHBfY3R4X3NoYXJlZF9zZXNzaW9uX29w ZW4oc3RydWN0IGJueHQgKmJwLAogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCisJcmMgPSBibnh0 X3VscF9jbnR4dF9hcHBfaWRfZ2V0KGJwLT51bHBfY3R4LCAmYXBwX2lkKTsKKwlpZiAocmMpIHsK KwkJQk5YVF9URl9EQkcoRVJSLCAiVW5hYmxlIHRvIGdldCB0aGUgYXBwIGlkIGZyb20gdWxwLlxu Iik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCXJjID0gYm54dF91bHBfY250eHRfZGV2X2lk X2dldChicC0+dWxwX2N0eCwgJnVscF9kZXZfaWQpOwogCWlmIChyYykgewogCQlCTlhUX1RGX0RC RyhFUlIsICJVbmFibGUgdG8gZ2V0IGRldmljZSBpZCBmcm9tIHVscC5cbiIpOwpAQCAtNDQ1LDYg KzQ1MiwxMCBAQCB1bHBfY3R4X3NoYXJlZF9zZXNzaW9uX29wZW4oc3RydWN0IGJueHQgKmJwLAog CiAJcGFybXMuc2hhZG93X2NvcHkgPSB0cnVlOwogCXBhcm1zLmJwID0gYnA7CisJaWYgKGFwcF9p ZCA9PSAwIHx8IGFwcF9pZCA9PSAzKQorCQlwYXJtcy53Y19udW1fc2xpY2VzID0gVEZfV0NfVENB TV8yX1NMSUNFX1BFUl9ST1c7CisJZWxzZQorCQlwYXJtcy53Y19udW1fc2xpY2VzID0gVEZfV0Nf VENBTV8xX1NMSUNFX1BFUl9ST1c7CiAKIAkvKgogCSAqIE9wZW4gdGhlIHNlc3Npb24gaGVyZSwg YnV0IHRoZSBjb2xsZWN0IHRoZSByZXNvdXJjZXMgZHVyaW5nIHRoZQpAQCAtNTE2LDYgKzUyNyw3 IEBAIHVscF9jdHhfc2Vzc2lvbl9vcGVuKHN0cnVjdCBibnh0ICpicCwKIAlzdHJ1Y3QgdGZfb3Bl bl9zZXNzaW9uX3Bhcm1zCXBhcmFtczsKIAlzdHJ1Y3QgdGZfc2Vzc2lvbl9yZXNvdXJjZXMJKnJl c291cmNlczsKIAl1aW50MzJfdCB1bHBfZGV2X2lkID0gQk5YVF9VTFBfREVWSUNFX0lEX0xBU1Q7 CisJdWludDhfdCBhcHBfaWQ7CiAKIAltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykp OwogCkBAIC01NTYsNiArNTc0LDExIEBAIHVscF9jdHhfc2Vzc2lvbl9vcGVuKHN0cnVjdCBibnh0 ICpicCwKIAkJcmV0dXJuIHJjOwogCiAJcGFyYW1zLmJwID0gYnA7CisJaWYgKGFwcF9pZCA9PSAw IHx8IGFwcF9pZCA9PSAzKQorCQlwYXJhbXMud2NfbnVtX3NsaWNlcyA9IFRGX1dDX1RDQU1fMl9T TElDRV9QRVJfUk9XOworCWVsc2UKKwkJcGFyYW1zLndjX251bV9zbGljZXMgPSBURl9XQ19UQ0FN XzFfU0xJQ0VfUEVSX1JPVzsKKwogCXJjID0gdGZfb3Blbl9zZXNzaW9uKCZicC0+dGZwLCAmcGFy YW1zKTsKIAlpZiAocmMpIHsKIAkJQk5YVF9URl9EQkcoRVJSLCAiRmFpbGVkIHRvIG9wZW4gVEYg c2Vzc2lvbiAtICVzLCByYyA9ICVkXG4iLApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0 L3RmX3VscC9ibnh0X3RmX2NvbW1vbi5oLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Ju eHQvdGZfdWxwL2JueHRfdWxwLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2Ju eHRfdWxwLmM6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2JueHQvdGZfdWxwL2JueHRfdWxwX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKI2luY2x1ZGUgInVscF9wb3J0X2RiLmgiCiNpbmNsdWRlICJ1bHBfaGFfbWdyLmgiCiNpbmNs dWRlIDxydGVfbWFsbG9jLmg+CgpzdGF0aWMgaW50MzJfdApibnh0X3VscF9mbG93X3ZhbGlkYXRl X2FyZ3MoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0dHIsCgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC9ibnh0X3VscF9mbG93LmM6MTMKSHVuayAjMiBz dWNjZWVkZWQgYXQgMTgzIChvZmZzZXQgLTQyIGxpbmVzKS4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvYm54dC90Zl91bHAvZ2VuZXJpY190ZW1wbGF0ZXMvbWVzb24uYnVpbGQuLi4KZXJyb3I6 IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2dlbmVyaWNfdGVtcGxhdGVzL21lc29uLmJ1aWxkOiBk b2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3Rm X3VscC9nZW5lcmljX3RlbXBsYXRlcy91bHBfdGVtcGxhdGVfZGJfdGhvcl9jbGFzcy5jLi4uCmVy cm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC9nZW5lcmljX3RlbXBsYXRlcy91bHBfdGVtcGxh dGVfZGJfdGhvcl9jbGFzcy5jOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfZmNfbWdyLmMuLi4KQ2hlY2tpbmcgcGF0Y2gg ZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX2Zsb3dfZGIuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKCglmdW5jID0gKCgocmVzX2luZm8tPm54dF9yZXNvdXJjZV9pZHggJiBVTFBf RkxPV19EQl9SRVNfRlVOQ19NQVNLKSA+PgoJCSBVTFBfRkxPV19EQl9SRVNfRlVOQ19CSVRTKSA8 PCBVTFBfRkxPV19EQl9SRVNfRlVOQ19VUFBFUik7CgkvKiBUaGUgcmVzb3VyY2UgZnVuYyBpcyBz cGxpdCBpbnRvIHVwcGVyIGFuZCBsb3dlciAqLwoJaWYgKGZ1bmMgJiBVTFBfRkxPV19EQl9SRVNf RlVOQ19ORUVEX0xPV0VSKQoJCXJldHVybiAoZnVuYyB8IHJlc19pbmZvLT5yZXNvdXJjZV9mdW5j X2xvd2VyKTsKCXJldHVybiBmdW5jOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv Ym54dC90Zl91bHAvdWxwX2Zsb3dfZGIuYzoxMTYKSHVuayAjMiBzdWNjZWVkZWQgYXQgNjQyIChv ZmZzZXQgLTEyIGxpbmVzKS4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJaWYgKHBhcmFt cy0+Y3JpdGljYWxfcmVzb3VyY2UgJiYgZmlkX3Jlc291cmNlLT5yZXNvdXJjZV9lbV9oYW5kbGUp IHsKCQlCTlhUX1RGX0RCRyhERUJVRywgIklnbm9yZSBtdWx0aXBsZSBjcml0aWNhbCByZXNvdXJj ZXNcbiIpOwoJCS8qIElnbm9yZSB0aGUgbXVsdGlwbGUgY3JpdGljYWwgcmVzb3VyY2VzICovCgkJ cGFyYW1zLT5jcml0aWNhbF9yZXNvdXJjZSA9IEJOWFRfVUxQX0NSSVRJQ0FMX1JFU09VUkNFX05P OwoJfQoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9m bG93X2RiLmM6NzE0CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiBmbG93X3R5cGUgW2lu XSBTcGVjaWZ5IGl0IGlzIHJlZ3VsYXIgb3IgZGVmYXVsdCBmbG93CiAqIGZpZCBbaW5dIFRoZSBp bmRleCB0byB0aGUgZmxvdyBlbnRyeQogKiBwYXJhbXMgW2luL291dF0gVGhlIGNvbnRlbnRzIHRv IGJlIGNvcGllZCBpbnRvIHBhcmFtcy4KICogT25seSB0aGUgY3JpdGljYWxfcmVzb3VyY2UgbmVl ZHMgdG8gYmUgc2V0IGJ5IHRoZSBjYWxsZXIuCiAqCiAqIFJldHVybnMgMCBvbiBzdWNjZXNzIGFu ZCBuZWdhdGl2ZSBvbiBmYWlsdXJlLgogKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L2JueHQvdGZfdWxwL3VscF9mbG93X2RiLmM6NzY2Ckh1bmsgIzUgc3VjY2VlZGVkIGF0IDkx OCAob2Zmc2V0IC0yMiBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJaWYgKHJl cyAmJiAoc2hhcmVkICYgQk5YVF9VTFBfU0hBUkVEX1NFU1NJT05fWUVTKSkKCQlyZXMtPmZkYl9m bGFncyB8PSBVTFBfRkRCX0ZMQUdfU0hBUkVEX1NFU1NJT047Cn0KCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9mbG93X2RiLmM6MTkyMQpDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfZmxvd19kYi5oLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoKLyoKICogU3RydWN0dXJlIGZvciB0aGUgZmxvdyBkYXRhYmFzZSBy ZXNvdXJjZSBpbmZvcm1hdGlvbgogKiBUaGUgYmVsb3cgc3RydWN0dXJlIGlzIGJhc2VkIG9uIHRo ZSBiZWxvdyBwYXJ0aXRpb25zCiAqIG54dF9yZXNvdXJjZV9pZHggPSBkaXJbMzFdLHJlc291cmNl X2Z1bmNfdXBwZXJbMzA6MjhdLG54dF9yZXNvdXJjZV9pZHhbMjc6MF0KICogSWYgcmVzb3VyY2Vf ZnVuYyBpcyBFTV9UQkwgdGhlbiB1c2UgcmVzb3VyY2VfZW1faGFuZGxlLgogKiBFbHNlIHRoZSBv dGhlciBwYXJ0IG9mIHRoZSB1bmlvbiBpcyB1c2VkIGFuZAoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX2Zsb3dfZGIuaDoxOAplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKdm9pZCB1bHBfZmxvd19kYl9zaGFyZWRfc2Vzc2lvbl9zZXQoc3RydWN0IHVs cF9mbG93X2RiX3Jlc19wYXJhbXMgKnJlcywKCQkJCSAgICBlbnVtIGJueHRfdWxwX3NoYXJlZF9z ZXNzaW9uIHNoYXJlZCk7CgojZW5kaWYgLyogX1VMUF9GTE9XX0RCX0hfICovCgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfZmxvd19kYi5oOjQxNwpDaGVj a2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfZ2VuX3RibC5jLi4uCmVycm9y OiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfZ2VuX3RibC5jOiBkb2VzIG5vdCBleGlzdCBp biBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfaGFfbWdy LmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9oYV9tZ3IuYzogZG9lcyBu b3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAv dWxwX21hcHBlci5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojaW5jbHVkZSAidWxw X2hhX21nci5oIgojaW5jbHVkZSAiYm54dF90Zl9wbWRfc2hpbS5oIgoKc3RhdGljIHVpbnQ4X3Qg bWFwcGVyX2ZsZF96ZXJvc1sxNl0gPSB7IDAgfTsKCnN0YXRpYyB1aW50OF90IG1hcHBlcl9mbGRf b25lc1sxNl0gPSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3Vs cC91bHBfbWFwcGVyLmM6MjIKSHVuayAjMiBzdWNjZWVkZWQgYXQgMTIwIChvZmZzZXQgLTQxIGxp bmVzKS4KSHVuayAjMyBzdWNjZWVkZWQgYXQgMTg1IChvZmZzZXQgLTQzIGxpbmVzKS4KZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCSAgICB0Zl9pZGVudF8yX3N0cihpcGFybXMuaWRlbnRf dHlwZSkpOwoJCXJldHVybiByYzsKCX0KCglpZCA9ICh1aW50NjRfdCl0ZnBfY3B1X3RvX2JlXzY0 KGlwYXJtcy5pZCk7CglpZiAodWxwX3JlZ2ZpbGVfd3JpdGUocGFybXMtPnJlZ2ZpbGUsIGlkeCwg aWQpKSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBf bWFwcGVyLmM6Nzg0CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJfSBlbHNlIHsKCQkqdmFs ID0gaXBhcm1zLmlkOwoJfQoJcmV0dXJuIDA7CgplcnJvcjoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYzo4MTMKZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgkJCSAgICBzcGFybXMuc2VhcmNoX2lkKTsKCQlyZXR1cm4gcmM7Cgl9CgoJ LyogV3JpdGUgaXQgdG8gdGhlIHJlZ2ZpbGUgKi8KCWlkID0gKHVpbnQ2NF90KXRmcF9jcHVfdG9f YmVfNjQoc3Bhcm1zLnNlYXJjaF9pZCk7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25l dC9ibnh0L3RmX3VscC91bHBfbWFwcGVyLmM6ODc3Ckh1bmsgIzcgc3VjY2VlZGVkIGF0IDc3MyAo b2Zmc2V0IC0xNjIgbGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJcmV0dXJu IC1FSU5WQUw7CgkJfQoJCWlkeCA9IHRmcF9iZV90b19jcHVfMTYoaWR4KTsKCQlpZiAoaWR4ID49 IEJOWFRfVUxQX0NGX0lEWF9MQVNUIHx8IGJ5dGVsZW4gPiBzaXplb2YodWludDY0X3QpKSB7CgkJ CUJOWFRfVEZfREJHKEVSUiwgImNvbXAgZmllbGQgWyVkXSByZWFkIG9vYiAlZFxuIiwgaWR4LAoJ CQkJICAgIGJ5dGVsZW4pOwoJCQlyZXR1cm4gLUVJTlZBTDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYzo5OTYKZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgkJYnJlYWs7Cgl9CgoJcmV0dXJuIHJjOwplcnJvcjoKCUJOWFRfVEZfREJH KEVSUiwgIkVycm9yIGluICVzOiVzIHByb2Nlc3MgJXU6JXVcbiIsIG5hbWUsCgkJICAgIGZsZC0+ ZGVzY3JpcHRpb24sICh2YWwpID8gd3JpdGVfaWR4IDogMCwgdmFsX2xlbik7CgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfbWFwcGVyLmM6MTQ0OAplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCX0KCgkvKiBpZiBlbmNhcCBiaXQgc3dhcCBpcyBlbmFi bGVkIHBlcmZvcm0gdGhlIGJpdCBzd2FwICovCglpZiAocGFybXMtPmRldmljZV9wYXJhbXMtPmVu Y2FwX2J5dGVfc3dhcCAmJiBlbmNhcF9mbGRzKQoJCXVscF9ibG9iX3BlcmZvcm1fZW5jYXBfc3dh cChkYXRhKTsKCglyZXR1cm4gcmM7Cn0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYzoxNTAwCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJCQkgICAgdGZfZGlyXzJfc3RyKHNwYXJtcy5kaXIpLCBzcGFybXMuaWR4KTsKCQlyZXR1cm4g LUVJTzsKCX0KCgkvKiBNYXJrIGFjdGlvbiAqLwoJcmMgPSB1bHBfbWFwcGVyX21hcmtfYWN0X3B0 cl9wcm9jZXNzKHBhcm1zLCB0YmwpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv Ym54dC90Zl91bHAvdWxwX21hcHBlci5jOjE3MjUKSHVuayAjMTIgc3VjY2VlZGVkIGF0IDE1MTMg KG9mZnNldCAtMjc1IGxpbmVzKS4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnsKCXVscF9i bG9iX3BlcmZvcm1fNjRCX3dvcmRfc3dhcChibG9iKTsKCXVscF9ibG9iX3BlcmZvcm1fNjRCX2J5 dGVfc3dhcChibG9iKTsKfQoKc3RhdGljIGludDMyX3QKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYzoxODM4CmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoJCUJOWFRfVEZfREJHKEVSUiwgIkZhaWxlZCB0byBidWlsZCB0aGUgcmVzdWx0 IGJsb2JcbiIpOwoJCXJldHVybiByYzsKCX0KCWlmIChkcGFybXMtPmR5bmFtaWNfcGFkX2VuKSB7 CgkJdWludDMyX3QgYWJpdHMgPSBkcGFybXMtPmVtX2Jsa19hbGlnbl9iaXRzOwoKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYzoyMTM0CmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCXVscF9ibG9iX3BhZF9hbGlnbigmZGF0YSwgYWJp dHMpOwoKCQl1bHBfYmxvYl9wZXJmb3JtX2J5dGVfcmV2ZXJzZSgmZGF0YSwgVUxQX0JJVFNfMl9C WVRFKGFiaXRzKSk7Cgl9CgoJLyogZG8gdGhlIHRyYW5zcG9zZSBmb3IgdGhlIGludGVybmFsIEVN IGtleXMgKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3Vs cF9tYXBwZXIuYzoyMTQ4CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCX0KCQl0bXBsZW4g PSB1bHBfYmxvYl9kYXRhX2xlbl9nZXQoJmtleSk7CgkJdWxwX2Jsb2JfcGVyZm9ybV9ieXRlX3Jl dmVyc2UoJmtleSwgVUxQX0JJVFNfMl9CWVRFKHRtcGxlbikpOwoJfQoKCXJjID0gYm54dF91bHBf Y250eHRfdGJsX3Njb3BlX2lkX2dldChwYXJtcy0+dWxwX2N0eCwKCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYzoyMTYwCkh1bmsgIzE3IHN1 Y2NlZWRlZCBhdCAxODkxIChvZmZzZXQgLTM4MCBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgoJCQkJICAgIHNwYXJtcy5pZHgsIHJjKTsKCQkJZ290byBlcnJvcjsKCQl9CgoJCS8q IENhbGN1bGF0ZSBhY3Rpb24gcmVjb3JkIHNpemUgKi8KCQlpZiAodGJsLT5yZXNvdXJjZV90eXBl ID09IFRGX1RCTF9UWVBFX0VYVCkgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv Ym54dC90Zl91bHAvdWxwX21hcHBlci5jOjI0NzkKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgkJCSAgICBpZnRibF9wYXJhbXMuaWR4LCByYyk7CgkJcmV0dXJuIHJjOwoJfQoKCS8qCgkgKiBU QkQ6IE5lZWQgdG8gbG9vayBhdCB0aGUgbmVlZCB0byBzdG9yZSBpZHggaW4gZmxvdyBkYiBmb3Ig cmVzdG9yZQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxw X21hcHBlci5jOjI2MzUKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJLyogVGhlX2tleSBp cyBhIGJ5dGUgYXJyYXkgY29udmVydCBpdCB0byBhIHNlYXJjaCBpbmRleCAqLwoJY2FjaGVfa2V5 ID0gdWxwX2Jsb2JfZGF0YV9nZXQoJmtleSwgJnRtcGxlbik7CgkvKiBnZXQgdGhlIGdlbmVyaWMg dGFibGUgICovCglnZW5fdGJsX2xpc3QgPSAmcGFybXMtPm1hcHBlcl9kYXRhLT5nZW5fdGJsX2xp c3RbdGJsX2lkeF07CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl91 bHAvdWxwX21hcHBlci5jOjI2OTcKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cglmb3IgKHRi bF9pZHggPSAwOyB0YmxfaWR4IDwgbnVtX3RibHMgJiYgY29uZF9nb3RvOykgewoJCXRibCA9ICZ0 YmxzW3RibF9pZHhdOwoJCWNvbmRfZ290byA9IHRibC0+ZXhlY3V0ZV9pbmZvLmNvbmRfdHJ1ZV9n b3RvOwoJCS8qIFByb2Nlc3MgdGhlIGNvbmRpdGlvbmFsIGZ1bmMgY29kZSBvcGNvZGVzICovCgkJ aWYgKHVscF9tYXBwZXJfZnVuY19pbmZvX3Byb2Nlc3MocGFybXMsIHRibCkpIHsKCQkJQk5YVF9U Rl9EQkcoRVJSLCAiRmFpbGVkIHRvIHByb2Nlc3MgY29uZCB1cGRhdGVcbiIpOwoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX21hcHBlci5jOjM0OTUKQ2hl Y2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX21hdGNoZXIuYy4uLgpIdW5r ICMyIHN1Y2NlZWRlZCBhdCA4NSAob2Zmc2V0IC0xNCBsaW5lcykuCkh1bmsgIzMgc3VjY2VlZGVk IGF0IDEyNyAob2Zmc2V0IC0yNCBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Ju eHQvdGZfdWxwL3VscF9wb3J0X2RiLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNp bmNsdWRlICJibnh0LmgiCiNpbmNsdWRlICJibnh0X3ZuaWMuaCIKI2luY2x1ZGUgImJueHRfdGZf Y29tbW9uLmgiCiNpbmNsdWRlICJ1bHBfcG9ydF9kYi5oIgojaW5jbHVkZSAidGZwLmgiCiNpbmNs dWRlICJibnh0X3RmX3BtZF9zaGltLmgiCgpzdGF0aWMgdWludDMyX3QKdWxwX3BvcnRfZGJfYWxs b2NhdGVfaWZpbmRleChzdHJ1Y3QgYm54dF91bHBfcG9ydF9kYiAqcG9ydF9kYikKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9wb3J0X2RiLmM6NwplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglpbnRmLT50eXBlID0gYm54dF9wbWRfZ2V0X2ludGVy ZmFjZV90eXBlKHBvcnRfaWQpOwoJaW50Zi0+ZHJ2X2Z1bmNfaWQgPSBibnh0X3BtZF9nZXRfZndf ZnVuY19pZChwb3J0X2lkLAoJCQkJCQkgICAgQk5YVF9VTFBfSU5URl9UWVBFX0lOVkFMSUQpOwoK CWZ1bmMgPSAmcG9ydF9kYi0+dWxwX2Z1bmNfaWRfdGJsW2ludGYtPmRydl9mdW5jX2lkXTsKCWlm ICghZnVuYy0+ZnVuY192YWxpZCkgewoJCWZ1bmMtPmZ1bmNfc3ZpZiA9IGJueHRfcG1kX2dldF9z dmlmKHBvcnRfaWQsIHRydWUsCgkJCQkJCSAgICBCTlhUX1VMUF9JTlRGX1RZUEVfSU5WQUxJRCk7 CgkJZnVuYy0+ZnVuY19zcGlmID0gYm54dF9wbWRfZ2V0X3BoeV9wb3J0X2lkKHBvcnRfaWQpOwoJ CWZ1bmMtPmZ1bmNfcGFyaWYgPQoJCQlibnh0X3BtZF9nZXRfcGFyaWYocG9ydF9pZCwgQk5YVF9V TFBfSU5URl9UWVBFX0lOVkFMSUQpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv Ym54dC90Zl91bHAvdWxwX3BvcnRfZGIuYzoxNTEKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgkJcG9ydF9kYXRhLT5wb3J0X3Zwb3J0ID0gYm54dF9wbWRfZ2V0X3Zwb3J0KHBvcnRfaWQpOwoJ CXBvcnRfZGF0YS0+cG9ydF92YWxpZCA9IHRydWU7Cgl9CglyZXR1cm4gMDsKfQoKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9wb3J0X2RiLmM6MjAyCkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9ydGVfcGFyc2VyLmMuLi4K SHVuayAjMSBzdWNjZWVkZWQgYXQgOSAob2Zmc2V0IDEgbGluZSkuCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoJCQkgICAgICAgQk5YVF9VTFBfSERSX0JJVF9JSV9WTEFOKTsKCQlpbm5lcl9m bGFnID0gMTsKCX0gZWxzZSB7CgkJQk5YVF9URl9EQkcoRVJSLCAiRXJyb3IgUGFyc2luZzpWbGFu IGhkciBmb3VuZCB3aXRob3V0IGV0aFxuIik7CgkJcmV0dXJuIEJOWFRfVEZfUkNfRVJST1I7Cgl9 CgkvKiBVcGRhdGUgdGhlIGZpZWxkIHByb3RvY29sIGhkciBiaXRtYXAgKi8KCmVycm9yOiBwYXRj aCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9ydGVfcGFyc2VyLmM6ODU1CmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJdWxwX3J0ZV9wcnNyX2ZsZF9tYXNrKHBhcmFtcywg JmlkeCwgc2l6ZSwgJnZlcl9zcGVjLCAmdmVyX21hc2ssCgkJCSAgICAgIFVMUF9QUlNSX0FDVF9E RUZBVUxUKTsKCS8qCgkgKiBUaGUgVEMgYW5kIGZsb3cgbGFiZWwgZmllbGQgYXJlIGlnbm9yZWQg c2luY2UgT1ZTIGlzIHNldHRpbmcKCSAqIGl0IGZvciBtYXRjaCBhbmQgaXQgaXMgbm90IHN1cHBv cnRlZC4KCSAqIFRoaXMgaXMgYSB3b3JrIGFyb3VuZCBhbmQKCSAqIHNoYWxsIGJlIGFkZHJlc3Nl ZCBpbiB0aGUgZnV0dXJlLgoJICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9i bnh0L3RmX3VscC91bHBfcnRlX3BhcnNlci5jOjExMzUKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CgkJcmV0dXJuIEJOWFRfVEZfUkNfUEFSU0VfRVJSOwoJfQoKCWJwID0gYm54dF9nZXRfYnAo cGFyYW1zLT5wb3J0X2lkKTsKCWlmIChicCA9PSBOVUxMKSB7CgkJQk5YVF9URl9EQkcoRVJSLCAi SW52YWxpZCBicFxuIik7CgkJcmV0dXJuIEJOWFRfVEZfUkNfRVJST1I7CgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfcnRlX3BhcnNlci5jOjIxMzgKQ2hl Y2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX3R1bi5jLi4uCkh1bmsgIzMg c3VjY2VlZGVkIGF0IDE1OCAob2Zmc2V0IDEgbGluZSkuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L2JueHQvdGZfdWxwL3VscF91dGlscy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgogKiBkYXRhIFtpbl0gVGhlIHZhbHVlIGlzIHdyaXR0ZW4gaW50byB0aGlzIHZhcmlhYmxlLiAg SXQgaXMgZ29pbmcgdG8gYmUgaW4gdGhlCiAqIHNhbWUgYnl0ZSBvcmRlciBhcyBpdCB3YXMgd3Jp dHRlbi4KICoKICogc2l6ZSBbaW5dIFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSB2YWx1ZSBiZWlu ZyB3cml0dGVuIGludG8gdGhpcwogKiB2YXJpYWJsZS4KICoKICogcmV0dXJucyAwIG9uIHN1Y2Nl c3MKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF91dGls cy5jOjYyCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkJICAgICBkYXRhbGVuLAoJCQkJ ICAgICBkYXRhKTsKCWlmICghcmMpIHsKCQlCTlhUX1RGX0RCRyhFUlIsICJGYWlsZWQgdG8gd3Jp dGUgYmxvYlxuIik7CgkJcmV0dXJuIDA7Cgl9CglibG9iLT53cml0ZV9pZHggKz0gZGF0YWxlbjsK CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF91dGlscy5j OjI5NQplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJCSAgICAgZGF0YWxlbiwKCQkJCSAg ICAgZGF0YSk7CglpZiAoIXJjKSB7CgkJQk5YVF9URl9EQkcoRVJSLCAiRmFpbGVkIHRvIHdyaXRl IGJsb2JcbiIpOwoJCXJldHVybiAwOwoJfQoJLyogY29weSB0aGUgcHJldmlvdXNseSBzdG9yZWQg ZGF0YSAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxw X3V0aWxzLmM6MzU1CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKgogKiBkYXRhIFtpbl0g MzItYml0IHZhbHVlIHRvIGJlIGFkZGVkIHRvIHRoZSBibG9iLgogKgogKiBkYXRhbGVuIFtpbl0g VGhlIG51bWJlciBvZiBiaXRzIHRvIGJlIGFkZGVkIHRvIHRoZSBibG9iLgogKgogKiBUaGUgb2Zm c2V0IG9mIHRoZSBkYXRhIGlzIHVwZGF0ZWQgYWZ0ZXIgZWFjaCBwdXNoIG9mIGRhdGEuCiAqIE5V TEwgcmV0dXJuZWQgb24gZXJyb3IsIHBvaW50ZXIgcHVzaGVkIHZhbHVlIG90aGVyd2lzZS4KCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF91dGlscy5jOjQw OQpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2JueHRfdGZfY29tbW9uLmgg Y2xlYW5seS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvYm54dF91bHBf Zmxvdy5jIHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KSHVuayAjMiBhcHBsaWVk IGNsZWFubHkuCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX2ZjX21n ci5jIGNsZWFubHkuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9m bG93X2RiLmMgd2l0aCA0IHJlamVjdHMuLi4KUmVqZWN0ZWQgaHVuayAjMS4KSHVuayAjMiBhcHBs aWVkIGNsZWFubHkuClJlamVjdGVkIGh1bmsgIzMuClJlamVjdGVkIGh1bmsgIzQuCkh1bmsgIzUg YXBwbGllZCBjbGVhbmx5LgpSZWplY3RlZCBodW5rICM2LgpBcHBseWluZyBwYXRjaCBkcml2ZXJz L25ldC9ibnh0L3RmX3VscC91bHBfZmxvd19kYi5oIHdpdGggMiByZWplY3RzLi4uClJlamVjdGVk IGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Ju eHQvdGZfdWxwL3VscF9tYXBwZXIuYyB3aXRoIDE2IHJlamVjdHMuLi4KUmVqZWN0ZWQgaHVuayAj MS4KSHVuayAjMiBhcHBsaWVkIGNsZWFubHkuCkh1bmsgIzMgYXBwbGllZCBjbGVhbmx5LgpSZWpl Y3RlZCBodW5rICM0LgpSZWplY3RlZCBodW5rICM1LgpSZWplY3RlZCBodW5rICM2LgpIdW5rICM3 IGFwcGxpZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjOC4KUmVqZWN0ZWQgaHVuayAjOS4KUmVq ZWN0ZWQgaHVuayAjMTAuClJlamVjdGVkIGh1bmsgIzExLgpIdW5rICMxMiBhcHBsaWVkIGNsZWFu bHkuClJlamVjdGVkIGh1bmsgIzEzLgpSZWplY3RlZCBodW5rICMxNC4KUmVqZWN0ZWQgaHVuayAj MTUuClJlamVjdGVkIGh1bmsgIzE2LgpIdW5rICMxNyBhcHBsaWVkIGNsZWFubHkuClJlamVjdGVk IGh1bmsgIzE4LgpSZWplY3RlZCBodW5rICMxOS4KUmVqZWN0ZWQgaHVuayAjMjAuClJlamVjdGVk IGh1bmsgIzIxLgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9tYXRj aGVyLmMgY2xlYW5seS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxw X3BvcnRfZGIuYyB3aXRoIDMgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBo dW5rICMyLgpSZWplY3RlZCBodW5rICMzLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0 L3RmX3VscC91bHBfcnRlX3BhcnNlci5jIHdpdGggMyByZWplY3RzLi4uCkh1bmsgIzEgYXBwbGll ZCBjbGVhbmx5LgpSZWplY3RlZCBodW5rICMyLgpSZWplY3RlZCBodW5rICMzLgpSZWplY3RlZCBo dW5rICM0LgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF90dW4uYyBj bGVhbmx5LgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfdXRpbHMu YyB3aXRoIDQgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5rICMyLgpS ZWplY3RlZCBodW5rICMzLgpSZWplY3RlZCBodW5rICM0LgpkaWZmIGEvZHJpdmVycy9uZXQvYm54 dC90Zl91bHAvYm54dF91bHBfZmxvdy5jIGIvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvYm54dF91 bHBfZmxvdy5jCShyZWplY3RlZCBodW5rcykKQEAgLTEzLDYgKzEzLDkgQEAKICNpbmNsdWRlICJ1 bHBfcG9ydF9kYi5oIgogI2luY2x1ZGUgInVscF9oYV9tZ3IuaCIKICNpbmNsdWRlIDxydGVfbWFs bG9jLmg+CisjaWZkZWYJUlRFX0xJQlJURV9CTlhUX1RSVUZMT1dfREVCVUcKKyNpbmNsdWRlICJ1 bHBfdGVtcGxhdGVfZGVidWdfcHJvdG8uaCIKKyNlbmRpZgogCiBzdGF0aWMgaW50MzJfdAogYm54 dF91bHBfZmxvd192YWxpZGF0ZV9hcmdzKGNvbnN0IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRy LApkaWZmIGEvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX2Zsb3dfZGIuYyBiL2RyaXZlcnMv bmV0L2JueHQvdGZfdWxwL3VscF9mbG93X2RiLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMTE2LDcg KzExNiw3IEBAIHVscF9mbG93X2RiX3Jlc291cmNlX2Z1bmNfZ2V0KHN0cnVjdCB1bHBfZmRiX3Jl c291cmNlX2luZm8gKnJlc19pbmZvKQogCiAJZnVuYyA9ICgoKHJlc19pbmZvLT5ueHRfcmVzb3Vy Y2VfaWR4ICYgVUxQX0ZMT1dfREJfUkVTX0ZVTkNfTUFTSykgPj4KIAkJIFVMUF9GTE9XX0RCX1JF U19GVU5DX0JJVFMpIDw8IFVMUF9GTE9XX0RCX1JFU19GVU5DX1VQUEVSKTsKLQkvKiBUaGUgcmVz b3VyY2UgZnVuYyBpcyBzcGxpdCBpbnRvIHVwcGVyIGFuZCBsb3dlciAqLworCS8qIFRoZSByZW91 cmNlIGZ1bmMgaXMgc3BsaXQgaW50byB1cHBlciBhbmQgbG93ZXIgKi8KIAlpZiAoZnVuYyAmIFVM UF9GTE9XX0RCX1JFU19GVU5DX05FRURfTE9XRVIpCiAJCXJldHVybiAoZnVuYyB8IHJlc19pbmZv LT5yZXNvdXJjZV9mdW5jX2xvd2VyKTsKIAlyZXR1cm4gZnVuYzsKQEAgLTcxNCw3ICs3MTcsNyBA QCB1bHBfZmxvd19kYl9yZXNvdXJjZV9hZGQoc3RydWN0IGJueHRfdWxwX2NvbnRleHQgKnVscF9j dHh0LAogCiAJaWYgKHBhcmFtcy0+Y3JpdGljYWxfcmVzb3VyY2UgJiYgZmlkX3Jlc291cmNlLT5y ZXNvdXJjZV9lbV9oYW5kbGUpIHsKIAkJQk5YVF9URl9EQkcoREVCVUcsICJJZ25vcmUgbXVsdGlw bGUgY3JpdGljYWwgcmVzb3VyY2VzXG4iKTsKLQkJLyogSWdub3JlIHRoZSBtdWx0aXBsZSBjcml0 aWNhbCByZXNvdXJjZXMgKi8KKwkJLyogSWdub3JlIHRoZSBtdWx0aXBsZSBjcml0aWNpYWwgcmVz b3VyY2VzICovCiAJCXBhcmFtcy0+Y3JpdGljYWxfcmVzb3VyY2UgPSBCTlhUX1VMUF9DUklUSUNB TF9SRVNPVVJDRV9OTzsKIAl9CiAKQEAgLTc2Niw3ICs3NjksNyBAQCB1bHBfZmxvd19kYl9yZXNv dXJjZV9hZGQoc3RydWN0IGJueHRfdWxwX2NvbnRleHQgKnVscF9jdHh0LAogICogZmxvd190eXBl IFtpbl0gU3BlY2lmeSBpdCBpcyByZWd1bGFyIG9yIGRlZmF1bHQgZmxvdwogICogZmlkIFtpbl0g VGhlIGluZGV4IHRvIHRoZSBmbG93IGVudHJ5CiAgKiBwYXJhbXMgW2luL291dF0gVGhlIGNvbnRl bnRzIHRvIGJlIGNvcGllZCBpbnRvIHBhcmFtcy4KLSAqIE9ubHkgdGhlIGNyaXRpY2FsX3Jlc291 cmNlIG5lZWRzIHRvIGJlIHNldCBieSB0aGUgY2FsbGVyLgorICogT25seXRoZSBjcml0aWNhbF9y ZXNvdXJjZSBuZWVkcyB0byBiZSBzZXQgYnkgdGhlIGNhbGxlci4KICAqCiAgKiBSZXR1cm5zIDAg b24gc3VjY2VzcyBhbmQgbmVnYXRpdmUgb24gZmFpbHVyZS4KICAqLwpAQCAtMTkyMSwzICsxOTI3 LDExMyBAQCB2b2lkIHVscF9mbG93X2RiX3NoYXJlZF9zZXNzaW9uX3NldChzdHJ1Y3QgdWxwX2Zs b3dfZGJfcmVzX3BhcmFtcyAqcmVzLAogCWlmIChyZXMgJiYgKHNoYXJlZCAmIEJOWFRfVUxQX1NI QVJFRF9TRVNTSU9OX1lFUykpCiAJCXJlcy0+ZmRiX2ZsYWdzIHw9IFVMUF9GREJfRkxBR19TSEFS RURfU0VTU0lPTjsKIH0KKworI2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHCisv KgorICogRHVtcCB0aGUgZW50cnkgZGV0YWlscworICoKKyAqIHVscF9jdHh0IFtpbl0gUHRyIHRv IHVscF9jb250ZXh0CisgKgorICogcmV0dXJucyBub25lCisgKi8KK3N0YXRpYyB2b2lkIHVscF9m bG93X2RiX3Jlc19kdW1wKHN0cnVjdCB1bHBfZmRiX3Jlc291cmNlX2luZm8gKnIsCisJCQkJIHVp bnQzMl90ICpueHRfcmVzKQoreworCXVpbnQ4X3QgcmVzX2Z1bmMgPSB1bHBfZmxvd19kYl9yZXNv dXJjZV9mdW5jX2dldChyKTsKKworCUJOWFRfVEZfREJHKERFQlVHLCAiUmVzb3VyY2UgZnVuYyA9 ICV4LCBueHRfcmVzb3VyY2VfaWR4ID0gJXhcbiIsCisJCSAgICByZXNfZnVuYywgKFVMUF9GTE9X X0RCX1JFU19OWFRfTUFTSyAmIHItPm54dF9yZXNvdXJjZV9pZHgpKTsKKwlpZiAocmVzX2Z1bmMg PT0gQk5YVF9VTFBfUkVTT1VSQ0VfRlVOQ19FTV9UQUJMRSkKKwkJQk5YVF9URl9EQkcoREVCVUcs ICJFTSBIYW5kbGUgPSAweCUwMTYiIFBSSVg2NCAiXG4iLAorCQkJICAgIHItPnJlc291cmNlX2Vt X2hhbmRsZSk7CisJZWxzZQorCQlCTlhUX1RGX0RCRyhERUJVRywgIkhhbmRsZSA9IDB4JTA4eFxu Iiwgci0+cmVzb3VyY2VfaG5kbCk7CisKKwkqbnh0X3JlcyA9IDA7CisJVUxQX0ZMT1dfREJfUkVT X05YVF9TRVQoKm54dF9yZXMsCisJCQkJci0+bnh0X3Jlc291cmNlX2lkeCk7Cit9CisKKy8qCisg KiBEdW1wIHRoZSBmbG93IGVudHJ5IGRldGFpbHMKKyAqCisgKiBmbG93X2RiIFtpbl0gUHRyIHRv IGZsb3cgZGIKKyAqIGZpZCBbaW5dIGZsb3cgaWQKKyAqCisgKiByZXR1cm5zIG5vbmUKKyAqLwor dm9pZAordWxwX2Zsb3dfZGJfZGVidWdfZmlkX2R1bXAoc3RydWN0IGJueHRfdWxwX2Zsb3dfZGIg KmZsb3dfZGIsIHVpbnQzMl90IGZpZCkKK3sKKwlzdHJ1Y3QgdWxwX2ZkYl9yZXNvdXJjZV9pbmZv ICpyOworCXN0cnVjdCBibnh0X3VscF9mbG93X3RibCAqZmxvd190Ymw7CisJdWludDMyX3Qgbnh0 X3JlcyA9IDA7CisJdWludDMyX3QgZGVmX2ZsYWcgPSAwLCByZWdfZmxhZyA9IDA7CisKKwlmbG93 X3RibCA9ICZmbG93X2RiLT5mbG93X3RibDsKKwlpZiAodWxwX2Zsb3dfZGJfYWN0aXZlX2Zsb3dz X2JpdF9pc19zZXQoZmxvd19kYiwKKwkJCQkJCUJOWFRfVUxQX0ZEQl9UWVBFX1JFR1VMQVIsIGZp ZCkpCisJCXJlZ19mbGFnID0gMTsKKwlpZiAodWxwX2Zsb3dfZGJfYWN0aXZlX2Zsb3dzX2JpdF9p c19zZXQoZmxvd19kYiwKKwkJCQkJCUJOWFRfVUxQX0ZEQl9UWVBFX0RFRkFVTFQsIGZpZCkpCisJ CWRlZl9mbGFnID0gMTsKKworCWlmIChyZWdfZmxhZyAmJiBkZWZfZmxhZykKKwkJQk5YVF9URl9E QkcoREVCVUcsICJSSUQgPSAldVxuIiwgZmlkKTsKKwllbHNlIGlmIChyZWdfZmxhZykKKwkJQk5Y VF9URl9EQkcoREVCVUcsICJSZWd1bGFyIGZpZCA9ICV1IGFuZCBmdW5jIGlkID0gJXVcbiIsCisJ CQkgICAgZmlkLCBmbG93X2RiLT5mdW5jX2lkX3RibFtmaWRdKTsKKwllbHNlIGlmIChkZWZfZmxh ZykKKwkJQk5YVF9URl9EQkcoREVCVUcsICJEZWZhdWx0IGZpZCA9ICV1XG4iLCBmaWQpOworCWVs c2UKKwkJcmV0dXJuOworCS8qIGl0ZXJhdGUgdGhlIHJlc291cmNlICovCisJbnh0X3JlcyA9IGZp ZDsKKwlkbyB7CisJCXIgPSAmZmxvd190YmwtPmZsb3dfcmVzb3VyY2VzW254dF9yZXNdOworCQl1 bHBfZmxvd19kYl9yZXNfZHVtcChyLCAmbnh0X3Jlcyk7CisJfSB3aGlsZSAobnh0X3Jlcyk7Cit9 CisKKy8qCisgKiBEdW1wIHRoZSBmbG93IGRhdGFiYXNlIGVudHJ5IGRldGFpbHMKKyAqCisgKiB1 bHBfY3R4dCBbaW5dIFB0ciB0byB1bHBfY29udGV4dAorICogZmxvd19pZCBbaW5dIGlmIHplcm8g dGhlbiBhbGwgZmlkcyBhcmUgZHVtcGVkLgorICoKKyAqIHJldHVybnMgbm9uZQorICovCitpbnQz Ml90CXVscF9mbG93X2RiX2RlYnVnX2R1bXAoc3RydWN0IGJueHRfdWxwX2NvbnRleHQgKnVscF9j dHh0LAorCQkJICAgICAgIHVpbnQzMl90IGZsb3dfaWQpCit7CisJc3RydWN0IGJueHRfdWxwX2Zs b3dfZGIgKmZsb3dfZGI7CisJc3RydWN0IGJueHRfdWxwX2Zsb3dfdGJsICpmbG93X3RibDsKKwl1 aW50MzJfdCBmaWQ7CisKKwlpZiAoIXVscF9jdHh0IHx8ICF1bHBfY3R4dC0+Y2ZnX2RhdGEpIHsK KwkJQk5YVF9URl9EQkcoRVJSLCAiSW52YWxpZCBBcmd1bWVudHNcbiIpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisJZmxvd19kYiA9IGJueHRfdWxwX2NudHh0X3B0cjJfZmxvd19kYl9nZXQodWxw X2N0eHQpOworCWlmICghZmxvd19kYikgeworCQlCTlhUX1RGX0RCRyhFUlIsICJJbnZhbGlkIEFy Z3VtZW50c1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWZsb3dfdGJsID0gJmZsb3df ZGItPmZsb3dfdGJsOworCWlmIChmbG93X2lkKSB7CisJCXVscF9mbG93X2RiX2RlYnVnX2ZpZF9k dW1wKGZsb3dfZGIsIGZsb3dfaWQpOworCQlyZXR1cm4gMDsKKwl9CisKKwlCTlhUX1RGX0RCRyhE RUJVRywgIkR1bXAgZmxvd3MgPSAldToldVxuIiwKKwkJICAgIGZsb3dfdGJsLT5udW1fZmxvd3Ms CisJCSAgICBmbG93X3RibC0+bnVtX3Jlc291cmNlcyk7CisJQk5YVF9URl9EQkcoREVCVUcsICJI ZWFkX2luZGV4ID0gJXUsIFRhaWxfaW5kZXggPSAldVxuIiwKKwkJICAgIGZsb3dfdGJsLT5oZWFk X2luZGV4LCBmbG93X3RibC0+dGFpbF9pbmRleCk7CisJZm9yIChmaWQgPSAxOyBmaWQgPCBmbG93 X3RibC0+bnVtX2Zsb3dzOyBmaWQrKykKKwkJdWxwX2Zsb3dfZGJfZGVidWdfZmlkX2R1bXAoZmxv d19kYiwgZmlkKTsKKwlCTlhUX1RGX0RCRyhERUJVRywgIkRvbmUuXG4iKTsKKwlyZXR1cm4gMDsK K30KKyNlbmRpZgpkaWZmIGEvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX2Zsb3dfZGIuaCBi L2RyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9mbG93X2RiLmgJKHJlamVjdGVkIGh1bmtzKQpA QCAtMTgsNyArMTgsNyBAQAogCiAvKgogICogU3RydWN0dXJlIGZvciB0aGUgZmxvdyBkYXRhYmFz ZSByZXNvdXJjZSBpbmZvcm1hdGlvbgotICogVGhlIGJlbG93IHN0cnVjdHVyZSBpcyBiYXNlZCBv biB0aGUgYmVsb3cgcGFydGl0aW9ucworICogVGhlIGJlbG93IHN0cnVjdHVyZSBpcyBiYXNlZCBv biB0aGUgYmVsb3cgcGFyaXRpb25zCiAgKiBueHRfcmVzb3VyY2VfaWR4ID0gZGlyWzMxXSxyZXNv dXJjZV9mdW5jX3VwcGVyWzMwOjI4XSxueHRfcmVzb3VyY2VfaWR4WzI3OjBdCiAgKiBJZiByZXNv dXJjZV9mdW5jIGlzIEVNX1RCTCB0aGVuIHVzZSByZXNvdXJjZV9lbV9oYW5kbGUuCiAgKiBFbHNl IHRoZSBvdGhlciBwYXJ0IG9mIHRoZSB1bmlvbiBpcyB1c2VkIGFuZApAQCAtNDE3LDQgKzQxNywy OCBAQCB1bHBfZmxvd19kYl9wYXJlbnRfZmxvd19jb3VudF9yZXNldChzdHJ1Y3QgYm54dF91bHBf Y29udGV4dCAqdWxwX2N0eHQpOwogdm9pZCB1bHBfZmxvd19kYl9zaGFyZWRfc2Vzc2lvbl9zZXQo c3RydWN0IHVscF9mbG93X2RiX3Jlc19wYXJhbXMgKnJlcywKIAkJCQkgICAgZW51bSBibnh0X3Vs cF9zaGFyZWRfc2Vzc2lvbiBzaGFyZWQpOwogCisjaWZkZWYgUlRFX0xJQlJURV9CTlhUX1RSVUZM T1dfREVCVUcKKy8qCisgKiBEdW1wIHRoZSBmbG93IGVudHJ5IGRldGFpbHMKKyAqCisgKiBmbG93 X2RiIFtpbl0gUHRyIHRvIGZsb3cgZGIKKyAqIGZpZCBbaW5dIGZsb3cgaWQKKyAqCisgKiByZXR1 cm5zIG5vbmUKKyAqLwordm9pZAordWxwX2Zsb3dfZGJfZGVidWdfZmlkX2R1bXAoc3RydWN0IGJu eHRfdWxwX2Zsb3dfZGIgKmZsb3dfZGIsIHVpbnQzMl90IGZpZCk7CisKKy8qCisgKiBEdW1wIHRo ZSBmbG93IGRhdGFiYXNlIGVudHJ5IGRldGFpbHMKKyAqCisgKiB1bHBfY3R4dCBbaW5dIFB0ciB0 byB1bHBfY29udGV4dAorICogZmxvd19pZCBbaW5dIGlmIHplcm8gdGhlbiBhbGwgZmlkcyBhcmUg ZHVtcGVkLgorICoKKyAqIHJldHVybnMgbm9uZQorICovCitpbnQzMl90CXVscF9mbG93X2RiX2Rl YnVnX2R1bXAoc3RydWN0IGJueHRfdWxwX2NvbnRleHQgKnVscF9jdHh0LAorCQkJICAgICAgIHVp bnQzMl90IGZsb3dfaWQpOworI2VuZGlmCisKICNlbmRpZiAvKiBfVUxQX0ZMT1dfREJfSF8gKi8K ZGlmZiBhL2RyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYyBiL2RyaXZlcnMvbmV0 L2JueHQvdGZfdWxwL3VscF9tYXBwZXIuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0yMiw2ICsyMiwx MSBAQAogI2luY2x1ZGUgInVscF9oYV9tZ3IuaCIKICNpbmNsdWRlICJibnh0X3RmX3BtZF9zaGlt LmgiCiAKKyNpZmRlZiBSVEVfTElCUlRFX0JOWFRfVFJVRkxPV19ERUJVRworI2luY2x1ZGUgInVs cF90ZW1wbGF0ZV9kZWJ1Z19wcm90by5oIgorI2luY2x1ZGUgInVscF90Zl9kZWJ1Zy5oIgorI2Vu ZGlmCisKIHN0YXRpYyB1aW50OF90IG1hcHBlcl9mbGRfemVyb3NbMTZdID0geyAwIH07CiAKIHN0 YXRpYyB1aW50OF90IG1hcHBlcl9mbGRfb25lc1sxNl0gPSB7CkBAIC03ODQsNiArODAzLDkgQEAg dWxwX21hcHBlcl9pZGVudF9wcm9jZXNzKHN0cnVjdCBibnh0X3VscF9tYXBwZXJfcGFybXMgKnBh cm1zLAogCQkJICAgIHRmX2lkZW50XzJfc3RyKGlwYXJtcy5pZGVudF90eXBlKSk7CiAJCXJldHVy biByYzsKIAl9CisJQk5YVF9URl9JTkYoIkFsbG9jIGlkZW50ICVzOiVzLnN1Y2Nlc3MuXG4iLAor CQkgICAgdGZfZGlyXzJfc3RyKGlwYXJtcy5kaXIpLAorCQkgICAgdGZfaWRlbnRfMl9zdHIoaXBh cm1zLmlkZW50X3R5cGUpKTsKIAogCWlkID0gKHVpbnQ2NF90KXRmcF9jcHVfdG9fYmVfNjQoaXBh cm1zLmlkKTsKIAlpZiAodWxwX3JlZ2ZpbGVfd3JpdGUocGFybXMtPnJlZ2ZpbGUsIGlkeCwgaWQp KSB7CkBAIC04MTMsNiArODM1LDExIEBAIHVscF9tYXBwZXJfaWRlbnRfcHJvY2VzcyhzdHJ1Y3Qg Ym54dF91bHBfbWFwcGVyX3Bhcm1zICpwYXJtcywKIAl9IGVsc2UgewogCQkqdmFsID0gaXBhcm1z LmlkOwogCX0KKyNpZmRlZiBSVEVfTElCUlRFX0JOWFRfVFJVRkxPV19ERUJVRworI2lmZGVmIFJU RV9MSUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHX01BUFBFUgorCXVscF9tYXBwZXJfaWRlbnRfZmll bGRfZHVtcCgiSWRlbnQiLCBpZGVudCwgdGJsLCBpcGFybXMuaWQpOworI2VuZGlmCisjZW5kaWYK IAlyZXR1cm4gMDsKIAogZXJyb3I6CkBAIC04NzcsNiArOTA0LDEwIEBAIHVscF9tYXBwZXJfaWRl bnRfZXh0cmFjdChzdHJ1Y3QgYm54dF91bHBfbWFwcGVyX3Bhcm1zICpwYXJtcywKIAkJCSAgICBz cGFybXMuc2VhcmNoX2lkKTsKIAkJcmV0dXJuIHJjOwogCX0KKwlCTlhUX1RGX0lORigiU2VhcmNo IGlkZW50ICVzOiVzOiV4LnN1Y2Nlc3MuXG4iLAorCQkgICAgdGZfZGlyXzJfc3RyKHNwYXJtcy5k aXIpLAorCQkgICAgdGZfdGJsX3R5cGVfMl9zdHIoc3Bhcm1zLmlkZW50X3R5cGUpLAorCQkgICAg c3Bhcm1zLnNlYXJjaF9pZCk7CiAKIAkvKiBXcml0ZSBpdCB0byB0aGUgcmVnZmlsZSAqLwogCWlk ID0gKHVpbnQ2NF90KXRmcF9jcHVfdG9fYmVfNjQoc3Bhcm1zLnNlYXJjaF9pZCk7CkBAIC05OTYs NyArMTAzMiw3IEBAIHVscF9tYXBwZXJfZmllbGRfc3JjX3Byb2Nlc3Moc3RydWN0IGJueHRfdWxw X21hcHBlcl9wYXJtcyAqcGFybXMsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCQlpZHggPSB0 ZnBfYmVfdG9fY3B1XzE2KGlkeCk7Ci0JCWlmIChpZHggPj0gQk5YVF9VTFBfQ0ZfSURYX0xBU1Qg fHwgYnl0ZWxlbiA+IHNpemVvZih1aW50NjRfdCkpIHsKKwkJaWYgKGlkeCA+PSBCTlhUX1VMUF9D Rl9JRFhfTEFTVCB8fCBieXRlbGVuID4gc2l6ZW9mKHVpbnQzMl90KSkgewogCQkJQk5YVF9URl9E QkcoRVJSLCAiY29tcCBmaWVsZCBbJWRdIHJlYWQgb29iICVkXG4iLCBpZHgsCiAJCQkJICAgIGJ5 dGVsZW4pOwogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xNDQ4LDcgKzE0ODQsMTYgQEAgdWxwX21h cHBlcl9maWVsZF9vcGNfcHJvY2VzcyhzdHJ1Y3QgYm54dF91bHBfbWFwcGVyX3Bhcm1zICpwYXJt cywKIAkJYnJlYWs7CiAJfQogCi0JcmV0dXJuIHJjOworCWlmICghcmMpIHsKKyNpZmRlZiBSVEVf TElCUlRFX0JOWFRfVFJVRkxPV19ERUJVRworI2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9X X0RFQlVHX01BUFBFUgorCQlpZiAoZmxkLT5maWVsZF9zcmMxICE9IEJOWFRfVUxQX0ZJRUxEX1NS Q19aRVJPKQorCQkJdWxwX21hcHBlcl9maWVsZF9kdW1wKG5hbWUsIGZsZCwgYmxvYiwgd3JpdGVf aWR4LCB2YWwsCisJCQkJCSAgICAgIHZhbF9sZW4pOworI2VuZGlmCisjZW5kaWYKKwkJcmV0dXJu IHJjOworCX0KIGVycm9yOgogCUJOWFRfVEZfREJHKEVSUiwgIkVycm9yIGluICVzOiVzIHByb2Nl c3MgJXU6JXVcbiIsIG5hbWUsCiAJCSAgICBmbGQtPmRlc2NyaXB0aW9uLCAodmFsKSA/IHdyaXRl X2lkeCA6IDAsIHZhbF9sZW4pOwpAQCAtMTUwMCw4ICsxNTQ1LDE1IEBAIHVscF9tYXBwZXJfdGJs X3Jlc3VsdF9idWlsZChzdHJ1Y3QgYm54dF91bHBfbWFwcGVyX3Bhcm1zICpwYXJtcywKIAl9CiAK IAkvKiBpZiBlbmNhcCBiaXQgc3dhcCBpcyBlbmFibGVkIHBlcmZvcm0gdGhlIGJpdCBzd2FwICov Ci0JaWYgKHBhcm1zLT5kZXZpY2VfcGFyYW1zLT5lbmNhcF9ieXRlX3N3YXAgJiYgZW5jYXBfZmxk cykKKwlpZiAocGFybXMtPmRldmljZV9wYXJhbXMtPmVuY2FwX2J5dGVfc3dhcCAmJiBlbmNhcF9m bGRzKSB7CiAJCXVscF9ibG9iX3BlcmZvcm1fZW5jYXBfc3dhcChkYXRhKTsKKyNpZmRlZiBSVEVf TElCUlRFX0JOWFRfVFJVRkxPV19ERUJVRworI2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9X X0RFQlVHX01BUFBFUgorCQlCTlhUX1RGX0RCRyhJTkZPLCAiRHVtcCBhZnRlciBlbmNhcCBzd2Fw XG4iKTsKKwkJdWxwX21hcHBlcl9ibG9iX2R1bXAoZGF0YSk7CisjZW5kaWYKKyNlbmRpZgorCX0K IAogCXJldHVybiByYzsKIH0KQEAgLTE3MjUsNiArMTc3Nyw5IEBAIHVscF9tYXBwZXJfdGNhbV90 YmxfZW50cnlfd3JpdGUoc3RydWN0IGJueHRfdWxwX21hcHBlcl9wYXJtcyAqcGFybXMsCiAJCQkg ICAgdGZfZGlyXzJfc3RyKHNwYXJtcy5kaXIpLCBzcGFybXMuaWR4KTsKIAkJcmV0dXJuIC1FSU87 CiAJfQorCUJOWFRfVEZfSU5GKCJ0Y2FtWyVzXVslc11bJXhdIHdyaXRlIHN1Y2Nlc3MuXG4iLAor CQkgICAgdGZfdGNhbV90YmxfMl9zdHIoc3Bhcm1zLnRjYW1fdGJsX3R5cGUpLAorCQkgICAgdGZf ZGlyXzJfc3RyKHNwYXJtcy5kaXIpLCBzcGFybXMuaWR4KTsKIAogCS8qIE1hcmsgYWN0aW9uICov CiAJcmMgPSB1bHBfbWFwcGVyX21hcmtfYWN0X3B0cl9wcm9jZXNzKHBhcm1zLCB0YmwpOwpAQCAt MTgzOCw2ICsxODk4LDEyIEBAIHN0YXRpYyB2b2lkIHVscF9tYXBwZXJfd2NfdGNhbV90YmxfcG9z dF9wcm9jZXNzKHN0cnVjdCB1bHBfYmxvYiAqYmxvYikKIHsKIAl1bHBfYmxvYl9wZXJmb3JtXzY0 Ql93b3JkX3N3YXAoYmxvYik7CiAJdWxwX2Jsb2JfcGVyZm9ybV82NEJfYnl0ZV9zd2FwKGJsb2Ip OworI2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHCisjaWZkZWYgUlRFX0xJQlJU RV9CTlhUX1RSVUZMT1dfREVCVUdfTUFQUEVSCisJQk5YVF9URl9EQkcoSU5GTywgIkR1bXAgYWZ0 ZXIgd2MgdGNhbSBwb3N0IHByb2Nlc3NcbiIpOworCXVscF9tYXBwZXJfYmxvYl9kdW1wKGJsb2Ip OworI2VuZGlmCisjZW5kaWYKIH0KIAogc3RhdGljIGludDMyX3QKQEAgLTIxMzQsNiArMjIwMCwx MSBAQCB1bHBfbWFwcGVyX2VtX3RibF9wcm9jZXNzKHN0cnVjdCBibnh0X3VscF9tYXBwZXJfcGFy bXMgKnBhcm1zLAogCQlCTlhUX1RGX0RCRyhFUlIsICJGYWlsZWQgdG8gYnVpbGQgdGhlIHJlc3Vs dCBibG9iXG4iKTsKIAkJcmV0dXJuIHJjOwogCX0KKyNpZmRlZiBSVEVfTElCUlRFX0JOWFRfVFJV RkxPV19ERUJVRworI2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHX01BUFBFUgor CXVscF9tYXBwZXJfcmVzdWx0X2R1bXAoIkVNIFJlc3VsdCIsIHRibCwgJmRhdGEpOworI2VuZGlm CisjZW5kaWYKIAlpZiAoZHBhcm1zLT5keW5hbWljX3BhZF9lbikgewogCQl1aW50MzJfdCBhYml0 cyA9IGRwYXJtcy0+ZW1fYmxrX2FsaWduX2JpdHM7CiAKQEAgLTIxNDgsNiArMjIxOSwxMSBAQCB1 bHBfbWFwcGVyX2VtX3RibF9wcm9jZXNzKHN0cnVjdCBibnh0X3VscF9tYXBwZXJfcGFybXMgKnBh cm1zLAogCQl1bHBfYmxvYl9wYWRfYWxpZ24oJmRhdGEsIGFiaXRzKTsKIAogCQl1bHBfYmxvYl9w ZXJmb3JtX2J5dGVfcmV2ZXJzZSgmZGF0YSwgVUxQX0JJVFNfMl9CWVRFKGFiaXRzKSk7CisjaWZk ZWYgUlRFX0xJQlJURV9CTlhUX1RSVUZMT1dfREVCVUcKKyNpZmRlZiBSVEVfTElCUlRFX0JOWFRf VFJVRkxPV19ERUJVR19NQVBQRVIKKwl1bHBfbWFwcGVyX3Jlc3VsdF9kdW1wKCJFTSBNZXJnZWQg UmVzdWx0IiwgdGJsLCAmZGF0YSk7CisjZW5kaWYKKyNlbmRpZgogCX0KIAogCS8qIGRvIHRoZSB0 cmFuc3Bvc2UgZm9yIHRoZSBpbnRlcm5hbCBFTSBrZXlzICovCkBAIC0yMTYwLDYgKzIyMzYsMTEg QEAgdWxwX21hcHBlcl9lbV90YmxfcHJvY2VzcyhzdHJ1Y3QgYm54dF91bHBfbWFwcGVyX3Bhcm1z ICpwYXJtcywKIAkJfQogCQl0bXBsZW4gPSB1bHBfYmxvYl9kYXRhX2xlbl9nZXQoJmtleSk7CiAJ CXVscF9ibG9iX3BlcmZvcm1fYnl0ZV9yZXZlcnNlKCZrZXksIFVMUF9CSVRTXzJfQllURSh0bXBs ZW4pKTsKKyNpZmRlZiBSVEVfTElCUlRFX0JOWFRfVFJVRkxPV19ERUJVRworI2lmZGVmIFJURV9M SUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHX01BUFBFUgorCXVscF9tYXBwZXJfcmVzdWx0X2R1bXAo IkVNIEtleSBUcmFuc3Bvc2UiLCB0YmwsICZrZXkpOworI2VuZGlmCisjZW5kaWYKIAl9CiAKIAly YyA9IGJueHRfdWxwX2NudHh0X3RibF9zY29wZV9pZF9nZXQocGFybXMtPnVscF9jdHgsCkBAIC0y NDc5LDYgKzI1NjYsOSBAQCB1bHBfbWFwcGVyX2luZGV4X3RibF9wcm9jZXNzKHN0cnVjdCBibnh0 X3VscF9tYXBwZXJfcGFybXMgKnBhcm1zLAogCQkJCSAgICBzcGFybXMuaWR4LCByYyk7CiAJCQln b3RvIGVycm9yOwogCQl9CisJCUJOWFRfVEZfSU5GKCJJbmRleCB0YWJsZVslc11bJXNdWyV4XSB3 cml0ZSBzdWNjZXNzZnVsLlxuIiwKKwkJCSAgICB0Zl90YmxfdHlwZV8yX3N0cihzcGFybXMudHlw ZSksCisJCQkgICAgdGZfZGlyXzJfc3RyKHNwYXJtcy5kaXIpLCBzcGFybXMuaWR4KTsKIAogCQkv KiBDYWxjdWxhdGUgYWN0aW9uIHJlY29yZCBzaXplICovCiAJCWlmICh0YmwtPnJlc291cmNlX3R5 cGUgPT0gVEZfVEJMX1RZUEVfRVhUKSB7CkBAIC0yNjM1LDYgKzI3MjUsMTAgQEAgdWxwX21hcHBl cl9pZl90YmxfcHJvY2VzcyhzdHJ1Y3QgYm54dF91bHBfbWFwcGVyX3Bhcm1zICpwYXJtcywKIAkJ CSAgICBpZnRibF9wYXJhbXMuaWR4LCByYyk7CiAJCXJldHVybiByYzsKIAl9CisJQk5YVF9URl9J TkYoIlNldCB0YWJsZVslc11bJXNdWyV4XSBzdWNjZXNzLlxuIiwKKwkJICAgIHRmX2lmX3RibF8y X3N0cihpZnRibF9wYXJhbXMudHlwZSksCisJCSAgICB0Zl9kaXJfMl9zdHIoaWZ0YmxfcGFyYW1z LmRpciksCisJCSAgICBpZnRibF9wYXJhbXMuaWR4KTsKIAogCS8qCiAJICogVEJEOiBOZWVkIHRv IGxvb2sgYXQgdGhlIG5lZWQgdG8gc3RvcmUgaWR4IGluIGZsb3cgZGIgZm9yIHJlc3RvcmUKQEAg LTI2OTcsNiArMjc5MSwxMiBAQCB1bHBfbWFwcGVyX2dlbl90YmxfcHJvY2VzcyhzdHJ1Y3QgYm54 dF91bHBfbWFwcGVyX3Bhcm1zICpwYXJtcywKIAogCS8qIFRoZV9rZXkgaXMgYSBieXRlIGFycmF5 IGNvbnZlcnQgaXQgdG8gYSBzZWFyY2ggaW5kZXggKi8KIAljYWNoZV9rZXkgPSB1bHBfYmxvYl9k YXRhX2dldCgma2V5LCAmdG1wbGVuKTsKKyNpZmRlZiBSVEVfTElCUlRFX0JOWFRfVFJVRkxPV19E RUJVRworI2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHX01BUFBFUgorCUJOWFRf VEZfREJHKERFQlVHLCAiVGhlIGdlbl90YmxbJXVdIGtleVxuIiwgdGJsX2lkeCk7CisJdWxwX21h cHBlcl9ibG9iX2R1bXAoJmtleSk7CisjZW5kaWYKKyNlbmRpZgogCS8qIGdldCB0aGUgZ2VuZXJp YyB0YWJsZSAgKi8KIAlnZW5fdGJsX2xpc3QgPSAmcGFybXMtPm1hcHBlcl9kYXRhLT5nZW5fdGJs X2xpc3RbdGJsX2lkeF07CiAKQEAgLTM0OTUsNiArMzU5NSwxMSBAQCB1bHBfbWFwcGVyX3RibHNf cHJvY2VzcyhzdHJ1Y3QgYm54dF91bHBfbWFwcGVyX3Bhcm1zICpwYXJtcywgdWludDMyX3QgdGlk KQogCWZvciAodGJsX2lkeCA9IDA7IHRibF9pZHggPCBudW1fdGJscyAmJiBjb25kX2dvdG87KSB7 CiAJCXRibCA9ICZ0YmxzW3RibF9pZHhdOwogCQljb25kX2dvdG8gPSB0YmwtPmV4ZWN1dGVfaW5m by5jb25kX3RydWVfZ290bzsKKyNpZmRlZiBSVEVfTElCUlRFX0JOWFRfVFJVRkxPV19ERUJVRwor I2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHX01BUFBFUgorCQl1bHBfbWFwcGVy X3RhYmxlX2R1bXAodGJsLCB0YmxfaWR4KTsKKyNlbmRpZgorI2VuZGlmCiAJCS8qIFByb2Nlc3Mg dGhlIGNvbmRpdGlvbmFsIGZ1bmMgY29kZSBvcGNvZGVzICovCiAJCWlmICh1bHBfbWFwcGVyX2Z1 bmNfaW5mb19wcm9jZXNzKHBhcm1zLCB0YmwpKSB7CiAJCQlCTlhUX1RGX0RCRyhFUlIsICJGYWls ZWQgdG8gcHJvY2VzcyBjb25kIHVwZGF0ZVxuIik7CmRpZmYgYS9kcml2ZXJzL25ldC9ibnh0L3Rm X3VscC91bHBfcG9ydF9kYi5jIGIvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX3BvcnRfZGIu YwkocmVqZWN0ZWQgaHVua3MpCkBAIC03LDkgKzcsMTMgQEAKICNpbmNsdWRlICJibnh0LmgiCiAj aW5jbHVkZSAiYm54dF92bmljLmgiCiAjaW5jbHVkZSAiYm54dF90Zl9jb21tb24uaCIKKyNpbmNs dWRlICJibnh0X3RmX3BtZF9zaGltLmgiCiAjaW5jbHVkZSAidWxwX3BvcnRfZGIuaCIKICNpbmNs dWRlICJ0ZnAuaCIKLSNpbmNsdWRlICJibnh0X3RmX3BtZF9zaGltLmgiCisKKyNpZmRlZiBSVEVf TElCUlRFX0JOWFRfVFJVRkxPV19ERUJVRworI2luY2x1ZGUgInVscF90Zl9kZWJ1Zy5oIgorI2Vu ZGlmCiAKIHN0YXRpYyB1aW50MzJfdAogdWxwX3BvcnRfZGJfYWxsb2NhdGVfaWZpbmRleChzdHJ1 Y3QgYm54dF91bHBfcG9ydF9kYiAqcG9ydF9kYikKQEAgLTE1MSwxMiArMTU1LDEyIEBAIGludDMy X3QJdWxwX3BvcnRfZGJfZGV2X3BvcnRfaW50Zl91cGRhdGUoc3RydWN0IGJueHRfdWxwX2NvbnRl eHQgKnVscF9jdHh0LAogCiAJaW50Zi0+dHlwZSA9IGJueHRfcG1kX2dldF9pbnRlcmZhY2VfdHlw ZShwb3J0X2lkKTsKIAlpbnRmLT5kcnZfZnVuY19pZCA9IGJueHRfcG1kX2dldF9md19mdW5jX2lk KHBvcnRfaWQsCi0JCQkJCQkgICAgQk5YVF9VTFBfSU5URl9UWVBFX0lOVkFMSUQpOworCQkJCQkJ Qk5YVF9VTFBfSU5URl9UWVBFX0lOVkFMSUQpOwogCiAJZnVuYyA9ICZwb3J0X2RiLT51bHBfZnVu Y19pZF90YmxbaW50Zi0+ZHJ2X2Z1bmNfaWRdOwogCWlmICghZnVuYy0+ZnVuY192YWxpZCkgewog CQlmdW5jLT5mdW5jX3N2aWYgPSBibnh0X3BtZF9nZXRfc3ZpZihwb3J0X2lkLCB0cnVlLAotCQkJ CQkJICAgIEJOWFRfVUxQX0lOVEZfVFlQRV9JTlZBTElEKTsKKwkJCQkJCUJOWFRfVUxQX0lOVEZf VFlQRV9JTlZBTElEKTsKIAkJZnVuYy0+ZnVuY19zcGlmID0gYm54dF9wbWRfZ2V0X3BoeV9wb3J0 X2lkKHBvcnRfaWQpOwogCQlmdW5jLT5mdW5jX3BhcmlmID0KIAkJCWJueHRfcG1kX2dldF9wYXJp Zihwb3J0X2lkLCBCTlhUX1VMUF9JTlRGX1RZUEVfSU5WQUxJRCk7CkBAIC0yMDIsNiArMjA2LDEx IEBAIGludDMyX3QJdWxwX3BvcnRfZGJfZGV2X3BvcnRfaW50Zl91cGRhdGUoc3RydWN0IGJueHRf dWxwX2NvbnRleHQgKnVscF9jdHh0LAogCQlwb3J0X2RhdGEtPnBvcnRfdnBvcnQgPSBibnh0X3Bt ZF9nZXRfdnBvcnQocG9ydF9pZCk7CiAJCXBvcnRfZGF0YS0+cG9ydF92YWxpZCA9IHRydWU7CiAJ fQorI2lmZGVmIFJURV9MSUJSVEVfQk5YVF9UUlVGTE9XX0RFQlVHCisjaWZkZWYgUlRFX0xJQlJU RV9CTlhUX1RSVUZMT1dfREVCVUdfUE9SVAorCXVscF9wb3J0X2RiX2R1bXAocG9ydF9kYiwgaW50 ZiwgcG9ydF9pZCk7CisjZW5kaWYKKyNlbmRpZgogCXJldHVybiAwOwogfQogCmRpZmYgYS9kcml2 ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfcnRlX3BhcnNlci5jIGIvZHJpdmVycy9uZXQvYm54dC90 Zl91bHAvdWxwX3J0ZV9wYXJzZXIuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC04NTUsNyArODU2LDcg QEAgdWxwX3J0ZV92bGFuX2hkcl9oYW5kbGVyKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtICpp dGVtLAogCQkJICAgICAgIEJOWFRfVUxQX0hEUl9CSVRfSUlfVkxBTik7CiAJCWlubmVyX2ZsYWcg PSAxOwogCX0gZWxzZSB7Ci0JCUJOWFRfVEZfREJHKEVSUiwgIkVycm9yIFBhcnNpbmc6VmxhbiBo ZHIgZm91bmQgd2l0aG91dCBldGhcbiIpOworCQlCTlhUX1RGX0RCRyhFUlIsICJFcnJvciBQYXJz aW5nOlZsYW4gaGRyIGZvdW5kIHdpdGh0b3V0IGV0aFxuIik7CiAJCXJldHVybiBCTlhUX1RGX1JD X0VSUk9SOwogCX0KIAkvKiBVcGRhdGUgdGhlIGZpZWxkIHByb3RvY29sIGhkciBiaXRtYXAgKi8K QEAgLTExMzUsOCArMTEzNiw4IEBAIHVscF9ydGVfaXB2Nl9oZHJfaGFuZGxlcihjb25zdCBzdHJ1 Y3QgcnRlX2Zsb3dfaXRlbSAqaXRlbSwKIAl1bHBfcnRlX3Byc3JfZmxkX21hc2socGFyYW1zLCAm aWR4LCBzaXplLCAmdmVyX3NwZWMsICZ2ZXJfbWFzaywKIAkJCSAgICAgIFVMUF9QUlNSX0FDVF9E RUZBVUxUKTsKIAkvKgotCSAqIFRoZSBUQyBhbmQgZmxvdyBsYWJlbCBmaWVsZCBhcmUgaWdub3Jl ZCBzaW5jZSBPVlMgaXMgc2V0dGluZwotCSAqIGl0IGZvciBtYXRjaCBhbmQgaXQgaXMgbm90IHN1 cHBvcnRlZC4KKwkgKiBUaGUgVEMgYW5kIGZsb3cgbGFiZWwgZmllbGQgYXJlIGlnbm9yZWQgc2lu Y2UgT1ZTIGlzCisJICogc2V0dGluZyBpdCBmb3IgbWF0Y2ggYW5kIGl0IGlzIG5vdCBzdXBwb3J0 ZWQuCiAJICogVGhpcyBpcyBhIHdvcmsgYXJvdW5kIGFuZAogCSAqIHNoYWxsIGJlIGFkZHJlc3Nl ZCBpbiB0aGUgZnV0dXJlLgogCSAqLwpAQCAtMjEzOCw3ICsyMTM5LDcgQEAgdWxwX3J0ZV92Zl9h Y3RfaGFuZGxlcihjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Rpb25faXRlbSwKIAkJ cmV0dXJuIEJOWFRfVEZfUkNfUEFSU0VfRVJSOwogCX0KIAotCWJwID0gYm54dF9nZXRfYnAocGFy YW1zLT5wb3J0X2lkKTsKKwlicCA9IGJueHRfcG1kX2dldF9icChwYXJhbXMtPnBvcnRfaWQpOwog CWlmIChicCA9PSBOVUxMKSB7CiAJCUJOWFRfVEZfREJHKEVSUiwgIkludmFsaWQgYnBcbiIpOwog CQlyZXR1cm4gQk5YVF9URl9SQ19FUlJPUjsKZGlmZiBhL2RyaXZlcnMvbmV0L2JueHQvdGZfdWxw L3VscF91dGlscy5jIGIvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX3V0aWxzLmMJKHJlamVj dGVkIGh1bmtzKQpAQCAtNjIsNyArNjIsNyBAQCB1bHBfcmVnZmlsZV9yZWFkKHN0cnVjdCB1bHBf cmVnZmlsZSAqcmVnZmlsZSwKICAqIGRhdGEgW2luXSBUaGUgdmFsdWUgaXMgd3JpdHRlbiBpbnRv IHRoaXMgdmFyaWFibGUuICBJdCBpcyBnb2luZyB0byBiZSBpbiB0aGUKICAqIHNhbWUgYnl0ZSBv cmRlciBhcyBpdCB3YXMgd3JpdHRlbi4KICAqCi0gKiBzaXplIFtpbl0gVGhlIHNpemUgaW4gYnl0 ZXMgb2YgdGhlIHZhbHVlIGJlaW5nIHdyaXR0ZW4gaW50byB0aGlzCisgKiBzaXplIFtpbl0gVGhl IHNpemUgaW4gYnl0ZXMgb2YgdGhlIHZhbHVlIGJlaW5ncml0dGVuIGludG8gdGhpcwogICogdmFy aWFibGUuCiAgKgogICogcmV0dXJucyAwIG9uIHN1Y2Nlc3MKQEAgLTI5NSw3ICsyOTUsNyBAQCB1 bHBfYmxvYl9wdXNoKHN0cnVjdCB1bHBfYmxvYiAqYmxvYiwKIAkJCQkgICAgIGRhdGFsZW4sCiAJ CQkJICAgICBkYXRhKTsKIAlpZiAoIXJjKSB7Ci0JCUJOWFRfVEZfREJHKEVSUiwgIkZhaWxlZCB0 byB3cml0ZSBibG9iXG4iKTsKKwkJQk5YVF9URl9EQkcoRVJSLCAiRmFpbGVkIHJvIHdyaXRlIGJs b2JcbiIpOwogCQlyZXR1cm4gMDsKIAl9CiAJYmxvYi0+d3JpdGVfaWR4ICs9IGRhdGFsZW47CkBA IC0zNTUsNyArMzU1LDcgQEAgdWxwX2Jsb2JfaW5zZXJ0KHN0cnVjdCB1bHBfYmxvYiAqYmxvYiwg dWludDMyX3Qgb2Zmc2V0LAogCQkJCSAgICAgZGF0YWxlbiwKIAkJCQkgICAgIGRhdGEpOwogCWlm ICghcmMpIHsKLQkJQk5YVF9URl9EQkcoRVJSLCAiRmFpbGVkIHRvIHdyaXRlIGJsb2JcbiIpOwor CQlCTlhUX1RGX0RCRyhFUlIsICJGYWlsZWQgcm8gd3JpdGUgYmxvYlxuIik7CiAJCXJldHVybiAw OwogCX0KIAkvKiBjb3B5IHRoZSBwcmV2aW91c2x5IHN0b3JlZCBkYXRhICovCkBAIC00MDksNyAr NDA5LDcgQEAgdWxwX2Jsb2JfcHVzaF82NChzdHJ1Y3QgdWxwX2Jsb2IgKmJsb2IsCiAgKgogICog ZGF0YSBbaW5dIDMyLWJpdCB2YWx1ZSB0byBiZSBhZGRlZCB0byB0aGUgYmxvYi4KICAqCi0gKiBk YXRhbGVuIFtpbl0gVGhlIG51bWJlciBvZiBiaXRzIHRvIGJlIGFkZGVkIHRvIHRoZSBibG9iLgor ICogZGF0YWxlbiBbaW5dIFRoZSBudW1iZXIgb2YgYml0cyB0byBiZSBhZGRlZCBvdCB0aGUgYmxv Yi4KICAqCiAgKiBUaGUgb2Zmc2V0IG9mIHRoZSBkYXRhIGlzIHVwZGF0ZWQgYWZ0ZXIgZWFjaCBw dXNoIG9mIGRhdGEuCiAgKiBOVUxMIHJldHVybmVkIG9uIGVycm9yLCBwb2ludGVyIHB1c2hlZCB2 YWx1ZSBvdGhlcndpc2UuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2Ju eHRfdWxwLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2JueHRfdWxwLmM6IGRv ZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxw L2JueHRfdWxwX2Zsb3cuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54dC90Zl91bHAvYm54dF91 bHBfZmxvdy5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9ibnh0L3RmX3VscC9nZW5lcmljX3RlbXBsYXRlcy91bHBfdGVtcGxhdGVfZGJfZW51bS5oLi4u CmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC9nZW5lcmljX3RlbXBsYXRlcy91bHBfdGVt cGxhdGVfZGJfZW51bS5oOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBk cml2ZXJzL25ldC9ibnh0L3RmX3VscC9nZW5lcmljX3RlbXBsYXRlcy91bHBfdGVtcGxhdGVfZGJf dGJsLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2dlbmVyaWNfdGVtcGxhdGVz L3VscF90ZW1wbGF0ZV9kYl90YmwuYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvZ2VuZXJpY190ZW1wbGF0ZXMvdWxwX3RlbXBs YXRlX2RiX3Rob3JfYWN0LmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2dlbmVy aWNfdGVtcGxhdGVzL3VscF90ZW1wbGF0ZV9kYl90aG9yX2FjdC5jOiBkb2VzIG5vdCBleGlzdCBp biBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC9nZW5lcmljX3Rl bXBsYXRlcy91bHBfdGVtcGxhdGVfZGJfdGhvcl9jbGFzcy5jLi4uCmVycm9yOiBkcml2ZXJzL25l dC9ibnh0L3RmX3VscC9nZW5lcmljX3RlbXBsYXRlcy91bHBfdGVtcGxhdGVfZGJfdGhvcl9jbGFz cy5jOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9i bnh0L3RmX3VscC9nZW5lcmljX3RlbXBsYXRlcy91bHBfdGVtcGxhdGVfZGJfd2hfcGx1c19hY3Qu Yy4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54dC90Zl91bHAvZ2VuZXJpY190ZW1wbGF0ZXMvdWxw X3RlbXBsYXRlX2RiX3doX3BsdXNfYWN0LmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNr aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL2dlbmVyaWNfdGVtcGxhdGVzL3VscF90 ZW1wbGF0ZV9kYl93aF9wbHVzX2NsYXNzLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZf dWxwL2dlbmVyaWNfdGVtcGxhdGVzL3VscF90ZW1wbGF0ZV9kYl93aF9wbHVzX2NsYXNzLmM6IGRv ZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZf dWxwL3VscF9mbG93X2RiLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF9m bG93X2RiLmM6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2JueHQvdGZfdWxwL3VscF9mbG93X2RiLmguLi4KSHVuayAjMSBzdWNjZWVkZWQgYXQgMTUgKG9m ZnNldCAtMyBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3Vs cF9oYV9tZ3IuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX2hhX21nci5j OiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0 L3RmX3VscC91bHBfbWFwcGVyLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3Vs cF9tYXBwZXIuYzogZG9lcyBub3QgbWF0Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvYm54dC90Zl91bHAvdWxwX21hcHBlci5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJc3RydWN0IHVscF9ydGVfYWN0X3Byb3AJCQkqYWN0X3Byb3A7CglzdHJ1Y3QgdWxwX3J0ZV9h Y3RfYml0bWFwCQkqYWN0X2JpdG1hcDsKCXN0cnVjdCB1bHBfcnRlX2hkcl9iaXRtYXAJCSpoZHJf Yml0bWFwOwoJc3RydWN0IHVscF9ydGVfaGRyX2ZpZWxkCQkqaGRyX2ZpZWxkOwoJc3RydWN0IHVs cF9ydGVfZmllbGRfYml0bWFwCQkqZmxkX2JpdG1hcDsKCXVpbnQ2NF90CQkJCSpjb21wX2ZsZDsK CXN0cnVjdCB1bHBfcmVnZmlsZQkJCSpyZWdmaWxlOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvYm54dC90Zl91bHAvdWxwX21hcHBlci5oOjQ0CmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgpzdHJ1Y3QgYm54dF91bHBfbWFwcGVyX2NyZWF0ZV9wYXJtcyB7Cgl1aW50MzJfdAkJ CWFwcF9wcmlvcml0eTsKCXN0cnVjdCB1bHBfcnRlX2hkcl9iaXRtYXAJKmhkcl9iaXRtYXA7Cglz dHJ1Y3QgdWxwX3J0ZV9oZHJfZmllbGQJKmhkcl9maWVsZDsKCXVpbnQ2NF90CQkJKmNvbXBfZmxk OwoJc3RydWN0IHVscF9ydGVfYWN0X2JpdG1hcAkqYWN0OwoJc3RydWN0IHVscF9ydGVfYWN0X3By b3AJCSphY3RfcHJvcDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZf dWxwL3VscF9tYXBwZXIuaDo2NwpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3Vs cC91bHBfcnRlX3BhcnNlci5jLi4uCmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBf cnRlX3BhcnNlci5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9ibnh0L3RmX3VscC91bHBfcnRlX3BhcnNlci5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgojZGVmaW5lCUJOWFRfVUxQX0dFVF9JUFY2X0ZMT1dMQUJFTCh2dGNmKQlcCgkJCSgo dnRjZikgJiBCTlhUX1VMUF9QQVJTRVJfSVBWNl9GTE9XX0xBQkVMKQojZGVmaW5lCUJOWFRfVUxQ X1BBUlNFUl9JUFY2X1ZFUl9NQVNLCQkweGYwMDAwMDAwCiNkZWZpbmUJQk5YVF9VTFBfUEFSU0VS X0lQVjZfVEMJCQkweDBmZjAwMDAwCiNkZWZpbmUJQk5YVF9VTFBfUEFSU0VSX0lQVjZfRkxPV19M QUJFTAkJMHgwMDBmZmZmZgoKZW51bSBibnh0X3VscF9wcnNyX2FjdGlvbiB7CglVTFBfUFJTUl9B Q1RfREVGQVVMVCA9IDAsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3Rm X3VscC91bHBfcnRlX3BhcnNlci5oOjMzCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQv dGZfdWxwL3VscF90ZW1wbGF0ZV9zdHJ1Y3QuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKI2RlZmluZSBCTlhUX1VMUF9QUk9UT19IRFJfR1JFX05VTQk2CiNkZWZpbmUgQk5YVF9VTFBf UFJPVE9fSERSX0lDTVBfTlVNCTUKI2RlZmluZSBCTlhUX1VMUF9QUk9UT19IRFJfTUFYCQkxMjgK I2RlZmluZSBCTlhUX1VMUF9QUk9UT19IRFJfRklFTERfU1ZJRl9JRFgJMQoKLyogRGlyZWN0aW9u IGF0dHJpYnV0ZXMgKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvdGZf dWxwL3VscF90ZW1wbGF0ZV9zdHJ1Y3QuaDozMAplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK Ci8qIFN0cnVjdHVyZSB0byBiZSB1c2VkIGZvciBwYXNzaW5nIGFsbCB0aGUgcGFyc2VyIGZ1bmN0 aW9ucyAqLwpzdHJ1Y3QgdWxwX3J0ZV9wYXJzZXJfcGFyYW1zIHsKCVNUQUlMUV9FTlRSWSh1bHBf cnRlX3BhcnNlcl9wYXJhbXMpICBuZXh0OwoJc3RydWN0IHVscF9ydGVfaGRyX2JpdG1hcAloZHJf Yml0bWFwOwoJc3RydWN0IHVscF9ydGVfaGRyX2JpdG1hcAloZHJfZnBfYml0OwoJc3RydWN0IHVs cF9ydGVfZmllbGRfYml0bWFwCWZsZF9iaXRtYXA7CglzdHJ1Y3QgdWxwX3J0ZV9maWVsZF9iaXRt YXAJZmxkX3NfYml0bWFwOwoJc3RydWN0IHVscF9ydGVfaGRyX2ZpZWxkCWhkcl9maWVsZFtCTlhU X1VMUF9QUk9UT19IRFJfTUFYXTsKCXVpbnQ2NF90CQkJY29tcF9mbGRbQk5YVF9VTFBfQ0ZfSURY X0xBU1RdOwoJdWludDMyX3QJCQlmaWVsZF9pZHg7CglzdHJ1Y3QgdWxwX3J0ZV9hY3RfYml0bWFw CWFjdF9iaXRtYXA7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3Vs cC91bHBfdGVtcGxhdGVfc3RydWN0Lmg6NjQKSHVuayAjMyBzdWNjZWVkZWQgYXQgMTYwIChvZmZz ZXQgLTQ5IGxpbmVzKS4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cgl1aW50OF90CQkJCWRp cmVjdGlvbjsKCWVudW0gYm54dF91bHBfcHJpX29wYwkJcHJpX29wY29kZTsKCXVpbnQzMl90CQkJ cHJpX29wZXJhbmQ7CgllbnVtIGJueHRfdWxwX2J5dGVfb3JkZXIJYnl0ZV9vcmRlcjsKCgkvKiBj b25mbGljdCByZXNvbHV0aW9uIG9wY29kZSAqLwoJZW51bSBibnh0X3VscF9hY2NlcHRfb3BjCWFj Y2VwdF9vcGNvZGU7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3Vs cC91bHBfdGVtcGxhdGVfc3RydWN0Lmg6MjU0Ckh1bmsgIzUgc3VjY2VlZGVkIGF0IDIwNSAob2Zm c2V0IC02NSBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3Vs cF91dGlscy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiBkYXRhIFtpbl0gVGhl IHZhbHVlIGlzIHdyaXR0ZW4gaW50byB0aGlzIHZhcmlhYmxlLiAgSXQgaXMgZ29pbmcgdG8gYmUg aW4gdGhlCiAqIHNhbWUgYnl0ZSBvcmRlciBhcyBpdCB3YXMgd3JpdHRlbi4KICoKICogc2l6ZSBb aW5dIFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSB2YWx1ZSBiZWluZ3JpdHRlbiBpbnRvIHRoaXMK ICogdmFyaWFibGUuCiAqCiAqIHJldHVybnMgMCBvbiBzdWNjZXNzCgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfdXRpbHMuYzo2MgpIdW5rICMyIHN1Y2Nl ZWRlZCBhdCAyNjYgKG9mZnNldCAtMjkgbGluZXMpLgpIdW5rICMzIHN1Y2NlZWRlZCBhdCAzMjYg KG9mZnNldCAtMjkgbGluZXMpLgpIdW5rICM0IHN1Y2NlZWRlZCBhdCAzODAgKG9mZnNldCAtMjkg bGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiAwOwp9CgovKgogKiBS ZWFkIGRhdGEgZnJvbSB0aGUgb3BlcmFuZAogKgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvYm54dC90Zl91bHAvdWxwX3V0aWxzLmM6OTg3Ckh1bmsgIzYgc3VjY2VlZGVkIGF0IDc1 MyAob2Zmc2V0IC0yODYgbGluZXMpLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3Rm X3VscC91bHBfdXRpbHMuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKdWxwX2Jsb2Jf YXBwZW5kKHN0cnVjdCB1bHBfYmxvYiAqZHN0LCBzdHJ1Y3QgdWxwX2Jsb2IgKnNyYywKCQl1aW50 MTZfdCBzcmNfb2Zmc2V0LCB1aW50MTZfdCBzcmNfbGVuKTsKCi8qCiAqIFJlYWQgZGF0YSBmcm9t IHRoZSBvcGVyYW5kCiAqCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ibnh0L3Rm X3VscC91bHBfdXRpbHMuaDo0NzUKSHVuayAjMiBzdWNjZWVkZWQgYXQgMzYxIChvZmZzZXQgLTE0 MiBsaW5lcykuCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX2Zsb3df ZGIuaCBjbGVhbmx5LgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBf bWFwcGVyLmggd2l0aCAyIHJlamVjdHMuLi4KUmVqZWN0ZWQgaHVuayAjMS4KUmVqZWN0ZWQgaHVu ayAjMi4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX3J0ZV9wYXJz ZXIuaCB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCkFwcGx5aW5nIHBhdGNoIGRy aXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF90ZW1wbGF0ZV9zdHJ1Y3QuaCB3aXRoIDMgcmVqZWN0 cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3RlZCBodW5rICMyLgpIdW5rICMzIGFwcGxpZWQg Y2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjNC4KSHVuayAjNSBhcHBsaWVkIGNsZWFubHkuCkFwcGx5 aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF91dGlscy5jIHdpdGggMiByZWpl Y3RzLi4uClJlamVjdGVkIGh1bmsgIzEuCkh1bmsgIzIgYXBwbGllZCBjbGVhbmx5LgpIdW5rICMz IGFwcGxpZWQgY2xlYW5seS4KSHVuayAjNCBhcHBsaWVkIGNsZWFubHkuClJlamVjdGVkIGh1bmsg IzUuCkh1bmsgIzYgYXBwbGllZCBjbGVhbmx5LgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9i bnh0L3RmX3VscC91bHBfdXRpbHMuaCB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEu Ckh1bmsgIzIgYXBwbGllZCBjbGVhbmx5LgpkaWZmIGEvZHJpdmVycy9uZXQvYm54dC90Zl91bHAv dWxwX21hcHBlci5oIGIvZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX21hcHBlci5oCShyZWpl Y3RlZCBodW5rcykKQEAgLTQ0LDcgKzQ0LDkgQEAgc3RydWN0IGJueHRfdWxwX21hcHBlcl9wYXJt cyB7CiAJc3RydWN0IHVscF9ydGVfYWN0X3Byb3AJCQkqYWN0X3Byb3A7CiAJc3RydWN0IHVscF9y dGVfYWN0X2JpdG1hcAkJKmFjdF9iaXRtYXA7CiAJc3RydWN0IHVscF9ydGVfaGRyX2JpdG1hcAkJ Kmhkcl9iaXRtYXA7CisJc3RydWN0IHVscF9ydGVfaGRyX2JpdG1hcAkJKmVuY19oZHJfYml0bWFw OwogCXN0cnVjdCB1bHBfcnRlX2hkcl9maWVsZAkJKmhkcl9maWVsZDsKKwlzdHJ1Y3QgdWxwX3J0 ZV9oZHJfZmllbGQJCSplbmNfZmllbGQ7CiAJc3RydWN0IHVscF9ydGVfZmllbGRfYml0bWFwCQkq ZmxkX2JpdG1hcDsKIAl1aW50NjRfdAkJCQkqY29tcF9mbGQ7CiAJc3RydWN0IHVscF9yZWdmaWxl CQkJKnJlZ2ZpbGU7CkBAIC02Nyw3ICs2OSw5IEBAIHN0cnVjdCBibnh0X3VscF9tYXBwZXJfcGFy bXMgewogc3RydWN0IGJueHRfdWxwX21hcHBlcl9jcmVhdGVfcGFybXMgewogCXVpbnQzMl90CQkJ YXBwX3ByaW9yaXR5OwogCXN0cnVjdCB1bHBfcnRlX2hkcl9iaXRtYXAJKmhkcl9iaXRtYXA7CisJ c3RydWN0IHVscF9ydGVfaGRyX2JpdG1hcAkqZW5jX2hkcl9iaXRtYXA7CiAJc3RydWN0IHVscF9y dGVfaGRyX2ZpZWxkCSpoZHJfZmllbGQ7CisJc3RydWN0IHVscF9ydGVfaGRyX2ZpZWxkCSplbmNf ZmllbGQ7CiAJdWludDY0X3QJCQkqY29tcF9mbGQ7CiAJc3RydWN0IHVscF9ydGVfYWN0X2JpdG1h cAkqYWN0OwogCXN0cnVjdCB1bHBfcnRlX2FjdF9wcm9wCQkqYWN0X3Byb3A7CmRpZmYgYS9kcml2 ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfcnRlX3BhcnNlci5oIGIvZHJpdmVycy9uZXQvYm54dC90 Zl91bHAvdWxwX3J0ZV9wYXJzZXIuaAkocmVqZWN0ZWQgaHVua3MpCkBAIC0zMyw4ICszMywxMCBA QAogI2RlZmluZQlCTlhUX1VMUF9HRVRfSVBWNl9GTE9XTEFCRUwodnRjZikJXAogCQkJKCh2dGNm KSAmIEJOWFRfVUxQX1BBUlNFUl9JUFY2X0ZMT1dfTEFCRUwpCiAjZGVmaW5lCUJOWFRfVUxQX1BB UlNFUl9JUFY2X1ZFUl9NQVNLCQkweGYwMDAwMDAwCisjZGVmaW5lIEJOWFRfVUxQX0lQVjZfREZM VF9WRVIJCQkweDYwMDAwMDAwCiAjZGVmaW5lCUJOWFRfVUxQX1BBUlNFUl9JUFY2X1RDCQkJMHgw ZmYwMDAwMAogI2RlZmluZQlCTlhUX1VMUF9QQVJTRVJfSVBWNl9GTE9XX0xBQkVMCQkweDAwMGZm ZmZmCisjZGVmaW5lIEJOWFRfVUxQX0RFRkFVTFRfVFRMCQkJNjQKIAogZW51bSBibnh0X3VscF9w cnNyX2FjdGlvbiB7CiAJVUxQX1BSU1JfQUNUX0RFRkFVTFQgPSAwLApkaWZmIGEvZHJpdmVycy9u ZXQvYm54dC90Zl91bHAvdWxwX3RlbXBsYXRlX3N0cnVjdC5oIGIvZHJpdmVycy9uZXQvYm54dC90 Zl91bHAvdWxwX3RlbXBsYXRlX3N0cnVjdC5oCShyZWplY3RlZCBodW5rcykKQEAgLTMwLDYgKzMw LDcgQEAKICNkZWZpbmUgQk5YVF9VTFBfUFJPVE9fSERSX0dSRV9OVU0JNgogI2RlZmluZSBCTlhU X1VMUF9QUk9UT19IRFJfSUNNUF9OVU0JNQogI2RlZmluZSBCTlhUX1VMUF9QUk9UT19IRFJfTUFY CQkxMjgKKyNkZWZpbmUgQk5YVF9VTFBfUFJPVE9fSERSX0VOQ0FQX01BWAk2NAogI2RlZmluZSBC TlhUX1VMUF9QUk9UT19IRFJfRklFTERfU1ZJRl9JRFgJMQogCiAvKiBEaXJlY3Rpb24gYXR0cmli dXRlcyAqLwpAQCAtNjQsMTIgKzY1LDEzIEBAIHN0cnVjdCB1bHBfcnRlX2FjdF9wcm9wIHsKIAog LyogU3RydWN0dXJlIHRvIGJlIHVzZWQgZm9yIHBhc3NpbmcgYWxsIHRoZSBwYXJzZXIgZnVuY3Rp b25zICovCiBzdHJ1Y3QgdWxwX3J0ZV9wYXJzZXJfcGFyYW1zIHsKLQlTVEFJTFFfRU5UUlkodWxw X3J0ZV9wYXJzZXJfcGFyYW1zKSAgbmV4dDsKIAlzdHJ1Y3QgdWxwX3J0ZV9oZHJfYml0bWFwCWhk cl9iaXRtYXA7CisJc3RydWN0IHVscF9ydGVfaGRyX2JpdG1hcAllbmNfaGRyX2JpdG1hcDsKIAlz dHJ1Y3QgdWxwX3J0ZV9oZHJfYml0bWFwCWhkcl9mcF9iaXQ7CiAJc3RydWN0IHVscF9ydGVfZmll bGRfYml0bWFwCWZsZF9iaXRtYXA7CiAJc3RydWN0IHVscF9ydGVfZmllbGRfYml0bWFwCWZsZF9z X2JpdG1hcDsKIAlzdHJ1Y3QgdWxwX3J0ZV9oZHJfZmllbGQJaGRyX2ZpZWxkW0JOWFRfVUxQX1BS T1RPX0hEUl9NQVhdOworCXN0cnVjdCB1bHBfcnRlX2hkcl9maWVsZAllbmNfZmllbGRbQk5YVF9V TFBfUFJPVE9fSERSX0VOQ0FQX01BWF07CiAJdWludDY0X3QJCQljb21wX2ZsZFtCTlhUX1VMUF9D Rl9JRFhfTEFTVF07CiAJdWludDMyX3QJCQlmaWVsZF9pZHg7CiAJc3RydWN0IHVscF9ydGVfYWN0 X2JpdG1hcAlhY3RfYml0bWFwOwpAQCAtMjU0LDcgKzI1OCw2IEBAIHN0cnVjdCBibnh0X3VscF9t YXBwZXJfdGJsX2luZm8gewogCXVpbnQ4X3QJCQkJZGlyZWN0aW9uOwogCWVudW0gYm54dF91bHBf cHJpX29wYwkJcHJpX29wY29kZTsKIAl1aW50MzJfdAkJCXByaV9vcGVyYW5kOwotCWVudW0gYm54 dF91bHBfYnl0ZV9vcmRlcglieXRlX29yZGVyOwogCiAJLyogY29uZmxpY3QgcmVzb2x1dGlvbiBv cGNvZGUgKi8KIAllbnVtIGJueHRfdWxwX2FjY2VwdF9vcGMJYWNjZXB0X29wY29kZTsKZGlmZiBh L2RyaXZlcnMvbmV0L2JueHQvdGZfdWxwL3VscF91dGlscy5jIGIvZHJpdmVycy9uZXQvYm54dC90 Zl91bHAvdWxwX3V0aWxzLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtNjIsNyArNjIsNyBAQCB1bHBf cmVnZmlsZV9yZWFkKHN0cnVjdCB1bHBfcmVnZmlsZSAqcmVnZmlsZSwKICAqIGRhdGEgW2luXSBU aGUgdmFsdWUgaXMgd3JpdHRlbiBpbnRvIHRoaXMgdmFyaWFibGUuICBJdCBpcyBnb2luZyB0byBi ZSBpbiB0aGUKICAqIHNhbWUgYnl0ZSBvcmRlciBhcyBpdCB3YXMgd3JpdHRlbi4KICAqCi0gKiBz aXplIFtpbl0gVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHZhbHVlIGJlaW5ncml0dGVuIGludG8g dGhpcworICogc2l6ZSBbaW5dIFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSB2YWx1ZSBiZWluZyB3 cml0dGVuIGludG8gdGhpcwogICogdmFyaWFibGUuCiAgKgogICogcmV0dXJucyAwIG9uIHN1Y2Nl c3MKQEAgLTk4Nyw2ICs5ODcsMzMgQEAgdWxwX2Jsb2JfYXBwZW5kKHN0cnVjdCB1bHBfYmxvYiAq ZHN0LCBzdHJ1Y3QgdWxwX2Jsb2IgKnNyYywKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIFBlcmZv cm0gdGhlIGJsb2IgYnVmZmVyIGNvcHkuCisgKiBUaGlzIGFwaSBtYWtlcyB0aGUgc3JjIGJsb2Ig bWVyZ2VkIHRvIHRoZSBkc3QgYmxvYi4KKyAqCisgKiBkc3QgW2luXSBUaGUgZGVzdGluYXRpb24g YmxvYiwgdGhlIGJsb2IgdG8gYmUgbWVyZ2VkLgorICogc3JjIFtpbl0gVGhlIHNyYyBibG9iLgor ICoKKyAqIHJldHVybnMgMCBvbiBzdWNjZXNzLgorICovCitpbnQzMl90Cit1bHBfYmxvYl9idWZm ZXJfY29weShzdHJ1Y3QgdWxwX2Jsb2IgKmRzdCwgc3RydWN0IHVscF9ibG9iICpzcmMpCit7CisJ aWYgKChkc3QtPndyaXRlX2lkeCArIHNyYy0+d3JpdGVfaWR4KSA+IGRzdC0+Yml0bGVuKSB7CisJ CUJOWFRfVEZfREJHKEVSUiwgInNvdXJjZSBidWZmZXIgdG9vIGxhcmdlXG4iKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCWlmIChVTFBfQklUU19JU19CWVRFX05PVF9BTElHTkVEKGRzdC0+d3Jp dGVfaWR4KSB8fAorCSAgICBVTFBfQklUU19JU19CWVRFX05PVF9BTElHTkVEKHNyYy0+d3JpdGVf aWR4KSkgeworCQlCTlhUX1RGX0RCRyhFUlIsICJzb3VyY2UgYnVmZmVyIGlzIG5vdCBhbGlnbmVk XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCW1lbWNweSgmZHN0LT5kYXRhW1VMUF9CSVRT XzJfQllURV9OUihkc3QtPndyaXRlX2lkeCldLAorCSAgICAgICBzcmMtPmRhdGEsIFVMUF9CSVRT XzJfQllURV9OUihzcmMtPndyaXRlX2lkeCkpOworCWRzdC0+d3JpdGVfaWR4ICs9IHNyYy0+d3Jp dGVfaWR4OworCXJldHVybiAwOworfQorCiAvKgogICogUmVhZCBkYXRhIGZyb20gdGhlIG9wZXJh bmQKICAqCmRpZmYgYS9kcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfdXRpbHMuaCBiL2RyaXZl cnMvbmV0L2JueHQvdGZfdWxwL3VscF91dGlscy5oCShyZWplY3RlZCBodW5rcykKQEAgLTQ3NSw2 ICs0NzUsMTggQEAgaW50MzJfdAogdWxwX2Jsb2JfYXBwZW5kKHN0cnVjdCB1bHBfYmxvYiAqZHN0 LCBzdHJ1Y3QgdWxwX2Jsb2IgKnNyYywKIAkJdWludDE2X3Qgc3JjX29mZnNldCwgdWludDE2X3Qg c3JjX2xlbik7CiAKKy8qCisgKiBQZXJmb3JtIHRoZSBibG9iIGJ1ZmZlciBjb3B5LgorICogVGhp cyBhcGkgbWFrZXMgdGhlIHNyYyBibG9iIG1lcmdlZCB0byB0aGUgZHN0IGJsb2IuCisgKgorICog ZHN0IFtpbl0gVGhlIGRlc3RpbmF0aW9uIGJsb2IsIHRoZSBibG9iIHRvIGJlIG1lcmdlZC4KKyAq IHNyYyBbaW5dIFRoZSBzcmMgYmxvYi4KKyAqCisgKiByZXR1cm5zIDAgb24gc3VjY2Vzcy4KKyAq LworaW50MzJfdAordWxwX2Jsb2JfYnVmZmVyX2NvcHkoc3RydWN0IHVscF9ibG9iICpkc3QsIHN0 cnVjdCB1bHBfYmxvYiAqc3JjKTsKKwogLyoKICAqIFJlYWQgZGF0YSBmcm9tIHRoZSBvcGVyYW5k CiAgKgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC9nZW5lcmljX3RlbXBs YXRlcy91bHBfdGVtcGxhdGVfZGJfdGJsLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZf dWxwL2dlbmVyaWNfdGVtcGxhdGVzL3VscF90ZW1wbGF0ZV9kYl90YmwuYzogZG9lcyBub3QgZXhp c3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl91bHAvdWxwX21h cHBlci5jLi4uCmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfbWFwcGVyLmM6IGRv ZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfdWxw L3VscF90ZW1wbGF0ZV9zdHJ1Y3QuaC4uLgplcnJvcjogZHJpdmVycy9uZXQvYm54dC90Zl91bHAv dWxwX3RlbXBsYXRlX3N0cnVjdC5oOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfdGJsX3NyYW0uYy4uLgplcnJvcjogZHJpdmVy cy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibF9zcmFtLmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4 CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS9kcG9vbC5jLi4uCmVycm9y OiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvZHBvb2wuYzogZG9lcyBub3QgZXhpc3QgaW4gaW5k ZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2ludGVybmFs LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJcmV0dXJuIHJjOwoKCWlmICghdGZf c2Vzc2lvbl9pc19zaGFyZWRfc2Vzc2lvbih0ZnMpKSB7CgkJZm9yIChpID0gMDsgaSA8IFRGX0RJ Ul9NQVg7IGkrKykKCQkJZHBvb2xfZnJlZV9hbGwodGZzLT5lbV9wb29sW2ldKTsKCX0KCglyYyA9 IHRmX3Nlc3Npb25fZ2V0X2RiKHRmcCwgVEZfTU9EVUxFX1RZUEVfRU0sICZlbV9kYl9wdHIpOwoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX2VtX2ludGVy bmFsLmM6MzI2CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl9ybS5j Li4uCmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfcm0uYzogZG9lcyBub3QgbWF0 Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC90Zl9jb3JlL3RmX3RibF9z cmFtLmMuLi4KZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvdGZfY29yZS90Zl90Ymxfc3JhbS5jOiBk b2VzIG5vdCBleGlzdCBpbiBpbmRleApBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L3Rm X2NvcmUvdGZfZW1faW50ZXJuYWwuYyB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEu CmRpZmYgYS9kcml2ZXJzL25ldC9ibnh0L3RmX2NvcmUvdGZfZW1faW50ZXJuYWwuYyBiL2RyaXZl cnMvbmV0L2JueHQvdGZfY29yZS90Zl9lbV9pbnRlcm5hbC5jCShyZWplY3RlZCBodW5rcykKQEAg LTMyNiw4ICszMjYsMTEgQEAgdGZfZW1faW50X3VuYmluZChzdHJ1Y3QgdGYgKnRmcCkKIAkJcmV0 dXJuIHJjOwogCiAJaWYgKCF0Zl9zZXNzaW9uX2lzX3NoYXJlZF9zZXNzaW9uKHRmcykpIHsKLQkJ Zm9yIChpID0gMDsgaSA8IFRGX0RJUl9NQVg7IGkrKykKKwkJZm9yIChpID0gMDsgaSA8IFRGX0RJ Ul9NQVg7IGkrKykgeworCQkJaWYgKHRmcy0+ZW1fcG9vbFtpXSA9PSBOVUxMKQorCQkJCWNvbnRp bnVlOwogCQkJZHBvb2xfZnJlZV9hbGwodGZzLT5lbV9wb29sW2ldKTsKKwkJfQogCX0KIAogCXJj ID0gdGZfc2Vzc2lvbl9nZXRfZGIodGZwLCBURl9NT0RVTEVfVFlQRV9FTSwgJmVtX2RiX3B0cik7 CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvYm54dC5oLi4uCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgoJKChicCktPmZsYWdzMiAmIEJOWFRfRkxBR1MyX1BUUF9USU1FU1lOQ19F TkFCTEVEKQojZGVmaW5lCUJOWFRfQUNDVU1fU1RBVFNfRU4oYnApCQkJXAoJKChicCktPmZsYWdz MiAmIEJOWFRfRkxBR1MyX0FDQ1VNX1NUQVRTX0VOKQoKCXVpbnQxNl90CQljaGlwX251bTsKI2Rl ZmluZSBDSElQX05VTV81ODgxOAkJMHhkODE4CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJz L25ldC9ibnh0L2JueHQuaDo3MjIKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC9ibnh0 X2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojZGVmaW5lIEJOWFRfREVW QVJHX1JFUF9GQ19SMkYgICJyZXAtZmMtcjJmIgojZGVmaW5lIEJOWFRfREVWQVJHX1JFUF9GQ19G MlIgICJyZXAtZmMtZjJyIgojZGVmaW5lIEJOWFRfREVWQVJHX0FQUF9JRAkiYXBwLWlkIgoKc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IGJueHRfZGV2X2FyZ3NbXSA9IHsKCUJOWFRfREVWQVJHX1JF UFJFU0VOVE9SLAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC9ibnh0X2V0 aGRldi5jOjk4CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJQk5YVF9ERVZBUkdfUkVQX0ZD X1IyRiwKCUJOWFRfREVWQVJHX1JFUF9GQ19GMlIsCglCTlhUX0RFVkFSR19BUFBfSUQsCglOVUxM Cn07CgovKgogKiBhY2N1bS1zdGF0cyA9PSBmYWxzZSB0byBkaXNhYmxlIGZsb3cgY291bnRlciBh Y2N1bXVsYXRpb24KICogYWNjdW0tc3RhdHMgPT0gdHJ1ZSB0byBlbmFibGUgZmxvdyBjb3VudGVy IGFjY3VtdWxhdGlvbgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC9ibnh0 X2V0aGRldi5jOjExMQpIdW5rICMzIHN1Y2NlZWRlZCBhdCA1NTE1IChvZmZzZXQgLTM0NyBsaW5l cykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJaWYgKHJldCkKCQlnb3RvIGVycjsKCmVy cjoKCS8qCgkgKiBIYW5kbGVyIGZvciAiYXBwLWlkIiBkZXZhcmcuCgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9ibnh0L2JueHRfZXRoZGV2LmM6NTg5MApDaGVja2luZyBwYXRjaCBk cml2ZXJzL25ldC9ibnh0L3RmX3VscC9ibnh0X3VscC5jLi4uCmVycm9yOiBkcml2ZXJzL25ldC9i bnh0L3RmX3VscC9ibnh0X3VscC5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBfZGVmX3J1bGVzLmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CglyYyA9IHVscF9kZWZhdWx0X2Zsb3dfZGJfY2ZhX2FjdGlvbl9nZXQo YnAtPnVscF9jdHgsCgkJCQkJCWluZm8tPmRlZl9wb3J0X2Zsb3dfaWQsCgkJCQkJCSZicC0+dHhf Y2ZhX2FjdGlvbik7CglpZiAocmMpCgkJYnAtPnR4X2NmYV9hY3Rpb24gPSAwOwoJaW5mby0+dmFs aWQgPSB0cnVlOwoJcmV0dXJuIDA7Cn0KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L2JueHQvdGZfdWxwL3VscF9kZWZfcnVsZXMuYzo1MjYKQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvYm54dC9ibnh0Lmggd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWlu ZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L2JueHRfZXRoZGV2LmMgd2l0aCAzIHJlamVjdHMuLi4K UmVqZWN0ZWQgaHVuayAjMS4KUmVqZWN0ZWQgaHVuayAjMi4KSHVuayAjMyBhcHBsaWVkIGNsZWFu bHkuClJlamVjdGVkIGh1bmsgIzQuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JueHQvdGZf dWxwL3VscF9kZWZfcnVsZXMuYyB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCmRp ZmYgYS9kcml2ZXJzL25ldC9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2JueHQvYm54dC5oCShy ZWplY3RlZCBodW5rcykKQEAgLTcyMiw2ICs3MjIsOSBAQCBzdHJ1Y3QgYm54dCB7CiAJKChicCkt PmZsYWdzMiAmIEJOWFRfRkxBR1MyX1BUUF9USU1FU1lOQ19FTkFCTEVEKQogI2RlZmluZQlCTlhU X0FDQ1VNX1NUQVRTX0VOKGJwKQkJCVwKIAkoKGJwKS0+ZmxhZ3MyICYgQk5YVF9GTEFHUzJfQUND VU1fU1RBVFNfRU4pCisjZGVmaW5lCUJOWFRfRkxBR1MyX1RFU1RQTURfRU4JCQlCSVQoMykKKyNk ZWZpbmUJQk5YVF9URVNUUE1EX0VOKGJwKQkJCVwKKwkoKGJwKS0+ZmxhZ3MyICYgQk5YVF9GTEFH UzJfVEVTVFBNRF9FTikKIAogCXVpbnQxNl90CQljaGlwX251bTsKICNkZWZpbmUgQ0hJUF9OVU1f NTg4MTgJCTB4ZDgxOApkaWZmIGEvZHJpdmVycy9uZXQvYm54dC9ibnh0X2V0aGRldi5jIGIvZHJp dmVycy9uZXQvYm54dC9ibnh0X2V0aGRldi5jCShyZWplY3RlZCBodW5rcykKQEAgLTk4LDYgKzk4 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydGVfcGNpX2lkIGJueHRfcGNpX2lkX21hcFtdID0g ewogI2RlZmluZSBCTlhUX0RFVkFSR19SRVBfRkNfUjJGICAicmVwLWZjLXIyZiIKICNkZWZpbmUg Qk5YVF9ERVZBUkdfUkVQX0ZDX0YyUiAgInJlcC1mYy1mMnIiCiAjZGVmaW5lIEJOWFRfREVWQVJH X0FQUF9JRAkiYXBwLWlkIgorI2RlZmluZQlCTlhUX0RFVkFSR19URVNUUE1ECSJ0ZXN0cG1kIgog CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgYm54dF9kZXZfYXJnc1tdID0gewogCUJOWFRfREVW QVJHX1JFUFJFU0VOVE9SLApAQCAtMTExLDkgKzExMiwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgYm54dF9kZXZfYXJnc1tdID0gewogCUJOWFRfREVWQVJHX1JFUF9GQ19SMkYsCiAJQk5Y VF9ERVZBUkdfUkVQX0ZDX0YyUiwKIAlCTlhUX0RFVkFSR19BUFBfSUQsCisJQk5YVF9ERVZBUkdf VEVTVFBNRCwKIAlOVUxMCiB9OwogCisvKgorICogdGVzdHBtZCA9PSBmYWxzZSB0byBkaXNhYmxl CisgKiB0ZXN0cG1kID09IHRydWUgdG8gZW5hYmxlCisgKi8KKyNkZWZpbmUJQk5YVF9ERVZBUkdf VEVTVFBNRF9JTlZBTElEKHRydWZsb3cpCQkoKHRlc3RwbWQpID4gMSkKKworCiAvKgogICogYWNj dW0tc3RhdHMgPT0gZmFsc2UgdG8gZGlzYWJsZSBmbG93IGNvdW50ZXIgYWNjdW11bGF0aW9uCiAg KiBhY2N1bS1zdGF0cyA9PSB0cnVlIHRvIGVuYWJsZSBmbG93IGNvdW50ZXIgYWNjdW11bGF0aW9u CkBAIC01ODkwLDYgKzU5MzcsMTUgQEAgYm54dF9wYXJzZV9kZXZfYXJncyhzdHJ1Y3QgYm54dCAq YnAsIHN0cnVjdCBydGVfZGV2YXJncyAqZGV2YXJncykKIAlpZiAocmV0KQogCQlnb3RvIGVycjsK IAorCS8qCisJICogSGFuZGxlciBmb3IgInRlc3RwbWQiIGRldmFyZy4KKwkgKiBJbnZva2VkIGFz IGZvciBleDogIi1hIDAwMDA6MDA6MGQuMCx0ZXN0cG1kPTEiCisJICovCisJcmV0ID0gcnRlX2t2 YXJnc19wcm9jZXNzKGt2bGlzdCwgQk5YVF9ERVZBUkdfVEVTVFBNRCwKKwkJCQkgYm54dF9wYXJz ZV9kZXZhcmdfdGVzdHBtZCwgYnApOworCWlmIChyZXQpCisJCWdvdG8gZXJyOworCiBlcnI6CiAJ LyoKIAkgKiBIYW5kbGVyIGZvciAiYXBwLWlkIiBkZXZhcmcuCmRpZmYgYS9kcml2ZXJzL25ldC9i bnh0L3RmX3VscC91bHBfZGVmX3J1bGVzLmMgYi9kcml2ZXJzL25ldC9ibnh0L3RmX3VscC91bHBf ZGVmX3J1bGVzLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtNTI2LDggKzUyNiwxMCBAQCBibnh0X3Vs cF9jcmVhdGVfZGZfcnVsZXMoc3RydWN0IGJueHQgKmJwKQogCXJjID0gdWxwX2RlZmF1bHRfZmxv d19kYl9jZmFfYWN0aW9uX2dldChicC0+dWxwX2N0eCwKIAkJCQkJCWluZm8tPmRlZl9wb3J0X2Zs b3dfaWQsCiAJCQkJCQkmYnAtPnR4X2NmYV9hY3Rpb24pOwotCWlmIChyYykKKworCWlmIChyYyB8 fCBCTlhUX1RFU1RQTURfRU4oYnApKQogCQlicC0+dHhfY2ZhX2FjdGlvbiA9IDA7CisKIAlpbmZv LT52YWxpZCA9IHRydWU7CiAJcmV0dXJuIDA7CiB9CgpodHRwczovL2xhYi5kcGRrLm9yZy9yZXN1 bHRzL2Rhc2hib2FyZC9wYXRjaHNldHMvMTg0ODcvCgpVTkgtSU9MIERQREsgQ29tbXVuaXR5IExh Ygo= --===============2568575288038424870==--