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 1o8uvn-0006jT-SI for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Jul 2022 02:38:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o8uvl-00020J-QP for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Jul 2022 02:38:21 +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 1o8uvk-0001ys-SF for pgsql-hackers@lists.postgresql.org; Wed, 06 Jul 2022 02:38:21 +0000 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1o8uvf-0004gC-Mk for pgsql-hackers@postgresql.org; Wed, 06 Jul 2022 02:38:19 +0000 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-f2a4c51c45so19728044fac.9 for ; Tue, 05 Jul 2022 19:38:15 -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=0rfpJk0e4rb7IrTI1fXyYViG0t9Nnz0ldb6hpZwaMMg=; b=koNJyuH8bD1jzhfoSJQRZuivnAVWqy3w3m6jDQMwY+jGpmHGpZz7n8kM6IHMZC0Uhy yeAH6xv7AOch4RbJUHG1HoIkXcaijXcVjq6VlEd8JdxWstnMV47Bxw/Fui3FSRhrLh7P VtDVVMz7c87AWhvSTH/cnJh6E6SvdGjVIk3EBHtOJap1UQczR8d7Etiv1ooha1y0zMZF 9bhkQjtPaS6sFIese0HkLsQ+NEfc4Chl5QqLY7fju1btuS3GESDgXzewOrbp/gVqUwTh 6QRM9dzF7cJRl7GR4DHYWQlOP3AfiHWZhwgoLSLfnspH9VIFKho9jiEVb+/jtrChT1Tj XY7A== 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=0rfpJk0e4rb7IrTI1fXyYViG0t9Nnz0ldb6hpZwaMMg=; b=0C8kNJQbQptbDzGBZVsZt3MTeD5z0frHfSMgIVnKfQ8IITjqDTa0wcNKsos8DYZJA/ 3Ogz7rBgHNKZVEab07OXCGnzH9u+B2XSZYFZbc8+03EhU6//j4QMzgzUdsf3AsKox/3c cnBxm+6EEwLtoRaYhbNQ1bspX/dK4cOGPViHmUuuvujKvDg5C/6DmlkjflLENShs/IK1 vZC18LcbLGcvAvKcJSgtpoD9q/yCEAmN0z3rGKhAVaBE3dhZKJUdif75PQIr4AM4vrhh RgB3C3ji2jwtLjd7aGpvbM6u6uwNIlbRUk6+r+cpldiS4a1OO62K9Tk38GSzsb50NC9m KU2A== X-Gm-Message-State: AJIora9nTx2NV/sJrEuXKCRtQ2/36mlaEZ4poTxqo5UxGXBZdSXxNjyE AtCHWoMz/vuFPZOqWF/f6ctS4B4K8LAfI0RoXyA= X-Google-Smtp-Source: AGRyM1uZ6BI9n4SkU7DREVACw7scTUpMrYACGbILC0oYBseMsIkXvnpw1o68j4rNIriScH5tA0jhYQK5pMdItA9ntj0= X-Received: by 2002:a05:6870:218c:b0:10c:2898:a3ed with SMTP id l12-20020a056870218c00b0010c2898a3edmr91774oae.168.1657075094578; Tue, 05 Jul 2022 19:38:14 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Wed, 6 Jul 2022 11:37: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="00000000000061086e05e319dc1e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000061086e05e319dc1e Content-Type: text/plain; charset="UTF-8" On Wed, Jul 6, 2022 at 2:43 AM Jacob Champion wrote: > On Fri, May 27, 2022 at 1:09 AM Amit Langote wrote: > > 0001 contains the mechanical changes of moving PartitionPruneInfo out > > of Append/MergeAppend into a list in PlannedStmt. > > > > 0002 is the main patch to "Optimize AcquireExecutorLocks() by locking > > only unpruned partitions". > > This patchset will need to be rebased over 835d476fd21; looks like > just a cosmetic change. Thanks for the heads up. Rebased and also fixed per comments given by Zhihong Yu on May 28. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000061086e05e319dc1e Content-Type: application/octet-stream; name="v17-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Disposition: attachment; filename="v17-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l58zpk6c0 RnJvbSA2NjUwNTViZTQ0Y2FhZWM5ZGNjMmEzMjUxZjIwY2ViM2M2NzhmYTNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXkgMjAyMiAxNjowMDoyOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDEv Ml0gTW92ZSBQYXJ0aXRpb1BydW5lSW5mbyBvdXQgb2YgcGxhbiBub2RlcyBpbnRvCiBQbGFubmVk U3RtdAoKVGhlIHBsYW5uZXIgd2lsbCBub3cgYWRkIGEgZ2l2ZW4gUGFydGl0aW9QcnVuZUluZm8g dG8KUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgaW5zdGVhZCBvZiBkaXJlY3RseSB0byB0aGUK QXBwZW5kL01lcmdlQXBwZW5kIHBsYW4gbm9kZS4gIFdoYXQgZ2V0cyBzZXQgaW5zdGVhZCBpbiB0 aGUKbGF0dGVyIGlzIGFuIGluZGV4IGZpZWxkIHdoaWNoIHBvaW50cyB0byB0aGUgbGlzdCBlbGVt ZW50Cm9mIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zIGNvbnRhaW5pbmcgdGhlIFBhcnRpdGlv UHJ1bmVJbmZvCmJlbG9uZ2luZyB0byB0aGUgcGxhbiBub2RlLgoKQSBsYXRlciBjb21taXQgd2ls bCBtYWtlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgZG8gdGhlIGluaXRpYWwKcGFydGl0aW9uIHBy dW5pbmcgdG8gZGV0ZXJtaW5lIGEgbWluaW1hbCBzZXQgb2YgcGFydGl0aW9ucyB0byBiZQpsb2Nr ZWQgd2hlbiB2YWxpZGF0aW5nIGEgcGxhbiB0cmVlIGFuZCBpdCB3aWxsIG5lZWQgdG8gY29uc3Vs dCB0aGUKUGFydGl0aW9QcnVuZUluZm9zIHJlZmVyZW5jZWQgdGhlcmVpbiB0byBkbyBzby4gIEl0 IHdvdWxkIGJlIGJldHRlcgpmb3IgdGhlIFBhcnRpdGlvUHJ1bmVJbmZvcyB0byBiZSBhY2Nlc3Np YmxlIGRpcmVjdGx5IHRoYW4gcmVxdWlyaW5nCmEgd2FsayBvZiB0aGUgcGxhbiB0cmVlIHRvIGZp bmQgdGhlbSwgd2hpY2ggaXMgZWFzaWVyIHdoZW4gaXQgY2FuIGJlCmRvbmUgYnkgc2ltcGx5IGl0 ZXJhdGluZyBvdmVyIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zLgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAg ICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAgNCAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9u b2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgfCAgNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9j cmVhdGVwbGFuLmMgfCAyNCArKysrLS0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYyAgICB8ICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAg ICB8IDY1ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYyAgICB8IDE4ICsrKystLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaCAgICB8ICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAg ICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgfCAg NiArKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8IDExICsrKy0t CiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAgfCAgOCArLS0KIDE4IGZp bGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwppbmRleCBlZjJmZDQ2MDkyLi43MmZjMjczNTI0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKQEAgLTgyNSw2ICs4MjUsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxl KTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKKwllc3RhdGUtPmVz X3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3M7CiAKIAkvKgog CSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFy ayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBmMWZkN2Y3 ZThiLi5mNzNiOGMyNjA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTgz LDYgKzE4Myw3IEBAIEV4ZWNTZXJpYWxpemVQbGFuKFBsYW4gKnBsYW4sIEVTdGF0ZSAqZXN0YXRl KQogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJcHN0bXQtPnBhcmFsbGVsTW9kZU5l ZWRlZCA9IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9IHBsYW47CisJcHN0bXQtPnBhcnRQcnVu ZUluZm9zID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zOwogCXBzdG10LT5ydGFibGUgPSBl c3RhdGUtPmVzX3JhbmdlX3RhYmxlOwogCXBzdG10LT5yZXN1bHRSZWxhdGlvbnMgPSBOSUw7CiAJ cHN0bXQtPmFwcGVuZFJlbGF0aW9ucyA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYwppbmRleCBlMDNlYTI3Mjk5Li5iNTVjZGQyNTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5jCkBAIC0xNjM4LDExICsxNjM4LDEzIEBAIGFkanVzdF9wYXJ0aXRpb25fY29s bm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiBQYXJ0aXRpb25Q cnVuZVN0YXRlICoKIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwKIAkJCQkJCSBpbnQgbl90b3RhbF9zdWJwbGFucywKLQkJCQkJCSBQYXJ0aXRpb25QcnVuZUlu Zm8gKnBydW5laW5mbywKKwkJCQkJCSBpbnQgcGFydF9wcnVuZV9pbmRleCwKIAkJCQkJCSBCaXRt YXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpCiB7CiAJUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CisJ UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsaXN0X250aChlc3RhdGUtPmVzX3BhcnRf cHJ1bmVfaW5mb3MsCisJCQkJCQkJCQkJCSBwYXJ0X3BydW5lX2luZGV4KTsKIAogCS8qIFdlIG1h eSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMg Ki8KIAlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYwppbmRleCA5ZGYxZjgxZWE4Li5mOWM3OTc2ZmYyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYwpAQCAtMTE5LDYgKzExOSw4IEBAIENyZWF0ZUV4ZWN1dG9yU3RhdGUodm9p ZCkKIAllc3RhdGUtPmVzX3JlbGF0aW9ucyA9IE5VTEw7CiAJZXN0YXRlLT5lc19yb3dtYXJrcyA9 IE5VTEw7CiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IE5VTEw7CisJZXN0YXRlLT5lc19wYXJ0 X3BydW5lX2luZm9zID0gTklMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHQgPSBOVUxM OwogCiAJZXN0YXRlLT5lc19qdW5rRmlsdGVyID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jCmluZGV4IDM1N2UxMGExZDcuLmM2Zjg2YTY1MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMKQEAgLTEzNCw3ICsxMzQsNyBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5hc19iZWd1biA9IGZh bHNlOwogCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhl biBzZXQgdGhhdCB1cCBub3cgKi8KLQlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwp CisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CiAJCVBhcnRpdGlvblBydW5l U3RhdGUgKnBydW5lc3RhdGU7CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBFeGVjSW5pdEFwcGVuZChB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKi8KIAkJcHJ1bmVz dGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygmYXBwZW5kc3RhdGUtPnBzLAogCQkJCQkJ CQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBsYW5zKSwKLQkJCQkJCQkJCQkJICBub2Rl LT5wYXJ0X3BydW5lX2luZm8sCisJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwK IAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CiAJCWFwcGVuZHN0YXRlLT5hc19wcnVuZV9z dGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBs YW5zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggYzVjNjJmYTVj Ny4uOGQzNTg2MGMzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdl QXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAg LTgyLDcgKzgyLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0g RXhlY01lcmdlQXBwZW5kOwogCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMg ZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KLQlpZiAobm9kZS0+cGFydF9wcnVuZV9p bmZvICE9IE5VTEwpCisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CiAJCVBh cnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAKQEAgLTkzLDcgKzkzLDcgQEAgRXhlY0lu aXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCSAqLwogCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCZtZXJn ZXN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwK LQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZm8sCisJCQkJCQkJCQkJCSAgbm9kZS0+ cGFydF9wcnVuZV9pbmRleCwKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CiAJCW1lcmdl c3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9t ZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA3MDZkMjgzYTky Li5iMDJiNGE2NDFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtOTYsNiArOTYsNyBAQCBfY29w eVBsYW5uZWRTdG10KGNvbnN0IFBsYW5uZWRTdG10ICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxE KHBhcmFsbGVsTW9kZU5lZWRlZCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaml0RmxhZ3MpOwogCUNP UFlfTk9ERV9GSUVMRChwbGFuVHJlZSk7CisJQ09QWV9OT0RFX0ZJRUxEKHBhcnRQcnVuZUluZm9z KTsKIAlDT1BZX05PREVfRklFTEQocnRhYmxlKTsKIAlDT1BZX05PREVfRklFTEQocmVzdWx0UmVs YXRpb25zKTsKIAlDT1BZX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKQEAgLTI1Myw3ICsy NTQsNyBAQCBfY29weUFwcGVuZChjb25zdCBBcHBlbmQgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxE KGFwcGVuZHBsYW5zKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChuYXN5bmNwbGFucyk7CiAJQ09QWV9T Q0FMQVJfRklFTEQoZmlyc3RfcGFydGlhbF9wbGFuKTsKLQlDT1BZX05PREVfRklFTEQocGFydF9w cnVuZV9pbmZvKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChwYXJ0X3BydW5lX2luZGV4KTsKIAogCXJl dHVybiBuZXdub2RlOwogfQpAQCAtMjgxLDcgKzI4Miw3IEBAIF9jb3B5TWVyZ2VBcHBlbmQoY29u c3QgTWVyZ2VBcHBlbmQgKmZyb20pCiAJQ09QWV9QT0lOVEVSX0ZJRUxEKHNvcnRPcGVyYXRvcnMs IGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxEKGNvbGxh dGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxE KG51bGxzRmlyc3QsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoYm9vbCkpOwotCUNPUFlfTk9ERV9G SUVMRChwYXJ0X3BydW5lX2luZm8pOworCUNPUFlfU0NBTEFSX0ZJRUxEKHBhcnRfcHJ1bmVfaW5k ZXgpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA0MzE1YzUz MDgwLi43NjE4NDQ0YjRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTMyNSw2ICszMjUsNyBAQCBf b3V0UGxhbm5lZFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5uZWRTdG10ICpub2RlKQog CVdSSVRFX0JPT0xfRklFTEQocGFyYWxsZWxNb2RlTmVlZGVkKTsKIAlXUklURV9JTlRfRklFTEQo aml0RmxhZ3MpOwogCVdSSVRFX05PREVfRklFTEQocGxhblRyZWUpOworCVdSSVRFX05PREVfRklF TEQocGFydFBydW5lSW5mb3MpOwogCVdSSVRFX05PREVfRklFTEQocnRhYmxlKTsKIAlXUklURV9O T0RFX0ZJRUxEKHJlc3VsdFJlbGF0aW9ucyk7CiAJV1JJVEVfTk9ERV9GSUVMRChhcHBlbmRSZWxh dGlvbnMpOwpAQCAtNDU0LDcgKzQ1NSw3IEBAIF9vdXRBcHBlbmQoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IEFwcGVuZCAqbm9kZSkKIAlXUklURV9OT0RFX0ZJRUxEKGFwcGVuZHBsYW5zKTsKIAlXUklU RV9JTlRfRklFTEQobmFzeW5jcGxhbnMpOwogCVdSSVRFX0lOVF9GSUVMRChmaXJzdF9wYXJ0aWFs X3BsYW4pOwotCVdSSVRFX05PREVfRklFTEQocGFydF9wcnVuZV9pbmZvKTsKKwlXUklURV9JTlRf RklFTEQocGFydF9wcnVuZV9pbmRleCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00NzEsNyArNDcy LDcgQEAgX291dE1lcmdlQXBwZW5kKFN0cmluZ0luZm8gc3RyLCBjb25zdCBNZXJnZUFwcGVuZCAq bm9kZSkKIAlXUklURV9PSURfQVJSQVkoc29ydE9wZXJhdG9ycywgbm9kZS0+bnVtQ29scyk7CiAJ V1JJVEVfT0lEX0FSUkFZKGNvbGxhdGlvbnMsIG5vZGUtPm51bUNvbHMpOwogCVdSSVRFX0JPT0xf QVJSQVkobnVsbHNGaXJzdCwgbm9kZS0+bnVtQ29scyk7Ci0JV1JJVEVfTk9ERV9GSUVMRChwYXJ0 X3BydW5lX2luZm8pOworCVdSSVRFX0lOVF9GSUVMRChwYXJ0X3BydW5lX2luZGV4KTsKIH0KIAog c3RhdGljIHZvaWQKQEAgLTI0MzgsNiArMjQzOSw3IEBAIF9vdXRQbGFubmVyR2xvYmFsKFN0cmlu Z0luZm8gc3RyLCBjb25zdCBQbGFubmVyR2xvYmFsICpub2RlKQogCVdSSVRFX05PREVfRklFTEQo ZmluYWxyb3dtYXJrcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVdS SVRFX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKKwlXUklURV9OT0RFX0ZJRUxEKHBhcnRQ cnVuZUluZm9zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJlbGF0aW9uT2lkcyk7CiAJV1JJVEVfTk9E RV9GSUVMRChpbnZhbEl0ZW1zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHBhcmFtRXhlY1R5cGVzKTsK QEAgLTI1MDUsNiArMjUwNyw3IEBAIF9vdXRQbGFubmVySW5mbyhTdHJpbmdJbmZvIHN0ciwgY29u c3QgUGxhbm5lckluZm8gKm5vZGUpCiAJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKGN1ck91dGVyUmVs cyk7CiAJV1JJVEVfTk9ERV9GSUVMRChjdXJPdXRlclBhcmFtcyk7CiAJV1JJVEVfQk9PTF9GSUVM RChwYXJ0Q29sc1VwZGF0ZWQpOworCVdSSVRFX05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOwog fQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNz LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCA2YTA1YjY5NDE1Li5iZjYw MmZmOTNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9z cmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtMTgxNyw2ICsxODE3LDcgQEAgX3JlYWRQ bGFubmVkU3RtdCh2b2lkKQogCVJFQURfQk9PTF9GSUVMRChwYXJhbGxlbE1vZGVOZWVkZWQpOwog CVJFQURfSU5UX0ZJRUxEKGppdEZsYWdzKTsKIAlSRUFEX05PREVfRklFTEQocGxhblRyZWUpOwor CVJFQURfTk9ERV9GSUVMRChwYXJ0UHJ1bmVJbmZvcyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJ0YWJs ZSk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJlc3VsdFJlbGF0aW9ucyk7CiAJUkVBRF9OT0RFX0ZJRUxE KGFwcGVuZFJlbGF0aW9ucyk7CkBAIC0xOTQ5LDcgKzE5NTAsNyBAQCBfcmVhZEFwcGVuZCh2b2lk KQogCVJFQURfTk9ERV9GSUVMRChhcHBlbmRwbGFucyk7CiAJUkVBRF9JTlRfRklFTEQobmFzeW5j cGxhbnMpOwogCVJFQURfSU5UX0ZJRUxEKGZpcnN0X3BhcnRpYWxfcGxhbik7Ci0JUkVBRF9OT0RF X0ZJRUxEKHBhcnRfcHJ1bmVfaW5mbyk7CisJUkVBRF9JTlRfRklFTEQocGFydF9wcnVuZV9pbmRl eCk7CiAKIAlSRUFEX0RPTkUoKTsKIH0KQEAgLTE5NzEsNyArMTk3Miw3IEBAIF9yZWFkTWVyZ2VB cHBlbmQodm9pZCkKIAlSRUFEX09JRF9BUlJBWShzb3J0T3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5u dW1Db2xzKTsKIAlSRUFEX09JRF9BUlJBWShjb2xsYXRpb25zLCBsb2NhbF9ub2RlLT5udW1Db2xz KTsKIAlSRUFEX0JPT0xfQVJSQVkobnVsbHNGaXJzdCwgbG9jYWxfbm9kZS0+bnVtQ29scyk7Ci0J UkVBRF9OT0RFX0ZJRUxEKHBhcnRfcHJ1bmVfaW5mbyk7CisJUkVBRF9JTlRfRklFTEQocGFydF9w cnVuZV9pbmRleCk7CiAKIAlSRUFEX0RPTkUoKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2NyZWF0ZXBsYW4uYwppbmRleCA3NjYwNmZhYTNlLi41OGEwNWNmNjczIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xMjAzLDcgKzEyMDMsNiBAQCBjcmVhdGVf YXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50 IGZsYWdzKQogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCWludAkJCW5hc3luY3BsYW5zID0gMDsK IAlSZWxPcHRJbmZvICpyZWwgPSBiZXN0X3BhdGgtPnBhdGgucGFyZW50OwotCVBhcnRpdGlvblBy dW5lSW5mbyAqcGFydHBydW5laW5mbyA9IE5VTEw7CiAJaW50CQkJbm9kZW51bXNvcnRrZXlzID0g MDsKIAlBdHRyTnVtYmVyICpub2RlU29ydENvbElkeCA9IE5VTEw7CiAJT2lkCQkgICAqbm9kZVNv cnRPcGVyYXRvcnMgPSBOVUxMOwpAQCAtMTM1NCw2ICsxMzUzLDkgQEAgY3JlYXRlX2FwcGVuZF9w bGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykK IAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAKKwkvKiBTZXQg YmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdlIGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUg Ki8KKwlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gLTE7CisKIAkvKgogCSAqIElmIGFueSBxdWFs cyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24K IAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVk IGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTM3NywxNiArMTM3OSwxNCBAQCBjcmVhdGVfYXBwZW5k X3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdz KQogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCi0JCQlwYXJ0cHJ1bmVpbmZvID0KLQkJ CQltYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJCQkJCSBiZXN0X3Bh dGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJcGxhbi0+cGFydF9wcnVu ZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJCQkJCQkJCQkJ CQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKIAlwbGFuLT5uYXN5bmNwbGFu cyA9IG5hc3luY3BsYW5zOwogCXBsYW4tPmZpcnN0X3BhcnRpYWxfcGxhbiA9IGJlc3RfcGF0aC0+ Zmlyc3RfcGFydGlhbF9wYXRoOwotCXBsYW4tPnBhcnRfcHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWlu Zm87CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAoUGF0aCAqKSBiZXN0 X3BhdGgpOwogCkBAIC0xNDI2LDcgKzE0MjYsNiBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCUxpc3QJICAg KnN1YnBsYW5zID0gTklMOwogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCVJlbE9wdEluZm8gKnJl bCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1 bmVpbmZvID0gTlVMTDsKIAogCS8qCiAJICogV2UgZG9uJ3QgaGF2ZSB0aGUgYWN0dWFsIGNyZWF0 aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlIHNwbGl0IG91dApAQCAtMTUxOSw2ICsxNTE4LDkg QEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVu ZFBhdGggKmJlc3RfcGF0aCwKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFu KTsKIAl9CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdlIGNhbiB1c2Ug dG8gcnVuLXRpbWUgcHJ1bmUgKi8KKwlub2RlLT5wYXJ0X3BydW5lX2luZGV4ID0gLTE7CisKIAkv KgogCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVsIHRvIHBlcmZvcm0g ZnVydGhlciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBHYXRoZXIg aW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTU0MiwxMyArMTU0NCwx MyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBw ZW5kUGF0aCAqYmVzdF9wYXRoLAogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCi0JCQlw YXJ0cHJ1bmVpbmZvID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKLQkJCQkJ CQkJCQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkgcHJ1bmVxdWFsKTsK KwkJCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9v dCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJICBiZXN0X3BhdGgtPnN1YnBhdGhzLAorCQkJCQkJCQkJ CQkJCQkJICBwcnVuZXF1YWwpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFuczsK LQlub2RlLT5wYXJ0X3BydW5lX2luZm8gPSBwYXJ0cHJ1bmVpbmZvOworCiAKIAkvKgogCSAqIElm IHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNvcnQgY29sdW1ucywgYnV0IHdlIHdl cmUgdG9sZCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDA2YWQ4NTZl YWMuLmIxMTI0OWVkOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTUx OCw2ICs1MTgsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAq cXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPmRlcGVuZHNPblJvbGUg PSBnbG9iLT5kZXBlbmRzT25Sb2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xv Yi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKKwly ZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5y dGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGds b2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFw cGVuZFJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCA5Y2Vm OTJjYWIyLi5iOGQ1NjEwNTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBA IC0zNDgsNiArMzQ4LDI5IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3Qs IFBsYW4gKnBsYW4pCiAJCX0KIAl9CiAKKwkvKiBBbHNvIGZpeCB1cCB0aGUgaW5mb3JtYXRpb24g aW4gUGFydGl0aW9uUHJ1bmVJbmZvcy4gKi8KKwlmb3JlYWNoIChsYywgcm9vdC0+cGFydFBydW5l SW5mb3MpCisJeworCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7 CisJCUxpc3RDZWxsICAqbDsKKworCQlmb3JlYWNoKGwsIHBydW5laW5mby0+cHJ1bmVfaW5mb3Mp CisJCXsKKwkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0KGwpOworCQkJTGlzdENlbGwg ICAqbDI7CisKKwkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQorCQkJeworCQkJCVBhcnRpdGlv bmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7CisKKwkJCQkvKiBSVCBpbmRleCBv ZiB0aGUgdGFibGUgdG8gd2hpY2ggdGhlIHBpbmZvIGJlbG9uZ3MuICovCisJCQkJcGluZm8tPnJ0 aW5kZXggKz0gcnRvZmZzZXQ7CisJCQl9CisJCX0KKworCQlnbG9iLT5wYXJ0UHJ1bmVJbmZvcyA9 IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7CisJfQorCiAJcmV0dXJu IHJlc3VsdDsKIH0KIApAQCAtMTY1NSwyMSArMTY3OCwxMiBAQCBzZXRfYXBwZW5kX3JlZmVyZW5j ZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAlhcGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlk X3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CiAKLQlpZiAoYXBsYW4tPnBhcnRfcHJ1 bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgYXBsYW4tPnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVf aW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0KGwpOwotCQkJTGlz dENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQotCQkJewotCQkJCVBh cnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7Ci0KLQkJCQlwaW5mby0+ cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQotCX0KKwkvKgorCSAqIFBhcnRpdGlvblBy dW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3QgaW4gUGxhbm5lckdsb2JhbCwgc28gdXBk YXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmIChhcGxhbi0+cGFydF9wcnVuZV9pbmRleCA+ PSAwKQorCQlhcGxhbi0+cGFydF9wcnVuZV9pbmRleCArPSBsaXN0X2xlbmd0aChyb290LT5nbG9i LT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVm dHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChhcGxhbi0+cGxhbi5sZWZ0dHJlZSA9 PSBOVUxMKTsKQEAgLTE3MjcsMjEgKzE3NDEsMTIgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5j ZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAltcGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlk X3NldChtcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CiAKLQlpZiAobXBsYW4tPnBhcnRfcHJ1 bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgbXBsYW4tPnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVf aW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0KGwpOwotCQkJTGlz dENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQotCQkJewotCQkJCVBh cnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7Ci0KLQkJCQlwaW5mby0+ cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQotCX0KKwkvKgorCSAqIFBhcnRpdGlvblBy dW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3QgaW4gUGxhbm5lckdsb2JhbCwgc28gdXBk YXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmRleCA+ PSAwKQorCQltcGxhbi0+cGFydF9wcnVuZV9pbmRleCArPSBsaXN0X2xlbmd0aChyb290LT5nbG9i LT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVm dHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChtcGxhbi0+cGxhbi5sZWZ0dHJlZSA9 PSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu YyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA5ZDNjMDVhZWQz Li5kNzdmN2QzYWVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0yMDks MTYgKzIwOSwyMCBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zyb21fZXhwcihQYXJ0aXRp b25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAKIC8qCiAgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWlu Zm8KLSAqCQlCdWlsZHMgYSBQYXJ0aXRpb25QcnVuZUluZm8gd2hpY2ggY2FuIGJlIHVzZWQgaW4g dGhlIGV4ZWN1dG9yIHRvIGFsbG93Ci0gKgkJYWRkaXRpb25hbCBwYXJ0aXRpb24gcHJ1bmluZyB0 byB0YWtlIHBsYWNlLiAgUmV0dXJucyBOVUxMIHdoZW4KLSAqCQlwYXJ0aXRpb24gcHJ1bmluZyB3 b3VsZCBiZSB1c2VsZXNzLgorICoJCUNoZWNrcyBpZiB0aGUgZ2l2ZW4gc2V0IG9mIHF1YWxzIGNh biBiZSB1c2VkIHRvIGJ1aWxkIHBydW5pbmcgc3RlcHMKKyAqCQl0aGF0IHRoZSBleGVjdXRvciBj YW4gdXNlIHRvIHBydW5lIGF3YXkgdW5uZWVkZWQgcGFydGl0aW9ucy4gIElmCisgKgkJc3VpdGFi bGUgcXVhbHMgYXJlIGZvdW5kIHRoZW4gYSBQYXJ0aXRpb25QcnVuZUluZm8gaXMgYnVpbHQgYW5k IHRhZ2dlZAorICoJCW9udG8gdGhlIFBsYW5uZXJJbmZvJ3MgcGFydFBydW5lSW5mb3MgbGlzdC4K KyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBpdGVt IGFkZGVkIHRvIHRoZQorICogcGFydFBydW5lSW5mb3MgbGlzdCBvciAtMSBpZiBub3RoaW5nIHdh cyBhZGRlZC4KICAqCiAgKiAncGFyZW50cmVsJyBpcyB0aGUgUmVsT3B0SW5mbyBmb3IgYW4gYXBw ZW5kcmVsLCBhbmQgJ3N1YnBhdGhzJyBpcyB0aGUgbGlzdAogICogb2Ygc2NhbiBwYXRocyBmb3Ig aXRzIGNoaWxkIHJlbHMuCiAgKiAncHJ1bmVxdWFsJyBpcyBhIGxpc3Qgb2YgcG90ZW50aWFsIHBy dW5pbmcgcXVhbHMgKGkuZS4sIHJlc3RyaWN0aW9uCiAgKiBjbGF1c2VzIHRoYXQgYXJlIGFwcGxp Y2FibGUgdG8gdGhlIGFwcGVuZHJlbCkuCiAgKi8KLVBhcnRpdGlvblBydW5lSW5mbyAqCitpbnQK IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCQkJCQkJIExpc3QgKnN1YnBhdGhzLAogCQkJCQkJIExpc3QgKnBydW5lcXVh bCkKQEAgLTMzMiw3ICszMzYsNyBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywgdGhlbiB3ZSBjYW4g anVzdCBub3QgYm90aGVyIHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVy ZWxpbmZvcyA9PSBOSUwpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNl IGJ1aWxkIHRoZSByZXN1bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9k ZShQYXJ0aXRpb25QcnVuZUluZm8pOwpAQCAtMzU4LDcgKzM2Miw5IEBAIG1ha2VfcGFydGl0aW9u X3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWVs c2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJwbGFucyA9IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVp bmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9zID0gbGFwcGVuZChyb290LT5wYXJ0UHJ1bmVJbmZv cywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBsaXN0X2xlbmd0aChyb290LT5wYXJ0UHJ1bmVJbmZv cykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDcw ODQzNWU5NTIuLmJmOTYyYWY3YWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgK QEAgLTEyMyw5ICsxMjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAK IGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxh blN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAot CQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJ CQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqKmluaXRp YWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJCQkJCQkJCQkgICBi b29sIGluaXRpYWxfcHJ1bmUpOwotCiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BBUlRJVElPTl9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDU3Mjg4MDEzNzkuLjI1ZTBiYjk3NmUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCkBAIC01OTYsNiArNTk2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJ c3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9mIHBlci1yYW5nZS10 YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICov CiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRy ZWUgKi8KKwlMaXN0CQkqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBy dW5lSW5mb3MgKi8KKwlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKmVzX3BhcnRfcHJ1bmVf cmVzdWx0OyAvKiBRdWVyeURlc2MucGFydF9wcnVuZV9yZXN1bHQgKi8KIAljb25zdCBjaGFyICpl c19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0Zp bHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggYjg4Y2ZiOGRjMC4uYTBmM2E0NjMzNCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmgKQEAgLTEwNyw2ICsxMDcsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xv YmFsCiAKIAlMaXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CS8qICJmbGF0IiBsaXN0IG9mIEFwcGVu ZFJlbEluZm9zICovCiAKKwlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsJCS8qIExpc3Qgb2YgUGFy dGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbgorCQkJCQkJCQkJICogdGhlIHBsYW4gKi8KKwog CUxpc3QJICAgKnJlbGF0aW9uT2lkczsJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4gZGVw ZW5kcyBvbiAqLwogCiAJTGlzdAkgICAqaW52YWxJdGVtczsJCS8qIG90aGVyIGRlcGVuZGVuY2ll cywgYXMgUGxhbkludmFsSXRlbXMgKi8KQEAgLTM4Niw2ICszODksOSBAQCBzdHJ1Y3QgUGxhbm5l ckluZm8KIAogCS8qIERvZXMgdGhpcyBxdWVyeSBtb2RpZnkgYW55IHBhcnRpdGlvbiBrZXkgY29s dW1ucz8gKi8KIAlib29sCQlwYXJ0Q29sc1VwZGF0ZWQ7CisKKwkvKiBQYXJ0aXRpb25QcnVuZUlu Zm9zIGFkZGVkIGluIHRoaXMgcXVlcnkncyBwbGFuLiAqLworCUxpc3QJICAgKnBhcnRQcnVuZUlu Zm9zOwogfTsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGQ1YzBlYmU4NTkuLmMzZjRhMzk2 NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC02NCw2ICs2NCw5IEBAIHR5cGVkZWYgc3RydWN0 IFBsYW5uZWRTdG10CiAKIAlzdHJ1Y3QgUGxhbiAqcGxhblRyZWU7CQkvKiB0cmVlIG9mIFBsYW4g bm9kZXMgKi8KIAorCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlv blBydW5lSW5mbyBjb250YWluZWQgaW4KKwkJCQkJCQkJICogdGhlIHBsYW4gKi8KKwogCUxpc3QJ ICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAogCS8qIHJ0 YWJsZSBpbmRleGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRF ICovCkBAIC0yNjIsOCArMjY1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJICovCiAJaW50 CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBw cnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlv blBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBh cnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0 X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5Nyw4 ICszMDAsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAogCS8qIE5VTExTIEZJUlNUL0xB U1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3Q7CiAKLQkvKiBJbmZvIGZvciBy dW4tdGltZSBzdWJwbGFuIHBydW5pbmc7IE5VTEwgaWYgd2UncmUgbm90IGRvaW5nIHRoYXQgKi8K LQlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0X3BydW5lX2luZm87CisJLyogSW5kZXgg dG8gUGxhbm5lckluZm8ucGFydFBydW5lSW5mb3Mgb3IgLTEgaWYgbm8gcnVuLXRpbWUgcHJ1bmlu ZyAqLworCWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9IE1lcmdlQXBwZW5kOwogCiAvKiAtLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggOTA2ODRl ZmEyNS4uZWJmMGRjZmY4YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAt NzAsMTAgKzcwLDEwIEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lQ29udGV4dAogI2Rl ZmluZSBQcnVuZUN4dFN0YXRlSWR4KHBhcnRuYXR0cywgc3RlcF9pZCwga2V5bm8pIFwKIAkoKHBh cnRuYXR0cykgKiAoc3RlcF9pZCkgKyAoa2V5bm8pKQogCi1leHRlcm4gUGFydGl0aW9uUHJ1bmVJ bmZvICptYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAot CQkJCQkJCQkJCQkJCXN0cnVjdCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCi0JCQkJCQkJCQkJCQkJ TGlzdCAqc3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJTGlzdCAqcHJ1bmVxdWFsKTsKK2V4dGVybiBp bnQgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKKwkJ CQkJCQkJCXN0cnVjdCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJCQlMaXN0ICpzdWJw YXRocywKKwkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7CiBleHRlcm4gQml0bWFwc2V0ICpwcnVu ZV9hcHBlbmRfcmVsX3BhcnRpdGlvbnMoc3RydWN0IFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4g Qml0bWFwc2V0ICpnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucyhQYXJ0aXRpb25QcnVuZUNvbnRleHQg KmNvbnRleHQsCiAJCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzKTsKLS0gCjIuMzUuMwoK --00000000000061086e05e319dc1e Content-Type: application/octet-stream; name="v17-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v17-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l58zpk6h1 RnJvbSBlNWQwMjgzNzMyMzExZmIwNjhhZDc1ZWU0ZmYyODJlYmU1MzA2MjY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDIv 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 ICAgICAgICAgICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAg ICAgIHwgIDI3ICsrKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgfCAg MjkgKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAgICAgICAgICB8ICA1MSArKysr KysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgIHwgICAyICsKIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgIHwgIDQ2ICsrKysrCiBzcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICB8ICA0MSArKysrLQogc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMgICAgICAgICAgICAgIHwgIDI4ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMgICAgfCAxODQgKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9wb3J0YWxtZW0uYyAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgg ICB8ICAgOSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgfCAgIDMg Kwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgfCAgIDIgKwogc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgMjcgKysrCiBzcmMvaW5jbHVkZS9u b2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCAgICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAg ICAgICAgICB8ICAyMSArKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICAg IHwgICAzICstCiBzcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICB8ICAgMyAr CiAzNCBmaWxlcyBjaGFuZ2VkLCA4NTYgaW5zZXJ0aW9ucygrKSwgOTYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwppbmRleCBmY2EyOWE5YTEwLi5kODM5NTE3NjkzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYwpAQCAtNTQxLDcgKzU0MSw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3Rh dGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291 cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52 YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jcmVhdGVhcy5jCmluZGV4IDlhYmJiNmI1NTUuLmY2NjA3ZjI0NTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBz aG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBv dXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0 aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBx dWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBlMjljMmFlMjA2Li5lNDFi MTNhM2VhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00MDcsNyArNDA3LDcgQEAgRXhwbGFp bk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCX0KIAogCQkvKiBy dW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQbGFu KHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhwbGFp bk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5 RW52LAogCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBO VUxMKSk7CiAJfQogfQpAQCAtNTE1LDcgKzUxNSw4IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUg KnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICogdG8g Y2FsbCBpdC4KICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBsYW4o UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVu ZV9yZXN1bHQsCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJ ICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlv biwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKQEAgLTU2Myw3ICs1NjQsNyBA QCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVy eURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFubmVkc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJ CQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBh cmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYwppbmRleCAzZGI4NTljM2VhLi42MzFjYzA3MjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYwpAQCAtNzc2LDcgKzc3Niw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpz cWwpCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKLQkJCQlxZGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhzdG10LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIE5VTEwsCiAJ CQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJ CQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggZDFl ZTEwNjQ2NS4uZTg3ODIwOTY3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0 dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA4LDcgKzQw OCw3IEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIgKmRlc3QsIFF1ZXJ5 ICpxdWVyeSwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3JlYXRl IGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICov Ci0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBOVUxM LCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDIzMzNhYWU0NjcuLjgzNDY1 ZTQwZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE1NSw2ICsxNTUsNyBAQCBFeGVjdXRl UXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAlD YWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CisJTGlzdAkgICAqcGFydF9w cnVuZV9yZXN1bHRfbGlzdDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVTdGF0 ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlQb3J0YWwJCXBvcnRhbDsKQEAgLTE5Myw3ICsxOTQsMTAg QEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCSAgIGVudHJ5LT5w bGFuc291cmNlLT5xdWVyeV9zdHJpbmcpOwogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGlu Y3JlbWVudCBwbGFuIHJlZmNvdW50IGZvciBwb3J0YWwgKi8KLQljcGxhbiA9IEdldENhY2hlZFBs YW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwpOworCWNwbGFuID0gR2V0 Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgTlVMTCwKKwkJCQkJ CSAgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+ c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KSk7 CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDcsNiArMjExLDkg QEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBwbGFuX2xpc3QsCiAJ CQkJCSAgY3BsYW4pOwogCisJLyogQ29weSBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUg cG9ydGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhw b3J0YWwsIHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCiAJLyoKIAkgKiBGb3IgQ1JFQVRFIFRB QkxFIC4uLiBBUyBFWEVDVVRFLCB3ZSBtdXN0IHZlcmlmeSB0aGF0IHRoZSBwcmVwYXJlZAogCSAq IHN0YXRlbWVudCBpcyBvbmUgdGhhdCBwcm9kdWNlcyB0dXBsZXMuICBDdXJyZW50bHkgd2UgaW5z aXN0IHRoYXQgaXQgYmUKQEAgLTU3Niw3ICs1ODMsOSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAljb25zdCBjaGFyICpxdWVyeV9zdHJpbmc7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlzdAkg ICAqcGxhbl9saXN0OwotCUxpc3RDZWxsICAgKnA7CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1 bHRfbGlzdDsKKwlMaXN0Q2VsbCAgICpwLAorCQkJICAgKnBwOwogCVBhcmFtTGlzdEluZm8gcGFy YW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwogCWluc3RyX3RpbWUJcGxh bnN0YXJ0OwpAQCAtNjE5LDcgKzYyOCwxMCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVT dG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCS8q IFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCiAJ Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAotCQkJCQkJ ICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYpOworCQkJCQkJICBDdXJyZW50UmVzb3Vy Y2VPd25lciwgcXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwlB c3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgo cGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwbGFu ZHVyYXRpb24pOwogCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFuc3RhcnQp OwpAQCAtNjM0LDEzICs2NDYsMTUgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAq ZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJcGxhbl9saXN0 ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qIEV4cGxhaW4gZWFjaCBxdWVyeSAqLwotCWZvcmVh Y2gocCwgcGxhbl9saXN0KQorCWZvcmJvdGgocCwgcGxhbl9saXN0LCBwcCwgcGFydF9wcnVuZV9y ZXN1bHRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBwKTsKKwkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0ID0g bGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQsIHBwKTsKIAogCQlpZiAocHN0bXQtPmNv bW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8s IGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAotCQkJCQkJICAgJnBsYW5kdXJh dGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQkJRXhwbGFpbk9uZVBs YW4ocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAorCQkJ CQkJICAgcGFyYW1MSSwgcXVlcnlFbnYsICZwbGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1 ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5 KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBh cmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURN RSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCAwYjUxODNmYzRhLi45NTNhNDc2 ZWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC02NSw2ICs2NSwzNCBAQCBmb3VuZCB0aGVyZS4gIFRo aXMgY3VycmVudGx5IG9ubHkgb2NjdXJzIGZvciBBcHBlbmQgYW5kIE1lcmdlQXBwZW5kIG5vZGVz LiAgSW4KIHRoaXMgY2FzZSB0aGUgbm9uLXJlcXVpcmVkIHN1YnBsYW5zIGFyZSBpZ25vcmVkIGFu ZCB0aGUgZXhlY3V0b3Igc3RhdGUncwogc3Vibm9kZSBhcnJheSB3aWxsIGJlY29tZSBvdXQgb2Yg c2VxdWVuY2UgdG8gdGhlIHBsYW4ncyBzdWJwbGFuIGxpc3QuCiAKK0FjdHVhbGx5LCB0aGUgc28t Y2FsbGVkIGV4ZWN1dGlvbiB0aW1lIHBydW5pbmcgbWF5IGFsc28gb2NjdXIgZXZlbiBiZWZvcmUg dGhlCitleGVjdXRpb24gaGFzIHN0YXJ0ZWQuICBPbmUgY2FzZSB3aGVyZSB0aGF0IG9jY3VycyBp cyB3aGVuIGEgY2FjaGVkIGdlbmVyaWMKK3BsYW4gaXMgYmVpbmcgdmFsaWRhdGVkIGZvciBleGVj dXRpb24gYnkgcGxhbmNhY2hlLmM6IEdldENhY2hlZFBsYW4oKSwgd2hpY2gKK3dvcmtzIGJ5IGxv Y2tpbmcgYWxsIHRoZSByZWxhdGlvbnMgdGhhdCB3aWxsIGJlIHNjYW5uZWQgYnkgdGhhdCBwbGFu LiAgSWYgdGhlCitnZW5lcmljIHBsYW4gY29udGFpbnMgbm9kZXMgdGhhdCBjYW4gcGVyZm9ybSBl eGVjdXRpb24gdGltZSBwYXJ0aXRpb24gcHJ1bmluZworKHRoYXQgaXMsIGNvbnRhaW4gYSBQYXJ0 aXRpb25QcnVuZUluZm8pLCBhIHN1YnNldCBvZiBwcnVuaW5nIHN0ZXBzIGNvbnRhaW5lZAoraW4g YSBnaXZlbiBub2RlJ3MgUGFydGl0aW9uUHJ1bmVJbmZvIHRoYXQgZG8gbm90IGRlcGVuZCBvbiB0 aGUgZXhlY3V0aW9uCithY3R1YWxseSBoYXZpbmcgc3RhcnRlZCAoY2FsbGVkICJpbml0aWFsIiBw cnVuaW5nIHN0ZXBzKSBhcmUgcGVyZm9ybWVkIGF0IHRoaXMKK3BvaW50IHRvIGZpZ3VyZSBvdXQg dGhlIG1pbmltYWwgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0aXNmeSB0aG9zZQorcHJ1 bmluZyBzdGVwcy4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgbG9va2luZyBhdCBhIGdpdmVuIHBs YW4gdHJlZSB3aWxsIHRoZW4KK2xvY2sgb25seSB0aGUgcmVsYXRpb25zIHNjYW5uZWQgYnkgdGhl IGNoaWxkIHN1YnBsYW5zIHRoYXQgc3Vydml2ZWQgc3VjaAorcHJ1bmluZywgYWxvbmcgd2l0aCB0 aG9zZSBwcmVzZW50IGluIFBsYW5uZWRTdG10Lm1pbkxvY2tSZWxpZHMuICBOb3RlIHRoYXQgdGhl CitzdWJwbGFucyBhcmUgb25seSBub3Rpb25hbGx5IHBydW5lZCBpbiB0aGF0IHRoZXkgYXJlIG5v dCByZW1vdmVkIGZyb20gdGhlIHBsYW4KK3RyZWUgYXMgc3VjaC4KKworVG8gcHJldmVudCB0aGUg ZXhlY3V0b3IgYW5kIGFueSB0aGlyZCBwYXJ0eSBleGVjdXRpb24gY29kZSB0aGF0IGNhbiBsb29r IGF0Cit0aGUgcGxhbiB0cmVlIGZyb20gdHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIHN1YnBsYW5zIHRo YXQgd2VyZSBwcnVuZWQgYXMKK2Rlc2NyaWJlZCBhYm92ZSwgdGhlIHJlc3VsdCBvZiBwcnVuaW5n IGlzIHBhc3NlZCB0byB0aGUgZXhlY3V0b3IgYXMgYQorUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9k ZSB2aWEgdGhlIFF1ZXJ5RGVzYy4gIEl0IGNvbnNpc3RzIG9mIHRoZSBzZXQgb2YKK2luZGV4ZXMg b2Ygc3Vydml2aW5nIHN1YnBsYW5zIGluIHRoZWlyIHJlc3BlY3RpdmUgcGFyZW50IHBsYW4gbm9k ZSdzIGxpc3Qgb2YKK2NoaWxkIHN1YnBsYW5zLCBzYXZlZCBhcyBhIGxpc3Qgb2YgYml0bWFwc2V0 cywgd2l0aCBvbmUgZWxlbWVudCBmb3IgZXZlcnkKK3BhcmVudCBwbGFuIG5vZGUgd2hvc2UgUGFy dGl0aW9uUHJ1bmVJbmZvIGlzIHByZXNlbnQgaW4KK1BsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9z LiAgSW4gb3RoZXIgd29yZHMsIHRoZSBleGVjdXRvciBzaG91bGQgbm90CityZS1ldmFsdWF0ZSB0 aGUgc2V0IG9mIGluaXRpYWxseSB2YWxpZCBzdWJwbGFucyBieSByZWRvaW5nIHRoZSBpbml0aWFs IHBydW5pbmcKK2lmIGl0IHdhcyBhbHJlYWR5IGRvbmUgYnkgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSwgYmVjYXVzZSB0aGUgcmUtZXZhbHVhdGlvbiBtYXkKK3Zlcnkgd2VsbCBlbmQgdXAgcmVzdWx0 aW5nIGluIGEgZGlmZmVyZW50IHNldCBvZiBzdWJwbGFucywgY29udGFpbmluZyBzb21lCit3aG9z ZSByZWxhdGlvbnMgd2VyZSBub3QgbG9ja2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuCisK IEVhY2ggUGxhbiBub2RlIG1heSBoYXZlIGV4cHJlc3Npb24gdHJlZXMgYXNzb2NpYXRlZCB3aXRo IGl0LCB0byByZXByZXNlbnQKIGl0cyB0YXJnZXQgbGlzdCwgcXVhbGlmaWNhdGlvbiBjb25kaXRp b25zLCBldGMuICBUaGVzZSB0cmVlcyBhcmUgYWxzbwogcmVhZC1vbmx5IHRvIHRoZSBleGVjdXRv ciwgYnV0IHRoZSBleGVjdXRvciBzdGF0ZSBmb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uCkBAIC0y ODYsNiArMzE0LDEwIEBAIFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJvbCBGbG93CiAKIFRoaXMgaXMg YSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKKyAg WyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcgXSAtLS0gYW4gb3B0aW9uYWwgc3RlcCB0byBwZXJm b3JtIGluaXRpYWwKKwkJcGFydGl0aW9uIHBydW5pbmcgb24gdGhlIHBsYW4gdHJlZSB0aGUgcmVz dWx0IG9mIHdoaWNoIGlzIHBhc3NlZAorCQl0byB0aGUgZXhlY3V0b3IgdmlhIFF1ZXJ5RGVzYwor CiAJQ3JlYXRlUXVlcnlEZXNjCiAKIAlFeGVjdXRvclN0YXJ0CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwppbmRleCA3MmZjMjczNTI0Li40NTgyNDYyNGY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK QEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9tYXR2aWV3LmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZWJ1Zy5oIgor I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9u b2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAiaml0 L2ppdC5oIgpAQCAtMTA0LDYgKzEwNSw1NiBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFy dChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKIAogLyogZW5kIG9mIGxvY2Fs IGRlY2xzICovCiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcKKyAq CisgKgkJRm9yIGVhY2ggcGxhbiB0cmVlIG5vZGUgdGhhdCBoYXMgYmVlbiBhc3NpZ25lZCBhIFBh cnRpdGlvblBydW5lSW5mbywKKyAqCQl0aGlzIHBlcmZvcm1zIGluaXRpYWwgcGFydGl0aW9uIHBy dW5pbmcgdXNpbmcgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorICoJCXRoZXJlaW4gdG8gZGV0 ZXJtaW5lIHRoZSBzZXQgb2YgY2hpbGQgc3VicGxhbnMgdGhhdCBzYXRpc2Z5IHRoZSBpbml0aWFs CisgKgkJcHJ1bmluZyBzdGVwcywgdG8gYmUgcmV0dXJuZWQgYXMgYSBiaXRtYXBzZXQgb2YgdGhl aXIgaW5kZXhlcyBpbiB0aGUKKyAqCQlub2RlJ3MgbGlzdCBvZiBjaGlsZCBzdWJwbGFucyAoZm9y IGV4YW1wbGUsIGFuIEFwcGVuZCdzIGFwcGVuZHBsYW5zKS4KKyAqCisgKiBSZXR1cm4gdmFsdWUg aXMgYSBQYXJ0aXRpb25QcnVuZVJlc3VsdCBub2RlIHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIHRo b3NlCisgKiBiaXRtYXBzZXRzLCB3aXRoIG9uZSBlbGVtZW50IGZvciBldmVyeSBQYXJ0aXRpb25Q cnVuZUluZm8sIGFuZCBhIGJpdG1hcHNldAorICogb2YgdGhlIFJUIGluZGV4ZXMgb2YgYWxsIHRo ZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9zZSBjaG9zZW4KKyAqIHN1YnBsYW5zLiAg Tm90ZSB0aGF0IHRoZSBsYXR0ZXIgaXMgc2hhcmVkIGFjcm9zcyBhbGwgUGFydGl0aW9uUHJ1bmVJ bmZvcy4KKyAqCisgKiBUaGUgZXhlY3V0b3IgbXVzdCBzZWUgdGhlIGV4YWN0bHkgc2FtZSBzZXQg b2Ygc3VicGxhbnMgYXMgdmFsaWQgZm9yCisgKiBleGVjdXRpb24gd2hlbiBkb2luZyBFeGVjSW5p dE5vZGUoKSBvbiB0aGUgcGxhbiBub2RlcyB3aG9zZQorICogUGFydGl0aW9uUHJ1bmVJbmZvcyBh cmUgcHJvY2Vzc2VkIGhlcmUuICBTbywgaXQgbXVzdCBnZXQgdGhlIHNldCBmcm9tIHRoZQorICog YWZvcmVtZW50aW9uZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQsIGluc3RlYWQgb2YgY29tcHV0aW5n IGl0IGFsbCBvdmVyCisgKiBhZ2FpbiBieSByZWRvaW5nIHRoZSBpbml0aWFsIHBydW5pbmcuICBJ dCdzIHRoZSBjYWxsZXIncyBqb2IgdG8gcGFzcyB0aGUKKyAqIFBhcnRpdGlvblBydW5lUmVzdWx0 IHRvIHRoZSBleGVjdXRvci4KKyAqCisgKiBOb3RlOiBQYXJ0aXRpb25lZCB0YWJsZXMgbWVudGlv bmVkIGluIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzIHRoYXQKKyAqIGRyaXZlIHRoZSBw cnVuaW5nIHdpbGwgYmUgbG9ja2VkIGJlZm9yZSBkb2luZyB0aGUgcHJ1bmluZy4KKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworUGFydGl0aW9uUHJ1bmVSZXN1bHQgKgorRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5n KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMpCit7CisJUGFy dGl0aW9uUHJ1bmVSZXN1bHQgKnJlc3VsdDsKKwlMaXN0Q2VsbCAqbGM7CisKKwkvKiBPbmx5IGdl dCBoZXJlIGlmIHRoZXJlIGlzIGFueSBwcnVuaW5nIHRvIGRvLiAqLworCUFzc2VydChwbGFubmVk c3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZyk7CisKKwlyZXN1bHQgPSBtYWtlTm9kZShQYXJ0 aXRpb25QcnVuZVJlc3VsdCk7CisJZm9yZWFjaChsYywgcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUlu Zm9zKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3QobGMpOwor CQlCaXRtYXBzZXQgKnZhbGlkX3N1YnBsYW5fb2ZmczsKKworCQl2YWxpZF9zdWJwbGFuX29mZnMg PQorCQkJRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcocGxhbm5lZHN0bXQsIHBhcmFtcywg cHJ1bmVpbmZvLAorCQkJCQkJCQkJCSAgJnJlc3VsdC0+c2Nhbl9sZWFmcGFydF9ydGlzKTsKKwkJ cmVzdWx0LT52YWxpZF9zdWJwbGFuX29mZnNfbGlzdCA9CisJCQlsYXBwZW5kKHJlc3VsdC0+dmFs aWRfc3VicGxhbl9vZmZzX2xpc3QsCisJCQkJCXZhbGlkX3N1YnBsYW5fb2Zmcyk7CisJfQorCisJ cmV0dXJuIHJlc3VsdDsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWN1dG9yU3RhcnQKQEAgLTgw Niw2ICs4NTcsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykK IHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKIAlQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10OworCVBhcnRpdGlvblBy dW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IHF1ZXJ5RGVzYy0+cGFydF9wcnVuZV9yZXN1 bHQ7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpy YW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1 ZXJ5RGVzYy0+ZXN0YXRlOwpAQCAtODI2LDYgKzg3OCw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5u ZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0 UHJ1bmVJbmZvczsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0ID0gcGFydF9wcnVuZV9y ZXN1bHQ7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9t IHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwppbmRleCBmNzNiOGMyNjA3Li43ZTZkYWI1NjIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYwpAQCAtNjYsNiArNjYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVY VAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExFTF9LRVlf SklUX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCiAjZGVm aW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAw MEEpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05QUlVORVJFU1VMVAlVSU5UNjRDT05T VCgweEUwMDAwMDAwMDAwMDAwMEIpCiAKICNkZWZpbmUgUEFSQUxMRUxfVFVQTEVfUVVFVUVfU0la RQkJNjU1MzYKIApAQCAtMTgyLDYgKzE4Myw3IEBAIEV4ZWNTZXJpYWxpemVQbGFuKFBsYW4gKnBs YW4sIEVTdGF0ZSAqZXN0YXRlKQogCXBzdG10LT50cmFuc2llbnRQbGFuID0gZmFsc2U7CiAJcHN0 bXQtPmRlcGVuZHNPblJvbGUgPSBmYWxzZTsKIAlwc3RtdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0g ZmFsc2U7CisJcHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcgPSBmYWxzZTsKIAlwc3RtdC0+ cGxhblRyZWUgPSBwbGFuOwogCXBzdG10LT5wYXJ0UHJ1bmVJbmZvcyA9IGVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9pbmZvczsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRlLT5lc19yYW5nZV90YWJsZTsK QEAgLTU5NywxMiArNTk5LDE1IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlGaXhlZFBhcmFsbGVsRXhlY3V0b3JTdGF0ZSAqZnBl czsKIAljaGFyCSAgICpwc3RtdF9kYXRhOwogCWNoYXIJICAgKnBzdG10X3NwYWNlOworCWNoYXIJ ICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRf c3BhY2U7CiAJY2hhcgkgICAqcGFyYW1saXN0aW5mb19zcGFjZTsKIAlCdWZmZXJVc2FnZSAqYnVm dXNhZ2Vfc3BhY2U7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2Vfc3BhY2U7CiAJU2hhcmVkRXhlY3V0 b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJU2hhcmVkSml0SW5z dHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKIAlpbnQJCQlwc3RtdF9s ZW47CisJaW50CQkJcGFydF9wcnVuZV9yZXN1bHRfbGVuOwogCWludAkJCXBhcmFtbGlzdGluZm9f bGVuOwogCWludAkJCWluc3RydW1lbnRhdGlvbl9sZW4gPSAwOwogCWludAkJCWppdF9pbnN0cnVt ZW50YXRpb25fbGVuID0gMDsKQEAgLTYzMSw2ICs2MzYsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxh bihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAKIAkvKiBGaXggdXAgYW5k IHNlcmlhbGl6ZSBwbGFuIHRvIGJlIHNlbnQgdG8gd29ya2Vycy4gKi8KIAlwc3RtdF9kYXRhID0g RXhlY1NlcmlhbGl6ZVBsYW4ocGxhbnN0YXRlLT5wbGFuLCBlc3RhdGUpOworCXBhcnRfcHJ1bmVf cmVzdWx0X2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdCk7 CiAKIAkvKiBDcmVhdGUgYSBwYXJhbGxlbCBjb250ZXh0LiAqLwogCXBjeHQgPSBDcmVhdGVQYXJh bGxlbENvbnRleHQoInBvc3RncmVzIiwgIlBhcmFsbGVsUXVlcnlNYWluIiwgbndvcmtlcnMpOwpA QCAtNjU3LDYgKzY2MywxMSBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0 aW1hdG9yLCBwc3RtdF9sZW4pOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1h dG9yLCAxKTsKIAorCS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIFBhcnRpdGlvblBy dW5lUmVzdWx0LiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0X2xlbiA9IHN0cmxlbihwYXJ0X3BydW5l X3Jlc3VsdF9kYXRhKSArIDE7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1h dG9yLCBwYXJ0X3BydW5lX3Jlc3VsdF9sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4 dC0+ZXN0aW1hdG9yLCAxKTsKKwogCS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIFBh cmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19sZW4gPSBFc3RpbWF0ZVBhcmFtTGlzdFNw YWNlKGVzdGF0ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZwY3h0LT5lc3RpbWF0b3IsIHBhcmFtbGlzdGluZm9fbGVuKTsKQEAgLTc1MSw2ICs3NjIsMTIg QEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlLAogCW1lbWNweShwc3RtdF9zcGFjZSwgcHN0bXRfZGF0YSwgcHN0bXRfbGVuKTsKIAlzaG1f dG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QTEFOTkVEU1RNVCwgcHN0bXRfc3Bh Y2UpOwogCisJLyogU3RvcmUgc2VyaWFsaXplZCBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqLworCXBh cnRfcHJ1bmVfcmVzdWx0X3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRf cHJ1bmVfcmVzdWx0X2xlbik7CisJbWVtY3B5KHBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlLCBwYXJ0 X3BydW5lX3Jlc3VsdF9kYXRhLCBwYXJ0X3BydW5lX3Jlc3VsdF9sZW4pOworCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTlBSVU5FUkVTVUxULAorCQkJCSAg IHBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlKTsKKwogCS8qIFN0b3JlIHNlcmlhbGl6ZWQgUGFyYW1M aXN0SW5mby4gKi8KIAlwYXJhbWxpc3RpbmZvX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0 LT50b2MsIHBhcmFtbGlzdGluZm9fbGVuKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBB UkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBwYXJhbWxpc3RpbmZvX3NwYWNlKTsKQEAgLTEyMzIs OCArMTI0OSwxMCBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0 UmVjZWl2ZXIgKnJlY2VpdmVyLAogCQkJCQkJIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7CiAJ Y2hhcgkgICAqcHN0bXRzcGFjZTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZTsK IAljaGFyCSAgICpwYXJhbXNwYWNlOwogCVBsYW5uZWRTdG10ICpwc3RtdDsKKwlQYXJ0aXRpb25Q cnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQ7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJOwog CWNoYXIJICAgKnF1ZXJ5U3RyaW5nOwogCkBAIC0xMjQ0LDEyICsxMjYzLDE4IEBAIEV4ZWNQYXJh bGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJ cHN0bXRzcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BMQU5ORURTVE1U LCBmYWxzZSk7CiAJcHN0bXQgPSAoUGxhbm5lZFN0bXQgKikgc3RyaW5nVG9Ob2RlKHBzdG10c3Bh Y2UpOwogCisJLyogUmVjb25zdHJ1Y3QgbGVhZGVyLXN1cHBsaWVkIFBhcnRpdGlvblBydW5lUmVz dWx0LiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlID0KKwkJc2htX3RvY19sb29rdXAodG9j LCBQQVJBTExFTF9LRVlfUEFSVElUSU9OUFJVTkVSRVNVTFQsIGZhbHNlKTsKKwlwYXJ0X3BydW5l X3Jlc3VsdCA9IChQYXJ0aXRpb25QcnVuZVJlc3VsdCAqKQorCQlzdHJpbmdUb05vZGUocGFydF9w cnVuZV9yZXN1bHRfc3BhY2UpOworCiAJLyogUmVjb25zdHJ1Y3QgUGFyYW1MaXN0SW5mby4gKi8K IAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNU SU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsK IAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLwotCXJldHVybiBDcmVh dGVRdWVyeURlc2MocHN0bXQsCisJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwgcGFydF9w cnVuZV9yZXN1bHQsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBO VUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5j CmluZGV4IGI1NWNkZDI1ODAuLjI0ZTZmNmU5ODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1 ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInBhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuaCIKQEAgLTE4NSw3ICsxODYsMTEgQEAgc3RhdGljIGNoYXIgKkV4 ZWNCdWlsZFNsb3RQYXJ0aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlvbiByZWwsCiBzdGF0aWMg TGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAqY29sbm9zLCBSZXN1bHRSZWxJbmZv ICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vc191 c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKTsKIHN0YXRpYyBQYXJ0aXRp b25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pOworCQkJ CQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCQkJCQkJ ICBib29sIGNvbnNpZGVyX2luaXRpYWxfc3RlcHMsCisJCQkJCQkJCQkJCQkJICBib29sIGNvbnNp ZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkJCQkJCQkJICBMaXN0ICpydGFibGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwKKwkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvbkRpcmVjdG9yeSBwYXJ0ZGlyKTsK IHN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250 ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLAogCQkJCQkJCQkJ ICBQYXJ0aXRpb25EZXNjIHBhcnRkZXNjLApAQCAtMTk4LDcgKzIwMyw4IEBAIHN0YXRpYyB2b2lk IFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0 YXRlLAogc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlv blBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVu aW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKLQkJCQkJ CQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkgICBCaXRtYXBz ZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBh cnRfcnRpcyk7CiAKIAogLyoKQEAgLTE1OTMsOCArMTU5OSwxMCBAQCBhZGp1c3RfcGFydGl0aW9u X2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICogY29u c2lkZXJlZCB0byBiZSBhIHN0YWJsZSBleHByZXNzaW9uLCBpdCBjYW4gY2hhbmdlIHZhbHVlIGZy b20gb25lIHBsYW4KICAqIG5vZGUgc2NhbiB0byB0aGUgbmV4dCBkdXJpbmcgcXVlcnkgZXhlY3V0 aW9uLiAgU3RhYmxlIGNvbXBhcmlzb24KICAqIGV4cHJlc3Npb25zIHRoYXQgZG9uJ3QgaW52b2x2 ZSBzdWNoIFBhcmFtcyBhbGxvdyBwYXJ0aXRpb24gcHJ1bmluZyB0byBiZQotICogZG9uZSBvbmNl IGR1cmluZyBleGVjdXRvciBzdGFydHVwLiAgRXhwcmVzc2lvbnMgdGhhdCBkbyBpbnZvbHZlIHN1 Y2ggUGFyYW1zCi0gKiByZXF1aXJlIHVzIHRvIHBydW5lIHNlcGFyYXRlbHkgZm9yIGVhY2ggc2Nh biBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZS4KKyAqIGRvbmUgb25jZSBkdXJpbmcgZXhlY3V0b3Ig c3RhcnR1cCBvciBkdXJpbmcgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgdGhhdAorICogcnVu cyBhcyBwYXJ0IG9mIHBlcmZvcm1pbmcgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbiBhIGdpdmVu IHBsYW4gdHJlZS4KKyAqIEV4cHJlc3Npb25zIHRoYXQgZG8gaW52b2x2ZSBzdWNoIFBhcmFtcyBy ZXF1aXJlIHVzIHRvIHBydW5lIHNlcGFyYXRlbHkgZm9yCisgKiBlYWNoIHNjYW4gb2YgdGhlIHBh cmVudCBwbGFuIG5vZGUuCiAgKgogICogTm90ZSB0aGF0IHBydW5pbmcgYXdheSB1bm5lZWRlZCBz dWJwbGFucyBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCBoYXMgdGhlCiAgKiBhZGRlZCBiZW5lZml0 IG9mIG5vdCBoYXZpbmcgdG8gaW5pdGlhbGl6ZSB0aGUgdW5uZWVkZWQgc3VicGxhbnMgYXQgYWxs LgpAQCAtMTYxMSw2ICsxNjE5LDEzIEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21h cChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKgkJYWNjb3VudCBmb3IgaW5pdGlh bCBwcnVuaW5nIHBvc3NpYmx5IGhhdmluZyBlbGltaW5hdGVkIHNvbWUgb2YgdGhlCiAgKgkJc3Vi cGxhbnMuCiAgKgorICogRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmc6CisgKgkJRG8gaW5p dGlhbCBwcnVuaW5nIHdpdGggdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBhIGdpdmVuCisg KgkJUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVybWluZSB0aGUgbWluaW1hbCBzZXQgb2YgY2hp bGQgc3VicGxhbnMKKyAqCQl0byBiZSBleGVjdXRlZCBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZSB0 byB3aGljaCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvCisgKgkJYmVsb25ncyBhbmQgYWxzbyB0aGUg c2V0IG9mIHRoZSBSVCBpbmRleGVzIG9mIGxlYWYgcGFydGl0aW9ucyB0aGF0IHdpbGwKKyAqCQli ZSBzY2FubmVkIHdpdGggdGhvc2Ugc3VicGxhbnMuCisgKgogICogRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zOgogICoJCVJldHVybnMgaW5kZXhlcyBvZiBtYXRjaGluZyBzdWJwbGFucyBhZnRlciBl dmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucwogICoJCXRoYXQgYXJlIHNhZmUgdG8gZXZhbHVhdGUg YXQgYSBnaXZlbiBwb2ludC4gIFRoaXMgZnVuY3Rpb24gaXMgZmlyc3QKQEAgLTE2MjgsOCArMTY0 Myw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0 dHJNYXAgKmF0dHJNYXApCiAgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBs YW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQgc3VicGxhbnMg dGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBwbGFuIG5vZGUu Ci0gKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkIGFuZCBpbiB0 aGF0IGNhc2Ugb25seSB0aGUKLSAqIHN1cnZpdmluZyBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRk ZWQuCisgKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkICh1bmxl c3MgaXQgaGFzIGFscmVhZHkgYmVlbiBkb25lCisgKiBieSBFeGVjdXRvckRvSW5pdGlhbFBydW5p bmcoKSksIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUgc3Vydml2aW5nCisgKiBzdWJwbGFucycg aW5kZXhlcyBhcmUgYWRkZWQuCiAgKgogICogSWYgc3VicGxhbnMgYXJlIGluZGVlZCBwcnVuZWQs IHN1YnBsYW5fbWFwIGFycmF5cyBjb250YWluZWQgaW4gdGhlIHJldHVybmVkCiAgKiBQYXJ0aXRp b25QcnVuZVN0YXRlIGFyZSByZS1zZXF1ZW5jZWQgdG8gbm90IGNvdW50IHRob3NlLCB0aG91Z2gg b25seSBpZiB0aGUKQEAgLTE2NDUsMjQgKzE2NjEsNTkgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVu aW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRl LT5zdGF0ZTsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxpc3RfbnRoKGVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywKIAkJCQkJCQkJCQkJIHBhcnRfcHJ1bmVfaW5kZXgpOwor CVBhcnRpdGlvblBydW5lUmVzdWx0ICpwcnVuZXJlc3VsdCA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVu ZV9yZXN1bHQ7CisJYm9vbAlkb19wcnVuaW5nID0gKHBydW5laW5mby0+bmVlZHNfaW5pdF9wcnVu aW5nIHx8CisJCQkJCQkgIHBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nKTsKIAotCS8qIFdl IG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhw cnMgKi8KLQlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOworCS8qCisJ ICogTm8gbmVlZCB0byBkbyBpbml0aWFsIHBydW5pbmcgaWYgaXQgd2FzIGRvbmUgYWxyZWFkeSBi eQorCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpdCB3b3VsZCBiZSBpZiBl c19wYXJ0X3BydW5lX3Jlc3VsdAorCSAqIGhhcyBiZWVuIHNldC4KKwkgKi8KKwlpZiAocHJ1bmVy ZXN1bHQpCisJCWRvX3BydW5pbmcgPSBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZzsKIAot CS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwotCXBy dW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZv KTsKKwlwcnVuZXN0YXRlID0gTlVMTDsKKwlpZiAoZG9fcHJ1bmluZykKKwl7CisJCS8qIFdlIG1h eSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMg Ki8KKwkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKKworCQkvKiBG b3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdheXMgb21pdHMgZGV0YWNoZWQgcGFydGl0aW9u cyAqLworCQlpZiAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCisJCQll c3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPQorCQkJCUNyZWF0ZVBhcnRpdGlvbkRpcmVj dG9yeShlc3RhdGUtPmVzX3F1ZXJ5X2N4dCwgZmFsc2UpOworCisJCS8qCisJCSAqIENyZWF0ZSB0 aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZy4gIE5vIG5lZWQgdG8gY29uc2lk ZXIKKwkJICogaW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGlmIHdlIGhhdmUgYSBQYXJ0aXRpb25QcnVu ZVJlc3VsdC4KKwkJICovCisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KHBsYW5zdGF0ZSwgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkgICBwcnVuZXJlc3VsdCA9PSBOVUxM LCB0cnVlLAorCQkJCQkJCQkJCQkgICBOSUwsIHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQsCisJ CQkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSk7CisJfQogCiAJLyoK IAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVk LgogCSAqLwotCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQotCQkqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRy dWUpOworCWlmIChwcnVuZXJlc3VsdCkKKwl7CisJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMg PQorCQkJbGlzdF9udGgocHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0LCBwYXJ0 X3BydW5lX2luZGV4KTsKKwl9CisJZWxzZSBpZiAocHJ1bmVzdGF0ZSAmJiBwcnVuZXN0YXRlLT5k b19pbml0aWFsX3BydW5lKQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IEV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJCQkJCQkJCQkJIE5V TEwpOworCX0KIAllbHNlCiAJewogCQkvKiBObyBwcnVuaW5nLCBzbyB3ZSdsbCBuZWVkIHRvIGlu aXRpYWxpemUgYWxsIHN1YnBsYW5zICovCiAJCUFzc2VydChuX3RvdGFsX3N1YnBsYW5zID4gMCk7 CiAJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsCiAJ CQkJCQkJCQkJCQkgIG5fdG90YWxfc3VicGxhbnMgLSAxKTsKKwkJcmV0dXJuIHBydW5lc3RhdGU7 CiAJfQogCiAJLyoKQEAgLTE2NzAsNyArMTcyMSw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmlu ZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiB0aGF0IHdlcmUgcmVtb3ZlZCBhYm92ZSBkdWUg dG8gaW5pdGlhbCBwcnVuaW5nLiAgTm8gbmVlZCB0byBkbyB0aGlzIGlmCiAJICogbm8gc3RlcHMg d2VyZSByZW1vdmVkLgogCSAqLwotCWlmIChibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxp ZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBsYW5zKQorCWlmIChwcnVuZXN0YXRlICYmCisJCWJt c19udW1fbWVtYmVycygqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKSA8IG5fdG90YWxfc3VicGxh bnMpCiAJewogCQkvKgogCQkgKiBXZSBjYW4gc2FmZWx5IHNraXAgdGhpcyB3aGVuICFkb19leGVj X3BydW5lLCBldmVuIHRob3VnaCB0aGF0CkBAIC0xNjg2LDExICsxNzM4LDczIEBAIEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlyZXR1cm4gcHJ1bmVzdGF0 ZTsKIH0KIAorLyoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nCisgKgkJUGVyZm9y bSBpbml0aWFsIHBydW5pbmcgdXNpbmcgZ2l2ZW4gUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVy bWluZQorICoJCXRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUg ZXhlY3V0ZWQgYW5kIGFsc28gdGhlCisgKgkJc2V0IG9mIFJUIGluZGV4ZXMgb2YgdGhlIGxlYWYg cGFydGl0aW9ucyBzY2FubmVkIGJ5IHRob3NlIHN1YnBsYW5zLgorICovCitCaXRtYXBzZXQgKgor RXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVp bmZvLAorCQkJCQkJCSAgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKQoreworCUxpc3QJ CSAqcnRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKKwlFeHByQ29udGV4dAkgKmVjb250ZXh0 OworCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGlyOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCwK KwkJCQkgIHRtcGNvbnRleHQ7CisJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwlC aXRtYXBzZXQJICp2YWxpZF9zdWJwbGFuX29mZnM7CisKKwkvKgorCSAqIEEgdGVtcG9yYXJ5IGNv bnRleHQgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyByZXF1aXJlZCB3aGlsZSBleGVjdXRpbmcKKwkg KiBwYXJ0aXRpb24gcHJ1bmluZyBzdGVwcy4KKwkgKi8KKwl0bXBjb250ZXh0ID0gQWxsb2NTZXRD b250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICAgImluaXRpYWwg cHJ1bmluZyB3b3JraW5nIGRhdGEiLAorCQkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9TSVpF Uyk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0bXBjb250ZXh0KTsKKwor CS8qCisJICogUGFydGl0aW9uRGlyZWN0b3J5IHRvIGxvb2sgdXAgcGFydGl0aW9uIGRlc2NyaXB0 b3JzLCB3aGljaCBvbWl0cworCSAqIGRldGFjaGVkIHBhcnRpdGlvbnMsIGp1c3QgbGlrZSBpbiB0 aGUgZXhlY3V0b3IgcHJvcGVyLgorCSAqLworCXBkaXIgPSBDcmVhdGVQYXJ0aXRpb25EaXJlY3Rv cnkoQ3VycmVudE1lbW9yeUNvbnRleHQsIGZhbHNlKTsKKworCS8qCisJICogV2UgZG9uJ3QgeWV0 IGhhdmUgYSBQbGFuU3RhdGUgZm9yIHRoZSBwYXJlbnQgcGxhbiBub2RlLCBzbyB3ZSBtdXN0CisJ ICogY3JlYXRlIGEgc3RhbmRhbG9uZSBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBwcnVuaW5nIGV4 cHJlc3Npb25zLAorCSAqIGVxdWlwcGVkIHdpdGggdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBF WFRFUk4gcGFyYW1ldGVycyB0aGF0IHRoZQorCSAqIGNhbGxlciBwYXNzZWQgdXMuICBOb3RlIHRo YXQgdGhhdCdzIG9rYXkgYmVjYXVzZSB0aGUgaW5pdGlhbCBwcnVuaW5nCisJICogc3RlcHMgZG8g bm90IGNvbnRhaW4gYW55dGhpbmcgdGhhdCByZXF1aXJlcyB0aGUgZXhlY3V0aW9uIHRvIGhhdmUK KwkgKiBzdGFydGVkLgorCSAqLworCWVjb250ZXh0ID0gQ3JlYXRlU3RhbmRhbG9uZUV4cHJDb250 ZXh0KCk7CisJZWNvbnRleHQtPmVjeHRfcGFyYW1fbGlzdF9pbmZvID0gcGFyYW1zOworCXBydW5l c3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKE5VTEwsIHBydW5laW5mbywgdHJ1ZSwg ZmFsc2UsCisJCQkJCQkJCQkJICAgcnRhYmxlLCBlY29udGV4dCwgcGRpcik7CisJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogRG8gdGhlIGluaXRpYWwgcHJ1bmluZy4g Ki8KKwl2YWxpZF9zdWJwbGFuX29mZnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVz dGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFydF9ydGlzKTsKKworCUZyZWVF eHByQ29udGV4dChlY29udGV4dCwgdHJ1ZSk7CisJRGVzdHJveVBhcnRpdGlvbkRpcmVjdG9yeShw ZGlyKTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHRtcGNvbnRleHQpOworCisJcmV0dXJuIHZhbGlk X3N1YnBsYW5fb2ZmczsKK30KKwogLyoKICAqIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUKICAq CQlCdWlsZCB0aGUgZGF0YSBzdHJ1Y3R1cmUgcmVxdWlyZWQgZm9yIGNhbGxpbmcgRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zCiAgKgotICogJ3BsYW5zdGF0ZScgaXMgdGhlIHBhcmVudCBwbGFuIG5v ZGUncyBleGVjdXRpb24gc3RhdGUuCisgKiAncGxhbnN0YXRlJywgaWYgbm90IE5VTEwsIGlzIHRo ZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLiAgSXQKKyAqIGNhbiBiZSBOVUxM IGlmIGJlaW5nIGNhbGxlZCBiZWZvcmUgRXhlY3V0b3JTdGFydCgpLCBpbiB3aGljaCBjYXNlLAor ICogJ3J0YWJsZScgKHJhbmdlIHRhYmxlKSwgJ2Vjb250ZXh0JywgYW5kICdwYXJ0ZGlyJyBtdXN0 IGJlIGV4cGxpY2l0bHkKKyAqIHByb3ZpZGVkLgogICoKICAqICdwcnVuZWluZm8nIGlzIGEgUGFy dGl0aW9uUHJ1bmVJbmZvIGFzIGdlbmVyYXRlZCBieQogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVp bmZvLiAgSGVyZSB3ZSBidWlsZCBhIFBhcnRpdGlvblBydW5lU3RhdGUgY29udGFpbmluZyBhCkBA IC0xNzA0LDE5ICsxODE4LDIxIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvLgogICovCiBzdGF0aWMgUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAq cGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKK0NyZWF0ZVBhcnRpdGlv blBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCisJCQkJCQkgIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJICBib29sIGNvbnNpZGVyX2luaXRpYWxfc3RlcHMsCisJ CQkJCQkgIGJvb2wgY29uc2lkZXJfZXhlY19zdGVwcywKKwkJCQkJCSAgTGlzdCAqcnRhYmxlLCBF eHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkgIFBhcnRpdGlvbkRpcmVjdG9yeSBwYXJ0ZGly KQogewotCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5zdGF0ZTsKKwlFU3RhdGUJICAg KmVzdGF0ZSA9IHBsYW5zdGF0ZSA/IHBsYW5zdGF0ZS0+c3RhdGUgOiBOVUxMOwogCVBhcnRpdGlv blBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNoaWVzOwogCUxp c3RDZWxsICAgKmxjOwogCWludAkJCWk7Ci0JRXhwckNvbnRleHQgKmVjb250ZXh0ID0gcGxhbnN0 YXRlLT5wc19FeHByQ29udGV4dDsKIAotCS8qIEZvciBkYXRhIHJlYWRpbmcsIGV4ZWN1dG9yIGFs d2F5cyBvbWl0cyBkZXRhY2hlZCBwYXJ0aXRpb25zICovCi0JaWYgKGVzdGF0ZS0+ZXNfcGFydGl0 aW9uX2RpcmVjdG9yeSA9PSBOVUxMKQotCQllc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rvcnkg PQotCQkJQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KGVzdGF0ZS0+ZXNfcXVlcnlfY3h0LCBmYWxz ZSk7CisJQXNzZXJ0KChlc3RhdGUgIT0gTlVMTCkgfHwKKwkJCShwYXJ0ZGlyICE9IE5VTEwgJiYg ZWNvbnRleHQgIT0gTlVMTCAmJiBydGFibGUgIT0gTklMKSk7CiAKIAluX3BhcnRfaGllcmFyY2hp ZXMgPSBsaXN0X2xlbmd0aChwcnVuZWluZm8tPnBydW5lX2luZm9zKTsKIAlBc3NlcnQobl9wYXJ0 X2hpZXJhcmNoaWVzID4gMCk7CkBAIC0xNzcxLDE1ICsxODg3LDQyIEBAIENyZWF0ZVBhcnRpdGlv blBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvKQogCQkJUGFydGl0aW9uS2V5IHBhcnRrZXk7CiAKIAkJCS8qCi0JCQkgKiBXZSBjYW4g cmVseSBvbiB0aGUgY29waWVzIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdzIHBhcnRpdGlvbgot CQkJICoga2V5IGFuZCBwYXJ0aXRpb24gZGVzY3JpcHRvciBhcHBlYXJpbmcgaW4gaXRzIHJlbGNh Y2hlIGVudHJ5LAotCQkJICogYmVjYXVzZSB0aGF0IGVudHJ5IHdpbGwgYmUgaGVsZCBvcGVuIGFu ZCBsb2NrZWQgZm9yIHRoZQotCQkJICogZHVyYXRpb24gb2YgdGhpcyBleGVjdXRvciBydW4uCisJ CQkgKiBNdXN0IG9wZW4gdGhlIHJlbGF0aW9uIGJ5IG91cnNlbHZlcyB3aGVuIGNhbGxlZCBiZWZv cmUgdGhlCisJCQkgKiBleGVjdXRpb24gaGFzIHN0YXJ0ZWQsIHN1Y2ggYXMsIHdoZW4gY2FsbGVk IGR1cmluZworCQkJICogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgb24gYSBjYWNoZWQgcGxh bi4gIEluIHRoYXQgY2FzZSwKKwkJCSAqIHN1Yi1wYXJ0aXRpb25zIG11c3QgYmUgbG9ja2VkLCBi ZWNhdXNlIEFjcXVpcmVQbGFubmVyTG9ja3MoKQorCQkJICogd291bGQgbm90IGhhdmUgc2VlbiB0 aGVtLiAoMXN0IHJlbGF0aW9uIGluIGEgcGFydHJlbHBydW5laW5mb3MKKwkJCSAqIGxpc3QgaXMg YWx3YXlzIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcmluZyBpbiB0aGUKKwkJCSAq IHF1ZXJ5LCB3aGljaCBBY3F1aXJlUGxhbm5lckxvY2tzKCkgd291bGQgaGF2ZSBsb2NrZWQ7IHRo ZQorCQkJICogQXNzZXJ0IGluIHJlbGF0aW9uX29wZW4oKSBndWFyZHMgdGhhdCBhc3N1bXB0aW9u LikKKwkJCSAqLworCQkJaWYgKGVzdGF0ZSA9PSBOVUxMKQorCQkJeworCQkJCVJhbmdlVGJsRW50 cnkgKnJ0ZSA9IHJ0X2ZldGNoKHBpbmZvLT5ydGluZGV4LCBydGFibGUpOworCQkJCWludAkJbG9j a21vZGUgPSAoaiA9PSAwKSA/IE5vTG9jayA6IHJ0ZS0+cmVsbG9ja21vZGU7CisKKwkJCQlwYXJ0 cmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBsb2NrbW9kZSk7CisJCQl9CisJCQllbHNlCisJ CQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRp bmRleCk7CisKKwkJCS8qCisJCQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29weSBvZiB0aGUgcGFy dGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KKwkJCSAqIGtleSBmcm9tIGluIGl0cyByZWxjYWNo ZSBlbnRyeSwgYmVjYXVzZSBpdCBjYW4ndCBjaGFuZ2UgKG9yCisJCQkgKiBnZXQgZGVzdHJveWVk KSBhcyBsb25nIGFzIHRoZSByZWxhdGlvbiBpcyBsb2NrZWQuICBQYXJ0aXRpb24KKwkJCSAqIGRl c2NyaXB0b3IgaXMgdGFrZW4gZnJvbSB0aGUgUGFydGl0aW9uRGlyZWN0b3J5IGFzc29jaWF0ZWQg d2l0aAorCQkJICogdGhlIHRhYmxlIHRoYXQgaXMgaGVsZCBvcGVuIGxvbmcgZW5vdWdoIGZvciB0 aGUgZGVzY3JpcHRvciB0bworCQkJICogcmVtYWluIHZhbGlkIHdoaWxlIGl0J3MgdXNlZCB0byBw ZXJmb3JtIHRoZSBwcnVuaW5nIHN0ZXBzLgogCQkJICovCi0JCQlwYXJ0cmVsID0gRXhlY0dldFJh bmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKIAkJCXBhcnRrZXkgPSBS ZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVsKTsKLQkJCXBhcnRkZXNjID0gUGFydGl0aW9u RGlyZWN0b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSwKLQkJCQkJCQkJ CQkJCXBhcnRyZWwpOworCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAocGFy dGRpciwgcGFydHJlbCk7CisKKwkJCS8qCisJCQkgKiBNdXN0IGNsb3NlIHBhcnRyZWwsIGtlZXBp bmcgdGhlIGxvY2sgdGFrZW4sIGlmIHdlJ3JlIG5vdCB1c2luZworCQkJICogRVN0YXRlJ3MgZW50 cnkuCisJCQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCQl0YWJsZV9jbG9zZShwYXJ0 cmVsLCBOb0xvY2spOwogCiAJCQkvKgogCQkJICogSW5pdGlhbGl6ZSB0aGUgc3VicGxhbl9tYXAg YW5kIHN1YnBhcnRfbWFwLgpAQCAtMTc5Myw2ICsxOTM2LDcgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1 bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8pCiAJCQlBc3NlcnQocGFydGRlc2MtPm5wYXJ0cyA+PSBwaW5mby0+bnBhcnRzKTsKIAkJCXBw cnVuZS0+bnBhcnRzID0gcGFydGRlc2MtPm5wYXJ0czsKIAkJCXBwcnVuZS0+c3VicGxhbl9tYXAg PSBwYWxsb2Moc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKTsKKwkJCXBwcnVuZS0+cnRp X21hcCA9IHBhbGxvYyhzaXplb2YoSW5kZXgpICogcGFydGRlc2MtPm5wYXJ0cyk7CiAJCQlpZiAo cGFydGRlc2MtPm5wYXJ0cyA9PSBwaW5mby0+bnBhcnRzKQogCQkJewogCQkJCS8qCkBAIC0xODAz LDYgKzE5NDcsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlwcHJ1bmUtPnN1YnBhcnRf bWFwID0gcGluZm8tPnN1YnBhcnRfbWFwOwogCQkJCW1lbWNweShwcHJ1bmUtPnN1YnBsYW5fbWFw LCBwaW5mby0+c3VicGxhbl9tYXAsCiAJCQkJCSAgIHNpemVvZihpbnQpICogcGluZm8tPm5wYXJ0 cyk7CisJCQkJbWVtY3B5KHBwcnVuZS0+cnRpX21hcCwgcGluZm8tPnJ0aV9tYXAsCisJCQkJCSAg IHNpemVvZihpbnQpICogcGluZm8tPm5wYXJ0cyk7CiAKIAkJCQkvKgogCQkJCSAqIERvdWJsZS1j aGVjayB0aGF0IHRoZSBsaXN0IG9mIHVucHJ1bmVkIHJlbGF0aW9ucyBoYXMgbm90CkBAIC0xODUz LDYgKzE5OTksOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkJCQlwaW5mby0+c3VicGxh bl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9CiAJCQkJ CQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJCQlwcHJ1bmUtPnJ0aV9tYXBbcHBf aWR4XSA9CisJCQkJCQkJcGluZm8tPnJ0aV9tYXBbcGRfaWR4XTsKIAkJCQkJCXBkX2lkeCsrOwog CQkJCQl9CiAJCQkJCWVsc2UKQEAgLTE4NjAsNiArMjAwOCw3IEBAIENyZWF0ZVBhcnRpdGlvblBy dW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVp bmZvKQogCQkJCQkJLyogdGhpcyBwYXJ0ZGVzYyBlbnRyeSBpcyBub3QgaW4gdGhlIHBsYW4gKi8K IAkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbcHBfaWR4XSA9IC0xOwogCQkJCQkJcHBydW5lLT5z dWJwYXJ0X21hcFtwcF9pZHhdID0gLTE7CisJCQkJCQlwcHJ1bmUtPnJ0aV9tYXBbcHBfaWR4XSA9 IDA7CiAJCQkJCX0KIAkJCQl9CiAKQEAgLTE4ODEsNyArMjAzMCw3IEBAIENyZWF0ZVBhcnRpdGlv blBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvKQogCQkJICogSW5pdGlhbGl6ZSBwcnVuaW5nIGNvbnRleHRzIGFzIG5lZWRlZC4KIAkJ CSAqLwogCQkJcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+aW5pdGlhbF9w cnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCisJCQlp ZiAoY29uc2lkZXJfaW5pdGlhbF9zdGVwcyAmJiBwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBz KQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVuZS0+aW5pdGlhbF9j b250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcywKQEAgLTE4 OTEsNyArMjA0MCw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFu c3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJCXBydW5lc3RhdGUtPmRv X2luaXRpYWxfcHJ1bmUgPSB0cnVlOwogCQkJfQogCQkJcHBydW5lLT5leGVjX3BydW5pbmdfc3Rl cHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZvLT5leGVjX3BydW5p bmdfc3RlcHMpCisJCQlpZiAoY29uc2lkZXJfZXhlY19zdGVwcyAmJiBwaW5mby0+ZXhlY19wcnVu aW5nX3N0ZXBzKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVuZS0+ ZXhlY19jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwcywKQEAg LTIxMTksMTAgKzIyNjgsMTQgQEAgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlv blBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBQYXNzIGluaXRpYWxfcHJ1bmUgaWYgUEFSQU1f RVhFQyBQYXJhbXMgY2Fubm90IHlldCBiZSBldmFsdWF0ZWQuICBUaGlzCiAgKiBkaWZmZXJlbnRp YXRlcyB0aGUgaW5pdGlhbCBleGVjdXRvci10aW1lIHBydW5pbmcgc3RlcCBmcm9tIGxhdGVyCiAg KiBydW50aW1lIHBydW5pbmcuCisgKgorICogUlQgaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlvbnMg c2Nhbm5lZCBieSB0aGUgY2hvc2VuIHN1YnBsYW5zIGFyZSBhZGRlZCB0bworICogKnNjYW5fbGVh ZnBhcnRfcnRpcyBpZiB0aGUgcG9pbnRlciBpcyBub24tTlVMTC4KICAqLwogQml0bWFwc2V0ICoK IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBib29sIGluaXRpYWxfcHJ1bmUs CisJCQkJCQkgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKQogewogCUJpdG1hcHNldCAg KnJlc3VsdCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtMjE1Nyw3ICsy MzEwLDcgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGUsCiAJCSAqLwogCQlwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRh WzBdOwogCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLCBwcHJ1bmUs IGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkgICAmcmVzdWx0KTsKKwkJCQkJCQkJCSAgICZyZXN1 bHQsIHNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAkJLyogRXhwcmVzc2lvbiBldmFsIG1heSBoYXZl IHVzZWQgc3BhY2UgaW4gRXhwckNvbnRleHQgdG9vICovCiAJCWlmIChwcHJ1bmUtPmV4ZWNfcHJ1 bmluZ19zdGVwcykKQEAgLTIxNzEsNiArMjMyNCw4IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCiAJLyogQ29weSByZXN1bHQgb3V0 IG9mIHRoZSB0ZW1wIGNvbnRleHQgYmVmb3JlIHdlIHJlc2V0IGl0ICovCiAJcmVzdWx0ID0gYm1z X2NvcHkocmVzdWx0KTsKKwlpZiAoc2Nhbl9sZWFmcGFydF9ydGlzKQorCQkqc2Nhbl9sZWFmcGFy dF9ydGlzID0gYm1zX2NvcHkoKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAlNZW1vcnlDb250ZXh0 UmVzZXQocHJ1bmVzdGF0ZS0+cHJ1bmVfY29udGV4dCk7CiAKQEAgLTIxODEsMTMgKzIzMzYsMTUg QEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGUsCiAgKiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UKICAqCQlSZWN1cnNpdmUgd29y a2VyIGZ1bmN0aW9uIGZvciBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMKICAqCi0gKiBBZGRzIHZh bGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxpZHN1YnBsYW5zCisgKiBBZGRz IHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxpZHN1YnBsYW5zIGFuZCBS VCBpbmRleGVzIG9mCisgKiBvZiB0aGUgY29ycmVzcG9uZGluZyBsZWFmIHBhcnRpdGlvbnMgdG8g KnNjYW5fbGVhZnBhcnRfcnRpcyAoaWYgYXNrZWQgZm9yKS4KICAqLwogc3RhdGljIHZvaWQKIGZp bmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVk YXRhLAogCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJ CQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJw bGFucykKKwkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCSAgIEJp dG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlCaXRtYXBzZXQgICpwYXJ0c2V0Owog CWludAkJCWk7CkBAIC0yMjE0LDggKzIzNzEsMTQgQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19y ZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKHBhcnRzZXQsIGkpKSA+PSAwKQogCXsKIAkJaWYgKHBwcnVuZS0+c3VicGxh bl9tYXBbaV0gPj0gMCkKKwkJewogCQkJKnZhbGlkc3VicGxhbnMgPSBibXNfYWRkX21lbWJlcigq dmFsaWRzdWJwbGFucywKIAkJCQkJCQkJCQkJcHBydW5lLT5zdWJwbGFuX21hcFtpXSk7CisJCQlB c3NlcnQocHBydW5lLT5ydGlfbWFwW2ldID4gMCk7CisJCQlpZiAoc2Nhbl9sZWFmcGFydF9ydGlz KQorCQkJCSpzY2FuX2xlYWZwYXJ0X3J0aXMgPSBibXNfYWRkX21lbWJlcigqc2Nhbl9sZWFmcGFy dF9ydGlzLAorCQkJCQkJCQkJCQkJCSBwcHJ1bmUtPnJ0aV9tYXBbaV0pOworCQl9CiAJCWVsc2UK IAkJewogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVuZS0+c3VicGFydF9tYXBbaV07CkBAIC0yMjIz LDcgKzIzODYsOCBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1 bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCWlmIChwYXJ0aWR4ID49IDApCiAJCQkJZmluZF9tYXRj aGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwKIAkJCQkJCQkJCQkJICAgJnBydW5lZGF0 YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKLQkJCQkJCQkJCQkJICAgaW5pdGlhbF9wcnVu ZSwgdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlkc3Vi cGxhbnMsCisJCQkJCQkJCQkJCSAgIHNjYW5fbGVhZnBhcnRfcnRpcyk7CiAJCQllbHNlCiAJCQl7 CiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggZjk0NjBhZTUwNi4uYTIxODJh NmIxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0NCw3ICs4NDQsNyBAQCBwb3N0 cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNo ZSkKIAllbHNlCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCi0JZXMtPnFkID0gQ3JlYXRlUXVl cnlEZXNjKGVzLT5zdG10LAorCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwgTlVM TCwKIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJ CQkJCQkJIEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCBj NmY4NmE2NTEwLi45Njg4MGUxMjJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0x NTUsNyArMTU1LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwgYXNfdmFsaWRfc3VicGxh bnMgaW1tZWRpYXRlbHksIHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2FsbHMgdG8gRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zLgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5l ICYmIG5wbGFucyA+IDApCisJCWlmIChhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPT0gTlVM TCB8fAorCQkJKCFhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYg bnBsYW5zID4gMCkpCiAJCQlhcHBlbmRzdGF0ZS0+YXNfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRk X3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwogCX0KIAllbHNlCkBAIC01NzcsNyArNTc4LDcg QEAgY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQogCQl9CiAJ CWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCQlub2RlLT5hc192 YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3By dW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFz X3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJd2hpY2hwbGFuID0gLTE7CiAJfQpAQCAt NjQyLDcgKzY0Myw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX2xlYWRlcihBcHBlbmRTdGF0 ZSAqbm9kZSkKIAkJaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCXsKIAkJ CW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMo bm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkJLyoKIAkJCSAqIE1h cmsgZWFjaCBpbnZhbGlkIHBsYW4gYXMgZmluaXNoZWQgdG8gYWxsb3cgdGhlIGxvb3AgYmVsb3cg dG8KQEAgLTcxNyw3ICs3MTgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXIoQXBw ZW5kU3RhdGUgKm5vZGUpCiAJZWxzZSBpZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPT0gTlVM TCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRjaGlu Z1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCW1hcmtfaW52 YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChub2RlKTsKIAl9CiAKQEAgLTg2OCw3ICs4NjksNyBA QCBFeGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+YXNf dmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0K LQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2Up OworCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxz ZSwgTlVMTCk7CiAKIAkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9kZSk7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCA4ZDM1ODYwYzMwLi4yMzEyZTVh NjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtMTAzLDcgKzEw Myw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCBtc192YWxpZF9zdWJw bGFucyBpbW1lZGlhdGVseSwgcHJldmVudGluZwogCQkgKiBsYXRlciBjYWxscyB0byBFeGVjRmlu ZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAqLwotCQlpZiAoIXBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1 bmUgJiYgbnBsYW5zID4gMCkKKwkJaWYgKG1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID09IE5V TEwgfHwKKwkJCSghbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYg bnBsYW5zID4gMCkpCiAJCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFucyA9IGJtc19hZGRf cmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CiAJfQogCWVsc2UKQEAgLTIxOCw3ICsyMTksNyBA QCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqLwogCQlpZiAobm9kZS0+ bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJCW5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID0K LQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZhbHNl KTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZh bHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJzdCB0aW1lIHRocm91Z2g6IHB1bGwgdGhlIGZp cnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJwbGFuLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAyOWJj MjY2NjliLi4zMDNhNTcyYzAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMTU3OCw2ICsxNTc4LDcgQEAg U1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxh biwKIAlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwogCUNhY2hlZFBsYW4gKmNwbGFuOwog CUxpc3QJICAgKnN0bXRfbGlzdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0Owog CWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CkBAIC0xNjU3LDcgKzE2NTgsMTAgQEAgU1BJX2N1cnNvcl9vcGVuX2lu dGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkgKi8KIAogCS8qIFJl cGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICov Ci0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElf Y3VycmVudC0+cXVlcnlFbnYpOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBw YXJhbUxJLCBOVUxMLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJICAmcGFydF9wcnVu ZV9yZXN1bHRfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09 CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAlzdG10X2xpc3Qg PSBjcGxhbi0+c3RtdF9saXN0OwogCiAJaWYgKCFwbGFuLT5zYXZlZCkKQEAgLTE2ODUsNiArMTY4 OSw5IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFu UHRyIHBsYW4sCiAJCQkJCSAgc3RtdF9saXN0LAogCQkJCQkgIGNwbGFuKTsKIAorCS8qIENvcHkg UGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBvcnRhbCdzIGNvbnRleHQuICovCisJUG9y dGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9ydGFsLCBwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0KTsKKwogCS8qCiAJICogU2V0IHVwIG9wdGlvbnMgZm9yIHBvcnRhbC4gIERlZmF1bHQgU0NS T0xMIHR5cGUgaXMgY2hvc2VuIHRoZSBzYW1lIHdheQogCSAqIGFzIFBlcmZvcm1DdXJzb3JPcGVu IGRvZXMgaXQuCkBAIC0yMDkyLDcgKzIwOTksOCBAQCBTUElfcGxhbl9nZXRfY2FjaGVkX3BsYW4o U1BJUGxhblB0ciBwbGFuKQogCS8qIEdldCB0aGUgZ2VuZXJpYyBwbGFuIGZvciB0aGUgcXVlcnkg Ki8KIAljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgTlVMTCwKIAkJCQkJCSAgcGxh bi0+c2F2ZWQgPyBDdXJyZW50UmVzb3VyY2VPd25lciA6IE5VTEwsCi0JCQkJCQkgIF9TUElfY3Vy cmVudC0+cXVlcnlFbnYpOworCQkJCQkJICBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJ ICBOVUxMIC8qIE5vdCBpbnRlcmVzdGVkIGluIFBhcnRpdGlvblBydW5lUmVzdWx0cyAqLyk7CiAJ QXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2UtPmdwbGFuKTsKIAogCS8qIFBvcCB0aGUgZXJyb3Ig Y29udGV4dCBzdGFjayAqLwpAQCAtMjQ3Myw3ICsyNDgxLDkgQEAgX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAl7CiAJ CUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBsZmly c3QobGMxKTsKIAkJTGlzdAkgICAqc3RtdF9saXN0OwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCUxp c3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CisJCUxpc3RDZWxsICAgKmxjMiwKKwkJCQkg ICAqbGMzOwogCiAJCXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3Ry aW5nOwogCkBAIC0yNTQ5LDggKzI1NTksMTAgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0 ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJICogcGxhbiwgdGhl IHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KIAkJY3Bs YW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFtcywKLQkJCQkJCQkg IHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwotCisJCQkJCQkJICBwbGFuX293 bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJCSAmcGFydF9wcnVuZV9yZXN1bHRf bGlzdCk7CisJCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+c3RtdF9saXN0KSA9PQorCQkJICAg bGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCQlzdG10X2xpc3QgPSBjcGxh bi0+c3RtdF9saXN0OwogCiAJCS8qCkBAIC0yNTg5LDkgKzI2MDEsMTAgQEAgX1NQSV9leGVjdXRl X3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywK IAkJCX0KIAkJfQogCi0JCWZvcmVhY2gobGMyLCBzdG10X2xpc3QpCisJCWZvcmJvdGgobGMyLCBz dG10X2xpc3QsIGxjMywgcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIAkJewogCQkJUGxhbm5lZFN0 bXQgKnN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJCVBhcnRpdGlvblBy dW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5l UmVzdWx0LCBsYzMpOwogCQkJYm9vbAkJY2FuU2V0VGFnID0gc3RtdC0+Y2FuU2V0VGFnOwogCQkJ RGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNjYzLDcgKzI2NzYsNyBAQCBfU1BJX2V4ZWN1dGVf cGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAog CQkJCWVsc2UKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAotCQkJCXFkZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgcGFy dF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJ CQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMKaW5kZXggYjAyYjRhNjQxYy4uMzMyZDU4MzgxYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1 bmNzLmMKQEAgLTk3LDcgKzk3LDkgQEAgX2NvcHlQbGFubmVkU3RtdChjb25zdCBQbGFubmVkU3Rt dCAqZnJvbSkKIAlDT1BZX1NDQUxBUl9GSUVMRChqaXRGbGFncyk7CiAJQ09QWV9OT0RFX0ZJRUxE KHBsYW5UcmVlKTsKIAlDT1BZX05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOworCUNPUFlfU0NB TEFSX0ZJRUxEKGNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOwogCUNPUFlfTk9ERV9GSUVMRChydGFi bGUpOworCUNPUFlfQklUTUFQU0VUX0ZJRUxEKG1pbkxvY2tSZWxpZHMpOwogCUNPUFlfTk9ERV9G SUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChhcHBlbmRSZWxhdGlvbnMp OwogCUNPUFlfTk9ERV9GSUVMRChzdWJwbGFucyk7CkBAIC0xMjg0LDYgKzEyODYsOCBAQCBfY29w eVBhcnRpdGlvblBydW5lSW5mbyhjb25zdCBQYXJ0aXRpb25QcnVuZUluZm8gKmZyb20pCiAJUGFy dGl0aW9uUHJ1bmVJbmZvICpuZXdub2RlID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVJbmZvKTsK IAogCUNPUFlfTk9ERV9GSUVMRChwcnVuZV9pbmZvcyk7CisJQ09QWV9TQ0FMQVJfRklFTEQobmVl ZHNfaW5pdF9wcnVuaW5nKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChuZWVkc19leGVjX3BydW5pbmcp OwogCUNPUFlfQklUTUFQU0VUX0ZJRUxEKG90aGVyX3N1YnBsYW5zKTsKIAogCXJldHVybiBuZXdu b2RlOwpAQCAtMTMwMCw2ICsxMzA0LDcgQEAgX2NvcHlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyhj b25zdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqZnJvbSkKIAlDT1BZX1BPSU5URVJfRklFTEQo c3VicGxhbl9tYXAsIGZyb20tPm5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAlDT1BZX1BPSU5URVJf RklFTEQoc3VicGFydF9tYXAsIGZyb20tPm5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAlDT1BZX1BP SU5URVJfRklFTEQocmVsaWRfbWFwLCBmcm9tLT5ucGFydHMgKiBzaXplb2YoT2lkKSk7CisJQ09Q WV9QT0lOVEVSX0ZJRUxEKHJ0aV9tYXAsIGZyb20tPm5wYXJ0cyAqIHNpemVvZihJbmRleCkpOwog CUNPUFlfTk9ERV9GSUVMRChpbml0aWFsX3BydW5pbmdfc3RlcHMpOwogCUNPUFlfTk9ERV9GSUVM RChleGVjX3BydW5pbmdfc3RlcHMpOwogCUNPUFlfQklUTUFQU0VUX0ZJRUxEKGV4ZWNwYXJhbWlk cyk7CkBAIC01NDc2LDYgKzU0ODEsMjEgQEAgX2NvcHlFeHRlbnNpYmxlTm9kZShjb25zdCBFeHRl bnNpYmxlTm9kZSAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorLyogKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoJ CQkJCWV4ZWNub2Rlcy5oIGNvcHkgZnVuY3Rpb25zCisgKiAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3N0YXRpYyBQ YXJ0aXRpb25QcnVuZVJlc3VsdCAqCitfY29weVBhcnRpdGlvblBydW5lUmVzdWx0KGNvbnN0IFBh cnRpdGlvblBydW5lUmVzdWx0ICpmcm9tKQoreworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpuZXdu b2RlID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQpOworCisJQ09QWV9OT0RFX0ZJRUxE KHZhbGlkX3N1YnBsYW5fb2Zmc19saXN0KTsKKwlDT1BZX0JJVE1BUFNFVF9GSUVMRChzY2FuX2xl YWZwYXJ0X3J0aXMpOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIC8qICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCQkJ CQl2YWx1ZS5oIGNvcHkgZnVuY3Rpb25zCiAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC02NTcyLDYgKzY1OTIsMTMg QEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJCXJldHZhbCA9IF9jb3B5UHVi bGljYXRpb25UYWJsZShmcm9tKTsKIAkJCWJyZWFrOwogCisJCQkvKgorCQkJICogRVhFQ1VUSU9O IE5PREVTCisJCQkgKi8KKwkJY2FzZSBUX1BhcnRpdGlvblBydW5lUmVzdWx0OgorCQkJcmV0dmFs ID0gX2NvcHlQYXJ0aXRpb25QcnVuZVJlc3VsdChmcm9tKTsKKwkJCWJyZWFrOworCiAJCQkvKgog CQkJICogTUlTQ0VMTEFORU9VUyBOT0RFUwogCQkJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA3 NjE4NDQ0YjRkLi43MzQ2ODIwZWVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTMyNiw3ICszMjYs OSBAQCBfb3V0UGxhbm5lZFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5uZWRTdG10ICpu b2RlKQogCVdSSVRFX0lOVF9GSUVMRChqaXRGbGFncyk7CiAJV1JJVEVfTk9ERV9GSUVMRChwbGFu VHJlZSk7CiAJV1JJVEVfTk9ERV9GSUVMRChwYXJ0UHJ1bmVJbmZvcyk7CisJV1JJVEVfQk9PTF9G SUVMRChjb250YWluc0luaXRpYWxQcnVuaW5nKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJ0YWJsZSk7 CisJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKG1pbkxvY2tSZWxpZHMpOwogCVdSSVRFX05PREVfRklF TEQocmVzdWx0UmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKGFwcGVuZFJlbGF0aW9ucyk7 CiAJV1JJVEVfTk9ERV9GSUVMRChzdWJwbGFucyk7CkBAIC0xMDIxLDYgKzEwMjMsOCBAQCBfb3V0 UGFydGl0aW9uUHJ1bmVJbmZvKFN0cmluZ0luZm8gc3RyLCBjb25zdCBQYXJ0aXRpb25QcnVuZUlu Zm8gKm5vZGUpCiAJV1JJVEVfTk9ERV9UWVBFKCJQQVJUSVRJT05QUlVORUlORk8iKTsKIAogCVdS SVRFX05PREVfRklFTEQocHJ1bmVfaW5mb3MpOworCVdSSVRFX0JPT0xfRklFTEQobmVlZHNfaW5p dF9wcnVuaW5nKTsKKwlXUklURV9CT09MX0ZJRUxEKG5lZWRzX2V4ZWNfcHJ1bmluZyk7CiAJV1JJ VEVfQklUTUFQU0VUX0ZJRUxEKG90aGVyX3N1YnBsYW5zKTsKIH0KIApAQCAtMTAzNSw2ICsxMDM5 LDcgQEAgX291dFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvKFN0cmluZ0luZm8gc3RyLCBjb25zdCBQ YXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqbm9kZSkKIAlXUklURV9JTlRfQVJSQVkoc3VicGxhbl9t YXAsIG5vZGUtPm5wYXJ0cyk7CiAJV1JJVEVfSU5UX0FSUkFZKHN1YnBhcnRfbWFwLCBub2RlLT5u cGFydHMpOwogCVdSSVRFX09JRF9BUlJBWShyZWxpZF9tYXAsIG5vZGUtPm5wYXJ0cyk7CisJV1JJ VEVfSU5ERVhfQVJSQVkocnRpX21hcCwgbm9kZS0+bnBhcnRzKTsKIAlXUklURV9OT0RFX0ZJRUxE KGluaXRpYWxfcHJ1bmluZ19zdGVwcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChleGVjX3BydW5pbmdf c3RlcHMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChleGVjcGFyYW1pZHMpOwpAQCAtMjQ0MCw2 ICsyNDQ1LDggQEAgX291dFBsYW5uZXJHbG9iYWwoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5u ZXJHbG9iYWwgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVdS SVRFX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHBhcnRQ cnVuZUluZm9zKTsKKwlXUklURV9CT09MX0ZJRUxEKGNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOwor CVdSSVRFX0JJVE1BUFNFVF9GSUVMRChtaW5Mb2NrUmVsaWRzKTsKIAlXUklURV9OT0RFX0ZJRUxE KHJlbGF0aW9uT2lkcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChpbnZhbEl0ZW1zKTsKIAlXUklURV9O T0RFX0ZJRUxEKHBhcmFtRXhlY1R5cGVzKTsKQEAgLTI4NjEsNiArMjg2OCwyMSBAQCBfb3V0RXh0 ZW5zaWJsZU5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEV4dGVuc2libGVOb2RlICpub2RlKQog CW1ldGhvZHMtPm5vZGVPdXQoc3RyLCBub2RlKTsKIH0KIAorLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICoJU3R1ZmYgZnJvbSBleGVjbm9kZXMuaAorICoKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworc3RhdGljIHZvaWQKK19vdXRQYXJ0aXRpb25QcnVuZVJlc3VsdChTdHJpbmdJbmZvIHN0 ciwgY29uc3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBF KCJQQVJUSVRJT05QUlVORVJFU1VMVCIpOworCisJV1JJVEVfTk9ERV9GSUVMRCh2YWxpZF9zdWJw bGFuX29mZnNfbGlzdCk7CisJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKHNjYW5fbGVhZnBhcnRfcnRp cyk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCVN0dWZmIGZyb20gcGFyc2Vu b2Rlcy5oLgpAQCAtNDc3MCw2ICs0NzkyLDEzIEBAIG91dE5vZGUoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IHZvaWQgKm9iaikKIAkJCQlfb3V0SnNvblRhYmxlU2libGluZyhzdHIsIG9iaik7CiAJCQkJ YnJlYWs7CiAKKwkJCQkvKgorCQkJCSAqIEVYRUNVVElPTiBOT0RFUworCQkJCSAqLworCQkJY2Fz ZSBUX1BhcnRpdGlvblBydW5lUmVzdWx0OgorCQkJCV9vdXRQYXJ0aXRpb25QcnVuZVJlc3VsdChz dHIsIG9iaik7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYwppbmRleCBiZjYwMmZmOTNlLi5jMWQxMzFhYTk5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YwpAQCAtMTY0LDYgKzE2NCwxMSBAQAogCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJLyog c2tpcCA6ZmxkbmFtZSAqLyBcCiAJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbnRDb2xzKGxl bikKIAorLyogUmVhZCBhbiBJbmRleCBhcnJheSAqLworI2RlZmluZSBSRUFEX0lOREVYX0FSUkFZ KGZsZG5hbWUsIGxlbikgXAorCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJLyogc2tpcCA6 ZmxkbmFtZSAqLyBcCisJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbmRleENvbHMobGVuKQor CiAvKiBSZWFkIGEgYm9vbCBhcnJheSAqLwogI2RlZmluZSBSRUFEX0JPT0xfQVJSQVkoZmxkbmFt ZSwgbGVuKSBcCiAJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CQkvKiBza2lwIDpmbGRuYW1l ICovIFwKQEAgLTE4MTgsNyArMTgyMyw5IEBAIF9yZWFkUGxhbm5lZFN0bXQodm9pZCkKIAlSRUFE X0lOVF9GSUVMRChqaXRGbGFncyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHBsYW5UcmVlKTsKIAlSRUFE X05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOworCVJFQURfQk9PTF9GSUVMRChjb250YWluc0lu aXRpYWxQcnVuaW5nKTsKIAlSRUFEX05PREVfRklFTEQocnRhYmxlKTsKKwlSRUFEX0JJVE1BUFNF VF9GSUVMRChtaW5Mb2NrUmVsaWRzKTsKIAlSRUFEX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25z KTsKIAlSRUFEX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQo c3VicGxhbnMpOwpAQCAtMjc3MCw2ICsyNzc3LDggQEAgX3JlYWRQYXJ0aXRpb25QcnVuZUluZm8o dm9pZCkKIAlSRUFEX0xPQ0FMUyhQYXJ0aXRpb25QcnVuZUluZm8pOwogCiAJUkVBRF9OT0RFX0ZJ RUxEKHBydW5lX2luZm9zKTsKKwlSRUFEX0JPT0xfRklFTEQobmVlZHNfaW5pdF9wcnVuaW5nKTsK KwlSRUFEX0JPT0xfRklFTEQobmVlZHNfZXhlY19wcnVuaW5nKTsKIAlSRUFEX0JJVE1BUFNFVF9G SUVMRChvdGhlcl9zdWJwbGFucyk7CiAKIAlSRUFEX0RPTkUoKTsKQEAgLTI3ODYsNiArMjc5NSw3 IEBAIF9yZWFkUGFydGl0aW9uZWRSZWxQcnVuZUluZm8odm9pZCkKIAlSRUFEX0lOVF9BUlJBWShz dWJwbGFuX21hcCwgbG9jYWxfbm9kZS0+bnBhcnRzKTsKIAlSRUFEX0lOVF9BUlJBWShzdWJwYXJ0 X21hcCwgbG9jYWxfbm9kZS0+bnBhcnRzKTsKIAlSRUFEX09JRF9BUlJBWShyZWxpZF9tYXAsIGxv Y2FsX25vZGUtPm5wYXJ0cyk7CisJUkVBRF9JTkRFWF9BUlJBWShydGlfbWFwLCBsb2NhbF9ub2Rl LT5ucGFydHMpOwogCVJFQURfTk9ERV9GSUVMRChpbml0aWFsX3BydW5pbmdfc3RlcHMpOwogCVJF QURfTk9ERV9GSUVMRChleGVjX3BydW5pbmdfc3RlcHMpOwogCVJFQURfQklUTUFQU0VUX0ZJRUxE KGV4ZWNwYXJhbWlkcyk7CkBAIC0yOTM5LDYgKzI5NDksMjEgQEAgX3JlYWRQYXJ0aXRpb25SYW5n ZURhdHVtKHZvaWQpCiAJUkVBRF9ET05FKCk7CiB9CiAKKworLyoKKyAqIF9yZWFkUGFydGl0aW9u UHJ1bmVSZXN1bHQKKyAqLworc3RhdGljIFBhcnRpdGlvblBydW5lUmVzdWx0ICoKK19yZWFkUGFy dGl0aW9uUHJ1bmVSZXN1bHQodm9pZCkKK3sKKwlSRUFEX0xPQ0FMUyhQYXJ0aXRpb25QcnVuZVJl c3VsdCk7CisKKwlSRUFEX05PREVfRklFTEQodmFsaWRfc3VicGxhbl9vZmZzX2xpc3QpOworCVJF QURfQklUTUFQU0VUX0ZJRUxEKHNjYW5fbGVhZnBhcnRfcnRpcyk7CisKKwlSRUFEX0RPTkUoKTsK K30KKwogLyoKICAqIHBhcnNlTm9kZVN0cmluZwogICoKQEAgLTMyMzYsNiArMzI2MSw4IEBAIHBh cnNlTm9kZVN0cmluZyh2b2lkKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25UYWJsZVBhcmVu dCgpOwogCWVsc2UgaWYgKE1BVENIKCJKU09OVEFCTEVTSUJMSU5HIiwgMTYpKQogCQlyZXR1cm5f dmFsdWUgPSBfcmVhZEpzb25UYWJsZVNpYmxpbmcoKTsKKwllbHNlIGlmIChNQVRDSCgiUEFSVElU SU9OUFJVTkVSRVNVTFQiLCAyMCkpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkUGFydGl0aW9uUHJ1 bmVSZXN1bHQoKTsKIAllbHNlCiAJewogCQllbG9nKEVSUk9SLCAiYmFkbHkgZm9ybWF0dGVkIG5v ZGUgc3RyaW5nIFwiJS4zMnNcIi4uLiIsIHRva2VuKTsKQEAgLTMzNzksNiArMzQwNiwzMCBAQCBy ZWFkSW50Q29scyhpbnQgbnVtQ29scykKIAlyZXR1cm4gaW50X3ZhbHM7CiB9CiAKKy8qCisgKiBy ZWFkSW5kZXhDb2xzCisgKi8KK0luZGV4ICoKK3JlYWRJbmRleENvbHMoaW50IG51bUNvbHMpCit7 CisJaW50CQkJdG9rZW5MZW5ndGgsCisJCQkJaTsKKwljb25zdCBjaGFyICp0b2tlbjsKKwlJbmRl eAkgICAqaW5kZXhfdmFsczsKKworCWlmIChudW1Db2xzIDw9IDApCisJCXJldHVybiBOVUxMOwor CisJaW5kZXhfdmFscyA9IChJbmRleCAqKSBwYWxsb2MobnVtQ29scyAqIHNpemVvZihJbmRleCkp OworCWZvciAoaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspCisJeworCQl0b2tlbiA9IHBnX3N0cnRv aygmdG9rZW5MZW5ndGgpOworCQlpbmRleF92YWxzW2ldID0gYXRvdWkodG9rZW4pOworCX0KKwor CXJldHVybiBpbmRleF92YWxzOworfQorCiAvKgogICogcmVhZEJvb2xDb2xzCiAgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBiMTEyNDllZDhmLi43MTQxMDM1Y2M0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC01MTksNyArNTE5LDkgQEAgc3Rh bmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50 IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5wYXJh bGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOwogCXJlc3VsdC0+ cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKKwlyZXN1bHQtPmNvbnRhaW5z SW5pdGlhbFBydW5pbmcgPSBnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nOwogCXJlc3VsdC0+ cnRhYmxlID0gZ2xvYi0+ZmluYWxydGFibGU7CisJcmVzdWx0LT5taW5Mb2NrUmVsaWRzID0gZ2xv Yi0+bWluTG9ja1JlbGlkczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3Vs dFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0 aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggYjhkNTYxMDU5My4uZGE3NDllMzMxZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjcwLDYgKzI3MCwxNiBAQCBzZXRfcGxhbl9y ZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKQogCSAqLwogCWFkZF9ydGVz X3RvX2ZsYXRfcnRhYmxlKHJvb3QsIGZhbHNlKTsKIAorCS8qCisJICogQWRkIHRoZSBxdWVyeSdz IGFkanVzdGVkIHJhbmdlIG9mIFJUIGluZGV4ZXMgdG8gZ2xvYi0+bWluTG9ja1JlbGlkcy4KKwkg KiBUaGUgYWRqdXN0ZWQgUlQgaW5kZXhlcyBvZiBwcnVuYWJsZSByZWxhdGlvbnMgd2lsbCBiZSBk ZWxldGVkIGZyb20gdGhlCisJICogc2V0IGJlbG93IHdoZXJlIFBhcnRpdGlvblBydW5lSW5mb3Mg YXJlIHByb2Nlc3NlZC4KKwkgKi8KKwlnbG9iLT5taW5Mb2NrUmVsaWRzID0KKwkJYm1zX2FkZF9y YW5nZShnbG9iLT5taW5Mb2NrUmVsaWRzLAorCQkJCQkgIHJ0b2Zmc2V0ICsgMSwKKwkJCQkJICBy dG9mZnNldCArIGxpc3RfbGVuZ3RoKHJvb3QtPnBhcnNlLT5ydGFibGUpKTsKKwogCS8qCiAJICog QWRqdXN0IFJUIGluZGV4ZXMgb2YgUGxhblJvd01hcmtzIGFuZCBhZGQgdG8gZmluYWwgcm93bWFy a3MgbGlzdAogCSAqLwpAQCAtMzUyLDYgKzM2Miw3IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxh bm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJZm9yZWFjaCAobGMsIHJvb3QtPnBhcnRQcnVu ZUluZm9zKQogCXsKIAkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3QobGMp OworCQlCaXRtYXBzZXQgKmxlYWZwYXJ0X3J0aXMgPSBOVUxMOwogCQlMaXN0Q2VsbCAgKmw7CiAK IAkJZm9yZWFjaChsLCBwcnVuZWluZm8tPnBydW5lX2luZm9zKQpAQCAtMzYyLDE1ICszNzMsNTAg QEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkJ CWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQogCQkJewogCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJ bmZvICpwaW5mbyA9IGxmaXJzdChsMik7CisJCQkJaW50CQlpOwogCiAJCQkJLyogUlQgaW5kZXgg b2YgdGhlIHRhYmxlIHRvIHdoaWNoIHRoZSBwaW5mbyBiZWxvbmdzLiAqLwogCQkJCXBpbmZvLT5y dGluZGV4ICs9IHJ0b2Zmc2V0OworCisJCQkJLyogQWxzbyBvZiB0aGUgbGVhZiBwYXJ0aXRpb25z IHRoYXQgbWlnaHQgYmUgc2Nhbm5lZC4gKi8KKwkJCQlmb3IgKGkgPSAwOyBpIDwgcGluZm8tPm5w YXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaWYgKHBpbmZvLT5ydGlfbWFwW2ldID4gMCAmJiBwaW5m by0+c3VicGxhbl9tYXBbaV0gPj0gMCkKKwkJCQkJeworCQkJCQkJcGluZm8tPnJ0aV9tYXBbaV0g Kz0gcnRvZmZzZXQ7CisJCQkJCQlsZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIobGVhZnBh cnRfcnRpcywKKwkJCQkJCQkJCQkJCQkgICBwaW5mby0+cnRpX21hcFtpXSk7CisJCQkJCX0KKwkJ CQl9CiAJCQl9CiAJCX0KIAorCQlpZiAocHJ1bmVpbmZvLT5uZWVkc19pbml0X3BydW5pbmcpCisJ CXsKKwkJCWdsb2ItPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcgPSB0cnVlOworCisJCQkvKgorCQkJ ICogRGVsZXRlIHRoZSBsZWFmIHBhcnRpdGlvbiBSVElzIGZyb20gdGhlIGdsb2JhbCBzZXQgb2Yg cmVsYXRpb25zCisJCQkgKiB0byBiZSBsb2NrZWQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgcGxhbi4g IEFjcXVpcmVFeGVjdXRvckxvY2tzKCkKKwkJCSAqIHdpbGwgZmluZCB0aGUgb25lcyB0byBhZGQg dG8gdGhlIHNldCBhZnRlciBwZXJmb3JtaW5nIGluaXRpYWwKKwkJCSAqIHBydW5pbmcuCisJCQkg Ki8KKwkJCWdsb2ItPm1pbkxvY2tSZWxpZHMgPSBibXNfZGVsX21lbWJlcnMoZ2xvYi0+bWluTG9j a1JlbGlkcywKKwkJCQkJCQkJCQkJCSAgbGVhZnBhcnRfcnRpcyk7CisJCX0KKwogCQlnbG9iLT5w YXJ0UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7 CiAJfQogCisJLyoKKwkgKiBJdCBzZWVtcyB3b3J0aCBkb2luZyBhIGJtc19jb3B5KCkgb24gZ2xv Yi0+bWluTG9ja1JlbGlkcyBpZiB3ZSBkZWxldGVkCisJICogYml0cyBmcm9tIGl0IGFib3ZlIHRv IGdldCByaWQgb2YgYW55IGVtcHR5IHRhaWwgYml0cy4gIEl0IHNlZW1zIGJldHRlcgorCSAqIGZv ciB0aGUgbG9vcCBvdmVyIHRoaXMgc2V0IGluIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgdG8gbm90 IGhhdmUgdG8gZ28KKwkgKiB0aHJvdWdoIHRob3NlIHVzZWxlc3MgYml0IHdvcmRzLgorCSAqLwor CWlmIChnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nKQorCQlnbG9iLT5taW5Mb2NrUmVsaWRz ID0gYm1zX2NvcHkoZ2xvYi0+bWluTG9ja1JlbGlkcyk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggZDc3ZjdkM2FlZi4uOTUyYzVi ODMyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMTQ0LDcgKzE0NCw5 IEBAIHN0YXRpYyBMaXN0ICptYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVuZXF1YWwsCiAJCQkJCQkJCQkJICAgQml0 bWFwc2V0ICpwYXJ0cmVsaWRzLAogCQkJCQkJCQkJCSAgIGludCAqcmVsaWRfc3VicGxhbl9tYXAs Ci0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkg ICBCaXRtYXBzZXQgKiptYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJICAgYm9vbCAqbmVlZHNf aW5pdF9wcnVuaW5nLAorCQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRzX2V4ZWNfcHJ1bmluZyk7CiBz dGF0aWMgdm9pZCBnZW5fcGFydHBydW5lX3N0ZXBzKFJlbE9wdEluZm8gKnJlbCwgTGlzdCAqY2xh dXNlcywKIAkJCQkJCQkJUGFydENsYXVzZVRhcmdldCB0YXJnZXQsCiAJCQkJCQkJCUdlbmVyYXRl UHJ1bmluZ1N0ZXBzQ29udGV4dCAqY29udGV4dCk7CkBAIC0yMzQsNiArMjM2LDggQEAgbWFrZV9w YXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCiAJaW50CQkgICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50 CQkJaTsKKwlib29sCQluZWVkc19pbml0X3BydW5pbmcgPSBmYWxzZTsKKwlib29sCQluZWVkc19l eGVjX3BydW5pbmcgPSBmYWxzZTsKIAogCS8qCiAJICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2Vl IHdoaWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZApAQCAtMzEzLDEyICszMTcs MTYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpwYXJlbnRyZWwsCiAJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICop IGxmaXJzdChsYyk7CiAJCUxpc3QJICAgKnBpbmZvbGlzdDsKIAkJQml0bWFwc2V0ICAqbWF0Y2hl ZHN1YnBsYW5zID0gTlVMTDsKKwkJYm9vbAkJcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJ CWJvb2wJCXBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nOwogCiAJCXBpbmZvbGlzdCA9IG1ha2Vf cGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKHJvb3QsIHBhcmVudHJlbCwKIAkJCQkJCQkJCQkJCSAg cHJ1bmVxdWFsLAogCQkJCQkJCQkJCQkJICBwYXJ0cmVsaWRzLAogCQkJCQkJCQkJCQkJICByZWxp ZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkJCQkJCSAgJm1hdGNoZWRzdWJwbGFucyk7CisJCQkJCQkJ CQkJCQkgICZtYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJCQkgICZwYXJ0cmVsX25lZWRzX2lu aXRfcHJ1bmluZywKKwkJCQkJCQkJCQkJCSAgJnBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nKTsK IAogCQkvKiBXaGVuIHBydW5pbmcgaXMgcG9zc2libGUsIHJlY29yZCB0aGUgbWF0Y2hlZCBzdWJw bGFucyAqLwogCQlpZiAocGluZm9saXN0ICE9IE5JTCkKQEAgLTMyNyw2ICszMzUsOSBAQCBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVu dHJlbCwKIAkJCWFsbG1hdGNoZWRzdWJwbGFucyA9IGJtc19qb2luKG1hdGNoZWRzdWJwbGFucywK IAkJCQkJCQkJCQkgIGFsbG1hdGNoZWRzdWJwbGFucyk7CiAJCX0KKworCQluZWVkc19pbml0X3By dW5pbmcgfD0gcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJCW5lZWRzX2V4ZWNfcHJ1bmlu ZyB8PSBwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZzsKIAl9CiAKIAlwZnJlZShyZWxpZF9zdWJw bGFuX21hcCk7CkBAIC0zNDEsNiArMzUyLDggQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJLyogRWxzZSBidWlsZCB0 aGUgcmVzdWx0IGRhdGEgc3RydWN0dXJlICovCiAJcHJ1bmVpbmZvID0gbWFrZU5vZGUoUGFydGl0 aW9uUHJ1bmVJbmZvKTsKIAlwcnVuZWluZm8tPnBydW5lX2luZm9zID0gcHJ1bmVyZWxpbmZvczsK KwlwcnVuZWluZm8tPm5lZWRzX2luaXRfcHJ1bmluZyA9IG5lZWRzX2luaXRfcHJ1bmluZzsKKwlw cnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZyA9IG5lZWRzX2V4ZWNfcHJ1bmluZzsKIAogCS8q CiAJICogU29tZSBzdWJwbGFucyBtYXkgbm90IGJlbG9uZyB0byBhbnkgb2YgdGhlIGlkZW50aWZp ZWQgcGFydGl0aW9uZWQgcmVscy4KQEAgLTQ0MSwxMyArNDU0LDE4IEBAIGFkZF9wYXJ0X3JlbGlk cyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCiAgKiBJZiB3ZSBj YW5ub3QgZmluZCBhbnkgdXNlZnVsIHJ1bi10aW1lIHBydW5pbmcgc3RlcHMsIHJldHVybiBOSUwu CiAgKiBIb3dldmVyLCBvbiBzdWNjZXNzLCBlYWNoIHJlbCBpZGVudGlmaWVkIGluIHBhcnRyZWxp ZHMgd2lsbCBoYXZlCiAgKiBhbiBlbGVtZW50IGluIHRoZSByZXN1bHQgbGlzdCwgZXZlbiBpZiBz b21lIG9mIHRoZW0gYXJlIHVzZWxlc3MuCisgKiAqbmVlZHNfaW5pdF9wcnVuaW5nIGFuZCAqbmVl ZHNfZXhlY19wcnVuaW5nIGFyZSBzZXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUKKyAqIHJldHVybmVk IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBjb250YWlucyBwcnVuaW5nIHN0ZXBzIHRoYXQgY2Fu IGJlCisgKiBwZXJmb3JtZWQgYmVmb3JlIGFuZCBhZnRlciBleGVjdXRpb24gYmVnaW5zLCByZXNw ZWN0aXZlbHkuCiAgKi8KIHN0YXRpYyBMaXN0ICoKIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVp bmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkJICBM aXN0ICpwcnVuZXF1YWwsCiAJCQkJCQkJICBCaXRtYXBzZXQgKnBhcnRyZWxpZHMsCiAJCQkJCQkJ ICBpbnQgKnJlbGlkX3N1YnBsYW5fbWFwLAotCQkJCQkJCSAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1 YnBsYW5zKQorCQkJCQkJCSAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCSAg Ym9vbCAqbmVlZHNfaW5pdF9wcnVuaW5nLAorCQkJCQkJCSAgYm9vbCAqbmVlZHNfZXhlY19wcnVu aW5nKQogewogCVJlbE9wdEluZm8gKnRhcmdldHBhcnQgPSBOVUxMOwogCUxpc3QJICAgKnBpbmZv bGlzdCA9IE5JTDsKQEAgLTQ1OCw2ICs0NzYsMTAgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVu ZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlpbnQJCQly dGk7CiAJaW50CQkJaTsKIAorCS8qIFdpbGwgZmluZCBvdXQgYmVsb3cuICovCisJKm5lZWRzX2lu aXRfcHJ1bmluZyA9IGZhbHNlOworCSpuZWVkc19leGVjX3BydW5pbmcgPSBmYWxzZTsKKwogCS8q CiAJICogRXhhbWluZSBlYWNoIHBhcnRpdGlvbmVkIHJlbCwgY29uc3RydWN0aW5nIGEgdGVtcG9y YXJ5IGFycmF5IHRvIG1hcAogCSAqIGZyb20gcGxhbm5lciByZWxpZHMgdG8gaW5kZXggb2YgdGhl IHBhcnRpdGlvbmVkIHJlbCwgYW5kIGJ1aWxkaW5nIGEKQEAgLTU0NSw2ICs1NjcsOSBAQCBtYWtl X3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCQkgKiBleGVjdXRvciBwZXItc2NhbiBwcnVuaW5nIHN0ZXBzLiAgVGhpcyBm aXJzdCBwYXNzIGNyZWF0ZXMgc3RhcnR1cAogCQkgKiBwcnVuaW5nIHN0ZXBzIGFuZCBkZXRlY3Rz IHdoZXRoZXIgdGhlcmUncyBhbnkgcG9zc2libHktdXNlZnVsIHF1YWxzCiAJCSAqIHRoYXQgd291 bGQgcmVxdWlyZSBwZXItc2NhbiBwcnVuaW5nLgorCQkgKgorCQkgKiBJbiB0aGUgZmlyc3QgcGFz cywgd2Ugbm90ZSB3aGV0aGVyIHRoZSAybmQgcGFzcyBpcyBuZWNlc3NhcnkgYnkKKwkJICogbm90 aW5nIHRoZSBwcmVzZW5jZSBvZiBFWEVDIHBhcmFtZXRlcnMuCiAJCSAqLwogCQlnZW5fcGFydHBy dW5lX3N0ZXBzKHN1YnBhcnQsIHBhcnRwcnVuZXF1YWwsIFBBUlRUQVJHRVRfSU5JVElBTCwKIAkJ CQkJCQkmY29udGV4dCk7CkBAIC02MTksNiArNjQ0LDEyIEBAIG1ha2VfcGFydGl0aW9uZWRyZWxf cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXBp bmZvLT5leGVjcGFyYW1pZHMgPSBleGVjcGFyYW1pZHM7CiAJCS8qIFJlbWFpbmluZyBmaWVsZHMg d2lsbCBiZSBmaWxsZWQgaW4gdGhlIG5leHQgbG9vcCAqLwogCisJCS8qIHJlY29yZCB3aGljaCB0 eXBlcyBvZiBwcnVuaW5nIHN0ZXBzIHdlJ3ZlIHNlZW4gc28gZmFyICovCisJCWlmIChpbml0aWFs X3BydW5pbmdfc3RlcHMgIT0gTklMKQorCQkJKm5lZWRzX2luaXRfcHJ1bmluZyA9IHRydWU7CisJ CWlmIChleGVjX3BydW5pbmdfc3RlcHMgIT0gTklMKQorCQkJKm5lZWRzX2V4ZWNfcHJ1bmluZyA9 IHRydWU7CisKIAkJcGluZm9saXN0ID0gbGFwcGVuZChwaW5mb2xpc3QsIHBpbmZvKTsKIAl9CiAK QEAgLTY0Niw2ICs2NzcsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlpbnQJCSAgICpzdWJwbGFuX21h cDsKIAkJaW50CQkgICAqc3VicGFydF9tYXA7CiAJCU9pZAkJICAgKnJlbGlkX21hcDsKKwkJSW5k ZXgJICAgKnJ0aV9tYXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFuIGFuZCBz dWJwYXJ0IG1hcHMgZm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU4LDYgKzY5MCw3 IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpwYXJlbnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2MobnBhcnRz ICogc2l6ZW9mKGludCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMgKiBzaXpl b2YoaW50KSk7CiAJCXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBzaXplb2Yo T2lkKSk7CisJCXJ0aV9tYXAgPSAoSW5kZXggKikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoSW5k ZXgpKTsKIAkJcHJlc2VudF9wYXJ0cyA9IE5VTEw7CiAKIAkJaSA9IC0xOwpAQCAtNjcyLDYgKzcw NSw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBsYW5pZHggPSBy ZWxpZF9zdWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFydF9tYXBbaV0g PSBzdWJwYXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJ CXJlbGlkX21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQsIHJvb3QpLT5y ZWxpZDsKKwkJCXJ0aV9tYXBbaV0gPSBwYXJ0cmVsLT5yZWxpZDsKIAkJCWlmIChzdWJwbGFuaWR4 ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVtYmVyKHByZXNlbnRf cGFydHMsIGkpOwpAQCAtNjk2LDYgKzczMCw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVp bmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXBpbmZvLT5z dWJwbGFuX21hcCA9IHN1YnBsYW5fbWFwOwogCQlwaW5mby0+c3VicGFydF9tYXAgPSBzdWJwYXJ0 X21hcDsKIAkJcGluZm8tPnJlbGlkX21hcCA9IHJlbGlkX21hcDsKKwkJcGluZm8tPnJ0aV9tYXAg PSBydGlfbWFwOwogCX0KIAogCXBmcmVlKHJlbGlkX3N1YnBhcnRfbWFwKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwppbmRleCA1YWI5MWMyYzU4Li41YWU5Njc2MDhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xNjAz LDYgKzE2MDMsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2Up CiAJaW50MTYJICAgKnJmb3JtYXRzID0gTlVMTDsKIAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwog CUNhY2hlZFBsYW4gKmNwbGFuOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CiAJ UG9ydGFsCQlwb3J0YWw7CiAJY2hhcgkgICAqcXVlcnlfc3RyaW5nOwogCWNoYXIJICAgKnNhdmVk X3N0bXRfbmFtZTsKQEAgLTE5NzgsNyArMTk3OSw5IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmlu Z0luZm8gaW5wdXRfbWVzc2FnZSkKIAkgKiB3aWxsIGJlIGdlbmVyYXRlZCBpbiBNZXNzYWdlQ29u dGV4dC4gIFRoZSBwbGFuIHJlZmNvdW50IHdpbGwgYmUKIAkgKiBhc3NpZ25lZCB0byB0aGUgUG9y dGFsLCBzbyBpdCB3aWxsIGJlIHJlbGVhc2VkIGF0IHBvcnRhbCBkZXN0cnVjdGlvbi4KIAkgKi8K LQljcGxhbiA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMKTsKKwljcGxh biA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMLCAmcGFydF9wcnVuZV9y ZXN1bHRfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJ CSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAogCS8qCiAJICogTm93 IHdlIGNhbiBkZWZpbmUgdGhlIHBvcnRhbC4KQEAgLTE5OTMsNiArMTk5Niw5IEBAIGV4ZWNfYmlu ZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJICBjcGxhbi0+c3RtdF9s aXN0LAogCQkJCQkgIGNwbGFuKTsKIAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGlu dG8gdGhlIHBvcnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJl c3VsdHMocG9ydGFsLCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qIERvbmUgd2l0aCB0 aGUgc25hcHNob3QgdXNlZCBmb3IgcGFyYW1ldGVyIEkvTyBhbmQgcGFyc2luZy9wbGFubmluZyAq LwogCWlmIChzbmFwc2hvdF9zZXQpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpp bmRleCA1YWE1YTM1MGYzLi44Y2MyZTIxNjJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTM1LDcgKzM1LDcg QEAKIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNz UXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCitzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5l ZFN0bXQgKnBsYW4sIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJ CQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1z LAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtNjUsNiArNjUsNyBAQCBz dGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNj ICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJUGFydGl0 aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCWNvbnN0IGNoYXIgKnNvdXJj ZVRleHQsCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19z bmFwc2hvdCwKQEAgLTc3LDYgKzc4LDggQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7 CS8qIG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFu ICovCisJcWQtPnBhcnRfcHJ1bmVfcmVzdWx0ID0gcGFydF9wcnVuZV9yZXN1bHQ7CS8qIEV4ZWN1 dG9yRG9Jbml0aWFsUHJ1bmluZygpCisJCQkJCQkJCQkJCQkgKiBvdXRwdXQgZm9yIHBsYW4gKi8K IAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBS SSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTIyLDYgKzEyNSw3IEBAIEZyZWVRdWVyeURlc2MoUXVl cnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9SVEFMX09ORV9N T0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0aGUgcXVlcnkK KyAqCXBhcnRfcHJ1bmVfcmVzdWx0OiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSBvdXRwdXQg Zm9yIHRoZSBwbGFuIHRyZWUKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUg cXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0 byBzZW5kIHJlc3VsdHMKQEAgLTEzNCw2ICsxMzgsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVz YyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBs YW4sCisJCQkgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJIGNv bnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCkBAIC0xNDUsNyArMTUwLDcgQEAgUHJvY2Vzc1F1ZXJ5 KFBsYW5uZWRTdG10ICpwbGFuLAogCS8qCiAJICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0 CiAJICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCisJ cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBhcnRfcHJ1bmVfcmVzdWx0LCBzb3Vy Y2VUZXh0LAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJ CQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCkBAIC00OTEsOCArNDk2LDEzIEBA IFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCS8q CiAJCQkJICogQ3JlYXRlIFF1ZXJ5RGVzYyBpbiBwb3J0YWwncyBjb250ZXh0OyBmb3IgdGhlIG1v bWVudCwgc2V0CiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgorCQkJCSAqCisJ CQkJICogVGhlcmUgaXMgbm8gUGFydGl0aW9uUHJ1bmVSZXN1bHQgdW5sZXNzIHRoZSBQbGFubmVk U3RtdCBpcworCQkJCSAqIGZyb20gYSBDYWNoZWRQbGFuLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0 bXRzKSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHMgPT0gTklMID8gTlVM TCA6CisJCQkJCQkJCQkJCWxpbml0aWFsKHBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzKSwKIAkJ CQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hv dCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC0xMjI1LDYgKzEyMzUsOCBAQCBQ b3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCiAJCWlmIChwc3RtdC0+dXRpbGl0eVN0bXQg PT0gTlVMTCkKIAkJeworCQkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0 ID0gTlVMTDsKKwogCQkJLyoKIAkJCSAqIHByb2Nlc3MgYSBwbGFubmFibGUgcXVlcnkuCiAJCQkg Ki8KQEAgLTEyNzEsMTAgKzEyODMsMTggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwK IAkJCWVsc2UKIAkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgor CQkJICogRGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIFBhcnRpdGlvblBydW5l UmVzdWx0IGZvcgorCQkJICogdGhpcyBQbGFubmVkU3RtdC4KKwkJCSAqLworCQkJaWYgKHBvcnRh bC0+cGFydF9wcnVuZV9yZXN1bHRzICE9IE5JTCkKKwkJCQlwYXJ0X3BydW5lX3Jlc3VsdCA9IGxp c3RfbnRoKHBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJCQkgZm9yZWFjaF9j dXJyZW50X2luZGV4KHN0bXRsaXN0X2l0ZW0pKTsKKwogCQkJaWYgKHBzdG10LT5jYW5TZXRUYWcp CiAJCQl7CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwotCQkJCVByb2Nl c3NRdWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0 LAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFy YW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI4Myw3ICsxMzAzLDcgQEAgUG9y dGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCXsKIAkJCQkvKiBzdG10IGFk ZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQs CisJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCQkgcG9y dGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkg cG9ydGFsLT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Bs YW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggMGQ2 YTI5NTY3NC4uOGMxNjQ3NDFmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAg LTk5LDE0ICs5OSwxOSBAQCBzdGF0aWMgZGxpc3RfaGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0 ID0gRExJU1RfU1RBVElDX0lOSVQoY2FjaGVkX2V4cHJlc3Npb25fbAogc3RhdGljIHZvaWQgUmVs ZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExp c3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog CQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBD aGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcywKKwkJCQkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBz dGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIExpc3QgKnFsaXN0LAotCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8g Ym91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgICBMaXN0 ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3Bs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBkb3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFu ICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdl dFByaW1hcnlTdG10KExpc3QgKnN0bXRzKTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxv Y2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKK3N0YXRpYyB2b2lkIEFjcXVpcmVF eGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywK KwkJCQkJCQkJIExpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCQkgTGlzdCAq KmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CitzdGF0aWMgdm9pZCBSZWxlYXNlRXhlY3V0b3JMb2Nr cyhMaXN0ICpzdG10X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CiBzdGF0aWMg dm9pZCBBY3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsK IHN0YXRpYyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNx dWlyZSk7CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNx dWlyZSk7CkBAIC03OTAsMTUgKzc5NSwyMCBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKICAqCiAgKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhh dmUgYWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4uCiAgKiAoV2UgbXVz dCBkbyB0aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVl LikKKyAqCisgKiBTZWUgR2V0Q2FjaGVkUGxhbigpJ3MgY29tbWVudCBmb3IgYSBkZXNjcmlwdGlv biBvZiBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LgogICovCiBzdGF0aWMgYm9vbAotQ2hlY2tDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCitDaGVja0NhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJ CQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0g cGxhbnNvdXJjZS0+Z3BsYW47CiAKIAkvKiBBc3NlcnQgdGhhdCBjYWxsZXIgY2hlY2tlZCB0aGUg cXVlcnl0cmVlICovCiAJQXNzZXJ0KHBsYW5zb3VyY2UtPmlzX3ZhbGlkKTsKIAorCSpwYXJ0X3By dW5lX3Jlc3VsdF9saXN0ID0gTklMOworCiAJLyogSWYgdGhlcmUncyBubyBnZW5lcmljIHBsYW4s IGp1c3Qgc2F5ICJmYWxzZSIgKi8KIAlpZiAoIXBsYW4pCiAJCXJldHVybiBmYWxzZTsKQEAgLTgy MCwxMyArODMwLDIxIEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKQogCSAqLwogCWlmIChwbGFuLT5pc192YWxpZCkKIAl7CisJCUxpc3QgICAqbG9ja2VkUmVs aWRzX3Blcl9zdG10OworCiAJCS8qCiAJCSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJlZmNv dW50IGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieQogCQkgKiBwbGFuc291cmNlOyBzbyBubyBu ZWVkIHRvIGZlYXIgaXQgZGlzYXBwZWFycyB1bmRlciB1cyBoZXJlLgogCQkgKi8KIAkJQXNzZXJ0 KHBsYW4tPnJlZmNvdW50ID4gMCk7CiAKLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3Rt dF9saXN0LCB0cnVlKTsKKwkJLyoKKwkJICogTG9jayByZWxhdGlvbnMgc2Nhbm5lZCBieSB0aGUg cGxhbi4gIFRoaXMgaXMgd2hlcmUgdGhlIHBydW5pbmcKKwkJICogaGFwcGVucyBpZiBuZWVkZWQu CisJCSAqLworCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGJvdW5kUGFy YW1zLAorCQkJCQkJCSBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCSAmbG9ja2VkUmVs aWRzX3Blcl9zdG10KTsKIAogCQkvKgogCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNr IHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCkBAIC04NDgsNyArODY2LDE0IEBAIENoZWNr Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQl9CiAKIAkJLyogT29w cywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJ QWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCVJlbGVhc2VF eGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKKwor CQkvKgorCQkgKiBUaGUgb3V0cHV0IGxpc3QgYW5kIGFueSBvYmplY3RzIHRoZXJlaW4gaGF2ZSBi ZWVuIGFsbG9jYXRlZCBpbiB0aGUKKwkJICogY2FsbGVyJ3MgaG9wZWZ1bGx5IHNob3J0LWxpdmVk IGNvbnRleHQsIHNvIHdpbGwgbm90IHJlbWFpbiBsZWFrZWQKKwkJICogZm9yIGxvbmcsIHRob3Vn aCByZXNldCB0byBhdm9pZCBpdHMgYWNjaWRlbnRhbGx5IGJlaW5nIGxvb2tlZCBhdC4KKwkJICov CisJCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gTklMOwogCX0KIAogCS8qCkBAIC04NzQsMTAg Kzg5OSwxNSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkK ICAqIFBsYW5uaW5nIHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQu ICBUaGUgZmluaXNoZWQgcGxhbgogICogaXMgaW4gYSBjaGlsZCBtZW1vcnkgY29udGV4dCwgd2hp Y2ggdHlwaWNhbGx5IHNob3VsZCBnZXQgcmVwYXJlbnRlZAogICogKHVubGVzcyB0aGlzIGlzIGEg b25lLXNob3QgcGxhbiwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBjb3B5IHRoZSBwbGFuKS4KKyAq CisgKiBBIGxpc3Qgb2YgTlVMTHMgaXMgcmV0dXJuZWQgaW4gKnBhcnRfcHJ1bmVfcmVzdWx0X2xp c3QsIG1lYW5pbmcgdGhhdCBubworICogUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZXMgaGF2ZSB5 ZXQgYmVlbiBjcmVhdGVkIGZvciB0aGUgcGxhbnMgaW4KKyAqIHN0bXRfbGlzdC4KICAqLwogc3Rh dGljIENhY2hlZFBsYW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIExpc3QgKnFsaXN0LAotCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW47CiAJTGlzdAkgICAqcGxpc3Q7CkBAIC0xMDA3LDYg KzEwMzcsMTcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us IExpc3QgKnFsaXN0LAogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKKwkvKgor CSAqIE5vIGFjdHVhbCBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgeWV0IHRvIGFkZCwgdGhvdWdoIG11 c3QgaW5pdGlhbGl6ZQorCSAqIHRoZSBsaXN0IHRvIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVs ZW1lbnRzIGFzIHRoZSBsaXN0IG9mCisJICogUGxhbm5lZFN0bXRzLgorCSAqLworCSpwYXJ0X3By dW5lX3Jlc3VsdF9saXN0ID0gTklMOworCWZvcmVhY2gobGMsIHBsaXN0KQorCXsKKwkJKnBhcnRf cHJ1bmVfcmVzdWx0X2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LCBOVUxM KTsKKwl9CisKIAlyZXR1cm4gcGxhbjsKIH0KIApAQCAtMTEyNiw2ICsxMTY3LDE3IEBAIGNhY2hl ZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBw bGFuIG9yIGEgY3VzdG9tIHBsYW4gZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVy IGRvZXMgbm90IGtub3cKICAqIHdoaWNoIGl0IHdpbGwgZ2V0LgogICoKKyAqIEZvciBldmVyeSBQ bGFubmVkU3RtdCBmb3VuZCBpbiB0aGUgcmV0dXJuZWQgQ2FjaGVkUGxhbiwgYW4gZWxlbWVudCB0 aGF0CisgKiBpcyBlaXRoZXIgYSBQYXJ0aXRpb25QcnVuZVJlc3VsdCBvciBhIE5VTEwgaXMgYWRk ZWQgdG8KKyAqICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0IGlmIG5lZWRlZC4gIFRoZSBmb3JtZXIg aWYgdGhlIFBsYW5uZWRTdG10IGlzIGZyb20KKyAqIHRoZSBleGlzdGluZyBDYWNoZWRQbGFuIHRo YXQgaXMgb3RoZXJ3aXNlIHZhbGlkIGFuZCBjb250YWlucyBhdCBsZWFzdCBvbmUKKyAqIFBhcnRp dGlvblBydW5lSW5mbyB0aGF0IGhhcyAiaW5pdGlhbCIgcHJ1bmluZyBzdGVwcy4gIFRob3NlIHN0 ZXBzIGFyZQorICogcGVyZm9ybWVkIGJ5IGNhbGxpbmcgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5n KCkgdG8gZGV0ZXJtaW5lIG9ubHkgdGhvc2UKKyAqIGxlYWYgcGFydGl0aW9ucyB0aGF0IG5lZWQg dG8gYmUgbG9ja2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgYnkgcHJ1bmluZworICogYXdh eSBzdWJwbGFucyB0aGF0IGRvbid0IG1hdGNoIHRoZSBwcnVuaW5nIGNvbmRpdGlvbnMuICBUaGUK KyAqIFBhcnRpdGlvblBydW5lUmVzdWx0IGNvbnRhaW5zIGEgbGlzdCBvZiBiaXRtYXBzZXRzIG9m IHRoZSBpbmRleGVzIG9mCisgKiBtYXRjaGluZyBzdWJwbGFucywgb25lIGZvciBlYWNoIFBhcnRp dGlvblBydW5lSW5mby4KKyAqCiAgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIGFuZCB3 ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KICAqIGV4ZWN1dGlvbi4KICAqCkBAIC0x MTM5LDExICsxMTkxLDEzIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9v bCBpbmNsdWRlX3BsYW5uZXIpCiAgKi8KIENhY2hlZFBsYW4gKgogR2V0Q2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAotCQkJ ICBSZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKKwkJCSAg UmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkgIExp c3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBOVUxM OwogCUxpc3QJICAgKnFsaXN0OwogCWJvb2wJCWN1c3RvbXBsYW47CisJTGlzdAkgICAqbXlfcGFy dF9wcnVuZV9yZXN1bHRfbGlzdDsKIAogCS8qIEFzc2VydCBjYWxsZXIgaXMgZG9pbmcgdGhpbmdz IGluIGEgc2FuZSBvcmRlciAqLwogCUFzc2VydChwbGFuc291cmNlLT5tYWdpYyA9PSBDQUNIRURQ TEFOU09VUkNFX01BR0lDKTsKQEAgLTExNjAsNyArMTIxNCw4IEBAIEdldENhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAog CWlmICghY3VzdG9tcGxhbikKIAl7Ci0JCWlmIChDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSkp CisJCWlmIChDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSwgYm91bmRQYXJhbXMsCisJCQkJCQkJ Jm15X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKQogCQl7CiAJCQkvKiBXZSB3YW50IGEgZ2VuZXJp YyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCiAJCQlwbGFuID0gcGxh bnNvdXJjZS0+Z3BsYW47CkBAIC0xMTY5LDcgKzEyMjQsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVs c2UKIAkJewogCQkJLyogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0gQnVp bGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlwbGFu ID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwKKwkJ CQkJCQkJICAgJm15X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogCQkJLyogSnVzdCBtYWtlIHJl YWwgc3VyZSBwbGFuc291cmNlLT5ncGxhbiBpcyBjbGVhciAqLwogCQkJUmVsZWFzZUdlbmVyaWNQ bGFuKHBsYW5zb3VyY2UpOwogCQkJLyogTGluayB0aGUgbmV3IGdlbmVyaWMgcGxhbiBpbnRvIHRo ZSBwbGFuc291cmNlICovCkBAIC0xMjE0LDcgKzEyNzAsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJaWYg KGN1c3RvbXBsYW4pCiAJewogCQkvKiBCdWlsZCBhIGN1c3RvbSBwbGFuICovCi0JCXBsYW4gPSBC dWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudik7 CisJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1z LCBxdWVyeUVudiwKKwkJCQkJCQkgICAmbXlfcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiAJCS8q IEFjY3VtdWxhdGUgdG90YWwgY29zdHMgb2YgY3VzdG9tIHBsYW5zICovCiAJCXBsYW5zb3VyY2Ut PnRvdGFsX2N1c3RvbV9jb3N0ICs9IGNhY2hlZF9wbGFuX2Nvc3QocGxhbiwgdHJ1ZSk7CiAKQEAg LTEyNDYsNiArMTMwMyw5IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJcGxhbi0+aXNfc2F2ZWQgPSB0cnVl OwogCX0KIAorCWlmIChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQorCQkqcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCA9IG15X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CisKIAlyZXR1cm4gcGxhbjsKIH0K IApAQCAtMTczNywxNyArMTc5NywyOSBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpz dG10cykKIAogLyoKICAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRl ZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciByZWxlYXNlIHRoZW0gaWYg YWNxdWlyZSBpcyBmYWxzZS4KKyAqCisgKiBTZWUgR2V0Q2FjaGVkUGxhbigpJ3MgY29tbWVudCBm b3IgYSBkZXNjcmlwdGlvbiBvZiBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LgorICoKKyAqIE9uIHJl dHVybiwgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCB3aWxsIGNvbnRhaW4gYSBiaXRtYXBzZXQgZm9y IGV2ZXJ5CisgKiBQbGFubmVkU3RtdCBpbiBzdG10X2xpc3QsIGNvbnRhaW5pbmcgdGhlIFJUIGlu ZGV4ZXMgb2YgcmVsYXRpb24gZW50cmllcworICogaW4gaXRzIHJhbmdlIHRhYmxlIHRoYXQgd2Vy ZSBhY3R1YWxseSBsb2NrZWQsIG9yIE5VTEwgaWYgdGhlIFBsYW5uZWRTdG10CisgKiBjb250YWlu cyBhIHV0aWxpdHkgc3RhdGVtZW50LgogICovCiBzdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9y TG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCitBY3F1aXJlRXhlY3V0b3JMb2Nr cyhMaXN0ICpzdG10X2xpc3QsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJCSBMaXN0 ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwKKwkJCQkJIExpc3QgKipsb2NrZWRSZWxpZHNfcGVy X3N0bXQpCiB7CiAJTGlzdENlbGwgICAqbGMxOwogCisJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Qg PSAqbG9ja2VkUmVsaWRzX3Blcl9zdG10ID0gTklMOwogCWZvcmVhY2gobGMxLCBzdG10X2xpc3Qp CiAJewogCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3Rt dCwgbGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOworCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFy dF9wcnVuZV9yZXN1bHQgPSBOVUxMOworCQlCaXRtYXBzZXQgICphbGxMb2NrUmVsaWRzOworCQlC aXRtYXBzZXQgICpsb2NrZWRSZWxpZHMgPSBOVUxMOworCQlpbnQJCQlydGk7CiAKIAkJaWYgKHBs YW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKIAkJewpAQCAtMTc2MSwxMyAr MTgzMywzNSBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNx dWlyZSkKIAkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRz dG10LT51dGlsaXR5U3RtdCk7CiAKIAkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2Nr cyhxdWVyeSwgYWNxdWlyZSk7CisJCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIHRydWUpOwor CQkJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0LCBOVUxMKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHBsYW5uZWRz dG10LT5ydGFibGUpCisJCS8qCisJCSAqIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiByZWxhdGlvbnMg dGhhdCB3b3VsZCBuZWVkIHRvIGJlIGxvY2tlZAorCQkgKiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBw bGFuLgorCQkgKi8KKwkJaWYgKHBsYW5uZWRzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nKQog CQl7Ci0JCQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMy KTsKKwkJCS8qCisJCQkgKiBPYnRhaW4gdGhlIHNldCBvZiBwYXJ0aXRpb25zIHRvIGJlIGxvY2tl ZCBmcm9tIHRoZQorCQkJICogUGFydGl0aW9uUHJ1bmVJbmZvcyBieSBjb25zaWRlcmluZyB0aGUg cmVzdWx0IG9mIHBlcmZvcm1pbmcKKwkJCSAqIGluaXRpYWwgcGFydGl0aW9uIHBydW5pbmcuCisJ CQkgKi8KKwkJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9CisJCQkJ RXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10LCBib3VuZFBhcmFtcyk7CisKKwkJ CWFsbExvY2tSZWxpZHMgPSBibXNfdW5pb24ocGxhbm5lZHN0bXQtPm1pbkxvY2tSZWxpZHMsCisJ CQkJCQkJCQkgIHBhcnRfcHJ1bmVfcmVzdWx0LT5zY2FuX2xlYWZwYXJ0X3J0aXMpOworCQl9CisJ CWVsc2UKKwkJCWFsbExvY2tSZWxpZHMgPSBwbGFubmVkc3RtdC0+bWluTG9ja1JlbGlkczsKKwor CQlydGkgPSAtMTsKKwkJd2hpbGUgKChydGkgPSBibXNfbmV4dF9tZW1iZXIoYWxsTG9ja1JlbGlk cywgcnRpKSkgPiAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChydGks IHBsYW5uZWRzdG10LT5ydGFibGUpOwogCiAJCQlpZiAocnRlLT5ydGVraW5kICE9IFJURV9SRUxB VElPTikKIAkJCQljb250aW51ZTsKQEAgLTE3NzgsMTAgKzE4NzIsNTggQEAgQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQkgKiBmYWlsIGlmIGl0 J3MgYmVlbiBkcm9wcGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5CiAJCQkg KiBhY3F1aXJlIGEgbm9uLWNvbmZsaWN0aW5nIGxvY2suCiAJCQkgKi8KLQkJCWlmIChhY3F1aXJl KQotCQkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJ CWVsc2UKLQkJCQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2Rl KTsKKwkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJ CWxvY2tlZFJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGxvY2tlZFJlbGlkcywgcnRpKTsKKwkJfQor CisJCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRf bGlzdCwKKwkJCQkJCQkJCQkgIHBhcnRfcHJ1bmVfcmVzdWx0KTsKKwkJKmxvY2tlZFJlbGlkc19w ZXJfc3RtdCA9IGxhcHBlbmQoKmxvY2tlZFJlbGlkc19wZXJfc3RtdCwgbG9ja2VkUmVsaWRzKTsK Kwl9Cit9CisKKy8qCisgKiBSZWxlYXNlRXhlY3V0b3JMb2NrcworICogCQlSZWxlYXNlIGxvY2tz IHRoYXQgd291bGQndmUgYmVlbiBhY3F1aXJlZCBieSBhbiBlYXJsaWVyIGNhbGwgdG8KKyAqIAkJ QWNxdWlyZUV4ZWN1dG9yTG9ja3MoKQorICovCitzdGF0aWMgdm9pZAorUmVsZWFzZUV4ZWN1dG9y TG9ja3MoTGlzdCAqc3RtdF9saXN0LCBMaXN0ICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCit7CisJ TGlzdENlbGwgICAqbGMxLAorCQkJICAgKmxjMjsKKworCWZvcmJvdGgobGMxLCBzdG10X2xpc3Qs IGxjMiwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KQorCXsKKwkJUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7CisJCUJpdG1hcHNldCAgKmxvY2tl ZFJlbGlkcyA9IGxmaXJzdChsYzIpOworCQlpbnQJCQlydGk7CisKKwkJaWYgKHBsYW5uZWRzdG10 LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyoKKwkJCSAqIElnbm9yZSB1 dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0CisJ CQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0J3Mg b2theSB0byB1c2UKKwkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUgcXVl cnkgaGFzbid0IGJlZW4gdGhyb3VnaAorCQkJICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2UgcmV3 cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQorCQkJICogcmVwcmVzZW50YXRpb24uCisJ CQkgKi8KKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRz dG10LT51dGlsaXR5U3RtdCk7CisKKwkJCWlmIChxdWVyeSkKKwkJCQlTY2FuUXVlcnlGb3JMb2Nr cyhxdWVyeSwgZmFsc2UpOworCQkJY29udGludWU7CisJCX0KKworCQlydGkgPSAtMTsKKwkJd2hp bGUgKChydGkgPSBibXNfbmV4dF9tZW1iZXIobG9ja2VkUmVsaWRzLCBydGkpKSA+PSAwKQorCQl7 CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChydGksIHBsYW5uZWRzdG10LT5ydGFi bGUpOworCisJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CisKKwkJCS8q IFNlZSB0aGUgY29tbWVudCBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLiAqLworCQkJVW5sb2Nr UmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCX0KIAl9CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCBkNTQ5ZjY2ZDRhLi4xYmJlNmI3MDRiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTMwMyw2ICszMDMsMjUgQEAgUG9ydGFs RGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9ERUZJ TkVEOwogfQogCisvKgorICogUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMKKyAqCQlD b3B5IHRoZSBnaXZlbiBsaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0 YWwncworICoJCWNvbnRleHQKKyAqCisgKiBUaGlzIGFsbG93cyB0aGUgY2FsbGVyIHRvIGVuc3Vy ZSB0aGF0IHRoZSBsaXN0IGV4aXN0cyBhcyBsb25nIGFzIHRoZSBwb3J0YWwKKyAqIGRvZXMuCisg Ki8KK3ZvaWQKK1BvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKFBvcnRhbCBwb3J0YWws IExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cykKK3sKKwlNZW1vcnlDb250ZXh0CW9sZGN4dDsKKwor CUFzc2VydEFyZyhQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOworCW9sZGN4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCXBvcnRhbC0+cGFydF9wcnVuZV9y ZXN1bHRzID0gY29weU9iamVjdChwYXJ0X3BydW5lX3Jlc3VsdHMpOworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogUG9ydGFsUmVsZWFzZUNhY2hlZFBsYW4KICAq CQlSZWxlYXNlIGEgcG9ydGFsJ3MgcmVmZXJlbmNlIHRvIGl0cyBjYWNoZWQgcGxhbiwgaWYgYW55 LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDllYmRlMDg5YWUuLmU1N2UxMzNmMGUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmgKQEAgLTg3LDcgKzg3LDkgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9u ZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkgIFBhcmFt TGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKLWV4dGVybiB2 b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAq aW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwKKwkJCQkJCSAgIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKKwkJ CQkJCSAgIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5k dXJhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u aCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBiZjk2MmFmN2Fm Li5iZDg3NzY0MDJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0 aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC00NSw2 ICs0NSw3IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBh bmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBh cnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFydCBpbmRleCBi eSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgorICogcnRpX21hcAkJCQkJCVJhbmdlIHRhYmxlIGlu ZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMC4KICAqIHByZXNlbnRfcGFydHMJCQkJQSBCaXRt YXBzZXQgb2YgdGhlIHBhcnRpdGlvbiBpbmRleGVzIHRoYXQgd2UKICAqCQkJCQkJCQloYXZlIHN1 YnBsYW5zIG9yIHN1YnBhcnRzIGZvci4KICAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcwkJTGlzdCBv ZiBQYXJ0aXRpb25QcnVuZVN0ZXBzIHVzZWQgdG8KQEAgLTYxLDYgKzYyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YQogCWludAkJCW5wYXJ0czsKIAlpbnQJCSAg ICpzdWJwbGFuX21hcDsKIAlpbnQJCSAgICpzdWJwYXJ0X21hcDsKKwlJbmRleAkgICAqcnRpX21h cDsKIAlCaXRtYXBzZXQgICpwcmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRpYWxfcHJ1bmlu Z19zdGVwczsKIAlMaXN0CSAgICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xMjYsNSArMTI4LDEw IEBAIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmco UGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4 LAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwog ZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5l U3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKKwkJ CQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoq c2Nhbl9sZWFmcGFydF9ydGlzKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNQYXJ0aXRpb25Eb0lu aXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJUGFyYW1MaXN0 SW5mbyBwYXJhbXMsCisJCQkJCQkJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJ CQkJCQlCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogI2VuZGlmCQkJCQkJCS8qIEVY RUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rl c2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZTc5ZTJjMDAxZi4u NjBkNTY0NDkwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zNSw2ICszNSw4IEBAIHR5 cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkg Q3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwg Q01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5l cidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCVBhcnRpdGlvblBydW5lUmVz dWx0ICpwYXJ0X3BydW5lX3Jlc3VsdDsgLyogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkncwor CQkJCQkJCQkJCQkgICogb3V0cHV0IGZvciBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNv dXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFw c2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2No ZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01 Nyw2ICs1OSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAq LwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwKKwkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQs CiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBz bmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmgKaW5kZXggZDY4YTZiOWQyOC4uNWM0YTI4MmJlMCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVw bGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8qCiAg KiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLworZXh0ZXJuIFBh cnRpdGlvblBydW5lUmVzdWx0ICpFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10LAorCQkJCQkJCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMpOwogZXh0 ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7 CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAyNWUwYmI5NzZlLi40ZDRiYjNmYzNjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtOTg2LDYgKzk4NiwzMyBAQCB0eXBlZGVmIHN0cnVjdCBEb21h aW5Db25zdHJhaW50U3RhdGUKICAqLwogdHlwZWRlZiBUdXBsZVRhYmxlU2xvdCAqKCpFeGVjUHJv Y05vZGVNdGQpIChzdHJ1Y3QgUGxhblN0YXRlICpwc3RhdGUpOwogCisvKi0tLS0tLS0tLS0tLS0t LS0KKyAqIFBhcnRpdGlvblBydW5lUmVzdWx0CisgKgorICogVGhlIHJlc3VsdCBvZiBwZXJmb3Jt aW5nIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIGludm9jYXRpb24gb24gYSBnaXZlbgorICog UGxhbm5lZFN0bXQuCisgKgorICogQ29udGFpbnMgYSBsaXN0IG9mIEJpdG1hcHNldCBvZiB0aGUg aW5kZXhlcyBvZiB0aGUgc3VicGxhbnMgcmVtYWluaW5nIGFmdGVyCisgKiBwZXJmb3JtaW5nIGlu aXRpYWwgcHJ1bmluZyBieSBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucygpIGZvciBl dmVyeQorICogUGFydGl0aW9uUHJ1bmVJbmZvIGZvdW5kIGluIFBsYW5uZWRTdG10LnBhcnRQcnVu ZUluZm9zLiAgUlQgaW5kZXhlcyBvZiB0aGUKKyAqIGxlYWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5 IHRob3NlIHN1YnBsYW5zIGFjcm9zcyBhbGwgUGFydGl0aW9uUHJ1bmVJbmZvcworICogYXJlIGFk ZGVkIGludG8gc2Nhbl9sZWFmcGFydF9ydGlzLgorICoKKyAqIFRoaXMgaXMgdXNlZCBieSBHZXRD YWNoZWRQbGFuKCkgdG8gaW5mb3JtIGl0cyBjYWxsZXJzIG9mIHRoZSBwcnVuaW5nCisgKiBkZWNp c2lvbnMgbWFkZSB3aGVuIHBlcmZvcm1pbmcgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbiBhIGdp dmVuIGNhY2hlZAorICogUGxhbm5lZFN0bXQsIHdoaWNoIHRoZSBjYWxsZXJzIHRoZW4gcGFzcyBv biB0byB0aGUgZXhlY3V0b3IuICBUaGUgZXhlY3V0b3IKKyAqIHJlZmVycyB0byB0aGlzIG5vZGUg d2hlbiBpbml0aWFsaXppbmcgdGhlIHBsYW4gbm9kZXMgd2hpY2ggY29udGFpbiBzdWJwbGFucwor ICogdGhhdCBtYXkgaGF2ZSBiZWVuIHBydW5lZCBieSBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmco KSwgcmF0aGVyIHRoYW4KKyAqIHJlZG9pbmcgaW5pdGlhbCBwcnVuaW5nLgorICovCit0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25QcnVuZVJlc3VsdAoreworCU5vZGVUYWcJCXR5cGU7CisKKwlMaXN0 CQkgICAqdmFsaWRfc3VicGxhbl9vZmZzX2xpc3Q7CisJQml0bWFwc2V0CSAgICpzY2FuX2xlYWZw YXJ0X3J0aXM7Cit9IFBhcnRpdGlvblBydW5lUmVzdWx0OworCiAvKiAtLS0tLS0tLS0tLS0tLS0t CiAgKgkJUGxhblN0YXRlIG5vZGUKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9u b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA3Y2UxZmM0ZGViLi5jN2Yy NTYwMjhlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTk3LDYgKzk3LDkgQEAgdHlwZWRlZiBlbnVtIE5vZGVU YWcKIAlUX1BhcnRpdGlvblBydW5lU3RlcENvbWJpbmUsCiAJVF9QbGFuSW52YWxJdGVtLAogCisJ LyogVEFHUyBGT1IgRVhFQ1VUT1IgUFJFUCBOT0RFUyAoZXhlY25vZGVzLmgpICovCisJVF9QYXJ0 aXRpb25QcnVuZVJlc3VsdCwKKwogCS8qCiAJICogVEFHUyBGT1IgUExBTiBTVEFURSBOT0RFUyAo ZXhlY25vZGVzLmgpCiAJICoKQEAgLTY3NSw2ICs2NzgsNyBAQCBleHRlcm4gc3RydWN0IEJpdG1h cHNldCAqcmVhZEJpdG1hcHNldCh2b2lkKTsKIGV4dGVybiB1aW50cHRyX3QgcmVhZERhdHVtKGJv b2wgdHlwYnl2YWwpOwogZXh0ZXJuIGJvb2wgKnJlYWRCb29sQ29scyhpbnQgbnVtQ29scyk7CiBl eHRlcm4gaW50ICpyZWFkSW50Q29scyhpbnQgbnVtQ29scyk7CitleHRlcm4gSW5kZXggKnJlYWRJ bmRleENvbHMoaW50IG51bUNvbHMpOwogZXh0ZXJuIE9pZCAqcmVhZE9pZENvbHMoaW50IG51bUNv bHMpOwogZXh0ZXJuIGludDE2ICpyZWFkQXR0ck51bWJlckNvbHMoaW50IG51bUNvbHMpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCmluZGV4IGEwZjNhNDYzMzQuLmMyZDkxYmIxMmYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oCkBAIC0xMTAsNiArMTEwLDE1IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9i YWwKIAlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsJCS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJ bmZvIGNvbnRhaW5lZCBpbgogCQkJCQkJCQkJICogdGhlIHBsYW4gKi8KIAorCWJvb2wJCWNvbnRh aW5zSW5pdGlhbFBydW5pbmc7CS8qIERvIGFueSBvZiB0aG9zZSBQYXJ0aXRpb25QcnVuZUluZm9z CisJCQkJCQkJCQkJICogaGF2ZSBpbml0aWFsIChwcmUtZXhlYykgcHJ1bmluZworCQkJCQkJCQkJ CSAqIHN0ZXBzIGluIHRoZW0/ICovCisKKwlCaXRtYXBzZXQgICptaW5Mb2NrUmVsaWRzOwkvKiBJ bmRleGVzIG9mIGFsbCByYW5nZSB0YWJsZSBlbnRyaWVzIG1pbnVzCisJCQkJCQkJCSAqIGluZGV4 ZXMgb2YgcmFuZ2UgdGFibGUgZW50cmllcyBvZiB0aGUgbGVhZgorCQkJCQkJCQkgKiBwYXJ0aXRp b25zIHNjYW5uZWQgYnkgcHJ1bmFibGUgc3VicGxhbnM7CisJCQkJCQkJCSAqIHNlZSBBY3F1aXJl RXhlY3V0b3JMb2NrcygpICovCisKIAlMaXN0CSAgICpyZWxhdGlvbk9pZHM7CS8qIE9JRHMgb2Yg cmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24gKi8KIAogCUxpc3QJICAgKmludmFsSXRlbXM7 CQkvKiBvdGhlciBkZXBlbmRlbmNpZXMsIGFzIFBsYW5JbnZhbEl0ZW1zICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oCmluZGV4IGMzZjRhMzk2NTcuLjg2OWJmNTM1YmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o CkBAIC02Nyw4ICs2NywxNyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCUxpc3QJICAg KnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQg aW4KIAkJCQkJCQkJICogdGhlIHBsYW4gKi8KIAorCWJvb2wJCWNvbnRhaW5zSW5pdGlhbFBydW5p bmc7CS8qIERvIGFueSBvZiB0aG9zZSBQYXJ0aXRpb25QcnVuZUluZm9zCisJCQkJCQkJCQkJICog aGF2ZSBpbml0aWFsIChwcmUtZXhlYykgcHJ1bmluZworCQkJCQkJCQkJCSAqIHN0ZXBzIGluIHRo ZW0/ICovCisKIAlMaXN0CSAgICpydGFibGU7CQkJLyogbGlzdCBvZiBSYW5nZVRibEVudHJ5IG5v ZGVzICovCiAKKwlCaXRtYXBzZXQgICptaW5Mb2NrUmVsaWRzOwkvKiBJbmRleGVzIG9mIGFsbCBy YW5nZSB0YWJsZSBlbnRyaWVzIG1pbnVzCisJCQkJCQkJCSAqIGluZGV4ZXMgb2YgcmFuZ2UgdGFi bGUgZW50cmllcyBvZiB0aGUgbGVhZgorCQkJCQkJCQkgKiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkg cHJ1bmFibGUgc3VicGxhbnM7CisJCQkJCQkJCSAqIHNlZSBBY3F1aXJlRXhlY3V0b3JMb2Nrcygp ICovCisKIAkvKiBydGFibGUgaW5kZXhlcyBvZiB0YXJnZXQgcmVsYXRpb25zIGZvciBJTlNFUlQv VVBEQVRFL0RFTEVURSAqLwogCUxpc3QJICAgKnJlc3VsdFJlbGF0aW9uczsJLyogaW50ZWdlciBs aXN0IG9mIFJUIGluZGV4ZXMsIG9yIE5JTCAqLwogCkBAIC0xMzg2LDYgKzEzOTUsMTMgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGxhblJvd01hcmsKICAqIHBydW5lX2luZm9zCQkJTGlzdCBvZiBMaXN0cyBj b250YWluaW5nIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzLAogICoJCQkJCQlvbmUgc3Vi bGlzdCBwZXIgcnVuLXRpbWUtcHJ1bmFibGUgcGFydGl0aW9uIGhpZXJhcmNoeQogICoJCQkJCQlh cHBlYXJpbmcgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUncyBzdWJwbGFucy4KKyAqCisgKiBuZWVk c19pbml0X3BydW5pbmcJRG9lcyBhbnkgb2YgdGhlIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBp bgorICoJCQkJCQlwcnVuZV9pbmZvcyBoYXZlIGl0cyBpbml0aWFsX3BydW5pbmdfc3RlcHMgc2V0 PworICoKKyAqIG5lZWRzX2V4ZWNfcHJ1bmluZwlEb2VzIGFueSBvZiB0aGUgUGFydGl0aW9uZWRS ZWxQcnVuZUluZm9zIGluCisgKgkJCQkJCXBydW5lX2luZm9zIGhhdmUgaXRzIGV4ZWNfcHJ1bmlu Z19zdGVwcyBzZXQ/CisgKgogICogb3RoZXJfc3VicGxhbnMJCUluZGV4ZXMgb2YgYW55IHN1YnBs YW5zIHRoYXQgYXJlIG5vdCBhY2NvdW50ZWQgZm9yCiAgKgkJCQkJCWJ5IGFueSBvZiB0aGUgUGFy dGl0aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMgaW4KICAqCQkJCQkJInBydW5lX2luZm9zIi4gIFRo ZXNlIHN1YnBsYW5zIG11c3Qgbm90IGJlIHBydW5lZC4KQEAgLTEzOTQsNiArMTQxMCw4IEBAIHR5 cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbwogewogCU5vZGVUYWcJCXR5cGU7CiAJTGlz dAkgICAqcHJ1bmVfaW5mb3M7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5nOworCWJvb2wJCW5l ZWRzX2V4ZWNfcHJ1bmluZzsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsKIH0gUGFydGl0 aW9uUHJ1bmVJbmZvOwogCkBAIC0xNDM2LDYgKzE0NTQsOSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0 aXRpb25lZFJlbFBydW5lSW5mbwogCS8qIHJlbGF0aW9uIE9JRCBieSBwYXJ0aXRpb24gaW5kZXgs IG9yIDAgKi8KIAlPaWQJCSAgICpyZWxpZF9tYXA7CiAKKwkvKiBSYW5nZSB0YWJsZSBpbmRleCBi eSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAuICovCisJSW5kZXgJICAgKnJ0aV9tYXA7CisKIAkvKgog CSAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBzaG93cyBob3cgdG8gcHJ1bmUgZHVyaW5nIGV4ZWN1 dG9yIHN0YXJ0dXAgKGkuZS4sCiAJICogd2l0aG91dCB1c2Ugb2YgYW55IFBBUkFNX0VYRUMgUGFy YW1zKTsgaXQgaXMgTklMIGlmIG5vIHN0YXJ0dXAgcHJ1bmluZwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApp bmRleCAwNDk5NjM1ZjU5Li4xYzViYjVlY2UxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMjIw LDcgKzIyMCw4IEBAIGV4dGVybiBMaXN0ICpDYWNoZWRQbGFuR2V0VGFyZ2V0TGlzdChDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hlZFBsYW4gKkdldENhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFtTGlzdEluZm8gYm91 bmRQYXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAotCQkJCQkJCQkgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYsCisJCQkJCQkJCSBMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBleHRlcm4gdm9p ZCBSZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93bmVy KTsKIAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWVkZGJkYWZlNS4u OWY3NzI3YTgzNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIHN0 cnVjdCBQb3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxl dGlvbiBkYXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxp c3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxh biwgaWYgc3RtdHMgYXJlIGZyb20gb25lICovCisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRz OwkvKiBsaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyAqLwogCiAJUGFyYW1MaXN0SW5mbyBw b3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBxdWVyeSAqLwpAQCAtMjQyLDYgKzI0 Myw4IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJ CQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKIAkJCQkJ CQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKK2V4dGVybiB2b2lkIFBvcnRhbFN0b3JlUGFydGl0aW9u UHJ1bmVSZXN1bHRzKFBvcnRhbCBwb3J0YWwsCisJCQkJCQkJCQkJCSBMaXN0ICpwYXJ0X3BydW5l X3Jlc3VsdF9saXN0KTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQo UG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFs IHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7Ci0t IAoyLjM1LjMKCg== --00000000000061086e05e319dc1e--