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 1nuV2v-0002i2-S7 for pgsql-hackers@arkaria.postgresql.org; Fri, 27 May 2022 08:10:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nuV2t-00021L-QH for pgsql-hackers@arkaria.postgresql.org; Fri, 27 May 2022 08:10:07 +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 1nuV2s-00021C-OZ for pgsql-hackers@lists.postgresql.org; Fri, 27 May 2022 08:10:07 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nuV2q-0003HM-0L for pgsql-hackers@postgresql.org; Fri, 27 May 2022 08:10:05 +0000 Received: by mail-ej1-x634.google.com with SMTP id gi33so7304161ejc.3 for ; Fri, 27 May 2022 01:10:03 -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=vuxTz/YqPsMkPWAJPnIydbE01noxOuGjaH14uVoLjNU=; b=kjf0dTLio7DsS8vMQCpnw9LourljQZN5Nr48kE+v6qp1TJ8488SXjVdWr1dy7rkAzx MYkX+KFfF495sPwuESt5t+rJOx/YT9Ly9tA8dxx2hVw30fIW4zsR5LF6Ac32ssQGEvaH Or0Ncv5DpklKNNlWatB45l/sTBqV1pw/+ctSAH71IK8VmK6iJsJSFbOTeOdW7VemKMVL r73f41HVGiTiwwnSj9q0U2f98ZXoQN7NwR2gJcTP90cRWKvHlSIlxDRrbPBACD83JcsJ VSUV7k4OkSUkvdiRmkbUmo1GleOLgvLewEMGR8m01zbHrELhN8xIIiB7FGgXipI6Wbno F71Q== 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=vuxTz/YqPsMkPWAJPnIydbE01noxOuGjaH14uVoLjNU=; b=71kdd0b9zoIXQC0gF/FT9ee69ZJ6pXMNoDJZGW4Jow5cyMgQdj8jfqbf5/tWIXCMEQ bdXaJlPXWq8KYSKcB0PhS4f2kisAmeNZYf58ehwgh9g/YmDBi3+1A7OleQi8WmmQzJA6 9LvrCBKhoR61jiDV23L5tB02jAL6HWaUuXmi6ByKpNehy7xwg7acJJGIedkm7zRTpWv9 l2SAuMXuWTZQ9WS3U+KQ0HTdDvtrGZJ8Y4g5av0xwRiusm4RRC7yplmd2PiV2mbKyK86 nQpBvQy2TNnhuDwqQ0JgjLr337Zw7eTPQWob+z4TmRbYwy2wtQkGnzjQuIxFasQ9nO9z fDsA== X-Gm-Message-State: AOAM530N/A3zC+dacUEk09DWbb8cRds4srh3r6knLxXYiPBXeIlJuO/y sJpaVskycDK2KKdjW4y02ISTRkZ0UsCHZn4two8= X-Google-Smtp-Source: ABdhPJx7yuIH/Q5KowlbqVx7ijj4R2lCj/bvSgp0ACqgWRWIjcCfE87dIgkYOuXk/Gdn3zxPCFF6+64KeS2JNvmkdkQ= X-Received: by 2002:a17:906:c155:b0:6ff:260f:a08b with SMTP id dp21-20020a170906c15500b006ff260fa08bmr6186512ejc.186.1653639002435; Fri, 27 May 2022 01:10:02 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Fri, 27 May 2022 17:09:46 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Zhihong Yu Cc: David Rowley , Robert Haas , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000053ff9705dff9d5c4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000053ff9705dff9d5c4 Content-Type: text/plain; charset="UTF-8" On Mon, Apr 11, 2022 at 12:53 PM Zhihong Yu wrote: > On Sun, Apr 10, 2022 at 8:05 PM Amit Langote wrote: >> Sending v15 that fixes that to keep the cfbot green for now. > > Hi, > > + /* RT index of the partitione table. */ > > partitione -> partitioned Thanks, fixed. Also, I broke this into patches: 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". -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000053ff9705dff9d5c4 Content-Type: application/octet-stream; name="v16-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Disposition: attachment; filename="v16-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3o5xnjj0 RnJvbSAxNmZkMDdiN2M4ZmZkZTc2MzJmZmE3YjAzZTQ1OTVlMWUwOGQ3ZTA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXkgMjAyMiAxNjowMDoyOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDEv Ml0gTW92ZSBQYXJ0aXRpb1BydW5lSW5mbyBvdXQgb2YgcGxhbiBub2RlcyBpbnRvCiBQbGFubmVk U3RtdAoKVGhlIHBsYW5uZXIgd2lsbCBub3cgYWRkIGEgZ2l2ZW4gUGFydGl0aW9QcnVuZUluZm8g dG8KUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgaW5zdGVhZCBvZiB0aGUgQXBwZW5kL01lcmdl QXBwZW5kIHBsYW4Kbm9kZSB0byB3aGljaCBpdCB3b3VsZCBiZSBhZGRlZCB1bnRpbCBub3cgYW5k IHNldCBhbiBpbmRleCBmaWVsZCBpbgp0aGUgcGxhbiBub2RlIHRoYXQgcG9pbnQgdG8gdGhlIGxp c3QgZWxlbWVudC4KCkEgbGF0ZXIgY29tbWl0IHdpbGwgbWFrZSBBY3F1aXJlRXhlY3V0b3JMb2Nr cygpIGRvIHRoZSBpbml0aWFsCnBhcnRpdGlvbiBwcnVuaW5nIHRvIGRldGVybWluZSBhIG1pbmlt YWwgc2V0IG9mIHBhcnRpdGlvbnMgdG8gYmUKbG9ja2VkIHRvIHZhbGlkYXRlIGEgcGxhbiB0cmVl IGFuZCBpdCB3aWxsIG5lZWQgdG8gY29uc3VsdCB0aGUKUGFydGl0aW9QcnVuZUluZm9zIHJlZmVy ZW5jZWQgdGhlcmVpbiB0byBkbyBzby4gIEl0IHdvdWxkIGJlIGJldHRlcgpmb3IgdGhlIFBhcnRp dGlvUHJ1bmVJbmZvcyB0byBiZSBhY2Nlc3NpYmxlIGRpcmVjdGx5IHRoYW4gdGhlbSBoYXZpbmcK dG8gYmUgZm91bmQgaW5kaXZpZHVhbGx5IGJ5IHdhbGtpbmcgdGhlIHBsYW4gdHJlZSwgd2hpY2gg Y2FuIGJlIGRvbmUKYnkgc2ltcGx5IGl0ZXJhdGl2ZSBvdmVyIFBsYW5uZWRTdG10LnBhcnRQcnVu ZUluZm9zLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAx ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQXBwZW5kLmMgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdl QXBwZW5kLmMgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAg ICB8ICA1ICstCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgfCAgNyAr Ky0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICB8ICA1ICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAyNCArKysrLS0tLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICB8ICAxICsKIHNyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYyAgICB8IDY1ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICB8IDE4ICsrKystLS0KIHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgICB8ICAzICstCiBzcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCAgICAgICAgICAgfCAgNiArKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICB8IDEyICsrKy0tCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmggICAgfCAgOCArLS0KIDE4IGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCA2 OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBlZjJmZDQ2MDkyLi43 MmZjMjczNTI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTgyNSw2ICs4MjUsNyBAQCBJ bml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdl VGFibGUoZXN0YXRlLCByYW5nZVRhYmxlKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBw bGFubmVkc3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+ cGFydFBydW5lSW5mb3M7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBh cnJheSBmcm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYwppbmRleCBmMWZkN2Y3ZThiLi5mNzNiOGMyNjA3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWNTZXJpYWxpemVQbGFuKFBs YW4gKnBsYW4sIEVTdGF0ZSAqZXN0YXRlKQogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7 CiAJcHN0bXQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9 IHBsYW47CisJcHN0bXQtPnBhcnRQcnVuZUluZm9zID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2lu Zm9zOwogCXBzdG10LT5ydGFibGUgPSBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlOwogCXBzdG10LT5y ZXN1bHRSZWxhdGlvbnMgPSBOSUw7CiAJcHN0bXQtPmFwcGVuZFJlbGF0aW9ucyA9IE5JTDsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCBlMDNlYTI3Mjk5Li5iNTVjZGQyNTgw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xNjM4LDExICsxNjM4LDEz IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJN YXAgKmF0dHJNYXApCiBQYXJ0aXRpb25QcnVuZVN0YXRlICoKIEV4ZWNJbml0UGFydGl0aW9uUHJ1 bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCSBpbnQgbl90b3RhbF9zdWJwbGFucywK LQkJCQkJCSBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCSBpbnQgcGFydF9w cnVuZV9pbmRleCwKIAkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMp CiB7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlFU3RhdGUJICAgKmVzdGF0 ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CisJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBs aXN0X250aChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MsCisJCQkJCQkJCQkJCSBwYXJ0X3By dW5lX2luZGV4KTsKIAogCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBl dmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMgKi8KIAlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRl LCBwbGFuc3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxz LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCA5ZGYxZjgxZWE4Li5m OWM3OTc2ZmYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtMTE5LDYgKzExOSw4IEBA IENyZWF0ZUV4ZWN1dG9yU3RhdGUodm9pZCkKIAllc3RhdGUtPmVzX3JlbGF0aW9ucyA9IE5VTEw7 CiAJZXN0YXRlLT5lc19yb3dtYXJrcyA9IE5VTEw7CiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9 IE5VTEw7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gTklMOworCWVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9yZXN1bHQgPSBOVUxMOwogCiAJZXN0YXRlLT5lc19qdW5rRmlsdGVyID0gTlVM TDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDM1N2UxMGExZDcuLmM2Zjg2YTY1 MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTEzNCw3ICsxMzQsNyBAQCBFeGVj SW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFw cGVuZHN0YXRlLT5hc19iZWd1biA9IGZhbHNlOwogCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9u IHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KLQlpZiAobm9kZS0+ cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0g MCkKIAl7CiAJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAKQEAgLTE0NSw3ICsx NDUsNyBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCQkgKi8KIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygm YXBwZW5kc3RhdGUtPnBzLAogCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBs YW5zKSwKLQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZm8sCisJCQkJCQkJCQkJCSAg bm9kZS0+cGFydF9wcnVuZV9pbmRleCwKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CiAJ CWFwcGVuZHN0YXRlLT5hc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJt c19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdl QXBwZW5kLmMKaW5kZXggYzVjNjJmYTVjNy4uOGQzNTg2MGMzMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTgyLDcgKzgyLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVu ZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2Vz dGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0gRXhlY01lcmdlQXBwZW5kOwogCiAJLyogSWYgcnVuLXRp bWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8K LQlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCisJaWYgKG5vZGUtPnBhcnRfcHJ1 bmVfaW5kZXggPj0gMCkKIAl7CiAJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAK QEAgLTkzLDcgKzkzLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqLwogCQlwcnVuZXN0YXRlID0gRXhlY0lu aXRQYXJ0aXRpb25QcnVuaW5nKCZtZXJnZXN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xl bmd0aChub2RlLT5tZXJnZXBsYW5zKSwKLQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2lu Zm8sCisJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKIAkJCQkJCQkJCQkJICAm dmFsaWRzdWJwbGFucyk7CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0 ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5 ZnVuY3MuYwppbmRleCA1MWQ2MzBmYTg5Li44ZmJlYWE0ZjM2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YwpAQCAtOTYsNiArOTYsNyBAQCBfY29weVBsYW5uZWRTdG10KGNvbnN0IFBsYW5uZWRTdG10ICpm cm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKHBhcmFsbGVsTW9kZU5lZWRlZCk7CiAJQ09QWV9TQ0FM QVJfRklFTEQoaml0RmxhZ3MpOwogCUNPUFlfTk9ERV9GSUVMRChwbGFuVHJlZSk7CisJQ09QWV9O T0RFX0ZJRUxEKHBhcnRQcnVuZUluZm9zKTsKIAlDT1BZX05PREVfRklFTEQocnRhYmxlKTsKIAlD T1BZX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlDT1BZX05PREVfRklFTEQoYXBwZW5k UmVsYXRpb25zKTsKQEAgLTI1Myw3ICsyNTQsNyBAQCBfY29weUFwcGVuZChjb25zdCBBcHBlbmQg KmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKGFwcGVuZHBsYW5zKTsKIAlDT1BZX1NDQUxBUl9GSUVM RChuYXN5bmNwbGFucyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoZmlyc3RfcGFydGlhbF9wbGFuKTsK LQlDT1BZX05PREVfRklFTEQocGFydF9wcnVuZV9pbmZvKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChw YXJ0X3BydW5lX2luZGV4KTsKIAogCXJldHVybiBuZXdub2RlOwogfQpAQCAtMjgxLDcgKzI4Miw3 IEBAIF9jb3B5TWVyZ2VBcHBlbmQoY29uc3QgTWVyZ2VBcHBlbmQgKmZyb20pCiAJQ09QWV9QT0lO VEVSX0ZJRUxEKHNvcnRPcGVyYXRvcnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJ Q09QWV9QT0lOVEVSX0ZJRUxEKGNvbGxhdGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lk KSk7CiAJQ09QWV9QT0lOVEVSX0ZJRUxEKG51bGxzRmlyc3QsIGZyb20tPm51bUNvbHMgKiBzaXpl b2YoYm9vbCkpOwotCUNPUFlfTk9ERV9GSUVMRChwYXJ0X3BydW5lX2luZm8pOworCUNPUFlfU0NB TEFSX0ZJRUxEKHBhcnRfcHJ1bmVfaW5kZXgpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv b3V0ZnVuY3MuYwppbmRleCBjZTEyOTE1NTkyLi43MmZjZDhhNmVlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKQEAgLTMyMSw2ICszMjEsNyBAQCBfb3V0UGxhbm5lZFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IFBsYW5uZWRTdG10ICpub2RlKQogCVdSSVRFX0JPT0xfRklFTEQocGFyYWxsZWxNb2RlTmVl ZGVkKTsKIAlXUklURV9JTlRfRklFTEQoaml0RmxhZ3MpOwogCVdSSVRFX05PREVfRklFTEQocGxh blRyZWUpOworCVdSSVRFX05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOwogCVdSSVRFX05PREVf RklFTEQocnRhYmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJlc3VsdFJlbGF0aW9ucyk7CiAJV1JJ VEVfTk9ERV9GSUVMRChhcHBlbmRSZWxhdGlvbnMpOwpAQCAtNDUwLDcgKzQ1MSw3IEBAIF9vdXRB cHBlbmQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEFwcGVuZCAqbm9kZSkKIAlXUklURV9OT0RFX0ZJ RUxEKGFwcGVuZHBsYW5zKTsKIAlXUklURV9JTlRfRklFTEQobmFzeW5jcGxhbnMpOwogCVdSSVRF X0lOVF9GSUVMRChmaXJzdF9wYXJ0aWFsX3BsYW4pOwotCVdSSVRFX05PREVfRklFTEQocGFydF9w cnVuZV9pbmZvKTsKKwlXUklURV9JTlRfRklFTEQocGFydF9wcnVuZV9pbmRleCk7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC00NjcsNyArNDY4LDcgQEAgX291dE1lcmdlQXBwZW5kKFN0cmluZ0luZm8g c3RyLCBjb25zdCBNZXJnZUFwcGVuZCAqbm9kZSkKIAlXUklURV9PSURfQVJSQVkoc29ydE9wZXJh dG9ycywgbm9kZS0+bnVtQ29scyk7CiAJV1JJVEVfT0lEX0FSUkFZKGNvbGxhdGlvbnMsIG5vZGUt Pm51bUNvbHMpOwogCVdSSVRFX0JPT0xfQVJSQVkobnVsbHNGaXJzdCwgbm9kZS0+bnVtQ29scyk7 Ci0JV1JJVEVfTk9ERV9GSUVMRChwYXJ0X3BydW5lX2luZm8pOworCVdSSVRFX0lOVF9GSUVMRChw YXJ0X3BydW5lX2luZGV4KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI0MzQsNiArMjQzNSw3IEBA IF9vdXRQbGFubmVyR2xvYmFsKFN0cmluZ0luZm8gc3RyLCBjb25zdCBQbGFubmVyR2xvYmFsICpu b2RlKQogCVdSSVRFX05PREVfRklFTEQoZmluYWxyb3dtYXJrcyk7CiAJV1JJVEVfTk9ERV9GSUVM RChyZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsK KwlXUklURV9OT0RFX0ZJRUxEKHBhcnRQcnVuZUluZm9zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJl bGF0aW9uT2lkcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChpbnZhbEl0ZW1zKTsKIAlXUklURV9OT0RF X0ZJRUxEKHBhcmFtRXhlY1R5cGVzKTsKQEAgLTI1MDEsNiArMjUwMyw3IEBAIF9vdXRQbGFubmVy SW5mbyhTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGxhbm5lckluZm8gKm5vZGUpCiAJV1JJVEVfQklU TUFQU0VUX0ZJRUxEKGN1ck91dGVyUmVscyk7CiAJV1JJVEVfTk9ERV9GSUVMRChjdXJPdXRlclBh cmFtcyk7CiAJV1JJVEVfQk9PTF9GSUVMRChwYXJ0Q29sc1VwZGF0ZWQpOworCVdSSVRFX05PREVf RklFTEQocGFydFBydW5lSW5mb3MpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YwppbmRleCA2YTA1YjY5NDE1Li5iZjYwMmZmOTNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAt MTgxNyw2ICsxODE3LDcgQEAgX3JlYWRQbGFubmVkU3RtdCh2b2lkKQogCVJFQURfQk9PTF9GSUVM RChwYXJhbGxlbE1vZGVOZWVkZWQpOwogCVJFQURfSU5UX0ZJRUxEKGppdEZsYWdzKTsKIAlSRUFE X05PREVfRklFTEQocGxhblRyZWUpOworCVJFQURfTk9ERV9GSUVMRChwYXJ0UHJ1bmVJbmZvcyk7 CiAJUkVBRF9OT0RFX0ZJRUxEKHJ0YWJsZSk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJlc3VsdFJlbGF0 aW9ucyk7CiAJUkVBRF9OT0RFX0ZJRUxEKGFwcGVuZFJlbGF0aW9ucyk7CkBAIC0xOTQ5LDcgKzE5 NTAsNyBAQCBfcmVhZEFwcGVuZCh2b2lkKQogCVJFQURfTk9ERV9GSUVMRChhcHBlbmRwbGFucyk7 CiAJUkVBRF9JTlRfRklFTEQobmFzeW5jcGxhbnMpOwogCVJFQURfSU5UX0ZJRUxEKGZpcnN0X3Bh cnRpYWxfcGxhbik7Ci0JUkVBRF9OT0RFX0ZJRUxEKHBhcnRfcHJ1bmVfaW5mbyk7CisJUkVBRF9J TlRfRklFTEQocGFydF9wcnVuZV9pbmRleCk7CiAKIAlSRUFEX0RPTkUoKTsKIH0KQEAgLTE5NzEs NyArMTk3Miw3IEBAIF9yZWFkTWVyZ2VBcHBlbmQodm9pZCkKIAlSRUFEX09JRF9BUlJBWShzb3J0 T3BlcmF0b3JzLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX09JRF9BUlJBWShjb2xsYXRp b25zLCBsb2NhbF9ub2RlLT5udW1Db2xzKTsKIAlSRUFEX0JPT0xfQVJSQVkobnVsbHNGaXJzdCwg bG9jYWxfbm9kZS0+bnVtQ29scyk7Ci0JUkVBRF9OT0RFX0ZJRUxEKHBhcnRfcHJ1bmVfaW5mbyk7 CisJUkVBRF9JTlRfRklFTEQocGFydF9wcnVuZV9pbmRleCk7CiAKIAlSRUFEX0RPTkUoKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCA3NjYwNmZhYTNlLi41 OGEwNWNmNjczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0x MjAzLDcgKzEyMDMsNiBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFw cGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwog CWludAkJCW5hc3luY3BsYW5zID0gMDsKIAlSZWxPcHRJbmZvICpyZWwgPSBiZXN0X3BhdGgtPnBh dGgucGFyZW50OwotCVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBydW5laW5mbyA9IE5VTEw7CiAJ aW50CQkJbm9kZW51bXNvcnRrZXlzID0gMDsKIAlBdHRyTnVtYmVyICpub2RlU29ydENvbElkeCA9 IE5VTEw7CiAJT2lkCQkgICAqbm9kZVNvcnRPcGVyYXRvcnMgPSBOVUxMOwpAQCAtMTM1NCw2ICsx MzUzLDkgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRo ICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBz dWJwbGFuKTsKIAl9CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdlIGNh biB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KKwlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gLTE7 CisKIAkvKgogCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVsIHRvIHBl cmZvcm0gZnVydGhlciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTM3NywxNiAr MTM3OSwxNCBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBh dGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwp Ci0JCQlwYXJ0cHJ1bmVpbmZvID0KLQkJCQltYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwg cmVsLAotCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCSBwcnVuZXF1 YWwpOworCQkJcGxhbi0+cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5m byhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJ CQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJw bGFuczsKIAlwbGFuLT5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwogCXBsYW4tPmZpcnN0X3Bh cnRpYWxfcGxhbiA9IGJlc3RfcGF0aC0+Zmlyc3RfcGFydGlhbF9wYXRoOwotCXBsYW4tPnBhcnRf cHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZw bGFuLT5wbGFuLCAoUGF0aCAqKSBiZXN0X3BhdGgpOwogCkBAIC0xNDI2LDcgKzE0MjYsNiBAQCBj cmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0 aCAqYmVzdF9wYXRoLAogCUxpc3QJICAgKnN1YnBsYW5zID0gTklMOwogCUxpc3RDZWxsICAgKnN1 YnBhdGhzOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFy dGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAogCS8qCiAJICogV2UgZG9u J3QgaGF2ZSB0aGUgYWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlIHNwbGl0 IG91dApAQCAtMTUxOSw2ICsxNTE4LDkgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5u ZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJc3VicGxhbnMgPSBs YXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmlu ZCBxdWFscyB0aGF0IHdlIGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KKwlub2RlLT5wYXJ0 X3BydW5lX2luZGV4ID0gLTE7CisKIAkvKgogCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBt YXkgYmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1 cmluZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRv ciB0bwpAQCAtMTU0MiwxMyArMTU0NCwxMyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQl9CiAKIAkJaWYg KHBydW5lcXVhbCAhPSBOSUwpCi0JCQlwYXJ0cHJ1bmVpbmZvID0gbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKHJvb3QsIHJlbCwKLQkJCQkJCQkJCQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJ CQkJCQkJCQkJCQkgcHJ1bmVxdWFsKTsKKwkJCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJICBiZXN0X3Bh dGgtPnN1YnBhdGhzLAorCQkJCQkJCQkJCQkJCQkJICBwcnVuZXF1YWwpOwogCX0KIAogCW5vZGUt Pm1lcmdlcGxhbnMgPSBzdWJwbGFuczsKLQlub2RlLT5wYXJ0X3BydW5lX2luZm8gPSBwYXJ0cHJ1 bmVpbmZvOworCiAKIAkvKgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVk IHNvcnQgY29sdW1ucywgYnV0IHdlIHdlcmUgdG9sZCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm5lci5jCmluZGV4IGEwZjIzOTAzMzQuLjMyZTY1OGI1ZDYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTUxOCw2ICs1MTgsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1 ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywK IAlyZXN1bHQtPmRlcGVuZHNPblJvbGUgPSBnbG9iLT5kZXBlbmRzT25Sb2xlOwogCXJlc3VsdC0+ cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJlc3VsdC0+ cGxhblRyZWUgPSB0b3BfcGxhbjsKKwlyZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFy dFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKIAlyZXN1 bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFw cGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYwppbmRleCBkOTVmZDg5ODA3Li5hYWZlMWMxNDlkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0zNDgsNiArMzQ4LDI5IEBAIHNldF9wbGFuX3JlZmVy ZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJCX0KIAl9CiAKKwkvKiBBbHNv IGZpeCB1cCB0aGUgaW5mb3JtYXRpb24gaW4gUGFydGl0aW9uUHJ1bmVJbmZvcy4gKi8KKwlmb3Jl YWNoIChsYywgcm9vdC0+cGFydFBydW5lSW5mb3MpCisJeworCQlQYXJ0aXRpb25QcnVuZUluZm8g KnBydW5laW5mbyA9IGxmaXJzdChsYyk7CisJCUxpc3RDZWxsICAqbDsKKworCQlmb3JlYWNoKGws IHBydW5laW5mby0+cHJ1bmVfaW5mb3MpCisJCXsKKwkJCUxpc3QJICAgKnBydW5lX2luZm9zID0g bGZpcnN0KGwpOworCQkJTGlzdENlbGwgICAqbDI7CisKKwkJCWZvcmVhY2gobDIsIHBydW5lX2lu Zm9zKQorCQkJeworCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChs Mik7CisKKwkJCQkvKiBSVCBpbmRleCBvZiB0aGUgdGFibGUgdG8gd2hpY2ggdGhlIHBpbmZvIGJl bG9uZ3MuICovCisJCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CisJCQl9CisJCX0KKwor CQlnbG9iLT5wYXJ0UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5mb3MsIHBy dW5laW5mbyk7CisJfQorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTY0MCwyMSArMTY2Mywx MiBAQCBzZXRfYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAlhcGxhbi0+ YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7 CiAKLQlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgYXBsYW4t PnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2lu Zm9zID0gbGZpcnN0KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBy dW5lX2luZm9zKQotCQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxm aXJzdChsMik7Ci0KLQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQot CX0KKwkvKgorCSAqIFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3Qg aW4gUGxhbm5lckdsb2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmIChh cGxhbi0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQorCQlhcGxhbi0+cGFydF9wcnVuZV9pbmRleCAr PSBsaXN0X2xlbmd0aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24n dCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2Vy dChhcGxhbi0+cGxhbi5sZWZ0dHJlZSA9PSBOVUxMKTsKQEAgLTE3MTIsMjEgKzE3MjYsMTIgQEAg c2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAltcGxhbi0+ YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChtcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7 CiAKLQlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgbXBsYW4t PnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2lu Zm9zID0gbGZpcnN0KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBy dW5lX2luZm9zKQotCQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxm aXJzdChsMik7Ci0KLQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQot CX0KKwkvKgorCSAqIFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3Qg aW4gUGxhbm5lckdsb2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmICht cGxhbi0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQorCQltcGxhbi0+cGFydF9wcnVuZV9pbmRleCAr PSBsaXN0X2xlbmd0aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24n dCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2Vy dChtcGxhbi0+cGxhbi5sZWZ0dHJlZSA9PSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0 cHJ1bmUuYwppbmRleCA5ZDNjMDVhZWQzLi5kNzdmN2QzYWVmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5jCkBAIC0yMDksMTYgKzIwOSwyMCBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5 X2RhdHVtX2Zyb21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAKIC8qCiAg KiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8KLSAqCQlCdWlsZHMgYSBQYXJ0aXRpb25QcnVuZUlu Zm8gd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGV4ZWN1dG9yIHRvIGFsbG93Ci0gKgkJYWRkaXRp b25hbCBwYXJ0aXRpb24gcHJ1bmluZyB0byB0YWtlIHBsYWNlLiAgUmV0dXJucyBOVUxMIHdoZW4K LSAqCQlwYXJ0aXRpb24gcHJ1bmluZyB3b3VsZCBiZSB1c2VsZXNzLgorICoJCUNoZWNrcyBpZiB0 aGUgZ2l2ZW4gc2V0IG9mIHF1YWxzIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIHBydW5pbmcgc3RlcHMK KyAqCQl0aGF0IHRoZSBleGVjdXRvciBjYW4gdXNlIHRvIHBydW5lIGF3YXkgdW5uZWVkZWQgcGFy dGl0aW9ucy4gIElmCisgKgkJc3VpdGFibGUgcXVhbHMgYXJlIGZvdW5kIHRoZW4gYSBQYXJ0aXRp b25QcnVuZUluZm8gaXMgYnVpbHQgYW5kIHRhZ2dlZAorICoJCW9udG8gdGhlIFBsYW5uZXJJbmZv J3MgcGFydFBydW5lSW5mb3MgbGlzdC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSAw LWJhc2VkIGluZGV4IG9mIHRoZSBpdGVtIGFkZGVkIHRvIHRoZQorICogcGFydFBydW5lSW5mb3Mg bGlzdCBvciAtMSBpZiBub3RoaW5nIHdhcyBhZGRlZC4KICAqCiAgKiAncGFyZW50cmVsJyBpcyB0 aGUgUmVsT3B0SW5mbyBmb3IgYW4gYXBwZW5kcmVsLCBhbmQgJ3N1YnBhdGhzJyBpcyB0aGUgbGlz dAogICogb2Ygc2NhbiBwYXRocyBmb3IgaXRzIGNoaWxkIHJlbHMuCiAgKiAncHJ1bmVxdWFsJyBp cyBhIGxpc3Qgb2YgcG90ZW50aWFsIHBydW5pbmcgcXVhbHMgKGkuZS4sIHJlc3RyaWN0aW9uCiAg KiBjbGF1c2VzIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGFwcGVuZHJlbCkuCiAgKi8KLVBh cnRpdGlvblBydW5lSW5mbyAqCitpbnQKIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJIExpc3QgKnN1YnBhdGhz LAogCQkJCQkJIExpc3QgKnBydW5lcXVhbCkKQEAgLTMzMiw3ICszMzYsNyBAQCBtYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwK IAkgKiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVyIHdpdGggcnVuLXRpbWUgcHJ1 bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwpCi0JCXJldHVybiBOVUxMOwor CQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1bHQgZGF0YSBzdHJ1Y3R1cmUg Ki8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZUluZm8pOwpAQCAtMzU4LDcg KzM2Miw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcGFyZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJwbGFucyA9 IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9zID0gbGFw cGVuZChyb290LT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBsaXN0X2xl bmd0aChyb290LT5wYXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5oCmluZGV4IDcwODQzNWU5NTIuLmJmOTYyYWY3YWYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEyMyw5ICsxMjMsOCBAQCB0eXBlZGVmIHN0cnVj dCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVj SW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJ IGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVuZUluZm8g KnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJ CQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0 bWFwc2V0ICpFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1 bmVzdGF0ZSwKIAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOwotCiAjZW5kaWYJCQkJ CQkJLyogRVhFQ1BBUlRJVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDU3Mjg4MDEz NzkuLjI1ZTBiYjk3NmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC01OTYsNiArNTk2LDggQEAg dHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7 CS8qIEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dN YXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10Owkv KiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlMaXN0CQkqZXNfcGFydF9wcnVuZV9pbmZv czsJLyogUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KKwlzdHJ1Y3QgUGFydGl0aW9uUHJ1 bmVSZXN1bHQgKmVzX3BhcnRfcHJ1bmVfcmVzdWx0OyAvKiBRdWVyeURlc2MucGFydF9wcnVuZV9y ZXN1bHQgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9t IFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVs IGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggYTZlNWRiNGVl Yy4uNjk5NWIwZWNlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTEwNyw2ICsxMDcsOSBAQCB0 eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAKIAlMaXN0CSAgICphcHBlbmRSZWxhdGlvbnM7 CS8qICJmbGF0IiBsaXN0IG9mIEFwcGVuZFJlbEluZm9zICovCiAKKwlMaXN0CSAgICpwYXJ0UHJ1 bmVJbmZvczsJCS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbgorCQkJ CQkJCQkJICogdGhlIHBsYW4gKi8KKwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsJLyogT0lEcyBv ZiByZWxhdGlvbnMgdGhlIHBsYW4gZGVwZW5kcyBvbiAqLwogCiAJTGlzdAkgICAqaW52YWxJdGVt czsJCS8qIG90aGVyIGRlcGVuZGVuY2llcywgYXMgUGxhbkludmFsSXRlbXMgKi8KQEAgLTM3OCw2 ICszODEsOSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAogCS8qIERvZXMgdGhpcyBxdWVyeSBtb2Rp ZnkgYW55IHBhcnRpdGlvbiBrZXkgY29sdW1ucz8gKi8KIAlib29sCQlwYXJ0Q29sc1VwZGF0ZWQ7 CisKKwkvKiBQYXJ0aXRpb25QcnVuZUluZm9zIGFkZGVkIGluIHRoaXMgcXVlcnkncyBwbGFuLiAq LworCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwogfTsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmlu ZGV4IDBlYTlhMjJkZmIuLjI5N2NhY2ZiNWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC02NCw2 ICs2NCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAlzdHJ1Y3QgUGxhbiAqcGxh blRyZWU7CQkvKiB0cmVlIG9mIFBsYW4gbm9kZXMgKi8KIAorCUxpc3QJICAgKnBhcnRQcnVuZUlu Zm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4KKwkJCQkJCQkJ ICogdGhlIHBsYW4gKi8KKwogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJs RW50cnkgbm9kZXMgKi8KIAogCS8qIHJ0YWJsZSBpbmRleGVzIG9mIHRhcmdldCByZWxhdGlvbnMg Zm9yIElOU0VSVC9VUERBVEUvREVMRVRFICovCkBAIC0yNjIsOCArMjY1LDggQEAgdHlwZWRlZiBz dHJ1Y3QgQXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5m byBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0 aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8q IEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1l IHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0KQEAgLTI4Miw4ICsyODUsOSBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFw cGVuZAogCU9pZAkJICAgKnNvcnRPcGVyYXRvcnM7CS8qIE9JRHMgb2Ygb3BlcmF0b3JzIHRvIHNv cnQgdGhlbSBieSAqLwogCU9pZAkJICAgKmNvbGxhdGlvbnM7CQkvKiBPSURzIG9mIGNvbGxhdGlv bnMgKi8KIAlib29sCSAgICpudWxsc0ZpcnN0OwkJLyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rp b25zICovCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdl J3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9w cnVuZV9pbmZvOworCisJLyogSW5kZXggdG8gUGxhbm5lckluZm8ucGFydFBydW5lSW5mb3Mgb3Ig LTEgaWYgbm8gcnVuLXRpbWUgcHJ1bmluZyAqLworCWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9 IE1lcmdlQXBwZW5kOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcv cGFydHBydW5lLmgKaW5kZXggOTA2ODRlZmEyNS4uZWJmMGRjZmY4YyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzAsMTAgKzcwLDEwIEBAIHR5cGVkZWYgc3RydWN0IFBh cnRpdGlvblBydW5lQ29udGV4dAogI2RlZmluZSBQcnVuZUN4dFN0YXRlSWR4KHBhcnRuYXR0cywg c3RlcF9pZCwga2V5bm8pIFwKIAkoKHBhcnRuYXR0cykgKiAoc3RlcF9pZCkgKyAoa2V5bm8pKQog Ci1leHRlcm4gUGFydGl0aW9uUHJ1bmVJbmZvICptYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oc3Ry dWN0IFBsYW5uZXJJbmZvICpyb290LAotCQkJCQkJCQkJCQkJCXN0cnVjdCBSZWxPcHRJbmZvICpw YXJlbnRyZWwsCi0JCQkJCQkJCQkJCQkJTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJTGlz dCAqcHJ1bmVxdWFsKTsKK2V4dGVybiBpbnQgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVj dCBQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCXN0cnVjdCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCisJCQkJCQkJCQlMaXN0ICpzdWJwYXRocywKKwkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7 CiBleHRlcm4gQml0bWFwc2V0ICpwcnVuZV9hcHBlbmRfcmVsX3BhcnRpdGlvbnMoc3RydWN0IFJl bE9wdEluZm8gKnJlbCk7CiBleHRlcm4gQml0bWFwc2V0ICpnZXRfbWF0Y2hpbmdfcGFydGl0aW9u cyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkJICBMaXN0ICpwcnVu aW5nX3N0ZXBzKTsKLS0gCjIuMzUuMwoK --00000000000053ff9705dff9d5c4 Content-Type: application/octet-stream; name="v16-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v16-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3o5xnjn1 RnJvbSA2NjU0ZDdjMmI1YzU0ZDY5ZDNmOGEwMTM2Y2ZhZjU1OTNhM2I3YWFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDIv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDI3ICsrKwogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgfCAgNTMgKysrKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYyAgIHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAg ICAgICAgICAgIHwgIDI3ICsrLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAg ICAgfCAgMjcgKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICB8ICAy OSArKysKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgIHwgIDUxICsrKysr Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgfCAgNDUgKysrKysKIHNyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgIHwgIDQxICsrKystCiBzcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YyAgICAgICAgICAgICAgfCAgMjggKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2Fj aGUuYyAgICB8IDE4NCArKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdy L3BvcnRhbG1lbS5jICAgICB8ICAxOSArKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5o ICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAg IHwgICA5ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICB8ICAgMyAr CiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICB8ICAgMiArCiBzcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICB8ICAyOCArKysKIHNyYy9pbmNsdWRlL25v ZGVzL25vZGVzLmggICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAg ICAgICAgIHwgIDE5ICsrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICB8 ICAgMyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgfCAgIDMgKwog MzQgZmlsZXMgY2hhbmdlZCwgODQ5IGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKaW5kZXggZmNhMjlhOWExMC4uZDgzOTUxNzY5MyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMKQEAgLTU0MSw3ICs1NDEsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJY3N0YXRl LT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3NvdXJj ZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFs aWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y3JlYXRlYXMuYwppbmRleCA5YWJiYjZiNTU1Li5mNjYwN2YyNDU0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ny ZWF0ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRl ICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hv dENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0 cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2 ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVl cnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggNWQxZjcwODlkYS4uMTExZDM4 NDk4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNDA3LDcgKzQwNyw3IEBAIEV4cGxhaW5P bmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQl9CiAKIAkJLyogcnVu IGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCQlFeHBsYWluT25lUGxhbihw bGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCisJCUV4cGxhaW5P bmVQbGFuKHBsYW4sIE5VTEwsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVu diwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVM TCkpOwogCX0KIH0KQEAgLTUxNSw3ICs1MTUsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1 dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNh bGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVf cmVzdWx0LAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAg IGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24s CiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCkBAIC01NjMsNyArNTY0LDcgQEAg RXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRv LCBFeHBsYWluU3RhdGUgKmVzLAogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKHBsYW5uZWRzdG10LCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbm5lZHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LCBxdWVyeVN0cmluZywKIAkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJh bXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMKaW5kZXggNzY3ZDliOTYxOS4uMWQ1NWEyM2RlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMKQEAgLTc3Niw3ICs3NzYsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3Fs KQogCQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCi0JCQkJcWRlc2MgPSBDcmVhdGVRdWVy eURlc2Moc3RtdCwKKwkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBOVUxMLAogCQkJ CQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJ CQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IGQxZWUx MDY0NjUuLmU4NzgyMDk2NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZp ZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQwOCw3ICs0MDgs NyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAq cXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBh IFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwot CXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwg TlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA4MDczODU0N2VkLi5jNzM2MDcx MmIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xNTUsNiArMTU1LDcgQEAgRXhlY3V0ZVF1 ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJQ2Fj aGVkUGxhbiAqY3BsYW47CiAJTGlzdAkgICAqcGxhbl9saXN0OworCUxpc3QJICAgKnBhcnRfcHJ1 bmVfcmVzdWx0X2xpc3Q7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJ ICAgKmVzdGF0ZSA9IE5VTEw7CiAJUG9ydGFsCQlwb3J0YWw7CkBAIC0xOTMsNyArMTk0LDEwIEBA IEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgICBlbnRyeS0+cGxh bnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNy ZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFu KGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMKTsKKwljcGxhbiA9IEdldENh Y2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsCisJCQkJCQkg ICZwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0 bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwog CXBsYW5fbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKgpAQCAtMjA3LDYgKzIxMSw5IEBA IEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcGxhbl9saXN0LAogCQkJ CQkgIGNwbGFuKTsKIAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBv cnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9y dGFsLCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qCiAJICogRm9yIENSRUFURSBUQUJM RSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgcHJlcGFyZWQKIAkgKiBz dGF0ZW1lbnQgaXMgb25lIHRoYXQgcHJvZHVjZXMgdHVwbGVzLiAgQ3VycmVudGx5IHdlIGluc2lz dCB0aGF0IGl0IGJlCkBAIC01NzYsNyArNTgzLDkgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ Y29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFuOwogCUxpc3QJICAg KnBsYW5fbGlzdDsKLQlMaXN0Q2VsbCAgICpwOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0 X2xpc3Q7CisJTGlzdENlbGwgICAqcCwKKwkJCSAgICpwcDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFt TEkgPSBOVUxMOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlpbnN0cl90aW1lCXBsYW5z dGFydDsKQEAgLTYxOSw3ICs2MjgsMTAgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3Rt dCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAKIAkvKiBS ZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCByZWZjb3VudCAqLwogCWNw bGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKLQkJCQkJCSAg Q3VycmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52KTsKKwkJCQkJCSAgQ3VycmVudFJlc291cmNl T3duZXIsIHF1ZXJ5RW52LAorCQkJCQkJICAmcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CisJQXNz ZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3RoKHBh cnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbmR1 cmF0aW9uKTsKIAlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0KTsK QEAgLTYzNCwxMyArNjQ2LDE1IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCXBsYW5fbGlzdCA9 IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KLQlmb3JlYWNo KHAsIHBsYW5fbGlzdCkKKwlmb3Jib3RoKHAsIHBsYW5fbGlzdCwgcHAsIHBhcnRfcHJ1bmVfcmVz dWx0X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVk U3RtdCwgcCk7CisJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IGxm aXJzdF9ub2RlKFBhcnRpdGlvblBydW5lUmVzdWx0LCBwcCk7CiAKIAkJaWYgKHBzdG10LT5jb21t YW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBl cywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRp b24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKKwkJCUV4cGxhaW5PbmVQbGFu KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKKwkJCQkJ CSAgIHBhcmFtTEksIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVzLT5idWZm ZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShw c3RtdC0+dXRpbGl0eVN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCiAJCQkJCQkJICBwYXJh bUxJLCBxdWVyeUVudik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggMGI1MTgzZmM0YS4uZTA4MDJiZTcy MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtNjUsNiArNjUsMjkgQEAgZm91bmQgdGhlcmUuICBUaGlz IGN1cnJlbnRseSBvbmx5IG9jY3VycyBmb3IgQXBwZW5kIGFuZCBNZXJnZUFwcGVuZCBub2Rlcy4g IEluCiB0aGlzIGNhc2UgdGhlIG5vbi1yZXF1aXJlZCBzdWJwbGFucyBhcmUgaWdub3JlZCBhbmQg dGhlIGV4ZWN1dG9yIHN0YXRlJ3MKIHN1Ym5vZGUgYXJyYXkgd2lsbCBiZWNvbWUgb3V0IG9mIHNl cXVlbmNlIHRvIHRoZSBwbGFuJ3Mgc3VicGxhbiBsaXN0LgogCitBY3R1YWxseSwgdGhlIHNvLWNh bGxlZCBleGVjdXRpb24gdGltZSBwcnVuaW5nIG1heSBhbHNvIG9jY3VyIGV2ZW4gYmVmb3JlIHRo ZQorZXhlY3V0aW9uIGhhcyBzdGFydGVkLiAgT25lIGNhc2Ugd2hlcmUgdGhhdCBvY2N1cnMgaXMg d2hlbiBhIGNhY2hlZCBnZW5lcmljCitwbGFuIGlzIGJlaW5nIHZhbGlkYXRlZCBmb3IgZXhlY3V0 aW9uIGJ5IHBsYW5jYWNoZS5jOiBHZXRDYWNoZWRQbGFuKCksIHdoaWNoCitwcm9jZWVkcyBieSBs b2NraW5nIGFsbCB0aGUgcmVsYXRpb25zIHRoYXQgd2lsbCBiZSBzY2FubmVkIGJ5IHRoYXQgcGxh bi4gIElmCit0aGUgZ2VuZXJpYyBwbGFuIGNvbnRhaW5zIG5vZGVzIHRoYXQgY2FuIHBlcmZvcm0g ZXhlY3V0aW9uIHRpbWUgcGFydGl0aW9uCitwcnVuaW5nICh0aGF0IGlzLCBjb250YWluIGEgUGFy dGl0aW9uUHJ1bmVJbmZvKSwgYSBzdWJzZXQgb2YgcHJ1bmluZyBzdGVwcworY29udGFpbmVkIGlu IHRoZSBQYXJ0aXRpb25QcnVuZUluZm9zIHRoYXQgZG8gbm90IGRlcGVuZCBvbiBleGVjdXRpb24g YWN0dWFsbHkKK2hhdmluZyBzdGFydGVkIChjYWxsZWQgImluaXRpYWwiIHBydW5pbmcgc3RlcHMp IGFyZSBwZXJmb3JtZWQgYXQgdGhpcyBwb2ludAordG8gZmlndXJlIG91dCB0aGUgbWluaW1hbCBz ZXQgb2YgY2hpbGQgc3VicGxhbnMgdGhhdCBzYXRpc2Z5IHRob3NlIHBydW5pbmcKK2luc3RydWN0 aW9ucy4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgbG9va2luZyBhdCBhIHBhcnRpY3VsYXIgcGxh biB3aWxsIHRoZW4KK2xvY2sgb25seSB0aGUgcmVsYXRpb25zIHNjYW5uZWQgYnkgdGhvc2Ugc3Vy dml2aW5nIHN1YnBsYW5zIChhbG9uZyB3aXRoIHRob3NlCitwcmVzZW50IGluIFBsYW5uZWRTdG10 Lm1pbkxvY2tSZWxpZHMpLCBhbmQgaWdub3JlIHRob3NlIHNjYW5uZWQgYnkgdGhlIHBydW5lZAor c3VicGxhbnMsIGV2ZW4gdGhvdWdoIHRoZSBwcnVuZWQgc3VicGxhbnMgdGhlbXNlbHZlcyBhcmUg bm90IHJlbW92ZWQgZnJvbSB0aGUKK3BsYW4gdHJlZS4gIFRoZSByZXN1bHQgb2YgcHJ1bmluZyAo dGhhdCBpcywgdGhlIHNldCBvZiBpbmRleGVzIG9mIHN1cnZpdmluZworc3VicGxhbnMgaW4gdGhl aXIgcGFyZW50J3MgbGlzdCBvZiBjaGlsZCBzdWJwbGFucykgaXMgc2F2ZWQgYXMgYSBsaXN0IG9m CitiaXRtYXBzZXRzLCB3aXRoIG9uZSBlbGVtZW50IGZvciBldmVyeSBQYXJ0aXRpb25QcnVuZUlu Zm8gcmVmZXJlbmNlZCBpbiB0aGUKK3BsYW4gKFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zKS4g IFRoZSBsaXN0IGlzIHBhY2thZ2VkIGludG8gYQorUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZSwg d2hpY2ggaXMgcGFzc2VkIGFsb25nIHdpdGggdGhlIFBsYW5uZWRTdG10IHRvIHRoZQorZXhlY3V0 b3IgdmlhIHRoZSBRdWVyeURlc2MuICBJdCBpcyBpbXBlcmF0aXZlIHRoYXQgdGhlIGV4ZWN1dG9y IGFuZCBhbnkgdGhpcmQKK3BhcnR5IGNvZGUgaW52b2tlZCBieSBpdCB0aGF0IGdldHMgcGFzc2Vk IHRoZSBwbGFuIHRyZWUgbG9vayBhdCB0aGUgcGxhbidzCitQYXJ0aXRpb25QcnVuZVJlc3VsdCB0 byBkZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgY2hpbGQgc3VicGxhbiBvZiBhCitwYXJl bnQgbm9kZSB0aGF0IHN1cHBvcnRzIHBydW5pbmcgaXMgdmFsaWQgZm9yIGEgZ2l2ZW4gZXhlY3V0 aW9uLgorCiBFYWNoIFBsYW4gbm9kZSBtYXkgaGF2ZSBleHByZXNzaW9uIHRyZWVzIGFzc29jaWF0 ZWQgd2l0aCBpdCwgdG8gcmVwcmVzZW50CiBpdHMgdGFyZ2V0IGxpc3QsIHF1YWxpZmljYXRpb24g Y29uZGl0aW9ucywgZXRjLiAgVGhlc2UgdHJlZXMgYXJlIGFsc28KIHJlYWQtb25seSB0byB0aGUg ZXhlY3V0b3IsIGJ1dCB0aGUgZXhlY3V0b3Igc3RhdGUgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlv bgpAQCAtMjg2LDYgKzMwOSwxMCBAQCBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogCiBU aGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5n OgogCisgIFsgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nIF0gLS0tIGFuIG9wdGlvbmFsIHN0ZXAg dG8gcGVyZm9ybSBpbml0aWFsCisJCXBhcnRpdGlvbiBwcnVuaW5nIG9uIHRoZSBwbGFuIHRyZWUg dGhlIHJlc3VsdCBvZiB3aGljaCBpcyBwYXNzZWQKKwkJdG8gdGhlIGV4ZWN1dG9yIHZpYSBRdWVy eURlc2MKKwogCUNyZWF0ZVF1ZXJ5RGVzYwogCiAJRXhlY3V0b3JTdGFydApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKaW5kZXggNzJmYzI3MzUyNC4uNDU4MjQ2MjRmOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVi dWcuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1 ZGUgImppdC9qaXQuaCIKQEAgLTEwNCw2ICsxMDUsNTYgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5R dWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAKIC8qIGVuZCBv ZiBsb2NhbCBkZWNscyAqLwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY3V0b3JEb0luaXRpYWxQcnVu aW5nCisgKgorICoJCUZvciBlYWNoIHBsYW4gdHJlZSBub2RlIHRoYXQgaGFzIGJlZW4gYXNzaWdu ZWQgYSBQYXJ0aXRpb25QcnVuZUluZm8sCisgKgkJdGhpcyBwZXJmb3JtcyBpbml0aWFsIHBhcnRp dGlvbiBwcnVuaW5nIHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyAqCQl0aGVyZWlu IHRvIGRldGVybWluZSB0aGUgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0aXNmeSB0aGUg aW5pdGlhbAorICoJCXBydW5pbmcgc3RlcHMsIHRvIGJlIHJldHVybmVkIGFzIGEgYml0bWFwc2V0 IG9mIHRoZWlyIGluZGV4ZXMgaW4gdGhlCisgKgkJbm9kZSdzIGxpc3Qgb2YgY2hpbGQgc3VicGxh bnMgKGZvciBleGFtcGxlLCBhbiBBcHBlbmQncyBhcHBlbmRwbGFucykuCisgKgorICogUmV0dXJu IHZhbHVlIGlzIGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZSB0aGF0IGNvbnRhaW5zIGEgbGlz dCBvZiB0aG9zZQorICogYml0bWFwc2V0cywgd2l0aCBvbmUgZWxlbWVudCBmb3IgZXZlcnkgUGFy dGl0aW9uUHJ1bmVJbmZvLCBhbmQgYSBiaXRtYXBzZXQKKyAqIG9mIHRoZSBSVCBpbmRleGVzIG9m IGFsbCB0aGUgbGVhZiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhvc2UgY2hvc2VuCisgKiBzdWJw bGFucy4gIE5vdGUgdGhhdCB0aGUgbGF0dGVyIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIFBhcnRpdGlv blBydW5lSW5mb3MuCisgKgorICogVGhlIGV4ZWN1dG9yIG11c3Qgc2VlIHRoZSBleGFjdGx5IHNh bWUgc2V0IG9mIHN1YnBsYW5zIGFzIHZhbGlkIGZvcgorICogZXhlY3V0aW9uIHdoZW4gZG9pbmcg RXhlY0luaXROb2RlKCkgb24gdGhlIHBsYW4gbm9kZXMgd2hvc2UKKyAqIFBhcnRpdGlvblBydW5l SW5mb3MgYXJlIHByb2Nlc3NlZCBoZXJlLiAgU28sIGl0IG11c3QgZ2V0IHRoZSBzZXQgZnJvbSB0 aGUKKyAqIGFmb3JlbWVudGlvbmVkIFBhcnRpdGlvblBydW5lUmVzdWx0LCBpbnN0ZWFkIG9mIGNv bXB1dGluZyBpdCBhbGwgb3ZlcgorICogYWdhaW4gYnkgcmVkb2luZyB0aGUgaW5pdGlhbCBwcnVu aW5nLiAgSXQncyB0aGUgY2FsbGVyJ3Mgam9iIHRvIHBhc3MgdGhlCisgKiBQYXJ0aXRpb25QcnVu ZVJlc3VsdCB0byB0aGUgZXhlY3V0b3IuCisgKgorICogTm90ZTogUGFydGl0aW9uZWQgdGFibGVz IG1lbnRpb25lZCBpbiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcyB0aGF0CisgKiBkcml2 ZSB0aGUgcHJ1bmluZyB3aWxsIGJlIGxvY2tlZCBiZWZvcmUgZG9pbmcgdGhlIHBydW5pbmcuCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KK1BhcnRpdGlvblBydW5lUmVzdWx0ICoKK0V4ZWN1dG9yRG9Jbml0aWFs UHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zKQor eworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpyZXN1bHQ7CisJTGlzdENlbGwgKmxjOworCisJLyog T25seSBnZXQgaGVyZSBpZiB0aGVyZSBpcyBhbnkgcHJ1bmluZyB0byBkby4gKi8KKwlBc3NlcnQo cGxhbm5lZHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOworCisJcmVzdWx0ID0gbWFrZU5v ZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQpOworCWZvcmVhY2gobGMsIHBsYW5uZWRzdG10LT5wYXJ0 UHJ1bmVJbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0 KGxjKTsKKwkJQml0bWFwc2V0ICp2YWxpZF9zdWJwbGFuX29mZnM7CisKKwkJdmFsaWRfc3VicGxh bl9vZmZzID0KKwkJCUV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10LCBw YXJhbXMsIHBydW5laW5mbywKKwkJCQkJCQkJCQkgICZyZXN1bHQtPnNjYW5fbGVhZnBhcnRfcnRp cyk7CisJCXJlc3VsdC0+dmFsaWRfc3VicGxhbl9vZmZzX2xpc3QgPQorCQkJbGFwcGVuZChyZXN1 bHQtPnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0LAorCQkJCQl2YWxpZF9zdWJwbGFuX29mZnMpOwor CX0KKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjdXRvclN0YXJ0 CkBAIC04MDYsNiArODU3LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJ UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdDsKKwlQYXJ0 aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBxdWVyeURlc2MtPnBhcnRfcHJ1 bmVfcmVzdWx0OwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlz dAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3Rh dGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKQEAgLTgyNiw2ICs4NzgsNyBAQCBJbml0UGxhbihRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQg PSBwbGFubmVkc3RtdDsKIAllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3Rt dC0+cGFydFBydW5lSW5mb3M7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdCA9IHBhcnRf cHJ1bmVfcmVzdWx0OwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJy YXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKaW5kZXggZjczYjhjMjYwNy4uN2U2ZGFiNTYyMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKQEAgLTY2LDYgKzY2LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1FV RVJZX1RFWFQJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwOCkKICNkZWZpbmUgUEFSQUxM RUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04gVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA5 KQogI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAw MDAwMDAwMDBBKQorI2RlZmluZSBQQVJBTExFTF9LRVlfUEFSVElUSU9OUFJVTkVSRVNVTFQJVUlO VDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBCKQogCiAjZGVmaW5lIFBBUkFMTEVMX1RVUExFX1FV RVVFX1NJWkUJCTY1NTM2CiAKQEAgLTE4Miw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQ bGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+dHJhbnNpZW50UGxhbiA9IGZhbHNl OwogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJcHN0bXQtPnBhcmFsbGVsTW9kZU5l ZWRlZCA9IGZhbHNlOworCXBzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gZmFsc2U7CiAJ cHN0bXQtPnBsYW5UcmVlID0gcGxhbjsKIAlwc3RtdC0+cGFydFBydW5lSW5mb3MgPSBlc3RhdGUt PmVzX3BhcnRfcHJ1bmVfaW5mb3M7CiAJcHN0bXQtPnJ0YWJsZSA9IGVzdGF0ZS0+ZXNfcmFuZ2Vf dGFibGU7CkBAIC01OTcsMTIgKzU5OSwxNSBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3Rh dGUgKmZwZXM7CiAJY2hhcgkgICAqcHN0bXRfZGF0YTsKIAljaGFyCSAgICpwc3RtdF9zcGFjZTsK KwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9kYXRhOworCWNoYXIJICAgKnBhcnRfcHJ1bmVf cmVzdWx0X3NwYWNlOwogCWNoYXIJICAgKnBhcmFtbGlzdGluZm9fc3BhY2U7CiAJQnVmZmVyVXNh Z2UgKmJ1ZnVzYWdlX3NwYWNlOwogCVdhbFVzYWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJl ZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJl ZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2luc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJ cHN0bXRfbGVuOworCWludAkJCXBhcnRfcHJ1bmVfcmVzdWx0X2xlbjsKIAlpbnQJCQlwYXJhbWxp c3RpbmZvX2xlbjsKIAlpbnQJCQlpbnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRf aW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CkBAIC02MzEsNiArNjM2LDcgQEAgRXhlY0luaXRQYXJh bGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCiAJLyogRml4 IHVwIGFuZCBzZXJpYWxpemUgcGxhbiB0byBiZSBzZW50IHRvIHdvcmtlcnMuICovCiAJcHN0bXRf ZGF0YSA9IEV4ZWNTZXJpYWxpemVQbGFuKHBsYW5zdGF0ZS0+cGxhbiwgZXN0YXRlKTsKKwlwYXJ0 X3BydW5lX3Jlc3VsdF9kYXRhID0gbm9kZVRvU3RyaW5nKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9y ZXN1bHQpOwogCiAJLyogQ3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gKi8KIAlwY3h0ID0gQ3Jl YXRlUGFyYWxsZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJQYXJhbGxlbFF1ZXJ5TWFpbiIsIG53b3Jr ZXJzKTsKQEAgLTY1Nyw2ICs2NjMsMTEgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRl ICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBj eHQtPmVzdGltYXRvciwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQt PmVzdGltYXRvciwgMSk7CiAKKwkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJ0 aXRpb25QcnVuZVJlc3VsdC4gKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9sZW4gPSBzdHJsZW4ocGFy dF9wcnVuZV9yZXN1bHRfZGF0YSkgKyAxOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQt PmVzdGltYXRvciwgcGFydF9wcnVuZV9yZXN1bHRfbGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tl eXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CisKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFs aXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFtbGlzdGluZm9fbGVuID0gRXN0aW1hdGVQYXJh bUxpc3RTcGFjZShlc3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbyk7CiAJc2htX3RvY19lc3RpbWF0 ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJhbWxpc3RpbmZvX2xlbik7CkBAIC03NTEsNiAr NzYyLDEyIEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3Rh dGUgKmVzdGF0ZSwKIAltZW1jcHkocHN0bXRfc3BhY2UsIHBzdG10X2RhdGEsIHBzdG10X2xlbik7 CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIHBz dG10X3NwYWNlKTsKIAorCS8qIFN0b3JlIHNlcmlhbGl6ZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQg Ki8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9j LCBwYXJ0X3BydW5lX3Jlc3VsdF9sZW4pOworCW1lbWNweShwYXJ0X3BydW5lX3Jlc3VsdF9zcGFj ZSwgcGFydF9wcnVuZV9yZXN1bHRfZGF0YSwgcGFydF9wcnVuZV9yZXN1bHRfbGVuKTsKKwlzaG1f dG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05QUlVORVJFU1VMVCwK KwkJCQkgICBwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSk7CisKIAkvKiBTdG9yZSBzZXJpYWxpemVk IFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFjZSA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+ dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFjZSk7CkBA IC0xMjMyLDggKzEyNDksMTAgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRv YywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAkJCQkJCSBpbnQgaW5zdHJ1bWVudF9vcHRpb25z KQogewogCWNoYXIJICAgKnBzdG10c3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRf c3BhY2U7CiAJY2hhcgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3RtdCAqcHN0bXQ7CisJUGFy dGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0OwogCVBhcmFtTGlzdEluZm8gcGFy YW1MSTsKIAljaGFyCSAgICpxdWVyeVN0cmluZzsKIApAQCAtMTI0NCwxMiArMTI2MywxOCBAQCBF eGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2Vp dmVyLAogCXBzdG10c3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QTEFO TkVEU1RNVCwgZmFsc2UpOwogCXBzdG10ID0gKFBsYW5uZWRTdG10ICopIHN0cmluZ1RvTm9kZShw c3RtdHNwYWNlKTsKIAorCS8qIFJlY29uc3RydWN0IGxlYWRlci1zdXBwbGllZCBQYXJ0aXRpb25Q cnVuZVJlc3VsdC4gKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSA9CisJCXNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTlBSVU5FUkVTVUxULCBmYWxzZSk7CisJcGFy dF9wcnVuZV9yZXN1bHQgPSAoUGFydGl0aW9uUHJ1bmVSZXN1bHQgKikKKwkJc3RyaW5nVG9Ob2Rl KHBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlKTsKKwogCS8qIFJlY29uc3RydWN0IFBhcmFtTGlzdElu Zm8uICovCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BB UkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1z cGFjZSk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KLQlyZXR1 cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAorCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQs IHBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRB Y3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFy YW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYwppbmRleCBiNTVjZGQyNTgwLi44NjIyNzMwMWU5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAibWIvcGdfd2NoYXIu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNpbmNsdWRl ICJwYXJ0aXRpb25pbmcvcGFydHBydW5lLmgiCkBAIC0xODUsNyArMTg2LDExIEBAIHN0YXRpYyBj aGFyICpFeGVjQnVpbGRTbG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAog c3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0 UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9j b2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMg UGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKLQkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZv KTsKKwkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJ CQkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0aWFsX3N0ZXBzLAorCQkJCQkJCQkJCQkJCSAgYm9v bCBjb25zaWRlcl9leGVjX3N0ZXBzLAorCQkJCQkJCQkJCQkJCSAgTGlzdCAqcnRhYmxlLCBFeHBy Q29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25EaXJlY3RvcnkgcGFy dGRpcik7CiBzdGF0aWMgdm9pZCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBy dW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKIAkJ CQkJCQkJCSAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYywKQEAgLTE5OCw3ICsyMDMsOCBAQCBzdGF0 aWMgdm9pZCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAoUGFydGl0aW9uUHJ1bmVTdGF0ZSAq cHJ1bmVzdGF0ZSwKIHN0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQ YXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCQkJCSAgIFBhcnRpdGlvbmVk UmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUs Ci0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJICAg Qml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKipzY2Fu X2xlYWZwYXJ0X3J0aXMpOwogCiAKIC8qCkBAIC0xNTkzLDggKzE1OTksMTAgQEAgYWRqdXN0X3Bh cnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkK ICAqIGNvbnNpZGVyZWQgdG8gYmUgYSBzdGFibGUgZXhwcmVzc2lvbiwgaXQgY2FuIGNoYW5nZSB2 YWx1ZSBmcm9tIG9uZSBwbGFuCiAgKiBub2RlIHNjYW4gdG8gdGhlIG5leHQgZHVyaW5nIHF1ZXJ5 IGV4ZWN1dGlvbi4gIFN0YWJsZSBjb21wYXJpc29uCiAgKiBleHByZXNzaW9ucyB0aGF0IGRvbid0 IGludm9sdmUgc3VjaCBQYXJhbXMgYWxsb3cgcGFydGl0aW9uIHBydW5pbmcgdG8gYmUKLSAqIGRv bmUgb25jZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cC4gIEV4cHJlc3Npb25zIHRoYXQgZG8gaW52 b2x2ZSBzdWNoIFBhcmFtcwotICogcmVxdWlyZSB1cyB0byBwcnVuZSBzZXBhcmF0ZWx5IGZvciBl YWNoIHNjYW4gb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUuCisgKiBkb25lIG9uY2UgZHVyaW5nIGV4 ZWN1dG9yIHN0YXJ0dXAgb3IgZHVyaW5nIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIHRoYXQK KyAqIHJ1bnMgYXMgcGFydCBvZiBwZXJmb3JtaW5nIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgb24g YSBnaXZlbiBwbGFuIHRyZWUuCisgKiBFeHByZXNzaW9ucyB0aGF0IGRvIGludm9sdmUgc3VjaCBQ YXJhbXMgcmVxdWlyZSB1cyB0byBwcnVuZSBzZXBhcmF0ZWx5IGZvcgorICogZWFjaCBzY2FuIG9m IHRoZSBwYXJlbnQgcGxhbiBub2RlLgogICoKICAqIE5vdGUgdGhhdCBwcnVuaW5nIGF3YXkgdW5u ZWVkZWQgc3VicGxhbnMgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgaGFzIHRoZQogICogYWRkZWQg YmVuZWZpdCBvZiBub3QgaGF2aW5nIHRvIGluaXRpYWxpemUgdGhlIHVubmVlZGVkIHN1YnBsYW5z IGF0IGFsbC4KQEAgLTE2MTEsNiArMTYxOSwxMyBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191 c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJCWFjY291bnQgZm9y IGluaXRpYWwgcHJ1bmluZyBwb3NzaWJseSBoYXZpbmcgZWxpbWluYXRlZCBzb21lIG9mIHRoZQog ICoJCXN1YnBsYW5zLgogICoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nOgorICoJ CURvIGluaXRpYWwgcHJ1bmluZyB3aXRoIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYSBn aXZlbgorICoJCVBhcnRpdGlvblBydW5lSW5mbyB0byBkZXRlcm1pbmUgdGhlIG1pbmltYWwgc2V0 IG9mIGNoaWxkIHN1YnBsYW5zCisgKgkJdG8gYmUgZXhlY3V0ZWQgb2YgdGhlIHBhcmVudCBwbGFu IG5vZGUgdG8gd2hpY2ggdGhlIFBhcnRpdGlvblBydW5lSW5mbworICoJCWJlbG9uZ3MgYW5kIGFs c28gdGhlIHNldCBvZiB0aGUgUlQgaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlvbnMgdGhhdCB3aWxs CisgKgkJYmUgc2Nhbm5lZCB3aXRoIHRob3NlIHN1YnBsYW5zLgorICoKICAqIEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFuczoKICAqCQlSZXR1cm5zIGluZGV4ZXMgb2YgbWF0Y2hpbmcgc3VicGxhbnMg YWZ0ZXIgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMKICAqCQl0aGF0IGFyZSBzYWZlIHRvIGV2 YWx1YXRlIGF0IGEgZ2l2ZW4gcG9pbnQuICBUaGlzIGZ1bmN0aW9uIGlzIGZpcnN0CkBAIC0xNjI4 LDggKzE2NDMsOSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29s bm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoKICAqIE9uIHJldHVybiwgKmluaXRpYWxseV92YWxp ZF9zdWJwbGFucyBpcyBhc3NpZ25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YKICAqIGNoaWxkIHN1 YnBsYW5zIHRoYXQgbXVzdCBiZSBpbml0aWFsaXplZCBhbG9uZyB3aXRoIHRoZSBwYXJlbnQgcGxh biBub2RlLgotICogSW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5lZWRlZCBh bmQgaW4gdGhhdCBjYXNlIG9ubHkgdGhlCi0gKiBzdXJ2aXZpbmcgc3VicGxhbnMnIGluZGV4ZXMg YXJlIGFkZGVkLgorICogSW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5lZWRl ZCAodW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZG9uZQorICogYnkgRXhlY0RvSW5pdGlhbFBy dW5pbmcoKSksIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUgc3Vydml2aW5nIHN1YnBsYW5zJwor ICogaW5kZXhlcyBhcmUgYWRkZWQuCiAgKgogICogSWYgc3VicGxhbnMgYXJlIGluZGVlZCBwcnVu ZWQsIHN1YnBsYW5fbWFwIGFycmF5cyBjb250YWluZWQgaW4gdGhlIHJldHVybmVkCiAgKiBQYXJ0 aXRpb25QcnVuZVN0YXRlIGFyZSByZS1zZXF1ZW5jZWQgdG8gbm90IGNvdW50IHRob3NlLCB0aG91 Z2ggb25seSBpZiB0aGUKQEAgLTE2NDUsMjQgKzE2NjEsNTkgQEAgRXhlY0luaXRQYXJ0aXRpb25Q cnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0 YXRlLT5zdGF0ZTsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxpc3RfbnRoKGVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywKIAkJCQkJCQkJCQkJIHBhcnRfcHJ1bmVfaW5kZXgp OworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwcnVuZXJlc3VsdCA9IGVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9yZXN1bHQ7CisJYm9vbAlkb19wcnVuaW5nID0gKHBydW5laW5mby0+bmVlZHNfaW5pdF9w cnVuaW5nIHx8CisJCQkJCQkgIHBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nKTsKIAotCS8q IFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24g ZXhwcnMgKi8KLQlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOworCS8q CisJICogTm8gbmVlZCB0byBkbyBpbml0aWFsIHBydW5pbmcgaWYgaXQgd2FzIGRvbmUgYWxyZWFk eSBieQorCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpdCB3b3VsZCBiZSBp ZiBlc19wYXJ0X3BydW5lX3Jlc3VsdAorCSAqIGhhcyBiZWVuIHNldC4KKwkgKi8KKwlpZiAocHJ1 bmVyZXN1bHQpCisJCWRvX3BydW5pbmcgPSBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZzsK IAotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwot CXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVp bmZvKTsKKwlwcnVuZXN0YXRlID0gTlVMTDsKKwlpZiAoZG9fcHJ1bmluZykKKwl7CisJCS8qIFdl IG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhw cnMgKi8KKwkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKKworCQkv KiBGb3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdheXMgb21pdHMgZGV0YWNoZWQgcGFydGl0 aW9ucyAqLworCQlpZiAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCisJ CQllc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPQorCQkJCUNyZWF0ZVBhcnRpdGlvbkRp cmVjdG9yeShlc3RhdGUtPmVzX3F1ZXJ5X2N4dCwgZmFsc2UpOworCisJCS8qCisJCSAqIENyZWF0 ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZy4gIE5vIG5lZWQgdG8gY29u c2lkZXIKKwkJICogaW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGlmIHdlIGhhdmUgYSBQYXJ0aXRpb25Q cnVuZVJlc3VsdC4KKwkJICovCisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkgICBwcnVuZXJlc3VsdCA9PSBO VUxMLCB0cnVlLAorCQkJCQkJCQkJCQkgICBOSUwsIHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQs CisJCQkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSk7CisJfQogCiAJ LyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVp cmVkLgogCSAqLwotCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQotCQkqaW5pdGlh bGx5X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUs IHRydWUpOworCWlmIChwcnVuZXJlc3VsdCkKKwl7CisJCSppbml0aWFsbHlfdmFsaWRfc3VicGxh bnMgPQorCQkJbGlzdF9udGgocHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0LCBw YXJ0X3BydW5lX2luZGV4KTsKKwl9CisJZWxzZSBpZiAocHJ1bmVzdGF0ZSAmJiBwcnVuZXN0YXRl LT5kb19pbml0aWFsX3BydW5lKQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IEV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJCQkJCQkJCQkJ IE5VTEwpOworCX0KIAllbHNlCiAJewogCQkvKiBObyBwcnVuaW5nLCBzbyB3ZSdsbCBuZWVkIHRv IGluaXRpYWxpemUgYWxsIHN1YnBsYW5zICovCiAJCUFzc2VydChuX3RvdGFsX3N1YnBsYW5zID4g MCk7CiAJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAs CiAJCQkJCQkJCQkJCQkgIG5fdG90YWxfc3VicGxhbnMgLSAxKTsKKwkJcmV0dXJuIHBydW5lc3Rh dGU7CiAJfQogCiAJLyoKQEAgLTE2NzAsNyArMTcyMSw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1 bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiB0aGF0IHdlcmUgcmVtb3ZlZCBhYm92ZSBk dWUgdG8gaW5pdGlhbCBwcnVuaW5nLiAgTm8gbmVlZCB0byBkbyB0aGlzIGlmCiAJICogbm8gc3Rl cHMgd2VyZSByZW1vdmVkLgogCSAqLwotCWlmIChibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92 YWxpZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBsYW5zKQorCWlmIChwcnVuZXN0YXRlICYmCisJ CWJtc19udW1fbWVtYmVycygqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKSA8IG5fdG90YWxfc3Vi cGxhbnMpCiAJewogCQkvKgogCQkgKiBXZSBjYW4gc2FmZWx5IHNraXAgdGhpcyB3aGVuICFkb19l eGVjX3BydW5lLCBldmVuIHRob3VnaCB0aGF0CkBAIC0xNjg2LDExICsxNzM4LDczIEBAIEV4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlyZXR1cm4gcHJ1bmVz dGF0ZTsKIH0KIAorLyoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nCisgKgkJUGVy Zm9ybSBpbml0aWFsIHBydW5pbmcgdXNpbmcgZ2l2ZW4gUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRl dGVybWluZQorICoJCXRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwg YmUgZXhlY3V0ZWQgYW5kIGFsc28gdGhlCisgKgkJc2V0IG9mIFJUIGluZGV4ZXMgb2YgdGhlIGxl YWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5IHRob3NlIHN1YnBsYW5zLgorICovCitCaXRtYXBzZXQg KgorRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvLAorCQkJCQkJCSAgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKQoreworCUxp c3QJCSAqcnRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKKwlFeHByQ29udGV4dAkgKmVjb250 ZXh0OworCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGlyOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4 dCwKKwkJCQkgIHRtcGNvbnRleHQ7CisJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsK KwlCaXRtYXBzZXQJICp2YWxpZF9zdWJwbGFuX29mZnM7CisKKwkvKgorCSAqIEEgdGVtcG9yYXJ5 IGNvbnRleHQgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyByZXF1aXJlZCB3aGlsZSBleGVjdXRpbmcK KwkgKiBwYXJ0aXRpb24gcHJ1bmluZyBzdGVwcy4KKwkgKi8KKwl0bXBjb250ZXh0ID0gQWxsb2NT ZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICAgImluaXRp YWwgcHJ1bmluZyB3b3JraW5nIGRhdGEiLAorCQkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9T SVpFUyk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0bXBjb250ZXh0KTsK KworCS8qCisJICogUGFydGl0aW9uRGlyZWN0b3J5IHRvIGxvb2sgdXAgcGFydGl0aW9uIGRlc2Ny aXB0b3JzLCB3aGljaCBvbWl0cworCSAqIGRldGFjaGVkIHBhcnRpdGlvbnMsIGp1c3QgbGlrZSBp biB0aGUgZXhlY3V0b3IgcHJvcGVyLgorCSAqLworCXBkaXIgPSBDcmVhdGVQYXJ0aXRpb25EaXJl Y3RvcnkoQ3VycmVudE1lbW9yeUNvbnRleHQsIGZhbHNlKTsKKworCS8qCisJICogV2UgZG9uJ3Qg eWV0IGhhdmUgYSBQbGFuU3RhdGUgZm9yIHRoZSBwYXJlbnQgcGxhbiBub2RlLCBzbyB3ZSBtdXN0 CisJICogY3JlYXRlIGEgc3RhbmRhbG9uZSBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBwcnVuaW5n IGV4cHJlc3Npb25zLAorCSAqIGVxdWlwcGVkIHdpdGggdGhlIGluZm9ybWF0aW9uIGFib3V0IHRo ZSBFWFRFUk4gcGFyYW1ldGVycyB0aGF0IHRoZQorCSAqIGNhbGxlciBwYXNzZWQgdXMuICBOb3Rl IHRoYXQgdGhhdCdzIG9rYXkgYmVjYXVzZSB0aGUgaW5pdGlhbCBwcnVuaW5nCisJICogc3RlcHMg ZG8gbm90IGNvbnRhaW4gYW55dGhpbmcgdGhhdCByZXF1aXJlcyB0aGUgZXhlY3V0aW9uIHRvIGhh dmUKKwkgKiBzdGFydGVkLgorCSAqLworCWVjb250ZXh0ID0gQ3JlYXRlU3RhbmRhbG9uZUV4cHJD b250ZXh0KCk7CisJZWNvbnRleHQtPmVjeHRfcGFyYW1fbGlzdF9pbmZvID0gcGFyYW1zOworCXBy dW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKE5VTEwsIHBydW5laW5mbywgdHJ1 ZSwgZmFsc2UsCisJCQkJCQkJCQkJICAgcnRhYmxlLCBlY29udGV4dCwgcGRpcik7CisJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogRG8gdGhlIGluaXRpYWwgcHJ1bmlu Zy4gKi8KKwl2YWxpZF9zdWJwbGFuX29mZnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1 bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFydF9ydGlzKTsKKworCUZy ZWVFeHByQ29udGV4dChlY29udGV4dCwgdHJ1ZSk7CisJRGVzdHJveVBhcnRpdGlvbkRpcmVjdG9y eShwZGlyKTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHRtcGNvbnRleHQpOworCisJcmV0dXJuIHZh bGlkX3N1YnBsYW5fb2ZmczsKK30KKwogLyoKICAqIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUK ICAqCQlCdWlsZCB0aGUgZGF0YSBzdHJ1Y3R1cmUgcmVxdWlyZWQgZm9yIGNhbGxpbmcgRXhlY0Zp bmRNYXRjaGluZ1N1YlBsYW5zCiAgKgotICogJ3BsYW5zdGF0ZScgaXMgdGhlIHBhcmVudCBwbGFu IG5vZGUncyBleGVjdXRpb24gc3RhdGUuCisgKiAncGxhbnN0YXRlJywgaWYgbm90IE5VTEwsIGlz IHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLiAgSXQKKyAqIGNhbiBiZSBO VUxMIGlmIGJlaW5nIGNhbGxlZCBiZWZvcmUgRXhlY3V0b3JTdGFydCgpLCBpbiB3aGljaCBjYXNl LAorICogJ3J0YWJsZScgKHJhbmdlIHRhYmxlKSwgJ2Vjb250ZXh0JywgYW5kICdwYXJ0ZGlyJyBt dXN0IGJlIGV4cGxpY2l0bHkKKyAqIHByb3ZpZGVkLgogICoKICAqICdwcnVuZWluZm8nIGlzIGEg UGFydGl0aW9uUHJ1bmVJbmZvIGFzIGdlbmVyYXRlZCBieQogICogbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvLiAgSGVyZSB3ZSBidWlsZCBhIFBhcnRpdGlvblBydW5lU3RhdGUgY29udGFpbmluZyBh CkBAIC0xNzA0LDE5ICsxODE4LDIxIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvLgogICovCiBzdGF0aWMg UGFydGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKK0NyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCisJCQkJCQkgIFBhcnRpdGlvblBy dW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJICBib29sIGNvbnNpZGVyX2luaXRpYWxfc3RlcHMs CisJCQkJCQkgIGJvb2wgY29uc2lkZXJfZXhlY19zdGVwcywKKwkJCQkJCSAgTGlzdCAqcnRhYmxl LCBFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkgIFBhcnRpdGlvbkRpcmVjdG9yeSBwYXJ0 ZGlyKQogewotCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5zdGF0ZTsKKwlFU3RhdGUJ ICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZSA/IHBsYW5zdGF0ZS0+c3RhdGUgOiBOVUxMOwogCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNoaWVzOwog CUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7Ci0JRXhwckNvbnRleHQgKmVjb250ZXh0ID0gcGxh bnN0YXRlLT5wc19FeHByQ29udGV4dDsKIAotCS8qIEZvciBkYXRhIHJlYWRpbmcsIGV4ZWN1dG9y IGFsd2F5cyBvbWl0cyBkZXRhY2hlZCBwYXJ0aXRpb25zICovCi0JaWYgKGVzdGF0ZS0+ZXNfcGFy dGl0aW9uX2RpcmVjdG9yeSA9PSBOVUxMKQotCQllc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rv cnkgPQotCQkJQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KGVzdGF0ZS0+ZXNfcXVlcnlfY3h0LCBm YWxzZSk7CisJQXNzZXJ0KChlc3RhdGUgIT0gTlVMTCkgfHwKKwkJCShwYXJ0ZGlyICE9IE5VTEwg JiYgZWNvbnRleHQgIT0gTlVMTCAmJiBydGFibGUgIT0gTklMKSk7CiAKIAluX3BhcnRfaGllcmFy Y2hpZXMgPSBsaXN0X2xlbmd0aChwcnVuZWluZm8tPnBydW5lX2luZm9zKTsKIAlBc3NlcnQobl9w YXJ0X2hpZXJhcmNoaWVzID4gMCk7CkBAIC0xNzcxLDE1ICsxODg3LDQyIEBAIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJUGFydGl0aW9uS2V5IHBhcnRrZXk7CiAKIAkJCS8qCi0JCQkgKiBXZSBj YW4gcmVseSBvbiB0aGUgY29waWVzIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdzIHBhcnRpdGlv bgotCQkJICoga2V5IGFuZCBwYXJ0aXRpb24gZGVzY3JpcHRvciBhcHBlYXJpbmcgaW4gaXRzIHJl bGNhY2hlIGVudHJ5LAotCQkJICogYmVjYXVzZSB0aGF0IGVudHJ5IHdpbGwgYmUgaGVsZCBvcGVu IGFuZCBsb2NrZWQgZm9yIHRoZQotCQkJICogZHVyYXRpb24gb2YgdGhpcyBleGVjdXRvciBydW4u CisJCQkgKiBNdXN0IG9wZW4gdGhlIHJlbGF0aW9uIGJ5IG91cnNlbHZlcyB3aGVuIGNhbGxlZCBi ZWZvcmUgdGhlCisJCQkgKiBleGVjdXRpb24gaGFzIHN0YXJ0ZWQsIHN1Y2ggYXMsIHdoZW4gY2Fs bGVkIGR1cmluZworCQkJICogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgb24gYSBjYWNoZWQg cGxhbi4gIEluIHRoYXQgY2FzZSwKKwkJCSAqIHN1Yi1wYXJ0aXRpb25zIG11c3QgYmUgbG9ja2Vk LCBiZWNhdXNlIEFjcXVpcmVQbGFubmVyTG9ja3MoKQorCQkJICogd291bGQgbm90IGhhdmUgc2Vl biB0aGVtLiAoMXN0IHJlbGF0aW9uIGluIGEgcGFydHJlbHBydW5laW5mb3MKKwkJCSAqIGxpc3Qg aXMgYWx3YXlzIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcmluZyBpbiB0aGUKKwkJ CSAqIHF1ZXJ5LCB3aGljaCBBY3F1aXJlUGxhbm5lckxvY2tzKCkgd291bGQgaGF2ZSBsb2NrZWQ7 IHRoZQorCQkJICogQXNzZXJ0IGluIHJlbGF0aW9uX29wZW4oKSBndWFyZHMgdGhhdCBhc3N1bXB0 aW9uLikKKwkJCSAqLworCQkJaWYgKGVzdGF0ZSA9PSBOVUxMKQorCQkJeworCQkJCVJhbmdlVGJs RW50cnkgKnJ0ZSA9IHJ0X2ZldGNoKHBpbmZvLT5ydGluZGV4LCBydGFibGUpOworCQkJCWludAkJ bG9ja21vZGUgPSAoaiA9PSAwKSA/IE5vTG9jayA6IHJ0ZS0+cmVsbG9ja21vZGU7CisKKwkJCQlw YXJ0cmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBsb2NrbW9kZSk7CisJCQl9CisJCQllbHNl CisJCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+ cnRpbmRleCk7CisKKwkJCS8qCisJCQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29weSBvZiB0aGUg cGFydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KKwkJCSAqIGtleSBmcm9tIGluIGl0cyByZWxj YWNoZSBlbnRyeSwgYmVjYXVzZSBpdCBjYW4ndCBjaGFuZ2UgKG9yCisJCQkgKiBnZXQgZGVzdHJv eWVkKSBhcyBsb25nIGFzIHRoZSByZWxhdGlvbiBpcyBsb2NrZWQuICBQYXJ0aXRpb24KKwkJCSAq IGRlc2NyaXB0b3IgaXMgdGFrZW4gZnJvbSB0aGUgUGFydGl0aW9uRGlyZWN0b3J5IGFzc29jaWF0 ZWQgd2l0aAorCQkJICogdGhlIHRhYmxlIHRoYXQgaXMgaGVsZCBvcGVuIGxvbmcgZW5vdWdoIGZv ciB0aGUgZGVzY3JpcHRvciB0bworCQkJICogcmVtYWluIHZhbGlkIHdoaWxlIGl0J3MgdXNlZCB0 byBwZXJmb3JtIHRoZSBwcnVuaW5nIHN0ZXBzLgogCQkJICovCi0JCQlwYXJ0cmVsID0gRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKIAkJCXBhcnRrZXkg PSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVsKTsKLQkJCXBhcnRkZXNjID0gUGFydGl0 aW9uRGlyZWN0b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSwKLQkJCQkJ CQkJCQkJCXBhcnRyZWwpOworCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAo cGFydGRpciwgcGFydHJlbCk7CisKKwkJCS8qCisJCQkgKiBNdXN0IGNsb3NlIHBhcnRyZWwsIGtl ZXBpbmcgdGhlIGxvY2sgdGFrZW4sIGlmIHdlJ3JlIG5vdCB1c2luZworCQkJICogRVN0YXRlJ3Mg ZW50cnkuCisJCQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCQl0YWJsZV9jbG9zZShw YXJ0cmVsLCBOb0xvY2spOwogCiAJCQkvKgogCQkJICogSW5pdGlhbGl6ZSB0aGUgc3VicGxhbl9t YXAgYW5kIHN1YnBhcnRfbWFwLgpAQCAtMTc5Myw2ICsxOTM2LDcgQEAgQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pCiAJCQlBc3NlcnQocGFydGRlc2MtPm5wYXJ0cyA+PSBwaW5mby0+bnBhcnRzKTsKIAkJ CXBwcnVuZS0+bnBhcnRzID0gcGFydGRlc2MtPm5wYXJ0czsKIAkJCXBwcnVuZS0+c3VicGxhbl9t YXAgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKTsKKwkJCXBwcnVuZS0+ cnRpX21hcCA9IHBhbGxvYyhzaXplb2YoSW5kZXgpICogcGFydGRlc2MtPm5wYXJ0cyk7CiAJCQlp ZiAocGFydGRlc2MtPm5wYXJ0cyA9PSBwaW5mby0+bnBhcnRzKQogCQkJewogCQkJCS8qCkBAIC0x ODAzLDYgKzE5NDcsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlwcHJ1bmUtPnN1YnBh cnRfbWFwID0gcGluZm8tPnN1YnBhcnRfbWFwOwogCQkJCW1lbWNweShwcHJ1bmUtPnN1YnBsYW5f bWFwLCBwaW5mby0+c3VicGxhbl9tYXAsCiAJCQkJCSAgIHNpemVvZihpbnQpICogcGluZm8tPm5w YXJ0cyk7CisJCQkJbWVtY3B5KHBwcnVuZS0+cnRpX21hcCwgcGluZm8tPnJ0aV9tYXAsCisJCQkJ CSAgIHNpemVvZihpbnQpICogcGluZm8tPm5wYXJ0cyk7CiAKIAkJCQkvKgogCQkJCSAqIERvdWJs ZS1jaGVjayB0aGF0IHRoZSBsaXN0IG9mIHVucHJ1bmVkIHJlbGF0aW9ucyBoYXMgbm90CkBAIC0x ODUzLDYgKzE5OTksOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkJCQlwaW5mby0+c3Vi cGxhbl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9CiAJ CQkJCQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJCQlwcHJ1bmUtPnJ0aV9tYXBb cHBfaWR4XSA9CisJCQkJCQkJcGluZm8tPnJ0aV9tYXBbcGRfaWR4XTsKIAkJCQkJCXBkX2lkeCsr OwogCQkJCQl9CiAJCQkJCWVsc2UKQEAgLTE4NjAsNiArMjAwOCw3IEBAIENyZWF0ZVBhcnRpdGlv blBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvKQogCQkJCQkJLyogdGhpcyBwYXJ0ZGVzYyBlbnRyeSBpcyBub3QgaW4gdGhlIHBsYW4g Ki8KIAkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbcHBfaWR4XSA9IC0xOwogCQkJCQkJcHBydW5l LT5zdWJwYXJ0X21hcFtwcF9pZHhdID0gLTE7CisJCQkJCQlwcHJ1bmUtPnJ0aV9tYXBbcHBfaWR4 XSA9IDA7CiAJCQkJCX0KIAkJCQl9CiAKQEAgLTE4ODEsNyArMjAzMCw3IEBAIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJICogSW5pdGlhbGl6ZSBwcnVuaW5nIGNvbnRleHRzIGFzIG5lZWRlZC4K IAkJCSAqLwogCQkJcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+aW5pdGlh bF9wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCisJ CQlpZiAoY29uc2lkZXJfaW5pdGlhbF9zdGVwcyAmJiBwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0 ZXBzKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVuZS0+aW5pdGlh bF9jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcywKQEAg LTE4OTEsNyArMjA0MCw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpw bGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJCXBydW5lc3RhdGUt PmRvX2luaXRpYWxfcHJ1bmUgPSB0cnVlOwogCQkJfQogCQkJcHBydW5lLT5leGVjX3BydW5pbmdf c3RlcHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZvLT5leGVjX3By dW5pbmdfc3RlcHMpCisJCQlpZiAoY29uc2lkZXJfZXhlY19zdGVwcyAmJiBwaW5mby0+ZXhlY19w cnVuaW5nX3N0ZXBzKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVu ZS0+ZXhlY19jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwcywK QEAgLTIxMTksMTAgKzIyNjgsMTQgQEAgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBQYXNzIGluaXRpYWxfcHJ1bmUgaWYgUEFS QU1fRVhFQyBQYXJhbXMgY2Fubm90IHlldCBiZSBldmFsdWF0ZWQuICBUaGlzCiAgKiBkaWZmZXJl bnRpYXRlcyB0aGUgaW5pdGlhbCBleGVjdXRvci10aW1lIHBydW5pbmcgc3RlcCBmcm9tIGxhdGVy CiAgKiBydW50aW1lIHBydW5pbmcuCisgKgorICogUlQgaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlv bnMgc2Nhbm5lZCBieSB0aGUgY2hvc2VuIHN1YnBsYW5zIGFyZSBhZGRlZCB0bworICogKnNjYW5f bGVhZnBhcnRfcnRpcyBpZiB0aGUgcG9pbnRlciBpcyBub24tTlVMTC4KICAqLwogQml0bWFwc2V0 ICoKIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0 YXRlLAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBib29sIGluaXRpYWxfcHJ1 bmUsCisJCQkJCQkgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKQogewogCUJpdG1hcHNl dCAgKnJlc3VsdCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtMjE1Nyw3 ICsyMzEwLDcgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUg KnBydW5lc3RhdGUsCiAJCSAqLwogCQlwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVk YXRhWzBdOwogCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLCBwcHJ1 bmUsIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkgICAmcmVzdWx0KTsKKwkJCQkJCQkJCSAgICZy ZXN1bHQsIHNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAkJLyogRXhwcmVzc2lvbiBldmFsIG1heSBo YXZlIHVzZWQgc3BhY2UgaW4gRXhwckNvbnRleHQgdG9vICovCiAJCWlmIChwcHJ1bmUtPmV4ZWNf cHJ1bmluZ19zdGVwcykKQEAgLTIxNzEsNiArMjMyNCw4IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCiAJLyogQ29weSByZXN1bHQg b3V0IG9mIHRoZSB0ZW1wIGNvbnRleHQgYmVmb3JlIHdlIHJlc2V0IGl0ICovCiAJcmVzdWx0ID0g Ym1zX2NvcHkocmVzdWx0KTsKKwlpZiAoc2Nhbl9sZWFmcGFydF9ydGlzKQorCQkqc2Nhbl9sZWFm cGFydF9ydGlzID0gYm1zX2NvcHkoKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAlNZW1vcnlDb250 ZXh0UmVzZXQocHJ1bmVzdGF0ZS0+cHJ1bmVfY29udGV4dCk7CiAKQEAgLTIxODEsMTMgKzIzMzYs MTUgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5l c3RhdGUsCiAgKiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UKICAqCQlSZWN1cnNpdmUg d29ya2VyIGZ1bmN0aW9uIGZvciBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMKICAqCi0gKiBBZGRz IHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxpZHN1YnBsYW5zCisgKiBB ZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxpZHN1YnBsYW5zIGFu ZCBSVCBpbmRleGVzIG9mCisgKiBvZiB0aGUgY29ycmVzcG9uZGluZyBsZWFmIHBhcnRpdGlvbnMg dG8gKnNjYW5fbGVhZnBhcnRfcnRpcyAoaWYgYXNrZWQgZm9yKS4KICAqLwogc3RhdGljIHZvaWQK IGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1 bmVkYXRhLAogCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJ CQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRz dWJwbGFucykKKwkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCSAg IEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlCaXRtYXBzZXQgICpwYXJ0c2V0 OwogCWludAkJCWk7CkBAIC0yMjE0LDggKzIzNzEsMTQgQEAgZmluZF9tYXRjaGluZ19zdWJwbGFu c19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJd2hpbGUgKChpID0g Ym1zX25leHRfbWVtYmVyKHBhcnRzZXQsIGkpKSA+PSAwKQogCXsKIAkJaWYgKHBwcnVuZS0+c3Vi cGxhbl9tYXBbaV0gPj0gMCkKKwkJewogCQkJKnZhbGlkc3VicGxhbnMgPSBibXNfYWRkX21lbWJl cigqdmFsaWRzdWJwbGFucywKIAkJCQkJCQkJCQkJcHBydW5lLT5zdWJwbGFuX21hcFtpXSk7CisJ CQlBc3NlcnQocHBydW5lLT5ydGlfbWFwW2ldID4gMCk7CisJCQlpZiAoc2Nhbl9sZWFmcGFydF9y dGlzKQorCQkJCSpzY2FuX2xlYWZwYXJ0X3J0aXMgPSBibXNfYWRkX21lbWJlcigqc2Nhbl9sZWFm cGFydF9ydGlzLAorCQkJCQkJCQkJCQkJCSBwcHJ1bmUtPnJ0aV9tYXBbaV0pOworCQl9CiAJCWVs c2UKIAkJewogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVuZS0+c3VicGFydF9tYXBbaV07CkBAIC0y MjIzLDcgKzIzODYsOCBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9u UHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCWlmIChwYXJ0aWR4ID49IDApCiAJCQkJZmluZF9t YXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwKIAkJCQkJCQkJCQkJICAgJnBydW5l ZGF0YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKLQkJCQkJCQkJCQkJICAgaW5pdGlhbF9w cnVuZSwgdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlk c3VicGxhbnMsCisJCQkJCQkJCQkJCSAgIHNjYW5fbGVhZnBhcnRfcnRpcyk7CiAJCQllbHNlCiAJ CQl7CiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggZjk0NjBhZTUwNi4uYTIx ODJhNmIxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0NCw3ICs4NDQsNyBAQCBw b3N0cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZj YWNoZSkKIAllbHNlCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCi0JZXMtPnFkID0gQ3JlYXRl UXVlcnlEZXNjKGVzLT5zdG10LAorCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwg TlVMTCwKIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCks CiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRl eCBjNmY4NmE2NTEwLi45Njg4MGUxMjJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBA IC0xNTUsNyArMTU1LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwgYXNfdmFsaWRfc3Vi cGxhbnMgaW1tZWRpYXRlbHksIHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2FsbHMgdG8gRXhlY0Zp bmRNYXRjaGluZ1N1YlBsYW5zLgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3By dW5lICYmIG5wbGFucyA+IDApCisJCWlmIChhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPT0g TlVMTCB8fAorCQkJKCFhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUtPmRvX2V4ZWNfcHJ1bmUg JiYgbnBsYW5zID4gMCkpCiAJCQlhcHBlbmRzdGF0ZS0+YXNfdmFsaWRfc3VicGxhbnMgPSBibXNf YWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwogCX0KIAllbHNlCkBAIC01NzcsNyArNTc4 LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQogCQl9 CiAJCWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCQlub2RlLT5h c192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFz X3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUt PmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJd2hpY2hwbGFuID0gLTE7CiAJfQpA QCAtNjQyLDcgKzY0Myw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX2xlYWRlcihBcHBlbmRT dGF0ZSAqbm9kZSkKIAkJaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCXsK IAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkJLyoKIAkJCSAq IE1hcmsgZWFjaCBpbnZhbGlkIHBsYW4gYXMgZmluaXNoZWQgdG8gYWxsb3cgdGhlIGxvb3AgYmVs b3cgdG8KQEAgLTcxNyw3ICs3MTgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXIo QXBwZW5kU3RhdGUgKm5vZGUpCiAJZWxzZSBpZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPT0g TlVMTCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCW1hcmtf aW52YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChub2RlKTsKIAl9CiAKQEAgLTg2OCw3ICs4Njks NyBAQCBFeGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+ YXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5z ID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFs c2UpOworCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBm YWxzZSwgTlVMTCk7CiAKIAkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9kZSk7CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCA4ZDM1ODYwYzMwLi4yMzEy ZTVhNjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtMTAzLDcg KzEwMyw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCBtc192YWxpZF9z dWJwbGFucyBpbW1lZGlhdGVseSwgcHJldmVudGluZwogCQkgKiBsYXRlciBjYWxscyB0byBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAqLwotCQlpZiAoIXBydW5lc3RhdGUtPmRvX2V4ZWNf cHJ1bmUgJiYgbnBsYW5zID4gMCkKKwkJaWYgKG1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID09 IE5VTEwgfHwKKwkJCSghbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUtPmRvX2V4ZWNfcHJ1bmUg JiYgbnBsYW5zID4gMCkpCiAJCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFucyA9IGJtc19h ZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CiAJfQogCWVsc2UKQEAgLTIxOCw3ICsyMTks NyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqLwogCQlpZiAobm9k ZS0+bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJCW5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5z ID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZh bHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUs IGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJzdCB0aW1lIHRocm91Z2g6IHB1bGwgdGhl IGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJwbGFuLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAy OWJjMjY2NjliLi4zMDNhNTcyYzAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMTU3OCw2ICsxNTc4LDcg QEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIg cGxhbiwKIAlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwogCUNhY2hlZFBsYW4gKmNwbGFu OwogCUxpc3QJICAgKnN0bXRfbGlzdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0 OwogCWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CkBAIC0xNjU3LDcgKzE2NTgsMTAgQEAgU1BJX2N1cnNvcl9vcGVu X2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkgKi8KIAogCS8q IFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFs ICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9T UElfY3VycmVudC0+cXVlcnlFbnYpOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNl LCBwYXJhbUxJLCBOVUxMLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJICAmcGFydF9w cnVuZV9yZXN1bHRfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3Qp ID09CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAlzdG10X2xp c3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJaWYgKCFwbGFuLT5zYXZlZCkKQEAgLTE2ODUsNiAr MTY4OSw5IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQ bGFuUHRyIHBsYW4sCiAJCQkJCSAgc3RtdF9saXN0LAogCQkJCQkgIGNwbGFuKTsKIAorCS8qIENv cHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBvcnRhbCdzIGNvbnRleHQuICovCisJ UG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9ydGFsLCBwYXJ0X3BydW5lX3Jlc3Vs dF9saXN0KTsKKwogCS8qCiAJICogU2V0IHVwIG9wdGlvbnMgZm9yIHBvcnRhbC4gIERlZmF1bHQg U0NST0xMIHR5cGUgaXMgY2hvc2VuIHRoZSBzYW1lIHdheQogCSAqIGFzIFBlcmZvcm1DdXJzb3JP cGVuIGRvZXMgaXQuCkBAIC0yMDkyLDcgKzIwOTksOCBAQCBTUElfcGxhbl9nZXRfY2FjaGVkX3Bs YW4oU1BJUGxhblB0ciBwbGFuKQogCS8qIEdldCB0aGUgZ2VuZXJpYyBwbGFuIGZvciB0aGUgcXVl cnkgKi8KIAljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgTlVMTCwKIAkJCQkJCSAg cGxhbi0+c2F2ZWQgPyBDdXJyZW50UmVzb3VyY2VPd25lciA6IE5VTEwsCi0JCQkJCQkgIF9TUElf Y3VycmVudC0+cXVlcnlFbnYpOworCQkJCQkJICBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJ CQkJICBOVUxMIC8qIE5vdCBpbnRlcmVzdGVkIGluIFBhcnRpdGlvblBydW5lUmVzdWx0cyAqLyk7 CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2UtPmdwbGFuKTsKIAogCS8qIFBvcCB0aGUgZXJy b3IgY29udGV4dCBzdGFjayAqLwpAQCAtMjQ3Myw3ICsyNDgxLDkgQEAgX1NQSV9leGVjdXRlX3Bs YW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAl7 CiAJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBs Zmlyc3QobGMxKTsKIAkJTGlzdAkgICAqc3RtdF9saXN0OwotCQlMaXN0Q2VsbCAgICpsYzI7CisJ CUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CisJCUxpc3RDZWxsICAgKmxjMiwKKwkJ CQkgICAqbGMzOwogCiAJCXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlf c3RyaW5nOwogCkBAIC0yNTQ5LDggKzI1NTksMTAgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxh blB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJICogcGxhbiwg dGhlIHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KIAkJ Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFtcywKLQkJCQkJ CQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwotCisJCQkJCQkJICBwbGFu X293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJCSAmcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCk7CisJCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+c3RtdF9saXN0KSA9PQorCQkJ ICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCQlzdG10X2xpc3QgPSBj cGxhbi0+c3RtdF9saXN0OwogCiAJCS8qCkBAIC0yNTg5LDkgKzI2MDEsMTAgQEAgX1NQSV9leGVj dXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9u cywKIAkJCX0KIAkJfQogCi0JCWZvcmVhY2gobGMyLCBzdG10X2xpc3QpCisJCWZvcmJvdGgobGMy LCBzdG10X2xpc3QsIGxjMywgcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIAkJewogCQkJUGxhbm5l ZFN0bXQgKnN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJCVBhcnRpdGlv blBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBy dW5lUmVzdWx0LCBsYzMpOwogCQkJYm9vbAkJY2FuU2V0VGFnID0gc3RtdC0+Y2FuU2V0VGFnOwog CQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNjYzLDcgKzI2NzYsNyBAQCBfU1BJX2V4ZWN1 dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25z LAogCQkJCWVsc2UKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAotCQkJCXFkZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwg cGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAog CQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMKaW5kZXggOGZiZWFhNGYzNi4uY2ExMzk3OTdhOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKQEAgLTk3LDcgKzk3LDkgQEAgX2NvcHlQbGFubmVkU3RtdChjb25zdCBQbGFubmVk U3RtdCAqZnJvbSkKIAlDT1BZX1NDQUxBUl9GSUVMRChqaXRGbGFncyk7CiAJQ09QWV9OT0RFX0ZJ RUxEKHBsYW5UcmVlKTsKIAlDT1BZX05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOworCUNPUFlf U0NBTEFSX0ZJRUxEKGNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOwogCUNPUFlfTk9ERV9GSUVMRChy dGFibGUpOworCUNPUFlfQklUTUFQU0VUX0ZJRUxEKG1pbkxvY2tSZWxpZHMpOwogCUNPUFlfTk9E RV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChhcHBlbmRSZWxhdGlv bnMpOwogCUNPUFlfTk9ERV9GSUVMRChzdWJwbGFucyk7CkBAIC0xMjg0LDYgKzEyODYsOCBAQCBf Y29weVBhcnRpdGlvblBydW5lSW5mbyhjb25zdCBQYXJ0aXRpb25QcnVuZUluZm8gKmZyb20pCiAJ UGFydGl0aW9uUHJ1bmVJbmZvICpuZXdub2RlID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVJbmZv KTsKIAogCUNPUFlfTk9ERV9GSUVMRChwcnVuZV9pbmZvcyk7CisJQ09QWV9TQ0FMQVJfRklFTEQo bmVlZHNfaW5pdF9wcnVuaW5nKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChuZWVkc19leGVjX3BydW5p bmcpOwogCUNPUFlfQklUTUFQU0VUX0ZJRUxEKG90aGVyX3N1YnBsYW5zKTsKIAogCXJldHVybiBu ZXdub2RlOwpAQCAtMTMwMCw2ICsxMzA0LDcgQEAgX2NvcHlQYXJ0aXRpb25lZFJlbFBydW5lSW5m byhjb25zdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqZnJvbSkKIAlDT1BZX1BPSU5URVJfRklF TEQoc3VicGxhbl9tYXAsIGZyb20tPm5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAlDT1BZX1BPSU5U RVJfRklFTEQoc3VicGFydF9tYXAsIGZyb20tPm5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAlDT1BZ X1BPSU5URVJfRklFTEQocmVsaWRfbWFwLCBmcm9tLT5ucGFydHMgKiBzaXplb2YoT2lkKSk7CisJ Q09QWV9QT0lOVEVSX0ZJRUxEKHJ0aV9tYXAsIGZyb20tPm5wYXJ0cyAqIHNpemVvZihJbmRleCkp OwogCUNPUFlfTk9ERV9GSUVMRChpbml0aWFsX3BydW5pbmdfc3RlcHMpOwogCUNPUFlfTk9ERV9G SUVMRChleGVjX3BydW5pbmdfc3RlcHMpOwogCUNPUFlfQklUTUFQU0VUX0ZJRUxEKGV4ZWNwYXJh bWlkcyk7CkBAIC01NDc1LDYgKzU0ODAsMjEgQEAgX2NvcHlFeHRlbnNpYmxlTm9kZShjb25zdCBF eHRlbnNpYmxlTm9kZSAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorLyogKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoJCQkJCWV4ZWNub2Rlcy5oIGNvcHkgZnVuY3Rpb25zCisgKiAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3N0YXRp YyBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqCitfY29weVBhcnRpdGlvblBydW5lUmVzdWx0KGNvbnN0 IFBhcnRpdGlvblBydW5lUmVzdWx0ICpmcm9tKQoreworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpu ZXdub2RlID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQpOworCisJQ09QWV9OT0RFX0ZJ RUxEKHZhbGlkX3N1YnBsYW5fb2Zmc19saXN0KTsKKwlDT1BZX0JJVE1BUFNFVF9GSUVMRChzY2Fu X2xlYWZwYXJ0X3J0aXMpOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIC8qICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAq CQkJCQl2YWx1ZS5oIGNvcHkgZnVuY3Rpb25zCiAgKiAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC02NTcxLDYgKzY1OTEs MTMgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJCXJldHZhbCA9IF9jb3B5 UHVibGljYXRpb25UYWJsZShmcm9tKTsKIAkJCWJyZWFrOwogCisJCQkvKgorCQkJICogRVhFQ1VU SU9OIE5PREVTCisJCQkgKi8KKwkJY2FzZSBUX1BhcnRpdGlvblBydW5lUmVzdWx0OgorCQkJcmV0 dmFsID0gX2NvcHlQYXJ0aXRpb25QcnVuZVJlc3VsdChmcm9tKTsKKwkJCWJyZWFrOworCiAJCQkv KgogCQkJICogTUlTQ0VMTEFORU9VUyBOT0RFUwogCQkJICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRl eCA3MmZjZDhhNmVlLi41MzAxMGJmMDU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTMyMiw3ICsz MjIsOSBAQCBfb3V0UGxhbm5lZFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5uZWRTdG10 ICpub2RlKQogCVdSSVRFX0lOVF9GSUVMRChqaXRGbGFncyk7CiAJV1JJVEVfTk9ERV9GSUVMRChw bGFuVHJlZSk7CiAJV1JJVEVfTk9ERV9GSUVMRChwYXJ0UHJ1bmVJbmZvcyk7CisJV1JJVEVfQk9P TF9GSUVMRChjb250YWluc0luaXRpYWxQcnVuaW5nKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJ0YWJs ZSk7CisJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKG1pbkxvY2tSZWxpZHMpOwogCVdSSVRFX05PREVf RklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKGFwcGVuZFJlbGF0aW9u cyk7CiAJV1JJVEVfTk9ERV9GSUVMRChzdWJwbGFucyk7CkBAIC0xMDE3LDYgKzEwMTksOCBAQCBf b3V0UGFydGl0aW9uUHJ1bmVJbmZvKFN0cmluZ0luZm8gc3RyLCBjb25zdCBQYXJ0aXRpb25QcnVu ZUluZm8gKm5vZGUpCiAJV1JJVEVfTk9ERV9UWVBFKCJQQVJUSVRJT05QUlVORUlORk8iKTsKIAog CVdSSVRFX05PREVfRklFTEQocHJ1bmVfaW5mb3MpOworCVdSSVRFX0JPT0xfRklFTEQobmVlZHNf aW5pdF9wcnVuaW5nKTsKKwlXUklURV9CT09MX0ZJRUxEKG5lZWRzX2V4ZWNfcHJ1bmluZyk7CiAJ V1JJVEVfQklUTUFQU0VUX0ZJRUxEKG90aGVyX3N1YnBsYW5zKTsKIH0KIApAQCAtMTAzMSw2ICsx MDM1LDcgQEAgX291dFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvKFN0cmluZ0luZm8gc3RyLCBjb25z dCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqbm9kZSkKIAlXUklURV9JTlRfQVJSQVkoc3VicGxh bl9tYXAsIG5vZGUtPm5wYXJ0cyk7CiAJV1JJVEVfSU5UX0FSUkFZKHN1YnBhcnRfbWFwLCBub2Rl LT5ucGFydHMpOwogCVdSSVRFX09JRF9BUlJBWShyZWxpZF9tYXAsIG5vZGUtPm5wYXJ0cyk7CisJ V1JJVEVfSU5ERVhfQVJSQVkocnRpX21hcCwgbm9kZS0+bnBhcnRzKTsKIAlXUklURV9OT0RFX0ZJ RUxEKGluaXRpYWxfcHJ1bmluZ19zdGVwcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChleGVjX3BydW5p bmdfc3RlcHMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChleGVjcGFyYW1pZHMpOwpAQCAtMjQz Niw2ICsyNDQxLDggQEAgX291dFBsYW5uZXJHbG9iYWwoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBs YW5uZXJHbG9iYWwgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwog CVdSSVRFX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKHBh cnRQcnVuZUluZm9zKTsKKwlXUklURV9CT09MX0ZJRUxEKGNvbnRhaW5zSW5pdGlhbFBydW5pbmcp OworCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChtaW5Mb2NrUmVsaWRzKTsKIAlXUklURV9OT0RFX0ZJ RUxEKHJlbGF0aW9uT2lkcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChpbnZhbEl0ZW1zKTsKIAlXUklU RV9OT0RFX0ZJRUxEKHBhcmFtRXhlY1R5cGVzKTsKQEAgLTI4NTcsNiArMjg2NCwyMSBAQCBfb3V0 RXh0ZW5zaWJsZU5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEV4dGVuc2libGVOb2RlICpub2Rl KQogCW1ldGhvZHMtPm5vZGVPdXQoc3RyLCBub2RlKTsKIH0KIAorLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKgorICoJU3R1ZmYgZnJvbSBleGVjbm9kZXMuaAorICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworc3RhdGljIHZvaWQKK19vdXRQYXJ0aXRpb25QcnVuZVJlc3VsdChTdHJpbmdJbmZv IHN0ciwgY29uc3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9U WVBFKCJQQVJUSVRJT05QUlVORVJFU1VMVCIpOworCisJV1JJVEVfTk9ERV9GSUVMRCh2YWxpZF9z dWJwbGFuX29mZnNfbGlzdCk7CisJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKHNjYW5fbGVhZnBhcnRf cnRpcyk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCVN0dWZmIGZyb20gcGFy c2Vub2Rlcy5oLgpAQCAtNDc2Niw2ICs0Nzg4LDEzIEBAIG91dE5vZGUoU3RyaW5nSW5mbyBzdHIs IGNvbnN0IHZvaWQgKm9iaikKIAkJCQlfb3V0SnNvblRhYmxlU2libGluZyhzdHIsIG9iaik7CiAJ CQkJYnJlYWs7CiAKKwkJCQkvKgorCQkJCSAqIEVYRUNVVElPTiBOT0RFUworCQkJCSAqLworCQkJ Y2FzZSBUX1BhcnRpdGlvblBydW5lUmVzdWx0OgorCQkJCV9vdXRQYXJ0aXRpb25QcnVuZVJlc3Vs dChzdHIsIG9iaik7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9y ZWFkZnVuY3MuYwppbmRleCBiZjYwMmZmOTNlLi5jMWQxMzFhYTk5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYwpAQCAtMTY0LDYgKzE2NCwxMSBAQAogCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJ Lyogc2tpcCA6ZmxkbmFtZSAqLyBcCiAJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbnRDb2xz KGxlbikKIAorLyogUmVhZCBhbiBJbmRleCBhcnJheSAqLworI2RlZmluZSBSRUFEX0lOREVYX0FS UkFZKGZsZG5hbWUsIGxlbikgXAorCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJLyogc2tp cCA6ZmxkbmFtZSAqLyBcCisJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbmRleENvbHMobGVu KQorCiAvKiBSZWFkIGEgYm9vbCBhcnJheSAqLwogI2RlZmluZSBSRUFEX0JPT0xfQVJSQVkoZmxk bmFtZSwgbGVuKSBcCiAJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CQkvKiBza2lwIDpmbGRu YW1lICovIFwKQEAgLTE4MTgsNyArMTgyMyw5IEBAIF9yZWFkUGxhbm5lZFN0bXQodm9pZCkKIAlS RUFEX0lOVF9GSUVMRChqaXRGbGFncyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHBsYW5UcmVlKTsKIAlS RUFEX05PREVfRklFTEQocGFydFBydW5lSW5mb3MpOworCVJFQURfQk9PTF9GSUVMRChjb250YWlu c0luaXRpYWxQcnVuaW5nKTsKIAlSRUFEX05PREVfRklFTEQocnRhYmxlKTsKKwlSRUFEX0JJVE1B UFNFVF9GSUVMRChtaW5Mb2NrUmVsaWRzKTsKIAlSRUFEX05PREVfRklFTEQocmVzdWx0UmVsYXRp b25zKTsKIAlSRUFEX05PREVfRklFTEQoYXBwZW5kUmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklF TEQoc3VicGxhbnMpOwpAQCAtMjc3MCw2ICsyNzc3LDggQEAgX3JlYWRQYXJ0aXRpb25QcnVuZUlu Zm8odm9pZCkKIAlSRUFEX0xPQ0FMUyhQYXJ0aXRpb25QcnVuZUluZm8pOwogCiAJUkVBRF9OT0RF X0ZJRUxEKHBydW5lX2luZm9zKTsKKwlSRUFEX0JPT0xfRklFTEQobmVlZHNfaW5pdF9wcnVuaW5n KTsKKwlSRUFEX0JPT0xfRklFTEQobmVlZHNfZXhlY19wcnVuaW5nKTsKIAlSRUFEX0JJVE1BUFNF VF9GSUVMRChvdGhlcl9zdWJwbGFucyk7CiAKIAlSRUFEX0RPTkUoKTsKQEAgLTI3ODYsNiArMjc5 NSw3IEBAIF9yZWFkUGFydGl0aW9uZWRSZWxQcnVuZUluZm8odm9pZCkKIAlSRUFEX0lOVF9BUlJB WShzdWJwbGFuX21hcCwgbG9jYWxfbm9kZS0+bnBhcnRzKTsKIAlSRUFEX0lOVF9BUlJBWShzdWJw YXJ0X21hcCwgbG9jYWxfbm9kZS0+bnBhcnRzKTsKIAlSRUFEX09JRF9BUlJBWShyZWxpZF9tYXAs IGxvY2FsX25vZGUtPm5wYXJ0cyk7CisJUkVBRF9JTkRFWF9BUlJBWShydGlfbWFwLCBsb2NhbF9u b2RlLT5ucGFydHMpOwogCVJFQURfTk9ERV9GSUVMRChpbml0aWFsX3BydW5pbmdfc3RlcHMpOwog CVJFQURfTk9ERV9GSUVMRChleGVjX3BydW5pbmdfc3RlcHMpOwogCVJFQURfQklUTUFQU0VUX0ZJ RUxEKGV4ZWNwYXJhbWlkcyk7CkBAIC0yOTM5LDYgKzI5NDksMjEgQEAgX3JlYWRQYXJ0aXRpb25S YW5nZURhdHVtKHZvaWQpCiAJUkVBRF9ET05FKCk7CiB9CiAKKworLyoKKyAqIF9yZWFkUGFydGl0 aW9uUHJ1bmVSZXN1bHQKKyAqLworc3RhdGljIFBhcnRpdGlvblBydW5lUmVzdWx0ICoKK19yZWFk UGFydGl0aW9uUHJ1bmVSZXN1bHQodm9pZCkKK3sKKwlSRUFEX0xPQ0FMUyhQYXJ0aXRpb25QcnVu ZVJlc3VsdCk7CisKKwlSRUFEX05PREVfRklFTEQodmFsaWRfc3VicGxhbl9vZmZzX2xpc3QpOwor CVJFQURfQklUTUFQU0VUX0ZJRUxEKHNjYW5fbGVhZnBhcnRfcnRpcyk7CisKKwlSRUFEX0RPTkUo KTsKK30KKwogLyoKICAqIHBhcnNlTm9kZVN0cmluZwogICoKQEAgLTMyMzYsNiArMzI2MSw4IEBA IHBhcnNlTm9kZVN0cmluZyh2b2lkKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZEpzb25UYWJsZVBh cmVudCgpOwogCWVsc2UgaWYgKE1BVENIKCJKU09OVEFCTEVTSUJMSU5HIiwgMTYpKQogCQlyZXR1 cm5fdmFsdWUgPSBfcmVhZEpzb25UYWJsZVNpYmxpbmcoKTsKKwllbHNlIGlmIChNQVRDSCgiUEFS VElUSU9OUFJVTkVSRVNVTFQiLCAyMCkpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkUGFydGl0aW9u UHJ1bmVSZXN1bHQoKTsKIAllbHNlCiAJewogCQllbG9nKEVSUk9SLCAiYmFkbHkgZm9ybWF0dGVk IG5vZGUgc3RyaW5nIFwiJS4zMnNcIi4uLiIsIHRva2VuKTsKQEAgLTMzNzksNiArMzQwNiwzMCBA QCByZWFkSW50Q29scyhpbnQgbnVtQ29scykKIAlyZXR1cm4gaW50X3ZhbHM7CiB9CiAKKy8qCisg KiByZWFkSW5kZXhDb2xzCisgKi8KK0luZGV4ICoKK3JlYWRJbmRleENvbHMoaW50IG51bUNvbHMp Cit7CisJaW50CQkJdG9rZW5MZW5ndGgsCisJCQkJaTsKKwljb25zdCBjaGFyICp0b2tlbjsKKwlJ bmRleAkgICAqaW5kZXhfdmFsczsKKworCWlmIChudW1Db2xzIDw9IDApCisJCXJldHVybiBOVUxM OworCisJaW5kZXhfdmFscyA9IChJbmRleCAqKSBwYWxsb2MobnVtQ29scyAqIHNpemVvZihJbmRl eCkpOworCWZvciAoaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspCisJeworCQl0b2tlbiA9IHBnX3N0 cnRvaygmdG9rZW5MZW5ndGgpOworCQlpbmRleF92YWxzW2ldID0gYXRvdWkodG9rZW4pOworCX0K KworCXJldHVybiBpbmRleF92YWxzOworfQorCiAvKgogICogcmVhZEJvb2xDb2xzCiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCAzMmU2NThiNWQ2Li5lZGJmMTk3MTZl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC01MTksNyArNTE5LDkgQEAg c3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywg aW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5w YXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOwogCXJlc3Vs dC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKKwlyZXN1bHQtPmNvbnRh aW5zSW5pdGlhbFBydW5pbmcgPSBnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nOwogCXJlc3Vs dC0+cnRhYmxlID0gZ2xvYi0+ZmluYWxydGFibGU7CisJcmVzdWx0LT5taW5Mb2NrUmVsaWRzID0g Z2xvYi0+bWluTG9ja1JlbGlkczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJl c3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJl bGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggYWFmZTFjMTQ5ZC4uYTMyZmM3MDc4NSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjcwLDYgKzI3MCwxNiBAQCBzZXRfcGxh bl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKQogCSAqLwogCWFkZF9y dGVzX3RvX2ZsYXRfcnRhYmxlKHJvb3QsIGZhbHNlKTsKIAorCS8qCisJICogQWRkIHRoZSBxdWVy eSdzIGFkanVzdGVkIHJhbmdlIG9mIFJUIGluZGV4ZXMgdG8gZ2xvYi0+bWluTG9ja1JlbGlkcy4K KwkgKiBUaGUgYWRqdXN0ZWQgUlQgaW5kZXhlcyBvZiBwcnVuYWJsZSByZWxhdGlvbnMgd2lsbCBi ZSBkZWxldGVkIGZyb20gdGhlCisJICogc2V0IGJlbG93IHdoZXJlIFBhcnRpdGlvblBydW5lSW5m b3MgYXJlIHByb2Nlc3NlZC4KKwkgKi8KKwlnbG9iLT5taW5Mb2NrUmVsaWRzID0KKwkJYm1zX2Fk ZF9yYW5nZShnbG9iLT5taW5Mb2NrUmVsaWRzLAorCQkJCQkgIHJ0b2Zmc2V0ICsgMSwKKwkJCQkJ ICBydG9mZnNldCArIGxpc3RfbGVuZ3RoKHJvb3QtPnBhcnNlLT5ydGFibGUpKTsKKwogCS8qCiAJ ICogQWRqdXN0IFJUIGluZGV4ZXMgb2YgUGxhblJvd01hcmtzIGFuZCBhZGQgdG8gZmluYWwgcm93 bWFya3MgbGlzdAogCSAqLwpAQCAtMzUyLDYgKzM2Miw3IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMo UGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJZm9yZWFjaCAobGMsIHJvb3QtPnBhcnRQ cnVuZUluZm9zKQogCXsKIAkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3Qo bGMpOworCQlCaXRtYXBzZXQgKmxlYWZwYXJ0X3J0aXMgPSBOVUxMOwogCQlMaXN0Q2VsbCAgKmw7 CiAKIAkJZm9yZWFjaChsLCBwcnVuZWluZm8tPnBydW5lX2luZm9zKQpAQCAtMzYyLDE1ICszNzMs NDkgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikK IAkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQogCQkJewogCQkJCVBhcnRpdGlvbmVkUmVsUHJ1 bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7CisJCQkJaW50CQlpOwogCiAJCQkJLyogUlQgaW5k ZXggb2YgdGhlIHRhYmxlIHRvIHdoaWNoIHRoZSBwaW5mbyBiZWxvbmdzLiAqLwogCQkJCXBpbmZv LT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCisJCQkJLyogQWxzbyBvZiB0aGUgbGVhZiBwYXJ0aXRp b25zIHRoYXQgbWlnaHQgYmUgc2Nhbm5lZC4gKi8KKwkJCQlmb3IgKGkgPSAwOyBpIDwgcGluZm8t Pm5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaWYgKHBpbmZvLT5ydGlfbWFwW2ldID4gMCAmJiBw aW5mby0+c3VicGxhbl9tYXBbaV0gPj0gMCkKKwkJCQkJeworCQkJCQkJcGluZm8tPnJ0aV9tYXBb aV0gKz0gcnRvZmZzZXQ7CisJCQkJCQlsZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIobGVh ZnBhcnRfcnRpcywKKwkJCQkJCQkJCQkJCQkgICBwaW5mby0+cnRpX21hcFtpXSk7CisJCQkJCX0K KwkJCQl9CiAJCQl9CiAJCX0KIAorCQlpZiAocHJ1bmVpbmZvLT5uZWVkc19pbml0X3BydW5pbmcp CisJCXsKKwkJCWdsb2ItPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcgPSB0cnVlOworCisJCQkvKgor CQkJICogRGVsZXRlIHRoZSBsZWFmIHBhcnRpdGlvbiBSVElzIGZyb20gdGhlIGdsb2JhbCBzZXQg b2YgcmVsYXRpb25zCisJCQkgKiB0byBiZSBsb2NrZWQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgcGxh bi4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkKKwkJCSAqIHdpbGwgZmluZCB0aGUgb25lcyB0byBh ZGQgdG8gdGhlIHNldCBhZnRlciBwZXJmb3JtaW5nIGluaXRpYWwKKwkJCSAqIHBydW5pbmcuCisJ CQkgKi8KKwkJCWdsb2ItPm1pbkxvY2tSZWxpZHMgPSBibXNfZGVsX21lbWJlcnMoZ2xvYi0+bWlu TG9ja1JlbGlkcywKKwkJCQkJCQkJCQkJCSAgbGVhZnBhcnRfcnRpcyk7CisJCX0KKwogCQlnbG9i LT5wYXJ0UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5mb3MsIHBydW5laW5m byk7CiAJfQogCisJLyoKKwkgKiBJdCBzZWVtcyB3b3J0aCBkb2luZyBhIGJtc19jb3B5KCkgb24g Z2xvYi0+bWluTG9ja1JlbGlkcyBpZiB3ZSBkZWxldGVkCisJICogYml0IGZyb20gaXQganVzdCBh Ym92ZSB0byBwcmV2ZW50IGVtcHR5IHRhaWwgYml0cyByZXN1bHRpbmcgaW4KKwkgKiBpbmVmZmlj aWVudCBsb29waW5nIGR1cmluZyBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCSAqLworCWlmIChn bG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nKQorCQlnbG9iLT5taW5Mb2NrUmVsaWRzID0gYm1z X2NvcHkoZ2xvYi0+bWluTG9ja1JlbGlkcyk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggZDc3ZjdkM2FlZi4uOTUyYzViODMyNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMTQ0LDcgKzE0NCw5IEBAIHN0 YXRpYyBMaXN0ICptYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVuZXF1YWwsCiAJCQkJCQkJCQkJICAgQml0bWFwc2V0 ICpwYXJ0cmVsaWRzLAogCQkJCQkJCQkJCSAgIGludCAqcmVsaWRfc3VicGxhbl9tYXAsCi0JCQkJ CQkJCQkJICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkgICBCaXRt YXBzZXQgKiptYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJICAgYm9vbCAqbmVlZHNfaW5pdF9w cnVuaW5nLAorCQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRzX2V4ZWNfcHJ1bmluZyk7CiBzdGF0aWMg dm9pZCBnZW5fcGFydHBydW5lX3N0ZXBzKFJlbE9wdEluZm8gKnJlbCwgTGlzdCAqY2xhdXNlcywK IAkJCQkJCQkJUGFydENsYXVzZVRhcmdldCB0YXJnZXQsCiAJCQkJCQkJCUdlbmVyYXRlUHJ1bmlu Z1N0ZXBzQ29udGV4dCAqY29udGV4dCk7CkBAIC0yMzQsNiArMjM2LDggQEAgbWFrZV9wYXJ0aXRp b25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJ aW50CQkgICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsK Kwlib29sCQluZWVkc19pbml0X3BydW5pbmcgPSBmYWxzZTsKKwlib29sCQluZWVkc19leGVjX3By dW5pbmcgPSBmYWxzZTsKIAogCS8qCiAJICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdoaWNo IG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZApAQCAtMzEzLDEyICszMTcsMTYgQEAg bWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpw YXJlbnRyZWwsCiAJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJz dChsYyk7CiAJCUxpc3QJICAgKnBpbmZvbGlzdDsKIAkJQml0bWFwc2V0ICAqbWF0Y2hlZHN1YnBs YW5zID0gTlVMTDsKKwkJYm9vbAkJcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJCWJvb2wJ CXBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nOwogCiAJCXBpbmZvbGlzdCA9IG1ha2VfcGFydGl0 aW9uZWRyZWxfcHJ1bmVpbmZvKHJvb3QsIHBhcmVudHJlbCwKIAkJCQkJCQkJCQkJCSAgcHJ1bmVx dWFsLAogCQkJCQkJCQkJCQkJICBwYXJ0cmVsaWRzLAogCQkJCQkJCQkJCQkJICByZWxpZF9zdWJw bGFuX21hcCwKLQkJCQkJCQkJCQkJCSAgJm1hdGNoZWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCQkg ICZtYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJCQkgICZwYXJ0cmVsX25lZWRzX2luaXRfcHJ1 bmluZywKKwkJCQkJCQkJCQkJCSAgJnBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nKTsKIAogCQkv KiBXaGVuIHBydW5pbmcgaXMgcG9zc2libGUsIHJlY29yZCB0aGUgbWF0Y2hlZCBzdWJwbGFucyAq LwogCQlpZiAocGluZm9saXN0ICE9IE5JTCkKQEAgLTMyNyw2ICszMzUsOSBAQCBtYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwK IAkJCWFsbG1hdGNoZWRzdWJwbGFucyA9IGJtc19qb2luKG1hdGNoZWRzdWJwbGFucywKIAkJCQkJ CQkJCQkgIGFsbG1hdGNoZWRzdWJwbGFucyk7CiAJCX0KKworCQluZWVkc19pbml0X3BydW5pbmcg fD0gcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJCW5lZWRzX2V4ZWNfcHJ1bmluZyB8PSBw YXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZzsKIAl9CiAKIAlwZnJlZShyZWxpZF9zdWJwbGFuX21h cCk7CkBAIC0zNDEsNiArMzUyLDggQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJLyogRWxzZSBidWlsZCB0aGUgcmVz dWx0IGRhdGEgc3RydWN0dXJlICovCiAJcHJ1bmVpbmZvID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1 bmVJbmZvKTsKIAlwcnVuZWluZm8tPnBydW5lX2luZm9zID0gcHJ1bmVyZWxpbmZvczsKKwlwcnVu ZWluZm8tPm5lZWRzX2luaXRfcHJ1bmluZyA9IG5lZWRzX2luaXRfcHJ1bmluZzsKKwlwcnVuZWlu Zm8tPm5lZWRzX2V4ZWNfcHJ1bmluZyA9IG5lZWRzX2V4ZWNfcHJ1bmluZzsKIAogCS8qCiAJICog U29tZSBzdWJwbGFucyBtYXkgbm90IGJlbG9uZyB0byBhbnkgb2YgdGhlIGlkZW50aWZpZWQgcGFy dGl0aW9uZWQgcmVscy4KQEAgLTQ0MSwxMyArNDU0LDE4IEBAIGFkZF9wYXJ0X3JlbGlkcyhMaXN0 ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCiAgKiBJZiB3ZSBjYW5ub3Qg ZmluZCBhbnkgdXNlZnVsIHJ1bi10aW1lIHBydW5pbmcgc3RlcHMsIHJldHVybiBOSUwuCiAgKiBI b3dldmVyLCBvbiBzdWNjZXNzLCBlYWNoIHJlbCBpZGVudGlmaWVkIGluIHBhcnRyZWxpZHMgd2ls bCBoYXZlCiAgKiBhbiBlbGVtZW50IGluIHRoZSByZXN1bHQgbGlzdCwgZXZlbiBpZiBzb21lIG9m IHRoZW0gYXJlIHVzZWxlc3MuCisgKiAqbmVlZHNfaW5pdF9wcnVuaW5nIGFuZCAqbmVlZHNfZXhl Y19wcnVuaW5nIGFyZSBzZXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUKKyAqIHJldHVybmVkIFBhcnRp dGlvbmVkUmVsUHJ1bmVJbmZvcyBjb250YWlucyBwcnVuaW5nIHN0ZXBzIHRoYXQgY2FuIGJlCisg KiBwZXJmb3JtZWQgYmVmb3JlIGFuZCBhZnRlciBleGVjdXRpb24gYmVnaW5zLCByZXNwZWN0aXZl bHkuCiAgKi8KIHN0YXRpYyBMaXN0ICoKIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkJICBMaXN0ICpw cnVuZXF1YWwsCiAJCQkJCQkJICBCaXRtYXBzZXQgKnBhcnRyZWxpZHMsCiAJCQkJCQkJICBpbnQg KnJlbGlkX3N1YnBsYW5fbWFwLAotCQkJCQkJCSAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5z KQorCQkJCQkJCSAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCSAgYm9vbCAq bmVlZHNfaW5pdF9wcnVuaW5nLAorCQkJCQkJCSAgYm9vbCAqbmVlZHNfZXhlY19wcnVuaW5nKQog ewogCVJlbE9wdEluZm8gKnRhcmdldHBhcnQgPSBOVUxMOwogCUxpc3QJICAgKnBpbmZvbGlzdCA9 IE5JTDsKQEAgLTQ1OCw2ICs0NzYsMTAgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlpbnQJCQlydGk7CiAJ aW50CQkJaTsKIAorCS8qIFdpbGwgZmluZCBvdXQgYmVsb3cuICovCisJKm5lZWRzX2luaXRfcHJ1 bmluZyA9IGZhbHNlOworCSpuZWVkc19leGVjX3BydW5pbmcgPSBmYWxzZTsKKwogCS8qCiAJICog RXhhbWluZSBlYWNoIHBhcnRpdGlvbmVkIHJlbCwgY29uc3RydWN0aW5nIGEgdGVtcG9yYXJ5IGFy cmF5IHRvIG1hcAogCSAqIGZyb20gcGxhbm5lciByZWxpZHMgdG8gaW5kZXggb2YgdGhlIHBhcnRp dGlvbmVkIHJlbCwgYW5kIGJ1aWxkaW5nIGEKQEAgLTU0NSw2ICs1NjcsOSBAQCBtYWtlX3BhcnRp dGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAogCQkgKiBleGVjdXRvciBwZXItc2NhbiBwcnVuaW5nIHN0ZXBzLiAgVGhpcyBmaXJzdCBw YXNzIGNyZWF0ZXMgc3RhcnR1cAogCQkgKiBwcnVuaW5nIHN0ZXBzIGFuZCBkZXRlY3RzIHdoZXRo ZXIgdGhlcmUncyBhbnkgcG9zc2libHktdXNlZnVsIHF1YWxzCiAJCSAqIHRoYXQgd291bGQgcmVx dWlyZSBwZXItc2NhbiBwcnVuaW5nLgorCQkgKgorCQkgKiBJbiB0aGUgZmlyc3QgcGFzcywgd2Ug bm90ZSB3aGV0aGVyIHRoZSAybmQgcGFzcyBpcyBuZWNlc3NhcnkgYnkKKwkJICogbm90aW5nIHRo ZSBwcmVzZW5jZSBvZiBFWEVDIHBhcmFtZXRlcnMuCiAJCSAqLwogCQlnZW5fcGFydHBydW5lX3N0 ZXBzKHN1YnBhcnQsIHBhcnRwcnVuZXF1YWwsIFBBUlRUQVJHRVRfSU5JVElBTCwKIAkJCQkJCQkm Y29udGV4dCk7CkBAIC02MTksNiArNjQ0LDEyIEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVp bmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXBpbmZvLT5l eGVjcGFyYW1pZHMgPSBleGVjcGFyYW1pZHM7CiAJCS8qIFJlbWFpbmluZyBmaWVsZHMgd2lsbCBi ZSBmaWxsZWQgaW4gdGhlIG5leHQgbG9vcCAqLwogCisJCS8qIHJlY29yZCB3aGljaCB0eXBlcyBv ZiBwcnVuaW5nIHN0ZXBzIHdlJ3ZlIHNlZW4gc28gZmFyICovCisJCWlmIChpbml0aWFsX3BydW5p bmdfc3RlcHMgIT0gTklMKQorCQkJKm5lZWRzX2luaXRfcHJ1bmluZyA9IHRydWU7CisJCWlmIChl eGVjX3BydW5pbmdfc3RlcHMgIT0gTklMKQorCQkJKm5lZWRzX2V4ZWNfcHJ1bmluZyA9IHRydWU7 CisKIAkJcGluZm9saXN0ID0gbGFwcGVuZChwaW5mb2xpc3QsIHBpbmZvKTsKIAl9CiAKQEAgLTY0 Niw2ICs2NzcsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAkJ aW50CQkgICAqc3VicGFydF9tYXA7CiAJCU9pZAkJICAgKnJlbGlkX21hcDsKKwkJSW5kZXgJICAg KnJ0aV9tYXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFuIGFuZCBzdWJwYXJ0 IG1hcHMgZm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU4LDYgKzY5MCw3IEBAIG1h a2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpwYXJlbnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2MobnBhcnRzICogc2l6 ZW9mKGludCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMgKiBzaXplb2YoaW50 KSk7CiAJCXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoT2lkKSk7 CisJCXJ0aV9tYXAgPSAoSW5kZXggKikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoSW5kZXgpKTsK IAkJcHJlc2VudF9wYXJ0cyA9IE5VTEw7CiAKIAkJaSA9IC0xOwpAQCAtNjcyLDYgKzcwNSw3IEBA IG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBsYW5pZHggPSByZWxpZF9z dWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFydF9tYXBbaV0gPSBzdWJw YXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJCXJlbGlk X21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQsIHJvb3QpLT5yZWxpZDsK KwkJCXJ0aV9tYXBbaV0gPSBwYXJ0cmVsLT5yZWxpZDsKIAkJCWlmIChzdWJwbGFuaWR4ID49IDAp CiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVtYmVyKHByZXNlbnRfcGFydHMs IGkpOwpAQCAtNjk2LDYgKzczMCw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXBpbmZvLT5zdWJwbGFu X21hcCA9IHN1YnBsYW5fbWFwOwogCQlwaW5mby0+c3VicGFydF9tYXAgPSBzdWJwYXJ0X21hcDsK IAkJcGluZm8tPnJlbGlkX21hcCA9IHJlbGlkX21hcDsKKwkJcGluZm8tPnJ0aV9tYXAgPSBydGlf bWFwOwogCX0KIAogCXBmcmVlKHJlbGlkX3N1YnBhcnRfbWFwKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRl eCA4YjZiNWJiYWFhLi43ZjBlZGE0OGE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xNjAzLDYgKzE2 MDMsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJaW50 MTYJICAgKnJmb3JtYXRzID0gTlVMTDsKIAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwogCUNhY2hl ZFBsYW4gKmNwbGFuOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CiAJUG9ydGFs CQlwb3J0YWw7CiAJY2hhcgkgICAqcXVlcnlfc3RyaW5nOwogCWNoYXIJICAgKnNhdmVkX3N0bXRf bmFtZTsKQEAgLTE5NzgsNyArMTk3OSw5IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8g aW5wdXRfbWVzc2FnZSkKIAkgKiB3aWxsIGJlIGdlbmVyYXRlZCBpbiBNZXNzYWdlQ29udGV4dC4g IFRoZSBwbGFuIHJlZmNvdW50IHdpbGwgYmUKIAkgKiBhc3NpZ25lZCB0byB0aGUgUG9ydGFsLCBz byBpdCB3aWxsIGJlIHJlbGVhc2VkIGF0IHBvcnRhbCBkZXN0cnVjdGlvbi4KIAkgKi8KLQljcGxh biA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMKTsKKwljcGxhbiA9IEdl dENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMLCAmcGFydF9wcnVuZV9yZXN1bHRf bGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxp c3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAogCS8qCiAJICogTm93IHdlIGNh biBkZWZpbmUgdGhlIHBvcnRhbC4KQEAgLTE5OTMsNiArMTk5Niw5IEBAIGV4ZWNfYmluZF9tZXNz YWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJICBjcGxhbi0+c3RtdF9saXN0LAog CQkJCQkgIGNwbGFuKTsKIAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhl IHBvcnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMo cG9ydGFsLCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qIERvbmUgd2l0aCB0aGUgc25h cHNob3QgdXNlZCBmb3IgcGFyYW1ldGVyIEkvTyBhbmQgcGFyc2luZy9wbGFubmluZyAqLwogCWlm IChzbmFwc2hvdF9zZXQpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCA1 YWE1YTM1MGYzLi44Y2MyZTIxNjJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTM1LDcgKzM1LDcgQEAKIFBv cnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnko UGxhbm5lZFN0bXQgKnBsYW4sCitzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQg KnBsYW4sIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCSBj b25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJ CQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtNjUsNiArNjUsNyBAQCBzdGF0aWMg dm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENy ZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJUGFydGl0aW9uUHJ1 bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQs CiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hv dCwKQEAgLTc3LDYgKzc4LDggQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9w ZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJ cWQtPnBhcnRfcHJ1bmVfcmVzdWx0ID0gcGFydF9wcnVuZV9yZXN1bHQ7CS8qIEV4ZWN1dG9yRG9J bml0aWFsUHJ1bmluZygpCisJCQkJCQkJCQkJCQkgKiBvdXRwdXQgZm9yIHBsYW4gKi8KIAlxZC0+ c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3Qg PSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVj ayBzbmFwc2hvdCAqLwpAQCAtMTIyLDYgKzEyNSw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNj ICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9SVEFMX09ORV9NT0RfV0lU SCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0aGUgcXVlcnkKKyAqCXBh cnRfcHJ1bmVfcmVzdWx0OiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSBvdXRwdXQgZm9yIHRo ZSBwbGFuIHRyZWUKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkK ICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5k IHJlc3VsdHMKQEAgLTEzNCw2ICsxMzgsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRl c2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJ CQkgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJIGNvbnN0IGNo YXIgKnNvdXJjZVRleHQsCiAJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsCkBAIC0xNDUsNyArMTUwLDcgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5u ZWRTdG10ICpwbGFuLAogCS8qCiAJICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0CiAJICov Ci0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCisJcXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBhcnRfcHJ1bmVfcmVzdWx0LCBzb3VyY2VUZXh0 LAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJ CWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCkBAIC00OTEsOCArNDk2LDEzIEBAIFBvcnRh bFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCS8qCiAJCQkJ ICogQ3JlYXRlIFF1ZXJ5RGVzYyBpbiBwb3J0YWwncyBjb250ZXh0OyBmb3IgdGhlIG1vbWVudCwg c2V0CiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgorCQkJCSAqCisJCQkJICog VGhlcmUgaXMgbm8gUGFydGl0aW9uUHJ1bmVSZXN1bHQgdW5sZXNzIHRoZSBQbGFubmVkU3RtdCBp cworCQkJCSAqIGZyb20gYSBDYWNoZWRQbGFuLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwK KwkJCQkJCQkJCQkJcG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHMgPT0gTklMID8gTlVMTCA6CisJ CQkJCQkJCQkJCWxpbml0aWFsKHBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzKSwKIAkJCQkJCQkJ CQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAog CQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC0xMjI1LDYgKzEyMzUsOCBAQCBQb3J0YWxS dW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCiAJCWlmIChwc3RtdC0+dXRpbGl0eVN0bXQgPT0gTlVM TCkKIAkJeworCQkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0ID0gTlVM TDsKKwogCQkJLyoKIAkJCSAqIHByb2Nlc3MgYSBwbGFubmFibGUgcXVlcnkuCiAJCQkgKi8KQEAg LTEyNzEsMTAgKzEyODMsMTggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVs c2UKIAkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICog RGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIFBhcnRpdGlvblBydW5lUmVzdWx0 IGZvcgorCQkJICogdGhpcyBQbGFubmVkU3RtdC4KKwkJCSAqLworCQkJaWYgKHBvcnRhbC0+cGFy dF9wcnVuZV9yZXN1bHRzICE9IE5JTCkKKwkJCQlwYXJ0X3BydW5lX3Jlc3VsdCA9IGxpc3RfbnRo KHBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJCQkgZm9yZWFjaF9jdXJyZW50 X2luZGV4KHN0bXRsaXN0X2l0ZW0pKTsKKwogCQkJaWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJCQl7 CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwotCQkJCVByb2Nlc3NRdWVy eShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJ CQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAog CQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI4Myw3ICsxMzAzLDcgQEAgUG9ydGFsUnVu TXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCXsKIAkJCQkvKiBzdG10IGFkZGVkIGJ5 IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJ UHJvY2Vzc1F1ZXJ5KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCQkgcG9ydGFsLT5z b3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFs LT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggMGQ2YTI5NTY3 NC4uOGMxNjQ3NDFmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTk5LDE0 ICs5OSwxOSBAQCBzdGF0aWMgZGxpc3RfaGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0ID0gRExJ U1RfU1RBVElDX0lOSVQoY2FjaGVkX2V4cHJlc3Npb25fbAogc3RhdGljIHZvaWQgUmVsZWFzZUdl bmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJl dmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJ CQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBDaGVja0NhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBDaGVja0Nh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcywKKwkJCQkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBzdGF0aWMg Q2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us IExpc3QgKnFsaXN0LAotCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgICBMaXN0ICoqcGFy dF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5k UGFyYW1zKTsKIHN0YXRpYyBkb3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFu LCBib29sIGluY2x1ZGVfcGxhbm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1h cnlTdG10KExpc3QgKnN0bXRzKTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExp c3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKK3N0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRv ckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQkJ CQkJIExpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCQkgTGlzdCAqKmxvY2tl ZFJlbGlkc19wZXJfc3RtdCk7CitzdGF0aWMgdm9pZCBSZWxlYXNlRXhlY3V0b3JMb2NrcyhMaXN0 ICpzdG10X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CiBzdGF0aWMgdm9pZCBB Y3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRp YyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7 CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7 CkBAIC03OTAsMTUgKzc5NSwyMCBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwKICAqCiAgKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNx dWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4uCiAgKiAoV2UgbXVzdCBkbyB0 aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKKyAq CisgKiBTZWUgR2V0Q2FjaGVkUGxhbigpJ3MgY29tbWVudCBmb3IgYSBkZXNjcmlwdGlvbiBvZiBw YXJ0X3BydW5lX3Jlc3VsdF9saXN0LgogICovCiBzdGF0aWMgYm9vbAotQ2hlY2tDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCitDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQlMaXN0 ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNv dXJjZS0+Z3BsYW47CiAKIAkvKiBBc3NlcnQgdGhhdCBjYWxsZXIgY2hlY2tlZCB0aGUgcXVlcnl0 cmVlICovCiAJQXNzZXJ0KHBsYW5zb3VyY2UtPmlzX3ZhbGlkKTsKIAorCSpwYXJ0X3BydW5lX3Jl c3VsdF9saXN0ID0gTklMOworCiAJLyogSWYgdGhlcmUncyBubyBnZW5lcmljIHBsYW4sIGp1c3Qg c2F5ICJmYWxzZSIgKi8KIAlpZiAoIXBsYW4pCiAJCXJldHVybiBmYWxzZTsKQEAgLTgyMCwxMyAr ODMwLDIxIEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQog CSAqLwogCWlmIChwbGFuLT5pc192YWxpZCkKIAl7CisJCUxpc3QgICAqbG9ja2VkUmVsaWRzX3Bl cl9zdG10OworCiAJCS8qCiAJCSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJlZmNvdW50IGJl Y2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieQogCQkgKiBwbGFuc291cmNlOyBzbyBubyBuZWVkIHRv IGZlYXIgaXQgZGlzYXBwZWFycyB1bmRlciB1cyBoZXJlLgogCQkgKi8KIAkJQXNzZXJ0KHBsYW4t PnJlZmNvdW50ID4gMCk7CiAKLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0 LCB0cnVlKTsKKwkJLyoKKwkJICogTG9jayByZWxhdGlvbnMgc2Nhbm5lZCBieSB0aGUgcGxhbi4g IFRoaXMgaXMgd2hlcmUgdGhlIHBydW5pbmcKKwkJICogaGFwcGVucyBpZiBuZWVkZWQuCisJCSAq LworCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGJvdW5kUGFyYW1zLAor CQkJCQkJCSBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCSAmbG9ja2VkUmVsaWRzX3Bl cl9zdG10KTsKIAogCQkvKgogCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNl ZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCkBAIC04NDgsNyArODY2LDE0IEBAIENoZWNrQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQl9CiAKIAkJLyogT29wcywgdGhl IHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWly ZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCVJlbGVhc2VFeGVjdXRv ckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKKworCQkvKgor CQkgKiBUaGUgb3V0cHV0IGxpc3QgYW5kIGFueSBvYmplY3RzIHRoZXJlaW4gaGF2ZSBiZWVuIGFs bG9jYXRlZCBpbiB0aGUKKwkJICogY2FsbGVyJ3MgaG9wZWZ1bGx5IHNob3J0LWxpdmVkIGNvbnRl eHQsIHNvIHdpbGwgbm90IHJlbWFpbiBsZWFrZWQKKwkJICogZm9yIGxvbmcsIHRob3VnaCByZXNl dCB0byBhdm9pZCBpdHMgYWNjaWRlbnRhbGx5IGJlaW5nIGxvb2tlZCBhdC4KKwkJICovCisJCSpw YXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gTklMOwogCX0KIAogCS8qCkBAIC04NzQsMTAgKzg5OSwx NSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIFBs YW5uaW5nIHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuICBUaGUg ZmluaXNoZWQgcGxhbgogICogaXMgaW4gYSBjaGlsZCBtZW1vcnkgY29udGV4dCwgd2hpY2ggdHlw aWNhbGx5IHNob3VsZCBnZXQgcmVwYXJlbnRlZAogICogKHVubGVzcyB0aGlzIGlzIGEgb25lLXNo b3QgcGxhbiwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBjb3B5IHRoZSBwbGFuKS4KKyAqCisgKiBB IGxpc3Qgb2YgTlVMTHMgaXMgcmV0dXJuZWQgaW4gKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QsIG1l YW5pbmcgdGhhdCBubworICogUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZXMgaGF2ZSB5ZXQgYmVl biBjcmVhdGVkIGZvciB0aGUgcGxhbnMgaW4KKyAqIHN0bXRfbGlzdC4KICAqLwogc3RhdGljIENh Y2hlZFBsYW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us IExpc3QgKnFsaXN0LAotCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52KQorCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQog ewogCUNhY2hlZFBsYW4gKnBsYW47CiAJTGlzdAkgICAqcGxpc3Q7CkBAIC0xMDA3LDYgKzEwMzcs MTcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3Qg KnFsaXN0LAogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKKwkvKgorCSAqIE5v IGFjdHVhbCBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgeWV0IHRvIGFkZCwgdGhvdWdoIG11c3QgaW5p dGlhbGl6ZQorCSAqIHRoZSBsaXN0IHRvIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRz IGFzIHRoZSBsaXN0IG9mCisJICogUGxhbm5lZFN0bXRzLgorCSAqLworCSpwYXJ0X3BydW5lX3Jl c3VsdF9saXN0ID0gTklMOworCWZvcmVhY2gobGMsIHBsaXN0KQorCXsKKwkJKnBhcnRfcHJ1bmVf cmVzdWx0X2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LCBOVUxMKTsKKwl9 CisKIAlyZXR1cm4gcGxhbjsKIH0KIApAQCAtMTEyNiw2ICsxMTY3LDE3IEBAIGNhY2hlZF9wbGFu X2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBwbGFuIG9y IGEgY3VzdG9tIHBsYW4gZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVyIGRvZXMg bm90IGtub3cKICAqIHdoaWNoIGl0IHdpbGwgZ2V0LgogICoKKyAqIEZvciBldmVyeSBQbGFubmVk U3RtdCBmb3VuZCBpbiB0aGUgcmV0dXJuZWQgQ2FjaGVkUGxhbiwgYW4gZWxlbWVudCB0aGF0Cisg KiBpcyBlaXRoZXIgYSBQYXJ0aXRpb25QcnVuZVJlc3VsdCBvciBhIE5VTEwgaXMgYWRkZWQgdG8K KyAqICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0IGlmIG5lZWRlZC4gIFRoZSBmb3JtZXIgaWYgdGhl IFBsYW5uZWRTdG10IGlzIGZyb20KKyAqIHRoZSBleGlzdGluZyBDYWNoZWRQbGFuIHRoYXQgaXMg b3RoZXJ3aXNlIHZhbGlkIGFuZCBjb250YWlucyBhdCBsZWFzdCBvbmUKKyAqIFBhcnRpdGlvblBy dW5lSW5mbyB0aGF0IGhhcyAiaW5pdGlhbCIgcHJ1bmluZyBzdGVwcy4gIFRob3NlIHN0ZXBzIGFy ZQorICogcGVyZm9ybWVkIGJ5IGNhbGxpbmcgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgdG8g ZGV0ZXJtaW5lIG9ubHkgdGhvc2UKKyAqIGxlYWYgcGFydGl0aW9ucyB0aGF0IG5lZWQgdG8gYmUg bG9ja2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgYnkgcHJ1bmluZworICogYXdheSBzdWJw bGFucyB0aGF0IGRvbid0IG1hdGNoIHRoZSBwcnVuaW5nIGNvbmRpdGlvbnMuICBUaGUKKyAqIFBh cnRpdGlvblBydW5lUmVzdWx0IGNvbnRhaW5zIGEgbGlzdCBvZiBiaXRtYXBzZXRzIG9mIHRoZSBp bmRleGVzIG9mCisgKiBtYXRjaGluZyBzdWJwbGFucywgb25lIGZvciBlYWNoIFBhcnRpdGlvblBy dW5lSW5mby4KKyAqCiAgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZl IHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KICAqIGV4ZWN1dGlvbi4KICAqCkBAIC0xMTM5LDEx ICsxMTkxLDEzIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNs dWRlX3BsYW5uZXIpCiAgKi8KIENhY2hlZFBsYW4gKgogR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAotCQkJICBSZXNv dXJjZU93bmVyIG93bmVyLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKKwkJCSAgUmVzb3Vy Y2VPd25lciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkgIExpc3QgKipw YXJ0X3BydW5lX3Jlc3VsdF9saXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBOVUxMOwogCUxp c3QJICAgKnFsaXN0OwogCWJvb2wJCWN1c3RvbXBsYW47CisJTGlzdAkgICAqbXlfcGFydF9wcnVu ZV9yZXN1bHRfbGlzdDsKIAogCS8qIEFzc2VydCBjYWxsZXIgaXMgZG9pbmcgdGhpbmdzIGluIGEg c2FuZSBvcmRlciAqLwogCUFzc2VydChwbGFuc291cmNlLT5tYWdpYyA9PSBDQUNIRURQTEFOU09V UkNFX01BR0lDKTsKQEAgLTExNjAsNyArMTIxNCw4IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAogCWlmICgh Y3VzdG9tcGxhbikKIAl7Ci0JCWlmIChDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSkpCisJCWlm IChDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSwgYm91bmRQYXJhbXMsCisJCQkJCQkJJm15X3Bh cnRfcHJ1bmVfcmVzdWx0X2xpc3QpKQogCQl7CiAJCQkvKiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFu LCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCiAJCQlwbGFuID0gcGxhbnNvdXJj ZS0+Z3BsYW47CkBAIC0xMTY5LDcgKzEyMjQsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVsc2UKIAkJ ewogCQkJLyogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0gQnVpbGRDYWNo ZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlwbGFuID0gQnVp bGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwKKwkJCQkJCQkJ ICAgJm15X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogCQkJLyogSnVzdCBtYWtlIHJlYWwgc3Vy ZSBwbGFuc291cmNlLT5ncGxhbiBpcyBjbGVhciAqLwogCQkJUmVsZWFzZUdlbmVyaWNQbGFuKHBs YW5zb3VyY2UpOwogCQkJLyogTGluayB0aGUgbmV3IGdlbmVyaWMgcGxhbiBpbnRvIHRoZSBwbGFu c291cmNlICovCkBAIC0xMjE0LDcgKzEyNzAsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJaWYgKGN1c3Rv bXBsYW4pCiAJewogCQkvKiBCdWlsZCBhIGN1c3RvbSBwbGFuICovCi0JCXBsYW4gPSBCdWlsZENh Y2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudik7CisJCXBs YW4gPSBCdWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVy eUVudiwKKwkJCQkJCQkgICAmbXlfcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiAJCS8qIEFjY3Vt dWxhdGUgdG90YWwgY29zdHMgb2YgY3VzdG9tIHBsYW5zICovCiAJCXBsYW5zb3VyY2UtPnRvdGFs X2N1c3RvbV9jb3N0ICs9IGNhY2hlZF9wbGFuX2Nvc3QocGxhbiwgdHJ1ZSk7CiAKQEAgLTEyNDYs NiArMTMwMyw5IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwg UGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJcGxhbi0+aXNfc2F2ZWQgPSB0cnVlOwogCX0K IAorCWlmIChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQorCQkqcGFydF9wcnVuZV9yZXN1bHRfbGlz dCA9IG15X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CisKIAlyZXR1cm4gcGxhbjsKIH0KIApAQCAt MTczNywxNyArMTc5NywyOSBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykK IAogLyoKICAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3Ig ZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWly ZSBpcyBmYWxzZS4KKyAqCisgKiBTZWUgR2V0Q2FjaGVkUGxhbigpJ3MgY29tbWVudCBmb3IgYSBk ZXNjcmlwdGlvbiBvZiBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LgorICoKKyAqIE9uIHJldHVybiwg KmxvY2tlZFJlbGlkc19wZXJfc3RtdCB3aWxsIGNvbnRhaW4gYSBiaXRtYXBzZXQgZm9yIGV2ZXJ5 CisgKiBQbGFubmVkU3RtdCBpbiBzdG10X2xpc3QsIGNvbnRhaW5pbmcgdGhlIFJUIGluZGV4ZXMg b2YgcmVsYXRpb24gZW50cmllcworICogaW4gaXRzIHJhbmdlIHRhYmxlIHRoYXQgd2VyZSBhY3R1 YWxseSBsb2NrZWQsIG9yIE5VTEwgaWYgdGhlIFBsYW5uZWRTdG10CisgKiBjb250YWlucyBhIHV0 aWxpdHkgc3RhdGVtZW50LgogICovCiBzdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo TGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCitBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0 ICpzdG10X2xpc3QsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJCSBMaXN0ICoqcGFy dF9wcnVuZV9yZXN1bHRfbGlzdCwKKwkJCQkJIExpc3QgKipsb2NrZWRSZWxpZHNfcGVyX3N0bXQp CiB7CiAJTGlzdENlbGwgICAqbGMxOwogCisJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSAqbG9j a2VkUmVsaWRzX3Blcl9zdG10ID0gTklMOwogCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCiAJewog CQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMx KTsKLQkJTGlzdENlbGwgICAqbGMyOworCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVu ZV9yZXN1bHQgPSBOVUxMOworCQlCaXRtYXBzZXQgICphbGxMb2NrUmVsaWRzOworCQlCaXRtYXBz ZXQgICpsb2NrZWRSZWxpZHMgPSBOVUxMOworCQlpbnQJCQlydGk7CiAKIAkJaWYgKHBsYW5uZWRz dG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKIAkJewpAQCAtMTc2MSwxMyArMTgzMywz NSBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkK IAkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51 dGlsaXR5U3RtdCk7CiAKIAkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVy eSwgYWNxdWlyZSk7CisJCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIHRydWUpOworCQkJKnBh cnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LCBO VUxMKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHBsYW5uZWRzdG10LT5y dGFibGUpCisJCS8qCisJCSAqIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiByZWxhdGlvbnMgdGhhdCB3 b3VsZCBuZWVkIHRvIGJlIGxvY2tlZAorCQkgKiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBwbGFuLgor CQkgKi8KKwkJaWYgKHBsYW5uZWRzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nKQogCQl7Ci0J CQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKKwkJ CS8qCisJCQkgKiBPYnRhaW4gdGhlIHNldCBvZiBwYXJ0aXRpb25zIHRvIGJlIGxvY2tlZCBmcm9t IHRoZQorCQkJICogUGFydGl0aW9uUHJ1bmVJbmZvcyBieSBjb25zaWRlcmluZyB0aGUgcmVzdWx0 IG9mIHBlcmZvcm1pbmcKKwkJCSAqIGluaXRpYWwgcGFydGl0aW9uIHBydW5pbmcuCisJCQkgKi8K KwkJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9CisJCQkJRXhlY3V0 b3JEb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10LCBib3VuZFBhcmFtcyk7CisKKwkJCWFsbExv Y2tSZWxpZHMgPSBibXNfdW5pb24ocGxhbm5lZHN0bXQtPm1pbkxvY2tSZWxpZHMsCisJCQkJCQkJ CQkgIHBhcnRfcHJ1bmVfcmVzdWx0LT5zY2FuX2xlYWZwYXJ0X3J0aXMpOworCQl9CisJCWVsc2UK KwkJCWFsbExvY2tSZWxpZHMgPSBwbGFubmVkc3RtdC0+bWluTG9ja1JlbGlkczsKKworCQlydGkg PSAtMTsKKwkJd2hpbGUgKChydGkgPSBibXNfbmV4dF9tZW1iZXIoYWxsTG9ja1JlbGlkcywgcnRp KSkgPiAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChydGksIHBsYW5u ZWRzdG10LT5ydGFibGUpOwogCiAJCQlpZiAocnRlLT5ydGVraW5kICE9IFJURV9SRUxBVElPTikK IAkJCQljb250aW51ZTsKQEAgLTE3NzgsMTAgKzE4NzIsNTggQEAgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQkgKiBmYWlsIGlmIGl0J3MgYmVl biBkcm9wcGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5CiAJCQkgKiBhY3F1 aXJlIGEgbm9uLWNvbmZsaWN0aW5nIGxvY2suCiAJCQkgKi8KLQkJCWlmIChhY3F1aXJlKQotCQkJ CUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJCWVsc2UK LQkJCQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJ CUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJCWxvY2tl ZFJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGxvY2tlZFJlbGlkcywgcnRpKTsKKwkJfQorCisJCSpw YXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwK KwkJCQkJCQkJCQkgIHBhcnRfcHJ1bmVfcmVzdWx0KTsKKwkJKmxvY2tlZFJlbGlkc19wZXJfc3Rt dCA9IGxhcHBlbmQoKmxvY2tlZFJlbGlkc19wZXJfc3RtdCwgbG9ja2VkUmVsaWRzKTsKKwl9Cit9 CisKKy8qCisgKiBSZWxlYXNlRXhlY3V0b3JMb2NrcworICogCQlSZWxlYXNlIGxvY2tzIHRoYXQg d291bGQndmUgYmVlbiBhY3F1aXJlZCBieSBhbiBlYXJsaWVyIGNhbGwgdG8KKyAqIAkJQWNxdWly ZUV4ZWN1dG9yTG9ja3MoKQorICovCitzdGF0aWMgdm9pZAorUmVsZWFzZUV4ZWN1dG9yTG9ja3Mo TGlzdCAqc3RtdF9saXN0LCBMaXN0ICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCit7CisJTGlzdENl bGwgICAqbGMxLAorCQkJICAgKmxjMjsKKworCWZvcmJvdGgobGMxLCBzdG10X2xpc3QsIGxjMiwg bG9ja2VkUmVsaWRzX3Blcl9zdG10KQorCXsKKwkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0g bGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7CisJCUJpdG1hcHNldCAgKmxvY2tlZFJlbGlk cyA9IGxmaXJzdChsYzIpOworCQlpbnQJCQlydGk7CisKKwkJaWYgKHBsYW5uZWRzdG10LT5jb21t YW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyoKKwkJCSAqIElnbm9yZSB1dGlsaXR5 IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0CisJCQkgKiBj b250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0J3Mgb2theSB0 byB1c2UKKwkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUgcXVlcnkgaGFz bid0IGJlZW4gdGhyb3VnaAorCQkJICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2UgcmV3cml0aW5n IGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQorCQkJICogcmVwcmVzZW50YXRpb24uCisJCQkgKi8K KwkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51 dGlsaXR5U3RtdCk7CisKKwkJCWlmIChxdWVyeSkKKwkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVy eSwgZmFsc2UpOworCQkJY29udGludWU7CisJCX0KKworCQlydGkgPSAtMTsKKwkJd2hpbGUgKChy dGkgPSBibXNfbmV4dF9tZW1iZXIobG9ja2VkUmVsaWRzLCBydGkpKSA+PSAwKQorCQl7CisJCQlS YW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChydGksIHBsYW5uZWRzdG10LT5ydGFibGUpOwor CisJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CisKKwkJCS8qIFNlZSB0 aGUgY29tbWVudCBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLiAqLworCQkJVW5sb2NrUmVsYXRp b25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCX0KIAl9CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCBkNTQ5ZjY2ZDRhLi4xYmJlNmI3MDRiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTMwMyw2ICszMDMsMjUgQEAgUG9ydGFsRGVmaW5l UXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9ERUZJTkVEOwog fQogCisvKgorICogUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMKKyAqCQlDb3B5IHRo ZSBnaXZlbiBsaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncwor ICoJCWNvbnRleHQKKyAqCisgKiBUaGlzIGFsbG93cyB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGF0 IHRoZSBsaXN0IGV4aXN0cyBhcyBsb25nIGFzIHRoZSBwb3J0YWwKKyAqIGRvZXMuCisgKi8KK3Zv aWQKK1BvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKFBvcnRhbCBwb3J0YWwsIExpc3Qg KnBhcnRfcHJ1bmVfcmVzdWx0cykKK3sKKwlNZW1vcnlDb250ZXh0CW9sZGN4dDsKKworCUFzc2Vy dEFyZyhQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCXBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRz ID0gY29weU9iamVjdChwYXJ0X3BydW5lX3Jlc3VsdHMpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOworfQorCiAvKgogICogUG9ydGFsUmVsZWFzZUNhY2hlZFBsYW4KICAqCQlSZWxl YXNlIGEgcG9ydGFsJ3MgcmVmZXJlbmNlIHRvIGl0cyBjYWNoZWQgcGxhbiwgaWYgYW55LgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvZXhwbGFpbi5oCmluZGV4IDY2Njk3N2ZiMWYuLmJiYzhjNDJkODggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9leHBsYWluLmgKQEAgLTg3LDcgKzg3LDkgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxp dHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWlu U3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkgIFBhcmFtTGlzdElu Zm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKLWV4dGVybiB2b2lkIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywK K2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJ CQkJCSAgIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKKwkJCQkJCSAg IEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlv biwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBiZjk2MmFmN2FmLi5iZDg3 NzY0MDJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC00NSw2ICs0NSw3 IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUg Km10c3RhdGUsCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBhbmQgc3Vi cGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlv biBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFydCBpbmRleCBieSBwYXJ0 aXRpb24gaW5kZXgsIG9yIC0xLgorICogcnRpX21hcAkJCQkJCVJhbmdlIHRhYmxlIGluZGV4IGJ5 IHBhcnRpdGlvbiBpbmRleCwgb3IgMC4KICAqIHByZXNlbnRfcGFydHMJCQkJQSBCaXRtYXBzZXQg b2YgdGhlIHBhcnRpdGlvbiBpbmRleGVzIHRoYXQgd2UKICAqCQkJCQkJCQloYXZlIHN1YnBsYW5z IG9yIHN1YnBhcnRzIGZvci4KICAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcwkJTGlzdCBvZiBQYXJ0 aXRpb25QcnVuZVN0ZXBzIHVzZWQgdG8KQEAgLTYxLDYgKzYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YQogCWludAkJCW5wYXJ0czsKIAlpbnQJCSAgICpzdWJw bGFuX21hcDsKIAlpbnQJCSAgICpzdWJwYXJ0X21hcDsKKwlJbmRleAkgICAqcnRpX21hcDsKIAlC aXRtYXBzZXQgICpwcmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRpYWxfcHJ1bmluZ19zdGVw czsKIAlMaXN0CSAgICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xMjYsNSArMTI4LDEwIEBAIGV4 dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0 YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4LAogCQkJ CQkJCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJu IEJpdG1hcHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUg KnBydW5lc3RhdGUsCi0JCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKKwkJCQkJCQkJ CQkgICBib29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqc2Nhbl9s ZWFmcGFydF9ydGlzKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQ cnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJUGFyYW1MaXN0SW5mbyBw YXJhbXMsCisJCQkJCQkJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCQlC aXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogI2VuZGlmCQkJCQkJCS8qIEVYRUNQQVJU SVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZTc5ZTJjMDAxZi4uNjBkNTY0 NDkwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zNSw2ICszNSw4IEBAIHR5cGVkZWYg c3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRl UXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQ REFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91 dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpw YXJ0X3BydW5lX3Jlc3VsdDsgLyogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkncworCQkJCQkJ CQkJCQkgICogb3V0cHV0IGZvciBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRl eHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJ CS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3Nu YXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2ICs1 OSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0 ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwK KwkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJ CQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hv dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmgKaW5kZXggZDY4YTZiOWQyOC4uNWM0YTI4MmJlMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJs ZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8qCiAgKiBwcm90 b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLworZXh0ZXJuIFBhcnRpdGlv blBydW5lUmVzdWx0ICpFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LAorCQkJCQkJCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMpOwogZXh0ZXJuIHZv aWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRl cm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAppbmRleCAyNWUwYmI5NzZlLi5kM2FlMGZhNTJkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaApAQCAtOTg2LDYgKzk4NiwzNCBAQCB0eXBlZGVmIHN0cnVjdCBEb21haW5Db25z dHJhaW50U3RhdGUKICAqLwogdHlwZWRlZiBUdXBsZVRhYmxlU2xvdCAqKCpFeGVjUHJvY05vZGVN dGQpIChzdHJ1Y3QgUGxhblN0YXRlICpwc3RhdGUpOwogCisvKi0tLS0tLS0tLS0tLS0tLS0KKyAq IFBhcnRpdGlvblBydW5lUmVzdWx0CisgKgorICogVGhlIHJlc3VsdCBvZiBwZXJmb3JtaW5nIEV4 ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIGludm9jYXRpb24gb24gYSBnaXZlbgorICogUGxhbm5l ZFN0bXQuCisgKgorICogQ29udGFpbnMgYSBsaXN0IG9mIEJpdG1hcHNldCBvZiB0aGUgaW5kZXhl cyBvZiB0aGUgc3VicGxhbnMgcmVtYWluaW5nIGFmdGVyCisgKiBwZXJmb3JtaW5nIGluaXRpYWwg cHJ1bmluZyBieSBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucygpIGZvciBldmVyeQor ICogUGFydGl0aW9uUHJ1bmVJbmZvcyBmb3VuZCBpbiBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZv cy4gIFJUIGluZGV4ZXMgb2YgdGhlCisgKiBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9z ZSBzdWJwbGFucyBhY3Jvc3MgYWxsIFBhcnRpdGlvblBydW5lSW5mb3MKKyAqIGFyZSBhZGRlZCBp bnRvIHNjYW5fbGVhZnBhcnRfcnRpcy4KKyAqCisgKiBUaGlzIGlzIHVzZWQgYnkgR2V0Q2FjaGVk UGxhbigpIHRvIGluZm9ybSBpdHMgY2FsbGVycyBvZiB0aGUgcHJ1bmluZworICogZGVjaXNpb25z IG1hZGUgd2hlbiBwZXJmb3JtaW5nIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgb24gYSBnaXZlbiBj YWNoZWQKKyAqIFBsYW5uZWRTdG10LCB3aGljaCB0aGUgY2FsbGVycyB0aGVuIHBhc3Mgb250byB0 aGUgZXhlY3V0b3IuICBUaGUgZXhlY3V0b3IKKyAqIHJlZmVycyB0byB0aGlzIG5vZGUgd2hlbiBt YWRlIGF2YWlsYWJsZSB3aGVuIGluaXRpYWxpemluZyB0aGUgcGxhbiBub2RlcyB0bworICogd2hp Y2ggdGhvc2UgUGFydGl0aW9uUHJ1bmVJbmZvcyBhcHBseSBzbyB0aGF0IHRoZSBzYW1lIHNldCBv ZiBxdWFsaWZ5aW5nCisgKiBzdWJwbGFucyBhcmUgaW5pdGlhbGl6ZWQsIHJhdGhlciB0aGFuIGRl cml2aW5nIHRoYXQgc2V0IGFnYWluIGJ5IHJlZG9pbmcKKyAqIGluaXRpYWwgcHJ1bmluZy4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQKK3sKKwlOb2RlVGFnCQl0eXBl OworCisJTGlzdAkJICAgKnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0OworCUJpdG1hcHNldAkgICAq c2Nhbl9sZWFmcGFydF9ydGlzOworfSBQYXJ0aXRpb25QcnVuZVJlc3VsdDsKKwogLyogLS0tLS0t LS0tLS0tLS0tLQogICoJCVBsYW5TdGF0ZSBub2RlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggYjNiNDA3 NTc5Yi4uODRkNjdkNWRjZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC05Nyw2ICs5Nyw5IEBAIHR5cGVkZWYg ZW51bSBOb2RlVGFnCiAJVF9QYXJ0aXRpb25QcnVuZVN0ZXBDb21iaW5lLAogCVRfUGxhbkludmFs SXRlbSwKIAorCS8qIFRBR1MgRk9SIEVYRUNVVE9SIFBSRVAgTk9ERVMgKGV4ZWNub2Rlcy5oKSAq LworCVRfUGFydGl0aW9uUHJ1bmVSZXN1bHQsCisKIAkvKgogCSAqIFRBR1MgRk9SIFBMQU4gU1RB VEUgTk9ERVMgKGV4ZWNub2Rlcy5oKQogCSAqCkBAIC02NzQsNiArNjc3LDcgQEAgZXh0ZXJuIHN0 cnVjdCBCaXRtYXBzZXQgKnJlYWRCaXRtYXBzZXQodm9pZCk7CiBleHRlcm4gdWludHB0cl90IHJl YWREYXR1bShib29sIHR5cGJ5dmFsKTsKIGV4dGVybiBib29sICpyZWFkQm9vbENvbHMoaW50IG51 bUNvbHMpOwogZXh0ZXJuIGludCAqcmVhZEludENvbHMoaW50IG51bUNvbHMpOworZXh0ZXJuIElu ZGV4ICpyZWFkSW5kZXhDb2xzKGludCBudW1Db2xzKTsKIGV4dGVybiBPaWQgKnJlYWRPaWRDb2xz KGludCBudW1Db2xzKTsKIGV4dGVybiBpbnQxNiAqcmVhZEF0dHJOdW1iZXJDb2xzKGludCBudW1D b2xzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA2OTk1YjBlY2VjLi5jNDdjZTZjMDliIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTEwLDYgKzExMCwxNSBAQCB0eXBlZGVmIHN0cnVjdCBQ bGFubmVyR2xvYmFsCiAJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7CQkvKiBMaXN0IG9mIFBhcnRp dGlvblBydW5lSW5mbyBjb250YWluZWQgaW4KIAkJCQkJCQkJCSAqIHRoZSBwbGFuICovCiAKKwli b29sCQljb250YWluc0luaXRpYWxQcnVuaW5nOwkvKiBEbyBhbnkgb2YgdGhvc2UgUGFydGl0aW9u UHJ1bmVJbmZvcworCQkJCQkJCQkJCSAqIGhhdmUgaW5pdGlhbCAocHJlLWV4ZWMpIHBydW5pbmcK KwkJCQkJCQkJCQkgKiBzdGVwcyBpbiB0aGVtPyAqLworCisJQml0bWFwc2V0ICAqbWluTG9ja1Jl bGlkczsJLyogSW5kZXhlcyBvZiBhbGwgcmFuZ2UgdGFibGUgZW50cmllcyBtaW51cworCQkJCQkJ CQkgKiBpbmRleGVzIG9mIHJhbmdlIHRhYmxlIGVudHJpZXMgb2YgdGhlIGxlYWYKKwkJCQkJCQkJ ICogcGFydGl0aW9ucyBzY2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5zOworCQkJCQkJCQkgKiBz ZWUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSAqLworCiAJTGlzdAkgICAqcmVsYXRpb25PaWRzOwkv KiBPSURzIG9mIHJlbGF0aW9ucyB0aGUgcGxhbiBkZXBlbmRzIG9uICovCiAKIAlMaXN0CSAgICpp bnZhbEl0ZW1zOwkJLyogb3RoZXIgZGVwZW5kZW5jaWVzLCBhcyBQbGFuSW52YWxJdGVtcyAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wbGFubm9kZXMuaAppbmRleCAyOTdjYWNmYjViLi5mZmI1MmUyYWMyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaApAQCAtNjcsOCArNjcsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQK IAlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZUluZm8g Y29udGFpbmVkIGluCiAJCQkJCQkJCSAqIHRoZSBwbGFuICovCiAKKwlib29sCQljb250YWluc0lu aXRpYWxQcnVuaW5nOwkvKiBEbyBhbnkgb2YgdGhvc2UgUGFydGl0aW9uUHJ1bmVJbmZvcworCQkJ CQkJCQkJCSAqIGhhdmUgaW5pdGlhbCAocHJlLWV4ZWMpIHBydW5pbmcKKwkJCQkJCQkJCQkgKiBz dGVwcyBpbiB0aGVtPyAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VU YmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqbWluTG9ja1JlbGlkczsJLyogSW5kZXhl cyBvZiBhbGwgcmFuZ2UgdGFibGUgZW50cmllcyBtaW51cworCQkJCQkJCQkgKiBpbmRleGVzIG9m IHJhbmdlIHRhYmxlIGVudHJpZXMgb2YgdGhlIGxlYWYKKwkJCQkJCQkJICogcGFydGl0aW9ucyBz Y2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5zOworCQkJCQkJCQkgKiBzZWUgQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoKSAqLworCiAJLyogcnRhYmxlIGluZGV4ZXMgb2YgdGFyZ2V0IHJlbGF0aW9ucyBm b3IgSU5TRVJUL1VQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnM7CS8q IGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIApAQCAtMTE5Niw2ICsxMjA1 LDEzIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dNYXJrCiAgKiBwcnVuZV9pbmZvcwkJCUxpc3Qg b2YgTGlzdHMgY29udGFpbmluZyBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcywKICAqCQkJ CQkJb25lIHN1Ymxpc3QgcGVyIHJ1bi10aW1lLXBydW5hYmxlIHBhcnRpdGlvbiBoaWVyYXJjaHkK ICAqCQkJCQkJYXBwZWFyaW5nIGluIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3Mgc3VicGxhbnMuCisg KgorICogbmVlZHNfaW5pdF9wcnVuaW5nCURvZXMgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBy dW5lSW5mb3MgaW4KKyAqCQkJCQkJcHJ1bmVfaW5mb3MgaGF2ZSBpdHMgaW5pdGlhbF9wcnVuaW5n X3N0ZXBzIHNldD8KKyAqCisgKiBuZWVkc19leGVjX3BydW5pbmcJRG9lcyBhbnkgb2YgdGhlIFBh cnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBpbgorICoJCQkJCQlwcnVuZV9pbmZvcyBoYXZlIGl0cyBl eGVjX3BydW5pbmdfc3RlcHMgc2V0PworICoKICAqIG90aGVyX3N1YnBsYW5zCQlJbmRleGVzIG9m IGFueSBzdWJwbGFucyB0aGF0IGFyZSBub3QgYWNjb3VudGVkIGZvcgogICoJCQkJCQlieSBhbnkg b2YgdGhlIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzIGluCiAgKgkJCQkJCSJwcnVuZV9p bmZvcyIuICBUaGVzZSBzdWJwbGFucyBtdXN0IG5vdCBiZSBwcnVuZWQuCkBAIC0xMjA0LDYgKzEy MjAsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUluZm8KIHsKIAlOb2RlVGFnCQl0 eXBlOwogCUxpc3QJICAgKnBydW5lX2luZm9zOworCWJvb2wJCW5lZWRzX2luaXRfcHJ1bmluZzsK Kwlib29sCQluZWVkc19leGVjX3BydW5pbmc7CiAJQml0bWFwc2V0ICAqb3RoZXJfc3VicGxhbnM7 CiB9IFBhcnRpdGlvblBydW5lSW5mbzsKIApAQCAtMTIzNCw2ICsxMjUyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8KIAlpbnQJCSAgICpzdWJwbGFuX21hcDsJLyog c3VicGxhbiBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xICovCiAJaW50CQkgICAqc3Vi cGFydF9tYXA7CS8qIHN1YnBhcnQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAtMSAqLwog CU9pZAkJICAgKnJlbGlkX21hcDsJCS8qIHJlbGF0aW9uIE9JRCBieSBwYXJ0aXRpb24gaW5kZXgs IG9yIDAgKi8KKwlJbmRleAkgICAqcnRpX21hcDsJCS8qIFJhbmdlIHRhYmxlIGluZGV4IGJ5IHBh cnRpdGlvbiBpbmRleCwgMC4gKi8KIAogCS8qCiAJICogaW5pdGlhbF9wcnVuaW5nX3N0ZXBzIHNo b3dzIGhvdyB0byBwcnVuZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCAoaS5lLiwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxh bmNhY2hlLmgKaW5kZXggMDQ5OTYzNWY1OS4uMWM1YmI1ZWNlMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hl LmgKQEAgLTIyMCw3ICsyMjAsOCBAQCBleHRlcm4gTGlzdCAqQ2FjaGVkUGxhbkdldFRhcmdldExp c3QoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIGV4dGVybiBDYWNoZWRQbGFuICpHZXRD YWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKLQkJCQkJ CQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKwkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwog ZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VP d25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0 eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IGFl ZGRiZGFmZTUuLjlmNzcyN2E4MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRh bC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzgsNiArMTM4LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21t YW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10 czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8q IENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLworCUxpc3QJICAgKnBhcnRfcHJ1 bmVfcmVzdWx0czsJLyogbGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgKi8KIAogCVBhcmFt TGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KQEAg LTI0Miw2ICsyNDMsOCBAQCBleHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9y dGFsLAogCQkJCQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3Rt dHMsCiAJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbik7CitleHRlcm4gdm9pZCBQb3J0YWxTdG9y ZVBhcnRpdGlvblBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFsLAorCQkJCQkJCQkJCQkgTGlzdCAq cGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFBy aW1hcnlTdG10KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0 b3JlKFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxs KHZvaWQpOwotLSAKMi4zNS4zCgo= --00000000000053ff9705dff9d5c4--