From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#11617: Don't use 'register'; these days it's not needed. Date: Sat, 02 Jun 2012 23:06:11 -0700 Organization: UCLA Computer Science Department Message-ID: <4FCAFED3.4080008@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010202060104020205090600" X-Trace: dough.gmane.org 1338703736 3530 80.91.229.3 (3 Jun 2012 06:08:56 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 3 Jun 2012 06:08:56 +0000 (UTC) To: 11617@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jun 03 08:08:51 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Sb3zc-0007HM-OD for geb-bug-gnu-emacs@m.gmane.org; Sun, 03 Jun 2012 08:08:49 +0200 Original-Received: from localhost ([::1]:37028 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3zc-0002ja-6e for geb-bug-gnu-emacs@m.gmane.org; Sun, 03 Jun 2012 02:08:48 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:35754) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3zI-0002jR-CZ for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:08:43 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sb3z2-0001pY-O4 for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:08:27 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:45645) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3z2-0001pU-Ha for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:08:12 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1Sb40n-0002v1-SP for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:10:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Jun 2012 06:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 11617 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.133870379811203 (code B ref -1); Sun, 03 Jun 2012 06:10:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Jun 2012 06:09:58 +0000 Original-Received: from localhost ([127.0.0.1]:55191 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sb40Y-0002uS-2g for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:09:58 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:54727) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sb3zz-0002th-Uq for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:09:44 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sb3xt-0001ih-Oq for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:07:16 -0400 Original-Received: from lists.gnu.org ([208.118.235.17]:46603) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3xt-0001iP-J0 for submit@debbugs.gnu.org; Sun, 03 Jun 2012 02:07:01 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:35580) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3xd-0002iF-Is for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:07:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sb3xM-0001W3-AN for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:06:44 -0400 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:47401) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sb3xL-0001JW-AU for bug-gnu-emacs@gnu.org; Sun, 03 Jun 2012 02:06:28 -0400 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id AF7BBA60001 for ; Sat, 2 Jun 2012 23:06:16 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id H+vxH8qOgn4Z for ; Sat, 2 Jun 2012 23:06:09 -0700 (PDT) Original-Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id EEA8C39E8006 for ; Sat, 2 Jun 2012 23:06:08 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:60653 Archived-At: This is a multi-part message in MIME format. --------------010202060104020205090600 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Attached is a patch to remove 'register' from the mainline Emacs source code. This is broken out of Bug#11604 and I will also follow up there. --------------010202060104020205090600 Content-Type: text/plain; charset=UTF-8; name="no-register.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="no-register.txt" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIw MTItMDYtMDIgMjE6MDE6MDcgKzAwMDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0wNi0wMyAw NTo1NToyMyArMDAwMApAQCAtMSwzICsxLDIyIEBACisyMDEyLTA2LTAzICBQYXVsIEVnZ2Vy dCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKworCURvbid0IHVzZSAncmVnaXN0ZXInOyB0aGVz ZSBkYXlzIGl0J3Mgbm90IG5lZWRlZC4KKwlXaXRoIHJlY2VudCBjb21waWxlcnMsICdyZWdp c3RlcicgZG9lc24ndCBzaWduaWZpY2FudGx5IGhlbHAKKwlwZXJmb3JtYW5jZSwgYW5kIHdp dGggb2xkZXIgY29tcGlsZXJzIHRoZXJlIGFyZSBzb21lIGJ1Z3MuCisJQ2hhbmdpbmcgdGhl IGRlZmF1bHQgc3R5bGUgdG8gb21pdCAncmVnaXN0ZXInIG1lYW5zIHRoYXQgd2UgY2FuCisJ YXNzdW1lIHRoYXQgdGhlIGNvZGUgbm9ybWFsbHkgd29uJ3QgdXNlICdyZWdpc3RlcicsIHNv IHRoZXJlJ3MKKwlubyBuZWVkIGZvciBjb21tZW50cyBsaWtlICJJZiB3ZSB1c2UgYHJlZ2lz dGVyJyBoZXJlLCBnY2MtNC4wLjIgb24KKwlhbWQ2NCB1c2luZyAtRFVTRV9MSVNQX1VOSU9O X1RZUEUgY29tcGxhaW5zIi4KKwkqIGFsbG9jLmMsIGJ1ZmZlci5jLCBieXRlY29kZS5jLCBj YWxsaW50LmMsIGNhbGxwcm9jLmMsIGNhc2VmaWRkbGUuYzoKKwkqIGNhc2V0YWIuYywgY2Ns LmMsIGNoYXJ0YWIuYywgY20uYywgY21kcy5jLCBjb2RpbmcuYywgZGF0YS5jLCBkaXJlZC5j OgorCSogZGlzcG5ldy5jLCBkb2MuYywgZG9wcm50LmMsIGVkaXRmbnMuYywgZXZhbC5jLCBm aWxlaW8uYywgZmlsZWxvY2suYzoKKwkqIGZsb2F0Zm5zLmMsIGZucy5jLCBmcmFtZS5jLCBn bWFsbG9jLmMsIGluZGVudC5jLCBpbnNkZWwuYzoKKwkqIGludGVydmFscy5jLCBrZXlib2Fy ZC5jLCBrZXltYXAuYywgbHJlYWQuYywgbWFya2VyLmMsIG1pbmlidWYuYzoKKwkqIHByaW50 LmMsIHByb2Nlc3MuYywgcmFsbG9jLmMsIHNjcm9sbC5jLCBzZWFyY2guYywgc3ludGF4LmMs IHN5c2RlcC5jOgorCSogdGVybS5jLCB0ZXJtY2FwLmMsIHRleHRwcm9wLmMsIHRwYXJhbS5j LCB1bmRvLmMsIHVuZXhjb2ZmLmM6CisJKiB2bS1saW1pdC5jLCB3aW5kb3cuYywgeGRpc3Au YywgeGZucy5jLCB4dGVybS5jOgorCU9taXQgJ3JlZ2lzdGVyJy4KKwogMjAxMi0wNi0wMiAg UGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKIAkqIHN5c2RlcC5jIChzeXN0 ZW1fcHJvY2Vzc19hdHRyaWJ1dGVzKTogSW1wcm92ZSBjb21tZW50LgoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0wNi0wMiAwODo1Mjoy NyArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAt NjA4LDcgKzYwOCw3IEBACiBzdGF0aWMgdm9pZCAqCiBvdmVycnVuX2NoZWNrX21hbGxvYyAo c2l6ZV90IHNpemUpCiB7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnZhbDsKKyAgdW5z aWduZWQgY2hhciAqdmFsOwogICBpbnQgb3ZlcmhlYWQgPSArK2NoZWNrX2RlcHRoID09IDEg PyBYTUFMTE9DX09WRVJSVU5fQ0hFQ0tfT1ZFUkhFQUQgOiAwOwogICBpZiAoU0laRV9NQVgg LSBvdmVyaGVhZCA8IHNpemUpCiAgICAgYWJvcnQgKCk7CkBAIC02MzMsNyArNjMzLDcgQEAK IHN0YXRpYyB2b2lkICoKIG92ZXJydW5fY2hlY2tfcmVhbGxvYyAodm9pZCAqYmxvY2ssIHNp emVfdCBzaXplKQogewotICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICp2YWwgPSAodW5zaWdu ZWQgY2hhciAqKSBibG9jazsKKyAgdW5zaWduZWQgY2hhciAqdmFsID0gKHVuc2lnbmVkIGNo YXIgKikgYmxvY2s7CiAgIGludCBvdmVyaGVhZCA9ICsrY2hlY2tfZGVwdGggPT0gMSA/IFhN QUxMT0NfT1ZFUlJVTl9DSEVDS19PVkVSSEVBRCA6IDA7CiAgIGlmIChTSVpFX01BWCAtIG92 ZXJoZWFkIDwgc2l6ZSkKICAgICBhYm9ydCAoKTsKQEAgLTg3Niw3ICs4NzYsNyBAQAogTGlz cF9PYmplY3QKIHNhZmVfYWxsb2NhX3Vud2luZCAoTGlzcF9PYmplY3QgYXJnKQogewotICBy ZWdpc3RlciBzdHJ1Y3QgTGlzcF9TYXZlX1ZhbHVlICpwID0gWFNBVkVfVkFMVUUgKGFyZyk7 CisgIHN0cnVjdCBMaXNwX1NhdmVfVmFsdWUgKnAgPSBYU0FWRV9WQUxVRSAoYXJnKTsKIAog ICBwLT5kb2djID0gMDsKICAgeGZyZWUgKHAtPnBvaW50ZXIpOwpAQCAtODk3LDcgKzg5Nyw3 IEBACiBzdGF0aWMgdm9pZCAqCiBsaXNwX21hbGxvYyAoc2l6ZV90IG5ieXRlcywgZW51bSBt ZW1fdHlwZSB0eXBlKQogewotICByZWdpc3RlciB2b2lkICp2YWw7CisgIHZvaWQgKnZhbDsK IAogICBNQUxMT0NfQkxPQ0tfSU5QVVQ7CiAKQEAgLTE1MjAsNyArMTUyMCw3IEBACiAgICAg ewogICAgICAgaWYgKGludGVydmFsX2Jsb2NrX2luZGV4ID09IElOVEVSVkFMX0JMT0NLX1NJ WkUpCiAJewotCSAgcmVnaXN0ZXIgc3RydWN0IGludGVydmFsX2Jsb2NrICpuZXdpOworCSAg c3RydWN0IGludGVydmFsX2Jsb2NrICpuZXdpOwogCiAJICBuZXdpID0gKHN0cnVjdCBpbnRl cnZhbF9ibG9jayAqKSBsaXNwX21hbGxvYyAoc2l6ZW9mICpuZXdpLAogCQkJCQkJCU1FTV9U WVBFX05PTl9MSVNQKTsKQEAgLTE1NDUsNyArMTU0NSw3IEBACiAvKiBNYXJrIExpc3Agb2Jq ZWN0cyBpbiBpbnRlcnZhbCBJLiAqLwogCiBzdGF0aWMgdm9pZAotbWFya19pbnRlcnZhbCAo cmVnaXN0ZXIgSU5URVJWQUwgaSwgTGlzcF9PYmplY3QgZHVtbXkpCittYXJrX2ludGVydmFs IChJTlRFUlZBTCBpLCBMaXNwX09iamVjdCBkdW1teSkKIHsKICAgZWFzc2VydCAoIWktPmdj bWFya2JpdCk7CQkvKiBJbnRlcnZhbHMgYXJlIG5ldmVyIHNoYXJlZC4gICovCiAgIGktPmdj bWFya2JpdCA9IDE7CkBAIC0xNTU3LDcgKzE1NTcsNyBAQAogICAgdXNlIHRoZSBtYWNybyBN QVJLX0lOVEVSVkFMX1RSRUUgaW5zdGVhZC4gICovCiAKIHN0YXRpYyB2b2lkCi1tYXJrX2lu dGVydmFsX3RyZWUgKHJlZ2lzdGVyIElOVEVSVkFMIHRyZWUpCittYXJrX2ludGVydmFsX3Ry ZWUgKElOVEVSVkFMIHRyZWUpCiB7CiAgIC8qIE5vIG5lZWQgdG8gdGVzdCBpZiB0aGlzIHRy ZWUgaGFzIGJlZW4gbWFya2VkIGFscmVhZHk7IHRoaXMKICAgICAgZnVuY3Rpb24gaXMgYWx3 YXlzIGNhbGxlZCB0aHJvdWdoIHRoZSBNQVJLX0lOVEVSVkFMX1RSRUUgbWFjcm8sCkBAIC0y MzQ3LDggKzIzNDcsOCBAQAogSU5JVCBtdXN0IGJlIGFuIGludGVnZXIgdGhhdCByZXByZXNl bnRzIGEgY2hhcmFjdGVyLiAgKi8pCiAgIChMaXNwX09iamVjdCBsZW5ndGgsIExpc3BfT2Jq ZWN0IGluaXQpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKLSAgcmVnaXN0ZXIg dW5zaWduZWQgY2hhciAqcCwgKmVuZDsKKyAgTGlzcF9PYmplY3QgdmFsOworICB1bnNpZ25l ZCBjaGFyICpwLCAqZW5kOwogICBpbnQgYzsKICAgRU1BQ1NfSU5UIG5ieXRlczsKIApAQCAt MjM5NCw3ICsyMzk0LDcgQEAKIExFTkdUSCBtdXN0IGJlIGEgbnVtYmVyLiAgSU5JVCBtYXR0 ZXJzIG9ubHkgaW4gd2hldGhlciBpdCBpcyB0IG9yIG5pbC4gICovKQogICAoTGlzcF9PYmpl Y3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQogewotICByZWdpc3RlciBMaXNwX09iamVj dCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKICAgc3RydWN0IExpc3BfQm9vbF9WZWN0b3Ig KnA7CiAgIHB0cmRpZmZfdCBsZW5ndGhfaW5fY2hhcnM7CiAgIEVNQUNTX0lOVCBsZW5ndGhf aW5fZWx0czsKQEAgLTI0MzgsNyArMjQzOCw3IEBACiBMaXNwX09iamVjdAogbWFrZV9zdHJp bmcgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLCBwdHJkaWZmX3QgbmJ5dGVzKQogewotICByZWdp c3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKICAgcHRyZGlmZl90 IG5jaGFycywgbXVsdGlieXRlX25ieXRlczsKIAogICBwYXJzZV9zdHJfYXNfbXVsdGlieXRl ICgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjb250ZW50cywgbmJ5dGVzLApAQCAtMjQ1OCw3 ICsyNDU4LDcgQEAKIExpc3BfT2JqZWN0CiBtYWtlX3VuaWJ5dGVfc3RyaW5nIChjb25zdCBj aGFyICpjb250ZW50cywgcHRyZGlmZl90IGxlbmd0aCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9P YmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHZhbCA9IG1ha2VfdW5pbml0X3N0 cmluZyAobGVuZ3RoKTsKICAgbWVtY3B5IChTREFUQSAodmFsKSwgY29udGVudHMsIGxlbmd0 aCk7CiAgIHJldHVybiB2YWw7CkBAIC0yNDcyLDcgKzI0NzIsNyBAQAogbWFrZV9tdWx0aWJ5 dGVfc3RyaW5nIChjb25zdCBjaGFyICpjb250ZW50cywKIAkJICAgICAgIHB0cmRpZmZfdCBu Y2hhcnMsIHB0cmRpZmZfdCBuYnl0ZXMpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZh bDsKKyAgTGlzcF9PYmplY3QgdmFsOwogICB2YWwgPSBtYWtlX3VuaW5pdF9tdWx0aWJ5dGVf c3RyaW5nIChuY2hhcnMsIG5ieXRlcyk7CiAgIG1lbWNweSAoU0RBVEEgKHZhbCksIGNvbnRl bnRzLCBuYnl0ZXMpOwogICByZXR1cm4gdmFsOwpAQCAtMjQ4Niw3ICsyNDg2LDcgQEAKIG1h a2Vfc3RyaW5nX2Zyb21fYnl0ZXMgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLAogCQkJcHRyZGlm Zl90IG5jaGFycywgcHRyZGlmZl90IG5ieXRlcykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHZhbCA9IG1ha2VfdW5pbml0X211bHRp Ynl0ZV9zdHJpbmcgKG5jaGFycywgbmJ5dGVzKTsKICAgbWVtY3B5IChTREFUQSAodmFsKSwg Y29udGVudHMsIG5ieXRlcyk7CiAgIGlmIChTQllURVMgKHZhbCkgPT0gU0NIQVJTICh2YWwp KQpAQCAtMjUwNCw3ICsyNTA0LDcgQEAKIG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAoY29uc3Qg Y2hhciAqY29udGVudHMsCiAJCSAgICAgICBwdHJkaWZmX3QgbmNoYXJzLCBwdHJkaWZmX3Qg bmJ5dGVzLCBpbnQgbXVsdGlieXRlKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7 CisgIExpc3BfT2JqZWN0IHZhbDsKIAogICBpZiAobmNoYXJzIDwgMCkKICAgICB7CkBAIC0y NjUxLDcgKzI2NTEsNyBAQAogTGlzcF9PYmplY3QKIG1ha2VfZmxvYXQgKGRvdWJsZSBmbG9h dF92YWx1ZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICBMaXNwX09iamVj dCB2YWw7CiAKICAgLyogZWFzc2VydCAoIWhhbmRsaW5nX3NpZ25hbCk7ICovCiAKQEAgLTI2 NjgsNyArMjY2OCw3IEBACiAgICAgewogICAgICAgaWYgKGZsb2F0X2Jsb2NrX2luZGV4ID09 IEZMT0FUX0JMT0NLX1NJWkUpCiAJewotCSAgcmVnaXN0ZXIgc3RydWN0IGZsb2F0X2Jsb2Nr ICpuZXc7CisJICBzdHJ1Y3QgZmxvYXRfYmxvY2sgKm5ldzsKIAogCSAgbmV3ID0gKHN0cnVj dCBmbG9hdF9ibG9jayAqKSBsaXNwX2FsaWduX21hbGxvYyAoc2l6ZW9mICpuZXcsCiAJCQkJ CQkJICBNRU1fVFlQRV9GTE9BVCk7CkBAIC0yNzcwLDcgKzI3NzAsNyBAQAogICAgICAgIGRv YzogLyogQ3JlYXRlIGEgbmV3IGNvbnMsIGdpdmUgaXQgQ0FSIGFuZCBDRFIgYXMgY29tcG9u ZW50cywgYW5kIHJldHVybiBpdC4gICovKQogICAoTGlzcF9PYmplY3QgY2FyLCBMaXNwX09i amVjdCBjZHIpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmpl Y3QgdmFsOwogCiAgIC8qIGVhc3NlcnQgKCFoYW5kbGluZ19zaWduYWwpOyAqLwogCkBAIC0y Nzg3LDcgKzI3ODcsNyBAQAogICAgIHsKICAgICAgIGlmIChjb25zX2Jsb2NrX2luZGV4ID09 IENPTlNfQkxPQ0tfU0laRSkKIAl7Ci0JICByZWdpc3RlciBzdHJ1Y3QgY29uc19ibG9jayAq bmV3OworCSAgc3RydWN0IGNvbnNfYmxvY2sgKm5ldzsKIAkgIG5ldyA9IChzdHJ1Y3QgY29u c19ibG9jayAqKSBsaXNwX2FsaWduX21hbGxvYyAoc2l6ZW9mICpuZXcsCiAJCQkJCQkJIE1F TV9UWVBFX0NPTlMpOwogCSAgbWVtc2V0IChuZXctPmdjbWFya2JpdHMsIDAsIHNpemVvZiBu ZXctPmdjbWFya2JpdHMpOwpAQCAtMjg2NCw3ICsyODY0LDcgQEAKIHVzYWdlOiAobGlzdCAm cmVzdCBPQkpFQ1RTKSAgKi8pCiAgIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICph cmdzKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZh bDsKICAgdmFsID0gUW5pbDsKIAogICB3aGlsZSAobmFyZ3MgPiAwKQpAQCAtMjg3OCwxMCAr Mjg3OCwxMCBAQAogCiBERUZVTiAoIm1ha2UtbGlzdCIsIEZtYWtlX2xpc3QsIFNtYWtlX2xp c3QsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBuZXdseSBjcmVhdGVkIGxp c3Qgb2YgbGVuZ3RoIExFTkdUSCwgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgSU5JVC4gICov KQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQor ICAoTGlzcF9PYmplY3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQogewotICByZWdpc3Rl ciBMaXNwX09iamVjdCB2YWw7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCBzaXplOworICBMaXNw X09iamVjdCB2YWw7CisgIEVNQUNTX0lOVCBzaXplOwogCiAgIENIRUNLX05BVE5VTSAobGVu Z3RoKTsKICAgc2l6ZSA9IFhGQVNUSU5UIChsZW5ndGgpOwpAQCAtMzA2MCwxMiArMzA2MCwx MiBAQAogREVGVU4gKCJtYWtlLXZlY3RvciIsIEZtYWtlX3ZlY3RvciwgU21ha2VfdmVjdG9y LCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIGEgbmV3bHkgY3JlYXRlZCB2ZWN0 b3Igb2YgbGVuZ3RoIExFTkdUSCwgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgSU5JVC4KIFNl ZSBhbHNvIHRoZSBmdW5jdGlvbiBgdmVjdG9yJy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgbGVuZ3RoLCBMaXNwX09iamVjdCBpbml0KQorICAoTGlzcF9PYmplY3QgbGVuZ3Ro LCBMaXNwX09iamVjdCBpbml0KQogewogICBMaXNwX09iamVjdCB2ZWN0b3I7Ci0gIHJlZ2lz dGVyIHB0cmRpZmZfdCBzaXplaTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGk7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX1ZlY3RvciAqcDsKKyAgcHRyZGlmZl90IHNpemVpOworICBwdHJk aWZmX3QgaTsKKyAgc3RydWN0IExpc3BfVmVjdG9yICpwOwogCiAgIENIRUNLX05BVE5VTSAo bGVuZ3RoKTsKIApAQCAtMzA4NSw5ICszMDg1LDkgQEAKIHVzYWdlOiAodmVjdG9yICZyZXN0 IE9CSkVDVFMpICAqLykKICAgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3Mp CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGxlbiwgdmFsOworICBMaXNwX09iamVjdCBs ZW4sIHZhbDsKICAgcHRyZGlmZl90IGk7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX1ZlY3Rv ciAqcDsKKyAgc3RydWN0IExpc3BfVmVjdG9yICpwOwogCiAgIFhTRVRGQVNUSU5UIChsZW4s IG5hcmdzKTsKICAgdmFsID0gRm1ha2VfdmVjdG9yIChsZW4sIFFuaWwpOwpAQCAtMzExNiw5 ICszMTE2LDkgQEAKIHVzYWdlOiAobWFrZS1ieXRlLWNvZGUgQVJHTElTVCBCWVRFLUNPREUg Q09OU1RBTlRTIERFUFRIICZvcHRpb25hbCBET0NTVFJJTkcgSU5URVJBQ1RJVkUtU1BFQyAm cmVzdCBFTEVNRU5UUykgICovKQogICAocHRyZGlmZl90IG5hcmdzLCBMaXNwX09iamVjdCAq YXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbGVuLCB2YWw7CisgIExpc3BfT2Jq ZWN0IGxlbiwgdmFsOwogICBwdHJkaWZmX3QgaTsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3Bf VmVjdG9yICpwOworICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnA7CiAKICAgWFNFVEZBU1RJTlQg KGxlbiwgbmFyZ3MpOwogICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykpCkBAIC0zMjA1LDgg KzMyMDUsOCBAQAogSXRzIHZhbHVlIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9uIGFyZSB2b2lk LCBhbmQgaXRzIHByb3BlcnR5IGxpc3QgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBu YW1lKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7Ci0gIHJlZ2lzdGVyIHN0cnVj dCBMaXNwX1N5bWJvbCAqcDsKKyAgTGlzcF9PYmplY3QgdmFsOworICBzdHJ1Y3QgTGlzcF9T eW1ib2wgKnA7CiAKICAgQ0hFQ0tfU1RSSU5HIChuYW1lKTsKIApAQCAtMzM1Niw4ICszMzU2 LDggQEAKIExpc3BfT2JqZWN0CiBtYWtlX3NhdmVfdmFsdWUgKHZvaWQgKnBvaW50ZXIsIHB0 cmRpZmZfdCBpbnRlZ2VyKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7Ci0gIHJl Z2lzdGVyIHN0cnVjdCBMaXNwX1NhdmVfVmFsdWUgKnA7CisgIExpc3BfT2JqZWN0IHZhbDsK KyAgc3RydWN0IExpc3BfU2F2ZV9WYWx1ZSAqcDsKIAogICB2YWwgPSBhbGxvY2F0ZV9taXNj ICgpOwogICBYTUlTQ1RZUEUgKHZhbCkgPSBMaXNwX01pc2NfU2F2ZV9WYWx1ZTsKQEAgLTMz NzIsOCArMzM3Miw4IEBACiAgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBuZXdseSBhbGxvY2F0 ZWQgbWFya2VyIHdoaWNoIGRvZXMgbm90IHBvaW50IGF0IGFueSBwbGFjZS4gICovKQogICAo dm9pZCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOwotICByZWdpc3RlciBzdHJ1 Y3QgTGlzcF9NYXJrZXIgKnA7CisgIExpc3BfT2JqZWN0IHZhbDsKKyAgc3RydWN0IExpc3Bf TWFya2VyICpwOwogCiAgIHZhbCA9IGFsbG9jYXRlX21pc2MgKCk7CiAgIFhNSVNDVFlQRSAo dmFsKSA9IExpc3BfTWlzY19NYXJrZXI7CkBAIC0zNDAzLDcgKzM0MDMsNyBAQAogICAgQW55 IG51bWJlciBvZiBhcmd1bWVudHMsIGV2ZW4gemVybyBhcmd1bWVudHMsIGFyZSBhbGxvd2Vk LiAgKi8KIAogTGlzcF9PYmplY3QKLW1ha2VfZXZlbnRfYXJyYXkgKHJlZ2lzdGVyIGludCBu YXJncywgTGlzcF9PYmplY3QgKmFyZ3MpCittYWtlX2V2ZW50X2FycmF5IChpbnQgbmFyZ3Ms IExpc3BfT2JqZWN0ICphcmdzKQogewogICBpbnQgaTsKIApAQCAtNDQxNiw3ICs0NDE2LDcg QEAKIHRlc3Rfc2V0am1wICh2b2lkKQogewogICBjaGFyIGJ1ZlsxMF07Ci0gIHJlZ2lzdGVy IGludCB4OworICBpbnQgeDsKICAgam1wX2J1ZiBqYnVmOwogICBpbnQgcmVzdWx0ID0gMDsK IApAQCAtNDkxMSw3ICs0OTExLDcgQEAKIExpc3BfT2JqZWN0CiBwdXJlX2NvbnMgKExpc3Bf T2JqZWN0IGNhciwgTGlzcF9PYmplY3QgY2RyKQogewotICByZWdpc3RlciBMaXNwX09iamVj dCBuZXc7CisgIExpc3BfT2JqZWN0IG5ldzsKICAgc3RydWN0IExpc3BfQ29ucyAqcDsKIAog ICBwID0gKHN0cnVjdCBMaXNwX0NvbnMgKikgcHVyZV9hbGxvYyAoc2l6ZW9mICpwLCBMaXNw X0NvbnMpOwpAQCAtNDkyNyw3ICs0OTI3LDcgQEAKIHN0YXRpYyBMaXNwX09iamVjdAogbWFr ZV9wdXJlX2Zsb2F0IChkb3VibGUgbnVtKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBu ZXc7CisgIExpc3BfT2JqZWN0IG5ldzsKICAgc3RydWN0IExpc3BfRmxvYXQgKnA7CiAKICAg cCA9IChzdHJ1Y3QgTGlzcF9GbG9hdCAqKSBwdXJlX2FsbG9jIChzaXplb2YgKnAsIExpc3Bf RmxvYXQpOwpAQCAtNDk1OSw3ICs0OTU5LDcgQEAKICAgICAgICBkb2M6IC8qIE1ha2UgYSBj b3B5IG9mIG9iamVjdCBPQkogaW4gcHVyZSBzdG9yYWdlLgogUmVjdXJzaXZlbHkgY29waWVz IGNvbnRlbnRzIG9mIHZlY3RvcnMgYW5kIGNvbnMgY2VsbHMuCiBEb2VzIG5vdCBjb3B5IHN5 bWJvbHMuICBDb3BpZXMgc3RyaW5ncyB3aXRob3V0IHRleHQgcHJvcGVydGllcy4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgb2JqKQorICAoTGlzcF9PYmplY3Qgb2JqKQogewog ICBpZiAoTklMUCAoVnB1cmlmeV9mbGFnKSkKICAgICByZXR1cm4gb2JqOwpAQCAtNDk4NCw4 ICs0OTg0LDggQEAKIAkJCSAgICBTVFJJTkdfTVVMVElCWVRFIChvYmopKTsKICAgZWxzZSBp ZiAoQ09NUElMRURQIChvYmopIHx8IFZFQ1RPUlAgKG9iaikpCiAgICAgewotICAgICAgcmVn aXN0ZXIgc3RydWN0IExpc3BfVmVjdG9yICp2ZWM7Ci0gICAgICByZWdpc3RlciBwdHJkaWZm X3QgaTsKKyAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqdmVjOworICAgICAgcHRyZGlmZl90 IGk7CiAgICAgICBwdHJkaWZmX3Qgc2l6ZTsKIAogICAgICAgc2l6ZSA9IEFTSVpFIChvYmop OwpAQCAtNTA2Miw3ICs1MDYyLDcgQEAKIFNlZSBJbmZvIG5vZGUgYChlbGlzcClHYXJiYWdl IENvbGxlY3Rpb24nLiAgKi8pCiAgICh2b2lkKQogewotICByZWdpc3RlciBzdHJ1Y3Qgc3Bl Y2JpbmRpbmcgKmJpbmQ7CisgIHN0cnVjdCBzcGVjYmluZGluZyAqYmluZDsKICAgY2hhciBz dGFja190b3BfdmFyaWFibGU7CiAgIHB0cmRpZmZfdCBpOwogICBpbnQgbWVzc2FnZV9wOwpA QCAtNTA4Myw3ICs1MDgzLDcgQEAKICAgLyogRG9uJ3Qga2VlcCB1bmRvIGluZm9ybWF0aW9u IGFyb3VuZCBmb3JldmVyLgogICAgICBEbyB0aGlzIGVhcmx5IG9uLCBzbyBpdCBpcyBubyBw cm9ibGVtIGlmIHRoZSB1c2VyIHF1aXRzLiAgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVj dCBidWZmZXIgKm5leHRiID0gYWxsX2J1ZmZlcnM7CisgICAgc3RydWN0IGJ1ZmZlciAqbmV4 dGIgPSBhbGxfYnVmZmVyczsKIAogICAgIHdoaWxlIChuZXh0YikKICAgICAgIHsKQEAgLTUx OTEsNyArNTE5MSw3IEBACiAgIG1hcmtfc3RhY2sgKCk7CiAjZWxzZQogICB7Ci0gICAgcmVn aXN0ZXIgc3RydWN0IGdjcHJvICp0YWlsOworICAgIHN0cnVjdCBnY3BybyAqdGFpbDsKICAg ICBmb3IgKHRhaWwgPSBnY3Byb2xpc3Q7IHRhaWw7IHRhaWwgPSB0YWlsLT5uZXh0KQogICAg ICAgZm9yIChpID0gMDsgaSA8IHRhaWwtPm52YXJzOyBpKyspCiAJbWFya19vYmplY3QgKHRh aWwtPnZhcltpXSk7CkBAIC01MjI5LDcgKzUyMjksNyBAQAogICAgICBmb3IgZWxlbWVudHMg dGhhdCB1cGRhdGUgbWFya2VycyB0aGF0IHdlcmUgbm90IG1hcmtlZCwKICAgICAgYW5kIGRl bGV0ZSB0aGVtLiAgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIgKm5leHRi ID0gYWxsX2J1ZmZlcnM7CisgICAgc3RydWN0IGJ1ZmZlciAqbmV4dGIgPSBhbGxfYnVmZmVy czsKIAogICAgIHdoaWxlIChuZXh0YikKICAgICAgIHsKQEAgLTU0OTQsNyArNTQ5NCw3IEBA CiB2b2lkCiBtYXJrX29iamVjdCAoTGlzcF9PYmplY3QgYXJnKQogewotICByZWdpc3RlciBM aXNwX09iamVjdCBvYmogPSBhcmc7CisgIExpc3BfT2JqZWN0IG9iaiA9IGFyZzsKICNpZmRl ZiBHQ19DSEVDS19NQVJLRURfT0JKRUNUUwogICB2b2lkICpwbzsKICAgc3RydWN0IG1lbV9u b2RlICptOwpAQCAtNTU1Miw3ICs1NTUyLDcgQEAKICAgICB7CiAgICAgY2FzZSBMaXNwX1N0 cmluZzoKICAgICAgIHsKLQlyZWdpc3RlciBzdHJ1Y3QgTGlzcF9TdHJpbmcgKnB0ciA9IFhT VFJJTkcgKG9iaik7CisJc3RydWN0IExpc3BfU3RyaW5nICpwdHIgPSBYU1RSSU5HIChvYmop OwogCWlmIChTVFJJTkdfTUFSS0VEX1AgKHB0cikpCiAJICBicmVhazsKIAlDSEVDS19BTExP Q0FURURfQU5EX0xJVkUgKGxpdmVfc3RyaW5nX3ApOwpAQCAtNTU5OCw3ICs1NTk4LDcgQEAK IAkgICBzYXZlIHRoZSBDT01QSUxFRF9DT05TVEFOVFMgZWxlbWVudCBmb3IgbGFzdCBhbmQg YXZvaWQKIAkgICByZWN1cnNpb24gdGhlcmUuICAqLwogCXsKLQkgIHJlZ2lzdGVyIHN0cnVj dCBMaXNwX1ZlY3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKKwkgIHN0cnVjdCBMaXNwX1Zl Y3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKIAkgIGludCBzaXplID0gcHRyLT5oZWFkZXIu c2l6ZSAmIFBTRVVET1ZFQ1RPUl9TSVpFX01BU0s7CiAJICBpbnQgaTsKIApAQCAtNTYxNCwx MyArNTYxNCwxMyBAQAogCX0KICAgICAgIGVsc2UgaWYgKEZSQU1FUCAob2JqKSkKIAl7Ci0J ICByZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKnB0ciA9IFhGUkFNRSAob2JqKTsKKwkgIHN0cnVj dCBmcmFtZSAqcHRyID0gWEZSQU1FIChvYmopOwogCSAgbWFya192ZWN0b3JsaWtlIChYVkVD VE9SIChvYmopKTsKIAkgIG1hcmtfZmFjZV9jYWNoZSAocHRyLT5mYWNlX2NhY2hlKTsKIAl9 CiAgICAgICBlbHNlIGlmIChXSU5ET1dQIChvYmopKQogCXsKLQkgIHJlZ2lzdGVyIHN0cnVj dCBMaXNwX1ZlY3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKKwkgIHN0cnVjdCBMaXNwX1Zl Y3RvciAqcHRyID0gWFZFQ1RPUiAob2JqKTsKIAkgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lO RE9XIChvYmopOwogCSAgbWFya192ZWN0b3JsaWtlIChwdHIpOwogCSAgLyogTWFyayBnbHlw aHMgZm9yIGxlYWYgd2luZG93cy4gIE1hcmtpbmcgd2luZG93IG1hdHJpY2VzIGlzCkBAIC01 NjUzLDcgKzU2NTMsNyBAQAogCiAgICAgY2FzZSBMaXNwX1N5bWJvbDoKICAgICAgIHsKLQly ZWdpc3RlciBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnB0ciA9IFhTWU1CT0wgKG9iaik7CisJc3Ry dWN0IExpc3BfU3ltYm9sICpwdHIgPSBYU1lNQk9MIChvYmopOwogCXN0cnVjdCBMaXNwX1N5 bWJvbCAqcHRyeDsKIAogCWlmIChwdHItPmdjbWFya2JpdCkKQEAgLTU3MjQsNyArNTcyNCw3 IEBACiAJY2FzZSBMaXNwX01pc2NfU2F2ZV9WYWx1ZToKICNpZiBHQ19NQVJLX1NUQUNLCiAJ ICB7Ci0JICAgIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX1NhdmVfVmFsdWUgKnB0ciA9IFhTQVZF X1ZBTFVFIChvYmopOworCSAgICBzdHJ1Y3QgTGlzcF9TYXZlX1ZhbHVlICpwdHIgPSBYU0FW RV9WQUxVRSAob2JqKTsKIAkgICAgLyogSWYgRE9HQyBpcyBzZXQsIFBPSU5URVIgaXMgdGhl IGFkZHJlc3Mgb2YgYSBtZW1vcnkKIAkgICAgICAgYXJlYSBjb250YWluaW5nIElOVEVHRVIg cG90ZW50aWFsIExpc3BfT2JqZWN0cy4gICovCiAJICAgIGlmIChwdHItPmRvZ2MpCkBAIC01 NzU5LDcgKzU3NTksNyBAQAogCiAgICAgY2FzZSBMaXNwX0NvbnM6CiAgICAgICB7Ci0JcmVn aXN0ZXIgc3RydWN0IExpc3BfQ29ucyAqcHRyID0gWENPTlMgKG9iaik7CisJc3RydWN0IExp c3BfQ29ucyAqcHRyID0gWENPTlMgKG9iaik7CiAJaWYgKENPTlNfTUFSS0VEX1AgKHB0cikp CiAJICBicmVhazsKIAlDSEVDS19BTExPQ0FURURfQU5EX0xJVkUgKGxpdmVfY29uc19wKTsK QEAgLTU4MDEsOCArNTgwMSw4IEBACiBzdGF0aWMgdm9pZAogbWFya19idWZmZXIgKExpc3Bf T2JqZWN0IGJ1ZikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmZmVyID0gWEJV RkZFUiAoYnVmKTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKnB0ciwgdG1wOworICBzdHJ1 Y3QgYnVmZmVyICpidWZmZXIgPSBYQlVGRkVSIChidWYpOworICBMaXNwX09iamVjdCAqcHRy LCB0bXA7CiAgIExpc3BfT2JqZWN0IGJhc2VfYnVmZmVyOwogCiAgIGVhc3NlcnQgKCFWRUNU T1JfTUFSS0VEX1AgKGJ1ZmZlcikpOwpAQCAtNTkyOCwxNiArNTkyOCwxNiBAQAogCiAgIC8q IFB1dCBhbGwgdW5tYXJrZWQgY29uc2VzIG9uIGZyZWUgbGlzdCAqLwogICB7Ci0gICAgcmVn aXN0ZXIgc3RydWN0IGNvbnNfYmxvY2sgKmNibGs7CisgICAgc3RydWN0IGNvbnNfYmxvY2sg KmNibGs7CiAgICAgc3RydWN0IGNvbnNfYmxvY2sgKipjcHJldiA9ICZjb25zX2Jsb2NrOwot ICAgIHJlZ2lzdGVyIGludCBsaW0gPSBjb25zX2Jsb2NrX2luZGV4OworICAgIGludCBsaW0g PSBjb25zX2Jsb2NrX2luZGV4OwogICAgIEVNQUNTX0lOVCBudW1fZnJlZSA9IDAsIG51bV91 c2VkID0gMDsKIAogICAgIGNvbnNfZnJlZV9saXN0ID0gMDsKIAogICAgIGZvciAoY2JsayA9 IGNvbnNfYmxvY2s7IGNibGs7IGNibGsgPSAqY3ByZXYpCiAgICAgICB7Ci0JcmVnaXN0ZXIg aW50IGkgPSAwOworCWludCBpID0gMDsKIAlpbnQgdGhpc19mcmVlID0gMDsKIAlpbnQgaWxp bSA9IChsaW0gKyBCSVRTX1BFUl9JTlQgLSAxKSAvIEJJVFNfUEVSX0lOVDsKIApAQCAtNjAw NSwxNiArNjAwNSwxNiBAQAogCiAgIC8qIFB1dCBhbGwgdW5tYXJrZWQgZmxvYXRzIG9uIGZy ZWUgbGlzdCAqLwogICB7Ci0gICAgcmVnaXN0ZXIgc3RydWN0IGZsb2F0X2Jsb2NrICpmYmxr OworICAgIHN0cnVjdCBmbG9hdF9ibG9jayAqZmJsazsKICAgICBzdHJ1Y3QgZmxvYXRfYmxv Y2sgKipmcHJldiA9ICZmbG9hdF9ibG9jazsKLSAgICByZWdpc3RlciBpbnQgbGltID0gZmxv YXRfYmxvY2tfaW5kZXg7CisgICAgaW50IGxpbSA9IGZsb2F0X2Jsb2NrX2luZGV4OwogICAg IEVNQUNTX0lOVCBudW1fZnJlZSA9IDAsIG51bV91c2VkID0gMDsKIAogICAgIGZsb2F0X2Zy ZWVfbGlzdCA9IDA7CiAKICAgICBmb3IgKGZibGsgPSBmbG9hdF9ibG9jazsgZmJsazsgZmJs ayA9ICpmcHJldikKICAgICAgIHsKLQlyZWdpc3RlciBpbnQgaTsKKwlpbnQgaTsKIAlpbnQg dGhpc19mcmVlID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgbGltOyBpKyspCiAJICBpZiAoIUZM T0FUX01BUktFRF9QICgmZmJsay0+ZmxvYXRzW2ldKSkKQEAgLTYwNTEsMTYgKzYwNTEsMTYg QEAKIAogICAvKiBQdXQgYWxsIHVubWFya2VkIGludGVydmFscyBvbiBmcmVlIGxpc3QgKi8K ICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBpbnRlcnZhbF9ibG9jayAqaWJsazsKKyAgICBz dHJ1Y3QgaW50ZXJ2YWxfYmxvY2sgKmlibGs7CiAgICAgc3RydWN0IGludGVydmFsX2Jsb2Nr ICoqaXByZXYgPSAmaW50ZXJ2YWxfYmxvY2s7Ci0gICAgcmVnaXN0ZXIgaW50IGxpbSA9IGlu dGVydmFsX2Jsb2NrX2luZGV4OworICAgIGludCBsaW0gPSBpbnRlcnZhbF9ibG9ja19pbmRl eDsKICAgICBFTUFDU19JTlQgbnVtX2ZyZWUgPSAwLCBudW1fdXNlZCA9IDA7CiAKICAgICBp bnRlcnZhbF9mcmVlX2xpc3QgPSAwOwogCiAgICAgZm9yIChpYmxrID0gaW50ZXJ2YWxfYmxv Y2s7IGlibGs7IGlibGsgPSAqaXByZXYpCiAgICAgICB7Ci0JcmVnaXN0ZXIgaW50IGk7CisJ aW50IGk7CiAJaW50IHRoaXNfZnJlZSA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbGltOyBp KyspCkBAIC02MTAwLDkgKzYxMDAsOSBAQAogCiAgIC8qIFB1dCBhbGwgdW5tYXJrZWQgc3lt Ym9scyBvbiBmcmVlIGxpc3QgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBzeW1ib2xf YmxvY2sgKnNibGs7CisgICAgc3RydWN0IHN5bWJvbF9ibG9jayAqc2JsazsKICAgICBzdHJ1 Y3Qgc3ltYm9sX2Jsb2NrICoqc3ByZXYgPSAmc3ltYm9sX2Jsb2NrOwotICAgIHJlZ2lzdGVy IGludCBsaW0gPSBzeW1ib2xfYmxvY2tfaW5kZXg7CisgICAgaW50IGxpbSA9IHN5bWJvbF9i bG9ja19pbmRleDsKICAgICBFTUFDU19JTlQgbnVtX2ZyZWUgPSAwLCBudW1fdXNlZCA9IDA7 CiAKICAgICBzeW1ib2xfZnJlZV9saXN0ID0gTlVMTDsKQEAgLTYxNjQsMTYgKzYxNjQsMTYg QEAKICAgLyogUHV0IGFsbCB1bm1hcmtlZCBtaXNjJ3Mgb24gZnJlZSBsaXN0LgogICAgICBG b3IgYSBtYXJrZXIsIGZpcnN0IHVuY2hhaW4gaXQgZnJvbSB0aGUgYnVmZmVyIGl0IHBvaW50 cyBpbnRvLiAgKi8KICAgewotICAgIHJlZ2lzdGVyIHN0cnVjdCBtYXJrZXJfYmxvY2sgKm1i bGs7CisgICAgc3RydWN0IG1hcmtlcl9ibG9jayAqbWJsazsKICAgICBzdHJ1Y3QgbWFya2Vy X2Jsb2NrICoqbXByZXYgPSAmbWFya2VyX2Jsb2NrOwotICAgIHJlZ2lzdGVyIGludCBsaW0g PSBtYXJrZXJfYmxvY2tfaW5kZXg7CisgICAgaW50IGxpbSA9IG1hcmtlcl9ibG9ja19pbmRl eDsKICAgICBFTUFDU19JTlQgbnVtX2ZyZWUgPSAwLCBudW1fdXNlZCA9IDA7CiAKICAgICBt YXJrZXJfZnJlZV9saXN0ID0gMDsKIAogICAgIGZvciAobWJsayA9IG1hcmtlcl9ibG9jazsg bWJsazsgbWJsayA9ICptcHJldikKICAgICAgIHsKLQlyZWdpc3RlciBpbnQgaTsKKwlpbnQg aTsKIAlpbnQgdGhpc19mcmVlID0gMDsKIAogCWZvciAoaSA9IDA7IGkgPCBsaW07IGkrKykK QEAgLTYyMjAsNyArNjIyMCw3IEBACiAKICAgLyogRnJlZSBhbGwgdW5tYXJrZWQgYnVmZmVy cyAqLwogICB7Ci0gICAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmZmVyID0gYWxsX2J1 ZmZlcnMsICpwcmV2ID0gMCwgKm5leHQ7CisgICAgc3RydWN0IGJ1ZmZlciAqYnVmZmVyID0g YWxsX2J1ZmZlcnMsICpwcmV2ID0gMCwgKm5leHQ7CiAKICAgICB3aGlsZSAoYnVmZmVyKQog ICAgICAgaWYgKCFWRUNUT1JfTUFSS0VEX1AgKGJ1ZmZlcikpCkBAIC02MjQzLDcgKzYyNDMs NyBAQAogCiAgIC8qIEZyZWUgYWxsIHVubWFya2VkIHZlY3RvcnMgKi8KICAgewotICAgIHJl Z2lzdGVyIHN0cnVjdCBMaXNwX1ZlY3RvciAqdmVjdG9yID0gYWxsX3ZlY3RvcnMsICpwcmV2 ID0gMCwgKm5leHQ7CisgICAgc3RydWN0IExpc3BfVmVjdG9yICp2ZWN0b3IgPSBhbGxfdmVj dG9ycywgKnByZXYgPSAwLCAqbmV4dDsKICAgICB0b3RhbF92ZWN0b3Jfc2l6ZSA9IDA7CiAK ICAgICB3aGlsZSAodmVjdG9yKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9idWZmZXIuYycK LS0tIHNyYy9idWZmZXIuYwkyMDEyLTA1LTI5IDE2OjEzOjM4ICswMDAwCisrKyBzcmMvYnVm ZmVyLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjI2LDEyICsyMjYsMTIgQEAK ICAgIGFuZCBkb24ndCBldmVyIFFVSVQuICAqLwogCiBzdGF0aWMgTGlzcF9PYmplY3QKLWFz c29jX2lnbm9yZV90ZXh0X3Byb3BlcnRpZXMgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGtleSwg TGlzcF9PYmplY3QgbGlzdCkKK2Fzc29jX2lnbm9yZV90ZXh0X3Byb3BlcnRpZXMgKExpc3Bf T2JqZWN0IGtleSwgTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09O U1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgZWx0LCB0ZW07CisgICAgICBMaXNwX09iamVjdCBlbHQsIHRlbTsKICAg ICAgIGVsdCA9IFhDQVIgKHRhaWwpOwogICAgICAgdGVtID0gRnN0cmluZ19lcXVhbCAoRmNh ciAoZWx0KSwga2V5KTsKICAgICAgIGlmICghTklMUCAodGVtKSkKQEAgLTI0NSw3ICsyNDUs NyBAQAogQlVGRkVSLU9SLU5BTUUgbXVzdCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBidWZm ZXIuICBJZiBCVUZGRVItT1ItTkFNRQogaXMgYSBzdHJpbmcgYW5kIHRoZXJlIGlzIG5vIGJ1 ZmZlciB3aXRoIHRoYXQgbmFtZSwgcmV0dXJuIG5pbC4gIElmCiBCVUZGRVItT1ItTkFNRSBp cyBhIGJ1ZmZlciwgcmV0dXJuIGl0IGFzIGdpdmVuLiAgKi8pCi0gIChyZWdpc3RlciBMaXNw X09iamVjdCBidWZmZXJfb3JfbmFtZSkKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcl9vcl9uYW1l KQogewogICBpZiAoQlVGRkVSUCAoYnVmZmVyX29yX25hbWUpKQogICAgIHJldHVybiBidWZm ZXJfb3JfbmFtZTsKQEAgLTI1OSw5ICsyNTksOSBAQAogVGhlIGJ1ZmZlcidzIGBidWZmZXIt ZmlsZS1uYW1lJyBtdXN0IG1hdGNoIGV4YWN0bHkgdGhlIGV4cGFuc2lvbiBvZiBGSUxFTkFN RS4KIElmIHRoZXJlIGlzIG5vIHN1Y2ggbGl2ZSBidWZmZXIsIHJldHVybiBuaWwuCiBTZWUg YWxzbyBgZmluZC1idWZmZXItdmlzaXRpbmcnLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBmaWxlbmFtZSkKKyAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQogewotICByZWdpc3Rl ciBMaXNwX09iamVjdCB0YWlsLCBidWYsIHRlbTsKKyAgTGlzcF9PYmplY3QgdGFpbCwgYnVm LCB0ZW07CiAgIExpc3BfT2JqZWN0IGhhbmRsZXI7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxl bmFtZSk7CkBAIC0yOTAsOSArMjkwLDkgQEAKIH0KIAogTGlzcF9PYmplY3QKLWdldF90cnVl bmFtZV9idWZmZXIgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZpbGVuYW1lKQorZ2V0X3RydWVu YW1lX2J1ZmZlciAoTGlzcF9PYmplY3QgZmlsZW5hbWUpCiB7Ci0gIHJlZ2lzdGVyIExpc3Bf T2JqZWN0IHRhaWwsIGJ1ZiwgdGVtOworICBMaXNwX09iamVjdCB0YWlsLCBidWYsIHRlbTsK IAogICBmb3IgKHRhaWwgPSBWYnVmZmVyX2FsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBY Q0RSICh0YWlsKSkKICAgICB7CkBAIC0zMTUsMTAgKzMxNSwxMCBAQAogCiBJZiBCVUZGRVIt T1ItTkFNRSBpcyBhIGJ1ZmZlciBpbnN0ZWFkIG9mIGEgc3RyaW5nLCByZXR1cm4gaXQgYXMg Z2l2ZW4sCiBldmVuIGlmIGl0IGlzIGRlYWQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIG5ldmVy IG5pbC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmZmVyX29yX25hbWUpCisg IChMaXNwX09iamVjdCBidWZmZXJfb3JfbmFtZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgYnVmZmVyLCBuYW1lOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiOworICBMaXNw X09iamVjdCBidWZmZXIsIG5hbWU7CisgIHN0cnVjdCBidWZmZXIgKmI7CiAKICAgYnVmZmVy ID0gRmdldF9idWZmZXIgKGJ1ZmZlcl9vcl9uYW1lKTsKICAgaWYgKCFOSUxQIChidWZmZXIp KQpAQCAtNzA0LDcgKzcwNCw3IEBACiAgICBjbGFpbXMgaXQgZG9lc24ndCBiZWxvbmcgdG8g aXQuICAqLwogCiB2b2lkCi1yZXNldF9idWZmZXIgKHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIg KmIpCityZXNldF9idWZmZXIgKHN0cnVjdCBidWZmZXIgKmIpCiB7CiAgIEJWQVIgKGIsIGZp bGVuYW1lKSA9IFFuaWw7CiAgIEJWQVIgKGIsIGZpbGVfdHJ1ZW5hbWUpID0gUW5pbDsKQEAg LTc0OCw5ICs3NDgsOSBAQAogICAgd2UgcHJlc2VydmUgdGhvc2UuICAqLwogCiBzdGF0aWMg dm9pZAotcmVzZXRfYnVmZmVyX2xvY2FsX3ZhcmlhYmxlcyAocmVnaXN0ZXIgc3RydWN0IGJ1 ZmZlciAqYiwgaW50IHBlcm1hbmVudF90b28pCityZXNldF9idWZmZXJfbG9jYWxfdmFyaWFi bGVzIChzdHJ1Y3QgYnVmZmVyICpiLCBpbnQgcGVybWFuZW50X3RvbykKIHsKLSAgcmVnaXN0 ZXIgaW50IG9mZnNldDsKKyAgaW50IG9mZnNldDsKICAgaW50IGk7CiAKICAgLyogUmVzZXQg dGhlIG1ham9yIG1vZGUgdG8gRnVuZGFtZW50YWwsIHRvZ2V0aGVyIHdpdGggYWxsIHRoZQpA QCAtODQ5LDkgKzg0OSw5IEBACiBcKHN0YXJ0aW5nIGF0IDIpIHVudGlsIGFuIHVudXNlZCBu YW1lIGlzIGZvdW5kLCBhbmQgdGhlbiByZXR1cm4gdGhhdCBuYW1lLgogT3B0aW9uYWwgc2Vj b25kIGFyZ3VtZW50IElHTk9SRSBzcGVjaWZpZXMgYSBuYW1lIHRoYXQgaXMgb2theSB0byB1 c2UgKGlmCiBpdCBpcyBpbiB0aGUgc2VxdWVuY2UgdG8gYmUgdHJpZWQpIGV2ZW4gaWYgYSBi dWZmZXIgd2l0aCB0aGF0IG5hbWUgZXhpc3RzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBuYW1lLCBMaXNwX09iamVjdCBpZ25vcmUpCisgIChMaXNwX09iamVjdCBuYW1lLCBM aXNwX09iamVjdCBpZ25vcmUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGdlbnRlbXAs IHRlbTsKKyAgTGlzcF9PYmplY3QgZ2VudGVtcCwgdGVtOwogICBwdHJkaWZmX3QgY291bnQ7 CiAgIGNoYXIgbnVtYmVyW0lOVF9CVUZTSVpFX0JPVU5EIChwdHJkaWZmX3QpICsgc2l6ZW9m ICI8PiJdOwogCkBAIC04ODMsNyArODgzLDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0 aGUgbmFtZSBvZiBCVUZGRVIsIGFzIGEgc3RyaW5nLgogQlVGRkVSIGRlZmF1bHRzIHRvIHRo ZSBjdXJyZW50IGJ1ZmZlci4KIFJldHVybiBuaWwgaWYgQlVGRkVSIGhhcyBiZWVuIGtpbGxl ZC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmZmVyKQorICAoTGlzcF9PYmpl Y3QgYnVmZmVyKQogewogICBpZiAoTklMUCAoYnVmZmVyKSkKICAgICByZXR1cm4gQlZBUiAo Y3VycmVudF9idWZmZXIsIG5hbWUpOwpAQCAtODk0LDcgKzg5NCw3IEBACiBERUZVTiAoImJ1 ZmZlci1maWxlLW5hbWUiLCBGYnVmZmVyX2ZpbGVfbmFtZSwgU2J1ZmZlcl9maWxlX25hbWUs IDAsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbmFtZSBvZiBmaWxlIEJVRkZFUiBp cyB2aXNpdGluZywgb3IgbmlsIGlmIG5vbmUuCiBObyBhcmd1bWVudCBvciBuaWwgYXMgYXJn dW1lbnQgbWVhbnMgdXNlIHRoZSBjdXJyZW50IGJ1ZmZlci4gICovKQotICAocmVnaXN0ZXIg TGlzcF9PYmplY3QgYnVmZmVyKQorICAoTGlzcF9PYmplY3QgYnVmZmVyKQogewogICBpZiAo TklMUCAoYnVmZmVyKSkKICAgICByZXR1cm4gQlZBUiAoY3VycmVudF9idWZmZXIsIGZpbGVu YW1lKTsKQEAgLTkwNyw3ICs5MDcsNyBAQAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBi YXNlIGJ1ZmZlciBvZiBpbmRpcmVjdCBidWZmZXIgQlVGRkVSLgogSWYgQlVGRkVSIGlzIG5v dCBpbmRpcmVjdCwgcmV0dXJuIG5pbC4KIEJVRkZFUiBkZWZhdWx0cyB0byB0aGUgY3VycmVu dCBidWZmZXIuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExp c3BfT2JqZWN0IGJ1ZmZlcikKIHsKICAgc3RydWN0IGJ1ZmZlciAqYmFzZTsKICAgTGlzcF9P YmplY3QgYmFzZV9idWZmZXI7CkBAIC05MzEsMTAgKzkzMSwxMCBAQAogICAgICAgIGRvYzog LyogUmV0dXJuIHRoZSB2YWx1ZSBvZiBWQVJJQUJMRSBpbiBCVUZGRVIuCiBJZiBWQVJJQUJM RSBkb2VzIG5vdCBoYXZlIGEgYnVmZmVyLWxvY2FsIGJpbmRpbmcgaW4gQlVGRkVSLCB0aGUg dmFsdWUKIGlzIHRoZSBkZWZhdWx0IGJpbmRpbmcgb2YgdGhlIHZhcmlhYmxlLiAqLykKLSAg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlLCByZWdpc3RlciBMaXNwX09iamVjdCBi dWZmZXIpCisgIChMaXNwX09iamVjdCB2YXJpYWJsZSwgTGlzcF9PYmplY3QgYnVmZmVyKQog ewotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpidWY7Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHJlc3VsdDsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmOworICBMaXNwX09iamVjdCByZXN1 bHQ7CiAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltOwogCiAgIENIRUNLX1NZTUJPTCAodmFy aWFibGUpOwpAQCAtOTk5LDcgKzk5OSw3IEBACiBidWZmZXJfbGlzcF9sb2NhbF92YXJpYWJs ZXMgKHN0cnVjdCBidWZmZXIgKmJ1ZikKIHsKICAgTGlzcF9PYmplY3QgcmVzdWx0ID0gUW5p bDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsK ICAgZm9yICh0YWlsID0gQlZBUiAoYnVmLCBsb2NhbF92YXJfYWxpc3QpOyBDT05TUCAodGFp bCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CiAgICAgICBMaXNwX09iamVjdCB2YWws IGVsdDsKQEAgLTEwMzIsMTAgKzEwMzIsMTAgQEAKIEZvciBhIHN5bWJvbCB0aGF0IGlzIGxv Y2FsbHkgdW5ib3VuZCwganVzdCB0aGUgc3ltYm9sIGFwcGVhcnMgaW4gdGhlIHZhbHVlLgog Tm90ZSB0aGF0IHN0b3JpbmcgbmV3IFZBTFVFcyBpbiB0aGVzZSBlbGVtZW50cyBkb2Vzbid0 IGNoYW5nZSB0aGUgdmFyaWFibGVzLgogTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFyZ3VtZW50 IG1lYW5zIHVzZSBjdXJyZW50IGJ1ZmZlciBhcyBCVUZGRVIuICAqLykKLSAgKHJlZ2lzdGVy IExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsKLSAgcmVn aXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmOwotICByZWdpc3RlciBMaXNwX09iamVjdCByZXN1 bHQ7CisgIHN0cnVjdCBidWZmZXIgKmJ1ZjsKKyAgTGlzcF9PYmplY3QgcmVzdWx0OwogCiAg IGlmIChOSUxQIChidWZmZXIpKQogICAgIGJ1ZiA9IGN1cnJlbnRfYnVmZmVyOwpAQCAtMTA3 Nyw5ICsxMDc3LDkgQEAKICAgICAgICAwLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJu IHQgaWYgQlVGRkVSIHdhcyBtb2RpZmllZCBzaW5jZSBpdHMgZmlsZSB3YXMgbGFzdCByZWFk IG9yIHNhdmVkLgogTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFyZ3VtZW50IG1lYW5zIHVzZSBj dXJyZW50IGJ1ZmZlciBhcyBCVUZGRVIuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IGJ1ZmZlciAqYnVmOworICBzdHJ1Y3QgYnVmZmVyICpidWY7CiAgIGlmIChOSUxQIChidWZm ZXIpKQogICAgIGJ1ZiA9IGN1cnJlbnRfYnVmZmVyOwogICBlbHNlCkBAIC0xMDk1LDEwICsx MDk1LDEwIEBACiAgICAgICAgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1hcmsgY3VycmVu dCBidWZmZXIgYXMgbW9kaWZpZWQgb3IgdW5tb2RpZmllZCBhY2NvcmRpbmcgdG8gRkxBRy4K IEEgbm9uLW5pbCBGTEFHIG1lYW5zIG1hcmsgdGhlIGJ1ZmZlciBtb2RpZmllZC4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgZmxhZykKKyAgKExpc3BfT2JqZWN0IGZsYWcpCiB7 Ci0gIHJlZ2lzdGVyIGludCBhbHJlYWR5OwotICByZWdpc3RlciBMaXNwX09iamVjdCBmbjsK KyAgaW50IGFscmVhZHk7CisgIExpc3BfT2JqZWN0IGZuOwogICBMaXNwX09iamVjdCBidWZm ZXIsIHdpbmRvdzsKIAogI2lmZGVmIENMQVNIX0RFVEVDVElPTgpAQCAtMTE5NCw5ICsxMTk0 LDkgQEAKIEVhY2ggYnVmZmVyIGhhcyBhIHRpY2sgY291bnRlciB3aGljaCBpcyBpbmNyZW1l bnRlZCBlYWNoIHRpbWUgdGhlCiB0ZXh0IGluIHRoYXQgYnVmZmVyIGlzIGNoYW5nZWQuICBJ dCB3cmFwcyBhcm91bmQgb2NjYXNpb25hbGx5LgogTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFy Z3VtZW50IG1lYW5zIHVzZSBjdXJyZW50IGJ1ZmZlciBhcyBCVUZGRVIuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVmOworICBzdHJ1Y3QgYnVmZmVyICpidWY7 CiAgIGlmIChOSUxQIChidWZmZXIpKQogICAgIGJ1ZiA9IGN1cnJlbnRfYnVmZmVyOwogICBl bHNlCkBAIC0xMjE4LDkgKzEyMTgsOSBAQAogeW91IGNhbiB0ZWxsIHdoZXRoZXIgYSBjaGFy YWN0ZXIgY2hhbmdlIG9jY3VycmVkIGluIHRoYXQgYnVmZmVyIGluCiBiZXR3ZWVuIHRoZXNl IGNhbGxzLiAgTm8gYXJndW1lbnQgb3IgbmlsIGFzIGFyZ3VtZW50IG1lYW5zIHVzZSBjdXJy ZW50CiBidWZmZXIgYXMgQlVGRkVSLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBi dWZmZXIpCisgIChMaXNwX09iamVjdCBidWZmZXIpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBi dWZmZXIgKmJ1ZjsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmOwogICBpZiAoTklMUCAoYnVmZmVy KSkKICAgICBidWYgPSBjdXJyZW50X2J1ZmZlcjsKICAgZWxzZQpAQCAtMTI0NCw5ICsxMjQ0 LDkgQEAKIEludGVyYWN0aXZlbHksIHlvdSBjYW4gc2V0IFVOSVFVRSB3aXRoIGEgcHJlZml4 IGFyZ3VtZW50LgogV2UgcmV0dXJuIHRoZSBuYW1lIHdlIGFjdHVhbGx5IGdhdmUgdGhlIGJ1 ZmZlci4KIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSB2aXNpdGVkIGZp bGUgKGlmIGFueSkuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG5ld25hbWUsIExp c3BfT2JqZWN0IHVuaXF1ZSkKKyAgKExpc3BfT2JqZWN0IG5ld25hbWUsIExpc3BfT2JqZWN0 IHVuaXF1ZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBidWY7CisgIExpc3Bf T2JqZWN0IHRlbSwgYnVmOwogCiAgIENIRUNLX1NUUklORyAobmV3bmFtZSk7CiAKQEAgLTEy OTksNyArMTI5OSw3IEBACiBUaGUgYnVmZmVyIGlzIGZvdW5kIGJ5IHNjYW5uaW5nIHRoZSBz ZWxlY3RlZCBvciBzcGVjaWZpZWQgZnJhbWUncyBidWZmZXIKIGxpc3QgZmlyc3QsIGZvbGxv d2VkIGJ5IHRoZSBsaXN0IG9mIGFsbCBidWZmZXJzLiAgSWYgbm8gb3RoZXIgYnVmZmVyCiBl eGlzdHMsIHJldHVybiB0aGUgYnVmZmVyIGAqc2NyYXRjaConIChjcmVhdGluZyBpdCBpZiBu ZWNlc3NhcnkpLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBidWZmZXIsIExpc3Bf T2JqZWN0IHZpc2libGVfb2ssIExpc3BfT2JqZWN0IGZyYW1lKQorICAoTGlzcF9PYmplY3Qg YnVmZmVyLCBMaXNwX09iamVjdCB2aXNpYmxlX29rLCBMaXNwX09iamVjdCBmcmFtZSkKIHsK ICAgTGlzcF9PYmplY3QgRnNldF9idWZmZXJfbWFqb3JfbW9kZSAoTGlzcF9PYmplY3QgYnVm ZmVyKTsKICAgTGlzcF9PYmplY3QgdGFpbCwgYnVmLCBwcmVkOwpAQCAtMTM5OSw3ICsxMzk5 LDcgQEAKICAgICAgICAwLCAxLCAiIiwKICAgICAgICBkb2M6IC8qIFN0YXJ0IGtlZXBpbmcg dW5kbyBpbmZvcm1hdGlvbiBmb3IgYnVmZmVyIEJVRkZFUi4KIE5vIGFyZ3VtZW50IG9yIG5p bCBhcyBhcmd1bWVudCBtZWFucyBkbyB0aGlzIGZvciB0aGUgY3VycmVudCBidWZmZXIuICAq LykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IGJ1 ZmZlcikKIHsKICAgTGlzcF9PYmplY3QgcmVhbF9idWZmZXI7CiAKQEAgLTE0NDMsOSArMTQ0 Myw5IEBACiAgIChMaXNwX09iamVjdCBidWZmZXJfb3JfbmFtZSkKIHsKICAgTGlzcF9PYmpl Y3QgYnVmZmVyOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiOwotICByZWdpc3RlciBM aXNwX09iamVjdCB0ZW07Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX01hcmtlciAqbTsKKyAg c3RydWN0IGJ1ZmZlciAqYjsKKyAgTGlzcF9PYmplY3QgdGVtOworICBzdHJ1Y3QgTGlzcF9N YXJrZXIgKm07CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAgaWYgKE5JTFAgKGJ1ZmZl cl9vcl9uYW1lKSkKQEAgLTE2NzgsNyArMTY3OCw3IEBACiByZWNvcmRfYnVmZmVyIChMaXNw X09iamVjdCBidWZmZXIpCiB7CiAgIExpc3BfT2JqZWN0IGFlbHQsIGFlbHRfY29ucywgdGVt OwotICByZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKHNlbGVjdGVkX2ZyYW1l KTsKKyAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChzZWxlY3RlZF9mcmFtZSk7CiAKICAg Q0hFQ0tfQlVGRkVSIChidWZmZXIpOwogCkBAIC0xNzE2LDcgKzE3MTYsNyBAQAogICAoTGlz cF9PYmplY3QgYnVmZmVyKQogewogICBMaXNwX09iamVjdCBhZWx0LCBhZWx0X2NvbnMsIHRl bTsKLSAgcmVnaXN0ZXIgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChzZWxlY3RlZF9mcmFt ZSk7CisgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUpOwogCiAg IENIRUNLX0JVRkZFUiAoYnVmZmVyKTsKIApAQCAtMTc4Nyw3ICsxNzg3LDcgQEAKICAgICAg ICBkb2M6IC8qIFJldHVybiB0aGUgY3VycmVudCBidWZmZXIgYXMgYSBMaXNwIG9iamVjdC4g ICovKQogICAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmOworICBMaXNw X09iamVjdCBidWY7CiAgIFhTRVRCVUZGRVIgKGJ1ZiwgY3VycmVudF9idWZmZXIpOwogICBy ZXR1cm4gYnVmOwogfQpAQCAtMTgwMiw3ICsxODAyLDcgQEAKICAgIHRpbWUsIGFuZCB0aGF0 IGluY3JlbWVudHMgd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQuICAqLwogCiB2b2lkCi1z ZXRfYnVmZmVyX2ludGVybmFsIChyZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiKQorc2V0X2J1 ZmZlcl9pbnRlcm5hbCAoc3RydWN0IGJ1ZmZlciAqYikKIHsKICAgaWYgKGN1cnJlbnRfYnVm ZmVyICE9IGIpCiAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbF8xIChiKTsKQEAgLTE4MTIsMTAg KzE4MTIsMTAgQEAKICAgIFRoaXMgaXMgdXNlZCBieSByZWRpc3BsYXkuICAqLwogCiB2b2lk Ci1zZXRfYnVmZmVyX2ludGVybmFsXzEgKHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIgKmIpCitz ZXRfYnVmZmVyX2ludGVybmFsXzEgKHN0cnVjdCBidWZmZXIgKmIpCiB7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBidWZmZXIgKm9sZF9idWY7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWw7 CisgIHN0cnVjdCBidWZmZXIgKm9sZF9idWY7CisgIExpc3BfT2JqZWN0IHRhaWw7CiAKICNp ZmRlZiBVU0VfTU1BUF9GT1JfQlVGRkVSUwogICBpZiAoYi0+dGV4dC0+YmVnID09IE5VTEwp CkBAIC0xODc2LDcgKzE4NzYsNyBAQAogdm9pZAogc2V0X2J1ZmZlcl90ZW1wIChzdHJ1Y3Qg YnVmZmVyICpiKQogewotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpvbGRfYnVmOworICBz dHJ1Y3QgYnVmZmVyICpvbGRfYnVmOwogCiAgIGlmIChjdXJyZW50X2J1ZmZlciA9PSBiKQog ICAgIHJldHVybjsKQEAgLTE5MDAsOSArMTkwMCw5IEBACiB0ZW1wb3JhcmlseS4gIFRoaXMg ZnVuY3Rpb24gZG9lcyBub3QgZGlzcGxheSB0aGUgYnVmZmVyLCBzbyBpdHMgZWZmZWN0CiBl bmRzIHdoZW4gdGhlIGN1cnJlbnQgY29tbWFuZCB0ZXJtaW5hdGVzLiAgVXNlIGBzd2l0Y2gt dG8tYnVmZmVyJyBvcgogYHBvcC10by1idWZmZXInIHRvIHN3aXRjaCBidWZmZXJzIHBlcm1h bmVudGx5LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBidWZmZXJfb3JfbmFtZSkK KyAgKExpc3BfT2JqZWN0IGJ1ZmZlcl9vcl9uYW1lKQogewotICByZWdpc3RlciBMaXNwX09i amVjdCBidWZmZXI7CisgIExpc3BfT2JqZWN0IGJ1ZmZlcjsKICAgYnVmZmVyID0gRmdldF9i dWZmZXIgKGJ1ZmZlcl9vcl9uYW1lKTsKICAgaWYgKE5JTFAgKGJ1ZmZlcikpCiAgICAgbnNi ZXJyb3IgKGJ1ZmZlcl9vcl9uYW1lKTsKQEAgLTE5NTIsNyArMTk1Miw3IEBACiB9CiAKIHZv aWQKLXZhbGlkYXRlX3JlZ2lvbiAocmVnaXN0ZXIgTGlzcF9PYmplY3QgKmIsIHJlZ2lzdGVy IExpc3BfT2JqZWN0ICplKQordmFsaWRhdGVfcmVnaW9uIChMaXNwX09iamVjdCAqYiwgTGlz cF9PYmplY3QgKmUpCiB7CiAgIENIRUNLX05VTUJFUl9DT0VSQ0VfTUFSS0VSICgqYik7CiAg IENIRUNLX05VTUJFUl9DT0VSQ0VfTUFSS0VSICgqZSk7CkBAIC0zMzE1LDcgKzMzMTUsNyBA QAogICAgU3VjaCBhbiBvdmVybGF5IG1pZ2h0IGV2ZW4gaGF2ZSBuZWdhdGl2ZSBzaXplIGF0 IHRoaXMgcG9pbnQuCiAgICBJZiBzbywgd2UnbGwgbWFrZSB0aGUgb3ZlcmxheSBlbXB0eS4g Ki8KIHZvaWQKLWZpeF9zdGFydF9lbmRfaW5fb3ZlcmxheXMgKHJlZ2lzdGVyIHB0cmRpZmZf dCBzdGFydCwgcmVnaXN0ZXIgcHRyZGlmZl90IGVuZCkKK2ZpeF9zdGFydF9lbmRfaW5fb3Zl cmxheXMgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IGVuZCkKIHsKICAgTGlzcF9PYmpl Y3Qgb3ZlcmxheTsKICAgc3RydWN0IExpc3BfT3ZlcmxheSAqYmVmb3JlX2xpc3QgSUZfTElO VCAoPSBOVUxMKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYnl0ZWNvZGUuYycKLS0tIHNy Yy9ieXRlY29kZS5jCTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9ieXRlY29k ZS5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk0Miw3ICs5NDIsNyBAQAogCiAJ Y2FzZSBCc2F2ZV93aW5kb3dfZXhjdXJzaW9uOiAvKiBPYnNvbGV0ZSBzaW5jZSAyNC4xLiAg Ki8KIAkgIHsKLQkgICAgcmVnaXN0ZXIgcHRyZGlmZl90IGNvdW50MSA9IFNQRUNQRExfSU5E RVggKCk7CisJICAgIHB0cmRpZmZfdCBjb3VudDEgPSBTUEVDUERMX0lOREVYICgpOwogCSAg ICByZWNvcmRfdW53aW5kX3Byb3RlY3QgKEZzZXRfd2luZG93X2NvbmZpZ3VyYXRpb24sCiAJ CQkJICAgRmN1cnJlbnRfd2luZG93X2NvbmZpZ3VyYXRpb24gKFFuaWwpKTsKIAkgICAgQkVG T1JFX1BPVEVOVElBTF9HQyAoKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FsbGludC5j JwotLS0gc3JjL2NhbGxpbnQuYwkyMDEyLTA2LTAyIDE5OjIxOjM0ICswMDAwCisrKyBzcmMv Y2FsbGludC5jCTIwMTItMDYtMDMgMDU6NTU6MjMgKzAwMDAKQEAgLTEyMiw3ICsxMjIsNyBA QAogLyogUXVvdGlmeSBFWFA6IGlmIEVYUCBpcyBjb25zdGFudCwgcmV0dXJuIGl0LgogICAg SWYgRVhQIGlzIG5vdCBjb25zdGFudCwgcmV0dXJuIChxdW90ZSBFWFApLiAgKi8KIHN0YXRp YyBMaXNwX09iamVjdAotcXVvdGlmeV9hcmcgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGV4cCkK K3F1b3RpZnlfYXJnIChMaXNwX09iamVjdCBleHApCiB7CiAgIGlmIChDT05TUCAoZXhwKQog ICAgICAgfHwgKFNZTUJPTFAgKGV4cCkKQEAgLTEzNiw3ICsxMzYsNyBAQAogc3RhdGljIExp c3BfT2JqZWN0CiBxdW90aWZ5X2FyZ3MgKExpc3BfT2JqZWN0IGV4cCkKIHsKLSAgcmVnaXN0 ZXIgTGlzcF9PYmplY3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAgTGlzcF9PYmpl Y3QgbmV4dDsKICAgZm9yICh0YWlsID0gZXhwOyBDT05TUCAodGFpbCk7IHRhaWwgPSBuZXh0 KQogICAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FsbHByb2MuYycKLS0tIHNyYy9j YWxscHJvYy5jCTIwMTItMDUtMzAgMTQ6MjA6NDUgKzAwMDAKKysrIHNyYy9jYWxscHJvYy5j CTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTIwMiw3ICsyMDIsNyBAQAogICBwdHJk aWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBVU0VfU0FGRV9BTExPQ0E7CiAK LSAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqKm5ld19hcmd2OworICBjb25zdCB1 bnNpZ25lZCBjaGFyICoqbmV3X2FyZ3Y7CiAgIC8qIEZpbGUgdG8gdXNlIGZvciBzdGRlcnIg aW4gdGhlIGNoaWxkLgogICAgICB0IG1lYW5zIHVzZSBzYW1lIGFzIHN0YW5kYXJkIG91dHB1 dC4gICovCiAgIExpc3BfT2JqZWN0IGVycm9yX2ZpbGU7CkBAIC00OTgsOCArNDk4LDggQEAK ICAgewogICAgIC8qIGNoaWxkX3NldHVwIG11c3QgY2xvYmJlciBlbnZpcm9uIGluIHN5c3Rl bXMgd2l0aCB0cnVlIHZmb3JrLgogICAgICAgIFByb3RlY3QgaXQgZnJvbSBwZXJtYW5lbnQg Y2hhbmdlLiAgKi8KLSAgICByZWdpc3RlciBjaGFyICoqc2F2ZV9lbnZpcm9uID0gZW52aXJv bjsKLSAgICByZWdpc3RlciBpbnQgZmQxID0gZmRbMV07CisgICAgY2hhciAqKnNhdmVfZW52 aXJvbiA9IGVudmlyb247CisgICAgaW50IGZkMSA9IGZkWzFdOwogICAgIGludCBmZF9lcnJv ciA9IGZkMTsKICNpZmRlZiBIQVZFX1dPUktJTkdfVkZPUksKICAgICBzaWdzZXRfdCBwcm9j bWFzazsKQEAgLTc2OSw3ICs3NjksNyBAQAogCiAgIGlmIChvdXRwdXRfdG9fYnVmZmVyKQog ICAgIHsKLSAgICAgIHJlZ2lzdGVyIGludCBucmVhZDsKKyAgICAgIGludCBucmVhZDsKICAg ICAgIGludCBmaXJzdCA9IDE7CiAgICAgICBFTUFDU19JTlQgdG90YWxfcmVhZCA9IDA7CiAg ICAgICBpbnQgY2FycnlvdmVyID0gMDsKQEAgLTk3MCw3ICs5NzAsNyBAQAogewogICBzdHJ1 Y3QgZ2Nwcm8gZ2Nwcm8xOwogICBMaXNwX09iamVjdCBmaWxlbmFtZV9zdHJpbmc7Ci0gIHJl Z2lzdGVyIExpc3BfT2JqZWN0IHN0YXJ0LCBlbmQ7CisgIExpc3BfT2JqZWN0IHN0YXJ0LCBl bmQ7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIC8qIFF0IGRl bm90ZXMgd2UgaGF2ZSBub3QgeWV0IGNhbGxlZCBGZmluZF9vcGVyYXRpb25fY29kaW5nX3N5 c3RlbS4gICovCiAgIExpc3BfT2JqZWN0IGNvZGluZ19zeXN0ZW1zOwpAQCAtMTEzOSw3ICsx MTM5LDcgQEAKICAgIGV4ZWN1dGFibGUgZGlyZWN0b3J5IGJ5IHRoZSBwYXJlbnQuICAqLwog CiBpbnQKLWNoaWxkX3NldHVwIChpbnQgaW4sIGludCBvdXQsIGludCBlcnIsIHJlZ2lzdGVy IGNoYXIgKipuZXdfYXJndiwgaW50IHNldF9wZ3JwLCBMaXNwX09iamVjdCBjdXJyZW50X2Rp cikKK2NoaWxkX3NldHVwIChpbnQgaW4sIGludCBvdXQsIGludCBlcnIsIGNoYXIgKipuZXdf YXJndiwgaW50IHNldF9wZ3JwLCBMaXNwX09iamVjdCBjdXJyZW50X2RpcikKIHsKICAgY2hh ciAqKmVudjsKICAgY2hhciAqcHdkX3ZhcjsKQEAgLTExNjYsNyArMTE2Niw3IEBACiAgICAg IHN0YXRpYyB2YXJpYWJsZXMgYXMgaWYgdGhlIHN1cGVyaW9yIGhhZCBkb25lIGFsbG9jYSBh bmQgd2lsbCBiZQogICAgICBjbGVhbmVkIHVwIGluIHRoZSB1c3VhbCB3YXkuICovCiAgIHsK LSAgICByZWdpc3RlciBjaGFyICp0ZW1wOworICAgIGNoYXIgKnRlbXA7CiAgICAgc2l6ZV90 IGk7IC8qIHNpemVfdCwgYmVjYXVzZSBwdHJkaWZmX3QgbWlnaHQgb3ZlcmZsb3cgaGVyZSEg ICovCiAKICAgICBpID0gU0JZVEVTIChjdXJyZW50X2Rpcik7CkBAIC0xMjA4LDEwICsxMjA4 LDEwIEBACiAKICAgLyogU2V0IGBlbnYnIHRvIGEgdmVjdG9yIG9mIHRoZSBzdHJpbmdzIGlu IHRoZSBlbnZpcm9ubWVudC4gICovCiAgIHsKLSAgICByZWdpc3RlciBMaXNwX09iamVjdCB0 ZW07Ci0gICAgcmVnaXN0ZXIgY2hhciAqKm5ld19lbnY7CisgICAgTGlzcF9PYmplY3QgdGVt OworICAgIGNoYXIgKipuZXdfZW52OwogICAgIGNoYXIgKipwLCAqKnE7Ci0gICAgcmVnaXN0 ZXIgaW50IG5ld19sZW5ndGg7CisgICAgaW50IG5ld19sZW5ndGg7CiAgICAgTGlzcF9PYmpl Y3QgZGlzcGxheSA9IFFuaWw7CiAKICAgICBuZXdfbGVuZ3RoID0gMDsKQEAgLTE1MzcsNyAr MTUzNyw3IEBACiB7CiAgIGNoYXIgKmRhdGFfZGlyID0gZWdldGVudiAoIkVNQUNTREFUQSIp OwogCi0gIHJlZ2lzdGVyIGNoYXIgKiBzaDsKKyAgY2hhciAqc2g7CiAgIExpc3BfT2JqZWN0 IHRlbXBkaXI7CiAKICAgaWYgKCFOSUxQIChWaW5zdGFsbGF0aW9uX2RpcmVjdG9yeSkpCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Nhc2VmaWRkbGUuYycKLS0tIHNyYy9jYXNlZmlkZGxl LmMJMjAxMi0wMi0xMCAxODo1ODo0OCArMDAwMAorKysgc3JjL2Nhc2VmaWRkbGUuYwkyMDEy LTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC0zNSw4ICszNSw4IEBACiBzdGF0aWMgTGlzcF9P YmplY3QKIGNhc2lmeV9vYmplY3QgKGVudW0gY2FzZV9hY3Rpb24gZmxhZywgTGlzcF9PYmpl Y3Qgb2JqKQogewotICByZWdpc3RlciBpbnQgYywgYzE7Ci0gIHJlZ2lzdGVyIGludCBpbndv cmQgPSBmbGFnID09IENBU0VfRE9XTjsKKyAgaW50IGMsIGMxOworICBpbnQgaW53b3JkID0g ZmxhZyA9PSBDQVNFX0RPV047CiAKICAgLyogSWYgdGhlIGNhc2UgdGFibGUgaXMgZmxhZ2dl ZCBhcyBtb2RpZmllZCwgcmVzY2FuIGl0LiAgKi8KICAgaWYgKE5JTFAgKFhDSEFSX1RBQkxF IChCVkFSIChjdXJyZW50X2J1ZmZlciwgZG93bmNhc2VfdGFibGUpKS0+ZXh0cmFzWzFdKSkK QEAgLTE5MCw5ICsxOTAsOSBAQAogc3RhdGljIHZvaWQKIGNhc2lmeV9yZWdpb24gKGVudW0g Y2FzZV9hY3Rpb24gZmxhZywgTGlzcF9PYmplY3QgYiwgTGlzcF9PYmplY3QgZSkKIHsKLSAg cmVnaXN0ZXIgaW50IGM7Ci0gIHJlZ2lzdGVyIGludCBpbndvcmQgPSBmbGFnID09IENBU0Vf RE9XTjsKLSAgcmVnaXN0ZXIgaW50IG11bHRpYnl0ZSA9ICFOSUxQIChCVkFSIChjdXJyZW50 X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJzKSk7CisgIGludCBjOworICBp bnQgaW53b3JkID0gZmxhZyA9PSBDQVNFX0RPV047CisgIGludCBtdWx0aWJ5dGUgPSAhTklM UCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVycykp OwogICBwdHJkaWZmX3Qgc3RhcnQsIGVuZDsKICAgcHRyZGlmZl90IHN0YXJ0X2J5dGU7CiAK Cj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FzZXRhYi5jJwotLS0gc3JjL2Nhc2V0YWIuYwky MDEyLTAyLTEwIDE4OjU4OjQ4ICswMDAwCisrKyBzcmMvY2FzZXRhYi5jCTIwMTItMDYtMDMg MDU6NTM6MzggKzAwMDAKQEAgLTI0NSw3ICsyNDUsNyBAQAogdm9pZAogaW5pdF9jYXNldGFi X29uY2UgKHZvaWQpCiB7Ci0gIHJlZ2lzdGVyIGludCBpOworICBpbnQgaTsKICAgTGlzcF9P YmplY3QgZG93biwgdXA7CiAgIERFRlNZTSAoUWNhc2VfdGFibGUsICJjYXNlLXRhYmxlIik7 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2NsLmMnCi0tLSBzcmMvY2NsLmMJMjAxMi0w Mi0xMCAxODo1ODo0OCArMDAwMAorKysgc3JjL2NjbC5jCTIwMTItMDYtMDMgMDU6NTM6Mzgg KzAwMDAKQEAgLTg3NCwxMCArODc0LDEwIEBACiB2b2lkCiBjY2xfZHJpdmVyIChzdHJ1Y3Qg Y2NsX3Byb2dyYW0gKmNjbCwgaW50ICpzb3VyY2UsIGludCAqZGVzdGluYXRpb24sIGludCBz cmNfc2l6ZSwgaW50IGRzdF9zaXplLCBMaXNwX09iamVjdCBjaGFyc2V0X2xpc3QpCiB7Ci0g IHJlZ2lzdGVyIGludCAqcmVnID0gY2NsLT5yZWc7Ci0gIHJlZ2lzdGVyIGludCBpYyA9IGNj bC0+aWM7Ci0gIHJlZ2lzdGVyIGludCBjb2RlID0gMCwgZmllbGQxLCBmaWVsZDI7Ci0gIHJl Z2lzdGVyIExpc3BfT2JqZWN0ICpjY2xfcHJvZyA9IGNjbC0+cHJvZzsKKyAgaW50ICpyZWcg PSBjY2wtPnJlZzsKKyAgaW50IGljID0gY2NsLT5pYzsKKyAgaW50IGNvZGUgPSAwLCBmaWVs ZDEsIGZpZWxkMjsKKyAgTGlzcF9PYmplY3QgKmNjbF9wcm9nID0gY2NsLT5wcm9nOwogICBp bnQgKnNyYyA9IHNvdXJjZSwgKnNyY19lbmQgPSBzcmMgKyBzcmNfc2l6ZTsKICAgaW50ICpk c3QgPSBkZXN0aW5hdGlvbiwgKmRzdF9lbmQgPSBkc3QgKyBkc3Rfc2l6ZTsKICAgaW50IGp1 bXBfYWRkcmVzczsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2hhcnRhYi5jJwotLS0gc3Jj L2NoYXJ0YWIuYwkyMDExLTEyLTExIDAwOjU2OjUwICswMDAwCisrKyBzcmMvY2hhcnRhYi5j CTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTkzLDcgKzkzLDcgQEAKIHByb3BlcnR5 LCB0aGUgcHJvcGVydHkncyB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAg YW5kIDEwCiB0aGF0IHNwZWNpZmllcyBob3cgbWFueSBleHRyYSBzbG90cyB0aGUgY2hhci10 YWJsZSBoYXMuICBPdGhlcndpc2UsCiB0aGUgY2hhci10YWJsZSBoYXMgbm8gZXh0cmEgc2xv dC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHVycG9zZSwgTGlzcF9PYmplY3Qg aW5pdCkKKyAgKExpc3BfT2JqZWN0IHB1cnBvc2UsIExpc3BfT2JqZWN0IGluaXQpCiB7CiAg IExpc3BfT2JqZWN0IHZlY3RvcjsKICAgTGlzcF9PYmplY3QgbjsKCj09PSBtb2RpZmllZCBm aWxlICdzcmMvY20uYycKLS0tIHNyYy9jbS5jCTIwMTItMDEtMTkgMDc6MjE6MjUgKzAwMDAK KysrIHNyYy9jbS5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTE4MiwxNiArMTgy LDE2IEBACiBjYWxjY29zdCAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwKICAgICAg ICAgICBpbnQgc3JjeSwgaW50IHNyY3gsIGludCBkc3R5LCBpbnQgZHN0eCwgaW50IGRvaXQp CiB7Ci0gICAgcmVnaXN0ZXIgaW50ICAgIGRlbHRheSwKLSAgICAgICAgICAgICAgICAgICAg ZGVsdGF4LAotICAgICAgICAgICAgICAgICAgICBjLAotICAgICAgICAgICAgICAgICAgICB0 b3RhbGNvc3Q7CisgICAgaW50ICAgICBkZWx0YXksCisJICAgIGRlbHRheCwKKwkgICAgYywK KwkgICAgdG90YWxjb3N0OwogICAgIGludCAgICAgbnRhYnMsCiAgICAgICAgICAgICBuMnRh YnMsCiAgICAgICAgICAgICB0YWJ4LAogICAgICAgICAgICAgdGFiMngsCiAgICAgICAgICAg ICB0YWJjb3N0OwotICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnA7CisgICAgY29uc3QgY2hh ciAqcDsKIAogICAgIC8qIElmIGhhdmUganVzdCB3cmFwcGVkIG9uIGEgdGVybWluYWwgd2l0 aCB4biwKICAgICAgICBkb24ndCBiZWxpZXZlIHRoZSBjdXJzb3IgcG9zaXRpb246IGdpdmUg dXAgaGVyZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9jbWRzLmMnCi0tLSBzcmMvY21kcy5j CTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9jbWRzLmMJMjAxMi0wNi0wMyAw NTo1MzozOCArMDAwMApAQCAtMzI5LDcgKzMyOSw3IEBACiB7CiAgIGludCBoYWlyeSA9IDA7 CiAgIExpc3BfT2JqZWN0IHRlbTsKLSAgcmVnaXN0ZXIgZW51bSBzeW50YXhjb2RlIHN5bnQ7 CisgIGVudW0gc3ludGF4Y29kZSBzeW50OwogICBMaXNwX09iamVjdCBvdmVyd3JpdGU7CiAg IC8qIExlbmd0aCBvZiBtdWx0aS1ieXRlIGZvcm0gb2YgQy4gICovCiAgIGludCBsZW47Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2NvZGluZy5jJwotLS0gc3JjL2NvZGluZy5jCTIwMTIt MDUtMjYgMjI6Mjc6MjEgKzAwMDAKKysrIHNyYy9jb2RpbmcuYwkyMDEyLTA2LTAzIDA1OjUz OjM4ICswMDAwCkBAIC05NDA1LDcgKzk0MDUsNyBAQAogICAocHRyZGlmZl90IG5hcmdzLCBM aXNwX09iamVjdCAqYXJncykKIHsKICAgTGlzcF9PYmplY3Qgb3BlcmF0aW9uLCB0YXJnZXRf aWR4LCB0YXJnZXQsIHZhbDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgY2hhaW47CisgIExp c3BfT2JqZWN0IGNoYWluOwogCiAgIGlmIChuYXJncyA8IDIpCiAgICAgZXJyb3IgKCJUb28g ZmV3IGFyZ3VtZW50cyIpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9kYXRhLmMnCi0tLSBz cmMvZGF0YS5jCTIwMTItMDUtMzAgMDM6NTk6NDIgKzAwMDAKKysrIHNyYy9kYXRhLmMJMjAx Mi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTAxLDcgKzEwMSw3IEBACiAKIAogTGlzcF9P YmplY3QKLXdyb25nX3R5cGVfYXJndW1lbnQgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByZWRp Y2F0ZSwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsdWUpCit3cm9uZ190eXBlX2FyZ3VtZW50 IChMaXNwX09iamVjdCBwcmVkaWNhdGUsIExpc3BfT2JqZWN0IHZhbHVlKQogewogICAvKiBJ ZiBWQUxVRSBpcyBub3QgZXZlbiBhIHZhbGlkIExpc3Agb2JqZWN0LCB3ZSdkIHdhbnQgdG8g YWJvcnQgaGVyZQogICAgICB3aGVyZSB3ZSBjYW4gZ2V0IGEgYmFja3RyYWNlIHNob3dpbmcg d2hlcmUgaXQgY2FtZSBmcm9tLiAgV2UgdXNlZApAQCAtMzQ5LDcgKzM0OSw3IEBACiAKIERF RlVOICgic2VxdWVuY2VwIiwgRnNlcXVlbmNlcCwgU3NlcXVlbmNlcCwgMSwgMSwgMCwKICAg ICAgICBkb2M6IC8qIFJldHVybiB0IGlmIE9CSkVDVCBpcyBhIHNlcXVlbmNlIChsaXN0IG9y IGFycmF5KS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgb2JqZWN0KQorICAoTGlz cF9PYmplY3Qgb2JqZWN0KQogewogICBpZiAoQ09OU1AgKG9iamVjdCkgfHwgTklMUCAob2Jq ZWN0KSB8fCBBUlJBWVAgKG9iamVjdCkpCiAgICAgcmV0dXJuIFF0OwpAQCAtMzk1LDcgKzM5 NSw3IEBACiAKIERFRlVOICgiY2hhci1vci1zdHJpbmctcCIsIEZjaGFyX29yX3N0cmluZ19w LCBTY2hhcl9vcl9zdHJpbmdfcCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0 IGlmIE9CSkVDVCBpcyBhIGNoYXJhY3RlciBvciBhIHN0cmluZy4gICovKQotICAocmVnaXN0 ZXIgTGlzcF9PYmplY3Qgb2JqZWN0KQorICAoTGlzcF9PYmplY3Qgb2JqZWN0KQogewogICBp ZiAoQ0hBUkFDVEVSUCAob2JqZWN0KSB8fCBTVFJJTkdQIChvYmplY3QpKQogICAgIHJldHVy biBRdDsKQEAgLTQxMyw3ICs0MTMsNyBAQAogCiBERUZVTiAoImludGVnZXItb3ItbWFya2Vy LXAiLCBGaW50ZWdlcl9vcl9tYXJrZXJfcCwgU2ludGVnZXJfb3JfbWFya2VyX3AsIDEsIDEs IDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBPQkpFQ1QgaXMgYW4gaW50ZWdlciBv ciBhIG1hcmtlciAoZWRpdG9yIHBvaW50ZXIpLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBvYmplY3QpCisgIChMaXNwX09iamVjdCBvYmplY3QpCiB7CiAgIGlmIChNQVJLRVJQ IChvYmplY3QpIHx8IElOVEVHRVJQIChvYmplY3QpKQogICAgIHJldHVybiBRdDsKQEAgLTQ2 Nyw3ICs0NjcsNyBAQAogCiBTZWUgSW5mbyBub2RlIGAoZWxpc3ApQ29ucyBDZWxscycgZm9y IGEgZGlzY3Vzc2lvbiBvZiByZWxhdGVkIGJhc2ljCiBMaXNwIGNvbmNlcHRzIHN1Y2ggYXMg Y2FyLCBjZHIsIGNvbnMgY2VsbCBhbmQgbGlzdC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgbGlzdCkKKyAgKExpc3BfT2JqZWN0IGxpc3QpCiB7CiAgIHJldHVybiBDQVIgKGxp c3QpOwogfQpAQCAtNDg1LDcgKzQ4NSw3IEBACiAKIFNlZSBJbmZvIG5vZGUgYChlbGlzcClD b25zIENlbGxzJyBmb3IgYSBkaXNjdXNzaW9uIG9mIHJlbGF0ZWQgYmFzaWMKIExpc3AgY29u Y2VwdHMgc3VjaCBhcyBjZHIsIGNhciwgY29ucyBjZWxsIGFuZCBsaXN0LiAgKi8pCi0gIChy ZWdpc3RlciBMaXNwX09iamVjdCBsaXN0KQorICAoTGlzcF9PYmplY3QgbGlzdCkKIHsKICAg cmV0dXJuIENEUiAobGlzdCk7CiB9CkBAIC00OTksNyArNDk5LDcgQEAKIAogREVGVU4gKCJz ZXRjYXIiLCBGc2V0Y2FyLCBTc2V0Y2FyLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogU2V0 IHRoZSBjYXIgb2YgQ0VMTCB0byBiZSBORVdDQVIuICBSZXR1cm5zIE5FV0NBUi4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgY2VsbCwgTGlzcF9PYmplY3QgbmV3Y2FyKQorICAo TGlzcF9PYmplY3QgY2VsbCwgTGlzcF9PYmplY3QgbmV3Y2FyKQogewogICBDSEVDS19DT05T IChjZWxsKTsKICAgQ0hFQ0tfSU1QVVJFIChjZWxsKTsKQEAgLTUwOSw3ICs1MDksNyBAQAog CiBERUZVTiAoInNldGNkciIsIEZzZXRjZHIsIFNzZXRjZHIsIDIsIDIsIDAsCiAgICAgICAg ZG9jOiAvKiBTZXQgdGhlIGNkciBvZiBDRUxMIHRvIGJlIE5FV0NEUi4gIFJldHVybnMgTkVX Q0RSLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBjZWxsLCBMaXNwX09iamVjdCBu ZXdjZHIpCisgIChMaXNwX09iamVjdCBjZWxsLCBMaXNwX09iamVjdCBuZXdjZHIpCiB7CiAg IENIRUNLX0NPTlMgKGNlbGwpOwogICBDSEVDS19JTVBVUkUgKGNlbGwpOwpAQCAtNTIxLDcg KzUyMSw3IEBACiAKIERFRlVOICgiYm91bmRwIiwgRmJvdW5kcCwgU2JvdW5kcCwgMSwgMSwg MCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0IGlmIFNZTUJPTCdzIHZhbHVlIGlzIG5vdCB2 b2lkLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09i amVjdCBzeW1ib2wpCiB7CiAgIExpc3BfT2JqZWN0IHZhbGNvbnRlbnRzOwogICBzdHJ1Y3Qg TGlzcF9TeW1ib2wgKnN5bTsKQEAgLTU1OSw3ICs1NTksNyBAQAogCiBERUZVTiAoImZib3Vu ZHAiLCBGZmJvdW5kcCwgU2Zib3VuZHAsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1 cm4gdCBpZiBTWU1CT0wncyBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIG5vdCB2b2lkLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09iamVjdCBzeW1i b2wpCiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgcmV0dXJuIChFUSAoWFNZTUJP TCAoc3ltYm9sKS0+ZnVuY3Rpb24sIFF1bmJvdW5kKSA/IFFuaWwgOiBRdCk7CkBAIC01Njgs NyArNTY4LDcgQEAKIERFRlVOICgibWFrdW5ib3VuZCIsIEZtYWt1bmJvdW5kLCBTbWFrdW5i b3VuZCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1ha2UgU1lNQk9MJ3MgdmFsdWUgYmUg dm9pZC4KIFJldHVybiBTWU1CT0wuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5 bWJvbCkKKyAgKExpc3BfT2JqZWN0IHN5bWJvbCkKIHsKICAgQ0hFQ0tfU1lNQk9MIChzeW1i b2wpOwogICBpZiAoU1lNQk9MX0NPTlNUQU5UX1AgKHN5bWJvbCkpCkBAIC01ODAsNyArNTgw LDcgQEAKIERFRlVOICgiZm1ha3VuYm91bmQiLCBGZm1ha3VuYm91bmQsIFNmbWFrdW5ib3Vu ZCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1ha2UgU1lNQk9MJ3MgZnVuY3Rpb24gZGVm aW5pdGlvbiBiZSB2b2lkLgogUmV0dXJuIFNZTUJPTC4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3Qgc3ltYm9sKQorICAoTGlzcF9PYmplY3Qgc3ltYm9sKQogewogICBDSEVDS19T WU1CT0wgKHN5bWJvbCk7CiAgIGlmIChOSUxQIChzeW1ib2wpIHx8IEVRIChzeW1ib2wsIFF0 KSkKQEAgLTU5MSw3ICs1OTEsNyBAQAogCiBERUZVTiAoInN5bWJvbC1mdW5jdGlvbiIsIEZz eW1ib2xfZnVuY3Rpb24sIFNzeW1ib2xfZnVuY3Rpb24sIDEsIDEsIDAsCiAgICAgICAgZG9j OiAvKiBSZXR1cm4gU1lNQk9MJ3MgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIEVycm9yIGlmIHRo YXQgaXMgdm9pZC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ltYm9sKQorICAo TGlzcF9PYmplY3Qgc3ltYm9sKQogewogICBDSEVDS19TWU1CT0wgKHN5bWJvbCk7CiAgIGlm ICghRVEgKFhTWU1CT0wgKHN5bWJvbCktPmZ1bmN0aW9uLCBRdW5ib3VuZCkpCkBAIC02MDEs NyArNjAxLDcgQEAKIAogREVGVU4gKCJzeW1ib2wtcGxpc3QiLCBGc3ltYm9sX3BsaXN0LCBT c3ltYm9sX3BsaXN0LCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIFNZTUJPTCdz IHByb3BlcnR5IGxpc3QuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCkK KyAgKExpc3BfT2JqZWN0IHN5bWJvbCkKIHsKICAgQ0hFQ0tfU1lNQk9MIChzeW1ib2wpOwog ICByZXR1cm4gWFNZTUJPTCAoc3ltYm9sKS0+cGxpc3Q7CkBAIC02MDksOSArNjA5LDkgQEAK IAogREVGVU4gKCJzeW1ib2wtbmFtZSIsIEZzeW1ib2xfbmFtZSwgU3N5bWJvbF9uYW1lLCAx LCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIFNZTUJPTCdzIG5hbWUsIGEgc3RyaW5n LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wpCisgIChMaXNwX09iamVj dCBzeW1ib2wpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG5hbWU7CisgIExpc3BfT2Jq ZWN0IG5hbWU7CiAKICAgQ0hFQ0tfU1lNQk9MIChzeW1ib2wpOwogICBuYW1lID0gU1lNQk9M X05BTUUgKHN5bWJvbCk7CkBAIC02MjAsOSArNjIwLDkgQEAKIAogREVGVU4gKCJmc2V0Iiwg RmZzZXQsIFNmc2V0LCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogU2V0IFNZTUJPTCdzIGZ1 bmN0aW9uIGRlZmluaXRpb24gdG8gREVGSU5JVElPTiwgYW5kIHJldHVybiBERUZJTklUSU9O LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IGRl ZmluaXRpb24pCisgIChMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IGRlZmluaXRp b24pCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZ1bmN0aW9uOworICBMaXNwX09iamVj dCBmdW5jdGlvbjsKIAogICBDSEVDS19TWU1CT0wgKHN5bWJvbCk7CiAgIGlmIChOSUxQIChz eW1ib2wpIHx8IEVRIChzeW1ib2wsIFF0KSkKQEAgLTY1Miw3ICs2NTIsNyBAQAogVGhlIG9w dGlvbmFsIHRoaXJkIGFyZ3VtZW50IERPQ1NUUklORyBzcGVjaWZpZXMgdGhlIGRvY3VtZW50 YXRpb24gc3RyaW5nCiBmb3IgU1lNQk9MOyBpZiBpdCBpcyBvbWl0dGVkIG9yIG5pbCwgU1lN Qk9MIHVzZXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nCiBkZXRlcm1pbmVkIGJ5IERFRklO SVRJT04uICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmpl Y3QgZGVmaW5pdGlvbiwgTGlzcF9PYmplY3QgZG9jc3RyaW5nKQorICAoTGlzcF9PYmplY3Qg c3ltYm9sLCBMaXNwX09iamVjdCBkZWZpbml0aW9uLCBMaXNwX09iamVjdCBkb2NzdHJpbmcp CiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgaWYgKENPTlNQIChYU1lNQk9MIChz eW1ib2wpLT5mdW5jdGlvbikKQEAgLTY3MSw3ICs2NzEsNyBAQAogCiBERUZVTiAoInNldHBs aXN0IiwgRnNldHBsaXN0LCBTc2V0cGxpc3QsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBT ZXQgU1lNQk9MJ3MgcHJvcGVydHkgbGlzdCB0byBORVdQTElTVCwgYW5kIHJldHVybiBORVdQ TElTVC4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVj dCBuZXdwbGlzdCkKKyAgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgbmV3cGxp c3QpCiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKICAgWFNZTUJPTCAoc3ltYm9sKS0+ cGxpc3QgPSBuZXdwbGlzdDsKQEAgLTgyNCw5ICs4MjQsOSBAQAogICAgc3dhcF9pbl9zeW12 YWxfZm9yd2FyZGluZyBmb3IgdGhhdC4gICovCiAKIExpc3BfT2JqZWN0Ci1kb19zeW12YWxf Zm9yd2FyZGluZyAocmVnaXN0ZXIgdW5pb24gTGlzcF9Gd2QgKnZhbGNvbnRlbnRzKQorZG9f c3ltdmFsX2ZvcndhcmRpbmcgKHVuaW9uIExpc3BfRndkICp2YWxjb250ZW50cykKIHsKLSAg cmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHN3aXRj aCAoWEZXRFRZUEUgKHZhbGNvbnRlbnRzKSkKICAgICB7CiAgICAgY2FzZSBMaXNwX0Z3ZF9J bnQ6CkBAIC04NzAsNyArODcwLDggQEAKICAgIGN1cnJlbnQgYnVmZmVyLiAgVGhpcyBvbmx5 IHBsYXlzIGEgcm9sZSBmb3IgcGVyLWJ1ZmZlciB2YXJpYWJsZXMuICAqLwogCiBzdGF0aWMg dm9pZAotc3RvcmVfc3ltdmFsX2ZvcndhcmRpbmcgKHVuaW9uIExpc3BfRndkICp2YWxjb250 ZW50cywgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbmV3dmFsLCBzdHJ1Y3QgYnVmZmVyICpidWYp CitzdG9yZV9zeW12YWxfZm9yd2FyZGluZyAodW5pb24gTGlzcF9Gd2QgKnZhbGNvbnRlbnRz LCBMaXNwX09iamVjdCBuZXd2YWwsCisJCQkgc3RydWN0IGJ1ZmZlciAqYnVmKQogewogICBz d2l0Y2ggKFhGV0RUWVBFICh2YWxjb250ZW50cykpCiAgICAgewpAQCAtOTc5LDcgKzk4MCw3 IEBACiBzdGF0aWMgdm9pZAogc3dhcF9pbl9zeW12YWxfZm9yd2FyZGluZyAoc3RydWN0IExp c3BfU3ltYm9sICpzeW1ib2wsIHN0cnVjdCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqYmx2 KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW0xOworICBMaXNwX09iamVjdCB0ZW0x OwogCiAgIGVhc3NlcnQgKGJsdiA9PSBTWU1CT0xfQkxWIChzeW1ib2wpKTsKIApAQCAtMTA2 Nyw3ICsxMDY4LDcgQEAKIAogREVGVU4gKCJzZXQiLCBGc2V0LCBTc2V0LCAyLCAyLCAwLAog ICAgICAgIGRvYzogLyogU2V0IFNZTUJPTCdzIHZhbHVlIHRvIE5FV1ZBTCwgYW5kIHJldHVy biBORVdWQUwuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9P YmplY3QgbmV3dmFsKQorICAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCBuZXd2 YWwpCiB7CiAgIHNldF9pbnRlcm5hbCAoc3ltYm9sLCBuZXd2YWwsIFFuaWwsIDApOwogICBy ZXR1cm4gbmV3dmFsOwpAQCAtMTExNiw3ICsxMTE3LDggQEAKICAgIElmIEJJTkRGTEFHIGlz IG5vbnplcm8sIHdlIGRvbid0IGRvIHRoYXQuICAqLwogCiB2b2lkCi1zZXRfaW50ZXJuYWwg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN5bWJvbCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbmV3 dmFsLCByZWdpc3RlciBMaXNwX09iamVjdCB3aGVyZSwgaW50IGJpbmRmbGFnKQorc2V0X2lu dGVybmFsIChMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IG5ld3ZhbCwgTGlzcF9P YmplY3Qgd2hlcmUsCisJICAgICAgaW50IGJpbmRmbGFnKQogewogICBpbnQgdm9pZGUgPSBF USAobmV3dmFsLCBRdW5ib3VuZCk7CiAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltOwpAQCAt MTMxNyw3ICsxMzE5LDcgQEAKIGZvciB0aGlzIHZhcmlhYmxlLiAgKi8pCiAgIChMaXNwX09i amVjdCBzeW1ib2wpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbHVlOworICBMaXNw X09iamVjdCB2YWx1ZTsKIAogICB2YWx1ZSA9IGRlZmF1bHRfdmFsdWUgKHN5bWJvbCk7CiAg IHJldHVybiAoRVEgKHZhbHVlLCBRdW5ib3VuZCkgPyBRbmlsIDogUXQpOwpAQCAtMTMzMCw3 ICsxMzMyLDcgQEAKIGxvY2FsIGJpbmRpbmdzIGluIGNlcnRhaW4gYnVmZmVycy4gICovKQog ICAoTGlzcF9PYmplY3Qgc3ltYm9sKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWx1 ZTsKKyAgTGlzcF9PYmplY3QgdmFsdWU7CiAKICAgdmFsdWUgPSBkZWZhdWx0X3ZhbHVlIChz eW1ib2wpOwogICBpZiAoIUVRICh2YWx1ZSwgUXVuYm91bmQpKQpAQCAtMTQyNCw4ICsxNDI2 LDggQEAKIHVzYWdlOiAoc2V0cS1kZWZhdWx0IFtWQVIgVkFMVUVdLi4uKSAgKi8pCiAgIChM aXNwX09iamVjdCBhcmdzKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBhcmdzX2xlZnQ7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbCwgc3ltYm9sOworICBMaXNwX09iamVjdCBh cmdzX2xlZnQ7CisgIExpc3BfT2JqZWN0IHZhbCwgc3ltYm9sOwogICBzdHJ1Y3QgZ2Nwcm8g Z2Nwcm8xOwogCiAgIGlmIChOSUxQIChhcmdzKSkKQEAgLTE0OTYsNyArMTQ5OCw3IEBACiB3 aGljaCBtYWtlcyBhIHZhcmlhYmxlIGxvY2FsIGluIGp1c3Qgb25lIGJ1ZmZlci4KIAogVGhl IGZ1bmN0aW9uIGBkZWZhdWx0LXZhbHVlJyBnZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCBg c2V0LWRlZmF1bHQnIHNldHMgaXQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZh cmlhYmxlKQorICAoTGlzcF9PYmplY3QgdmFyaWFibGUpCiB7CiAgIHN0cnVjdCBMaXNwX1N5 bWJvbCAqc3ltOwogICBzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdiA9IE5V TEw7CkBAIC0xNTczLDkgKzE1NzUsOSBAQAogCiBEbyBub3QgdXNlIGBtYWtlLWxvY2FsLXZh cmlhYmxlJyB0byBtYWtlIGEgaG9vayB2YXJpYWJsZSBidWZmZXItbG9jYWwuCiBJbnN0ZWFk LCB1c2UgYGFkZC1ob29rJyBhbmQgc3BlY2lmeSB0IGZvciB0aGUgTE9DQUwgYXJndW1lbnQu ICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlKQorICAoTGlzcF9PYmpl Y3QgdmFyaWFibGUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTsKKyAgTGlzcF9P YmplY3QgdGVtOwogICBpbnQgZm9yd2FyZGVkIElGX0xJTlQgKD0gMCk7CiAgIHVuaW9uIExp c3BfVmFsX0Z3ZCB2YWxjb250ZW50cyBJRl9MSU5UICg9IHswfSk7CiAgIHN0cnVjdCBMaXNw X1N5bWJvbCAqc3ltOwpAQCAtMTY3NCw5ICsxNjc2LDkgQEAKICAgICAgICAxLCAxLCAidktp bGwgTG9jYWwgVmFyaWFibGU6ICIsCiAgICAgICAgZG9jOiAvKiBNYWtlIFZBUklBQkxFIG5v IGxvbmdlciBoYXZlIGEgc2VwYXJhdGUgdmFsdWUgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgog RnJvbSBub3cgb24gdGhlIGRlZmF1bHQgdmFsdWUgd2lsbCBhcHBseSBpbiB0aGlzIGJ1ZmZl ci4gIFJldHVybiBWQVJJQUJMRS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFy aWFibGUpCisgIChMaXNwX09iamVjdCB2YXJpYWJsZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9P YmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIHN0cnVjdCBMaXNwX0J1ZmZlcl9M b2NhbF9WYWx1ZSAqYmx2OwogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bTsKIApAQCAtMTc2 Miw3ICsxNzY0LDcgQEAKIE5vdGUgdGhhdCBzaW5jZSBFbWFjcyAyMy4xLCB2YXJpYWJsZXMg Y2Fubm90IGJlIGJvdGggYnVmZmVyLWxvY2FsIGFuZAogZnJhbWUtbG9jYWwgYW55IG1vcmUg KGJ1ZmZlci1sb2NhbCBiaW5kaW5ncyB1c2VkIHRvIHRha2UgcHJlY2VkZW5jZSBvdmVyCiBm cmFtZS1sb2NhbCBiaW5kaW5ncykuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZh cmlhYmxlKQorICAoTGlzcF9PYmplY3QgdmFyaWFibGUpCiB7CiAgIGludCBmb3J3YXJkZWQ7 CiAgIHVuaW9uIExpc3BfVmFsX0Z3ZCB2YWxjb250ZW50czsKQEAgLTE4MTcsOSArMTgxOSw5 IEBACiAgICAgICAgMSwgMiwgMCwKICAgICAgICBkb2M6IC8qIE5vbi1uaWwgaWYgVkFSSUFC TEUgaGFzIGEgbG9jYWwgYmluZGluZyBpbiBidWZmZXIgQlVGRkVSLgogQlVGRkVSIGRlZmF1 bHRzIHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdmFyaWFibGUsIExpc3BfT2JqZWN0IGJ1ZmZlcikKKyAgKExpc3BfT2JqZWN0IHZhcmlh YmxlLCBMaXNwX09iamVjdCBidWZmZXIpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBidWZmZXIg KmJ1ZjsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmOwogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5 bTsKIAogICBpZiAoTklMUCAoYnVmZmVyKSkKQEAgLTE4ODIsNyArMTg4NCw3IEBACiB3aWxs IHByb2R1Y2UgYSBidWZmZXIgbG9jYWwgYmluZGluZy4gIFNlZSBJbmZvIG5vZGUKIGAoZWxp c3ApQ3JlYXRpbmcgQnVmZmVyLUxvY2FsJy4KIEJVRkZFUiBkZWZhdWx0cyB0byB0aGUgY3Vy cmVudCBidWZmZXIuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlLCBM aXNwX09iamVjdCBidWZmZXIpCisgIChMaXNwX09iamVjdCB2YXJpYWJsZSwgTGlzcF9PYmpl Y3QgYnVmZmVyKQogewogICBzdHJ1Y3QgTGlzcF9TeW1ib2wgKnN5bTsKIApAQCAtMTkxNSw3 ICsxOTE3LDcgQEAKIElmIHRoZSBjdXJyZW50IGJpbmRpbmcgaXMgYnVmZmVyLWxvY2FsLCB0 aGUgdmFsdWUgaXMgdGhlIGN1cnJlbnQgYnVmZmVyLgogSWYgdGhlIGN1cnJlbnQgYmluZGlu ZyBpcyBmcmFtZS1sb2NhbCwgdGhlIHZhbHVlIGlzIHRoZSBzZWxlY3RlZCBmcmFtZS4KIElm IHRoZSBjdXJyZW50IGJpbmRpbmcgaXMgZ2xvYmFsICh0aGUgZGVmYXVsdCksIHRoZSB2YWx1 ZSBpcyBuaWwuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhcmlhYmxlKQorICAo TGlzcF9PYmplY3QgdmFyaWFibGUpCiB7CiAgIHN0cnVjdCBMaXNwX1N5bWJvbCAqc3ltOwog CkBAIC0yMDA1LDcgKzIwMDcsNyBAQAogICAgVGhpcyBpcyBsaWtlIEZpbmRpcmVjdF9mdW5j dGlvbiwgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBzaWduYWwgYW4KICAgIGVycm9yIGlmIHRo ZSBjaGFpbiBlbmRzIHVwIHVuYm91bmQuICAqLwogTGlzcF9PYmplY3QKLWluZGlyZWN0X2Z1 bmN0aW9uIChyZWdpc3RlciBMaXNwX09iamVjdCBvYmplY3QpCitpbmRpcmVjdF9mdW5jdGlv biAoTGlzcF9PYmplY3Qgb2JqZWN0KQogewogICBMaXNwX09iamVjdCB0b3J0b2lzZSwgaGFy ZTsKIApAQCAtMjAzNyw3ICsyMDM5LDcgQEAKIE9wdGlvbmFsIGFyZyBOT0VSUk9SIG5vbi1u aWwgbWVhbnMgdG8gcmV0dXJuIG5pbCBpbnN0ZWFkIG9mIHNpZ25hbGluZy4KIFNpZ25hbCBh IGN5Y2xpYy1mdW5jdGlvbi1pbmRpcmVjdGlvbiBlcnJvciBpZiB0aGVyZSBpcyBhIGxvb3Ag aW4gdGhlCiBmdW5jdGlvbiBjaGFpbiBvZiBzeW1ib2xzLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBvYmplY3QsIExpc3BfT2JqZWN0IG5vZXJyb3IpCisgIChMaXNwX09iamVj dCBvYmplY3QsIExpc3BfT2JqZWN0IG5vZXJyb3IpCiB7CiAgIExpc3BfT2JqZWN0IHJlc3Vs dDsKIApAQCAtMjA2MSw5ICsyMDYzLDkgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUg ZWxlbWVudCBvZiBBUlJBWSBhdCBpbmRleCBJRFguCiBBUlJBWSBtYXkgYmUgYSB2ZWN0b3Is IGEgc3RyaW5nLCBhIGNoYXItdGFibGUsIGEgYm9vbC12ZWN0b3IsCiBvciBhIGJ5dGUtY29k ZSBvYmplY3QuICBJRFggc3RhcnRzIGF0IDAuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IGFycmF5LCBMaXNwX09iamVjdCBpZHgpCisgIChMaXNwX09iamVjdCBhcnJheSwgTGlz cF9PYmplY3QgaWR4KQogewotICByZWdpc3RlciBFTUFDU19JTlQgaWR4dmFsOworICBFTUFD U19JTlQgaWR4dmFsOwogCiAgIENIRUNLX05VTUJFUiAoaWR4KTsKICAgaWR4dmFsID0gWElO VCAoaWR4KTsKQEAgLTIxMTYsOSArMjExOCw5IEBACiAgICAgICAgZG9jOiAvKiBTdG9yZSBp bnRvIHRoZSBlbGVtZW50IG9mIEFSUkFZIGF0IGluZGV4IElEWCB0aGUgdmFsdWUgTkVXRUxU LgogUmV0dXJuIE5FV0VMVC4gIEFSUkFZIG1heSBiZSBhIHZlY3RvciwgYSBzdHJpbmcsIGEg Y2hhci10YWJsZSBvciBhCiBib29sLXZlY3Rvci4gIElEWCBzdGFydHMgYXQgMC4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJyYXksIExpc3BfT2JqZWN0IGlkeCwgTGlzcF9P YmplY3QgbmV3ZWx0KQorICAoTGlzcF9PYmplY3QgYXJyYXksIExpc3BfT2JqZWN0IGlkeCwg TGlzcF9PYmplY3QgbmV3ZWx0KQogewotICByZWdpc3RlciBFTUFDU19JTlQgaWR4dmFsOwor ICBFTUFDU19JTlQgaWR4dmFsOwogCiAgIENIRUNLX05VTUJFUiAoaWR4KTsKICAgaWR4dmFs ID0gWElOVCAoaWR4KTsKQEAgLTIyNzIsMjEgKzIyNzQsMjEgQEAKIAogREVGVU4gKCI9Iiwg RmVxbHNpZ24sIFNlcWxzaWduLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHQg aWYgdHdvIGFyZ3MsIGJvdGggbnVtYmVycyBvciBtYXJrZXJzLCBhcmUgZXF1YWwuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG51bTEsIExpc3BfT2JqZWN0IG51bTIpCisgIChM aXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0yKQogewogICByZXR1cm4gYXJpdGhj b21wYXJlIChudW0xLCBudW0yLCBlcXVhbCk7CiB9CiAKIERFRlVOICgiPCIsIEZsc3MsIFNs c3MsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJzdCBhcmcgaXMg bGVzcyB0aGFuIHNlY29uZCBhcmcuICBCb3RoIG11c3QgYmUgbnVtYmVycyBvciBtYXJrZXJz LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0y KQorICAoTGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikKIHsKICAgcmV0dXJu IGFyaXRoY29tcGFyZSAobnVtMSwgbnVtMiwgbGVzcyk7CiB9CiAKIERFRlVOICgiPiIsIEZn dHIsIFNndHIsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJzdCBh cmcgaXMgZ3JlYXRlciB0aGFuIHNlY29uZCBhcmcuICBCb3RoIG11c3QgYmUgbnVtYmVycyBv ciBtYXJrZXJzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNwX09i amVjdCBudW0yKQorICAoTGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikKIHsK ICAgcmV0dXJuIGFyaXRoY29tcGFyZSAobnVtMSwgbnVtMiwgZ3J0cik7CiB9CkBAIC0yMjk0 LDcgKzIyOTYsNyBAQAogREVGVU4gKCI8PSIsIEZsZXEsIFNsZXEsIDIsIDIsIDAsCiAgICAg ICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJzdCBhcmcgaXMgbGVzcyB0aGFuIG9yIGVxdWFs IHRvIHNlY29uZCBhcmcuCiBCb3RoIG11c3QgYmUgbnVtYmVycyBvciBtYXJrZXJzLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0yKQorICAo TGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikKIHsKICAgcmV0dXJuIGFyaXRo Y29tcGFyZSAobnVtMSwgbnVtMiwgbGVzc19vcl9lcXVhbCk7CiB9CkBAIC0yMzAyLDIxICsy MzA0LDIxIEBACiBERUZVTiAoIj49IiwgRmdlcSwgU2dlcSwgMiwgMiwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiB0IGlmIGZpcnN0IGFyZyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gc2Vjb25kIGFyZy4KIEJvdGggbXVzdCBiZSBudW1iZXJzIG9yIG1hcmtlcnMuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG51bTEsIExpc3BfT2JqZWN0IG51bTIpCisgIChM aXNwX09iamVjdCBudW0xLCBMaXNwX09iamVjdCBudW0yKQogewogICByZXR1cm4gYXJpdGhj b21wYXJlIChudW0xLCBudW0yLCBncnRyX29yX2VxdWFsKTsKIH0KIAogREVGVU4gKCIvPSIs IEZuZXEsIFNuZXEsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdCBpZiBmaXJz dCBhcmcgaXMgbm90IGVxdWFsIHRvIHNlY29uZCBhcmcuICBCb3RoIG11c3QgYmUgbnVtYmVy cyBvciBtYXJrZXJzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBudW0xLCBMaXNw X09iamVjdCBudW0yKQorICAoTGlzcF9PYmplY3QgbnVtMSwgTGlzcF9PYmplY3QgbnVtMikK IHsKICAgcmV0dXJuIGFyaXRoY29tcGFyZSAobnVtMSwgbnVtMiwgbm90ZXF1YWwpOwogfQog CiBERUZVTiAoInplcm9wIiwgRnplcm9wLCBTemVyb3AsIDEsIDEsIDAsCiAgICAgICAgZG9j OiAvKiBSZXR1cm4gdCBpZiBOVU1CRVIgaXMgemVyby4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3QgbnVtYmVyKQorICAoTGlzcF9PYmplY3QgbnVtYmVyKQogewogICBDSEVDS19O VU1CRVJfT1JfRkxPQVQgKG51bWJlcik7CiAKQEAgLTI0NjgsMTAgKzI0NzAsMTAgQEAKIElm IEJBU0UsIGludGVycHJldCBTVFJJTkcgYXMgYSBudW1iZXIgaW4gdGhhdCBiYXNlLiAgSWYg QkFTRSBpc24ndAogcHJlc2VudCwgYmFzZSAxMCBpcyB1c2VkLiAgQkFTRSBtdXN0IGJlIGJl dHdlZW4gMiBhbmQgMTYgKGluY2x1c2l2ZSkuCiBJZiB0aGUgYmFzZSB1c2VkIGlzIG5vdCAx MCwgU1RSSU5HIGlzIGFsd2F5cyBwYXJzZWQgYXMgaW50ZWdlci4gICovKQotICAocmVnaXN0 ZXIgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBiYXNlKQorICAoTGlzcF9PYmpl Y3Qgc3RyaW5nLCBMaXNwX09iamVjdCBiYXNlKQogewotICByZWdpc3RlciBjaGFyICpwOwot ICByZWdpc3RlciBpbnQgYjsKKyAgY2hhciAqcDsKKyAgaW50IGI7CiAgIExpc3BfT2JqZWN0 IHZhbDsKIAogICBDSEVDS19TVFJJTkcgKHN0cmluZyk7CkBAIC0yNTEyLDEwICsyNTE0LDEw IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIGFyaXRoX2RyaXZlciAoZW51bSBhcml0aG9wIGNv ZGUsIHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwogICBwdHJkaWZmX3QgYXJn bnVtOwotICByZWdpc3RlciBFTUFDU19JTlQgYWNjdW0gPSAwOwotICByZWdpc3RlciBFTUFD U19JTlQgbmV4dDsKKyAgRU1BQ1NfSU5UIGFjY3VtID0gMDsKKyAgRU1BQ1NfSU5UIG5leHQ7 CiAKICAgaW50IG92ZXJmbG93ID0gMDsKICAgcHRyZGlmZl90IG9rX2FyZ3M7CkBAIC0yNjI1 LDcgKzI2MjcsNyBAQAogZmxvYXRfYXJpdGhfZHJpdmVyIChkb3VibGUgYWNjdW0sIHB0cmRp ZmZfdCBhcmdudW0sIGVudW0gYXJpdGhvcCBjb2RlLAogCQkgICAgcHRyZGlmZl90IG5hcmdz LCBMaXNwX09iamVjdCAqYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOwor ICBMaXNwX09iamVjdCB2YWw7CiAgIGRvdWJsZSBuZXh0OwogCiAgIGZvciAoOyBhcmdudW0g PCBuYXJnczsgYXJnbnVtKyspCkBAIC0yNzI0LDcgKzI3MjYsNyBAQAogREVGVU4gKCIlIiwg RnJlbSwgU3JlbSwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiByZW1haW5kZXIg b2YgWCBkaXZpZGVkIGJ5IFkuCiBCb3RoIG11c3QgYmUgaW50ZWdlcnMgb3IgbWFya2Vycy4g ICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgeCwgTGlzcF9PYmplY3QgeSkKKyAgKExp c3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHkpCiB7CiAgIExpc3BfT2JqZWN0IHZhbDsKIApA QCAtMjc2NCw3ICsyNzY2LDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiBYIG1vZHVsbyBZ LgogVGhlIHJlc3VsdCBmYWxscyBiZXR3ZWVuIHplcm8gKGluY2x1c2l2ZSkgYW5kIFkgKGV4 Y2x1c2l2ZSkuCiBCb3RoIFggYW5kIFkgbXVzdCBiZSBudW1iZXJzIG9yIG1hcmtlcnMuICAq LykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHkpCisgIChMaXNw X09iamVjdCB4LCBMaXNwX09iamVjdCB5KQogewogICBMaXNwX09iamVjdCB2YWw7CiAgIEVN QUNTX0lOVCBpMSwgaTI7CkBAIC0yODQwLDkgKzI4NDIsOSBAQAogICAgICAgIGRvYzogLyog UmV0dXJuIFZBTFVFIHdpdGggaXRzIGJpdHMgc2hpZnRlZCBsZWZ0IGJ5IENPVU5ULgogSWYg Q09VTlQgaXMgbmVnYXRpdmUsIHNoaWZ0aW5nIGlzIGFjdHVhbGx5IHRvIHRoZSByaWdodC4K IEluIHRoaXMgY2FzZSwgdGhlIHNpZ24gYml0IGlzIGR1cGxpY2F0ZWQuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IHZhbHVlLCBMaXNwX09iamVjdCBjb3VudCkKKyAgKExpc3Bf T2JqZWN0IHZhbHVlLCBMaXNwX09iamVjdCBjb3VudCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9P YmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAKICAgQ0hFQ0tfTlVNQkVSICh2YWx1 ZSk7CiAgIENIRUNLX05VTUJFUiAoY291bnQpOwpAQCAtMjg2Miw5ICsyODY0LDkgQEAKICAg ICAgICBkb2M6IC8qIFJldHVybiBWQUxVRSB3aXRoIGl0cyBiaXRzIHNoaWZ0ZWQgbGVmdCBi eSBDT1VOVC4KIElmIENPVU5UIGlzIG5lZ2F0aXZlLCBzaGlmdGluZyBpcyBhY3R1YWxseSB0 byB0aGUgcmlnaHQuCiBJbiB0aGlzIGNhc2UsIHplcm9zIGFyZSBzaGlmdGVkIGluIG9uIHRo ZSBsZWZ0LiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCB2YWx1ZSwgTGlzcF9PYmpl Y3QgY291bnQpCisgIChMaXNwX09iamVjdCB2YWx1ZSwgTGlzcF9PYmplY3QgY291bnQpCiB7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwogCiAg IENIRUNLX05VTUJFUiAodmFsdWUpOwogICBDSEVDS19OVU1CRVIgKGNvdW50KTsKQEAgLTI4 ODMsNyArMjg4NSw3IEBACiBERUZVTiAoIjErIiwgRmFkZDEsIFNhZGQxLCAxLCAxLCAwLAog ICAgICAgIGRvYzogLyogUmV0dXJuIE5VTUJFUiBwbHVzIG9uZS4gIE5VTUJFUiBtYXkgYmUg YSBudW1iZXIgb3IgYSBtYXJrZXIuCiBNYXJrZXJzIGFyZSBjb252ZXJ0ZWQgdG8gaW50ZWdl cnMuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG51bWJlcikKKyAgKExpc3BfT2Jq ZWN0IG51bWJlcikKIHsKICAgQ0hFQ0tfTlVNQkVSX09SX0ZMT0FUX0NPRVJDRV9NQVJLRVIg KG51bWJlcik7CiAKQEAgLTI4OTcsNyArMjg5OSw3IEBACiBERUZVTiAoIjEtIiwgRnN1YjEs IFNzdWIxLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIE5VTUJFUiBtaW51cyBv bmUuICBOVU1CRVIgbWF5IGJlIGEgbnVtYmVyIG9yIGEgbWFya2VyLgogTWFya2VycyBhcmUg Y29udmVydGVkIHRvIGludGVnZXJzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBu dW1iZXIpCisgIChMaXNwX09iamVjdCBudW1iZXIpCiB7CiAgIENIRUNLX05VTUJFUl9PUl9G TE9BVF9DT0VSQ0VfTUFSS0VSIChudW1iZXIpOwogCkBAIC0yOTEwLDcgKzI5MTIsNyBAQAog CiBERUZVTiAoImxvZ25vdCIsIEZsb2dub3QsIFNsb2dub3QsIDEsIDEsIDAsCiAgICAgICAg ZG9jOiAvKiBSZXR1cm4gdGhlIGJpdHdpc2UgY29tcGxlbWVudCBvZiBOVU1CRVIuICBOVU1C RVIgbXVzdCBiZSBhbiBpbnRlZ2VyLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBu dW1iZXIpCisgIChMaXNwX09iamVjdCBudW1iZXIpCiB7CiAgIENIRUNLX05VTUJFUiAobnVt YmVyKTsKICAgWFNFVElOVCAobnVtYmVyLCB+WElOVCAobnVtYmVyKSk7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2RpcmVkLmMnCi0tLSBzcmMvZGlyZWQuYwkyMDEyLTA0LTIyIDAwOjUz OjMyICswMDAwCisrKyBzcmMvZGlyZWQuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBA IC03ODcsNyArNzg3LDcgQEAKIHN0YXRpYyBwdHJkaWZmX3QKIHNjbXAgKGNvbnN0IGNoYXIg KnMxLCBjb25zdCBjaGFyICpzMiwgcHRyZGlmZl90IGxlbikKIHsKLSAgcmVnaXN0ZXIgcHRy ZGlmZl90IGwgPSBsZW47CisgIHB0cmRpZmZfdCBsID0gbGVuOwogCiAgIGlmIChjb21wbGV0 aW9uX2lnbm9yZV9jYXNlKQogICAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZGlzcG5l dy5jJwotLS0gc3JjL2Rpc3BuZXcuYwkyMDEyLTA1LTMwIDE5OjIzOjM3ICswMDAwCisrKyBz cmMvZGlzcG5ldy5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTg0OCw3ICs4NDgs NyBAQAogICAgY3VycmVudCBtYXRyaXguICAqLwogCiB2b2lkCi1jbGVhcl9jdXJyZW50X21h dHJpY2VzIChyZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmYpCitjbGVhcl9jdXJyZW50X21hdHJp Y2VzIChzdHJ1Y3QgZnJhbWUgKmYpCiB7CiAgIC8qIENsZWFyIGZyYW1lIGN1cnJlbnQgbWF0 cml4LCBpZiB3ZSBoYXZlIG9uZS4gICovCiAgIGlmIChmLT5jdXJyZW50X21hdHJpeCkKQEAg LTg3Myw3ICs4NzMsNyBAQAogLyogQ2xlYXIgb3V0IGFsbCBkaXNwbGF5IGxpbmVzIG9mIEYg Zm9yIGEgY29taW5nIHJlZGlzcGxheS4gICovCiAKIHZvaWQKLWNsZWFyX2Rlc2lyZWRfbWF0 cmljZXMgKHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZikKK2NsZWFyX2Rlc2lyZWRfbWF0cmlj ZXMgKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgaWYgKGYtPmRlc2lyZWRfbWF0cml4KQogICAg IGNsZWFyX2dseXBoX21hdHJpeCAoZi0+ZGVzaXJlZF9tYXRyaXgpOwpAQCAtNDg4OSw3ICs0 ODg5LDcgQEAKICAgaW50ICpuZXdfaGFzaCA9IChpbnQgKikgYWxsb2NhIChGUkFNRV9MSU5F UyAoZnJhbWUpICogc2l6ZW9mIChpbnQpKTsKICAgaW50ICpkcmF3X2Nvc3QgPSAoaW50ICop IGFsbG9jYSAoRlJBTUVfTElORVMgKGZyYW1lKSAqIHNpemVvZiAoaW50KSk7CiAgIGludCAq b2xkX2RyYXdfY29zdCA9IChpbnQgKikgYWxsb2NhIChGUkFNRV9MSU5FUyAoZnJhbWUpICog c2l6ZW9mIChpbnQpKTsKLSAgcmVnaXN0ZXIgaW50IGk7CisgIGludCBpOwogICBpbnQgZnJl ZV9hdF9lbmRfdnBvcyA9IEZSQU1FX0xJTkVTIChmcmFtZSk7CiAgIHN0cnVjdCBnbHlwaF9t YXRyaXggKmN1cnJlbnRfbWF0cml4ID0gZnJhbWUtPmN1cnJlbnRfbWF0cml4OwogICBzdHJ1 Y3QgZ2x5cGhfbWF0cml4ICpkZXNpcmVkX21hdHJpeCA9IGZyYW1lLT5kZXNpcmVkX21hdHJp eDsKQEAgLTU3MjQsNyArNTcyNCw4IEBACiAgICBzYWZlIHRvIGNoYW5nZSBmcmFtZSBzaXpl cyB3aGlsZSBhIHJlZGlzcGxheSBpcyBpbiBwcm9ncmVzcy4gICovCiAKIHZvaWQKLWNoYW5n ZV9mcmFtZV9zaXplIChyZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmYsIGludCBuZXdoZWlnaHQs IGludCBuZXd3aWR0aCwgaW50IHByZXRlbmQsIGludCBkZWxheSwgaW50IHNhZmUpCitjaGFu Z2VfZnJhbWVfc2l6ZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgbmV3aGVpZ2h0LCBpbnQgbmV3 d2lkdGgsCisJCSAgIGludCBwcmV0ZW5kLCBpbnQgZGVsYXksIGludCBzYWZlKQogewogICBM aXNwX09iamVjdCB0YWlsLCBmcmFtZTsKIApAQCAtNTc0Myw3ICs1NzQ0LDggQEAKIH0KIAog c3RhdGljIHZvaWQKLWNoYW5nZV9mcmFtZV9zaXplXzEgKHJlZ2lzdGVyIHN0cnVjdCBmcmFt ZSAqZiwgaW50IG5ld2hlaWdodCwgaW50IG5ld3dpZHRoLCBpbnQgcHJldGVuZCwgaW50IGRl bGF5LCBpbnQgc2FmZSkKK2NoYW5nZV9mcmFtZV9zaXplXzEgKHN0cnVjdCBmcmFtZSAqZiwg aW50IG5ld2hlaWdodCwgaW50IG5ld3dpZHRoLAorCQkgICAgIGludCBwcmV0ZW5kLCBpbnQg ZGVsYXksIGludCBzYWZlKQogewogICBpbnQgbmV3X2ZyYW1lX3RvdGFsX2NvbHM7CiAgIHB0 cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL2RvYy5jJwotLS0gc3JjL2RvYy5jCTIwMTItMDUtMzEgMDY6MDY6NDIgKzAwMDAKKysr IHNyYy9kb2MuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC04Myw5ICs4Myw5IEBA CiBnZXRfZG9jX3N0cmluZyAoTGlzcF9PYmplY3QgZmlsZXBvcywgaW50IHVuaWJ5dGUsIGlu dCBkZWZpbml0aW9uKQogewogICBjaGFyICpmcm9tLCAqdG87Ci0gIHJlZ2lzdGVyIGludCBm ZDsKLSAgcmVnaXN0ZXIgY2hhciAqbmFtZTsKLSAgcmVnaXN0ZXIgY2hhciAqcCwgKnAxOwor ICBpbnQgZmQ7CisgIGNoYXIgKm5hbWU7CisgIGNoYXIgKnAsICpwMTsKICAgcHRyZGlmZl90 IG1pbnNpemU7CiAgIGludCBvZmZzZXQ7CiAgIEVNQUNTX0lOVCBwb3NpdGlvbjsKQEAgLTU2 NCw5ICs1NjQsOSBAQAogewogICBpbnQgZmQ7CiAgIGNoYXIgYnVmWzEwMjQgKyAxXTsKLSAg cmVnaXN0ZXIgaW50IGZpbGxlZDsKLSAgcmVnaXN0ZXIgRU1BQ1NfSU5UIHBvczsKLSAgcmVn aXN0ZXIgY2hhciAqcDsKKyAgaW50IGZpbGxlZDsKKyAgRU1BQ1NfSU5UIHBvczsKKyAgY2hh ciAqcDsKICAgTGlzcF9PYmplY3Qgc3ltOwogICBjaGFyICpuYW1lOwogICBpbnQgc2tpcF9m aWxlID0gMDsKQEAgLTYyNSw3ICs2MjUsNyBAQAogICBwb3MgPSAwOwogICB3aGlsZSAoMSkK ICAgICB7Ci0gICAgICByZWdpc3RlciBjaGFyICplbmQ7CisgICAgICBjaGFyICplbmQ7CiAg ICAgICBpZiAoZmlsbGVkIDwgNTEyKQogCWZpbGxlZCArPSBlbWFjc19yZWFkIChmZCwgJmJ1 ZltmaWxsZWRdLCBzaXplb2YgYnVmIC0gMSAtIGZpbGxlZCk7CiAgICAgICBpZiAoIWZpbGxl ZCkKQEAgLTcyNiw4ICs3MjYsOCBAQAogewogICBjaGFyICpidWY7CiAgIGludCBjaGFuZ2Vk ID0gMDsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqc3RycDsKLSAgcmVnaXN0ZXIgY2hh ciAqYnVmcDsKKyAgdW5zaWduZWQgY2hhciAqc3RycDsKKyAgY2hhciAqYnVmcDsKICAgcHRy ZGlmZl90IGlkeDsKICAgcHRyZGlmZl90IGJzaXplOwogICBMaXNwX09iamVjdCB0ZW07Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RvcHJudC5jJwotLS0gc3JjL2RvcHJudC5jCTIwMTIt MDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9kb3BybnQuYwkyMDEyLTA2LTAzIDA1OjUz OjM4ICswMDAwCkBAIC0xMzYsNyArMTM2LDcgQEAKIAljb25zdCBjaGFyICpmb3JtYXRfZW5k LCB2YV9saXN0IGFwKQogewogICBjb25zdCBjaGFyICpmbXQgPSBmb3JtYXQ7CS8qIFBvaW50 ZXIgaW50byBmb3JtYXQgc3RyaW5nICovCi0gIHJlZ2lzdGVyIGNoYXIgKmJ1ZnB0ciA9IGJ1 ZmZlcjsgLyogUG9pbnRlciBpbnRvIG91dHB1dCBidWZmZXIuLiAqLworICBjaGFyICpidWZw dHIgPSBidWZmZXI7IC8qIFBvaW50ZXIgaW50byBvdXRwdXQgYnVmZmVyLi4gKi8KIAogICAv KiBVc2UgdGhpcyBmb3Igc3ByaW50ZiB1bmxlc3Mgd2UgbmVlZCBzb21ldGhpbmcgcmVhbGx5 IGJpZy4gICovCiAgIGNoYXIgdGVtYnVmW0RCTF9NQVhfMTBfRVhQICsgMTAwXTsKQEAgLTE1 MCw3ICsxNTAsNyBAQAogICAvKiBCdWZmZXIgd2UgaGF2ZSBnb3Qgd2l0aCBtYWxsb2MuICAq LwogICBjaGFyICpiaWdfYnVmZmVyID0gTlVMTDsKIAotICByZWdpc3RlciBzaXplX3QgdGVt OworICBzaXplX3QgdGVtOwogICBjaGFyICpzdHJpbmc7CiAgIGNoYXIgZml4ZWRfYnVmZmVy WzIwXTsJLyogRGVmYXVsdCBidWZmZXIgZm9yIHNtYWxsIGZvcm1hdHRpbmcuICovCiAgIGNo YXIgKmZtdGNweTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZWRpdGZucy5jJwotLS0gc3Jj L2VkaXRmbnMuYwkyMDEyLTA1LTI1IDE5OjI0OjU0ICswMDAwCisrKyBzcmMvZWRpdGZucy5j CTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk1LDcgKzk1LDcgQEAKIGluaXRfZWRp dGZucyAodm9pZCkKIHsKICAgY29uc3QgY2hhciAqdXNlcl9uYW1lOwotICByZWdpc3RlciBj aGFyICpwOworICBjaGFyICpwOwogICBzdHJ1Y3QgcGFzc3dkICpwdzsJLyogcGFzc3dvcmQg ZW50cnkgZm9yIHRoZSBjdXJyZW50IHVzZXIgKi8KICAgTGlzcF9PYmplY3QgdGVtOwogCkBA IC0xOTIsOSArMTkyLDkgQEAKIAogREVGVU4gKCJzdHJpbmctdG8tY2hhciIsIEZzdHJpbmdf dG9fY2hhciwgU3N0cmluZ190b19jaGFyLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0 dXJuIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gU1RSSU5HLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBzdHJpbmcpCisgIChMaXNwX09iamVjdCBzdHJpbmcpCiB7Ci0gIHJlZ2lz dGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwogICBDSEVDS19TVFJJ TkcgKHN0cmluZyk7CiAgIGlmIChTQ0hBUlMgKHN0cmluZykpCiAgICAgewpAQCAtMjExLDcg KzIxMSw3IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIGJ1aWxkbWFyayAocHRyZGlmZl90IGNo YXJwb3MsIHB0cmRpZmZfdCBieXRlcG9zKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBt YXJrOworICBMaXNwX09iamVjdCBtYXJrOwogICBtYXJrID0gRm1ha2VfbWFya2VyICgpOwog ICBzZXRfbWFya2VyX2JvdGggKG1hcmssIFFuaWwsIGNoYXJwb3MsIGJ5dGVwb3MpOwogICBy ZXR1cm4gbWFyazsKQEAgLTIzOSw3ICsyMzksNyBAQAogQmVnaW5uaW5nIG9mIGJ1ZmZlciBp cyBwb3NpdGlvbiAocG9pbnQtbWluKSwgZW5kIGlzIChwb2ludC1tYXgpLgogCiBUaGUgcmV0 dXJuIHZhbHVlIGlzIFBPU0lUSU9OLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBw b3NpdGlvbikKKyAgKExpc3BfT2JqZWN0IHBvc2l0aW9uKQogewogICBwdHJkaWZmX3QgcG9z OwogCkBAIC0zNzMsNyArMzczLDcgQEAKICAgIHdpbmRvdy1zcGVjaWZpYyBvdmVybGF5cyBh cmUgY29uc2lkZXJlZCBvbmx5IGlmIHRoZXkgYXJlIGFzc29jaWF0ZWQKICAgIHdpdGggT0JK RUNULiAqLwogTGlzcF9PYmplY3QKLWdldF9wb3NfcHJvcGVydHkgKExpc3BfT2JqZWN0IHBv c2l0aW9uLCByZWdpc3RlciBMaXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVjdCBvYmplY3Qp CitnZXRfcG9zX3Byb3BlcnR5IChMaXNwX09iamVjdCBwb3NpdGlvbiwgTGlzcF9PYmplY3Qg cHJvcCwgTGlzcF9PYmplY3Qgb2JqZWN0KQogewogICBDSEVDS19OVU1CRVJfQ09FUkNFX01B UktFUiAocG9zaXRpb24pOwogCkBAIC05NTAsNyArOTUwLDcgQEAKIHVzYWdlOiAoc2F2ZS1l eGN1cnNpb24gJnJlc3QgQk9EWSkgICovKQogICAoTGlzcF9PYmplY3QgYXJncykKIHsKLSAg cmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICBMaXNwX09iamVjdCB2YWw7CiAgIHB0cmRp ZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAKICAgcmVjb3JkX3Vud2luZF9wcm90 ZWN0IChzYXZlX2V4Y3Vyc2lvbl9yZXN0b3JlLCBzYXZlX2V4Y3Vyc2lvbl9zYXZlICgpKTsK QEAgLTExNDYsNyArMTE0Niw3IEBACiBJZiBQT1MgaXMgb3V0IG9mIHJhbmdlLCB0aGUgdmFs dWUgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBwb3MpCiB7Ci0gIHJlZ2lzdGVyIHB0 cmRpZmZfdCBwb3NfYnl0ZTsKKyAgcHRyZGlmZl90IHBvc19ieXRlOwogCiAgIGlmIChOSUxQ IChwb3MpKQogICAgIHsKQEAgLTExNzgsOCArMTE3OCw4IEBACiBJZiBQT1MgaXMgb3V0IG9m IHJhbmdlLCB0aGUgdmFsdWUgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBwb3MpCiB7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHBv c19ieXRlOworICBMaXNwX09iamVjdCB2YWw7CisgIHB0cmRpZmZfdCBwb3NfYnl0ZTsKIAog ICBpZiAoTklMUCAocG9zKSkKICAgICB7CkBAIC0xMjkxLDcgKzEyOTEsNyBAQAogICAoTGlz cF9PYmplY3QgdWlkKQogewogICBzdHJ1Y3QgcGFzc3dkICpwdzsKLSAgcmVnaXN0ZXIgY2hh ciAqcCwgKnE7CisgIGNoYXIgKnAsICpxOwogICBMaXNwX09iamVjdCBmdWxsOwogCiAgIGlm IChOSUxQICh1aWQpKQpAQCAtMTMyNyw3ICsxMzI3LDcgQEAKICAgLyogU3Vic3RpdHV0ZSB0 aGUgbG9naW4gbmFtZSBmb3IgdGhlICYsIHVwY2FzaW5nIHRoZSBmaXJzdCBjaGFyYWN0ZXIu ICAqLwogICBpZiAocSkKICAgICB7Ci0gICAgICByZWdpc3RlciBjaGFyICpyOworICAgICAg Y2hhciAqcjsKICAgICAgIExpc3BfT2JqZWN0IGxvZ2luOwogCiAgICAgICBsb2dpbiA9IEZ1 c2VyX2xvZ2luX25hbWUgKG1ha2VfbnVtYmVyIChwdy0+cHdfdWlkKSk7CkBAIC0yMTg1LDcg KzIxODUsNyBAQAogCQkJIGludCBpbmhlcml0LCBwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2Jq ZWN0ICphcmdzKQogewogICBwdHJkaWZmX3QgYXJnbnVtOwotICByZWdpc3RlciBMaXNwX09i amVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKIAogICBmb3IgKGFyZ251bSA9IDA7IGFy Z251bSA8IG5hcmdzOyBhcmdudW0rKykKICAgICB7CkBAIC0yMzE3LDcgKzIzMTcsNyBAQAog ICAoTGlzcF9PYmplY3QgY2hhcmFjdGVyLCBMaXNwX09iamVjdCBjb3VudCwgTGlzcF9PYmpl Y3QgaW5oZXJpdCkKIHsKICAgaW50IGksIHN0cmluZ2xlbjsKLSAgcmVnaXN0ZXIgcHRyZGlm Zl90IG47CisgIHB0cmRpZmZfdCBuOwogICBpbnQgYywgbGVuOwogICB1bnNpZ25lZCBjaGFy IHN0cltNQVhfTVVMVElCWVRFX0xFTkdUSF07CiAgIGNoYXIgc3RyaW5nWzQwMDBdOwpAQCAt MjQ5MCw3ICsyNDkwLDcgQEAKIHVzZSBgYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz JyBpbnN0ZWFkLiAgKi8pCiAgIChMaXNwX09iamVjdCBzdGFydCwgTGlzcF9PYmplY3QgZW5k KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgYiwgZTsKKyAgcHRyZGlmZl90IGIsIGU7CiAK ICAgdmFsaWRhdGVfcmVnaW9uICgmc3RhcnQsICZlbmQpOwogICBiID0gWElOVCAoc3RhcnQp OwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAKIHRoZXkgY2FuIGJlIGluIGVpdGhlciBvcmRlci4g ICovKQogICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCkKIHsKLSAgcmVn aXN0ZXIgcHRyZGlmZl90IGIsIGU7CisgIHB0cmRpZmZfdCBiLCBlOwogCiAgIHZhbGlkYXRl X3JlZ2lvbiAoJnN0YXJ0LCAmZW5kKTsKICAgYiA9IFhJTlQgKHN0YXJ0KTsKQEAgLTI1MzIs OCArMjUzMiw4IEBACiBUaGV5IGRlZmF1bHQgdG8gdGhlIHZhbHVlcyBvZiAocG9pbnQtbWlu KSBhbmQgKHBvaW50LW1heCkgaW4gQlVGRkVSLiAgKi8pCiAgIChMaXNwX09iamVjdCBidWZm ZXIsIExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBlbmQpCiB7Ci0gIHJlZ2lzdGVy IEVNQUNTX0lOVCBiLCBlLCB0ZW1wOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpicCwg Km9idWY7CisgIEVNQUNTX0lOVCBiLCBlLCB0ZW1wOworICBzdHJ1Y3QgYnVmZmVyICpicCwg Km9idWY7CiAgIExpc3BfT2JqZWN0IGJ1ZjsKIAogICBidWYgPSBGZ2V0X2J1ZmZlciAoYnVm ZmVyKTsKQEAgLTI1ODUsOSArMjU4NSw5IEBACiBkZXRlcm1pbmVzIHdoZXRoZXIgY2FzZSBp cyBzaWduaWZpY2FudCBvciBpZ25vcmVkLiAgKi8pCiAgIChMaXNwX09iamVjdCBidWZmZXIx LCBMaXNwX09iamVjdCBzdGFydDEsIExpc3BfT2JqZWN0IGVuZDEsIExpc3BfT2JqZWN0IGJ1 ZmZlcjIsIExpc3BfT2JqZWN0IHN0YXJ0MiwgTGlzcF9PYmplY3QgZW5kMikKIHsKLSAgcmVn aXN0ZXIgRU1BQ1NfSU5UIGJlZ3AxLCBlbmRwMSwgYmVncDIsIGVuZHAyLCB0ZW1wOwotICBy ZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpicDEsICpicDI7Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHRydAorICBFTUFDU19JTlQgYmVncDEsIGVuZHAxLCBiZWdwMiwgZW5kcDIsIHRlbXA7 CisgIHN0cnVjdCBidWZmZXIgKmJwMSwgKmJwMjsKKyAgTGlzcF9PYmplY3QgdHJ0CiAgICAg PSAoIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjYXNlX2ZvbGRfc2VhcmNoKSkKICAg ICAgICA/IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjYXNlX2Nhbm9uX3RhYmxlKSA6IFFuaWwp OwogICBwdHJkaWZmX3QgY2hhcnMgPSAwOwpAQCAtMjc1Miw3ICsyNzUyLDcgQEAKIEJvdGgg Y2hhcmFjdGVycyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIG9mIG11bHRpLWJ5dGUgZm9y bS4gICovKQogICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9P YmplY3QgZnJvbWNoYXIsIExpc3BfT2JqZWN0IHRvY2hhciwgTGlzcF9PYmplY3Qgbm91bmRv KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgcG9zLCBwb3NfYnl0ZSwgc3RvcCwgaSwgbGVu LCBlbmRfYnl0ZTsKKyAgcHRyZGlmZl90IHBvcywgcG9zX2J5dGUsIHN0b3AsIGksIGxlbiwg ZW5kX2J5dGU7CiAgIC8qIEtlZXAgdHJhY2sgb2YgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUg YnVmZmVyOgogICAgICBpZiAwIHdlIGhhdmVuJ3QgZm91bmQgaXQgeWV0LgogICAgICBpZiA8 IDAgd2UndmUgZm91bmQgaXQgYW5kIHdlJ3ZlIHJ1biB0aGUgYmVmb3JlLWNoYW5nZS1mdW5j dGlvbi4KQEAgLTI5OTYsMTAgKzI5OTYsMTAgQEAKIFRBQkxFIGlzIGEgc3RyaW5nIG9yIGEg Y2hhci10YWJsZTsgdGhlIE50aCBjaGFyYWN0ZXIgaW4gaXQgaXMgdGhlCiBtYXBwaW5nIGZv ciB0aGUgY2hhcmFjdGVyIHdpdGggY29kZSBOLgogSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9m IGNoYXJhY3RlcnMgY2hhbmdlZC4gICovKQotICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3Bf T2JqZWN0IGVuZCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFibGUpCisgIChMaXNwX09iamVj dCBzdGFydCwgTGlzcF9PYmplY3QgZW5kLCBMaXNwX09iamVjdCB0YWJsZSkKIHsKLSAgcmVn aXN0ZXIgdW5zaWduZWQgY2hhciAqdHQ7CS8qIFRyYW5zIHRhYmxlLiAqLwotICByZWdpc3Rl ciBpbnQgbmM7CQkvKiBOZXcgY2hhcmFjdGVyLiAqLworICB1bnNpZ25lZCBjaGFyICp0dDsJ LyogVHJhbnMgdGFibGUuICovCisgIGludCBuYzsJCS8qIE5ldyBjaGFyYWN0ZXIuICovCiAg IGludCBjbnQ7CQkJLyogTnVtYmVyIG9mIGNoYW5nZXMgbWFkZS4gKi8KICAgcHRyZGlmZl90 IHNpemU7CQkvKiBTaXplIG9mIHRyYW5zbGF0ZSB0YWJsZS4gKi8KICAgcHRyZGlmZl90IHBv cywgcG9zX2J5dGUsIGVuZF9wb3M7CkBAIC0zMDMzLDcgKzMwMzMsNyBAQAogICBjbnQgPSAw OwogICBmb3IgKDsgcG9zIDwgZW5kX3BvczsgKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIHVu c2lnbmVkIGNoYXIgKnAgPSBCWVRFX1BPU19BRERSIChwb3NfYnl0ZSk7CisgICAgICB1bnNp Z25lZCBjaGFyICpwID0gQllURV9QT1NfQUREUiAocG9zX2J5dGUpOwogICAgICAgdW5zaWdu ZWQgY2hhciAqc3RyLCBidWZbTUFYX01VTFRJQllURV9MRU5HVEhdOwogICAgICAgaW50IGxl biwgc3RyX2xlbjsKICAgICAgIGludCBvYzsKQEAgLTMxOTksNyArMzE5OSw3IEBACiAKIFdo ZW4gY2FsbGluZyBmcm9tIGEgcHJvZ3JhbSwgcGFzcyB0d28gYXJndW1lbnRzOyBwb3NpdGlv bnMgKGludGVnZXJzCiBvciBtYXJrZXJzKSBib3VuZGluZyB0aGUgdGV4dCB0aGF0IHNob3Vs ZCByZW1haW4gdmlzaWJsZS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3RhcnQs IExpc3BfT2JqZWN0IGVuZCkKKyAgKExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBl bmQpCiB7CiAgIENIRUNLX05VTUJFUl9DT0VSQ0VfTUFSS0VSIChzdGFydCk7CiAgIENIRUNL X05VTUJFUl9DT0VSQ0VfTUFSS0VSIChlbmQpOwpAQCAtMzMzNyw3ICszMzM3LDcgQEAKIHVz YWdlOiAoc2F2ZS1yZXN0cmljdGlvbiAmcmVzdCBCT0RZKSAgKi8pCiAgIChMaXNwX09iamVj dCBib2R5KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0 IHZhbDsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIAogICByZWNv cmRfdW53aW5kX3Byb3RlY3QgKHNhdmVfcmVzdHJpY3Rpb25fcmVzdG9yZSwgc2F2ZV9yZXN0 cmljdGlvbl9zYXZlICgpKTsKQEAgLTMzNzksNyArMzM3OSw3IEBACiAgICAgfQogICBlbHNl CiAgICAgewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsOworICAgICAgTGlzcF9P YmplY3QgdmFsOwogICAgICAgdmFsID0gRmZvcm1hdCAobmFyZ3MsIGFyZ3MpOwogICAgICAg bWVzc2FnZTMgKHZhbCwgU0JZVEVTICh2YWwpLCBTVFJJTkdfTVVMVElCWVRFICh2YWwpKTsK ICAgICAgIHJldHVybiB2YWw7CkBAIC0zNDA1LDcgKzM0MDUsNyBAQAogICAgIH0KICAgZWxz ZQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgICAgIExpc3Bf T2JqZWN0IHZhbDsKICAgICAgIHZhbCA9IEZmb3JtYXQgKG5hcmdzLCBhcmdzKTsKICNpZmRl ZiBIQVZFX01FTlVTCiAgICAgICAvKiBUaGUgTVMtRE9TIGZyYW1lcyBzdXBwb3J0IHBvcHVw IG1lbnVzIGV2ZW4gdGhvdWdoIHRoZXkgYXJlCkBAIC0zNTYwLDcgKzM1NjAsNyBAQAogICBw dHJkaWZmX3QgbWF4X2J1ZnNpemUgPSBTVFJJTkdfQllURVNfQk9VTkQgKyAxOwogICBjaGFy ICpwOwogICBMaXNwX09iamVjdCBidWZfc2F2ZV92YWx1ZSBJRl9MSU5UICg9IHswfSk7Ci0g IHJlZ2lzdGVyIGNoYXIgKmZvcm1hdCwgKmVuZCwgKmZvcm1hdF9zdGFydDsKKyAgY2hhciAq Zm9ybWF0LCAqZW5kLCAqZm9ybWF0X3N0YXJ0OwogICBwdHJkaWZmX3QgZm9ybWF0bGVuLCBu Y2hhcnM7CiAgIC8qIE5vbnplcm8gaWYgdGhlIGZvcm1hdCBpcyBtdWx0aWJ5dGUuICAqLwog ICBpbnQgbXVsdGlieXRlX2Zvcm1hdCA9IDA7CkBAIC00MzE0LDcgKzQzMTQsNyBAQAogICAg ICAgIGRvYzogLyogUmV0dXJuIHQgaWYgdHdvIGNoYXJhY3RlcnMgbWF0Y2gsIG9wdGlvbmFs bHkgaWdub3JpbmcgY2FzZS4KIEJvdGggYXJndW1lbnRzIG11c3QgYmUgY2hhcmFjdGVycyAo aS5lLiBpbnRlZ2VycykuCiBDYXNlIGlzIGlnbm9yZWQgaWYgYGNhc2UtZm9sZC1zZWFyY2gn IGlzIG5vbi1uaWwgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBjMSwgTGlzcF9PYmplY3QgYzIpCisgIChMaXNwX09iamVjdCBjMSwgTGlz cF9PYmplY3QgYzIpCiB7CiAgIGludCBpMSwgaTI7CiAgIC8qIENoZWNrIHRoZXkncmUgY2hh cnMsIG5vdCBqdXN0IGludGVnZXJzLCBvdGhlcndpc2Ugd2UgY291bGQgZ2V0IGFycmF5CkBA IC00MzYzLDggKzQzNjMsOCBAQAogCQkgICBwdHJkaWZmX3Qgc3RhcnQxX2J5dGUsIHB0cmRp ZmZfdCBlbmQxX2J5dGUsCiAJCSAgIHB0cmRpZmZfdCBzdGFydDJfYnl0ZSwgcHRyZGlmZl90 IGVuZDJfYnl0ZSkKIHsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGFtdDEsIGFtdDFfYnl0ZSwg YW10MiwgYW10Ml9ieXRlLCBkaWZmLCBkaWZmX2J5dGUsIG1wb3M7Ci0gIHJlZ2lzdGVyIHN0 cnVjdCBMaXNwX01hcmtlciAqbWFya2VyOworICBwdHJkaWZmX3QgYW10MSwgYW10MV9ieXRl LCBhbXQyLCBhbXQyX2J5dGUsIGRpZmYsIGRpZmZfYnl0ZSwgbXBvczsKKyAgc3RydWN0IExp c3BfTWFya2VyICptYXJrZXI7CiAKICAgLyogVXBkYXRlIHBvaW50IGFzIGlmIGl0IHdlcmUg YSBtYXJrZXIuICAqLwogICBpZiAoUFQgPCBzdGFydDEpCkBAIC00NDM3LDcgKzQ0MzcsNyBA QAogVHJhbnNwb3NpbmcgYmV5b25kIGJ1ZmZlciBib3VuZGFyaWVzIGlzIGFuIGVycm9yLiAg Ki8pCiAgIChMaXNwX09iamVjdCBzdGFydHIxLCBMaXNwX09iamVjdCBlbmRyMSwgTGlzcF9P YmplY3Qgc3RhcnRyMiwgTGlzcF9PYmplY3QgZW5kcjIsIExpc3BfT2JqZWN0IGxlYXZlX21h cmtlcnMpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBzdGFydDEsIGVuZDEsIHN0YXJ0Miwg ZW5kMjsKKyAgcHRyZGlmZl90IHN0YXJ0MSwgZW5kMSwgc3RhcnQyLCBlbmQyOwogICBwdHJk aWZmX3Qgc3RhcnQxX2J5dGUsIHN0YXJ0Ml9ieXRlLCBsZW4xX2J5dGUsIGxlbjJfYnl0ZTsK ICAgcHRyZGlmZl90IGdhcCwgbGVuMSwgbGVuX21pZCwgbGVuMjsKICAgdW5zaWduZWQgY2hh ciAqc3RhcnQxX2FkZHIsICpzdGFydDJfYWRkciwgKnRlbXA7CkBAIC00NDYwLDcgKzQ0NjAs NyBAQAogICAvKiBTd2FwIHRoZSByZWdpb25zIGlmIHRoZXkncmUgcmV2ZXJzZWQuICAqLwog ICBpZiAoc3RhcnQyIDwgZW5kMSkKICAgICB7Ci0gICAgICByZWdpc3RlciBwdHJkaWZmX3Qg Z2x1bXBoID0gc3RhcnQxOworICAgICAgcHRyZGlmZl90IGdsdW1waCA9IHN0YXJ0MTsKICAg ICAgIHN0YXJ0MSA9IHN0YXJ0MjsKICAgICAgIHN0YXJ0MiA9IGdsdW1waDsKICAgICAgIGds dW1waCA9IGVuZDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2VtYWNzLmMnCi0tLSBzcmMv ZW1hY3MuYwkyMDEyLTA1LTMwIDE5OjIzOjM3ICswMDAwCisrKyBzcmMvZW1hY3MuYwkyMDEy LTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00MDUsNyArNDA1LDcgQEAKIHN0YXRpYyB2b2lk CiBpbml0X2NtZGFyZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndiwgaW50IHNraXBfYXJncykK IHsKLSAgcmVnaXN0ZXIgaW50IGk7CisgIGludCBpOwogICBMaXNwX09iamVjdCBuYW1lLCBk aXIsIGhhbmRsZXI7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAg IExpc3BfT2JqZWN0IHJhd19uYW1lOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9ldmFsLmMn Ci0tLSBzcmMvZXZhbC5jCTIwMTItMDUtMzAgMDM6NTk6NDIgKzAwMDAKKysrIHNyYy9ldmFs LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjU0LDcgKzI1NCw3IEBACiB1c2Fn ZTogKG9yIENPTkRJVElPTlMuLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0g IHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbCA9IFFuaWw7CisgIExpc3BfT2JqZWN0IHZhbCA9 IFFuaWw7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAgR0NQUk8xIChhcmdzKTsKQEAg LTI3OCw3ICsyNzgsNyBAQAogdXNhZ2U6IChhbmQgQ09ORElUSU9OUy4uLikgICovKQogICAo TGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdmFsID0gUXQ7 CisgIExpc3BfT2JqZWN0IHZhbCA9IFF0OwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogCiAg IEdDUFJPMSAoYXJncyk7CkBAIC0zMDMsNyArMzAzLDcgQEAKIHVzYWdlOiAoaWYgQ09ORCBU SEVOIEVMU0UuLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGNvbmQ7CisgIExpc3BfT2JqZWN0IGNvbmQ7CiAgIHN0cnVjdCBnY3By byBnY3BybzE7CiAKICAgR0NQUk8xIChhcmdzKTsKQEAgLTMyNyw3ICszMjcsNyBAQAogdXNh Z2U6IChjb25kIENMQVVTRVMuLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0g IHJlZ2lzdGVyIExpc3BfT2JqZWN0IGNsYXVzZSwgdmFsOworICBMaXNwX09iamVjdCBjbGF1 c2UsIHZhbDsKICAgc3RydWN0IGdjcHJvIGdjcHJvMTsKIAogICB2YWwgPSBRbmlsOwpAQCAt MzU0LDcgKzM1NCw3IEBACiB1c2FnZTogKHByb2duIEJPRFkuLi4pICAqLykKICAgKExpc3Bf T2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbCA9IFFuaWw7Cisg IExpc3BfT2JqZWN0IHZhbCA9IFFuaWw7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAg R0NQUk8xIChhcmdzKTsKQEAgLTM3Nyw3ICszNzcsNyBAQAogICAoTGlzcF9PYmplY3QgYXJn cykKIHsKICAgTGlzcF9PYmplY3QgdmFsOwotICByZWdpc3RlciBMaXNwX09iamVjdCBhcmdz X2xlZnQ7CisgIExpc3BfT2JqZWN0IGFyZ3NfbGVmdDsKICAgc3RydWN0IGdjcHJvIGdjcHJv MSwgZ2Nwcm8yOwogCiAgIGFyZ3NfbGVmdCA9IGFyZ3M7CkBAIC00MTgsOCArNDE4LDggQEAK IHVzYWdlOiAoc2V0cSBbU1lNIFZBTF0uLi4pICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3Mp CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZ3NfbGVmdDsKLSAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdmFsLCBzeW0sIGxleF9iaW5kaW5nOworICBMaXNwX09iamVjdCBhcmdzX2xl ZnQ7CisgIExpc3BfT2JqZWN0IHZhbCwgc3ltLCBsZXhfYmluZGluZzsKICAgc3RydWN0IGdj cHJvIGdjcHJvMTsKIAogICBpZiAoTklMUCAoYXJncykpCkBAIC02ODAsNyArNjgwLDcgQEAK IHVzYWdlOiAoZGVmdmFyIFNZTUJPTCAmb3B0aW9uYWwgSU5JVFZBTFVFIERPQ1NUUklORykg ICovKQogICAoTGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qg c3ltLCB0ZW0sIHRhaWw7CisgIExpc3BfT2JqZWN0IHN5bSwgdGVtLCB0YWlsOwogCiAgIHN5 bSA9IEZjYXIgKGFyZ3MpOwogICB0YWlsID0gRmNkciAoYXJncyk7CkBAIC03NjcsNyArNzY3 LDcgQEAKIHVzYWdlOiAoZGVmY29uc3QgU1lNQk9MIElOSVRWQUxVRSBbRE9DU1RSSU5HXSkg ICovKQogICAoTGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qg c3ltLCB0ZW07CisgIExpc3BfT2JqZWN0IHN5bSwgdGVtOwogCiAgIHN5bSA9IEZjYXIgKGFy Z3MpOwogICBpZiAoIU5JTFAgKEZjZHIgKEZjZHIgKEZjZHIgKGFyZ3MpKSkpKQpAQCAtODYz LDcgKzg2Myw3IEBACiAgIChMaXNwX09iamVjdCBhcmdzKQogewogICBMaXNwX09iamVjdCAq dGVtcHMsIHRlbSwgbGV4ZW52OwotICByZWdpc3RlciBMaXNwX09iamVjdCBlbHQsIHZhcmxp c3Q7CisgIExpc3BfT2JqZWN0IGVsdCwgdmFybGlzdDsKICAgcHRyZGlmZl90IGNvdW50ID0g U1BFQ1BETF9JTkRFWCAoKTsKICAgcHRyZGlmZl90IGFyZ251bTsKICAgc3RydWN0IGdjcHJv IGdjcHJvMSwgZ2Nwcm8yOwpAQCAtOTU5LDcgKzk1OSw3IEBACiAgIChMaXNwX09iamVjdCBm b3JtLCBMaXNwX09iamVjdCBlbnZpcm9ubWVudCkKIHsKICAgLyogV2l0aCBjbGVhbnVwcyBm cm9tIEhhbGx2YXJkIEZ1cnVzZXRoLiAgKi8KLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgZXhw YW5kZXIsIHN5bSwgZGVmLCB0ZW07CisgIExpc3BfT2JqZWN0IGV4cGFuZGVyLCBzeW0sIGRl ZiwgdGVtOwogCiAgIHdoaWxlICgxKQogICAgIHsKQEAgLTEwMzYsNyArMTAzNiw3IEBACiB1 c2FnZTogKGNhdGNoIFRBRyBCT0RZLi4uKSAgKi8pCiAgIChMaXNwX09iamVjdCBhcmdzKQog ewotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWc7CisgIExpc3BfT2JqZWN0IHRhZzsKICAg c3RydWN0IGdjcHJvIGdjcHJvMTsKIAogICBHQ1BSTzEgKGFyZ3MpOwpAQCAtMTA5Nyw3ICsx MDk3LDcgQEAKIHN0YXRpYyB2b2lkCiB1bndpbmRfdG9fY2F0Y2ggKHN0cnVjdCBjYXRjaHRh ZyAqY2F0Y2gsIExpc3BfT2JqZWN0IHZhbHVlKQogewotICByZWdpc3RlciBpbnQgbGFzdF90 aW1lOworICBpbnQgbGFzdF90aW1lOwogCiAgIC8qIFNhdmUgdGhlIHZhbHVlIGluIHRoZSB0 YWcuICAqLwogICBjYXRjaC0+dmFsID0gdmFsdWU7CkBAIC0xMTQ0LDkgKzExNDQsOSBAQAog REVGVU4gKCJ0aHJvdyIsIEZ0aHJvdywgU3Rocm93LCAyLCAyLCAwLAogICAgICAgIGRvYzog LyogVGhyb3cgdG8gdGhlIGNhdGNoIGZvciBUQUcgYW5kIHJldHVybiBWQUxVRSBmcm9tIGl0 LgogQm90aCBUQUcgYW5kIFZBTFVFIGFyZSBldmFsbGVkLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCB0YWcsIExpc3BfT2JqZWN0IHZhbHVlKQorICAoTGlzcF9PYmplY3QgdGFn LCBMaXNwX09iamVjdCB2YWx1ZSkKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IGNhdGNodGFnICpj OworICBzdHJ1Y3QgY2F0Y2h0YWcgKmM7CiAKICAgaWYgKCFOSUxQICh0YWcpKQogICAgIGZv ciAoYyA9IGNhdGNobGlzdDsgYzsgYyA9IGMtPm5leHQpCkBAIC0xMjAyLDcgKzEyMDIsNyBA QAogdXNhZ2U6IChjb25kaXRpb24tY2FzZSBWQVIgQk9EWUZPUk0gJnJlc3QgSEFORExFUlMp ICAqLykKICAgKExpc3BfT2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGJvZHlmb3JtLCBoYW5kbGVyczsKKyAgTGlzcF9PYmplY3QgYm9keWZvcm0sIGhhbmRsZXJz OwogICB2b2xhdGlsZSBMaXNwX09iamVjdCB2YXI7CiAKICAgdmFyICAgICAgPSBGY2FyIChh cmdzKTsKQEAgLTE0ODIsNyArMTQ4Miw3IEBACiAgIExpc3BfT2JqZWN0IHN0cmluZzsKICAg TGlzcF9PYmplY3QgcmVhbF9lcnJvcl9zeW1ib2wKICAgICA9IChOSUxQIChlcnJvcl9zeW1i b2wpID8gRmNhciAoZGF0YSkgOiBlcnJvcl9zeW1ib2wpOwotICByZWdpc3RlciBMaXNwX09i amVjdCBjbGF1c2UgPSBRbmlsOworICBMaXNwX09iamVjdCBjbGF1c2UgPSBRbmlsOwogICBz dHJ1Y3QgaGFuZGxlciAqaDsKICAgc3RydWN0IGJhY2t0cmFjZSAqYnA7CiAKQEAgLTE3Mzks NyArMTczOSw3IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIGZpbmRfaGFuZGxlcl9jbGF1c2Ug KExpc3BfT2JqZWN0IGhhbmRsZXJzLCBMaXNwX09iamVjdCBjb25kaXRpb25zKQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCBoOworICBMaXNwX09iamVjdCBoOwogCiAgIC8qIHQgaXMg dXNlZCBieSBoYW5kbGVycyBmb3IgYWxsIGNvbmRpdGlvbnMsIHNldCB1cCBieSBDIGNvZGUu ICAqLwogICBpZiAoRVEgKGhhbmRsZXJzLCBRdCkpCkBAIC0xODMxLDggKzE4MzEsOCBAQAog dGhlbiBzdHJpbmdzIGFuZCB2ZWN0b3JzIGFyZSBub3QgYWNjZXB0ZWQuICAqLykKICAgKExp c3BfT2JqZWN0IGZ1bmN0aW9uLCBMaXNwX09iamVjdCBmb3JfY2FsbF9pbnRlcmFjdGl2ZWx5 KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBmdW47Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IGZ1bmNhcjsKKyAgTGlzcF9PYmplY3QgZnVuOworICBMaXNwX09iamVjdCBmdW5jYXI7 CiAgIExpc3BfT2JqZWN0IGlmX3Byb3AgPSBRbmlsOwogCiAgIGZ1biA9IGZ1bmN0aW9uOwpA QCAtMTkyNSw3ICsxOTI1LDcgQEAKIExpc3BfT2JqZWN0CiB1bl9hdXRvbG9hZCAoTGlzcF9P YmplY3Qgb2xkcXVldWUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHF1ZXVlLCBmaXJz dCwgc2Vjb25kOworICBMaXNwX09iamVjdCBxdWV1ZSwgZmlyc3QsIHNlY29uZDsKIAogICAv KiBRdWV1ZSB0byB1bndpbmQgaXMgY3VycmVudCB2YWx1ZSBvZiBWYXV0b2xvYWRfcXVldWUu CiAgICAgIG9sZHF1ZXVlIGlzIHRoZSBzaGFkb3dlZCB2YWx1ZSB0byBsZWF2ZSBpbiBWYXV0 b2xvYWRfcXVldWUuICAqLwpAQCAtMjA4Myw3ICsyMDgzLDcgQEAKICAgICAgIExpc3BfT2Jq ZWN0IG51bWFyZ3M7CiAgICAgICBMaXNwX09iamVjdCBhcmd2YWxzWzhdOwogICAgICAgTGlz cF9PYmplY3QgYXJnc19sZWZ0OwotICAgICAgcmVnaXN0ZXIgaW50IGksIG1heGFyZ3M7Cisg ICAgICBpbnQgaSwgbWF4YXJnczsKIAogICAgICAgYXJnc19sZWZ0ID0gb3JpZ2luYWxfYXJn czsKICAgICAgIG51bWFyZ3MgPSBGbGVuZ3RoIChhcmdzX2xlZnQpOwpAQCAtMjIzNSw4ICsy MjM1LDggQEAKIHsKICAgcHRyZGlmZl90IGk7CiAgIEVNQUNTX0lOVCBudW1hcmdzOwotICBy ZWdpc3RlciBMaXNwX09iamVjdCBzcHJlYWRfYXJnOwotICByZWdpc3RlciBMaXNwX09iamVj dCAqZnVuY2FsbF9hcmdzOworICBMaXNwX09iamVjdCBzcHJlYWRfYXJnOworICBMaXNwX09i amVjdCAqZnVuY2FsbF9hcmdzOwogICBMaXNwX09iamVjdCBmdW4sIHJldHZhbDsKICAgc3Ry dWN0IGdjcHJvIGdjcHJvMTsKICAgVVNFX1NBRkVfQUxMT0NBOwpAQCAtMjczMCw3ICsyNzMw LDcgQEAKICAgTGlzcF9PYmplY3QgbGlzcF9udW1hcmdzOwogICBMaXNwX09iamVjdCB2YWw7 CiAgIHN0cnVjdCBiYWNrdHJhY2UgYmFja3RyYWNlOwotICByZWdpc3RlciBMaXNwX09iamVj dCAqaW50ZXJuYWxfYXJnczsKKyAgTGlzcF9PYmplY3QgKmludGVybmFsX2FyZ3M7CiAgIHB0 cmRpZmZfdCBpOwogCiAgIFFVSVQ7CkBAIC0yODg2LDkgKzI4ODYsOSBAQAogICBMaXNwX09i amVjdCBhcmdzX2xlZnQ7CiAgIHB0cmRpZmZfdCBpOwogICBFTUFDU19JTlQgbnVtYXJnczsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKmFyZ192ZWN0b3I7CisgIExpc3BfT2JqZWN0ICph cmdfdmVjdG9yOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzIsIGdjcHJvMzsKLSAg cmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIFVTRV9T QUZFX0FMTE9DQTsKIAogICBudW1hcmdzID0gWEZBU1RJTlQgKEZsZW5ndGggKGFyZ3MpKTsK QEAgLTI5MjcsNyArMjkyNyw3IEBACiAKIHN0YXRpYyBMaXNwX09iamVjdAogZnVuY2FsbF9s YW1iZGEgKExpc3BfT2JqZWN0IGZ1biwgcHRyZGlmZl90IG5hcmdzLAotCQlyZWdpc3RlciBM aXNwX09iamVjdCAqYXJnX3ZlY3RvcikKKwkJTGlzcF9PYmplY3QgKmFyZ192ZWN0b3IpCiB7 CiAgIExpc3BfT2JqZWN0IHZhbCwgc3ltc19sZWZ0LCBuZXh0LCBsZXhlbnY7CiAgIHB0cmRp ZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CkBAIC0zMDY5LDcgKzMwNjksNyBAQAog c3RhdGljIHZvaWQKIGdyb3dfc3BlY3BkbCAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgcHRyZGlm Zl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKKyAgcHRyZGlmZl90IGNvdW50ID0gU1BF Q1BETF9JTkRFWCAoKTsKICAgcHRyZGlmZl90IG1heF9zaXplID0gbWluIChtYXhfc3BlY3Bk bF9zaXplLCBQVFJESUZGX01BWCk7CiAgIGlmIChtYXhfc2l6ZSA8PSBzcGVjcGRsX3NpemUp CiAgICAgewpAQCAtMzI4Nyw4ICszMjg3LDggQEAKIFRoZSBkZWJ1Z2dlciBpcyBlbnRlcmVk IHdoZW4gdGhhdCBmcmFtZSBleGl0cywgaWYgdGhlIGZsYWcgaXMgbm9uLW5pbC4gICovKQog ICAoTGlzcF9PYmplY3QgbGV2ZWwsIExpc3BfT2JqZWN0IGZsYWcpCiB7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBiYWNrdHJhY2UgKmJhY2tsaXN0ID0gYmFja3RyYWNlX2xpc3Q7Ci0gIHJlZ2lz dGVyIEVNQUNTX0lOVCBpOworICBzdHJ1Y3QgYmFja3RyYWNlICpiYWNrbGlzdCA9IGJhY2t0 cmFjZV9saXN0OworICBFTUFDU19JTlQgaTsKIAogICBDSEVDS19OVU1CRVIgKGxldmVsKTsK IApAQCAtMzMwOCw3ICszMzA4LDcgQEAKIE91dHB1dCBzdHJlYW0gdXNlZCBpcyB2YWx1ZSBv ZiBgc3RhbmRhcmQtb3V0cHV0Jy4gICovKQogICAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgc3Ry dWN0IGJhY2t0cmFjZSAqYmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsKKyAgc3RydWN0IGJh Y2t0cmFjZSAqYmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsKICAgTGlzcF9PYmplY3QgdGFp bDsKICAgTGlzcF9PYmplY3QgdGVtOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwpAQCAtMzM3 NSw4ICszMzc1LDggQEAKIElmIE5GUkFNRVMgaXMgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2Yg ZnJhbWVzLCB0aGUgdmFsdWUgaXMgbmlsLiAgKi8pCiAgIChMaXNwX09iamVjdCBuZnJhbWVz KQogewotICByZWdpc3RlciBzdHJ1Y3QgYmFja3RyYWNlICpiYWNrbGlzdCA9IGJhY2t0cmFj ZV9saXN0OwotICByZWdpc3RlciBFTUFDU19JTlQgaTsKKyAgc3RydWN0IGJhY2t0cmFjZSAq YmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsKKyAgRU1BQ1NfSU5UIGk7CiAgIExpc3BfT2Jq ZWN0IHRlbTsKIAogICBDSEVDS19OQVROVU0gKG5mcmFtZXMpOwpAQCAtMzQwNSw3ICszNDA1 LDcgQEAKIHZvaWQKIG1hcmtfYmFja3RyYWNlICh2b2lkKQogewotICByZWdpc3RlciBzdHJ1 Y3QgYmFja3RyYWNlICpiYWNrbGlzdDsKKyAgc3RydWN0IGJhY2t0cmFjZSAqYmFja2xpc3Q7 CiAgIHB0cmRpZmZfdCBpOwogCiAgIGZvciAoYmFja2xpc3QgPSBiYWNrdHJhY2VfbGlzdDsg YmFja2xpc3Q7IGJhY2tsaXN0ID0gYmFja2xpc3QtPm5leHQpCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3JjL2ZpbGVpby5jJwotLS0gc3JjL2ZpbGVpby5jCTIwMTItMDYtMDEgMDM6NDE6MDMg KzAwMDAKKysrIHNyYy9maWxlaW8uYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC0z MTUsMTEgKzMxNSwxMSBAQAogICAoTGlzcF9PYmplY3QgZmlsZW5hbWUpCiB7CiAjaWZuZGVm IERPU19OVAotICByZWdpc3RlciBjb25zdCBjaGFyICpiZWc7CisgIGNvbnN0IGNoYXIgKmJl ZzsKICNlbHNlCi0gIHJlZ2lzdGVyIGNoYXIgKmJlZzsKKyAgY2hhciAqYmVnOwogI2VuZGlm Ci0gIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnA7CisgIGNvbnN0IGNoYXIgKnA7CiAgIExpc3Bf T2JqZWN0IGhhbmRsZXI7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxlbmFtZSk7CkBAIC0zOTIs NyArMzkyLDcgQEAKIG9yIHRoZSBlbnRpcmUgbmFtZSBpZiBpdCBjb250YWlucyBubyBzbGFz aC4gICovKQogICAoTGlzcF9PYmplY3QgZmlsZW5hbWUpCiB7Ci0gIHJlZ2lzdGVyIGNvbnN0 IGNoYXIgKmJlZywgKnAsICplbmQ7CisgIGNvbnN0IGNoYXIgKmJlZywgKnAsICplbmQ7CiAg IExpc3BfT2JqZWN0IGhhbmRsZXI7CiAKICAgQ0hFQ0tfU1RSSU5HIChmaWxlbmFtZSk7CkBA IC0xMzYwLDcgKzEzNjAsNyBAQAogewogICB1bnNpZ25lZCBjaGFyICpubTsKIAotICByZWdp c3RlciB1bnNpZ25lZCBjaGFyICpuZXdkaXIsICpwLCAqbzsKKyAgdW5zaWduZWQgY2hhciAq bmV3ZGlyLCAqcCwgKm87CiAgIHB0cmRpZmZfdCB0bGVuOwogICB1bnNpZ25lZCBjaGFyICp0 YXJnZXQ7CiAgIHN0cnVjdCBwYXNzd2QgKnB3OwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAKIHsK ICAgY2hhciAqbm07CiAKLSAgcmVnaXN0ZXIgY2hhciAqcywgKnAsICpvLCAqeCwgKmVuZHA7 CisgIGNoYXIgKnMsICpwLCAqbywgKngsICplbmRwOwogICBjaGFyICp0YXJnZXQgPSBOVUxM OwogICBpbnQgdG90YWwgPSAwOwogICBpbnQgc3Vic3RpdHV0ZWQgPSAwOwpAQCAtMTc2OSw3 ICsxNzY5LDcgQEAKIExpc3BfT2JqZWN0CiBleHBhbmRfYW5kX2Rpcl90b19maWxlIChMaXNw X09iamVjdCBmaWxlbmFtZSwgTGlzcF9PYmplY3QgZGVmZGlyKQogewotICByZWdpc3RlciBM aXNwX09iamVjdCBhYnNuYW1lOworICBMaXNwX09iamVjdCBhYnNuYW1lOwogCiAgIGFic25h bWUgPSBGZXhwYW5kX2ZpbGVfbmFtZSAoZmlsZW5hbWUsIGRlZmRpcik7CiAKQEAgLTE3OTks NyArMTc5OSw3IEBACiBiYXJmX29yX3F1ZXJ5X2lmX2ZpbGVfZXhpc3RzIChMaXNwX09iamVj dCBhYnNuYW1lLCBjb25zdCBjaGFyICpxdWVyeXN0cmluZywKIAkJCSAgICAgIGludCBpbnRl cmFjdGl2ZSwgc3RydWN0IHN0YXQgKnN0YXRwdHIsIGludCBxdWljaykKIHsKLSAgcmVnaXN0 ZXIgTGlzcF9PYmplY3QgdGVtLCBlbmNvZGVkX2ZpbGVuYW1lOworICBMaXNwX09iamVjdCB0 ZW0sIGVuY29kZWRfZmlsZW5hbWU7CiAgIHN0cnVjdCBzdGF0IHN0YXRidWY7CiAgIHN0cnVj dCBnY3BybyBnY3BybzE7CiAKQEAgLTI3MDgsNyArMjcwOCw3IEBACiBTZWUgYGZpbGUtc3lt bGluay1wJyB0byBkaXN0aW5ndWlzaCBzeW1saW5rcy4gICovKQogICAoTGlzcF9PYmplY3Qg ZmlsZW5hbWUpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFic25hbWU7CisgIExpc3Bf T2JqZWN0IGFic25hbWU7CiAgIHN0cnVjdCBzdGF0IHN0OwogICBMaXNwX09iamVjdCBoYW5k bGVyOwogCkBAIC0yNzYyLDcgKzI3NjIsNyBAQAogU2VlIGBmaWxlLXN5bWxpbmstcCcgdG8g ZGlzdGluZ3Vpc2ggc3ltbGlua3MuICAqLykKICAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQog ewotICByZWdpc3RlciBMaXNwX09iamVjdCBhYnNuYW1lOworICBMaXNwX09iamVjdCBhYnNu YW1lOwogICBzdHJ1Y3Qgc3RhdCBzdDsKICAgTGlzcF9PYmplY3QgaGFuZGxlcjsKIApAQCAt MzI1MiwxMiArMzI1MiwxMiBAQAogICAoTGlzcF9PYmplY3QgZmlsZW5hbWUsIExpc3BfT2Jq ZWN0IHZpc2l0LCBMaXNwX09iamVjdCBiZWcsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmpl Y3QgcmVwbGFjZSkKIHsKICAgc3RydWN0IHN0YXQgc3Q7Ci0gIHJlZ2lzdGVyIGludCBmZDsK KyAgaW50IGZkOwogICBwdHJkaWZmX3QgaW5zZXJ0ZWQgPSAwOwogICBpbnQgbm9jaGFuZ2Ug PSAwOwotICByZWdpc3RlciBwdHJkaWZmX3QgaG93X211Y2g7CisgIHB0cmRpZmZfdCBob3df bXVjaDsKICAgb2ZmX3QgYmVnX29mZnNldCwgZW5kX29mZnNldDsKLSAgcmVnaXN0ZXIgaW50 IHVucHJvY2Vzc2VkOworICBpbnQgdW5wcm9jZXNzZWQ7CiAgIHB0cmRpZmZfdCBjb3VudCA9 IFNQRUNQRExfSU5ERVggKCk7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nw cm8zLCBnY3BybzQsIGdjcHJvNTsKICAgTGlzcF9PYmplY3QgaGFuZGxlciwgdmFsLCBpbnN2 YWwsIG9yaWdfZmlsZW5hbWUsIG9sZF91bmRvOwpAQCAtNDUzOSw3ICs0NTM5LDcgQEAKIGB3 cml0ZS1yZWdpb24tcG9zdC1hbm5vdGF0aW9uLWZ1bmN0aW9uJyBhdCB0aGUgZW5kLiAgKi8p CiAgIChMaXNwX09iamVjdCBzdGFydCwgTGlzcF9PYmplY3QgZW5kLCBMaXNwX09iamVjdCBm aWxlbmFtZSwgTGlzcF9PYmplY3QgYXBwZW5kLCBMaXNwX09iamVjdCB2aXNpdCwgTGlzcF9P YmplY3QgbG9ja25hbWUsIExpc3BfT2JqZWN0IG11c3RiZW5ldykKIHsKLSAgcmVnaXN0ZXIg aW50IGRlc2M7CisgIGludCBkZXNjOwogICBpbnQgZmFpbHVyZTsKICAgaW50IHNhdmVfZXJy bm8gPSAwOwogICBjb25zdCBjaGFyICpmbjsKQEAgLTQ5NDUsNyArNDk0NSw3IEBACiAKIHN0 YXRpYyBpbnQKIGFfd3JpdGUgKGludCBkZXNjLCBMaXNwX09iamVjdCBzdHJpbmcsIHB0cmRp ZmZfdCBwb3MsCi0JIHJlZ2lzdGVyIHB0cmRpZmZfdCBuY2hhcnMsIExpc3BfT2JqZWN0ICph bm5vdCwKKwkgcHRyZGlmZl90IG5jaGFycywgTGlzcF9PYmplY3QgKmFubm90LAogCSBzdHJ1 Y3QgY29kaW5nX3N5c3RlbSAqY29kaW5nKQogewogICBMaXNwX09iamVjdCB0ZW07CkBAIC01 MTYyLDcgKzUxNjIsNyBAQAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGZpbGVuYW1lOworICAgICAgTGlzcF9PYmplY3QgZmlsZW5hbWU7CiAg ICAgICBzdHJ1Y3Qgc3RhdCBzdDsKICAgICAgIExpc3BfT2JqZWN0IGhhbmRsZXI7CiAKCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWxvY2suYycKLS0tIHNyYy9maWxlbG9jay5jCTIw MTItMDUtMTAgMDA6NTU6NTcgKzAwMDAKKysrIHNyYy9maWxlbG9jay5jCTIwMTItMDYtMDMg MDU6NTM6MzggKzAwMDAKQEAgLTI5OCw5ICsyOTgsOSBAQAogICAgZmlsbF9pbl9sb2NrX2Zp bGVfbmFtZSAobG9jaywgKGZpbGUpKSkKIAogc3RhdGljIHZvaWQKLWZpbGxfaW5fbG9ja19m aWxlX25hbWUgKHJlZ2lzdGVyIGNoYXIgKmxvY2tmaWxlLCByZWdpc3RlciBMaXNwX09iamVj dCBmbikKK2ZpbGxfaW5fbG9ja19maWxlX25hbWUgKGNoYXIgKmxvY2tmaWxlLCBMaXNwX09i amVjdCBmbikKIHsKLSAgcmVnaXN0ZXIgY2hhciAqcDsKKyAgY2hhciAqcDsKICAgc3RydWN0 IHN0YXQgc3Q7CiAgIGludCBjb3VudCA9IDA7CiAKQEAgLTMzNiw3ICszMzYsNyBAQAogc3Rh dGljIGludAogbG9ja19maWxlXzEgKGNoYXIgKmxmbmFtZSwgaW50IGZvcmNlKQogewotICBy ZWdpc3RlciBpbnQgZXJyOworICBpbnQgZXJyOwogICBwcmludG1heF90IGJvb3QsIHBpZDsK ICAgY29uc3QgY2hhciAqdXNlcl9uYW1lOwogICBjb25zdCBjaGFyICpob3N0X25hbWU7CkBA IC00OTcsNyArNDk3LDcgQEAKICAgIFJldHVybiAtMSBpZiBjYW5ub3QgbG9jayBmb3IgYW55 IG90aGVyIHJlYXNvbi4gICovCiAKIHN0YXRpYyBpbnQKLWxvY2tfaWZfZnJlZSAobG9ja19p bmZvX3R5cGUgKmNsYXNoZXIsIHJlZ2lzdGVyIGNoYXIgKmxmbmFtZSkKK2xvY2tfaWZfZnJl ZSAobG9ja19pbmZvX3R5cGUgKmNsYXNoZXIsIGNoYXIgKmxmbmFtZSkKIHsKICAgd2hpbGUg KGxvY2tfZmlsZV8xIChsZm5hbWUsIDApID09IDApCiAgICAgewpAQCAtNTQyLDggKzU0Miw4 IEBACiB2b2lkCiBsb2NrX2ZpbGUgKExpc3BfT2JqZWN0IGZuKQogewotICByZWdpc3RlciBM aXNwX09iamVjdCBhdHRhY2ssIG9yaWdfZm4sIGVuY29kZWRfZm47Ci0gIHJlZ2lzdGVyIGNo YXIgKmxmbmFtZSwgKmxvY2tlcjsKKyAgTGlzcF9PYmplY3QgYXR0YWNrLCBvcmlnX2ZuLCBl bmNvZGVkX2ZuOworICBjaGFyICpsZm5hbWUsICpsb2NrZXI7CiAgIHB0cmRpZmZfdCBsb2Nr ZXJfc2l6ZTsKICAgbG9ja19pbmZvX3R5cGUgbG9ja19pbmZvOwogICBwcmludG1heF90IHBp ZDsKQEAgLTU3MSw3ICs1NzEsNyBAQAogICAvKiBTZWUgaWYgdGhpcyBmaWxlIGlzIHZpc2l0 ZWQgYW5kIGhhcyBjaGFuZ2VkIG9uIGRpc2sgc2luY2UgaXQgd2FzCiAgICAgIHZpc2l0ZWQu ICAqLwogICB7Ci0gICAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3ViamVjdF9idWY7CisgICAg TGlzcF9PYmplY3Qgc3ViamVjdF9idWY7CiAKICAgICBzdWJqZWN0X2J1ZiA9IGdldF90cnVl bmFtZV9idWZmZXIgKG9yaWdfZm4pOwogCkBAIC02MTAsOSArNjEwLDkgQEAKIH0KIAogdm9p ZAotdW5sb2NrX2ZpbGUgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZuKQordW5sb2NrX2ZpbGUg KExpc3BfT2JqZWN0IGZuKQogewotICByZWdpc3RlciBjaGFyICpsZm5hbWU7CisgIGNoYXIg KmxmbmFtZTsKIAogICBmbiA9IEZleHBhbmRfZmlsZV9uYW1lIChmbiwgUW5pbCk7CiAgIGZu ID0gRU5DT0RFX0ZJTEUgKGZuKTsKQEAgLTYyNiw4ICs2MjYsOCBAQAogdm9pZAogdW5sb2Nr X2FsbF9maWxlcyAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDsKLSAg cmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYjsKKyAgTGlzcF9PYmplY3QgdGFpbDsKKyAgc3Ry dWN0IGJ1ZmZlciAqYjsKIAogICBmb3IgKHRhaWwgPSBWYnVmZmVyX2FsaXN0OyBDT05TUCAo dGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CkBAIC02ODYsNyArNjg2LDcgQEAK ICAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQogewogICBMaXNwX09iamVjdCByZXQ7Ci0gIHJl Z2lzdGVyIGNoYXIgKmxmbmFtZTsKKyAgY2hhciAqbGZuYW1lOwogICBpbnQgb3duZXI7CiAg IGxvY2tfaW5mb190eXBlIGxvY2tlcjsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mbG9h dGZucy5jJwotLS0gc3JjL2Zsb2F0Zm5zLmMJMjAxMi0wMi0xMCAxODo1ODo0OCArMDAwMAor Kysgc3JjL2Zsb2F0Zm5zLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjA1LDcg KzIwNSw3IEBACiAKIERFRlVOICgiYWNvcyIsIEZhY29zLCBTYWNvcywgMSwgMSwgMCwKICAg ICAgICBkb2M6IC8qIFJldHVybiB0aGUgaW52ZXJzZSBjb3NpbmUgb2YgQVJHLiAgKi8pCi0g IChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAg IGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICNpZmRlZiBGTE9BVF9DSEVDS19E T01BSU4KQEAgLTIxOCw3ICsyMTgsNyBAQAogCiBERUZVTiAoImFzaW4iLCBGYXNpbiwgU2Fz aW4sIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGludmVyc2Ugc2luZSBv ZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2Jq ZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVm IEZMT0FUX0NIRUNLX0RPTUFJTgpAQCAtMjM1LDcgKzIzNSw3IEBACiBJZiB0d28gYXJndW1l bnRzIFkgYW5kIFggYXJlIGdpdmVuLCByZXR1cm4gdGhlIGludmVyc2UgdGFuZ2VudCBvZiBZ CiBkaXZpZGVkIGJ5IFgsIGkuZS4gdGhlIGFuZ2xlIGluIHJhZGlhbnMgYmV0d2VlbiB0aGUg dmVjdG9yIChYLCBZKQogYW5kIHRoZSB4LWF4aXMuICAqLykKLSAgKHJlZ2lzdGVyIExpc3Bf T2JqZWN0IHksIExpc3BfT2JqZWN0IHgpCisgIChMaXNwX09iamVjdCB5LCBMaXNwX09iamVj dCB4KQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKHkpOwogCkBAIC0yNTIsNyAr MjUyLDcgQEAKIAogREVGVU4gKCJjb3MiLCBGY29zLCBTY29zLCAxLCAxLCAwLAogICAgICAg IGRvYzogLyogUmV0dXJuIHRoZSBjb3NpbmUgb2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBM aXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0g ZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5fRkxPQVQgKGQgPSBjb3MgKGQpLCAiY29zIiwg YXJnKTsKQEAgLTI2MSw3ICsyNjEsNyBAQAogCiBERUZVTiAoInNpbiIsIEZzaW4sIFNzaW4s IDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHNpbmUgb2YgQVJHLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7 CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5fRkxPQVQgKGQgPSBz aW4gKGQpLCAic2luIiwgYXJnKTsKQEAgLTI3MCw3ICsyNzAsNyBAQAogCiBERUZVTiAoInRh biIsIEZ0YW4sIFN0YW4sIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHRh bmdlbnQgb2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChM aXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsK ICAgZG91YmxlIGMgPSBjb3MgKGQpOwpAQCAtMzQ5LDcgKzM0OSw3IEBACiAKIERFRlVOICgi YmVzc2VsLWowIiwgRmJlc3NlbF9qMCwgU2Jlc3NlbF9qMCwgMSwgMSwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiB0aGUgYmVzc2VsIGZ1bmN0aW9uIGowIG9mIEFSRy4gICovKQotICAo cmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBk b3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAgIElOX0ZMT0FUIChkID0gajAgKGQp LCAiYmVzc2VsLWowIiwgYXJnKTsKQEAgLTM1OCw3ICszNTgsNyBAQAogCiBERUZVTiAoImJl c3NlbC1qMSIsIEZiZXNzZWxfajEsIFNiZXNzZWxfajEsIDEsIDEsIDAsCiAgICAgICAgZG9j OiAvKiBSZXR1cm4gdGhlIGJlc3NlbCBmdW5jdGlvbiBqMSBvZiBBUkcuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91 YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogICBJTl9GTE9BVCAoZCA9IGoxIChkKSwg ImJlc3NlbC1qMSIsIGFyZyk7CkBAIC0zNjgsNyArMzY4LDcgQEAKIERFRlVOICgiYmVzc2Vs LWpuIiwgRmJlc3NlbF9qbiwgU2Jlc3NlbF9qbiwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8q IFJldHVybiB0aGUgb3JkZXIgTiBiZXNzZWwgZnVuY3Rpb24gb3V0cHV0IGpuIG9mIEFSRy4K IFRoZSBmaXJzdCBhcmcgKHRoZSBvcmRlcikgaXMgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIu ICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IG4sIExpc3BfT2JqZWN0IGFyZykKKyAg KExpc3BfT2JqZWN0IG4sIExpc3BfT2JqZWN0IGFyZykKIHsKICAgaW50IGkxID0gZXh0cmFj dF9mbG9hdCAobik7CiAgIGRvdWJsZSBmMiA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CkBAIC0z NzksNyArMzc5LDcgQEAKIAogREVGVU4gKCJiZXNzZWwteTAiLCBGYmVzc2VsX3kwLCBTYmVz c2VsX3kwLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBiZXNzZWwgZnVu Y3Rpb24geTAgb2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisg IChMaXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJn KTsKICAgSU5fRkxPQVQgKGQgPSB5MCAoZCksICJiZXNzZWwteTAiLCBhcmcpOwpAQCAtMzg4 LDcgKzM4OCw3IEBACiAKIERFRlVOICgiYmVzc2VsLXkxIiwgRmJlc3NlbF95MSwgU2Jlc3Nl bF95MSwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgYmVzc2VsIGZ1bmN0 aW9uIHkxIG9mIEFSRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAo TGlzcF9PYmplY3QgYXJnKQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7 CiAgIElOX0ZMT0FUIChkID0geTEgKGQpLCAiYmVzc2VsLXkwIiwgYXJnKTsKQEAgLTM5OCw3 ICszOTgsNyBAQAogREVGVU4gKCJiZXNzZWwteW4iLCBGYmVzc2VsX3luLCBTYmVzc2VsX3lu LCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBvcmRlciBOIGJlc3NlbCBm dW5jdGlvbiBvdXRwdXQgeW4gb2YgQVJHLgogVGhlIGZpcnN0IGFyZyAodGhlIG9yZGVyKSBp cyB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlci4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmpl Y3QgbiwgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgbiwgTGlzcF9PYmplY3Qg YXJnKQogewogICBpbnQgaTEgPSBleHRyYWN0X2Zsb2F0IChuKTsKICAgZG91YmxlIGYyID0g ZXh0cmFjdF9mbG9hdCAoYXJnKTsKQEAgLTQxMyw3ICs0MTMsNyBAQAogCiBERUZVTiAoImVy ZiIsIEZlcmYsIFNlcmYsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIG1h dGhlbWF0aWNhbCBlcnJvciBmdW5jdGlvbiBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExp c3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBl eHRyYWN0X2Zsb2F0IChhcmcpOwogICBJTl9GTE9BVCAoZCA9IGVyZiAoZCksICJlcmYiLCBh cmcpOwpAQCAtNDIyLDcgKzQyMiw3IEBACiAKIERFRlVOICgiZXJmYyIsIEZlcmZjLCBTZXJm YywgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgY29tcGxlbWVudGFyeSBl cnJvciBmdW5jdGlvbiBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFy ZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0 IChhcmcpOwogICBJTl9GTE9BVCAoZCA9IGVyZmMgKGQpLCAiZXJmYyIsIGFyZyk7CkBAIC00 MzEsNyArNDMxLDcgQEAKIAogREVGVU4gKCJsb2ctZ2FtbWEiLCBGbG9nX2dhbW1hLCBTbG9n X2dhbW1hLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBsb2cgZ2FtbWEg b2YgQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09i amVjdCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5f RkxPQVQgKGQgPSBsZ2FtbWEgKGQpLCAibG9nLWdhbW1hIiwgYXJnKTsKQEAgLTQ0MCw3ICs0 NDAsNyBAQAogCiBERUZVTiAoImN1YmUtcm9vdCIsIEZjdWJlX3Jvb3QsIFNjdWJlX3Jvb3Qs IDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGN1YmUgcm9vdCBvZiBBUkcu ICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFy ZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVmIEhBVkVf Q0JSVApAQCAtNDU4LDcgKzQ1OCw3IEBACiAMCiBERUZVTiAoImV4cCIsIEZleHAsIFNleHAs IDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGV4cG9uZW50aWFsIGJhc2Ug ZSBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3Bf T2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lm ZGVmIEZMT0FUX0NIRUNLX0RPTUFJTgpAQCAtNDc0LDcgKzQ3NCw3IEBACiAKIERFRlVOICgi ZXhwdCIsIEZleHB0LCBTZXhwdCwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0 aGUgZXhwb25lbnRpYWwgQVJHMSAqKiBBUkcyLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09i amVjdCBhcmcxLCBMaXNwX09iamVjdCBhcmcyKQorICAoTGlzcF9PYmplY3QgYXJnMSwgTGlz cF9PYmplY3QgYXJnMikKIHsKICAgZG91YmxlIGYxLCBmMiwgZjM7CiAKQEAgLTUyMCw3ICs1 MjAsNyBAQAogREVGVU4gKCJsb2ciLCBGbG9nLCBTbG9nLCAxLCAyLCAwLAogICAgICAgIGRv YzogLyogUmV0dXJuIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiBBUkcuCiBJZiB0aGUgb3B0 aW9uYWwgYXJndW1lbnQgQkFTRSBpcyBnaXZlbiwgcmV0dXJuIGxvZyBBUkcgdXNpbmcgdGhh dCBiYXNlLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0 IGJhc2UpCisgIChMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IGJhc2UpCiB7CiAgIGRv dWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKIApAQCAtNTQ4LDcgKzU0OCw3IEBACiAK IERFRlVOICgibG9nMTAiLCBGbG9nMTAsIFNsb2cxMCwgMSwgMSwgMCwKICAgICAgICBkb2M6 IC8qIFJldHVybiB0aGUgbG9nYXJpdGhtIGJhc2UgMTAgb2YgQVJHLiAgKi8pCi0gIChyZWdp c3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAgIGRvdWJs ZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICNpZmRlZiBGTE9BVF9DSEVDS19ET01BSU4K QEAgLTU2MSw3ICs1NjEsNyBAQAogCiBERUZVTiAoInNxcnQiLCBGc3FydCwgU3NxcnQsIDEs IDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIEFSRy4g ICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJn KQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAjaWZkZWYgRkxPQVRf Q0hFQ0tfRE9NQUlOCkBAIC01NzYsNyArNTc2LDcgQEAKIAogREVGVU4gKCJhY29zaCIsIEZh Y29zaCwgU2Fjb3NoLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBpbnZl cnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIEFSRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBkb3VibGUgZCA9IGV4dHJh Y3RfZmxvYXQgKGFyZyk7CiAjaWZkZWYgRkxPQVRfQ0hFQ0tfRE9NQUlOCkBAIC01OTMsNyAr NTkzLDcgQEAKIAogREVGVU4gKCJhc2luaCIsIEZhc2luaCwgU2FzaW5oLCAxLCAxLCAwLAog ICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgc2luZSBvZiBB UkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0 IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVmIEhB VkVfSU5WRVJTRV9IWVBFUkJPTElDCkBAIC02MDYsNyArNjA2LDcgQEAKIAogREVGVU4gKCJh dGFuaCIsIEZhdGFuaCwgU2F0YW5oLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJu IHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBBUkcuICAqLykKLSAgKHJlZ2lz dGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91Ymxl IGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogI2lmZGVmIEZMT0FUX0NIRUNLX0RPTUFJTgpA QCAtNjIzLDcgKzYyMyw3IEBACiAKIERFRlVOICgiY29zaCIsIEZjb3NoLCBTY29zaCwgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgaHlwZXJib2xpYyBjb3NpbmUgb2Yg QVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVj dCBhcmcpCiB7CiAgIGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICNpZmRlZiBG TE9BVF9DSEVDS19ET01BSU4KQEAgLTYzNiw3ICs2MzYsNyBAQAogCiBERUZVTiAoInNpbmgi LCBGc2luaCwgU3NpbmgsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGh5 cGVyYm9saWMgc2luZSBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFy ZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAgZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0 IChhcmcpOwogI2lmZGVmIEZMT0FUX0NIRUNLX0RPTUFJTgpAQCAtNjQ5LDcgKzY0OSw3IEBA CiAKIERFRlVOICgidGFuaCIsIEZ0YW5oLCBTdGFuaCwgMSwgMSwgMCwKICAgICAgICBkb2M6 IC8qIFJldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIEFSRy4gICovKQotICAocmVn aXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBkb3Vi bGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAgIElOX0ZMT0FUIChkID0gdGFuaCAoZCks ICJ0YW5oIiwgYXJnKTsKQEAgLTY1OSw3ICs2NTksNyBAQAogDAogREVGVU4gKCJhYnMiLCBG YWJzLCBTYWJzLCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBhYnNvbHV0 ZSB2YWx1ZSBvZiBBUkcuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAg KExpc3BfT2JqZWN0IGFyZykKIHsKICAgQ0hFQ0tfTlVNQkVSX09SX0ZMT0FUIChhcmcpOwog CkBAIC02NzMsNyArNjczLDcgQEAKIAogREVGVU4gKCJmbG9hdCIsIEZmbG9hdCwgU2Zsb2F0 LCAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBmbG9hdGluZyBwb2ludCBu dW1iZXIgZXF1YWwgdG8gQVJHLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcp CisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAgIENIRUNLX05VTUJFUl9PUl9GTE9BVCAoYXJn KTsKIApAQCAtOTA4LDcgKzkwOCw3IEBACiBERUZVTiAoImZjZWlsaW5nIiwgRmZjZWlsaW5n LCBTZmNlaWxpbmcsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHNtYWxs ZXN0IGludGVnZXIgbm8gbGVzcyB0aGFuIEFSRywgYXMgYSBmbG9hdC4KIFwoUm91bmQgdG93 YXJkICtpbmYuXCkgICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlz cF9PYmplY3QgYXJnKQogewogICBkb3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAg IElOX0ZMT0FUIChkID0gY2VpbCAoZCksICJmY2VpbGluZyIsIGFyZyk7CkBAIC05MTgsNyAr OTE4LDcgQEAKIERFRlVOICgiZmZsb29yIiwgRmZmbG9vciwgU2ZmbG9vciwgMSwgMSwgMCwK ICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgbGFyZ2VzdCBpbnRlZ2VyIG5vIGdyZWF0ZXIg dGhhbiBBUkcsIGFzIGEgZmxvYXQuCiBcKFJvdW5kIHRvd2FyZHMgLWluZi5cKSAgKi8pCi0g IChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNwX09iamVjdCBhcmcpCiB7CiAg IGRvdWJsZSBkID0gZXh0cmFjdF9mbG9hdCAoYXJnKTsKICAgSU5fRkxPQVQgKGQgPSBmbG9v ciAoZCksICJmZmxvb3IiLCBhcmcpOwpAQCAtOTI3LDcgKzkyNyw3IEBACiAKIERFRlVOICgi ZnJvdW5kIiwgRmZyb3VuZCwgU2Zyb3VuZCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJl dHVybiB0aGUgbmVhcmVzdCBpbnRlZ2VyIHRvIEFSRywgYXMgYSBmbG9hdC4gICovKQotICAo cmVnaXN0ZXIgTGlzcF9PYmplY3QgYXJnKQorICAoTGlzcF9PYmplY3QgYXJnKQogewogICBk b3VibGUgZCA9IGV4dHJhY3RfZmxvYXQgKGFyZyk7CiAgIElOX0ZMT0FUIChkID0gZW1hY3Nf cmludCAoZCksICJmcm91bmQiLCBhcmcpOwpAQCAtOTM3LDcgKzkzNyw3IEBACiBERUZVTiAo ImZ0cnVuY2F0ZSIsIEZmdHJ1bmNhdGUsIFNmdHJ1bmNhdGUsIDEsIDEsIDAsCiAgICAgICAg ZG9jOiAvKiBUcnVuY2F0ZSBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBhbiBpbnRlZ3Jh bCBmbG9hdCB2YWx1ZS4KIFJvdW5kcyB0aGUgdmFsdWUgdG93YXJkIHplcm8uICAqLykKLSAg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZykKKyAgKExpc3BfT2JqZWN0IGFyZykKIHsKICAg ZG91YmxlIGQgPSBleHRyYWN0X2Zsb2F0IChhcmcpOwogICBpZiAoZCA+PSAwLjApCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3JjL2Zucy5jJwotLS0gc3JjL2Zucy5jCTIwMTItMDUtMjUgMTg6 MTk6MjQgKzAwMDAKKysrIHNyYy9mbnMuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBA IC0xMTUsOSArMTE1LDkgQEAKIElmIHRoZSBzdHJpbmcgY29udGFpbnMgbXVsdGlieXRlIGNo YXJhY3RlcnMsIHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5CiB0aGUgbnVtYmVyIG9mIGJ5dGVz IGluIHRoZSBzdHJpbmc7IGl0IGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycy4KIFRvIGdl dCB0aGUgbnVtYmVyIG9mIGJ5dGVzLCB1c2UgYHN0cmluZy1ieXRlcycuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IHNlcXVlbmNlKQorICAoTGlzcF9PYmplY3Qgc2VxdWVuY2Up CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwog CiAgIGlmIChTVFJJTkdQIChzZXF1ZW5jZSkpCiAgICAgWFNFVEZBU1RJTlQgKHZhbCwgU0NI QVJTIChzZXF1ZW5jZSkpOwpAQCAtMjE0LDcgKzIxNCw3IEBACiAgICAgICAgZG9jOiAvKiBS ZXR1cm4gdCBpZiB0d28gc3RyaW5ncyBoYXZlIGlkZW50aWNhbCBjb250ZW50cy4KIENhc2Ug aXMgc2lnbmlmaWNhbnQsIGJ1dCB0ZXh0IHByb3BlcnRpZXMgYXJlIGlnbm9yZWQuCiBTeW1i b2xzIGFyZSBhbHNvIGFsbG93ZWQ7IHRoZWlyIHByaW50IG5hbWVzIGFyZSB1c2VkIGluc3Rl YWQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHMxLCBMaXNwX09iamVjdCBzMikK KyAgKExpc3BfT2JqZWN0IHMxLCBMaXNwX09iamVjdCBzMikKIHsKICAgaWYgKFNZTUJPTFAg KHMxKSkKICAgICBzMSA9IFNZTUJPTF9OQU1FIChzMSk7CkBAIC0yNDYsOCArMjQ2LDggQEAK ICAgTiAtIDEgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgbWF0Y2ggYXQgdGhl IGJlZ2lubmluZy4gICovKQogICAoTGlzcF9PYmplY3Qgc3RyMSwgTGlzcF9PYmplY3Qgc3Rh cnQxLCBMaXNwX09iamVjdCBlbmQxLCBMaXNwX09iamVjdCBzdHIyLCBMaXNwX09iamVjdCBz dGFydDIsIExpc3BfT2JqZWN0IGVuZDIsIExpc3BfT2JqZWN0IGlnbm9yZV9jYXNlKQogewot ICByZWdpc3RlciBwdHJkaWZmX3QgZW5kMV9jaGFyLCBlbmQyX2NoYXI7Ci0gIHJlZ2lzdGVy IHB0cmRpZmZfdCBpMSwgaTFfYnl0ZSwgaTIsIGkyX2J5dGU7CisgIHB0cmRpZmZfdCBlbmQx X2NoYXIsIGVuZDJfY2hhcjsKKyAgcHRyZGlmZl90IGkxLCBpMV9ieXRlLCBpMiwgaTJfYnl0 ZTsKIAogICBDSEVDS19TVFJJTkcgKHN0cjEpOwogICBDSEVDS19TVFJJTkcgKHN0cjIpOwpA QCAtMzM5LDEwICszMzksMTAgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0IGlmIGZpcnN0 IGFyZyBzdHJpbmcgaXMgbGVzcyB0aGFuIHNlY29uZCBpbiBsZXhpY29ncmFwaGljIG9yZGVy LgogQ2FzZSBpcyBzaWduaWZpY2FudC4KIFN5bWJvbHMgYXJlIGFsc28gYWxsb3dlZDsgdGhl aXIgcHJpbnQgbmFtZXMgYXJlIHVzZWQgaW5zdGVhZC4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3QgczEsIExpc3BfT2JqZWN0IHMyKQorICAoTGlzcF9PYmplY3QgczEsIExpc3Bf T2JqZWN0IHMyKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgZW5kOwotICByZWdpc3RlciBw dHJkaWZmX3QgaTEsIGkxX2J5dGUsIGkyLCBpMl9ieXRlOworICBwdHJkaWZmX3QgZW5kOwor ICBwdHJkaWZmX3QgaTEsIGkxX2J5dGUsIGkyLCBpMl9ieXRlOwogCiAgIGlmIChTWU1CT0xQ IChzMSkpCiAgICAgczEgPSBTWU1CT0xfTkFNRSAoczEpOwpAQCAtNDc0LDEyICs0NzQsMTIg QEAKIAllbnVtIExpc3BfVHlwZSB0YXJnZXRfdHlwZSwgaW50IGxhc3Rfc3BlY2lhbCkKIHsK ICAgTGlzcF9PYmplY3QgdmFsOwotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOwotICBy ZWdpc3RlciBMaXNwX09iamVjdCB0aGlzOworICBMaXNwX09iamVjdCB0YWlsOworICBMaXNw X09iamVjdCB0aGlzOwogICBwdHJkaWZmX3QgdG9pbmRleDsKICAgcHRyZGlmZl90IHRvaW5k ZXhfYnl0ZSA9IDA7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCByZXN1bHRfbGVuOwotICByZWdp c3RlciBFTUFDU19JTlQgcmVzdWx0X2xlbl9ieXRlOworICBFTUFDU19JTlQgcmVzdWx0X2xl bjsKKyAgRU1BQ1NfSU5UIHJlc3VsdF9sZW5fYnl0ZTsKICAgcHRyZGlmZl90IGFyZ251bTsK ICAgTGlzcF9PYmplY3QgbGFzdF90YWlsOwogICBMaXNwX09iamVjdCBwcmV2OwpAQCAtNjE1 LDggKzYxNSw4IEBACiAgICAgewogICAgICAgTGlzcF9PYmplY3QgdGhpc2xlbjsKICAgICAg IHB0cmRpZmZfdCB0aGlzbGVuaSA9IDA7Ci0gICAgICByZWdpc3RlciBwdHJkaWZmX3QgdGhp c2luZGV4ID0gMDsKLSAgICAgIHJlZ2lzdGVyIHB0cmRpZmZfdCB0aGlzaW5kZXhfYnl0ZSA9 IDA7CisgICAgICBwdHJkaWZmX3QgdGhpc2luZGV4ID0gMDsKKyAgICAgIHB0cmRpZmZfdCB0 aGlzaW5kZXhfYnl0ZSA9IDA7CiAKICAgICAgIHRoaXMgPSBhcmdzW2FyZ251bV07CiAgICAg ICBpZiAoIUNPTlNQICh0aGlzKSkKQEAgLTY1Niw3ICs2NTYsNyBAQAogCS8qIENvcHkgZWxl bWVudCBieSBlbGVtZW50LiAgKi8KIAl3aGlsZSAoMSkKIAkgIHsKLQkgICAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgZWx0OworCSAgICBMaXNwX09iamVjdCBlbHQ7CiAKIAkgICAgLyogRmV0 Y2ggbmV4dCBlbGVtZW50IG9mIGB0aGlzJyBhcmcgaW50byBgZWx0Jywgb3IgYnJlYWsgaWYK IAkgICAgICAgYHRoaXMnIGlzIGV4aGF1c3RlZC4gKi8KQEAgLTExMjEsNyArMTEyMSw3IEBA CiBFbGVtZW50cyBvZiBBTElTVCB0aGF0IGFyZSBub3QgY29uc2VzIGFyZSBhbHNvIHNoYXJl ZC4gICovKQogICAoTGlzcF9PYmplY3QgYWxpc3QpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHRlbTsKKyAgTGlzcF9PYmplY3QgdGVtOwogCiAgIENIRUNLX0xJU1QgKGFsaXN0KTsK ICAgaWYgKE5JTFAgKGFsaXN0KSkKQEAgLTExMjksNyArMTEyOSw3IEBACiAgIGFsaXN0ID0g Y29uY2F0ICgxLCAmYWxpc3QsIExpc3BfQ29ucywgMCk7CiAgIGZvciAodGVtID0gYWxpc3Q7 IENPTlNQICh0ZW0pOyB0ZW0gPSBYQ0RSICh0ZW0pKQogICAgIHsKLSAgICAgIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGNhcjsKKyAgICAgIExpc3BfT2JqZWN0IGNhcjsKICAgICAgIGNhciA9 IFhDQVIgKHRlbSk7CiAKICAgICAgIGlmIChDT05TUCAoY2FyKSkKQEAgLTExNDksNyArMTE0 OSw3IEBACiBUaGUgU1RSSU5HIGFyZ3VtZW50IG1heSBhbHNvIGJlIGEgdmVjdG9yLiAgSW4g dGhhdCBjYXNlLCB0aGUgcmV0dXJuCiB2YWx1ZSBpcyBhIG5ldyB2ZWN0b3IgdGhhdCBjb250 YWlucyB0aGUgZWxlbWVudHMgYmV0d2VlbiBpbmRleCBGUk9NCiBcKGluY2x1c2l2ZSkgYW5k IGluZGV4IFRPIChleGNsdXNpdmUpIG9mIHRoYXQgdmVjdG9yIGFyZ3VtZW50LiAgKi8pCi0g IChMaXNwX09iamVjdCBzdHJpbmcsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZyb20sIExpc3Bf T2JqZWN0IHRvKQorICAoTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBmcm9tLCBM aXNwX09iamVjdCB0bykKIHsKICAgTGlzcF9PYmplY3QgcmVzOwogICBwdHJkaWZmX3Qgc2l6 ZTsKQEAgLTEyMDcsNyArMTIwNyw3IEBACiBJZiBGUk9NIG9yIFRPIGlzIG5lZ2F0aXZlLCBp dCBjb3VudHMgZnJvbSB0aGUgZW5kLgogCiBXaXRoIG9uZSBhcmd1bWVudCwganVzdCBjb3B5 IFNUUklORyB3aXRob3V0IGl0cyBwcm9wZXJ0aWVzLiAgKi8pCi0gIChMaXNwX09iamVjdCBz dHJpbmcsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZyb20sIExpc3BfT2JqZWN0IHRvKQorICAo TGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBmcm9tLCBMaXNwX09iamVjdCB0bykK IHsKICAgcHRyZGlmZl90IHNpemU7CiAgIEVNQUNTX0lOVCBmcm9tX2NoYXIsIHRvX2NoYXI7 CkBAIC0xMzA2LDcgKzEzMDYsNyBAQAogCiBERUZVTiAoImVsdCIsIEZlbHQsIFNlbHQsIDIs IDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gZWxlbWVudCBvZiBTRVFVRU5DRSBhdCBp bmRleCBOLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBzZXF1ZW5jZSwgTGlzcF9P YmplY3QgbikKKyAgKExpc3BfT2JqZWN0IHNlcXVlbmNlLCBMaXNwX09iamVjdCBuKQogewog ICBDSEVDS19OVU1CRVIgKG4pOwogICBpZiAoQ09OU1AgKHNlcXVlbmNlKSB8fCBOSUxQIChz ZXF1ZW5jZSkpCkBAIC0xMzIwLDEyICsxMzIwLDEyIEBACiBERUZVTiAoIm1lbWJlciIsIEZt ZW1iZXIsIFNtZW1iZXIsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbm9uLW5p bCBpZiBFTFQgaXMgYW4gZWxlbWVudCBvZiBMSVNULiAgQ29tcGFyaXNvbiBkb25lIHdpdGgg YGVxdWFsJy4KIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBMSVNUIHdob3Nl IGNhciBpcyBFTFQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGVsdCwgTGlzcF9P YmplY3QgbGlzdCkKKyAgKExpc3BfT2JqZWN0IGVsdCwgTGlzcF9PYmplY3QgbGlzdCkKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAg Zm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAg ICAgewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICAgICAgTGlzcF9PYmpl Y3QgdGVtOwogICAgICAgQ0hFQ0tfTElTVF9DT05TICh0YWlsLCBsaXN0KTsKICAgICAgIHRl bSA9IFhDQVIgKHRhaWwpOwogICAgICAgaWYgKCEgTklMUCAoRmVxdWFsIChlbHQsIHRlbSkp KQpAQCAtMTMzOCw3ICsxMzM4LDcgQEAKIERFRlVOICgibWVtcSIsIEZtZW1xLCBTbWVtcSwg MiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiBub24tbmlsIGlmIEVMVCBpcyBhbiBl bGVtZW50IG9mIExJU1QuICBDb21wYXJpc29uIGRvbmUgd2l0aCBgZXEnLgogVGhlIHZhbHVl IGlzIGFjdHVhbGx5IHRoZSB0YWlsIG9mIExJU1Qgd2hvc2UgY2FyIGlzIEVMVC4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgZWx0LCBMaXNwX09iamVjdCBsaXN0KQorICAoTGlz cF9PYmplY3QgZWx0LCBMaXNwX09iamVjdCBsaXN0KQogewogICB3aGlsZSAoMSkKICAgICB7 CkBAIC0xMzY0LDE2ICsxMzY0LDE2IEBACiBERUZVTiAoIm1lbXFsIiwgRm1lbXFsLCBTbWVt cWwsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbm9uLW5pbCBpZiBFTFQgaXMg YW4gZWxlbWVudCBvZiBMSVNULiAgQ29tcGFyaXNvbiBkb25lIHdpdGggYGVxbCcuCiBUaGUg dmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMgRUxULiAg Ki8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCisg IChMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7Ci0gIHJlZ2lzdGVyIExp c3BfT2JqZWN0IHRhaWw7CisgIExpc3BfT2JqZWN0IHRhaWw7CiAKICAgaWYgKCFGTE9BVFAg KGVsdCkpCiAgICAgcmV0dXJuIEZtZW1xIChlbHQsIGxpc3QpOwogCiAgIGZvciAodGFpbCA9 IGxpc3Q7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQogICAgIHsKLSAgICAg IHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTsKKyAgICAgIExpc3BfT2JqZWN0IHRlbTsKICAg ICAgIENIRUNLX0xJU1RfQ09OUyAodGFpbCwgbGlzdCk7CiAgICAgICB0ZW0gPSBYQ0FSICh0 YWlsKTsKICAgICAgIGlmIChGTE9BVFAgKHRlbSkgJiYgaW50ZXJuYWxfZXF1YWwgKGVsdCwg dGVtLCAwLCAwKSkKQEAgLTE0ODMsNyArMTQ4Myw3IEBACiBERUZVTiAoInJhc3NxIiwgRnJh c3NxLCBTcmFzc3EsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gbm9uLW5pbCBp ZiBLRVkgaXMgYGVxJyB0byB0aGUgY2RyIG9mIGFuIGVsZW1lbnQgb2YgTElTVC4KIFRoZSB2 YWx1ZSBpcyBhY3R1YWxseSB0aGUgZmlyc3QgZWxlbWVudCBvZiBMSVNUIHdob3NlIGNkciBp cyBLRVkuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3Qg bGlzdCkKKyAgKExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3QgbGlzdCkKIHsKICAgd2hp bGUgKDEpCiAgICAgewpAQCAtMTU1MywxMCArMTU1MywxMCBAQAogSWYgdGhlIGZpcnN0IG1l bWJlciBvZiBMSVNUIGlzIEVMVCwgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBpdCBieSBz aWRlIGVmZmVjdDsKIHRoZXJlZm9yZSwgd3JpdGUgYChzZXRxIGZvbyAoZGVscSBlbGVtZW50 IGZvbykpJwogdG8gYmUgc3VyZSBvZiBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgYGZvbycuICAq LykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGVsdCwgTGlzcF9PYmplY3QgbGlzdCkKKyAg KExpc3BfT2JqZWN0IGVsdCwgTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdGFpbCwgcHJldjsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBM aXNwX09iamVjdCB0YWlsLCBwcmV2OworICBMaXNwX09iamVjdCB0ZW07CiAKICAgdGFpbCA9 IGxpc3Q7CiAgIHByZXYgPSBRbmlsOwpAQCAtMTcwNCw3ICsxNzA0LDcgQEAKIFJldHVybiB0 aGUgcmV2ZXJzZWQgbGlzdC4gICovKQogICAoTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgcmVn aXN0ZXIgTGlzcF9PYmplY3QgcHJldiwgdGFpbCwgbmV4dDsKKyAgTGlzcF9PYmplY3QgcHJl diwgdGFpbCwgbmV4dDsKIAogICBpZiAoTklMUCAobGlzdCkpIHJldHVybiBsaXN0OwogICBw cmV2ID0gUW5pbDsKQEAgLTE3NDcsNyArMTc0Nyw3IEBACiAgIChMaXNwX09iamVjdCBsaXN0 LCBMaXNwX09iamVjdCBwcmVkaWNhdGUpCiB7CiAgIExpc3BfT2JqZWN0IGZyb250LCBiYWNr OwotICByZWdpc3RlciBMaXNwX09iamVjdCBsZW4sIHRlbTsKKyAgTGlzcF9PYmplY3QgbGVu LCB0ZW07CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKICAgRU1BQ1NfSU5UIGxl bmd0aDsKIApAQCAtMTc3Myw5ICsxNzczLDkgQEAKIG1lcmdlIChMaXNwX09iamVjdCBvcmdf bDEsIExpc3BfT2JqZWN0IG9yZ19sMiwgTGlzcF9PYmplY3QgcHJlZCkKIHsKICAgTGlzcF9P YmplY3QgdmFsdWU7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWw7CisgIExpc3BfT2Jq ZWN0IHRhaWw7CiAgIExpc3BfT2JqZWN0IHRlbTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qg bDEsIGwyOworICBMaXNwX09iamVjdCBsMSwgbDI7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEs IGdjcHJvMiwgZ2Nwcm8zLCBnY3BybzQ7CiAKICAgbDEgPSBvcmdfbDE7CkBAIC0xODgwLDkg KzE4ODAsOSBAQAogb3RoZXJ3aXNlIHRoZSBuZXcgUFJPUCBWQUwgcGFpciBpcyBhZGRlZC4g IFRoZSBuZXcgcGxpc3QgaXMgcmV0dXJuZWQ7CiB1c2UgYChzZXRxIHggKHBsaXN0LXB1dCB4 IHByb3AgdmFsKSknIHRvIGJlIHN1cmUgdG8gdXNlIHRoZSBuZXcgdmFsdWUuCiBUaGUgUExJ U1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZlY3RzLiAgKi8pCi0gIChMaXNwX09iamVjdCBw bGlzdCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcCwgTGlzcF9PYmplY3QgdmFsKQorICAo TGlzcF9PYmplY3QgcGxpc3QsIExpc3BfT2JqZWN0IHByb3AsIExpc3BfT2JqZWN0IHZhbCkK IHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbCwgcHJldjsKKyAgTGlzcF9PYmplY3Qg dGFpbCwgcHJldjsKICAgTGlzcF9PYmplY3QgbmV3Y2VsbDsKICAgcHJldiA9IFFuaWw7CiAg IGZvciAodGFpbCA9IHBsaXN0OyBDT05TUCAodGFpbCkgJiYgQ09OU1AgKFhDRFIgKHRhaWwp KTsKQEAgLTE5NDksOSArMTk0OSw5IEBACiBvdGhlcndpc2UgdGhlIG5ldyBQUk9QIFZBTCBw YWlyIGlzIGFkZGVkLiAgVGhlIG5ldyBwbGlzdCBpcyByZXR1cm5lZDsKIHVzZSBgKHNldHEg eCAobGF4LXBsaXN0LXB1dCB4IHByb3AgdmFsKSknIHRvIGJlIHN1cmUgdG8gdXNlIHRoZSBu ZXcgdmFsdWUuCiBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZlY3RzLiAgKi8p Ci0gIChMaXNwX09iamVjdCBwbGlzdCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcCwgTGlz cF9PYmplY3QgdmFsKQorICAoTGlzcF9PYmplY3QgcGxpc3QsIExpc3BfT2JqZWN0IHByb3As IExpc3BfT2JqZWN0IHZhbCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbCwgcHJl djsKKyAgTGlzcF9PYmplY3QgdGFpbCwgcHJldjsKICAgTGlzcF9PYmplY3QgbmV3Y2VsbDsK ICAgcHJldiA9IFFuaWw7CiAgIGZvciAodGFpbCA9IHBsaXN0OyBDT05TUCAodGFpbCkgJiYg Q09OU1AgKFhDRFIgKHRhaWwpKTsKQEAgLTE5OTMsNyArMTk5Myw3IEBACiBOdW1iZXJzIGFy ZSBjb21wYXJlZCBieSB2YWx1ZSwgYnV0IGludGVnZXJzIGNhbm5vdCBlcXVhbCBmbG9hdHMu CiAgKFVzZSBgPScgaWYgeW91IHdhbnQgaW50ZWdlcnMgYW5kIGZsb2F0cyB0byBiZSBhYmxl IHRvIGJlIGVxdWFsLikKIFN5bWJvbHMgbXVzdCBtYXRjaCBleGFjdGx5LiAgKi8pCi0gIChy ZWdpc3RlciBMaXNwX09iamVjdCBvMSwgTGlzcF9PYmplY3QgbzIpCisgIChMaXNwX09iamVj dCBvMSwgTGlzcF9PYmplY3QgbzIpCiB7CiAgIHJldHVybiBpbnRlcm5hbF9lcXVhbCAobzEs IG8yLCAwLCAwKSA/IFF0IDogUW5pbDsKIH0KQEAgLTIwMDIsNyArMjAwMiw3IEBACiAgICAg ICAgZG9jOiAvKiBSZXR1cm4gdCBpZiB0d28gTGlzcCBvYmplY3RzIGhhdmUgc2ltaWxhciBz dHJ1Y3R1cmUgYW5kIGNvbnRlbnRzLgogVGhpcyBpcyBsaWtlIGBlcXVhbCcgZXhjZXB0IHRo YXQgaXQgY29tcGFyZXMgdGhlIHRleHQgcHJvcGVydGllcwogb2Ygc3RyaW5ncy4gIChgZXF1 YWwnIGlnbm9yZXMgdGV4dCBwcm9wZXJ0aWVzLikgICovKQotICAocmVnaXN0ZXIgTGlzcF9P YmplY3QgbzEsIExpc3BfT2JqZWN0IG8yKQorICAoTGlzcF9PYmplY3QgbzEsIExpc3BfT2Jq ZWN0IG8yKQogewogICByZXR1cm4gaW50ZXJuYWxfZXF1YWwgKG8xLCBvMiwgMCwgMSkgPyBR dCA6IFFuaWw7CiB9CkBAIC0yMDEyLDcgKzIwMTIsNyBAQAogICAgUFJPUFMsIGlmIG5vbi1u aWwsIG1lYW5zIGNvbXBhcmUgc3RyaW5nIHRleHQgcHJvcGVydGllcyB0b28uICAqLwogCiBz dGF0aWMgaW50Ci1pbnRlcm5hbF9lcXVhbCAocmVnaXN0ZXIgTGlzcF9PYmplY3QgbzEsIHJl Z2lzdGVyIExpc3BfT2JqZWN0IG8yLCBpbnQgZGVwdGgsIGludCBwcm9wcykKK2ludGVybmFs X2VxdWFsIChMaXNwX09iamVjdCBvMSwgTGlzcF9PYmplY3QgbzIsIGludCBkZXB0aCwgaW50 IHByb3BzKQogewogICBpZiAoZGVwdGggPiAyMDApCiAgICAgZXJyb3IgKCJTdGFjayBvdmVy ZmxvdyBpbiBlcXVhbCIpOwpAQCAtMjA2OCw3ICsyMDY4LDcgQEAKIAogICAgIGNhc2UgTGlz cF9WZWN0b3JsaWtlOgogICAgICAgewotCXJlZ2lzdGVyIGludCBpOworCWludCBpOwogCXB0 cmRpZmZfdCBzaXplID0gQVNJWkUgKG8xKTsKIAkvKiBQc2V1ZG92ZWN0b3JzIGhhdmUgdGhl IHR5cGUgZW5jb2RlZCBpbiB0aGUgc2l6ZSBmaWVsZCwgc28gdGhpcyB0ZXN0CiAJICAgYWN0 dWFsbHkgY2hlY2tzIHRoYXQgdGhlIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIHdl bGwgYXMgdGhlCkBAIC0yMTM2LDExICsyMTM2LDExIEBACiBBUlJBWSBpcyBhIHZlY3Rvciwg c3RyaW5nLCBjaGFyLXRhYmxlLCBvciBib29sLXZlY3Rvci4gICovKQogICAoTGlzcF9PYmpl Y3QgYXJyYXksIExpc3BfT2JqZWN0IGl0ZW0pCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBz aXplLCBpZHg7CisgIHB0cmRpZmZfdCBzaXplLCBpZHg7CiAKICAgaWYgKFZFQ1RPUlAgKGFy cmF5KSkKICAgICB7Ci0gICAgICByZWdpc3RlciBMaXNwX09iamVjdCAqcCA9IFhWRUNUT1Ig KGFycmF5KS0+Y29udGVudHM7CisgICAgICBMaXNwX09iamVjdCAqcCA9IFhWRUNUT1IgKGFy cmF5KS0+Y29udGVudHM7CiAgICAgICBzaXplID0gQVNJWkUgKGFycmF5KTsKICAgICAgIGZv ciAoaWR4ID0gMDsgaWR4IDwgc2l6ZTsgaWR4KyspCiAJcFtpZHhdID0gaXRlbTsKQEAgLTIx NTUsNyArMjE1NSw3IEBACiAgICAgfQogICBlbHNlIGlmIChTVFJJTkdQIChhcnJheSkpCiAg ICAgewotICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqcCA9IFNEQVRBIChhcnJheSk7 CisgICAgICB1bnNpZ25lZCBjaGFyICpwID0gU0RBVEEgKGFycmF5KTsKICAgICAgIGludCBj aGFydmFsOwogICAgICAgQ0hFQ0tfQ0hBUkFDVEVSIChpdGVtKTsKICAgICAgIGNoYXJ2YWwg PSBYRkFTVElOVCAoaXRlbSk7CkBAIC0yMTc4LDcgKzIxNzgsNyBAQAogICAgIH0KICAgZWxz ZSBpZiAoQk9PTF9WRUNUT1JfUCAoYXJyYXkpKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIHVu c2lnbmVkIGNoYXIgKnAgPSBYQk9PTF9WRUNUT1IgKGFycmF5KS0+ZGF0YTsKKyAgICAgIHVu c2lnbmVkIGNoYXIgKnAgPSBYQk9PTF9WRUNUT1IgKGFycmF5KS0+ZGF0YTsKICAgICAgIHNp emUgPQogCSgoWEJPT0xfVkVDVE9SIChhcnJheSktPnNpemUgKyBCT09MX1ZFQ1RPUl9CSVRT X1BFUl9DSEFSIC0gMSkKIAkgLyBCT09MX1ZFQ1RPUl9CSVRTX1BFUl9DSEFSKTsKQEAgLTIy MjgsNyArMjIyOCw3IEBACiAgIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdz KQogewogICBwdHJkaWZmX3QgYXJnbnVtOwotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWls LCB0ZW0sIHZhbDsKKyAgTGlzcF9PYmplY3QgdGFpbCwgdGVtLCB2YWw7CiAKICAgdmFsID0g dGFpbCA9IFFuaWw7CiAKQEAgLTIyNjgsOSArMjI2OCw5IEBACiBzdGF0aWMgdm9pZAogbWFw Y2FyMSAoRU1BQ1NfSU5UIGxlbmksIExpc3BfT2JqZWN0ICp2YWxzLCBMaXNwX09iamVjdCBm biwgTGlzcF9PYmplY3Qgc2VxKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOwor ICBMaXNwX09iamVjdCB0YWlsOwogICBMaXNwX09iamVjdCBkdW1teTsKLSAgcmVnaXN0ZXIg RU1BQ1NfSU5UIGk7CisgIEVNQUNTX0lOVCBpOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBn Y3BybzIsIGdjcHJvMzsKIAogICBpZiAodmFscykKQEAgLTIzNDksMTAgKzIzNDksMTAgQEAK ICAgKExpc3BfT2JqZWN0IGZ1bmN0aW9uLCBMaXNwX09iamVjdCBzZXF1ZW5jZSwgTGlzcF9P YmplY3Qgc2VwYXJhdG9yKQogewogICBMaXNwX09iamVjdCBsZW47Ci0gIHJlZ2lzdGVyIEVN QUNTX0lOVCBsZW5pOworICBFTUFDU19JTlQgbGVuaTsKICAgRU1BQ1NfSU5UIG5hcmdzOwog ICBwdHJkaWZmX3QgaTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKmFyZ3M7CisgIExpc3Bf T2JqZWN0ICphcmdzOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogICBMaXNwX09iamVjdCBy ZXQ7CiAgIFVTRV9TQUZFX0FMTE9DQTsKQEAgLTIzODgsOSArMjM4OCw5IEBACiBTRVFVRU5D RSBtYXkgYmUgYSBsaXN0LCBhIHZlY3RvciwgYSBib29sLXZlY3Rvciwgb3IgYSBzdHJpbmcu ICAqLykKICAgKExpc3BfT2JqZWN0IGZ1bmN0aW9uLCBMaXNwX09iamVjdCBzZXF1ZW5jZSkK IHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbGVuOwotICByZWdpc3RlciBFTUFDU19JTlQg bGVuaTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKmFyZ3M7CisgIExpc3BfT2JqZWN0IGxl bjsKKyAgRU1BQ1NfSU5UIGxlbmk7CisgIExpc3BfT2JqZWN0ICphcmdzOwogICBMaXNwX09i amVjdCByZXQ7CiAgIFVTRV9TQUZFX0FMTE9DQTsKIApAQCAtMjQxNSw3ICsyNDE1LDcgQEAK IFNFUVVFTkNFIG1heSBiZSBhIGxpc3QsIGEgdmVjdG9yLCBhIGJvb2wtdmVjdG9yLCBvciBh IHN0cmluZy4gICovKQogICAoTGlzcF9PYmplY3QgZnVuY3Rpb24sIExpc3BfT2JqZWN0IHNl cXVlbmNlKQogewotICByZWdpc3RlciBFTUFDU19JTlQgbGVuaTsKKyAgRU1BQ1NfSU5UIGxl bmk7CiAKICAgbGVuaSA9IFhGQVNUSU5UIChGbGVuZ3RoIChzZXF1ZW5jZSkpOwogICBpZiAo Q0hBUl9UQUJMRV9QIChzZXF1ZW5jZSkpCkBAIC0yNDUwLDcgKzI0NTAsNyBAQAogaXMgbmls LCBhbmQgYHVzZS1kaWFsb2ctYm94JyBpcyBub24tbmlsLiAgKi8pCiAgIChMaXNwX09iamVj dCBwcm9tcHQpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFuczsKKyAgTGlzcF9PYmpl Y3QgYW5zOwogICBMaXNwX09iamVjdCBhcmdzWzJdOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8x OwogCkBAIC0yNTUyLDcgKzI1NTIsNyBAQAogU1VCRkVBVFVSRSBjYW4gYmUgdXNlZCB0byBj aGVjayBhIHNwZWNpZmljIHN1YmZlYXR1cmUgb2YgRkVBVFVSRS4gICovKQogICAoTGlzcF9P YmplY3QgZmVhdHVyZSwgTGlzcF9PYmplY3Qgc3ViZmVhdHVyZSkKIHsKLSAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIENIRUNLX1NZTUJPTCAo ZmVhdHVyZSk7CiAgIHRlbSA9IEZtZW1xIChmZWF0dXJlLCBWZmVhdHVyZXMpOwogICBpZiAo IU5JTFAgKHRlbSkgJiYgIU5JTFAgKHN1YmZlYXR1cmUpKQpAQCAtMjU2Niw3ICsyNTY2LDcg QEAKIHBhcnRpY3VsYXIgc3ViZmVhdHVyZXMgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBv ZiBGRUFUVVJFLiAgKi8pCiAgIChMaXNwX09iamVjdCBmZWF0dXJlLCBMaXNwX09iamVjdCBz dWJmZWF0dXJlcykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09i amVjdCB0ZW07CiAgIENIRUNLX1NZTUJPTCAoZmVhdHVyZSk7CiAgIENIRUNLX0xJU1QgKHN1 YmZlYXR1cmVzKTsKICAgaWYgKCFOSUxQIChWYXV0b2xvYWRfcXVldWUpKQpAQCAtMjYxMyw3 ICsyNjEzLDcgQEAKIFRoZSBub3JtYWwgbWVzc2FnZXMgYXQgc3RhcnQgYW5kIGVuZCBvZiBs b2FkaW5nIEZJTEVOQU1FIGFyZSBzdXBwcmVzc2VkLiAgKi8pCiAgIChMaXNwX09iamVjdCBm ZWF0dXJlLCBMaXNwX09iamVjdCBmaWxlbmFtZSwgTGlzcF9PYmplY3Qgbm9lcnJvcikKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCB0ZW07CiAgIHN0 cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKICAgaW50IGZyb21fZmlsZSA9IGxvYWRfaW5f cHJvZ3Jlc3M7CiAKQEAgLTQ1ODEsOCArNDU4MSw4IEBACiAgIHB0cmRpZmZfdCBzaXplOwog ICBFTUFDU19JTlQgc3RhcnRfY2hhciA9IDAsIGVuZF9jaGFyID0gMDsKICAgcHRyZGlmZl90 IHN0YXJ0X2J5dGUsIGVuZF9ieXRlOwotICByZWdpc3RlciBFTUFDU19JTlQgYiwgZTsKLSAg cmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnA7CisgIEVNQUNTX0lOVCBiLCBlOworICBzdHJ1 Y3QgYnVmZmVyICpicDsKICAgRU1BQ1NfSU5UIHRlbXA7CiAgIGludCBkaWdlc3Rfc2l6ZTsK ICAgdm9pZCAqKCpoYXNoX2Z1bmMpIChjb25zdCBjaGFyICosIHNpemVfdCwgdm9pZCAqKTsK Cj09PSBtb2RpZmllZCBmaWxlICdzcmMvZnJhbWUuYycKLS0tIHNyYy9mcmFtZS5jCTIwMTIt MDYtMDEgMDM6NDE6MDMgKzAwMDAKKysrIHNyYy9mcmFtZS5jCTIwMTItMDYtMDMgMDU6NTM6 MzggKzAwMDAKQEAgLTI2MCw5ICsyNjAsOSBAQAogbWFrZV9mcmFtZSAoaW50IG1pbmlfcCkK IHsKICAgTGlzcF9PYmplY3QgZnJhbWU7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZjsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgcm9vdF93aW5kb3c7Ci0gIHJlZ2lzdGVyIExpc3Bf T2JqZWN0IG1pbmlfd2luZG93OworICBzdHJ1Y3QgZnJhbWUgKmY7CisgIExpc3BfT2JqZWN0 IHJvb3Rfd2luZG93OworICBMaXNwX09iamVjdCBtaW5pX3dpbmRvdzsKIAogICBmID0gYWxs b2NhdGVfZnJhbWUgKCk7CiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwpAQCAtNDEwLDkgKzQx MCwxMCBAQAogICAgZGVmYXVsdCAodGhlIGdsb2JhbCBtaW5pYnVmZmVyKS4gICovCiAKIHN0 cnVjdCBmcmFtZSAqCi1tYWtlX2ZyYW1lX3dpdGhvdXRfbWluaWJ1ZmZlciAocmVnaXN0ZXIg TGlzcF9PYmplY3QgbWluaV93aW5kb3csIEtCT0FSRCAqa2IsIExpc3BfT2JqZWN0IGRpc3Bs YXkpCittYWtlX2ZyYW1lX3dpdGhvdXRfbWluaWJ1ZmZlciAoTGlzcF9PYmplY3QgbWluaV93 aW5kb3csIEtCT0FSRCAqa2IsCisJCQkgICAgICAgTGlzcF9PYmplY3QgZGlzcGxheSkKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IGZyYW1lICpmOworICBzdHJ1Y3QgZnJhbWUgKmY7CiAgIHN0 cnVjdCBnY3BybyBnY3BybzE7CiAKICAgaWYgKCFOSUxQIChtaW5pX3dpbmRvdykpCkBAIC00 NjMsOSArNDY0LDkgQEAKIHsKICAgLyogRmlyc3QgbWFrZSBhIGZyYW1lIGNvbnRhaW5pbmcg anVzdCBhIHJvb3Qgd2luZG93LCBubyBtaW5pYnVmZmVyLiAgKi8KIAotICByZWdpc3RlciBz dHJ1Y3QgZnJhbWUgKmYgPSBtYWtlX2ZyYW1lICgwKTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgbWluaV93aW5kb3c7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZyYW1lOworICBzdHJ1 Y3QgZnJhbWUgKmYgPSBtYWtlX2ZyYW1lICgwKTsKKyAgTGlzcF9PYmplY3QgbWluaV93aW5k b3c7CisgIExpc3BfT2JqZWN0IGZyYW1lOwogCiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwog CkBAIC01NDksNyArNTUwLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgZnJhbWUgKgogbWFrZV90ZXJt aW5hbF9mcmFtZSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCkKIHsKLSAgcmVnaXN0ZXIg c3RydWN0IGZyYW1lICpmOworICBzdHJ1Y3QgZnJhbWUgKmY7CiAgIExpc3BfT2JqZWN0IGZy YW1lOwogICBjaGFyIG5hbWVbc2l6ZW9mICJGIiArIElOVF9TVFJMRU5fQk9VTkQgKHByaW50 bWF4X3QpXTsKIApAQCAtMTE1MiwxMCArMTE1Myw2IEBACiAgIGRlc2NyaWJlZCBmb3IgRmRl bGV0ZV9mcmFtZS4gICovCiBMaXNwX09iamVjdAogZGVsZXRlX2ZyYW1lIChMaXNwX09iamVj dCBmcmFtZSwgTGlzcF9PYmplY3QgZm9yY2UpCi0gICAgIC8qIElmIHdlIHVzZSBgcmVnaXN0 ZXInIGhlcmUsIGdjYy00LjAuMiBvbiBhbWQ2NCB1c2luZwotCS1EVVNFX0xJU1BfVU5JT05f VFlQRSBjb21wbGFpbnMgZnVydGhlciBkb3duIHRoYXQgd2UncmUgZ2V0dGluZyB0aGUKLQlh ZGRyZXNzIG9mIGBmb3JjZScuICBHbyBmaWd1cmUuICAqLwotCiB7CiAgIHN0cnVjdCBmcmFt ZSAqZjsKICAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOwpAQCAtMTk3 OSw5ICsxOTc2LDkgQEAKIHN0YXRpYwogI2VuZGlmCiBMaXNwX09iamVjdAotZ2V0X2ZyYW1l X3BhcmFtIChyZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmZyYW1lLCBMaXNwX09iamVjdCBwcm9w KQorZ2V0X2ZyYW1lX3BhcmFtIChzdHJ1Y3QgZnJhbWUgKmZyYW1lLCBMaXNwX09iamVjdCBw cm9wKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW07CisgIExpc3BfT2JqZWN0IHRl bTsKIAogICB0ZW0gPSBGYXNzcSAocHJvcCwgZnJhbWUtPnBhcmFtX2FsaXN0KTsKICAgaWYg KEVRICh0ZW0sIFFuaWwpKQpAQCAtMjAyNyw3ICsyMDI0LDcgQEAKIHZvaWQKIHN0b3JlX2lu X2FsaXN0IChMaXNwX09iamVjdCAqYWxpc3RwdHIsIExpc3BfT2JqZWN0IHByb3AsIExpc3Bf T2JqZWN0IHZhbCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09i amVjdCB0ZW07CiAKICAgdGVtID0gRmFzc3EgKHByb3AsICphbGlzdHB0cik7CiAgIGlmIChF USAodGVtLCBRbmlsKSkKQEAgLTIwOTQsNyArMjA5MSw3IEBACiB2b2lkCiBzdG9yZV9mcmFt ZV9wYXJhbSAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVj dCB2YWwpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG9sZF9hbGlzdF9lbHQ7CisgIExp c3BfT2JqZWN0IG9sZF9hbGlzdF9lbHQ7CiAKICAgLyogVGhlIGJ1ZmZlci1saXN0IHBhcmFt ZXRlcnMgYXJlIHN0b3JlZCBpbiBhIHNwZWNpYWwgcGxhY2UgYW5kIG5vdAogICAgICBpbiB0 aGUgYWxpc3QuICBBbGwgYnVmZmVycyBtdXN0IGJlIGxpdmUuICAqLwpAQCAtMjM3Nyw3ICsy Mzc0LDcgQEAKICAgKExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBhbGlzdCkKIHsK ICAgRlJBTUVfUFRSIGY7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWwsIHByb3AsIHZh bDsKKyAgTGlzcF9PYmplY3QgdGFpbCwgcHJvcCwgdmFsOwogCiAgIGlmIChFUSAoZnJhbWUs IFFuaWwpKQogICAgIGZyYW1lID0gc2VsZWN0ZWRfZnJhbWU7CkBAIC0yNTY3LDcgKzI1NjQs NyBAQAogYnV0IHRoYXQgdGhlIGlkZWEgb2YgdGhlIGFjdHVhbCBoZWlnaHQgb2YgdGhlIGZy YW1lIHNob3VsZCBub3QgYmUgY2hhbmdlZC4gICovKQogICAoTGlzcF9PYmplY3QgZnJhbWUs IExpc3BfT2JqZWN0IGxpbmVzLCBMaXNwX09iamVjdCBwcmV0ZW5kKQogewotICByZWdpc3Rl ciBzdHJ1Y3QgZnJhbWUgKmY7CisgIHN0cnVjdCBmcmFtZSAqZjsKIAogICBDSEVDS19UWVBF X1JBTkdFRF9JTlRFR0VSIChpbnQsIGxpbmVzKTsKICAgaWYgKE5JTFAgKGZyYW1lKSkKQEAg LTI1OTUsNyArMjU5Miw3IEBACiBidXQgdGhhdCB0aGUgaWRlYSBvZiB0aGUgYWN0dWFsIHdp ZHRoIG9mIHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGNoYW5nZWQuICAqLykKICAgKExpc3Bf T2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBjb2xzLCBMaXNwX09iamVjdCBwcmV0ZW5kKQog ewotICByZWdpc3RlciBzdHJ1Y3QgZnJhbWUgKmY7CisgIHN0cnVjdCBmcmFtZSAqZjsKICAg Q0hFQ0tfVFlQRV9SQU5HRURfSU5URUdFUiAoaW50LCBjb2xzKTsKICAgaWYgKE5JTFAgKGZy YW1lKSkKICAgICBmcmFtZSA9IHNlbGVjdGVkX2ZyYW1lOwpAQCAtMjYyMCw3ICsyNjE3LDcg QEAKICAgICAgICBkb2M6IC8qIFNldHMgc2l6ZSBvZiBGUkFNRSB0byBDT0xTIGJ5IFJPV1Ms IG1lYXN1cmVkIGluIGNoYXJhY3RlcnMuICAqLykKICAgKExpc3BfT2JqZWN0IGZyYW1lLCBM aXNwX09iamVjdCBjb2xzLCBMaXNwX09iamVjdCByb3dzKQogewotICByZWdpc3RlciBzdHJ1 Y3QgZnJhbWUgKmY7CisgIHN0cnVjdCBmcmFtZSAqZjsKIAogICBDSEVDS19MSVZFX0ZSQU1F IChmcmFtZSk7CiAgIENIRUNLX1RZUEVfUkFOR0VEX0lOVEVHRVIgKGludCwgY29scyk7CkBA IC0yNjUyLDcgKzI2NDksNyBAQAogdGhlIHJpZ2h0bW9zdCBvciBib3R0b21tb3N0IHBvc3Np YmxlIHBvc2l0aW9uICh0aGF0IHN0YXlzIHdpdGhpbiB0aGUgc2NyZWVuKS4gICovKQogICAo TGlzcF9PYmplY3QgZnJhbWUsIExpc3BfT2JqZWN0IHhvZmZzZXQsIExpc3BfT2JqZWN0IHlv ZmZzZXQpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZjsKKyAgc3RydWN0IGZyYW1l ICpmOwogCiAgIENIRUNLX0xJVkVfRlJBTUUgKGZyYW1lKTsKICAgQ0hFQ0tfVFlQRV9SQU5H RURfSU5URUdFUiAoaW50LCB4b2Zmc2V0KTsKQEAgLTI4NTAsNyArMjg0Nyw3IEBACiAJICB8 fCBFUSAocHJvcCwgUWJhY2tncm91bmRfY29sb3IpCiAJICB8fCBFUSAocHJvcCwgUWZvbnQp KQogCXsKLQkgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHBhcmFtX2luZGV4LCBvbGRfdmFsdWU7 CisJICBMaXNwX09iamVjdCBwYXJhbV9pbmRleCwgb2xkX3ZhbHVlOwogCiAJICBvbGRfdmFs dWUgPSBnZXRfZnJhbWVfcGFyYW0gKGYsIHByb3ApOwogCSAgaWYgKE5JTFAgKEZlcXVhbCAo dmFsLCBvbGRfdmFsdWUpKSkKQEAgLTI5MDAsNyArMjg5Nyw3IEBACiAJY29udGludWU7CiAg ICAgICBlbHNlCiAJewotCSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcGFyYW1faW5kZXgsIG9s ZF92YWx1ZTsKKwkgIExpc3BfT2JqZWN0IHBhcmFtX2luZGV4LCBvbGRfdmFsdWU7CiAKIAkg IG9sZF92YWx1ZSA9IGdldF9mcmFtZV9wYXJhbSAoZiwgcHJvcCk7CiAKQEAgLTM2NDksNyAr MzY0Niw3IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIHhyZGJfZ2V0X3Jlc291cmNlIChYcm1E YXRhYmFzZSByZGIsIExpc3BfT2JqZWN0IGF0dHJpYnV0ZSwgTGlzcF9PYmplY3QgY2xhc3Ms IExpc3BfT2JqZWN0IGNvbXBvbmVudCwgTGlzcF9PYmplY3Qgc3ViY2xhc3MpCiB7Ci0gIHJl Z2lzdGVyIGNoYXIgKnZhbHVlOworICBjaGFyICp2YWx1ZTsKICAgY2hhciAqbmFtZV9rZXk7 CiAgIGNoYXIgKmNsYXNzX2tleTsKIApAQCAtMzc4MSw3ICszNzc4LDcgQEAKIHhfZ2V0X2Fy ZyAoRGlzcGxheV9JbmZvICpkcHlpbmZvLCBMaXNwX09iamVjdCBhbGlzdCwgTGlzcF9PYmpl Y3QgcGFyYW0sCiAJICAgY29uc3QgY2hhciAqYXR0cmlidXRlLCBjb25zdCBjaGFyICpjbGFz cywgZW51bSByZXNvdXJjZV90eXBlcyB0eXBlKQogewotICByZWdpc3RlciBMaXNwX09iamVj dCB0ZW07CisgIExpc3BfT2JqZWN0IHRlbTsKIAogICB0ZW0gPSBGYXNzcSAocGFyYW0sIGFs aXN0KTsKIApAQCAtNDAwOCw3ICs0MDA1LDcgQEAKIGludAogeF9maWd1cmVfd2luZG93X3Np emUgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgcGFybXMsIGludCB0b29sYmFyX3Ap CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTAsIHRlbTEsIHRlbTI7CisgIExpc3Bf T2JqZWN0IHRlbTAsIHRlbTEsIHRlbTI7CiAgIGxvbmcgd2luZG93X3Byb21wdGluZyA9IDA7 CiAgIERpc3BsYXlfSW5mbyAqZHB5aW5mbyA9IEZSQU1FX1hfRElTUExBWV9JTkZPIChmKTsK IAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9nbWFsbG9jLmMnCi0tLSBzcmMvZ21hbGxvYy5j CTIwMTItMDUtMjEgMTU6MzY6NTQgKzAwMDAKKysrIHNyYy9nbWFsbG9jLmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtNzAyLDcgKzcwMiw3IEBACiB7CiAgIHZvaWQgKnJlc3Vs dDsKICAgc2l6ZV90IGJsb2NrLCBibG9ja3MsIGxhc3RibG9ja3MsIHN0YXJ0OwotICByZWdp c3RlciBzaXplX3QgaTsKKyAgc2l6ZV90IGk7CiAgIHN0cnVjdCBsaXN0ICpuZXh0OwogCiAg IC8qIEFOU0kgQyBhbGxvd3MgYG1hbGxvYyAoMCknIHRvIGVpdGhlciByZXR1cm4gTlVMTCwg b3IgdG8gcmV0dXJuIGEKQEAgLTcyNyw3ICs3MjcsNyBAQAogICAgIHsKICAgICAgIC8qIFNt YWxsIGFsbG9jYXRpb24gdG8gcmVjZWl2ZSBhIGZyYWdtZW50IG9mIGEgYmxvY2suCiAJIERl dGVybWluZSB0aGUgbG9nYXJpdGhtIHRvIGJhc2UgdHdvIG9mIHRoZSBmcmFnbWVudCBzaXpl LiAqLwotICAgICAgcmVnaXN0ZXIgc2l6ZV90IGxvZyA9IDE7CisgICAgICBzaXplX3QgbG9n ID0gMTsKICAgICAgIC0tc2l6ZTsKICAgICAgIHdoaWxlICgoc2l6ZSAvPSAyKSAhPSAwKQog CSsrbG9nOwpAQCAtOTkxLDE0ICs5OTEsMTQgQEAKIHsKICAgaW50IHR5cGU7CiAgIHNpemVf dCBibG9jaywgYmxvY2tzOwotICByZWdpc3RlciBzaXplX3QgaTsKKyAgc2l6ZV90IGk7CiAg IHN0cnVjdCBsaXN0ICpwcmV2LCAqbmV4dDsKICAgdm9pZCAqY3VyYnJrOwogICBjb25zdCBz aXplX3QgbGVzc2NvcmVfdGhyZXNob2xkCiAgICAgLyogVGhyZXNob2xkIG9mIGZyZWUgc3Bh Y2UgYXQgd2hpY2ggd2Ugd2lsbCByZXR1cm4gc29tZSB0byB0aGUgc3lzdGVtLiAgKi8KICAg ICA9IEZJTkFMX0ZSRUVfQkxPQ0tTICsgMiAqIF9fbWFsbG9jX2V4dHJhX2Jsb2NrczsKIAot ICByZWdpc3RlciBzdHJ1Y3QgYWxpZ25saXN0ICpsOworICBzdHJ1Y3QgYWxpZ25saXN0ICps OwogCiAgIGlmIChwdHIgPT0gTlVMTCkKICAgICByZXR1cm47CkBAIC0xMTQ5LDcgKzExNDks NyBAQAogCSAgLyogTm93IHNlZSBpZiB3ZSBjYW4gcmV0dXJuIHN0dWZmIHRvIHRoZSBzeXN0 ZW0uICAqLwogCSAgaWYgKGJsb2NrICsgYmxvY2tzID09IF9oZWFwbGltaXQgJiYgYmxvY2tz ID49IGxlc3Njb3JlX3RocmVzaG9sZCkKIAkgICAgewotCSAgICAgIHJlZ2lzdGVyIHNpemVf dCBieXRlcyA9IGJsb2NrcyAqIEJMT0NLU0laRTsKKwkgICAgICBzaXplX3QgYnl0ZXMgPSBi bG9ja3MgKiBCTE9DS1NJWkU7CiAJICAgICAgX2hlYXBsaW1pdCAtPSBibG9ja3M7CiAJICAg ICAgKCpfX21vcmVjb3JlKSAoLWJ5dGVzKTsKIAkgICAgICBfaGVhcGluZm9bX2hlYXBpbmZv W2Jsb2NrXS5mcmVlLnByZXZdLmZyZWUubmV4dApAQCAtMTQ5Myw5ICsxNDkzLDkgQEAKIC8q IEFsbG9jYXRlIGFuIGFycmF5IG9mIE5NRU1CIGVsZW1lbnRzIGVhY2ggU0laRSBieXRlcyBs b25nLgogICAgVGhlIGVudGlyZSBhcnJheSBpcyBpbml0aWFsaXplZCB0byB6ZXJvcy4gICov CiB2b2lkICoKLWNhbGxvYyAocmVnaXN0ZXIgc2l6ZV90IG5tZW1iLCByZWdpc3RlciBzaXpl X3Qgc2l6ZSkKK2NhbGxvYyAoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkKIHsKLSAgcmVn aXN0ZXIgdm9pZCAqcmVzdWx0ID0gbWFsbG9jIChubWVtYiAqIHNpemUpOworICB2b2lkICpy ZXN1bHQgPSBtYWxsb2MgKG5tZW1iICogc2l6ZSk7CiAKICAgaWYgKHJlc3VsdCAhPSBOVUxM KQogICAgICh2b2lkKSBtZW1zZXQgKHJlc3VsdCwgMCwgbm1lbWIgKiBzaXplKTsKCj09PSBt b2RpZmllZCBmaWxlICdzcmMvaW5kZW50LmMnCi0tLSBzcmMvaW5kZW50LmMJMjAxMi0wNC0y MiAwMDo1MzozMiArMDAwMAorKysgc3JjL2luZGVudC5jCTIwMTItMDYtMDMgMDU6NTM6Mzgg KzAwMDAKQEAgLTMyMSwxNCArMzIxLDE0IEBACiBwdHJkaWZmX3QKIGN1cnJlbnRfY29sdW1u ICh2b2lkKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgY29sOwotICByZWdpc3RlciB1bnNp Z25lZCBjaGFyICpwdHIsICpzdG9wOwotICByZWdpc3RlciBpbnQgdGFiX3NlZW47CisgIHB0 cmRpZmZfdCBjb2w7CisgIHVuc2lnbmVkIGNoYXIgKnB0ciwgKnN0b3A7CisgIGludCB0YWJf c2VlbjsKICAgcHRyZGlmZl90IHBvc3RfdGFiOwotICByZWdpc3RlciBpbnQgYzsKKyAgaW50 IGM7CiAgIGludCB0YWJfd2lkdGggPSBTQU5FX1RBQl9XSURUSCAoY3VycmVudF9idWZmZXIp OwogICBpbnQgY3RsX2Fycm93ID0gIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjdGxf YXJyb3cpKTsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfQ2hhcl9UYWJsZSAqZHAgPSBidWZm ZXJfZGlzcGxheV90YWJsZSAoKTsKKyAgc3RydWN0IExpc3BfQ2hhcl9UYWJsZSAqZHAgPSBi dWZmZXJfZGlzcGxheV90YWJsZSAoKTsKIAogICBpZiAoUFQgPT0gbGFzdF9rbm93bl9jb2x1 bW5fcG9pbnQKICAgICAgICYmIE1PRElGRiA9PSBsYXN0X2tub3duX2NvbHVtbl9tb2RpZmll ZCkKQEAgLTUxNCwxNSArNTE0LDE1IEBACiBzY2FuX2Zvcl9jb2x1bW4gKHB0cmRpZmZfdCAq ZW5kcG9zLCBFTUFDU19JTlQgKmdvYWxjb2wsIHB0cmRpZmZfdCAqcHJldmNvbCkKIHsKICAg aW50IHRhYl93aWR0aCA9IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1ZmZlcik7Ci0gIHJl Z2lzdGVyIGludCBjdGxfYXJyb3cgPSAhTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGN0 bF9hcnJvdykpOwotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICpkcCA9IGJ1 ZmZlcl9kaXNwbGF5X3RhYmxlICgpOworICBpbnQgY3RsX2Fycm93ID0gIU5JTFAgKEJWQVIg KGN1cnJlbnRfYnVmZmVyLCBjdGxfYXJyb3cpKTsKKyAgc3RydWN0IExpc3BfQ2hhcl9UYWJs ZSAqZHAgPSBidWZmZXJfZGlzcGxheV90YWJsZSAoKTsKICAgaW50IG11bHRpYnl0ZSA9ICFO SUxQIChCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9jaGFyYWN0ZXJz KSk7CiAgIHN0cnVjdCBjb21wb3NpdGlvbl9pdCBjbXBfaXQ7CiAgIExpc3BfT2JqZWN0IHdp bmRvdzsKICAgc3RydWN0IHdpbmRvdyAqdzsKIAogICAvKiBTdGFydCB0aGUgc2NhbiBhdCB0 aGUgYmVnaW5uaW5nIG9mIHRoaXMgbGluZSB3aXRoIGNvbHVtbiBudW1iZXIgMC4gICovCi0g IHJlZ2lzdGVyIHB0cmRpZmZfdCBjb2wgPSAwLCBwcmV2X2NvbCA9IDA7CisgIHB0cmRpZmZf dCBjb2wgPSAwLCBwcmV2X2NvbCA9IDA7CiAgIEVNQUNTX0lOVCBnb2FsID0gZ29hbGNvbCA/ ICpnb2FsY29sIDogTU9TVF9QT1NJVElWRV9GSVhOVU07CiAgIHB0cmRpZmZfdCBlbmQgPSBl bmRwb3MgPyAqZW5kcG9zIDogUFQ7CiAgIHB0cmRpZmZfdCBzY2FuLCBzY2FuX2J5dGU7CkBA IC03MjQsMTQgKzcyNCwxNCBAQAogc3RhdGljIGRvdWJsZQogc3RyaW5nX2Rpc3BsYXlfd2lk dGggKExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgYmVnLCBMaXNwX09iamVjdCBl bmQpCiB7Ci0gIHJlZ2lzdGVyIGludCBjb2w7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIg KnB0ciwgKnN0b3A7Ci0gIHJlZ2lzdGVyIGludCB0YWJfc2VlbjsKKyAgaW50IGNvbDsKKyAg dW5zaWduZWQgY2hhciAqcHRyLCAqc3RvcDsKKyAgaW50IHRhYl9zZWVuOwogICBpbnQgcG9z dF90YWI7Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgaW50IHRhYl93aWR0aCA9 IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1ZmZlcik7CiAgIGludCBjdGxfYXJyb3cgPSAh TklMUCAoY3VycmVudF9idWZmZXItPmN0bF9hcnJvdyk7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBM aXNwX0NoYXJfVGFibGUgKmRwID0gYnVmZmVyX2Rpc3BsYXlfdGFibGUgKCk7CisgIHN0cnVj dCBMaXNwX0NoYXJfVGFibGUgKmRwID0gYnVmZmVyX2Rpc3BsYXlfdGFibGUgKCk7CiAgIGlu dCBiLCBlOwogCiAgIGlmIChOSUxQIChlbmQpKQpAQCAtODA0LDcgKzgwNCw3IEBACiAgIChM aXNwX09iamVjdCBjb2x1bW4sIExpc3BfT2JqZWN0IG1pbmltdW0pCiB7CiAgIEVNQUNTX0lO VCBtaW5jb2w7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tY29sOworICBwdHJkaWZmX3Qg ZnJvbWNvbDsKICAgaW50IHRhYl93aWR0aCA9IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1 ZmZlcik7CiAKICAgQ0hFQ0tfTlVNQkVSIChjb2x1bW4pOwpAQCAtODYzLDEwICs4NjMsMTAg QEAKIHN0YXRpYyBwdHJkaWZmX3QKIHBvc2l0aW9uX2luZGVudGF0aW9uIChwdHJkaWZmX3Qg cG9zX2J5dGUpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBjb2x1bW4gPSAwOworICBwdHJk aWZmX3QgY29sdW1uID0gMDsKICAgaW50IHRhYl93aWR0aCA9IFNBTkVfVEFCX1dJRFRIIChj dXJyZW50X2J1ZmZlcik7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnA7Ci0gIHJlZ2lz dGVyIHVuc2lnbmVkIGNoYXIgKnN0b3A7CisgIHVuc2lnbmVkIGNoYXIgKnA7CisgIHVuc2ln bmVkIGNoYXIgKnN0b3A7CiAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0OwogICBwdHJkaWZmX3Qg bmV4dF9ib3VuZGFyeV9ieXRlID0gcG9zX2J5dGU7CiAgIHB0cmRpZmZfdCBjZWlsaW5nID0g bmV4dF9ib3VuZGFyeV9ieXRlOwpAQCAtMTEwOCwxNSArMTEwOCwxNSBAQAogc3RydWN0IHBv c2l0aW9uICoKIGNvbXB1dGVfbW90aW9uIChwdHJkaWZmX3QgZnJvbSwgRU1BQ1NfSU5UIGZy b212cG9zLCBFTUFDU19JTlQgZnJvbWhwb3MsIGludCBkaWRfbW90aW9uLCBwdHJkaWZmX3Qg dG8sIEVNQUNTX0lOVCB0b3Zwb3MsIEVNQUNTX0lOVCB0b2hwb3MsIEVNQUNTX0lOVCB3aWR0 aCwgcHRyZGlmZl90IGhzY3JvbGwsIGludCB0YWJfb2Zmc2V0LCBzdHJ1Y3Qgd2luZG93ICp3 aW4pCiB7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCBocG9zID0gZnJvbWhwb3M7Ci0gIHJlZ2lz dGVyIEVNQUNTX0lOVCB2cG9zID0gZnJvbXZwb3M7CisgIEVNQUNTX0lOVCBocG9zID0gZnJv bWhwb3M7CisgIEVNQUNTX0lOVCB2cG9zID0gZnJvbXZwb3M7CiAKLSAgcmVnaXN0ZXIgcHRy ZGlmZl90IHBvczsKKyAgcHRyZGlmZl90IHBvczsKICAgcHRyZGlmZl90IHBvc19ieXRlOwot ICByZWdpc3RlciBpbnQgYyA9IDA7CisgIGludCBjID0gMDsKICAgaW50IHRhYl93aWR0aCA9 IFNBTkVfVEFCX1dJRFRIIChjdXJyZW50X2J1ZmZlcik7Ci0gIHJlZ2lzdGVyIGludCBjdGxf YXJyb3cgPSAhTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGN0bF9hcnJvdykpOwotICBy ZWdpc3RlciBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICpkcCA9IHdpbmRvd19kaXNwbGF5X3Rh YmxlICh3aW4pOworICBpbnQgY3RsX2Fycm93ID0gIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVm ZmVyLCBjdGxfYXJyb3cpKTsKKyAgc3RydWN0IExpc3BfQ2hhcl9UYWJsZSAqZHAgPSB3aW5k b3dfZGlzcGxheV90YWJsZSAod2luKTsKICAgRU1BQ1NfSU5UIHNlbGVjdGl2ZQogICAgID0g KElOVEVHRVJQIChCVkFSIChjdXJyZW50X2J1ZmZlciwgc2VsZWN0aXZlX2Rpc3BsYXkpKQog ICAgICAgID8gWElOVCAoQlZBUiAoY3VycmVudF9idWZmZXIsIHNlbGVjdGl2ZV9kaXNwbGF5 KSkKQEAgLTE4MTUsMTQgKzE4MTUsMTQgQEAKIHN0YXRpYyBzdHJ1Y3QgcG9zaXRpb24gdmFs X3Ztb3Rpb247CiAKIHN0cnVjdCBwb3NpdGlvbiAqCi12bW90aW9uIChyZWdpc3RlciBwdHJk aWZmX3QgZnJvbSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIHZ0YXJnZXQsIHN0cnVjdCB3aW5kb3cg KncpCit2bW90aW9uIChwdHJkaWZmX3QgZnJvbSwgRU1BQ1NfSU5UIHZ0YXJnZXQsIHN0cnVj dCB3aW5kb3cgKncpCiB7CiAgIHB0cmRpZmZfdCBoc2Nyb2xsID0gWElOVCAody0+aHNjcm9s bCk7CiAgIHN0cnVjdCBwb3NpdGlvbiBwb3M7CiAgIC8qIHZwb3MgaXMgY3VtdWxhdGl2ZSB2 ZXJ0aWNhbCBwb3NpdGlvbiwgY2hhbmdlZCBhcyBmcm9tIGlzIGNoYW5nZWQgKi8KLSAgcmVn aXN0ZXIgRU1BQ1NfSU5UIHZwb3MgPSAwOworICBFTUFDU19JTlQgdnBvcyA9IDA7CiAgIHB0 cmRpZmZfdCBwcmV2bGluZTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGZpcnN0OworICBwdHJk aWZmX3QgZmlyc3Q7CiAgIHB0cmRpZmZfdCBmcm9tX2J5dGU7CiAgIHB0cmRpZmZfdCBsbWFy Z2luID0gaHNjcm9sbCA+IDAgPyAxIC0gaHNjcm9sbCA6IDA7CiAgIHB0cmRpZmZfdCBzZWxl Y3RpdmUKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvaW5zZGVsLmMnCi0tLSBzcmMvaW5zZGVs LmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL2luc2RlbC5jCTIwMTItMDYt MDMgMDU6NTM6MzggKzAwMDAKQEAgLTczLDcgKzczLDcgQEAKIHN0YXRpYyB2b2lkCiBjaGVj a19tYXJrZXJzICh2b2lkKQogewotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9NYXJrZXIgKnRh aWw7CisgIHN0cnVjdCBMaXNwX01hcmtlciAqdGFpbDsKICAgaW50IG11bHRpYnl0ZSA9ICEg TklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVy cykpOwogCiAgIGZvciAodGFpbCA9IEJVRl9NQVJLRVJTIChjdXJyZW50X2J1ZmZlcik7IHRh aWw7IHRhaWwgPSB0YWlsLT5uZXh0KQpAQCAtMTE4LDggKzExOCw4IEBACiBzdGF0aWMgdm9p ZAogZ2FwX2xlZnQgKHB0cmRpZmZfdCBjaGFycG9zLCBwdHJkaWZmX3QgYnl0ZXBvcywgaW50 IG5ld2dhcCkKIHsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqdG8sICpmcm9tOwotICBy ZWdpc3RlciBwdHJkaWZmX3QgaTsKKyAgdW5zaWduZWQgY2hhciAqdG8sICpmcm9tOworICBw dHJkaWZmX3QgaTsKICAgcHRyZGlmZl90IG5ld19zMTsKIAogICBpZiAoIW5ld2dhcCkKQEAg LTE3Myw4ICsxNzMsOCBAQAogc3RhdGljIHZvaWQKIGdhcF9yaWdodCAocHRyZGlmZl90IGNo YXJwb3MsIHB0cmRpZmZfdCBieXRlcG9zKQogewotICByZWdpc3RlciB1bnNpZ25lZCBjaGFy ICp0bywgKmZyb207Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBpOworICB1bnNpZ25lZCBjaGFy ICp0bywgKmZyb207CisgIHB0cmRpZmZfdCBpOwogICBwdHJkaWZmX3QgbmV3X3MxOwogCiAg IEJVRl9DT01QVVRFX1VOQ0hBTkdFRCAoY3VycmVudF9idWZmZXIsIGNoYXJwb3MsIEdQVCk7 CkBAIC0yMjksOCArMjI5LDggQEAKIAkJCSAgIHB0cmRpZmZfdCB0bywgcHRyZGlmZl90IHRv X2J5dGUpCiB7CiAgIExpc3BfT2JqZWN0IG1hcmtlcjsKLSAgcmVnaXN0ZXIgc3RydWN0IExp c3BfTWFya2VyICptOwotICByZWdpc3RlciBwdHJkaWZmX3QgY2hhcnBvczsKKyAgc3RydWN0 IExpc3BfTWFya2VyICptOworICBwdHJkaWZmX3QgY2hhcnBvczsKIAogICBmb3IgKG0gPSBC VUZfTUFSS0VSUyAoY3VycmVudF9idWZmZXIpOyBtOyBtID0gbS0+bmV4dCkKICAgICB7CkBA IC0zNTgsNyArMzU4LDcgQEAKIAkJCSAgICBwdHJkaWZmX3Qgb2xkX2NoYXJzLCBwdHJkaWZm X3Qgb2xkX2J5dGVzLAogCQkJICAgIHB0cmRpZmZfdCBuZXdfY2hhcnMsIHB0cmRpZmZfdCBu ZXdfYnl0ZXMpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX01hcmtlciAqbTsKKyAgc3Ry dWN0IExpc3BfTWFya2VyICptOwogICBwdHJkaWZmX3QgcHJldl90b19ieXRlID0gZnJvbV9i eXRlICsgb2xkX2J5dGVzOwogICBwdHJkaWZmX3QgZGlmZl9jaGFycyA9IG5ld19jaGFycyAt IG9sZF9jaGFyczsKICAgcHRyZGlmZl90IGRpZmZfYnl0ZXMgPSBuZXdfYnl0ZXMgLSBvbGRf Ynl0ZXM7CkBAIC0xNzA0LDcgKzE3MDQsNyBAQAogZGVsX3JhbmdlXzIgKHB0cmRpZmZfdCBm cm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLAogCSAgICAgcHRyZGlmZl90IHRvLCBwdHJkaWZm X3QgdG9fYnl0ZSwgaW50IHJldF9zdHJpbmcpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBu Ynl0ZXNfZGVsLCBuY2hhcnNfZGVsOworICBwdHJkaWZmX3QgbmJ5dGVzX2RlbCwgbmNoYXJz X2RlbDsKICAgTGlzcF9PYmplY3QgZGVsZXRpb247CiAKICAgQ0hFQ0tfTUFSS0VSUyAoKTsK Cj09PSBtb2RpZmllZCBmaWxlICdzcmMvaW50ZXJ2YWxzLmMnCi0tLSBzcmMvaW50ZXJ2YWxz LmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL2ludGVydmFscy5jCTIwMTIt MDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk1LDcgKzk1LDcgQEAKIC8qIE1ha2UgdGhlIGlu dGVydmFsIFRBUkdFVCBoYXZlIGV4YWN0bHkgdGhlIHByb3BlcnRpZXMgb2YgU09VUkNFICov CiAKIHZvaWQKLWNvcHlfcHJvcGVydGllcyAocmVnaXN0ZXIgSU5URVJWQUwgc291cmNlLCBy ZWdpc3RlciBJTlRFUlZBTCB0YXJnZXQpCitjb3B5X3Byb3BlcnRpZXMgKElOVEVSVkFMIHNv dXJjZSwgSU5URVJWQUwgdGFyZ2V0KQogewogICBpZiAoREVGQVVMVF9JTlRFUlZBTF9QIChz b3VyY2UpICYmIERFRkFVTFRfSU5URVJWQUxfUCAodGFyZ2V0KSkKICAgICByZXR1cm47CkBA IC0xMDksOSArMTA5LDkgQEAKICAgIGlzIGFkZGVkIHRvIFRBUkdFVCBpZiBUQVJHRVQgaGFz IG5vIHN1Y2ggcHJvcGVydHkgYXMgeWV0LiAgKi8KIAogc3RhdGljIHZvaWQKLW1lcmdlX3By b3BlcnRpZXMgKHJlZ2lzdGVyIElOVEVSVkFMIHNvdXJjZSwgcmVnaXN0ZXIgSU5URVJWQUwg dGFyZ2V0KQorbWVyZ2VfcHJvcGVydGllcyAoSU5URVJWQUwgc291cmNlLCBJTlRFUlZBTCB0 YXJnZXQpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG8sIHN5bSwgdmFsOworICBMaXNw X09iamVjdCBvLCBzeW0sIHZhbDsKIAogICBpZiAoREVGQVVMVF9JTlRFUlZBTF9QIChzb3Vy Y2UpICYmIERFRkFVTFRfSU5URVJWQUxfUCAodGFyZ2V0KSkKICAgICByZXR1cm47CkBAIC0x NDksOCArMTQ5LDggQEAKIGludAogaW50ZXJ2YWxzX2VxdWFsIChJTlRFUlZBTCBpMCwgSU5U RVJWQUwgaTEpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGkwX2NkciwgaTBfc3ltOwot ICByZWdpc3RlciBMaXNwX09iamVjdCBpMV9jZHIsIGkxX3ZhbDsKKyAgTGlzcF9PYmplY3Qg aTBfY2RyLCBpMF9zeW07CisgIExpc3BfT2JqZWN0IGkxX2NkciwgaTFfdmFsOwogCiAgIGlm IChERUZBVUxUX0lOVEVSVkFMX1AgKGkwKSAmJiBERUZBVUxUX0lOVEVSVkFMX1AgKGkxKSkK ICAgICByZXR1cm4gMTsKQEAgLTI5MCw3ICsyOTAsNyBAQAogc3RhdGljIElOVEVSVkFMCiBy b290X2ludGVydmFsIChJTlRFUlZBTCBpbnRlcnZhbCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJW QUwgaSA9IGludGVydmFsOworICBJTlRFUlZBTCBpID0gaW50ZXJ2YWw7CiAKICAgd2hpbGUg KCEgUk9PVF9JTlRFUlZBTF9QIChpKSkKICAgICBpID0gSU5URVJWQUxfUEFSRU5UIChpKTsK QEAgLTM5OSw3ICszOTksNyBAQAogc3RhdGljIElOVEVSVkFMCiBiYWxhbmNlX2FuX2ludGVy dmFsIChJTlRFUlZBTCBpKQogewotICByZWdpc3RlciBwdHJkaWZmX3Qgb2xkX2RpZmYsIG5l d19kaWZmOworICBwdHJkaWZmX3Qgb2xkX2RpZmYsIG5ld19kaWZmOwogCiAgIHdoaWxlICgx KQogICAgIHsKQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgTGlzcCBPYmplY3QuICAqLwogCiBz dGF0aWMgaW5saW5lIElOVEVSVkFMCi1iYWxhbmNlX3Bvc3NpYmxlX3Jvb3RfaW50ZXJ2YWwg KHJlZ2lzdGVyIElOVEVSVkFMIGludGVydmFsKQorYmFsYW5jZV9wb3NzaWJsZV9yb290X2lu dGVydmFsIChJTlRFUlZBTCBpbnRlcnZhbCkKIHsKICAgTGlzcF9PYmplY3QgcGFyZW50Owog ICBpbnQgaGF2ZV9wYXJlbnQgPSAwOwpAQCAtNDY0LDcgKzQ2NCw3IEBACiAgICAodGhlIGFt b3VudCBvZiB0ZXh0KS4gICovCiAKIHN0YXRpYyBJTlRFUlZBTAotYmFsYW5jZV9pbnRlcnZh bHNfaW50ZXJuYWwgKHJlZ2lzdGVyIElOVEVSVkFMIHRyZWUpCitiYWxhbmNlX2ludGVydmFs c19pbnRlcm5hbCAoSU5URVJWQUwgdHJlZSkKIHsKICAgLyogQmFsYW5jZSB3aXRoaW4gZWFj aCBzaWRlLiAgKi8KICAgaWYgKHRyZWUtPmxlZnQpCkBAIC02MTAsMTEgKzYxMCwxMSBAQAog ICAgd2lsbCB1cGRhdGUgdGhpcyBjYWNoZSBiYXNlZCBvbiB0aGUgcmVzdWx0IG9mIGZpbmRf aW50ZXJ2YWwuICAqLwogCiBJTlRFUlZBTAotZmluZF9pbnRlcnZhbCAocmVnaXN0ZXIgSU5U RVJWQUwgdHJlZSwgcmVnaXN0ZXIgcHRyZGlmZl90IHBvc2l0aW9uKQorZmluZF9pbnRlcnZh bCAoSU5URVJWQUwgdHJlZSwgcHRyZGlmZl90IHBvc2l0aW9uKQogewogICAvKiBUaGUgZGlz dGFuY2UgZnJvbSB0aGUgbGVmdCBlZGdlIG9mIHRoZSBzdWJ0cmVlIGF0IFRSRUUKICAgICAg ICAgICAgICAgICAgICAgdG8gUE9TSVRJT04uICAqLwotICByZWdpc3RlciBwdHJkaWZmX3Qg cmVsYXRpdmVfcG9zaXRpb247CisgIHB0cmRpZmZfdCByZWxhdGl2ZV9wb3NpdGlvbjsKIAog ICBpZiAoTlVMTF9JTlRFUlZBTF9QICh0cmVlKSkKICAgICByZXR1cm4gTlVMTF9JTlRFUlZB TDsKQEAgLTY2NCwxMCArNjY0LDEwIEBACiAgICBmaW5kX2ludGVydmFsKS4gICovCiAKIElO VEVSVkFMCi1uZXh0X2ludGVydmFsIChyZWdpc3RlciBJTlRFUlZBTCBpbnRlcnZhbCkKK25l eHRfaW50ZXJ2YWwgKElOVEVSVkFMIGludGVydmFsKQogewotICByZWdpc3RlciBJTlRFUlZB TCBpID0gaW50ZXJ2YWw7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBuZXh0X3Bvc2l0aW9uOwor ICBJTlRFUlZBTCBpID0gaW50ZXJ2YWw7CisgIHB0cmRpZmZfdCBuZXh0X3Bvc2l0aW9uOwog CiAgIGlmIChOVUxMX0lOVEVSVkFMX1AgKGkpKQogICAgIHJldHVybiBOVUxMX0lOVEVSVkFM OwpAQCAtNzAzLDkgKzcwMyw5IEBACiAgICBmaW5kX2ludGVydmFsKS4gICovCiAKIElOVEVS VkFMCi1wcmV2aW91c19pbnRlcnZhbCAocmVnaXN0ZXIgSU5URVJWQUwgaW50ZXJ2YWwpCitw cmV2aW91c19pbnRlcnZhbCAoSU5URVJWQUwgaW50ZXJ2YWwpCiB7Ci0gIHJlZ2lzdGVyIElO VEVSVkFMIGk7CisgIElOVEVSVkFMIGk7CiAKICAgaWYgKE5VTExfSU5URVJWQUxfUCAoaW50 ZXJ2YWwpKQogICAgIHJldHVybiBOVUxMX0lOVEVSVkFMOwpAQCAtNzQyLDcgKzc0Miw3IEBA CiAgICBUbyBzcGVlZCB1cCB0aGUgcHJvY2Vzcywgd2UgYXNzdW1lIHRoYXQgdGhlIC0+cG9z aXRpb24gb2YKICAgIEkgYW5kIGFsbCBpdHMgcGFyZW50cyBpcyBhbHJlYWR5IHVwdG9kYXRl LiAgKi8KIElOVEVSVkFMCi11cGRhdGVfaW50ZXJ2YWwgKHJlZ2lzdGVyIElOVEVSVkFMIGks IHB0cmRpZmZfdCBwb3MpCit1cGRhdGVfaW50ZXJ2YWwgKElOVEVSVkFMIGksIHB0cmRpZmZf dCBwb3MpCiB7CiAgIGlmIChOVUxMX0lOVEVSVkFMX1AgKGkpKQogICAgIHJldHVybiBOVUxM X0lOVEVSVkFMOwpAQCAtODAyLDggKzgwMiw4IEBACiBhZGp1c3RfaW50ZXJ2YWxzX2Zvcl9p bnNlcnRpb24gKElOVEVSVkFMIHRyZWUsIHB0cmRpZmZfdCBwb3NpdGlvbiwKIAkJCQlwdHJk aWZmX3QgbGVuZ3RoKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgcmVsYXRpdmVfcG9zaXRp b247Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIHRoaXM7CisgIHB0cmRpZmZfdCByZWxhdGl2ZV9w b3NpdGlvbjsKKyAgSU5URVJWQUwgdGhpczsKIAogICBpZiAoVE9UQUxfTEVOR1RIICh0cmVl KSA9PSAwKQkvKiBQYXJhbm9pYSAqLwogICAgIGFib3J0ICgpOwpAQCAtODYzLDggKzg2Myw4 IEBACiBhZGp1c3RfaW50ZXJ2YWxzX2Zvcl9pbnNlcnRpb24gKElOVEVSVkFMIHRyZWUsCiAJ CQkJcHRyZGlmZl90IHBvc2l0aW9uLCBwdHJkaWZmX3QgbGVuZ3RoKQogewotICByZWdpc3Rl ciBJTlRFUlZBTCBpOwotICByZWdpc3RlciBJTlRFUlZBTCB0ZW1wOworICBJTlRFUlZBTCBp OworICBJTlRFUlZBTCB0ZW1wOwogICBpbnQgZW9icCA9IDA7CiAgIExpc3BfT2JqZWN0IHBh cmVudDsKICAgcHRyZGlmZl90IG9mZnNldDsKQEAgLTk2Myw3ICs5NjMsNyBAQAogICAgICBi b3RoIG9mIHRoZW0uICBXZSBoYXZlIHRvIGRvIHRoaXMgdG9vLCBpZiB3ZSBhcmUgYXQgQkVH IG9yIFouICAqLwogICBpZiAocG9zaXRpb24gPT0gaS0+cG9zaXRpb24gfHwgZW9icCkKICAg ICB7Ci0gICAgICByZWdpc3RlciBJTlRFUlZBTCBwcmV2OworICAgICAgSU5URVJWQUwgcHJl djsKIAogICAgICAgaWYgKHBvc2l0aW9uID09IEJFRykKIAlwcmV2ID0gMDsKQEAgLTEwODks OSArMTA4OSw5IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIG1lcmdlX3Byb3BlcnRpZXNfc3Rp Y2t5IChMaXNwX09iamVjdCBwbGVmdCwgTGlzcF9PYmplY3QgcHJpZ2h0KQogewotICByZWdp c3RlciBMaXNwX09iamVjdCBwcm9wcywgZnJvbnQsIHJlYXI7CisgIExpc3BfT2JqZWN0IHBy b3BzLCBmcm9udCwgcmVhcjsKICAgTGlzcF9PYmplY3QgbGZyb250LCBscmVhciwgcmZyb250 LCBycmVhcjsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwyLCBzeW0sIGx2 YWwsIHJ2YWwsIGNhdDsKKyAgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwyLCBzeW0sIGx2YWws IHJ2YWwsIGNhdDsKICAgaW50IHVzZV9sZWZ0LCB1c2VfcmlnaHQ7CiAgIGludCBscHJlc2Vu dDsKIApAQCAtMTIyMywxMCArMTIyMywxMCBAQAogICAgc3RvcmluZyB0aGUgcmVzdWx0aW5n IHN1YnRyZWUgaW50byBpdHMgcGFyZW50LiAgKi8KIAogc3RhdGljIElOVEVSVkFMCi1kZWxl dGVfbm9kZSAocmVnaXN0ZXIgSU5URVJWQUwgaSkKK2RlbGV0ZV9ub2RlIChJTlRFUlZBTCBp KQogewotICByZWdpc3RlciBJTlRFUlZBTCBtaWdyYXRlLCB0aGlzOwotICByZWdpc3RlciBw dHJkaWZmX3QgbWlncmF0ZV9hbXQ7CisgIElOVEVSVkFMIG1pZ3JhdGUsIHRoaXM7CisgIHB0 cmRpZmZfdCBtaWdyYXRlX2FtdDsKIAogICBpZiAoTlVMTF9JTlRFUlZBTF9QIChpLT5sZWZ0 KSkKICAgICByZXR1cm4gaS0+cmlnaHQ7CkBAIC0xMjU2LDkgKzEyNTYsOSBAQAogICAgZm9y IHRoZSBsZW5ndGggb2YgSS4gICovCiAKIHN0YXRpYyB2b2lkCi1kZWxldGVfaW50ZXJ2YWwg KHJlZ2lzdGVyIElOVEVSVkFMIGkpCitkZWxldGVfaW50ZXJ2YWwgKElOVEVSVkFMIGkpCiB7 Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIHBhcmVudDsKKyAgSU5URVJWQUwgcGFyZW50OwogICBw dHJkaWZmX3QgYW10ID0gTEVOR1RIIChpKTsKIAogICBpZiAoYW10ID4gMCkJCQkvKiBPbmx5 IHVzZWQgb24gemVyby1sZW5ndGggaW50ZXJ2YWxzIG5vdy4gICovCkBAIC0xMzEwLDEwICsx MzEwLDkgQEAKICAgIGRlbGV0aW5nIHRoZSBhcHByb3ByaWF0ZSBhbW91bnQgb2YgdGV4dC4g ICovCiAKIHN0YXRpYyBwdHJkaWZmX3QKLWludGVydmFsX2RlbGV0aW9uX2FkanVzdG1lbnQg KHJlZ2lzdGVyIElOVEVSVkFMIHRyZWUsIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tLAotCQkJ ICAgICAgcmVnaXN0ZXIgcHRyZGlmZl90IGFtb3VudCkKK2ludGVydmFsX2RlbGV0aW9uX2Fk anVzdG1lbnQgKElOVEVSVkFMIHRyZWUsIHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgYW1v dW50KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgcmVsYXRpdmVfcG9zaXRpb24gPSBmcm9t OworICBwdHJkaWZmX3QgcmVsYXRpdmVfcG9zaXRpb24gPSBmcm9tOwogCiAgIGlmIChOVUxM X0lOVEVSVkFMX1AgKHRyZWUpKQogICAgIHJldHVybiAwOwpAQCAtMTM3NCw4ICsxMzczLDgg QEAKIGFkanVzdF9pbnRlcnZhbHNfZm9yX2RlbGV0aW9uIChzdHJ1Y3QgYnVmZmVyICpidWZm ZXIsCiAJCQkgICAgICAgcHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3QgbGVuZ3RoKQogewot ICByZWdpc3RlciBwdHJkaWZmX3QgbGVmdF90b19kZWxldGUgPSBsZW5ndGg7Ci0gIHJlZ2lz dGVyIElOVEVSVkFMIHRyZWUgPSBCVUZfSU5URVJWQUxTIChidWZmZXIpOworICBwdHJkaWZm X3QgbGVmdF90b19kZWxldGUgPSBsZW5ndGg7CisgIElOVEVSVkFMIHRyZWUgPSBCVUZfSU5U RVJWQUxTIChidWZmZXIpOwogICBMaXNwX09iamVjdCBwYXJlbnQ7CiAgIHB0cmRpZmZfdCBv ZmZzZXQ7CiAKQEAgLTE0NTEsMTAgKzE0NTAsMTAgQEAKICAgIGludGVydmFsLiAgKi8KIAog c3RhdGljIElOVEVSVkFMCi1tZXJnZV9pbnRlcnZhbF9yaWdodCAocmVnaXN0ZXIgSU5URVJW QUwgaSkKK21lcmdlX2ludGVydmFsX3JpZ2h0IChJTlRFUlZBTCBpKQogewotICByZWdpc3Rl ciBwdHJkaWZmX3QgYWJzb3JiID0gTEVOR1RIIChpKTsKLSAgcmVnaXN0ZXIgSU5URVJWQUwg c3VjY2Vzc29yOworICBwdHJkaWZmX3QgYWJzb3JiID0gTEVOR1RIIChpKTsKKyAgSU5URVJW QUwgc3VjY2Vzc29yOwogCiAgIC8qIFplcm8gb3V0IHRoaXMgaW50ZXJ2YWwuICAqLwogICBp LT50b3RhbF9sZW5ndGggLT0gYWJzb3JiOwpAQCAtMTUwNywxMCArMTUwNiwxMCBAQAogICAg VGhlIGNhbGxlciBtdXN0IHZlcmlmeSB0aGF0IHRoaXMgaXMgbm90IHRoZSBmaXJzdCAobGVm dG1vc3QpIGludGVydmFsLiAgKi8KIAogSU5URVJWQUwKLW1lcmdlX2ludGVydmFsX2xlZnQg KHJlZ2lzdGVyIElOVEVSVkFMIGkpCittZXJnZV9pbnRlcnZhbF9sZWZ0IChJTlRFUlZBTCBp KQogewotICByZWdpc3RlciBwdHJkaWZmX3QgYWJzb3JiID0gTEVOR1RIIChpKTsKLSAgcmVn aXN0ZXIgSU5URVJWQUwgcHJlZGVjZXNzb3I7CisgIHB0cmRpZmZfdCBhYnNvcmIgPSBMRU5H VEggKGkpOworICBJTlRFUlZBTCBwcmVkZWNlc3NvcjsKIAogICAvKiBaZXJvIG91dCB0aGlz IGludGVydmFsLiAgKi8KICAgaS0+dG90YWxfbGVuZ3RoIC09IGFic29yYjsKQEAgLTE1NjMs NyArMTU2Miw3IEBACiBzdGF0aWMgSU5URVJWQUwKIHJlcHJvZHVjZV90cmVlIChJTlRFUlZB TCBzb3VyY2UsIElOVEVSVkFMIHBhcmVudCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgdCA9 IG1ha2VfaW50ZXJ2YWwgKCk7CisgIElOVEVSVkFMIHQgPSBtYWtlX2ludGVydmFsICgpOwog CiAgIG1lbWNweSAodCwgc291cmNlLCBJTlRFUlZBTF9TSVpFKTsKICAgY29weV9wcm9wZXJ0 aWVzIChzb3VyY2UsIHQpOwpAQCAtMTU3OSw3ICsxNTc4LDcgQEAKIHN0YXRpYyBJTlRFUlZB TAogcmVwcm9kdWNlX3RyZWVfb2JqIChJTlRFUlZBTCBzb3VyY2UsIExpc3BfT2JqZWN0IHBh cmVudCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgdCA9IG1ha2VfaW50ZXJ2YWwgKCk7Cisg IElOVEVSVkFMIHQgPSBtYWtlX2ludGVydmFsICgpOwogCiAgIG1lbWNweSAodCwgc291cmNl LCBJTlRFUlZBTF9TSVpFKTsKICAgY29weV9wcm9wZXJ0aWVzIChzb3VyY2UsIHQpOwpAQCAt MTY3OSw4ICsxNjc4LDggQEAKIAkJCSAgICAgcHRyZGlmZl90IGxlbmd0aCwgc3RydWN0IGJ1 ZmZlciAqYnVmZmVyLAogCQkJICAgICBpbnQgaW5oZXJpdCkKIHsKLSAgcmVnaXN0ZXIgSU5U RVJWQUwgdW5kZXIsIG92ZXIsIHRoaXM7Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIHRyZWU7Cisg IElOVEVSVkFMIHVuZGVyLCBvdmVyLCB0aGlzOworICBJTlRFUlZBTCB0cmVlOwogICBwdHJk aWZmX3Qgb3Zlcl91c2VkOwogCiAgIHRyZWUgPSBCVUZfSU5URVJWQUxTIChidWZmZXIpOwpA QCAtMTgxNywxOSArMTgxNiwxOSBAQAogICAgYW5kIGZvciBQUk9QIGFwcGVhcmluZyBvbiB0 aGUgZGVmYXVsdC10ZXh0LXByb3BlcnRpZXMgbGlzdC4gICovCiAKIExpc3BfT2JqZWN0Ci10 ZXh0Z2V0IChMaXNwX09iamVjdCBwbGlzdCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcCkK K3RleHRnZXQgKExpc3BfT2JqZWN0IHBsaXN0LCBMaXNwX09iamVjdCBwcm9wKQogewogICBy ZXR1cm4gbG9va3VwX2NoYXJfcHJvcGVydHkgKHBsaXN0LCBwcm9wLCAxKTsKIH0KIAogTGlz cF9PYmplY3QKLWxvb2t1cF9jaGFyX3Byb3BlcnR5IChMaXNwX09iamVjdCBwbGlzdCwgcmVn aXN0ZXIgTGlzcF9PYmplY3QgcHJvcCwgaW50IHRleHRwcm9wKQorbG9va3VwX2NoYXJfcHJv cGVydHkgKExpc3BfT2JqZWN0IHBsaXN0LCBMaXNwX09iamVjdCBwcm9wLCBpbnQgdGV4dHBy b3ApCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWwsIGZhbGxiYWNrID0gUW5pbDsK KyAgTGlzcF9PYmplY3QgdGFpbCwgZmFsbGJhY2sgPSBRbmlsOwogCiAgIGZvciAodGFpbCA9 IHBsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBGY2RyIChYQ0RSICh0YWlsKSkpCiAgICAg ewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICAgICAgTGlzcF9PYmplY3Qg dGVtOwogICAgICAgdGVtID0gWENBUiAodGFpbCk7CiAgICAgICBpZiAoRVEgKHByb3AsIHRl bSkpCiAJcmV0dXJuIEZjYXIgKFhDRFIgKHRhaWwpKTsKQEAgLTE5NTAsNyArMTk0OSw3IEBA CiB2b2lkCiBzZXRfcG9pbnRfYm90aCAocHRyZGlmZl90IGNoYXJwb3MsIHB0cmRpZmZfdCBi eXRlcG9zKQogewotICByZWdpc3RlciBJTlRFUlZBTCB0bywgZnJvbSwgdG9wcmV2LCBmcm9t cHJldjsKKyAgSU5URVJWQUwgdG8sIGZyb20sIHRvcHJldiwgZnJvbXByZXY7CiAgIHB0cmRp ZmZfdCBidWZmZXJfcG9pbnQ7CiAgIHB0cmRpZmZfdCBvbGRfcG9zaXRpb24gPSBQVDsKICAg LyogVGhpcyBlbnN1cmVzIHRoYXQgd2UgbW92ZSBmb3J3YXJkIHBhc3QgaW50YW5naWJsZSB0 ZXh0IHdoZW4gdGhlCkBAIC0yMjc5LDggKzIyNzgsNyBAQAogICAgUE9TSVRJT04gbXVzdCBi ZSBpbiB0aGUgYWNjZXNzaWJsZSBwYXJ0IG9mIEJVRkZFUi4gICovCiAKIExpc3BfT2JqZWN0 Ci1nZXRfbG9jYWxfbWFwIChyZWdpc3RlciBwdHJkaWZmX3QgcG9zaXRpb24sIHJlZ2lzdGVy IHN0cnVjdCBidWZmZXIgKmJ1ZmZlciwKLQkgICAgICAgTGlzcF9PYmplY3QgdHlwZSkKK2dl dF9sb2NhbF9tYXAgKHB0cmRpZmZfdCBwb3NpdGlvbiwgc3RydWN0IGJ1ZmZlciAqYnVmZmVy LCBMaXNwX09iamVjdCB0eXBlKQogewogICBMaXNwX09iamVjdCBwcm9wLCBsaXNweV9wb3Np dGlvbiwgbGlzcHlfYnVmZmVyOwogICBwdHJkaWZmX3Qgb2xkX2JlZ3YsIG9sZF96diwgb2xk X2JlZ3ZfYnl0ZSwgb2xkX3p2X2J5dGU7CkBAIC0yMzMyLDggKzIzMzAsOCBAQAogSU5URVJW QUwKIGNvcHlfaW50ZXJ2YWxzIChJTlRFUlZBTCB0cmVlLCBwdHJkaWZmX3Qgc3RhcnQsIHB0 cmRpZmZfdCBsZW5ndGgpCiB7Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIGksIG5ldywgdDsKLSAg cmVnaXN0ZXIgcHRyZGlmZl90IGdvdCwgcHJldmxlbjsKKyAgSU5URVJWQUwgaSwgbmV3LCB0 OworICBwdHJkaWZmX3QgZ290LCBwcmV2bGVuOwogCiAgIGlmIChOVUxMX0lOVEVSVkFMX1Ag KHRyZWUpIHx8IGxlbmd0aCA8PSAwKQogICAgIHJldHVybiBOVUxMX0lOVEVSVkFMOwoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy9rZXlib2FyZC5jJwotLS0gc3JjL2tleWJvYXJkLmMJMjAx Mi0wNi0wMiAxOToyMTozNCArMDAwMAorKysgc3JjL2tleWJvYXJkLmMJMjAxMi0wNi0wMyAw NTo1NToyMyArMDAwMApAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIExpc3BfT2JqZWN0CiBjb21t YW5kX2xvb3BfMiAoTGlzcF9PYmplY3QgaWdub3JlKQogewotICByZWdpc3RlciBMaXNwX09i amVjdCB2YWw7CisgIExpc3BfT2JqZWN0IHZhbDsKIAogICBkbwogICAgIHZhbCA9IGludGVy bmFsX2NvbmRpdGlvbl9jYXNlIChjb21tYW5kX2xvb3BfMSwgUWVycm9yLCBjbWRfZXJyb3Ip OwpAQCAtMzUwMCw3ICszNTAwLDcgQEAKICNlbmRpZgkvKiBTdG9yZSBhbiBldmVudCBvYnRh aW5lZCBhdCBpbnRlcnJ1cHQgbGV2ZWwgaW50byBrYmRfYnVmZmVyLCBmaWZvICovCiAKIHZv aWQKLWtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKHJlZ2lzdGVyIHN0cnVjdCBpbnB1dF9ldmVu dCAqZXZlbnQpCitrYmRfYnVmZmVyX3N0b3JlX2V2ZW50IChzdHJ1Y3QgaW5wdXRfZXZlbnQg KmV2ZW50KQogewogICBrYmRfYnVmZmVyX3N0b3JlX2V2ZW50X2hvbGQgKGV2ZW50LCAwKTsK IH0KQEAgLTM1MTgsNyArMzUxOCw3IEBACiAgKi8KIAogdm9pZAota2JkX2J1ZmZlcl9zdG9y ZV9ldmVudF9ob2xkIChyZWdpc3RlciBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2ZW50LAora2Jk X2J1ZmZlcl9zdG9yZV9ldmVudF9ob2xkIChzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2ZW50LAog CQkJICAgICBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmhvbGRfcXVpdCkKIHsKICAgaWYgKGV2ZW50 LT5raW5kID09IE5PX0VWRU5UKQpAQCAtMzUyOSw3ICszNTI5LDcgQEAKIAogICBpZiAoZXZl bnQtPmtpbmQgPT0gQVNDSUlfS0VZU1RST0tFX0VWRU5UKQogICAgIHsKLSAgICAgIHJlZ2lz dGVyIGludCBjID0gZXZlbnQtPmNvZGUgJiAwMzc3OworICAgICAgaW50IGMgPSBldmVudC0+ Y29kZSAmIDAzNzc7CiAKICAgICAgIGlmIChldmVudC0+bW9kaWZpZXJzICYgY3RybF9tb2Rp ZmllcikKIAljID0gbWFrZV9jdHJsX2NoYXIgKGMpOwpAQCAtMzY1Myw3ICszNjUzLDcgQEAK IC8qIFB1dCBhbiBpbnB1dCBldmVudCBiYWNrIGluIHRoZSBoZWFkIG9mIHRoZSBldmVudCBx dWV1ZS4gICovCiAKIHZvaWQKLWtiZF9idWZmZXJfdW5nZXRfZXZlbnQgKHJlZ2lzdGVyIHN0 cnVjdCBpbnB1dF9ldmVudCAqZXZlbnQpCitrYmRfYnVmZmVyX3VuZ2V0X2V2ZW50IChzdHJ1 Y3QgaW5wdXRfZXZlbnQgKmV2ZW50KQogewogICBpZiAoa2JkX2ZldGNoX3B0ciA9PSBrYmRf YnVmZmVyKQogICAgIGtiZF9mZXRjaF9wdHIgPSBrYmRfYnVmZmVyICsgS0JEX0JVRkZFUl9T SVpFOwpAQCAtODU1MCw3ICs4NTUwLDcgQEAKIAkJCSAgICAgICBwdHJkaWZmX3Qgbm1hcHMs IExpc3BfT2JqZWN0ICptYXBzKQogewogICBwdHJkaWZmX3QgbWFwbm87Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IG5hbWU7CisgIExpc3BfT2JqZWN0IG5hbWU7CiAgIHB0cmRpZmZfdCBu bGVuZ3RoOwogICAvKiBGSVhNRTogVXNlIHRoZSBtaW5pYnVmZmVyJ3MgZnJhbWUgd2lkdGgu ICAqLwogICBwdHJkaWZmX3Qgd2lkdGggPSBGUkFNRV9DT0xTIChTRUxFQ1RFRF9GUkFNRSAo KSkgLSA0OwpAQCAtMTAxNjEsNyArMTAxNjEsNyBAQAogICAoTGlzcF9PYmplY3QgcHJvbXB0 LCBMaXNwX09iamVjdCBjb250aW51ZV9lY2hvLCBMaXNwX09iamVjdCBkb250X2Rvd25jYXNl X2xhc3QsIExpc3BfT2JqZWN0IGNhbl9yZXR1cm5fc3dpdGNoX2ZyYW1lLCBMaXNwX09iamVj dCBjbWRfbG9vcCkKIHsKICAgTGlzcF9PYmplY3Qga2V5YnVmWzMwXTsKLSAgcmVnaXN0ZXIg aW50IGk7CisgIGludCBpOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogICBwdHJkaWZmX3Qg Y291bnQgPSBTUEVDUERMX0lOREVYICgpOwogCkBAIC0xMDIxOCw3ICsxMDIxOCw3IEBACiAg IChMaXNwX09iamVjdCBwcm9tcHQsIExpc3BfT2JqZWN0IGNvbnRpbnVlX2VjaG8sIExpc3Bf T2JqZWN0IGRvbnRfZG93bmNhc2VfbGFzdCwgTGlzcF9PYmplY3QgY2FuX3JldHVybl9zd2l0 Y2hfZnJhbWUsIExpc3BfT2JqZWN0IGNtZF9sb29wKQogewogICBMaXNwX09iamVjdCBrZXli dWZbMzBdOwotICByZWdpc3RlciBpbnQgaTsKKyAgaW50IGk7CiAgIHN0cnVjdCBnY3BybyBn Y3BybzE7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CiAKQEAgLTEw Mjc3LDggKzEwMjc3LDggQEAKIGEgc3BlY2lhbCBldmVudCwgc28gaWdub3JlIHRoZSBwcmVm aXggYXJndW1lbnQgYW5kIGRvbid0IGNsZWFyIGl0LiAgKi8pCiAgIChMaXNwX09iamVjdCBj bWQsIExpc3BfT2JqZWN0IHJlY29yZF9mbGFnLCBMaXNwX09iamVjdCBrZXlzLCBMaXNwX09i amVjdCBzcGVjaWFsKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBmaW5hbDsKLSAgcmVn aXN0ZXIgTGlzcF9PYmplY3QgdGVtOworICBMaXNwX09iamVjdCBmaW5hbDsKKyAgTGlzcF9P YmplY3QgdGVtOwogICBMaXNwX09iamVjdCBwcmVmaXhhcmc7CiAKICAgZGVidWdfb25fbmV4 dF9jYWxsID0gMDsKQEAgLTEwNzAwLDExICsxMDcwMCwxMSBAQAogc3R1ZmZfYnVmZmVyZWRf aW5wdXQgKExpc3BfT2JqZWN0IHN0dWZmc3RyaW5nKQogewogI2lmZGVmIFNJR1RTVFAgIC8q IHN0dWZmX2NoYXIgaXMgZGVmaW5lZCBpZiBTSUdUU1RQLiAgKi8KLSAgcmVnaXN0ZXIgdW5z aWduZWQgY2hhciAqcDsKKyAgdW5zaWduZWQgY2hhciAqcDsKIAogICBpZiAoU1RSSU5HUCAo c3R1ZmZzdHJpbmcpKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIHB0cmRpZmZfdCBjb3VudDsK KyAgICAgIHB0cmRpZmZfdCBjb3VudDsKIAogICAgICAgcCA9IFNEQVRBIChzdHVmZnN0cmlu Zyk7CiAgICAgICBjb3VudCA9IFNCWVRFUyAoc3R1ZmZzdHJpbmcpOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9rZXltYXAuYycKLS0tIHNyYy9rZXltYXAuYwkyMDEyLTA1LTMxIDA2OjA2 OjQyICswMDAwCisrKyBzcmMva2V5bWFwLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApA QCAtNzkyLDcgKzc5Miw3IEBACiB9CiAKIHN0YXRpYyBMaXNwX09iamVjdAotc3RvcmVfaW5f a2V5bWFwIChMaXNwX09iamVjdCBrZXltYXAsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGlkeCwg TGlzcF9PYmplY3QgZGVmKQorc3RvcmVfaW5fa2V5bWFwIChMaXNwX09iamVjdCBrZXltYXAs IExpc3BfT2JqZWN0IGlkeCwgTGlzcF9PYmplY3QgZGVmKQogewogICAvKiBGbHVzaCBhbnkg cmV2ZXJzZS1tYXAgY2FjaGUuICAqLwogICB3aGVyZV9pc19jYWNoZSA9IFFuaWw7CkBAIC0x MDQ2LDcgKzEwNDYsNyBAQAogaXMgbm90IGNvcGllZC4gICovKQogICAoTGlzcF9PYmplY3Qg a2V5bWFwKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCBjb3B5LCB0YWlsOworICBMaXNw X09iamVjdCBjb3B5LCB0YWlsOwogICBrZXltYXAgPSBnZXRfa2V5bWFwIChrZXltYXAsIDEs IDApOwogICBjb3B5ID0gdGFpbCA9IEZjb25zIChRa2V5bWFwLCBRbmlsKTsKICAga2V5bWFw ID0gWENEUiAoa2V5bWFwKTsJCS8qIFNraXAgdGhlIGBrZXltYXAnIHN5bWJvbC4gICovCkBA IC0xMTE3LDkgKzExMTcsOSBAQAogYmluZGluZyBLRVkgdG8gREVGIGlzIGFkZGVkIGF0IHRo ZSBmcm9udCBvZiBLRVlNQVAuICAqLykKICAgKExpc3BfT2JqZWN0IGtleW1hcCwgTGlzcF9P YmplY3Qga2V5LCBMaXNwX09iamVjdCBkZWYpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBp ZHg7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGNtZDsKKyAgcHRyZGlmZl90IGlkeDsKKyAgTGlzcF9PYmplY3QgYzsKKyAgTGlzcF9PYmpl Y3QgY21kOwogICBpbnQgbWV0aXplZCA9IDA7CiAgIGludCBtZXRhX2JpdDsKICAgcHRyZGlm Zl90IGxlbmd0aDsKQEAgLTEyNzQsOSArMTI3NCw5IEBACiByZWNvZ25pemUgdGhlIGRlZmF1 bHQgYmluZGluZ3MsIGp1c3QgYXMgYHJlYWQta2V5LXNlcXVlbmNlJyBkb2VzLiAgKi8pCiAg IChMaXNwX09iamVjdCBrZXltYXAsIExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3QgYWNj ZXB0X2RlZmF1bHQpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBpZHg7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGNtZDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgYzsKKyAgcHRyZGlm Zl90IGlkeDsKKyAgTGlzcF9PYmplY3QgY21kOworICBMaXNwX09iamVjdCBjOwogICBwdHJk aWZmX3QgbGVuZ3RoOwogICBpbnQgdF9vayA9ICFOSUxQIChhY2NlcHRfZGVmYXVsdCk7CiAg IHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMjsKQEAgLTE3NTEsNyArMTc1MSw3IEBACiBi aW5kaW5nczsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBgbG9va3VwLWtleScgZm9yIG1vcmUg ZGV0YWlscyBhYm91dCB0aGlzLiAgKi8pCiAgIChMaXNwX09iamVjdCBrZXlzLCBMaXNwX09i amVjdCBhY2NlcHRfZGVmYXVsdCkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbWFwOwor ICBMaXNwX09iamVjdCBtYXA7CiAgIG1hcCA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBrZXlt YXApOwogICBpZiAoTklMUCAobWFwKSkKICAgICByZXR1cm4gUW5pbDsKQEAgLTIwMjcsNyAr MjAyNyw3IEBACiAgIGZvciAodGFpbCA9IG1hcHM7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhD RFIgKHRhaWwpKQogICAgIHsKICAgICAgIHN0cnVjdCBhY2Nlc3NpYmxlX2tleW1hcHNfZGF0 YSBkYXRhOwotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGhpc21hcCA9IEZjZHIgKFhD QVIgKHRhaWwpKTsKKyAgICAgIExpc3BfT2JqZWN0IHRoaXNtYXAgPSBGY2RyIChYQ0FSICh0 YWlsKSk7CiAgICAgICBMaXNwX09iamVjdCBsYXN0OwogCiAgICAgICBkYXRhLnRoaXNzZXEg PSBGY2FyIChYQ0FSICh0YWlsKSk7CkBAIC0yMzMwLDcgKzIzMzAsNyBAQAogfQogCiBzdGF0 aWMgY2hhciAqCi1wdXNoX3RleHRfY2hhcl9kZXNjcmlwdGlvbiAocmVnaXN0ZXIgdW5zaWdu ZWQgaW50IGMsIHJlZ2lzdGVyIGNoYXIgKnApCitwdXNoX3RleHRfY2hhcl9kZXNjcmlwdGlv biAodW5zaWduZWQgaW50IGMsIGNoYXIgKnApCiB7CiAgIGlmIChjID49IDAyMDApCiAgICAg ewpAQCAtMjUxOCw3ICsyNTE4LDcgQEAKICAgZm9yICg7IENPTlNQIChtYXBzKTsgbWFwcyA9 IFhDRFIgKG1hcHMpKQogICAgIHsKICAgICAgIC8qIEtleSBzZXF1ZW5jZSB0byByZWFjaCBt YXAsIGFuZCB0aGUgbWFwIHRoYXQgaXQgcmVhY2hlcyAqLwotICAgICAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdGhpcywgbWFwLCB0ZW07CisgICAgICBMaXNwX09iamVjdCB0aGlzLCBtYXAs IHRlbTsKIAogICAgICAgLyogSW4gb3JkZXIgdG8gZm9sZCBbTUVUQS1QUkVGSVgtQ0hBUiBD SEFSXSBzZXF1ZW5jZXMgaW50bwogCSBbTS1DSEFSXSBzZXF1ZW5jZXMsIGNoZWNrIGlmIGxh c3QgY2hhcmFjdGVyIG9mIHRoZSBzZXF1ZW5jZQpAQCAtMjgyMyw3ICsyODIzLDcgQEAKIHsK ICAgTGlzcF9PYmplY3Qgb3V0YnVmLCBzaGFkb3c7CiAgIGludCBub21lbnUgPSBOSUxQICht ZW51cyk7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHN0YXJ0MTsKKyAgTGlzcF9PYmplY3Qg c3RhcnQxOwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwogCiAgIGNvbnN0IGNoYXIgKmFsdGVy bmF0ZV9oZWFkaW5nCkBAIC0zMDU0LDcgKzMwNTQsNyBAQAogCiAgIGZvciAoOyBDT05TUCAo bWFwcyk7IG1hcHMgPSBYQ0RSIChtYXBzKSkKICAgICB7Ci0gICAgICByZWdpc3RlciBMaXNw X09iamVjdCBlbHQsIGVsdF9wcmVmaXgsIHRhaWw7CisgICAgICBMaXNwX09iamVjdCBlbHQs IGVsdF9wcmVmaXgsIHRhaWw7CiAKICAgICAgIGVsdCA9IFhDQVIgKG1hcHMpOwogICAgICAg ZWx0X3ByZWZpeCA9IEZjYXIgKGVsdCk7CkBAIC0zMTE5LDcgKzMxMTksNyBAQAogc3RhdGlj IHZvaWQKIGRlc2NyaWJlX2NvbW1hbmQgKExpc3BfT2JqZWN0IGRlZmluaXRpb24sIExpc3Bf T2JqZWN0IGFyZ3MpCiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTE7CisgIExpc3Bf T2JqZWN0IHRlbTE7CiAgIHB0cmRpZmZfdCBjb2x1bW4gPSBjdXJyZW50X2NvbHVtbiAoKTsK ICAgaW50IGRlc2NyaXB0aW9uX2NvbHVtbjsKIApAQCAtMzE1NSw3ICszMTU1LDcgQEAKIHN0 YXRpYyB2b2lkCiBkZXNjcmliZV90cmFuc2xhdGlvbiAoTGlzcF9PYmplY3QgZGVmaW5pdGlv biwgTGlzcF9PYmplY3QgYXJncykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtMTsK KyAgTGlzcF9PYmplY3QgdGVtMTsKIAogICBGaW5kZW50X3RvIChtYWtlX251bWJlciAoMTYp LCBtYWtlX251bWJlciAoMSkpOwogCkBAIC0zNjQ2LDcgKzM2NDYsNyBAQAogc3RhdGljIHZv aWQKIGFwcm9wb3NfYWNjdW0gKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3Qgc3Ry aW5nKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW07CisgIExpc3BfT2JqZWN0IHRl bTsKIAogICB0ZW0gPSBGc3RyaW5nX21hdGNoIChzdHJpbmcsIEZzeW1ib2xfbmFtZSAoc3lt Ym9sKSwgUW5pbCk7CiAgIGlmICghTklMUCAodGVtKSAmJiAhTklMUCAoYXByb3Bvc19wcmVk aWNhdGUpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9scmVhZC5jJwotLS0gc3JjL2xyZWFk LmMJMjAxMi0wNS0zMCAwMzo1OTo0MiArMDAwMAorKysgc3JjL2xyZWFkLmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtMTkxLDcgKzE5MSw3IEBACiByZWFkY2hhciAoTGlzcF9P YmplY3QgcmVhZGNoYXJmdW4sIGludCAqbXVsdGlieXRlKQogewogICBMaXNwX09iamVjdCB0 ZW07Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgaW50ICgqcmVhZGJ5dGUpIChp bnQsIExpc3BfT2JqZWN0KTsKICAgdW5zaWduZWQgY2hhciBidWZbTUFYX01VTFRJQllURV9M RU5HVEhdOwogICBpbnQgaSwgbGVuOwpAQCAtMjA0LDcgKzIwNCw3IEBACiAKICAgaWYgKEJV RkZFUlAgKHJlYWRjaGFyZnVuKSkKICAgICB7Ci0gICAgICByZWdpc3RlciBzdHJ1Y3QgYnVm ZmVyICppbmJ1ZmZlciA9IFhCVUZGRVIgKHJlYWRjaGFyZnVuKTsKKyAgICAgIHN0cnVjdCBi dWZmZXIgKmluYnVmZmVyID0gWEJVRkZFUiAocmVhZGNoYXJmdW4pOwogCiAgICAgICBwdHJk aWZmX3QgcHRfYnl0ZSA9IEJVRl9QVF9CWVRFIChpbmJ1ZmZlcik7CiAKQEAgLTIzMyw3ICsy MzMsNyBAQAogICAgIH0KICAgaWYgKE1BUktFUlAgKHJlYWRjaGFyZnVuKSkKICAgICB7Ci0g ICAgICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICppbmJ1ZmZlciA9IFhNQVJLRVIgKHJlYWRj aGFyZnVuKS0+YnVmZmVyOworICAgICAgc3RydWN0IGJ1ZmZlciAqaW5idWZmZXIgPSBYTUFS S0VSIChyZWFkY2hhcmZ1biktPmJ1ZmZlcjsKIAogICAgICAgcHRyZGlmZl90IGJ5dGVwb3Mg PSBtYXJrZXJfYnl0ZV9wb3NpdGlvbiAocmVhZGNoYXJmdW4pOwogCkBAIC03NjQsNyArNzY0 LDcgQEAKICAgICAgICBkb2M6IC8qIERvbid0IHVzZSB0aGlzIHlvdXJzZWxmLiAgKi8pCiAg ICh2b2lkKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB2YWw7CisgIExpc3BfT2JqZWN0 IHZhbDsKICAgQkxPQ0tfSU5QVVQ7CiAgIFhTRVRJTlQgKHZhbCwgZ2V0YyAoaW5zdHJlYW0p KTsKICAgVU5CTE9DS19JTlBVVDsKQEAgLTEwMjAsOCArMTAyMCw4IEBACiBSZXR1cm4gdCBp ZiB0aGUgZmlsZSBleGlzdHMgYW5kIGxvYWRzIHN1Y2Nlc3NmdWxseS4gICovKQogICAoTGlz cF9PYmplY3QgZmlsZSwgTGlzcF9PYmplY3Qgbm9lcnJvciwgTGlzcF9PYmplY3Qgbm9tZXNz YWdlLCBMaXNwX09iamVjdCBub3N1ZmZpeCwgTGlzcF9PYmplY3QgbXVzdF9zdWZmaXgpCiB7 Ci0gIHJlZ2lzdGVyIEZJTEUgKnN0cmVhbTsKLSAgcmVnaXN0ZXIgaW50IGZkID0gLTE7Cisg IEZJTEUgKnN0cmVhbTsKKyAgaW50IGZkID0gLTE7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQ RUNQRExfSU5ERVggKCk7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwgZ2Nwcm8z OwogICBMaXNwX09iamVjdCBmb3VuZCwgZWZvdW5kLCBoaXN0X2ZpbGVfbmFtZTsKQEAgLTEz OTEsNyArMTM5MSw3IEBACiBzdGF0aWMgaW50CiBjb21wbGV0ZV9maWxlbmFtZV9wIChMaXNw X09iamVjdCBwYXRobmFtZSkKIHsKLSAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAq cyA9IFNEQVRBIChwYXRobmFtZSk7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSBTREFU QSAocGF0aG5hbWUpOwogICByZXR1cm4gKElTX0RJUkVDVE9SWV9TRVAgKHNbMF0pCiAJICB8 fCAoU0NIQVJTIChwYXRobmFtZSkgPiAyCiAJICAgICAgJiYgSVNfREVWSUNFX1NFUCAoc1sx XSkgJiYgSVNfRElSRUNUT1JZX1NFUCAoc1syXSkpKTsKQEAgLTE0NDEsMTAgKzE0NDEsMTAg QEAKIGludAogb3BlbnAgKExpc3BfT2JqZWN0IHBhdGgsIExpc3BfT2JqZWN0IHN0ciwgTGlz cF9PYmplY3Qgc3VmZml4ZXMsIExpc3BfT2JqZWN0ICpzdG9yZXB0ciwgTGlzcF9PYmplY3Qg cHJlZGljYXRlKQogewotICByZWdpc3RlciBpbnQgZmQ7CisgIGludCBmZDsKICAgcHRyZGlm Zl90IGZuX3NpemUgPSAxMDA7CiAgIGNoYXIgYnVmWzEwMF07Ci0gIHJlZ2lzdGVyIGNoYXIg KmZuID0gYnVmOworICBjaGFyICpmbiA9IGJ1ZjsKICAgaW50IGFic29sdXRlID0gMDsKICAg cHRyZGlmZl90IHdhbnRfbGVuZ3RoOwogICBMaXNwX09iamVjdCBmaWxlbmFtZTsKQEAgLTE1 OTcsOSArMTU5Nyw5IEBACiBzdGF0aWMgdm9pZAogYnVpbGRfbG9hZF9oaXN0b3J5IChMaXNw X09iamVjdCBmaWxlbmFtZSwgaW50IGVudGlyZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdGFpbCwgcHJldiwgbmV3ZWx0OwotICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW0sIHRl bTI7Ci0gIHJlZ2lzdGVyIGludCBmb3VuZGl0ID0gMDsKKyAgTGlzcF9PYmplY3QgdGFpbCwg cHJldiwgbmV3ZWx0OworICBMaXNwX09iamVjdCB0ZW0sIHRlbTI7CisgIGludCBmb3VuZGl0 ID0gMDsKIAogICB0YWlsID0gVmxvYWRfaGlzdG9yeTsKICAgcHJldiA9IFFuaWw7CkBAIC0x Njg4LDggKzE2ODgsOCBAQAogCSAgICAgIExpc3BfT2JqZWN0IHVuaWJ5dGUsIExpc3BfT2Jq ZWN0IHJlYWRmdW4sCiAJICAgICAgTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVu ZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsK KyAgaW50IGM7CisgIExpc3BfT2JqZWN0IHZhbDsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BF Q1BETF9JTkRFWCAoKTsKICAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8yLCBnY3BybzMs IGdjcHJvNDsKICAgc3RydWN0IGJ1ZmZlciAqYiA9IDA7CkBAIC0yMDQ1LDcgKzIwNDUsNyBA QAogc3RhdGljIExpc3BfT2JqZWN0CiByZWFkMCAoTGlzcF9PYmplY3QgcmVhZGNoYXJmdW4p CiB7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbDsKKyAgTGlzcF9PYmplY3QgdmFsOwog ICBpbnQgYzsKIAogICB2YWwgPSByZWFkMSAocmVhZGNoYXJmdW4sICZjLCAwKTsKQEAgLTIw NjUsNyArMjA2NSw3IEBACiBzdGF0aWMgaW50CiByZWFkX2VzY2FwZSAoTGlzcF9PYmplY3Qg cmVhZGNoYXJmdW4sIGludCBzdHJpbmdwKQogewotICByZWdpc3RlciBpbnQgYyA9IFJFQURD SEFSOworICBpbnQgYyA9IFJFQURDSEFSOwogICAvKiBcdSBhbGxvd3MgdXAgdG8gZm91ciBo ZXggZGlnaXRzLCBcVSB1cCB0byBlaWdodC4gIERlZmF1bHQgdG8gdGhlCiAgICAgIGJlaGF2 aW9yIGZvciBcdSwgYW5kIGNoYW5nZSB0aGlzIHZhbHVlIGluIHRoZSBjYXNlIHRoYXQgXFUg aXMgc2Vlbi4gICovCiAgIGludCB1bmljb2RlX2hleF9jb3VudCA9IDQ7CkBAIC0yMTc5LDgg KzIxNzksOCBAQAogICAgIGNhc2UgJzcnOgogICAgICAgLyogQW4gb2N0YWwgZXNjYXBlLCBh cyBpbiBBTlNJIEMuICAqLwogICAgICAgewotCXJlZ2lzdGVyIGludCBpID0gYyAtICcwJzsK LQlyZWdpc3RlciBpbnQgY291bnQgPSAwOworCWludCBpID0gYyAtICcwJzsKKwlpbnQgY291 bnQgPSAwOwogCXdoaWxlICgrK2NvdW50IDwgMykKIAkgIHsKIAkgICAgaWYgKChjID0gUkVB RENIQVIpID49ICcwJyAmJiBjIDw9ICc3JykKQEAgLTIzNjksOSArMjM2OSw5IEBACiAgICBG SVJTVF9JTl9MSVNUIGlzIG5vbnplcm8gaWYgdGhpcyBpcyB0aGUgZmlyc3QgZWxlbWVudCBv ZiBhIGxpc3QuICAqLwogCiBzdGF0aWMgTGlzcF9PYmplY3QKLXJlYWQxIChyZWdpc3RlciBM aXNwX09iamVjdCByZWFkY2hhcmZ1biwgaW50ICpwY2gsIGludCBmaXJzdF9pbl9saXN0KQor cmVhZDEgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgKnBjaCwgaW50IGZpcnN0X2lu X2xpc3QpCiB7Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgdW5zaWduZWQgdW5p bnRlcm5lZF9zeW1ib2wgPSAwOwogICBpbnQgbXVsdGlieXRlOwogCkBAIC0yODg2LDcgKzI4 ODYsNyBAQAogICAgICAgewogCWNoYXIgKnAgPSByZWFkX2J1ZmZlcjsKIAljaGFyICplbmQg PSByZWFkX2J1ZmZlciArIHJlYWRfYnVmZmVyX3NpemU7Ci0JcmVnaXN0ZXIgaW50IGNoOwor CWludCBjaDsKIAkvKiBOb256ZXJvIGlmIHdlIHNhdyBhbiBlc2NhcGUgc2VxdWVuY2Ugc3Bl Y2lmeWluZwogCSAgIGEgbXVsdGlieXRlIGNoYXJhY3Rlci4gICovCiAJaW50IGZvcmNlX211 bHRpYnl0ZSA9IDA7CkBAIC0zMzk5LDkgKzMzOTksOSBAQAogcmVhZF92ZWN0b3IgKExpc3Bf T2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgYnl0ZWNvZGVmbGFnKQogewogICBwdHJkaWZmX3Qg aSwgc2l6ZTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgKnB0cjsKLSAgcmVnaXN0ZXIgTGlz cF9PYmplY3QgdGVtLCBpdGVtLCB2ZWN0b3I7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX0Nv bnMgKm90ZW07CisgIExpc3BfT2JqZWN0ICpwdHI7CisgIExpc3BfT2JqZWN0IHRlbSwgaXRl bSwgdmVjdG9yOworICBzdHJ1Y3QgTGlzcF9Db25zICpvdGVtOwogICBMaXNwX09iamVjdCBs ZW47CiAKICAgdGVtID0gcmVhZF9saXN0ICgxLCByZWFkY2hhcmZ1bik7CkBAIC0zNDc2LDEw ICszNDc2LDEwIEBACiAvKiBGTEFHID0gMSBtZWFucyBjaGVjayBmb3IgXSB0byB0ZXJtaW5h dGUgcmF0aGVyIHRoYW4gKSBhbmQgLiAgKi8KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1yZWFk X2xpc3QgKGludCBmbGFnLCByZWdpc3RlciBMaXNwX09iamVjdCByZWFkY2hhcmZ1bikKK3Jl YWRfbGlzdCAoaW50IGZsYWcsIExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuKQogewogICBMaXNw X09iamVjdCB2YWwsIHRhaWw7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGVsdCwgdGVtOwor ICBMaXNwX09iamVjdCBlbHQsIHRlbTsKICAgc3RydWN0IGdjcHJvIGdjcHJvMSwgZ2Nwcm8y OwogICAvKiAwIGlzIHRoZSBub3JtYWwgY2FzZS4KICAgICAgMSBtZWFucyB0aGlzIGxpc3Qg aXMgYSBkb2MgcmVmZXJlbmNlOyByZXBsYWNlIGl0IHdpdGggdGhlIG51bWJlciAwLgpAQCAt MzcxOCw3ICszNzE4LDcgQEAKIGl0IGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgb2JhcnJh eScuICAqLykKICAgKExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3Qgb2JhcnJheSkK IHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBzeW0sICpwdHI7CisgIExpc3BfT2Jq ZWN0IHRlbSwgc3ltLCAqcHRyOwogCiAgIGlmIChOSUxQIChvYmFycmF5KSkgb2JhcnJheSA9 IFZvYmFycmF5OwogICBvYmFycmF5ID0gY2hlY2tfb2JhcnJheSAob2JhcnJheSk7CkBAIC0z NzY1LDcgKzM3NjUsNyBAQAogaXQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGBvYmFycmF5 Jy4gICovKQogICAoTGlzcF9PYmplY3QgbmFtZSwgTGlzcF9PYmplY3Qgb2JhcnJheSkKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBzdHJpbmc7CisgIExpc3BfT2JqZWN0IHRl bSwgc3RyaW5nOwogCiAgIGlmIChOSUxQIChvYmFycmF5KSkgb2JhcnJheSA9IFZvYmFycmF5 OwogICBvYmFycmF5ID0gY2hlY2tfb2JhcnJheSAob2JhcnJheSk7CkBAIC0zNzkzLDcgKzM3 OTMsNyBAQAogT0JBUlJBWSBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxl IGBvYmFycmF5Jy4gICovKQogICAoTGlzcF9PYmplY3QgbmFtZSwgTGlzcF9PYmplY3Qgb2Jh cnJheSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3RyaW5nLCB0ZW07CisgIExpc3Bf T2JqZWN0IHN0cmluZywgdGVtOwogICBzaXplX3QgaGFzaDsKIAogICBpZiAoTklMUCAob2Jh cnJheSkpIG9iYXJyYXkgPSBWb2JhcnJheTsKQEAgLTM4NjEsMTEgKzM4NjEsMTIgQEAKICAg IEFsc28gc3RvcmUgdGhlIGJ1Y2tldCBudW1iZXIgaW4gb2Jsb29rdXBfbGFzdF9idWNrZXRf bnVtYmVyLiAgKi8KIAogTGlzcF9PYmplY3QKLW9ibG9va3VwIChMaXNwX09iamVjdCBvYmFy cmF5LCByZWdpc3RlciBjb25zdCBjaGFyICpwdHIsIHB0cmRpZmZfdCBzaXplLCBwdHJkaWZm X3Qgc2l6ZV9ieXRlKQorb2Jsb29rdXAgKExpc3BfT2JqZWN0IG9iYXJyYXksIGNvbnN0IGNo YXIgKnB0ciwKKwkgIHB0cmRpZmZfdCBzaXplLCBwdHJkaWZmX3Qgc2l6ZV9ieXRlKQogewog ICBzaXplX3QgaGFzaDsKICAgc2l6ZV90IG9ic2l6ZTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFpbDsKICAgTGlzcF9PYmplY3QgYnVja2V0LCB0 ZW07CiAKICAgaWYgKCFWRUNUT1JQIChvYmFycmF5KQpAQCAtMzkwMSw3ICszOTAyLDcgQEAK IG1hcF9vYmFycmF5IChMaXNwX09iamVjdCBvYmFycmF5LCB2b2lkICgqZm4pIChMaXNwX09i amVjdCwgTGlzcF9PYmplY3QpLCBMaXNwX09iamVjdCBhcmcpCiB7CiAgIHB0cmRpZmZfdCBp OwotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOworICBMaXNwX09iamVjdCB0YWlsOwog ICBDSEVDS19WRUNUT1IgKG9iYXJyYXkpOwogICBmb3IgKGkgPSBBU0laRSAob2JhcnJheSkg LSAxOyBpID49IDA7IGktLSkKICAgICB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL21hcmtl ci5jJwotLS0gc3JjL21hcmtlci5jCTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNy Yy9tYXJrZXIuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00MjQsOSArNDI0LDkg QEAKIERFRlVOICgibWFya2VyLWJ1ZmZlciIsIEZtYXJrZXJfYnVmZmVyLCBTbWFya2VyX2J1 ZmZlciwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgYnVmZmVyIHRoYXQg TUFSS0VSIHBvaW50cyBpbnRvLCBvciBuaWwgaWYgbm9uZS4KIFJldHVybnMgbmlsIGlmIE1B UktFUiBwb2ludHMgaW50byBhIGRlYWQgYnVmZmVyLiAgKi8pCi0gIChyZWdpc3RlciBMaXNw X09iamVjdCBtYXJrZXIpCisgIChMaXNwX09iamVjdCBtYXJrZXIpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGJ1ZjsKKyAgTGlzcF9PYmplY3QgYnVmOwogICBDSEVDS19NQVJLRVIg KG1hcmtlcik7CiAgIGlmIChYTUFSS0VSIChtYXJrZXIpLT5idWZmZXIpCiAgICAgewpAQCAt NDYxLDEwICs0NjEsMTAgQEAKIFJldHVybnMgTUFSS0VSLiAgKi8pCiAgIChMaXNwX09iamVj dCBtYXJrZXIsIExpc3BfT2JqZWN0IHBvc2l0aW9uLCBMaXNwX09iamVjdCBidWZmZXIpCiB7 Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBjaGFybm87Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBi eXRlcG9zOwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpiOwotICByZWdpc3RlciBzdHJ1 Y3QgTGlzcF9NYXJrZXIgKm07CisgIHB0cmRpZmZfdCBjaGFybm87CisgIHB0cmRpZmZfdCBi eXRlcG9zOworICBzdHJ1Y3QgYnVmZmVyICpiOworICBzdHJ1Y3QgTGlzcF9NYXJrZXIgKm07 CiAKICAgQ0hFQ0tfTUFSS0VSIChtYXJrZXIpOwogICBtID0gWE1BUktFUiAobWFya2VyKTsK QEAgLTUzMCwxMCArNTMwLDEwIEBACiBMaXNwX09iamVjdAogc2V0X21hcmtlcl9yZXN0cmlj dGVkIChMaXNwX09iamVjdCBtYXJrZXIsIExpc3BfT2JqZWN0IHBvcywgTGlzcF9PYmplY3Qg YnVmZmVyKQogewotICByZWdpc3RlciBwdHJkaWZmX3QgY2hhcm5vOwotICByZWdpc3RlciBw dHJkaWZmX3QgYnl0ZXBvczsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYjsKLSAgcmVn aXN0ZXIgc3RydWN0IExpc3BfTWFya2VyICptOworICBwdHJkaWZmX3QgY2hhcm5vOworICBw dHJkaWZmX3QgYnl0ZXBvczsKKyAgc3RydWN0IGJ1ZmZlciAqYjsKKyAgc3RydWN0IExpc3Bf TWFya2VyICptOwogCiAgIENIRUNLX01BUktFUiAobWFya2VyKTsKICAgbSA9IFhNQVJLRVIg KG1hcmtlcik7CkBAIC01OTksOCArNTk5LDggQEAKIExpc3BfT2JqZWN0CiBzZXRfbWFya2Vy X2JvdGggKExpc3BfT2JqZWN0IG1hcmtlciwgTGlzcF9PYmplY3QgYnVmZmVyLCBwdHJkaWZm X3QgY2hhcnBvcywgcHRyZGlmZl90IGJ5dGVwb3MpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBi dWZmZXIgKmI7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX01hcmtlciAqbTsKKyAgc3RydWN0 IGJ1ZmZlciAqYjsKKyAgc3RydWN0IExpc3BfTWFya2VyICptOwogCiAgIENIRUNLX01BUktF UiAobWFya2VyKTsKICAgbSA9IFhNQVJLRVIgKG1hcmtlcik7CkBAIC02NDcsOCArNjQ3LDgg QEAKIExpc3BfT2JqZWN0CiBzZXRfbWFya2VyX3Jlc3RyaWN0ZWRfYm90aCAoTGlzcF9PYmpl Y3QgbWFya2VyLCBMaXNwX09iamVjdCBidWZmZXIsIHB0cmRpZmZfdCBjaGFycG9zLCBwdHJk aWZmX3QgYnl0ZXBvcykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYjsKLSAgcmVn aXN0ZXIgc3RydWN0IExpc3BfTWFya2VyICptOworICBzdHJ1Y3QgYnVmZmVyICpiOworICBz dHJ1Y3QgTGlzcF9NYXJrZXIgKm07CiAKICAgQ0hFQ0tfTUFSS0VSIChtYXJrZXIpOwogICBt ID0gWE1BUktFUiAobWFya2VyKTsKQEAgLTcwNiwxMCArNzA2LDEwIEBACiAgICBpbmNsdWRp bmcgdGhvc2UgaW4gY2hhaW4gZmllbGRzIG9mIG1hcmtlcnMuICAqLwogCiB2b2lkCi11bmNo YWluX21hcmtlciAocmVnaXN0ZXIgc3RydWN0IExpc3BfTWFya2VyICptYXJrZXIpCit1bmNo YWluX21hcmtlciAoc3RydWN0IExpc3BfTWFya2VyICptYXJrZXIpCiB7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBMaXNwX01hcmtlciAqdGFpbCwgKnByZXYsICpuZXh0OwotICByZWdpc3RlciBz dHJ1Y3QgYnVmZmVyICpiOworICBzdHJ1Y3QgTGlzcF9NYXJrZXIgKnRhaWwsICpwcmV2LCAq bmV4dDsKKyAgc3RydWN0IGJ1ZmZlciAqYjsKIAogICBiID0gbWFya2VyLT5idWZmZXI7CiAg IGlmIChiID09IDApCkBAIC03NTgsOCArNzU4LDggQEAKIHB0cmRpZmZfdAogbWFya2VyX3Bv c2l0aW9uIChMaXNwX09iamVjdCBtYXJrZXIpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNw X01hcmtlciAqbSA9IFhNQVJLRVIgKG1hcmtlcik7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBidWZm ZXIgKmJ1ZiA9IG0tPmJ1ZmZlcjsKKyAgc3RydWN0IExpc3BfTWFya2VyICptID0gWE1BUktF UiAobWFya2VyKTsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmID0gbS0+YnVmZmVyOwogCiAgIGlm ICghYnVmKQogICAgIGVycm9yICgiTWFya2VyIGRvZXMgbm90IHBvaW50IGFueXdoZXJlIik7 CkBAIC03NzIsOSArNzcyLDkgQEAKIHB0cmRpZmZfdAogbWFya2VyX2J5dGVfcG9zaXRpb24g KExpc3BfT2JqZWN0IG1hcmtlcikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfTWFya2Vy ICptID0gWE1BUktFUiAobWFya2VyKTsKLSAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYnVm ID0gbS0+YnVmZmVyOwotICByZWdpc3RlciBwdHJkaWZmX3QgaSA9IG0tPmJ5dGVwb3M7Cisg IHN0cnVjdCBMaXNwX01hcmtlciAqbSA9IFhNQVJLRVIgKG1hcmtlcik7CisgIHN0cnVjdCBi dWZmZXIgKmJ1ZiA9IG0tPmJ1ZmZlcjsKKyAgcHRyZGlmZl90IGkgPSBtLT5ieXRlcG9zOwog CiAgIGlmICghYnVmKQogICAgIGVycm9yICgiTWFya2VyIGRvZXMgbm90IHBvaW50IGFueXdo ZXJlIik7CkBAIC03OTIsOSArNzkyLDkgQEAKIElmIE1BUktFUiBpcyBub3Qgc3BlY2lmaWVk LCB0aGUgbmV3IG1hcmtlciBkb2VzIG5vdCBwb2ludCBhbnl3aGVyZS4KIFRoZSBvcHRpb25h bCBhcmd1bWVudCBUWVBFIHNwZWNpZmllcyB0aGUgaW5zZXJ0aW9uIHR5cGUgb2YgdGhlIG5l dyBtYXJrZXI7CiBzZWUgYG1hcmtlci1pbnNlcnRpb24tdHlwZScuICAqLykKLSAgKHJlZ2lz dGVyIExpc3BfT2JqZWN0IG1hcmtlciwgTGlzcF9PYmplY3QgdHlwZSkKKyAgKExpc3BfT2Jq ZWN0IG1hcmtlciwgTGlzcF9PYmplY3QgdHlwZSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgbmV3OworICBMaXNwX09iamVjdCBuZXc7CiAKICAgaWYgKCFOSUxQIChtYXJrZXIpKQog ICBDSEVDS19UWVBFIChJTlRFR0VSUCAobWFya2VyKSB8fCBNQVJLRVJQIChtYXJrZXIpLCBR aW50ZWdlcl9vcl9tYXJrZXJfcCwgbWFya2VyKTsKQEAgLTgxMCw3ICs4MTAsNyBAQAogICAg ICAgIFNtYXJrZXJfaW5zZXJ0aW9uX3R5cGUsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBS ZXR1cm4gaW5zZXJ0aW9uIHR5cGUgb2YgTUFSS0VSOiB0IGlmIGl0IHN0YXlzIGFmdGVyIGlu c2VydGVkIHRleHQuCiBUaGUgdmFsdWUgbmlsIG1lYW5zIHRoZSBtYXJrZXIgc3RheXMgYmVm b3JlIHRleHQgaW5zZXJ0ZWQgdGhlcmUuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IG1hcmtlcikKKyAgKExpc3BfT2JqZWN0IG1hcmtlcikKIHsKICAgQ0hFQ0tfTUFSS0VSICht YXJrZXIpOwogICByZXR1cm4gWE1BUktFUiAobWFya2VyKS0+aW5zZXJ0aW9uX3R5cGUgPyBR dCA6IFFuaWw7CkBAIC04MzQsOCArODM0LDggQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0 IGlmIHRoZXJlIGFyZSBtYXJrZXJzIHBvaW50aW5nIGF0IFBPU0lUSU9OIGluIHRoZSBjdXJy ZW50IGJ1ZmZlci4gICovKQogICAoTGlzcF9PYmplY3QgcG9zaXRpb24pCiB7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX01hcmtlciAqdGFpbDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGNo YXJubzsKKyAgc3RydWN0IExpc3BfTWFya2VyICp0YWlsOworICBwdHJkaWZmX3QgY2hhcm5v OwogCiAgIGNoYXJubyA9IGNsaXBfdG9fYm91bmRzIChCRUcsIFhJTlQgKHBvc2l0aW9uKSwg Wik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbWluaWJ1Zi5jJwotLS0gc3JjL21pbmli dWYuYwkyMDEyLTA2LTAyIDE3OjAzOjQ5ICswMDAwCisrKyBzcmMvbWluaWJ1Zi5jCTIwMTIt MDYtMDMgMDU6NTU6MjMgKzAwMDAKQEAgLTE5MDIsMTYgKzE5MDIsMTYgQEAKIAogVW5saWtl IGBhc3NvYycsIEtFWSBjYW4gYWxzbyBtYXRjaCBhbiBlbnRyeSBpbiBMSVNUIGNvbnNpc3Rp bmcgb2YgYQogc2luZ2xlIHN0cmluZywgcmF0aGVyIHRoYW4gYSBjb25zIGNlbGwgd2hvc2Ug Y2FyIGlzIGEgc3RyaW5nLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBrZXksIExp c3BfT2JqZWN0IGxpc3QsIExpc3BfT2JqZWN0IGNhc2VfZm9sZCkKKyAgKExpc3BfT2JqZWN0 IGtleSwgTGlzcF9PYmplY3QgbGlzdCwgTGlzcF9PYmplY3QgY2FzZV9mb2xkKQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCB0YWlsOworICBMaXNwX09iamVjdCB0YWlsOwogCiAgIGlm IChTWU1CT0xQIChrZXkpKQogICAgIGtleSA9IEZzeW1ib2xfbmFtZSAoa2V5KTsKIAogICBm b3IgKHRhaWwgPSBsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAg ICB7Ci0gICAgICByZWdpc3RlciBMaXNwX09iamVjdCBlbHQsIHRlbSwgdGhpc2NhcjsKKyAg ICAgIExpc3BfT2JqZWN0IGVsdCwgdGVtLCB0aGlzY2FyOwogICAgICAgZWx0ID0gWENBUiAo dGFpbCk7CiAgICAgICB0aGlzY2FyID0gQ09OU1AgKGVsdCkgPyBYQ0FSIChlbHQpIDogZWx0 OwogICAgICAgaWYgKFNZTUJPTFAgKHRoaXNjYXIpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3Ny Yy9wcmludC5jJwotLS0gc3JjL3ByaW50LmMJMjAxMi0wNS0yNiAxNTo1MjoyNyArMDAwMAor Kysgc3JjL3ByaW50LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtNDg4LDggKzQ4 OCw4IEBACiB0ZW1wX291dHB1dF9idWZmZXJfc2V0dXAgKGNvbnN0IGNoYXIgKmJ1Zm5hbWUp CiB7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7Ci0gIHJlZ2lzdGVy IHN0cnVjdCBidWZmZXIgKm9sZCA9IGN1cnJlbnRfYnVmZmVyOwotICByZWdpc3RlciBMaXNw X09iamVjdCBidWY7CisgIHN0cnVjdCBidWZmZXIgKm9sZCA9IGN1cnJlbnRfYnVmZmVyOwor ICBMaXNwX09iamVjdCBidWY7CiAKICAgcmVjb3JkX3Vud2luZF9wcm90ZWN0IChzZXRfYnVm ZmVyX2lmX2xpdmUsIEZjdXJyZW50X2J1ZmZlciAoKSk7CiAKQEAgLTUxNywxMCArNTE3LDEx IEBACiAgIHNwZWNiaW5kIChRc3RhbmRhcmRfb3V0cHV0LCBidWYpOwogfQogDAotc3RhdGlj IHZvaWQgcHJpbnQgKExpc3BfT2JqZWN0IG9iaiwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJp bnRjaGFyZnVuLCBpbnQgZXNjYXBlZmxhZyk7CitzdGF0aWMgdm9pZCBwcmludCAoTGlzcF9P YmplY3Qgb2JqLCBMaXNwX09iamVjdCBwcmludGNoYXJmdW4sIGludCBlc2NhcGVmbGFnKTsK IHN0YXRpYyB2b2lkIHByaW50X3ByZXByb2Nlc3MgKExpc3BfT2JqZWN0IG9iaik7CiBzdGF0 aWMgdm9pZCBwcmludF9wcmVwcm9jZXNzX3N0cmluZyAoSU5URVJWQUwgaW50ZXJ2YWwsIExp c3BfT2JqZWN0IGFyZyk7Ci1zdGF0aWMgdm9pZCBwcmludF9vYmplY3QgKExpc3BfT2JqZWN0 IG9iaiwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJpbnRjaGFyZnVuLCBpbnQgZXNjYXBlZmxh Zyk7CitzdGF0aWMgdm9pZCBwcmludF9vYmplY3QgKExpc3BfT2JqZWN0IG9iaiwgTGlzcF9P YmplY3QgcHJpbnRjaGFyZnVuLAorCQkJICBpbnQgZXNjYXBlZmxhZyk7CiAKIERFRlVOICgi dGVycHJpIiwgRnRlcnByaSwgU3RlcnByaSwgMCwgMSwgMCwKICAgICAgICBkb2M6IC8qIE91 dHB1dCBhIG5ld2xpbmUgdG8gc3RyZWFtIFBSSU5UQ0hBUkZVTi4KQEAgLTkxMiw3ICs5MTMs NyBAQAogICAgIGZvciAoOyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSwgc2Vw ID0gIiwgIikKICAgICAgIHsKIAlMaXNwX09iamVjdCBvYmo7Ci0JCisKIAlpZiAoc2VwKQog CSAgd3JpdGVfc3RyaW5nXzEgKHNlcCwgMiwgc3RyZWFtKTsKIAlvYmogPSBYQ0FSICh0YWls KTsKQEAgLTEwNjEsNyArMTA2Miw3IEBACiAKIAwKIHN0YXRpYyB2b2lkCi1wcmludCAoTGlz cF9PYmplY3Qgb2JqLCByZWdpc3RlciBMaXNwX09iamVjdCBwcmludGNoYXJmdW4sIGludCBl c2NhcGVmbGFnKQorcHJpbnQgKExpc3BfT2JqZWN0IG9iaiwgTGlzcF9PYmplY3QgcHJpbnRj aGFyZnVuLCBpbnQgZXNjYXBlZmxhZykKIHsKICAgbmV3X2JhY2txdW90ZV9vdXRwdXQgPSAw OwogCkBAIC0xMzExLDcgKzEzMTIsNyBAQAogfQogCiBzdGF0aWMgdm9pZAotcHJpbnRfb2Jq ZWN0IChMaXNwX09iamVjdCBvYmosIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByaW50Y2hhcmZ1 biwgaW50IGVzY2FwZWZsYWcpCitwcmludF9vYmplY3QgKExpc3BfT2JqZWN0IG9iaiwgTGlz cF9PYmplY3QgcHJpbnRjaGFyZnVuLCBpbnQgZXNjYXBlZmxhZykKIHsKICAgY2hhciBidWZb bWF4IChzaXplb2YgImZyb20uLnRvLi5pbiAiICsgMiAqIElOVF9TVFJMRU5fQk9VTkQgKEVN QUNTX0lOVCksCiAJCW1heCAoc2l6ZW9mICIgLiAjIiArIElOVF9TVFJMRU5fQk9VTkQgKHBy aW50bWF4X3QpLApAQCAtMTM4Niw3ICsxMzg3LDcgQEAKIAlwcmludF9zdHJpbmcgKG9iaiwg cHJpbnRjaGFyZnVuKTsKICAgICAgIGVsc2UKIAl7Ci0JICByZWdpc3RlciBwdHJkaWZmX3Qg aV9ieXRlOworCSAgcHRyZGlmZl90IGlfYnl0ZTsKIAkgIHN0cnVjdCBnY3BybyBnY3BybzE7 CiAJICB1bnNpZ25lZCBjaGFyICpzdHI7CiAJICBwdHJkaWZmX3Qgc2l6ZV9ieXRlOwpAQCAt MTUwMywxMCArMTUwNCwxMCBAQAogCiAgICAgY2FzZSBMaXNwX1N5bWJvbDoKICAgICAgIHsK LQlyZWdpc3RlciBpbnQgY29uZnVzaW5nOwotCXJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnAg PSBTREFUQSAoU1lNQk9MX05BTUUgKG9iaikpOwotCXJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIg KmVuZCA9IHAgKyBTQllURVMgKFNZTUJPTF9OQU1FIChvYmopKTsKLQlyZWdpc3RlciBpbnQg YzsKKwlpbnQgY29uZnVzaW5nOworCXVuc2lnbmVkIGNoYXIgKnAgPSBTREFUQSAoU1lNQk9M X05BTUUgKG9iaikpOworCXVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBTQllURVMgKFNZTUJP TF9OQU1FIChvYmopKTsKKwlpbnQgYzsKIAlwdHJkaWZmX3QgaSwgaV9ieXRlOwogCXB0cmRp ZmZfdCBzaXplX2J5dGU7CiAJTGlzcF9PYmplY3QgbmFtZTsKQEAgLTE2OTcsNyArMTY5OCw3 IEBACiAgICAgICBlbHNlIGlmIChCT09MX1ZFQ1RPUl9QIChvYmopKQogCXsKIAkgIHB0cmRp ZmZfdCBpOwotCSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciBjOworCSAgdW5zaWduZWQgY2hh ciBjOwogCSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKIAkgIHB0cmRpZmZfdCBzaXplX2luX2No YXJzCiAJICAgID0gKChYQk9PTF9WRUNUT1IgKG9iaiktPnNpemUgKyBCT09MX1ZFQ1RPUl9C SVRTX1BFUl9DSEFSIC0gMSkKQEAgLTE5NDgsOCArMTk0OSw4IEBACiAKIAkgIFBSSU5UQ0hB UiAoJ1snKTsKIAkgIHsKLQkgICAgcmVnaXN0ZXIgaW50IGk7Ci0JICAgIHJlZ2lzdGVyIExp c3BfT2JqZWN0IHRlbTsKKwkgICAgaW50IGk7CisJICAgIExpc3BfT2JqZWN0IHRlbTsKIAkg ICAgcHRyZGlmZl90IHJlYWxfc2l6ZSA9IHNpemU7CiAKIAkgICAgLyogRG9uJ3QgcHJpbnQg bW9yZSBlbGVtZW50cyB0aGFuIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4gICovCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL3Byb2Nlc3MuYycKLS0tIHNyYy9wcm9jZXNzLmMJMjAxMi0wNC0y MiAwNDo0ODoxMyArMDAwMAorKysgc3JjL3Byb2Nlc3MuYwkyMDEyLTA2LTAzIDA1OjUzOjM4 ICswMDAwCkBAIC0yNjcsNyArMjY3LDcgQEAKICNkZWZpbmUgUE9MTF9GT1JfSU5QVVQKICNl bmRpZgogCi1zdGF0aWMgTGlzcF9PYmplY3QgZ2V0X3Byb2Nlc3MgKHJlZ2lzdGVyIExpc3Bf T2JqZWN0IG5hbWUpOworc3RhdGljIExpc3BfT2JqZWN0IGdldF9wcm9jZXNzIChMaXNwX09i amVjdCBuYW1lKTsKIHN0YXRpYyB2b2lkIGV4ZWNfc2VudGluZWwgKExpc3BfT2JqZWN0IHBy b2MsIExpc3BfT2JqZWN0IHJlYXNvbik7CiAKIC8qIE1hc2sgb2YgYml0cyBpbmRpY2F0aW5n IHRoZSBkZXNjcmlwdG9ycyB0aGF0IHdlIHdhaXQgZm9yIGlucHV0IG9uLiAgKi8KQEAgLTU1 Miw3ICs1NTIsNyBAQAogI2lmZGVmIFBUWV9JVEVSQVRJT04KICAgUFRZX0lURVJBVElPTgog I2Vsc2UKLSAgcmVnaXN0ZXIgaW50IGMsIGk7CisgIGludCBjLCBpOwogICBmb3IgKGMgPSBG SVJTVF9QVFlfTEVUVEVSOyBjIDw9ICd6JzsgYysrKQogICAgIGZvciAoaSA9IDA7IGkgPCAx NjsgaSsrKQogI2VuZGlmCkBAIC02MjEsOCArNjIxLDggQEAKIHN0YXRpYyBMaXNwX09iamVj dAogbWFrZV9wcm9jZXNzIChMaXNwX09iamVjdCBuYW1lKQogewotICByZWdpc3RlciBMaXNw X09iamVjdCB2YWwsIHRlbSwgbmFtZTE7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBMaXNwX1Byb2Nl c3MgKnA7CisgIExpc3BfT2JqZWN0IHZhbCwgdGVtLCBuYW1lMTsKKyAgc3RydWN0IExpc3Bf UHJvY2VzcyAqcDsKICAgY2hhciBzdWZmaXhbc2l6ZW9mICI8PiIgKyBJTlRfU1RSTEVOX0JP VU5EIChwcmludG1heF90KV07CiAgIHByaW50bWF4X3QgaTsKIApAQCAtNjc1LDkgKzY3NSw5 IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1yZW1vdmVfcHJvY2VzcyAocmVnaXN0ZXIgTGlzcF9P YmplY3QgcHJvYykKK3JlbW92ZV9wcm9jZXNzIChMaXNwX09iamVjdCBwcm9jKQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCBwYWlyOworICBMaXNwX09iamVjdCBwYWlyOwogCiAgIHBh aXIgPSBGcmFzc3EgKHByb2MsIFZwcm9jZXNzX2FsaXN0KTsKICAgVnByb2Nlc3NfYWxpc3Qg PSBGZGVscSAocGFpciwgVnByb2Nlc3NfYWxpc3QpOwpAQCAtNjk1LDcgKzY5NSw3IEBACiAK IERFRlVOICgiZ2V0LXByb2Nlc3MiLCBGZ2V0X3Byb2Nlc3MsIFNnZXRfcHJvY2VzcywgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgcHJvY2VzcyBuYW1lZCBOQU1FLCBv ciBuaWwgaWYgdGhlcmUgaXMgbm9uZS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qg bmFtZSkKKyAgKExpc3BfT2JqZWN0IG5hbWUpCiB7CiAgIGlmIChQUk9DRVNTUCAobmFtZSkp CiAgICAgcmV0dXJuIG5hbWU7CkBAIC03MDksOSArNzA5LDkgQEAKICAgIGN1cnJlbnQgYnVm ZmVyLiAgKi8KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1nZXRfcHJvY2VzcyAocmVnaXN0ZXIg TGlzcF9PYmplY3QgbmFtZSkKK2dldF9wcm9jZXNzIChMaXNwX09iamVjdCBuYW1lKQogewot ICByZWdpc3RlciBMaXNwX09iamVjdCBwcm9jLCBvYmo7CisgIExpc3BfT2JqZWN0IHByb2Ms IG9iajsKICAgaWYgKFNUUklOR1AgKG5hbWUpKQogICAgIHsKICAgICAgIG9iaiA9IEZnZXRf cHJvY2VzcyAobmFtZSk7CkBAIC03NTUsOSArNzU1LDkgQEAKICAgICAgICBkb2M6IC8qIERl bGV0ZSBQUk9DRVNTOiBraWxsIGl0IGFuZCBmb3JnZXQgYWJvdXQgaXQgaW1tZWRpYXRlbHku CiBQUk9DRVNTIG1heSBiZSBhIHByb2Nlc3MsIGEgYnVmZmVyLCB0aGUgbmFtZSBvZiBhIHBy b2Nlc3Mgb3IgYnVmZmVyLCBvcgogbmlsLCBpbmRpY2F0aW5nIHRoZSBjdXJyZW50IGJ1ZmZl cidzIHByb2Nlc3MuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3MpCisg IChMaXNwX09iamVjdCBwcm9jZXNzKQogewotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9Qcm9j ZXNzICpwOworICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOwogCiAgIHByb2Nlc3MgPSBnZXRf cHJvY2VzcyAocHJvY2Vzcyk7CiAgIHAgPSBYUFJPQ0VTUyAocHJvY2Vzcyk7CkBAIC04MjAs MTAgKzgyMCwxMCBAQAogbmlsIC0tIGlmIGFyZyBpcyBhIHByb2Nlc3MgbmFtZSBhbmQgbm8g c3VjaCBwcm9jZXNzIGV4aXN0cy4KIFBST0NFU1MgbWF5IGJlIGEgcHJvY2VzcywgYSBidWZm ZXIsIHRoZSBuYW1lIG9mIGEgcHJvY2Vzcywgb3IKIG5pbCwgaW5kaWNhdGluZyB0aGUgY3Vy cmVudCBidWZmZXIncyBwcm9jZXNzLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBw cm9jZXNzKQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IExpc3BfUHJvY2VzcyAqcDsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3Qgc3RhdHVzOworICBz dHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOworICBMaXNwX09iamVjdCBzdGF0dXM7CiAKICAgaWYg KFNUUklOR1AgKHByb2Nlc3MpKQogICAgIHByb2Nlc3MgPSBGZ2V0X3Byb2Nlc3MgKHByb2Nl c3MpOwpAQCAtODU1LDcgKzg1NSw3IEBACiAgICAgICAgMSwgMSwgMCwKICAgICAgICBkb2M6 IC8qIFJldHVybiB0aGUgZXhpdCBzdGF0dXMgb2YgUFJPQ0VTUyBvciB0aGUgc2lnbmFsIG51 bWJlciB0aGF0IGtpbGxlZCBpdC4KIElmIFBST0NFU1MgaGFzIG5vdCB5ZXQgZXhpdGVkIG9y IGRpZWQsIHJldHVybiAwLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9jZXNz KQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKICAgQ0hFQ0tfUFJPQ0VTUyAocHJvY2Vz cyk7CiAgIGlmIChYUFJPQ0VTUyAocHJvY2VzcyktPnJhd19zdGF0dXNfbmV3KQpAQCAtODY5 LDcgKzg2OSw3IEBACiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHByb2Nlc3MgaWQgb2Yg UFJPQ0VTUy4KIFRoaXMgaXMgdGhlIHBpZCBvZiB0aGUgZXh0ZXJuYWwgcHJvY2VzcyB3aGlj aCBQUk9DRVNTIHVzZXMgb3IgdGFsa3MgdG8uCiBGb3IgYSBuZXR3b3JrIGNvbm5lY3Rpb24s IHRoaXMgdmFsdWUgaXMgbmlsLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9j ZXNzKQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKICAgcGlkX3QgcGlkOwogCkBAIC04 ODIsNyArODgyLDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgbmFtZSBvZiBQUk9D RVNTLCBhcyBhIHN0cmluZy4KIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gaW52 b2tlZCBpbiBQUk9DRVNTLAogcG9zc2libHkgbW9kaWZpZWQgdG8gbWFrZSBpdCB1bmlxdWUg YW1vbmcgcHJvY2VzcyBuYW1lcy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJv Y2VzcykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHBy b2Nlc3MpOwogICByZXR1cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5uYW1lOwpAQCAtODk0LDcg Kzg5NCw3IEBACiBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZ3MgYmVpbmcgdGhlIGFyZ3Vt ZW50cyBnaXZlbiB0byBpdC4KIEZvciBhIG5ldHdvcmsgb3Igc2VyaWFsIHByb2Nlc3MsIHRo aXMgaXMgbmlsIChwcm9jZXNzIGlzIHJ1bm5pbmcpIG9yIHQKIFwocHJvY2VzcyBpcyBzdG9w cGVkKS4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3Bf T2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICByZXR1 cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5jb21tYW5kOwpAQCAtOTA0LDcgKzkwNCw3IEBACiAg ICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIFBST0NFU1Mg dXNlcywgb3IgbmlsIGlmIG5vbmUuCiBUaGlzIGlzIHRoZSB0ZXJtaW5hbCB0aGF0IHRoZSBw cm9jZXNzIGl0c2VsZiByZWFkcyBhbmQgd3JpdGVzIG9uLAogbm90IHRoZSBuYW1lIG9mIHRo ZSBwdHkgdGhhdCBFbWFjcyB1c2VzIHRvIHRhbGsgd2l0aCB0aGF0IHRlcm1pbmFsLiAgKi8p Ci0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9jZXNzKQorICAoTGlzcF9PYmplY3QgcHJv Y2VzcykKIHsKICAgQ0hFQ0tfUFJPQ0VTUyAocHJvY2Vzcyk7CiAgIHJldHVybiBYUFJPQ0VT UyAocHJvY2VzcyktPnR0eV9uYW1lOwpAQCAtOTE0LDcgKzkxNCw3IEBACiAgICAgICAgMiwg MiwgMCwKICAgICAgICBkb2M6IC8qIFNldCBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIFBST0NF U1MgdG8gQlVGRkVSIChhIGJ1ZmZlciwgb3IgbmlsKS4KIFJldHVybiBCVUZGRVIuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGJ1ZmZlcikK KyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGJ1ZmZlcikKIHsKICAgc3Ry dWN0IExpc3BfUHJvY2VzcyAqcDsKIApAQCAtOTMzLDcgKzkzMyw3IEBACiAgICAgICAgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgYnVmZmVyIFBST0NFU1MgaXMgYXNz b2NpYXRlZCB3aXRoLgogT3V0cHV0IGZyb20gUFJPQ0VTUyBpcyBpbnNlcnRlZCBpbiB0aGlz IGJ1ZmZlciB1bmxlc3MgUFJPQ0VTUyBoYXMgYSBmaWx0ZXIuICAqLykKLSAgKHJlZ2lzdGVy IExpc3BfT2JqZWN0IHByb2Nlc3MpCisgIChMaXNwX09iamVjdCBwcm9jZXNzKQogewogICBD SEVDS19QUk9DRVNTIChwcm9jZXNzKTsKICAgcmV0dXJuIFhQUk9DRVNTIChwcm9jZXNzKS0+ YnVmZmVyOwpAQCAtOTQyLDcgKzk0Miw3IEBACiBERUZVTiAoInByb2Nlc3MtbWFyayIsIEZw cm9jZXNzX21hcmssIFNwcm9jZXNzX21hcmssCiAgICAgICAgMSwgMSwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiB0aGUgbWFya2VyIGZvciB0aGUgZW5kIG9mIHRoZSBsYXN0IG91dHB1 dCBmcm9tIFBST0NFU1MuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3Mp CisgIChMaXNwX09iamVjdCBwcm9jZXNzKQogewogICBDSEVDS19QUk9DRVNTIChwcm9jZXNz KTsKICAgcmV0dXJuIFhQUk9DRVNTIChwcm9jZXNzKS0+bWFyazsKQEAgLTk2NCw3ICs5NjQs NyBAQAogLSBpZiBgZGVmYXVsdC1lbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMnIGlzIG5p bCwgaXQgaXMgYSB1bmlieXRlCiAgIHN0cmluZyAodGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5n IHRoZSBkZWNvZGVkIGlucHV0IG11bHRpYnl0ZQogICBzdHJpbmcgdG8gdW5pYnl0ZSB3aXRo IGBzdHJpbmctbWFrZS11bmlieXRlJykuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IHByb2Nlc3MsIExpc3BfT2JqZWN0IGZpbHRlcikKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3Ms IExpc3BfT2JqZWN0IGZpbHRlcikKIHsKICAgc3RydWN0IExpc3BfUHJvY2VzcyAqcDsKIApA QCAtMTAwNiw3ICsxMDA2LDcgQEAKICAgICAgICAxLCAxLCAwLAogICAgICAgIGRvYzogLyog UmV0dXJucyB0aGUgZmlsdGVyIGZ1bmN0aW9uIG9mIFBST0NFU1M7IG5pbCBpZiBub25lLgog U2VlIGBzZXQtcHJvY2Vzcy1maWx0ZXInIGZvciBtb3JlIGluZm8gb24gZmlsdGVyIGZ1bmN0 aW9ucy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3Bf T2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICByZXR1 cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5maWx0ZXI7CkBAIC0xMDE3LDcgKzEwMTcsNyBAQAog ICAgICAgIGRvYzogLyogR2l2ZSBQUk9DRVNTIHRoZSBzZW50aW5lbCBTRU5USU5FTDsgbmls IGZvciBub25lLgogVGhlIHNlbnRpbmVsIGlzIGNhbGxlZCBhcyBhIGZ1bmN0aW9uIHdoZW4g dGhlIHByb2Nlc3MgY2hhbmdlcyBzdGF0ZS4KIEl0IGdldHMgdHdvIGFyZ3VtZW50czogdGhl IHByb2Nlc3MsIGFuZCBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjaGFuZ2UuICAqLykKLSAg KHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IHNlbnRpbmVsKQor ICAoTGlzcF9PYmplY3QgcHJvY2VzcywgTGlzcF9PYmplY3Qgc2VudGluZWwpCiB7CiAgIHN0 cnVjdCBMaXNwX1Byb2Nlc3MgKnA7CiAKQEAgLTEwMzQsNyArMTAzNCw3IEBACiAgICAgICAg MSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgc2VudGluZWwgb2YgUFJPQ0VT UzsgbmlsIGlmIG5vbmUuCiBTZWUgYHNldC1wcm9jZXNzLXNlbnRpbmVsJyBmb3IgbW9yZSBp bmZvIG9uIHNlbnRpbmVscy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2Vz cykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nl c3MpOwogICByZXR1cm4gWFBST0NFU1MgKHByb2Nlc3MpLT5zZW50aW5lbDsKQEAgLTEwNDMs NyArMTA0Myw3IEBACiBERUZVTiAoInNldC1wcm9jZXNzLXdpbmRvdy1zaXplIiwgRnNldF9w cm9jZXNzX3dpbmRvd19zaXplLAogICAgICAgIFNzZXRfcHJvY2Vzc193aW5kb3dfc2l6ZSwg MywgMywgMCwKICAgICAgICBkb2M6IC8qIFRlbGwgUFJPQ0VTUyB0aGF0IGl0IGhhcyBsb2dp Y2FsIHdpbmRvdyBzaXplIEhFSUdIVCBhbmQgV0lEVEguICAqLykKLSAgKHJlZ2lzdGVyIExp c3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGhlaWdodCwgTGlzcF9PYmplY3Qgd2lk dGgpCisgIChMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09iamVjdCBoZWlnaHQsIExpc3Bf T2JqZWN0IHdpZHRoKQogewogICBDSEVDS19QUk9DRVNTIChwcm9jZXNzKTsKICAgQ0hFQ0tf UkFOR0VEX0lOVEVHRVIgKDAsIGhlaWdodCwgSU5UX01BWCk7CkBAIC0xMDc2LDcgKzEwNzYs NyBAQAogZm9yIHRoZSBwcm9jZXNzIHdoaWNoIHdpbGwgcnVuLgogCiBUaGlzIGZ1bmN0aW9u IHJldHVybnMgRkxBRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2Vzcywg TGlzcF9PYmplY3QgZmxhZykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0 IGZsYWcpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICBYUFJPQ0VTUyAocHJv Y2VzcyktPmluaGVyaXRfY29kaW5nX3N5c3RlbV9mbGFnID0gIU5JTFAgKGZsYWcpOwpAQCAt MTA5MCw3ICsxMDkwLDcgQEAKIElmIHRoZSBzZWNvbmQgYXJndW1lbnQgRkxBRyBpcyBub24t bmlsLCBFbWFjcyB3aWxsIHF1ZXJ5IHRoZSB1c2VyIGJlZm9yZQogZXhpdGluZyBvciBraWxs aW5nIGEgYnVmZmVyIGlmIFBST0NFU1MgaXMgcnVubmluZy4gIFRoaXMgZnVuY3Rpb24KIHJl dHVybnMgRkxBRy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcywgTGlz cF9PYmplY3QgZmxhZykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGZs YWcpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICBYUFJPQ0VTUyAocHJvY2Vz cyktPmtpbGxfd2l0aG91dF9xdWVyeSA9IE5JTFAgKGZsYWcpOwpAQCAtMTEwMSw3ICsxMTAx LDcgQEAKICAgICAgICBGcHJvY2Vzc19xdWVyeV9vbl9leGl0X2ZsYWcsIFNwcm9jZXNzX3F1 ZXJ5X29uX2V4aXRfZmxhZywKICAgICAgICAxLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0 dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHF1ZXJ5LW9uLWV4aXQgZmxhZyBmb3IgUFJPQ0VT Uy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3BfT2Jq ZWN0IHByb2Nlc3MpCiB7CiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICByZXR1cm4g KFhQUk9DRVNTIChwcm9jZXNzKS0+a2lsbF93aXRob3V0X3F1ZXJ5ID8gUW5pbCA6IFF0KTsK QEAgLTExMjEsNyArMTEyMSw3IEBACiBjb25uZWN0aW9uIGlzIHJldHVybmVkLCBlbHNlIHRo ZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIGtleXdvcmQgS0VZIGlzCiByZXR1cm5lZC4gIFNl ZSBgbWFrZS1uZXR3b3JrLXByb2Nlc3MnIG9yIGBtYWtlLXNlcmlhbC1wcm9jZXNzJyBmb3Ig YQogbGlzdCBvZiBrZXl3b3Jkcy4gICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJv Y2VzcywgTGlzcF9PYmplY3Qga2V5KQorICAoTGlzcF9PYmplY3QgcHJvY2VzcywgTGlzcF9P YmplY3Qga2V5KQogewogICBMaXNwX09iamVjdCBjb250YWN0OwogCkBAIC0xMTQ5LDcgKzEx NDksNyBAQAogREVGVU4gKCJwcm9jZXNzLXBsaXN0IiwgRnByb2Nlc3NfcGxpc3QsIFNwcm9j ZXNzX3BsaXN0LAogICAgICAgIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhl IHBsaXN0IG9mIFBST0NFU1MuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2Nl c3MpCisgIChMaXNwX09iamVjdCBwcm9jZXNzKQogewogICBDSEVDS19QUk9DRVNTIChwcm9j ZXNzKTsKICAgcmV0dXJuIFhQUk9DRVNTIChwcm9jZXNzKS0+cGxpc3Q7CkBAIC0xMTU4LDcg KzExNTgsNyBAQAogREVGVU4gKCJzZXQtcHJvY2Vzcy1wbGlzdCIsIEZzZXRfcHJvY2Vzc19w bGlzdCwgU3NldF9wcm9jZXNzX3BsaXN0LAogICAgICAgIDIsIDIsIDAsCiAgICAgICAgZG9j OiAvKiBSZXBsYWNlIHRoZSBwbGlzdCBvZiBQUk9DRVNTIHdpdGggUExJU1QuICBSZXR1cm5z IFBMSVNULiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09i amVjdCBwbGlzdCkKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IHBsaXN0 KQogewogICBDSEVDS19QUk9DRVNTIChwcm9jZXNzKTsKICAgQ0hFQ0tfTElTVCAocGxpc3Qp OwpAQCAtMTIwOSw3ICsxMjA5LDcgQEAKIAogICBpZiAoVkVDVE9SUCAoYWRkcmVzcykpICAv KiBBRl9JTkVUIG9yIEFGX0lORVQ2ICovCiAgICAgewotICAgICAgcmVnaXN0ZXIgc3RydWN0 IExpc3BfVmVjdG9yICpwID0gWFZFQ1RPUiAoYWRkcmVzcyk7CisgICAgICBzdHJ1Y3QgTGlz cF9WZWN0b3IgKnAgPSBYVkVDVE9SIChhZGRyZXNzKTsKICAgICAgIHB0cmRpZmZfdCBzaXpl ID0gcC0+aGVhZGVyLnNpemU7CiAgICAgICBMaXNwX09iamVjdCBhcmdzWzEwXTsKICAgICAg IGludCBuYXJncywgaTsKQEAgLTEyOTcsNyArMTI5Nyw3IEBACiAgIChwdHJkaWZmX3QgbmFy Z3MsIExpc3BfT2JqZWN0ICphcmdzKQogewogICBMaXNwX09iamVjdCBidWZmZXIsIG5hbWUs IHByb2dyYW0sIHByb2MsIGN1cnJlbnRfZGlyLCB0ZW07Ci0gIHJlZ2lzdGVyIHVuc2lnbmVk IGNoYXIgKipuZXdfYXJndjsKKyAgdW5zaWduZWQgY2hhciAqKm5ld19hcmd2OwogICBwdHJk aWZmX3QgaTsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIApAQCAt MjAxOCw3ICsyMDE4LDcgQEAKICAgTGlzcF9PYmplY3QgYWRkcmVzczsKICAgaW50IGk7CiAg IHVuc2lnbmVkIGNoYXIgKmNwOwotICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnA7 CisgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcDsKIAogICAvKiBXb3JrYXJvdW5kIGZvciBhIGJ1 ZyBpbiBnZXRzb2NrbmFtZSBvbiBCU0Q6IE5hbWVzIGJvdW5kIHRvCiAgICAgIHNvY2tldHMg aW4gdGhlIFVOSVggZG9tYWluIGFyZSBpbmFjY2Vzc2libGU7IGdldHNvY2tuYW1lIHJldHVy bnMKQEAgLTIwODQsNyArMjA4NCw3IEBACiBzdGF0aWMgaW50CiBnZXRfbGlzcF90b19zb2Nr YWRkcl9zaXplIChMaXNwX09iamVjdCBhZGRyZXNzLCBpbnQgKmZhbWlseXApCiB7Ci0gIHJl Z2lzdGVyIHN0cnVjdCBMaXNwX1ZlY3RvciAqcDsKKyAgc3RydWN0IExpc3BfVmVjdG9yICpw OwogCiAgIGlmIChWRUNUT1JQIChhZGRyZXNzKSkKICAgICB7CkBAIC0yMTMwLDkgKzIxMzAs OSBAQAogc3RhdGljIHZvaWQKIGNvbnZfbGlzcF90b19zb2NrYWRkciAoaW50IGZhbWlseSwg TGlzcF9PYmplY3QgYWRkcmVzcywgc3RydWN0IHNvY2thZGRyICpzYSwgaW50IGxlbikKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfVmVjdG9yICpwOwotICByZWdpc3RlciB1bnNpZ25l ZCBjaGFyICpjcCA9IE5VTEw7Ci0gIHJlZ2lzdGVyIGludCBpOworICBzdHJ1Y3QgTGlzcF9W ZWN0b3IgKnA7CisgIHVuc2lnbmVkIGNoYXIgKmNwID0gTlVMTDsKKyAgaW50IGk7CiAgIEVN QUNTX0lOVCBob3N0cG9ydDsKIAogICBtZW1zZXQgKHNhLCAwLCBsZW4pOwpAQCAtMzc4OCw3 ICszNzg4LDcgQEAKICAgaWYgKGlvY3RsIChzLCBTSU9DR0lGSFdBRERSLCAmcnEpID09IDAp CiAgICAgewogICAgICAgTGlzcF9PYmplY3QgaHdhZGRyID0gRm1ha2VfdmVjdG9yIChtYWtl X251bWJlciAoNiksIFFuaWwpOwotICAgICAgcmVnaXN0ZXIgc3RydWN0IExpc3BfVmVjdG9y ICpwID0gWFZFQ1RPUiAoaHdhZGRyKTsKKyAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcCA9 IFhWRUNUT1IgKGh3YWRkcik7CiAgICAgICBpbnQgbjsKIAogICAgICAgYW55ID0gMTsKQEAg LTM4MDAsNyArMzgwMCw3IEBACiAgIGlmIChnZXRpZmFkZHJzICgmaWZhcCkgIT0gLTEpCiAg ICAgewogICAgICAgTGlzcF9PYmplY3QgaHdhZGRyID0gRm1ha2VfdmVjdG9yIChtYWtlX251 bWJlciAoNiksIFFuaWwpOwotICAgICAgcmVnaXN0ZXIgc3RydWN0IExpc3BfVmVjdG9yICpw ID0gWFZFQ1RPUiAoaHdhZGRyKTsKKyAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcCA9IFhW RUNUT1IgKGh3YWRkcik7CiAgICAgICBzdHJ1Y3QgaWZhZGRycyAqaXQ7CiAKICAgICAgIGZv ciAoaXQgPSBpZmFwOyBpdCAhPSBOVUxMOyBpdCA9IGl0LT5pZmFfbmV4dCkKQEAgLTM4NzYs OCArMzg3Niw4IEBACiBzdGF0aWMgdm9pZAogZGVhY3RpdmF0ZV9wcm9jZXNzIChMaXNwX09i amVjdCBwcm9jKQogewotICByZWdpc3RlciBpbnQgaW5jaGFubmVsLCBvdXRjaGFubmVsOwot ICByZWdpc3RlciBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwID0gWFBST0NFU1MgKHByb2MpOwor ICBpbnQgaW5jaGFubmVsLCBvdXRjaGFubmVsOworICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpw ID0gWFBST0NFU1MgKHByb2MpOwogCiAjaWZkZWYgSEFWRV9HTlVUTFMKICAgLyogRGVsZXRl IEdudVRMUyBzdHJ1Y3R1cmVzIGluIFBST0MsIGlmIGFueS4gICovCkBAIC0zOTU4LDcgKzM5 NTgsOCBAQAogZnJvbSBQUk9DRVNTLCBzdXNwZW5kaW5nIHJlYWRpbmcgb3V0cHV0IGZyb20g b3RoZXIgcHJvY2Vzc2VzLgogSWYgSlVTVC1USElTLU9ORSBpcyBhbiBpbnRlZ2VyLCBkb24n dCBydW4gYW55IHRpbWVycyBlaXRoZXIuCiBSZXR1cm4gbm9uLW5pbCBpZiB3ZSByZWNlaXZl ZCBhbnkgb3V0cHV0IGJlZm9yZSB0aGUgdGltZW91dCBleHBpcmVkLiAgKi8pCi0gIChyZWdp c3RlciBMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09iamVjdCBzZWNvbmRzLCBMaXNwX09i amVjdCBtaWxsaXNlYywgTGlzcF9PYmplY3QganVzdF90aGlzX29uZSkKKyAgKExpc3BfT2Jq ZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IHNlY29uZHMsIExpc3BfT2JqZWN0IG1pbGxpc2Vj LAorICAgTGlzcF9PYmplY3QganVzdF90aGlzX29uZSkKIHsKICAgaW50IHNlY3MgPSAtMSwg dXNlY3MgPSAwOwogCkBAIC00Mjg5LDcgKzQyOTAsNyBAQAogCQkJICAgICBMaXNwX09iamVj dCB3YWl0X2Zvcl9jZWxsLAogCQkJICAgICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICp3YWl0X3By b2MsIGludCBqdXN0X3dhaXRfcHJvYykKIHsKLSAgcmVnaXN0ZXIgaW50IGNoYW5uZWwsIG5m ZHM7CisgIGludCBjaGFubmVsLCBuZmRzOwogICBTRUxFQ1RfVFlQRSBBdmFpbGFibGU7CiAg IFNFTEVDVF9UWVBFIFdyaXRlb2s7CiAgIGludCBjaGVja193cml0ZTsKQEAgLTUwMzQsMTMg KzUwMzUsMTMgQEAKICAgIGZvciBkZWNvZGluZy4gICovCiAKIHN0YXRpYyBpbnQKLXJlYWRf cHJvY2Vzc19vdXRwdXQgKExpc3BfT2JqZWN0IHByb2MsIHJlZ2lzdGVyIGludCBjaGFubmVs KQorcmVhZF9wcm9jZXNzX291dHB1dCAoTGlzcF9PYmplY3QgcHJvYywgaW50IGNoYW5uZWwp CiB7Ci0gIHJlZ2lzdGVyIHNzaXplX3QgbmJ5dGVzOworICBzc2l6ZV90IG5ieXRlczsKICAg Y2hhciAqY2hhcnM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG91dHN0cmVhbTsKLSAgcmVn aXN0ZXIgc3RydWN0IExpc3BfUHJvY2VzcyAqcCA9IFhQUk9DRVNTIChwcm9jKTsKLSAgcmVn aXN0ZXIgcHRyZGlmZl90IG9wb2ludDsKKyAgTGlzcF9PYmplY3Qgb3V0c3RyZWFtOworICBz dHJ1Y3QgTGlzcF9Qcm9jZXNzICpwID0gWFBST0NFU1MgKHByb2MpOworICBwdHJkaWZmX3Qg b3BvaW50OwogICBzdHJ1Y3QgY29kaW5nX3N5c3RlbSAqY29kaW5nID0gcHJvY19kZWNvZGVf Y29kaW5nX3N5c3RlbVtjaGFubmVsXTsKICAgaW50IGNhcnJ5b3ZlciA9IHAtPmRlY29kaW5n X2NhcnJ5b3ZlcjsKICAgaW50IHJlYWRtYXggPSA0MDk2OwpAQCAtNTc2MSw3ICs1NzYyLDcg QEAKIAkJICAgICBpbnQgbm9tc2cpCiB7CiAgIExpc3BfT2JqZWN0IHByb2M7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnA7CisgIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnA7 CiAgIHBpZF90IGdpZDsKICAgaW50IG5vX3BncnAgPSAwOwogCkBAIC02NDI4LDcgKzY0Mjks NyBAQAogZXhlY19zZW50aW5lbCAoTGlzcF9PYmplY3QgcHJvYywgTGlzcF9PYmplY3QgcmVh c29uKQogewogICBMaXNwX09iamVjdCBzZW50aW5lbCwgb2RlYWN0aXZhdGU7Ci0gIHJlZ2lz dGVyIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnAgPSBYUFJPQ0VTUyAocHJvYyk7CisgIHN0cnVj dCBMaXNwX1Byb2Nlc3MgKnAgPSBYUFJPQ0VTUyAocHJvYyk7CiAgIHB0cmRpZmZfdCBjb3Vu dCA9IFNQRUNQRExfSU5ERVggKCk7CiAgIGludCBvdXRlcl9ydW5uaW5nX2FzeW5jaF9jb2Rl ID0gcnVubmluZ19hc3luY2hfY29kZTsKICAgaW50IHdhaXRpbmcgPSB3YWl0aW5nX2Zvcl91 c2VyX2lucHV0X3A7CkBAIC02NTE1LDcgKzY1MTYsNyBAQAogc3RhdGljIHZvaWQKIHN0YXR1 c19ub3RpZnkgKHN0cnVjdCBMaXNwX1Byb2Nlc3MgKmRlbGV0aW5nX3Byb2Nlc3MpCiB7Ci0g IHJlZ2lzdGVyIExpc3BfT2JqZWN0IHByb2MsIGJ1ZmZlcjsKKyAgTGlzcF9PYmplY3QgcHJv YywgYnVmZmVyOwogICBMaXNwX09iamVjdCB0YWlsLCBtc2c7CiAgIHN0cnVjdCBnY3BybyBn Y3BybzEsIGdjcHJvMjsKIApAQCAtNjUzNCw3ICs2NTM1LDcgQEAKICAgZm9yICh0YWlsID0g VnByb2Nlc3NfYWxpc3Q7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQogICAg IHsKICAgICAgIExpc3BfT2JqZWN0IHN5bWJvbDsKLSAgICAgIHJlZ2lzdGVyIHN0cnVjdCBM aXNwX1Byb2Nlc3MgKnA7CisgICAgICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOwogCiAgICAg ICBwcm9jID0gRmNkciAoWENBUiAodGFpbCkpOwogICAgICAgcCA9IFhQUk9DRVNTIChwcm9j KTsKQEAgLTY2NDAsOSArNjY0MSw5IEBACiAgICAgICAgZG9jOiAvKiBTZXQgY29kaW5nIHN5 c3RlbXMgb2YgUFJPQ0VTUyB0byBERUNPRElORyBhbmQgRU5DT0RJTkcuCiBERUNPRElORyB3 aWxsIGJlIHVzZWQgdG8gZGVjb2RlIHN1YnByb2Nlc3Mgb3V0cHV0IGFuZCBFTkNPRElORyB0 bwogZW5jb2RlIHN1YnByb2Nlc3MgaW5wdXQuICAqLykKLSAgKHJlZ2lzdGVyIExpc3BfT2Jq ZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGRlY29kaW5nLCBMaXNwX09iamVjdCBlbmNvZGlu ZykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MsIExpc3BfT2JqZWN0IGRlY29kaW5nLCBMaXNw X09iamVjdCBlbmNvZGluZykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfUHJvY2VzcyAq cDsKKyAgc3RydWN0IExpc3BfUHJvY2VzcyAqcDsKIAogICBDSEVDS19QUk9DRVNTIChwcm9j ZXNzKTsKICAgcCA9IFhQUk9DRVNTIChwcm9jZXNzKTsKQEAgLTY2NjMsNyArNjY2NCw3IEBA CiBERUZVTiAoInByb2Nlc3MtY29kaW5nLXN5c3RlbSIsCiAgICAgICAgRnByb2Nlc3NfY29k aW5nX3N5c3RlbSwgU3Byb2Nlc3NfY29kaW5nX3N5c3RlbSwgMSwgMSwgMCwKICAgICAgICBk b2M6IC8qIFJldHVybiBhIGNvbnMgb2YgY29kaW5nIHN5c3RlbXMgZm9yIGRlY29kaW5nIGFu ZCBlbmNvZGluZyBvZiBQUk9DRVNTLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBw cm9jZXNzKQorICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKICAgQ0hFQ0tfUFJPQ0VTUyAo cHJvY2Vzcyk7CiAgIHJldHVybiBGY29ucyAoWFBST0NFU1MgKHByb2Nlc3MpLT5kZWNvZGVf Y29kaW5nX3N5c3RlbSwKQEAgLTY2NzksNyArNjY4MCw3IEBACiBzdXBwcmVzc2VkLiAgKi8p CiAgIChMaXNwX09iamVjdCBwcm9jZXNzLCBMaXNwX09iamVjdCBmbGFnKQogewotICByZWdp c3RlciBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwOworICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpw OwogCiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwogICBwID0gWFBST0NFU1MgKHByb2Nl c3MpOwpAQCAtNjY5NSw3ICs2Njk2LDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0IGlm IGEgbXVsdGlieXRlIHN0cmluZyBpcyBnaXZlbiB0byBQUk9DRVNTJ3MgZmlsdGVyLiovKQog ICAoTGlzcF9PYmplY3QgcHJvY2VzcykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IExpc3BfUHJv Y2VzcyAqcDsKKyAgc3RydWN0IExpc3BfUHJvY2VzcyAqcDsKICAgc3RydWN0IGNvZGluZ19z eXN0ZW0gKmNvZGluZzsKIAogICBDSEVDS19QUk9DRVNTIChwcm9jZXNzKTsKQEAgLTY3Nzgs NyArNjc3OSw3IEBACiAJCQkgICAgIExpc3BfT2JqZWN0IHdhaXRfZm9yX2NlbGwsCiAJCQkg ICAgIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKndhaXRfcHJvYywgaW50IGp1c3Rfd2FpdF9wcm9j KQogewotICByZWdpc3RlciBpbnQgbmZkczsKKyAgaW50IG5mZHM7CiAgIEVNQUNTX1RJTUUg ZW5kX3RpbWUsIHRpbWVvdXQ7CiAgIFNFTEVDVF9UWVBFIHdhaXRjaGFubmVsczsKICAgaW50 IHhlcnJubzsKQEAgLTcwNjQsMTAgKzcwNjUsMTAgQEAKIERFRlVOICgiZ2V0LWJ1ZmZlci1w cm9jZXNzIiwgRmdldF9idWZmZXJfcHJvY2VzcywgU2dldF9idWZmZXJfcHJvY2VzcywgMSwg MSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgKG9yIGEpIHByb2Nlc3MgYXNzb2Np YXRlZCB3aXRoIEJVRkZFUi4KIEJVRkZFUiBtYXkgYmUgYSBidWZmZXIgb3IgdGhlIG5hbWUg b2Ygb25lLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBidWZmZXIpCisgIChMaXNw X09iamVjdCBidWZmZXIpCiB7CiAjaWZkZWYgc3VicHJvY2Vzc2VzCi0gIHJlZ2lzdGVyIExp c3BfT2JqZWN0IGJ1ZiwgdGFpbCwgcHJvYzsKKyAgTGlzcF9PYmplY3QgYnVmLCB0YWlsLCBw cm9jOwogCiAgIGlmIChOSUxQIChidWZmZXIpKSByZXR1cm4gUW5pbDsKICAgYnVmID0gRmdl dF9idWZmZXIgKGJ1ZmZlcik7CkBAIC03MDkwLDcgKzcwOTEsNyBAQAogSWYgdGhpcyBmbGFn IGlzIHQsIGBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtJyBvZiB0aGUgYnVmZmVyCiBhc3Nv Y2lhdGVkIHdpdGggUFJPQ0VTUyB3aWxsIGluaGVyaXQgdGhlIGNvZGluZyBzeXN0ZW0gdXNl ZCB0byBkZWNvZGUKIHRoZSBwcm9jZXNzIG91dHB1dC4gICovKQotICAocmVnaXN0ZXIgTGlz cF9PYmplY3QgcHJvY2VzcykKKyAgKExpc3BfT2JqZWN0IHByb2Nlc3MpCiB7CiAjaWZkZWYg c3VicHJvY2Vzc2VzCiAgIENIRUNLX1BST0NFU1MgKHByb2Nlc3MpOwpAQCAtNzI0MCw3ICs3 MjQxLDcgQEAKIGluaXRfcHJvY2VzcyAodm9pZCkKIHsKICNpZmRlZiBzdWJwcm9jZXNzZXMK LSAgcmVnaXN0ZXIgaW50IGk7CisgIGludCBpOwogCiAgIGluaGliaXRfc2VudGluZWxzID0g MDsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9yYWxsb2MuYycKLS0tIHNyYy9yYWxsb2Mu YwkyMDEyLTA1LTMxIDA2OjA2OjQyICswMDAwCisrKyBzcmMvcmFsbG9jLmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtMzA3LDcgKzMwNyw3IEBACiBzdGF0aWMgdm9pZAogcmVs aW5xdWlzaCAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgaGVhcF9wdHIgaDsKKyAgaGVhcF9wdHIg aDsKICAgbG9uZyBleGNlc3MgPSAwOwogCiAgIC8qIEFkZCB0aGUgYW1vdW50IG9mIHNwYWNl IGJleW9uZCBicmVha192YWx1ZQpAQCAtMzY4LDcgKzM2OCw3IEBACiBzdGF0aWMgYmxvY19w dHIKIGZpbmRfYmxvYyAoUE9JTlRFUiAqcHRyKQogewotICByZWdpc3RlciBibG9jX3B0ciBw ID0gZmlyc3RfYmxvYzsKKyAgYmxvY19wdHIgcCA9IGZpcnN0X2Jsb2M7CiAKICAgd2hpbGUg KHAgIT0gTklMX0JMT0MpCiAgICAgewpAQCAtMzkzLDggKzM5Myw4IEBACiBzdGF0aWMgYmxv Y19wdHIKIGdldF9ibG9jIChTSVpFIHNpemUpCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIG5l d19ibG9jOwotICByZWdpc3RlciBoZWFwX3B0ciBoZWFwOworICBibG9jX3B0ciBuZXdfYmxv YzsKKyAgaGVhcF9wdHIgaGVhcDsKIAogICBpZiAoISAobmV3X2Jsb2MgPSAoYmxvY19wdHIp IG1hbGxvYyAoQkxPQ19QVFJfU0laRSkpCiAgICAgICB8fCAhIChuZXdfYmxvYy0+ZGF0YSA9 IG9idGFpbiAoYnJlYWtfdmFsdWUsIHNpemUpKSkKQEAgLTQ0OCw3ICs0NDgsNyBAQAogc3Rh dGljIGludAogcmVsb2NhdGVfYmxvY3MgKGJsb2NfcHRyIGJsb2MsIGhlYXBfcHRyIGhlYXAs IFBPSU5URVIgYWRkcmVzcykKIHsKLSAgcmVnaXN0ZXIgYmxvY19wdHIgYiA9IGJsb2M7Cisg IGJsb2NfcHRyIGIgPSBibG9jOwogCiAgIC8qIE5vIG5lZWQgdG8gZXZlciBjYWxsIHRoaXMg aWYgYXJlbmEgaXMgZnJvemVuLCBidWcgc29tZXdoZXJlISAgKi8KICAgaWYgKHJfYWxsb2Nf ZnJlZXplX2xldmVsKQpAQCAtNDcwLDggKzQ3MCw4IEBACiAJIGdldCBlbm91Z2ggbmV3IHNw YWNlIHRvIGhvbGQgQkxPQyBhbmQgYWxsIGZvbGxvd2luZyBibG9jcy4gICovCiAgICAgICBp ZiAoaGVhcCA9PSBOSUxfSEVBUCkKIAl7Ci0JICByZWdpc3RlciBibG9jX3B0ciB0YiA9IGI7 Ci0JICByZWdpc3RlciBTSVpFIHMgPSAwOworCSAgYmxvY19wdHIgdGIgPSBiOworCSAgU0la RSBzID0gMDsKIAogCSAgLyogQWRkIHVwIHRoZSBzaXplIG9mIGFsbCB0aGUgZm9sbG93aW5n IGJsb2NzLiAgKi8KIAkgIHdoaWxlICh0YiAhPSBOSUxfQkxPQykKQEAgLTUwNyw3ICs1MDcs NyBAQAogc3RhdGljIHZvaWQKIHVwZGF0ZV9oZWFwX2Jsb2NfY29ycmVzcG9uZGVuY2UgKGJs b2NfcHRyIGJsb2MsIGhlYXBfcHRyIGhlYXApCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIGI7 CisgIGJsb2NfcHRyIGI7CiAKICAgLyogSW5pdGlhbGl6ZSBIRUFQJ3Mgc3RhdHVzIHRvIHJl ZmxlY3QgYmxvY3MgYmVmb3JlIEJMT0MuICAqLwogICBpZiAoYmxvYyAhPSBOSUxfQkxPQyAm JiBibG9jLT5wcmV2ICE9IE5JTF9CTE9DICYmIGJsb2MtPnByZXYtPmhlYXAgPT0gaGVhcCkK QEAgLTU2OSw3ICs1NjksNyBAQAogc3RhdGljIGludAogcmVzaXplX2Jsb2MgKGJsb2NfcHRy IGJsb2MsIFNJWkUgc2l6ZSkKIHsKLSAgcmVnaXN0ZXIgYmxvY19wdHIgYjsKKyAgYmxvY19w dHIgYjsKICAgaGVhcF9wdHIgaGVhcDsKICAgUE9JTlRFUiBhZGRyZXNzOwogICBTSVpFIG9s ZF9zaXplOwpAQCAtNzM1LDcgKzczNSw3IEBACiBzdGF0aWMgUE9JTlRFUgogcl9hbGxvY19z YnJrIChsb25nIGludCBzaXplKQogewotICByZWdpc3RlciBibG9jX3B0ciBiOworICBibG9j X3B0ciBiOwogICBQT0lOVEVSIGFkZHJlc3M7CiAKICAgaWYgKCEgcl9hbGxvY19pbml0aWFs aXplZCkKQEAgLTg4OCw3ICs4ODgsNyBAQAogUE9JTlRFUgogcl9hbGxvYyAoUE9JTlRFUiAq cHRyLCBTSVpFIHNpemUpCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIG5ld19ibG9jOworICBi bG9jX3B0ciBuZXdfYmxvYzsKIAogICBpZiAoISByX2FsbG9jX2luaXRpYWxpemVkKQogICAg IHJfYWxsb2NfaW5pdCAoKTsKQEAgLTkwOSw5ICs5MDksOSBAQAogICAgU3RvcmUgMCBpbiAq UFRSIHRvIHNob3cgdGhlcmUncyBubyBibG9jayBhbGxvY2F0ZWQuICAqLwogCiB2b2lkCi1y X2FsbG9jX2ZyZWUgKHJlZ2lzdGVyIFBPSU5URVIgKnB0cikKK3JfYWxsb2NfZnJlZSAoUE9J TlRFUiAqcHRyKQogewotICByZWdpc3RlciBibG9jX3B0ciBkZWFkX2Jsb2M7CisgIGJsb2Nf cHRyIGRlYWRfYmxvYzsKIAogICBpZiAoISByX2FsbG9jX2luaXRpYWxpemVkKQogICAgIHJf YWxsb2NfaW5pdCAoKTsKQEAgLTk0NSw3ICs5NDUsNyBAQAogUE9JTlRFUgogcl9yZV9hbGxv YyAoUE9JTlRFUiAqcHRyLCBTSVpFIHNpemUpCiB7Ci0gIHJlZ2lzdGVyIGJsb2NfcHRyIGJs b2M7CisgIGJsb2NfcHRyIGJsb2M7CiAKICAgaWYgKCEgcl9hbGxvY19pbml0aWFsaXplZCkK ICAgICByX2FsbG9jX2luaXQgKCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Njcm9sbC5j JwotLS0gc3JjL3Njcm9sbC5jCTIwMTItMDItMTAgMTg6NTg6NDggKzAwMDAKKysrIHNyYy9z Y3JvbGwuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC05MywxMCArOTMsMTAgQEAK IAkJICAgICBpbnQgKmRyYXdfY29zdCwgaW50ICpvbGRfaGFzaCwgaW50ICpuZXdfaGFzaCwK IAkJICAgICBpbnQgZnJlZV9hdF9lbmQpCiB7Ci0gIHJlZ2lzdGVyIGludCBpLCBqOworICBp bnQgaSwgajsKICAgaW50IGZyYW1lX2xpbmVzID0gRlJBTUVfTElORVMgKGZyYW1lKTsKLSAg cmVnaXN0ZXIgc3RydWN0IG1hdHJpeF9lbHQgKnAsICpwMTsKLSAgcmVnaXN0ZXIgaW50IGNv c3QsIGNvc3QxOworICBzdHJ1Y3QgbWF0cml4X2VsdCAqcCwgKnAxOworICBpbnQgY29zdCwg Y29zdDE7CiAKICAgaW50IGxpbmVzX21vdmVkID0gd2luZG93X3NpemUKICAgICArIChGUkFN RV9TQ1JPTExfUkVHSU9OX09LIChmcmFtZSkgPyAwIDogbGluZXNfYmVsb3cpOwpAQCAtNDMx LDEwICs0MzEsMTAgQEAKIAkJCSAgICBpbnQgKm9sZF9oYXNoLCBpbnQgKm5ld19oYXNoLAog CQkJICAgIGludCBmcmVlX2F0X2VuZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGksIGo7CisgIGlu dCBpLCBqOwogICBpbnQgZnJhbWVfbGluZXMgPSBGUkFNRV9MSU5FUyAoZnJhbWUpOwotICBy ZWdpc3RlciBzdHJ1Y3QgbWF0cml4X2VsdCAqcCwgKnAxOwotICByZWdpc3RlciBpbnQgY29z dCwgY29zdDEsIGRlbHRhOworICBzdHJ1Y3QgbWF0cml4X2VsdCAqcCwgKnAxOworICBpbnQg Y29zdCwgY29zdDEsIGRlbHRhOwogCiAgIC8qIGZpcnN0X2luc2VydF9jb3N0Wy1JXSBpcyB0 aGUgY29zdCBvZiBkb2luZyB0aGUgZmlyc3QgaW5zZXJ0LWxpbmUKICAgICAgYXQgYSBwb3Np dGlvbiBJIGxpbmVzIGFib3ZlIHRoZSBib3R0b20gbGluZSBpbiB0aGUgc2Nyb2xsIHdpbmRv dy4gKi8KQEAgLTgzOCw4ICs4MzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpjb3N0KQogewogICBzdHJ1Y3QgeyBpbnQgaGFzaDsgaW50IGNvdW50OyB9IGxpbmVz WzAxMDAwXTsKLSAgcmVnaXN0ZXIgaW50IGksIGg7Ci0gIHJlZ2lzdGVyIGludCBtYXRjaGNv dW50ID0gMDsKKyAgaW50IGksIGg7CisgIGludCBtYXRjaGNvdW50ID0gMDsKICAgaW50IGF2 Z19sZW5ndGggPSAwOwogICBpbnQgdGhyZXNob2xkOwogCkBAIC04ODcsMTIgKzg4NywxMiBA QAogCiBzdGF0aWMgdm9pZAogbGluZV9pbnNfZGVsIChGUkFNRV9QVFIgZnJhbWUsIGludCBv djEsIGludCBwZjEsIGludCBvdm4sIGludCBwZm4sCi0gICAgICAgICAgICAgIHJlZ2lzdGVy IGludCAqb3YsIHJlZ2lzdGVyIGludCAqbWYpCisgICAgICAgICAgICAgIGludCAqb3YsIGlu dCAqbWYpCiB7Ci0gIHJlZ2lzdGVyIGludCBpOwotICByZWdpc3RlciBpbnQgZnJhbWVfbGlu ZXMgPSBGUkFNRV9MSU5FUyAoZnJhbWUpOwotICByZWdpc3RlciBpbnQgaW5zZXJ0X292ZXJo ZWFkID0gb3YxICogMTA7Ci0gIHJlZ2lzdGVyIGludCBuZXh0X2luc2VydF9jb3N0ID0gb3Zu ICogMTA7CisgIGludCBpOworICBpbnQgZnJhbWVfbGluZXMgPSBGUkFNRV9MSU5FUyAoZnJh bWUpOworICBpbnQgaW5zZXJ0X292ZXJoZWFkID0gb3YxICogMTA7CisgIGludCBuZXh0X2lu c2VydF9jb3N0ID0gb3ZuICogMTA7CiAKICAgZm9yIChpID0gZnJhbWVfbGluZXMtMTsgaSA+ PSAwOyBpLS0pCiAgICAgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zZWFyY2guYycKLS0t IHNyYy9zZWFyY2guYwkyMDEyLTA1LTMxIDA2OjA2OjQyICswMDAwCisrKyBzcmMvc2VhcmNo LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMjczLDcgKzI3Myw3IEBACiAgIExp c3BfT2JqZWN0IHZhbDsKICAgdW5zaWduZWQgY2hhciAqcDEsICpwMjsKICAgcHRyZGlmZl90 IHMxLCBzMjsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGk7CisgIHB0cmRpZmZfdCBpOwogICBz dHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgKmJ1ZnA7CiAKICAgaWYgKHJ1bm5pbmdfYXN5bmNo X2NvZGUpCkBAIC02NDIsNyArNjQyLDcgQEAKICAgIGV4Y2VwdCB3aGVuIGluc2lkZSByZWRp c3BsYXkuICAqLwogCiBwdHJkaWZmX3QKLXNjYW5fYnVmZmVyIChyZWdpc3RlciBpbnQgdGFy Z2V0LCBwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBlbmQsCitzY2FuX2J1ZmZlciAoaW50 IHRhcmdldCwgcHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3QgZW5kLAogCSAgICAgcHRyZGlm Zl90IGNvdW50LCBwdHJkaWZmX3QgKnNob3J0YWdlLCBpbnQgYWxsb3dfcXVpdCkKIHsKICAg c3RydWN0IHJlZ2lvbl9jYWNoZSAqbmV3bGluZV9jYWNoZTsKQEAgLTcwOCwxMCArNzA4LDgg QEAKIAogICAgICAgICB7CiAgICAgICAgICAgLyogVGhlIHRlcm1pbmF0aW9uIGFkZHJlc3Mg b2YgdGhlIGR1bWIgbG9vcC4gICovCi0gICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hh ciAqY2VpbGluZ19hZGRyCi0JICAgID0gQllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKSAr IDE7Ci0gICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqY3Vyc29yCi0JICAgID0g QllURV9QT1NfQUREUiAoc3RhcnRfYnl0ZSk7CisgICAgICAgICAgdW5zaWduZWQgY2hhciAq Y2VpbGluZ19hZGRyID0gQllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKSArIDE7CisgICAg ICAgICAgdW5zaWduZWQgY2hhciAqY3Vyc29yID0gQllURV9QT1NfQUREUiAoc3RhcnRfYnl0 ZSk7CiAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYmFzZSA9IGN1cnNvcjsKIAogICAgICAg ICAgIHdoaWxlIChjdXJzb3IgPCBjZWlsaW5nX2FkZHIpCkBAIC03NzcsOCArNzc1LDggQEAK IAogICAgICAgICB7CiAgICAgICAgICAgLyogVGhlIHRlcm1pbmF0aW9uIGFkZHJlc3Mgb2Yg dGhlIGR1bWIgbG9vcC4gICovCi0gICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAq Y2VpbGluZ19hZGRyID0gQllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKTsKLSAgICAgICAg ICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpjdXJzb3IgPSBCWVRFX1BPU19BRERSIChzdGFy dF9ieXRlIC0gMSk7CisgICAgICAgICAgdW5zaWduZWQgY2hhciAqY2VpbGluZ19hZGRyID0g QllURV9QT1NfQUREUiAoY2VpbGluZ19ieXRlKTsKKyAgICAgICAgICB1bnNpZ25lZCBjaGFy ICpjdXJzb3IgPSBCWVRFX1BPU19BRERSIChzdGFydF9ieXRlIC0gMSk7CiAgICAgICAgICAg dW5zaWduZWQgY2hhciAqYmFzZSA9IGN1cnNvcjsKIAogICAgICAgICAgIHdoaWxlIChjdXJz b3IgPj0gY2VpbGluZ19hZGRyKQpAQCAtODM3LDE1ICs4MzUsMTUgQEAKIEVNQUNTX0lOVAog c2Nhbl9uZXdsaW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBzdGFydF9ieXRlLAog CSAgICAgIHB0cmRpZmZfdCBsaW1pdCwgcHRyZGlmZl90IGxpbWl0X2J5dGUsCi0JICAgICAg cmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50LCBpbnQgYWxsb3dfcXVpdCkKKwkgICAgICBFTUFD U19JTlQgY291bnQsIGludCBhbGxvd19xdWl0KQogewogICBpbnQgZGlyZWN0aW9uID0gKChj b3VudCA+IDApID8gMSA6IC0xKTsKIAotICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpjdXJz b3I7CisgIHVuc2lnbmVkIGNoYXIgKmN1cnNvcjsKICAgdW5zaWduZWQgY2hhciAqYmFzZTsK IAogICBwdHJkaWZmX3QgY2VpbGluZzsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqY2Vp bGluZ19hZGRyOworICB1bnNpZ25lZCBjaGFyICpjZWlsaW5nX2FkZHI7CiAKICAgaW50IG9s ZF9pbW1lZGlhdGVfcXVpdCA9IGltbWVkaWF0ZV9xdWl0OwogCkBAIC05NTgsNyArOTU2LDcg QEAKIHNlYXJjaF9jb21tYW5kIChMaXNwX09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGJv dW5kLCBMaXNwX09iamVjdCBub2Vycm9yLAogCQlMaXNwX09iamVjdCBjb3VudCwgaW50IGRp cmVjdGlvbiwgaW50IFJFLCBpbnQgcG9zaXgpCiB7Ci0gIHJlZ2lzdGVyIEVNQUNTX0lOVCBu cDsKKyAgRU1BQ1NfSU5UIG5wOwogICBFTUFDU19JTlQgbGltOwogICBwdHJkaWZmX3QgbGlt X2J5dGU7CiAgIEVNQUNTX0lOVCBuID0gZGlyZWN0aW9uOwpAQCAtMTEwNiw3ICsxMTA0LDcg QEAKIHsKICAgcHRyZGlmZl90IGxlbiA9IFNDSEFSUyAoc3RyaW5nKTsKICAgcHRyZGlmZl90 IGxlbl9ieXRlID0gU0JZVEVTIChzdHJpbmcpOwotICByZWdpc3RlciBwdHJkaWZmX3QgaTsK KyAgcHRyZGlmZl90IGk7CiAKICAgaWYgKHJ1bm5pbmdfYXN5bmNoX2NvZGUpCiAgICAgc2F2 ZV9zZWFyY2hfcmVncyAoKTsKQEAgLTE2NTksMTMgKzE2NTcsMTMgQEAKICAgICAgICAgICAg ICBpbnQgY2hhcl9iYXNlKQogewogICBpbnQgZGlyZWN0aW9uID0gKChuID4gMCkgPyAxIDog LTEpOwotICByZWdpc3RlciBwdHJkaWZmX3QgZGlybGVuOworICBwdHJkaWZmX3QgZGlybGVu OwogICBwdHJkaWZmX3QgbGltaXQ7CiAgIGludCBzdHJpZGVfZm9yX3RlYXNlcyA9IDA7CiAg IGludCBCTV90YWJbMDQwMF07Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKmN1cnNvciwg KnBfbGltaXQ7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBpOwotICByZWdpc3RlciBpbnQgajsK KyAgdW5zaWduZWQgY2hhciAqY3Vyc29yLCAqcF9saW1pdDsKKyAgcHRyZGlmZl90IGk7Cisg IGludCBqOwogICB1bnNpZ25lZCBjaGFyICpwYXQsICpwYXRfZW5kOwogICBpbnQgbXVsdGli eXRlID0gISBOSUxQIChCVkFSIChjdXJyZW50X2J1ZmZlciwgZW5hYmxlX211bHRpYnl0ZV9j aGFyYWN0ZXJzKSk7CiAKQEAgLTIyNDgsMTIgKzIyNDYsMTIgQEAKICAgKExpc3BfT2JqZWN0 IG5ld3RleHQsIExpc3BfT2JqZWN0IGZpeGVkY2FzZSwgTGlzcF9PYmplY3QgbGl0ZXJhbCwg TGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBzdWJleHApCiB7CiAgIGVudW0geyBu b2NoYW5nZSwgYWxsX2NhcHMsIGNhcF9pbml0aWFsIH0gY2FzZV9hY3Rpb247Ci0gIHJlZ2lz dGVyIHB0cmRpZmZfdCBwb3MsIHBvc19ieXRlOworICBwdHJkaWZmX3QgcG9zLCBwb3NfYnl0 ZTsKICAgaW50IHNvbWVfbXVsdGlsZXR0ZXJfd29yZDsKICAgaW50IHNvbWVfbG93ZXJjYXNl OwogICBpbnQgc29tZV91cHBlcmNhc2U7CiAgIGludCBzb21lX25vbnVwcGVyY2FzZV9pbml0 aWFsOwotICByZWdpc3RlciBpbnQgYywgcHJldmM7CisgIGludCBjLCBwcmV2YzsKICAgcHRy ZGlmZl90IHN1YjsKICAgcHRyZGlmZl90IG9wb2ludCwgbmV3cG9pbnQ7CiAKQEAgLTI4MjIs MTAgKzI4MjAsMTAgQEAKIExJU1Qgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGNhbGxp bmcgYG1hdGNoLWRhdGEnIHByZXZpb3VzbHkuCiAKIElmIG9wdGlvbmFsIGFyZyBSRVNFQVQg aXMgbm9uLW5pbCwgbWFrZSBtYXJrZXJzIG9uIExJU1QgcG9pbnQgbm93aGVyZS4gICovKQot ICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgbGlzdCwgTGlzcF9PYmplY3QgcmVzZWF0KQorICAo TGlzcF9PYmplY3QgbGlzdCwgTGlzcF9PYmplY3QgcmVzZWF0KQogewogICBwdHJkaWZmX3Qg aTsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgbWFya2VyOworICBMaXNwX09iamVjdCBtYXJr ZXI7CiAKICAgaWYgKHJ1bm5pbmdfYXN5bmNoX2NvZGUpCiAgICAgc2F2ZV9zZWFyY2hfcmVn cyAoKTsKQEAgLTMwMDIsOCArMzAwMCw4IEBACiAgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBy ZWdleHAgc3RyaW5nIHdoaWNoIG1hdGNoZXMgZXhhY3RseSBTVFJJTkcgYW5kIG5vdGhpbmcg ZWxzZS4gICovKQogICAoTGlzcF9PYmplY3Qgc3RyaW5nKQogewotICByZWdpc3RlciBjaGFy ICppbiwgKm91dCwgKmVuZDsKLSAgcmVnaXN0ZXIgY2hhciAqdGVtcDsKKyAgY2hhciAqaW4s ICpvdXQsICplbmQ7CisgIGNoYXIgKnRlbXA7CiAgIGludCBiYWNrc2xhc2hlc19hZGRlZCA9 IDA7CiAKICAgQ0hFQ0tfU1RSSU5HIChzdHJpbmcpOwpAQCAtMzAzNSw3ICszMDMzLDcgQEAK IHZvaWQKIHN5bXNfb2Zfc2VhcmNoICh2b2lkKQogewotICByZWdpc3RlciBpbnQgaTsKKyAg aW50IGk7CiAKICAgZm9yIChpID0gMDsgaSA8IFJFR0VYUF9DQUNIRV9TSVpFOyArK2kpCiAg ICAgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zeW50YXguYycKLS0tIHNyYy9zeW50YXgu YwkyMDEyLTA0LTA5IDIyOjU0OjU5ICswMDAwCisrKyBzcmMvc3ludGF4LmMJMjAxMi0wNi0w MyAwNTo1MzozOCArMDAwMApAQCAtMzQxLDkgKzM0MSw5IEBACiBzdGF0aWMgaW50CiBjaGFy X3F1b3RlZCAocHRyZGlmZl90IGNoYXJwb3MsIHB0cmRpZmZfdCBieXRlcG9zKQogewotICBy ZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGJl ZyA9IEJFR1Y7Ci0gIHJlZ2lzdGVyIGludCBxdW90ZWQgPSAwOworICBlbnVtIHN5bnRheGNv ZGUgY29kZTsKKyAgcHRyZGlmZl90IGJlZyA9IEJFR1Y7CisgIGludCBxdW90ZWQgPSAwOwog ICBwdHJkaWZmX3Qgb3JpZyA9IGNoYXJwb3M7CiAKICAgd2hpbGUgKGNoYXJwb3MgPiBiZWcp CkBAIC01MzAsNyArNTMwLDcgQEAKICAgICAgb3IgMCBpZiB3ZSBkaWRuJ3QgY29tZSBhY3Jv c3MgaXQgeWV0LiAgKi8KICAgcHRyZGlmZl90IGRlZnVuX3N0YXJ0ID0gMDsKICAgcHRyZGlm Zl90IGRlZnVuX3N0YXJ0X2J5dGUgPSAwOwotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUg Y29kZTsKKyAgZW51bSBzeW50YXhjb2RlIGNvZGU7CiAgIGludCBuZXN0aW5nID0gMTsJCS8q IGN1cnJlbnQgY29tbWVudCBuZXN0aW5nICovCiAgIGludCBjOwogICBpbnQgc3ludGF4ID0g MDsKQEAgLTkyMyw4ICs5MjMsOCBAQAogdGV4dCBwcm9wZXJ0eS4gICovKQogICAoTGlzcF9P YmplY3Qgc3RyaW5nKQogewotICByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpwOwot ICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAgY29uc3QgdW5zaWduZWQgY2hh ciAqcDsKKyAgZW51bSBzeW50YXhjb2RlIGNvZGU7CiAgIGludCB2YWw7CiAgIExpc3BfT2Jq ZWN0IG1hdGNoOwogCkBAIC0xMDcyLDcgKzEwNzIsNyBAQAogICAgICAgIGRvYzogLyogSW5z ZXJ0IGEgZGVzY3JpcHRpb24gb2YgdGhlIGludGVybmFsIHN5bnRheCBkZXNjcmlwdGlvbiBT WU5UQVggYXQgcG9pbnQuICAqLykKICAgKExpc3BfT2JqZWN0IHN5bnRheCkKIHsKLSAgcmVn aXN0ZXIgZW51bSBzeW50YXhjb2RlIGNvZGU7CisgIGVudW0gc3ludGF4Y29kZSBjb2RlOwog ICBpbnQgc3ludGF4X2NvZGU7CiAgIGNoYXIgZGVzYywgc3RhcnQxLCBzdGFydDIsIGVuZDEs IGVuZDIsIHByZWZpeCwKICAgICBjb21zdHlsZWIsIGNvbXN0eWxlYywgY29tbmVzdGVkOwpA QCAtMTIyNSwxMiArMTIyNSwxMiBAQAogICAgQ09VTlQgbmVnYXRpdmUgbWVhbnMgc2NhbiBi YWNrd2FyZCBhbmQgc3RvcCBhdCB3b3JkIGJlZ2lubmluZy4gICovCiAKIHB0cmRpZmZfdAot c2Nhbl93b3JkcyAocmVnaXN0ZXIgcHRyZGlmZl90IGZyb20sIHJlZ2lzdGVyIEVNQUNTX0lO VCBjb3VudCkKK3NjYW5fd29yZHMgKHB0cmRpZmZfdCBmcm9tLCBFTUFDU19JTlQgY291bnQp CiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBiZWcgPSBCRUdWOwotICByZWdpc3RlciBwdHJk aWZmX3QgZW5kID0gWlY7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tX2J5dGUgPSBDSEFS X1RPX0JZVEUgKGZyb20pOwotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAg cHRyZGlmZl90IGJlZyA9IEJFR1Y7CisgIHB0cmRpZmZfdCBlbmQgPSBaVjsKKyAgcHRyZGlm Zl90IGZyb21fYnl0ZSA9IENIQVJfVE9fQllURSAoZnJvbSk7CisgIGVudW0gc3ludGF4Y29k ZSBjb2RlOwogICBpbnQgY2gwLCBjaDE7CiAgIExpc3BfT2JqZWN0IGZ1bmMsIHBvczsKIApA QCAtMTQyNywxMyArMTQyNywxMyBAQAogc3RhdGljIExpc3BfT2JqZWN0CiBza2lwX2NoYXJz IChpbnQgZm9yd2FyZHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltLCBp bnQgaGFuZGxlX2lzb19jbGFzc2VzKQogewotICByZWdpc3RlciB1bnNpZ25lZCBpbnQgYzsK KyAgdW5zaWduZWQgaW50IGM7CiAgIHVuc2lnbmVkIGNoYXIgZmFzdG1hcFswNDAwXTsKICAg LyogU3RvcmUgdGhlIHJhbmdlcyBvZiBub24tQVNDSUkgY2hhcmFjdGVycy4gICovCiAgIGlu dCAqY2hhcl9yYW5nZXMgSUZfTElOVCAoPSBOVUxMKTsKICAgaW50IG5fY2hhcl9yYW5nZXMg PSAwOwogICBpbnQgbmVnYXRlID0gMDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGksIGlfYnl0 ZTsKKyAgcHRyZGlmZl90IGksIGlfYnl0ZTsKICAgLyogU2V0IHRvIDEgaWYgdGhlIGN1cnJl bnQgYnVmZmVyIGlzIG11bHRpYnl0ZSBhbmQgdGhlIHJlZ2lvbgogICAgICBjb250YWlucyBu b24tQVNDSUkgY2hhcnMuICAqLwogICBpbnQgbXVsdGlieXRlOwpAQCAtMTkyMywxMCArMTky MywxMCBAQAogc3RhdGljIExpc3BfT2JqZWN0CiBza2lwX3N5bnRheGVzIChpbnQgZm9yd2Fy ZHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltKQogewotICByZWdpc3Rl ciB1bnNpZ25lZCBpbnQgYzsKKyAgdW5zaWduZWQgaW50IGM7CiAgIHVuc2lnbmVkIGNoYXIg ZmFzdG1hcFswNDAwXTsKICAgaW50IG5lZ2F0ZSA9IDA7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZf dCBpLCBpX2J5dGU7CisgIHB0cmRpZmZfdCBpLCBpX2J5dGU7CiAgIGludCBtdWx0aWJ5dGU7 CiAgIHB0cmRpZmZfdCBzaXplX2J5dGU7CiAgIHVuc2lnbmVkIGNoYXIgKnN0cjsKQEAgLTIx NDEsOSArMjE0MSw5IEBACiAJICAgICAgcHRyZGlmZl90ICpjaGFycG9zX3B0ciwgcHRyZGlm Zl90ICpieXRlcG9zX3B0ciwKIAkgICAgICBFTUFDU19JTlQgKmluY29tbWVudF9wdHIpCiB7 Ci0gIHJlZ2lzdGVyIGludCBjLCBjMTsKLSAgcmVnaXN0ZXIgZW51bSBzeW50YXhjb2RlIGNv ZGU7Ci0gIHJlZ2lzdGVyIGludCBzeW50YXgsIG90aGVyX3N5bnRheDsKKyAgaW50IGMsIGMx OworICBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAgaW50IHN5bnRheCwgb3RoZXJfc3ludGF4 OwogCiAgIGlmIChuZXN0aW5nIDw9IDApIG5lc3RpbmcgPSAtMTsKIApAQCAtMjI0MSwxMSAr MjI0MSwxMSBAQAogYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBu aWwuICAqLykKICAgKExpc3BfT2JqZWN0IGNvdW50KQogewotICByZWdpc3RlciBwdHJkaWZm X3QgZnJvbTsKKyAgcHRyZGlmZl90IGZyb207CiAgIHB0cmRpZmZfdCBmcm9tX2J5dGU7Ci0g IHJlZ2lzdGVyIHB0cmRpZmZfdCBzdG9wOwotICByZWdpc3RlciBpbnQgYywgYzE7Ci0gIHJl Z2lzdGVyIGVudW0gc3ludGF4Y29kZSBjb2RlOworICBwdHJkaWZmX3Qgc3RvcDsKKyAgaW50 IGMsIGMxOworICBlbnVtIHN5bnRheGNvZGUgY29kZTsKICAgaW50IGNvbXN0eWxlID0gMDsJ ICAgIC8qIHN0eWxlIG9mIGNvbW1lbnQgZW5jb3VudGVyZWQgKi8KICAgaW50IGNvbW5lc3Rl ZCA9IDA7CSAgICAvKiB3aGV0aGVyIHRoZSBjb21tZW50IGlzIG5lc3RhYmxlIG9yIG5vdCAq LwogICBpbnQgZm91bmQ7CkBAIC0yNDU1LDE1ICsyNDU1LDE1IEBACiAgICA/IFNZTlRBWCAo YykgOiBTc3ltYm9sKQogCiBzdGF0aWMgTGlzcF9PYmplY3QKLXNjYW5fbGlzdHMgKHJlZ2lz dGVyIEVNQUNTX0lOVCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwg aW50IHNleHBmbGFnKQorc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBj b3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBpbnQgc2V4cGZsYWcpCiB7CiAgIExpc3BfT2JqZWN0 IHZhbDsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHN0b3AgPSBjb3VudCA+IDAgPyBaViA6IEJF R1Y7Ci0gIHJlZ2lzdGVyIGludCBjLCBjMTsKKyAgcHRyZGlmZl90IHN0b3AgPSBjb3VudCA+ IDAgPyBaViA6IEJFR1Y7CisgIGludCBjLCBjMTsKICAgaW50IHN0cmluZ3Rlcm07CiAgIGlu dCBxdW90ZWQ7CiAgIGludCBtYXRoZXhpdCA9IDA7Ci0gIHJlZ2lzdGVyIGVudW0gc3ludGF4 Y29kZSBjb2RlLCB0ZW1wX2NvZGU7CisgIGVudW0gc3ludGF4Y29kZSBjb2RlLCB0ZW1wX2Nv ZGU7CiAgIEVNQUNTX0lOVCBtaW5fZGVwdGggPSBkZXB0aDsgICAgLyogRXJyIG91dCBpZiBk ZXB0aCBnZXRzIGxlc3MgdGhhbiB0aGlzLiAgKi8KICAgaW50IGNvbXN0eWxlID0gMDsJICAg IC8qIHN0eWxlIG9mIGNvbW1lbnQgZW5jb3VudGVyZWQgKi8KICAgaW50IGNvbW5lc3RlZCA9 IDA7CSAgICAvKiB3aGV0aGVyIHRoZSBjb21tZW50IGlzIG5lc3RhYmxlIG9yIG5vdCAqLwpA QCAtMjk0OCwxNiArMjk0OCwxNiBAQAogewogICBzdHJ1Y3QgbGlzcF9wYXJzZV9zdGF0ZSBz dGF0ZTsKIAotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUgY29kZTsKKyAgZW51bSBzeW50 YXhjb2RlIGNvZGU7CiAgIGludCBjMTsKICAgaW50IGNvbW5lc3RlZDsKICAgc3RydWN0IGxl dmVsIHsgcHRyZGlmZl90IGxhc3QsIHByZXY7IH07CiAgIHN0cnVjdCBsZXZlbCBsZXZlbHN0 YXJ0WzEwMF07Ci0gIHJlZ2lzdGVyIHN0cnVjdCBsZXZlbCAqY3VybGV2ZWwgPSBsZXZlbHN0 YXJ0OworICBzdHJ1Y3QgbGV2ZWwgKmN1cmxldmVsID0gbGV2ZWxzdGFydDsKICAgc3RydWN0 IGxldmVsICplbmRsZXZlbCA9IGxldmVsc3RhcnQgKyAxMDA7Ci0gIHJlZ2lzdGVyIEVNQUNT X0lOVCBkZXB0aDsgLyogUGFyZW4gZGVwdGggb2YgY3VycmVudCBzY2FubmluZyBsb2NhdGlv bi4KLQkJCSAgIGxldmVsIC0gbGV2ZWxzdGFydCBlcXVhbHMgdGhpcyBleGNlcHQKLQkJCSAg IHdoZW4gdGhlIGRlcHRoIGJlY29tZXMgbmVnYXRpdmUuICAqLworICBFTUFDU19JTlQgZGVw dGg7IC8qIFBhcmVuIGRlcHRoIG9mIGN1cnJlbnQgc2Nhbm5pbmcgbG9jYXRpb24uCisJCSAg ICAgIGxldmVsIC0gbGV2ZWxzdGFydCBlcXVhbHMgdGhpcyBleGNlcHQKKwkJICAgICAgd2hl biB0aGUgZGVwdGggYmVjb21lcyBuZWdhdGl2ZS4gICovCiAgIEVNQUNTX0lOVCBtaW5kZXB0 aDsJCS8qIExvd2VzdCBERVBUSCB2YWx1ZSBzZWVuLiAgKi8KICAgaW50IHN0YXJ0X3F1b3Rl ZCA9IDA7CQkvKiBOb256ZXJvIG1lYW5zIHN0YXJ0aW5nIGFmdGVyIGEgY2hhciBxdW90ZSAq LwogICBMaXNwX09iamVjdCB0ZW07CkBAIC0zMzcyLDcgKzMzNzIsNyBAQAogdm9pZAogaW5p dF9zeW50YXhfb25jZSAodm9pZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGksIGM7CisgIGludCBp LCBjOwogICBMaXNwX09iamVjdCB0ZW1wOwogCiAgIC8qIFRoaXMgaGFzIHRvIGJlIGRvbmUg aGVyZSwgYmVmb3JlIHdlIGNhbGwgRm1ha2VfY2hhcl90YWJsZS4gICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL3N5c2RlcC5jJwotLS0gc3JjL3N5c2RlcC5jCTIwMTItMDYtMDIgMjE6 MDE6MDcgKzAwMDAKKysrIHNyYy9zeXNkZXAuYwkyMDEyLTA2LTAzIDA1OjU1OjIzICswMDAw CkBAIC0xODY5LDcgKzE4NjksNyBAQAogaW50CiBlbWFjc19vcGVuIChjb25zdCBjaGFyICpw YXRoLCBpbnQgb2ZsYWcsIGludCBtb2RlKQogewotICByZWdpc3RlciBpbnQgcnRudmFsOwor ICBpbnQgcnRudmFsOwogCiAgIHdoaWxlICgocnRudmFsID0gb3BlbiAocGF0aCwgb2ZsYWcs IG1vZGUpKSA9PSAtMQogCSAmJiAoZXJybm8gPT0gRUlOVFIpKQpAQCAtMTg4MSw3ICsxODgx LDcgQEAKIGVtYWNzX2Nsb3NlIChpbnQgZmQpCiB7CiAgIGludCBkaWRfcmV0cnkgPSAwOwot ICByZWdpc3RlciBpbnQgcnRudmFsOworICBpbnQgcnRudmFsOwogCiAgIHdoaWxlICgocnRu dmFsID0gY2xvc2UgKGZkKSkgPT0gLTEKIAkgJiYgKGVycm5vID09IEVJTlRSKSkKQEAgLTE5 MTMsNyArMTkxMyw3IEBACiBwdHJkaWZmX3QKIGVtYWNzX3JlYWQgKGludCBmaWxkZXMsIGNo YXIgKmJ1ZiwgcHRyZGlmZl90IG5ieXRlKQogewotICByZWdpc3RlciBzc2l6ZV90IHJ0bnZh bDsKKyAgc3NpemVfdCBydG52YWw7CiAKICAgLyogVGhlcmUgaXMgbm8gbmVlZCB0byBjaGVj ayBhZ2FpbnN0IE1BWF9SV19DT1VOVCwgc2luY2Ugbm8gY2FsbGVyIGV2ZXIKICAgICAgcGFz c2VzIGEgc2l6ZSB0aGF0IGxhcmdlIHRvIGVtYWNzX3JlYWQuICAqLwpAQCAtMjUxMyw3ICsy NTEzLDcgQEAKIHsKICAgTGlzcF9PYmplY3QgcHJvY2RpciwgbWF0Y2gsIHByb2NsaXN0LCBu ZXh0OwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7Ci0gIHJlZ2lzdGVyIExpc3Bf T2JqZWN0IHRhaWw7CisgIExpc3BfT2JqZWN0IHRhaWw7CiAKICAgR0NQUk8yIChwcm9jZGly LCBtYXRjaCk7CiAgIC8qIEZvciBldmVyeSBwcm9jZXNzIG9uIHRoZSBzeXN0ZW0sIHRoZXJl J3MgYSBkaXJlY3RvcnkgaW4gdGhlCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Rlcm0uYycK LS0tIHNyYy90ZXJtLmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL3Rlcm0u YwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00MDksNyArNDA5LDcgQEAKIHN0YXRp YyB2b2lkCiB0dHlfY2xlYXJfdG9fZW5kIChzdHJ1Y3QgZnJhbWUgKmYpCiB7Ci0gIHJlZ2lz dGVyIGludCBpOworICBpbnQgaTsKICAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9 IEZSQU1FX1RUWSAoZik7CiAKICAgaWYgKHR0eS0+VFNfY2xyX3RvX2JvdHRvbSkKQEAgLTQ1 NCw3ICs0NTQsNyBAQAogc3RhdGljIHZvaWQKIHR0eV9jbGVhcl9lbmRfb2ZfbGluZSAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgZmlyc3RfdW51c2VkX2hwb3MpCiB7Ci0gIHJlZ2lzdGVyIGlu dCBpOworICBpbnQgaTsKICAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1F X1RUWSAoZik7CiAKICAgLyogRGV0ZWN0IHRoZSBjYXNlIHdoZXJlIHdlIGFyZSBjYWxsZWQg ZnJvbSByZXNldF9zeXNfbW9kZXMKQEAgLTUwNyw3ICs1MDcsNyBAQAogICB1bnNpZ25lZCBj aGFyICpidWY7CiAgIHB0cmRpZmZfdCBuY2hhcnMsIG5ieXRlcywgcmVxdWlyZWQ7CiAgIHB0 cmRpZmZfdCB0bGVuID0gR0xZUEhfVEFCTEVfTEVOR1RIOwotICByZWdpc3RlciBMaXNwX09i amVjdCAqdGJhc2UgPSBHTFlQSF9UQUJMRV9CQVNFOworICBMaXNwX09iamVjdCAqdGJhc2Ug PSBHTFlQSF9UQUJMRV9CQVNFOwogICBMaXNwX09iamVjdCBjaGFyc2V0X2xpc3Q7CiAKICAg LyogQWxsb2NhdGUgc3VmZmljaWVudCBzaXplIG9mIGJ1ZmZlciB0byBzdG9yZSBhbGwgY2hh cmFjdGVycyBpbgpAQCAtNzc3LDggKzc3Nyw4IEBACiAjaWZkZWYgSEFWRV9HUE0JCQkvKiBP bmx5IHVzZWQgYnkgR1BNIGNvZGUuICAqLwogCiBzdGF0aWMgdm9pZAotdHR5X3dyaXRlX2ds eXBoc193aXRoX2ZhY2UgKHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3Ry dWN0IGdseXBoICpzdHJpbmcsCi0JCQkgICAgcmVnaXN0ZXIgaW50IGxlbiwgcmVnaXN0ZXIg aW50IGZhY2VfaWQpCit0dHlfd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1l ICpmLCBzdHJ1Y3QgZ2x5cGggKnN0cmluZywKKwkJCSAgICBpbnQgbGVuLCBpbnQgZmFjZV9p ZCkKIHsKICAgdW5zaWduZWQgY2hhciAqY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBj b2Rpbmdfc3lzdGVtICpjb2Rpbmc7CkBAIC05MjksNyArOTI5LDcgQEAKIHR0eV9kZWxldGVf Z2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogewogICBjaGFyICpidWY7Ci0gIHJl Z2lzdGVyIGludCBpOworICBpbnQgaTsKIAogICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAq dHR5ID0gRlJBTUVfVFRZIChmKTsKIApAQCAtOTY3LDggKzk2Nyw4IEBACiAgIGNvbnN0IGNo YXIgKnNpbmdsZSA9IG4gPiAwID8gdHR5LT5UU19pbnNfbGluZSA6IHR0eS0+VFNfZGVsX2xp bmU7CiAgIGNvbnN0IGNoYXIgKnNjcm9sbCA9IG4gPiAwID8gdHR5LT5UU19yZXZfc2Nyb2xs IDogdHR5LT5UU19md2Rfc2Nyb2xsOwogCi0gIHJlZ2lzdGVyIGludCBpID0gbiA+IDAgPyBu IDogLW47Ci0gIHJlZ2lzdGVyIGNoYXIgKmJ1ZjsKKyAgaW50IGkgPSBuID4gMCA/IG4gOiAt bjsKKyAgY2hhciAqYnVmOwogCiAgIC8qIElmIHRoZSBsaW5lcyBiZWxvdyB0aGUgaW5zZXJ0 aW9uIGFyZSBiZWluZyBwdXNoZWQKICAgICAgaW50byB0aGUgZW5kIG9mIHRoZSB3aW5kb3cs IHRoaXMgaXMgdGhlIHNhbWUgYXMgY2xlYXJpbmc7CkBAIC0xMDc3LDggKzEwNzcsOCBAQAog ICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKICAgaW50 IGluc19zdGFydHVwX2Nvc3QsIGRlbF9zdGFydHVwX2Nvc3Q7CiAgIGludCBpbnNfY29zdF9w ZXJfY2hhciwgZGVsX2Nvc3RfcGVyX2NoYXI7Ci0gIHJlZ2lzdGVyIGludCBpOwotICByZWdp c3RlciBpbnQgKnA7CisgIGludCBpOworICBpbnQgKnA7CiAKICAgaWYgKHR0eS0+VFNfaW5z X211bHRpX2NoYXJzKQogICAgIHsKQEAgLTExNDAsOSArMTE0MCw5IEBACiAgIGlmIChGUkFN RV9URVJNQ0FQX1AgKGZyYW1lKSkKICAgICB7CiAgICAgICBzdHJ1Y3QgdHR5X2Rpc3BsYXlf aW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmcmFtZSk7Ci0gICAgICByZWdpc3RlciBjb25zdCBj aGFyICpmID0gKHR0eS0+VFNfc2V0X3Njcm9sbF9yZWdpb24KLQkJCQk/IHR0eS0+VFNfc2V0 X3Njcm9sbF9yZWdpb24KLQkJCQk6IHR0eS0+VFNfc2V0X3Njcm9sbF9yZWdpb25fMSk7Cisg ICAgICBjb25zdCBjaGFyICpmID0gKHR0eS0+VFNfc2V0X3Njcm9sbF9yZWdpb24KKwkJICAg ICAgID8gdHR5LT5UU19zZXRfc2Nyb2xsX3JlZ2lvbgorCQkgICAgICAgOiB0dHktPlRTX3Nl dF9zY3JvbGxfcmVnaW9uXzEpOwogCiAgICAgICBGUkFNRV9TQ1JPTExfUkVHSU9OX0NPU1Qg KGZyYW1lKSA9IHN0cmluZ19jb3N0IChmKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy90 ZXJtY2FwLmMnCi0tLSBzcmMvdGVybWNhcC5jCTIwMTItMDUtMjEgMTU6MzY6NTQgKzAwMDAK KysrIHNyYy90ZXJtY2FwLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtNjUsNyAr NjUsNyBAQAogICAgMCBpZiBub3QgZm91bmQuICAqLwogCiBzdGF0aWMgY2hhciAqCi1maW5k X2NhcGFiaWxpdHkgKHJlZ2lzdGVyIGNoYXIgKmJwLCByZWdpc3RlciBjb25zdCBjaGFyICpj YXApCitmaW5kX2NhcGFiaWxpdHkgKGNoYXIgKmJwLCBjb25zdCBjaGFyICpjYXApCiB7CiAg IGZvciAoOyAqYnA7IGJwKyspCiAgICAgaWYgKGJwWzBdID09ICc6JwpAQCAtNzgsNyArNzgs NyBAQAogaW50CiB0Z2V0bnVtIChjb25zdCBjaGFyICpjYXApCiB7Ci0gIHJlZ2lzdGVyIGNo YXIgKnB0ciA9IGZpbmRfY2FwYWJpbGl0eSAodGVybV9lbnRyeSwgY2FwKTsKKyAgY2hhciAq cHRyID0gZmluZF9jYXBhYmlsaXR5ICh0ZXJtX2VudHJ5LCBjYXApOwogICBpZiAoIXB0ciB8 fCBwdHJbLTFdICE9ICcjJykKICAgICByZXR1cm4gLTE7CiAgIHJldHVybiBhdG9pIChwdHIp OwpAQCAtODcsNyArODcsNyBAQAogaW50CiB0Z2V0ZmxhZyAoY29uc3QgY2hhciAqY2FwKQog ewotICByZWdpc3RlciBjaGFyICpwdHIgPSBmaW5kX2NhcGFiaWxpdHkgKHRlcm1fZW50cnks IGNhcCk7CisgIGNoYXIgKnB0ciA9IGZpbmRfY2FwYWJpbGl0eSAodGVybV9lbnRyeSwgY2Fw KTsKICAgcmV0dXJuIHB0ciAmJiBwdHJbLTFdID09ICc6JzsKIH0KIApAQCAtOTksNyArOTks NyBAQAogY2hhciAqCiB0Z2V0c3RyIChjb25zdCBjaGFyICpjYXAsIGNoYXIgKiphcmVhKQog ewotICByZWdpc3RlciBjaGFyICpwdHIgPSBmaW5kX2NhcGFiaWxpdHkgKHRlcm1fZW50cnks IGNhcCk7CisgIGNoYXIgKnB0ciA9IGZpbmRfY2FwYWJpbGl0eSAodGVybV9lbnRyeSwgY2Fw KTsKICAgaWYgKCFwdHIgfHwgKHB0clstMV0gIT0gJz0nICYmIHB0clstMV0gIT0gJ34nKSkK ICAgICByZXR1cm4gTlVMTDsKICAgcmV0dXJuIHRnZXRzdDEgKHB0ciwgYXJlYSk7CkBAIC0x MzcsMTEgKzEzNywxMSBAQAogc3RhdGljIGNoYXIgKgogdGdldHN0MSAoY2hhciAqcHRyLCBj aGFyICoqYXJlYSkKIHsKLSAgcmVnaXN0ZXIgY2hhciAqcCwgKnI7Ci0gIHJlZ2lzdGVyIGlu dCBjOwotICByZWdpc3RlciBpbnQgc2l6ZTsKKyAgY2hhciAqcCwgKnI7CisgIGludCBjOwor ICBpbnQgc2l6ZTsKICAgY2hhciAqcmV0OwotICByZWdpc3RlciBpbnQgYzE7CisgIGludCBj MTsKIAogICBpZiAoIXB0cikKICAgICByZXR1cm4gTlVMTDsKQEAgLTIxNiw3ICsyMTYsNyBA QAogICAgICBhYmJyZXZpYXRpb24gZXhwYW5zaW9uIG1ha2VzIHRoYXQgZWZmb3J0IGEgbGl0 dGxlIG1vcmUgaGFpcnkgdGhhbgogICAgICBpdHMgd29ydGg7IHRoaXMgaXMgY2xlYW5lci4g ICovCiAgIHsKLSAgICByZWdpc3RlciBpbnQgbGFzdF9wX3BhcmFtID0gMDsKKyAgICBpbnQg bGFzdF9wX3BhcmFtID0gMDsKICAgICBpbnQgcmVtb3ZlX3BfcGFyYW1zID0gMTsKICAgICBz dHJ1Y3QgeyBjaGFyICpiZWc7IGludCBsZW47IH0gY3V0WzExXTsKIApAQCAtMjQxLDcgKzI0 MSw3IEBACiAgICAgICB9CiAgICAgaWYgKHJlbW92ZV9wX3BhcmFtcyAmJiBsYXN0X3BfcGFy YW0pCiAgICAgICB7Ci0JcmVnaXN0ZXIgaW50IGk7CisJaW50IGk7CiAJY2hhciAqd3A7CiAK IAljdXRbbGFzdF9wX3BhcmFtXS5sZW4gPSByIC0gY3V0W2xhc3RfcF9wYXJhbV0uYmVnOwpA QCAtMjYzLDEwICsyNjMsMTAgQEAKIGNoYXIgUEM7CiAKIHZvaWQKLXRwdXRzIChyZWdpc3Rl ciBjb25zdCBjaGFyICpzdHIsIGludCBubGluZXMsIGludCAoKm91dGZ1bikgKGludCkpCit0 cHV0cyAoY29uc3QgY2hhciAqc3RyLCBpbnQgbmxpbmVzLCBpbnQgKCpvdXRmdW4pIChpbnQp KQogewotICByZWdpc3RlciBpbnQgcGFkY291bnQgPSAwOwotICByZWdpc3RlciBpbnQgc3Bl ZWQ7CisgIGludCBwYWRjb3VudCA9IDA7CisgIGludCBzcGVlZDsKIAogICBzcGVlZCA9IGJh dWRfcmF0ZTsKICAgLyogRm9yIHF1aXRlIGhpZ2ggc3BlZWRzLCBjb252ZXJ0IHRvIHRoZSBz bWFsbGVyCkBAIC0zMjcsOSArMzI3LDEwIEBACiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25z IG9mIHN0YXRpYyBmdW5jdGlvbnMuICAqLwogCi1zdGF0aWMgaW50IHNjYW5fZmlsZSAoY2hh ciAqc3RyLCBpbnQgZmQsIHJlZ2lzdGVyIHN0cnVjdCB0ZXJtY2FwX2J1ZmZlciAqYnVmcCk7 Ci1zdGF0aWMgY2hhciAqZ29iYmxlX2xpbmUgKGludCBmZCwgcmVnaXN0ZXIgc3RydWN0IHRl cm1jYXBfYnVmZmVyICpidWZwLCBjaGFyICphcHBlbmRfZW5kKTsKLXN0YXRpYyBpbnQgY29t cGFyZV9jb250aW4gKHJlZ2lzdGVyIGNoYXIgKnN0cjEsIHJlZ2lzdGVyIGNoYXIgKnN0cjIp Oworc3RhdGljIGludCBzY2FuX2ZpbGUgKGNoYXIgKnN0ciwgaW50IGZkLCBzdHJ1Y3QgdGVy bWNhcF9idWZmZXIgKmJ1ZnApOworc3RhdGljIGNoYXIgKmdvYmJsZV9saW5lIChpbnQgZmQs IHN0cnVjdCB0ZXJtY2FwX2J1ZmZlciAqYnVmcCwKKwkJCSAgY2hhciAqYXBwZW5kX2VuZCk7 CitzdGF0aWMgaW50IGNvbXBhcmVfY29udGluIChjaGFyICpzdHIxLCBjaGFyICpzdHIyKTsK IHN0YXRpYyBpbnQgbmFtZV9tYXRjaCAoY2hhciAqbGluZSwgY2hhciAqbmFtZSk7CiAKICNp ZmRlZiBNU0RPUyAvKiBNVywgTWF5IDE5OTMgKi8KQEAgLTM1NiwxNCArMzU3LDE0IEBACiBp bnQKIHRnZXRlbnQgKGNoYXIgKmJwLCBjb25zdCBjaGFyICpuYW1lKQogewotICByZWdpc3Rl ciBjaGFyICp0ZXJtY2FwX25hbWU7Ci0gIHJlZ2lzdGVyIGludCBmZDsKKyAgY2hhciAqdGVy bWNhcF9uYW1lOworICBpbnQgZmQ7CiAgIHN0cnVjdCB0ZXJtY2FwX2J1ZmZlciBidWY7Ci0g IHJlZ2lzdGVyIGNoYXIgKmJwMTsKKyAgY2hhciAqYnAxOwogICBjaGFyICp0Y19zZWFyY2hf cG9pbnQ7CiAgIGNoYXIgKnRlcm07CiAgIHB0cmRpZmZfdCBtYWxsb2Nfc2l6ZSA9IDA7Ci0g IHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgY2hhciAqdGNlbnYgPSBOVUxMOwkJLyog VEVSTUNBUCB2YWx1ZSwgaWYgaXQgY29udGFpbnMgOnRjPS4gICovCiAgIGNoYXIgKmluZGly ZWN0ID0gTlVMTDsJLyogVGVybWluYWwgdHlwZSBpbiA6dGM9IGluIFRFUk1DQVAgdmFsdWUu ICAqLwogICBpbnQgZmlsZXA7CkBAIC01MTgsOSArNTE5LDkgQEAKICAgIG9yIDAgaWYgbm8g ZW50cnkgaXMgZm91bmQgaW4gdGhlIGZpbGUuICAqLwogCiBzdGF0aWMgaW50Ci1zY2FuX2Zp bGUgKGNoYXIgKnN0ciwgaW50IGZkLCByZWdpc3RlciBzdHJ1Y3QgdGVybWNhcF9idWZmZXIg KmJ1ZnApCitzY2FuX2ZpbGUgKGNoYXIgKnN0ciwgaW50IGZkLCBzdHJ1Y3QgdGVybWNhcF9i dWZmZXIgKmJ1ZnApCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmVuZDsKKyAgY2hhciAqZW5kOwog CiAgIGJ1ZnAtPnB0ciA9IGJ1ZnAtPmJlZzsKICAgYnVmcC0+ZnVsbCA9IDA7CkBAIC01NTcs NyArNTU4LDcgQEAKIHN0YXRpYyBpbnQKIG5hbWVfbWF0Y2ggKGNoYXIgKmxpbmUsIGNoYXIg Km5hbWUpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKnRlbTsKKyAgY2hhciAqdGVtOwogCiAgIGlm ICghY29tcGFyZV9jb250aW4gKGxpbmUsIG5hbWUpKQogICAgIHJldHVybiAxOwpAQCAtNTcw LDkgKzU3MSw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBhcmVfY29udGluIChyZWdpc3Rl ciBjaGFyICpzdHIxLCByZWdpc3RlciBjaGFyICpzdHIyKQorY29tcGFyZV9jb250aW4gKGNo YXIgKnN0cjEsIGNoYXIgKnN0cjIpCiB7Ci0gIHJlZ2lzdGVyIGludCBjMSwgYzI7CisgIGlu dCBjMSwgYzI7CiAgIHdoaWxlICgxKQogICAgIHsKICAgICAgIGMxID0gKnN0cjErKzsKQEAg LTYxMCwxMSArNjExLDExIEBACiAgICB0aGluZyBhcyBvbmUgbGluZS4gIFRoZSBjYWxsZXIg ZGVjaWRlcyB3aGVuIGEgbGluZSBpcyBjb250aW51ZWQuICAqLwogCiBzdGF0aWMgY2hhciAq Ci1nb2JibGVfbGluZSAoaW50IGZkLCByZWdpc3RlciBzdHJ1Y3QgdGVybWNhcF9idWZmZXIg KmJ1ZnAsIGNoYXIgKmFwcGVuZF9lbmQpCitnb2JibGVfbGluZSAoaW50IGZkLCBzdHJ1Y3Qg dGVybWNhcF9idWZmZXIgKmJ1ZnAsIGNoYXIgKmFwcGVuZF9lbmQpCiB7Ci0gIHJlZ2lzdGVy IGNoYXIgKmVuZDsKLSAgcmVnaXN0ZXIgaW50IG5yZWFkOwotICByZWdpc3RlciBjaGFyICpi dWYgPSBidWZwLT5iZWc7CisgIGNoYXIgKmVuZDsKKyAgaW50IG5yZWFkOworICBjaGFyICpi dWYgPSBidWZwLT5iZWc7CiAKICAgaWYgKCFhcHBlbmRfZW5kKQogICAgIGFwcGVuZF9lbmQg PSBidWZwLT5wdHI7CkBAIC02NjMsNyArNjY0LDcgQEAKIHRwcmludCAoY2hhciAqY2FwKQog ewogICBjaGFyICp4ID0gdGdldHN0ciAoY2FwLCAwKTsKLSAgcmVnaXN0ZXIgY2hhciAqeTsK KyAgY2hhciAqeTsKIAogICBwcmludGYgKCIlczogIiwgY2FwKTsKICAgaWYgKHgpCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3JjL3RleHRwcm9wLmMnCi0tLSBzcmMvdGV4dHByb3AuYwkyMDEy LTA1LTI1IDE4OjE5OjI0ICswMDAwCisrKyBzcmMvdGV4dHByb3AuYwkyMDEyLTA2LTAzIDA1 OjUzOjM4ICswMDAwCkBAIC0xMTksNyArMTE5LDcgQEAKIElOVEVSVkFMCiB2YWxpZGF0ZV9p bnRlcnZhbF9yYW5nZSAoTGlzcF9PYmplY3Qgb2JqZWN0LCBMaXNwX09iamVjdCAqYmVnaW4s IExpc3BfT2JqZWN0ICplbmQsIGludCBmb3JjZSkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwg aTsKKyAgSU5URVJWQUwgaTsKICAgcHRyZGlmZl90IHNlYXJjaHBvczsKIAogICBDSEVDS19T VFJJTkdfT1JfQlVGRkVSIChvYmplY3QpOwpAQCAtMTQxLDcgKzE0MSw3IEBACiAKICAgaWYg KEJVRkZFUlAgKG9iamVjdCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZl ciAqYiA9IFhCVUZGRVIgKG9iamVjdCk7CisgICAgICBzdHJ1Y3QgYnVmZmVyICpiID0gWEJV RkZFUiAob2JqZWN0KTsKIAogICAgICAgaWYgKCEoQlVGX0JFR1YgKGIpIDw9IFhJTlQgKCpi ZWdpbikgJiYgWElOVCAoKmJlZ2luKSA8PSBYSU5UICgqZW5kKQogCSAgICAmJiBYSU5UICgq ZW5kKSA8PSBCVUZfWlYgKGIpKSkKQEAgLTE5MCw4ICsxOTAsOCBAQAogCiAgIGlmIChDT05T UCAobGlzdCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgaW50IGk7Ci0gICAgICByZWdpc3Rl ciBMaXNwX09iamVjdCB0YWlsOworICAgICAgaW50IGk7CisgICAgICBMaXNwX09iamVjdCB0 YWlsOwogICAgICAgZm9yIChpID0gMCwgdGFpbCA9IGxpc3Q7IENPTlNQICh0YWlsKTsgaSsr KQogCXsKIAkgIHRhaWwgPSBYQ0RSICh0YWlsKTsKQEAgLTIxMSw4ICsyMTEsOCBAQAogc3Rh dGljIGludAogaW50ZXJ2YWxfaGFzX2FsbF9wcm9wZXJ0aWVzIChMaXNwX09iamVjdCBwbGlz dCwgSU5URVJWQUwgaSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwy LCBzeW0xOwotICByZWdpc3RlciBpbnQgZm91bmQ7CisgIExpc3BfT2JqZWN0IHRhaWwxLCB0 YWlsMiwgc3ltMTsKKyAgaW50IGZvdW5kOwogCiAgIC8qIEdvIHRocm91Z2ggZWFjaCBlbGVt ZW50IG9mIFBMSVNULiAgKi8KICAgZm9yICh0YWlsMSA9IHBsaXN0OyBDT05TUCAodGFpbDEp OyB0YWlsMSA9IEZjZHIgKFhDRFIgKHRhaWwxKSkpCkBAIC0yNDcsNyArMjQ3LDcgQEAKIHN0 YXRpYyBpbmxpbmUgaW50CiBpbnRlcnZhbF9oYXNfc29tZV9wcm9wZXJ0aWVzIChMaXNwX09i amVjdCBwbGlzdCwgSU5URVJWQUwgaSkKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGFp bDEsIHRhaWwyLCBzeW07CisgIExpc3BfT2JqZWN0IHRhaWwxLCB0YWlsMiwgc3ltOwogCiAg IC8qIEdvIHRocm91Z2ggZWFjaCBlbGVtZW50IG9mIFBMSVNULiAgKi8KICAgZm9yICh0YWls MSA9IHBsaXN0OyBDT05TUCAodGFpbDEpOyB0YWlsMSA9IEZjZHIgKFhDRFIgKHRhaWwxKSkp CkBAIC0yNjksNyArMjY5LDcgQEAKIHN0YXRpYyBpbmxpbmUgaW50CiBpbnRlcnZhbF9oYXNf c29tZV9wcm9wZXJ0aWVzX2xpc3QgKExpc3BfT2JqZWN0IGxpc3QsIElOVEVSVkFMIGkpCiB7 Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRhaWwxLCB0YWlsMiwgc3ltOworICBMaXNwX09i amVjdCB0YWlsMSwgdGFpbDIsIHN5bTsKIAogICAvKiBHbyB0aHJvdWdoIGVhY2ggZWxlbWVu dCBvZiBMSVNULiAgKi8KICAgZm9yICh0YWlsMSA9IGxpc3Q7IENPTlNQICh0YWlsMSk7IHRh aWwxID0gWENEUiAodGFpbDEpKQpAQCAtMzU3LDggKzM1Nyw4IEBACiBhZGRfcHJvcGVydGll cyAoTGlzcF9PYmplY3QgcGxpc3QsIElOVEVSVkFMIGksIExpc3BfT2JqZWN0IG9iamVjdCkK IHsKICAgTGlzcF9PYmplY3QgdGFpbDEsIHRhaWwyLCBzeW0xLCB2YWwxOwotICByZWdpc3Rl ciBpbnQgY2hhbmdlZCA9IDA7Ci0gIHJlZ2lzdGVyIGludCBmb3VuZDsKKyAgaW50IGNoYW5n ZWQgPSAwOworICBpbnQgZm91bmQ7CiAgIHN0cnVjdCBnY3BybyBnY3BybzEsIGdjcHJvMiwg Z2Nwcm8zOwogCiAgIHRhaWwxID0gcGxpc3Q7CkBAIC0zODIsNyArMzgyLDcgQEAKIAkgIHsK IAkgICAgLyogTm8gbmVlZCB0byBnY3BybywgYmVjYXVzZSB0YWlsMiBwcm90ZWN0cyB0aGlz CiAJICAgICAgIGFuZCBpdCBtdXN0IGJlIGEgY29ucyBjZWxsICh3ZSBnZXQgYW4gZXJyb3Ig b3RoZXJ3aXNlKS4gICovCi0JICAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRoaXNfY2RyOwor CSAgICBMaXNwX09iamVjdCB0aGlzX2NkcjsKIAogCSAgICB0aGlzX2NkciA9IFhDRFIgKHRh aWwyKTsKIAkgICAgLyogRm91bmQgdGhlIHByb3BlcnR5LiAgTm93IGNoZWNrIGl0cyB2YWx1 ZS4gICovCkBAIC00MzIsOCArNDMyLDggQEAKIHN0YXRpYyBpbnQKIHJlbW92ZV9wcm9wZXJ0 aWVzIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgbGlzdCwgSU5URVJWQUwgaSwg TGlzcF9PYmplY3Qgb2JqZWN0KQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0YWlsMSwg dGFpbDIsIHN5bSwgY3VycmVudF9wbGlzdDsKLSAgcmVnaXN0ZXIgaW50IGNoYW5nZWQgPSAw OworICBMaXNwX09iamVjdCB0YWlsMSwgdGFpbDIsIHN5bSwgY3VycmVudF9wbGlzdDsKKyAg aW50IGNoYW5nZWQgPSAwOwogCiAgIC8qIE5vbnplcm8gbWVhbnMgdGFpbDEgaXMgYSBwbGlz dCwgb3RoZXJ3aXNlIGl0IGlzIGEgbGlzdC4gICovCiAgIGludCB1c2VfcGxpc3Q7CkBAIC00 NjYsNyArNDY2LDcgQEAKICAgICAgIHRhaWwyID0gY3VycmVudF9wbGlzdDsKICAgICAgIHdo aWxlICghIE5JTFAgKHRhaWwyKSkKIAl7Ci0JICByZWdpc3RlciBMaXNwX09iamVjdCB0aGlz OworCSAgTGlzcF9PYmplY3QgdGhpczsKIAkgIHRoaXMgPSBYQ0RSIChYQ0RSICh0YWlsMikp OwogCSAgaWYgKENPTlNQICh0aGlzKSAmJiBFUSAoc3ltLCBYQ0FSICh0aGlzKSkpCiAJICAg IHsKQEAgLTUxMiw3ICs1MTIsNyBAQAogSU5URVJWQUwKIGludGVydmFsX29mIChwdHJkaWZm X3QgcG9zaXRpb24sIExpc3BfT2JqZWN0IG9iamVjdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJW QUwgaTsKKyAgSU5URVJWQUwgaTsKICAgcHRyZGlmZl90IGJlZywgZW5kOwogCiAgIGlmIChO SUxQIChvYmplY3QpKQpAQCAtNTI0LDcgKzUyNCw3IEBACiAKICAgaWYgKEJVRkZFUlAgKG9i amVjdCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgc3RydWN0IGJ1ZmZlciAqYiA9IFhCVUZG RVIgKG9iamVjdCk7CisgICAgICBzdHJ1Y3QgYnVmZmVyICpiID0gWEJVRkZFUiAob2JqZWN0 KTsKIAogICAgICAgYmVnID0gQlVGX0JFR1YgKGIpOwogICAgICAgZW5kID0gQlVGX1pWIChi KTsKQEAgLTU1NCw3ICs1NTQsNyBAQAogSWYgUE9TSVRJT04gaXMgYXQgdGhlIGVuZCBvZiBP QkpFQ1QsIHRoZSB2YWx1ZSBpcyBuaWwuICAqLykKICAgKExpc3BfT2JqZWN0IHBvc2l0aW9u LCBMaXNwX09iamVjdCBvYmplY3QpCiB7Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIGk7CisgIElO VEVSVkFMIGk7CiAKICAgaWYgKE5JTFAgKG9iamVjdCkpCiAgICAgWFNFVEJVRkZFUiAob2Jq ZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC01OTMsNyArNTkzLDggQEAKICAgIHdpbmRvdy1z cGVjaWZpYyBvdmVybGF5cyBhcmUgY29uc2lkZXJlZCBvbmx5IGlmIHRoZXkgYXJlIGFzc29j aWF0ZWQKICAgIHdpdGggT0JKRUNULiAqLwogTGlzcF9PYmplY3QKLWdldF9jaGFyX3Byb3Bl cnR5X2FuZF9vdmVybGF5IChMaXNwX09iamVjdCBwb3NpdGlvbiwgcmVnaXN0ZXIgTGlzcF9P YmplY3QgcHJvcCwgTGlzcF9PYmplY3Qgb2JqZWN0LCBMaXNwX09iamVjdCAqb3ZlcmxheSkK K2dldF9jaGFyX3Byb3BlcnR5X2FuZF9vdmVybGF5IChMaXNwX09iamVjdCBwb3NpdGlvbiwg TGlzcF9PYmplY3QgcHJvcCwKKwkJCSAgICAgICBMaXNwX09iamVjdCBvYmplY3QsIExpc3Bf T2JqZWN0ICpvdmVybGF5KQogewogICBzdHJ1Y3Qgd2luZG93ICp3ID0gMDsKIApAQCAtOTI2 LDcgKzkyNyw3IEBACiBwYXN0IHBvc2l0aW9uIExJTUlUOyByZXR1cm4gTElNSVQgaWYgbm90 aGluZyBpcyBmb3VuZCBiZWZvcmUgTElNSVQuICAqLykKICAgKExpc3BfT2JqZWN0IHBvc2l0 aW9uLCBMaXNwX09iamVjdCBvYmplY3QsIExpc3BfT2JqZWN0IGxpbWl0KQogewotICByZWdp c3RlciBJTlRFUlZBTCBpLCBuZXh0OworICBJTlRFUlZBTCBpLCBuZXh0OwogCiAgIGlmIChO SUxQIChvYmplY3QpKQogICAgIFhTRVRCVUZGRVIgKG9iamVjdCwgY3VycmVudF9idWZmZXIp OwpAQCAtOTkxLDggKzk5Miw4IEBACiBwYXN0IHBvc2l0aW9uIExJTUlUOyByZXR1cm4gTElN SVQgaWYgbm90aGluZyBpcyBmb3VuZCBiZWZvcmUgTElNSVQuICAqLykKICAgKExpc3BfT2Jq ZWN0IHBvc2l0aW9uLCBMaXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVjdCBvYmplY3QsIExp c3BfT2JqZWN0IGxpbWl0KQogewotICByZWdpc3RlciBJTlRFUlZBTCBpLCBuZXh0OwotICBy ZWdpc3RlciBMaXNwX09iamVjdCBoZXJlX3ZhbDsKKyAgSU5URVJWQUwgaSwgbmV4dDsKKyAg TGlzcF9PYmplY3QgaGVyZV92YWw7CiAKICAgaWYgKE5JTFAgKG9iamVjdCkpCiAgICAgWFNF VEJVRkZFUiAob2JqZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC0xMDM4LDcgKzEwMzksNyBA QAogYmFjayBwYXN0IHBvc2l0aW9uIExJTUlUOyByZXR1cm4gTElNSVQgaWYgbm90aGluZyBp cyBmb3VuZCB1bnRpbCBMSU1JVC4gICovKQogICAoTGlzcF9PYmplY3QgcG9zaXRpb24sIExp c3BfT2JqZWN0IG9iamVjdCwgTGlzcF9PYmplY3QgbGltaXQpCiB7Ci0gIHJlZ2lzdGVyIElO VEVSVkFMIGksIHByZXZpb3VzOworICBJTlRFUlZBTCBpLCBwcmV2aW91czsKIAogICBpZiAo TklMUCAob2JqZWN0KSkKICAgICBYU0VUQlVGRkVSIChvYmplY3QsIGN1cnJlbnRfYnVmZmVy KTsKQEAgLTEwODYsOCArMTA4Nyw4IEBACiBiYWNrIHBhc3QgcG9zaXRpb24gTElNSVQ7IHJl dHVybiBMSU1JVCBpZiBub3RoaW5nIGlzIGZvdW5kIHVudGlsIExJTUlULiAgKi8pCiAgIChM aXNwX09iamVjdCBwb3NpdGlvbiwgTGlzcF9PYmplY3QgcHJvcCwgTGlzcF9PYmplY3Qgb2Jq ZWN0LCBMaXNwX09iamVjdCBsaW1pdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgaSwgcHJl dmlvdXM7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGhlcmVfdmFsOworICBJTlRFUlZBTCBp LCBwcmV2aW91czsKKyAgTGlzcF9PYmplY3QgaGVyZV92YWw7CiAKICAgaWYgKE5JTFAgKG9i amVjdCkpCiAgICAgWFNFVEJVRkZFUiAob2JqZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC0x MTM1LDkgKzExMzYsOSBAQAogUmV0dXJuIHQgaWYgYW55IHByb3BlcnR5IHZhbHVlIGFjdHVh bGx5IGNoYW5nZWQsIG5pbCBvdGhlcndpc2UuICAqLykKICAgKExpc3BfT2JqZWN0IHN0YXJ0 LCBMaXNwX09iamVjdCBlbmQsIExpc3BfT2JqZWN0IHByb3BlcnRpZXMsIExpc3BfT2JqZWN0 IG9iamVjdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJWQUwgaSwgdW5jaGFuZ2VkOwotICByZWdp c3RlciBwdHJkaWZmX3QgcywgbGVuOwotICByZWdpc3RlciBpbnQgbW9kaWZpZWQgPSAwOwor ICBJTlRFUlZBTCBpLCB1bmNoYW5nZWQ7CisgIHB0cmRpZmZfdCBzLCBsZW47CisgIGludCBt b2RpZmllZCA9IDA7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7CiAKICAgcHJvcGVydGllcyA9 IHZhbGlkYXRlX3BsaXN0IChwcm9wZXJ0aWVzKTsKQEAgLTEyNzYsNyArMTI3Nyw3IEBACiBM aXNwX09iamVjdAogc2V0X3RleHRfcHJvcGVydGllcyAoTGlzcF9PYmplY3Qgc3RhcnQsIExp c3BfT2JqZWN0IGVuZCwgTGlzcF9PYmplY3QgcHJvcGVydGllcywgTGlzcF9PYmplY3Qgb2Jq ZWN0LCBMaXNwX09iamVjdCBjb2hlcmVudF9jaGFuZ2VfcCkKIHsKLSAgcmVnaXN0ZXIgSU5U RVJWQUwgaTsKKyAgSU5URVJWQUwgaTsKICAgTGlzcF9PYmplY3Qgb3N0YXJ0LCBvZW5kOwog CiAgIG9zdGFydCA9IHN0YXJ0OwpAQCAtMTM0MCw4ICsxMzQxLDggQEAKIHZvaWQKIHNldF90 ZXh0X3Byb3BlcnRpZXNfMSAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwg TGlzcF9PYmplY3QgcHJvcGVydGllcywgTGlzcF9PYmplY3QgYnVmZmVyLCBJTlRFUlZBTCBp KQogewotICByZWdpc3RlciBJTlRFUlZBTCBwcmV2X2NoYW5nZWQgPSBOVUxMX0lOVEVSVkFM OwotICByZWdpc3RlciBwdHJkaWZmX3QgcywgbGVuOworICBJTlRFUlZBTCBwcmV2X2NoYW5n ZWQgPSBOVUxMX0lOVEVSVkFMOworICBwdHJkaWZmX3QgcywgbGVuOwogICBJTlRFUlZBTCB1 bmNoYW5nZWQ7CiAKICAgaWYgKFhJTlQgKHN0YXJ0KSA8IFhJTlQgKGVuZCkpCkBAIC0xNDMz LDkgKzE0MzQsOSBAQAogVXNlIGBzZXQtdGV4dC1wcm9wZXJ0aWVzJyBpZiB5b3Ugd2FudCB0 byByZW1vdmUgYWxsIHRleHQgcHJvcGVydGllcy4gICovKQogICAoTGlzcF9PYmplY3Qgc3Rh cnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmplY3QgcHJvcGVydGllcywgTGlzcF9PYmpl Y3Qgb2JqZWN0KQogewotICByZWdpc3RlciBJTlRFUlZBTCBpLCB1bmNoYW5nZWQ7Ci0gIHJl Z2lzdGVyIHB0cmRpZmZfdCBzLCBsZW47Ci0gIHJlZ2lzdGVyIGludCBtb2RpZmllZCA9IDA7 CisgIElOVEVSVkFMIGksIHVuY2hhbmdlZDsKKyAgcHRyZGlmZl90IHMsIGxlbjsKKyAgaW50 IG1vZGlmaWVkID0gMDsKIAogICBpZiAoTklMUCAob2JqZWN0KSkKICAgICBYU0VUQlVGRkVS IChvYmplY3QsIGN1cnJlbnRfYnVmZmVyKTsKQEAgLTE1MTksOSArMTUyMCw5IEBACiBSZXR1 cm4gdCBpZiBhbnkgcHJvcGVydHkgd2FzIGFjdHVhbGx5IHJlbW92ZWQsIG5pbCBvdGhlcndp c2UuICAqLykKICAgKExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBlbmQsIExpc3Bf T2JqZWN0IGxpc3Rfb2ZfcHJvcGVydGllcywgTGlzcF9PYmplY3Qgb2JqZWN0KQogewotICBy ZWdpc3RlciBJTlRFUlZBTCBpLCB1bmNoYW5nZWQ7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBz LCBsZW47Ci0gIHJlZ2lzdGVyIGludCBtb2RpZmllZCA9IDA7CisgIElOVEVSVkFMIGksIHVu Y2hhbmdlZDsKKyAgcHRyZGlmZl90IHMsIGxlbjsKKyAgaW50IG1vZGlmaWVkID0gMDsKICAg TGlzcF9PYmplY3QgcHJvcGVydGllczsKICAgcHJvcGVydGllcyA9IGxpc3Rfb2ZfcHJvcGVy dGllczsKIApAQCAtMTYyOSw4ICsxNjMwLDggQEAKIG1hcmtlcnMpLiAgSWYgT0JKRUNUIGlz IGEgc3RyaW5nLCBTVEFSVCBhbmQgRU5EIGFyZSAwLWJhc2VkIGluZGljZXMgaW50byBpdC4g ICovKQogICAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmpl Y3QgcHJvcGVydHksIExpc3BfT2JqZWN0IHZhbHVlLCBMaXNwX09iamVjdCBvYmplY3QpCiB7 Ci0gIHJlZ2lzdGVyIElOVEVSVkFMIGk7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBlLCBwb3M7 CisgIElOVEVSVkFMIGk7CisgIHB0cmRpZmZfdCBlLCBwb3M7CiAKICAgaWYgKE5JTFAgKG9i amVjdCkpCiAgICAgWFNFVEJVRkZFUiAob2JqZWN0LCBjdXJyZW50X2J1ZmZlcik7CkBAIC0x NjY1LDggKzE2NjYsOCBAQAogbWFya2VycykuICBJZiBPQkpFQ1QgaXMgYSBzdHJpbmcsIFNU QVJUIGFuZCBFTkQgYXJlIDAtYmFzZWQgaW5kaWNlcyBpbnRvIGl0LiAgKi8pCiAgIChMaXNw X09iamVjdCBzdGFydCwgTGlzcF9PYmplY3QgZW5kLCBMaXNwX09iamVjdCBwcm9wZXJ0eSwg TGlzcF9PYmplY3QgdmFsdWUsIExpc3BfT2JqZWN0IG9iamVjdCkKIHsKLSAgcmVnaXN0ZXIg SU5URVJWQUwgaTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHMsIGU7CisgIElOVEVSVkFMIGk7 CisgIHB0cmRpZmZfdCBzLCBlOwogCiAgIGlmIChOSUxQIChvYmplY3QpKQogICAgIFhTRVRC VUZGRVIgKG9iamVjdCwgY3VycmVudF9idWZmZXIpOwpAQCAtMjAxNSwxMCArMjAxNiwxMCBA QAogdmVyaWZ5X2ludGVydmFsX21vZGlmaWNhdGlvbiAoc3RydWN0IGJ1ZmZlciAqYnVmLAog CQkJICAgICAgcHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3QgZW5kKQogewotICByZWdpc3Rl ciBJTlRFUlZBTCBpbnRlcnZhbHMgPSBCVUZfSU5URVJWQUxTIChidWYpOwotICByZWdpc3Rl ciBJTlRFUlZBTCBpOworICBJTlRFUlZBTCBpbnRlcnZhbHMgPSBCVUZfSU5URVJWQUxTIChi dWYpOworICBJTlRFUlZBTCBpOwogICBMaXNwX09iamVjdCBob29rczsKLSAgcmVnaXN0ZXIg TGlzcF9PYmplY3QgcHJldl9tb2RfaG9va3M7CisgIExpc3BfT2JqZWN0IHByZXZfbW9kX2hv b2tzOwogICBMaXNwX09iamVjdCBtb2RfaG9va3M7CiAgIHN0cnVjdCBnY3BybyBnY3BybzE7 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdHBhcmFtLmMnCi0tLSBzcmMvdHBhcmFtLmMJ MjAxMi0wNS0yMSAxNTozNjo1NCArMDAwMAorKysgc3JjL3RwYXJhbS5jCTIwMTItMDYtMDMg MDU6NTM6MzggKzAwMDAKQEAgLTY5LDE2ICs2OSwxNiBAQAogCiBzdGF0aWMgY2hhciAqCiB0 cGFyYW0xIChjb25zdCBjaGFyICpzdHJpbmcsIGNoYXIgKm91dHN0cmluZywgaW50IGxlbiwK LQkgY2hhciAqdXAsIGNoYXIgKmxlZnQsIHJlZ2lzdGVyIGludCAqYXJncCkKKwkgY2hhciAq dXAsIGNoYXIgKmxlZnQsIGludCAqYXJncCkKIHsKLSAgcmVnaXN0ZXIgaW50IGM7Ci0gIHJl Z2lzdGVyIGNvbnN0IGNoYXIgKnAgPSBzdHJpbmc7Ci0gIHJlZ2lzdGVyIGNoYXIgKm9wID0g b3V0c3RyaW5nOworICBpbnQgYzsKKyAgY29uc3QgY2hhciAqcCA9IHN0cmluZzsKKyAgY2hh ciAqb3AgPSBvdXRzdHJpbmc7CiAgIGNoYXIgKm91dGVuZDsKICAgY2hhciAqbmV3ID0gMDsK ICAgcHRyZGlmZl90IG91dGxlbiA9IDA7CiAKLSAgcmVnaXN0ZXIgaW50IHRlbTsKKyAgaW50 IHRlbTsKICAgaW50ICpvbGRfYXJncCA9IGFyZ3A7ICAgICAgICAgICAgICAgICAvKiBjYW4g bW92ZSAqLwogICBpbnQgKmZpeGVkX2FyZ3AgPSBhcmdwOyAgICAgICAgICAgICAgIC8qIG5l dmVyIG1vdmVzICovCiAgIGludCBleHBsaWNpdF9wYXJhbV9wID0gMDsgICAgICAgICAgICAg Lyogc2V0IGJ5ICVwICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3VuZG8uYycKLS0tIHNy Yy91bmRvLmMJMjAxMi0wNS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL3VuZG8uYwkyMDEy LTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC00NTIsNyArNDUyLDcgQEAKICAgc3RydWN0IGdj cHJvIGdjcHJvMSwgZ2Nwcm8yOwogICBMaXNwX09iamVjdCBuZXh0OwogICBwdHJkaWZmX3Qg Y291bnQgPSBTUEVDUERMX0lOREVYICgpOwotICByZWdpc3RlciBFTUFDU19JTlQgYXJnOwor ICBFTUFDU19JTlQgYXJnOwogICBMaXNwX09iamVjdCBvbGRsaXN0OwogICBpbnQgZGlkX2Fw cGx5ID0gMDsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy91bmV4Y29mZi5jJwotLS0gc3Jj L3VuZXhjb2ZmLmMJMjAxMi0wMS0xOSAwNzoyMToyNSArMDAwMAorKysgc3JjL3VuZXhjb2Zm LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTYxLDcgKzE2MSw3IEBACiAgIGF1 dG8gc3RydWN0IHNjbmhkciBmX2RoZHI7CQkvKiBEYXRhIHNlY3Rpb24gaGVhZGVyICovCiAg IGF1dG8gc3RydWN0IHNjbmhkciBmX2JoZHI7CQkvKiBCc3Mgc2VjdGlvbiBoZWFkZXIgKi8K ICAgYXV0byBzdHJ1Y3Qgc2NuaGRyIHNjbnRlbXA7CQkvKiBUZW1wb3Jhcnkgc2VjdGlvbiBo ZWFkZXIgKi8KLSAgcmVnaXN0ZXIgaW50IHNjbnM7CisgIGludCBzY25zOwogICB1bnNpZ25l ZCBpbnQgYnNzX3N0YXJ0OwogICB1bnNpZ25lZCBpbnQgZGF0YV9zdGFydDsKIApAQCAtMzEz LDcgKzMxMyw3IEBACiB2b2lkCiB3cml0ZV9zZWdtZW50IChpbnQgbmV3LCBjb25zdCBjaGFy ICpwdHIsIGNvbnN0IGNoYXIgKmVuZCkKIHsKLSAgcmVnaXN0ZXIgaW50IGksIG53cml0ZSwg cmV0OworICBpbnQgaSwgbndyaXRlLCByZXQ7CiAgIC8qIFRoaXMgaXMgdGhlIG5vcm1hbCBh bW91bnQgdG8gd3JpdGUgYXQgb25jZS4KICAgICAgSXQgaXMgdGhlIHNpemUgb2YgYmxvY2sg dGhhdCBORlMgdXNlcy4gICovCiAgIGludCB3cml0ZXNpemUgPSAxIDw8IDEzOwpAQCAtMzU4 LDggKzM1OCw4IEBACiBzdGF0aWMgaW50CiBjb3B5X3RleHRfYW5kX2RhdGEgKGludCBuZXcs IGludCBhX291dCkKIHsKLSAgcmVnaXN0ZXIgY2hhciAqZW5kOwotICByZWdpc3RlciBjaGFy ICpwdHI7CisgIGNoYXIgKmVuZDsKKyAgY2hhciAqcHRyOwogCiAjaWZkZWYgTVNET1MKICAg LyogRHVtcCB0aGUgb3JpZ2luYWwgdGFibGUgb2YgZXhjZXB0aW9uIGhhbmRsZXJzLCBub3Qg dGhlIG9uZQpAQCAtNDc5LDggKzQ3OSw4IEBACiBpbnQKIGFkanVzdF9sbm5vcHRycyAoaW50 IHdyaXRlZGVzYywgaW50IHJlYWRkZXNjLCBjb25zdCBjaGFyICpuZXdfbmFtZSkKIHsKLSAg cmVnaXN0ZXIgaW50IG5zeW1zOwotICByZWdpc3RlciBpbnQgbmV3OworICBpbnQgbnN5bXM7 CisgIGludCBuZXc7CiAgIHN0cnVjdCBzeW1lbnQgc3ltZW50cnk7CiAgIHVuaW9uIGF1eGVu dCBhdXhlbnRyeTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy92bS1saW1pdC5jJwotLS0g c3JjL3ZtLWxpbWl0LmMJMjAxMi0wNS0yMSAxNTozNjo1NCArMDAwMAorKysgc3JjL3ZtLWxp bWl0LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTcwLDcgKzE3MCw3IEBACiAj ZW5kaWYKICAgZXh0ZXJuIFBPSU5URVIgKCpfX21vcmVjb3JlKSAobG9uZyk7CiAKLSAgcmVn aXN0ZXIgUE9JTlRFUiBjcDsKKyAgUE9JTlRFUiBjcDsKICAgdW5zaWduZWQgbG9uZyBmaXZl X3BlcmNlbnQ7CiAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zaXplOwogICBlbnVtIHdhcm5sZXZl bCBuZXdfd2FybmxldmVsOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93aW5kb3cuYycKLS0t IHNyYy93aW5kb3cuYwkyMDEyLTA2LTAxIDAzOjQxOjAzICswMDAwCisrKyBzcmMvd2luZG93 LmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApAQCAtMTMxLDcgKzEzMSw3IEBACiBzdGF0 aWMgRU1BQ1NfSU5UIHdpbmRvd19zY3JvbGxfcHJlc2VydmVfdnBvczsKIAwKIHN0YXRpYyBz dHJ1Y3Qgd2luZG93ICoKLWRlY29kZV93aW5kb3cgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHdp bmRvdykKK2RlY29kZV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsKICAgaWYgKE5J TFAgKHdpbmRvdykpCiAgICAgcmV0dXJuIFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdyk7CkBA IC0xNDEsNyArMTQxLDcgQEAKIH0KIAogc3RhdGljIHN0cnVjdCB3aW5kb3cgKgotZGVjb2Rl X2FueV93aW5kb3cgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IHdpbmRvdykKK2RlY29kZV9hbnlf d2luZG93IChMaXNwX09iamVjdCB3aW5kb3cpCiB7CiAgIGlmIChOSUxQICh3aW5kb3cpKQog ICAgIHJldHVybiBYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpOwpAQCAtMzE5LDggKzMxOSw4 IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIHNlbGVjdF93aW5kb3cgKExpc3BfT2JqZWN0IHdp bmRvdywgTGlzcF9PYmplY3Qgbm9yZWNvcmQsIGludCBpbmhpYml0X3BvaW50X3N3YXApCiB7 Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5k b3cgKm93OworICBzdHJ1Y3Qgd2luZG93ICp3OworICBzdHJ1Y3Qgd2luZG93ICpvdzsKICAg c3RydWN0IGZyYW1lICpzZjsKIAogICBDSEVDS19MSVZFX1dJTkRPVyAod2luZG93KTsKQEAg LTM3OCw3ICszNzgsNyBAQAogICAgICByZWRpc3BsYXlfd2luZG93IGhhcyBhbHRlcmVkIHBv aW50IGFmdGVyIHNjcm9sbGluZywKICAgICAgYmVjYXVzZSBpdCBtYWtlcyB0aGUgY2hhbmdl IG9ubHkgaW4gdGhlIHdpbmRvdy4gICovCiAgIHsKLSAgICByZWdpc3RlciBwdHJkaWZmX3Qg bmV3X3BvaW50ID0gbWFya2VyX3Bvc2l0aW9uICh3LT5wb2ludG0pOworICAgIHB0cmRpZmZf dCBuZXdfcG9pbnQgPSBtYXJrZXJfcG9zaXRpb24gKHctPnBvaW50bSk7CiAgICAgaWYgKG5l d19wb2ludCA8IEJFR1YpCiAgICAgICBTRVRfUFQgKEJFR1YpOwogICAgIGVsc2UgaWYgKG5l d19wb2ludCA+IFpWKQpAQCAtNDAyLDcgKzQwMiw3IEBACiAKIE5vdGUgdGhhdCB0aGUgbWFp biBlZGl0b3IgY29tbWFuZCBsb29wIHNldHMgdGhlIGN1cnJlbnQgYnVmZmVyIHRvIHRoZQog YnVmZmVyIG9mIHRoZSBzZWxlY3RlZCB3aW5kb3cgYmVmb3JlIGVhY2ggY29tbWFuZC4gICov KQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBub3JlY29y ZCkKKyAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3Qgbm9yZWNvcmQpCiB7CiAg IHJldHVybiBzZWxlY3Rfd2luZG93ICh3aW5kb3csIG5vcmVjb3JkLCAwKTsKIH0KQEAgLTQ4 Myw3ICs0ODMsNyBAQAogZm9yIGZ1dHVyZSB1c2UuICAqLykKICAgKExpc3BfT2JqZWN0IHdp bmRvdywgTGlzcF9PYmplY3QgbGltaXQpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cg KncgPSBkZWNvZGVfYW55X3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9 IGRlY29kZV9hbnlfd2luZG93ICh3aW5kb3cpOwogCiAgIHctPmNvbWJpbmF0aW9uX2xpbWl0 ID0gbGltaXQ7CiAKQEAgLTcxMSw5ICs3MTEsOSBAQAogYmV5b25kIFZBTFVFLCB0aGUgZnVu Y3Rpb25zIGluIGByZWRpc3BsYXktZW5kLXRyaWdnZXItZnVuY3Rpb25zJyBhcmUgY2FsbGVk CiB3aXRoIHR3byBhcmd1bWVudHM6IFdJTkRPVywgYW5kIHRoZSBlbmQgdHJpZ2dlciB2YWx1 ZS4KIEFmdGVyd2FyZHMgdGhlIGVuZC10cmlnZ2VyIHZhbHVlIGlzIHJlc2V0IHRvIG5pbC4g ICovKQotICAocmVnaXN0ZXIgTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCB2YWx1 ZSkKKyAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgdmFsdWUpCiB7Ci0gIHJl Z2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7CisgIHN0cnVjdCB3aW5kb3cgKnc7CiAKICAgdyA9 IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAgIHctPnJlZGlzcGxheV9lbmRfdHJpZ2dlciA9 IHZhbHVlOwpAQCAtNzMzLDcgKzczMyw3IEBACiBqdXN0IHRoZSB0ZXh0IGFyZWEsIHVzZSBg d2luZG93LWluc2lkZS1lZGdlcycuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsK LSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3aW5k b3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdyk7 CiAKICAgcmV0dXJuIEZjb25zIChtYWtlX251bWJlciAoV0lORE9XX0xFRlRfRURHRV9DT0wg KHcpKSwKIAkgRmNvbnMgKG1ha2VfbnVtYmVyIChXSU5ET1dfVE9QX0VER0VfTElORSAodykp LApAQCAtNzU0LDcgKzc1NCw3IEBACiBvZiBqdXN0IHRoZSB0ZXh0IGFyZWEsIHVzZSBgd2lu ZG93LWluc2lkZS1waXhlbC1lZGdlcycuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdykK IHsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3 aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRv dyk7CiAKICAgcmV0dXJuIEZjb25zIChtYWtlX251bWJlciAoV0lORE9XX0xFRlRfRURHRV9Y ICh3KSksCiAJIEZjb25zIChtYWtlX251bWJlciAoV0lORE9XX1RPUF9FREdFX1kgKHcpKSwK QEAgLTc5OCw3ICs3OTgsNyBAQAogb2YganVzdCB0aGUgdGV4dCBhcmVhLCB1c2UgYHdpbmRv dy1pbnNpZGUtYWJzb2x1dGUtcGl4ZWwtZWRnZXMnLiAgKi8pCiAgIChMaXNwX09iamVjdCB3 aW5kb3cpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfYW55X3dp bmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93 ICh3aW5kb3cpOwogICBpbnQgYWRkX3gsIGFkZF95OwogICBjYWxjX2Fic29sdXRlX29mZnNl dCAodywgJmFkZF94LCAmYWRkX3kpOwogCkBAIC04MjEsNyArODIxLDcgQEAKIGJhciwgZGlz cGxheSBtYXJnaW5zLCBmcmluZ2VzLCBoZWFkZXIgbGluZSwgYW5kL29yIG1vZGUgbGluZS4g ICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2lu ZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9 IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAKICAgcmV0dXJuIGxpc3Q0IChtYWtlX251bWJl ciAoV0lORE9XX0JPWF9MRUZUX0VER0VfQ09MICh3KQogCQkJICAgICArIFdJTkRPV19MRUZU X01BUkdJTl9DT0xTICh3KQpAQCAtODQ2LDcgKzg0Niw3IEBACiBkaXNwbGF5IG1hcmdpbnMs IGZyaW5nZXMsIGhlYWRlciBsaW5lLCBhbmQvb3IgbW9kZSBsaW5lLiAgKi8pCiAgIChMaXNw X09iamVjdCB3aW5kb3cpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNv ZGVfd2luZG93ICh3aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRv dyAod2luZG93KTsKIAogICByZXR1cm4gbGlzdDQgKG1ha2VfbnVtYmVyIChXSU5ET1dfQk9Y X0xFRlRfRURHRV9YICh3KQogCQkJICAgICArIFdJTkRPV19MRUZUX01BUkdJTl9XSURUSCAo dykKQEAgLTg3Myw3ICs4NzMsNyBAQAogZGlzcGxheSBtYXJnaW5zLCBmcmluZ2VzLCBoZWFk ZXIgbGluZSwgYW5kL29yIG1vZGUgbGluZS4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93 KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2lu ZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAg IGludCBhZGRfeCwgYWRkX3k7CiAgIGNhbGNfYWJzb2x1dGVfb2Zmc2V0ICh3LCAmYWRkX3gs ICZhZGRfeSk7CiAKQEAgLTkwNSw3ICs5MDUsNyBAQAogICAgWCBhbmQgWSBhcmUgZnJhbWUg cmVsYXRpdmUgcGl4ZWwgY29vcmRpbmF0ZXMuICAqLwogCiBzdGF0aWMgZW51bSB3aW5kb3df cGFydAotY29vcmRpbmF0ZXNfaW5fd2luZG93IChyZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3 LCBpbnQgeCwgaW50IHkpCitjb29yZGluYXRlc19pbl93aW5kb3cgKHN0cnVjdCB3aW5kb3cg KncsIGludCB4LCBpbnQgeSkKIHsKICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChXSU5E T1dfRlJBTUUgKHcpKTsKICAgZW51bSB3aW5kb3dfcGFydCBwYXJ0OwpAQCAtMTA2Nyw3ICsx MDY3LDcgQEAKICAgYHZlcnRpY2FsLWxpbmUnIGlzIHJldHVybmVkLgogSWYgdGhleSBhcmUg aW4gdGhlIHdpbmRvd3MncyBsZWZ0IG9yIHJpZ2h0IG1hcmdpbmFsIGFyZWFzLCBgbGVmdC1t YXJnaW4nXG5cCiAgIG9yIGByaWdodC1tYXJnaW4nIGlzIHJldHVybmVkLiAgKi8pCi0gIChy ZWdpc3RlciBMaXNwX09iamVjdCBjb29yZGluYXRlcywgTGlzcF9PYmplY3Qgd2luZG93KQor ICAoTGlzcF9PYmplY3QgY29vcmRpbmF0ZXMsIExpc3BfT2JqZWN0IHdpbmRvdykKIHsKICAg c3RydWN0IHdpbmRvdyAqdzsKICAgc3RydWN0IGZyYW1lICpmOwpAQCAtMTI1Myw3ICsxMjUz LDcgQEAKIEJ1dCB0aGF0IGlzIGhhcmQgdG8gZGVmaW5lLiAgKi8pCiAgIChMaXNwX09iamVj dCB3aW5kb3cpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfd2lu ZG93ICh3aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2lu ZG93KTsKIAogICBpZiAodyA9PSBYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpCiAgICAgICAm JiBjdXJyZW50X2J1ZmZlciA9PSBYQlVGRkVSICh3LT5idWZmZXIpKQpAQCAtMTM2NCw3ICsx MzY0LDcgQEAKIFJldHVybiBQT1MuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlz cF9PYmplY3QgcG9zKQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2Rl X3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cg KHdpbmRvdyk7CiAKICAgQ0hFQ0tfTlVNQkVSX0NPRVJDRV9NQVJLRVIgKHBvcyk7CiAgIGlm ICh3ID09IFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdykKQEAgLTEzODgsNyArMTM4OCw3IEBA CiBvdmVycmlkaW5nIG1vdGlvbiBvZiBwb2ludCBpbiBvcmRlciB0byBkaXNwbGF5IGF0IHRo aXMgZXhhY3Qgc3RhcnQuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmpl Y3QgcG9zLCBMaXNwX09iamVjdCBub2ZvcmNlKQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2lu ZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9 IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAKICAgQ0hFQ0tfTlVNQkVSX0NPRVJDRV9NQVJL RVIgKHBvcyk7CiAgIHNldF9tYXJrZXJfcmVzdHJpY3RlZCAody0+c3RhcnQsIHBvcywgdy0+ YnVmZmVyKTsKQEAgLTE0MjQsOSArMTQyNCw5IEBACiBkaXNwbGF5IHJvdywgYW5kIFZQT1Mg aXMgdGhlIHJvdyBudW1iZXIgKDAtYmFzZWQpIGNvbnRhaW5pbmcgUE9TLiAgKi8pCiAgIChM aXNwX09iamVjdCBwb3MsIExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgcGFydGlh bGx5KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3OwotICByZWdpc3RlciBFTUFD U19JTlQgcG9zaW50OwotICByZWdpc3RlciBzdHJ1Y3QgYnVmZmVyICpidWY7CisgIHN0cnVj dCB3aW5kb3cgKnc7CisgIEVNQUNTX0lOVCBwb3NpbnQ7CisgIHN0cnVjdCBidWZmZXIgKmJ1 ZjsKICAgc3RydWN0IHRleHRfcG9zIHRvcDsKICAgTGlzcF9PYmplY3QgaW5fd2luZG93ID0g UW5pbDsKICAgaW50IHJ0b3AsIHJib3QsIHJvd2gsIHZwb3MsIGZ1bGx5X3AgPSAxOwpAQCAt MTQ5Miw4ICsxNDkyLDggQEAKIGBwb3MtdmlzaWJsZS1pbi13aW5kb3ctcCcgdG8gb2J0YWlu IHRoZSBpbmZvcm1hdGlvbi4gICovKQogICAoTGlzcF9PYmplY3QgbGluZSwgTGlzcF9PYmpl Y3Qgd2luZG93KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3OwotICByZWdpc3Rl ciBzdHJ1Y3QgYnVmZmVyICpiOworICBzdHJ1Y3Qgd2luZG93ICp3OworICBzdHJ1Y3QgYnVm ZmVyICpiOwogICBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3csICplbmRfcm93OwogICBpbnQgbWF4 X3ksIGNyb3AsIGk7CiAgIEVNQUNTX0lOVCBuOwpAQCAtMTYyNCw3ICsxNjI0LDcgQEAKIHdp bmRvdywgaXQgYWxzbyBtYWtlcyBzdXJlIHRoYXQgdGhlIHdpbmRvdyBpcyBubyBtb3JlIGRl ZGljYXRlZC4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBmbGFn KQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3dpbmRvdyAod2lu ZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cgKHdpbmRvdyk7CiAK ICAgdy0+ZGVkaWNhdGVkID0gZmxhZzsKICAgcmV0dXJuIHctPmRlZGljYXRlZDsKQEAgLTE3 MDMsNyArMTcwMyw3IEBACiBXSU5ET1cgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIHdpbmRv dy4gIFJldHVybiBWQUxVRS4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09i amVjdCBwYXJhbWV0ZXIsIExpc3BfT2JqZWN0IHZhbHVlKQogewotICByZWdpc3RlciBzdHJ1 Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdyk7CisgIHN0cnVjdCB3 aW5kb3cgKncgPSBkZWNvZGVfYW55X3dpbmRvdyAod2luZG93KTsKICAgTGlzcF9PYmplY3Qg b2xkX2FsaXN0X2VsdDsKIAogICBvbGRfYWxpc3RfZWx0ID0gRmFzc3EgKHBhcmFtZXRlciwg dy0+d2luZG93X3BhcmFtZXRlcnMpOwpAQCAtMTc1MCw5ICsxNzUwLDkgQEAKIAogREVGVU4g KCJzZXQtd2luZG93LWRpc3BsYXktdGFibGUiLCBGc2V0X3dpbmRvd19kaXNwbGF5X3RhYmxl LCBTc2V0X3dpbmRvd19kaXNwbGF5X3RhYmxlLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyog U2V0IFdJTkRPVydzIGRpc3BsYXktdGFibGUgdG8gVEFCTEUuICAqLykKLSAgKHJlZ2lzdGVy IExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgdGFibGUpCisgIChMaXNwX09iamVj dCB3aW5kb3csIExpc3BfT2JqZWN0IHRhYmxlKQogewotICByZWdpc3RlciBzdHJ1Y3Qgd2lu ZG93ICp3OworICBzdHJ1Y3Qgd2luZG93ICp3OwogCiAgIHcgPSBkZWNvZGVfd2luZG93ICh3 aW5kb3cpOwogICB3LT5kaXNwbGF5X3RhYmxlID0gdGFibGU7CkBAIC0xNzYyLDcgKzE3NjIs NyBAQAogLyogUmVjb3JkIGluZm8gb24gYnVmZmVyIHdpbmRvdyBXIGlzIGRpc3BsYXlpbmcK ICAgIHdoZW4gaXQgaXMgYWJvdXQgdG8gY2Vhc2UgdG8gZGlzcGxheSB0aGF0IGJ1ZmZlci4g ICovCiBzdGF0aWMgdm9pZAotdW5zaG93X2J1ZmZlciAocmVnaXN0ZXIgc3RydWN0IHdpbmRv dyAqdykKK3Vuc2hvd19idWZmZXIgKHN0cnVjdCB3aW5kb3cgKncpCiB7CiAgIExpc3BfT2Jq ZWN0IGJ1ZjsKICAgc3RydWN0IGJ1ZmZlciAqYjsKQEAgLTE4MTQsOCArMTgxNCw4IEBACiBz dGF0aWMgdm9pZAogcmVwbGFjZV93aW5kb3cgKExpc3BfT2JqZWN0IG9sZCwgTGlzcF9PYmpl Y3QgbmV3LCBpbnQgc2V0ZmxhZykKIHsKLSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtOwot ICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICpvID0gWFdJTkRPVyAob2xkKSwgKm4gPSBYV0lO RE9XIChuZXcpOworICBMaXNwX09iamVjdCB0ZW07CisgIHN0cnVjdCB3aW5kb3cgKm8gPSBY V0lORE9XIChvbGQpLCAqbiA9IFhXSU5ET1cgKG5ldyk7CiAKICAgLyogSWYgT0xEIGlzIGl0 cyBmcmFtZSdzIHJvb3Qgd2luZG93LCB0aGVuIE5FVyBpcyB0aGUgbmV3CiAgICAgIHJvb3Qg d2luZG93IGZvciB0aGF0IGZyYW1lLiAgKi8KQEAgLTMwNzgsMTAgKzMwNzgsMTAgQEAKIAog VGhpcyBmdW5jdGlvbiBydW5zIGB3aW5kb3ctc2Nyb2xsLWZ1bmN0aW9ucycgYmVmb3JlIHJ1 bm5pbmcKIGB3aW5kb3ctY29uZmlndXJhdGlvbi1jaGFuZ2UtaG9vaycuICAqLykKLSAgKHJl Z2lzdGVyIExpc3BfT2JqZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgYnVmZmVyX29yX25hbWUs IExpc3BfT2JqZWN0IGtlZXBfbWFyZ2lucykKKyAgKExpc3BfT2JqZWN0IHdpbmRvdywgTGlz cF9PYmplY3QgYnVmZmVyX29yX25hbWUsIExpc3BfT2JqZWN0IGtlZXBfbWFyZ2lucykKIHsK LSAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBidWZmZXI7Ci0gIHJlZ2lzdGVyIHN0cnVj dCB3aW5kb3cgKncgPSBkZWNvZGVfd2luZG93ICh3aW5kb3cpOworICBMaXNwX09iamVjdCB0 ZW0sIGJ1ZmZlcjsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV93aW5kb3cgKHdpbmRv dyk7CiAKICAgWFNFVFdJTkRPVyAod2luZG93LCB3KTsKICAgYnVmZmVyID0gRmdldF9idWZm ZXIgKGJ1ZmZlcl9vcl9uYW1lKTsKQEAgLTMxNjgsMTEgKzMxNjgsMTEgQEAKIAogCiB2b2lk Ci10ZW1wX291dHB1dF9idWZmZXJfc2hvdyAocmVnaXN0ZXIgTGlzcF9PYmplY3QgYnVmKQor dGVtcF9vdXRwdXRfYnVmZmVyX3Nob3cgKExpc3BfT2JqZWN0IGJ1ZikKIHsKLSAgcmVnaXN0 ZXIgc3RydWN0IGJ1ZmZlciAqb2xkID0gY3VycmVudF9idWZmZXI7Ci0gIHJlZ2lzdGVyIExp c3BfT2JqZWN0IHdpbmRvdzsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdzsKKyAgc3Ry dWN0IGJ1ZmZlciAqb2xkID0gY3VycmVudF9idWZmZXI7CisgIExpc3BfT2JqZWN0IHdpbmRv dzsKKyAgc3RydWN0IHdpbmRvdyAqdzsKIAogICBCVkFSIChYQlVGRkVSIChidWYpLCBkaXJl Y3RvcnkpID0gQlZBUiAoY3VycmVudF9idWZmZXIsIGRpcmVjdG9yeSk7CiAKQEAgLTMyMzcs NyArMzIzNyw3IEBACiBtYWtlX3BhcmVudF93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywg aW50IGhvcmZsYWcpCiB7CiAgIExpc3BfT2JqZWN0IHBhcmVudDsKLSAgcmVnaXN0ZXIgc3Ry dWN0IHdpbmRvdyAqbywgKnA7CisgIHN0cnVjdCB3aW5kb3cgKm8sICpwOwogICBpbnQgaTsK IAogICBvID0gWFdJTkRPVyAod2luZG93KTsKQEAgLTMyNzAsNyArMzI3MCw3IEBACiBtYWtl X3dpbmRvdyAodm9pZCkKIHsKICAgTGlzcF9PYmplY3Qgd2luZG93OwotICByZWdpc3RlciBz dHJ1Y3Qgd2luZG93ICp3OworICBzdHJ1Y3Qgd2luZG93ICp3OwogCiAgIHcgPSBhbGxvY2F0 ZV93aW5kb3cgKCk7CiAgIC8qIEluaXRpYWxpemUgYWxsIExpc3AgZGF0YS4gICovCkBAIC0z Njc3LDggKzM2NzcsOCBAQAogICAgICBwcm92aWRlZCBPTEQgaXMgYSBsZWFmIHdpbmRvdywg b3IgdG8gdGhlIGZyYW1lJ3Mgc2VsZWN0ZWQgd2luZG93LgogICAgICBORVcgKCpuKSBpcyB0 aGUgbmV3IHdpbmRvdyBjcmVhdGVkIHdpdGggc29tZSBwYXJhbWV0ZXJzIHRha2VuIGZyb20K ICAgICAgUkVGRVJFTkNFICgqcikuICAqLwotICByZWdpc3RlciBMaXNwX09iamVjdCBuZXcs IGZyYW1lLCByZWZlcmVuY2U7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKm8sICpwLCAq biwgKnI7CisgIExpc3BfT2JqZWN0IG5ldywgZnJhbWUsIHJlZmVyZW5jZTsKKyAgc3RydWN0 IHdpbmRvdyAqbywgKnAsICpuLCAqcjsKICAgc3RydWN0IGZyYW1lICpmOwogICBpbnQgaG9y ZmxhZwogICAgIC8qIEhPUkZMQUcgaXMgMSB3aGVuIHdlIHNwbGl0IHNpZGUtYnktc2lkZSwg MCBvdGhlcndpc2UuICAqLwpAQCAtMzg0Miw5ICszODQyLDkgQEAKICAgICAgICBkb2M6IC8q IFJlbW92ZSBXSU5ET1cgZnJvbSBpdHMgZnJhbWUuCiBXSU5ET1cgZGVmYXVsdHMgdG8gdGhl IHNlbGVjdGVkIHdpbmRvdy4gIFJldHVybiBuaWwuCiBTaWduYWwgYW4gZXJyb3Igd2hlbiBX SU5ET1cgaXMgdGhlIG9ubHkgd2luZG93IG9uIGl0cyBmcmFtZS4gICovKQotICAgICAocmVn aXN0ZXIgTGlzcF9PYmplY3Qgd2luZG93KQorICAgICAoTGlzcF9PYmplY3Qgd2luZG93KQog ewotICByZWdpc3RlciBMaXNwX09iamVjdCBwYXJlbnQsIHNpYmxpbmcsIGZyYW1lLCByb290 OworICBMaXNwX09iamVjdCBwYXJlbnQsIHNpYmxpbmcsIGZyYW1lLCByb290OwogICBzdHJ1 Y3Qgd2luZG93ICp3LCAqcCwgKnMsICpyOwogICBzdHJ1Y3QgZnJhbWUgKmY7CiAgIGludCBo b3JmbGFnOwpAQCAtNDU3NywxNiArNDU3NywxNiBAQAogc3RhdGljIHZvaWQKIHdpbmRvd19z Y3JvbGxfbGluZV9iYXNlZCAoTGlzcF9PYmplY3Qgd2luZG93LCBpbnQgbiwgaW50IHdob2xl LCBpbnQgbm9lcnJvcikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5E T1cgKHdpbmRvdyk7CisgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XICh3aW5kb3cpOwog ICAvKiBGdmVydGljYWxfbW90aW9uIGVudGVycyByZWRpc3BsYXksIHdoaWNoIGNhbiB0cmln Z2VyCiAgICAgIGZvbnRpZmljYXRpb24sIHdoaWNoIGluIHR1cm4gY2FuIG1vZGlmeSBidWZm ZXIgdGV4dCAoZS5nLiwgaWYgdGhlCiAgICAgIGZvbnRpZmljYXRpb24gZnVuY3Rpb25zIHJl cGxhY2UgZXNjYXBlIHNlcXVlbmNlcyB3aXRoIGZhY2VzLCBhcwogICAgICBpbiBgZ3JlcC1t b2RlLWZvbnQtbG9jay1rZXl3b3JkcycpLiAgU28gd2UgdXNlIGEgbWFya2VyIHRvIHJlY29y ZAogICAgICB0aGUgb2xkIHBvaW50IHBvc2l0aW9uLCB0byBwcmV2ZW50IGNyYXNoZXMgaW4g U0VUX1BUX0JPVEguICAqLwogICBMaXNwX09iamVjdCBvcG9pbnRfbWFya2VyID0gRnBvaW50 X21hcmtlciAoKTsKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IHBvcywgcG9zX2J5dGU7Ci0gIHJl Z2lzdGVyIGludCBodCA9IHdpbmRvd19pbnRlcm5hbF9oZWlnaHQgKHcpOwotICByZWdpc3Rl ciBMaXNwX09iamVjdCB0ZW07CisgIHB0cmRpZmZfdCBwb3MsIHBvc19ieXRlOworICBpbnQg aHQgPSB3aW5kb3dfaW50ZXJuYWxfaGVpZ2h0ICh3KTsKKyAgTGlzcF9PYmplY3QgdGVtOwog ICBpbnQgbG9zZTsKICAgTGlzcF9PYmplY3QgYm9scDsKICAgcHRyZGlmZl90IHN0YXJ0cG9z OwpAQCAtNDg5Miw3ICs0ODkyLDcgQEAKIGxvd2VyIGJvdW5kIGZvciBhdXRvbWF0aWMgc2Ny b2xsaW5nLCBpLmUuIGF1dG9tYXRpYyBzY3JvbGxpbmcKIHdpbGwgbm90IHNjcm9sbCBhIHdp bmRvdyB0byBhIGNvbHVtbiBsZXNzIHRoYW4gdGhlIHZhbHVlIHJldHVybmVkCiBieSB0aGlz IGZ1bmN0aW9uLiAgVGhpcyBoYXBwZW5zIGluIGFuIGludGVyYWN0aXZlIGNhbGwuICAqLykK LSAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgc2V0X21pbmltdW0p CisgIChMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IHNldF9taW5pbXVtKQogewogICBM aXNwX09iamVjdCByZXN1bHQ7CiAgIEVNQUNTX0lOVCBoc2Nyb2xsOwpAQCAtNDkyMSw3ICs0 OTIxLDcgQEAKIGxvd2VyIGJvdW5kIGZvciBhdXRvbWF0aWMgc2Nyb2xsaW5nLCBpLmUuIGF1 dG9tYXRpYyBzY3JvbGxpbmcKIHdpbGwgbm90IHNjcm9sbCBhIHdpbmRvdyB0byBhIGNvbHVt biBsZXNzIHRoYW4gdGhlIHZhbHVlIHJldHVybmVkCiBieSB0aGlzIGZ1bmN0aW9uLiAgVGhp cyBoYXBwZW5zIGluIGFuIGludGVyYWN0aXZlIGNhbGwuICAqLykKLSAgKHJlZ2lzdGVyIExp c3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgc2V0X21pbmltdW0pCisgIChMaXNwX09iamVj dCBhcmcsIExpc3BfT2JqZWN0IHNldF9taW5pbXVtKQogewogICBMaXNwX09iamVjdCByZXN1 bHQ7CiAgIEVNQUNTX0lOVCBoc2Nyb2xsOwpAQCAtNTAyOSw3ICs1MDI5LDcgQEAKIAogSnVz dCBDLXUgYXMgcHJlZml4IG1lYW5zIHB1dCBwb2ludCBpbiB0aGUgY2VudGVyIG9mIHRoZSB3 aW5kb3cKIGFuZCByZWRpc3BsYXkgbm9ybWFsbHktLWRvbid0IGVyYXNlIGFuZCByZWRyYXcg dGhlIGZyYW1lLiAgKi8pCi0gIChyZWdpc3RlciBMaXNwX09iamVjdCBhcmcpCisgIChMaXNw X09iamVjdCBhcmcpCiB7CiAgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XIChzZWxlY3Rl ZF93aW5kb3cpOwogICBzdHJ1Y3QgYnVmZmVyICpidWYgPSBYQlVGRkVSICh3LT5idWZmZXIp OwpAQCAtNTM1Niw3ICs1MzU2LDcgQEAKICAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgZnJh bWUgdGhhdCBDT05GSUcsIGEgd2luZG93LWNvbmZpZ3VyYXRpb24gb2JqZWN0LCBpcyBhYm91 dC4gICovKQogICAoTGlzcF9PYmplY3QgY29uZmlnKQogewotICByZWdpc3RlciBzdHJ1Y3Qg c2F2ZV93aW5kb3dfZGF0YSAqZGF0YTsKKyAgc3RydWN0IHNhdmVfd2luZG93X2RhdGEgKmRh dGE7CiAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqc2F2ZWRfd2luZG93czsKIAogICBDSEVDS19X SU5ET1dfQ09ORklHVVJBVElPTiAoY29uZmlnKTsKQEAgLTUzNzYsNyArNTM3Niw3IEBACiB0 aGUgcmV0dXJuIHZhbHVlIGlzIG5pbC4gIE90aGVyd2lzZSB0aGUgdmFsdWUgaXMgdC4gICov KQogICAoTGlzcF9PYmplY3QgY29uZmlndXJhdGlvbikKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IHNhdmVfd2luZG93X2RhdGEgKmRhdGE7CisgIHN0cnVjdCBzYXZlX3dpbmRvd19kYXRhICpk YXRhOwogICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnNhdmVkX3dpbmRvd3M7CiAgIExpc3BfT2Jq ZWN0IG5ld19jdXJyZW50X2J1ZmZlcjsKICAgTGlzcF9PYmplY3QgZnJhbWU7CkBAIC01NDM4 LDkgKzU0MzgsOSBAQAogICAgIHsKICAgICAgIExpc3BfT2JqZWN0IHdpbmRvdzsKICAgICAg IExpc3BfT2JqZWN0IGRlYWRfd2luZG93cyA9IFFuaWw7Ci0gICAgICByZWdpc3RlciBMaXNw X09iamVjdCB0ZW0sIHBhciwgcGVyczsKLSAgICAgIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cg Knc7Ci0gICAgICByZWdpc3RlciBzdHJ1Y3Qgc2F2ZWRfd2luZG93ICpwOworICAgICAgTGlz cF9PYmplY3QgdGVtLCBwYXIsIHBlcnM7CisgICAgICBzdHJ1Y3Qgd2luZG93ICp3OworICAg ICAgc3RydWN0IHNhdmVkX3dpbmRvdyAqcDsKICAgICAgIHN0cnVjdCB3aW5kb3cgKnJvb3Rf d2luZG93OwogICAgICAgc3RydWN0IHdpbmRvdyAqKmxlYWZfd2luZG93czsKICAgICAgIGlu dCBuX2xlYWZfd2luZG93czsKQEAgLTU3NTAsNyArNTc1MCw3IEBACiB2b2lkCiBkZWxldGVf YWxsX2NoaWxkX3dpbmRvd3MgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsKLSAgcmVnaXN0ZXIg c3RydWN0IHdpbmRvdyAqdzsKKyAgc3RydWN0IHdpbmRvdyAqdzsKIAogICB3ID0gWFdJTkRP VyAod2luZG93KTsKIApAQCAtNTc4Miw5ICs1NzgyLDkgQEAKIH0KIAwKIHN0YXRpYyBpbnQK LWNvdW50X3dpbmRvd3MgKHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKndpbmRvdykKK2NvdW50 X3dpbmRvd3MgKHN0cnVjdCB3aW5kb3cgKndpbmRvdykKIHsKLSAgcmVnaXN0ZXIgaW50IGNv dW50ID0gMTsKKyAgaW50IGNvdW50ID0gMTsKICAgaWYgKCFOSUxQICh3aW5kb3ctPm5leHQp KQogICAgIGNvdW50ICs9IGNvdW50X3dpbmRvd3MgKFhXSU5ET1cgKHdpbmRvdy0+bmV4dCkp OwogICBpZiAoIU5JTFAgKHdpbmRvdy0+dmNoaWxkKSkKQEAgLTU4NTgsOSArNTg1OCw5IEBA CiBzdGF0aWMgaW50CiBzYXZlX3dpbmRvd19zYXZlIChMaXNwX09iamVjdCB3aW5kb3csIHN0 cnVjdCBMaXNwX1ZlY3RvciAqdmVjdG9yLCBpbnQgaSkKIHsKLSAgcmVnaXN0ZXIgc3RydWN0 IHNhdmVkX3dpbmRvdyAqcDsKLSAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdzsKLSAgcmVn aXN0ZXIgTGlzcF9PYmplY3QgdGVtLCBwZXJzLCBwYXI7CisgIHN0cnVjdCBzYXZlZF93aW5k b3cgKnA7CisgIHN0cnVjdCB3aW5kb3cgKnc7CisgIExpc3BfT2JqZWN0IHRlbSwgcGVycywg cGFyOwogCiAgIGZvciAoOyFOSUxQICh3aW5kb3cpOyB3aW5kb3cgPSB3LT5uZXh0KQogICAg IHsKQEAgLTYwMDAsMTAgKzYwMDAsMTAgQEAKIHNhdmVkIGJ5IHRoaXMgZnVuY3Rpb24uICAq LykKICAgKExpc3BfT2JqZWN0IGZyYW1lKQogewotICByZWdpc3RlciBMaXNwX09iamVjdCB0 ZW07Ci0gIHJlZ2lzdGVyIGludCBuX3dpbmRvd3M7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBzYXZl X3dpbmRvd19kYXRhICpkYXRhOwotICByZWdpc3RlciBpbnQgaTsKKyAgTGlzcF9PYmplY3Qg dGVtOworICBpbnQgbl93aW5kb3dzOworICBzdHJ1Y3Qgc2F2ZV93aW5kb3dfZGF0YSAqZGF0 YTsKKyAgaW50IGk7CiAgIEZSQU1FX1BUUiBmOwogCiAgIGlmIChOSUxQIChmcmFtZSkpCkBA IC02NDA3LDcgKzY0MDcsNyBAQAogaW50CiBjb21wYXJlX3dpbmRvd19jb25maWd1cmF0aW9u cyAoTGlzcF9PYmplY3QgY29uZmlndXJhdGlvbjEsIExpc3BfT2JqZWN0IGNvbmZpZ3VyYXRp b24yLCBpbnQgaWdub3JlX3Bvc2l0aW9ucykKIHsKLSAgcmVnaXN0ZXIgc3RydWN0IHNhdmVf d2luZG93X2RhdGEgKmQxLCAqZDI7CisgIHN0cnVjdCBzYXZlX3dpbmRvd19kYXRhICpkMSwg KmQyOwogICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnN3czEsICpzd3MyOwogICBwdHJkaWZmX3Qg aTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy94ZGlzcC5jJwotLS0gc3JjL3hkaXNwLmMJ MjAxMi0wNi0wMSAwMzo0MTowMyArMDAwMAorKysgc3JjL3hkaXNwLmMJMjAxMi0wNi0wMyAw NTo1MzozOCArMDAwMApAQCAtMTc1Niw3ICsxNzU2LDcgQEAKICAgIG5vdCBmb3JjZSB0aGUg dmFsdWUgaW50byByYW5nZS4gICovCiAKIHZvaWQKLXBpeGVsX3RvX2dseXBoX2Nvb3JkcyAo RlJBTUVfUFRSIGYsIHJlZ2lzdGVyIGludCBwaXhfeCwgcmVnaXN0ZXIgaW50IHBpeF95LAor cGl4ZWxfdG9fZ2x5cGhfY29vcmRzIChGUkFNRV9QVFIgZiwgaW50IHBpeF94LCBpbnQgcGl4 X3ksCiAJCSAgICAgICBpbnQgKngsIGludCAqeSwgTmF0aXZlUmVjdGFuZ2xlICpib3VuZHMs IGludCBub2NsaXApCiB7CiAKQEAgLTMyMzUsNyArMzIzNSw3IEBACiBzdGF0aWMgdm9pZAog Y29tcHV0ZV9zdG9wX3BvcyAoc3RydWN0IGl0ICppdCkKIHsKLSAgcmVnaXN0ZXIgSU5URVJW QUwgaXYsIG5leHRfaXY7CisgIElOVEVSVkFMIGl2LCBuZXh0X2l2OwogICBMaXNwX09iamVj dCBvYmplY3QsIGxpbWl0LCBwb3NpdGlvbjsKICAgcHRyZGlmZl90IGNoYXJwb3MsIGJ5dGVw b3M7CiAKQEAgLTExMTM1LDcgKzExMTM1LDcgQEAKIHVwZGF0ZV9tZW51X2JhciAoc3RydWN0 IGZyYW1lICpmLCBpbnQgc2F2ZV9tYXRjaF9kYXRhLCBpbnQgaG9va3NfcnVuKQogewogICBM aXNwX09iamVjdCB3aW5kb3c7Ci0gIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7CisgIHN0 cnVjdCB3aW5kb3cgKnc7CiAKICAgLyogSWYgY2FsbGVkIHJlY3Vyc2l2ZWx5IGR1cmluZyBh IG1lbnUgdXBkYXRlLCBkbyBub3RoaW5nLiAgVGhpcyBjYW4KICAgICAgaGFwcGVuIHdoZW4s IGZvciBpbnN0YW5jZSwgYW4gYWN0aXZhdGUtbWVudWJhci1ob29rIGNhdXNlcyBhCkBAIC0y MDE0NSw4ICsyMDE0NSw4IEBACiBzdGF0aWMgTGlzcF9PYmplY3QKIG1vdmVfZWx0X3RvX2Zy b250IChMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7Ci0gIHJlZ2lzdGVy IExpc3BfT2JqZWN0IHRhaWwsIHByZXY7Ci0gIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHRlbTsK KyAgTGlzcF9PYmplY3QgdGFpbCwgcHJldjsKKyAgTGlzcF9PYmplY3QgdGVtOwogCiAgIHRh aWwgPSBsaXN0OwogICBwcmV2ID0gUW5pbDsKQEAgLTIwNDYzLDcgKzIwNDYzLDcgQEAKIAkg U3BlY2lhbCBjYXNlOiBpZiB2YWx1ZSBvZiBzeW1ib2wgaXMgYSBzdHJpbmcsIG91dHB1dCB0 aGUgc3RyaW5nCiAJIGxpdGVyYWxseS4gICovCiAgICAgICB7Ci0JcmVnaXN0ZXIgTGlzcF9P YmplY3QgdGVtOworCUxpc3BfT2JqZWN0IHRlbTsKIAogCS8qIElmIHRoZSB2YXJpYWJsZSBp cyBub3QgbWFya2VkIGFzIHJpc2t5IHRvIHNldAogCSAgIHRoZW4gaXRzIGNvbnRlbnRzIGFy ZSByaXNreSB0byB1c2UuICAqLwpAQCAtMjA0OTEsNyArMjA0OTEsNyBAQAogCiAgICAgY2Fz ZSBMaXNwX0NvbnM6CiAgICAgICB7Ci0JcmVnaXN0ZXIgTGlzcF9PYmplY3QgY2FyLCB0ZW07 CisJTGlzcF9PYmplY3QgY2FyLCB0ZW07CiAKIAkvKiBBIGNvbnMgY2VsbDogZml2ZSBkaXN0 aW5jdCBjYXNlcy4KIAkgICBJZiBmaXJzdCBlbGVtZW50IGlzIDpldmFsIG9yIDpwcm9wZXJ0 aXplLCBkbyBzb21ldGhpbmcgc3BlY2lhbC4KQEAgLTIwNTYzLDcgKzIwNTYzLDcgQEAKIAkg IH0KIAllbHNlIGlmIChJTlRFR0VSUCAoY2FyKSkKIAkgIHsKLQkgICAgcmVnaXN0ZXIgaW50 IGxpbSA9IFhJTlQgKGNhcik7CisJICAgIGludCBsaW0gPSBYSU5UIChjYXIpOwogCSAgICBl bHQgPSBYQ0RSIChlbHQpOwogCSAgICBpZiAobGltIDwgMCkKIAkgICAgICB7CkBAIC0yMDg1 Myw5ICsyMDg1Myw5IEBACiAgICB0aGUgcG9zaXRpdmUgaW50ZWdlciBEIHRvIEJVRiB1c2lu ZyBhIG1pbmltYWwgZmllbGQgd2lkdGggV0lEVEguICAqLwogCiBzdGF0aWMgdm9pZAotcGlu dDJzdHIgKHJlZ2lzdGVyIGNoYXIgKmJ1ZiwgcmVnaXN0ZXIgaW50IHdpZHRoLCByZWdpc3Rl ciBwdHJkaWZmX3QgZCkKK3BpbnQyc3RyIChjaGFyICpidWYsIGludCB3aWR0aCwgcHRyZGlm Zl90IGQpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKnAgPSBidWY7CisgIGNoYXIgKnAgPSBidWY7 CiAKICAgaWYgKGQgPD0gMCkKICAgICAqcCsrID0gJzAnOwpAQCAtMjA5OTcsNyArMjA5OTcs NyBAQAogc3RhdGljIHVuc2lnbmVkIGNoYXIgaW52YWxpZF9lb2xfdHlwZVtdID0gIigqaW52 YWxpZCopIjsKIAogc3RhdGljIGNoYXIgKgotZGVjb2RlX21vZGVfc3BlY19jb2RpbmcgKExp c3BfT2JqZWN0IGNvZGluZ19zeXN0ZW0sIHJlZ2lzdGVyIGNoYXIgKmJ1ZiwgaW50IGVvbF9m bGFnKQorZGVjb2RlX21vZGVfc3BlY19jb2RpbmcgKExpc3BfT2JqZWN0IGNvZGluZ19zeXN0 ZW0sIGNoYXIgKmJ1ZiwgaW50IGVvbF9mbGFnKQogewogICBMaXNwX09iamVjdCB2YWw7CiAg IGludCBtdWx0aWJ5dGUgPSAhTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9t dWx0aWJ5dGVfY2hhcmFjdGVycykpOwpAQCAtMjEwODIsOCArMjEwODIsNyBAQAogc3RhdGlj IGNoYXIgbG90c19vZl9kYXNoZXNbXSA9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSI7CiAKIHN0YXRpYyBjb25zdCBjaGFyICoKLWRlY29kZV9tb2RlX3NwZWMgKHN0cnVj dCB3aW5kb3cgKncsIHJlZ2lzdGVyIGludCBjLCBpbnQgZmllbGRfd2lkdGgsCi0JCSAgTGlz cF9PYmplY3QgKnN0cmluZykKK2RlY29kZV9tb2RlX3NwZWMgKHN0cnVjdCB3aW5kb3cgKncs IGludCBjLCBpbnQgZmllbGRfd2lkdGgsIExpc3BfT2JqZWN0ICpzdHJpbmcpCiB7CiAgIExp c3BfT2JqZWN0IG9iajsKICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChXSU5ET1dfRlJB TUUgKHcpKTsKQEAgLTIxMTQ5LDcgKzIxMTQ4LDcgQEAKIAogICAgIGNhc2UgJy0nOgogICAg ICAgewotCXJlZ2lzdGVyIGludCBpOworCWludCBpOwogCiAJLyogTGV0IGxvdHNfb2ZfZGFz aGVzIGJlIGEgc3RyaW5nIG9mIGluZmluaXRlIGxlbmd0aC4gICovCiAJaWYgKG1vZGVfbGlu ZV90YXJnZXQgPT0gTU9ERV9MSU5FX05PUFJPUCB8fApAQCAtMjE1MDIsMTEgKzIxNTAxLDEx IEBACiAJCSAgICAgcHRyZGlmZl90IGxpbWl0X2J5dGUsIHB0cmRpZmZfdCBjb3VudCwKIAkJ ICAgICBwdHJkaWZmX3QgKmJ5dGVfcG9zX3B0cikKIHsKLSAgcmVnaXN0ZXIgdW5zaWduZWQg Y2hhciAqY3Vyc29yOworICB1bnNpZ25lZCBjaGFyICpjdXJzb3I7CiAgIHVuc2lnbmVkIGNo YXIgKmJhc2U7CiAKLSAgcmVnaXN0ZXIgcHRyZGlmZl90IGNlaWxpbmc7Ci0gIHJlZ2lzdGVy IHVuc2lnbmVkIGNoYXIgKmNlaWxpbmdfYWRkcjsKKyAgcHRyZGlmZl90IGNlaWxpbmc7Cisg IHVuc2lnbmVkIGNoYXIgKmNlaWxpbmdfYWRkcjsKICAgcHRyZGlmZl90IG9yaWdfY291bnQg PSBjb3VudDsKIAogICAvKiBJZiB3ZSBhcmUgbm90IGluIHNlbGVjdGl2ZSBkaXNwbGF5IG1v ZGUsCkBAIC0yMTg1MywxMyArMjE4NTIsMTMgQEAKICAgIGFuZCAxIGlmIGl0J3MgaW52aXNp YmxlIGFuZCB3aXRob3V0IGFuIGVsbGlwc2lzLiAgKi8KIAogaW50Ci1pbnZpc2libGVfcCAo cmVnaXN0ZXIgTGlzcF9PYmplY3QgcHJvcHZhbCwgTGlzcF9PYmplY3QgbGlzdCkKK2ludmlz aWJsZV9wIChMaXNwX09iamVjdCBwcm9wdmFsLCBMaXNwX09iamVjdCBsaXN0KQogewotICBy ZWdpc3RlciBMaXNwX09iamVjdCB0YWlsLCBwcm9wdGFpbDsKKyAgTGlzcF9PYmplY3QgdGFp bCwgcHJvcHRhaWw7CiAKICAgZm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWls ID0gWENEUiAodGFpbCkpCiAgICAgewotICAgICAgcmVnaXN0ZXIgTGlzcF9PYmplY3QgdGVt OworICAgICAgTGlzcF9PYmplY3QgdGVtOwogICAgICAgdGVtID0gWENBUiAodGFpbCk7CiAg ICAgICBpZiAoRVEgKHByb3B2YWwsIHRlbSkpCiAJcmV0dXJuIDE7CkBAIC0yMTg3NSw3ICsy MTg3NCw3IEBACiAJICBwcm9wZWx0ID0gWENBUiAocHJvcHRhaWwpOwogCSAgZm9yICh0YWls ID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAJICAgIHsKLQkg ICAgICByZWdpc3RlciBMaXNwX09iamVjdCB0ZW07CisJICAgICAgTGlzcF9PYmplY3QgdGVt OwogCSAgICAgIHRlbSA9IFhDQVIgKHRhaWwpOwogCSAgICAgIGlmIChFUSAocHJvcGVsdCwg dGVtKSkKIAkJcmV0dXJuIDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3hmbnMuYycKLS0t IHNyYy94Zm5zLmMJMjAxMi0wNi0wMSAyMDo0OTowMyArMDAwMAorKysgc3JjL3hmbnMuYwky MDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC0zODczLDI1ICszODczLDI1IEBACiB9CiAM CiBpbnQKLXhfcGl4ZWxfd2lkdGggKHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZikKK3hfcGl4 ZWxfd2lkdGggKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgcmV0dXJuIEZSQU1FX1BJWEVMX1dJ RFRIIChmKTsKIH0KIAogaW50Ci14X3BpeGVsX2hlaWdodCAocmVnaXN0ZXIgc3RydWN0IGZy YW1lICpmKQoreF9waXhlbF9oZWlnaHQgKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgcmV0dXJu IEZSQU1FX1BJWEVMX0hFSUdIVCAoZik7CiB9CiAKIGludAoteF9jaGFyX3dpZHRoIChyZWdp c3RlciBzdHJ1Y3QgZnJhbWUgKmYpCit4X2NoYXJfd2lkdGggKHN0cnVjdCBmcmFtZSAqZikK IHsKICAgcmV0dXJuIEZSQU1FX0NPTFVNTl9XSURUSCAoZik7CiB9CiAKIGludAoteF9jaGFy X2hlaWdodCAocmVnaXN0ZXIgc3RydWN0IGZyYW1lICpmKQoreF9jaGFyX2hlaWdodCAoc3Ry dWN0IGZyYW1lICpmKQogewogICByZXR1cm4gRlJBTUVfTElORV9IRUlHSFQgKGYpOwogfQpA QCAtMzkyOSw3ICszOTI5LDcgQEAKIAogaW50CiBYU2NyZWVuTnVtYmVyT2ZTY3JlZW4gKHNj cikKLSAgICByZWdpc3RlciBTY3JlZW4gKnNjcjsKKyAgICBTY3JlZW4gKnNjcjsKIHsKICAg RGlzcGxheSAqZHB5ID0gc2NyLT5kaXNwbGF5OwogICBpbnQgaTsKCj09PSBtb2RpZmllZCBm aWxlICdzcmMveHRlcm0uYycKLS0tIHNyYy94dGVybS5jCTIwMTItMDUtMzEgMDY6NTE6NDMg KzAwMDAKKysrIHNyYy94dGVybS5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTI5 NDEsNyArMjk0MSw3IEBACiAgICBmb3IgWCBmcmFtZXMuICAqLwogCiBzdGF0aWMgdm9pZAot eF9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIGludCBuKQoreF9k ZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogewogICBhYm9ydCAoKTsK IH0KQEAgLTgyNjksNyArODI2OSw3IEBACiAgICB3aGljaCBtZWFucywgZG8gYWRqdXN0IGZv ciBib3JkZXJzIGJ1dCBkb24ndCBjaGFuZ2UgdGhlIGdyYXZpdHkuICAqLwogCiB2b2lkCi14 X3NldF9vZmZzZXQgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHhvZmYsIHJlZ2lz dGVyIGludCB5b2ZmLCBpbnQgY2hhbmdlX2dyYXZpdHkpCit4X3NldF9vZmZzZXQgKHN0cnVj dCBmcmFtZSAqZiwgaW50IHhvZmYsIGludCB5b2ZmLCBpbnQgY2hhbmdlX2dyYXZpdHkpCiB7 CiAgIGludCBtb2RpZmllZF90b3AsIG1vZGlmaWVkX2xlZnQ7CiAKPT09IG1vZGlmaWVkIGZp bGUgJ2xpYi1zcmMvQ2hhbmdlTG9nJwotLS0gbGliLXNyYy9DaGFuZ2VMb2cJMjAxMi0wNS0z MSAwNjowODowNiArMDAwMAorKysgbGliLXNyYy9DaGFuZ2VMb2cJMjAxMi0wNi0wMyAwNTo1 NToyMyArMDAwMApAQCAtMSwzICsxLDggQEAKKzIwMTItMDYtMDMgIFBhdWwgRWdnZXJ0ICA8 ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJRG9uJ3QgdXNlICdyZWdpc3Rlcic7IHRoZXNlIGRh eXMgaXQncyBub3QgbmVlZGVkLgorCSogZXRhZ3MuYywgaGV4bC5jLCBtYWtlLWRvY2ZpbGUu YywgbW92ZW1haWwuYywgcG9wLmM6IE9taXQgJ3JlZ2lzdGVyJy4KKwogMjAxMi0wNS0zMSAg RWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KIAogCSogbWFrZWZpbGUudzMyLWluICgk KEJMRCkvZW1hY3NjbGllbnR3LmV4ZSk6IFVzZSAkKE1XSU5ET1dTKQoKPT09IG1vZGlmaWVk IGZpbGUgJ2xpYi1zcmMvZXRhZ3MuYycKLS0tIGxpYi1zcmMvZXRhZ3MuYwkyMDEyLTA1LTIx IDE1OjM2OjU0ICswMDAwCisrKyBsaWItc3JjL2V0YWdzLmMJMjAxMi0wNi0wMyAwNTo1Mzoz OCArMDAwMApAQCAtMTcwNiw4ICsxNzA2LDggQEAKIHN0YXRpYyB2b2lkCiBpbml0ICh2b2lk KQogewotICByZWdpc3RlciBjb25zdCBjaGFyICpzcDsKLSAgcmVnaXN0ZXIgaW50IGk7Cisg IGNvbnN0IGNoYXIgKnNwOworICBpbnQgaTsKIAogICBmb3IgKGkgPSAwOyBpIDwgQ0hBUlM7 IGkrKykKICAgICBpc3doaXRlIChpKSA9IG5vdGlubmFtZSAoaSkgPSBiZWd0b2tlbiAoaSkg PSBpbnRva2VuIChpKSA9IGVuZHRva2VuIChpKSA9IEZBTFNFOwpAQCAtMTkwMSw3ICsxOTAx LDcgQEAKICAgICAgICBzdWNoIHRoYXQgZXRhZ3MuZWwgY2FuIGd1ZXNzIGEgbmFtZSBmcm9t IGl0LiAqLwogICAgIHsKICAgICAgIGludCBpOwotICAgICAgcmVnaXN0ZXIgY29uc3QgY2hh ciAqY3AgPSBuYW1lOworICAgICAgY29uc3QgY2hhciAqY3AgPSBuYW1lOwogCiAgICAgICBm b3IgKGkgPSAwOyBpIDwgbmFtZWxlbjsgaSsrKQogCWlmIChub3Rpbm5hbWUgKCpjcCsrKSkK QEAgLTE5MzUsNyArMTkzNSw3IEBACiAgICAgICAgICAgICAgCQkJLyogbGluZSBudW1iZXIg Ki8KICAgICAgICAgICAgICAgCQkJLyogY2hhcmFjdGVyIG51bWJlciAqLwogewotICByZWdp c3RlciBub2RlICpucDsKKyAgbm9kZSAqbnA7CiAKICAgYXNzZXJ0IChuYW1lID09IE5VTEwg fHwgbmFtZVswXSAhPSAnXDAnKTsKICAgaWYgKENUQUdTICYmIG5hbWUgPT0gTlVMTCkKQEAg LTE5NDYsNyArMTk0Niw3IEBACiAgIC8qIElmIGN0YWdzIG1vZGUsIGNoYW5nZSBuYW1lICJt YWluIiB0byBNPHRoaXNmaWxlbmFtZT4uICovCiAgIGlmIChDVEFHUyAmJiAhY3hyZWZfc3R5 bGUgJiYgc3RyZXEgKG5hbWUsICJtYWluIikpCiAgICAgewotICAgICAgcmVnaXN0ZXIgY2hh ciAqZnAgPSBldGFnc19zdHJyY2hyIChjdXJmZHAtPnRhZ2dlZGZuYW1lLCAnLycpOworICAg ICAgY2hhciAqZnAgPSBldGFnc19zdHJyY2hyIChjdXJmZHAtPnRhZ2dlZGZuYW1lLCAnLycp OwogICAgICAgbnAtPm5hbWUgPSBjb25jYXQgKCJNIiwgZnAgPT0gTlVMTCA/IGN1cmZkcC0+ dGFnZ2VkZm5hbWUgOiBmcCArIDEsICIiKTsKICAgICAgIGZwID0gZXRhZ3Nfc3RycmNociAo bnAtPm5hbWUsICcuJyk7CiAgICAgICBpZiAoZnAgIT0gTlVMTCAmJiBmcFsxXSAhPSAnXDAn ICYmIGZwWzJdID09ICdcMCcpCkBAIC0xOTg3LDExICsxOTg3LDExIEBACiAgKglyZWN1cnNl IG9uIGxlZnQgY2hpbGRyZW4sIGl0ZXJhdGUgb24gcmlnaHQgY2hpbGRyZW4uCiAgKi8KIHN0 YXRpYyB2b2lkCi1mcmVlX3RyZWUgKHJlZ2lzdGVyIG5vZGUgKm5wKQorZnJlZV90cmVlIChu b2RlICpucCkKIHsKICAgd2hpbGUgKG5wKQogICAgIHsKLSAgICAgIHJlZ2lzdGVyIG5vZGUg Km5vZGVfcmlnaHQgPSBucC0+cmlnaHQ7CisgICAgICBub2RlICpub2RlX3JpZ2h0ID0gbnAt PnJpZ2h0OwogICAgICAgZnJlZV90cmVlIChucC0+bGVmdCk7CiAgICAgICBmcmVlIChucC0+ bmFtZSk7CiAgICAgICBmcmVlIChucC0+cmVnZXgpOwpAQCAtMjAwNSw3ICsyMDA1LDcgQEAK ICAqCWRlbGV0ZSBhIGZpbGUgZGVzY3JpcHRpb24KICAqLwogc3RhdGljIHZvaWQKLWZyZWVf ZmRlc2MgKHJlZ2lzdGVyIGZkZXNjICpmZHApCitmcmVlX2ZkZXNjIChmZGVzYyAqZmRwKQog ewogICBmcmVlIChmZHAtPmluZm5hbWUpOwogICBmcmVlIChmZHAtPmluZmFic25hbWUpOwpA QCAtMjAyNyw4ICsyMDI3LDggQEAKIHN0YXRpYyB2b2lkCiBhZGRfbm9kZSAobm9kZSAqbnAs IG5vZGUgKipjdXJfbm9kZV9wKQogewotICByZWdpc3RlciBpbnQgZGlmOwotICByZWdpc3Rl ciBub2RlICpjdXJfbm9kZSA9ICpjdXJfbm9kZV9wOworICBpbnQgZGlmOworICBub2RlICpj dXJfbm9kZSA9ICpjdXJfbm9kZV9wOwogCiAgIGlmIChjdXJfbm9kZSA9PSBOVUxMKQogICAg IHsKQEAgLTIxNTcsOSArMjE1Nyw5IEBACiAgKiBidXQgaXMgc3RpbGwgc3VwcGxpZWQgZm9y IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAgKi8KIHN0YXRpYyBpbnQKLXRvdGFsX3NpemVf b2ZfZW50cmllcyAocmVnaXN0ZXIgbm9kZSAqbnApCit0b3RhbF9zaXplX29mX2VudHJpZXMg KG5vZGUgKm5wKQogewotICByZWdpc3RlciBpbnQgdG90YWwgPSAwOworICBpbnQgdG90YWwg PSAwOwogCiAgIGZvciAoOyBucCAhPSBOVUxMOyBucCA9IG5wLT5yaWdodCkKICAgICBpZiAo bnAtPnZhbGlkKQpAQCAtMjE3Nyw5ICsyMTc3LDkgQEAKIH0KIAogc3RhdGljIHZvaWQKLXB1 dF9lbnRyaWVzIChyZWdpc3RlciBub2RlICpucCkKK3B1dF9lbnRyaWVzIChub2RlICpucCkK IHsKLSAgcmVnaXN0ZXIgY2hhciAqc3A7CisgIGNoYXIgKnNwOwogICBzdGF0aWMgZmRlc2Mg KmZkcCA9IE5VTEw7CiAKICAgaWYgKG5wID09IE5VTEwpCkBAIC0yMzQ5LDcgKzIzNDksNyBA QAogLyogbWF4aW11bSBrZXkgcmFuZ2UgPSAzMywgZHVwbGljYXRlcyA9IDAgKi8KIAogc3Rh dGljIGlubGluZSB1bnNpZ25lZCBpbnQKLWhhc2ggKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0 ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbikKK2hhc2ggKGNvbnN0IGNoYXIgKnN0ciwg dW5zaWduZWQgaW50IGxlbikKIHsKICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNzb192YWx1 ZXNbXSA9CiAgICAgewpAQCAtMjM4MCw3ICsyMzgwLDcgQEAKICAgICAgIDM1LCAzNSwgMzUs IDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LAogICAgICAgMzUsIDM1LCAzNSwgMzUsIDM1 LCAzNQogICAgIH07Ci0gIHJlZ2lzdGVyIGludCBodmFsID0gbGVuOworICBpbnQgaHZhbCA9 IGxlbjsKIAogICBzd2l0Y2ggKGh2YWwpCiAgICAgewpAQCAtMjM5NSw3ICsyMzk1LDcgQEAK IH0KIAogc3RhdGljIHN0cnVjdCBDX3N0YWJfZW50cnkgKgotaW5fd29yZF9zZXQgKHJlZ2lz dGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbikKK2luX3dv cmRfc2V0IChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAgIGVudW0K ICAgICB7CkBAIC0yNDQ2LDExICsyNDQ2LDExIEBACiAKICAgaWYgKGxlbiA8PSBNQVhfV09S RF9MRU5HVEggJiYgbGVuID49IE1JTl9XT1JEX0xFTkdUSCkKICAgICB7Ci0gICAgICByZWdp c3RlciBpbnQga2V5ID0gaGFzaCAoc3RyLCBsZW4pOworICAgICAgaW50IGtleSA9IGhhc2gg KHN0ciwgbGVuKTsKIAogICAgICAgaWYgKGtleSA8PSBNQVhfSEFTSF9WQUxVRSAmJiBrZXkg Pj0gMCkKICAgICAgICAgewotICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnMgPSB3 b3JkbGlzdFtrZXldLm5hbWU7CisgICAgICAgICAgY29uc3QgY2hhciAqcyA9IHdvcmRsaXN0 W2tleV0ubmFtZTsKIAogICAgICAgICAgIGlmICgqc3RyID09ICpzICYmICFzdHJuY21wIChz dHIgKyAxLCBzICsgMSwgbGVuIC0gMSkgJiYgc1tsZW5dID09ICdcMCcpCiAgICAgICAgICAg ICByZXR1cm4gJndvcmRsaXN0W2tleV07CkBAIC0yNDYzLDcgKzI0NjMsNyBAQAogc3RhdGlj IGVudW0gc3ltX3R5cGUKIENfc3ltdHlwZSAoY2hhciAqc3RyLCBpbnQgbGVuLCBpbnQgY19l eHQpCiB7Ci0gIHJlZ2lzdGVyIHN0cnVjdCBDX3N0YWJfZW50cnkgKnNlID0gaW5fd29yZF9z ZXQgKHN0ciwgbGVuKTsKKyAgc3RydWN0IENfc3RhYl9lbnRyeSAqc2UgPSBpbl93b3JkX3Nl dCAoc3RyLCBsZW4pOwogCiAgIGlmIChzZSA9PSBOVUxMIHx8IChzZS0+Y19leHQgJiYgIShj X2V4dCAmIHNlLT5jX2V4dCkpKQogICAgIHJldHVybiBzdF9ub25lOwpAQCAtMjY5Myw3ICsy NjkzLDggQEAKICAqLwogCiBzdGF0aWMgYm9vbAotY29uc2lkZXJfdG9rZW4gKHJlZ2lzdGVy IGNoYXIgKnN0ciwgcmVnaXN0ZXIgaW50IGxlbiwgcmVnaXN0ZXIgaW50IGMsIGludCAqY19l eHRwLCBpbnQgYnJhY2VsZXYsIGludCBwYXJsZXYsIGludCAqaXNfZnVuY19vcl92YXIpCitj b25zaWRlcl90b2tlbiAoY2hhciAqc3RyLCBpbnQgbGVuLCBpbnQgYywgaW50ICpjX2V4dHAs IGludCBicmFjZWxldiwKKwkJaW50IHBhcmxldiwgaW50ICppc19mdW5jX29yX3ZhcikKICAg ICAgICAgICAgICAgICAgICAgICAgIAkvKiBJTjogdG9rZW4gcG9pbnRlciAqLwogICAgICAg ICAgICAgICAgICAgICAgIAkJLyogSU46IHRva2VuIGxlbmd0aCAqLwogICAgICAgICAgICAg ICAgICAgICAJCS8qIElOOiBmaXJzdCBjaGFyIGFmdGVyIHRoZSB0b2tlbiAqLwpAQCAtMzA2 NCwxMSArMzA2NSwxMSBAQAogICAgICAgICAgICAgICAgCQkJLyogZXh0ZW5zaW9uIG9mIEMg Ki8KICAgICAgICAgICAgICAgIAkJCS8qIGlucHV0IGZpbGUgKi8KIHsKLSAgcmVnaXN0ZXIg Y2hhciBjOwkJLyogbGF0ZXN0IGNoYXIgcmVhZDsgJ1wwJyBmb3IgZW5kIG9mIGxpbmUgKi8K LSAgcmVnaXN0ZXIgY2hhciAqbHA7CQkvKiBwb2ludGVyIG9uZSBiZXlvbmQgdGhlIGNoYXJh Y3RlciBgYycgKi8KKyAgY2hhciBjOwkJCS8qIGxhdGVzdCBjaGFyIHJlYWQ7ICdcMCcgZm9y IGVuZCBvZiBsaW5lICovCisgIGNoYXIgKmxwOwkJCS8qIHBvaW50ZXIgb25lIGJleW9uZCB0 aGUgY2hhcmFjdGVyIGBjJyAqLwogICBpbnQgY3VybmR4LCBuZXduZHg7CQkvKiBpbmRpY2Vz IGZvciBjdXJyZW50IGFuZCBuZXcgbGIgKi8KLSAgcmVnaXN0ZXIgaW50IHRva29mZjsJCS8q IG9mZnNldCBpbiBsaW5lIG9mIHN0YXJ0IG9mIGN1cnJlbnQgdG9rZW4gKi8KLSAgcmVnaXN0 ZXIgaW50IHRva2xlbjsJCS8qIGxlbmd0aCBvZiBjdXJyZW50IHRva2VuICovCisgIGludCB0 b2tvZmY7CQkJLyogb2Zmc2V0IGluIGxpbmUgb2Ygc3RhcnQgb2YgY3VycmVudCB0b2tlbiAq LworICBpbnQgdG9rbGVuOwkJCS8qIGxlbmd0aCBvZiBjdXJyZW50IHRva2VuICovCiAgIGNv bnN0IGNoYXIgKnF1YWxpZmllcjsgICAgICAgIC8qIHN0cmluZyB1c2VkIHRvIHF1YWxpZnkg bmFtZXMgKi8KICAgaW50IHFsZW47CQkJLyogbGVuZ3RoIG9mIHF1YWxpZmllciAqLwogICBp bnQgYnJhY2VsZXY7CQkJLyogY3VycmVudCBicmFjZSBsZXZlbCAqLwpAQCAtNDAwMCw3ICs0 MDAxLDcgQEAKIHN0YXRpYyB2b2lkCiBGX2dldGl0IChGSUxFICppbmYpCiB7Ci0gIHJlZ2lz dGVyIGNoYXIgKmNwOworICBjaGFyICpjcDsKIAogICBkYnAgPSBza2lwX3NwYWNlcyAoZGJw KTsKICAgaWYgKCpkYnAgPT0gJ1wwJykKQEAgLTQxMTUsNyArNDExNiw3IEBACiBzdGF0aWMg dm9pZAogQWRhX2dldGl0IChGSUxFICppbmYsIGNvbnN0IGNoYXIgKm5hbWVfcXVhbGlmaWVy KQogewotICByZWdpc3RlciBjaGFyICpjcDsKKyAgY2hhciAqY3A7CiAgIGNoYXIgKm5hbWU7 CiAgIGNoYXIgYzsKIApAQCAtNDI5MSw3ICs0MjkyLDcgQEAKIHN0YXRpYyB2b2lkCiBBc21f bGFiZWxzIChGSUxFICppbmYpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmNwOworICBjaGFyICpj cDsKIAogICBMT09QX09OX0lOUFVUX0xJTkVTIChpbmYsIGxiLCBjcCkKICAgICB7CkBAIC00 MzI0LDcgKzQzMjUsNyBAQAogUGVybF9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKICAgY2hh ciAqcGFja2FnZSA9IHNhdmVzdHIgKCJtYWluIik7IC8qIGN1cnJlbnQgcGFja2FnZSBuYW1l ICovCi0gIHJlZ2lzdGVyIGNoYXIgKmNwOworICBjaGFyICpjcDsKIAogICBMT09QX09OX0lO UFVUX0xJTkVTIChpbmYsIGxiLCBjcCkKICAgICB7CkBAIC00NDA1LDcgKzQ0MDYsNyBAQAog c3RhdGljIHZvaWQKIFB5dGhvbl9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKLSAgcmVnaXN0 ZXIgY2hhciAqY3A7CisgIGNoYXIgKmNwOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGlu ZiwgbGIsIGNwKQogICAgIHsKQEAgLTQ0MzUsNyArNDQzNiw3IEBACiBzdGF0aWMgdm9pZAog UEhQX2Z1bmN0aW9ucyAoRklMRSAqaW5mKQogewotICByZWdpc3RlciBjaGFyICpjcCwgKm5h bWU7CisgIGNoYXIgKmNwLCAqbmFtZTsKICAgYm9vbCBzZWFyY2hfaWRlbnRpZmllciA9IEZB TFNFOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGluZiwgbGIsIGNwKQpAQCAtNDUxNCw3 ICs0NTE1LDcgQEAKIHN0YXRpYyB2b2lkCiBDb2JvbF9wYXJhZ3JhcGhzIChGSUxFICppbmYp CiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmJwLCAqZXA7CisgIGNoYXIgKmJwLCAqZXA7CiAKICAg TE9PUF9PTl9JTlBVVF9MSU5FUyAoaW5mLCBsYiwgYnApCiAgICAgewpAQCAtNDU0Miw3ICs0 NTQzLDcgQEAKIHN0YXRpYyB2b2lkCiBNYWtlZmlsZV90YXJnZXRzIChGSUxFICppbmYpCiB7 Ci0gIHJlZ2lzdGVyIGNoYXIgKmJwOworICBjaGFyICpicDsKIAogICBMT09QX09OX0lOUFVU X0xJTkVTIChpbmYsIGxiLCBicCkKICAgICB7CkBAIC00ODE3LDcgKzQ4MTgsNyBAQAogc3Rh dGljIHZvaWQKIEx1YV9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKLSAgcmVnaXN0ZXIgY2hh ciAqYnA7CisgIGNoYXIgKmJwOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGluZiwgbGIs IGJwKQogICAgIHsKQEAgLTQ4NDMsNyArNDg0NCw3IEBACiBzdGF0aWMgdm9pZAogUFNfZnVu Y3Rpb25zIChGSUxFICppbmYpCiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmJwLCAqZXA7CisgIGNo YXIgKmJwLCAqZXA7CiAKICAgTE9PUF9PTl9JTlBVVF9MSU5FUyAoaW5mLCBsYiwgYnApCiAg ICAgewpAQCAtNDg3Myw3ICs0ODc0LDcgQEAKIHN0YXRpYyB2b2lkCiBGb3J0aF93b3JkcyAo RklMRSAqaW5mKQogewotICByZWdpc3RlciBjaGFyICpicDsKKyAgY2hhciAqYnA7CiAKICAg TE9PUF9PTl9JTlBVVF9MSU5FUyAoaW5mLCBsYiwgYnApCiAgICAgd2hpbGUgKChicCA9IHNr aXBfc3BhY2VzIChicCkpWzBdICE9ICdcMCcpCkBAIC00OTA5LDcgKzQ5MTAsNyBAQAogc3Rh dGljIHZvaWQKIFNjaGVtZV9mdW5jdGlvbnMgKEZJTEUgKmluZikKIHsKLSAgcmVnaXN0ZXIg Y2hhciAqYnA7CisgIGNoYXIgKmJwOwogCiAgIExPT1BfT05fSU5QVVRfTElORVMgKGluZiwg bGIsIGJwKQogICAgIHsKQEAgLTQ5ODMsNyArNDk4NCw3IEBACiAJICBmb3IgKGtleSA9IFRF WF90b2t0YWI7IGtleS0+YnVmZmVyICE9IE5VTEw7IGtleSsrKQogCSAgICBpZiAoc3RybmVx IChjcCwga2V5LT5idWZmZXIsIGtleS0+bGVuKSkKIAkgICAgICB7Ci0JCXJlZ2lzdGVyIGNo YXIgKnA7CisJCWNoYXIgKnA7CiAJCWludCBuYW1lbGVuLCBsaW5lbGVuOwogCQlib29sIG9w Z3JwID0gRkFMU0U7CiAKQEAgLTUwNTgsNyArNTA1OSw3IEBACiBzdGF0aWMgdm9pZAogVEVY X2RlY29kZV9lbnYgKGNvbnN0IGNoYXIgKmV2YXJuYW1lLCBjb25zdCBjaGFyICpkZWZlbnYp CiB7Ci0gIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKmVudiwgKnA7CisgIGNvbnN0IGNoYXIgKmVu diwgKnA7CiAgIGludCBpLCBsZW47CiAKICAgLyogQXBwZW5kIGRlZmF1bHQgc3RyaW5nIHRv IGVudmlyb25tZW50LiAqLwpAQCAtNTk0OCw3ICs1OTQ5LDcgQEAKIHN0YXRpYyBib29sCiBu b2Nhc2VfdGFpbCAoY29uc3QgY2hhciAqY3ApCiB7Ci0gIHJlZ2lzdGVyIGludCBsZW4gPSAw OworICBpbnQgbGVuID0gMDsKIAogICB3aGlsZSAoKmNwICE9ICdcMCcgJiYgbG93Y2FzZSAo KmNwKSA9PSBsb3djYXNlIChkYnBbbGVuXSkpCiAgICAgY3ArKywgbGVuKys7CkBAIC01OTYx LDkgKzU5NjIsOSBAQAogfQogCiBzdGF0aWMgdm9pZAotZ2V0X3RhZyAocmVnaXN0ZXIgY2hh ciAqYnAsIGNoYXIgKipuYW1lcHApCitnZXRfdGFnIChjaGFyICpicCwgY2hhciAqKm5hbWVw cCkKIHsKLSAgcmVnaXN0ZXIgY2hhciAqY3AgPSBicDsKKyAgY2hhciAqY3AgPSBicDsKIAog ICBpZiAoKmJwICE9ICdcMCcpCiAgICAgewpAQCAtNTk5MiwxOCArNTk5MywxOCBAQAogICog YXBwZW5kZWQgdG8gYGZpbGVidWYnLgogICovCiBzdGF0aWMgbG9uZwotcmVhZGxpbmVfaW50 ZXJuYWwgKGxpbmVidWZmZXIgKmxicCwgcmVnaXN0ZXIgRklMRSAqc3RyZWFtKQorcmVhZGxp bmVfaW50ZXJuYWwgKGxpbmVidWZmZXIgKmxicCwgRklMRSAqc3RyZWFtKQogewogICBjaGFy ICpidWZmZXIgPSBsYnAtPmJ1ZmZlcjsKLSAgcmVnaXN0ZXIgY2hhciAqcCA9IGxicC0+YnVm ZmVyOwotICByZWdpc3RlciBjaGFyICpwZW5kOworICBjaGFyICpwID0gbGJwLT5idWZmZXI7 CisgIGNoYXIgKnBlbmQ7CiAgIGludCBjaGFyc19kZWxldGVkOwogCiAgIHBlbmQgPSBwICsg bGJwLT5zaXplOwkJLyogU2VwYXJhdGUgdG8gYXZvaWQgMzg2L0lYIGNvbXBpbGVyIGJ1Zy4g ICovCiAKICAgZm9yICg7OykKICAgICB7Ci0gICAgICByZWdpc3RlciBpbnQgYyA9IGdldGMg KHN0cmVhbSk7CisgICAgICBpbnQgYyA9IGdldGMgKHN0cmVhbSk7CiAgICAgICBpZiAocCA9 PSBwZW5kKQogCXsKIAkgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgbGluZWJ1ZmZlcjogZXhw YW5kIGl0LiAqLwpAQCAtNjI3NSw3ICs2Mjc2LDcgQEAKIHN0YXRpYyBjaGFyICoKIHNhdmVu c3RyIChjb25zdCBjaGFyICpjcCwgaW50IGxlbikKIHsKLSAgcmVnaXN0ZXIgY2hhciAqZHA7 CisgIGNoYXIgKmRwOwogCiAgIGRwID0geG5ldyAobGVuICsgMSwgY2hhcik7CiAgIHN0cm5j cHkgKGRwLCBjcCwgbGVuKTsKQEAgLTYyOTAsOSArNjI5MSw5IEBACiAgKiBJZGVudGljYWwg dG8gUE9TSVggc3RycmNociwgaW5jbHVkZWQgZm9yIHBvcnRhYmlsaXR5LgogICovCiBzdGF0 aWMgY2hhciAqCi1ldGFnc19zdHJyY2hyIChyZWdpc3RlciBjb25zdCBjaGFyICpzcCwgcmVn aXN0ZXIgaW50IGMpCitldGFnc19zdHJyY2hyIChjb25zdCBjaGFyICpzcCwgaW50IGMpCiB7 Ci0gIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnI7CisgIGNvbnN0IGNoYXIgKnI7CiAKICAgciA9 IE5VTEw7CiAgIGRvCkBAIC02MzEwLDcgKzYzMTEsNyBAQAogICogSWRlbnRpY2FsIHRvIFBP U0lYIHN0cmNociwgaW5jbHVkZWQgZm9yIHBvcnRhYmlsaXR5LgogICovCiBzdGF0aWMgY2hh ciAqCi1ldGFnc19zdHJjaHIgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnNwLCByZWdpc3RlciBp bnQgYykKK2V0YWdzX3N0cmNociAoY29uc3QgY2hhciAqc3AsIGludCBjKQogewogICBkbwog ICAgIHsKQEAgLTYzMjYsNyArNjMyNyw3IEBACiAgKiBTYW1lIGFzIEJTRCdzIHN0cmNhc2Vj bXAsIGluY2x1ZGVkIGZvciBwb3J0YWJpbGl0eS4KICAqLwogc3RhdGljIGludAotZXRhZ3Nf c3RyY2FzZWNtcCAocmVnaXN0ZXIgY29uc3QgY2hhciAqczEsIHJlZ2lzdGVyIGNvbnN0IGNo YXIgKnMyKQorZXRhZ3Nfc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIg KnMyKQogewogICB3aGlsZSAoKnMxICE9ICdcMCcKIAkgJiYgKElTQUxQSEEgKCpzMSkgJiYg SVNBTFBIQSAoKnMyKQpAQCAtNjM0Niw3ICs2MzQ3LDcgQEAKICAqIFNhbWUgYXMgQlNEJ3Mg c3RybmNhc2VjbXAsIGluY2x1ZGVkIGZvciBwb3J0YWJpbGl0eS4KICAqLwogc3RhdGljIGlu dAotZXRhZ3Nfc3RybmNhc2VjbXAgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnMxLCByZWdpc3Rl ciBjb25zdCBjaGFyICpzMiwgcmVnaXN0ZXIgaW50IG4pCitldGFnc19zdHJuY2FzZWNtcCAo Y29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBpbnQgbikKIHsKICAgd2hpbGUgKCpz MSAhPSAnXDAnICYmIG4tLSA+IDAKIAkgJiYgKElTQUxQSEEgKCpzMSkgJiYgSVNBTFBIQSAo KnMyKQpAQCAtNjYxOSw5ICs2NjIwLDkgQEAKIC8qIERvd25jYXNlIERPUyBkcml2ZSBsZXR0 ZXIgYW5kIGNvbGxhcHNlIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgc2xhc2hlcy4KICAgIFdv cmtzIGluIHBsYWNlLiAqLwogc3RhdGljIHZvaWQKLWNhbm9uaWNhbGl6ZV9maWxlbmFtZSAo cmVnaXN0ZXIgY2hhciAqZm4pCitjYW5vbmljYWxpemVfZmlsZW5hbWUgKGNoYXIgKmZuKQog ewotICByZWdpc3RlciBjaGFyKiBjcDsKKyAgY2hhciAqY3A7CiAgIGNoYXIgc2VwID0gJy8n OwogCiAjaWZkZWYgRE9TX05UCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGliLXNyYy9oZXhsLmMn Ci0tLSBsaWItc3JjL2hleGwuYwkyMDEyLTAxLTE5IDA3OjIxOjI1ICswMDAwCisrKyBsaWIt c3JjL2hleGwuYwkyMDEyLTA2LTAzIDA1OjUzOjM4ICswMDAwCkBAIC01Myw3ICs1Myw3IEBA CiBpbnQKIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKLSAgcmVnaXN0ZXIgbG9u ZyBhZGRyZXNzOworICBsb25nIGFkZHJlc3M7CiAgIGNoYXIgc3RyaW5nWzE4XTsKICAgRklM RSAqZnA7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQAogI2VuZGlmCiAJICBmb3IgKDs7KQogCSAg ICB7Ci0JICAgICAgcmVnaXN0ZXIgaW50IGksIGMgPSAwLCBkOworCSAgICAgIGludCBpLCBj ID0gMCwgZDsKIAogI2RlZmluZSBoZXhjaGFyKHgpIChpc2RpZ2l0ICh4KSA/IHggLSAnMCcg OiB4IC0gJ2EnICsgMTApCiAKQEAgLTIzMCw3ICsyMzAsNyBAQAogCSAgc3RyaW5nWzE3XSA9 ICdcMCc7CiAJICBmb3IgKDs7KQogCSAgICB7Ci0JICAgICAgcmVnaXN0ZXIgaW50IGksIGMg PSAwOworCSAgICAgIGludCBpLCBjID0gMDsKIAogCSAgICAgIGZvciAoaT0wOyBpIDwgMTY7 ICsraSkKIAkJewoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1zcmMvbWFrZS1kb2NmaWxlLmMn Ci0tLSBsaWItc3JjL21ha2UtZG9jZmlsZS5jCTIwMTItMDUtMzAgMDM6NTk6NDIgKzAwMDAK KysrIGxpYi1zcmMvbWFrZS1kb2NmaWxlLmMJMjAxMi0wNi0wMyAwNTo1MzozOCArMDAwMApA QCAtMzk4LDcgKzM5OCw3IEBACiBzdGF0aWMgaW50CiByZWFkX2Nfc3RyaW5nX29yX2NvbW1l bnQgKEZJTEUgKmluZmlsZSwgaW50IHByaW50ZmxhZywgaW50IGNvbW1lbnQsIGludCAqc2F3 X3VzYWdlKQogewotICByZWdpc3RlciBpbnQgYzsKKyAgaW50IGM7CiAgIHN0cnVjdCByY3Nv Y19zdGF0ZSBzdGF0ZTsKIAogICBzdGF0ZS5pbl9maWxlID0gaW5maWxlOwpAQCAtNDg2LDcg KzQ4Niw3IEBACiBzdGF0aWMgdm9pZAogd3JpdGVfY19hcmdzIChGSUxFICpvdXQsIGNoYXIg KmZ1bmMsIGNoYXIgKmJ1ZiwgaW50IG1pbmFyZ3MsIGludCBtYXhhcmdzKQogewotICByZWdp c3RlciBjaGFyICpwOworICBjaGFyICpwOwogICBpbnQgaW5faWRlbnQgPSAwOwogICBjaGFy ICppZGVudF9zdGFydCBJRl9MSU5UICg9IE5VTEwpOwogICBzaXplX3QgaWRlbnRfbGVuZ3Ro ID0gMDsKQEAgLTY2Myw4ICs2NjMsOCBAQAogc2Nhbl9jX2ZpbGUgKGNoYXIgKmZpbGVuYW1l LCBjb25zdCBjaGFyICptb2RlKQogewogICBGSUxFICppbmZpbGU7Ci0gIHJlZ2lzdGVyIGlu dCBjOwotICByZWdpc3RlciBpbnQgY29tbWFzOworICBpbnQgYzsKKyAgaW50IGNvbW1hczsK ICAgaW50IG1pbmFyZ3MsIG1heGFyZ3M7CiAgIGludCBleHRlbnNpb24gPSBmaWxlbmFtZVtz dHJsZW4gKGZpbGVuYW1lKSAtIDFdOwogCkBAIC0xMDQ5LDcgKzEwNDksNyBAQAogc2Nhbl9s aXNwX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlKQogewog ICBGSUxFICppbmZpbGU7Ci0gIHJlZ2lzdGVyIGludCBjOworICBpbnQgYzsKICAgY2hhciAq c2F2ZWRfc3RyaW5nID0gMDsKIAogICBpZiAoZ2VuZXJhdGVfZ2xvYmFscykKCj09PSBtb2Rp ZmllZCBmaWxlICdsaWItc3JjL21vdmVtYWlsLmMnCi0tLSBsaWItc3JjL21vdmVtYWlsLmMJ MjAxMi0wMS0xOSAwNzoyMToyNSArMDAwMAorKysgbGliLXNyYy9tb3ZlbWFpbC5jCTIwMTIt MDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTcxMCw3ICs3MTAsNyBAQAogcG9wbWFpbCAoY2hh ciAqbWFpbGJveCwgY2hhciAqb3V0ZmlsZSwgaW50IHByZXNlcnZlLCBjaGFyICpwYXNzd29y ZCwgaW50IHJldmVyc2Vfb3JkZXIpCiB7CiAgIGludCBubXNncywgbmJ5dGVzOwotICByZWdp c3RlciBpbnQgaTsKKyAgaW50IGk7CiAgIGludCBtYmZpOwogICBGSUxFICptYmY7CiAgIGNo YXIgKmdldGVudiAoY29uc3QgY2hhciAqKTsKCj09PSBtb2RpZmllZCBmaWxlICdsaWItc3Jj L3BvcC5jJwotLS0gbGliLXNyYy9wb3AuYwkyMDEyLTA1LTAyIDEwOjEyOjEzICswMDAwCisr KyBsaWItc3JjL3BvcC5jCTIwMTItMDYtMDMgMDU6NTM6MzggKzAwMDAKQEAgLTk5OSw3ICs5 OTksNyBAQAogICBrcmI1X2NjYWNoZSBjY2RlZjsKICAga3JiNV9wcmluY2lwYWwgY2xpZW50 LCBzZXJ2ZXI7CiAgIGtyYjVfZXJyb3IgKmVycl9yZXQ7Ci0gIHJlZ2lzdGVyIGNoYXIgKmNw OworICBjaGFyICpjcDsKICNlbHNlCiAgIEtURVhUIHRpY2tldDsKICAgTVNHX0RBVCBtc2df ZGF0YTsK --------------010202060104020205090600--