Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oGXIX-0005B6-1L for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Jul 2022 03:01:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oGXIV-00034O-Rj for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Jul 2022 03:01:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oGXIU-00034E-Tv for pgsql-hackers@lists.postgresql.org; Wed, 27 Jul 2022 03:01:19 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oGXIS-0004Ch-72 for pgsql-hackers@postgresql.org; Wed, 27 Jul 2022 03:01:17 +0000 Received: by mail-pj1-x102c.google.com with SMTP id f11-20020a17090a4a8b00b001f2f7e32d03so2219065pjh.0 for ; Tue, 26 Jul 2022 20:01:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Z9q6wfBiz855Onmy1Cw9tdWJeXNsfxnPfEicwEabk/A=; b=bzeuvu/GVk4FR+QEExRU6wruYR1yzk9cBwLLx5KbpMMHsHpeiPwSbQOpC5xgPY2NjR /9G/6nPTXrugiynu2rjBVVt2khYw/jj3/of/7ZJ/X3S/l+wGV6D9V9c/2VD3ruRZS4/u 0RRYNAC5IFWT3jRuUtvFrIlMykPtwXeese8dLBNwA/MQtyCNg6LHrbfJmI9Zwb7Z9Ab5 0/IjIwihH5aSSntgDKz93F8f/QgCIZB9Ntbx4WyhWEAASj/m83SD6tSgYi/G8fmPjYZP kLESBZQqO5NzuWNudeg1RwsTg/ncXnsDl1YSwLRvD1WkxL+h4Q0lnMXOzOA8gFKOZJ8K 3BNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Z9q6wfBiz855Onmy1Cw9tdWJeXNsfxnPfEicwEabk/A=; b=57GKVw46IRt4x0N6e95Xdkg8GlTanXEP3DMEmAOhmsKWX9Tf8dIYLdLkoZmFjgLBj0 mzR9iAFEOA7OnLqB8Glk5XnHHB76u258WUDZXZAkHGBllItnI1X9+ReFt2zAfldUwJBY OA4ZmUX8gEpaWOE2QPYBNQOtyaPHYuCdYYLIDgXbkY6EWmGL7+xDen3jaqEves1IxFru K+cd+7NuBhwrrb/5lhOz1iDiebKnbpj/eQ8YaD0sySvFK39uNIjWHsgOjgzQMcj7XkKW 93j214RTO/voOA3GwHA8tR1WO+o+sL5pvkKtFBaTZZ06Y2y8+1IIQIeoS3bBMT9p2EmW gvuw== X-Gm-Message-State: AJIora8JpdEiAc2OVaUbaUjvYsYitMfEM9Vbqb1dvddJEuFeoTV1wSJU JPyFLdmALVtuKr92TOUvNM38u3TacwTSIl+f5E8= X-Google-Smtp-Source: AGRyM1tBSeLa37rUtFoetI7TMYoWxib0WWHEl8MwDji6ID90YiIby1whgsQc8rgb6kTQfOUg4O3eOw3kqNZfB19EWEc= X-Received: by 2002:a17:902:6b42:b0:16b:f27c:1c17 with SMTP id g2-20020a1709026b4200b0016bf27c1c17mr19822073plt.152.1658890874991; Tue, 26 Jul 2022 20:01:14 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Wed, 27 Jul 2022 12:00:57 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Jacob Champion Cc: Zhihong Yu , David Rowley , Robert Haas , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000540a9d05e4c0a1fb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000540a9d05e4c0a1fb Content-Type: text/plain; charset="UTF-8" On Wed, Jul 13, 2022 at 4:03 PM Amit Langote wrote: > On Wed, Jul 13, 2022 at 3:40 PM Amit Langote wrote: > > Rebased over 964d01ae90c. > > Sorry, left some pointless hunks in there while rebasing. Fixed in > the attached. Needed to be rebased again, over 2d04277121f this time. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000540a9d05e4c0a1fb Content-Type: application/octet-stream; name="v20-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Disposition: attachment; filename="v20-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l630rzt50 RnJvbSA4ZGUyNTUyOGU4ZjM4OGJlZmZkYWIzZDdjOTkwNTcxMmUyZjhlZWVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXkgMjAyMiAxNjowMDoyOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIwIDEv Ml0gTW92ZSBQYXJ0aXRpb1BydW5lSW5mbyBvdXQgb2YgcGxhbiBub2RlcyBpbnRvCiBQbGFubmVk U3RtdAoKVGhlIHBsYW5uZXIgd2lsbCBub3cgYWRkIGEgZ2l2ZW4gUGFydGl0aW9QcnVuZUluZm8g dG8KUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgaW5zdGVhZCBvZiBkaXJlY3RseSB0byB0aGUK QXBwZW5kL01lcmdlQXBwZW5kIHBsYW4gbm9kZS4gIFdoYXQgZ2V0cyBzZXQgaW5zdGVhZCBpbiB0 aGUKbGF0dGVyIGlzIGFuIGluZGV4IGZpZWxkIHdoaWNoIHBvaW50cyB0byB0aGUgbGlzdCBlbGVt ZW50Cm9mIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zIGNvbnRhaW5pbmcgdGhlIFBhcnRpdGlv UHJ1bmVJbmZvCmJlbG9uZ2luZyB0byB0aGUgcGxhbiBub2RlLgoKQSBsYXRlciBjb21taXQgd2ls bCBtYWtlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgZG8gdGhlIGluaXRpYWwKcGFydGl0aW9uIHBy dW5pbmcgdG8gZGV0ZXJtaW5lIGEgbWluaW1hbCBzZXQgb2YgcGFydGl0aW9ucyB0byBiZQpsb2Nr ZWQgd2hlbiB2YWxpZGF0aW5nIGEgcGxhbiB0cmVlIGFuZCBpdCB3aWxsIG5lZWQgdG8gY29uc3Vs dCB0aGUKUGFydGl0aW9QcnVuZUluZm9zIHJlZmVyZW5jZWQgdGhlcmVpbiB0byBkbyBzby4gIEl0 IHdvdWxkIGJlIGJldHRlcgpmb3IgdGhlIFBhcnRpdGlvUHJ1bmVJbmZvcyB0byBiZSBhY2Nlc3Np YmxlIGRpcmVjdGx5IHRoYW4gcmVxdWlyaW5nCmEgd2FsayBvZiB0aGUgcGxhbiB0cmVlIHRvIGZp bmQgdGhlbSwgd2hpY2ggaXMgZWFzaWVyIHdoZW4gaXQgY2FuIGJlCmRvbmUgYnkgc2ltcGx5IGl0 ZXJhdGluZyBvdmVyIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zLgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAg ICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAgNCAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDI0ICsrKystLS0tLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgIHwgNjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgIHwgMTggKysrKy0tLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oICAgICAgICAgICB8ICA2ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmggICAgICAgICAgIHwgMTEgKysrLS0KIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuaCAgICB8ICA4ICstLQogMTUgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgNjIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggZWYyZmQ0NjA5Mi4uNzJm YzI3MzUyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04MjUsNiArODI1LDcgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRh YmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxh bm5lZHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBh cnRQcnVuZUluZm9zOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJy YXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKaW5kZXggZjFmZDdmN2U4Yi4uZjczYjhjMjYwNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFu ICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwog CXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBw bGFuOworCXBzdG10LT5wYXJ0UHJ1bmVJbmZvcyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZv czsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRlLT5lc19yYW5nZV90YWJsZTsKIAlwc3RtdC0+cmVz dWx0UmVsYXRpb25zID0gTklMOwogCXBzdG10LT5hcHBlbmRSZWxhdGlvbnMgPSBOSUw7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZTAzZWEyNzI5OS4uYjU1Y2RkMjU4MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTYzOCwxMSArMTYzOCwxMyBA QCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFw ICphdHRyTWFwKQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBydW5p bmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0J CQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50IHBhcnRfcHJ1 bmVfaW5kZXgsCiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKQog ewogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJRVN0YXRlCSAgICplc3RhdGUg PSBwbGFuc3RhdGUtPnN0YXRlOworCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGlz dF9udGgoZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAorCQkJCQkJCQkJCQkgcGFydF9wcnVu ZV9pbmRleCk7CiAKIAkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZh bHVhdGUgcGFydGl0aW9uIGV4cHJzICovCiAJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwg cGxhbnN0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggOWRmMWY4MWVhOC4uZjlj Nzk3NmZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTExOSw2ICsxMTksOCBAQCBD cmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc19yZWxhdGlvbnMgPSBOVUxMOwog CWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBO VUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IE5JTDsKKwllc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfcmVzdWx0ID0gTlVMTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCAzNTdlMTBhMWQ3Li5jNmY4NmE2NTEw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBl bmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBw cnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBh cnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDAp CiAJewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1 LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkJICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFw cGVuZHN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFu cyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5v ZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQlh cHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNf bnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5jCmluZGV4IGM1YzYyZmE1YzcuLjhkMzU4NjBjMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZXJnZUFwcGVuZC5jCkBAIC04Miw3ICs4Miw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQo TWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3Rh dGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAogCS8qIElmIHJ1bi10aW1l IHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0J aWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5l X2luZGV4ID49IDApCiAJewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBA IC05Myw3ICs5Myw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKi8KIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZygmbWVyZ2VzdGF0ZS0+cHMsCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5n dGgobm9kZS0+bWVyZ2VwbGFucyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZv LAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgJnZh bGlkc3VicGxhbnMpOwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7 CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBlMzdmMjkzM2ViLi5mZDhhYjRhMTY3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xMjAzLDcgKzEyMDMs NiBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJl c3RfcGF0aCwgaW50IGZsYWdzKQogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCWludAkJCW5hc3lu Y3BsYW5zID0gMDsKIAlSZWxPcHRJbmZvICpyZWwgPSBiZXN0X3BhdGgtPnBhdGgucGFyZW50Owot CVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBydW5laW5mbyA9IE5VTEw7CiAJaW50CQkJbm9kZW51 bXNvcnRrZXlzID0gMDsKIAlBdHRyTnVtYmVyICpub2RlU29ydENvbElkeCA9IE5VTEw7CiAJT2lk CQkgICAqbm9kZVNvcnRPcGVyYXRvcnMgPSBOVUxMOwpAQCAtMTM1NCw2ICsxMzUzLDkgQEAgY3Jl YXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgs IGludCBmbGFncykKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9 CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdlIGNhbiB1c2UgdG8gcnVu LXRpbWUgcHJ1bmUgKi8KKwlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gLTE7CisKIAkvKgogCSAq IElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhl ciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3Jt YXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTM3NywxNiArMTM3OSwxNCBAQCBj cmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0 aCwgaW50IGZsYWdzKQogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCi0JCQlwYXJ0cHJ1 bmVpbmZvID0KLQkJCQltYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJ CQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJcGxh bi0+cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWws CisJCQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkg IHBydW5lcXVhbCk7CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKIAlwbGFu LT5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwogCXBsYW4tPmZpcnN0X3BhcnRpYWxfcGxhbiA9 IGJlc3RfcGF0aC0+Zmlyc3RfcGFydGlhbF9wYXRoOwotCXBsYW4tPnBhcnRfcHJ1bmVfaW5mbyA9 IHBhcnRwcnVuZWluZm87CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAo UGF0aCAqKSBiZXN0X3BhdGgpOwogCkBAIC0xNDI1LDcgKzE0MjUsNiBAQCBjcmVhdGVfbWVyZ2Vf YXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRo LAogCUxpc3QJICAgKnN1YnBsYW5zID0gTklMOwogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCVJl bE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFydGl0aW9uUHJ1bmVJ bmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAogCS8qCiAJICogV2UgZG9uJ3QgaGF2ZSB0aGUg YWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlIHNwbGl0IG91dApAQCAtMTUx OCw2ICsxNTE3LDkgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290 LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBs YW5zLCBzdWJwbGFuKTsKIAl9CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0 IHdlIGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KKwlub2RlLT5wYXJ0X3BydW5lX2luZGV4 ID0gLTE7CisKIAkvKgogCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVs IHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRp b24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTU0 MSwxMyArMTU0MywxMyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAh PSBOSUwpCi0JCQlwYXJ0cHJ1bmVpbmZvID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3Qs IHJlbCwKLQkJCQkJCQkJCQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkg cHJ1bmVxdWFsKTsKKwkJCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8ocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJICBiZXN0X3BhdGgtPnN1YnBhdGhz LAorCQkJCQkJCQkJCQkJCQkJICBwcnVuZXF1YWwpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMg PSBzdWJwbGFuczsKLQlub2RlLT5wYXJ0X3BydW5lX2luZm8gPSBwYXJ0cHJ1bmVpbmZvOworCiAK IAkvKgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNvcnQgY29sdW1u cywgYnV0IHdlIHdlcmUgdG9sZCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmlu ZGV4IDA2YWQ4NTZlYWMuLmIxMTI0OWVkOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKQEAgLTUxOCw2ICs1MTgsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwg Y29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPmRl cGVuZHNPblJvbGUgPSBnbG9iLT5kZXBlbmRzT25Sb2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2Rl TmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJlc3VsdC0+cGxhblRyZWUgPSB0 b3BfcGxhbjsKKwlyZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7 CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKIAlyZXN1bHQtPnJlc3VsdFJl bGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9u cyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMu YwppbmRleCAxY2IwYWJkYmMxLi43MjBmMjBmNTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c2V0cmVmcy5jCkBAIC0zNDgsNiArMzQ4LDI5IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5l ckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJCX0KIAl9CiAKKwkvKiBBbHNvIGZpeCB1cCB0aGUg aW5mb3JtYXRpb24gaW4gUGFydGl0aW9uUHJ1bmVJbmZvcy4gKi8KKwlmb3JlYWNoIChsYywgcm9v dC0+cGFydFBydW5lSW5mb3MpCisJeworCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9 IGxmaXJzdChsYyk7CisJCUxpc3RDZWxsICAqbDsKKworCQlmb3JlYWNoKGwsIHBydW5laW5mby0+ cHJ1bmVfaW5mb3MpCisJCXsKKwkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0KGwpOwor CQkJTGlzdENlbGwgICAqbDI7CisKKwkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQorCQkJewor CQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7CisKKwkJCQkv KiBSVCBpbmRleCBvZiB0aGUgdGFibGUgdG8gd2hpY2ggdGhlIHBpbmZvIGJlbG9uZ3MuICovCisJ CQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CisJCQl9CisJCX0KKworCQlnbG9iLT5wYXJ0 UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7CisJ fQorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTY1OCwyMSArMTY4MSwxMiBAQCBzZXRfYXBw ZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAlhcGxhbi0+YXBwcmVsaWRzID0g b2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CiAKLQlpZiAoYXBs YW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgYXBsYW4tPnBhcnRfcHJ1bmVf aW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0 KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQot CQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7Ci0K LQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQotCX0KKwkvKgorCSAq IFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3QgaW4gUGxhbm5lckds b2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmIChhcGxhbi0+cGFydF9w cnVuZV9pbmRleCA+PSAwKQorCQlhcGxhbi0+cGFydF9wcnVuZV9pbmRleCArPSBsaXN0X2xlbmd0 aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJl Y3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChhcGxhbi0+cGxh bi5sZWZ0dHJlZSA9PSBOVUxMKTsKQEAgLTE3MzQsMjEgKzE3NDgsMTIgQEAgc2V0X21lcmdlYXBw ZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAltcGxhbi0+YXBwcmVsaWRzID0g b2Zmc2V0X3JlbGlkX3NldChtcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CiAKLQlpZiAobXBs YW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgbXBsYW4tPnBhcnRfcHJ1bmVf aW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0 KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQot CQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7Ci0K LQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQotCX0KKwkvKgorCSAq IFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3QgaW4gUGxhbm5lckds b2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmIChtcGxhbi0+cGFydF9w cnVuZV9pbmRleCA+PSAwKQorCQltcGxhbi0+cGFydF9wcnVuZV9pbmRleCArPSBsaXN0X2xlbmd0 aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJl Y3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChtcGxhbi0+cGxh bi5sZWZ0dHJlZSA9PSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRl eCA5ZDNjMDVhZWQzLi5kNzdmN2QzYWVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jCkBAIC0yMDksMTYgKzIwOSwyMCBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zyb21f ZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAKIC8qCiAgKiBtYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8KLSAqCQlCdWlsZHMgYSBQYXJ0aXRpb25QcnVuZUluZm8gd2hpY2ggY2Fu IGJlIHVzZWQgaW4gdGhlIGV4ZWN1dG9yIHRvIGFsbG93Ci0gKgkJYWRkaXRpb25hbCBwYXJ0aXRp b24gcHJ1bmluZyB0byB0YWtlIHBsYWNlLiAgUmV0dXJucyBOVUxMIHdoZW4KLSAqCQlwYXJ0aXRp b24gcHJ1bmluZyB3b3VsZCBiZSB1c2VsZXNzLgorICoJCUNoZWNrcyBpZiB0aGUgZ2l2ZW4gc2V0 IG9mIHF1YWxzIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIHBydW5pbmcgc3RlcHMKKyAqCQl0aGF0IHRo ZSBleGVjdXRvciBjYW4gdXNlIHRvIHBydW5lIGF3YXkgdW5uZWVkZWQgcGFydGl0aW9ucy4gIElm CisgKgkJc3VpdGFibGUgcXVhbHMgYXJlIGZvdW5kIHRoZW4gYSBQYXJ0aXRpb25QcnVuZUluZm8g aXMgYnVpbHQgYW5kIHRhZ2dlZAorICoJCW9udG8gdGhlIFBsYW5uZXJJbmZvJ3MgcGFydFBydW5l SW5mb3MgbGlzdC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSAwLWJhc2VkIGluZGV4 IG9mIHRoZSBpdGVtIGFkZGVkIHRvIHRoZQorICogcGFydFBydW5lSW5mb3MgbGlzdCBvciAtMSBp ZiBub3RoaW5nIHdhcyBhZGRlZC4KICAqCiAgKiAncGFyZW50cmVsJyBpcyB0aGUgUmVsT3B0SW5m byBmb3IgYW4gYXBwZW5kcmVsLCBhbmQgJ3N1YnBhdGhzJyBpcyB0aGUgbGlzdAogICogb2Ygc2Nh biBwYXRocyBmb3IgaXRzIGNoaWxkIHJlbHMuCiAgKiAncHJ1bmVxdWFsJyBpcyBhIGxpc3Qgb2Yg cG90ZW50aWFsIHBydW5pbmcgcXVhbHMgKGkuZS4sIHJlc3RyaWN0aW9uCiAgKiBjbGF1c2VzIHRo YXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGFwcGVuZHJlbCkuCiAgKi8KLVBhcnRpdGlvblBydW5l SW5mbyAqCitpbnQKIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJIExpc3QgKnN1YnBhdGhzLAogCQkJCQkJIExp c3QgKnBydW5lcXVhbCkKQEAgLTMzMiw3ICszMzYsNyBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywg dGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVyIHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8K IAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7 CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWlu Zm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZUluZm8pOwpAQCAtMzU4LDcgKzM2Miw5IEBAIG1h a2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFy ZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJwbGFucyA9IE5VTEw7CiAKLQly ZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9zID0gbGFwcGVuZChyb290LT5w YXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBsaXN0X2xlbmd0aChyb290LT5w YXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oCmluZGV4IDcwODQzNWU5NTIuLmJmOTYyYWY3YWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj UGFydGl0aW9uLmgKQEAgLTEyMyw5ICsxMjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25Q cnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlv blBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBuX3RvdGFs X3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywK KwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCQkJIEJpdG1h cHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJ CQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOwotCiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BB UlRJVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDAxYjE3MjdmYzAuLjYzYTg5NDc0 ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTEsNiArNjExLDggQEAgdHlwZWRlZiBzdHJ1 Y3QgRVN0YXRlCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9m IHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVM TCBpZiBub25lICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRv cCBvZiBwbGFuIHRyZWUgKi8KKwlMaXN0CQkqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5l ZFN0bXQucGFydFBydW5lSW5mb3MgKi8KKwlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKmVz X3BhcnRfcHJ1bmVfcmVzdWx0OyAvKiBRdWVyeURlc2MucGFydF9wcnVuZV9yZXN1bHQgKi8KIAlj b25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAq LwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVy LCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggZTIwODFkYjRlZC4uYTRlNmI0ZGI5 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTEyMiw2ICsxMjIsOSBAQCB0eXBlZGVmIHN0cnVj dCBQbGFubmVyR2xvYmFsCiAJLyogImZsYXQiIGxpc3Qgb2YgQXBwZW5kUmVsSW5mb3MgKi8KIAlM aXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CiAKKwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5m byBjb250YWluZWQgaW4gdGhlIHBsYW4gKi8KKwlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsKKwog CS8qIE9JRHMgb2YgcmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24gKi8KIAlMaXN0CSAgICpy ZWxhdGlvbk9pZHM7CiAKQEAgLTQ4OCw2ICs0OTEsOSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAog CS8qIERvZXMgdGhpcyBxdWVyeSBtb2RpZnkgYW55IHBhcnRpdGlvbiBrZXkgY29sdW1ucz8gKi8K IAlib29sCQlwYXJ0Q29sc1VwZGF0ZWQ7CisKKwkvKiBQYXJ0aXRpb25QcnVuZUluZm9zIGFkZGVk IGluIHRoaXMgcXVlcnkncyBwbGFuLiAqLworCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwogfTsK IAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGRjYTJhMjFlN2EuLmYyZGFhYmIzYjcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCkBAIC02OSw2ICs2OSw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRT dG10CiAKIAlzdHJ1Y3QgUGxhbiAqcGxhblRyZWU7CQkvKiB0cmVlIG9mIFBsYW4gbm9kZXMgKi8K IAorCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5m byBjb250YWluZWQgaW4KKwkJCQkJCQkJICogdGhlIHBsYW4gKi8KKwogCUxpc3QJICAgKnJ0YWJs ZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAogCS8qIHJ0YWJsZSBpbmRl eGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFICovCkBAIC0y NjksOCArMjcyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3Rf cGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBO VUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5m byAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUlu Zm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2lu ZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTMwNCw4ICszMDcsOCBA QCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAogCS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0 aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVt Q29scykpOwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlm IHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFy dF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9y IC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4Owog fSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5n L3BhcnRwcnVuZS5oCmluZGV4IDkwNjg0ZWZhMjUuLmViZjBkY2ZmOGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQ YXJ0aXRpb25QcnVuZUNvbnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMs IHN0ZXBfaWQsIGtleW5vKSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkK IAotZXh0ZXJuIFBhcnRpdGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0 cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAotCQkJCQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxp c3QgKnBydW5lcXVhbCk7CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1 Y3QgUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCQkJTGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwp OwogZXh0ZXJuIEJpdG1hcHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBS ZWxPcHRJbmZvICpyZWwpOwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlv bnMoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1 bmluZ19zdGVwcyk7Ci0tIAoyLjM1LjMKCg== --000000000000540a9d05e4c0a1fb Content-Type: application/octet-stream; name="v20-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v20-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l630rzth1 RnJvbSA3YTE0NTRjNmExZWNkZTVjODcxYmVjNWE0ZDY0NmRhNGU0MWE2MmMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIwIDIv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDMyICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDUzICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjcgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDIzNCArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZXJnZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAg ICAgICAgICAgICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAg ICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICB8ICAg MiArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICB8ICA0NiArKysrKwog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgfCAgNDEgKysrKy0KIHNyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC90 Y29wL3BxdWVyeS5jICAgICAgICAgICAgICB8ICAyOCArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jICAgIHwgMTg3ICsrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICB8ICAxOSArKwogc3JjL2luY2x1ZGUvY29tbWFu ZHMvZXhwbGFpbi5oICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaCAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAg ICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICB8ICAg MiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICB8ICAyNyArKysKIHNy Yy9pbmNsdWRlL25vZGVzL25vZGVzLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgIHwgIDEzICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCAgICAgICAgICB8ICAyMSArKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAg ICAgICB8ICAgMyArCiAzMiBmaWxlcyBjaGFuZ2VkLCA3NTkgaW5zZXJ0aW9ucygrKSwgOTggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBmY2EyOWE5YTEwLi5kODM5NTE3Njkz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTQxLDcgKzU0MSw3IEBAIEJlZ2luQ29weVRvKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7 CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNz dGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0 ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBw c3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJ CQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAw KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDlhYmJiNmI1NTUuLmY2NjA3ZjI0NTQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJs ZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0 ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCBy ZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJ CQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVz dCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBlMjlj MmFlMjA2Li5lNDFiMTNhM2VhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00MDcsNyArNDA3 LDcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJ CX0KIAogCQkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4 cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVu diwKKwkJRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBw YXJhbXMsIHF1ZXJ5RW52LAogCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAm YnVmdXNhZ2UgOiBOVUxMKSk7CiAJfQogfQpAQCAtNTE1LDcgKzUxNSw4IEBAIEV4cGxhaW5PbmVV dGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogICogdG8gY2FsbCBpdC4KICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0 bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQYXJ0aXRpb25QcnVuZVJlc3Vs dCAqcGFydF9wcnVuZV9yZXN1bHQsCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFy YW1zLAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUg KnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKQEAgLTU2 Myw3ICs1NjQsNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVy OwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsIHF1ZXJ5U3Ry aW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJ CQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYwppbmRleCA2YjY3MjBjNjkwLi4zNzRjMGZmODA3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYwpAQCAtNzc2LDcgKzc3Niw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhj b25zdCBjaGFyICpzcWwpCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKLQkJCQlxZGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0 bXQsIE5VTEwsCiAJCQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3 LmMKaW5kZXggOWFjMDM4MzQ1OS4uYjBlZDk2ZTU2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpA QCAtNDA4LDcgKzQwOCw3IEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIg KmRlc3QsIFF1ZXJ5ICpxdWVyeSwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwog CiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxl IHJlY2VpdmVyICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHF1ZXJ5U3Ry aW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmlu ZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ CQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDU3OTgy NWMxNTkuLmI2Mjg1OTU4YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE1NSw2ICsxNTUs NyBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCVByZXBhcmVkU3RhdGVtZW50 ICplbnRyeTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CisJTGlz dAkgICAqcGFydF9wcnVuZV9yZXN1bHRfbGlzdDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBO VUxMOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlQb3J0YWwJCXBvcnRhbDsKQEAgLTE5 Myw3ICsxOTQsMTAgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJ CSAgIGVudHJ5LT5wbGFuc291cmNlLT5xdWVyeV9zdHJpbmcpOwogCiAJLyogUmVwbGFuIGlmIG5l ZWRlZCwgYW5kIGluY3JlbWVudCBwbGFuIHJlZmNvdW50IGZvciBwb3J0YWwgKi8KLQljcGxhbiA9 IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwpOwor CWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwg TlVMTCwKKwkJCQkJCSAgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCUFzc2VydChsaXN0X2xl bmd0aChjcGxhbi0+c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jl c3VsdF9saXN0KSk7CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0y MDcsNiArMjExLDkgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBw bGFuX2xpc3QsCiAJCQkJCSAgY3BsYW4pOwogCisJLyogQ29weSBQYXJ0aXRpb25QcnVuZVJlc3Vs dHMgaW50byB0aGUgcG9ydGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBy dW5lUmVzdWx0cyhwb3J0YWwsIHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCiAJLyoKIAkgKiBG b3IgQ1JFQVRFIFRBQkxFIC4uLiBBUyBFWEVDVVRFLCB3ZSBtdXN0IHZlcmlmeSB0aGF0IHRoZSBw cmVwYXJlZAogCSAqIHN0YXRlbWVudCBpcyBvbmUgdGhhdCBwcm9kdWNlcyB0dXBsZXMuICBDdXJy ZW50bHkgd2UgaW5zaXN0IHRoYXQgaXQgYmUKQEAgLTU3Niw3ICs1ODMsOSBAQCBFeHBsYWluRXhl Y3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKIAljb25zdCBjaGFyICpxdWVyeV9zdHJpbmc7CiAJQ2FjaGVkUGxhbiAqY3Bs YW47CiAJTGlzdAkgICAqcGxhbl9saXN0OwotCUxpc3RDZWxsICAgKnA7CisJTGlzdAkgICAqcGFy dF9wcnVuZV9yZXN1bHRfbGlzdDsKKwlMaXN0Q2VsbCAgICpwLAorCQkJICAgKnBwOwogCVBhcmFt TGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwogCWlu c3RyX3RpbWUJcGxhbnN0YXJ0OwpAQCAtNjE5LDcgKzYyOCwxMCBAQCBFeHBsYWluRXhlY3V0ZVF1 ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRl ICplcywKIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJl ZmNvdW50ICovCiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJh bUxJLAotCQkJCQkJICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYpOworCQkJCQkJICBD dXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3Vs dF9saXN0KTsKKwlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAg bGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCiAJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChwbGFuZHVyYXRpb24pOwogCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9u LCBwbGFuc3RhcnQpOwpAQCAtNjM0LDEzICs2NDYsMTUgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShF eGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qIEV4cGxhaW4gZWFjaCBxdWVy eSAqLwotCWZvcmVhY2gocCwgcGxhbl9saXN0KQorCWZvcmJvdGgocCwgcGxhbl9saXN0LCBwcCwg cGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKKwkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1 bmVfcmVzdWx0ID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQsIHBwKTsKIAogCQlp ZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4o cHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAotCQkJCQkJ ICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQkJ RXhwbGFpbk9uZVBsYW4ocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LCBpbnRvLCBlcywgcXVlcnlf c3RyaW5nLAorCQkJCQkJICAgcGFyYW1MSSwgcXVlcnlFbnYsICZwbGFuZHVyYXRpb24sCisJCQkJ CQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CiAJCWVsc2UKIAkJCUV4cGxh aW5PbmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywK IAkJCQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCAwYjUxODNm YzRhLi45NTNhNDc2ZWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC02NSw2ICs2NSwzNCBAQCBmb3Vu ZCB0aGVyZS4gIFRoaXMgY3VycmVudGx5IG9ubHkgb2NjdXJzIGZvciBBcHBlbmQgYW5kIE1lcmdl QXBwZW5kIG5vZGVzLiAgSW4KIHRoaXMgY2FzZSB0aGUgbm9uLXJlcXVpcmVkIHN1YnBsYW5zIGFy ZSBpZ25vcmVkIGFuZCB0aGUgZXhlY3V0b3Igc3RhdGUncwogc3Vibm9kZSBhcnJheSB3aWxsIGJl Y29tZSBvdXQgb2Ygc2VxdWVuY2UgdG8gdGhlIHBsYW4ncyBzdWJwbGFuIGxpc3QuCiAKK0FjdHVh bGx5LCB0aGUgc28tY2FsbGVkIGV4ZWN1dGlvbiB0aW1lIHBydW5pbmcgbWF5IGFsc28gb2NjdXIg ZXZlbiBiZWZvcmUgdGhlCitleGVjdXRpb24gaGFzIHN0YXJ0ZWQuICBPbmUgY2FzZSB3aGVyZSB0 aGF0IG9jY3VycyBpcyB3aGVuIGEgY2FjaGVkIGdlbmVyaWMKK3BsYW4gaXMgYmVpbmcgdmFsaWRh dGVkIGZvciBleGVjdXRpb24gYnkgcGxhbmNhY2hlLmM6IEdldENhY2hlZFBsYW4oKSwgd2hpY2gK K3dvcmtzIGJ5IGxvY2tpbmcgYWxsIHRoZSByZWxhdGlvbnMgdGhhdCB3aWxsIGJlIHNjYW5uZWQg YnkgdGhhdCBwbGFuLiAgSWYgdGhlCitnZW5lcmljIHBsYW4gY29udGFpbnMgbm9kZXMgdGhhdCBj YW4gcGVyZm9ybSBleGVjdXRpb24gdGltZSBwYXJ0aXRpb24gcHJ1bmluZworKHRoYXQgaXMsIGNv bnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8pLCBhIHN1YnNldCBvZiBwcnVuaW5nIHN0ZXBzIGNv bnRhaW5lZAoraW4gYSBnaXZlbiBub2RlJ3MgUGFydGl0aW9uUHJ1bmVJbmZvIHRoYXQgZG8gbm90 IGRlcGVuZCBvbiB0aGUgZXhlY3V0aW9uCithY3R1YWxseSBoYXZpbmcgc3RhcnRlZCAoY2FsbGVk ICJpbml0aWFsIiBwcnVuaW5nIHN0ZXBzKSBhcmUgcGVyZm9ybWVkIGF0IHRoaXMKK3BvaW50IHRv IGZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0aXNm eSB0aG9zZQorcHJ1bmluZyBzdGVwcy4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgbG9va2luZyBh dCBhIGdpdmVuIHBsYW4gdHJlZSB3aWxsIHRoZW4KK2xvY2sgb25seSB0aGUgcmVsYXRpb25zIHNj YW5uZWQgYnkgdGhlIGNoaWxkIHN1YnBsYW5zIHRoYXQgc3Vydml2ZWQgc3VjaAorcHJ1bmluZywg YWxvbmcgd2l0aCB0aG9zZSBwcmVzZW50IGluIFBsYW5uZWRTdG10Lm1pbkxvY2tSZWxpZHMuICBO b3RlIHRoYXQgdGhlCitzdWJwbGFucyBhcmUgb25seSBub3Rpb25hbGx5IHBydW5lZCBpbiB0aGF0 IHRoZXkgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlIHBsYW4KK3RyZWUgYXMgc3VjaC4KKworVG8g cHJldmVudCB0aGUgZXhlY3V0b3IgYW5kIGFueSB0aGlyZCBwYXJ0eSBleGVjdXRpb24gY29kZSB0 aGF0IGNhbiBsb29rIGF0Cit0aGUgcGxhbiB0cmVlIGZyb20gdHJ5aW5nIHRvIGV4ZWN1dGUgdGhl IHN1YnBsYW5zIHRoYXQgd2VyZSBwcnVuZWQgYXMKK2Rlc2NyaWJlZCBhYm92ZSwgdGhlIHJlc3Vs dCBvZiBwcnVuaW5nIGlzIHBhc3NlZCB0byB0aGUgZXhlY3V0b3IgYXMgYQorUGFydGl0aW9uUHJ1 bmVSZXN1bHQgbm9kZSB2aWEgdGhlIFF1ZXJ5RGVzYy4gIEl0IGNvbnNpc3RzIG9mIHRoZSBzZXQg b2YKK2luZGV4ZXMgb2Ygc3Vydml2aW5nIHN1YnBsYW5zIGluIHRoZWlyIHJlc3BlY3RpdmUgcGFy ZW50IHBsYW4gbm9kZSdzIGxpc3Qgb2YKK2NoaWxkIHN1YnBsYW5zLCBzYXZlZCBhcyBhIGxpc3Qg b2YgYml0bWFwc2V0cywgd2l0aCBvbmUgZWxlbWVudCBmb3IgZXZlcnkKK3BhcmVudCBwbGFuIG5v ZGUgd2hvc2UgUGFydGl0aW9uUHJ1bmVJbmZvIGlzIHByZXNlbnQgaW4KK1BsYW5uZWRTdG10LnBh cnRQcnVuZUluZm9zLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBleGVjdXRvciBzaG91bGQgbm90City ZS1ldmFsdWF0ZSB0aGUgc2V0IG9mIGluaXRpYWxseSB2YWxpZCBzdWJwbGFucyBieSByZWRvaW5n IHRoZSBpbml0aWFsIHBydW5pbmcKK2lmIGl0IHdhcyBhbHJlYWR5IGRvbmUgYnkgQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoKSwgYmVjYXVzZSB0aGUgcmUtZXZhbHVhdGlvbiBtYXkKK3Zlcnkgd2VsbCBl bmQgdXAgcmVzdWx0aW5nIGluIGEgZGlmZmVyZW50IHNldCBvZiBzdWJwbGFucywgY29udGFpbmlu ZyBzb21lCit3aG9zZSByZWxhdGlvbnMgd2VyZSBub3QgbG9ja2VkIGJ5IEFjcXVpcmVFeGVjdXRv ckxvY2tzKCkuCisKIEVhY2ggUGxhbiBub2RlIG1heSBoYXZlIGV4cHJlc3Npb24gdHJlZXMgYXNz b2NpYXRlZCB3aXRoIGl0LCB0byByZXByZXNlbnQKIGl0cyB0YXJnZXQgbGlzdCwgcXVhbGlmaWNh dGlvbiBjb25kaXRpb25zLCBldGMuICBUaGVzZSB0cmVlcyBhcmUgYWxzbwogcmVhZC1vbmx5IHRv IHRoZSBleGVjdXRvciwgYnV0IHRoZSBleGVjdXRvciBzdGF0ZSBmb3IgZXhwcmVzc2lvbiBldmFs dWF0aW9uCkBAIC0yODYsNiArMzE0LDEwIEBAIFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJvbCBGbG93 CiAKIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nl c3Npbmc6CiAKKyAgWyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcgXSAtLS0gYW4gb3B0aW9uYWwg c3RlcCB0byBwZXJmb3JtIGluaXRpYWwKKwkJcGFydGl0aW9uIHBydW5pbmcgb24gdGhlIHBsYW4g dHJlZSB0aGUgcmVzdWx0IG9mIHdoaWNoIGlzIHBhc3NlZAorCQl0byB0aGUgZXhlY3V0b3Igdmlh IFF1ZXJ5RGVzYworCiAJQ3JlYXRlUXVlcnlEZXNjCiAKIAlFeGVjdXRvclN0YXJ0CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwppbmRleCA3MmZjMjczNTI0Li40NTgyNDYyNGY4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9tYXR2aWV3 LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWNkZWJ1Zy5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRl ICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAj aW5jbHVkZSAiaml0L2ppdC5oIgpAQCAtMTA0LDYgKzEwNSw1NiBAQCBzdGF0aWMgdm9pZCBFdmFs UGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKIAogLyog ZW5kIG9mIGxvY2FsIGRlY2xzICovCiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjdXRvckRvSW5pdGlh bFBydW5pbmcKKyAqCisgKgkJRm9yIGVhY2ggcGxhbiB0cmVlIG5vZGUgdGhhdCBoYXMgYmVlbiBh c3NpZ25lZCBhIFBhcnRpdGlvblBydW5lSW5mbywKKyAqCQl0aGlzIHBlcmZvcm1zIGluaXRpYWwg cGFydGl0aW9uIHBydW5pbmcgdXNpbmcgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorICoJCXRo ZXJlaW4gdG8gZGV0ZXJtaW5lIHRoZSBzZXQgb2YgY2hpbGQgc3VicGxhbnMgdGhhdCBzYXRpc2Z5 IHRoZSBpbml0aWFsCisgKgkJcHJ1bmluZyBzdGVwcywgdG8gYmUgcmV0dXJuZWQgYXMgYSBiaXRt YXBzZXQgb2YgdGhlaXIgaW5kZXhlcyBpbiB0aGUKKyAqCQlub2RlJ3MgbGlzdCBvZiBjaGlsZCBz dWJwbGFucyAoZm9yIGV4YW1wbGUsIGFuIEFwcGVuZCdzIGFwcGVuZHBsYW5zKS4KKyAqCisgKiBS ZXR1cm4gdmFsdWUgaXMgYSBQYXJ0aXRpb25QcnVuZVJlc3VsdCBub2RlIHRoYXQgY29udGFpbnMg YSBsaXN0IG9mIHRob3NlCisgKiBiaXRtYXBzZXRzLCB3aXRoIG9uZSBlbGVtZW50IGZvciBldmVy eSBQYXJ0aXRpb25QcnVuZUluZm8sIGFuZCBhIGJpdG1hcHNldAorICogb2YgdGhlIFJUIGluZGV4 ZXMgb2YgYWxsIHRoZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9zZSBjaG9zZW4KKyAq IHN1YnBsYW5zLiAgTm90ZSB0aGF0IHRoZSBsYXR0ZXIgaXMgc2hhcmVkIGFjcm9zcyBhbGwgUGFy dGl0aW9uUHJ1bmVJbmZvcy4KKyAqCisgKiBUaGUgZXhlY3V0b3IgbXVzdCBzZWUgdGhlIGV4YWN0 bHkgc2FtZSBzZXQgb2Ygc3VicGxhbnMgYXMgdmFsaWQgZm9yCisgKiBleGVjdXRpb24gd2hlbiBk b2luZyBFeGVjSW5pdE5vZGUoKSBvbiB0aGUgcGxhbiBub2RlcyB3aG9zZQorICogUGFydGl0aW9u UHJ1bmVJbmZvcyBhcmUgcHJvY2Vzc2VkIGhlcmUuICBTbywgaXQgbXVzdCBnZXQgdGhlIHNldCBm cm9tIHRoZQorICogYWZvcmVtZW50aW9uZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQsIGluc3RlYWQg b2YgY29tcHV0aW5nIGl0IGFsbCBvdmVyCisgKiBhZ2FpbiBieSByZWRvaW5nIHRoZSBpbml0aWFs IHBydW5pbmcuICBJdCdzIHRoZSBjYWxsZXIncyBqb2IgdG8gcGFzcyB0aGUKKyAqIFBhcnRpdGlv blBydW5lUmVzdWx0IHRvIHRoZSBleGVjdXRvci4KKyAqCisgKiBOb3RlOiBQYXJ0aXRpb25lZCB0 YWJsZXMgbWVudGlvbmVkIGluIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzIHRoYXQKKyAq IGRyaXZlIHRoZSBwcnVuaW5nIHdpbGwgYmUgbG9ja2VkIGJlZm9yZSBkb2luZyB0aGUgcHJ1bmlu Zy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworUGFydGl0aW9uUHJ1bmVSZXN1bHQgKgorRXhlY3V0b3JEb0lu aXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJh bXMpCit7CisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnJlc3VsdDsKKwlMaXN0Q2VsbCAqbGM7CisK KwkvKiBPbmx5IGdldCBoZXJlIGlmIHRoZXJlIGlzIGFueSBwcnVuaW5nIHRvIGRvLiAqLworCUFz c2VydChwbGFubmVkc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZyk7CisKKwlyZXN1bHQgPSBt YWtlTm9kZShQYXJ0aXRpb25QcnVuZVJlc3VsdCk7CisJZm9yZWFjaChsYywgcGxhbm5lZHN0bXQt PnBhcnRQcnVuZUluZm9zKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBs Zmlyc3QobGMpOworCQlCaXRtYXBzZXQgKnZhbGlkX3N1YnBsYW5fb2ZmczsKKworCQl2YWxpZF9z dWJwbGFuX29mZnMgPQorCQkJRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcocGxhbm5lZHN0 bXQsIHBhcmFtcywgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCSAgJnJlc3VsdC0+c2Nhbl9sZWFmcGFy dF9ydGlzKTsKKwkJcmVzdWx0LT52YWxpZF9zdWJwbGFuX29mZnNfbGlzdCA9CisJCQlsYXBwZW5k KHJlc3VsdC0+dmFsaWRfc3VicGxhbl9vZmZzX2xpc3QsCisJCQkJCXZhbGlkX3N1YnBsYW5fb2Zm cyk7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWN1dG9y U3RhcnQKQEAgLTgwNiw2ICs4NTcsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKIHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlv bjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10Owor CVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IHF1ZXJ5RGVzYy0+cGFy dF9wcnVuZV9yZXN1bHQ7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsK IAlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAg KmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwpAQCAtODI2LDYgKzg3OCw3IEBAIEluaXRQbGFu KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJZXN0YXRlLT5lc19wbGFubmVk c3RtdCA9IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5u ZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0ID0g cGFydF9wcnVuZV9yZXN1bHQ7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFy ayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFyYWxsZWwuYwppbmRleCBmNzNiOGMyNjA3Li43ZTZkYWI1NjIzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFyYWxsZWwuYwpAQCAtNjYsNiArNjYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9L RVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQ QVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDkpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUw MDAwMDAwMDAwMDAwMEEpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05QUlVORVJFU1VM VAlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEIpCiAKICNkZWZpbmUgUEFSQUxMRUxfVFVQ TEVfUVVFVUVfU0laRQkJNjU1MzYKIApAQCAtMTgyLDYgKzE4Myw3IEBAIEV4ZWNTZXJpYWxpemVQ bGFuKFBsYW4gKnBsYW4sIEVTdGF0ZSAqZXN0YXRlKQogCXBzdG10LT50cmFuc2llbnRQbGFuID0g ZmFsc2U7CiAJcHN0bXQtPmRlcGVuZHNPblJvbGUgPSBmYWxzZTsKIAlwc3RtdC0+cGFyYWxsZWxN b2RlTmVlZGVkID0gZmFsc2U7CisJcHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcgPSBmYWxz ZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBwbGFuOwogCXBzdG10LT5wYXJ0UHJ1bmVJbmZvcyA9IGVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvczsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRlLT5lc19y YW5nZV90YWJsZTsKQEAgLTU5NywxMiArNTk5LDE1IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlGaXhlZFBhcmFsbGVsRXhlY3V0 b3JTdGF0ZSAqZnBlczsKIAljaGFyCSAgICpwc3RtdF9kYXRhOwogCWNoYXIJICAgKnBzdG10X3Nw YWNlOworCWNoYXIJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2RhdGE7CisJY2hhcgkgICAqcGFydF9w cnVuZV9yZXN1bHRfc3BhY2U7CiAJY2hhcgkgICAqcGFyYW1saXN0aW5mb19zcGFjZTsKIAlCdWZm ZXJVc2FnZSAqYnVmdXNhZ2Vfc3BhY2U7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2Vfc3BhY2U7CiAJ U2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJ U2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKIAlp bnQJCQlwc3RtdF9sZW47CisJaW50CQkJcGFydF9wcnVuZV9yZXN1bHRfbGVuOwogCWludAkJCXBh cmFtbGlzdGluZm9fbGVuOwogCWludAkJCWluc3RydW1lbnRhdGlvbl9sZW4gPSAwOwogCWludAkJ CWppdF9pbnN0cnVtZW50YXRpb25fbGVuID0gMDsKQEAgLTYzMSw2ICs2MzYsNyBAQCBFeGVjSW5p dFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAKIAkv KiBGaXggdXAgYW5kIHNlcmlhbGl6ZSBwbGFuIHRvIGJlIHNlbnQgdG8gd29ya2Vycy4gKi8KIAlw c3RtdF9kYXRhID0gRXhlY1NlcmlhbGl6ZVBsYW4ocGxhbnN0YXRlLT5wbGFuLCBlc3RhdGUpOwor CXBhcnRfcHJ1bmVfcmVzdWx0X2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRlLT5lc19wYXJ0X3By dW5lX3Jlc3VsdCk7CiAKIAkvKiBDcmVhdGUgYSBwYXJhbGxlbCBjb250ZXh0LiAqLwogCXBjeHQg PSBDcmVhdGVQYXJhbGxlbENvbnRleHQoInBvc3RncmVzIiwgIlBhcmFsbGVsUXVlcnlNYWluIiwg bndvcmtlcnMpOwpAQCAtNjU3LDYgKzY2MywxMSBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFu U3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVu aygmcGN4dC0+ZXN0aW1hdG9yLCBwc3RtdF9sZW4pOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygm cGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAorCS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVk IFBhcnRpdGlvblBydW5lUmVzdWx0LiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0X2xlbiA9IHN0cmxl bihwYXJ0X3BydW5lX3Jlc3VsdF9kYXRhKSArIDE7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm cGN4dC0+ZXN0aW1hdG9yLCBwYXJ0X3BydW5lX3Jlc3VsdF9sZW4pOworCXNobV90b2NfZXN0aW1h dGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwogCS8qIEVzdGltYXRlIHNwYWNlIGZvciBz ZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19sZW4gPSBFc3RpbWF0 ZVBhcmFtTGlzdFNwYWNlKGVzdGF0ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvKTsKIAlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcmFtbGlzdGluZm9fbGVuKTsKQEAgLTc1 MSw2ICs3NjIsMTIgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUs IEVTdGF0ZSAqZXN0YXRlLAogCW1lbWNweShwc3RtdF9zcGFjZSwgcHN0bXRfZGF0YSwgcHN0bXRf bGVuKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QTEFOTkVEU1RN VCwgcHN0bXRfc3BhY2UpOwogCisJLyogU3RvcmUgc2VyaWFsaXplZCBQYXJ0aXRpb25QcnVuZVJl c3VsdCAqLworCXBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0 LT50b2MsIHBhcnRfcHJ1bmVfcmVzdWx0X2xlbik7CisJbWVtY3B5KHBhcnRfcHJ1bmVfcmVzdWx0 X3NwYWNlLCBwYXJ0X3BydW5lX3Jlc3VsdF9kYXRhLCBwYXJ0X3BydW5lX3Jlc3VsdF9sZW4pOwor CXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTlBSVU5FUkVT VUxULAorCQkJCSAgIHBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlKTsKKwogCS8qIFN0b3JlIHNlcmlh bGl6ZWQgUGFyYW1MaXN0SW5mby4gKi8KIAlwYXJhbWxpc3RpbmZvX3NwYWNlID0gc2htX3RvY19h bGxvY2F0ZShwY3h0LT50b2MsIHBhcmFtbGlzdGluZm9fbGVuKTsKIAlzaG1fdG9jX2luc2VydChw Y3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBwYXJhbWxpc3RpbmZvX3NwYWNl KTsKQEAgLTEyMzIsOCArMTI0OSwxMCBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3Rv YyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCQkJCQkJIGludCBpbnN0cnVtZW50X29w dGlvbnMpCiB7CiAJY2hhcgkgICAqcHN0bXRzcGFjZTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jl c3VsdF9zcGFjZTsKIAljaGFyCSAgICpwYXJhbXNwYWNlOwogCVBsYW5uZWRTdG10ICpwc3RtdDsK KwlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQ7CiAJUGFyYW1MaXN0SW5m byBwYXJhbUxJOwogCWNoYXIJICAgKnF1ZXJ5U3RyaW5nOwogCkBAIC0xMjQ0LDEyICsxMjYzLDE4 IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAq cmVjZWl2ZXIsCiAJcHN0bXRzcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1BMQU5ORURTVE1ULCBmYWxzZSk7CiAJcHN0bXQgPSAoUGxhbm5lZFN0bXQgKikgc3RyaW5nVG9O b2RlKHBzdG10c3BhY2UpOwogCisJLyogUmVjb25zdHJ1Y3QgbGVhZGVyLXN1cHBsaWVkIFBhcnRp dGlvblBydW5lUmVzdWx0LiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlID0KKwkJc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSVElUSU9OUFJVTkVSRVNVTFQsIGZhbHNlKTsK KwlwYXJ0X3BydW5lX3Jlc3VsdCA9IChQYXJ0aXRpb25QcnVuZVJlc3VsdCAqKQorCQlzdHJpbmdU b05vZGUocGFydF9wcnVuZV9yZXN1bHRfc3BhY2UpOworCiAJLyogUmVjb25zdHJ1Y3QgUGFyYW1M aXN0SW5mby4gKi8KIAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9L RVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZw YXJhbXNwYWNlKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLwot CXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhw c3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAg IEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVy LCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5jCmluZGV4IGI1NWNkZDI1ODAuLjI0ZTZmNmU5ODggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJtYi9wZ193 Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5j cy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgogI2lu Y2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCIKQEAgLTE4NSw3ICsxODYsMTEgQEAgc3Rh dGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQYXJ0aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlvbiBy ZWwsCiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAqY29sbm9zLCBS ZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0 aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKTsKIHN0 YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pOworCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJ CQkJCQkJCQkJCQkJICBib29sIGNvbnNpZGVyX2luaXRpYWxfc3RlcHMsCisJCQkJCQkJCQkJCQkJ ICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkJCQkJCQkJICBMaXN0ICpydGFibGUs IEV4cHJDb250ZXh0ICplY29udGV4dCwKKwkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvbkRpcmVjdG9y eSBwYXJ0ZGlyKTsKIHN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0 aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBz LAogCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNjIHBhcnRkZXNjLApAQCAtMTk4LDcgKzIwMyw4IEBA IHN0YXRpYyB2b2lkIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0aXRpb25QcnVuZVN0 YXRlICpwcnVuZXN0YXRlLAogc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1 cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAgUGFydGl0 aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9w cnVuZSwKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKTsKKwkJCQkJCQkJ CQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAq KnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAogLyoKQEAgLTE1OTMsOCArMTU5OSwxMCBAQCBhZGp1 c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRy TWFwKQogICogY29uc2lkZXJlZCB0byBiZSBhIHN0YWJsZSBleHByZXNzaW9uLCBpdCBjYW4gY2hh bmdlIHZhbHVlIGZyb20gb25lIHBsYW4KICAqIG5vZGUgc2NhbiB0byB0aGUgbmV4dCBkdXJpbmcg cXVlcnkgZXhlY3V0aW9uLiAgU3RhYmxlIGNvbXBhcmlzb24KICAqIGV4cHJlc3Npb25zIHRoYXQg ZG9uJ3QgaW52b2x2ZSBzdWNoIFBhcmFtcyBhbGxvdyBwYXJ0aXRpb24gcHJ1bmluZyB0byBiZQot ICogZG9uZSBvbmNlIGR1cmluZyBleGVjdXRvciBzdGFydHVwLiAgRXhwcmVzc2lvbnMgdGhhdCBk byBpbnZvbHZlIHN1Y2ggUGFyYW1zCi0gKiByZXF1aXJlIHVzIHRvIHBydW5lIHNlcGFyYXRlbHkg Zm9yIGVhY2ggc2NhbiBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZS4KKyAqIGRvbmUgb25jZSBkdXJp bmcgZXhlY3V0b3Igc3RhcnR1cCBvciBkdXJpbmcgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkg dGhhdAorICogcnVucyBhcyBwYXJ0IG9mIHBlcmZvcm1pbmcgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSBvbiBhIGdpdmVuIHBsYW4gdHJlZS4KKyAqIEV4cHJlc3Npb25zIHRoYXQgZG8gaW52b2x2ZSBz dWNoIFBhcmFtcyByZXF1aXJlIHVzIHRvIHBydW5lIHNlcGFyYXRlbHkgZm9yCisgKiBlYWNoIHNj YW4gb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUuCiAgKgogICogTm90ZSB0aGF0IHBydW5pbmcgYXdh eSB1bm5lZWRlZCBzdWJwbGFucyBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCBoYXMgdGhlCiAgKiBh ZGRlZCBiZW5lZml0IG9mIG5vdCBoYXZpbmcgdG8gaW5pdGlhbGl6ZSB0aGUgdW5uZWVkZWQgc3Vi cGxhbnMgYXQgYWxsLgpAQCAtMTYxMSw2ICsxNjE5LDEzIEBAIGFkanVzdF9wYXJ0aXRpb25fY29s bm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgkJYWNjb3Vu dCBmb3IgaW5pdGlhbCBwcnVuaW5nIHBvc3NpYmx5IGhhdmluZyBlbGltaW5hdGVkIHNvbWUgb2Yg dGhlCiAgKgkJc3VicGxhbnMuCiAgKgorICogRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmc6 CisgKgkJRG8gaW5pdGlhbCBwcnVuaW5nIHdpdGggdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBp biBhIGdpdmVuCisgKgkJUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVybWluZSB0aGUgbWluaW1h bCBzZXQgb2YgY2hpbGQgc3VicGxhbnMKKyAqCQl0byBiZSBleGVjdXRlZCBvZiB0aGUgcGFyZW50 IHBsYW4gbm9kZSB0byB3aGljaCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvCisgKgkJYmVsb25ncyBh bmQgYWxzbyB0aGUgc2V0IG9mIHRoZSBSVCBpbmRleGVzIG9mIGxlYWYgcGFydGl0aW9ucyB0aGF0 IHdpbGwKKyAqCQliZSBzY2FubmVkIHdpdGggdGhvc2Ugc3VicGxhbnMuCisgKgogICogRXhlY0Zp bmRNYXRjaGluZ1N1YlBsYW5zOgogICoJCVJldHVybnMgaW5kZXhlcyBvZiBtYXRjaGluZyBzdWJw bGFucyBhZnRlciBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucwogICoJCXRoYXQgYXJlIHNhZmUg dG8gZXZhbHVhdGUgYXQgYSBnaXZlbiBwb2ludC4gIFRoaXMgZnVuY3Rpb24gaXMgZmlyc3QKQEAg LTE2MjgsOCArMTY0Myw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0 ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hp bGQgc3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVu dCBwbGFuIG5vZGUuCi0gKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVl ZGVkIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKLSAqIHN1cnZpdmluZyBzdWJwbGFucycgaW5k ZXhlcyBhcmUgYWRkZWQuCisgKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYg bmVlZGVkICh1bmxlc3MgaXQgaGFzIGFscmVhZHkgYmVlbiBkb25lCisgKiBieSBFeGVjdXRvckRv SW5pdGlhbFBydW5pbmcoKSksIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUgc3Vydml2aW5nCisg KiBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRkZWQuCiAgKgogICogSWYgc3VicGxhbnMgYXJlIGlu ZGVlZCBwcnVuZWQsIHN1YnBsYW5fbWFwIGFycmF5cyBjb250YWluZWQgaW4gdGhlIHJldHVybmVk CiAgKiBQYXJ0aXRpb25QcnVuZVN0YXRlIGFyZSByZS1zZXF1ZW5jZWQgdG8gbm90IGNvdW50IHRo b3NlLCB0aG91Z2ggb25seSBpZiB0aGUKQEAgLTE2NDUsMjQgKzE2NjEsNTkgQEAgRXhlY0luaXRQ YXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCUVTdGF0ZQkgICAqZXN0YXRl ID0gcGxhbnN0YXRlLT5zdGF0ZTsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxp c3RfbnRoKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywKIAkJCQkJCQkJCQkJIHBhcnRfcHJ1 bmVfaW5kZXgpOworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwcnVuZXJlc3VsdCA9IGVzdGF0ZS0+ ZXNfcGFydF9wcnVuZV9yZXN1bHQ7CisJYm9vbAlkb19wcnVuaW5nID0gKHBydW5laW5mby0+bmVl ZHNfaW5pdF9wcnVuaW5nIHx8CisJCQkJCQkgIHBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5n KTsKIAotCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBw YXJ0aXRpb24gZXhwcnMgKi8KLQlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3Rh dGUpOworCS8qCisJICogTm8gbmVlZCB0byBkbyBpbml0aWFsIHBydW5pbmcgaWYgaXQgd2FzIGRv bmUgYWxyZWFkeSBieQorCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpdCB3 b3VsZCBiZSBpZiBlc19wYXJ0X3BydW5lX3Jlc3VsdAorCSAqIGhhcyBiZWVuIHNldC4KKwkgKi8K KwlpZiAocHJ1bmVyZXN1bHQpCisJCWRvX3BydW5pbmcgPSBwcnVuZWluZm8tPm5lZWRzX2V4ZWNf cHJ1bmluZzsKIAotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1 bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKHBsYW5zdGF0 ZSwgcHJ1bmVpbmZvKTsKKwlwcnVuZXN0YXRlID0gTlVMTDsKKwlpZiAoZG9fcHJ1bmluZykKKwl7 CisJCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0 aXRpb24gZXhwcnMgKi8KKwkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRl KTsKKworCQkvKiBGb3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdheXMgb21pdHMgZGV0YWNo ZWQgcGFydGl0aW9ucyAqLworCQlpZiAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09 IE5VTEwpCisJCQllc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPQorCQkJCUNyZWF0ZVBh cnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1ZXJ5X2N4dCwgZmFsc2UpOworCisJCS8qCisJ CSAqIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZy4gIE5vIG5l ZWQgdG8gY29uc2lkZXIKKwkJICogaW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGlmIHdlIGhhdmUgYSBQ YXJ0aXRpb25QcnVuZVJlc3VsdC4KKwkJICovCisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkgICBwcnVuZXJl c3VsdCA9PSBOVUxMLCB0cnVlLAorCQkJCQkJCQkJCQkgICBOSUwsIHBsYW5zdGF0ZS0+cHNfRXhw ckNvbnRleHQsCisJCQkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSk7 CisJfQogCiAJLyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3Ms IGlmIHJlcXVpcmVkLgogCSAqLwotCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQot CQkqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBy dW5lc3RhdGUsIHRydWUpOworCWlmIChwcnVuZXJlc3VsdCkKKwl7CisJCSppbml0aWFsbHlfdmFs aWRfc3VicGxhbnMgPQorCQkJbGlzdF9udGgocHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zm c19saXN0LCBwYXJ0X3BydW5lX2luZGV4KTsKKwl9CisJZWxzZSBpZiAocHJ1bmVzdGF0ZSAmJiBw cnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJw bGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJ CQkJCQkJCQkJIE5VTEwpOworCX0KIAllbHNlCiAJewogCQkvKiBObyBwcnVuaW5nLCBzbyB3ZSds bCBuZWVkIHRvIGluaXRpYWxpemUgYWxsIHN1YnBsYW5zICovCiAJCUFzc2VydChuX3RvdGFsX3N1 YnBsYW5zID4gMCk7CiAJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3Jhbmdl KE5VTEwsIDAsCiAJCQkJCQkJCQkJCQkgIG5fdG90YWxfc3VicGxhbnMgLSAxKTsKKwkJcmV0dXJu IHBydW5lc3RhdGU7CiAJfQogCiAJLyoKQEAgLTE2NzAsNyArMTcyMSw4IEBAIEV4ZWNJbml0UGFy dGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiB0aGF0IHdlcmUgcmVtb3Zl ZCBhYm92ZSBkdWUgdG8gaW5pdGlhbCBwcnVuaW5nLiAgTm8gbmVlZCB0byBkbyB0aGlzIGlmCiAJ ICogbm8gc3RlcHMgd2VyZSByZW1vdmVkLgogCSAqLwotCWlmIChibXNfbnVtX21lbWJlcnMoKmlu aXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBsYW5zKQorCWlmIChwcnVuZXN0 YXRlICYmCisJCWJtc19udW1fbWVtYmVycygqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKSA8IG5f dG90YWxfc3VicGxhbnMpCiAJewogCQkvKgogCQkgKiBXZSBjYW4gc2FmZWx5IHNraXAgdGhpcyB3 aGVuICFkb19leGVjX3BydW5lLCBldmVuIHRob3VnaCB0aGF0CkBAIC0xNjg2LDExICsxNzM4LDcz IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlyZXR1 cm4gcHJ1bmVzdGF0ZTsKIH0KIAorLyoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5n CisgKgkJUGVyZm9ybSBpbml0aWFsIHBydW5pbmcgdXNpbmcgZ2l2ZW4gUGFydGl0aW9uUHJ1bmVJ bmZvIHRvIGRldGVybWluZQorICoJCXRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0 aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYW5kIGFsc28gdGhlCisgKgkJc2V0IG9mIFJUIGluZGV4ZXMg b2YgdGhlIGxlYWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5IHRob3NlIHN1YnBsYW5zLgorICovCitC aXRtYXBzZXQgKgorRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQkgIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCSAgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlz KQoreworCUxpc3QJCSAqcnRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKKwlFeHByQ29udGV4 dAkgKmVjb250ZXh0OworCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGlyOworCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dCwKKwkJCQkgIHRtcGNvbnRleHQ7CisJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1 bmVzdGF0ZTsKKwlCaXRtYXBzZXQJICp2YWxpZF9zdWJwbGFuX29mZnM7CisKKwkvKgorCSAqIEEg dGVtcG9yYXJ5IGNvbnRleHQgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyByZXF1aXJlZCB3aGlsZSBl eGVjdXRpbmcKKwkgKiBwYXJ0aXRpb24gcHJ1bmluZyBzdGVwcy4KKwkgKi8KKwl0bXBjb250ZXh0 ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJ ICAgImluaXRpYWwgcHJ1bmluZyB3b3JraW5nIGRhdGEiLAorCQkJCQkJCQkJICAgQUxMT0NTRVRf REVGQVVMVF9TSVpFUyk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0bXBj b250ZXh0KTsKKworCS8qCisJICogUGFydGl0aW9uRGlyZWN0b3J5IHRvIGxvb2sgdXAgcGFydGl0 aW9uIGRlc2NyaXB0b3JzLCB3aGljaCBvbWl0cworCSAqIGRldGFjaGVkIHBhcnRpdGlvbnMsIGp1 c3QgbGlrZSBpbiB0aGUgZXhlY3V0b3IgcHJvcGVyLgorCSAqLworCXBkaXIgPSBDcmVhdGVQYXJ0 aXRpb25EaXJlY3RvcnkoQ3VycmVudE1lbW9yeUNvbnRleHQsIGZhbHNlKTsKKworCS8qCisJICog V2UgZG9uJ3QgeWV0IGhhdmUgYSBQbGFuU3RhdGUgZm9yIHRoZSBwYXJlbnQgcGxhbiBub2RlLCBz byB3ZSBtdXN0CisJICogY3JlYXRlIGEgc3RhbmRhbG9uZSBFeHByQ29udGV4dCB0byBldmFsdWF0 ZSBwcnVuaW5nIGV4cHJlc3Npb25zLAorCSAqIGVxdWlwcGVkIHdpdGggdGhlIGluZm9ybWF0aW9u IGFib3V0IHRoZSBFWFRFUk4gcGFyYW1ldGVycyB0aGF0IHRoZQorCSAqIGNhbGxlciBwYXNzZWQg dXMuICBOb3RlIHRoYXQgdGhhdCdzIG9rYXkgYmVjYXVzZSB0aGUgaW5pdGlhbCBwcnVuaW5nCisJ ICogc3RlcHMgZG8gbm90IGNvbnRhaW4gYW55dGhpbmcgdGhhdCByZXF1aXJlcyB0aGUgZXhlY3V0 aW9uIHRvIGhhdmUKKwkgKiBzdGFydGVkLgorCSAqLworCWVjb250ZXh0ID0gQ3JlYXRlU3RhbmRh bG9uZUV4cHJDb250ZXh0KCk7CisJZWNvbnRleHQtPmVjeHRfcGFyYW1fbGlzdF9pbmZvID0gcGFy YW1zOworCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKE5VTEwsIHBydW5l aW5mbywgdHJ1ZSwgZmFsc2UsCisJCQkJCQkJCQkJICAgcnRhYmxlLCBlY29udGV4dCwgcGRpcik7 CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogRG8gdGhlIGluaXRp YWwgcHJ1bmluZy4gKi8KKwl2YWxpZF9zdWJwbGFuX29mZnMgPSBFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFydF9ydGlz KTsKKworCUZyZWVFeHByQ29udGV4dChlY29udGV4dCwgdHJ1ZSk7CisJRGVzdHJveVBhcnRpdGlv bkRpcmVjdG9yeShwZGlyKTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHRtcGNvbnRleHQpOworCisJ cmV0dXJuIHZhbGlkX3N1YnBsYW5fb2ZmczsKK30KKwogLyoKICAqIENyZWF0ZVBhcnRpdGlvblBy dW5lU3RhdGUKICAqCQlCdWlsZCB0aGUgZGF0YSBzdHJ1Y3R1cmUgcmVxdWlyZWQgZm9yIGNhbGxp bmcgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAgKgotICogJ3BsYW5zdGF0ZScgaXMgdGhlIHBh cmVudCBwbGFuIG5vZGUncyBleGVjdXRpb24gc3RhdGUuCisgKiAncGxhbnN0YXRlJywgaWYgbm90 IE5VTEwsIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLiAgSXQKKyAq IGNhbiBiZSBOVUxMIGlmIGJlaW5nIGNhbGxlZCBiZWZvcmUgRXhlY3V0b3JTdGFydCgpLCBpbiB3 aGljaCBjYXNlLAorICogJ3J0YWJsZScgKHJhbmdlIHRhYmxlKSwgJ2Vjb250ZXh0JywgYW5kICdw YXJ0ZGlyJyBtdXN0IGJlIGV4cGxpY2l0bHkKKyAqIHByb3ZpZGVkLgogICoKICAqICdwcnVuZWlu Zm8nIGlzIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGFzIGdlbmVyYXRlZCBieQogICogbWFrZV9wYXJ0 aXRpb25fcHJ1bmVpbmZvLiAgSGVyZSB3ZSBidWlsZCBhIFBhcnRpdGlvblBydW5lU3RhdGUgY29u dGFpbmluZyBhCkBAIC0xNzA0LDE5ICsxODE4LDIxIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmlu ZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvLgogICov CiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKK0Ny ZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCisJCQkJCQkgIFBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJICBib29sIGNvbnNpZGVyX2luaXRp YWxfc3RlcHMsCisJCQkJCQkgIGJvb2wgY29uc2lkZXJfZXhlY19zdGVwcywKKwkJCQkJCSAgTGlz dCAqcnRhYmxlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkgIFBhcnRpdGlvbkRpcmVj dG9yeSBwYXJ0ZGlyKQogewotCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5zdGF0ZTsK KwlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZSA/IHBsYW5zdGF0ZS0+c3RhdGUgOiBOVUxM OwogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJh cmNoaWVzOwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7Ci0JRXhwckNvbnRleHQgKmVjb250 ZXh0ID0gcGxhbnN0YXRlLT5wc19FeHByQ29udGV4dDsKIAotCS8qIEZvciBkYXRhIHJlYWRpbmcs IGV4ZWN1dG9yIGFsd2F5cyBvbWl0cyBkZXRhY2hlZCBwYXJ0aXRpb25zICovCi0JaWYgKGVzdGF0 ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9PSBOVUxMKQotCQllc3RhdGUtPmVzX3BhcnRpdGlv bl9kaXJlY3RvcnkgPQotCQkJQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KGVzdGF0ZS0+ZXNfcXVl cnlfY3h0LCBmYWxzZSk7CisJQXNzZXJ0KChlc3RhdGUgIT0gTlVMTCkgfHwKKwkJCShwYXJ0ZGly ICE9IE5VTEwgJiYgZWNvbnRleHQgIT0gTlVMTCAmJiBydGFibGUgIT0gTklMKSk7CiAKIAluX3Bh cnRfaGllcmFyY2hpZXMgPSBsaXN0X2xlbmd0aChwcnVuZWluZm8tPnBydW5lX2luZm9zKTsKIAlB c3NlcnQobl9wYXJ0X2hpZXJhcmNoaWVzID4gMCk7CkBAIC0xNzcxLDE1ICsxODg3LDQyIEBAIENy ZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBy dW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJUGFydGl0aW9uS2V5IHBhcnRrZXk7CiAKIAkJCS8qCi0J CQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29waWVzIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdz IHBhcnRpdGlvbgotCQkJICoga2V5IGFuZCBwYXJ0aXRpb24gZGVzY3JpcHRvciBhcHBlYXJpbmcg aW4gaXRzIHJlbGNhY2hlIGVudHJ5LAotCQkJICogYmVjYXVzZSB0aGF0IGVudHJ5IHdpbGwgYmUg aGVsZCBvcGVuIGFuZCBsb2NrZWQgZm9yIHRoZQotCQkJICogZHVyYXRpb24gb2YgdGhpcyBleGVj dXRvciBydW4uCisJCQkgKiBNdXN0IG9wZW4gdGhlIHJlbGF0aW9uIGJ5IG91cnNlbHZlcyB3aGVu IGNhbGxlZCBiZWZvcmUgdGhlCisJCQkgKiBleGVjdXRpb24gaGFzIHN0YXJ0ZWQsIHN1Y2ggYXMs IHdoZW4gY2FsbGVkIGR1cmluZworCQkJICogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgb24g YSBjYWNoZWQgcGxhbi4gIEluIHRoYXQgY2FzZSwKKwkJCSAqIHN1Yi1wYXJ0aXRpb25zIG11c3Qg YmUgbG9ja2VkLCBiZWNhdXNlIEFjcXVpcmVQbGFubmVyTG9ja3MoKQorCQkJICogd291bGQgbm90 IGhhdmUgc2VlbiB0aGVtLiAoMXN0IHJlbGF0aW9uIGluIGEgcGFydHJlbHBydW5laW5mb3MKKwkJ CSAqIGxpc3QgaXMgYWx3YXlzIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcmluZyBp biB0aGUKKwkJCSAqIHF1ZXJ5LCB3aGljaCBBY3F1aXJlUGxhbm5lckxvY2tzKCkgd291bGQgaGF2 ZSBsb2NrZWQ7IHRoZQorCQkJICogQXNzZXJ0IGluIHJlbGF0aW9uX29wZW4oKSBndWFyZHMgdGhh dCBhc3N1bXB0aW9uLikKKwkJCSAqLworCQkJaWYgKGVzdGF0ZSA9PSBOVUxMKQorCQkJeworCQkJ CVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJ0X2ZldGNoKHBpbmZvLT5ydGluZGV4LCBydGFibGUpOwor CQkJCWludAkJbG9ja21vZGUgPSAoaiA9PSAwKSA/IE5vTG9jayA6IHJ0ZS0+cmVsbG9ja21vZGU7 CisKKwkJCQlwYXJ0cmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBsb2NrbW9kZSk7CisJCQl9 CisJCQllbHNlCisJCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRl LCBwaW5mby0+cnRpbmRleCk7CisKKwkJCS8qCisJCQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29w eSBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KKwkJCSAqIGtleSBmcm9tIGlu IGl0cyByZWxjYWNoZSBlbnRyeSwgYmVjYXVzZSBpdCBjYW4ndCBjaGFuZ2UgKG9yCisJCQkgKiBn ZXQgZGVzdHJveWVkKSBhcyBsb25nIGFzIHRoZSByZWxhdGlvbiBpcyBsb2NrZWQuICBQYXJ0aXRp b24KKwkJCSAqIGRlc2NyaXB0b3IgaXMgdGFrZW4gZnJvbSB0aGUgUGFydGl0aW9uRGlyZWN0b3J5 IGFzc29jaWF0ZWQgd2l0aAorCQkJICogdGhlIHRhYmxlIHRoYXQgaXMgaGVsZCBvcGVuIGxvbmcg ZW5vdWdoIGZvciB0aGUgZGVzY3JpcHRvciB0bworCQkJICogcmVtYWluIHZhbGlkIHdoaWxlIGl0 J3MgdXNlZCB0byBwZXJmb3JtIHRoZSBwcnVuaW5nIHN0ZXBzLgogCQkJICovCi0JCQlwYXJ0cmVs ID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKIAkJ CXBhcnRrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVsKTsKLQkJCXBhcnRkZXNj ID0gUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9y eSwKLQkJCQkJCQkJCQkJCXBhcnRyZWwpOworCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3Rv cnlMb29rdXAocGFydGRpciwgcGFydHJlbCk7CisKKwkJCS8qCisJCQkgKiBNdXN0IGNsb3NlIHBh cnRyZWwsIGtlZXBpbmcgdGhlIGxvY2sgdGFrZW4sIGlmIHdlJ3JlIG5vdCB1c2luZworCQkJICog RVN0YXRlJ3MgZW50cnkuCisJCQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCQl0YWJs ZV9jbG9zZShwYXJ0cmVsLCBOb0xvY2spOwogCiAJCQkvKgogCQkJICogSW5pdGlhbGl6ZSB0aGUg c3VicGxhbl9tYXAgYW5kIHN1YnBhcnRfbWFwLgpAQCAtMTc5Myw2ICsxOTM2LDcgQEAgQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8pCiAJCQlBc3NlcnQocGFydGRlc2MtPm5wYXJ0cyA+PSBwaW5mby0+bnBh cnRzKTsKIAkJCXBwcnVuZS0+bnBhcnRzID0gcGFydGRlc2MtPm5wYXJ0czsKIAkJCXBwcnVuZS0+ c3VicGxhbl9tYXAgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKTsKKwkJ CXBwcnVuZS0+cnRpX21hcCA9IHBhbGxvYyhzaXplb2YoSW5kZXgpICogcGFydGRlc2MtPm5wYXJ0 cyk7CiAJCQlpZiAocGFydGRlc2MtPm5wYXJ0cyA9PSBwaW5mby0+bnBhcnRzKQogCQkJewogCQkJ CS8qCkBAIC0xODAzLDYgKzE5NDcsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlwcHJ1 bmUtPnN1YnBhcnRfbWFwID0gcGluZm8tPnN1YnBhcnRfbWFwOwogCQkJCW1lbWNweShwcHJ1bmUt PnN1YnBsYW5fbWFwLCBwaW5mby0+c3VicGxhbl9tYXAsCiAJCQkJCSAgIHNpemVvZihpbnQpICog cGluZm8tPm5wYXJ0cyk7CisJCQkJbWVtY3B5KHBwcnVuZS0+cnRpX21hcCwgcGluZm8tPnJ0aV9t YXAsCisJCQkJCSAgIHNpemVvZihpbnQpICogcGluZm8tPm5wYXJ0cyk7CiAKIAkJCQkvKgogCQkJ CSAqIERvdWJsZS1jaGVjayB0aGF0IHRoZSBsaXN0IG9mIHVucHJ1bmVkIHJlbGF0aW9ucyBoYXMg bm90CkBAIC0xODUzLDYgKzE5OTksOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkJCQlw aW5mby0+c3VicGxhbl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFydF9tYXBbcHBf aWR4XSA9CiAJCQkJCQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJCQlwcHJ1bmUt PnJ0aV9tYXBbcHBfaWR4XSA9CisJCQkJCQkJcGluZm8tPnJ0aV9tYXBbcGRfaWR4XTsKIAkJCQkJ CXBkX2lkeCsrOwogCQkJCQl9CiAJCQkJCWVsc2UKQEAgLTE4NjAsNiArMjAwOCw3IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvKQogCQkJCQkJLyogdGhpcyBwYXJ0ZGVzYyBlbnRyeSBpcyBub3QgaW4g dGhlIHBsYW4gKi8KIAkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbcHBfaWR4XSA9IC0xOwogCQkJ CQkJcHBydW5lLT5zdWJwYXJ0X21hcFtwcF9pZHhdID0gLTE7CisJCQkJCQlwcHJ1bmUtPnJ0aV9t YXBbcHBfaWR4XSA9IDA7CiAJCQkJCX0KIAkJCQl9CiAKQEAgLTE4ODEsNyArMjAzMCw3IEBAIENy ZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBy dW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJICogSW5pdGlhbGl6ZSBwcnVuaW5nIGNvbnRleHRzIGFz IG5lZWRlZC4KIAkJCSAqLwogCQkJcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgPSBwaW5m by0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZvLT5pbml0aWFsX3BydW5pbmdf c3RlcHMpCisJCQlpZiAoY29uc2lkZXJfaW5pdGlhbF9zdGVwcyAmJiBwaW5mby0+aW5pdGlhbF9w cnVuaW5nX3N0ZXBzKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVu ZS0+aW5pdGlhbF9jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19z dGVwcywKQEAgLTE4OTEsNyArMjA0MCw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxh blN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJCXBy dW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUgPSB0cnVlOwogCQkJfQogCQkJcHBydW5lLT5leGVj X3BydW5pbmdfc3RlcHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZv LT5leGVjX3BydW5pbmdfc3RlcHMpCisJCQlpZiAoY29uc2lkZXJfZXhlY19zdGVwcyAmJiBwaW5m by0+ZXhlY19wcnVuaW5nX3N0ZXBzKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRl eHQoJnBwcnVuZS0+ZXhlY19jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmV4ZWNfcHJ1bmlu Z19zdGVwcywKQEAgLTIxMTksMTAgKzIyNjgsMTQgQEAgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFu TWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBQYXNzIGluaXRpYWxfcHJ1 bmUgaWYgUEFSQU1fRVhFQyBQYXJhbXMgY2Fubm90IHlldCBiZSBldmFsdWF0ZWQuICBUaGlzCiAg KiBkaWZmZXJlbnRpYXRlcyB0aGUgaW5pdGlhbCBleGVjdXRvci10aW1lIHBydW5pbmcgc3RlcCBm cm9tIGxhdGVyCiAgKiBydW50aW1lIHBydW5pbmcuCisgKgorICogUlQgaW5kZXhlcyBvZiBsZWFm IHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aGUgY2hvc2VuIHN1YnBsYW5zIGFyZSBhZGRlZCB0bwor ICogKnNjYW5fbGVhZnBhcnRfcnRpcyBpZiB0aGUgcG9pbnRlciBpcyBub24tTlVMTC4KICAqLwog Qml0bWFwc2V0ICoKIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRl ICpwcnVuZXN0YXRlLAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBib29sIGlu aXRpYWxfcHJ1bmUsCisJCQkJCQkgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKQogewog CUJpdG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpA QCAtMjE1Nyw3ICsyMzEwLDcgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBy dW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJCSAqLwogCQlwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0 cmVscHJ1bmVkYXRhWzBdOwogCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVk YXRhLCBwcHJ1bmUsIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkgICAmcmVzdWx0KTsKKwkJCQkJ CQkJCSAgICZyZXN1bHQsIHNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAkJLyogRXhwcmVzc2lvbiBl dmFsIG1heSBoYXZlIHVzZWQgc3BhY2UgaW4gRXhwckNvbnRleHQgdG9vICovCiAJCWlmIChwcHJ1 bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcykKQEAgLTIxNzEsNiArMjMyNCw4IEBAIEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCiAJLyogQ29w eSByZXN1bHQgb3V0IG9mIHRoZSB0ZW1wIGNvbnRleHQgYmVmb3JlIHdlIHJlc2V0IGl0ICovCiAJ cmVzdWx0ID0gYm1zX2NvcHkocmVzdWx0KTsKKwlpZiAoc2Nhbl9sZWFmcGFydF9ydGlzKQorCQkq c2Nhbl9sZWFmcGFydF9ydGlzID0gYm1zX2NvcHkoKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAlN ZW1vcnlDb250ZXh0UmVzZXQocHJ1bmVzdGF0ZS0+cHJ1bmVfY29udGV4dCk7CiAKQEAgLTIxODEs MTMgKzIzMzYsMTUgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3Rh dGUgKnBydW5lc3RhdGUsCiAgKiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UKICAqCQlS ZWN1cnNpdmUgd29ya2VyIGZ1bmN0aW9uIGZvciBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMKICAq Ci0gKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxpZHN1YnBs YW5zCisgKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxpZHN1 YnBsYW5zIGFuZCBSVCBpbmRleGVzIG9mCisgKiBvZiB0aGUgY29ycmVzcG9uZGluZyBsZWFmIHBh cnRpdGlvbnMgdG8gKnNjYW5fbGVhZnBhcnRfcnRpcyAoaWYgYXNrZWQgZm9yKS4KICAqLwogc3Rh dGljIHZvaWQKIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5n RGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBw cnVuZSwKIAkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJICAgQml0bWFwc2V0 ICoqdmFsaWRzdWJwbGFucykKKwkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAor CQkJCQkJCSAgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlCaXRtYXBzZXQg ICpwYXJ0c2V0OwogCWludAkJCWk7CkBAIC0yMjE0LDggKzIzNzEsMTQgQEAgZmluZF9tYXRjaGlu Z19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJd2hp bGUgKChpID0gYm1zX25leHRfbWVtYmVyKHBhcnRzZXQsIGkpKSA+PSAwKQogCXsKIAkJaWYgKHBw cnVuZS0+c3VicGxhbl9tYXBbaV0gPj0gMCkKKwkJewogCQkJKnZhbGlkc3VicGxhbnMgPSBibXNf YWRkX21lbWJlcigqdmFsaWRzdWJwbGFucywKIAkJCQkJCQkJCQkJcHBydW5lLT5zdWJwbGFuX21h cFtpXSk7CisJCQlBc3NlcnQocHBydW5lLT5ydGlfbWFwW2ldID4gMCk7CisJCQlpZiAoc2Nhbl9s ZWFmcGFydF9ydGlzKQorCQkJCSpzY2FuX2xlYWZwYXJ0X3J0aXMgPSBibXNfYWRkX21lbWJlcigq c2Nhbl9sZWFmcGFydF9ydGlzLAorCQkJCQkJCQkJCQkJCSBwcHJ1bmUtPnJ0aV9tYXBbaV0pOwor CQl9CiAJCWVsc2UKIAkJewogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVuZS0+c3VicGFydF9tYXBb aV07CkBAIC0yMjIzLDcgKzIzODYsOCBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2Uo UGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCWlmIChwYXJ0aWR4ID49IDApCiAJ CQkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwKIAkJCQkJCQkJCQkJ ICAgJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKLQkJCQkJCQkJCQkJICAg aW5pdGlhbF9wcnVuZSwgdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1 bmUsIHZhbGlkc3VicGxhbnMsCisJCQkJCQkJCQkJCSAgIHNjYW5fbGVhZnBhcnRfcnRpcyk7CiAJ CQllbHNlCiAJCQl7CiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1 bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggMDc2MjI2 ODY4Zi4uZWQzNTliNTE1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0Miw3ICs4 NDIsNyBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNh Y2hlUHRyIGZjYWNoZSkKIAllbHNlCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCi0JZXMtPnFk ID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LAorCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhl cy0+c3RtdCwgTlVMTCwKIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNu YXBzaG90KCksCiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBl bmQuYwppbmRleCBjNmY4NmE2NTEwLi45Njg4MGUxMjJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jCkBAIC0xNTUsNyArMTU1LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwgYXNf dmFsaWRfc3VicGxhbnMgaW1tZWRpYXRlbHksIHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2FsbHMg dG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRlLT5k b19leGVjX3BydW5lICYmIG5wbGFucyA+IDApCisJCWlmIChhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVf c3RhdGUgPT0gTlVMTCB8fAorCQkJKCFhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUtPmRvX2V4 ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkpCiAJCQlhcHBlbmRzdGF0ZS0+YXNfdmFsaWRfc3VicGxh bnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwogCX0KIAllbHNlCkBAIC01 NzcsNyArNTc4LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpu b2RlKQogCQl9CiAJCWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJ CQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z KG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJd2hpY2hwbGFuID0g LTE7CiAJfQpAQCAtNjQyLDcgKzY0Myw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX2xlYWRl cihBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5V TEwpCiAJCXsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkJ LyoKIAkJCSAqIE1hcmsgZWFjaCBpbnZhbGlkIHBsYW4gYXMgZmluaXNoZWQgdG8gYWxsb3cgdGhl IGxvb3AgYmVsb3cgdG8KQEAgLTcxNyw3ICs3MTgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zv cl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJZWxzZSBpZiAobm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnMgPT0gTlVMTCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhl Y0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7 CiAJCW1hcmtfaW52YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChub2RlKTsKIAl9CiAKQEAgLTg2 OCw3ICs4NjksNyBAQCBFeGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAqbm9kZSkKIAlp ZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9z dGF0ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5l X3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9k ZSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5k LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCA4ZDM1ODYw YzMwLi4yMzEyZTVhNjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpA QCAtMTAzLDcgKzEwMyw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCBt c192YWxpZF9zdWJwbGFucyBpbW1lZGlhdGVseSwgcHJldmVudGluZwogCQkgKiBsYXRlciBjYWxs cyB0byBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAqLwotCQlpZiAoIXBydW5lc3RhdGUt PmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKKwkJaWYgKG1lcmdlc3RhdGUtPm1zX3BydW5l X3N0YXRlID09IE5VTEwgfHwKKwkJCSghbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUtPmRvX2V4 ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkpCiAJCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFu cyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CiAJfQogCWVsc2UKQEAgLTIx OCw3ICsyMTksNyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqLwog CQlpZiAobm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJCW5vZGUtPm1zX3ZhbGlk X3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVf c3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1 bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJzdCB0aW1lIHRocm91Z2g6 IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJwbGFuLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YwppbmRleCAyOWJjMjY2NjliLi4zMDNhNTcyYzAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMTU3OCw2 ICsxNTc4LDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQ SVBsYW5QdHIgcGxhbiwKIAlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwogCUNhY2hlZFBs YW4gKmNwbGFuOwogCUxpc3QJICAgKnN0bXRfbGlzdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jl c3VsdF9saXN0OwogCWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAlTbmFwc2hvdAlzbmFwc2hvdDsK IAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CkBAIC0xNjU3LDcgKzE2NTgsMTAgQEAgU1BJX2N1 cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkg Ki8KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBm b3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEks IE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihw bGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJ ICAmcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5z dG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsK IAlzdG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJaWYgKCFwbGFuLT5zYXZlZCkKQEAg LTE2ODUsNiArMTY4OSw5IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpu YW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJCQkJCSAgc3RtdF9saXN0LAogCQkJCQkgIGNwbGFuKTsK IAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBvcnRhbCdzIGNvbnRl eHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9ydGFsLCBwYXJ0X3By dW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qCiAJICogU2V0IHVwIG9wdGlvbnMgZm9yIHBvcnRhbC4g IERlZmF1bHQgU0NST0xMIHR5cGUgaXMgY2hvc2VuIHRoZSBzYW1lIHdheQogCSAqIGFzIFBlcmZv cm1DdXJzb3JPcGVuIGRvZXMgaXQuCkBAIC0yMDkyLDcgKzIwOTksOCBAQCBTUElfcGxhbl9nZXRf Y2FjaGVkX3BsYW4oU1BJUGxhblB0ciBwbGFuKQogCS8qIEdldCB0aGUgZ2VuZXJpYyBwbGFuIGZv ciB0aGUgcXVlcnkgKi8KIAljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgTlVMTCwK IAkJCQkJCSAgcGxhbi0+c2F2ZWQgPyBDdXJyZW50UmVzb3VyY2VPd25lciA6IE5VTEwsCi0JCQkJ CQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCQkJCQkJICBfU1BJX2N1cnJlbnQtPnF1ZXJ5 RW52LAorCQkJCQkJICBOVUxMIC8qIE5vdCBpbnRlcmVzdGVkIGluIFBhcnRpdGlvblBydW5lUmVz dWx0cyAqLyk7CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2UtPmdwbGFuKTsKIAogCS8qIFBv cCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwpAQCAtMjQ3Myw3ICsyNDgxLDkgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAl7CiAJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxhblNv dXJjZSAqKSBsZmlyc3QobGMxKTsKIAkJTGlzdAkgICAqc3RtdF9saXN0OwotCQlMaXN0Q2VsbCAg ICpsYzI7CisJCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CisJCUxpc3RDZWxsICAg KmxjMiwKKwkJCQkgICAqbGMzOwogCiAJCXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJj ZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0yNTQ5LDggKzI1NTksMTAgQEAgX1NQSV9leGVjdXRlX3Bs YW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJ ICogcGxhbiwgdGhlIHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgog CQkgKi8KIAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFt cywKLQkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwotCisJCQkJ CQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJCSAmcGFydF9w cnVuZV9yZXN1bHRfbGlzdCk7CisJCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+c3RtdF9saXN0 KSA9PQorCQkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCQlzdG10 X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJCS8qCkBAIC0yNTg5LDkgKzI2MDEsMTAgQEAg X1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9u cyAqb3B0aW9ucywKIAkJCX0KIAkJfQogCi0JCWZvcmVhY2gobGMyLCBzdG10X2xpc3QpCisJCWZv cmJvdGgobGMyLCBzdG10X2xpc3QsIGxjMywgcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIAkJewog CQkJUGxhbm5lZFN0bXQgKnN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJ CVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IGxmaXJzdF9ub2RlKFBh cnRpdGlvblBydW5lUmVzdWx0LCBsYzMpOwogCQkJYm9vbAkJY2FuU2V0VGFnID0gc3RtdC0+Y2Fu U2V0VGFnOwogCQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNjYzLDcgKzI2NzYsNyBAQCBf U1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25z ICpvcHRpb25zLAogCQkJCWVsc2UKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAotCQkJ CXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURl c2Moc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlf c3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJ ZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggYmVlNjJmYzE1Yy4uZTc4ODZhZmEzNSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTE1OCw2ICsxNTgsMTEgQEAKIAl0b2tlbiA9IHBnX3N0cnRv aygmbGVuZ3RoKTsJCS8qIHNraXAgOmZsZG5hbWUgKi8gXAogCWxvY2FsX25vZGUtPmZsZG5hbWUg PSByZWFkSW50Q29scyhsZW4pCiAKKy8qIFJlYWQgYW4gSW5kZXggYXJyYXkgKi8KKyNkZWZpbmUg UkVBRF9JTkRFWF9BUlJBWShmbGRuYW1lLCBsZW4pIFwKKwl0b2tlbiA9IHBnX3N0cnRvaygmbGVu Z3RoKTsJCS8qIHNraXAgOmZsZG5hbWUgKi8gXAorCWxvY2FsX25vZGUtPmZsZG5hbWUgPSByZWFk SW5kZXhDb2xzKGxlbikKKwogLyogUmVhZCBhIGJvb2wgYXJyYXkgKi8KICNkZWZpbmUgUkVBRF9C T09MX0FSUkFZKGZsZG5hbWUsIGxlbikgXAogCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJ Lyogc2tpcCA6ZmxkbmFtZSAqLyBcCkBAIC01NDIsNyArNTQ3LDYgQEAgZm5uYW1lKGludCBudW1D b2xzKSBcCiAgKi8KIFJFQURfU0NBTEFSX0FSUkFZKHJlYWRBdHRyTnVtYmVyQ29scywgaW50MTYs IGF0b2kpCiBSRUFEX1NDQUxBUl9BUlJBWShyZWFkT2lkQ29scywgT2lkLCBhdG9vaWQpCi0vKiBv dXRmdW5jcy5jIGhhcyB3cml0ZUluZGV4Q29scywgYnV0IHdlIGRvbid0IHlldCBuZWVkIHRoYXQg aGVyZSAqLwotLyogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEluZGV4Q29scywgSW5kZXgsIGF0b3Vp KSAqLworUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEluZGV4Q29scywgSW5kZXgsIGF0b3VpKQogUkVB RF9TQ0FMQVJfQVJSQVkocmVhZEludENvbHMsIGludCwgYXRvaSkKIFJFQURfU0NBTEFSX0FSUkFZ KHJlYWRCb29sQ29scywgYm9vbCwgc3RydG9ib29sKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCmluZGV4IGIxMTI0OWVkOGYuLjcxNDEwMzVjYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubmVyLmMKQEAgLTUxOSw3ICs1MTksOSBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5 ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAly ZXN1bHQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGdsb2ItPnBhcmFsbGVsTW9kZU5lZWRlZDsKIAly ZXN1bHQtPnBsYW5UcmVlID0gdG9wX3BsYW47CiAJcmVzdWx0LT5wYXJ0UHJ1bmVJbmZvcyA9IGds b2ItPnBhcnRQcnVuZUluZm9zOworCXJlc3VsdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZyA9IGds b2ItPmNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5h bHJ0YWJsZTsKKwlyZXN1bHQtPm1pbkxvY2tSZWxpZHMgPSBnbG9iLT5taW5Mb2NrUmVsaWRzOwog CXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwogCXJlc3Vs dC0+YXBwZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBwZW5kUmVsYXRpb25zOwogCXJlc3VsdC0+c3Vi cGxhbnMgPSBnbG9iLT5zdWJwbGFuczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpp bmRleCA3MjBmMjBmNTYzLi42MWQ2OTM0OTc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jCkBAIC0yNzAsNiArMjcwLDE2IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJICovCiAJYWRkX3J0ZXNfdG9fZmxhdF9ydGFibGUocm9v dCwgZmFsc2UpOwogCisJLyoKKwkgKiBBZGQgdGhlIHF1ZXJ5J3MgYWRqdXN0ZWQgcmFuZ2Ugb2Yg UlQgaW5kZXhlcyB0byBnbG9iLT5taW5Mb2NrUmVsaWRzLgorCSAqIFRoZSBhZGp1c3RlZCBSVCBp bmRleGVzIG9mIHBydW5hYmxlIHJlbGF0aW9ucyB3aWxsIGJlIGRlbGV0ZWQgZnJvbSB0aGUKKwkg KiBzZXQgYmVsb3cgd2hlcmUgUGFydGl0aW9uUHJ1bmVJbmZvcyBhcmUgcHJvY2Vzc2VkLgorCSAq LworCWdsb2ItPm1pbkxvY2tSZWxpZHMgPQorCQlibXNfYWRkX3JhbmdlKGdsb2ItPm1pbkxvY2tS ZWxpZHMsCisJCQkJCSAgcnRvZmZzZXQgKyAxLAorCQkJCQkgIHJ0b2Zmc2V0ICsgbGlzdF9sZW5n dGgocm9vdC0+cGFyc2UtPnJ0YWJsZSkpOworCiAJLyoKIAkgKiBBZGp1c3QgUlQgaW5kZXhlcyBv ZiBQbGFuUm93TWFya3MgYW5kIGFkZCB0byBmaW5hbCByb3dtYXJrcyBsaXN0CiAJICovCkBAIC0z NTIsNiArMzYyLDcgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxh biAqcGxhbikKIAlmb3JlYWNoIChsYywgcm9vdC0+cGFydFBydW5lSW5mb3MpCiAJewogCQlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7CisJCUJpdG1hcHNldCAqbGVh ZnBhcnRfcnRpcyA9IE5VTEw7CiAJCUxpc3RDZWxsICAqbDsKIAogCQlmb3JlYWNoKGwsIHBydW5l aW5mby0+cHJ1bmVfaW5mb3MpCkBAIC0zNjIsMTUgKzM3Myw1MCBAQCBzZXRfcGxhbl9yZWZlcmVu Y2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKQogCQkJZm9yZWFjaChsMiwgcHJ1bmVf aW5mb3MpCiAJCQl7CiAJCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0 KGwyKTsKKwkJCQlpbnQJCWk7CiAKIAkJCQkvKiBSVCBpbmRleCBvZiB0aGUgdGFibGUgdG8gd2hp Y2ggdGhlIHBpbmZvIGJlbG9uZ3MuICovCiAJCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7 CisKKwkJCQkvKiBBbHNvIG9mIHRoZSBsZWFmIHBhcnRpdGlvbnMgdGhhdCBtaWdodCBiZSBzY2Fu bmVkLiAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBwaW5mby0+bnBhcnRzOyBpKyspCisJCQkJewor CQkJCQlpZiAocGluZm8tPnJ0aV9tYXBbaV0gPiAwICYmIHBpbmZvLT5zdWJwbGFuX21hcFtpXSA+ PSAwKQorCQkJCQl7CisJCQkJCQlwaW5mby0+cnRpX21hcFtpXSArPSBydG9mZnNldDsKKwkJCQkJ CWxlYWZwYXJ0X3J0aXMgPSBibXNfYWRkX21lbWJlcihsZWFmcGFydF9ydGlzLAorCQkJCQkJCQkJ CQkJCSAgIHBpbmZvLT5ydGlfbWFwW2ldKTsKKwkJCQkJfQorCQkJCX0KIAkJCX0KIAkJfQogCisJ CWlmIChwcnVuZWluZm8tPm5lZWRzX2luaXRfcHJ1bmluZykKKwkJeworCQkJZ2xvYi0+Y29udGFp bnNJbml0aWFsUHJ1bmluZyA9IHRydWU7CisKKwkJCS8qCisJCQkgKiBEZWxldGUgdGhlIGxlYWYg cGFydGl0aW9uIFJUSXMgZnJvbSB0aGUgZ2xvYmFsIHNldCBvZiByZWxhdGlvbnMKKwkJCSAqIHRv IGJlIGxvY2tlZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBwbGFuLiAgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKQorCQkJICogd2lsbCBmaW5kIHRoZSBvbmVzIHRvIGFkZCB0byB0aGUgc2V0IGFmdGVyIHBl cmZvcm1pbmcgaW5pdGlhbAorCQkJICogcHJ1bmluZy4KKwkJCSAqLworCQkJZ2xvYi0+bWluTG9j a1JlbGlkcyA9IGJtc19kZWxfbWVtYmVycyhnbG9iLT5taW5Mb2NrUmVsaWRzLAorCQkJCQkJCQkJ CQkJICBsZWFmcGFydF9ydGlzKTsKKwkJfQorCiAJCWdsb2ItPnBhcnRQcnVuZUluZm9zID0gbGFw cGVuZChnbG9iLT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKIAl9CiAKKwkvKgorCSAqIEl0 IHNlZW1zIHdvcnRoIGRvaW5nIGEgYm1zX2NvcHkoKSBvbiBnbG9iLT5taW5Mb2NrUmVsaWRzIGlm IHdlIGRlbGV0ZWQKKwkgKiBiaXRzIGZyb20gaXQgYWJvdmUgdG8gZ2V0IHJpZCBvZiBhbnkgZW1w dHkgdGFpbCBiaXRzLiAgSXQgc2VlbXMgYmV0dGVyCisJICogZm9yIHRoZSBsb29wIG92ZXIgdGhp cyBzZXQgaW4gQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSB0byBub3QgaGF2ZSB0byBnbworCSAqIHRo cm91Z2ggdGhvc2UgdXNlbGVzcyBiaXQgd29yZHMuCisJICovCisJaWYgKGdsb2ItPmNvbnRhaW5z SW5pdGlhbFBydW5pbmcpCisJCWdsb2ItPm1pbkxvY2tSZWxpZHMgPSBibXNfY29weShnbG9iLT5t aW5Mb2NrUmVsaWRzKTsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYwppbmRleCBkNzdmN2QzYWVmLi45NTJjNWI4MzI3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0xNDQsNyArMTQ0LDkgQEAgc3RhdGljIExpc3QgKm1h a2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJ CSAgIExpc3QgKnBydW5lcXVhbCwKIAkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKnBhcnRyZWxpZHMs CiAJCQkJCQkJCQkJICAgaW50ICpyZWxpZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkJCQkgICBCaXRt YXBzZXQgKiptYXRjaGVkc3VicGxhbnMpOworCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKm1hdGNo ZWRzdWJwbGFucywKKwkJCQkJCQkJCQkgICBib29sICpuZWVkc19pbml0X3BydW5pbmcsCisJCQkJ CQkJCQkJICAgYm9vbCAqbmVlZHNfZXhlY19wcnVuaW5nKTsKIHN0YXRpYyB2b2lkIGdlbl9wYXJ0 cHJ1bmVfc3RlcHMoUmVsT3B0SW5mbyAqcmVsLCBMaXN0ICpjbGF1c2VzLAogCQkJCQkJCQlQYXJ0 Q2xhdXNlVGFyZ2V0IHRhcmdldCwKIAkJCQkJCQkJR2VuZXJhdGVQcnVuaW5nU3RlcHNDb250ZXh0 ICpjb250ZXh0KTsKQEAgLTIzNCw2ICsyMzYsOCBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlpbnQJCSAgICpyZWxp ZF9zdWJwbGFuX21hcDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOworCWJvb2wJCW5lZWRz X2luaXRfcHJ1bmluZyA9IGZhbHNlOworCWJvb2wJCW5lZWRzX2V4ZWNfcHJ1bmluZyA9IGZhbHNl OwogCiAJLyoKIAkgKiBTY2FuIHRoZSBzdWJwYXRocyB0byBzZWUgd2hpY2ggb25lcyBhcmUgc2Nh bnMgb2YgcGFydGl0aW9uIGNoaWxkCkBAIC0zMTMsMTIgKzMxNywxNiBAQCBtYWtlX3BhcnRpdGlv bl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJ Qml0bWFwc2V0ICAqcGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKIAkJTGlz dAkgICAqcGluZm9saXN0OwogCQlCaXRtYXBzZXQgICptYXRjaGVkc3VicGxhbnMgPSBOVUxMOwor CQlib29sCQlwYXJ0cmVsX25lZWRzX2luaXRfcHJ1bmluZzsKKwkJYm9vbAkJcGFydHJlbF9uZWVk c19leGVjX3BydW5pbmc7CiAKIAkJcGluZm9saXN0ID0gbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVu ZWluZm8ocm9vdCwgcGFyZW50cmVsLAogCQkJCQkJCQkJCQkJICBwcnVuZXF1YWwsCiAJCQkJCQkJ CQkJCQkgIHBhcnRyZWxpZHMsCiAJCQkJCQkJCQkJCQkgIHJlbGlkX3N1YnBsYW5fbWFwLAotCQkJ CQkJCQkJCQkJICAmbWF0Y2hlZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkJCSAgJm1hdGNoZWRzdWJw bGFucywKKwkJCQkJCQkJCQkJCSAgJnBhcnRyZWxfbmVlZHNfaW5pdF9wcnVuaW5nLAorCQkJCQkJ CQkJCQkJICAmcGFydHJlbF9uZWVkc19leGVjX3BydW5pbmcpOwogCiAJCS8qIFdoZW4gcHJ1bmlu ZyBpcyBwb3NzaWJsZSwgcmVjb3JkIHRoZSBtYXRjaGVkIHN1YnBsYW5zICovCiAJCWlmIChwaW5m b2xpc3QgIT0gTklMKQpAQCAtMzI3LDYgKzMzNSw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5m byhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJYWxsbWF0Y2hl ZHN1YnBsYW5zID0gYm1zX2pvaW4obWF0Y2hlZHN1YnBsYW5zLAogCQkJCQkJCQkJCSAgYWxsbWF0 Y2hlZHN1YnBsYW5zKTsKIAkJfQorCisJCW5lZWRzX2luaXRfcHJ1bmluZyB8PSBwYXJ0cmVsX25l ZWRzX2luaXRfcHJ1bmluZzsKKwkJbmVlZHNfZXhlY19wcnVuaW5nIHw9IHBhcnRyZWxfbmVlZHNf ZXhlY19wcnVuaW5nOwogCX0KIAogCXBmcmVlKHJlbGlkX3N1YnBsYW5fbWFwKTsKQEAgLTM0MSw2 ICszNTIsOCBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnBhcmVudHJlbCwKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1bHQgZGF0YSBzdHJ1 Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZUluZm8pOwogCXBy dW5laW5mby0+cHJ1bmVfaW5mb3MgPSBwcnVuZXJlbGluZm9zOworCXBydW5laW5mby0+bmVlZHNf aW5pdF9wcnVuaW5nID0gbmVlZHNfaW5pdF9wcnVuaW5nOworCXBydW5laW5mby0+bmVlZHNfZXhl Y19wcnVuaW5nID0gbmVlZHNfZXhlY19wcnVuaW5nOwogCiAJLyoKIAkgKiBTb21lIHN1YnBsYW5z IG1heSBub3QgYmVsb25nIHRvIGFueSBvZiB0aGUgaWRlbnRpZmllZCBwYXJ0aXRpb25lZCByZWxz LgpAQCAtNDQxLDEzICs0NTQsMTggQEAgYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxp ZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcykKICAqIElmIHdlIGNhbm5vdCBmaW5kIGFueSB1c2Vm dWwgcnVuLXRpbWUgcHJ1bmluZyBzdGVwcywgcmV0dXJuIE5JTC4KICAqIEhvd2V2ZXIsIG9uIHN1 Y2Nlc3MsIGVhY2ggcmVsIGlkZW50aWZpZWQgaW4gcGFydHJlbGlkcyB3aWxsIGhhdmUKICAqIGFu IGVsZW1lbnQgaW4gdGhlIHJlc3VsdCBsaXN0LCBldmVuIGlmIHNvbWUgb2YgdGhlbSBhcmUgdXNl bGVzcy4KKyAqICpuZWVkc19pbml0X3BydW5pbmcgYW5kICpuZWVkc19leGVjX3BydW5pbmcgYXJl IHNldCB0byBpbmRpY2F0ZSB0aGF0IHRoZQorICogcmV0dXJuZWQgUGFydGl0aW9uZWRSZWxQcnVu ZUluZm9zIGNvbnRhaW5zIHBydW5pbmcgc3RlcHMgdGhhdCBjYW4gYmUKKyAqIHBlcmZvcm1lZCBi ZWZvcmUgYW5kIGFmdGVyIGV4ZWN1dGlvbiBiZWdpbnMsIHJlc3BlY3RpdmVseS4KICAqLwogc3Rh dGljIExpc3QgKgogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkgIExpc3QgKnBydW5lcXVhbCwKIAkJ CQkJCQkgIEJpdG1hcHNldCAqcGFydHJlbGlkcywKIAkJCQkJCQkgIGludCAqcmVsaWRfc3VicGxh bl9tYXAsCi0JCQkJCQkJICBCaXRtYXBzZXQgKiptYXRjaGVkc3VicGxhbnMpCisJCQkJCQkJICBC aXRtYXBzZXQgKiptYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJICBib29sICpuZWVkc19pbml0X3By dW5pbmcsCisJCQkJCQkJICBib29sICpuZWVkc19leGVjX3BydW5pbmcpCiB7CiAJUmVsT3B0SW5m byAqdGFyZ2V0cGFydCA9IE5VTEw7CiAJTGlzdAkgICAqcGluZm9saXN0ID0gTklMOwpAQCAtNDU4 LDYgKzQ3NiwxMCBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWludAkJCXJ0aTsKIAlpbnQJCQlpOwogCisJ LyogV2lsbCBmaW5kIG91dCBiZWxvdy4gKi8KKwkqbmVlZHNfaW5pdF9wcnVuaW5nID0gZmFsc2U7 CisJKm5lZWRzX2V4ZWNfcHJ1bmluZyA9IGZhbHNlOworCiAJLyoKIAkgKiBFeGFtaW5lIGVhY2gg cGFydGl0aW9uZWQgcmVsLCBjb25zdHJ1Y3RpbmcgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwCiAJ ICogZnJvbSBwbGFubmVyIHJlbGlkcyB0byBpbmRleCBvZiB0aGUgcGFydGl0aW9uZWQgcmVsLCBh bmQgYnVpbGRpbmcgYQpAQCAtNTQ1LDYgKzU2Nyw5IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1 bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCSAqIGV4 ZWN1dG9yIHBlci1zY2FuIHBydW5pbmcgc3RlcHMuICBUaGlzIGZpcnN0IHBhc3MgY3JlYXRlcyBz dGFydHVwCiAJCSAqIHBydW5pbmcgc3RlcHMgYW5kIGRldGVjdHMgd2hldGhlciB0aGVyZSdzIGFu eSBwb3NzaWJseS11c2VmdWwgcXVhbHMKIAkJICogdGhhdCB3b3VsZCByZXF1aXJlIHBlci1zY2Fu IHBydW5pbmcuCisJCSAqCisJCSAqIEluIHRoZSBmaXJzdCBwYXNzLCB3ZSBub3RlIHdoZXRoZXIg dGhlIDJuZCBwYXNzIGlzIG5lY2Vzc2FyeSBieQorCQkgKiBub3RpbmcgdGhlIHByZXNlbmNlIG9m IEVYRUMgcGFyYW1ldGVycy4KIAkJICovCiAJCWdlbl9wYXJ0cHJ1bmVfc3RlcHMoc3VicGFydCwg cGFydHBydW5lcXVhbCwgUEFSVFRBUkdFVF9JTklUSUFMLAogCQkJCQkJCSZjb250ZXh0KTsKQEAg LTYxOSw2ICs2NDQsMTIgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPmV4ZWNwYXJhbWlkcyA9 IGV4ZWNwYXJhbWlkczsKIAkJLyogUmVtYWluaW5nIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCBpbiB0 aGUgbmV4dCBsb29wICovCiAKKwkJLyogcmVjb3JkIHdoaWNoIHR5cGVzIG9mIHBydW5pbmcgc3Rl cHMgd2UndmUgc2VlbiBzbyBmYXIgKi8KKwkJaWYgKGluaXRpYWxfcHJ1bmluZ19zdGVwcyAhPSBO SUwpCisJCQkqbmVlZHNfaW5pdF9wcnVuaW5nID0gdHJ1ZTsKKwkJaWYgKGV4ZWNfcHJ1bmluZ19z dGVwcyAhPSBOSUwpCisJCQkqbmVlZHNfZXhlY19wcnVuaW5nID0gdHJ1ZTsKKwogCQlwaW5mb2xp c3QgPSBsYXBwZW5kKHBpbmZvbGlzdCwgcGluZm8pOwogCX0KIApAQCAtNjQ2LDYgKzY3Nyw3IEBA IG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpwYXJlbnRyZWwsCiAJCWludAkJICAgKnN1YnBsYW5fbWFwOwogCQlpbnQJCSAgICpzdWJw YXJ0X21hcDsKIAkJT2lkCQkgICAqcmVsaWRfbWFwOworCQlJbmRleAkgICAqcnRpX21hcDsKIAog CQkvKgogCQkgKiBDb25zdHJ1Y3QgdGhlIHN1YnBsYW4gYW5kIHN1YnBhcnQgbWFwcyBmb3IgdGhp cyBwYXJ0aXRpb25pbmcgbGV2ZWwuCkBAIC02NTgsNiArNjkwLDcgQEAgbWFrZV9wYXJ0aXRpb25l ZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwK IAkJc3VicGFydF9tYXAgPSAoaW50ICopIHBhbGxvYyhucGFydHMgKiBzaXplb2YoaW50KSk7CiAJ CW1lbXNldChzdWJwYXJ0X21hcCwgLTEsIG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcmVsaWRf bWFwID0gKE9pZCAqKSBwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihPaWQpKTsKKwkJcnRpX21hcCA9 IChJbmRleCAqKSBwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihJbmRleCkpOwogCQlwcmVzZW50X3Bh cnRzID0gTlVMTDsKIAogCQlpID0gLTE7CkBAIC02NzIsNiArNzA1LDcgQEAgbWFrZV9wYXJ0aXRp b25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJl bCwKIAkJCXN1YnBsYW5fbWFwW2ldID0gc3VicGxhbmlkeCA9IHJlbGlkX3N1YnBsYW5fbWFwW3Bh cnRyZWwtPnJlbGlkXSAtIDE7CiAJCQlzdWJwYXJ0X21hcFtpXSA9IHN1YnBhcnRpZHggPSByZWxp ZF9zdWJwYXJ0X21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJcmVsaWRfbWFwW2ldID0gcGxh bm5lcl9ydF9mZXRjaChwYXJ0cmVsLT5yZWxpZCwgcm9vdCktPnJlbGlkOworCQkJcnRpX21hcFtp XSA9IHBhcnRyZWwtPnJlbGlkOwogCQkJaWYgKHN1YnBsYW5pZHggPj0gMCkKIAkJCXsKIAkJCQlw cmVzZW50X3BhcnRzID0gYm1zX2FkZF9tZW1iZXIocHJlc2VudF9wYXJ0cywgaSk7CkBAIC02OTYs NiArNzMwLDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPnN1YnBsYW5fbWFwID0gc3VicGxh bl9tYXA7CiAJCXBpbmZvLT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFwOwogCQlwaW5mby0+cmVs aWRfbWFwID0gcmVsaWRfbWFwOworCQlwaW5mby0+cnRpX21hcCA9IHJ0aV9tYXA7CiAJfQogCiAJ cGZyZWUocmVsaWRfc3VicGFydF9tYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDA3OGZiZGI1YTAu LjAyZmM1YTAxMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTE2MDMsNiArMTYwMyw3IEBAIGV4ZWNf YmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAlpbnQxNgkgICAqcmZvcm1h dHMgPSBOVUxMOwogCUNhY2hlZFBsYW5Tb3VyY2UgKnBzcmM7CiAJQ2FjaGVkUGxhbiAqY3BsYW47 CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRfbGlzdDsKIAlQb3J0YWwJCXBvcnRhbDsKIAlj aGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJY2hhcgkgICAqc2F2ZWRfc3RtdF9uYW1lOwpAQCAtMTk3 OCw3ICsxOTc5LDkgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdl KQogCSAqIHdpbGwgYmUgZ2VuZXJhdGVkIGluIE1lc3NhZ2VDb250ZXh0LiAgVGhlIHBsYW4gcmVm Y291bnQgd2lsbCBiZQogCSAqIGFzc2lnbmVkIHRvIHRoZSBQb3J0YWwsIHNvIGl0IHdpbGwgYmUg cmVsZWFzZWQgYXQgcG9ydGFsIGRlc3RydWN0aW9uLgogCSAqLwotCWNwbGFuID0gR2V0Q2FjaGVk UGxhbihwc3JjLCBwYXJhbXMsIE5VTEwsIE5VTEwpOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihw c3JjLCBwYXJhbXMsIE5VTEwsIE5VTEwsICZwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwlBc3Nl cnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgocGFy dF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCiAJLyoKIAkgKiBOb3cgd2UgY2FuIGRlZmluZSB0aGUg cG9ydGFsLgpAQCAtMTk5Myw2ICsxOTk2LDkgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5m byBpbnB1dF9tZXNzYWdlKQogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCiAJCQkJCSAgY3BsYW4p OwogCisJLyogQ29weSBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUgcG9ydGFsJ3MgY29u dGV4dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhwb3J0YWwsIHBhcnRf cHJ1bmVfcmVzdWx0X2xpc3QpOworCiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZv ciBwYXJhbWV0ZXIgSS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNuYXBzaG90X3Nl dCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av cHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDVhYTVhMzUwZjMuLjhj YzJlMjE2MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMzUsNyArMzUsNyBAQAogUG9ydGFsCQlBY3RpdmVQ b3J0YWwgPSBOVUxMOwogCiAKLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAq cGxhbiwKK3N0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwgUGFydGl0 aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCQkJIGNvbnN0IGNoYXIgKnNv dXJjZVRleHQsCiAJCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsCkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFs UmV3aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNj KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFy dF9wcnVuZV9yZXN1bHQsCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hv dCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiAr NzgsOCBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQt Pm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJ cWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+cGFydF9wcnVu ZV9yZXN1bHQgPSBwYXJ0X3BydW5lX3Jlc3VsdDsJLyogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5n KCkKKwkJCQkJCQkJCQkJCSAqIG91dHB1dCBmb3IgcGxhbiAqLwogCXFkLT5zb3VyY2VUZXh0ID0g c291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90ICov CkBAIC0xMjIsNiArMTI1LDcgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICoJ CVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAogICoK ICAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQorICoJcGFydF9wcnVuZV9yZXN1 bHQ6IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG91dHB1dCBmb3IgdGhlIHBsYW4gdHJlZQog ICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQogICoJcGFyYW1zOiBh bnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpAQCAt MTM0LDYgKzEzOCw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqLwogc3Rh dGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCSBQYXJ0aXRpb25Q cnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4 dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwKQEAgLTE0NSw3ICsxNTAsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4s CiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKIAkgKi8KLQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgcGFydF9wcnVuZV9yZXN1bHQsIHNvdXJjZVRleHQsCiAJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgMCk7CiAKQEAgLTQ5MSw4ICs0OTYsMTMgQEAgUG9ydGFsU3RhcnQoUG9ydGFs IHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJLyoKIAkJCQkgKiBDcmVhdGUgUXVl cnlEZXNjIGluIHBvcnRhbCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50LCBzZXQKIAkJCQkgKiB0 aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCisJCQkJICoKKwkJCQkgKiBUaGVyZSBpcyBubyBQ YXJ0aXRpb25QcnVuZVJlc3VsdCB1bmxlc3MgdGhlIFBsYW5uZWRTdG10IGlzCisJCQkJICogZnJv bSBhIENhY2hlZFBsYW4uCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJCQlw b3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0cyA9PSBOSUwgPyBOVUxMIDoKKwkJCQkJCQkJCQkJbGlu aXRpYWwocG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHMpLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNv dXJjZVRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUlu dmFsaWRTbmFwc2hvdCwKQEAgLTEyMjUsNiArMTIzNSw4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRh bCBwb3J0YWwsCiAKIAkJaWYgKHBzdG10LT51dGlsaXR5U3RtdCA9PSBOVUxMKQogCQl7CisJCQlQ YXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBOVUxMOworCiAJCQkvKgog CQkJICogcHJvY2VzcyBhIHBsYW5uYWJsZSBxdWVyeS4KIAkJCSAqLwpAQCAtMTI3MSwxMCArMTI4 MywxOCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJCVVwZGF0 ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKKwkJCS8qCisJCQkgKiBEZXRlcm1pbmUgaWYg dGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgUGFydGl0aW9uUHJ1bmVSZXN1bHQgZm9yCisJCQkgKiB0 aGlzIFBsYW5uZWRTdG10LgorCQkJICovCisJCQlpZiAocG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3Vs dHMgIT0gTklMKQorCQkJCXBhcnRfcHJ1bmVfcmVzdWx0ID0gbGlzdF9udGgocG9ydGFsLT5wYXJ0 X3BydW5lX3Jlc3VsdHMsCisJCQkJCQkJCQkJCSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoc3RtdGxp c3RfaXRlbSkpOworCiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKIAkJCQkvKiBzdGF0 ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJ CVByb2Nlc3NRdWVyeShwc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkJIHBvcnRhbC0+ c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRh bC0+cXVlcnlFbnYsCkBAIC0xMjgzLDcgKzEzMDMsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwg cG9ydGFsLAogCQkJZWxzZQogCQkJewogCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5u b3Qgc2V0IHRhZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnko cHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJ CQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCAwZDZhMjk1Njc0Li5kMWM5NjA1OTc5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtOTksMTQgKzk5LDE5IEBAIHN0 YXRpYyBkbGlzdF9oZWFkIGNhY2hlZF9leHByZXNzaW9uX2xpc3QgPSBETElTVF9TVEFUSUNfSU5J VChjYWNoZWRfZXhwcmVzc2lvbl9sCiBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNhY2hl ZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAgIFF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52KTsKLXN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJ CQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKIHN0YXRpYyBDYWNoZWRQbGFuICpC dWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3Qs Ci0JCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKKwkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJCQkJCSAgIExpc3QgKipwYXJ0X3BydW5lX3Jlc3Vs dF9saXN0KTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3Rh dGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVk ZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAq c3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0 LCBib29sIGFjcXVpcmUpOworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAq c3RtdF9saXN0LCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJCQkJCQkgTGlzdCAqKnBh cnRfcHJ1bmVfcmVzdWx0X2xpc3QsCisJCQkJCQkJCSBMaXN0ICoqbG9ja2VkUmVsaWRzX3Blcl9z dG10KTsKK3N0YXRpYyB2b2lkIFJlbGVhc2VFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwg TGlzdCAqbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVy TG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1 ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29s IFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc5MCwxNSAr Nzk1LDIwIEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogICoKICAqIE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9j a3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4KICAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAi dHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0aW9uLWZyZWUuKQorICoKKyAqIFNlZSBHZXRD YWNoZWRQbGFuKCkncyBjb21tZW50IGZvciBhIGRlc2NyaXB0aW9uIG9mIHBhcnRfcHJ1bmVfcmVz dWx0X2xpc3QuCiAgKi8KIHN0YXRpYyBib29sCi1DaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSkKK0NoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJCUxpc3QgKipwYXJ0X3BydW5l X3Jlc3VsdF9saXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsK IAogCS8qIEFzc2VydCB0aGF0IGNhbGxlciBjaGVja2VkIHRoZSBxdWVyeXRyZWUgKi8KIAlBc3Nl cnQocGxhbnNvdXJjZS0+aXNfdmFsaWQpOwogCisJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBO SUw7CisKIAkvKiBJZiB0aGVyZSdzIG5vIGdlbmVyaWMgcGxhbiwganVzdCBzYXkgImZhbHNlIiAq LwogCWlmICghcGxhbikKIAkJcmV0dXJuIGZhbHNlOwpAQCAtODIwLDEzICs4MzAsMjEgQEAgQ2hl Y2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJICovCiAJaWYgKHBs YW4tPmlzX3ZhbGlkKQogCXsKKwkJTGlzdCAgICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQ7CisKIAkJ LyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyBy ZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNh cHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwogCQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAw KTsKIAotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCQkv KgorCQkgKiBMb2NrIHJlbGF0aW9ucyBzY2FubmVkIGJ5IHRoZSBwbGFuLiAgVGhpcyBpcyB3aGVy ZSB0aGUgcHJ1bmluZworCQkgKiBoYXBwZW5zIGlmIG5lZWRlZC4KKwkJICovCisJCUFjcXVpcmVF eGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgYm91bmRQYXJhbXMsCisJCQkJCQkJIHBhcnRf cHJ1bmVfcmVzdWx0X2xpc3QsCisJCQkJCQkJICZsb2NrZWRSZWxpZHNfcGVyX3N0bXQpOwogCiAJ CS8qCiAJCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0 aW9uWG1pbiBoYXMKQEAgLTg0OCw3ICs4NjYsMTQgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJCX0KIAogCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhh cHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2Nr cyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJUmVsZWFzZUV4ZWN1dG9yTG9ja3MocGxhbi0+ c3RtdF9saXN0LCBsb2NrZWRSZWxpZHNfcGVyX3N0bXQpOworCisJCS8qCisJCSAqIFRoZSBvdXRw dXQgbGlzdCBhbmQgYW55IG9iamVjdHMgdGhlcmVpbiBoYXZlIGJlZW4gYWxsb2NhdGVkIGluIHRo ZQorCQkgKiBjYWxsZXIncyBob3BlZnVsbHkgc2hvcnQtbGl2ZWQgY29udGV4dCwgc28gd2lsbCBu b3QgcmVtYWluIGxlYWtlZAorCQkgKiBmb3IgbG9uZywgdGhvdWdoIHJlc2V0IHRvIGF2b2lkIGl0 cyBhY2NpZGVudGFsbHkgYmVpbmcgbG9va2VkIGF0LgorCQkgKi8KKwkJKnBhcnRfcHJ1bmVfcmVz dWx0X2xpc3QgPSBOSUw7CiAJfQogCiAJLyoKQEAgLTg3NCwxMCArODk5LDE1IEBAIENoZWNrQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogICogUGxhbm5pbmcgd29yayBp cyBkb25lIGluIHRoZSBjYWxsZXIncyBtZW1vcnkgY29udGV4dC4gIFRoZSBmaW5pc2hlZCBwbGFu CiAgKiBpcyBpbiBhIGNoaWxkIG1lbW9yeSBjb250ZXh0LCB3aGljaCB0eXBpY2FsbHkgc2hvdWxk IGdldCByZXBhcmVudGVkCiAgKiAodW5sZXNzIHRoaXMgaXMgYSBvbmUtc2hvdCBwbGFuLCBpbiB3 aGljaCBjYXNlIHdlIGRvbid0IGNvcHkgdGhlIHBsYW4pLgorICoKKyAqIEEgbGlzdCBvZiBOVUxM cyBpcyByZXR1cm5lZCBpbiAqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwgbWVhbmluZyB0aGF0IG5v CisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdCBub2RlcyBoYXZlIHlldCBiZWVuIGNyZWF0ZWQgZm9y IHRoZSBwbGFucyBpbgorICogc3RtdF9saXN0LgogICovCiBzdGF0aWMgQ2FjaGVkUGxhbiAqCiBC dWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3Qs Ci0JCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpCisJCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsCisJCQkJTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpCiB7CiAJQ2FjaGVkUGxh biAqcGxhbjsKIAlMaXN0CSAgICpwbGlzdDsKQEAgLTEwMDcsNiArMTAzNywxNyBAQCBCdWlsZENh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAKIAlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAorCS8qCisJICogTm8gYWN0dWFsIFBhcnRp dGlvblBydW5lUmVzdWx0cyB5ZXQgdG8gYWRkLCB0aG91Z2ggbXVzdCBpbml0aWFsaXplCisJICog dGhlIGxpc3QgdG8gaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMgYXMgdGhlIGxpc3Qg b2YKKwkgKiBQbGFubmVkU3RtdHMuCisJICovCisJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBO SUw7CisJZm9yZWFjaChsYywgcGxpc3QpCisJeworCQkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9 IGxhcHBlbmQoKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QsIE5VTEwpOworCX0KKwogCXJldHVybiBw bGFuOwogfQogCkBAIC0xMTI2LDYgKzExNjcsMTcgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQ bGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxh biBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICog d2hpY2ggaXQgd2lsbCBnZXQuCiAgKgorICogRm9yIGV2ZXJ5IFBsYW5uZWRTdG10IGZvdW5kIGlu IHRoZSByZXR1cm5lZCBDYWNoZWRQbGFuLCBhbiBlbGVtZW50IHRoYXQKKyAqIGlzIGVpdGhlciBh IFBhcnRpdGlvblBydW5lUmVzdWx0IG9yIGEgTlVMTCBpcyBhZGRlZCB0bworICogKnBhcnRfcHJ1 bmVfcmVzdWx0X2xpc3QgaWYgbmVlZGVkLiAgVGhlIGZvcm1lciBpZiB0aGUgUGxhbm5lZFN0bXQg aXMgZnJvbQorICogdGhlIGV4aXN0aW5nIENhY2hlZFBsYW4gdGhhdCBpcyBvdGhlcndpc2UgdmFs aWQgYW5kIGNvbnRhaW5zIGF0IGxlYXN0IG9uZQorICogUGFydGl0aW9uUHJ1bmVJbmZvIHRoYXQg aGFzICJpbml0aWFsIiBwcnVuaW5nIHN0ZXBzLiAgVGhvc2Ugc3RlcHMgYXJlCisgKiBwZXJmb3Jt ZWQgYnkgY2FsbGluZyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSB0byBkZXRlcm1pbmUgb25s eSB0aG9zZQorICogbGVhZiBwYXJ0aXRpb25zIHRoYXQgbmVlZCB0byBiZSBsb2NrZWQgYnkgQWNx dWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBwcnVuaW5nCisgKiBhd2F5IHN1YnBsYW5zIHRoYXQgZG9u J3QgbWF0Y2ggdGhlIHBydW5pbmcgY29uZGl0aW9ucy4gIFRoZQorICogUGFydGl0aW9uUHJ1bmVS ZXN1bHQgY29udGFpbnMgYSBsaXN0IG9mIGJpdG1hcHNldHMgb2YgdGhlIGluZGV4ZXMgb2YKKyAq IG1hdGNoaW5nIHN1YnBsYW5zLCBvbmUgZm9yIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvLgorICoK ICAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBs b2NrcyB0byBiZWdpbgogICogZXhlY3V0aW9uLgogICoKQEAgLTExMzksMTEgKzExOTEsMTMgQEAg Y2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikK ICAqLwogQ2FjaGVkUGxhbiAqCiBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCi0JCQkgIFJlc291cmNlT3duZXIgb3du ZXIsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJICBSZXNvdXJjZU93bmVyIG93bmVy LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCSAgTGlzdCAqKnBhcnRfcHJ1bmVfcmVz dWx0X2xpc3QpCiB7CiAJQ2FjaGVkUGxhbiAqcGxhbiA9IE5VTEw7CiAJTGlzdAkgICAqcWxpc3Q7 CiAJYm9vbAkJY3VzdG9tcGxhbjsKKwlMaXN0CSAgICpteV9wYXJ0X3BydW5lX3Jlc3VsdF9saXN0 OwogCiAJLyogQXNzZXJ0IGNhbGxlciBpcyBkb2luZyB0aGluZ3MgaW4gYSBzYW5lIG9yZGVyICov CiAJQXNzZXJ0KHBsYW5zb3VyY2UtPm1hZ2ljID09IENBQ0hFRFBMQU5TT1VSQ0VfTUFHSUMpOwpA QCAtMTE2MCw3ICsxMjE0LDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCiAJaWYgKCFjdXN0b21wbGFuKQog CXsKLQkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlKSkKKwkJaWYgKENoZWNrQ2FjaGVk UGxhbihwbGFuc291cmNlLCBib3VuZFBhcmFtcywKKwkJCQkJCQkmbXlfcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCkpCiAJCXsKIAkJCS8qIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJl YWR5IGhhdmUgYSB2YWxpZCBvbmUgKi8KIAkJCXBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKQEAg LTExNjksNyArMTIyNCw4IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJZWxzZQogCQl7CiAJCQkvKiBCdWls ZCBhIG5ldyBnZW5lcmljIHBsYW4gKi8KLQkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNv dXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52KTsKKwkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4o cGxhbnNvdXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52LAorCQkJCQkJCQkgICAmbXlfcGFydF9w cnVuZV9yZXN1bHRfbGlzdCk7CiAJCQkvKiBKdXN0IG1ha2UgcmVhbCBzdXJlIHBsYW5zb3VyY2Ut PmdwbGFuIGlzIGNsZWFyICovCiAJCQlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CiAJ CQkvKiBMaW5rIHRoZSBuZXcgZ2VuZXJpYyBwbGFuIGludG8gdGhlIHBsYW5zb3VyY2UgKi8KQEAg LTEyMTQsNyArMTI3MCw4IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAlpZiAoY3VzdG9tcGxhbikKIAl7CiAJ CS8qIEJ1aWxkIGEgY3VzdG9tIHBsYW4gKi8KLQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFu c291cmNlLCBxbGlzdCwgYm91bmRQYXJhbXMsIHF1ZXJ5RW52KTsKKwkJcGxhbiA9IEJ1aWxkQ2Fj aGVkUGxhbihwbGFuc291cmNlLCBxbGlzdCwgYm91bmRQYXJhbXMsIHF1ZXJ5RW52LAorCQkJCQkJ CSAgICZteV9wYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKIAkJLyogQWNjdW11bGF0ZSB0b3RhbCBj b3N0cyBvZiBjdXN0b20gcGxhbnMgKi8KIAkJcGxhbnNvdXJjZS0+dG90YWxfY3VzdG9tX2Nvc3Qg Kz0gY2FjaGVkX3BsYW5fY29zdChwbGFuLCB0cnVlKTsKIApAQCAtMTI0Niw2ICsxMzAzLDkgQEAg R2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAogCQlwbGFuLT5pc19zYXZlZCA9IHRydWU7CiAJfQogCisJaWYgKHBhcnRf cHJ1bmVfcmVzdWx0X2xpc3QpCisJCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gbXlfcGFydF9w cnVuZV9yZXN1bHRfbGlzdDsKKwogCXJldHVybiBwbGFuOwogfQogCkBAIC0xNzM3LDE3ICsxNzk3 LDI5IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogCiAvKgogICogQWNx dWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRpb24gb2Yg YSBjYWNoZWQgcGxhbjsKLSAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgor ICoKKyAqIFNlZSBHZXRDYWNoZWRQbGFuKCkncyBjb21tZW50IGZvciBhIGRlc2NyaXB0aW9uIG9m IHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QuCisgKgorICogT24gcmV0dXJuLCAqbG9ja2VkUmVsaWRz X3Blcl9zdG10IHdpbGwgY29udGFpbiBhIGJpdG1hcHNldCBmb3IgZXZlcnkKKyAqIFBsYW5uZWRT dG10IGluIHN0bXRfbGlzdCwgY29udGFpbmluZyB0aGUgUlQgaW5kZXhlcyBvZiByZWxhdGlvbiBl bnRyaWVzCisgKiBpbiBpdHMgcmFuZ2UgdGFibGUgdGhhdCB3ZXJlIGFjdHVhbGx5IGxvY2tlZCwg b3IgTlVMTCBpZiB0aGUgUGxhbm5lZFN0bXQKKyAqIGNvbnRhaW5zIGEgdXRpbGl0eSBzdGF0ZW1l bnQuCiAgKi8KIHN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xp c3QsIGJvb2wgYWNxdWlyZSkKK0FjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwg UGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQkJIExpc3QgKipwYXJ0X3BydW5lX3Jlc3Vs dF9saXN0LAorCQkJCQkgTGlzdCAqKmxvY2tlZFJlbGlkc19wZXJfc3RtdCkKIHsKIAlMaXN0Q2Vs bCAgICpsYzE7CiAKKwkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9ICpsb2NrZWRSZWxpZHNfcGVy X3N0bXQgPSBOSUw7CiAJZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2Vs bCAgICpsYzI7CisJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IE5V TEw7CisJCUJpdG1hcHNldCAgKmFsbExvY2tSZWxpZHM7CisJCUJpdG1hcHNldCAgKmxvY2tlZFJl bGlkcyA9IE5VTEw7CisJCWludAkJCXJ0aTsKIAogCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRU eXBlID09IENNRF9VVElMSVRZKQogCQl7CkBAIC0xNzYxLDEzICsxODMzLDM4IEBAIEFjcXVpcmVF eGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCQkJUXVlcnkJICAg KnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsK IAogCQkJaWYgKHF1ZXJ5KQotCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsK KwkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgdHJ1ZSk7CisJCQkqcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCA9IGxhcHBlbmQoKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QsIE5VTEwpOwogCQkJY29u dGludWU7CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKKwkJLyoK KwkJICogRmlndXJlIG91dCB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IHdvdWxkIG5lZWQgdG8g YmUgbG9ja2VkCisJCSAqIGJlZm9yZSBleGVjdXRpbmcgdGhlIHBsYW4uCisJCSAqLworCQlpZiAo cGxhbm5lZHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpCiAJCXsKLQkJCVJhbmdlVGJsRW50 cnkgKnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOworCQkJLyoKKwkJCSAqIE9i dGFpbiB0aGUgc2V0IG9mIGxlYWYgcGFydGl0aW9ucyB0byBiZSBsb2NrZWQuCisJCQkgKgorCQkJ ICogVGhlIGZvbGxvd2luZyBkb2VzIGluaXRpYWwgcGFydGl0aW9uIHBydW5pbmcgdXNpbmcgdGhl CisJCQkgKiBQYXJ0aXRpb25QcnVuZUluZm9zIGZvdW5kIGluIHBsYW5uZWRzdG10LT5wYXJ0UHJ1 bmVJbmZvcyBhbmQKKwkJCSAqIGZpbmRzIGxlYWYgcGFydGl0aW9ucyB0aGF0IHN1cnZpdmUgdGhh dCBwcnVuaW5nIGFjcm9zcyBhbGwgdGhlCisJCQkgKiBub2RlcyBpbiB0aGUgcGxhbiB0cmVlLgor CQkJICovCisJCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPQorCQkJ CUV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZyhwbGFubmVkc3RtdCwgYm91bmRQYXJhbXMpOworCisJ CQlhbGxMb2NrUmVsaWRzID0gYm1zX3VuaW9uKHBsYW5uZWRzdG10LT5taW5Mb2NrUmVsaWRzLAor CQkJCQkJCQkJICBwYXJ0X3BydW5lX3Jlc3VsdC0+c2Nhbl9sZWFmcGFydF9ydGlzKTsKKwkJfQor CQllbHNlCisJCQlhbGxMb2NrUmVsaWRzID0gcGxhbm5lZHN0bXQtPm1pbkxvY2tSZWxpZHM7CisK KwkJcnRpID0gLTE7CisJCXdoaWxlICgocnRpID0gYm1zX25leHRfbWVtYmVyKGFsbExvY2tSZWxp ZHMsIHJ0aSkpID4gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocnRp LCBwbGFubmVkc3RtdC0+cnRhYmxlKTsKIAogCQkJaWYgKHJ0ZS0+cnRla2luZCAhPSBSVEVfUkVM QVRJT04pCiAJCQkJY29udGludWU7CkBAIC0xNzc4LDEwICsxODc1LDU4IEBAIEFjcXVpcmVFeGVj dXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCQkJICogZmFpbCBpZiBp dCdzIGJlZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQogCQkJ ICogYWNxdWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgogCQkJICovCi0JCQlpZiAoYWNxdWly ZSkKLQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0J CQllbHNlCi0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9k ZSk7CisJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJ CQlsb2NrZWRSZWxpZHMgPSBibXNfYWRkX21lbWJlcihsb2NrZWRSZWxpZHMsIHJ0aSk7CisJCX0K KworCQkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9IGxhcHBlbmQoKnBhcnRfcHJ1bmVfcmVzdWx0 X2xpc3QsCisJCQkJCQkJCQkJICBwYXJ0X3BydW5lX3Jlc3VsdCk7CisJCSpsb2NrZWRSZWxpZHNf cGVyX3N0bXQgPSBsYXBwZW5kKCpsb2NrZWRSZWxpZHNfcGVyX3N0bXQsIGxvY2tlZFJlbGlkcyk7 CisJfQorfQorCisvKgorICogUmVsZWFzZUV4ZWN1dG9yTG9ja3MKKyAqIAkJUmVsZWFzZSBsb2Nr cyB0aGF0IHdvdWxkJ3ZlIGJlZW4gYWNxdWlyZWQgYnkgYW4gZWFybGllciBjYWxsIHRvCisgKiAJ CUFjcXVpcmVFeGVjdXRvckxvY2tzKCkKKyAqLworc3RhdGljIHZvaWQKK1JlbGVhc2VFeGVjdXRv ckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgTGlzdCAqbG9ja2VkUmVsaWRzX3Blcl9zdG10KQorewor CUxpc3RDZWxsICAgKmxjMSwKKwkJCSAgICpsYzI7CisKKwlmb3Jib3RoKGxjMSwgc3RtdF9saXN0 LCBsYzIsIGxvY2tlZFJlbGlkc19wZXJfc3RtdCkKKwl7CisJCVBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOworCQlCaXRtYXBzZXQgICpsb2Nr ZWRSZWxpZHMgPSBsZmlyc3QobGMyKTsKKwkJaW50CQkJcnRpOworCisJCWlmIChwbGFubmVkc3Rt dC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCisJCXsKKwkJCS8qCisJCQkgKiBJZ25vcmUg dXRpbGl0eSBzdGF0ZW1lbnRzLCBleGNlcHQgdGhvc2UgKHN1Y2ggYXMgRVhQTEFJTikgdGhhdAor CQkJICogY29udGFpbiBhIHBhcnNlZC1idXQtbm90LXBsYW5uZWQgcXVlcnkuICBOb3RlOiBpdCdz IG9rYXkgdG8gdXNlCisJCQkgKiBTY2FuUXVlcnlGb3JMb2NrcywgZXZlbiB0aG91Z2ggdGhlIHF1 ZXJ5IGhhc24ndCBiZWVuIHRocm91Z2gKKwkJCSAqIHJ1bGUgcmV3cml0aW5nLCBiZWNhdXNlIHJl d3JpdGluZyBkb2Vzbid0IGNoYW5nZSB0aGUgcXVlcnkKKwkJCSAqIHJlcHJlc2VudGF0aW9uLgor CQkJICovCisJCQlRdWVyeQkgICAqcXVlcnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVk c3RtdC0+dXRpbGl0eVN0bXQpOworCisJCQlpZiAocXVlcnkpCisJCQkJU2NhblF1ZXJ5Rm9yTG9j a3MocXVlcnksIGZhbHNlKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcnRpID0gLTE7CisJCXdo aWxlICgocnRpID0gYm1zX25leHRfbWVtYmVyKGxvY2tlZFJlbGlkcywgcnRpKSkgPj0gMCkKKwkJ eworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocnRpLCBwbGFubmVkc3RtdC0+cnRh YmxlKTsKKworCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOworCisJCQkv KiBTZWUgdGhlIGNvbW1lbnQgaW4gQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4gKi8KKwkJCVVubG9j a1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwogCQl9CiAJfQogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggM2ExNjFiZGI4OC4uMjc0MDdhN2YwZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMv YmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0zMDMsNiArMzAzLDI1IEBAIFBvcnRh bERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVG SU5FRDsKIH0KIAorLyoKKyAqIFBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzCisgKgkJ Q29weSB0aGUgZ2l2ZW4gbGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUgcG9y dGFsJ3MKKyAqCQljb250ZXh0CisgKgorICogVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBlbnN1 cmUgdGhhdCB0aGUgbGlzdCBleGlzdHMgYXMgbG9uZyBhcyB0aGUgcG9ydGFsCisgKiBkb2VzLgor ICovCit2b2lkCitQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFs LCBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMpCit7CisJTWVtb3J5Q29udGV4dAlvbGRjeHQ7CisK KwlBc3NlcnRBcmcoUG9ydGFsSXNWYWxpZChwb3J0YWwpKTsKKwlvbGRjeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8ocG9ydGFsLT5wb3J0YWxDb250ZXh0KTsKKwlwb3J0YWwtPnBhcnRfcHJ1bmVf cmVzdWx0cyA9IGNvcHlPYmplY3QocGFydF9wcnVuZV9yZXN1bHRzKTsKKwlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIFBvcnRhbFJlbGVhc2VDYWNoZWRQbGFuCiAg KgkJUmVsZWFzZSBhIHBvcnRhbCdzIHJlZmVyZW5jZSB0byBpdHMgY2FjaGVkIHBsYW4sIGlmIGFu eS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCA5ZWJkZTA4OWFlLi5lNTdlMTMzZjBlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbi5oCkBAIC04Nyw3ICs4Nyw5IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5P bmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAg RXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJh bUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4g dm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2Ug KmludG8sCitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsCisJCQkJCQkgICBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQsCisJ CQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFu ZHVyYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggYmY5NjJhZjdh Zi4uYmQ4Nzc2NDAyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtNDUs NiArNDUsNyBAQCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJs ZVN0YXRlICptdHN0YXRlLAogICogbnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10g YW5kIHN1YnBhcnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBw YXJ0aXRpb24gaW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXgg YnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4KKyAqIHJ0aV9tYXAJCQkJCQlSYW5nZSB0YWJsZSBp bmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAuCiAgKiBwcmVzZW50X3BhcnRzCQkJCUEgQml0 bWFwc2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyB0aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBz dWJwbGFucyBvciBzdWJwYXJ0cyBmb3IuCiAgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qg b2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCkBAIC02MSw2ICs2Miw3IEBAIHR5cGVkZWYg c3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEKIAlpbnQJCQlucGFydHM7CiAJaW50CQkg ICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9tYXA7CisJSW5kZXgJICAgKnJ0aV9t YXA7CiAJQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAlMaXN0CSAgICppbml0aWFsX3BydW5p bmdfc3RlcHM7CiAJTGlzdAkgICAqZXhlY19wcnVuaW5nX3N0ZXBzOwpAQCAtMTI2LDUgKzEyOCwx MCBAQCBleHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5n KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJCSBpbnQgcGFydF9wcnVuZV9pbmRl eCwKIAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsK IGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CisJ CQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAq KnNjYW5fbGVhZnBhcnRfcnRpcyk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjUGFydGl0aW9uRG9J bml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCVBhcmFtTGlz dEluZm8gcGFyYW1zLAorCQkJCQkJCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJ CQkJCQkJQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKICNlbmRpZgkJCQkJCQkvKiBF WEVDUEFSVElUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IGU3OWUyYzAwMWYu LjYwZDU2NDQ5MDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzUsNiArMzUsOCBAQCB0 eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIHByb3ZpZGVkIGJ5 IENyZWF0ZVF1ZXJ5RGVzYyAqLwogCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIENNRF9TRUxFQ1Qs IENNRF9VUERBVEUsIGV0Yy4gKi8KIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQ7CS8qIHBsYW5u ZXIncyBvdXRwdXQgKGNvdWxkIGJlIHV0aWxpdHksIHRvbykgKi8KKwlQYXJ0aXRpb25QcnVuZVJl c3VsdCAqcGFydF9wcnVuZV9yZXN1bHQ7IC8qIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpJ3MK KwkJCQkJCQkJCQkJICAqIG91dHB1dCBmb3IgcGxhbm5lZHN0bXQgKi8KIAljb25zdCBjaGFyICpz b3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25h cHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3Nj aGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAt NTcsNiArNTksNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMg Ki8KIGV4dGVybiBRdWVyeURlc2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsCisJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0 LAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJCSAgU25hcHNob3Qg c25hcHNob3QsCiAJCQkJCQkJCSAgU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCmluZGV4IGQ2OGE2YjlkMjguLjVjNGEyODJiZTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY3V0b3IuaApAQCAtMTg1LDYgKzE4NSw4IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1 cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAvKgog ICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBpbiBleGVjTWFpbi5jCiAgKi8KK2V4dGVybiBQ YXJ0aXRpb25QcnVuZVJlc3VsdCAqRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zKTsKIGV4 dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp OwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNjNhODk0NzRkYi4uMTJlYTA2YzJmNiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKQEAgLTEwMDEsNiArMTAwMSwzMyBAQCB0eXBlZGVmIHN0cnVjdCBE b21haW5Db25zdHJhaW50U3RhdGUKICAqLwogdHlwZWRlZiBUdXBsZVRhYmxlU2xvdCAqKCpFeGVj UHJvY05vZGVNdGQpIChzdHJ1Y3QgUGxhblN0YXRlICpwc3RhdGUpOwogCisvKi0tLS0tLS0tLS0t LS0tLS0KKyAqIFBhcnRpdGlvblBydW5lUmVzdWx0CisgKgorICogVGhlIHJlc3VsdCBvZiBwZXJm b3JtaW5nIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIGludm9jYXRpb24gb24gYSBnaXZlbgor ICogUGxhbm5lZFN0bXQuCisgKgorICogQ29udGFpbnMgYSBsaXN0IG9mIEJpdG1hcHNldCBvZiB0 aGUgaW5kZXhlcyBvZiB0aGUgc3VicGxhbnMgcmVtYWluaW5nIGFmdGVyCisgKiBwZXJmb3JtaW5n IGluaXRpYWwgcHJ1bmluZyBieSBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucygpIGZv ciBldmVyeQorICogUGFydGl0aW9uUHJ1bmVJbmZvIGZvdW5kIGluIFBsYW5uZWRTdG10LnBhcnRQ cnVuZUluZm9zLiAgUlQgaW5kZXhlcyBvZiB0aGUKKyAqIGxlYWYgcGFydGl0aW9ucyBzY2FubmVk IGJ5IHRob3NlIHN1YnBsYW5zIGFjcm9zcyBhbGwgUGFydGl0aW9uUHJ1bmVJbmZvcworICogYXJl IGFkZGVkIGludG8gc2Nhbl9sZWFmcGFydF9ydGlzLgorICoKKyAqIFRoaXMgaXMgdXNlZCBieSBH ZXRDYWNoZWRQbGFuKCkgdG8gaW5mb3JtIGl0cyBjYWxsZXJzIG9mIHRoZSBwcnVuaW5nCisgKiBk ZWNpc2lvbnMgbWFkZSB3aGVuIHBlcmZvcm1pbmcgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbiBh IGdpdmVuIGNhY2hlZAorICogUGxhbm5lZFN0bXQsIHdoaWNoIHRoZSBjYWxsZXJzIHRoZW4gcGFz cyBvbiB0byB0aGUgZXhlY3V0b3IuICBUaGUgZXhlY3V0b3IKKyAqIHJlZmVycyB0byB0aGlzIG5v ZGUgd2hlbiBpbml0aWFsaXppbmcgdGhlIHBsYW4gbm9kZXMgd2hpY2ggY29udGFpbiBzdWJwbGFu cworICogdGhhdCBtYXkgaGF2ZSBiZWVuIHBydW5lZCBieSBFeGVjdXRvckRvSW5pdGlhbFBydW5p bmcoKSwgcmF0aGVyIHRoYW4KKyAqIHJlZG9pbmcgaW5pdGlhbCBwcnVuaW5nLgorICovCit0eXBl ZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVJlc3VsdAoreworCU5vZGVUYWcJCXR5cGU7CisKKwlM aXN0CQkgICAqdmFsaWRfc3VicGxhbl9vZmZzX2xpc3Q7CisJQml0bWFwc2V0CSAgICpzY2FuX2xl YWZwYXJ0X3J0aXM7Cit9IFBhcnRpdGlvblBydW5lUmVzdWx0OworCiAvKiAtLS0tLS0tLS0tLS0t LS0tCiAgKgkJUGxhblN0YXRlIG5vZGUKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCBjZGQ2ZGViZmEwLi5i MzNkOWU0MjZkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTIxMiw2ICsyMTIsNyBAQCBleHRlcm4gc3RydWN0 IEJpdG1hcHNldCAqcmVhZEJpdG1hcHNldCh2b2lkKTsKIGV4dGVybiB1aW50cHRyX3QgcmVhZERh dHVtKGJvb2wgdHlwYnl2YWwpOwogZXh0ZXJuIGJvb2wgKnJlYWRCb29sQ29scyhpbnQgbnVtQ29s cyk7CiBleHRlcm4gaW50ICpyZWFkSW50Q29scyhpbnQgbnVtQ29scyk7CitleHRlcm4gSW5kZXgg KnJlYWRJbmRleENvbHMoaW50IG51bUNvbHMpOwogZXh0ZXJuIE9pZCAqcmVhZE9pZENvbHMoaW50 IG51bUNvbHMpOwogZXh0ZXJuIGludDE2ICpyZWFkQXR0ck51bWJlckNvbHMoaW50IG51bUNvbHMp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGE0ZTZiNGRiOTIuLjg2ZWRhNmM3YzMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCkBAIC0xMjUsNiArMTI1LDE5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5u ZXJHbG9iYWwKIAkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4gdGhl IHBsYW4gKi8KIAlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsKIAorCS8qCisJICogRG8gYW55IG9m IHRob3NlIFBhcnRpdGlvblBydW5lSW5mb3MgaGF2ZSBpbml0aWFsIChwcmUtZXhlYykgcHJ1bmlu ZworCSAqIHN0ZXBzIGluIHRoZW0/CisJICovCisJYm9vbAkJY29udGFpbnNJbml0aWFsUHJ1bmlu ZzsKKworCS8qCisJICogSW5kZXhlcyBvZiBhbGwgcmFuZ2UgdGFibGUgZW50cmllcyBtaW51cyBp bmRleGVzIG9mIHJhbmdlIHRhYmxlIGVudHJpZXMKKwkgKiBvZiB0aGUgbGVhZiBwYXJ0aXRpb25z IHNjYW5uZWQgYnkgcHJ1bmFibGUgc3VicGxhbnM7IHNlZQorCSAqIEFjcXVpcmVFeGVjdXRvckxv Y2tzKCkKKwkgKi8KKwlCaXRtYXBzZXQgICptaW5Mb2NrUmVsaWRzOworCiAJLyogT0lEcyBvZiBy ZWxhdGlvbnMgdGhlIHBsYW4gZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCBmMmRhYWJiM2I3Li4xZDJjMGQ5YmRmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaApAQCAtNzIsOCArNzIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0 bXQKIAlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZUlu Zm8gY29udGFpbmVkIGluCiAJCQkJCQkJCSAqIHRoZSBwbGFuICovCiAKKwlib29sCQljb250YWlu c0luaXRpYWxQcnVuaW5nOwkvKiBEbyBhbnkgb2YgdGhvc2UgUGFydGl0aW9uUHJ1bmVJbmZvcwor CQkJCQkJCQkJCSAqIGhhdmUgaW5pdGlhbCAocHJlLWV4ZWMpIHBydW5pbmcKKwkJCQkJCQkJCQkg KiBzdGVwcyBpbiB0aGVtPyAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFu Z2VUYmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqbWluTG9ja1JlbGlkczsJLyogSW5k ZXhlcyBvZiBhbGwgcmFuZ2UgdGFibGUgZW50cmllcyBtaW51cworCQkJCQkJCQkgKiBpbmRleGVz IG9mIHJhbmdlIHRhYmxlIGVudHJpZXMgb2YgdGhlIGxlYWYKKwkJCQkJCQkJICogcGFydGl0aW9u cyBzY2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5zOworCQkJCQkJCQkgKiBzZWUgQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoKSAqLworCiAJLyogcnRhYmxlIGluZGV4ZXMgb2YgdGFyZ2V0IHJlbGF0aW9u cyBmb3IgSU5TRVJUL1VQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnM7 CS8qIGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIApAQCAtMTQwOSw2ICsx NDE4LDEzIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dNYXJrCiAgKiBwcnVuZV9pbmZvcwkJCUxp c3Qgb2YgTGlzdHMgY29udGFpbmluZyBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcywKICAq CQkJCQkJb25lIHN1Ymxpc3QgcGVyIHJ1bi10aW1lLXBydW5hYmxlIHBhcnRpdGlvbiBoaWVyYXJj aHkKICAqCQkJCQkJYXBwZWFyaW5nIGluIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3Mgc3VicGxhbnMu CisgKgorICogbmVlZHNfaW5pdF9wcnVuaW5nCURvZXMgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJl bFBydW5lSW5mb3MgaW4KKyAqCQkJCQkJcHJ1bmVfaW5mb3MgaGF2ZSBpdHMgaW5pdGlhbF9wcnVu aW5nX3N0ZXBzIHNldD8KKyAqCisgKiBuZWVkc19leGVjX3BydW5pbmcJRG9lcyBhbnkgb2YgdGhl IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBpbgorICoJCQkJCQlwcnVuZV9pbmZvcyBoYXZlIGl0 cyBleGVjX3BydW5pbmdfc3RlcHMgc2V0PworICoKICAqIG90aGVyX3N1YnBsYW5zCQlJbmRleGVz IG9mIGFueSBzdWJwbGFucyB0aGF0IGFyZSBub3QgYWNjb3VudGVkIGZvcgogICoJCQkJCQlieSBh bnkgb2YgdGhlIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzIGluCiAgKgkJCQkJCSJwcnVu ZV9pbmZvcyIuICBUaGVzZSBzdWJwbGFucyBtdXN0IG5vdCBiZSBwcnVuZWQuCkBAIC0xNDE5LDYg KzE0MzUsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUluZm8KIAogCU5vZGVUYWcJ CXR5cGU7CiAJTGlzdAkgICAqcHJ1bmVfaW5mb3M7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5n OworCWJvb2wJCW5lZWRzX2V4ZWNfcHJ1bmluZzsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFu czsKIH0gUGFydGl0aW9uUHJ1bmVJbmZvOwogCkBAIC0xNDYzLDYgKzE0ODEsOSBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbwogCS8qIHJlbGF0aW9uIE9JRCBieSBwYXJ0 aXRpb24gaW5kZXgsIG9yIDAgKi8KIAlPaWQJCSAgICpyZWxpZF9tYXAgcGdfbm9kZV9hdHRyKGFy cmF5X3NpemUobnBhcnRzKSk7CiAKKwkvKiBSYW5nZSB0YWJsZSBpbmRleCBieSBwYXJ0aXRpb24g aW5kZXgsIG9yIDAuICovCisJSW5kZXgJICAgKnJ0aV9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3Np emUobnBhcnRzKSk7CisKIAkvKgogCSAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBzaG93cyBob3cg dG8gcHJ1bmUgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgKGkuZS4sCiAJICogd2l0aG91dCB1c2Ug b2YgYW55IFBBUkFNX0VYRUMgUGFyYW1zKTsgaXQgaXMgTklMIGlmIG5vIHN0YXJ0dXAgcHJ1bmlu ZwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVk ZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCAwNDk5NjM1ZjU5Li4xYzViYjVlY2UxIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaApAQCAtMjIwLDcgKzIyMCw4IEBAIGV4dGVybiBMaXN0ICpDYWNoZWRQbGFu R2V0VGFyZ2V0TGlzdChDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hl ZFBsYW4gKkdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJ CQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93 bmVyLAotCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJCQkJCSBMaXN0ICoqcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCk7CiBleHRlcm4gdm9pZCBSZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFu LCBSZXNvdXJjZU93bmVyIG93bmVyKTsKIAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93c1Np bXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmgKaW5kZXggYWVkZGJkYWZlNS4uOWY3NzI3YTgzNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2 ICsxMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFj OwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxp c3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAq Y3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJlIGZyb20gb25lICovCisJTGlzdAkg ICAqcGFydF9wcnVuZV9yZXN1bHRzOwkvKiBsaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyAq LwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1 ZXJ5ICovCiAJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBx dWVyeSAqLwpAQCAtMjQyLDYgKzI0Myw4IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5 KFBvcnRhbCBwb3J0YWwsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJ ICBMaXN0ICpzdG10cywKIAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKK2V4dGVybiB2b2lk IFBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKFBvcnRhbCBwb3J0YWwsCisJCQkJCQkJ CQkJCSBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKIGV4dGVybiBQbGFubmVkU3RtdCAq UG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxD cmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFi bGVEZWxldGVBbGwodm9pZCk7Ci0tIAoyLjM1LjMKCg== --000000000000540a9d05e4c0a1fb--