From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JSz8H-00006n-3s for qemu-devel@nongnu.org; Sat, 23 Feb 2008 13:29:57 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JSz8E-00006G-V2 for qemu-devel@nongnu.org; Sat, 23 Feb 2008 13:29:56 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JSz8E-00006D-OD for qemu-devel@nongnu.org; Sat, 23 Feb 2008 13:29:54 -0500 Received: from fk-out-0910.google.com ([209.85.128.191]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JSz8B-0000y4-Uo for qemu-devel@nongnu.org; Sat, 23 Feb 2008 13:29:54 -0500 Received: by fk-out-0910.google.com with SMTP id 18so1848319fkq.2 for ; Sat, 23 Feb 2008 10:29:49 -0800 (PST) Message-ID: Date: Sat, 23 Feb 2008 20:29:49 +0200 From: "Blue Swirl" In-Reply-To: <47C064B5.4040809@bellard.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1926_26149892.1203791389276" References: <47C064B5.4040809@bellard.org> Subject: [Qemu-devel] Re: [PATCH, RFC, WIP] TCG for Qemu target Sparc32/64 Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabrice Bellard Cc: qemu-devel@nongnu.org ------=_Part_1926_26149892.1203791389276 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 2/23/08, Fabrice Bellard wrote: > Blue Swirl wrote: > > The attached patch enables most TCG ops for Qemu Sparc32/64 target. > > Sparc32 softmmu and linux-user are OK, but Sparc64 and Sparc32plus > > targets do not work. > > > > Comments? > > > > It would be nice to get rid of T2 usage in std (also stda and > > casa/casxa) but I don't know how to pass a 64-bit value from legacy op > > to TCG stores and loads on a 32-bit target and host. > > [...] > > Also don't forget that T2 is used in CPU restore state to handle delay > slots. This part of the SPARC target is tricky and should be simplified. I just got rid of other T2 accesses. > Another point is that you should define TCG globals for each SPARC GPR. > It was not done for i386 because I feared performance regressions when > accessing to 16 bit or 8 bit sub-registers. On SPARC you do not have > this issue. Nice idea. Would this also work for windowed registers? > Regarding the generic "xxx_tl" defines, I did not move it into TCG > because I wanted TCG to be target independent. Since it is no longer the > case because of the target memory access instructions, I think it is a > good idea now. But do not mix the target specific defines with target > independent defines (in tcg-op.h there is a specific section for target > specific defines). Ok, I'll move them there. Here's my current version. Sparc32 is still OK and Sparc32plus helloworld executes. ------=_Part_1926_26149892.1203791389276 Content-Type: text/x-diff; name=tcg_more_calls.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fd0ibtpt Content-Disposition: attachment; filename=tcg_more_calls.diff SW5kZXg6IHFlbXUvdGNnL3RjZy1vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy90Y2cvdGNn LW9wLmgJMjAwOC0wMi0yMyAwNjo0ODozOC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdGNnL3Rj Zy1vcC5oCTIwMDgtMDItMjMgMDg6MTM6MTUuMDAwMDAwMDAwICswMDAwCkBAIC0xOTIsNiArMTky LDMzIEBACiAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIDIsIGFyZ3MpOwogfQogCitzdGF0aWMg aW5saW5lIHZvaWQgdGNnX2dlbl9oZWxwZXJfMF80KHZvaWQgKmZ1bmMsIFRDR3YgYXJnMSwgVENH diBhcmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0d2IGFyZzMs IFRDR3YgYXJnNCkKK3sKKyAgICBUQ0d2IGFyZ3NbNF07CisgICAgYXJnc1swXSA9IGFyZzE7Cisg ICAgYXJnc1sxXSA9IGFyZzI7CisgICAgYXJnc1syXSA9IGFyZzM7CisgICAgYXJnc1szXSA9IGFy ZzQ7CisgICAgdGNnX2dlbl9jYWxsKCZ0Y2dfY3R4LAorICAgICAgICAgICAgICAgICB0Y2dfY29u c3RfcHRyKCh0Y2dfdGFyZ2V0X2xvbmcpZnVuYyksIFRDR19IRUxQRVJfQ0FMTF9GTEFHUywKKyAg ICAgICAgICAgICAgICAgMCwgTlVMTCwgNCwgYXJncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCB0Y2dfZ2VuX2hlbHBlcl8xXzAodm9pZCAqZnVuYywgVENHdiByZXQpCit7CisgICAgdGNnX2dl bl9jYWxsKCZ0Y2dfY3R4LAorICAgICAgICAgICAgICAgICB0Y2dfY29uc3RfcHRyKCh0Y2dfdGFy Z2V0X2xvbmcpZnVuYyksIFRDR19IRUxQRVJfQ0FMTF9GTEFHUywKKyAgICAgICAgICAgICAgICAg MSwgJnJldCwgMCwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX2hlbHBl cl8xXzEodm9pZCAqZnVuYywgVENHdiByZXQsIFRDR3YgYXJnMSkKK3sKKyAgICB0Y2dfZ2VuX2Nh bGwoJnRjZ19jdHgsCisgICAgICAgICAgICAgICAgIHRjZ19jb25zdF9wdHIoKHRjZ190YXJnZXRf bG9uZylmdW5jKSwgVENHX0hFTFBFUl9DQUxMX0ZMQUdTLAorICAgICAgICAgICAgICAgICAxLCAm cmV0LCAxLCAmYXJnMSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX2hlbHBlcl8x XzIodm9pZCAqZnVuYywgVENHdiByZXQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUQ0d2IGFyZzEsIFRDR3YgYXJnMikKIHsKQEAgLTIwMyw2ICsyMzAsMjAgQEAKICAg ICAgICAgICAgICAgICAgMSwgJnJldCwgMiwgYXJncyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9p ZCB0Y2dfZ2VuX2hlbHBlcl8xXzQodm9pZCAqZnVuYywgVENHdiByZXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRDR3YgYXJnMSwgVENHdiBhcmcyLCBUQ0d2IGFyZzMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR3YgYXJnNCkKK3sKKyAg ICBUQ0d2IGFyZ3NbNF07CisgICAgYXJnc1swXSA9IGFyZzE7CisgICAgYXJnc1sxXSA9IGFyZzI7 CisgICAgYXJnc1syXSA9IGFyZzM7CisgICAgYXJnc1szXSA9IGFyZzQ7CisgICAgdGNnX2dlbl9j YWxsKCZ0Y2dfY3R4LAorICAgICAgICAgICAgICAgICB0Y2dfY29uc3RfcHRyKCh0Y2dfdGFyZ2V0 X2xvbmcpZnVuYyksIFRDR19IRUxQRVJfQ0FMTF9GTEFHUywKKyAgICAgICAgICAgICAgICAgMSwg JnJldCwgNCwgYXJncyk7Cit9CisKIC8qIDMyIGJpdCBvcHMgKi8KIAogc3RhdGljIGlubGluZSB2 b2lkIHRjZ19nZW5fbGQ4dV9pMzIoVENHdiByZXQsIFRDR3YgYXJnMiwgdGNnX3RhcmdldF9sb25n IG9mZnNldCkK ------=_Part_1926_26149892.1203791389276 Content-Type: text/x-diff; name=tcg_sparc_target.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fd0ic2rs Content-Disposition: attachment; filename=tcg_sparc_target.diff SW5kZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMJMjAwOC0wMi0yMiAxNjoxNjoyMS4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCTIwMDgtMDItMjMgMTY6 NDc6NDMuMDAwMDAwMDAwICswMDAwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiY3B1Lmgi CiAjaW5jbHVkZSAiZXhlYy1hbGwuaCIKICNpbmNsdWRlICJkaXNhcy5oIgorI2luY2x1ZGUgImhl bHBlci5oIgogI2luY2x1ZGUgInRjZy1vcC5oIgogCiAjZGVmaW5lIERFQlVHX0RJU0FTCkBAIC00 NCw2ICs0NSw4MSBAQAogI2RlZmluZSBKVU1QX1BDICAgICAyIC8qIGR5bmFtaWMgcGMgdmFsdWUg d2hpY2ggdGFrZXMgb25seSB0d28gdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNj b3JkaW5nIHRvIGp1bXBfcGNbVDJdICovCiAKKyNpZmRlZiBUQVJHRVRfU1BBUkM2NAorI2RlZmlu ZSBUQ0dfVFlQRV9UTCBUQ0dfVFlQRV9JNjQKKyNkZWZpbmUgdGNnX2dlbl9tb3ZpX3RsIHRjZ19n ZW5fbW92aV9pNjQKKyNkZWZpbmUgdGNnX2dlbl9tb3ZfdGwgdGNnX2dlbl9tb3ZfaTY0CisjZGVm aW5lIHRjZ19nZW5fbGQ4dV90bCB0Y2dfZ2VuX2xkOHVfaTY0CisjZGVmaW5lIHRjZ19nZW5fbGQ4 c190bCB0Y2dfZ2VuX2xkOHNfaTY0CisjZGVmaW5lIHRjZ19nZW5fbGQxNnVfdGwgdGNnX2dlbl9s ZDE2dV9pNjQKKyNkZWZpbmUgdGNnX2dlbl9sZDE2c190bCB0Y2dfZ2VuX2xkMTZzX2k2NAorI2Rl ZmluZSB0Y2dfZ2VuX2xkMzJ1X3RsIHRjZ19nZW5fbGQzMnVfaTY0CisjZGVmaW5lIHRjZ19nZW5f bGQzMnNfdGwgdGNnX2dlbl9sZDMyc19pNjQKKyNkZWZpbmUgdGNnX2dlbl9sZF90bCB0Y2dfZ2Vu X2xkX2k2NAorI2RlZmluZSB0Y2dfZ2VuX3N0OF90bCB0Y2dfZ2VuX3N0OF9pNjQKKyNkZWZpbmUg dGNnX2dlbl9zdDE2X3RsIHRjZ19nZW5fc3QxNl9pNjQKKyNkZWZpbmUgdGNnX2dlbl9zdDMyX3Rs IHRjZ19nZW5fc3QzMl9pNjQKKyNkZWZpbmUgdGNnX2dlbl9zdF90bCB0Y2dfZ2VuX3N0X2k2NAor I2RlZmluZSB0Y2dfZ2VuX2FkZF90bCB0Y2dfZ2VuX2FkZF9pNjQKKyNkZWZpbmUgdGNnX2dlbl9h ZGRpX3RsIHRjZ19nZW5fYWRkaV9pNjQKKyNkZWZpbmUgdGNnX2dlbl9zdWJfdGwgdGNnX2dlbl9z dWJfaTY0CisjZGVmaW5lIHRjZ19nZW5fc3ViaV90bCB0Y2dfZ2VuX3N1YmlfaTY0CisjZGVmaW5l IHRjZ19nZW5fYW5kX3RsIHRjZ19nZW5fYW5kX2k2NAorI2RlZmluZSB0Y2dfZ2VuX2FuZGlfdGwg dGNnX2dlbl9hbmRpX2k2NAorI2RlZmluZSB0Y2dfZ2VuX29yX3RsIHRjZ19nZW5fb3JfaTY0Cisj ZGVmaW5lIHRjZ19nZW5fb3JpX3RsIHRjZ19nZW5fb3JpX2k2NAorI2RlZmluZSB0Y2dfZ2VuX3hv cl90bCB0Y2dfZ2VuX3hvcl9pNjQKKyNkZWZpbmUgdGNnX2dlbl94b3JpX3RsIHRjZ19nZW5feG9y aV9pNjQKKyNkZWZpbmUgdGNnX2dlbl9zaGxfdGwgdGNnX2dlbl9zaGxfaTY0CisjZGVmaW5lIHRj Z19nZW5fc2hsaV90bCB0Y2dfZ2VuX3NobGlfaTY0CisjZGVmaW5lIHRjZ19nZW5fc2hyX3RsIHRj Z19nZW5fc2hyX2k2NAorI2RlZmluZSB0Y2dfZ2VuX3NocmlfdGwgdGNnX2dlbl9zaHJpX2k2NAor I2RlZmluZSB0Y2dfZ2VuX3Nhcl90bCB0Y2dfZ2VuX3Nhcl9pNjQKKyNkZWZpbmUgdGNnX2dlbl9z YXJpX3RsIHRjZ19nZW5fc2FyaV9pNjQKKyNlbHNlCisjZGVmaW5lIFRDR19UWVBFX1RMIFRDR19U WVBFX0kzMgorI2RlZmluZSB0Y2dfZ2VuX21vdmlfdGwgdGNnX2dlbl9tb3ZpX2kzMgorI2RlZmlu ZSB0Y2dfZ2VuX21vdl90bCB0Y2dfZ2VuX21vdl9pMzIKKyNkZWZpbmUgdGNnX2dlbl9sZDh1X3Rs IHRjZ19nZW5fbGQ4dV9pMzIKKyNkZWZpbmUgdGNnX2dlbl9sZDhzX3RsIHRjZ19nZW5fbGQ4c19p MzIKKyNkZWZpbmUgdGNnX2dlbl9sZDE2dV90bCB0Y2dfZ2VuX2xkMTZ1X2kzMgorI2RlZmluZSB0 Y2dfZ2VuX2xkMTZzX3RsIHRjZ19nZW5fbGQxNnNfaTMyCisjZGVmaW5lIHRjZ19nZW5fbGQzMnVf dGwgdGNnX2dlbl9sZF9pMzIKKyNkZWZpbmUgdGNnX2dlbl9sZDMyc190bCB0Y2dfZ2VuX2xkX2kz MgorI2RlZmluZSB0Y2dfZ2VuX2xkX3RsIHRjZ19nZW5fbGRfaTMyCisjZGVmaW5lIHRjZ19nZW5f c3Q4X3RsIHRjZ19nZW5fc3Q4X2kzMgorI2RlZmluZSB0Y2dfZ2VuX3N0MTZfdGwgdGNnX2dlbl9z dDE2X2kzMgorI2RlZmluZSB0Y2dfZ2VuX3N0MzJfdGwgdGNnX2dlbl9zdF9pMzIKKyNkZWZpbmUg dGNnX2dlbl9zdF90bCB0Y2dfZ2VuX3N0X2kzMgorI2RlZmluZSB0Y2dfZ2VuX2FkZF90bCB0Y2df Z2VuX2FkZF9pMzIKKyNkZWZpbmUgdGNnX2dlbl9hZGRpX3RsIHRjZ19nZW5fYWRkaV9pMzIKKyNk ZWZpbmUgdGNnX2dlbl9zdWJfdGwgdGNnX2dlbl9zdWJfaTMyCisjZGVmaW5lIHRjZ19nZW5fc3Vi aV90bCB0Y2dfZ2VuX3N1YmlfaTMyCisjZGVmaW5lIHRjZ19nZW5fYW5kX3RsIHRjZ19nZW5fYW5k X2kzMgorI2RlZmluZSB0Y2dfZ2VuX2FuZGlfdGwgdGNnX2dlbl9hbmRpX2kzMgorI2RlZmluZSB0 Y2dfZ2VuX29yX3RsIHRjZ19nZW5fb3JfaTMyCisjZGVmaW5lIHRjZ19nZW5fb3JpX3RsIHRjZ19n ZW5fb3JpX2kzMgorI2RlZmluZSB0Y2dfZ2VuX3hvcl90bCB0Y2dfZ2VuX3hvcl9pMzIKKyNkZWZp bmUgdGNnX2dlbl94b3JpX3RsIHRjZ19nZW5feG9yaV9pMzIKKyNkZWZpbmUgdGNnX2dlbl9zaGxf dGwgdGNnX2dlbl9zaGxfaTMyCisjZGVmaW5lIHRjZ19nZW5fc2hsaV90bCB0Y2dfZ2VuX3NobGlf aTMyCisjZGVmaW5lIHRjZ19nZW5fc2hyX3RsIHRjZ19nZW5fc2hyX2kzMgorI2RlZmluZSB0Y2df Z2VuX3NocmlfdGwgdGNnX2dlbl9zaHJpX2kzMgorI2RlZmluZSB0Y2dfZ2VuX3Nhcl90bCB0Y2df Z2VuX3Nhcl9pMzIKKyNkZWZpbmUgdGNnX2dlbl9zYXJpX3RsIHRjZ19nZW5fc2FyaV9pMzIKKyNl bmRpZgorCisjaWYgVENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMgorI2RlZmluZSB0Y2dfZ2VuX2xk X3B0ciB0Y2dfZ2VuX2xkX2kzMgorI2Vsc2UKKyNkZWZpbmUgdGNnX2dlbl9sZF9wdHIgdGNnX2dl bl9sZF9pNjQKKyNlbmRpZgorCisvKiBnbG9iYWwgcmVnaXN0ZXIgaW5kZXhlcyAqLworc3RhdGlj IFRDR3YgY3B1X2VudiwgY3B1X1RbM10sIGNwdV9yZWd3cHRyOworLyogbG9jYWwgcmVnaXN0ZXIg aW5kZXhlcyAob25seSB1c2VkIGluc2lkZSBvbGQgbWljcm8gb3BzKSAqLworc3RhdGljIFRDR3Yg Y3B1X3RtcDA7CisKIHR5cGVkZWYgc3RydWN0IERpc2FzQ29udGV4dCB7CiAgICAgdGFyZ2V0X3Vs b25nIHBjOyAgICAvKiBjdXJyZW50IFByb2dyYW0gQ291bnRlcjogaW50ZWdlciBvciBEWU5BTUlD X1BDICovCiAgICAgdGFyZ2V0X3Vsb25nIG5wYzsgICAvKiBuZXh0IFBDOiBpbnRlZ2VyIG9yIERZ TkFNSUNfUEMgb3IgSlVNUF9QQyAqLwpAQCAtMTAyLDE5NSArMTc4LDYgQEAKIAogc3RhdGljIHZv aWQgZGlzYXNfc3BhcmNfaW5zbihEaXNhc0NvbnRleHQgKiBkYyk7CiAKLXN0YXRpYyBHZW5PcEZ1 bmMgKiBjb25zdCBnZW5fb3BfbW92bF9UTl9yZWdbMl1bMzJdID0gewotICAgIHsKLSAgICAgZ2Vu X29wX21vdmxfZzBfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2cxX1QwLAotICAgICBnZW5fb3BfbW92 bF9nMl9UMCwKLSAgICAgZ2VuX29wX21vdmxfZzNfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2c0X1Qw LAotICAgICBnZW5fb3BfbW92bF9nNV9UMCwKLSAgICAgZ2VuX29wX21vdmxfZzZfVDAsCi0gICAg IGdlbl9vcF9tb3ZsX2c3X1QwLAotICAgICBnZW5fb3BfbW92bF9vMF9UMCwKLSAgICAgZ2VuX29w X21vdmxfbzFfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX28yX1QwLAotICAgICBnZW5fb3BfbW92bF9v M19UMCwKLSAgICAgZ2VuX29wX21vdmxfbzRfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX281X1QwLAot ICAgICBnZW5fb3BfbW92bF9vNl9UMCwKLSAgICAgZ2VuX29wX21vdmxfbzdfVDAsCi0gICAgIGdl bl9vcF9tb3ZsX2wwX1QwLAotICAgICBnZW5fb3BfbW92bF9sMV9UMCwKLSAgICAgZ2VuX29wX21v dmxfbDJfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2wzX1QwLAotICAgICBnZW5fb3BfbW92bF9sNF9U MCwKLSAgICAgZ2VuX29wX21vdmxfbDVfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2w2X1QwLAotICAg ICBnZW5fb3BfbW92bF9sN19UMCwKLSAgICAgZ2VuX29wX21vdmxfaTBfVDAsCi0gICAgIGdlbl9v cF9tb3ZsX2kxX1QwLAotICAgICBnZW5fb3BfbW92bF9pMl9UMCwKLSAgICAgZ2VuX29wX21vdmxf aTNfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2k0X1QwLAotICAgICBnZW5fb3BfbW92bF9pNV9UMCwK LSAgICAgZ2VuX29wX21vdmxfaTZfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2k3X1QwLAotICAgICB9 LAotICAgIHsKLSAgICAgZ2VuX29wX21vdmxfZzBfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2cxX1Qx LAotICAgICBnZW5fb3BfbW92bF9nMl9UMSwKLSAgICAgZ2VuX29wX21vdmxfZzNfVDEsCi0gICAg IGdlbl9vcF9tb3ZsX2c0X1QxLAotICAgICBnZW5fb3BfbW92bF9nNV9UMSwKLSAgICAgZ2VuX29w X21vdmxfZzZfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2c3X1QxLAotICAgICBnZW5fb3BfbW92bF9v MF9UMSwKLSAgICAgZ2VuX29wX21vdmxfbzFfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX28yX1QxLAot ICAgICBnZW5fb3BfbW92bF9vM19UMSwKLSAgICAgZ2VuX29wX21vdmxfbzRfVDEsCi0gICAgIGdl bl9vcF9tb3ZsX281X1QxLAotICAgICBnZW5fb3BfbW92bF9vNl9UMSwKLSAgICAgZ2VuX29wX21v dmxfbzdfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2wwX1QxLAotICAgICBnZW5fb3BfbW92bF9sMV9U MSwKLSAgICAgZ2VuX29wX21vdmxfbDJfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2wzX1QxLAotICAg ICBnZW5fb3BfbW92bF9sNF9UMSwKLSAgICAgZ2VuX29wX21vdmxfbDVfVDEsCi0gICAgIGdlbl9v cF9tb3ZsX2w2X1QxLAotICAgICBnZW5fb3BfbW92bF9sN19UMSwKLSAgICAgZ2VuX29wX21vdmxf aTBfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2kxX1QxLAotICAgICBnZW5fb3BfbW92bF9pMl9UMSwK LSAgICAgZ2VuX29wX21vdmxfaTNfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2k0X1QxLAotICAgICBn ZW5fb3BfbW92bF9pNV9UMSwKLSAgICAgZ2VuX29wX21vdmxfaTZfVDEsCi0gICAgIGdlbl9vcF9t b3ZsX2k3X1QxLAotICAgICB9Ci19OwotCi1zdGF0aWMgR2VuT3BGdW5jICogY29uc3QgZ2VuX29w X21vdmxfcmVnX1ROWzNdWzMyXSA9IHsKLSAgICB7Ci0gICAgIGdlbl9vcF9tb3ZsX1QwX2cwLAot ICAgICBnZW5fb3BfbW92bF9UMF9nMSwKLSAgICAgZ2VuX29wX21vdmxfVDBfZzIsCi0gICAgIGdl bl9vcF9tb3ZsX1QwX2czLAotICAgICBnZW5fb3BfbW92bF9UMF9nNCwKLSAgICAgZ2VuX29wX21v dmxfVDBfZzUsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2c2LAotICAgICBnZW5fb3BfbW92bF9UMF9n NywKLSAgICAgZ2VuX29wX21vdmxfVDBfbzAsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX28xLAotICAg ICBnZW5fb3BfbW92bF9UMF9vMiwKLSAgICAgZ2VuX29wX21vdmxfVDBfbzMsCi0gICAgIGdlbl9v cF9tb3ZsX1QwX280LAotICAgICBnZW5fb3BfbW92bF9UMF9vNSwKLSAgICAgZ2VuX29wX21vdmxf VDBfbzYsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX283LAotICAgICBnZW5fb3BfbW92bF9UMF9sMCwK LSAgICAgZ2VuX29wX21vdmxfVDBfbDEsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2wyLAotICAgICBn ZW5fb3BfbW92bF9UMF9sMywKLSAgICAgZ2VuX29wX21vdmxfVDBfbDQsCi0gICAgIGdlbl9vcF9t b3ZsX1QwX2w1LAotICAgICBnZW5fb3BfbW92bF9UMF9sNiwKLSAgICAgZ2VuX29wX21vdmxfVDBf bDcsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2kwLAotICAgICBnZW5fb3BfbW92bF9UMF9pMSwKLSAg ICAgZ2VuX29wX21vdmxfVDBfaTIsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2kzLAotICAgICBnZW5f b3BfbW92bF9UMF9pNCwKLSAgICAgZ2VuX29wX21vdmxfVDBfaTUsCi0gICAgIGdlbl9vcF9tb3Zs X1QwX2k2LAotICAgICBnZW5fb3BfbW92bF9UMF9pNywKLSAgICAgfSwKLSAgICB7Ci0gICAgIGdl bl9vcF9tb3ZsX1QxX2cwLAotICAgICBnZW5fb3BfbW92bF9UMV9nMSwKLSAgICAgZ2VuX29wX21v dmxfVDFfZzIsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2czLAotICAgICBnZW5fb3BfbW92bF9UMV9n NCwKLSAgICAgZ2VuX29wX21vdmxfVDFfZzUsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2c2LAotICAg ICBnZW5fb3BfbW92bF9UMV9nNywKLSAgICAgZ2VuX29wX21vdmxfVDFfbzAsCi0gICAgIGdlbl9v cF9tb3ZsX1QxX28xLAotICAgICBnZW5fb3BfbW92bF9UMV9vMiwKLSAgICAgZ2VuX29wX21vdmxf VDFfbzMsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX280LAotICAgICBnZW5fb3BfbW92bF9UMV9vNSwK LSAgICAgZ2VuX29wX21vdmxfVDFfbzYsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX283LAotICAgICBn ZW5fb3BfbW92bF9UMV9sMCwKLSAgICAgZ2VuX29wX21vdmxfVDFfbDEsCi0gICAgIGdlbl9vcF9t b3ZsX1QxX2wyLAotICAgICBnZW5fb3BfbW92bF9UMV9sMywKLSAgICAgZ2VuX29wX21vdmxfVDFf bDQsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2w1LAotICAgICBnZW5fb3BfbW92bF9UMV9sNiwKLSAg ICAgZ2VuX29wX21vdmxfVDFfbDcsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2kwLAotICAgICBnZW5f b3BfbW92bF9UMV9pMSwKLSAgICAgZ2VuX29wX21vdmxfVDFfaTIsCi0gICAgIGdlbl9vcF9tb3Zs X1QxX2kzLAotICAgICBnZW5fb3BfbW92bF9UMV9pNCwKLSAgICAgZ2VuX29wX21vdmxfVDFfaTUs Ci0gICAgIGdlbl9vcF9tb3ZsX1QxX2k2LAotICAgICBnZW5fb3BfbW92bF9UMV9pNywKLSAgICAg fSwKLSAgICB7Ci0gICAgIGdlbl9vcF9tb3ZsX1QyX2cwLAotICAgICBnZW5fb3BfbW92bF9UMl9n MSwKLSAgICAgZ2VuX29wX21vdmxfVDJfZzIsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2czLAotICAg ICBnZW5fb3BfbW92bF9UMl9nNCwKLSAgICAgZ2VuX29wX21vdmxfVDJfZzUsCi0gICAgIGdlbl9v cF9tb3ZsX1QyX2c2LAotICAgICBnZW5fb3BfbW92bF9UMl9nNywKLSAgICAgZ2VuX29wX21vdmxf VDJfbzAsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX28xLAotICAgICBnZW5fb3BfbW92bF9UMl9vMiwK LSAgICAgZ2VuX29wX21vdmxfVDJfbzMsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX280LAotICAgICBn ZW5fb3BfbW92bF9UMl9vNSwKLSAgICAgZ2VuX29wX21vdmxfVDJfbzYsCi0gICAgIGdlbl9vcF9t b3ZsX1QyX283LAotICAgICBnZW5fb3BfbW92bF9UMl9sMCwKLSAgICAgZ2VuX29wX21vdmxfVDJf bDEsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2wyLAotICAgICBnZW5fb3BfbW92bF9UMl9sMywKLSAg ICAgZ2VuX29wX21vdmxfVDJfbDQsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2w1LAotICAgICBnZW5f b3BfbW92bF9UMl9sNiwKLSAgICAgZ2VuX29wX21vdmxfVDJfbDcsCi0gICAgIGdlbl9vcF9tb3Zs X1QyX2kwLAotICAgICBnZW5fb3BfbW92bF9UMl9pMSwKLSAgICAgZ2VuX29wX21vdmxfVDJfaTIs Ci0gICAgIGdlbl9vcF9tb3ZsX1QyX2kzLAotICAgICBnZW5fb3BfbW92bF9UMl9pNCwKLSAgICAg Z2VuX29wX21vdmxfVDJfaTUsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2k2LAotICAgICBnZW5fb3Bf bW92bF9UMl9pNywKLSAgICAgfQotfTsKLQotc3RhdGljIEdlbk9wRnVuYzEgKiBjb25zdCBnZW5f b3BfbW92bF9UTl9pbVszXSA9IHsKLSAgICBnZW5fb3BfbW92bF9UMF9pbSwKLSAgICBnZW5fb3Bf bW92bF9UMV9pbSwKLSAgICBnZW5fb3BfbW92bF9UMl9pbQotfTsKLQotLy8gU2lnbiBleHRlbmRp bmcgdmVyc2lvbgotc3RhdGljIEdlbk9wRnVuYzEgKiBjb25zdCBnZW5fb3BfbW92bF9UTl9zaW1b M10gPSB7Ci0gICAgZ2VuX29wX21vdmxfVDBfc2ltLAotICAgIGdlbl9vcF9tb3ZsX1QxX3NpbSwK LSAgICBnZW5fb3BfbW92bF9UMl9zaW0KLX07Ci0KICNpZmRlZiBUQVJHRVRfU1BBUkM2NAogI2Rl ZmluZSBHRU4zMihmdW5jLCBOQU1FKSBcCiBzdGF0aWMgR2VuT3BGdW5jICogY29uc3QgTkFNRSAj IyBfdGFibGUgWzY0XSA9IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zNzUs MzA3ICsyNjIsMTEyIEBACiAjZW5kaWYKIAogI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZCi1PUF9M RF9UQUJMRShsZCk7Ci1PUF9MRF9UQUJMRShzdCk7Ci1PUF9MRF9UQUJMRShsZHViKTsKLU9QX0xE X1RBQkxFKGxkdWgpOwotT1BfTERfVEFCTEUobGRzYik7Ci1PUF9MRF9UQUJMRShsZHNoKTsKLU9Q X0xEX1RBQkxFKHN0Yik7Ci1PUF9MRF9UQUJMRShzdGgpOwotT1BfTERfVEFCTEUoc3RkKTsKLU9Q X0xEX1RBQkxFKGxkc3R1Yik7Ci1PUF9MRF9UQUJMRShzd2FwKTsKLU9QX0xEX1RBQkxFKGxkZCk7 CiBPUF9MRF9UQUJMRShzdGYpOwogT1BfTERfVEFCTEUoc3RkZik7CiBPUF9MRF9UQUJMRShsZGYp OwogT1BfTERfVEFCTEUobGRkZik7Ci0KLSNpZmRlZiBUQVJHRVRfU1BBUkM2NAotT1BfTERfVEFC TEUobGR1dyk7Ci1PUF9MRF9UQUJMRShsZHN3KTsKLU9QX0xEX1RBQkxFKGxkeCk7Ci1PUF9MRF9U QUJMRShzdHgpOwogI2VuZGlmCi0jZW5kaWYKLQotLyogYXNpIG1vdmVzICovCi0jaWZkZWYgVEFS R0VUX1NQQVJDNjQKLXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbGRfYXNpKGludCBpbnNuLCBpbnQg c2l6ZSwgaW50IHNpZ24pCi17Ci0gICAgaW50IGFzaSwgb2Zmc2V0OwotCi0gICAgaWYgKElTX0lN TSkgewotICAgICAgICBvZmZzZXQgPSBHRVRfRklFTEQoaW5zbiwgMjUsIDMxKTsKLSAgICAgICAg Z2VuX29wX2xkX2FzaV9yZWcob2Zmc2V0LCBzaXplLCBzaWduKTsKLSAgICB9IGVsc2UgewotICAg ICAgICBhc2kgPSBHRVRfRklFTEQoaW5zbiwgMTksIDI2KTsKLSAgICAgICAgZ2VuX29wX2xkX2Fz aShhc2ksIHNpemUsIHNpZ24pOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGdlbl9z dF9hc2koaW50IGluc24sIGludCBzaXplKQotewotICAgIGludCBhc2ksIG9mZnNldDsKLQotICAg IGlmIChJU19JTU0pIHsKLSAgICAgICAgb2Zmc2V0ID0gR0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7 Ci0gICAgICAgIGdlbl9vcF9zdF9hc2lfcmVnKG9mZnNldCwgc2l6ZSk7Ci0gICAgfSBlbHNlIHsK LSAgICAgICAgYXNpID0gR0VUX0ZJRUxEKGluc24sIDE5LCAyNik7Ci0gICAgICAgIGdlbl9vcF9z dF9hc2koYXNpLCBzaXplKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbGRm X2FzaShpbnQgaW5zbiwgaW50IHNpemUsIGludCByZCkKLXsKLSAgICBpbnQgYXNpLCBvZmZzZXQ7 Ci0KLSAgICBpZiAoSVNfSU1NKSB7Ci0gICAgICAgIG9mZnNldCA9IEdFVF9GSUVMRChpbnNuLCAy NSwgMzEpOwotICAgICAgICBnZW5fb3BfbGRmX2FzaV9yZWcob2Zmc2V0LCBzaXplLCByZCk7Ci0g ICAgfSBlbHNlIHsKLSAgICAgICAgYXNpID0gR0VUX0ZJRUxEKGluc24sIDE5LCAyNik7Ci0gICAg ICAgIGdlbl9vcF9sZGZfYXNpKGFzaSwgc2l6ZSwgcmQpOwotICAgIH0KLX0KLQotc3RhdGljIGlu bGluZSB2b2lkIGdlbl9zdGZfYXNpKGludCBpbnNuLCBpbnQgc2l6ZSwgaW50IHJkKQotewotICAg IGludCBhc2ksIG9mZnNldDsKLQotICAgIGlmIChJU19JTU0pIHsKLSAgICAgICAgb2Zmc2V0ID0g R0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7Ci0gICAgICAgIGdlbl9vcF9zdGZfYXNpX3JlZyhvZmZz ZXQsIHNpemUsIHJkKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc2kgPSBHRVRfRklFTEQoaW5z biwgMTksIDI2KTsKLSAgICAgICAgZ2VuX29wX3N0Zl9hc2koYXNpLCBzaXplLCByZCk7Ci0gICAg fQotfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3N3YXBfYXNpKGludCBpbnNuKQotewotICAg IGludCBhc2ksIG9mZnNldDsKLQotICAgIGlmIChJU19JTU0pIHsKLSAgICAgICAgb2Zmc2V0ID0g R0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7Ci0gICAgICAgIGdlbl9vcF9zd2FwX2FzaV9yZWcob2Zm c2V0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc2kgPSBHRVRfRklFTEQoaW5zbiwgMTksIDI2 KTsKLSAgICAgICAgZ2VuX29wX3N3YXBfYXNpKGFzaSk7Ci0gICAgfQotfQorI2lmZGVmIFRBUkdF VF9BQkkzMgorI2RlZmluZSBBQkkzMl9NQVNLKGFkZHIpIHRjZ19nZW5fYW5kaV9pNjQoYWRkciwg YWRkciwgMHhmZmZmZmZmZik7CisjZWxzZQorI2RlZmluZSBBQkkzMl9NQVNLKGFkZHIpCisjZW5k aWYKIAotc3RhdGljIGlubGluZSB2b2lkIGdlbl9sZHN0dWJfYXNpKGludCBpbnNuKQorc3RhdGlj IGlubGluZSB2b2lkIGdlbl9tb3ZsX3NpbW1fVDEoaW50MzJfdCB2YWwpCiB7Ci0gICAgaW50IGFz aSwgb2Zmc2V0OwotCi0gICAgaWYgKElTX0lNTSkgewotICAgICAgICBvZmZzZXQgPSBHRVRfRklF TEQoaW5zbiwgMjUsIDMxKTsKLSAgICAgICAgZ2VuX29wX2xkc3R1Yl9hc2lfcmVnKG9mZnNldCk7 Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXNpID0gR0VUX0ZJRUxEKGluc24sIDE5LCAyNik7Ci0g ICAgICAgIGdlbl9vcF9sZHN0dWJfYXNpKGFzaSk7Ci0gICAgfQorICAgIHRjZ19nZW5fbW92aV90 bChjcHVfVFsxXSwgdmFsKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGdlbl9sZGRhX2FzaShp bnQgaW5zbikKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9yZWdfVE4oaW50IHJlZywgVENH diB0bikKIHsKLSAgICBpbnQgYXNpLCBvZmZzZXQ7Ci0KLSAgICBpZiAoSVNfSU1NKSB7Ci0gICAg ICAgIG9mZnNldCA9IEdFVF9GSUVMRChpbnNuLCAyNSwgMzEpOwotICAgICAgICBnZW5fb3BfbGRk YV9hc2lfcmVnKG9mZnNldCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXNpID0gR0VUX0ZJRUxE KGluc24sIDE5LCAyNik7Ci0gICAgICAgIGdlbl9vcF9sZGRhX2FzaShhc2kpOworICAgIGlmIChy ZWcgPT0gMCkKKyAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKHRuLCAwKTsKKyAgICBlbHNlIGlmIChy ZWcgPCA4KQorICAgICAgICB0Y2dfZ2VuX2xkX3RsKHRuLCBjcHVfZW52LCBvZmZzZXRvZihDUFVT dGF0ZSwgZ3JlZ3NbcmVnXSkpOworICAgIGVsc2UgeworICAgICAgICB0Y2dfZ2VuX2xkX3B0cihj cHVfcmVnd3B0ciwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3dwdHIpKTsgLy8gWFhY CisgICAgICAgIHRjZ19nZW5fbGRfdGwodG4sIGNwdV9yZWd3cHRyLCAocmVnIC0gOCkgKiBzaXpl b2YodGFyZ2V0X3Vsb25nKSk7CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3N0 ZGFfYXNpKGludCBpbnNuKQorc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX3JlZ19UMChpbnQg cmVnKQogewotICAgIGludCBhc2ksIG9mZnNldDsKLQotICAgIGlmIChJU19JTU0pIHsKLSAgICAg ICAgb2Zmc2V0ID0gR0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7Ci0gICAgICAgIGdlbl9vcF9zdGRh X2FzaV9yZWcob2Zmc2V0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc2kgPSBHRVRfRklFTEQo aW5zbiwgMTksIDI2KTsKLSAgICAgICAgZ2VuX29wX3N0ZGFfYXNpKGFzaSk7Ci0gICAgfQorICAg IGdlbl9tb3ZsX3JlZ19UTihyZWcsIGNwdV9UWzBdKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lk IGdlbl9jYXNfYXNpKGludCBpbnNuKQorc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX3JlZ19U MShpbnQgcmVnKQogewotICAgIGludCBhc2ksIG9mZnNldDsKLQotICAgIGlmIChJU19JTU0pIHsK LSAgICAgICAgb2Zmc2V0ID0gR0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7Ci0gICAgICAgIGdlbl9v cF9jYXNfYXNpX3JlZyhvZmZzZXQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFzaSA9IEdFVF9G SUVMRChpbnNuLCAxOSwgMjYpOwotICAgICAgICBnZW5fb3BfY2FzX2FzaShhc2kpOwotICAgIH0K KyAgICBnZW5fbW92bF9yZWdfVE4ocmVnLCBjcHVfVFsxXSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dm9pZCBnZW5fY2FzeF9hc2koaW50IGluc24pCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX21vdmxf VE5fcmVnKGludCByZWcsIFRDR3YgdG4pCiB7Ci0gICAgaW50IGFzaSwgb2Zmc2V0OwotCi0gICAg aWYgKElTX0lNTSkgewotICAgICAgICBvZmZzZXQgPSBHRVRfRklFTEQoaW5zbiwgMjUsIDMxKTsK LSAgICAgICAgZ2VuX29wX2Nhc3hfYXNpX3JlZyhvZmZzZXQpOwotICAgIH0gZWxzZSB7Ci0gICAg ICAgIGFzaSA9IEdFVF9GSUVMRChpbnNuLCAxOSwgMjYpOwotICAgICAgICBnZW5fb3BfY2FzeF9h c2koYXNpKTsKKyAgICBpZiAocmVnID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBlbHNlIGlm IChyZWcgPCA4KQorICAgICAgICB0Y2dfZ2VuX3N0X3RsKHRuLCBjcHVfZW52LCBvZmZzZXRvZihD UFVTdGF0ZSwgZ3JlZ3NbcmVnXSkpOworICAgIGVsc2UgeworICAgICAgICB0Y2dfZ2VuX2xkX3B0 cihjcHVfcmVnd3B0ciwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3dwdHIpKTsgLy8g WFhYCisgICAgICAgIHRjZ19nZW5fc3RfdGwodG4sIGNwdV9yZWd3cHRyLCAocmVnIC0gOCkgKiBz aXplb2YodGFyZ2V0X3Vsb25nKSk7CiAgICAgfQogfQogCi0jZWxpZiAhZGVmaW5lZChDT05GSUdf VVNFUl9PTkxZKQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xkX2FzaShpbnQgaW5zbiwgaW50 IHNpemUsIGludCBzaWduKQotewotICAgIGludCBhc2k7Ci0KLSAgICBhc2kgPSBHRVRfRklFTEQo aW5zbiwgMTksIDI2KTsKLSAgICBnZW5fb3BfbGRfYXNpKGFzaSwgc2l6ZSwgc2lnbik7Ci19Ci0K LXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fc3RfYXNpKGludCBpbnNuLCBpbnQgc2l6ZSkKLXsKLSAg ICBpbnQgYXNpOwotCi0gICAgYXNpID0gR0VUX0ZJRUxEKGluc24sIDE5LCAyNik7Ci0gICAgZ2Vu X29wX3N0X2FzaShhc2ksIHNpemUpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xkc3R1 Yl9hc2koaW50IGluc24pCi17Ci0gICAgaW50IGFzaTsKLQotICAgIGFzaSA9IEdFVF9GSUVMRChp bnNuLCAxOSwgMjYpOwotICAgIGdlbl9vcF9sZHN0dWJfYXNpKGFzaSk7Ci19Ci0KLXN0YXRpYyBp bmxpbmUgdm9pZCBnZW5fc3dhcF9hc2koaW50IGluc24pCi17Ci0gICAgaW50IGFzaTsKLQotICAg IGFzaSA9IEdFVF9GSUVMRChpbnNuLCAxOSwgMjYpOwotICAgIGdlbl9vcF9zd2FwX2FzaShhc2kp OwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xkZGFfYXNpKGludCBpbnNuKQotewotICAg IGludCBhc2k7Ci0KLSAgICBhc2kgPSBHRVRfRklFTEQoaW5zbiwgMTksIDI2KTsKLSAgICBnZW5f b3BfbGRfYXNpKGFzaSwgOCwgMCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fc3RkYV9h c2koaW50IGluc24pCi17Ci0gICAgaW50IGFzaTsKLQotICAgIGFzaSA9IEdFVF9GSUVMRChpbnNu LCAxOSwgMjYpOwotICAgIGdlbl9vcF9zdF9hc2koYXNpLCA4KTsKLX0KLSNlbmRpZgotCi1zdGF0 aWMgaW5saW5lIHZvaWQgZ2VuX21vdmxfaW1tX1ROKGludCByZWcsIHVpbnQzMl90IGltbSkKLXsK LSAgICBnZW5fb3BfbW92bF9UTl9pbVtyZWddKGltbSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9p ZCBnZW5fbW92bF9pbW1fVDEodWludDMyX3QgdmFsKQotewotICAgIGdlbl9tb3ZsX2ltbV9UTigx LCB2YWwpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2VuX21vdmxfaW1tX1QwKHVpbnQzMl90 IHZhbCkKLXsKLSAgICBnZW5fbW92bF9pbW1fVE4oMCwgdmFsKTsKLX0KLQotc3RhdGljIGlubGlu ZSB2b2lkIGdlbl9tb3ZsX3NpbW1fVE4oaW50IHJlZywgaW50MzJfdCBpbW0pCitzdGF0aWMgaW5s aW5lIHZvaWQgZ2VuX21vdmxfVDBfcmVnKGludCByZWcpCiB7Ci0gICAgZ2VuX29wX21vdmxfVE5f c2ltW3JlZ10oaW1tKTsKKyAgICBnZW5fbW92bF9UTl9yZWcocmVnLCBjcHVfVFswXSk7CiB9CiAK LXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9zaW1tX1QxKGludDMyX3QgdmFsKQorc3RhdGlj IGlubGluZSB2b2lkIGdlbl9tb3ZsX1QxX3JlZyhpbnQgcmVnKQogewotICAgIGdlbl9tb3ZsX3Np bW1fVE4oMSwgdmFsKTsKKyAgICBnZW5fbW92bF9UTl9yZWcocmVnLCBjcHVfVFsxXSk7CiB9CiAK LXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9zaW1tX1QwKGludDMyX3QgdmFsKQorc3RhdGlj IGlubGluZSB2b2lkIGdlbl9vcF9tb3ZsX1QwX2VudihzaXplX3Qgb2Zmc2V0KQogewotICAgIGdl bl9tb3ZsX3NpbW1fVE4oMCwgdmFsKTsKKyAgICB0Y2dfZ2VuX2xkX2kzMihjcHVfVFswXSwgY3B1 X2Vudiwgb2Zmc2V0KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX3JlZ19UTihp bnQgcmVnLCBpbnQgdCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfbW92bF9lbnZfVDAoc2l6 ZV90IG9mZnNldCkKIHsKLSAgICBpZiAocmVnKQotICAgICAgICBnZW5fb3BfbW92bF9yZWdfVE5b dF1bcmVnXSAoKTsKLSAgICBlbHNlCi0gICAgICAgIGdlbl9tb3ZsX2ltbV9UTih0LCAwKTsKKyAg ICB0Y2dfZ2VuX3N0X2kzMihjcHVfVFswXSwgY3B1X2Vudiwgb2Zmc2V0KTsKIH0KIAotc3RhdGlj IGlubGluZSB2b2lkIGdlbl9tb3ZsX3JlZ19UMChpbnQgcmVnKQorc3RhdGljIGlubGluZSB2b2lk IGdlbl9vcF9tb3Z0bF9UMF9lbnYoc2l6ZV90IG9mZnNldCkKIHsKLSAgICBnZW5fbW92bF9yZWdf VE4ocmVnLCAwKTsKKyAgICB0Y2dfZ2VuX2xkX3RsKGNwdV9UWzBdLCBjcHVfZW52LCBvZmZzZXQp OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2VuX21vdmxfcmVnX1QxKGludCByZWcpCitzdGF0 aWMgaW5saW5lIHZvaWQgZ2VuX29wX21vdnRsX2Vudl9UMChzaXplX3Qgb2Zmc2V0KQogewotICAg IGdlbl9tb3ZsX3JlZ19UTihyZWcsIDEpOworICAgIHRjZ19nZW5fc3RfdGwoY3B1X1RbMF0sIGNw dV9lbnYsIG9mZnNldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9yZWdfVDIo aW50IHJlZykKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfYWRkX1QxX1QwKHZvaWQpCiB7Ci0g ICAgZ2VuX21vdmxfcmVnX1ROKHJlZywgMik7CisgICAgdGNnX2dlbl9hZGRfdGwoY3B1X1RbMF0s IGNwdV9UWzBdLCBjcHVfVFsxXSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9U Tl9yZWcoaW50IHJlZywgaW50IHQpCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX29yX1QxX1Qw KHZvaWQpCiB7Ci0gICAgaWYgKHJlZykKLSAgICAgICAgZ2VuX29wX21vdmxfVE5fcmVnW3RdW3Jl Z10gKCk7CisgICAgdGNnX2dlbl9vcl90bChjcHVfVFswXSwgY3B1X1RbMF0sIGNwdV9UWzFdKTsK IH0KIAotc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX1QwX3JlZyhpbnQgcmVnKQorc3RhdGlj IGlubGluZSB2b2lkIGdlbl9vcF94b3JfVDFfVDAodm9pZCkKIHsKLSAgICBnZW5fbW92bF9UTl9y ZWcocmVnLCAwKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX1QxX3JlZyhpbnQg cmVnKQotewotICAgIGdlbl9tb3ZsX1ROX3JlZyhyZWcsIDEpOworICAgIHRjZ19nZW5feG9yX3Rs KGNwdV9UWzBdLCBjcHVfVFswXSwgY3B1X1RbMV0pOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg Z2VuX2ptcF9pbSh0YXJnZXRfdWxvbmcgcGMpCiB7Ci0jaWZkZWYgVEFSR0VUX1NQQVJDNjQKLSAg ICBpZiAocGMgPT0gKHVpbnQzMl90KXBjKSB7Ci0gICAgICAgIGdlbl9vcF9qbXBfaW0ocGMpOwot ICAgIH0gZWxzZSB7Ci0gICAgICAgIGdlbl9vcF9qbXBfaW02NChwYyA+PiAzMiwgcGMpOwotICAg IH0KLSNlbHNlCi0gICAgZ2VuX29wX2ptcF9pbShwYyk7Ci0jZW5kaWYKKyAgICB0Y2dfZ2VuX21v dmlfdGwoY3B1X3RtcDAsIHBjKTsKKyAgICB0Y2dfZ2VuX3N0X3RsKGNwdV90bXAwLCBjcHVfZW52 LCBvZmZzZXRvZihDUFVTdGF0ZSwgcGMpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGdlbl9t b3ZsX25wY19pbSh0YXJnZXRfdWxvbmcgbnBjKQogewotI2lmZGVmIFRBUkdFVF9TUEFSQzY0Ci0g ICAgaWYgKG5wYyA9PSAodWludDMyX3QpbnBjKSB7Ci0gICAgICAgIGdlbl9vcF9tb3ZsX25wY19p bShucGMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGdlbl9vcF9tb3ZxX25wY19pbTY0KG5wYyA+ PiAzMiwgbnBjKTsKLSAgICB9Ci0jZWxzZQotICAgIGdlbl9vcF9tb3ZsX25wY19pbShucGMpOwot I2VuZGlmCisgICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV90bXAwLCBucGMpOworICAgIHRjZ19nZW5f c3RfdGwoY3B1X3RtcDAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRlLCBucGMpKTsKIH0KIAog c3RhdGljIGlubGluZSB2b2lkIGdlbl9nb3RvX3RiKERpc2FzQ29udGV4dCAqcywgaW50IHRiX251 bSwKQEAgLTEwOTUsNiArNzg3LDI3MCBAQAogICAgIHJldHVybiAwOwogfQogCisvKiBhc2kgbW92 ZXMgKi8KKyNpZmRlZiBUQVJHRVRfU1BBUkM2NAorc3RhdGljIGlubGluZSB2b2lkIGdlbl9sZF9h c2koaW50IGluc24sIGludCBzaXplLCBpbnQgc2lnbikKK3sKKyAgICBpbnQgYXNpLCBvZmZzZXQ7 CisgICAgVENHdiByX3NpemUsIHJfc2lnbjsKKworICAgIHJfc2l6ZSA9IHRjZ190ZW1wX25ldyhU Q0dfVFlQRV9JMzIpOworICAgIHJfc2lnbiA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JMzIpOwor ICAgIHRjZ19nZW5fbW92aV9pMzIocl9zaXplLCBzaXplKTsKKyAgICB0Y2dfZ2VuX21vdmlfaTMy KHJfc2lnbiwgc2lnbik7CisgICAgaWYgKElTX0lNTSkgeworICAgICAgICBvZmZzZXQgPSBHRVRf RklFTEQoaW5zbiwgMjUsIDMxKTsKKyAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV9UWzBdLCBj cHVfVFswXSwgb2Zmc2V0KTsKKyAgICAgICAgdGNnX2dlbl9sZF9pMzIoY3B1X1RbMV0sIGNwdV9l bnYsIG9mZnNldG9mKENQVVNQQVJDU3RhdGUsIGFzaSkpOworICAgIH0gZWxzZSB7CisgICAgICAg IGFzaSA9IEdFVF9GSUVMRChpbnNuLCAxOSwgMjYpOworICAgICAgICB0Y2dfZ2VuX21vdmlfaTMy KGNwdV9UWzFdLCBhc2kpOworICAgIH0KKyAgICB0Y2dfZ2VuX2hlbHBlcl8xXzQoaGVscGVyX2xk X2FzaSwgY3B1X1RbMV0sIGNwdV9UWzBdLCBjcHVfVFsxXSwgcl9zaXplLAorICAgICAgICAgICAg ICAgICAgICAgICByX3NpZ24pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3N0X2FzaShp bnQgaW5zbiwgaW50IHNpemUpCit7CisgICAgaW50IGFzaSwgb2Zmc2V0OworICAgIFRDR3Ygcl9h c2ksIHJfc2l6ZTsKKworICAgIHJfYXNpID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7Cisg ICAgcl9zaXplID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CisgICAgdGNnX2dlbl9tb3Zp X2kzMihyX3NpemUsIHNpemUpOworICAgIGlmIChJU19JTU0pIHsKKyAgICAgICAgb2Zmc2V0ID0g R0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChjcHVfVFsw XSwgY3B1X1RbMF0sIG9mZnNldCk7CisgICAgICAgIHRjZ19nZW5fbGRfaTMyKHJfYXNpLCBjcHVf ZW52LCBvZmZzZXRvZihDUFVTUEFSQ1N0YXRlLCBhc2kpKTsKKyAgICB9IGVsc2UgeworICAgICAg ICBhc2kgPSBHRVRfRklFTEQoaW5zbiwgMTksIDI2KTsKKyAgICAgICAgdGNnX2dlbl9tb3ZpX2kz MihyX2FzaSwgYXNpKTsKKyAgICB9CisgICAgdGNnX2dlbl9oZWxwZXJfMF80KGhlbHBlcl9zdF9h c2ksIGNwdV9UWzBdLCBjcHVfVFsxXSwgcl9hc2ksIHJfc2l6ZSk7Cit9CisKK3N0YXRpYyBpbmxp bmUgdm9pZCBnZW5fbGRmX2FzaShpbnQgaW5zbiwgaW50IHNpemUsIGludCByZCkKK3sKKyAgICBp bnQgYXNpLCBvZmZzZXQ7CisgICAgVENHdiByX2FzaSwgcl9zaXplLCByX3JkOworCisgICAgcl9h c2kgPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVfSTMyKTsKKyAgICByX3NpemUgPSB0Y2dfdGVtcF9u ZXcoVENHX1RZUEVfSTMyKTsKKyAgICByX3JkID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7 CisgICAgdGNnX2dlbl9tb3ZpX2kzMihyX3NpemUsIHNpemUpOworICAgIHRjZ19nZW5fbW92aV9p MzIocl9yZCwgcmQpOworICAgIGlmIChJU19JTU0pIHsKKyAgICAgICAgb2Zmc2V0ID0gR0VUX0ZJ RUxEKGluc24sIDI1LCAzMSk7CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChjcHVfVFswXSwgY3B1 X1RbMF0sIG9mZnNldCk7CisgICAgICAgIHRjZ19nZW5fbGRfaTMyKHJfYXNpLCBjcHVfZW52LCBv ZmZzZXRvZihDUFVTUEFSQ1N0YXRlLCBhc2kpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhc2kg PSBHRVRfRklFTEQoaW5zbiwgMTksIDI2KTsKKyAgICAgICAgdGNnX2dlbl9tb3ZpX2kzMihyX2Fz aSwgYXNpKTsKKyAgICB9CisgICAgdGNnX2dlbl9oZWxwZXJfMF80KGhlbHBlcl9sZGZfYXNpLCBj cHVfVFswXSwgcl9hc2ksIHJfc2l6ZSwgcl9yZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBn ZW5fc3RmX2FzaShpbnQgaW5zbiwgaW50IHNpemUsIGludCByZCkKK3sKKyAgICBpbnQgYXNpLCBv ZmZzZXQ7CisgICAgVENHdiByX2FzaSwgcl9zaXplLCByX3JkOworCisgICAgcl9hc2kgPSB0Y2df dGVtcF9uZXcoVENHX1RZUEVfSTMyKTsKKyAgICByX3NpemUgPSB0Y2dfdGVtcF9uZXcoVENHX1RZ UEVfSTMyKTsKKyAgICByX3JkID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CisgICAgdGNn X2dlbl9tb3ZpX2kzMihyX3NpemUsIHNpemUpOworICAgIHRjZ19nZW5fbW92aV9pMzIocl9yZCwg cmQpOworICAgIGlmIChJU19JTU0pIHsKKyAgICAgICAgb2Zmc2V0ID0gR0VUX0ZJRUxEKGluc24s IDI1LCAzMSk7CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChjcHVfVFswXSwgY3B1X1RbMF0sIG9m ZnNldCk7CisgICAgICAgIHRjZ19nZW5fbGRfaTMyKHJfYXNpLCBjcHVfZW52LCBvZmZzZXRvZihD UFVTUEFSQ1N0YXRlLCBhc2kpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhc2kgPSBHRVRfRklF TEQoaW5zbiwgMTksIDI2KTsKKyAgICAgICAgdGNnX2dlbl9tb3ZpX2kzMihyX2FzaSwgYXNpKTsK KyAgICB9CisgICAgdGNnX2dlbl9oZWxwZXJfMF80KGhlbHBlcl9zdGZfYXNpLCBjcHVfVFswXSwg cl9hc2ksIHJfc2l6ZSwgcl9yZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fc3dhcF9h c2koaW50IGluc24pCit7CisgICAgaW50IGFzaSwgb2Zmc2V0OworICAgIFRDR3Ygcl9zaXplLCBy X3NpZ24sIHJfdGVtcDsKKworICAgIHJfc2l6ZSA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JMzIp OworICAgIHJfc2lnbiA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JMzIpOworICAgIHJfdGVtcCA9 IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JMzIpOworICAgIHRjZ19nZW5fbW92aV9pMzIocl9zaXpl LCA0KTsKKyAgICB0Y2dfZ2VuX21vdmlfaTMyKHJfc2lnbiwgMCk7CisgICAgaWYgKElTX0lNTSkg eworICAgICAgICBvZmZzZXQgPSBHRVRfRklFTEQoaW5zbiwgMjUsIDMxKTsKKyAgICAgICAgdGNn X2dlbl9hZGRpX3RsKGNwdV9UWzBdLCBjcHVfVFswXSwgb2Zmc2V0KTsKKyAgICAgICAgdGNnX2dl bl9sZF9pMzIoY3B1X1RbMV0sIGNwdV9lbnYsIG9mZnNldG9mKENQVVNQQVJDU3RhdGUsIGFzaSkp OworICAgIH0gZWxzZSB7CisgICAgICAgIGFzaSA9IEdFVF9GSUVMRChpbnNuLCAxOSwgMjYpOwor ICAgICAgICB0Y2dfZ2VuX21vdmlfaTMyKGNwdV9UWzFdLCBhc2kpOworICAgIH0KKyAgICB0Y2df Z2VuX2hlbHBlcl8xXzQoaGVscGVyX2xkX2FzaSwgcl90ZW1wLCBjcHVfVFswXSwgY3B1X1RbMV0s IHJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcl9zaWduKTsKKyAgICB0Y2dfZ2VuX2hl bHBlcl8wXzQoaGVscGVyX3N0X2FzaSwgY3B1X1RbMF0sIGNwdV9UWzFdLCByX3NpemUsIHJfc2ln bik7CisgICAgdGNnX2dlbl9tb3ZfaTMyKGNwdV9UWzFdLCByX3RlbXApOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgZ2VuX2xkZGFfYXNpKGludCBpbnNuKQoreworICAgIGludCBhc2ksIG9mZnNl dDsKKyAgICBUQ0d2IHJfc2l6ZSwgcl9zaWduLCByX2R3b3JkOworCisgICAgcl9zaXplID0gdGNn X3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CisgICAgcl9zaWduID0gdGNnX3RlbXBfbmV3KFRDR19U WVBFX0kzMik7CisgICAgcl9kd29yZCA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JNjQpOworICAg IHRjZ19nZW5fbW92aV9pMzIocl9zaXplLCA4KTsKKyAgICB0Y2dfZ2VuX21vdmlfaTMyKHJfc2ln biwgMCk7CisgICAgaWYgKElTX0lNTSkgeworICAgICAgICBvZmZzZXQgPSBHRVRfRklFTEQoaW5z biwgMjUsIDMxKTsKKyAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV9UWzBdLCBjcHVfVFswXSwg b2Zmc2V0KTsKKyAgICAgICAgdGNnX2dlbl9sZF9pMzIoY3B1X1RbMV0sIGNwdV9lbnYsIG9mZnNl dG9mKENQVVNQQVJDU3RhdGUsIGFzaSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFzaSA9IEdF VF9GSUVMRChpbnNuLCAxOSwgMjYpOworICAgICAgICB0Y2dfZ2VuX21vdmlfaTMyKGNwdV9UWzFd LCBhc2kpOworICAgIH0KKyAgICB0Y2dfZ2VuX2hlbHBlcl8xXzQoaGVscGVyX2xkX2FzaSwgcl9k d29yZCwgY3B1X1RbMF0sIGNwdV9UWzFdLCByX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAg IHJfc2lnbik7CisgICAgdGNnX2dlbl90cnVuY19pNjRfaTMyKGNwdV9UWzBdLCByX2R3b3JkKTsK KyAgICB0Y2dfZ2VuX3NocmlfaTY0KHJfZHdvcmQsIHJfZHdvcmQsIDMyKTsKKyAgICB0Y2dfZ2Vu X3RydW5jX2k2NF9pMzIoY3B1X1RbMV0sIHJfZHdvcmQpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgZ2VuX2Nhc19hc2koaW50IGluc24sIGludCByZCkKK3sKKyAgICBpbnQgYXNpLCBvZmZzZXQ7 CisgICAgVENHdiByX3ZhbDEsIHJfYXNpOworCisgICAgcl92YWwxID0gdGNnX3RlbXBfbmV3KFRD R19UWVBFX0kzMik7CisgICAgcl9hc2kgPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVfSTMyKTsKKyAg ICBnZW5fbW92bF9yZWdfVE4ocmQsIHJfdmFsMSk7CisgICAgaWYgKElTX0lNTSkgeworICAgICAg ICBvZmZzZXQgPSBHRVRfRklFTEQoaW5zbiwgMjUsIDMxKTsKKyAgICAgICAgdGNnX2dlbl9hZGRp X3RsKGNwdV9UWzBdLCBjcHVfVFswXSwgb2Zmc2V0KTsKKyAgICAgICAgdGNnX2dlbl9sZF9pMzIo cl9hc2ksIGNwdV9lbnYsIG9mZnNldG9mKENQVVNQQVJDU3RhdGUsIGFzaSkpOworICAgIH0gZWxz ZSB7CisgICAgICAgIGFzaSA9IEdFVF9GSUVMRChpbnNuLCAxOSwgMjYpOworICAgICAgICB0Y2df Z2VuX21vdmlfaTMyKHJfYXNpLCBhc2kpOworICAgIH0KKyAgICB0Y2dfZ2VuX2hlbHBlcl8xXzQo aGVscGVyX2Nhc19hc2ksIGNwdV9UWzFdLCBjcHVfVFswXSwgcl92YWwxLCBjcHVfVFsxXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgcl9hc2kpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2Vu X2Nhc3hfYXNpKGludCBpbnNuLCBpbnQgcmQpCit7CisgICAgaW50IGFzaSwgb2Zmc2V0OworICAg IFRDR3Ygcl92YWwxLCByX2FzaTsKKworICAgIHJfdmFsMSA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQ RV9JNjQpOworICAgIHJfYXNpID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CisgICAgZ2Vu X21vdmxfcmVnX1ROKHJkLCByX3ZhbDEpOworICAgIGlmIChJU19JTU0pIHsKKyAgICAgICAgb2Zm c2V0ID0gR0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChj cHVfVFswXSwgY3B1X1RbMF0sIG9mZnNldCk7CisgICAgICAgIHRjZ19nZW5fbGRfaTMyKHJfYXNp LCBjcHVfZW52LCBvZmZzZXRvZihDUFVTUEFSQ1N0YXRlLCBhc2kpKTsKKyAgICB9IGVsc2Ugewor ICAgICAgICBhc2kgPSBHRVRfRklFTEQoaW5zbiwgMTksIDI2KTsKKyAgICAgICAgdGNnX2dlbl9t b3ZpX2kzMihyX2FzaSwgYXNpKTsKKyAgICB9CisgICAgdGNnX2dlbl9oZWxwZXJfMV80KGhlbHBl cl9jYXN4X2FzaSwgY3B1X1RbMV0sIGNwdV9UWzBdLCByX3ZhbDEsIGNwdV9UWzFdLAorICAgICAg ICAgICAgICAgICAgICAgICByX2FzaSk7Cit9CisKKyNlbGlmICFkZWZpbmVkKENPTkZJR19VU0VS X09OTFkpCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbGRfYXNpKGludCBpbnNuLCBpbnQgc2l6 ZSwgaW50IHNpZ24pCit7CisgICAgaW50IGFzaTsKKyAgICBUQ0d2IHJfc2l6ZSwgcl9zaWduLCBy X2R3b3JkOworCisgICAgcl9zaXplID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CisgICAg cl9zaWduID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CisgICAgcl9kd29yZCA9IHRjZ190 ZW1wX25ldyhUQ0dfVFlQRV9JNjQpOworICAgIHRjZ19nZW5fbW92aV9pMzIocl9zaXplLCBzaXpl KTsKKyAgICB0Y2dfZ2VuX21vdmlfaTMyKHJfc2lnbiwgc2lnbik7CisgICAgYXNpID0gR0VUX0ZJ RUxEKGluc24sIDE5LCAyNik7CisgICAgdGNnX2dlbl9tb3ZpX2kzMihjcHVfVFsxXSwgYXNpKTsK KyAgICB0Y2dfZ2VuX2hlbHBlcl8xXzQoaGVscGVyX2xkX2FzaSwgcl9kd29yZCwgY3B1X1RbMF0s IGNwdV9UWzFdLCByX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIHJfc2lnbik7CisgICAg dGNnX2dlbl90cnVuY19pNjRfaTMyKGNwdV9UWzFdLCByX2R3b3JkKTsKK30KKworc3RhdGljIGlu bGluZSB2b2lkIGdlbl9zdF9hc2koaW50IGluc24sIGludCBzaXplKQoreworICAgIGludCBhc2k7 CisgICAgVENHdiByX2R3b3JkLCByX2FzaSwgcl9zaXplOworCisgICAgcl9kd29yZCA9IHRjZ190 ZW1wX25ldyhUQ0dfVFlQRV9JNjQpOworICAgIHRjZ19nZW5fZXh0dV9pMzJfaTY0KHJfZHdvcmQs IGNwdV9UWzFdKTsKKyAgICByX2FzaSA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JMzIpOworICAg IHJfc2l6ZSA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JMzIpOworICAgIGFzaSA9IEdFVF9GSUVM RChpbnNuLCAxOSwgMjYpOworICAgIHRjZ19nZW5fbW92aV9pMzIocl9hc2ksIGFzaSk7CisgICAg dGNnX2dlbl9tb3ZpX2kzMihyX3NpemUsIHNpemUpOworICAgIHRjZ19nZW5faGVscGVyXzBfNCho ZWxwZXJfc3RfYXNpLCBjcHVfVFswXSwgcl9kd29yZCwgcl9hc2ksIHJfc2l6ZSk7Cit9CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBnZW5fc3dhcF9hc2koaW50IGluc24pCit7CisgICAgaW50IGFzaTsK KyAgICBUQ0d2IHJfc2l6ZSwgcl9zaWduLCByX3RlbXA7CisKKyAgICByX3NpemUgPSB0Y2dfdGVt cF9uZXcoVENHX1RZUEVfSTMyKTsKKyAgICByX3NpZ24gPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVf STMyKTsKKyAgICByX3RlbXAgPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVfSTMyKTsKKyAgICB0Y2df Z2VuX21vdmlfaTMyKHJfc2l6ZSwgNCk7CisgICAgdGNnX2dlbl9tb3ZpX2kzMihyX3NpZ24sIDAp OworICAgIGFzaSA9IEdFVF9GSUVMRChpbnNuLCAxOSwgMjYpOworICAgIHRjZ19nZW5fbW92aV9p MzIoY3B1X1RbMV0sIGFzaSk7CisgICAgdGNnX2dlbl9oZWxwZXJfMV80KGhlbHBlcl9sZF9hc2ks IHJfdGVtcCwgY3B1X1RbMF0sIGNwdV9UWzFdLCByX3NpemUsCisgICAgICAgICAgICAgICAgICAg ICAgIHJfc2lnbik7CisgICAgdGNnX2dlbl9oZWxwZXJfMF80KGhlbHBlcl9zdF9hc2ksIGNwdV9U WzBdLCBjcHVfVFsxXSwgcl9zaXplLCByX3NpZ24pOworICAgIHRjZ19nZW5fbW92X2kzMihjcHVf VFsxXSwgcl90ZW1wKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9sZGRhX2FzaShpbnQg aW5zbikKK3sKKyAgICBpbnQgYXNpOworICAgIFRDR3Ygcl9zaXplLCByX3NpZ24sIHJfZHdvcmQ7 CisKKyAgICByX3NpemUgPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVfSTMyKTsKKyAgICByX3NpZ24g PSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVfSTMyKTsKKyAgICByX2R3b3JkID0gdGNnX3RlbXBfbmV3 KFRDR19UWVBFX0k2NCk7CisgICAgdGNnX2dlbl9tb3ZpX2kzMihyX3NpemUsIDgpOworICAgIHRj Z19nZW5fbW92aV9pMzIocl9zaWduLCAwKTsKKyAgICBhc2kgPSBHRVRfRklFTEQoaW5zbiwgMTks IDI2KTsKKyAgICB0Y2dfZ2VuX21vdmlfaTMyKGNwdV9UWzFdLCBhc2kpOworICAgIHRjZ19nZW5f aGVscGVyXzFfNChoZWxwZXJfbGRfYXNpLCByX2R3b3JkLCBjcHVfVFswXSwgY3B1X1RbMV0sIHJf c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcl9zaWduKTsKKyAgICB0Y2dfZ2VuX3RydW5j X2k2NF9pMzIoY3B1X1RbMF0sIHJfZHdvcmQpOworICAgIHRjZ19nZW5fc2hyaV9pNjQocl9kd29y ZCwgcl9kd29yZCwgMzIpOworICAgIHRjZ19nZW5fdHJ1bmNfaTY0X2kzMihjcHVfVFsxXSwgcl9k d29yZCk7Cit9CisjZW5kaWYKKworI2lmICFkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpIHx8IGRl ZmluZWQoVEFSR0VUX1NQQVJDNjQpCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xkc3R1Yl9hc2ko aW50IGluc24pCit7CisgICAgaW50IGFzaTsKKyAgICBUQ0d2IHJfZHdvcmQsIHJfYXNpLCByX3Np emU7CisKKyAgICBnZW5fbGRfYXNpKGluc24sIDEsIDApOworCisgICAgcl9kd29yZCA9IHRjZ190 ZW1wX25ldyhUQ0dfVFlQRV9JNjQpOworICAgIHJfYXNpID0gdGNnX3RlbXBfbmV3KFRDR19UWVBF X0kzMik7CisgICAgcl9zaXplID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CisgICAgYXNp ID0gR0VUX0ZJRUxEKGluc24sIDE5LCAyNik7CisgICAgdGNnX2dlbl9tb3ZpX2kzMihyX2R3b3Jk LCAweGZmKTsKKyAgICB0Y2dfZ2VuX21vdmlfaTMyKHJfYXNpLCBhc2kpOworICAgIHRjZ19nZW5f bW92aV9pMzIocl9zaXplLCAxKTsKKyAgICB0Y2dfZ2VuX2hlbHBlcl8wXzQoaGVscGVyX3N0X2Fz aSwgY3B1X1RbMF0sIHJfZHdvcmQsIHJfYXNpLCByX3NpemUpOworfQorI2VuZGlmCisKIC8qIGJl Zm9yZSBhbiBpbnN0cnVjdGlvbiwgZGMtPnBjIG11c3QgYmUgc3RhdGljICovCiBzdGF0aWMgdm9p ZCBkaXNhc19zcGFyY19pbnNuKERpc2FzQ29udGV4dCAqIGRjKQogewpAQCAtMTE3OSw3ICsxMTM1 LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocmQpIHsgLy8gbm9wCiAjZW5kaWYKICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgdmFsdWUgPSBHRVRfRklFTEQoaW5zbiwgMTAsIDMxKTsKLSAg ICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfaW1tX1QwKHZhbHVlIDw8IDEwKTsKKyAgICAgICAg ICAgICAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9UWzBdLCB2YWx1ZSA8PCAxMCk7CiAgICAg ICAgICAgICAgICAgICAgIGdlbl9tb3ZsX1QwX3JlZyhyZCk7CiAjaWYgZGVmaW5lZChPUFRJTSkK ICAgICAgICAgICAgICAgICB9CkBAIC0xMTk2LDE1ICsxMTUyLDcgQEAKICAgICAgICAgLypDQUxM Ki8gewogICAgICAgICAgICAgdGFyZ2V0X2xvbmcgdGFyZ2V0ID0gR0VUX0ZJRUxEcyhpbnNuLCAy LCAzMSkgPDwgMjsKIAotI2lmZGVmIFRBUkdFVF9TUEFSQzY0Ci0gICAgICAgICAgICBpZiAoZGMt PnBjID09ICh1aW50MzJfdClkYy0+cGMpIHsKLSAgICAgICAgICAgICAgICBnZW5fb3BfbW92bF9U MF9pbShkYy0+cGMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBnZW5f b3BfbW92cV9UMF9pbTY0KGRjLT5wYyA+PiAzMiwgZGMtPnBjKTsKLSAgICAgICAgICAgIH0KLSNl bHNlCi0gICAgICAgICAgICBnZW5fb3BfbW92bF9UMF9pbShkYy0+cGMpOwotI2VuZGlmCisgICAg ICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoY3B1X1RbMF0sIGRjLT5wYyk7CiAgICAgICAgICAgICBn ZW5fbW92bF9UMF9yZWcoMTUpOwogICAgICAgICAgICAgdGFyZ2V0ICs9IGRjLT5wYzsKICAgICAg ICAgICAgIGdlbl9tb3ZfcGNfbnBjKGRjKTsKQEAgLTEyMjEsMTQgKzExNjksNyBAQAogICAgICAg ICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UMChyczEpOwogICAgICAgICAgICAgICAgIGlmIChJU19J TU0pIHsKICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJRUxEKGluc24sIDI1LCAzMSk7 Ci0jaWYgZGVmaW5lZChPUFRJTSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJzMiAhPSAwKSB7 Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3NpbW1fVDEocnMyKTsK LSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9hZGRfVDFfVDAoKTsKLSNpZiBkZWZpbmVk KE9QVElNKQotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICAg ICAgdGNnX2dlbl9hZGRpX3RsKGNwdV9UWzBdLCBjcHVfVFswXSwgcnMyKTsKICAgICAgICAgICAg ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByczIgPSBHRVRfRklFTEQoaW5zbiwg MjcsIDMxKTsKICNpZiBkZWZpbmVkKE9QVElNKQpAQCAtMTI0Myw3ICsxMTg0LDcgQEAKICAgICAg ICAgICAgICAgICBjb25kID0gR0VUX0ZJRUxEKGluc24sIDMsIDYpOwogICAgICAgICAgICAgICAg IGlmIChjb25kID09IDB4OCkgewogICAgICAgICAgICAgICAgICAgICBzYXZlX3N0YXRlKGRjKTsK LSAgICAgICAgICAgICAgICAgICAgZ2VuX29wX3RyYXBfVDAoKTsKKyAgICAgICAgICAgICAgICAg ICAgdGNnX2dlbl9oZWxwZXJfMF8xKGhlbHBlcl90cmFwLCBjcHVfVFswXSk7CiAgICAgICAgICAg ICAgICAgfSBlbHNlIGlmIChjb25kICE9IDApIHsKICNpZmRlZiBUQVJHRVRfU1BBUkM2NAogICAg ICAgICAgICAgICAgICAgICAvKiBWOSBpY2MveGNjICovCkBAIC0xMjYxLDcgKzEyMDIsNyBAQAog ICAgICAgICAgICAgICAgICAgICBzYXZlX3N0YXRlKGRjKTsKICAgICAgICAgICAgICAgICAgICAg Z2VuX2NvbmRbMF1bY29uZF0oKTsKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBnZW5fb3Bf dHJhcGNjX1QwKCk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5faGVscGVyXzBfMihoZWxw ZXJfdHJhcGNjLCBjcHVfVFswXSwgY3B1X1RbMl0pOwogICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICBnZW5fb3BfbmV4dF9pbnNuKCk7CiAgICAgICAgICAgICAgICAgdGNnX2dlbl9l eGl0X3RiKDApOwpAQCAtMTI5OCwxMSArMTIzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGdl bl9tb3ZsX1QwX3JlZyhyZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgICAgIGNhc2UgMHg1OiAvKiBWOSByZHBjICovCi0gICAgICAgICAgICAgICAgICAgIGlmIChk Yy0+cGMgPT0gKHVpbnQzMl90KWRjLT5wYykgewotICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu X29wX21vdmxfVDBfaW0oZGMtPnBjKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9tb3ZxX1QwX2ltNjQoZGMtPnBjID4+IDMyLCBk Yy0+cGMpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5fbW92aV90bChjcHVfVFswXSwgZGMtPnBjKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuX21v dmxfVDBfcmVnKHJkKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg ICAgY2FzZSAweDY6IC8qIFY5IHJkZnBycyAqLwpAQCAtMTM0NCw3ICsxMjgxLDcgQEAKICNpZm5k ZWYgVEFSR0VUX1NQQVJDNjQKICAgICAgICAgICAgICAgICBpZiAoIXN1cGVydmlzb3IoZGMpKQog ICAgICAgICAgICAgICAgICAgICBnb3RvIHByaXZfaW5zbjsKLSAgICAgICAgICAgICAgICBnZW5f b3BfcmRwc3IoKTsKKyAgICAgICAgICAgICAgICB0Y2dfZ2VuX2hlbHBlcl8xXzAoaGVscGVyX3Jk cHNyLCBjcHVfVFswXSk7CiAjZWxzZQogICAgICAgICAgICAgICAgIGlmICghaHlwZXJ2aXNvcihk YykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gcHJpdl9pbnNuOwpAQCAtMTM5OSw3ICsxMzM2 LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX21vdnRsX1QwX2VudihvZmZzZXRvZihD UFVTUEFSQ1N0YXRlLCB0YnIpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg ICAgICAgICAgY2FzZSA2OiAvLyBwc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgZ2VuX29wX3Jk cHN0YXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9tb3ZsX1QwX2VudihvZmZzZXRv ZihDUFVTUEFSQ1N0YXRlLCBwc3RhdGUpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICAgICAgY2FzZSA3OiAvLyB0bAogICAgICAgICAgICAgICAgICAgICBnZW5fb3Bf bW92bF9UMF9lbnYob2Zmc2V0b2YoQ1BVU1BBUkNTdGF0ZSwgdGwpKTsKQEAgLTIwNzgsMjQgKzIw MTUsMTkgQEAKIAogICAgICAgICAgICAgICAgIHJzMSA9IEdFVF9GSUVMRChpbnNuLCAxMywgMTcp OwogICAgICAgICAgICAgICAgIGlmIChyczEgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAv LyBvciAlZzAsIHgsIHkgLT4gbW92IFQxLCB4OyBtb3YgeSwgVDEKKyAgICAgICAgICAgICAgICAg ICAgLy8gb3IgJWcwLCB4LCB5IC0+IG1vdiBUMCwgeDsgbW92IHksIFQwCiAgICAgICAgICAgICAg ICAgICAgIGlmIChJU19JTU0pIHsgICAgICAgLyogaW1tZWRpYXRlICovCiAgICAgICAgICAgICAg ICAgICAgICAgICByczIgPSBHRVRfRklFTERzKGluc24sIDE5LCAzMSk7Ci0gICAgICAgICAgICAg ICAgICAgICAgICBnZW5fbW92bF9zaW1tX1QxKHJzMik7CisgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX21vdmlfdGwoY3B1X1RbMF0sIHJzMik7CiAgICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7ICAgICAgICAgICAgLyogcmVnaXN0ZXIgKi8KICAgICAgICAgICAgICAgICAgICAgICAg IHJzMiA9IEdFVF9GSUVMRChpbnNuLCAyNywgMzEpOwotICAgICAgICAgICAgICAgICAgICAgICAg Z2VuX21vdmxfcmVnX1QxKHJzMik7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9y ZWdfVDAocnMyKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBn ZW5fbW92bF9UMV9yZWcocmQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg ICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UMChyczEpOwogICAgICAgICAgICAgICAgICAgICBpZiAo SVNfSU1NKSB7ICAgICAgIC8qIGltbWVkaWF0ZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAg Ly8gb3IgeCwgIzAsIHkgLT4gbW92IFQxLCB4OyBtb3YgeSwgVDEKICAgICAgICAgICAgICAgICAg ICAgICAgIHJzMiA9IEdFVF9GSUVMRHMoaW5zbiwgMTksIDMxKTsKLSAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChyczIgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9t b3ZsX3NpbW1fVDEocnMyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3Bfb3Jf VDFfVDAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgIHRjZ19nZW5fb3JpX3RsKGNwdV9UWzBdLCBjcHVfVFswXSwgcnMyKTsKICAgICAgICAgICAg ICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAvKiByZWdpc3RlciAqLwogICAgICAgICAgICAg ICAgICAgICAgICAgLy8gb3IgeCwgJWcwLCB5IC0+IG1vdiBUMSwgeDsgbW92IHksIFQxCiAgICAg ICAgICAgICAgICAgICAgICAgICByczIgPSBHRVRfRklFTEQoaW5zbiwgMjcsIDMxKTsKQEAgLTIx MDQsOCArMjAzNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX29yX1Qx X1QwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfVDBfcmVnKHJkKTsKICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgZ2VuX21vdmxfVDBfcmVnKHJkKTsKICNlbmRpZgogI2lmZGVm IFRBUkdFVF9TUEFSQzY0CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHhvcCA9PSAweDI1KSB7IC8q IHNsbCwgVjkgc2xseCAqLwpAQCAtMjExMyw0NSArMjA0NSw3MiBAQAogICAgICAgICAgICAgICAg IGdlbl9tb3ZsX3JlZ19UMChyczEpOwogICAgICAgICAgICAgICAgIGlmIChJU19JTU0pIHsgICAv KiBpbW1lZGlhdGUgKi8KICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJRUxEcyhpbnNu LCAyMCwgMzEpOwotICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9zaW1tX1QxKHJzMik7Cisg ICAgICAgICAgICAgICAgICAgIGlmIChpbnNuICYgKDEgPDwgMTIpKSB7CisgICAgICAgICAgICAg ICAgICAgICAgICB0Y2dfZ2VuX3NobGlfaTY0KGNwdV9UWzBdLCBjcHVfVFswXSwgcnMyICYgMHgz Zik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX2FuZGlfaTY0KGNwdV9UWzBdLCBjcHVfVFswXSwgMHhmZmZmZmZmZik7CisgICAg ICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3NobGlfaTMyKGNwdV9UWzBdLCBjcHVfVFswXSwg cnMyICYgMHgxZik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVs c2UgeyAgICAgICAgICAgICAgICAvKiByZWdpc3RlciAqLwogICAgICAgICAgICAgICAgICAgICBy czIgPSBHRVRfRklFTEQoaW5zbiwgMjcsIDMxKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuX21v dmxfcmVnX1QxKHJzMik7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnNuICYgKDEgPDwgMTIp KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfaTY0KGNwdV9UWzFdLCBj cHVfVFsxXSwgMHgzZik7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3NobF9pNjQo Y3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfaTY0KGNwdV9UWzFdLCBj cHVfVFsxXSwgMHgxZik7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfaTY0 KGNwdV9UWzBdLCBjcHVfVFswXSwgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX3NobF9pMzIoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7CisgICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlu c24gJiAoMSA8PCAxMikpCi0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9zbGx4KCk7Ci0gICAg ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBnZW5fb3Bfc2xsKCk7CiAgICAg ICAgICAgICAgICAgZ2VuX21vdmxfVDBfcmVnKHJkKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo eG9wID09IDB4MjYpIHsgLyogc3JsLCBWOSBzcmx4ICovCiAgICAgICAgICAgICAgICAgcnMxID0g R0VUX0ZJRUxEKGluc24sIDEzLCAxNyk7CiAgICAgICAgICAgICAgICAgZ2VuX21vdmxfcmVnX1Qw KHJzMSk7CiAgICAgICAgICAgICAgICAgaWYgKElTX0lNTSkgeyAgIC8qIGltbWVkaWF0ZSAqLwog ICAgICAgICAgICAgICAgICAgICByczIgPSBHRVRfRklFTERzKGluc24sIDIwLCAzMSk7Ci0gICAg ICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3NpbW1fVDEocnMyKTsKKyAgICAgICAgICAgICAgICAg ICAgaWYgKGluc24gJiAoMSA8PCAxMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5fc2hyaV9pNjQoY3B1X1RbMF0sIGNwdV9UWzBdLCByczIgJiAweDNmKTsKKyAgICAgICAgICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fYW5kaV9p NjQoY3B1X1RbMF0sIGNwdV9UWzBdLCAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHRjZ19nZW5fc2hyaV9pMzIoY3B1X1RbMF0sIGNwdV9UWzBdLCByczIgJiAweDFmKTsKKyAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAg ICAgIC8qIHJlZ2lzdGVyICovCiAgICAgICAgICAgICAgICAgICAgIHJzMiA9IEdFVF9GSUVMRChp bnNuLCAyNywgMzEpOwogICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDEocnMyKTsK KyAgICAgICAgICAgICAgICAgICAgaWYgKGluc24gJiAoMSA8PCAxMikpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRjZ19nZW5fYW5kaV9pNjQoY3B1X1RbMV0sIGNwdV9UWzFdLCAweDNmKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fc2hyX2k2NChjcHVfVFswXSwgY3B1X1Rb MF0sIGNwdV9UWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRjZ19nZW5fYW5kaV9pNjQoY3B1X1RbMV0sIGNwdV9UWzFdLCAweDFmKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fYW5kaV9pNjQoY3B1X1RbMF0sIGNwdV9U WzBdLCAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fc2hyX2kz MihjcHVfVFswXSwgY3B1X1RbMF0sIGNwdV9UWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW5zbiAmICgxIDw8IDEyKSkK LSAgICAgICAgICAgICAgICAgICAgZ2VuX29wX3NybHgoKTsKLSAgICAgICAgICAgICAgICBlbHNl Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9zcmwoKTsKICAgICAgICAgICAgICAgICBnZW5f bW92bF9UMF9yZWcocmQpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh4b3AgPT0gMHgyNykgeyAv KiBzcmEsIFY5IHNyYXggKi8KICAgICAgICAgICAgICAgICByczEgPSBHRVRfRklFTEQoaW5zbiwg MTMsIDE3KTsKICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDAocnMxKTsKICAgICAgICAg ICAgICAgICBpZiAoSVNfSU1NKSB7ICAgLyogaW1tZWRpYXRlICovCiAgICAgICAgICAgICAgICAg ICAgIHJzMiA9IEdFVF9GSUVMRHMoaW5zbiwgMjAsIDMxKTsKLSAgICAgICAgICAgICAgICAgICAg Z2VuX21vdmxfc2ltbV9UMShyczIpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5zbiAmICgx IDw8IDEyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zYXJpX2k2NChjcHVf VFswXSwgY3B1X1RbMF0sIHJzMiAmIDB4M2YpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9hbmRpX2k2NChjcHVfVFswXSwgY3B1 X1RbMF0sIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zYXJp X2kzMihjcHVfVFswXSwgY3B1X1RbMF0sIHJzMiAmIDB4MWYpOworICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyogcmVnaXN0ZXIg Ki8KICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJRUxEKGluc24sIDI3LCAzMSk7CiAg ICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UMShyczIpOworICAgICAgICAgICAgICAg ICAgICBpZiAoaW5zbiAmICgxIDw8IDEyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGNn X2dlbl9hbmRpX2k2NChjcHVfVFsxXSwgY3B1X1RbMV0sIDB4M2YpOworICAgICAgICAgICAgICAg ICAgICAgICAgdGNnX2dlbl9zYXJfaTY0KGNwdV9UWzBdLCBjcHVfVFswXSwgY3B1X1RbMV0pOwor ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGNn X2dlbl9hbmRpX2k2NChjcHVfVFsxXSwgY3B1X1RbMV0sIDB4MWYpOworICAgICAgICAgICAgICAg ICAgICAgICAgdGNnX2dlbl9hbmRpX2k2NChjcHVfVFswXSwgY3B1X1RbMF0sIDB4ZmZmZmZmZmYp OworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zYXJfaTMyKGNwdV9UWzBdLCBjcHVf VFswXSwgY3B1X1RbMV0pOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgIGlmIChpbnNuICYgKDEgPDwgMTIpKQotICAgICAgICAgICAgICAg ICAgICBnZW5fb3Bfc3JheCgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg ICAgICAgZ2VuX29wX3NyYSgpOwogICAgICAgICAgICAgICAgIGdlbl9tb3ZsX1QwX3JlZyhyZCk7 CiAjZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSBpZiAoeG9wIDwgMHgzNikgewpAQCAtMjE3Mywx NyArMjEzMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9hZGRfVDFf VDAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg ICBjYXNlIDB4MToKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9hbmRfVDFfVDAoKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fYW5kX3RsKGNwdV9UWzBdLCBjcHVfVFsw XSwgY3B1X1RbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhvcCAmIDB4MTApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2xvZ2ljX1QwX2NjKCk7CiAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSAweDI6Ci0g ICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3Bfb3JfVDFfVDAoKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHRjZ19nZW5fb3JfdGwoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7CiAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoeG9wICYgMHgxMCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZW5fb3BfbG9naWNfVDBfY2MoKTsKICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIDB4MzoKLSAgICAgICAgICAgICAgICAg ICAgICAgIGdlbl9vcF94b3JfVDFfVDAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5feG9yX3RsKGNwdV9UWzBdLCBjcHVfVFswXSwgY3B1X1RbMV0pOwogICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHhvcCAmIDB4MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu X29wX2xvZ2ljX1QwX2NjKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIx OTEsNyArMjE1MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeG9wICYgMHgxMCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3Bfc3ViX1QxX1QwX2NjKCk7CiAgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu X29wX3N1Yl9UMV9UMCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fc3Vi X3RsKGNwdV9UWzBdLCBjcHVfVFswXSwgY3B1X1RbMV0pOwogICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHg1OgogICAgICAgICAgICAgICAg ICAgICAgICAgZ2VuX29wX2FuZG5fVDFfVDAoKTsKQEAgLTIyMTYsNyArMjE3NSw3IEBACiAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKICNpZmRlZiBUQVJHRVRfU1BBUkM2NAogICAgICAg ICAgICAgICAgICAgICBjYXNlIDB4OTogLyogVjkgbXVseCAqLwotICAgICAgICAgICAgICAgICAg ICAgICAgZ2VuX29wX211bHhfVDFfVDAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5fbXVsX2k2NChjcHVfVFswXSwgY3B1X1RbMF0sIGNwdV9UWzFdKTsKICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHhhOgpA QCAtMjI4MCwxNSArMjIzOSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAj aWZuZGVmIFRBUkdFVF9TUEFSQzY0CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgyNTogIC8q IHNsbCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX3NsbCgpOworICAgICAgICAg ICAgICAgICAgICAgICAgdGNnX2dlbl9hbmRpX2kzMihjcHVfVFsxXSwgY3B1X1RbMV0sIDB4MWYp OworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zaGxfaTMyKGNwdV9UWzBdLCBjcHVf VFswXSwgY3B1X1RbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfVDBfcmVn KHJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg ICBjYXNlIDB4MjY6ICAvKiBzcmwgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9z cmwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fYW5kaV9pMzIoY3B1X1RbMV0s IGNwdV9UWzFdLCAweDFmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fc2hyX2kz MihjcHVfVFswXSwgY3B1X1RbMF0sIGNwdV9UWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAg IGdlbl9tb3ZsX1QwX3JlZyhyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgICAgICAgICAgICAgY2FzZSAweDI3OiAgLyogc3JhICovCi0gICAgICAgICAgICAgICAg ICAgICAgICBnZW5fb3Bfc3JhKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2Fu ZGlfaTMyKGNwdV9UWzFdLCBjcHVfVFsxXSwgMHgxZik7CisgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX3Nhcl9pMzIoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7CiAgICAgICAg ICAgICAgICAgICAgICAgICBnZW5fbW92bF9UMF9yZWcocmQpOwogICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTIzMjksNyArMjI5MSw3IEBACiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FzZSAweGY6IC8qIFY5IHNpciwgbm9wIGlmIHVzZXIgKi8KICNpZiAh ZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoc3VwZXJ2aXNvcihkYykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZW5fb3Bfc2lyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IC8v IFhYWAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgxMzogLyogR3JhcGhpY3MgU3RhdHVzICov CkBAIC0yNDAwLDcgKzIzNjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICNl bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX3hvcl9UMV9UMCgpOwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF93cnBzcigpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRjZ19nZW5faGVscGVyXzBfMShoZWxwZXJfd3Jwc3IsIGNwdV9UWzBdKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlX3N0YXRlKGRjKTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZW5fb3BfbmV4dF9pbnNuKCk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGNnX2dlbl9leGl0X3RiKDApOwpAQCAtMjQzNCw4ICsyMzk2LDggQEAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX21vdnRsX2Vudl9UMChvZmZzZXRvZihD UFVTUEFSQ1N0YXRlLCB0YnIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OiAvLyBwc3RhdGUKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX3dycHN0YXRlKCk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNhdmVfc3RhdGUoZGMpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0Y2dfZ2VuX2hlbHBlcl8wXzEoaGVscGVyX3dycHN0YXRlLCBjcHVfVFsw XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9uZXh0X2luc24oKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9leGl0X3RiKDApOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYy0+aXNfYnIgPSAxOwpAQCAtMjQ3Niw3ICsy NDM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX2lu c247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZW5fb3Bfd3J3aW0oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX2FuZGlfaTMyKGNwdV9UWzBdLCBjcHVfVFswXSwgKCgxIDw8IE5XSU5ET1dTKSAt IDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbW92bF9lbnZfVDAob2Zm c2V0b2YoQ1BVU1BBUkNTdGF0ZSwgd2ltKSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU2NCw3ICsyNTI3LDgg QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJRUxEX1NQKGlu c24sIDAsIDQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdf VDEocnMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2VuX29wX3BvcGMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 Y2dfZ2VuX2hlbHBlcl8xXzEoaGVscGVyX3BvcGMsIGNwdV9UWzBdLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfVFsxXSk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2VuX21vdmxfVDBfcmVnKHJkKTsKICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSAweDJmOiAvKiBWOSBtb3ZyICovCkBAIC0z MDAzLDE0ICsyOTY3LDcgQEAKICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDAocnMxKTsK ICAgICAgICAgICAgICAgICBpZiAoSVNfSU1NKSB7ICAgLyogaW1tZWRpYXRlICovCiAgICAgICAg ICAgICAgICAgICAgIHJzMiA9IEdFVF9GSUVMRHMoaW5zbiwgMTksIDMxKTsKLSNpZiBkZWZpbmVk KE9QVElNKQotICAgICAgICAgICAgICAgICAgICBpZiAocnMyKSB7Ci0jZW5kaWYKLSAgICAgICAg ICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3NpbW1fVDEocnMyKTsKLSAgICAgICAgICAgICAgICAg ICAgICAgIGdlbl9vcF9hZGRfVDFfVDAoKTsKLSNpZiBkZWZpbmVkKE9QVElNKQotICAgICAgICAg ICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9hZGRpX3Rs KGNwdV9UWzBdLCBjcHVfVFswXSwgcnMyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAg ICAgICAgICAgICAvKiByZWdpc3RlciAqLwogICAgICAgICAgICAgICAgICAgICByczIgPSBHRVRf RklFTEQoaW5zbiwgMjcsIDMxKTsKICNpZiBkZWZpbmVkKE9QVElNKQpAQCAtMzAyNSw3ICsyOTgy LDcgQEAKICAgICAgICAgICAgICAgICBnZW5fb3BfcmVzdG9yZSgpOwogICAgICAgICAgICAgICAg IGdlbl9tb3ZfcGNfbnBjKGRjKTsKICAgICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25f VDBfMygpOwotICAgICAgICAgICAgICAgIGdlbl9vcF9tb3ZsX25wY19UMCgpOworICAgICAgICAg ICAgICAgIHRjZ19nZW5fc3RfdGwoY3B1X1RbMF0sIGNwdV9lbnYsIG9mZnNldG9mKENQVVNQQVJD U3RhdGUsIG5wYykpOwogICAgICAgICAgICAgICAgIGRjLT5ucGMgPSBEWU5BTUlDX1BDOwogICAg ICAgICAgICAgICAgIGdvdG8gam1wX2luc247CiAjZW5kaWYKQEAgLTMwMzQsMTQgKzI5OTEsNyBA QAogICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UMChyczEpOwogICAgICAgICAgICAgICAg IGlmIChJU19JTU0pIHsgICAvKiBpbW1lZGlhdGUgKi8KICAgICAgICAgICAgICAgICAgICAgcnMy ID0gR0VUX0ZJRUxEcyhpbnNuLCAxOSwgMzEpOwotI2lmIGRlZmluZWQoT1BUSU0pCi0gICAgICAg ICAgICAgICAgICAgIGlmIChyczIpIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAg Z2VuX21vdmxfc2ltbV9UMShyczIpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2Fk ZF9UMV9UMCgpOwotI2lmIGRlZmluZWQoT1BUSU0pCi0gICAgICAgICAgICAgICAgICAgIH0KLSNl bmRpZgorICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwoY3B1X1RbMF0sIGNwdV9U WzBdLCByczIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgIC8qIHJl Z2lzdGVyICovCiAgICAgICAgICAgICAgICAgICAgIHJzMiA9IEdFVF9GSUVMRChpbnNuLCAyNywg MzEpOwogI2lmIGRlZmluZWQoT1BUSU0pCkBAIC0zMDU3LDIwICszMDA3LDEyIEBACiAgICAgICAg ICAgICAgICAgY2FzZSAweDM4OiAgICAgIC8qIGptcGwgKi8KICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJkICE9IDApIHsKLSNpZmRlZiBUQVJHRVRf U1BBUkM2NAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYy0+cGMgPT0gKHVpbnQz Ml90KWRjLT5wYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbW92 bF9UMV9pbShkYy0+cGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9tb3ZxX1QxX2ltNjQoZGMtPnBj ID4+IDMyLCBkYy0+cGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSNlbHNlCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX21vdmxfVDFfaW0oZGMtPnBjKTsKLSNl bmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV90bChjcHVfVFsx XSwgZGMtPnBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9UMV9yZWco cmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg Z2VuX21vdl9wY19ucGMoZGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2NoZWNr X2FsaWduX1QwXzMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9tb3ZsX25wY19U MCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zdF90bChjcHVfVFswXSwgY3B1 X2Vudiwgb2Zmc2V0b2YoQ1BVU1BBUkNTdGF0ZSwgbnBjKSk7CiAgICAgICAgICAgICAgICAgICAg ICAgICBkYy0+bnBjID0gRFlOQU1JQ19QQzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgICBnb3RvIGptcF9pbnNuOwpAQCAtMzA4MSwxNCArMzAyMywxNCBAQAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcHJpdl9pbnNuOwogICAgICAgICAgICAgICAg ICAgICAgICAgZ2VuX21vdl9wY19ucGMoZGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu X29wX2NoZWNrX2FsaWduX1QwXzMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9t b3ZsX25wY19UMCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zdF90bChjcHVf VFswXSwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU1BBUkNTdGF0ZSwgbnBjKSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICBkYy0+bnBjID0gRFlOQU1JQ19QQzsKLSAgICAgICAgICAgICAgICAgICAg ICAgIGdlbl9vcF9yZXR0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2hlbHBl cl8wXzAoaGVscGVyX3JldHQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgIGdvdG8gam1wX2luc247CiAjZW5kaWYKICAgICAgICAgICAgICAgICBjYXNlIDB4M2I6 IC8qIGZsdXNoICovCi0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9mbHVzaF9UMCgpOworICAg ICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2hlbHBlcl8wXzEoaGVscGVyX2ZsdXNoLCBjcHVfVFsw XSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgMHgz YzogICAgICAvKiBzYXZlICovCiAgICAgICAgICAgICAgICAgICAgIHNhdmVfc3RhdGUoZGMpOwpA QCAtMzEwOSwxNCArMzA1MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn b3RvIHByaXZfaW5zbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYy0+bnBjID0gRFlO QU1JQ19QQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYy0+cGMgPSBEWU5BTUlDX1BD OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9kb25lKCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGNnX2dlbl9oZWxwZXJfMF8wKGhlbHBlcl9kb25lKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGptcF9pbnNuOwogICAgICAgICAgICAgICAgICAg ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3VwZXJ2aXNv cihkYykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcHJpdl9pbnNuOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjLT5ucGMgPSBEWU5BTUlDX1BDOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRjLT5wYyA9IERZTkFNSUNfUEM7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2VuX29wX3JldHJ5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGNnX2dlbl9oZWxwZXJfMF8wKGhlbHBlcl9yZXRyeSk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ290byBqbXBfaW5zbjsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX2luc247CkBAIC0zMTQ0 LDE0ICszMDg2LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKElTX0lN TSkgeyAgICAgICAvKiBpbW1lZGlhdGUgKi8KICAgICAgICAgICAgICAgICByczIgPSBHRVRfRklF TERzKGluc24sIDE5LCAzMSk7Ci0jaWYgZGVmaW5lZChPUFRJTSkKLSAgICAgICAgICAgICAgICBp ZiAocnMyICE9IDApIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9zaW1t X1QxKHJzMik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9hZGRfVDFfVDAoKTsKLSNpZiBk ZWZpbmVkKE9QVElNKQotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgICAg IHRjZ19nZW5fYWRkaV90bChjcHVfVFswXSwgY3B1X1RbMF0sIHJzMik7CiAgICAgICAgICAgICB9 IGVsc2UgeyAgICAgICAgICAgIC8qIHJlZ2lzdGVyICovCiAgICAgICAgICAgICAgICAgcnMyID0g R0VUX0ZJRUxEKGluc24sIDI3LCAzMSk7CiAjaWYgZGVmaW5lZChPUFRJTSkKQEAgLTMxNjcsNDIg KzMxMDIsNTggQEAKICAgICAgICAgICAgICAgICAoeG9wID4gMHgxNyAmJiB4b3AgPD0gMHgxZCAp IHx8CiAgICAgICAgICAgICAgICAgKHhvcCA+IDB4MmMgJiYgeG9wIDw9IDB4MzMpIHx8IHhvcCA9 PSAweDFmIHx8IHhvcCA9PSAweDNkKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh4b3ApIHsK LSAgICAgICAgICAgICAgICBjYXNlIDB4MDogICAgICAgLyogbG9hZCB3b3JkICovCisgICAgICAg ICAgICAgICAgY2FzZSAweDA6ICAgICAgIC8qIGxvYWQgdW5zaWduZWQgd29yZCAqLwogICAgICAg ICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBfMygpOwotI2lmbmRlZiBUQVJHRVRf U1BBUkM2NAotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChsZCk7Ci0jZWxzZQotICAg ICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChsZHV3KTsKLSNlbmRpZgorICAgICAgICAgICAg ICAgICAgICBBQkkzMl9NQVNLKGNwdV9UWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dl bl9xZW11X2xkMzJ1KGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4MTogICAgICAgLyogbG9h ZCB1bnNpZ25lZCBieXRlICovCi0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9sZHN0KGxkdWIp OworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKGNwdV9UWzBdKTsKKyAgICAgICAgICAg ICAgICAgICAgdGNnX2dlbl9xZW11X2xkOHUoY3B1X1RbMV0sIGNwdV9UWzBdLCBkYy0+bWVtX2lk eCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgMHgy OiAgICAgICAvKiBsb2FkIHVuc2lnbmVkIGhhbGZ3b3JkICovCiAgICAgICAgICAgICAgICAgICAg IGdlbl9vcF9jaGVja19hbGlnbl9UMF8xKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9s ZHN0KGxkdWgpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKGNwdV9UWzBdKTsKKyAg ICAgICAgICAgICAgICAgICAgdGNnX2dlbl9xZW11X2xkMTZ1KGNwdV9UWzFdLCBjcHVfVFswXSwg ZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg ICBjYXNlIDB4MzogICAgICAgLyogbG9hZCBkb3VibGUgd29yZCAqLwogICAgICAgICAgICAgICAg ICAgICBpZiAocmQgJiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX2lu c247Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9jaGVja19hbGlnbl9UMF83KCk7Ci0gICAg ICAgICAgICAgICAgICAgIGdlbl9vcF9sZHN0KGxkZCk7Ci0gICAgICAgICAgICAgICAgICAgIGdl bl9tb3ZsX1QwX3JlZyhyZCArIDEpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIFRDR3Ygcl9kd29yZDsKKworICAgICAgICAgICAgICAgICAgICAg ICAgcl9kd29yZCA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JNjQpOworICAgICAgICAgICAgICAg ICAgICAgICAgZ2VuX29wX2NoZWNrX2FsaWduX1QwXzcoKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIEFCSTMyX01BU0soY3B1X1RbMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dl bl9xZW11X2xkNjQocl9kd29yZCwgY3B1X1RbMF0sIGRjLT5tZW1faWR4KTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRjZ19nZW5fdHJ1bmNfaTY0X2kzMihjcHVfVFswXSwgcl9kd29yZCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9UMF9yZWcocmQgKyAxKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIHRjZ19nZW5fc2hyaV9pNjQocl9kd29yZCwgcl9kd29yZCwgMzIpOwor ICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl90cnVuY19pNjRfaTMyKGNwdV9UWzFdLCBy X2R3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgICAgICBjYXNlIDB4OTogICAgICAgLyogbG9hZCBzaWduZWQgYnl0ZSAq LwotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChsZHNiKTsKKyAgICAgICAgICAgICAg ICAgICAgQUJJMzJfTUFTSyhjcHVfVFswXSk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5f cWVtdV9sZDhzKGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4YTogICAgICAgLyogbG9hZCBz aWduZWQgaGFsZndvcmQgKi8KICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2NoZWNrX2FsaWdu X1QwXzEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2xkc3QobGRzaCk7CisgICAgICAg ICAgICAgICAgICAgIEFCSTMyX01BU0soY3B1X1RbMF0pOworICAgICAgICAgICAgICAgICAgICB0 Y2dfZ2VuX3FlbXVfbGQxNnMoY3B1X1RbMV0sIGNwdV9UWzBdLCBkYy0+bWVtX2lkeCk7CiAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgMHhkOiAgICAgICAv KiBsZHN0dWIgLS0gWFhYOiBzaG91bGQgYmUgYXRvbWljYWxseSAqLwotICAgICAgICAgICAgICAg ICAgICBnZW5fb3BfbGRzdChsZHN0dWIpOworICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX21v dmlfaTMyKGNwdV90bXAwLCAweGZmKTsKKyAgICAgICAgICAgICAgICAgICAgQUJJMzJfTUFTSyhj cHVfVFswXSk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9sZDhzKGNwdV9UWzFd LCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOworICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3Fl bXVfc3Q4KGNwdV90bXAwLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4MGY6ICAgICAgLyogc3dhcCByZWdp c3RlciB3aXRoIG1lbW9yeS4gQWxzbyBhdG9taWNhbGx5ICovCiAgICAgICAgICAgICAgICAgICAg IGdlbl9vcF9jaGVja19hbGlnbl9UMF8zKCk7CiAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3Zs X3JlZ19UMShyZCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9sZHN0KHN3YXApOworICAg ICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKGNwdV9UWzBdKTsKKyAgICAgICAgICAgICAgICAg ICAgdGNnX2dlbl9xZW11X2xkMzJ1KGNwdV90bXAwLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwor ICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVfc3QzMihjcHVfVFsxXSwgY3B1X1RbMF0s IGRjLT5tZW1faWR4KTsKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9tb3ZfaTMyKGNwdV9U WzFdLCBjcHVfdG1wMCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmICFkZWZpbmVk KENPTkZJR19VU0VSX09OTFkpIHx8IGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpCiAgICAgICAgICAg ICAgICAgY2FzZSAweDEwOiAgICAgIC8qIGxvYWQgd29yZCBhbHRlcm5hdGUgKi8KQEAgLTMyOTcs MTEgKzMyNDgsMTMgQEAKICNpZmRlZiBUQVJHRVRfU1BBUkM2NAogICAgICAgICAgICAgICAgIGNh c2UgMHgwODogLyogVjkgbGRzdyAqLwogICAgICAgICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tf YWxpZ25fVDBfMygpOwotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChsZHN3KTsKKyAg ICAgICAgICAgICAgICAgICAgQUJJMzJfTUFTSyhjcHVfVFswXSk7CisgICAgICAgICAgICAgICAg ICAgIHRjZ19nZW5fcWVtdV9sZDMycyhjcHVfVFsxXSwgY3B1X1RbMF0sIGRjLT5tZW1faWR4KTsK ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAweDBiOiAv KiBWOSBsZHggKi8KICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2NoZWNrX2FsaWduX1QwXzco KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2xkc3QobGR4KTsKKyAgICAgICAgICAgICAg ICAgICAgQUJJMzJfTUFTSyhjcHVfVFswXSk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5f cWVtdV9sZDY0KGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4MTg6IC8qIFY5IGxkc3dhICov CiAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9jaGVja19hbGlnbl9UMF8zKCk7CkBAIC0zMzc0 LDI3ICszMzI3LDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIHhvcCA9PSAweGUgfHwgeG9w ID09IDB4MWUpIHsKICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDEocmQpOwogICAgICAg ICAgICAgICAgIHN3aXRjaCAoeG9wKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAweDQ6CisgICAg ICAgICAgICAgICAgY2FzZSAweDQ6IC8qIHN0b3JlIHdvcmQgKi8KICAgICAgICAgICAgICAgICAg ICAgZ2VuX29wX2NoZWNrX2FsaWduX1QwXzMoKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX29w X2xkc3Qoc3QpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKGNwdV9UWzBdKTsKKyAg ICAgICAgICAgICAgICAgICAgdGNnX2dlbl9xZW11X3N0MzIoY3B1X1RbMV0sIGNwdV9UWzBdLCBk Yy0+bWVtX2lkeCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg IGNhc2UgMHg1OgotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChzdGIpOworICAgICAg ICAgICAgICAgIGNhc2UgMHg1OiAvKiBzdG9yZSBieXRlICovCisgICAgICAgICAgICAgICAgICAg IEFCSTMyX01BU0soY3B1X1RbMF0pOworICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVf c3Q4KGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAg ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDB4NjoKKyAgICAgICAgICAgICAgICBjYXNl IDB4NjogLyogc3RvcmUgaGFsZndvcmQgKi8KICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2No ZWNrX2FsaWduX1QwXzEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2xkc3Qoc3RoKTsK KyAgICAgICAgICAgICAgICAgICAgQUJJMzJfTUFTSyhjcHVfVFswXSk7CisgICAgICAgICAgICAg ICAgICAgIHRjZ19nZW5fcWVtdV9zdDE2KGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgp OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDB4NzoK KyAgICAgICAgICAgICAgICBjYXNlIDB4NzogLyogc3RvcmUgZG91YmxlIHdvcmQgKi8KICAgICAg ICAgICAgICAgICAgICAgaWYgKHJkICYgMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g aWxsZWdhbF9pbnNuOwotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBf NygpOwotICAgICAgICAgICAgICAgICAgICBmbHVzaF9UMihkYyk7Ci0gICAgICAgICAgICAgICAg ICAgIGdlbl9tb3ZsX3JlZ19UMihyZCArIDEpOwotICAgICAgICAgICAgICAgICAgICBnZW5fb3Bf bGRzdChzdGQpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIFRDR3Ygcl9kd29yZCwgcl9sb3c7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdl bl9vcF9jaGVja19hbGlnbl9UMF83KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByX2R3b3Jk ID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0k2NCk7CisgICAgICAgICAgICAgICAgICAgICAgICBy X2xvdyA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JMzIpOworICAgICAgICAgICAgICAgICAgICAg ICAgZ2VuX21vdmxfcmVnX1ROKHJkICsgMSwgcl9sb3cpOworICAgICAgICAgICAgICAgICAgICAg ICAgdGNnX2dlbl9oZWxwZXJfMV8yKGhlbHBlcl9wYWNrNjQsIHJfZHdvcmQsIGNwdV9UWzFdLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJfbG93KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9zdDY0KHJfZHdvcmQsIGNwdV9UWzBdLCBk Yy0+bWVtX2lkeCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CiAjaWYgIWRlZmluZWQoQ09ORklHX1VTRVJfT05MWSkgfHwgZGVmaW5lZChUQVJHRVRf U1BBUkM2NCkKLSAgICAgICAgICAgICAgICBjYXNlIDB4MTQ6CisgICAgICAgICAgICAgICAgY2Fz ZSAweDE0OiAvKiBzdG9yZSB3b3JkIGFsdGVybmF0ZSAqLwogI2lmbmRlZiBUQVJHRVRfU1BBUkM2 NAogICAgICAgICAgICAgICAgICAgICBpZiAoSVNfSU1NKQogICAgICAgICAgICAgICAgICAgICAg ICAgZ290byBpbGxlZ2FsX2luc247CkBAIC0zNDA0LDcgKzMzNjcsNyBAQAogICAgICAgICAgICAg ICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBfMygpOwogICAgICAgICAgICAgICAgICAgICBn ZW5fc3RfYXNpKGluc24sIDQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg ICAgICAgICBjYXNlIDB4MTU6CisgICAgICAgICAgICAgICAgY2FzZSAweDE1OiAvKiBzdG9yZSBi eXRlIGFsdGVybmF0ZSAqLwogI2lmbmRlZiBUQVJHRVRfU1BBUkM2NAogICAgICAgICAgICAgICAg ICAgICBpZiAoSVNfSU1NKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX2lu c247CkBAIC0zNDEzLDcgKzMzNzYsNyBAQAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIGdl bl9zdF9hc2koaW5zbiwgMSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg ICAgICAgIGNhc2UgMHgxNjoKKyAgICAgICAgICAgICAgICBjYXNlIDB4MTY6IC8qIHN0b3JlIGhh bGZ3b3JkIGFsdGVybmF0ZSAqLwogI2lmbmRlZiBUQVJHRVRfU1BBUkM2NAogICAgICAgICAgICAg ICAgICAgICBpZiAoSVNfSU1NKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2Fs X2luc247CkBAIC0zNDIzLDcgKzMzODYsNyBAQAogICAgICAgICAgICAgICAgICAgICBnZW5fb3Bf Y2hlY2tfYWxpZ25fVDBfMSgpOwogICAgICAgICAgICAgICAgICAgICBnZW5fc3RfYXNpKGluc24s IDIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDB4 MTc6CisgICAgICAgICAgICAgICAgY2FzZSAweDE3OiAvKiBzdG9yZSBkb3VibGUgd29yZCBhbHRl cm5hdGUgKi8KICNpZm5kZWYgVEFSR0VUX1NQQVJDNjQKICAgICAgICAgICAgICAgICAgICAgaWYg KElTX0lNTSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9pbnNuOwpAQCAt MzQzMiwxNiArMzM5NSw0MSBAQAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIGlmIChyZCAm IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGlsbGVnYWxfaW5zbjsKLSAgICAgICAg ICAgICAgICAgICAgZ2VuX29wX2NoZWNrX2FsaWduX1QwXzcoKTsKLSAgICAgICAgICAgICAgICAg ICAgZmx1c2hfVDIoZGMpOwotICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDIocmQg KyAxKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX3N0ZGFfYXNpKGluc24pOworICAgICAgICAg ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBhc2k7CisgICAg ICAgICAgICAgICAgICAgICAgICBUQ0d2IHJfZHdvcmQsIHJfdGVtcCwgcl9zaXplOworCisgICAg ICAgICAgICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBfNygpOworICAgICAgICAg ICAgICAgICAgICAgICAgcl9kd29yZCA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9JNjQpOworICAg ICAgICAgICAgICAgICAgICAgICAgcl90ZW1wID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7 CisgICAgICAgICAgICAgICAgICAgICAgICByX3NpemUgPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVf STMyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UTihyZCArIDEsIHJf dGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2hlbHBlcl8xXzIoaGVscGVy X3BhY2s2NCwgcl9kd29yZCwgY3B1X1RbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcl90ZW1wKTsKKyNpZmRlZiBUQVJHRVRfU1BBUkM2NAorICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKElTX0lNTSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBvZmZzZXQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBHRVRf RklFTEQoaW5zbiwgMjUsIDMxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2Vu X2FkZGlfdGwoY3B1X1RbMF0sIGNwdV9UWzBdLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRjZ19nZW5fbGRfaTMyKHJfZHdvcmQsIGNwdV9lbnYsIG9mZnNldG9mKENQVVNQ QVJDU3RhdGUsIGFzaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNlbmRp ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzaSA9IEdFVF9GSUVMRChpbnNuLCAxOSwg MjYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV9pMzIocl90ZW1w LCBhc2kpOworI2lmZGVmIFRBUkdFVF9TUEFSQzY0CisgICAgICAgICAgICAgICAgICAgICAgICB9 CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV9pMzIocl9zaXpl LCA4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5faGVscGVyXzBfNChoZWxwZXJf c3RfYXNpLCBjcHVfVFswXSwgcl9kd29yZCwgcl90ZW1wLCByX3NpemUpOworICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjaWZkZWYgVEFS R0VUX1NQQVJDNjQKICAgICAgICAgICAgICAgICBjYXNlIDB4MGU6IC8qIFY5IHN0eCAqLwogICAg ICAgICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBfNygpOwotICAgICAgICAgICAg ICAgICAgICBnZW5fb3BfbGRzdChzdHgpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNL KGNwdV9UWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9xZW11X3N0NjQoY3B1X1Rb MV0sIGNwdV9UWzBdLCBkYy0+bWVtX2lkeCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgICAgIGNhc2UgMHgxZTogLyogVjkgc3R4YSAqLwogICAgICAgICAgICAgICAg ICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBfNygpOwpAQCAtMzUyMiwxNiArMzUxMCwxMiBAQAog ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4M2M6IC8q IFY5IGNhc2EgKi8KICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2NoZWNrX2FsaWduX1QwXzMo KTsKLSAgICAgICAgICAgICAgICAgICAgZmx1c2hfVDIoZGMpOwotICAgICAgICAgICAgICAgICAg ICBnZW5fbW92bF9yZWdfVDIocmQpOwotICAgICAgICAgICAgICAgICAgICBnZW5fY2FzX2FzaShp bnNuKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuX2Nhc19hc2koaW5zbiwgcmQpOwogICAgICAg ICAgICAgICAgICAgICBnZW5fbW92bF9UMV9yZWcocmQpOwogICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4M2U6IC8qIFY5IGNhc3hhICovCiAgICAgICAg ICAgICAgICAgICAgIGdlbl9vcF9jaGVja19hbGlnbl9UMF83KCk7Ci0gICAgICAgICAgICAgICAg ICAgIGZsdXNoX1QyKGRjKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfcmVnX1QyKHJk KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX2Nhc3hfYXNpKGluc24pOworICAgICAgICAgICAg ICAgICAgICBnZW5fY2FzeF9hc2koaW5zbiwgcmQpOwogICAgICAgICAgICAgICAgICAgICBnZW5f bW92bF9UMV9yZWcocmQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICNlbHNlCkBAIC0z NTk3LDYgKzM1ODEsMTAgQEAKICNlbmRpZgogfQogCitzdGF0aWMgdm9pZCB0Y2dfbWFjcm9fZnVu YyhUQ0dDb250ZXh0ICpzLCBpbnQgbWFjcm9faWQsIGNvbnN0IGludCAqZGVhZF9hcmdzKQorewor fQorCiBzdGF0aWMgaW5saW5lIGludCBnZW5faW50ZXJtZWRpYXRlX2NvZGVfaW50ZXJuYWwoVHJh bnNsYXRpb25CbG9jayAqIHRiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBzcGMsIENQVVNQQVJDU3RhdGUgKmVudikKIHsKQEAgLTM2MTUsMTMg KzM2MDMsMTYgQEAKICAgICBkYy0+ZnB1X2VuYWJsZWQgPSBjcHVfZnB1X2VuYWJsZWQoZW52KTsK ICAgICBnZW5fb3BjX2VuZCA9IGdlbl9vcGNfYnVmICsgT1BDX01BWF9TSVpFOwogCisgICAgY3B1 X3RtcDAgPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVfVEwpOworICAgIGNwdV9yZWd3cHRyID0gdGNn X3RlbXBfbmV3KFRDR19UWVBFX1BUUik7IC8vIFhYWAorCiAgICAgZG8gewogICAgICAgICBpZiAo ZW52LT5uYl9icmVha3BvaW50cyA+IDApIHsKICAgICAgICAgICAgIGZvcihqID0gMDsgaiA8IGVu di0+bmJfYnJlYWtwb2ludHM7IGorKykgewogICAgICAgICAgICAgICAgIGlmIChlbnYtPmJyZWFr cG9pbnRzW2pdID09IGRjLT5wYykgewogICAgICAgICAgICAgICAgICAgICBpZiAoZGMtPnBjICE9 IHBjX3N0YXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9zdGF0ZShkYyk7Ci0gICAg ICAgICAgICAgICAgICAgIGdlbl9vcF9kZWJ1ZygpOworICAgICAgICAgICAgICAgICAgICB0Y2df Z2VuX2hlbHBlcl8wXzAoaGVscGVyX2RlYnVnKTsKICAgICAgICAgICAgICAgICAgICAgdGNnX2dl bl9leGl0X3RiKDApOwogICAgICAgICAgICAgICAgICAgICBkYy0+aXNfYnIgPSAxOwogICAgICAg ICAgICAgICAgICAgICBnb3RvIGV4aXRfZ2VuX2xvb3A7CkBAIC0zNzQ4LDYgKzM3MzksNyBAQAog ewogICAgIENQVVNQQVJDU3RhdGUgKmVudjsKICAgICBjb25zdCBzcGFyY19kZWZfdCAqZGVmOwor ICAgIHN0YXRpYyBpbnQgaW5pdGVkOwogCiAgICAgZGVmID0gY3B1X3NwYXJjX2ZpbmRfYnlfbmFt ZShjcHVfbW9kZWwpOwogICAgIGlmICghZGVmKQpAQCAtMzc2OSw2ICszNzYxLDI4IEBACiAgICAg ZW52LT5tbXVyZWdzWzBdIHw9IGRlZi0+bW11X3ZlcnNpb247CiAgICAgY3B1X3NwYXJjX3NldF9p ZChlbnYsIDApOwogI2VuZGlmCisKKyAgICAvKiBpbml0IHZhcmlvdXMgc3RhdGljIHRhYmxlcyAq LworICAgIGlmICghaW5pdGVkKSB7CisgICAgICAgIGluaXRlZCA9IDE7CisKKyAgICAgICAgdGNn X3NldF9tYWNyb19mdW5jKCZ0Y2dfY3R4LCB0Y2dfbWFjcm9fZnVuYyk7CisgICAgICAgIGNwdV9l bnYgPSB0Y2dfZ2xvYmFsX3JlZ19uZXcoVENHX1RZUEVfUFRSLCBUQ0dfQVJFRzAsICJlbnYiKTsK KyAgICAgICAgLy8jaWYgVEFSR0VUX0xPTkdfQklUUyA+IEhPU1RfTE9OR19CSVRTCisjaWZkZWYg VEFSR0VUX1NQQVJDNjQKKyAgICAgICAgY3B1X1RbMF0gPSB0Y2dfZ2xvYmFsX21lbV9uZXcoVENH X1RZUEVfVEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19BUkVH MCwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHQwKSwgIlQwIik7CisgICAgICAgIGNwdV9UWzFdID0gdGNn X2dsb2JhbF9tZW1fbmV3KFRDR19UWVBFX1RMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUQ0dfQVJFRzAsIG9mZnNldG9mKENQVVN0YXRlLCB0MSksICJUMSIpOworICAg ICAgICBjcHVfVFsyXSA9IHRjZ19nbG9iYWxfbWVtX25ldyhUQ0dfVFlQRV9UTCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX0FSRUcwLCBvZmZzZXRvZihDUFVTdGF0 ZSwgdDIpLCAiVDIiKTsKKyNlbHNlCisgICAgICAgIGNwdV9UWzBdID0gdGNnX2dsb2JhbF9yZWdf bmV3KFRDR19UWVBFX1RMLCBUQ0dfQVJFRzEsICJUMCIpOworICAgICAgICBjcHVfVFsxXSA9IHRj Z19nbG9iYWxfcmVnX25ldyhUQ0dfVFlQRV9UTCwgVENHX0FSRUcyLCAiVDEiKTsKKyAgICAgICAg Y3B1X1RbMl0gPSB0Y2dfZ2xvYmFsX3JlZ19uZXcoVENHX1RZUEVfVEwsIFRDR19BUkVHMywgIlQy Iik7CisjZW5kaWYKKyAgICB9CisKICAgICBjcHVfcmVzZXQoZW52KTsKICAgICAKICAgICByZXR1 cm4gZW52OwpJbmRleDogcWVtdS90YXJnZXQtc3BhcmMvb3AuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11 Lm9yaWcvdGFyZ2V0LXNwYXJjL29wLmMJMjAwOC0wMi0yMiAxNjoxNjoyMS4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL29wLmMJMjAwOC0wMi0yMyAxNjo0NzoyOS4wMDAwMDAw MDAgKzAwMDAKQEAgLTE5LDEwNCArMTksNyBAQAogKi8KIAogI2luY2x1ZGUgImV4ZWMuaCIKLQot IC8qWFhYKi8KLSNkZWZpbmUgUkVHTkFNRSBnMAotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbMF0p Ci0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBnMQotI2RlZmluZSBS RUcgKGVudi0+Z3JlZ3NbMV0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVH TkFNRSBnMgotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbMl0pCi0jaW5jbHVkZSAib3BfdGVtcGxh dGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBnMwotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbM10pCi0j aW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBnNAotI2RlZmluZSBSRUcg KGVudi0+Z3JlZ3NbNF0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFN RSBnNQotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbNV0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUu aCIKLSNkZWZpbmUgUkVHTkFNRSBnNgotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbNl0pCi0jaW5j bHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBnNwotI2RlZmluZSBSRUcgKGVu di0+Z3JlZ3NbN10pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBp MAotI2RlZmluZSBSRUcgKFJFR1dQVFJbMTZdKQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0j ZGVmaW5lIFJFR05BTUUgaTEKLSNkZWZpbmUgUkVHIChSRUdXUFRSWzE3XSkKLSNpbmNsdWRlICJv cF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIGkyCi0jZGVmaW5lIFJFRyAoUkVHV1BUUlsx OF0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBpMwotI2RlZmlu ZSBSRUcgKFJFR1dQVFJbMTldKQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0jZGVmaW5lIFJF R05BTUUgaTQKLSNkZWZpbmUgUkVHIChSRUdXUFRSWzIwXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0 ZS5oIgotI2RlZmluZSBSRUdOQU1FIGk1Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUlsyMV0pCi0jaW5j bHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBpNgotI2RlZmluZSBSRUcgKFJF R1dQVFJbMjJdKQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0jZGVmaW5lIFJFR05BTUUgaTcK LSNkZWZpbmUgUkVHIChSRUdXUFRSWzIzXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2Rl ZmluZSBSRUdOQU1FIGwwCi0jZGVmaW5lIFJFRyAoUkVHV1BUUls4XSkKLSNpbmNsdWRlICJvcF90 ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIGwxCi0jZGVmaW5lIFJFRyAoUkVHV1BUUls5XSkK LSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIGwyCi0jZGVmaW5lIFJF RyAoUkVHV1BUUlsxMF0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFN RSBsMwotI2RlZmluZSBSRUcgKFJFR1dQVFJbMTFdKQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgi Ci0jZGVmaW5lIFJFR05BTUUgbDQKLSNkZWZpbmUgUkVHIChSRUdXUFRSWzEyXSkKLSNpbmNsdWRl ICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIGw1Ci0jZGVmaW5lIFJFRyAoUkVHV1BU UlsxM10pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBsNgotI2Rl ZmluZSBSRUcgKFJFR1dQVFJbMTRdKQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0jZGVmaW5l IFJFR05BTUUgbDcKLSNkZWZpbmUgUkVHIChSRUdXUFRSWzE1XSkKLSNpbmNsdWRlICJvcF90ZW1w bGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG8wCi0jZGVmaW5lIFJFRyAoUkVHV1BUUlswXSkKLSNp bmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG8xCi0jZGVmaW5lIFJFRyAo UkVHV1BUUlsxXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG8y Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUlsyXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2Rl ZmluZSBSRUdOQU1FIG8zCi0jZGVmaW5lIFJFRyAoUkVHV1BUUlszXSkKLSNpbmNsdWRlICJvcF90 ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG80Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUls0XSkK LSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG81Ci0jZGVmaW5lIFJF RyAoUkVHV1BUUls1XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1F IG82Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUls2XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgot I2RlZmluZSBSRUdOQU1FIG83Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUls3XSkKLSNpbmNsdWRlICJv cF90ZW1wbGF0ZS5oIgorI2luY2x1ZGUgImhlbHBlci5oIgogCiAjZGVmaW5lIFJFR05BTUUgZjAK ICNkZWZpbmUgUkVHIChlbnYtPmZwclswXSkKQEAgLTI2NywxMDYgKzE3MCwxMSBAQAogI2VuZGlm CiAKICNpZmRlZiBUQVJHRVRfU1BBUkM2NAotI2lmZGVmIFdPUkRTX0JJR0VORElBTgotdHlwZWRl ZiB1bmlvbiBVUkVHNjQgewotICAgIHN0cnVjdCB7IHVpbnQxNl90IHYzLCB2MiwgdjEsIHYwOyB9 IHc7Ci0gICAgc3RydWN0IHsgdWludDMyX3QgdjEsIHYwOyB9IGw7Ci0gICAgdWludDY0X3QgcTsK LX0gVVJFRzY0OwotI2Vsc2UKLXR5cGVkZWYgdW5pb24gVVJFRzY0IHsKLSAgICBzdHJ1Y3QgeyB1 aW50MTZfdCB2MCwgdjEsIHYyLCB2MzsgfSB3OwotICAgIHN0cnVjdCB7IHVpbnQzMl90IHYwLCB2 MTsgfSBsOwotICAgIHVpbnQ2NF90IHE7Ci19IFVSRUc2NDsKLSNlbmRpZgotCi0jZGVmaW5lIFBB UkFNUTEgXAotKHtcCi0gICAgVVJFRzY0IF9fcDtcCi0gICAgX19wLmwudjEgPSBQQVJBTTE7XAot ICAgIF9fcC5sLnYwID0gUEFSQU0yO1wKLSAgICBfX3AucTtcCi19KQotCi12b2lkIE9QUFJPVE8g b3BfbW92cV9UMF9pbTY0KHZvaWQpCi17Ci0gICAgVDAgPSBQQVJBTVExOwotfQotCi12b2lkIE9Q UFJPVE8gb3BfbW92cV9UMV9pbTY0KHZvaWQpCi17Ci0gICAgVDEgPSBQQVJBTVExOwotfQotCiAj ZGVmaW5lIFhGTEFHX1NFVCh4KSAoKGVudi0+eGNjJngpPzE6MCkKLQotI2Vsc2UKLSNkZWZpbmUg RUlQIChlbnYtPnBjKQogI2VuZGlmCiAKICNkZWZpbmUgRkxBR19TRVQoeCkgKChlbnYtPnBzciZ4 KT8xOjApCiAKLXZvaWQgT1BQUk9UTyBvcF9tb3ZsX1QwXzAodm9pZCkKLXsKLSAgICBUMCA9IDA7 Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3ZsX1QwX2ltKHZvaWQpCi17Ci0gICAgVDAgPSAodWlu dDMyX3QpUEFSQU0xOwotfQotCi12b2lkIE9QUFJPVE8gb3BfbW92bF9UMV9pbSh2b2lkKQotewot ICAgIFQxID0gKHVpbnQzMl90KVBBUkFNMTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX21vdmxfVDJf aW0odm9pZCkKLXsKLSAgICBUMiA9ICh1aW50MzJfdClQQVJBTTE7Ci19Ci0KLXZvaWQgT1BQUk9U TyBvcF9tb3ZsX1QwX3NpbSh2b2lkKQotewotICAgIFQwID0gKGludDMyX3QpUEFSQU0xOwotfQot Ci12b2lkIE9QUFJPVE8gb3BfbW92bF9UMV9zaW0odm9pZCkKLXsKLSAgICBUMSA9IChpbnQzMl90 KVBBUkFNMTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX21vdmxfVDJfc2ltKHZvaWQpCi17Ci0gICAg VDIgPSAoaW50MzJfdClQQVJBTTE7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3ZsX1QwX2Vudih2 b2lkKQotewotICAgIFQwID0gKih1aW50MzJfdCAqKSgoY2hhciAqKWVudiArIFBBUkFNMSk7Ci19 Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3ZsX2Vudl9UMCh2b2lkKQotewotICAgICoodWludDMyX3Qg KikoKGNoYXIgKillbnYgKyBQQVJBTTEpID0gVDA7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3Z0 bF9UMF9lbnYodm9pZCkKLXsKLSAgICBUMCA9ICoodGFyZ2V0X3Vsb25nICopKChjaGFyICopZW52 ICsgUEFSQU0xKTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX21vdnRsX2Vudl9UMCh2b2lkKQotewot ICAgICoodGFyZ2V0X3Vsb25nICopKChjaGFyICopZW52ICsgUEFSQU0xKSA9IFQwOwotfQotCi12 b2lkIE9QUFJPVE8gb3BfYWRkX1QxX1QwKHZvaWQpCi17Ci0gICAgVDAgKz0gVDE7Ci19Ci0KIHZv aWQgT1BQUk9UTyBvcF9hZGRfVDFfVDBfY2Modm9pZCkKIHsKICAgICB0YXJnZXRfdWxvbmcgc3Jj MTsKQEAgLTU2NSwxMSArMzczLDYgQEAKICAgICBGT1JDRV9SRVQoKTsKIH0KIAotdm9pZCBPUFBS T1RPIG9wX3N1Yl9UMV9UMCh2b2lkKQotewotICAgIFQwIC09IFQxOwotfQotCiB2b2lkIE9QUFJP VE8gb3Bfc3ViX1QxX1QwX2NjKHZvaWQpCiB7CiAgICAgdGFyZ2V0X3Vsb25nIHNyYzE7CkBAIC03 NjUsMjEgKzU2OCw2IEBACiAgICAgRk9SQ0VfUkVUKCk7CiB9CiAKLXZvaWQgT1BQUk9UTyBvcF9h bmRfVDFfVDAodm9pZCkKLXsKLSAgICBUMCAmPSBUMTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX29y X1QxX1QwKHZvaWQpCi17Ci0gICAgVDAgfD0gVDE7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF94b3Jf VDFfVDAodm9pZCkKLXsKLSAgICBUMCBePSBUMTsKLX0KLQogdm9pZCBPUFBST1RPIG9wX2FuZG5f VDFfVDAodm9pZCkKIHsKICAgICBUMCAmPSB+VDE7CkBAIC05MjEsMTIgKzcwOSw2IEBACiB9CiAK ICNpZmRlZiBUQVJHRVRfU1BBUkM2NAotdm9pZCBPUFBST1RPIG9wX211bHhfVDFfVDAodm9pZCkK LXsKLSAgICBUMCAqPSBUMTsKLSAgICBGT1JDRV9SRVQoKTsKLX0KLQogdm9pZCBPUFBST1RPIG9w X3VkaXZ4X1QxX1QwKHZvaWQpCiB7CiAgICAgaWYgKFQxID09IDApIHsKQEAgLTk3Miw0OCArNzU0 LDYgQEAKICAgICBGT1JDRV9SRVQoKTsKIH0KIAotdm9pZCBPUFBST1RPIG9wX3NsbCh2b2lkKQot ewotICAgIFQwIDw8PSAoVDEgJiAweDFmKTsKLX0KLQotI2lmZGVmIFRBUkdFVF9TUEFSQzY0Ci12 b2lkIE9QUFJPVE8gb3Bfc2xseCh2b2lkKQotewotICAgIFQwIDw8PSAoVDEgJiAweDNmKTsKLX0K LQotdm9pZCBPUFBST1RPIG9wX3NybCh2b2lkKQotewotICAgIFQwID0gKFQwICYgMHhmZmZmZmZm ZikgPj4gKFQxICYgMHgxZik7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9zcmx4KHZvaWQpCi17Ci0g ICAgVDAgPj49IChUMSAmIDB4M2YpOwotfQotCi12b2lkIE9QUFJPVE8gb3Bfc3JhKHZvaWQpCi17 Ci0gICAgVDAgPSAoKGludDMyX3QpIChUMCAmIDB4ZmZmZmZmZmYpKSA+PiAoVDEgJiAweDFmKTsK LX0KLQotdm9pZCBPUFBST1RPIG9wX3NyYXgodm9pZCkKLXsKLSAgICBUMCA9ICgoaW50NjRfdCkg VDApID4+IChUMSAmIDB4M2YpOwotfQotI2Vsc2UKLXZvaWQgT1BQUk9UTyBvcF9zcmwodm9pZCkK LXsKLSAgICBUMCA+Pj0gKFQxICYgMHgxZik7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9zcmEodm9p ZCkKLXsKLSAgICBUMCA9ICgoaW50MzJfdCkgVDApID4+IChUMSAmIDB4MWYpOwotfQotI2VuZGlm Ci0KIC8qIExvYWQgYW5kIHN0b3JlICovCiAjZGVmaW5lIE1FTVNVRkZJWCBfcmF3CiAjaW5jbHVk ZSAib3BfbWVtLmgiCkBAIC0xMDQyLDMyICs3ODIsNiBAQAogfQogCiAjaWZuZGVmIFRBUkdFVF9T UEFSQzY0Ci12b2lkIE9QUFJPVE8gb3BfcmRwc3Iodm9pZCkKLXsKLSAgICBkb19yZHBzcigpOwot fQotCi12b2lkIE9QUFJPVE8gb3Bfd3Jwc3Iodm9pZCkKLXsKLSAgICBkb193cnBzcigpOwotICAg IEZPUkNFX1JFVCgpOwotfQotCi12b2lkIE9QUFJPVE8gb3Bfd3J3aW0odm9pZCkKLXsKLSNpZiBO V0lORE9XUyA9PSAzMgotICAgIGVudi0+d2ltID0gVDA7Ci0jZWxzZQotICAgIGVudi0+d2ltID0g VDAgJiAoKDEgPDwgTldJTkRPV1MpIC0gMSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBPUFBST1RPIG9w X3JldHQodm9pZCkKLXsKLSAgICBoZWxwZXJfcmV0dCgpOwotICAgIEZPUkNFX1JFVCgpOwotfQot CiAvKiBYWFg6IHVzZSBhbm90aGVyIHBvaW50ZXIgZm9yICVpTiByZWdpc3RlcnMgdG8gYXZvaWQg c2xvdyB3cmFwcGluZwogICAgaGFuZGxpbmcgPyAqLwogdm9pZCBPUFBST1RPIG9wX3NhdmUodm9p ZCkKQEAgLTExNzgsMTYgKzg5Miw2IEBACiAgICAgZW52LT50dFtlbnYtPnRsXSA9IFQwOwogfQog Ci12b2lkIE9QUFJPVE8gb3BfcmRwc3RhdGUodm9pZCkKLXsKLSAgICBUMCA9IGVudi0+cHN0YXRl OwotfQotCi12b2lkIE9QUFJPVE8gb3Bfd3Jwc3RhdGUodm9pZCkKLXsKLSAgICBkb193cnBzdGF0 ZSgpOwotfQotCiAvLyBDV1AgaGFuZGxpbmcgaXMgcmV2ZXJzZWQgaW4gVjksIGJ1dCB3ZSBzdGls bCB1c2UgdGhlIFY4IHJlZ2lzdGVyCiAvLyBvcmRlci4KIHZvaWQgT1BQUk9UTyBvcF9yZGN3cCh2 b2lkKQpAQCAtMTI0NywyMiArOTUxLDYgQEAKICAgICBGT1JDRV9SRVQoKTsKIH0KIAotdm9pZCBP UFBST1RPIG9wX3RyYXBfVDAodm9pZCkKLXsKLSAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IFRU X1RSQVAgKyAoVDAgJiAweDdmKTsKLSAgICBjcHVfbG9vcF9leGl0KCk7Ci0gICAgRk9SQ0VfUkVU KCk7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF90cmFwY2NfVDAodm9pZCkKLXsKLSAgICBpZiAoVDIp IHsKLSAgICAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBUVF9UUkFQICsgKFQwICYgMHg3Zik7 Ci0gICAgICAgIGNwdV9sb29wX2V4aXQoKTsKLSAgICB9Ci0gICAgRk9SQ0VfUkVUKCk7Ci19Ci0K IHZvaWQgT1BQUk9UTyBvcF9mcGV4Y2VwdGlvbl9pbSh2b2lkKQogewogICAgIGVudi0+ZXhjZXB0 aW9uX2luZGV4ID0gVFRfRlBfRVhDUDsKQEAgLTEyNzIsMTEgKzk2MCw2IEBACiAgICAgRk9SQ0Vf UkVUKCk7CiB9CiAKLXZvaWQgT1BQUk9UTyBvcF9kZWJ1Zyh2b2lkKQotewotICAgIGhlbHBlcl9k ZWJ1ZygpOwotfQotCiB2b2lkIE9QUFJPVE8gb3BfZXZhbF9iYSh2b2lkKQogewogICAgIFQyID0g MTsKQEAgLTE0OTksMzMgKzExODIsOCBAQAogewogICAgIFQyID0gKChpbnQ2NF90KVQwID49IDAp OwogfQotCi12b2lkIE9QUFJPVE8gb3Bfam1wX2ltNjQodm9pZCkKLXsKLSAgICBlbnYtPnBjID0g UEFSQU1RMTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX21vdnFfbnBjX2ltNjQodm9pZCkKLXsKLSAg ICBlbnYtPm5wYyA9IFBBUkFNUTE7Ci19CiAjZW5kaWYKIAotdm9pZCBPUFBST1RPIG9wX2ptcF9p bSh2b2lkKQotewotICAgIGVudi0+cGMgPSAodWludDMyX3QpUEFSQU0xOwotfQotCi12b2lkIE9Q UFJPVE8gb3BfbW92bF9ucGNfaW0odm9pZCkKLXsKLSAgICBlbnYtPm5wYyA9ICh1aW50MzJfdClQ QVJBTTE7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3ZsX25wY19UMCh2b2lkKQotewotICAgIGVu di0+bnBjID0gVDA7Ci19Ci0KIHZvaWQgT1BQUk9UTyBvcF9tb3ZfcGNfbnBjKHZvaWQpCiB7CiAg ICAgZW52LT5wYyA9IGVudi0+bnBjOwpAQCAtMTU1NiwxMSArMTIxNCw2IEBACiAgICAgRk9SQ0Vf UkVUKCk7CiB9CiAKLXZvaWQgT1BQUk9UTyBvcF9mbHVzaF9UMCh2b2lkKQotewotICAgIGhlbHBl cl9mbHVzaChUMCk7Ci19Ci0KIHZvaWQgT1BQUk9UTyBvcF9jbGVhcl9pZWVlX2V4Y3BfYW5kX0ZU VCh2b2lkKQogewogICAgIGVudi0+ZnNyICY9IH4oRlNSX0ZUVF9NQVNLIHwgRlNSX0NFWENfTUFT Syk7OwpAQCAtMTk5MywyMTAgKzE2NDYsNiBAQAogICAgICAgICBlbnYtPm90aGVyd2luLS07CiAg ICAgRk9SQ0VfUkVUKCk7CiB9Ci0KLXZvaWQgT1BQUk9UTyBvcF9wb3BjKHZvaWQpCi17Ci0gICAg ZG9fcG9wYygpOwotfQotCi12b2lkIE9QUFJPVE8gb3BfZG9uZSh2b2lkKQotewotICAgIGRvX2Rv bmUoKTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX3JldHJ5KHZvaWQpCi17Ci0gICAgZG9fcmV0cnko KTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX3Npcih2b2lkKQotewotICAgIFQwID0gMDsgIC8vIFhY WAotfQotCi12b2lkIE9QUFJPVE8gb3BfbGRfYXNpX3JlZygpCi17Ci0gICAgVDAgKz0gUEFSQU0x OwotICAgIGhlbHBlcl9sZF9hc2koZW52LT5hc2ksIFBBUkFNMiwgUEFSQU0zKTsKLX0KLQotdm9p ZCBPUFBST1RPIG9wX3N0X2FzaV9yZWcoKQotewotICAgIFQwICs9IFBBUkFNMTsKLSAgICBoZWxw ZXJfc3RfYXNpKGVudi0+YXNpLCBQQVJBTTIpOwotfQotCi12b2lkIE9QUFJPVE8gb3BfbGRmX2Fz aV9yZWcoKQotewotICAgIFQwICs9IFBBUkFNMTsKLSAgICBoZWxwZXJfbGRmX2FzaShlbnYtPmFz aSwgUEFSQU0yLCBQQVJBTTMpOwotfQotCi12b2lkIE9QUFJPVE8gb3Bfc3RmX2FzaV9yZWcoKQot ewotICAgIFQwICs9IFBBUkFNMTsKLSAgICBoZWxwZXJfc3RmX2FzaShlbnYtPmFzaSwgUEFSQU0y LCBQQVJBTTMpOwotfQotCi12b2lkIE9QUFJPVE8gb3BfbGRmX2FzaSgpCi17Ci0gICAgaGVscGVy X2xkZl9hc2koUEFSQU0xLCBQQVJBTTIsIFBBUkFNMyk7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9z dGZfYXNpKCkKLXsKLSAgICBoZWxwZXJfc3RmX2FzaShQQVJBTTEsIFBBUkFNMiwgUEFSQU0zKTsK LX0KLQotdm9pZCBPUFBST1RPIG9wX2xkc3R1Yl9hc2lfcmVnKCkgICAgICAgICAgICAgLyogWFhY OiBzaG91bGQgYmUgYXRvbWljYWxseSAqLwotewotICAgIHRhcmdldF91bG9uZyB0bXA7Ci0KLSAg ICBUMCArPSBQQVJBTTE7Ci0gICAgaGVscGVyX2xkX2FzaShlbnYtPmFzaSwgMSwgMCk7Ci0gICAg dG1wID0gVDE7Ci0gICAgVDEgPSAweGZmOwotICAgIGhlbHBlcl9zdF9hc2koZW52LT5hc2ksIDEp OwotICAgIFQxID0gdG1wOwotfQotCi12b2lkIE9QUFJPVE8gb3Bfc3dhcF9hc2lfcmVnKCkgICAg ICAgICAgICAgICAvKiBYWFg6IHNob3VsZCBiZSBhdG9taWNhbGx5ICovCi17Ci0gICAgdGFyZ2V0 X3Vsb25nIHRtcDEsIHRtcDI7Ci0KLSAgICBUMCArPSBQQVJBTTE7Ci0gICAgdG1wMSA9IFQxOwot ICAgIGhlbHBlcl9sZF9hc2koZW52LT5hc2ksIDQsIDApOwotICAgIHRtcDIgPSBUMTsKLSAgICBU MSA9IHRtcDE7Ci0gICAgaGVscGVyX3N0X2FzaShlbnYtPmFzaSwgNCk7Ci0gICAgVDEgPSB0bXAy OwotfQotCi12b2lkIE9QUFJPVE8gb3BfbGRkYV9hc2koKQotewotICAgIGhlbHBlcl9sZF9hc2ko UEFSQU0xLCA4LCAwKTsKLSAgICBUMCA9IFQxICYgMHhmZmZmZmZmZlVMOwotICAgIFQxID4+PSAz MjsKLX0KLQotdm9pZCBPUFBST1RPIG9wX2xkZGFfYXNpX3JlZygpCi17Ci0gICAgVDAgKz0gUEFS QU0xOwotICAgIGhlbHBlcl9sZF9hc2koZW52LT5hc2ksIDgsIDApOwotICAgIFQwID0gVDEgJiAw eGZmZmZmZmZmVUw7Ci0gICAgVDEgPj49IDMyOwotfQotCi12b2lkIE9QUFJPVE8gb3Bfc3RkYV9h c2koKQotewotICAgIFQxIDw8PSAzMjsKLSAgICBUMSArPSBUMiAmIDB4ZmZmZmZmZmZVTDsKLSAg ICBoZWxwZXJfc3RfYXNpKFBBUkFNMSwgOCk7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9zdGRhX2Fz aV9yZWcoKQotewotICAgIFQwICs9IFBBUkFNMTsKLSAgICBUMSA8PD0gMzI7Ci0gICAgVDEgKz0g VDIgJiAweGZmZmZmZmZmVUw7Ci0gICAgaGVscGVyX3N0X2FzaShlbnYtPmFzaSwgOCk7Ci19Ci0K LXZvaWQgT1BQUk9UTyBvcF9jYXNfYXNpKCkgICAgICAgICAgICAgICAgICAgIC8qIFhYWDogc2hv dWxkIGJlIGF0b21pY2FsbHkgKi8KLXsKLSAgICB0YXJnZXRfdWxvbmcgdG1wOwotCi0gICAgdG1w ID0gVDEgJiAweGZmZmZmZmZmVUw7Ci0gICAgaGVscGVyX2xkX2FzaShQQVJBTTEsIDQsIDApOwot ICAgIGlmICh0bXAgPT0gVDEpIHsKLSAgICAgICAgdG1wID0gVDE7Ci0gICAgICAgIFQxID0gVDIg JiAweGZmZmZmZmZmVUw7Ci0gICAgICAgIGhlbHBlcl9zdF9hc2koUEFSQU0xLCA0KTsKLSAgICAg ICAgVDEgPSB0bXA7Ci0gICAgfQotICAgIFQxICY9IDB4ZmZmZmZmZmZVTDsKLX0KLQotdm9pZCBP UFBST1RPIG9wX2Nhc19hc2lfcmVnKCkgICAgICAgICAgICAgICAgLyogWFhYOiBzaG91bGQgYmUg YXRvbWljYWxseSAqLwotewotICAgIHRhcmdldF91bG9uZyB0bXA7Ci0KLSAgICBUMCArPSBQQVJB TTE7Ci0gICAgdG1wID0gVDEgJiAweGZmZmZmZmZmVUw7Ci0gICAgaGVscGVyX2xkX2FzaShlbnYt PmFzaSwgNCwgMCk7Ci0gICAgaWYgKHRtcCA9PSBUMSkgewotICAgICAgICB0bXAgPSBUMTsKLSAg ICAgICAgVDEgPSBUMiAmIDB4ZmZmZmZmZmZVTDsKLSAgICAgICAgaGVscGVyX3N0X2FzaShlbnYt PmFzaSwgNCk7Ci0gICAgICAgIFQxID0gdG1wOwotICAgIH0KLSAgICBUMSAmPSAweGZmZmZmZmZm VUw7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9jYXN4X2FzaSgpICAgICAgICAgICAgICAgICAgIC8q IFhYWDogc2hvdWxkIGJlIGF0b21pY2FsbHkgKi8KLXsKLSAgICB0YXJnZXRfdWxvbmcgdG1wOwot Ci0gICAgdG1wID0gVDE7Ci0gICAgaGVscGVyX2xkX2FzaShQQVJBTTEsIDgsIDApOwotICAgIGlm ICh0bXAgPT0gVDEpIHsKLSAgICAgICAgdG1wID0gVDE7Ci0gICAgICAgIFQxID0gVDI7Ci0gICAg ICAgIGhlbHBlcl9zdF9hc2koUEFSQU0xLCA4KTsKLSAgICAgICAgVDEgPSB0bXA7Ci0gICAgfQot fQotCi12b2lkIE9QUFJPVE8gb3BfY2FzeF9hc2lfcmVnKCkgICAgICAgICAgICAgICAvKiBYWFg6 IHNob3VsZCBiZSBhdG9taWNhbGx5ICovCi17Ci0gICAgdGFyZ2V0X3Vsb25nIHRtcDsKLQotICAg IFQwICs9IFBBUkFNMTsKLSAgICB0bXAgPSBUMTsKLSAgICBoZWxwZXJfbGRfYXNpKGVudi0+YXNp LCA4LCAwKTsKLSAgICBpZiAodG1wID09IFQxKSB7Ci0gICAgICAgIHRtcCA9IFQxOwotICAgICAg ICBUMSA9IFQyOwotICAgICAgICBoZWxwZXJfc3RfYXNpKGVudi0+YXNpLCA4KTsKLSAgICAgICAg VDEgPSB0bXA7Ci0gICAgfQotfQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChDT05GSUdfVVNFUl9P TkxZKSB8fCBkZWZpbmVkKFRBUkdFVF9TUEFSQzY0KQotdm9pZCBPUFBST1RPIG9wX2xkX2FzaSgp Ci17Ci0gICAgaGVscGVyX2xkX2FzaShQQVJBTTEsIFBBUkFNMiwgUEFSQU0zKTsKLX0KLQotdm9p ZCBPUFBST1RPIG9wX3N0X2FzaSgpCi17Ci0gICAgaGVscGVyX3N0X2FzaShQQVJBTTEsIFBBUkFN Mik7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9sZHN0dWJfYXNpKCkgICAgICAgICAgICAgICAgIC8q IFhYWDogc2hvdWxkIGJlIGF0b21pY2FsbHkgKi8KLXsKLSAgICB0YXJnZXRfdWxvbmcgdG1wOwot Ci0gICAgaGVscGVyX2xkX2FzaShQQVJBTTEsIDEsIDApOwotICAgIHRtcCA9IFQxOwotICAgIFQx ID0gMHhmZjsKLSAgICBoZWxwZXJfc3RfYXNpKFBBUkFNMSwgMSk7Ci0gICAgVDEgPSB0bXA7Ci19 Ci0KLXZvaWQgT1BQUk9UTyBvcF9zd2FwX2FzaSgpICAgICAgICAgICAgICAgICAgIC8qIFhYWDog c2hvdWxkIGJlIGF0b21pY2FsbHkgKi8KLXsKLSAgICB0YXJnZXRfdWxvbmcgdG1wMSwgdG1wMjsK LQotICAgIHRtcDEgPSBUMTsKLSAgICBoZWxwZXJfbGRfYXNpKFBBUkFNMSwgNCwgMCk7Ci0gICAg dG1wMiA9IFQxOwotICAgIFQxID0gdG1wMTsKLSAgICBoZWxwZXJfc3RfYXNpKFBBUkFNMSwgNCk7 Ci0gICAgVDEgPSB0bXAyOwotfQogI2VuZGlmCiAKICNpZmRlZiBUQVJHRVRfU1BBUkM2NApJbmRl eDogcWVtdS90YXJnZXQtc3BhcmMvb3BfdGVtcGxhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9y aWcvdGFyZ2V0LXNwYXJjL29wX3RlbXBsYXRlLmgJMjAwOC0wMi0yMiAxNjoxNjoyMS4wMDAwMDAw MDAgKzAwMDAKKysrIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MApAQCAtMSw0OCArMCwwIEBACi0vKgotICogIFNQQVJDIG1pY3JvIG9wZXJhdGlvbnMgKHRlbXBs YXRlcyBmb3IgdmFyaW91cyByZWdpc3RlciByZWxhdGVkCi0gKiAgb3BlcmF0aW9ucykKLSAqCi0g KiAgQ29weXJpZ2h0IChjKSAyMDAzIEZhYnJpY2UgQmVsbGFyZAotICoKLSAqIFRoaXMgbGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V Ci0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotdm9p ZCBPUFBST1RPIGdsdWUob3BfbW92bF9UMF8sIFJFR05BTUUpKHZvaWQpCi17Ci0gICAgVDAgPSBS RUc7Ci19Ci0KLXZvaWQgT1BQUk9UTyBnbHVlKG9wX21vdmxfVDFfLCBSRUdOQU1FKSh2b2lkKQot ewotICAgIFQxID0gUkVHOwotfQotCi12b2lkIE9QUFJPVE8gZ2x1ZShvcF9tb3ZsX1QyXywgUkVH TkFNRSkodm9pZCkKLXsKLSAgICBUMiA9IFJFRzsKLX0KLQotdm9pZCBPUFBST1RPIGdsdWUoZ2x1 ZShvcF9tb3ZsXywgUkVHTkFNRSksIF9UMCkodm9pZCkKLXsKLSAgICBSRUcgPSBUMDsKLX0KLQot dm9pZCBPUFBST1RPIGdsdWUoZ2x1ZShvcF9tb3ZsXywgUkVHTkFNRSksIF9UMSkodm9pZCkKLXsK LSAgICBSRUcgPSBUMTsKLX0KLQotI3VuZGVmIFJFRwotI3VuZGVmIFJFR05BTUUKSW5kZXg6IHFl bXUvdGFyZ2V0LXNwYXJjL2hlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS90YXJnZXQtc3BhcmMvaGVscGVy LmgJMjAwOC0wMi0yMyAxNTozNDoxOC4wMDAwMDAwMDAgKzAwMDAKQEAgLTAsMCArMSwzMiBAQAor I2RlZmluZSBUQ0dfSEVMUEVSX1BST1RPCisKKyNpZm5kZWYgVEFSR0VUX1NQQVJDNjQKK3ZvaWQg VENHX0hFTFBFUl9QUk9UTyBoZWxwZXJfcmV0dCh2b2lkKTsKK3ZvaWQgVENHX0hFTFBFUl9QUk9U TyBoZWxwZXJfd3Jwc3IodGFyZ2V0X3Vsb25nIG5ld19wc3IpOwordGFyZ2V0X3Vsb25nIFRDR19I RUxQRVJfUFJPVE8gaGVscGVyX3JkcHNyKHZvaWQpOworI2Vsc2UKK3ZvaWQgVENHX0hFTFBFUl9Q Uk9UTyBoZWxwZXJfd3Jwc3RhdGUodGFyZ2V0X3Vsb25nIG5ld19zdGF0ZSk7Cit2b2lkIFRDR19I RUxQRVJfUFJPVE8gaGVscGVyX2RvbmUodm9pZCk7Cit2b2lkIFRDR19IRUxQRVJfUFJPVE8gaGVs cGVyX3JldHJ5KHZvaWQpOwordGFyZ2V0X3Vsb25nIFRDR19IRUxQRVJfUFJPVE8gaGVscGVyX3Bv cGModGFyZ2V0X3Vsb25nIHZhbCk7Cit2b2lkIFRDR19IRUxQRVJfUFJPVE8gaGVscGVyX2xkZl9h c2kodGFyZ2V0X3Vsb25nIGFkZHIsIGludCBhc2ksIGludCBzaXplLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCByZCk7Cit2b2lkIFRDR19IRUxQRVJfUFJPVE8gaGVs cGVyX3N0Zl9hc2kodGFyZ2V0X3Vsb25nIGFkZHIsIGludCBhc2ksIGludCBzaXplLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZCk7Cit0YXJnZXRfdWxvbmcgVENH X0hFTFBFUl9QUk9UTworaGVscGVyX2Nhc19hc2kodGFyZ2V0X3Vsb25nIGFkZHIsIHRhcmdldF91 bG9uZyB2YWwxLAorICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHZhbDIsIHVpbnQzMl90IGFz aSk7Cit0YXJnZXRfdWxvbmcgIFRDR19IRUxQRVJfUFJPVE8KK2hlbHBlcl9jYXN4X2FzaSh0YXJn ZXRfdWxvbmcgYWRkciwgdGFyZ2V0X3Vsb25nIHZhbDEsCisgICAgICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIHZhbDIsIHVpbnQzMl90IGFzaSk7CisjZW5kaWYKK3ZvaWQgVENHX0hFTFBFUl9QUk9U TyBoZWxwZXJfdHJhcCh0YXJnZXRfdWxvbmcgbmJfdHJhcCk7Cit2b2lkIFRDR19IRUxQRVJfUFJP VE8gaGVscGVyX3RyYXBjYyh0YXJnZXRfdWxvbmcgbmJfdHJhcCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBkb190cmFwKTsKK3ZvaWQgVENHX0hFTFBF Ul9QUk9UTyBoZWxwZXJfZGVidWcodm9pZCk7Cit2b2lkIFRDR19IRUxQRVJfUFJPVE8gaGVscGVy X2ZsdXNoKHRhcmdldF91bG9uZyBhZGRyKTsKK3VpbnQ2NF90IFRDR19IRUxQRVJfUFJPVE8gaGVs cGVyX3BhY2s2NCh0YXJnZXRfdWxvbmcgaGlnaCwgdGFyZ2V0X3Vsb25nIGxvdyk7Cit1aW50NjRf dCBUQ0dfSEVMUEVSX1BST1RPIGhlbHBlcl9sZF9hc2kodGFyZ2V0X3Vsb25nIGFkZHIsIGludCBh c2ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGlu dCBzaWduKTsKK3ZvaWQgVENHX0hFTFBFUl9QUk9UTyBoZWxwZXJfc3RfYXNpKHRhcmdldF91bG9u ZyBhZGRyLCB1aW50NjRfdCB2YWwsIGludCBhc2ksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgc2l6ZSk7CkluZGV4OiBxZW11L3RhcmdldC1zcGFyYy9vcF9oZWxwZXIu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGFyZ2V0LXNwYXJjL29wX2hlbHBlci5jCTIwMDgt MDItMjIgMTg6MzA6NDYuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3RhcmdldC1zcGFyYy9vcF9o ZWxwZXIuYwkyMDA4LTAyLTIzIDE2OjAxOjQ1LjAwMDAwMDAwMCArMDAwMApAQCAtMSw3ICsxLDgg QEAKICNpbmNsdWRlICJleGVjLmgiCiAjaW5jbHVkZSAiaG9zdC11dGlscy5oIgorI2luY2x1ZGUg ImhlbHBlci5oIgogCi0vLyNkZWZpbmUgREVCVUdfUENBTEwKKyNkZWZpbmUgREVCVUdfUENBTEwK IC8vI2RlZmluZSBERUJVR19NTVUKIC8vI2RlZmluZSBERUJVR19NWENDCiAvLyNkZWZpbmUgREVC VUdfVU5BTElHTkVECkBAIC0zNSwzNSArMzYsNDcgQEAKICAgICBjcHVfbG9vcF9leGl0KCk7CiB9 CiAKLXZvaWQgY2hlY2tfaWVlZV9leGNlcHRpb25zKCkKK3ZvaWQgaGVscGVyX3RyYXAodGFyZ2V0 X3Vsb25nIG5iX3RyYXApCiB7Ci0gICAgIFQwID0gZ2V0X2Zsb2F0X2V4Y2VwdGlvbl9mbGFncygm ZW52LT5mcF9zdGF0dXMpOwotICAgICBpZiAoVDApCi0gICAgIHsKKyAgICBlbnYtPmV4Y2VwdGlv bl9pbmRleCA9IFRUX1RSQVAgKyAobmJfdHJhcCAmIDB4N2YpOworICAgIGNwdV9sb29wX2V4aXQo KTsKK30KKwordm9pZCBoZWxwZXJfdHJhcGNjKHRhcmdldF91bG9uZyBuYl90cmFwLCB0YXJnZXRf dWxvbmcgZG9fdHJhcCkKK3sKKyAgICBpZiAoZG9fdHJhcCkgeworICAgICAgICBlbnYtPmV4Y2Vw dGlvbl9pbmRleCA9IFRUX1RSQVAgKyAobmJfdHJhcCAmIDB4N2YpOworICAgICAgICBjcHVfbG9v cF9leGl0KCk7CisgICAgfQorfQorCit2b2lkIGNoZWNrX2llZWVfZXhjZXB0aW9ucyh2b2lkKQor eworICAgIHRhcmdldF91bG9uZyBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBnZXRfZmxvYXRfZXhj ZXB0aW9uX2ZsYWdzKCZlbnYtPmZwX3N0YXR1cyk7CisgICAgaWYgKHN0YXR1cykgewogICAgICAg ICAvKiBDb3B5IElFRUUgNzU0IGZsYWdzIGludG8gRlNSICovCi0gICAgICAgIGlmIChUMCAmIGZs b2F0X2ZsYWdfaW52YWxpZCkKKyAgICAgICAgaWYgKHN0YXR1cyAmIGZsb2F0X2ZsYWdfaW52YWxp ZCkKICAgICAgICAgICAgIGVudi0+ZnNyIHw9IEZTUl9OVkM7Ci0gICAgICAgIGlmIChUMCAmIGZs b2F0X2ZsYWdfb3ZlcmZsb3cpCisgICAgICAgIGlmIChzdGF0dXMgJiBmbG9hdF9mbGFnX292ZXJm bG93KQogICAgICAgICAgICAgZW52LT5mc3IgfD0gRlNSX09GQzsKLSAgICAgICAgaWYgKFQwICYg ZmxvYXRfZmxhZ191bmRlcmZsb3cpCisgICAgICAgIGlmIChzdGF0dXMgJiBmbG9hdF9mbGFnX3Vu ZGVyZmxvdykKICAgICAgICAgICAgIGVudi0+ZnNyIHw9IEZTUl9VRkM7Ci0gICAgICAgIGlmIChU MCAmIGZsb2F0X2ZsYWdfZGl2Ynl6ZXJvKQorICAgICAgICBpZiAoc3RhdHVzICYgZmxvYXRfZmxh Z19kaXZieXplcm8pCiAgICAgICAgICAgICBlbnYtPmZzciB8PSBGU1JfRFpDOwotICAgICAgICBp ZiAoVDAgJiBmbG9hdF9mbGFnX2luZXhhY3QpCisgICAgICAgIGlmIChzdGF0dXMgJiBmbG9hdF9m bGFnX2luZXhhY3QpCiAgICAgICAgICAgICBlbnYtPmZzciB8PSBGU1JfTlhDOwogCi0gICAgICAg IGlmICgoZW52LT5mc3IgJiBGU1JfQ0VYQ19NQVNLKSAmICgoZW52LT5mc3IgJiBGU1JfVEVNX01B U0spID4+IDIzKSkKLSAgICAgICAgeworICAgICAgICBpZiAoKGVudi0+ZnNyICYgRlNSX0NFWENf TUFTSykgJiAoKGVudi0+ZnNyICYgRlNSX1RFTV9NQVNLKSA+PiAyMykpIHsKICAgICAgICAgICAg IC8qIFVubWFza2VkIGV4Y2VwdGlvbiwgZ2VuZXJhdGUgYSB0cmFwICovCiAgICAgICAgICAgICBl bnYtPmZzciB8PSBGU1JfRlRUX0lFRUVfRVhDUDsKICAgICAgICAgICAgIHJhaXNlX2V4Y2VwdGlv bihUVF9GUF9FWENQKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKKyAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIEFjY3VtdWxhdGUgZXhjZXB0aW9ucyAqLwogICAg ICAgICAgICAgZW52LT5mc3IgfD0gKGVudi0+ZnNyICYgRlNSX0NFWENfTUFTSykgPDwgNTsKICAg ICAgICAgfQotICAgICB9CisgICAgfQogfQogCiAjaWZkZWYgVVNFX0lOVF9UT19GTE9BVF9IRUxQ RVJTCkBAIC0xNTcsMTIgKzE3MCwxNCBAQAogI2RlZmluZSBHRU5fRkNNUChuYW1lLCBzaXplLCBy ZWcxLCByZWcyLCBGUywgVFJBUCkgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2x1 ZShkb18sIG5hbWUpICh2b2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0YXJnZXRfdWxvbmcgbmV3X2ZzcjsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICAgICAgICBlbnYtPmZzciAmPSB+KChGU1JfRkNDMSB8IEZTUl9GQ0MwKSA8PCBGUyk7ICAg ICAgICAgICAgICAgICAgICAgXAogICAgICAgICBzd2l0Y2ggKGdsdWUoc2l6ZSwgX2NvbXBhcmUp IChyZWcxLCByZWcyLCAmZW52LT5mcF9zdGF0dXMpKSB7ICAgXAogICAgICAgICBjYXNlIGZsb2F0 X3JlbGF0aW9uX3Vub3JkZXJlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICAgICAgVDAgPSAoRlNSX0ZDQzEgfCBGU1JfRkNDMCkgPDwgRlM7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgbmV3X2ZzciA9IChGU1JfRkNDMSB8IEZTUl9G Q0MwKSA8PCBGUzsgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgaWYgKChlbnYt PmZzciAmIEZTUl9OVk0pIHx8IFRSQVApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgICAgICAgICAgIGVudi0+ZnNyIHw9IFQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVudi0+ZnNyIHw9IG5ld19mc3I7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgIGVudi0+ZnNy IHw9IEZTUl9OVkM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAg ICAgICAgICAgIGVudi0+ZnNyIHw9IEZTUl9GVFRfSUVFRV9FWENQOyAgICAgICAgICAgICAgICAg ICAgICAgICAgXAogICAgICAgICAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbihUVF9GUF9FWENQKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTcxLDE2ICsxODYsMTYgQEAKICAgICAg ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgY2FzZSBmbG9hdF9yZWxhdGlv bl9sZXNzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg ICAgIFQwID0gRlNSX0ZDQzAgPDwgRlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgIG5ld19mc3IgPSBGU1JfRkNDMCA8PCBGUzsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgY2Fz ZSBmbG9hdF9yZWxhdGlvbl9ncmVhdGVyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgIFQwID0gRlNSX0ZDQzEgPDwgRlM7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIG5ld19mc3IgPSBGU1JfRkNDMSA8 PCBGUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGJy ZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIFQwID0gMDsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIG5ld19m c3IgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW52LT5mc3IgfD0g VDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgZW52LT5mc3IgfD0gbmV3X2ZzcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICB9CiAKIEdFTl9GQ01QKGZjbXBzLCBmbG9hdDMyLCBGVDAsIEZU MSwgMCwgMCk7CkBAIC0yMjIsMTAgKzIzNyw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWZuZGVm IFRBUkdFVF9TUEFSQzY0Ci0jaWZuZGVmIENPTkZJR19VU0VSX09OTFkKLQotI2lmZGVmIERFQlVH X01YQ0MKKyNpZiAhZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkgJiYgIWRlZmluZWQoQ09ORklHX1VT RVJfT05MWSkgJiYgZGVmaW5lZChERUJVR19NWENDKQogc3RhdGljIHZvaWQgZHVtcF9teGNjKENQ VVN0YXRlICplbnYpCiB7CiAgICAgcHJpbnRmKCJteGNjZGF0YTogJTAxNmxseCAlMDE2bGx4ICUw MTZsbHggJTAxNmxseFxuIiwKQEAgLTIzNyw3NCArMjQ5LDc2IEBACiB9CiAjZW5kaWYKIAotI2lm ZGVmIERFQlVHX0FTSQotc3RhdGljIHZvaWQgZHVtcF9hc2koY29uc3QgY2hhciAqIHR4dCwgdWlu dDMyX3QgYWRkciwgaW50IGFzaSwgaW50IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCByMSwgdWludDMyX3QgcjIpCisjaWYgKGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpIHx8ICFk ZWZpbmVkKENPTkZJR19VU0VSX09OTFkpKSBcCisgICAgJiYgZGVmaW5lZChERUJVR19BU0kpCitz dGF0aWMgdm9pZCBkdW1wX2FzaShjb25zdCBjaGFyICp0eHQsIHRhcmdldF91bG9uZyBhZGRyLCBp bnQgYXNpLCBpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHIxKQogewog ICAgIHN3aXRjaCAoc2l6ZSkKICAgICB7CiAgICAgY2FzZSAxOgotICAgICAgICBEUFJJTlRGX0FT SSgiJXMgJTA4eCBhc2kgMHglMDJ4ID0gJTAyeFxuIiwgdHh0LCBhZGRyLCBhc2ksIHIxICYgMHhm Zik7CisgICAgICAgIERQUklOVEZfQVNJKCIlcyAiVEFSR0VUX0ZNVF9seCAiIGFzaSAweCUwMngg PSAlMDIiIFBSSXg2NCAiXG4iLCB0eHQsCisgICAgICAgICAgICAgICAgICAgIGFkZHIsIGFzaSwg cjEgJiAweGZmKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBEUFJJTlRG X0FTSSgiJXMgJTA4eCBhc2kgMHglMDJ4ID0gJTA0eFxuIiwgdHh0LCBhZGRyLCBhc2ksIHIxICYg MHhmZmZmKTsKKyAgICAgICAgRFBSSU5URl9BU0koIiVzICJUQVJHRVRfRk1UX2x4ICIgYXNpIDB4 JTAyeCA9ICUwNCIgUFJJeDY0ICJcbiIsIHR4dCwKKyAgICAgICAgICAgICAgICAgICAgYWRkciwg YXNpLCByMSAmIDB4ZmZmZik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAg RFBSSU5URl9BU0koIiVzICUwOHggYXNpIDB4JTAyeCA9ICUwOHhcbiIsIHR4dCwgYWRkciwgYXNp LCByMSk7CisgICAgICAgIERQUklOVEZfQVNJKCIlcyAiVEFSR0VUX0ZNVF9seCAiIGFzaSAweCUw MnggPSAlMDgiIFBSSXg2NCAiXG4iLCB0eHQsCisgICAgICAgICAgICAgICAgICAgIGFkZHIsIGFz aSwgcjEgJiAweGZmZmZmZmZmKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA4OgotICAgICAg ICBEUFJJTlRGX0FTSSgiJXMgJTA4eCBhc2kgMHglMDJ4ID0gJTAxNmxseFxuIiwgdHh0LCBhZGRy LCBhc2ksCi0gICAgICAgICAgICAgICAgICAgIHIyIHwgKCh1aW50NjRfdClyMSA8PCAzMikpOwor ICAgICAgICBEUFJJTlRGX0FTSSgiJXMgIlRBUkdFVF9GTVRfbHggIiBhc2kgMHglMDJ4ID0gJTAx NiIgUFJJeDY0ICJcbiIsIHR4dCwKKyAgICAgICAgICAgICAgICAgICAgYWRkciwgYXNpLCByMSk7 CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KICNlbmRpZgogCi12b2lkIGhlbHBlcl9sZF9hc2ko aW50IGFzaSwgaW50IHNpemUsIGludCBzaWduKQorI2lmbmRlZiBUQVJHRVRfU1BBUkM2NAorI2lm bmRlZiBDT05GSUdfVVNFUl9PTkxZCit1aW50NjRfdCBoZWxwZXJfbGRfYXNpKHRhcmdldF91bG9u ZyBhZGRyLCBpbnQgYXNpLCBpbnQgc2l6ZSwgaW50IHNpZ24pCiB7Ci0gICAgdWludDMyX3QgcmV0 ID0gMDsKLSAgICB1aW50NjRfdCB0bXA7CisgICAgdWludDY0X3QgcmV0ID0gMDsKICNpZiBkZWZp bmVkKERFQlVHX01YQ0MpIHx8IGRlZmluZWQoREVCVUdfQVNJKQotICAgIHVpbnQzMl90IGxhc3Rf VDAgPSBUMDsKKyAgICB1aW50MzJfdCBsYXN0X2FkZHIgPSBhZGRyOwogI2VuZGlmCiAKICAgICBz d2l0Y2ggKGFzaSkgewogICAgIGNhc2UgMjogLyogU3VwZXJTcGFyYyBNWENDIHJlZ2lzdGVycyAq LwotICAgICAgICBzd2l0Y2ggKFQwKSB7CisgICAgICAgIHN3aXRjaCAoYWRkcikgewogICAgICAg ICBjYXNlIDB4MDFjMDBhMDA6IC8qIE1YQ0MgY29udHJvbCByZWdpc3RlciAqLwotICAgICAgICAg ICAgaWYgKHNpemUgPT0gOCkgewotICAgICAgICAgICAgICAgIHJldCA9IGVudi0+bXhjY3JlZ3Nb M10gPj4gMzI7Ci0gICAgICAgICAgICAgICAgVDAgPSBlbnYtPm14Y2NyZWdzWzNdOwotICAgICAg ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxl bWVudGVkIGFjY2VzcyBzaXplOiAlZFxuIiwgVDAsIHNpemUpOworICAgICAgICAgICAgaWYgKHNp emUgPT0gOCkKKyAgICAgICAgICAgICAgICByZXQgPSBlbnYtPm14Y2NyZWdzWzNdOworICAgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4eDogdW5pbXBsZW1l bnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUpOwogICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgIGNhc2UgMHgwMWMwMGEwNDogLyogTVhDQyBjb250cm9sIHJlZ2lzdGVyICovCiAg ICAgICAgICAgICBpZiAoc2l6ZSA9PSA0KQogICAgICAgICAgICAgICAgIHJldCA9IGVudi0+bXhj Y3JlZ3NbM107CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgRFBSSU5URl9NWEND KCIlMDh4OiB1bmltcGxlbWVudGVkIGFjY2VzcyBzaXplOiAlZFxuIiwgVDAsIHNpemUpOworICAg ICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4eDogdW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6 ZTogJWRcbiIsIGFkZHIsIHNpemUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug MHgwMWMwMGMwMDogLyogTW9kdWxlIHJlc2V0IHJlZ2lzdGVyICovCiAgICAgICAgICAgICBpZiAo c2l6ZSA9PSA4KSB7Ci0gICAgICAgICAgICAgICAgcmV0ID0gZW52LT5teGNjcmVnc1s1XSA+PiAz MjsKLSAgICAgICAgICAgICAgICBUMCA9IGVudi0+bXhjY3JlZ3NbNV07CisgICAgICAgICAgICAg ICAgcmV0ID0gZW52LT5teGNjcmVnc1s1XTsKICAgICAgICAgICAgICAgICAvLyBzaG91bGQgd2Ug ZG8gc29tZXRoaW5nIGhlcmU/CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBE UFJJTlRGX01YQ0MoIiUwOHg6IHVuaW1wbGVtZW50ZWQgYWNjZXNzIHNpemU6ICVkXG4iLCBUMCwg c2l6ZSk7CisgICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxlbWVudGVk IGFjY2VzcyBzaXplOiAlZFxuIiwgYWRkciwgc2l6ZSk7CiAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgY2FzZSAweDAxYzAwZjAwOiAvKiBNQnVzIHBvcnQgYWRkcmVzcyByZWdpc3RlciAqLwot ICAgICAgICAgICAgaWYgKHNpemUgPT0gOCkgewotICAgICAgICAgICAgICAgIHJldCA9IGVudi0+ bXhjY3JlZ3NbN10gPj4gMzI7Ci0gICAgICAgICAgICAgICAgVDAgPSBlbnYtPm14Y2NyZWdzWzdd OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4 OiB1bmltcGxlbWVudGVkIGFjY2VzcyBzaXplOiAlZFxuIiwgVDAsIHNpemUpOworICAgICAgICAg ICAgaWYgKHNpemUgPT0gOCkKKyAgICAgICAgICAgICAgICByZXQgPSBlbnYtPm14Y2NyZWdzWzdd OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4eDog dW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUpOwogICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBEUFJJTlRGX01YQ0MoIiUw OHg6IHVuaW1wbGVtZW50ZWQgYWRkcmVzcywgc2l6ZTogJWRcbiIsIFQwLCBzaXplKTsKKyAgICAg ICAgICAgIERQUklOVEZfTVhDQygiJTA4eDogdW5pbXBsZW1lbnRlZCBhZGRyZXNzLCBzaXplOiAl ZFxuIiwgYWRkciwgc2l6ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg ICBEUFJJTlRGX01YQ0MoImFzaSA9ICVkLCBzaXplID0gJWQsIHNpZ24gPSAlZCwgVDAgPSAlMDh4 IC0+IHJldCA9ICUwOHgsIgotICAgICAgICAgICAgICAgICAgICAgIlQwID0gJTA4eFxuIiwgYXNp LCBzaXplLCBzaWduLCBsYXN0X1QwLCByZXQsIFQwKTsKKyAgICAgICAgRFBSSU5URl9NWENDKCJh c2kgPSAlZCwgc2l6ZSA9ICVkLCBzaWduID0gJWQsIGFkZHIgPSAlMDh4IC0+IHJldCA9ICUwOHgs IgorICAgICAgICAgICAgICAgICAgICAgImFkZHIgPSAlMDh4XG4iLCBhc2ksIHNpemUsIHNpZ24s IGxhc3RfYWRkciwgcmV0LCBhZGRyKTsKICNpZmRlZiBERUJVR19NWENDCiAgICAgICAgIGR1bXBf bXhjYyhlbnYpOwogI2VuZGlmCkBAIC0zMTMsMTkgKzMyNywxOCBAQAogICAgICAgICB7CiAgICAg ICAgICAgICBpbnQgbW11bGV2OwogCi0gICAgICAgICAgICBtbXVsZXYgPSAoVDAgPj4gOCkgJiAx NTsKKyAgICAgICAgICAgIG1tdWxldiA9IChhZGRyID4+IDgpICYgMTU7CiAgICAgICAgICAgICBp ZiAobW11bGV2ID4gNCkKICAgICAgICAgICAgICAgICByZXQgPSAwOwotICAgICAgICAgICAgZWxz ZSB7Ci0gICAgICAgICAgICAgICAgcmV0ID0gbW11X3Byb2JlKGVudiwgVDAsIG1tdWxldik7Ci0g ICAgICAgICAgICAgICAgLy9ic3dhcDMycygmcmV0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICAgIERQUklOVEZfTU1VKCJtbXVfcHJvYmU6IDB4JTA4eCAobGV2ICVkKSAtPiAweCUwOHhcbiIs IFQwLCBtbXVsZXYsIHJldCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0 ID0gbW11X3Byb2JlKGVudiwgYWRkciwgbW11bGV2KTsKKyAgICAgICAgICAgIERQUklOVEZfTU1V KCJtbXVfcHJvYmU6IDB4JTA4eCAobGV2ICVkKSAtPiAweCUwOCIgUFJJeDY0ICJcbiIsCisgICAg ICAgICAgICAgICAgICAgICAgICBhZGRyLCBtbXVsZXYsIHJldCk7CiAgICAgICAgIH0KICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSA0OiAvKiByZWFkIE1NVSByZWdzICovCiAgICAgICAgIHsKLSAg ICAgICAgICAgIGludCByZWcgPSAoVDAgPj4gOCkgJiAweDFmOworICAgICAgICAgICAgaW50IHJl ZyA9IChhZGRyID4+IDgpICYgMHgxZjsKIAogICAgICAgICAgICAgcmV0ID0gZW52LT5tbXVyZWdz W3JlZ107CiAgICAgICAgICAgICBpZiAocmVnID09IDMpIC8qIEZhdWx0IHN0YXR1cyBjbGVhcmVk IG9uIHJlYWQgKi8KQEAgLTMzNCw3ICszNDcsNyBAQAogICAgICAgICAgICAgICAgIHJldCA9IGVu di0+bW11cmVnc1szXTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJlZyA9PSAweDE0KSAvKiBGYXVs dCBhZGRyZXNzIHJlYWQgKi8KICAgICAgICAgICAgICAgICByZXQgPSBlbnYtPm1tdXJlZ3NbNF07 Ci0gICAgICAgICAgICBEUFJJTlRGX01NVSgibW11X3JlYWQ6IHJlZ1slZF0gPSAweCUwOHhcbiIs IHJlZywgcmV0KTsKKyAgICAgICAgICAgIERQUklOVEZfTU1VKCJtbXVfcmVhZDogcmVnWyVkXSA9 IDB4JTA4IiBQUkl4NjQgIlxuIiwgcmVnLCByZXQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr OwogICAgIGNhc2UgNTogLy8gVHVyYm9zcGFyYyBJVExCIERpYWdub3N0aWMKQEAgLTM0NCw1NyAr MzU3LDUxIEBACiAgICAgY2FzZSA5OiAvKiBTdXBlcnZpc29yIGNvZGUgYWNjZXNzICovCiAgICAg ICAgIHN3aXRjaChzaXplKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHJldCA9IGxk dWJfY29kZShUMCk7CisgICAgICAgICAgICByZXQgPSBsZHViX2NvZGUoYWRkcik7CiAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgcmV0ID0gbGR1d19jb2Rl KFQwICYgfjEpOworICAgICAgICAgICAgcmV0ID0gbGR1d19jb2RlKGFkZHIgJiB+MSk7CiAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSA0OgotICAgICAg ICAgICAgcmV0ID0gbGRsX2NvZGUoVDAgJiB+Myk7CisgICAgICAgICAgICByZXQgPSBsZGxfY29k ZShhZGRyICYgfjMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgODoKLSAgICAg ICAgICAgIHRtcCA9IGxkcV9jb2RlKFQwICYgfjcpOwotICAgICAgICAgICAgcmV0ID0gdG1wID4+ IDMyOwotICAgICAgICAgICAgVDAgPSB0bXA7CisgICAgICAgICAgICByZXQgPSBsZHFfY29kZShh ZGRyICYgfjcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSAweGE6IC8qIFVzZXIgZGF0YSBhY2Nlc3MgKi8KICAgICAgICAgc3dpdGNoKHNp emUpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgcmV0ID0gbGR1Yl91c2VyKFQwKTsK KyAgICAgICAgICAgIHJldCA9IGxkdWJfdXNlcihhZGRyKTsKICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICByZXQgPSBsZHV3X3VzZXIoVDAgJiB+MSk7Cisg ICAgICAgICAgICByZXQgPSBsZHV3X3VzZXIoYWRkciAmIH4xKTsKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICByZXQgPSBs ZGxfdXNlcihUMCAmIH4zKTsKKyAgICAgICAgICAgIHJldCA9IGxkbF91c2VyKGFkZHIgJiB+Myk7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA4OgotICAgICAgICAgICAgdG1wID0g bGRxX3VzZXIoVDAgJiB+Nyk7Ci0gICAgICAgICAgICByZXQgPSB0bXAgPj4gMzI7Ci0gICAgICAg ICAgICBUMCA9IHRtcDsKKyAgICAgICAgICAgIHJldCA9IGxkcV91c2VyKGFkZHIgJiB+Nyk7CiAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4 YjogLyogU3VwZXJ2aXNvciBkYXRhIGFjY2VzcyAqLwogICAgICAgICBzd2l0Y2goc2l6ZSkgewog ICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICByZXQgPSBsZHViX2tlcm5lbChUMCk7CisgICAg ICAgICAgICByZXQgPSBsZHViX2tlcm5lbChhZGRyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICBjYXNlIDI6Ci0gICAgICAgICAgICByZXQgPSBsZHV3X2tlcm5lbChUMCAmIH4xKTsKKyAg ICAgICAgICAgIHJldCA9IGxkdXdfa2VybmVsKGFkZHIgJiB+MSk7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgcmV0ID0g bGRsX2tlcm5lbChUMCAmIH4zKTsKKyAgICAgICAgICAgIHJldCA9IGxkbF9rZXJuZWwoYWRkciAm IH4zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICB0 bXAgPSBsZHFfa2VybmVsKFQwICYgfjcpOwotICAgICAgICAgICAgcmV0ID0gdG1wID4+IDMyOwot ICAgICAgICAgICAgVDAgPSB0bXA7CisgICAgICAgICAgICByZXQgPSBsZHFfa2VybmVsKGFkZHIg JiB+Nyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg LTQwNiw0MiArNDEzLDM4IEBACiAgICAgY2FzZSAweDIwOiAvKiBNTVUgcGFzc3Rocm91Z2ggKi8K ICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgcmV0 ID0gbGR1Yl9waHlzKFQwKTsKKyAgICAgICAgICAgIHJldCA9IGxkdWJfcGh5cyhhZGRyKTsKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICByZXQgPSBsZHV3 X3BoeXMoVDAgJiB+MSk7CisgICAgICAgICAgICByZXQgPSBsZHV3X3BoeXMoYWRkciAmIH4xKTsK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICBjYXNlIDQ6Ci0g ICAgICAgICAgICByZXQgPSBsZGxfcGh5cyhUMCAmIH4zKTsKKyAgICAgICAgICAgIHJldCA9IGxk bF9waHlzKGFkZHIgJiB+Myk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA4Ogot ICAgICAgICAgICAgdG1wID0gbGRxX3BoeXMoVDAgJiB+Nyk7Ci0gICAgICAgICAgICByZXQgPSB0 bXAgPj4gMzI7Ci0gICAgICAgICAgICBUMCA9IHRtcDsKKyAgICAgICAgICAgIHJldCA9IGxkcV9w aHlzKGFkZHIgJiB+Nyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBi cmVhazsKICAgICBjYXNlIDB4MjEgLi4uIDB4MmY6IC8qIE1NVSBwYXNzdGhyb3VnaCwgMHgxMDAw MDAwMDAgdG8gMHhmZmZmZmZmZmYgKi8KICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAgICAgICAg Y2FzZSAxOgotICAgICAgICAgICAgcmV0ID0gbGR1Yl9waHlzKCh0YXJnZXRfcGh5c19hZGRyX3Qp VDAKKyAgICAgICAgICAgIHJldCA9IGxkdWJfcGh5cygodGFyZ2V0X3BoeXNfYWRkcl90KWFkZHIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgodGFyZ2V0X3BoeXNfYWRkcl90KShhc2kg JiAweGYpIDw8IDMyKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAg ICAgICAgICAgcmV0ID0gbGR1d19waHlzKCh0YXJnZXRfcGh5c19hZGRyX3QpKFQwICYgfjEpCisg ICAgICAgICAgICByZXQgPSBsZHV3X3BoeXMoKHRhcmdldF9waHlzX2FkZHJfdCkoYWRkciAmIH4x KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCh0YXJnZXRfcGh5c19hZGRyX3QpKGFz aSAmIDB4ZikgPDwgMzIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog ICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICByZXQgPSBsZGxfcGh5cygodGFyZ2V0X3BoeXNf YWRkcl90KShUMCAmIH4zKQorICAgICAgICAgICAgcmV0ID0gbGRsX3BoeXMoKHRhcmdldF9waHlz X2FkZHJfdCkoYWRkciAmIH4zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHRhcmdl dF9waHlzX2FkZHJfdCkoYXNpICYgMHhmKSA8PCAzMikpOwogICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIGNhc2UgODoKLSAgICAgICAgICAgIHRtcCA9IGxkcV9waHlzKCh0YXJnZXRfcGh5c19h ZGRyX3QpKFQwICYgfjcpCisgICAgICAgICAgICByZXQgPSBsZHFfcGh5cygodGFyZ2V0X3BoeXNf YWRkcl90KShhZGRyICYgfjcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgodGFyZ2V0 X3BoeXNfYWRkcl90KShhc2kgJiAweGYpIDw8IDMyKSk7Ci0gICAgICAgICAgICByZXQgPSB0bXAg Pj4gMzI7Ci0gICAgICAgICAgICBUMCA9IHRtcDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNDUzLDY0ICs0NTYsNjUgQEAKICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSA4OiAvKiBVc2VyIGNvZGUgYWNjZXNzLCBYWFggKi8KICAgICBkZWZhdWx0Ogot ICAgICAgICBkb191bmFzc2lnbmVkX2FjY2VzcyhUMCwgMCwgMCwgYXNpKTsKKyAgICAgICAgZG9f dW5hc3NpZ25lZF9hY2Nlc3MoYWRkciwgMCwgMCwgYXNpKTsKICAgICAgICAgcmV0ID0gMDsKICAg ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChzaWduKSB7CiAgICAgICAgIHN3aXRjaChzaXpl KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIFQxID0gKGludDhfdCkgcmV0OworICAg ICAgICAgICAgcmV0ID0gKGludDhfdCkgcmV0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg IGNhc2UgMjoKLSAgICAgICAgICAgIFQxID0gKGludDE2X3QpIHJldDsKKyAgICAgICAgICAgIHJl dCA9IChpbnQxNl90KSByZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0Ogor ICAgICAgICAgICAgcmV0ID0gKGludDMyX3QpIHJldDsKICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVDEgPSByZXQ7CiAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFQxID0gcmV0OwogI2lmZGVmIERF QlVHX0FTSQotICAgIGR1bXBfYXNpKCJyZWFkICIsIGxhc3RfVDAsIGFzaSwgc2l6ZSwgVDEsIFQw KTsKKyAgICBkdW1wX2FzaSgicmVhZCAiLCBsYXN0X2FkZHIsIGFzaSwgc2l6ZSwgcmV0KTsKICNl bmRpZgorICAgIHJldHVybiByZXQ7CiB9CiAKLXZvaWQgaGVscGVyX3N0X2FzaShpbnQgYXNpLCBp bnQgc2l6ZSkKK3ZvaWQgaGVscGVyX3N0X2FzaSh0YXJnZXRfdWxvbmcgYWRkciwgdWludDY0X3Qg dmFsLCBpbnQgYXNpLCBpbnQgc2l6ZSkKIHsKICAgICBzd2l0Y2goYXNpKSB7CiAgICAgY2FzZSAy OiAvKiBTdXBlclNwYXJjIE1YQ0MgcmVnaXN0ZXJzICovCi0gICAgICAgIHN3aXRjaCAoVDApIHsK KyAgICAgICAgc3dpdGNoIChhZGRyKSB7CiAgICAgICAgIGNhc2UgMHgwMWMwMDAwMDogLyogTVhD QyBzdHJlYW0gZGF0YSByZWdpc3RlciAwICovCiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSA4KQot ICAgICAgICAgICAgICAgIGVudi0+bXhjY2RhdGFbMF0gPSAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8 IFQyOworICAgICAgICAgICAgICAgIGVudi0+bXhjY2RhdGFbMF0gPSB2YWw7CiAgICAgICAgICAg ICBlbHNlCi0gICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxlbWVudGVk IGFjY2VzcyBzaXplOiAlZFxuIiwgVDAsIHNpemUpOworICAgICAgICAgICAgICAgIERQUklOVEZf TVhDQygiJTA4eDogdW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUp OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMWMwMDAwODogLyogTVhDQyBz dHJlYW0gZGF0YSByZWdpc3RlciAxICovCiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSA4KQotICAg ICAgICAgICAgICAgIGVudi0+bXhjY2RhdGFbMV0gPSAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8IFQy OworICAgICAgICAgICAgICAgIGVudi0+bXhjY2RhdGFbMV0gPSB2YWw7CiAgICAgICAgICAgICBl bHNlCi0gICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxlbWVudGVkIGFj Y2VzcyBzaXplOiAlZFxuIiwgVDAsIHNpemUpOworICAgICAgICAgICAgICAgIERQUklOVEZfTVhD QygiJTA4eDogdW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUpOwog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMWMwMDAxMDogLyogTVhDQyBzdHJl YW0gZGF0YSByZWdpc3RlciAyICovCiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSA4KQotICAgICAg ICAgICAgICAgIGVudi0+bXhjY2RhdGFbMl0gPSAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8IFQyOwor ICAgICAgICAgICAgICAgIGVudi0+bXhjY2RhdGFbMl0gPSB2YWw7CiAgICAgICAgICAgICBlbHNl Ci0gICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxlbWVudGVkIGFjY2Vz cyBzaXplOiAlZFxuIiwgVDAsIHNpemUpOworICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygi JTA4eDogdW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUpOwogICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMWMwMDAxODogLyogTVhDQyBzdHJlYW0g ZGF0YSByZWdpc3RlciAzICovCiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSA4KQotICAgICAgICAg ICAgICAgIGVudi0+bXhjY2RhdGFbM10gPSAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8IFQyOworICAg ICAgICAgICAgICAgIGVudi0+bXhjY2RhdGFbM10gPSB2YWw7CiAgICAgICAgICAgICBlbHNlCi0g ICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxlbWVudGVkIGFjY2VzcyBz aXplOiAlZFxuIiwgVDAsIHNpemUpOworICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4 eDogdW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUpOwogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMWMwMDEwMDogLyogTVhDQyBzdHJlYW0gc291 cmNlICovCiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSA4KQotICAgICAgICAgICAgICAgIGVudi0+ bXhjY3JlZ3NbMF0gPSAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8IFQyOworICAgICAgICAgICAgICAg IGVudi0+bXhjY3JlZ3NbMF0gPSB2YWw7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg ICAgRFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxlbWVudGVkIGFjY2VzcyBzaXplOiAlZFxuIiwg VDAsIHNpemUpOworICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4eDogdW5pbXBsZW1l bnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUpOwogICAgICAgICAgICAgZW52LT5t eGNjZGF0YVswXSA9IGxkcV9waHlzKChlbnYtPm14Y2NyZWdzWzBdICYgMHhmZmZmZmZmZlVMTCkg KyAgMCk7CiAgICAgICAgICAgICBlbnYtPm14Y2NkYXRhWzFdID0gbGRxX3BoeXMoKGVudi0+bXhj Y3JlZ3NbMF0gJiAweGZmZmZmZmZmVUxMKSArICA4KTsKICAgICAgICAgICAgIGVudi0+bXhjY2Rh dGFbMl0gPSBsZHFfcGh5cygoZW52LT5teGNjcmVnc1swXSAmIDB4ZmZmZmZmZmZVTEwpICsgMTYp OwpAQCAtNTE4LDkgKzUyMiw5IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAw eDAxYzAwMjAwOiAvKiBNWENDIHN0cmVhbSBkZXN0aW5hdGlvbiAqLwogICAgICAgICAgICAgaWYg KHNpemUgPT0gOCkKLSAgICAgICAgICAgICAgICBlbnYtPm14Y2NyZWdzWzFdID0gKCh1aW50NjRf dClUMSA8PCAzMikgfCBUMjsKKyAgICAgICAgICAgICAgICBlbnYtPm14Y2NyZWdzWzFdID0gdmFs OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4eDog dW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIFQwLCBzaXplKTsKKyAgICAgICAgICAg ICAgICBEUFJJTlRGX01YQ0MoIiUwOHg6IHVuaW1wbGVtZW50ZWQgYWNjZXNzIHNpemU6ICVkXG4i LCBhZGRyLCBzaXplKTsKICAgICAgICAgICAgIHN0cV9waHlzKChlbnYtPm14Y2NyZWdzWzFdICYg MHhmZmZmZmZmZlVMTCkgKyAgMCwgZW52LT5teGNjZGF0YVswXSk7CiAgICAgICAgICAgICBzdHFf cGh5cygoZW52LT5teGNjcmVnc1sxXSAmIDB4ZmZmZmZmZmZVTEwpICsgIDgsIGVudi0+bXhjY2Rh dGFbMV0pOwogICAgICAgICAgICAgc3RxX3BoeXMoKGVudi0+bXhjY3JlZ3NbMV0gJiAweGZmZmZm ZmZmVUxMKSArIDE2LCBlbnYtPm14Y2NkYXRhWzJdKTsKQEAgLTUyOCwzNCArNTMyLDM0IEBACiAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDAxYzAwYTAwOiAvKiBNWENDIGNvbnRy b2wgcmVnaXN0ZXIgKi8KICAgICAgICAgICAgIGlmIChzaXplID09IDgpCi0gICAgICAgICAgICAg ICAgZW52LT5teGNjcmVnc1szXSA9ICgodWludDY0X3QpVDEgPDwgMzIpIHwgVDI7CisgICAgICAg ICAgICAgICAgZW52LT5teGNjcmVnc1szXSA9IHZhbDsKICAgICAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgICAgICBEUFJJTlRGX01YQ0MoIiUwOHg6IHVuaW1wbGVtZW50ZWQgYWNjZXNzIHNpemU6 ICVkXG4iLCBUMCwgc2l6ZSk7CisgICAgICAgICAgICAgICAgRFBSSU5URl9NWENDKCIlMDh4OiB1 bmltcGxlbWVudGVkIGFjY2VzcyBzaXplOiAlZFxuIiwgYWRkciwgc2l6ZSk7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgY2FzZSAweDAxYzAwYTA0OiAvKiBNWENDIGNvbnRyb2wgcmVnaXN0 ZXIgKi8KICAgICAgICAgICAgIGlmIChzaXplID09IDQpCi0gICAgICAgICAgICAgICAgZW52LT5t eGNjcmVnc1szXSA9IChlbnYtPm14Y2NyZWdzWzB4YV0gJiAweGZmZmZmZmZmMDAwMDAwMDBVTEwp IHwgVDE7CisgICAgICAgICAgICAgICAgZW52LT5teGNjcmVnc1szXSA9IChlbnYtPm14Y2NyZWdz WzB4YV0gJiAweGZmZmZmZmZmMDAwMDAwMDBVTEwpIHwgdmFsOwogICAgICAgICAgICAgZWxzZQot ICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4eDogdW5pbXBsZW1lbnRlZCBhY2Nlc3Mg c2l6ZTogJWRcbiIsIFQwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBEUFJJTlRGX01YQ0MoIiUw OHg6IHVuaW1wbGVtZW50ZWQgYWNjZXNzIHNpemU6ICVkXG4iLCBhZGRyLCBzaXplKTsKICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MDFjMDBlMDA6IC8qIE1YQ0MgZXJyb3IgcmVn aXN0ZXIgICovCiAgICAgICAgICAgICAvLyB3cml0aW5nIGEgMSBiaXQgY2xlYXJzIHRoZSBlcnJv cgogICAgICAgICAgICAgaWYgKHNpemUgPT0gOCkKLSAgICAgICAgICAgICAgICBlbnYtPm14Y2Ny ZWdzWzZdICY9IH4oKCh1aW50NjRfdClUMSA8PCAzMikgfCBUMik7CisgICAgICAgICAgICAgICAg ZW52LT5teGNjcmVnc1s2XSAmPSB+dmFsOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg ICAgIERQUklOVEZfTVhDQygiJTA4eDogdW5pbXBsZW1lbnRlZCBhY2Nlc3Mgc2l6ZTogJWRcbiIs IFQwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBEUFJJTlRGX01YQ0MoIiUwOHg6IHVuaW1wbGVt ZW50ZWQgYWNjZXNzIHNpemU6ICVkXG4iLCBhZGRyLCBzaXplKTsKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBjYXNlIDB4MDFjMDBmMDA6IC8qIE1CdXMgcG9ydCBhZGRyZXNzIHJlZ2lzdGVy ICovCiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSA4KQotICAgICAgICAgICAgICAgIGVudi0+bXhj Y3JlZ3NbN10gPSAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8IFQyOworICAgICAgICAgICAgICAgIGVu di0+bXhjY3JlZ3NbN10gPSB2YWw7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg RFBSSU5URl9NWENDKCIlMDh4OiB1bmltcGxlbWVudGVkIGFjY2VzcyBzaXplOiAlZFxuIiwgVDAs IHNpemUpOworICAgICAgICAgICAgICAgIERQUklOVEZfTVhDQygiJTA4eDogdW5pbXBsZW1lbnRl ZCBhY2Nlc3Mgc2l6ZTogJWRcbiIsIGFkZHIsIHNpemUpOwogICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBEUFJJTlRGX01YQ0MoIiUwOHg6IHVuaW1wbGVt ZW50ZWQgYWRkcmVzcywgc2l6ZTogJWRcbiIsIFQwLCBzaXplKTsKKyAgICAgICAgICAgIERQUklO VEZfTVhDQygiJTA4eDogdW5pbXBsZW1lbnRlZCBhZGRyZXNzLCBzaXplOiAlZFxuIiwgYWRkciwg c2l6ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBEUFJJTlRGX01Y Q0MoImFzaSA9ICVkLCBzaXplID0gJWQsIFQwID0gJTA4eCwgVDEgPSAlMDh4XG4iLCBhc2ksIHNp emUsIFQwLCBUMSk7CisgICAgICAgIERQUklOVEZfTVhDQygiYXNpID0gJWQsIHNpemUgPSAlZCwg YWRkciA9ICUwOHgsIHZhbCA9ICUwOHhcbiIsIGFzaSwgc2l6ZSwgYWRkciwgdmFsKTsKICNpZmRl ZiBERUJVR19NWENDCiAgICAgICAgIGR1bXBfbXhjYyhlbnYpOwogI2VuZGlmCkBAIC01NjQsMTEg KzU2OCwxMSBAQAogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgbW11bGV2OwogCi0gICAgICAg ICAgICBtbXVsZXYgPSAoVDAgPj4gOCkgJiAxNTsKKyAgICAgICAgICAgIG1tdWxldiA9IChhZGRy ID4+IDgpICYgMTU7CiAgICAgICAgICAgICBEUFJJTlRGX01NVSgibW11IGZsdXNoIGxldmVsICVk XG4iLCBtbXVsZXYpOwogICAgICAgICAgICAgc3dpdGNoIChtbXVsZXYpIHsKICAgICAgICAgICAg IGNhc2UgMDogLy8gZmx1c2ggcGFnZQotICAgICAgICAgICAgICAgIHRsYl9mbHVzaF9wYWdlKGVu diwgVDAgJiAweGZmZmZmMDAwKTsKKyAgICAgICAgICAgICAgICB0bGJfZmx1c2hfcGFnZShlbnYs IGFkZHIgJiAweGZmZmZmMDAwKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg IGNhc2UgMTogLy8gZmx1c2ggc2VnbWVudCAoMjU2aykKICAgICAgICAgICAgIGNhc2UgMjogLy8g Zmx1c2ggcmVnaW9uICgxNk0pCkBAIC01ODYsMTQgKzU5MCwxNCBAQAogICAgICAgICBicmVhazsK ICAgICBjYXNlIDQ6IC8qIHdyaXRlIE1NVSByZWdzICovCiAgICAgICAgIHsKLSAgICAgICAgICAg IGludCByZWcgPSAoVDAgPj4gOCkgJiAweDFmOworICAgICAgICAgICAgaW50IHJlZyA9IChhZGRy ID4+IDgpICYgMHgxZjsKICAgICAgICAgICAgIHVpbnQzMl90IG9sZHJlZzsKIAogICAgICAgICAg ICAgb2xkcmVnID0gZW52LT5tbXVyZWdzW3JlZ107CiAgICAgICAgICAgICBzd2l0Y2gocmVnKSB7 CiAgICAgICAgICAgICBjYXNlIDA6IC8vIENvbnRyb2wgUmVnaXN0ZXIKICAgICAgICAgICAgICAg ICBlbnYtPm1tdXJlZ3NbcmVnXSA9IChlbnYtPm1tdXJlZ3NbcmVnXSAmIDB4ZmYwMDAwMDApIHwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUMSAmIDB4MDBmZmZmZmYpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbCAmIDB4MDBmZmZmZmYpOwog ICAgICAgICAgICAgICAgIC8vIE1hcHBpbmdzIGdlbmVyYXRlZCBkdXJpbmcgbm8tZmF1bHQgbW9k ZSBvciBNTVUKICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlZCBtb2RlIGFyZSBpbnZhbGlkIGlu IG5vcm1hbCBtb2RlCiAgICAgICAgICAgICAgICAgaWYgKChvbGRyZWcgJiAoTU1VX0UgfCBNTVVf TkYgfCBlbnYtPm1tdV9ibSkpICE9CkBAIC02MDEsMTAgKzYwNSwxMCBAQAogICAgICAgICAgICAg ICAgICAgICB0bGJfZmx1c2goZW52LCAxKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgIGNhc2UgMTogLy8gQ29udGV4dCBUYWJsZSBQb2ludGVyIFJlZ2lzdGVyCi0gICAgICAg ICAgICAgICAgZW52LT5tbXVyZWdzW3JlZ10gPSBUMSAmIGVudi0+bW11X2N0cHJfbWFzazsKKyAg ICAgICAgICAgICAgICBlbnYtPm1tdXJlZ3NbcmVnXSA9IHZhbCAmIGVudi0+bW11X2N0cHJfbWFz azsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgMjogLy8gQ29udGV4 dCBSZWdpc3RlcgotICAgICAgICAgICAgICAgIGVudi0+bW11cmVnc1tyZWddID0gVDEgJiBlbnYt Pm1tdV9jeHJfbWFzazsKKyAgICAgICAgICAgICAgICBlbnYtPm1tdXJlZ3NbcmVnXSA9IHZhbCAm IGVudi0+bW11X2N4cl9tYXNrOwogICAgICAgICAgICAgICAgIGlmIChvbGRyZWcgIT0gZW52LT5t bXVyZWdzW3JlZ10pIHsKICAgICAgICAgICAgICAgICAgICAgLyogd2UgZmx1c2ggd2hlbiB0aGUg TU1VIGNvbnRleHQgY2hhbmdlcyBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUg aGFzIG5vIE1NVSBjb250ZXh0IHN1cHBvcnQgKi8KQEAgLTYxNSwxNiArNjE5LDE2IEBACiAgICAg ICAgICAgICBjYXNlIDQ6IC8vIFN5bmNocm9ub3VzIEZhdWx0IEFkZHJlc3MgUmVnaXN0ZXIKICAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgMHgxMDogLy8gVExCIFJlcGxh Y2VtZW50IENvbnRyb2wgUmVnaXN0ZXIKLSAgICAgICAgICAgICAgICBlbnYtPm1tdXJlZ3NbcmVn XSA9IFQxICYgZW52LT5tbXVfdHJjcl9tYXNrOworICAgICAgICAgICAgICAgIGVudi0+bW11cmVn c1tyZWddID0gdmFsICYgZW52LT5tbXVfdHJjcl9tYXNrOwogICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgY2FzZSAweDEzOiAvLyBTeW5jaHJvbm91cyBGYXVsdCBTdGF0dXMgUmVn aXN0ZXIgd2l0aCBSZWFkIGFuZCBDbGVhcgotICAgICAgICAgICAgICAgIGVudi0+bW11cmVnc1sz XSA9IFQxICYgZW52LT5tbXVfc2Zzcl9tYXNrOworICAgICAgICAgICAgICAgIGVudi0+bW11cmVn c1szXSA9IHZhbCAmIGVudi0+bW11X3Nmc3JfbWFzazsKICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgIGNhc2UgMHgxNDogLy8gU3luY2hyb25vdXMgRmF1bHQgQWRkcmVzcyBSZWdp c3RlcgotICAgICAgICAgICAgICAgIGVudi0+bW11cmVnc1s0XSA9IFQxOworICAgICAgICAgICAg ICAgIGVudi0+bW11cmVnc1s0XSA9IHZhbDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZW52LT5tbXVyZWdzW3JlZ10gPSBUMTsK KyAgICAgICAgICAgICAgICBlbnYtPm1tdXJlZ3NbcmVnXSA9IHZhbDsKICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvbGRyZWcgIT0gZW52LT5t bXVyZWdzW3JlZ10pIHsKQEAgLTY0MiwzNCArNjQ2LDM0IEBACiAgICAgY2FzZSAweGE6IC8qIFVz ZXIgZGF0YSBhY2Nlc3MgKi8KICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAgICAgICAgY2FzZSAx OgotICAgICAgICAgICAgc3RiX3VzZXIoVDAsIFQxKTsKKyAgICAgICAgICAgIHN0Yl91c2VyKGFk ZHIsIHZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAg ICAgc3R3X3VzZXIoVDAgJiB+MSwgVDEpOworICAgICAgICAgICAgc3R3X3VzZXIoYWRkciAmIH4x LCB2YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIGNh c2UgNDoKLSAgICAgICAgICAgIHN0bF91c2VyKFQwICYgfjMsIFQxKTsKKyAgICAgICAgICAgIHN0 bF91c2VyKGFkZHIgJiB+MywgdmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl IDg6Ci0gICAgICAgICAgICBzdHFfdXNlcihUMCAmIH43LCAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8 IFQyKTsKKyAgICAgICAgICAgIHN0cV91c2VyKGFkZHIgJiB+NywgdmFsKTsKICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMHhiOiAvKiBTdXBl cnZpc29yIGRhdGEgYWNjZXNzICovCiAgICAgICAgIHN3aXRjaChzaXplKSB7CiAgICAgICAgIGNh c2UgMToKLSAgICAgICAgICAgIHN0Yl9rZXJuZWwoVDAsIFQxKTsKKyAgICAgICAgICAgIHN0Yl9r ZXJuZWwoYWRkciwgdmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0g ICAgICAgICAgICBzdHdfa2VybmVsKFQwICYgfjEsIFQxKTsKKyAgICAgICAgICAgIHN0d19rZXJu ZWwoYWRkciAmIH4xLCB2YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6 CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIHN0bF9rZXJuZWwoVDAgJiB+MywgVDEpOwor ICAgICAgICAgICAgc3RsX2tlcm5lbChhZGRyICYgfjMsIHZhbCk7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgY2FzZSA4OgotICAgICAgICAgICAgc3RxX2tlcm5lbChUMCAmIH43LCAoKHVp bnQ2NF90KVQxIDw8IDMyKSB8IFQyKTsKKyAgICAgICAgICAgIHN0cV9rZXJuZWwoYWRkciAmIH43 LCB2YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBA IC02ODUsMTEgKzY4OSwxMSBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4MTc6IC8qIEJs b2NrIGNvcHksIHN0YSBhY2Nlc3MgKi8KICAgICAgICAgewotICAgICAgICAgICAgLy8gdmFsdWUg KFQxKSA9IHNyYwotICAgICAgICAgICAgLy8gYWRkcmVzcyAoVDApID0gZHN0CisgICAgICAgICAg ICAvLyB2YWwgPSBzcmMKKyAgICAgICAgICAgIC8vIGFkZHIgPSBkc3QKICAgICAgICAgICAgIC8v IGNvcHkgMzIgYnl0ZXMKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAg dWludDMyX3Qgc3JjID0gVDEgJiB+MywgZHN0ID0gVDAgJiB+MywgdGVtcDsKKyAgICAgICAgICAg IHVpbnQzMl90IHNyYyA9IHZhbCAmIH4zLCBkc3QgPSBhZGRyICYgfjMsIHRlbXA7CiAKICAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSArPSA0LCBzcmMgKz0gNCwgZHN0ICs9IDQpIHsK ICAgICAgICAgICAgICAgICB0ZW1wID0gbGRsX2tlcm5lbChzcmMpOwpAQCAtNjk5LDE0ICs3MDMs MTAgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDFmOiAvKiBCbG9jayBmaWxsLCBzdGRh IGFjY2VzcyAqLwogICAgICAgICB7Ci0gICAgICAgICAgICAvLyB2YWx1ZSAoVDEsIFQyKQotICAg ICAgICAgICAgLy8gYWRkcmVzcyAoVDApID0gZHN0Ci0gICAgICAgICAgICAvLyBmaWxsIDMyIGJ5 dGVzCisgICAgICAgICAgICAvLyBhZGRyID0gZHN0CisgICAgICAgICAgICAvLyBmaWxsIDMyIGJ5 dGVzIHdpdGggdmFsCiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgICAgIHVp bnQzMl90IGRzdCA9IFQwICYgNzsKLSAgICAgICAgICAgIHVpbnQ2NF90IHZhbDsKLQotICAgICAg ICAgICAgdmFsID0gKCgodWludDY0X3QpVDEpIDw8IDMyKSB8IFQyOworICAgICAgICAgICAgdWlu dDMyX3QgZHN0ID0gYWRkciAmIDc7CiAKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsg aSArPSA4LCBkc3QgKz0gOCkKICAgICAgICAgICAgICAgICBzdHFfa2VybmVsKGRzdCwgdmFsKTsK QEAgLTcxNiwxNyArNzE2LDE3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaChzaXpl KSB7CiAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgc3RiX3BoeXMoVDAsIFQx KTsKKyAgICAgICAgICAgICAgICBzdGJfcGh5cyhhZGRyLCB2YWwpOwogICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIHN0d19waHlzKFQw ICYgfjEsIFQxKTsKKyAgICAgICAgICAgICAgICBzdHdfcGh5cyhhZGRyICYgfjEsIHZhbCk7CiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICBk ZWZhdWx0OgotICAgICAgICAgICAgICAgIHN0bF9waHlzKFQwICYgfjMsIFQxKTsKKyAgICAgICAg ICAgICAgICBzdGxfcGh5cyhhZGRyICYgfjMsIHZhbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICAgICAgc3RxX3BoeXMoVDAgJiB+Nywg KCh1aW50NjRfdClUMSA8PCAzMikgfCBUMik7CisgICAgICAgICAgICAgICAgc3RxX3BoeXMoYWRk ciAmIH43LCB2YWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg ICAgICB9CkBAIC03MzUsMjIgKzczNSwyMSBAQAogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0 Y2goc2l6ZSkgewogICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgIHN0Yl9waHlz KCh0YXJnZXRfcGh5c19hZGRyX3QpVDAKLSAgICAgICAgICAgICAgICAgICAgICAgICB8ICgodGFy Z2V0X3BoeXNfYWRkcl90KShhc2kgJiAweGYpIDw8IDMyKSwgVDEpOworICAgICAgICAgICAgICAg IHN0Yl9waHlzKCh0YXJnZXRfcGh5c19hZGRyX3QpYWRkcgorICAgICAgICAgICAgICAgICAgICAg ICAgIHwgKCh0YXJnZXRfcGh5c19hZGRyX3QpKGFzaSAmIDB4ZikgPDwgMzIpLCB2YWwpOwogICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAg IHN0d19waHlzKCh0YXJnZXRfcGh5c19hZGRyX3QpKFQwICYgfjEpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAoKHRhcmdldF9waHlzX2FkZHJfdCkoYXNpICYgMHhmKSA8PCAzMiksIFQx KTsKKyAgICAgICAgICAgICAgICBzdHdfcGh5cygodGFyZ2V0X3BoeXNfYWRkcl90KShhZGRyICYg fjEpCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHRhcmdldF9waHlzX2FkZHJfdCkoYXNp ICYgMHhmKSA8PCAzMiksIHZhbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICBjYXNlIDQ6CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHN0bF9waHlz KCh0YXJnZXRfcGh5c19hZGRyX3QpKFQwICYgfjMpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICgodGFyZ2V0X3BoeXNfYWRkcl90KShhc2kgJiAweGYpIDw8IDMyKSwgVDEpOworICAgICAg ICAgICAgICAgIHN0bF9waHlzKCh0YXJnZXRfcGh5c19hZGRyX3QpKGFkZHIgJiB+MykKKyAgICAg ICAgICAgICAgICAgICAgICAgICB8ICgodGFyZ2V0X3BoeXNfYWRkcl90KShhc2kgJiAweGYpIDw8 IDMyKSwgdmFsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgODoK LSAgICAgICAgICAgICAgICBzdHFfcGh5cygodGFyZ2V0X3BoeXNfYWRkcl90KShUMCAmIH43KQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHRhcmdldF9waHlzX2FkZHJfdCkoYXNpICYg MHhmKSA8PCAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50NjRfdClUMSA8PCAz MikgfCBUMik7CisgICAgICAgICAgICAgICAgc3RxX3BoeXMoKHRhcmdldF9waHlzX2FkZHJfdCko YWRkciAmIH43KQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCh0YXJnZXRfcGh5c19hZGRy X3QpKGFzaSAmIDB4ZikgPDwgMzIpLCB2YWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgfQogICAgICAgICB9CkBAIC03NjcsMTEgKzc2NiwxMSBAQAogICAgIGNhc2UgODog LyogVXNlciBjb2RlIGFjY2VzcywgWFhYICovCiAgICAgY2FzZSA5OiAvKiBTdXBlcnZpc29yIGNv ZGUgYWNjZXNzLCBYWFggKi8KICAgICBkZWZhdWx0OgotICAgICAgICBkb191bmFzc2lnbmVkX2Fj Y2VzcyhUMCwgMSwgMCwgYXNpKTsKKyAgICAgICAgZG9fdW5hc3NpZ25lZF9hY2Nlc3MoYWRkciwg MSwgMCwgYXNpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2lmZGVmIERFQlVHX0FTSQotICAg IGR1bXBfYXNpKCJ3cml0ZSIsIFQwLCBhc2ksIHNpemUsIFQxLCBUMik7CisgICAgZHVtcF9hc2ko IndyaXRlIiwgYWRkciwgYXNpLCBzaXplLCB2YWwpOwogI2VuZGlmCiB9CiAKQEAgLTc3OSw5ICs3 NzgsMTIgQEAKICNlbHNlIC8qIFRBUkdFVF9TUEFSQzY0ICovCiAKICNpZmRlZiBDT05GSUdfVVNF Ul9PTkxZCi12b2lkIGhlbHBlcl9sZF9hc2koaW50IGFzaSwgaW50IHNpemUsIGludCBzaWduKQor dWludDY0X3QgaGVscGVyX2xkX2FzaSh0YXJnZXRfdWxvbmcgYWRkciwgaW50IGFzaSwgaW50IHNp emUsIGludCBzaWduKQogewogICAgIHVpbnQ2NF90IHJldCA9IDA7CisjaWYgZGVmaW5lZChERUJV R19BU0kpCisgICAgdGFyZ2V0X3Vsb25nIGxhc3RfYWRkciA9IGFkZHI7CisjZW5kaWYKIAogICAg IGlmIChhc2kgPCAweDgwKQogICAgICAgICByYWlzZV9leGNlcHRpb24oVFRfUFJJVl9BQ1QpOwpA QCAtNzk0LDE3ICs3OTYsMTcgQEAKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoKHNpemUp IHsKICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICByZXQgPSBsZHViX3JhdyhU MCk7CisgICAgICAgICAgICAgICAgcmV0ID0gbGR1Yl9yYXcoYWRkcik7CiAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgcmV0ID0gbGR1 d19yYXcoVDAgJiB+MSk7CisgICAgICAgICAgICAgICAgcmV0ID0gbGR1d19yYXcoYWRkciAmIH4x KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAg ICAgICAgICByZXQgPSBsZGxfcmF3KFQwICYgfjMpOworICAgICAgICAgICAgICAgIHJldCA9IGxk bF9yYXcoYWRkciAmIH4zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRl ZmF1bHQ6CiAgICAgICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICAgICAgcmV0ID0gbGRxX3Jh dyhUMCAmIH43KTsKKyAgICAgICAgICAgICAgICByZXQgPSBsZHFfcmF3KGFkZHIgJiB+Nyk7CiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTg1OCwx MSArODYwLDE3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBU MSA9IHJldDsKKyNpZmRlZiBERUJVR19BU0kKKyAgICBkdW1wX2FzaSgicmVhZCAiLCBsYXN0X2Fk ZHIsIGFzaSwgc2l6ZSwgcmV0KTsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7CiB9CiAKLXZvaWQg aGVscGVyX3N0X2FzaShpbnQgYXNpLCBpbnQgc2l6ZSkKK3ZvaWQgaGVscGVyX3N0X2FzaSh0YXJn ZXRfdWxvbmcgYWRkciwgdGFyZ2V0X3Vsb25nIHZhbCwgaW50IGFzaSwgaW50IHNpemUpCiB7Cisj aWZkZWYgREVCVUdfQVNJCisgICAgZHVtcF9hc2koIndyaXRlIiwgYWRkciwgYXNpLCBzaXplLCB2 YWwpOworI2VuZGlmCiAgICAgaWYgKGFzaSA8IDB4ODApCiAgICAgICAgIHJhaXNlX2V4Y2VwdGlv bihUVF9QUklWX0FDVCk7CiAKQEAgLTg3MiwxMyArODgwLDEzIEBACiAgICAgY2FzZSAweDg5OiAv LyBTZWNvbmRhcnkgTEUKICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAgICAgICAgY2FzZSAyOgot ICAgICAgICAgICAgVDAgPSBic3dhcDE2KFQwKTsKKyAgICAgICAgICAgIGFkZHIgPSBic3dhcDE2 KGFkZHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAg IFQwID0gYnN3YXAzMihUMCk7CisgICAgICAgICAgICBhZGRyID0gYnN3YXAzMihhZGRyKTsKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICBUMCA9IGJzd2Fw NjQoVDApOworICAgICAgICAgICAgYWRkciA9IGJzd2FwNjQoYWRkcik7CiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODkzLDE3ICs5 MDEsMTcgQEAKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAgICAgICAg ICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICBzdGJfcmF3KFQwLCBUMSk7CisgICAgICAgICAg ICAgICAgc3RiX3JhdyhhZGRyLCB2YWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIHN0d19yYXcoVDAgJiB+MSwgVDEpOworICAg ICAgICAgICAgICAgIHN0d19yYXcoYWRkciAmIH4xLCB2YWwpOwogICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgICAgIHN0bF9yYXcoVDAgJiB+ MywgVDEpOworICAgICAgICAgICAgICAgIHN0bF9yYXcoYWRkciAmIH4zLCB2YWwpOwogICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgZGVmYXVs dDoKLSAgICAgICAgICAgICAgICBzdHFfcmF3KFQwICYgfjcsIFQxKTsKKyAgICAgICAgICAgICAg ICBzdHFfcmF3KGFkZHIgJiB+NywgdmFsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgIH0KICAgICAgICAgfQpAQCAtOTE4LDE2ICs5MjYsMTkgQEAKICAgICBjYXNlIDB4OGE6 IC8vIFByaW1hcnkgbm8tZmF1bHQgTEUsIFJPCiAgICAgY2FzZSAweDhiOiAvLyBTZWNvbmRhcnkg bm8tZmF1bHQgTEUsIFJPCiAgICAgZGVmYXVsdDoKLSAgICAgICAgZG9fdW5hc3NpZ25lZF9hY2Nl c3MoVDAsIDEsIDAsIDEpOworICAgICAgICBkb191bmFzc2lnbmVkX2FjY2VzcyhhZGRyLCAxLCAw LCAxKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAogI2Vsc2UgLyogQ09ORklHX1VTRVJf T05MWSAqLwogCi12b2lkIGhlbHBlcl9sZF9hc2koaW50IGFzaSwgaW50IHNpemUsIGludCBzaWdu KQordWludDY0X3QgaGVscGVyX2xkX2FzaSh0YXJnZXRfdWxvbmcgYWRkciwgaW50IGFzaSwgaW50 IHNpemUsIGludCBzaWduKQogewogICAgIHVpbnQ2NF90IHJldCA9IDA7CisjaWYgZGVmaW5lZChE RUJVR19BU0kpCisgICAgdGFyZ2V0X3Vsb25nIGxhc3RfYWRkciA9IGFkZHI7CisjZW5kaWYKIAog ICAgIGlmICgoYXNpIDwgMHg4MCAmJiAoZW52LT5wc3RhdGUgJiBQU19QUklWKSA9PSAwKQogICAg ICAgICB8fCAoYXNpID49IDB4MzAgJiYgYXNpIDwgMHg4MCAmJiAhKGVudi0+aHBzdGF0ZSAmIEhT X1BSSVYpKSkKQEAgLTk0NCw1MCArOTU1LDUwIEBACiAgICAgICAgICAgICBpZiAoZW52LT5ocHN0 YXRlICYgSFNfUFJJVikgewogICAgICAgICAgICAgICAgIHN3aXRjaChzaXplKSB7CiAgICAgICAg ICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgICAgICByZXQgPSBsZHViX2h5cHYoVDAp OworICAgICAgICAgICAgICAgICAgICByZXQgPSBsZHViX2h5cHYoYWRkcik7CiAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAg ICAgICAgcmV0ID0gbGR1d19oeXB2KFQwICYgfjEpOworICAgICAgICAgICAgICAgICAgICByZXQg PSBsZHV3X2h5cHYoYWRkciAmIH4xKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgICAgICAgICByZXQgPSBsZGxfaHlwdihU MCAmIH4zKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gbGRsX2h5cHYoYWRkciAmIH4zKTsK ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAg ICAgICAgICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IGxkcV9oeXB2 KFQwICYgfjcpOworICAgICAgICAgICAgICAgICAgICByZXQgPSBsZHFfaHlwdihhZGRyICYgfjcp OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHN3aXRjaChzaXplKSB7CiAgICAgICAgICAg ICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgICAgICByZXQgPSBsZHViX2tlcm5lbChUMCk7 CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGxkdWJfa2VybmVsKGFkZHIpOwogICAgICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAg ICAgICAgIHJldCA9IGxkdXdfa2VybmVsKFQwICYgfjEpOworICAgICAgICAgICAgICAgICAgICBy ZXQgPSBsZHV3X2tlcm5lbChhZGRyICYgfjEpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IGxkbF9r ZXJuZWwoVDAgJiB+Myk7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGxkbF9rZXJuZWwoYWRk ciAmIH4zKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVm YXVsdDoKICAgICAgICAgICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9 IGxkcV9rZXJuZWwoVDAgJiB+Nyk7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGxkcV9rZXJu ZWwoYWRkciAmIH43KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3dpdGNo KHNpemUpIHsKICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICByZXQgPSBsZHVi X3VzZXIoVDApOworICAgICAgICAgICAgICAgIHJldCA9IGxkdWJfdXNlcihhZGRyKTsKICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICBy ZXQgPSBsZHV3X3VzZXIoVDAgJiB+MSk7CisgICAgICAgICAgICAgICAgcmV0ID0gbGR1d191c2Vy KGFkZHIgJiB+MSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDQ6 Ci0gICAgICAgICAgICAgICAgcmV0ID0gbGRsX3VzZXIoVDAgJiB+Myk7CisgICAgICAgICAgICAg ICAgcmV0ID0gbGRsX3VzZXIoYWRkciAmIH4zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjYXNlIDg6Ci0gICAgICAgICAgICAgICAg cmV0ID0gbGRxX3VzZXIoVDAgJiB+Nyk7CisgICAgICAgICAgICAgICAgcmV0ID0gbGRxX3VzZXIo YWRkciAmIH43KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg ICAgfQpAQCAtOTk5LDE3ICsxMDEwLDE3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRj aChzaXplKSB7CiAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgcmV0ID0gbGR1 Yl9waHlzKFQwKTsKKyAgICAgICAgICAgICAgICByZXQgPSBsZHViX3BoeXMoYWRkcik7CiAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAg cmV0ID0gbGR1d19waHlzKFQwICYgfjEpOworICAgICAgICAgICAgICAgIHJldCA9IGxkdXdfcGh5 cyhhZGRyICYgfjEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSA0 OgotICAgICAgICAgICAgICAgIHJldCA9IGxkbF9waHlzKFQwICYgfjMpOworICAgICAgICAgICAg ICAgIHJldCA9IGxkbF9waHlzKGFkZHIgJiB+Myk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY2FzZSA4OgotICAgICAgICAgICAgICAg IHJldCA9IGxkcV9waHlzKFQwICYgfjcpOworICAgICAgICAgICAgICAgIHJldCA9IGxkcV9waHlz KGFkZHIgJiB+Nyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg ICAgICAgICBicmVhazsKQEAgLTEwMzIsNyArMTA0Myw3IEBACiAgICAgICAgIGJyZWFrOwogICAg IGNhc2UgMHg1MDogLy8gSS1NTVUgcmVncwogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcmVn ID0gKFQwID4+IDMpICYgMHhmOworICAgICAgICAgICAgaW50IHJlZyA9IChhZGRyID4+IDMpICYg MHhmOwogCiAgICAgICAgICAgICByZXQgPSBlbnYtPmltbXVyZWdzW3JlZ107CiAgICAgICAgICAg ICBicmVhazsKQEAgLTEwNDksNyArMTA2MCw3IEBACiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBp IDwgNjQ7IGkrKykgewogICAgICAgICAgICAgICAgIC8vIFZhbGlkLCBjdHggbWF0Y2gsIHZhZGRy IG1hdGNoCiAgICAgICAgICAgICAgICAgaWYgKChlbnYtPml0bGJfdHRlW2ldICYgMHg4MDAwMDAw MDAwMDAwMDAwVUxMKSAhPSAwICYmCi0gICAgICAgICAgICAgICAgICAgIGVudi0+aXRsYl90YWdb aV0gPT0gVDApIHsKKyAgICAgICAgICAgICAgICAgICAgZW52LT5pdGxiX3RhZ1tpXSA9PSBhZGRy KSB7CiAgICAgICAgICAgICAgICAgICAgIHJldCA9IGVudi0+aXRsYl90YWdbaV07CiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTEwNTgsNyArMTA2OSw3 IEBACiAgICAgICAgIH0KICAgICBjYXNlIDB4NTg6IC8vIEQtTU1VIHJlZ3MKICAgICAgICAgewot ICAgICAgICAgICAgaW50IHJlZyA9IChUMCA+PiAzKSAmIDB4ZjsKKyAgICAgICAgICAgIGludCBy ZWcgPSAoYWRkciA+PiAzKSAmIDB4ZjsKIAogICAgICAgICAgICAgcmV0ID0gZW52LT5kbW11cmVn c1tyZWddOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcwLDcgKzEwODEsNyBAQAogICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKICAgICAgICAgICAgICAgICAvLyBWYWxp ZCwgY3R4IG1hdGNoLCB2YWRkciBtYXRjaAogICAgICAgICAgICAgICAgIGlmICgoZW52LT5kdGxi X3R0ZVtpXSAmIDB4ODAwMDAwMDAwMDAwMDAwMFVMTCkgIT0gMCAmJgotICAgICAgICAgICAgICAg ICAgICBlbnYtPmR0bGJfdGFnW2ldID09IFQwKSB7CisgICAgICAgICAgICAgICAgICAgIGVudi0+ ZHRsYl90YWdbaV0gPT0gYWRkcikgewogICAgICAgICAgICAgICAgICAgICByZXQgPSBlbnYtPmR0 bGJfdGFnW2ldOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9 CkBAIC0xMDkyLDcgKzExMDMsNyBAQAogICAgIGNhc2UgMHg1ZjogLy8gRC1NTVUgZGVtYXAsIFdP CiAgICAgY2FzZSAweDc3OiAvLyBJbnRlcnJ1cHQgdmVjdG9yLCBXTwogICAgIGRlZmF1bHQ6Ci0g ICAgICAgIGRvX3VuYXNzaWduZWRfYWNjZXNzKFQwLCAwLCAwLCAxKTsKKyAgICAgICAgZG9fdW5h c3NpZ25lZF9hY2Nlc3MoYWRkciwgMCwgMCwgMSk7CiAgICAgICAgIHJldCA9IDA7CiAgICAgICAg IGJyZWFrOwogICAgIH0KQEAgLTExNDEsMTEgKzExNTIsMTcgQEAKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICB9CiAgICAgfQotICAgIFQxID0gcmV0OworI2lmZGVmIERFQlVHX0FTSQorICAg IGR1bXBfYXNpKCJyZWFkICIsIGxhc3RfYWRkciwgYXNpLCBzaXplLCByZXQpOworI2VuZGlmCisg ICAgcmV0dXJuIHJldDsKIH0KIAotdm9pZCBoZWxwZXJfc3RfYXNpKGludCBhc2ksIGludCBzaXpl KQordm9pZCBoZWxwZXJfc3RfYXNpKHRhcmdldF91bG9uZyBhZGRyLCB0YXJnZXRfdWxvbmcgdmFs LCBpbnQgYXNpLCBpbnQgc2l6ZSkKIHsKKyNpZmRlZiBERUJVR19BU0kKKyAgICBkdW1wX2FzaSgi d3JpdGUiLCBhZGRyLCBhc2ksIHNpemUsIHZhbCk7CisjZW5kaWYKICAgICBpZiAoKGFzaSA8IDB4 ODAgJiYgKGVudi0+cHN0YXRlICYgUFNfUFJJVikgPT0gMCkKICAgICAgICAgfHwgKGFzaSA+PSAw eDMwICYmIGFzaSA8IDB4ODAgJiYgIShlbnYtPmhwc3RhdGUgJiBIU19QUklWKSkpCiAgICAgICAg IHJhaXNlX2V4Y2VwdGlvbihUVF9QUklWX0FDVCk7CkBAIC0xMTYxLDEzICsxMTc4LDEzIEBACiAg ICAgY2FzZSAweDg5OiAvLyBTZWNvbmRhcnkgTEUKICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAg ICAgICAgY2FzZSAyOgotICAgICAgICAgICAgVDAgPSBic3dhcDE2KFQwKTsKKyAgICAgICAgICAg IGFkZHIgPSBic3dhcDE2KGFkZHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug NDoKLSAgICAgICAgICAgIFQwID0gYnN3YXAzMihUMCk7CisgICAgICAgICAgICBhZGRyID0gYnN3 YXAzMihhZGRyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDg6Ci0gICAgICAg ICAgICBUMCA9IGJzd2FwNjQoVDApOworICAgICAgICAgICAgYWRkciA9IGJzd2FwNjQoYWRkcik7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr OwpAQCAtMTE4NSw1MCArMTIwMiw1MCBAQAogICAgICAgICAgICAgaWYgKGVudi0+aHBzdGF0ZSAm IEhTX1BSSVYpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2goc2l6ZSkgewogICAgICAgICAgICAg ICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICAgICAgc3RiX2h5cHYoVDAsIFQxKTsKKyAgICAg ICAgICAgICAgICAgICAgc3RiX2h5cHYoYWRkciwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICBzdHdf aHlwdihUMCAmIH4xLCBUMSk7CisgICAgICAgICAgICAgICAgICAgIHN0d19oeXB2KGFkZHIgJiB+ MSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2Fz ZSA0OgotICAgICAgICAgICAgICAgICAgICBzdGxfaHlwdihUMCAmIH4zLCBUMSk7CisgICAgICAg ICAgICAgICAgICAgIHN0bF9oeXB2KGFkZHIgJiB+MywgdmFsKTsKICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgIGRlZmF1 bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0cV9oeXB2KFQwICYgfjcsIFQxKTsKKyAgICAgICAg ICAgICAgICAgICAgc3RxX2h5cHYoYWRkciAmIH43LCB2YWwpOwogICAgICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgIHN3aXRjaChzaXplKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAg ICAgICAgICAgICAgICBzdGJfa2VybmVsKFQwLCBUMSk7CisgICAgICAgICAgICAgICAgICAgIHN0 Yl9rZXJuZWwoYWRkciwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg ICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICAgICBzdHdfa2VybmVsKFQwICYgfjEs IFQxKTsKKyAgICAgICAgICAgICAgICAgICAgc3R3X2tlcm5lbChhZGRyICYgfjEsIHZhbCk7CiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAg ICAgICAgICAgICAgICAgc3RsX2tlcm5lbChUMCAmIH4zLCBUMSk7CisgICAgICAgICAgICAgICAg ICAgIHN0bF9rZXJuZWwoYWRkciAmIH4zLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg ICAgICAgICAgICAgICAgICAgc3RxX2tlcm5lbChUMCAmIH43LCBUMSk7CisgICAgICAgICAgICAg ICAgICAgIHN0cV9rZXJuZWwoYWRkciAmIH43LCB2YWwpOwogICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgICBzd2l0Y2goc2l6ZSkgewogICAgICAgICAgICAgY2FzZSAxOgotICAgICAg ICAgICAgICAgIHN0Yl91c2VyKFQwLCBUMSk7CisgICAgICAgICAgICAgICAgc3RiX3VzZXIoYWRk ciwgdmFsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgMjoKLSAg ICAgICAgICAgICAgICBzdHdfdXNlcihUMCAmIH4xLCBUMSk7CisgICAgICAgICAgICAgICAgc3R3 X3VzZXIoYWRkciAmIH4xLCB2YWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgY2FzZSA0OgotICAgICAgICAgICAgICAgIHN0bF91c2VyKFQwICYgfjMsIFQxKTsKKyAgICAg ICAgICAgICAgICBzdGxfdXNlcihhZGRyICYgfjMsIHZhbCk7CiAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg ICAgICAgIHN0cV91c2VyKFQwICYgfjcsIFQxKTsKKyAgICAgICAgICAgICAgICBzdHFfdXNlcihh ZGRyICYgfjcsIHZhbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg ICAgICAgIH0KQEAgLTEyNDAsMTcgKzEyNTcsMTcgQEAKICAgICAgICAgewogICAgICAgICAgICAg c3dpdGNoKHNpemUpIHsKICAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICBzdGJf cGh5cyhUMCwgVDEpOworICAgICAgICAgICAgICAgIHN0Yl9waHlzKGFkZHIsIHZhbCk7CiAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAg c3R3X3BoeXMoVDAgJiB+MSwgVDEpOworICAgICAgICAgICAgICAgIHN0d19waHlzKGFkZHIgJiB+ MSwgdmFsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDoKLSAg ICAgICAgICAgICAgICBzdGxfcGh5cyhUMCAmIH4zLCBUMSk7CisgICAgICAgICAgICAgICAgc3Rs X3BoeXMoYWRkciAmIH4zLCB2YWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgY2FzZSA4OgogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBzdHFfcGh5 cyhUMCAmIH43LCBUMSk7CisgICAgICAgICAgICAgICAgc3RxX3BoeXMoYWRkciAmIH43LCB2YWwp OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x MjcxLDcgKzEyODgsNyBAQAogICAgICAgICAgICAgdWludDY0X3Qgb2xkcmVnOwogCiAgICAgICAg ICAgICBvbGRyZWcgPSBlbnYtPmxzdTsKLSAgICAgICAgICAgIGVudi0+bHN1ID0gVDEgJiAoRE1N VV9FIHwgSU1NVV9FKTsKKyAgICAgICAgICAgIGVudi0+bHN1ID0gdmFsICYgKERNTVVfRSB8IElN TVVfRSk7CiAgICAgICAgICAgICAvLyBNYXBwaW5ncyBnZW5lcmF0ZWQgZHVyaW5nIEQvSSBNTVUg ZGlzYWJsZWQgbW9kZSBhcmUKICAgICAgICAgICAgIC8vIGludmFsaWQgaW4gbm9ybWFsIG1vZGUK ICAgICAgICAgICAgIGlmIChvbGRyZWcgIT0gZW52LT5sc3UpIHsKQEAgLTEyODUsNyArMTMwMiw3 IEBACiAgICAgICAgIH0KICAgICBjYXNlIDB4NTA6IC8vIEktTU1VIHJlZ3MKICAgICAgICAgewot ICAgICAgICAgICAgaW50IHJlZyA9IChUMCA+PiAzKSAmIDB4ZjsKKyAgICAgICAgICAgIGludCBy ZWcgPSAoYWRkciA+PiAzKSAmIDB4ZjsKICAgICAgICAgICAgIHVpbnQ2NF90IG9sZHJlZzsKIAog ICAgICAgICAgICAgb2xkcmVnID0gZW52LT5pbW11cmVnc1tyZWddOwpAQCAtMTI5OSwxNSArMTMx NiwxNSBAQAogICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgIHJldHVybjsKICAg ICAgICAgICAgIGNhc2UgMzogLy8gU0ZTUgotICAgICAgICAgICAgICAgIGlmICgoVDEgJiAxKSA9 PSAwKQotICAgICAgICAgICAgICAgICAgICBUMSA9IDA7IC8vIENsZWFyIFNGU1IKKyAgICAgICAg ICAgICAgICBpZiAoKHZhbCAmIDEpID09IDApCisgICAgICAgICAgICAgICAgICAgIHZhbCA9IDA7 IC8vIENsZWFyIFNGU1IKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug NTogLy8gVFNCIGFjY2VzcwogICAgICAgICAgICAgY2FzZSA2OiAvLyBUYWcgYWNjZXNzCiAgICAg ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot ICAgICAgICAgICAgZW52LT5pbW11cmVnc1tyZWddID0gVDE7CisgICAgICAgICAgICBlbnYtPmlt bXVyZWdzW3JlZ10gPSB2YWw7CiAgICAgICAgICAgICBpZiAob2xkcmVnICE9IGVudi0+aW1tdXJl Z3NbcmVnXSkgewogICAgICAgICAgICAgICAgIERQUklOVEZfTU1VKCJtbXUgY2hhbmdlIHJlZ1sl ZF06IDB4JTA4IiBQUkl4NjQgIiAtPiAweCUwOCIgUFJJeDY0ICJcbiIsIHJlZywgb2xkcmVnLCBl bnYtPmltbXVyZWdzW3JlZ10pOwogICAgICAgICAgICAgfQpAQCAtMTMyNCw3ICsxMzQxLDcgQEAK ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKSB7CiAgICAgICAgICAgICAgICAg aWYgKChlbnYtPml0bGJfdHRlW2ldICYgMHg4MDAwMDAwMDAwMDAwMDAwVUxMKSA9PSAwKSB7CiAg ICAgICAgICAgICAgICAgICAgIGVudi0+aXRsYl90YWdbaV0gPSBlbnYtPmltbXVyZWdzWzZdOwot ICAgICAgICAgICAgICAgICAgICBlbnYtPml0bGJfdHRlW2ldID0gVDE7CisgICAgICAgICAgICAg ICAgICAgIGVudi0+aXRsYl90dGVbaV0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMzMyLDcgKzEzNDksNyBA QAogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKICAgICAgICAgICAgICAg ICBpZiAoKGVudi0+aXRsYl90dGVbaV0gJiAweDQwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAg ICAgIGVudi0+aXRsYl90YWdbaV0gPSBlbnYtPmltbXVyZWdzWzZdOwotICAgICAgICAgICAgICAg ICAgICBlbnYtPml0bGJfdHRlW2ldID0gVDE7CisgICAgICAgICAgICAgICAgICAgIGVudi0+aXRs Yl90dGVbaV0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMzQxLDEwICsxMzU4LDEwIEBACiAgICAgICAgIH0K ICAgICBjYXNlIDB4NTU6IC8vIEktTU1VIGRhdGEgYWNjZXNzCiAgICAgICAgIHsKLSAgICAgICAg ICAgIHVuc2lnbmVkIGludCBpID0gKFQwID4+IDMpICYgMHgzZjsKKyAgICAgICAgICAgIHVuc2ln bmVkIGludCBpID0gKGFkZHIgPj4gMykgJiAweDNmOwogCiAgICAgICAgICAgICBlbnYtPml0bGJf dGFnW2ldID0gZW52LT5pbW11cmVnc1s2XTsKLSAgICAgICAgICAgIGVudi0+aXRsYl90dGVbaV0g PSBUMTsKKyAgICAgICAgICAgIGVudi0+aXRsYl90dGVbaV0gPSB2YWw7CiAgICAgICAgICAgICBy ZXR1cm47CiAgICAgICAgIH0KICAgICBjYXNlIDB4NTc6IC8vIEktTU1VIGRlbWFwCkBAIC0xMzUy LDcgKzEzNjksNyBAQAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSAweDU4OiAvLyBELU1NVSBy ZWdzCiAgICAgICAgIHsKLSAgICAgICAgICAgIGludCByZWcgPSAoVDAgPj4gMykgJiAweGY7Cisg ICAgICAgICAgICBpbnQgcmVnID0gKGFkZHIgPj4gMykgJiAweGY7CiAgICAgICAgICAgICB1aW50 NjRfdCBvbGRyZWc7CiAKICAgICAgICAgICAgIG9sZHJlZyA9IGVudi0+ZG1tdXJlZ3NbcmVnXTsK QEAgLTEzNjEsMTEgKzEzNzgsMTEgQEAKICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAg ICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIDM6IC8vIFNGU1IKLSAgICAgICAgICAgICAg ICBpZiAoKFQxICYgMSkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBUMSA9IDA7IC8vIENs ZWFyIFNGU1IsIEZhdWx0IGFkZHJlc3MKKyAgICAgICAgICAgICAgICBpZiAoKHZhbCAmIDEpID09 IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gMDsgLy8gQ2xlYXIgU0ZTUiwgRmF1bHQg YWRkcmVzcwogICAgICAgICAgICAgICAgICAgICBlbnYtPmRtbXVyZWdzWzRdID0gMDsKICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW52LT5kbW11cmVnc1tyZWddID0gVDE7Cisg ICAgICAgICAgICAgICAgZW52LT5kbW11cmVnc1tyZWddID0gdmFsOwogICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgY2FzZSAxOiAvLyBQcmltYXJ5IGNvbnRleHQKICAgICAgICAg ICAgIGNhc2UgMjogLy8gU2Vjb25kYXJ5IGNvbnRleHQKQEAgLTEzNzYsNyArMTM5Myw3IEBACiAg ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg fQotICAgICAgICAgICAgZW52LT5kbW11cmVnc1tyZWddID0gVDE7CisgICAgICAgICAgICBlbnYt PmRtbXVyZWdzW3JlZ10gPSB2YWw7CiAgICAgICAgICAgICBpZiAob2xkcmVnICE9IGVudi0+ZG1t dXJlZ3NbcmVnXSkgewogICAgICAgICAgICAgICAgIERQUklOVEZfTU1VKCJtbXUgY2hhbmdlIHJl Z1slZF06IDB4JTA4IiBQUkl4NjQgIiAtPiAweCUwOCIgUFJJeDY0ICJcbiIsIHJlZywgb2xkcmVn LCBlbnYtPmRtbXVyZWdzW3JlZ10pOwogICAgICAgICAgICAgfQpAQCAtMTM5Myw3ICsxNDEwLDcg QEAKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKSB7CiAgICAgICAgICAgICAg ICAgaWYgKChlbnYtPmR0bGJfdHRlW2ldICYgMHg4MDAwMDAwMDAwMDAwMDAwVUxMKSA9PSAwKSB7 CiAgICAgICAgICAgICAgICAgICAgIGVudi0+ZHRsYl90YWdbaV0gPSBlbnYtPmRtbXVyZWdzWzZd OwotICAgICAgICAgICAgICAgICAgICBlbnYtPmR0bGJfdHRlW2ldID0gVDE7CisgICAgICAgICAg ICAgICAgICAgIGVudi0+ZHRsYl90dGVbaV0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgIHJl dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNDAxLDcgKzE0MTgs NyBAQAogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKICAgICAgICAgICAg ICAgICBpZiAoKGVudi0+ZHRsYl90dGVbaV0gJiAweDQwKSA9PSAwKSB7CiAgICAgICAgICAgICAg ICAgICAgIGVudi0+ZHRsYl90YWdbaV0gPSBlbnYtPmRtbXVyZWdzWzZdOwotICAgICAgICAgICAg ICAgICAgICBlbnYtPmR0bGJfdHRlW2ldID0gVDE7CisgICAgICAgICAgICAgICAgICAgIGVudi0+ ZHRsYl90dGVbaV0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNDEwLDEwICsxNDI3LDEwIEBACiAgICAgICAg IH0KICAgICBjYXNlIDB4NWQ6IC8vIEQtTU1VIGRhdGEgYWNjZXNzCiAgICAgICAgIHsKLSAgICAg ICAgICAgIHVuc2lnbmVkIGludCBpID0gKFQwID4+IDMpICYgMHgzZjsKKyAgICAgICAgICAgIHVu c2lnbmVkIGludCBpID0gKGFkZHIgPj4gMykgJiAweDNmOwogCiAgICAgICAgICAgICBlbnYtPmR0 bGJfdGFnW2ldID0gZW52LT5kbW11cmVnc1s2XTsKLSAgICAgICAgICAgIGVudi0+ZHRsYl90dGVb aV0gPSBUMTsKKyAgICAgICAgICAgIGVudi0+ZHRsYl90dGVbaV0gPSB2YWw7CiAgICAgICAgICAg ICByZXR1cm47CiAgICAgICAgIH0KICAgICBjYXNlIDB4NWY6IC8vIEQtTU1VIGRlbWFwCkBAIC0x NDM0LDE2ICsxNDUxLDE2IEBACiAgICAgY2FzZSAweDhhOiAvLyBQcmltYXJ5IG5vLWZhdWx0IExF LCBSTwogICAgIGNhc2UgMHg4YjogLy8gU2Vjb25kYXJ5IG5vLWZhdWx0IExFLCBSTwogICAgIGRl ZmF1bHQ6Ci0gICAgICAgIGRvX3VuYXNzaWduZWRfYWNjZXNzKFQwLCAxLCAwLCAxKTsKKyAgICAg ICAgZG9fdW5hc3NpZ25lZF9hY2Nlc3MoYWRkciwgMSwgMCwgMSk7CiAgICAgICAgIHJldHVybjsK ICAgICB9CiB9CiAjZW5kaWYgLyogQ09ORklHX1VTRVJfT05MWSAqLwogCi12b2lkIGhlbHBlcl9s ZGZfYXNpKGludCBhc2ksIGludCBzaXplLCBpbnQgcmQpCit2b2lkIGhlbHBlcl9sZGZfYXNpKHRh cmdldF91bG9uZyBhZGRyLCBpbnQgYXNpLCBpbnQgc2l6ZSwgaW50IHJkKQogewotICAgIHRhcmdl dF91bG9uZyB0bXBfVDAgPSBUMCwgdG1wX1QxID0gVDE7CiAgICAgdW5zaWduZWQgaW50IGk7Cisg ICAgdGFyZ2V0X3Vsb25nIHZhbDsKIAogICAgIHN3aXRjaCAoYXNpKSB7CiAgICAgY2FzZSAweGYw OiAvLyBCbG9jayBsb2FkIHByaW1hcnkKQEAgLTE0NTQsMzEgKzE0NzEsMjggQEAKICAgICAgICAg ICAgIHJhaXNlX2V4Y2VwdGlvbihUVF9JTExfSU5TTik7CiAgICAgICAgICAgICByZXR1cm47CiAg ICAgICAgIH0KLSAgICAgICAgaWYgKFQwICYgMHgzZikgeworICAgICAgICBpZiAoYWRkciAmIDB4 M2YpIHsKICAgICAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbihUVF9VTkFMSUdORUQpOwogICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsr KSB7Ci0gICAgICAgICAgICBoZWxwZXJfbGRfYXNpKGFzaSAmIDB4OGYsIDQsIDApOwotICAgICAg ICAgICAgKih1aW50MzJfdCAqKSZlbnYtPmZwcltyZCsrXSA9IFQxOwotICAgICAgICAgICAgVDAg Kz0gNDsKKyAgICAgICAgICAgICoodWludDMyX3QgKikmZW52LT5mcHJbcmQrK10gPSBoZWxwZXJf bGRfYXNpKGFkZHIsIGFzaSAmIDB4OGYsIDQsIDApOworICAgICAgICAgICAgYWRkciArPSA0Owog ICAgICAgICB9Ci0gICAgICAgIFQwID0gdG1wX1QwOwotICAgICAgICBUMSA9IHRtcF9UMTsKIAog ICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g ICAgaGVscGVyX2xkX2FzaShhc2ksIHNpemUsIDApOworICAgIHZhbCA9IGhlbHBlcl9sZF9hc2ko YWRkciwgYXNpLCBzaXplLCAwKTsKICAgICBzd2l0Y2goc2l6ZSkgewogICAgIGRlZmF1bHQ6CiAg ICAgY2FzZSA0OgotICAgICAgICAqKCh1aW50MzJfdCAqKSZGVDApID0gVDE7CisgICAgICAgICoo KHVpbnQzMl90ICopJkZUMCkgPSB2YWw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgODoKLSAg ICAgICAgKigoaW50NjRfdCAqKSZEVDApID0gVDE7CisgICAgICAgICooKGludDY0X3QgKikmRFQw KSA9IHZhbDsKICAgICAgICAgYnJlYWs7CiAjaWYgZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKQog ICAgIGNhc2UgMTY6CkBAIC0xNDg2LDEzICsxNTAwLDEyIEBACiAgICAgICAgIGJyZWFrOwogI2Vu ZGlmCiAgICAgfQotICAgIFQxID0gdG1wX1QxOwogfQogCi12b2lkIGhlbHBlcl9zdGZfYXNpKGlu dCBhc2ksIGludCBzaXplLCBpbnQgcmQpCit2b2lkIGhlbHBlcl9zdGZfYXNpKHRhcmdldF91bG9u ZyBhZGRyLCBpbnQgYXNpLCBpbnQgc2l6ZSwgaW50IHJkKQogewotICAgIHRhcmdldF91bG9uZyB0 bXBfVDAgPSBUMCwgdG1wX1QxID0gVDE7CiAgICAgdW5zaWduZWQgaW50IGk7CisgICAgdGFyZ2V0 X3Vsb25nIHZhbCA9IDA7CiAKICAgICBzd2l0Y2ggKGFzaSkgewogICAgIGNhc2UgMHhmMDogLy8g QmxvY2sgc3RvcmUgcHJpbWFyeQpAQCAtMTUwMywxNyArMTUxNiwxNSBAQAogICAgICAgICAgICAg cmFpc2VfZXhjZXB0aW9uKFRUX0lMTF9JTlNOKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg ICAgfQotICAgICAgICBpZiAoVDAgJiAweDNmKSB7CisgICAgICAgIGlmIChhZGRyICYgMHgzZikg ewogICAgICAgICAgICAgcmFpc2VfZXhjZXB0aW9uKFRUX1VOQUxJR05FRCk7CiAgICAgICAgICAg ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsK LSAgICAgICAgICAgIFQxID0gKih1aW50MzJfdCAqKSZlbnYtPmZwcltyZCsrXTsKLSAgICAgICAg ICAgIGhlbHBlcl9zdF9hc2koYXNpICYgMHg4ZiwgNCk7Ci0gICAgICAgICAgICBUMCArPSA0Owor ICAgICAgICAgICAgdmFsID0gKih1aW50MzJfdCAqKSZlbnYtPmZwcltyZCsrXTsKKyAgICAgICAg ICAgIGhlbHBlcl9zdF9hc2koYWRkciwgdmFsLCBhc2kgJiAweDhmLCA0KTsKKyAgICAgICAgICAg IGFkZHIgKz0gNDsKICAgICAgICAgfQotICAgICAgICBUMCA9IHRtcF9UMDsKLSAgICAgICAgVDEg PSB0bXBfVDE7CiAKICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CkBAIC0xNTIzLDEwICsx NTM0LDEwIEBACiAgICAgc3dpdGNoKHNpemUpIHsKICAgICBkZWZhdWx0OgogICAgIGNhc2UgNDoK LSAgICAgICAgVDEgPSAqKCh1aW50MzJfdCAqKSZGVDApOworICAgICAgICB2YWwgPSAqKCh1aW50 MzJfdCAqKSZGVDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDg6Ci0gICAgICAgIFQxID0g KigoaW50NjRfdCAqKSZEVDApOworICAgICAgICB2YWwgPSAqKChpbnQ2NF90ICopJkRUMCk7CiAg ICAgICAgIGJyZWFrOwogI2lmIGRlZmluZWQoQ09ORklHX1VTRVJfT05MWSkKICAgICBjYXNlIDE2 OgpAQCAtMTUzNCwxNCArMTU0NSwzNiBAQAogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIH0K LSAgICBoZWxwZXJfc3RfYXNpKGFzaSwgc2l6ZSk7Ci0gICAgVDEgPSB0bXBfVDE7CisgICAgaGVs cGVyX3N0X2FzaShhZGRyLCB2YWwsIGFzaSwgc2l6ZSk7CiB9CiAKK3RhcmdldF91bG9uZyBoZWxw ZXJfY2FzX2FzaSh0YXJnZXRfdWxvbmcgYWRkciwgdGFyZ2V0X3Vsb25nIHZhbDEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHZhbDIsIHVpbnQzMl90IGFzaSkKK3sK KyAgICB0YXJnZXRfdWxvbmcgcmV0OworCisgICAgdmFsMSAmPSAweGZmZmZmZmZmVUw7CisgICAg cmV0ID0gaGVscGVyX2xkX2FzaShhZGRyLCBhc2ksIDQsIDApOworICAgIHJldCAmPSAweGZmZmZm ZmZmVUw7CisgICAgaWYgKHZhbDEgPT0gcmV0KQorICAgICAgICBoZWxwZXJfc3RfYXNpKGFkZHIs IHZhbDIgJiAweGZmZmZmZmZmVUwsIGFzaSwgNCk7CisgICAgcmV0dXJuIHJldDsKK30KKwordGFy Z2V0X3Vsb25nIGhlbHBlcl9jYXN4X2FzaSh0YXJnZXRfdWxvbmcgYWRkciwgdGFyZ2V0X3Vsb25n IHZhbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB2YWwyLCB1 aW50MzJfdCBhc2kpCit7CisgICAgdGFyZ2V0X3Vsb25nIHJldDsKKworICAgIHJldCA9IGhlbHBl cl9sZF9hc2koYWRkciwgYXNpLCA4LCAwKTsKKyAgICBpZiAodmFsMSA9PSByZXQpCisgICAgICAg IGhlbHBlcl9zdF9hc2koYWRkciwgdmFsMiwgYXNpLCA4KTsKKyAgICByZXR1cm4gcmV0OworfQog I2VuZGlmIC8qIFRBUkdFVF9TUEFSQzY0ICovCiAKICNpZm5kZWYgVEFSR0VUX1NQQVJDNjQKLXZv aWQgaGVscGVyX3JldHQoKQordm9pZCBoZWxwZXJfcmV0dCh2b2lkKQogewogICAgIHVuc2lnbmVk IGludCBjd3A7CiAKQEAgLTE1NTgsNiArMTU5MSwxMSBAQAogfQogI2VuZGlmCiAKK3VpbnQ2NF90 IGhlbHBlcl9wYWNrNjQodGFyZ2V0X3Vsb25nIGhpZ2gsIHRhcmdldF91bG9uZyBsb3cpCit7Cisg ICAgcmV0dXJuICgodWludDY0X3QpaGlnaCA8PCAzMikgfCAodWludDY0X3QpKGxvdyAmIDB4ZmZm ZmZmZmYpOworfQorCiB2b2lkIGhlbHBlcl9sZGZzcih2b2lkKQogewogICAgIGludCBybmRfbW9k ZTsKQEAgLTE1ODYsMjQgKzE2MjQsMjQgQEAKIH0KIAogI2lmbmRlZiBUQVJHRVRfU1BBUkM2NAot dm9pZCBkb193cnBzcigpCit2b2lkIGhlbHBlcl93cnBzcih0YXJnZXRfdWxvbmcgbmV3X3BzcikK IHsKLSAgICBpZiAoKFQwICYgUFNSX0NXUCkgPj0gTldJTkRPV1MpCisgICAgaWYgKChuZXdfcHNy ICYgUFNSX0NXUCkgPj0gTldJTkRPV1MpCiAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbihUVF9JTExf SU5TTik7CiAgICAgZWxzZQotICAgICAgICBQVVRfUFNSKGVudiwgVDApOworICAgICAgICBQVVRf UFNSKGVudiwgbmV3X3Bzcik7CiB9CiAKLXZvaWQgZG9fcmRwc3IoKQordGFyZ2V0X3Vsb25nIGhl bHBlcl9yZHBzcih2b2lkKQogewotICAgIFQwID0gR0VUX1BTUihlbnYpOworICAgIHJldHVybiBH RVRfUFNSKGVudik7CiB9CiAKICNlbHNlCiAKLXZvaWQgZG9fcG9wYygpCit0YXJnZXRfdWxvbmcg aGVscGVyX3BvcGModGFyZ2V0X3Vsb25nIHZhbCkKIHsKLSAgICBUMCA9IGN0cG9wNjQoVDEpOwor ICAgIHJldHVybiBjdHBvcDY0KHZhbCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgKmdl dF9ncmVnc2V0KHVpbnQ2NF90IHBzdGF0ZSkKQEAgLTE2MzgsMTIgKzE2NzYsMTIgQEAKICAgICBl bnYtPnBzdGF0ZSA9IG5ld19wc3RhdGU7CiB9CiAKLXZvaWQgZG9fd3Jwc3RhdGUodm9pZCkKK3Zv aWQgaGVscGVyX3dycHN0YXRlKHRhcmdldF91bG9uZyBuZXdfc3RhdGUpCiB7Ci0gICAgY2hhbmdl X3BzdGF0ZShUMCAmIDB4ZjNmKTsKKyAgICBjaGFuZ2VfcHN0YXRlKG5ld19zdGF0ZSAmIDB4ZjNm KTsKIH0KIAotdm9pZCBkb19kb25lKHZvaWQpCit2b2lkIGhlbHBlcl9kb25lKHZvaWQpCiB7CiAg ICAgZW52LT50bC0tOwogICAgIGVudi0+cGMgPSBlbnYtPnRucGNbZW52LT50bF07CkBAIC0xNjU0 LDcgKzE2OTIsNyBAQAogICAgIFBVVF9DV1A2NChlbnYsIGVudi0+dHN0YXRlW2Vudi0+dGxdICYg MHhmZik7CiB9CiAKLXZvaWQgZG9fcmV0cnkodm9pZCkKK3ZvaWQgaGVscGVyX3JldHJ5KHZvaWQp CiB7CiAgICAgZW52LT50bC0tOwogICAgIGVudi0+cGMgPSBlbnYtPnRwY1tlbnYtPnRsXTsKSW5k ZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL29wX21lbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy90 YXJnZXQtc3BhcmMvb3BfbWVtLmgJMjAwOC0wMi0yMiAxNjoxNjoyMS4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvdGFyZ2V0LXNwYXJjL29wX21lbS5oCTIwMDgtMDItMjIgMjA6MDU6MjIuMDAwMDAw MDAwICswMDAwCkBAIC00LDY1ICs0LDYgQEAKICNkZWZpbmUgQUREUih4KSAoeCkKICNlbmRpZgog Ci0vKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIGxvYWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKiovCi0jZGVmaW5lIFNQQVJDX0xEX09QKG5hbWUsIHFwKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIE9Q UFJPVE8gZ2x1ZShnbHVlKG9wXywgbmFtZSksIE1FTVNVRkZJWCkodm9pZCkgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVDEgPSAodGFyZ2V0 X3Vsb25nKWdsdWUocXAsIE1FTVNVRkZJWCkoQUREUihUMCkpOyAgICAgICAgICAgICAgICAgICAg ICAgICBcCi19Ci0KLSNkZWZpbmUgU1BBUkNfTERfT1BfUyhuYW1lLCBxcCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIE9QUFJPVE8gZ2x1ZShnbHVl KG9wXywgbmFtZSksIE1FTVNVRkZJWCkodm9pZCkgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgVDEgPSAodGFyZ2V0X2xvbmcpZ2x1ZShxcCwgTUVNU1VGRklYKShB RERSKFQwKSk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSNkZWZpbmUgU1BBUkNf U1RfT1AobmFtZSwgb3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLXZvaWQgT1BQUk9UTyBnbHVlKGdsdWUob3BfLCBuYW1lKSwgTUVNU1VGRklYKSh2 b2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICBnbHVlKG9wLCBNRU1TVUZGSVgpKEFERFIoVDApLCBUMSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi19Ci0KLVNQQVJDX0xEX09QKGxkLCBsZGwpOwotU1BBUkNf TERfT1AobGR1YiwgbGR1Yik7Ci1TUEFSQ19MRF9PUChsZHVoLCBsZHV3KTsKLVNQQVJDX0xEX09Q X1MobGRzYiwgbGRzYik7Ci1TUEFSQ19MRF9PUF9TKGxkc2gsIGxkc3cpOwotCi0vKioqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlciBzdG9yZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqKiovCi1TUEFSQ19TVF9PUChzdCwgc3RsKTsKLVNQQVJDX1NUX09QKHN0Yiwgc3Ri KTsKLVNQQVJDX1NUX09QKHN0aCwgc3R3KTsKLQotdm9pZCBPUFBST1RPIGdsdWUob3Bfc3RkLCBN RU1TVUZGSVgpKHZvaWQpCi17Ci0gICAgdWludDY0X3QgdG1wID0gKCh1aW50NjRfdClUMSA8PCAz MikgfCAodWludDY0X3QpKFQyICYgMHhmZmZmZmZmZik7Ci0KLSAgICBnbHVlKHN0cSwgTUVNU1VG RklYKShBRERSKFQwKSwgdG1wKTsKLX0KLQotdm9pZCBPUFBST1RPIGdsdWUob3BfbGRzdHViLCBN RU1TVUZGSVgpKHZvaWQpCi17Ci0gICAgVDEgPSBnbHVlKGxkdWIsIE1FTVNVRkZJWCkoQUREUihU MCkpOwotICAgIGdsdWUoc3RiLCBNRU1TVUZGSVgpKEFERFIoVDApLCAweGZmKTsgICAgIC8qIFhY WDogU2hvdWxkIGJlIEF0b21pY2FsbHkgKi8KLX0KLQotdm9pZCBPUFBST1RPIGdsdWUob3Bfc3dh cCwgTUVNU1VGRklYKSh2b2lkKQotewotICAgIHRhcmdldF91bG9uZyB0bXAgPSBnbHVlKGxkbCwg TUVNU1VGRklYKShBRERSKFQwKSk7Ci0gICAgZ2x1ZShzdGwsIE1FTVNVRkZJWCkoQUREUihUMCks IFQxKTsgICAgICAgLyogWFhYOiBTaG91bGQgYmUgQXRvbWljYWxseSAqLwotICAgIFQxID0gdG1w OwotfQotCi12b2lkIE9QUFJPVE8gZ2x1ZShvcF9sZGQsIE1FTVNVRkZJWCkodm9pZCkKLXsKLSAg ICB1aW50NjRfdCB0bXA7Ci0KLSAgICB0bXAgPSBnbHVlKGxkcSwgTUVNU1VGRklYKShBRERSKFQw KSk7Ci0gICAgVDEgPSB0bXAgPj4gMzI7Ci0gICAgVDAgPSB0bXAgJiAweGZmZmZmZmZmOwotfQot CiAvKioqICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0aW5nLXBvaW50IHN0b3JlICAgICAg ICAgICAgICAgICAgICAgICAgICAqKiovCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF9zdGYsIE1FTVNV RkZJWCkgKHZvaWQpCiB7CkBAIC0xMDcsMTggKzQ4LDQgQEAKIH0KICNlbmRpZgogCi0jaWZkZWYg VEFSR0VUX1NQQVJDNjQKLXZvaWQgT1BQUk9UTyBnbHVlKG9wX2xkdXcsIE1FTVNVRkZJWCkodm9p ZCkKLXsKLSAgICBUMSA9ICh1aW50NjRfdCkoZ2x1ZShsZGwsIE1FTVNVRkZJWCkoQUREUihUMCkp ICYgMHhmZmZmZmZmZik7Ci19Ci0KLXZvaWQgT1BQUk9UTyBnbHVlKG9wX2xkc3csIE1FTVNVRkZJ WCkodm9pZCkKLXsKLSAgICBUMSA9IChpbnQ2NF90KShnbHVlKGxkbCwgTUVNU1VGRklYKShBRERS KFQwKSkgJiAweGZmZmZmZmZmKTsKLX0KLQotU1BBUkNfTERfT1AobGR4LCBsZHEpOwotU1BBUkNf U1RfT1Aoc3R4LCBzdHEpOwotI2VuZGlmCiAjdW5kZWYgTUVNU1VGRklYCkluZGV4OiBxZW11L3Rh cmdldC1zcGFyYy9leGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3RhcmdldC1zcGFyYy9l eGVjLmgJMjAwOC0wMi0yMiAxODo1ODo0MC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0 LXNwYXJjL2V4ZWMuaAkyMDA4LTAyLTIzIDE2OjM0OjM4LjAwMDAwMDAwMCArMDAwMApAQCAtNTIs MTIgKzUyLDYgQEAKIHZvaWQgY3B1X2xvY2sodm9pZCk7CiB2b2lkIGNwdV91bmxvY2sodm9pZCk7 CiB2b2lkIGNwdV9sb29wX2V4aXQodm9pZCk7Ci12b2lkIGhlbHBlcl9mbHVzaCh0YXJnZXRfdWxv bmcgYWRkcik7Ci12b2lkIGhlbHBlcl9sZF9hc2koaW50IGFzaSwgaW50IHNpemUsIGludCBzaWdu KTsKLXZvaWQgaGVscGVyX3N0X2FzaShpbnQgYXNpLCBpbnQgc2l6ZSk7Ci12b2lkIGhlbHBlcl9s ZGZfYXNpKGludCBhc2ksIGludCBzaXplLCBpbnQgcmQpOwotdm9pZCBoZWxwZXJfc3RmX2FzaShp bnQgYXNpLCBpbnQgc2l6ZSwgaW50IHJkKTsKLXZvaWQgaGVscGVyX3JldHQodm9pZCk7CiB2b2lk IGhlbHBlcl9sZGZzcih2b2lkKTsKIHZvaWQgc2V0X2N3cChpbnQgbmV3X2N3cCk7CiB2b2lkIGRv X2ZpdG9zKHZvaWQpOwpAQCAtMTAxLDIzICs5NSwxMyBAQAogdm9pZCBkb19mY21wZXFfZmNjMih2 b2lkKTsKIHZvaWQgZG9fZmNtcGVxX2ZjYzModm9pZCk7CiAjZW5kaWYKLXZvaWQgZG9fcG9wYygp Owotdm9pZCBkb193cnBzdGF0ZSgpOwotdm9pZCBkb19kb25lKCk7Ci12b2lkIGRvX3JldHJ5KCk7 CiAjZW5kaWYKLXZvaWQgZG9fbGRkX2tlcm5lbCh0YXJnZXRfdWxvbmcgYWRkcik7Ci12b2lkIGRv X2xkZF91c2VyKHRhcmdldF91bG9uZyBhZGRyKTsKLXZvaWQgZG9fbGRkX3Jhdyh0YXJnZXRfdWxv bmcgYWRkcik7CiB2b2lkIGRvX2ludGVycnVwdChpbnQgaW50bm8pOwogdm9pZCByYWlzZV9leGNl cHRpb24oaW50IHR0KTsKIHZvaWQgY2hlY2tfaWVlZV9leGNlcHRpb25zKCk7CiB2b2lkIG1lbWNw eTMyKHRhcmdldF91bG9uZyAqZHN0LCBjb25zdCB0YXJnZXRfdWxvbmcgKnNyYyk7CiB0YXJnZXRf dWxvbmcgbW11X3Byb2JlKENQVVN0YXRlICplbnYsIHRhcmdldF91bG9uZyBhZGRyZXNzLCBpbnQg bW11bGV2KTsKIHZvaWQgZHVtcF9tbXUoQ1BVU3RhdGUgKmVudik7Ci12b2lkIGhlbHBlcl9kZWJ1 ZygpOwotdm9pZCBkb193cnBzcigpOwotdm9pZCBkb19yZHBzcigpOwogCiAvKiBYWFg6IG1vdmUg dGhhdCB0byBhIGdlbmVyaWMgaGVhZGVyICovCiAjaWYgIWRlZmluZWQoQ09ORklHX1VTRVJfT05M WSkK ------=_Part_1926_26149892.1203791389276--