From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JSI0w-0000B3-RA for qemu-devel@nongnu.org; Thu, 21 Feb 2008 15:27:30 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JSI0u-00009n-6Y for qemu-devel@nongnu.org; Thu, 21 Feb 2008 15:27:29 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JSI0t-00009k-SZ for qemu-devel@nongnu.org; Thu, 21 Feb 2008 15:27:27 -0500 Received: from nf-out-0910.google.com ([64.233.182.185]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JSI0s-0003Qq-Tv for qemu-devel@nongnu.org; Thu, 21 Feb 2008 15:27:27 -0500 Received: by nf-out-0910.google.com with SMTP id 30so102143nfu.12 for ; Thu, 21 Feb 2008 12:27:24 -0800 (PST) Message-ID: Date: Thu, 21 Feb 2008 22:27:24 +0200 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_5547_9715581.1203625644422" Subject: [Qemu-devel] [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 ------=_Part_5547_9715581.1203625644422 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline 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. ------=_Part_5547_9715581.1203625644422 Content-Type: text/x-diff; name=tcg_sparc_target.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fcxrkciy Content-Disposition: attachment; filename=tcg_sparc_target.diff SW5kZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMJMjAwOC0wMi0yMSAyMDowMDoyOC4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCTIwMDgtMDItMjEgMjA6 MDI6MDcuMDAwMDAwMDAwICswMDAwCkBAIC00NCw2ICs0NCw4MSBAQAogI2RlZmluZSBKVU1QX1BD ICAgICAyIC8qIGR5bmFtaWMgcGMgdmFsdWUgd2hpY2ggdGFrZXMgb25seSB0d28gdmFsdWVzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIGp1bXBfcGNbVDJdICovCiAKKyNp ZmRlZiBUQVJHRVRfU1BBUkM2NAorI2RlZmluZSBUQ0dfVFlQRV9UTCBUQ0dfVFlQRV9JNjQKKyNk ZWZpbmUgdGNnX2dlbl9tb3ZpX3RsIHRjZ19nZW5fbW92aV9pNjQKKyNkZWZpbmUgdGNnX2dlbl9t b3ZfdGwgdGNnX2dlbl9tb3ZfaTY0CisjZGVmaW5lIHRjZ19nZW5fbGQ4dV90bCB0Y2dfZ2VuX2xk OHVfaTY0CisjZGVmaW5lIHRjZ19nZW5fbGQ4c190bCB0Y2dfZ2VuX2xkOHNfaTY0CisjZGVmaW5l IHRjZ19nZW5fbGQxNnVfdGwgdGNnX2dlbl9sZDE2dV9pNjQKKyNkZWZpbmUgdGNnX2dlbl9sZDE2 c190bCB0Y2dfZ2VuX2xkMTZzX2k2NAorI2RlZmluZSB0Y2dfZ2VuX2xkMzJ1X3RsIHRjZ19nZW5f bGQzMnVfaTY0CisjZGVmaW5lIHRjZ19nZW5fbGQzMnNfdGwgdGNnX2dlbl9sZDMyc19pNjQKKyNk ZWZpbmUgdGNnX2dlbl9sZF90bCB0Y2dfZ2VuX2xkX2k2NAorI2RlZmluZSB0Y2dfZ2VuX3N0OF90 bCB0Y2dfZ2VuX3N0OF9pNjQKKyNkZWZpbmUgdGNnX2dlbl9zdDE2X3RsIHRjZ19nZW5fc3QxNl9p NjQKKyNkZWZpbmUgdGNnX2dlbl9zdDMyX3RsIHRjZ19nZW5fc3QzMl9pNjQKKyNkZWZpbmUgdGNn X2dlbl9zdF90bCB0Y2dfZ2VuX3N0X2k2NAorI2RlZmluZSB0Y2dfZ2VuX2FkZF90bCB0Y2dfZ2Vu X2FkZF9pNjQKKyNkZWZpbmUgdGNnX2dlbl9hZGRpX3RsIHRjZ19nZW5fYWRkaV9pNjQKKyNkZWZp bmUgdGNnX2dlbl9zdWJfdGwgdGNnX2dlbl9zdWJfaTY0CisjZGVmaW5lIHRjZ19nZW5fc3ViaV90 bCB0Y2dfZ2VuX3N1YmlfaTY0CisjZGVmaW5lIHRjZ19nZW5fYW5kX3RsIHRjZ19nZW5fYW5kX2k2 NAorI2RlZmluZSB0Y2dfZ2VuX2FuZGlfdGwgdGNnX2dlbl9hbmRpX2k2NAorI2RlZmluZSB0Y2df Z2VuX29yX3RsIHRjZ19nZW5fb3JfaTY0CisjZGVmaW5lIHRjZ19nZW5fb3JpX3RsIHRjZ19nZW5f b3JpX2k2NAorI2RlZmluZSB0Y2dfZ2VuX3hvcl90bCB0Y2dfZ2VuX3hvcl9pNjQKKyNkZWZpbmUg dGNnX2dlbl94b3JpX3RsIHRjZ19nZW5feG9yaV9pNjQKKyNkZWZpbmUgdGNnX2dlbl9zaGxfdGwg dGNnX2dlbl9zaGxfaTY0CisjZGVmaW5lIHRjZ19nZW5fc2hsaV90bCB0Y2dfZ2VuX3NobGlfaTY0 CisjZGVmaW5lIHRjZ19nZW5fc2hyX3RsIHRjZ19nZW5fc2hyX2k2NAorI2RlZmluZSB0Y2dfZ2Vu X3NocmlfdGwgdGNnX2dlbl9zaHJpX2k2NAorI2RlZmluZSB0Y2dfZ2VuX3Nhcl90bCB0Y2dfZ2Vu X3Nhcl9pNjQKKyNkZWZpbmUgdGNnX2dlbl9zYXJpX3RsIHRjZ19nZW5fc2FyaV9pNjQKKyNlbHNl CisjZGVmaW5lIFRDR19UWVBFX1RMIFRDR19UWVBFX0kzMgorI2RlZmluZSB0Y2dfZ2VuX21vdmlf dGwgdGNnX2dlbl9tb3ZpX2kzMgorI2RlZmluZSB0Y2dfZ2VuX21vdl90bCB0Y2dfZ2VuX21vdl9p MzIKKyNkZWZpbmUgdGNnX2dlbl9sZDh1X3RsIHRjZ19nZW5fbGQ4dV9pMzIKKyNkZWZpbmUgdGNn X2dlbl9sZDhzX3RsIHRjZ19nZW5fbGQ4c19pMzIKKyNkZWZpbmUgdGNnX2dlbl9sZDE2dV90bCB0 Y2dfZ2VuX2xkMTZ1X2kzMgorI2RlZmluZSB0Y2dfZ2VuX2xkMTZzX3RsIHRjZ19nZW5fbGQxNnNf aTMyCisjZGVmaW5lIHRjZ19nZW5fbGQzMnVfdGwgdGNnX2dlbl9sZF9pMzIKKyNkZWZpbmUgdGNn X2dlbl9sZDMyc190bCB0Y2dfZ2VuX2xkX2kzMgorI2RlZmluZSB0Y2dfZ2VuX2xkX3RsIHRjZ19n ZW5fbGRfaTMyCisjZGVmaW5lIHRjZ19nZW5fc3Q4X3RsIHRjZ19nZW5fc3Q4X2kzMgorI2RlZmlu ZSB0Y2dfZ2VuX3N0MTZfdGwgdGNnX2dlbl9zdDE2X2kzMgorI2RlZmluZSB0Y2dfZ2VuX3N0MzJf dGwgdGNnX2dlbl9zdF9pMzIKKyNkZWZpbmUgdGNnX2dlbl9zdF90bCB0Y2dfZ2VuX3N0X2kzMgor I2RlZmluZSB0Y2dfZ2VuX2FkZF90bCB0Y2dfZ2VuX2FkZF9pMzIKKyNkZWZpbmUgdGNnX2dlbl9h ZGRpX3RsIHRjZ19nZW5fYWRkaV9pMzIKKyNkZWZpbmUgdGNnX2dlbl9zdWJfdGwgdGNnX2dlbl9z dWJfaTMyCisjZGVmaW5lIHRjZ19nZW5fc3ViaV90bCB0Y2dfZ2VuX3N1YmlfaTMyCisjZGVmaW5l IHRjZ19nZW5fYW5kX3RsIHRjZ19nZW5fYW5kX2kzMgorI2RlZmluZSB0Y2dfZ2VuX2FuZGlfdGwg dGNnX2dlbl9hbmRpX2kzMgorI2RlZmluZSB0Y2dfZ2VuX29yX3RsIHRjZ19nZW5fb3JfaTMyCisj ZGVmaW5lIHRjZ19nZW5fb3JpX3RsIHRjZ19nZW5fb3JpX2kzMgorI2RlZmluZSB0Y2dfZ2VuX3hv cl90bCB0Y2dfZ2VuX3hvcl9pMzIKKyNkZWZpbmUgdGNnX2dlbl94b3JpX3RsIHRjZ19nZW5feG9y aV9pMzIKKyNkZWZpbmUgdGNnX2dlbl9zaGxfdGwgdGNnX2dlbl9zaGxfaTMyCisjZGVmaW5lIHRj Z19nZW5fc2hsaV90bCB0Y2dfZ2VuX3NobGlfaTMyCisjZGVmaW5lIHRjZ19nZW5fc2hyX3RsIHRj Z19nZW5fc2hyX2kzMgorI2RlZmluZSB0Y2dfZ2VuX3NocmlfdGwgdGNnX2dlbl9zaHJpX2kzMgor I2RlZmluZSB0Y2dfZ2VuX3Nhcl90bCB0Y2dfZ2VuX3Nhcl9pMzIKKyNkZWZpbmUgdGNnX2dlbl9z YXJpX3RsIHRjZ19nZW5fc2FyaV9pMzIKKyNlbmRpZgorCisjaWYgVENHX1RBUkdFVF9SRUdfQklU UyA9PSAzMgorI2RlZmluZSB0Y2dfZ2VuX2xkX3B0ciB0Y2dfZ2VuX2xkX2kzMgorI2Vsc2UKKyNk ZWZpbmUgdGNnX2dlbl9sZF9wdHIgdGNnX2dlbl9sZF9pNjQKKyNlbmRpZgorCisvKiBnbG9iYWwg cmVnaXN0ZXIgaW5kZXhlcyAqLworc3RhdGljIFRDR3YgY3B1X2VudiwgY3B1X1RbM10sIGNwdV9y ZWd3cHRyOworLyogbG9jYWwgcmVnaXN0ZXIgaW5kZXhlcyAob25seSB1c2VkIGluc2lkZSBvbGQg bWljcm8gb3BzKSAqLworc3RhdGljIFRDR3YgY3B1X3RtcDA7CisKIHR5cGVkZWYgc3RydWN0IERp c2FzQ29udGV4dCB7CiAgICAgdGFyZ2V0X3Vsb25nIHBjOyAgICAvKiBjdXJyZW50IFByb2dyYW0g Q291bnRlcjogaW50ZWdlciBvciBEWU5BTUlDX1BDICovCiAgICAgdGFyZ2V0X3Vsb25nIG5wYzsg ICAvKiBuZXh0IFBDOiBpbnRlZ2VyIG9yIERZTkFNSUNfUEMgb3IgSlVNUF9QQyAqLwpAQCAtMTAy LDE5NSArMTc3LDYgQEAKIAogc3RhdGljIHZvaWQgZGlzYXNfc3BhcmNfaW5zbihEaXNhc0NvbnRl eHQgKiBkYyk7CiAKLXN0YXRpYyBHZW5PcEZ1bmMgKiBjb25zdCBnZW5fb3BfbW92bF9UTl9yZWdb Ml1bMzJdID0gewotICAgIHsKLSAgICAgZ2VuX29wX21vdmxfZzBfVDAsCi0gICAgIGdlbl9vcF9t b3ZsX2cxX1QwLAotICAgICBnZW5fb3BfbW92bF9nMl9UMCwKLSAgICAgZ2VuX29wX21vdmxfZzNf VDAsCi0gICAgIGdlbl9vcF9tb3ZsX2c0X1QwLAotICAgICBnZW5fb3BfbW92bF9nNV9UMCwKLSAg ICAgZ2VuX29wX21vdmxfZzZfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2c3X1QwLAotICAgICBnZW5f b3BfbW92bF9vMF9UMCwKLSAgICAgZ2VuX29wX21vdmxfbzFfVDAsCi0gICAgIGdlbl9vcF9tb3Zs X28yX1QwLAotICAgICBnZW5fb3BfbW92bF9vM19UMCwKLSAgICAgZ2VuX29wX21vdmxfbzRfVDAs Ci0gICAgIGdlbl9vcF9tb3ZsX281X1QwLAotICAgICBnZW5fb3BfbW92bF9vNl9UMCwKLSAgICAg Z2VuX29wX21vdmxfbzdfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2wwX1QwLAotICAgICBnZW5fb3Bf bW92bF9sMV9UMCwKLSAgICAgZ2VuX29wX21vdmxfbDJfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2wz X1QwLAotICAgICBnZW5fb3BfbW92bF9sNF9UMCwKLSAgICAgZ2VuX29wX21vdmxfbDVfVDAsCi0g ICAgIGdlbl9vcF9tb3ZsX2w2X1QwLAotICAgICBnZW5fb3BfbW92bF9sN19UMCwKLSAgICAgZ2Vu X29wX21vdmxfaTBfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2kxX1QwLAotICAgICBnZW5fb3BfbW92 bF9pMl9UMCwKLSAgICAgZ2VuX29wX21vdmxfaTNfVDAsCi0gICAgIGdlbl9vcF9tb3ZsX2k0X1Qw LAotICAgICBnZW5fb3BfbW92bF9pNV9UMCwKLSAgICAgZ2VuX29wX21vdmxfaTZfVDAsCi0gICAg IGdlbl9vcF9tb3ZsX2k3X1QwLAotICAgICB9LAotICAgIHsKLSAgICAgZ2VuX29wX21vdmxfZzBf VDEsCi0gICAgIGdlbl9vcF9tb3ZsX2cxX1QxLAotICAgICBnZW5fb3BfbW92bF9nMl9UMSwKLSAg ICAgZ2VuX29wX21vdmxfZzNfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2c0X1QxLAotICAgICBnZW5f b3BfbW92bF9nNV9UMSwKLSAgICAgZ2VuX29wX21vdmxfZzZfVDEsCi0gICAgIGdlbl9vcF9tb3Zs X2c3X1QxLAotICAgICBnZW5fb3BfbW92bF9vMF9UMSwKLSAgICAgZ2VuX29wX21vdmxfbzFfVDEs Ci0gICAgIGdlbl9vcF9tb3ZsX28yX1QxLAotICAgICBnZW5fb3BfbW92bF9vM19UMSwKLSAgICAg Z2VuX29wX21vdmxfbzRfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX281X1QxLAotICAgICBnZW5fb3Bf bW92bF9vNl9UMSwKLSAgICAgZ2VuX29wX21vdmxfbzdfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2ww X1QxLAotICAgICBnZW5fb3BfbW92bF9sMV9UMSwKLSAgICAgZ2VuX29wX21vdmxfbDJfVDEsCi0g ICAgIGdlbl9vcF9tb3ZsX2wzX1QxLAotICAgICBnZW5fb3BfbW92bF9sNF9UMSwKLSAgICAgZ2Vu X29wX21vdmxfbDVfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2w2X1QxLAotICAgICBnZW5fb3BfbW92 bF9sN19UMSwKLSAgICAgZ2VuX29wX21vdmxfaTBfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2kxX1Qx LAotICAgICBnZW5fb3BfbW92bF9pMl9UMSwKLSAgICAgZ2VuX29wX21vdmxfaTNfVDEsCi0gICAg IGdlbl9vcF9tb3ZsX2k0X1QxLAotICAgICBnZW5fb3BfbW92bF9pNV9UMSwKLSAgICAgZ2VuX29w X21vdmxfaTZfVDEsCi0gICAgIGdlbl9vcF9tb3ZsX2k3X1QxLAotICAgICB9Ci19OwotCi1zdGF0 aWMgR2VuT3BGdW5jICogY29uc3QgZ2VuX29wX21vdmxfcmVnX1ROWzNdWzMyXSA9IHsKLSAgICB7 Ci0gICAgIGdlbl9vcF9tb3ZsX1QwX2cwLAotICAgICBnZW5fb3BfbW92bF9UMF9nMSwKLSAgICAg Z2VuX29wX21vdmxfVDBfZzIsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2czLAotICAgICBnZW5fb3Bf bW92bF9UMF9nNCwKLSAgICAgZ2VuX29wX21vdmxfVDBfZzUsCi0gICAgIGdlbl9vcF9tb3ZsX1Qw X2c2LAotICAgICBnZW5fb3BfbW92bF9UMF9nNywKLSAgICAgZ2VuX29wX21vdmxfVDBfbzAsCi0g ICAgIGdlbl9vcF9tb3ZsX1QwX28xLAotICAgICBnZW5fb3BfbW92bF9UMF9vMiwKLSAgICAgZ2Vu X29wX21vdmxfVDBfbzMsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX280LAotICAgICBnZW5fb3BfbW92 bF9UMF9vNSwKLSAgICAgZ2VuX29wX21vdmxfVDBfbzYsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX283 LAotICAgICBnZW5fb3BfbW92bF9UMF9sMCwKLSAgICAgZ2VuX29wX21vdmxfVDBfbDEsCi0gICAg IGdlbl9vcF9tb3ZsX1QwX2wyLAotICAgICBnZW5fb3BfbW92bF9UMF9sMywKLSAgICAgZ2VuX29w X21vdmxfVDBfbDQsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2w1LAotICAgICBnZW5fb3BfbW92bF9U MF9sNiwKLSAgICAgZ2VuX29wX21vdmxfVDBfbDcsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2kwLAot ICAgICBnZW5fb3BfbW92bF9UMF9pMSwKLSAgICAgZ2VuX29wX21vdmxfVDBfaTIsCi0gICAgIGdl bl9vcF9tb3ZsX1QwX2kzLAotICAgICBnZW5fb3BfbW92bF9UMF9pNCwKLSAgICAgZ2VuX29wX21v dmxfVDBfaTUsCi0gICAgIGdlbl9vcF9tb3ZsX1QwX2k2LAotICAgICBnZW5fb3BfbW92bF9UMF9p NywKLSAgICAgfSwKLSAgICB7Ci0gICAgIGdlbl9vcF9tb3ZsX1QxX2cwLAotICAgICBnZW5fb3Bf bW92bF9UMV9nMSwKLSAgICAgZ2VuX29wX21vdmxfVDFfZzIsCi0gICAgIGdlbl9vcF9tb3ZsX1Qx X2czLAotICAgICBnZW5fb3BfbW92bF9UMV9nNCwKLSAgICAgZ2VuX29wX21vdmxfVDFfZzUsCi0g ICAgIGdlbl9vcF9tb3ZsX1QxX2c2LAotICAgICBnZW5fb3BfbW92bF9UMV9nNywKLSAgICAgZ2Vu X29wX21vdmxfVDFfbzAsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX28xLAotICAgICBnZW5fb3BfbW92 bF9UMV9vMiwKLSAgICAgZ2VuX29wX21vdmxfVDFfbzMsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX280 LAotICAgICBnZW5fb3BfbW92bF9UMV9vNSwKLSAgICAgZ2VuX29wX21vdmxfVDFfbzYsCi0gICAg IGdlbl9vcF9tb3ZsX1QxX283LAotICAgICBnZW5fb3BfbW92bF9UMV9sMCwKLSAgICAgZ2VuX29w X21vdmxfVDFfbDEsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2wyLAotICAgICBnZW5fb3BfbW92bF9U MV9sMywKLSAgICAgZ2VuX29wX21vdmxfVDFfbDQsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2w1LAot ICAgICBnZW5fb3BfbW92bF9UMV9sNiwKLSAgICAgZ2VuX29wX21vdmxfVDFfbDcsCi0gICAgIGdl bl9vcF9tb3ZsX1QxX2kwLAotICAgICBnZW5fb3BfbW92bF9UMV9pMSwKLSAgICAgZ2VuX29wX21v dmxfVDFfaTIsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2kzLAotICAgICBnZW5fb3BfbW92bF9UMV9p NCwKLSAgICAgZ2VuX29wX21vdmxfVDFfaTUsCi0gICAgIGdlbl9vcF9tb3ZsX1QxX2k2LAotICAg ICBnZW5fb3BfbW92bF9UMV9pNywKLSAgICAgfSwKLSAgICB7Ci0gICAgIGdlbl9vcF9tb3ZsX1Qy X2cwLAotICAgICBnZW5fb3BfbW92bF9UMl9nMSwKLSAgICAgZ2VuX29wX21vdmxfVDJfZzIsCi0g ICAgIGdlbl9vcF9tb3ZsX1QyX2czLAotICAgICBnZW5fb3BfbW92bF9UMl9nNCwKLSAgICAgZ2Vu X29wX21vdmxfVDJfZzUsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2c2LAotICAgICBnZW5fb3BfbW92 bF9UMl9nNywKLSAgICAgZ2VuX29wX21vdmxfVDJfbzAsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX28x LAotICAgICBnZW5fb3BfbW92bF9UMl9vMiwKLSAgICAgZ2VuX29wX21vdmxfVDJfbzMsCi0gICAg IGdlbl9vcF9tb3ZsX1QyX280LAotICAgICBnZW5fb3BfbW92bF9UMl9vNSwKLSAgICAgZ2VuX29w X21vdmxfVDJfbzYsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX283LAotICAgICBnZW5fb3BfbW92bF9U Ml9sMCwKLSAgICAgZ2VuX29wX21vdmxfVDJfbDEsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2wyLAot ICAgICBnZW5fb3BfbW92bF9UMl9sMywKLSAgICAgZ2VuX29wX21vdmxfVDJfbDQsCi0gICAgIGdl bl9vcF9tb3ZsX1QyX2w1LAotICAgICBnZW5fb3BfbW92bF9UMl9sNiwKLSAgICAgZ2VuX29wX21v dmxfVDJfbDcsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2kwLAotICAgICBnZW5fb3BfbW92bF9UMl9p MSwKLSAgICAgZ2VuX29wX21vdmxfVDJfaTIsCi0gICAgIGdlbl9vcF9tb3ZsX1QyX2kzLAotICAg ICBnZW5fb3BfbW92bF9UMl9pNCwKLSAgICAgZ2VuX29wX21vdmxfVDJfaTUsCi0gICAgIGdlbl9v cF9tb3ZsX1QyX2k2LAotICAgICBnZW5fb3BfbW92bF9UMl9pNywKLSAgICAgfQotfTsKLQotc3Rh dGljIEdlbk9wRnVuYzEgKiBjb25zdCBnZW5fb3BfbW92bF9UTl9pbVszXSA9IHsKLSAgICBnZW5f b3BfbW92bF9UMF9pbSwKLSAgICBnZW5fb3BfbW92bF9UMV9pbSwKLSAgICBnZW5fb3BfbW92bF9U Ml9pbQotfTsKLQotLy8gU2lnbiBleHRlbmRpbmcgdmVyc2lvbgotc3RhdGljIEdlbk9wRnVuYzEg KiBjb25zdCBnZW5fb3BfbW92bF9UTl9zaW1bM10gPSB7Ci0gICAgZ2VuX29wX21vdmxfVDBfc2lt LAotICAgIGdlbl9vcF9tb3ZsX1QxX3NpbSwKLSAgICBnZW5fb3BfbW92bF9UMl9zaW0KLX07Ci0K ICNpZmRlZiBUQVJHRVRfU1BBUkM2NAogI2RlZmluZSBHRU4zMihmdW5jLCBOQU1FKSBcCiBzdGF0 aWMgR2VuT3BGdW5jICogY29uc3QgTkFNRSAjIyBfdGFibGUgWzY0XSA9IHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCkBAIC0zNzUsMjkgKzI2MSwxOCBAQAogI2VuZGlmCiAKICNpZm5k ZWYgQ09ORklHX1VTRVJfT05MWQotT1BfTERfVEFCTEUobGQpOwotT1BfTERfVEFCTEUoc3QpOwot T1BfTERfVEFCTEUobGR1Yik7Ci1PUF9MRF9UQUJMRShsZHVoKTsKLU9QX0xEX1RBQkxFKGxkc2Ip OwotT1BfTERfVEFCTEUobGRzaCk7Ci1PUF9MRF9UQUJMRShzdGIpOwotT1BfTERfVEFCTEUoc3Ro KTsKIE9QX0xEX1RBQkxFKHN0ZCk7Ci1PUF9MRF9UQUJMRShsZHN0dWIpOwotT1BfTERfVEFCTEUo c3dhcCk7CiBPUF9MRF9UQUJMRShsZGQpOwogT1BfTERfVEFCTEUoc3RmKTsKIE9QX0xEX1RBQkxF KHN0ZGYpOwogT1BfTERfVEFCTEUobGRmKTsKIE9QX0xEX1RBQkxFKGxkZGYpOwotCi0jaWZkZWYg VEFSR0VUX1NQQVJDNjQKLU9QX0xEX1RBQkxFKGxkdXcpOwotT1BfTERfVEFCTEUobGRzdyk7Ci1P UF9MRF9UQUJMRShsZHgpOwotT1BfTERfVEFCTEUoc3R4KTsKICNlbmRpZgorCisjaWZkZWYgVEFS R0VUX0FCSTMyCisjZGVmaW5lIEFCSTMyX01BU0soKSB0Y2dfZ2VuX2FuZGlfaTY0KGNwdV9UWzBd LCBjcHVfVFswXSwgMHhmZmZmZmZmZik7CisjZWxzZQorI2RlZmluZSBBQkkzMl9NQVNLKCkKICNl bmRpZgogCiAvKiBhc2kgbW92ZXMgKi8KQEAgLTU4Myw5OSArNDU4LDEwNSBAQAogfQogI2VuZGlm CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9pbW1fVE4oaW50IHJlZywgdWludDMyX3Qg aW1tKQorc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX3NpbW1fVDEoaW50MzJfdCB2YWwpCiB7 Ci0gICAgZ2VuX29wX21vdmxfVE5faW1bcmVnXShpbW0pOworICAgIHRjZ19nZW5fbW92aV90bChj cHVfVFsxXSwgdmFsKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX2ltbV9UMSh1 aW50MzJfdCB2YWwpCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX21vdmxfcmVnX1ROKGludCByZWcs IGludCB0KQogewotICAgIGdlbl9tb3ZsX2ltbV9UTigxLCB2YWwpOworICAgIGlmIChyZWcgPT0g MCkKKyAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9UW3RdLCAwKTsKKyAgICBlbHNlIGlmIChy ZWcgPCA4KQorICAgICAgICB0Y2dfZ2VuX2xkX3RsKGNwdV9UW3RdLCBjcHVfZW52LCBvZmZzZXRv ZihDUFVTdGF0ZSwgZ3JlZ3NbcmVnXSkpOworICAgIGVsc2UgeworICAgICAgICB0Y2dfZ2VuX2xk X3B0cihjcHVfcmVnd3B0ciwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3dwdHIpKTsg Ly8gWFhYCisgICAgICAgIHRjZ19nZW5fbGRfdGwoY3B1X1RbdF0sIGNwdV9yZWd3cHRyLCAocmVn IC0gOCkgKiBzaXplb2YodGFyZ2V0X3Vsb25nKSk7CisgICAgfQogfQogCi1zdGF0aWMgaW5saW5l IHZvaWQgZ2VuX21vdmxfaW1tX1QwKHVpbnQzMl90IHZhbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBn ZW5fbW92bF9yZWdfVDAoaW50IHJlZykKIHsKLSAgICBnZW5fbW92bF9pbW1fVE4oMCwgdmFsKTsK KyAgICBnZW5fbW92bF9yZWdfVE4ocmVnLCAwKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGdl bl9tb3ZsX3NpbW1fVE4oaW50IHJlZywgaW50MzJfdCBpbW0pCitzdGF0aWMgaW5saW5lIHZvaWQg Z2VuX21vdmxfcmVnX1QxKGludCByZWcpCiB7Ci0gICAgZ2VuX29wX21vdmxfVE5fc2ltW3JlZ10o aW1tKTsKKyAgICBnZW5fbW92bF9yZWdfVE4ocmVnLCAxKTsKIH0KIAotc3RhdGljIGlubGluZSB2 b2lkIGdlbl9tb3ZsX3NpbW1fVDEoaW50MzJfdCB2YWwpCitzdGF0aWMgaW5saW5lIHZvaWQgZ2Vu X21vdmxfcmVnX1QyKGludCByZWcpCiB7Ci0gICAgZ2VuX21vdmxfc2ltbV9UTigxLCB2YWwpOwor ICAgIGdlbl9tb3ZsX3JlZ19UTihyZWcsIDIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2Vu X21vdmxfc2ltbV9UMChpbnQzMl90IHZhbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9U Tl9yZWcoaW50IHJlZywgaW50IHQpCiB7Ci0gICAgZ2VuX21vdmxfc2ltbV9UTigwLCB2YWwpOwor ICAgIGlmIChyZWcgPT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgIGVsc2UgaWYgKHJlZyA8IDgp CisgICAgICAgIHRjZ19nZW5fc3RfdGwoY3B1X1RbdF0sIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0 YXRlLCBncmVnc1tyZWddKSk7CisgICAgZWxzZSB7CisgICAgICAgIHRjZ19nZW5fbGRfcHRyKGNw dV9yZWd3cHRyLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnd3B0cikpOyAvLyBYWFgK KyAgICAgICAgdGNnX2dlbl9zdF90bChjcHVfVFt0XSwgY3B1X3JlZ3dwdHIsIChyZWcgLSA4KSAq IHNpemVvZih0YXJnZXRfdWxvbmcpKTsKKyAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBn ZW5fbW92bF9yZWdfVE4oaW50IHJlZywgaW50IHQpCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX21v dmxfVDBfcmVnKGludCByZWcpCiB7Ci0gICAgaWYgKHJlZykKLSAgICAgICAgZ2VuX29wX21vdmxf cmVnX1ROW3RdW3JlZ10gKCk7Ci0gICAgZWxzZQotICAgICAgICBnZW5fbW92bF9pbW1fVE4odCwg MCk7CisgICAgZ2VuX21vdmxfVE5fcmVnKHJlZywgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p ZCBnZW5fbW92bF9yZWdfVDAoaW50IHJlZykKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9U MV9yZWcoaW50IHJlZykKIHsKLSAgICBnZW5fbW92bF9yZWdfVE4ocmVnLCAwKTsKKyAgICBnZW5f bW92bF9UTl9yZWcocmVnLCAxKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX3Jl Z19UMShpbnQgcmVnKQorc3RhdGljIGlubGluZSB2b2lkIGdlbl9vcF9tb3ZsX1QwX2VudihzaXpl X3Qgb2Zmc2V0KQogewotICAgIGdlbl9tb3ZsX3JlZ19UTihyZWcsIDEpOworICAgIHRjZ19nZW5f bGRfaTMyKGNwdV9UWzBdLCBjcHVfZW52LCBvZmZzZXQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv aWQgZ2VuX21vdmxfcmVnX1QyKGludCByZWcpCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX21v dmxfZW52X1QwKHNpemVfdCBvZmZzZXQpCiB7Ci0gICAgZ2VuX21vdmxfcmVnX1ROKHJlZywgMik7 CisgICAgdGNnX2dlbl9zdF9pMzIoY3B1X1RbMF0sIGNwdV9lbnYsIG9mZnNldCk7CiB9CiAKLXN0 YXRpYyBpbmxpbmUgdm9pZCBnZW5fbW92bF9UTl9yZWcoaW50IHJlZywgaW50IHQpCitzdGF0aWMg aW5saW5lIHZvaWQgZ2VuX29wX21vdnRsX1QwX2VudihzaXplX3Qgb2Zmc2V0KQogewotICAgIGlm IChyZWcpCi0gICAgICAgIGdlbl9vcF9tb3ZsX1ROX3JlZ1t0XVtyZWddICgpOworICAgIHRjZ19n ZW5fbGRfdGwoY3B1X1RbMF0sIGNwdV9lbnYsIG9mZnNldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dm9pZCBnZW5fbW92bF9UMF9yZWcoaW50IHJlZykKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3Bf bW92dGxfZW52X1QwKHNpemVfdCBvZmZzZXQpCiB7Ci0gICAgZ2VuX21vdmxfVE5fcmVnKHJlZywg MCk7CisgICAgdGNnX2dlbl9zdF90bChjcHVfVFswXSwgY3B1X2Vudiwgb2Zmc2V0KTsKIH0KIAot c3RhdGljIGlubGluZSB2b2lkIGdlbl9tb3ZsX1QxX3JlZyhpbnQgcmVnKQorc3RhdGljIGlubGlu ZSB2b2lkIGdlbl9vcF9hZGRfVDFfVDAodm9pZCkKIHsKLSAgICBnZW5fbW92bF9UTl9yZWcocmVn LCAxKTsKKyAgICB0Y2dfZ2VuX2FkZF90bChjcHVfVFswXSwgY3B1X1RbMF0sIGNwdV9UWzFdKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9vcF9vcl9UMV9UMCh2b2lkKQoreworICAgIHRj Z19nZW5fb3JfdGwoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBnZW5fb3BfeG9yX1QxX1QwKHZvaWQpCit7CisgICAgdGNnX2dlbl94b3JfdGwo Y3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBn ZW5fam1wX2ltKHRhcmdldF91bG9uZyBwYykKIHsKLSNpZmRlZiBUQVJHRVRfU1BBUkM2NAotICAg IGlmIChwYyA9PSAodWludDMyX3QpcGMpIHsKLSAgICAgICAgZ2VuX29wX2ptcF9pbShwYyk7Ci0g ICAgfSBlbHNlIHsKLSAgICAgICAgZ2VuX29wX2ptcF9pbTY0KHBjID4+IDMyLCBwYyk7Ci0gICAg fQotI2Vsc2UKLSAgICBnZW5fb3Bfam1wX2ltKHBjKTsKLSNlbmRpZgorICAgIHRjZ19nZW5fbW92 aV90bChjcHVfdG1wMCwgcGMpOworICAgIHRjZ19nZW5fc3RfdGwoY3B1X3RtcDAsIGNwdV9lbnYs IG9mZnNldG9mKENQVVN0YXRlLCBwYykpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX21v dmxfbnBjX2ltKHRhcmdldF91bG9uZyBucGMpCiB7Ci0jaWZkZWYgVEFSR0VUX1NQQVJDNjQKLSAg ICBpZiAobnBjID09ICh1aW50MzJfdClucGMpIHsKLSAgICAgICAgZ2VuX29wX21vdmxfbnBjX2lt KG5wYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZ2VuX29wX21vdnFfbnBjX2ltNjQobnBjID4+ IDMyLCBucGMpOwotICAgIH0KLSNlbHNlCi0gICAgZ2VuX29wX21vdmxfbnBjX2ltKG5wYyk7Ci0j ZW5kaWYKKyAgICB0Y2dfZ2VuX21vdmlfdGwoY3B1X3RtcDAsIG5wYyk7CisgICAgdGNnX2dlbl9z dF90bChjcHVfdG1wMCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIG5wYykpOwogfQogCiBz dGF0aWMgaW5saW5lIHZvaWQgZ2VuX2dvdG9fdGIoRGlzYXNDb250ZXh0ICpzLCBpbnQgdGJfbnVt LApAQCAtMTE3OSw3ICsxMDYwLDcgQEAKICAgICAgICAgICAgICAgICBpZiAocmQpIHsgLy8gbm9w CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUgPSBHRVRfRklFTEQo aW5zbiwgMTAsIDMxKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfaW1tX1QwKHZhbHVl IDw8IDEwKTsKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9UWzBdLCB2 YWx1ZSA8PCAxMCk7CiAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX1QwX3JlZyhyZCk7CiAj aWYgZGVmaW5lZChPUFRJTSkKICAgICAgICAgICAgICAgICB9CkBAIC0xMTk2LDE1ICsxMDc3LDcg QEAKICAgICAgICAgLypDQUxMKi8gewogICAgICAgICAgICAgdGFyZ2V0X2xvbmcgdGFyZ2V0ID0g R0VUX0ZJRUxEcyhpbnNuLCAyLCAzMSkgPDwgMjsKIAotI2lmZGVmIFRBUkdFVF9TUEFSQzY0Ci0g ICAgICAgICAgICBpZiAoZGMtPnBjID09ICh1aW50MzJfdClkYy0+cGMpIHsKLSAgICAgICAgICAg ICAgICBnZW5fb3BfbW92bF9UMF9pbShkYy0+cGMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICAgICBnZW5fb3BfbW92cV9UMF9pbTY0KGRjLT5wYyA+PiAzMiwgZGMtPnBjKTsK LSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBnZW5fb3BfbW92bF9UMF9pbShkYy0+ cGMpOwotI2VuZGlmCisgICAgICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoY3B1X1RbMF0sIGRjLT5w Yyk7CiAgICAgICAgICAgICBnZW5fbW92bF9UMF9yZWcoMTUpOwogICAgICAgICAgICAgdGFyZ2V0 ICs9IGRjLT5wYzsKICAgICAgICAgICAgIGdlbl9tb3ZfcGNfbnBjKGRjKTsKQEAgLTEyMjEsMTQg KzEwOTQsNyBAQAogICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UMChyczEpOwogICAgICAg ICAgICAgICAgIGlmIChJU19JTU0pIHsKICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJ RUxEKGluc24sIDI1LCAzMSk7Ci0jaWYgZGVmaW5lZChPUFRJTSkKLSAgICAgICAgICAgICAgICAg ICAgaWYgKHJzMiAhPSAwKSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9t b3ZsX3NpbW1fVDEocnMyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9hZGRfVDFf VDAoKTsKLSNpZiBkZWZpbmVkKE9QVElNKQotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYK KyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV9UWzBdLCBjcHVfVFswXSwg cnMyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByczIg PSBHRVRfRklFTEQoaW5zbiwgMjcsIDMxKTsKICNpZiBkZWZpbmVkKE9QVElNKQpAQCAtMTI5OCwx MSArMTE2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX1QwX3JlZyhyZCk7CiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgMHg1OiAvKiBW OSByZHBjICovCi0gICAgICAgICAgICAgICAgICAgIGlmIChkYy0+cGMgPT0gKHVpbnQzMl90KWRj LT5wYykgewotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX21vdmxfVDBfaW0oZGMtPnBj KTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg IGdlbl9vcF9tb3ZxX1QwX2ltNjQoZGMtPnBjID4+IDMyLCBkYy0+cGMpOwotICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV90bChjcHVfVFswXSwg ZGMtPnBjKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfVDBfcmVnKHJkKTsKICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAweDY6IC8qIFY5IHJk ZnBycyAqLwpAQCAtMjA3OCwyNCArMTk0MCwxOSBAQAogCiAgICAgICAgICAgICAgICAgcnMxID0g R0VUX0ZJRUxEKGluc24sIDEzLCAxNyk7CiAgICAgICAgICAgICAgICAgaWYgKHJzMSA9PSAwKSB7 Ci0gICAgICAgICAgICAgICAgICAgIC8vIG9yICVnMCwgeCwgeSAtPiBtb3YgVDEsIHg7IG1vdiB5 LCBUMQorICAgICAgICAgICAgICAgICAgICAvLyBvciAlZzAsIHgsIHkgLT4gbW92IFQwLCB4OyBt b3YgeSwgVDAKICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0lNTSkgeyAgICAgICAvKiBpbW1l ZGlhdGUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIHJzMiA9IEdFVF9GSUVMRHMoaW5zbiwg MTksIDMxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3NpbW1fVDEocnMyKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV90bChjcHVfVFswXSwgcnMyKTsK ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAvKiByZWdpc3RlciAqLwog ICAgICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJRUxEKGluc24sIDI3LCAzMSk7Ci0g ICAgICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDEocnMyKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UMChyczIpOwogICAgICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX1QxX3JlZyhyZCk7CiAgICAgICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfcmVnX1QwKHJzMSk7CiAg ICAgICAgICAgICAgICAgICAgIGlmIChJU19JTU0pIHsgICAgICAgLyogaW1tZWRpYXRlICovCi0g ICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB4LCAjMCwgeSAtPiBtb3YgVDEsIHg7IG1vdiB5 LCBUMQogICAgICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJRUxEcyhpbnNuLCAxOSwg MzEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJzMiAhPSAwKSB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfc2ltbV9UMShyczIpOwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdlbl9vcF9vcl9UMV9UMCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9vcmlfdGwoY3B1X1RbMF0sIGNwdV9U WzBdLCByczIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgIC8qIHJl Z2lzdGVyICovCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB4LCAlZzAsIHkgLT4gbW92 IFQxLCB4OyBtb3YgeSwgVDEKICAgICAgICAgICAgICAgICAgICAgICAgIHJzMiA9IEdFVF9GSUVM RChpbnNuLCAyNywgMzEpOwpAQCAtMjEwNCw4ICsxOTYxLDggQEAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZW5fb3Bfb3JfVDFfVDAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBnZW5fbW92bF9UMF9y ZWcocmQpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZW5fbW92bF9UMF9y ZWcocmQpOwogI2VuZGlmCiAjaWZkZWYgVEFSR0VUX1NQQVJDNjQKICAgICAgICAgICAgIH0gZWxz ZSBpZiAoeG9wID09IDB4MjUpIHsgLyogc2xsLCBWOSBzbGx4ICovCkBAIC0yMTczLDE3ICsyMDMw LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2FkZF9UMV9UMCgpOwog ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug MHgxOgotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2FuZF9UMV9UMCgpOworICAgICAg ICAgICAgICAgICAgICAgICAgdGNnX2dlbl9hbmRfdGwoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVf VFsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeG9wICYgMHgxMCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbG9naWNfVDBfY2MoKTsKICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIDB4MjoKLSAgICAgICAg ICAgICAgICAgICAgICAgIGdlbl9vcF9vcl9UMV9UMCgpOworICAgICAgICAgICAgICAgICAgICAg ICAgdGNnX2dlbl9vcl90bChjcHVfVFswXSwgY3B1X1RbMF0sIGNwdV9UWzFdKTsKICAgICAgICAg ICAgICAgICAgICAgICAgIGlmICh4b3AgJiAweDEwKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdlbl9vcF9sb2dpY19UMF9jYygpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgzOgotICAgICAgICAgICAgICAgICAgICAgICAg Z2VuX29wX3hvcl9UMV9UMCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl94b3Jf dGwoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoeG9wICYgMHgxMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbG9n aWNfVDBfY2MoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE5MSw3ICsy MDQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4b3AgJiAweDEwKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9zdWJfVDFfVDBfY2MoKTsKICAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3Bfc3Vi X1QxX1QwKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zdWJfdGwoY3B1 X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSAweDU6CiAgICAgICAgICAgICAgICAgICAgICAg ICBnZW5fb3BfYW5kbl9UMV9UMCgpOwpAQCAtMjIxNiw3ICsyMDczLDcgQEAKICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwogI2lmZGVmIFRBUkdFVF9TUEFSQzY0CiAgICAgICAgICAgICAg ICAgICAgIGNhc2UgMHg5OiAvKiBWOSBtdWx4ICovCi0gICAgICAgICAgICAgICAgICAgICAgICBn ZW5fb3BfbXVseF9UMV9UMCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9tdWxf aTY0KGNwdV9UWzBdLCBjcHVfVFswXSwgY3B1X1RbMV0pOwogICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgY2FzZSAweGE6CkBAIC0zMDAz LDE0ICsyODYwLDcgQEAKICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDAocnMxKTsKICAg ICAgICAgICAgICAgICBpZiAoSVNfSU1NKSB7ICAgLyogaW1tZWRpYXRlICovCiAgICAgICAgICAg ICAgICAgICAgIHJzMiA9IEdFVF9GSUVMRHMoaW5zbiwgMTksIDMxKTsKLSNpZiBkZWZpbmVkKE9Q VElNKQotICAgICAgICAgICAgICAgICAgICBpZiAocnMyKSB7Ci0jZW5kaWYKLSAgICAgICAgICAg ICAgICAgICAgICAgIGdlbl9tb3ZsX3NpbW1fVDEocnMyKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgIGdlbl9vcF9hZGRfVDFfVDAoKTsKLSNpZiBkZWZpbmVkKE9QVElNKQotICAgICAgICAgICAg ICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNw dV9UWzBdLCBjcHVfVFswXSwgcnMyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAg ICAgICAgICAvKiByZWdpc3RlciAqLwogICAgICAgICAgICAgICAgICAgICByczIgPSBHRVRfRklF TEQoaW5zbiwgMjcsIDMxKTsKICNpZiBkZWZpbmVkKE9QVElNKQpAQCAtMzAzNCwxNCArMjg4NCw3 IEBACiAgICAgICAgICAgICAgICAgZ2VuX21vdmxfcmVnX1QwKHJzMSk7CiAgICAgICAgICAgICAg ICAgaWYgKElTX0lNTSkgeyAgIC8qIGltbWVkaWF0ZSAqLwogICAgICAgICAgICAgICAgICAgICBy czIgPSBHRVRfRklFTERzKGluc24sIDE5LCAzMSk7Ci0jaWYgZGVmaW5lZChPUFRJTSkKLSAgICAg ICAgICAgICAgICAgICAgaWYgKHJzMikgewotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAg ICBnZW5fbW92bF9zaW1tX1QxKHJzMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3Bf YWRkX1QxX1QwKCk7Ci0jaWYgZGVmaW5lZChPUFRJTSkKLSAgICAgICAgICAgICAgICAgICAgfQot I2VuZGlmCisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fYWRkaV90bChjcHVfVFswXSwgY3B1 X1RbMF0sIHJzMik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyog cmVnaXN0ZXIgKi8KICAgICAgICAgICAgICAgICAgICAgcnMyID0gR0VUX0ZJRUxEKGluc24sIDI3 LCAzMSk7CiAjaWYgZGVmaW5lZChPUFRJTSkKQEAgLTMwNTcsMTUgKzI5MDAsNyBAQAogICAgICAg ICAgICAgICAgIGNhc2UgMHgzODogICAgICAvKiBqbXBsICovCiAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZCAhPSAwKSB7Ci0jaWZkZWYgVEFSR0VU X1NQQVJDNjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGMtPnBjID09ICh1aW50 MzJfdClkYy0+cGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX21v dmxfVDFfaW0oZGMtPnBjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbW92cV9UMV9pbTY0KGRjLT5w YyA+PiAzMiwgZGMtPnBjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0jZWxzZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9tb3ZsX1QxX2ltKGRjLT5wYyk7Ci0j ZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoY3B1X1Rb MV0sIGRjLT5wYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX21vdmxfVDFfcmVn KHJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg IGdlbl9tb3ZfcGNfbnBjKGRjKTsKQEAgLTMxNDQsMTQgKzI5NzksNyBAQAogICAgICAgICAgICAg fQogICAgICAgICAgICAgZWxzZSBpZiAoSVNfSU1NKSB7ICAgICAgIC8qIGltbWVkaWF0ZSAqLwog ICAgICAgICAgICAgICAgIHJzMiA9IEdFVF9GSUVMRHMoaW5zbiwgMTksIDMxKTsKLSNpZiBkZWZp bmVkKE9QVElNKQotICAgICAgICAgICAgICAgIGlmIChyczIgIT0gMCkgewotI2VuZGlmCi0gICAg ICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3NpbW1fVDEocnMyKTsKLSAgICAgICAgICAgICAgICAg ICAgZ2VuX29wX2FkZF9UMV9UMCgpOwotI2lmIGRlZmluZWQoT1BUSU0pCi0gICAgICAgICAgICAg ICAgfQotI2VuZGlmCisgICAgICAgICAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV9UWzBdLCBj cHVfVFswXSwgcnMyKTsKICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgLyogcmVnaXN0 ZXIgKi8KICAgICAgICAgICAgICAgICByczIgPSBHRVRfRklFTEQoaW5zbiwgMjcsIDMxKTsKICNp ZiBkZWZpbmVkKE9QVElNKQpAQCAtMzE2NywyMCArMjk5NSwxOSBAQAogICAgICAgICAgICAgICAg ICh4b3AgPiAweDE3ICYmIHhvcCA8PSAweDFkICkgfHwKICAgICAgICAgICAgICAgICAoeG9wID4g MHgyYyAmJiB4b3AgPD0gMHgzMykgfHwgeG9wID09IDB4MWYgfHwgeG9wID09IDB4M2QpIHsKICAg ICAgICAgICAgICAgICBzd2l0Y2ggKHhvcCkgewotICAgICAgICAgICAgICAgIGNhc2UgMHgwOiAg ICAgICAvKiBsb2FkIHdvcmQgKi8KKyAgICAgICAgICAgICAgICBjYXNlIDB4MDogICAgICAgLyog bG9hZCB1bnNpZ25lZCB3b3JkICovCiAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9jaGVja19h bGlnbl9UMF8zKCk7Ci0jaWZuZGVmIFRBUkdFVF9TUEFSQzY0Ci0gICAgICAgICAgICAgICAgICAg IGdlbl9vcF9sZHN0KGxkKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9sZHN0 KGxkdXcpOwotI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIEFCSTMyX01BU0soKTsKKyAgICAg ICAgICAgICAgICAgICAgdGNnX2dlbl9xZW11X2xkMzJ1KGNwdV9UWzFdLCBjcHVfVFswXSwgZGMt Pm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj YXNlIDB4MTogICAgICAgLyogbG9hZCB1bnNpZ25lZCBieXRlICovCi0gICAgICAgICAgICAgICAg ICAgIGdlbl9vcF9sZHN0KGxkdWIpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKCk7 CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9sZDh1KGNwdV9UWzFdLCBjcHVfVFsw XSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgICBjYXNlIDB4MjogICAgICAgLyogbG9hZCB1bnNpZ25lZCBoYWxmd29yZCAqLwogICAgICAg ICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBfMSgpOwotICAgICAgICAgICAgICAg ICAgICBnZW5fb3BfbGRzdChsZHVoKTsKKyAgICAgICAgICAgICAgICAgICAgQUJJMzJfTUFTSygp OworICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVfbGQxNnUoY3B1X1RbMV0sIGNwdV9U WzBdLCBkYy0+bWVtX2lkeCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgICAgIGNhc2UgMHgzOiAgICAgICAvKiBsb2FkIGRvdWJsZSB3b3JkICovCiAgICAgICAgICAg ICAgICAgICAgIGlmIChyZCAmIDEpCkBAIC0zMTkwLDE5ICszMDE3LDI3IEBACiAgICAgICAgICAg ICAgICAgICAgIGdlbl9tb3ZsX1QwX3JlZyhyZCArIDEpOwogICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4OTogICAgICAgLyogbG9hZCBzaWduZWQgYnl0 ZSAqLwotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChsZHNiKTsKKyAgICAgICAgICAg ICAgICAgICAgQUJJMzJfTUFTSygpOworICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVf bGQ4cyhjcHVfVFsxXSwgY3B1X1RbMF0sIGRjLT5tZW1faWR4KTsKICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAweGE6ICAgICAgIC8qIGxvYWQgc2lnbmVk IGhhbGZ3b3JkICovCiAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9jaGVja19hbGlnbl9UMF8x KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9sZHN0KGxkc2gpOworICAgICAgICAgICAg ICAgICAgICBBQkkzMl9NQVNLKCk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9s ZDE2cyhjcHVfVFsxXSwgY3B1X1RbMF0sIGRjLT5tZW1faWR4KTsKICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAweGQ6ICAgICAgIC8qIGxkc3R1YiAtLSBY WFg6IHNob3VsZCBiZSBhdG9taWNhbGx5ICovCi0gICAgICAgICAgICAgICAgICAgIGdlbl9vcF9s ZHN0KGxkc3R1Yik7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV9pMzIoY3B1X3Rt cDAsIDB4ZmYpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKCk7CisgICAgICAgICAg ICAgICAgICAgIHRjZ19nZW5fcWVtdV9sZDhzKGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9p ZHgpOworICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVfc3Q4KGNwdV90bXAwLCBjcHVf VFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgICAgICBjYXNlIDB4MGY6ICAgICAgLyogc3dhcCByZWdpc3RlciB3aXRoIG1lbW9yeS4gQWxz byBhdG9taWNhbGx5ICovCiAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9jaGVja19hbGlnbl9U MF8zKCk7CiAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZsX3JlZ19UMShyZCk7Ci0gICAgICAg ICAgICAgICAgICAgIGdlbl9vcF9sZHN0KHN3YXApOworICAgICAgICAgICAgICAgICAgICBBQkkz Ml9NQVNLKCk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9sZDMydShjcHVfdG1w MCwgY3B1X1RbMF0sIGRjLT5tZW1faWR4KTsKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9x ZW11X3N0MzIoY3B1X1RbMV0sIGNwdV9UWzBdLCBkYy0+bWVtX2lkeCk7CisgICAgICAgICAgICAg ICAgICAgIHRjZ19nZW5fbW92X2kzMihjcHVfVFsxXSwgY3B1X3RtcDApOwogICAgICAgICAgICAg ICAgICAgICBicmVhazsKICNpZiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKSB8fCBkZWZpbmVk KFRBUkdFVF9TUEFSQzY0KQogICAgICAgICAgICAgICAgIGNhc2UgMHgxMDogICAgICAvKiBsb2Fk IHdvcmQgYWx0ZXJuYXRlICovCkBAIC0zMjk3LDExICszMTMyLDEzIEBACiAjaWZkZWYgVEFSR0VU X1NQQVJDNjQKICAgICAgICAgICAgICAgICBjYXNlIDB4MDg6IC8qIFY5IGxkc3cgKi8KICAgICAg ICAgICAgICAgICAgICAgZ2VuX29wX2NoZWNrX2FsaWduX1QwXzMoKTsKLSAgICAgICAgICAgICAg ICAgICAgZ2VuX29wX2xkc3QobGRzdyk7CisgICAgICAgICAgICAgICAgICAgIEFCSTMyX01BU0so KTsKKyAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9xZW11X2xkMzJzKGNwdV9UWzFdLCBjcHVf VFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgICAgICBjYXNlIDB4MGI6IC8qIFY5IGxkeCAqLwogICAgICAgICAgICAgICAgICAgICBnZW5f b3BfY2hlY2tfYWxpZ25fVDBfNygpOwotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChs ZHgpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKCk7CisgICAgICAgICAgICAgICAg ICAgIHRjZ19nZW5fcWVtdV9sZDY0KGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwog ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4MTg6IC8q IFY5IGxkc3dhICovCiAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9jaGVja19hbGlnbl9UMF8z KCk7CkBAIC0zMzc0LDE2ICszMjExLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgIHhvcCA9 PSAweGUgfHwgeG9wID09IDB4MWUpIHsKICAgICAgICAgICAgICAgICBnZW5fbW92bF9yZWdfVDEo cmQpOwogICAgICAgICAgICAgICAgIHN3aXRjaCAoeG9wKSB7Ci0gICAgICAgICAgICAgICAgY2Fz ZSAweDQ6CisgICAgICAgICAgICAgICAgY2FzZSAweDQ6IC8qIHN0b3JlIHdvcmQgKi8KICAgICAg ICAgICAgICAgICAgICAgZ2VuX29wX2NoZWNrX2FsaWduX1QwXzMoKTsKLSAgICAgICAgICAgICAg ICAgICAgZ2VuX29wX2xkc3Qoc3QpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKCk7 CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9zdDMyKGNwdV9UWzFdLCBjcHVfVFsw XSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg ICAgICBjYXNlIDB4NToKLSAgICAgICAgICAgICAgICAgICAgZ2VuX29wX2xkc3Qoc3RiKTsKKyAg ICAgICAgICAgICAgICBjYXNlIDB4NTogLyogc3RvcmUgYnl0ZSAqLworICAgICAgICAgICAgICAg ICAgICBBQkkzMl9NQVNLKCk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9zdDgo Y3B1X1RbMV0sIGNwdV9UWzBdLCBkYy0+bWVtX2lkeCk7CiAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMHg2OgorICAgICAgICAgICAgICAgIGNhc2UgMHg2 OiAvKiBzdG9yZSBoYWxmd29yZCAqLwogICAgICAgICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tf YWxpZ25fVDBfMSgpOwotICAgICAgICAgICAgICAgICAgICBnZW5fb3BfbGRzdChzdGgpOworICAg ICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKCk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5fcWVtdV9zdDE2KGNwdV9UWzFdLCBjcHVfVFswXSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4NzoKICAgICAgICAgICAg ICAgICAgICAgaWYgKHJkICYgMSkKQEAgLTM0NDEsNyArMzI4MSw4IEBACiAjaWZkZWYgVEFSR0VU X1NQQVJDNjQKICAgICAgICAgICAgICAgICBjYXNlIDB4MGU6IC8qIFY5IHN0eCAqLwogICAgICAg ICAgICAgICAgICAgICBnZW5fb3BfY2hlY2tfYWxpZ25fVDBfNygpOwotICAgICAgICAgICAgICAg ICAgICBnZW5fb3BfbGRzdChzdHgpOworICAgICAgICAgICAgICAgICAgICBBQkkzMl9NQVNLKCk7 CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9zdDY0KGNwdV9UWzFdLCBjcHVfVFsw XSwgZGMtPm1lbV9pZHgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgICBjYXNlIDB4MWU6IC8qIFY5IHN0eGEgKi8KICAgICAgICAgICAgICAgICAgICAgZ2VuX29w X2NoZWNrX2FsaWduX1QwXzcoKTsKQEAgLTM1OTcsNiArMzQzOCwxMCBAQAogI2VuZGlmCiB9CiAK K3N0YXRpYyB2b2lkIHRjZ19tYWNyb19mdW5jKFRDR0NvbnRleHQgKnMsIGludCBtYWNyb19pZCwg Y29uc3QgaW50ICpkZWFkX2FyZ3MpCit7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IGdlbl9pbnRl cm1lZGlhdGVfY29kZV9pbnRlcm5hbChUcmFuc2xhdGlvbkJsb2NrICogdGIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNwYywgQ1BVU1BBUkNT dGF0ZSAqZW52KQogewpAQCAtMzYxNSw2ICszNDYwLDkgQEAKICAgICBkYy0+ZnB1X2VuYWJsZWQg PSBjcHVfZnB1X2VuYWJsZWQoZW52KTsKICAgICBnZW5fb3BjX2VuZCA9IGdlbl9vcGNfYnVmICsg T1BDX01BWF9TSVpFOwogCisgICAgY3B1X3RtcDAgPSB0Y2dfdGVtcF9uZXcoVENHX1RZUEVfVEwp OworICAgIGNwdV9yZWd3cHRyID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX1BUUik7IC8vIFhYWAor CiAgICAgZG8gewogICAgICAgICBpZiAoZW52LT5uYl9icmVha3BvaW50cyA+IDApIHsKICAgICAg ICAgICAgIGZvcihqID0gMDsgaiA8IGVudi0+bmJfYnJlYWtwb2ludHM7IGorKykgewpAQCAtMzc0 OCw2ICszNTk2LDcgQEAKIHsKICAgICBDUFVTUEFSQ1N0YXRlICplbnY7CiAgICAgY29uc3Qgc3Bh cmNfZGVmX3QgKmRlZjsKKyAgICBzdGF0aWMgaW50IGluaXRlZDsKIAogICAgIGRlZiA9IGNwdV9z cGFyY19maW5kX2J5X25hbWUoY3B1X21vZGVsKTsKICAgICBpZiAoIWRlZikKQEAgLTM3NjksNiAr MzYxOCwyNyBAQAogICAgIGVudi0+bW11cmVnc1swXSB8PSBkZWYtPm1tdV92ZXJzaW9uOwogICAg IGNwdV9zcGFyY19zZXRfaWQoZW52LCAwKTsKICNlbmRpZgorCisgICAgLyogaW5pdCB2YXJpb3Vz IHN0YXRpYyB0YWJsZXMgKi8KKyAgICBpZiAoIWluaXRlZCkgeworICAgICAgICBpbml0ZWQgPSAx OworCisgICAgICAgIHRjZ19zZXRfbWFjcm9fZnVuYygmdGNnX2N0eCwgdGNnX21hY3JvX2Z1bmMp OworICAgICAgICBjcHVfZW52ID0gdGNnX2dsb2JhbF9yZWdfbmV3KFRDR19UWVBFX1BUUiwgVENH X0FSRUcwLCAiZW52Iik7CisjaWYgVEFSR0VUX0xPTkdfQklUUyA+IEhPU1RfTE9OR19CSVRTCisg ICAgICAgIGNwdV9UWzBdID0gdGNnX2dsb2JhbF9tZW1fbmV3KFRDR19UWVBFX1RMLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfQVJFRzAsIG9mZnNldG9mKENQVVN0 YXRlLCB0MCksICJUMCIpOworICAgICAgICBjcHVfVFsxXSA9IHRjZ19nbG9iYWxfbWVtX25ldyhU Q0dfVFlQRV9UTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX0FS RUcwLCBvZmZzZXRvZihDUFVTdGF0ZSwgdDEpLCAiVDEiKTsKKyAgICAgICAgY3B1X1RbMl0gPSB0 Y2dfZ2xvYmFsX21lbV9uZXcoVENHX1RZUEVfVEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRDR19BUkVHMCwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHQyKSwgIlQyIik7Cisj ZWxzZQorICAgICAgICBjcHVfVFswXSA9IHRjZ19nbG9iYWxfcmVnX25ldyhUQ0dfVFlQRV9UTCwg VENHX0FSRUcxLCAiVDAiKTsKKyAgICAgICAgY3B1X1RbMV0gPSB0Y2dfZ2xvYmFsX3JlZ19uZXco VENHX1RZUEVfVEwsIFRDR19BUkVHMiwgIlQxIik7CisgICAgICAgIGNwdV9UWzJdID0gdGNnX2ds b2JhbF9yZWdfbmV3KFRDR19UWVBFX1RMLCBUQ0dfQVJFRzMsICJUMiIpOworI2VuZGlmCisgICAg fQorCiAgICAgY3B1X3Jlc2V0KGVudik7CiAgICAgCiAgICAgcmV0dXJuIGVudjsKSW5kZXg6IHFl bXUvdGFyZ2V0LXNwYXJjL29wLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3RhcmdldC1zcGFy Yy9vcC5jCTIwMDgtMDItMjEgMjA6MDA6MjguMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3Rhcmdl dC1zcGFyYy9vcC5jCTIwMDgtMDItMjEgMjA6MDI6MDcuMDAwMDAwMDAwICswMDAwCkBAIC0yMCwx MDQgKzIwLDYgQEAKIAogI2luY2x1ZGUgImV4ZWMuaCIKIAotIC8qWFhYKi8KLSNkZWZpbmUgUkVH TkFNRSBnMAotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbMF0pCi0jaW5jbHVkZSAib3BfdGVtcGxh dGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBnMQotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbMV0pCi0j aW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBnMgotI2RlZmluZSBSRUcg KGVudi0+Z3JlZ3NbMl0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFN RSBnMwotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbM10pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUu aCIKLSNkZWZpbmUgUkVHTkFNRSBnNAotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbNF0pCi0jaW5j bHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBnNQotI2RlZmluZSBSRUcgKGVu di0+Z3JlZ3NbNV0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBn NgotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbNl0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIK LSNkZWZpbmUgUkVHTkFNRSBnNwotI2RlZmluZSBSRUcgKGVudi0+Z3JlZ3NbN10pCi0jaW5jbHVk ZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBpMAotI2RlZmluZSBSRUcgKFJFR1dQ VFJbMTZdKQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0jZGVmaW5lIFJFR05BTUUgaTEKLSNk ZWZpbmUgUkVHIChSRUdXUFRSWzE3XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmlu ZSBSRUdOQU1FIGkyCi0jZGVmaW5lIFJFRyAoUkVHV1BUUlsxOF0pCi0jaW5jbHVkZSAib3BfdGVt cGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBpMwotI2RlZmluZSBSRUcgKFJFR1dQVFJbMTldKQot I2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0jZGVmaW5lIFJFR05BTUUgaTQKLSNkZWZpbmUgUkVH IChSRUdXUFRSWzIwXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1F IGk1Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUlsyMV0pCi0jaW5jbHVkZSAib3BfdGVtcGxhdGUuaCIK LSNkZWZpbmUgUkVHTkFNRSBpNgotI2RlZmluZSBSRUcgKFJFR1dQVFJbMjJdKQotI2luY2x1ZGUg Im9wX3RlbXBsYXRlLmgiCi0jZGVmaW5lIFJFR05BTUUgaTcKLSNkZWZpbmUgUkVHIChSRUdXUFRS WzIzXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIGwwCi0jZGVm aW5lIFJFRyAoUkVHV1BUUls4XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBS RUdOQU1FIGwxCi0jZGVmaW5lIFJFRyAoUkVHV1BUUls5XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0 ZS5oIgotI2RlZmluZSBSRUdOQU1FIGwyCi0jZGVmaW5lIFJFRyAoUkVHV1BUUlsxMF0pCi0jaW5j bHVkZSAib3BfdGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBsMwotI2RlZmluZSBSRUcgKFJF R1dQVFJbMTFdKQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0jZGVmaW5lIFJFR05BTUUgbDQK LSNkZWZpbmUgUkVHIChSRUdXUFRSWzEyXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2Rl ZmluZSBSRUdOQU1FIGw1Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUlsxM10pCi0jaW5jbHVkZSAib3Bf dGVtcGxhdGUuaCIKLSNkZWZpbmUgUkVHTkFNRSBsNgotI2RlZmluZSBSRUcgKFJFR1dQVFJbMTRd KQotI2luY2x1ZGUgIm9wX3RlbXBsYXRlLmgiCi0jZGVmaW5lIFJFR05BTUUgbDcKLSNkZWZpbmUg UkVHIChSRUdXUFRSWzE1XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdO QU1FIG8wCi0jZGVmaW5lIFJFRyAoUkVHV1BUUlswXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5o IgotI2RlZmluZSBSRUdOQU1FIG8xCi0jZGVmaW5lIFJFRyAoUkVHV1BUUlsxXSkKLSNpbmNsdWRl ICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG8yCi0jZGVmaW5lIFJFRyAoUkVHV1BU UlsyXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG8zCi0jZGVm aW5lIFJFRyAoUkVHV1BUUlszXSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBS RUdOQU1FIG80Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUls0XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0 ZS5oIgotI2RlZmluZSBSRUdOQU1FIG81Ci0jZGVmaW5lIFJFRyAoUkVHV1BUUls1XSkKLSNpbmNs dWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG82Ci0jZGVmaW5lIFJFRyAoUkVH V1BUUls2XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotI2RlZmluZSBSRUdOQU1FIG83Ci0j ZGVmaW5lIFJFRyAoUkVHV1BUUls3XSkKLSNpbmNsdWRlICJvcF90ZW1wbGF0ZS5oIgotCiAjZGVm aW5lIFJFR05BTUUgZjAKICNkZWZpbmUgUkVHIChlbnYtPmZwclswXSkKICNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuaCIKQEAgLTI2NywxMDYgKzE2OSwxMSBAQAogI2VuZGlmCiAKICNpZmRlZiBUQVJH RVRfU1BBUkM2NAotI2lmZGVmIFdPUkRTX0JJR0VORElBTgotdHlwZWRlZiB1bmlvbiBVUkVHNjQg ewotICAgIHN0cnVjdCB7IHVpbnQxNl90IHYzLCB2MiwgdjEsIHYwOyB9IHc7Ci0gICAgc3RydWN0 IHsgdWludDMyX3QgdjEsIHYwOyB9IGw7Ci0gICAgdWludDY0X3QgcTsKLX0gVVJFRzY0OwotI2Vs c2UKLXR5cGVkZWYgdW5pb24gVVJFRzY0IHsKLSAgICBzdHJ1Y3QgeyB1aW50MTZfdCB2MCwgdjEs IHYyLCB2MzsgfSB3OwotICAgIHN0cnVjdCB7IHVpbnQzMl90IHYwLCB2MTsgfSBsOwotICAgIHVp bnQ2NF90IHE7Ci19IFVSRUc2NDsKLSNlbmRpZgotCi0jZGVmaW5lIFBBUkFNUTEgXAotKHtcCi0g ICAgVVJFRzY0IF9fcDtcCi0gICAgX19wLmwudjEgPSBQQVJBTTE7XAotICAgIF9fcC5sLnYwID0g UEFSQU0yO1wKLSAgICBfX3AucTtcCi19KQotCi12b2lkIE9QUFJPVE8gb3BfbW92cV9UMF9pbTY0 KHZvaWQpCi17Ci0gICAgVDAgPSBQQVJBTVExOwotfQotCi12b2lkIE9QUFJPVE8gb3BfbW92cV9U MV9pbTY0KHZvaWQpCi17Ci0gICAgVDEgPSBQQVJBTVExOwotfQotCiAjZGVmaW5lIFhGTEFHX1NF VCh4KSAoKGVudi0+eGNjJngpPzE6MCkKLQotI2Vsc2UKLSNkZWZpbmUgRUlQIChlbnYtPnBjKQog I2VuZGlmCiAKICNkZWZpbmUgRkxBR19TRVQoeCkgKChlbnYtPnBzciZ4KT8xOjApCiAKLXZvaWQg T1BQUk9UTyBvcF9tb3ZsX1QwXzAodm9pZCkKLXsKLSAgICBUMCA9IDA7Ci19Ci0KLXZvaWQgT1BQ Uk9UTyBvcF9tb3ZsX1QwX2ltKHZvaWQpCi17Ci0gICAgVDAgPSAodWludDMyX3QpUEFSQU0xOwot fQotCi12b2lkIE9QUFJPVE8gb3BfbW92bF9UMV9pbSh2b2lkKQotewotICAgIFQxID0gKHVpbnQz Ml90KVBBUkFNMTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX21vdmxfVDJfaW0odm9pZCkKLXsKLSAg ICBUMiA9ICh1aW50MzJfdClQQVJBTTE7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3ZsX1QwX3Np bSh2b2lkKQotewotICAgIFQwID0gKGludDMyX3QpUEFSQU0xOwotfQotCi12b2lkIE9QUFJPVE8g b3BfbW92bF9UMV9zaW0odm9pZCkKLXsKLSAgICBUMSA9IChpbnQzMl90KVBBUkFNMTsKLX0KLQot dm9pZCBPUFBST1RPIG9wX21vdmxfVDJfc2ltKHZvaWQpCi17Ci0gICAgVDIgPSAoaW50MzJfdClQ QVJBTTE7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3ZsX1QwX2Vudih2b2lkKQotewotICAgIFQw ID0gKih1aW50MzJfdCAqKSgoY2hhciAqKWVudiArIFBBUkFNMSk7Ci19Ci0KLXZvaWQgT1BQUk9U TyBvcF9tb3ZsX2Vudl9UMCh2b2lkKQotewotICAgICoodWludDMyX3QgKikoKGNoYXIgKillbnYg KyBQQVJBTTEpID0gVDA7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9tb3Z0bF9UMF9lbnYodm9pZCkK LXsKLSAgICBUMCA9ICoodGFyZ2V0X3Vsb25nICopKChjaGFyICopZW52ICsgUEFSQU0xKTsKLX0K LQotdm9pZCBPUFBST1RPIG9wX21vdnRsX2Vudl9UMCh2b2lkKQotewotICAgICoodGFyZ2V0X3Vs b25nICopKChjaGFyICopZW52ICsgUEFSQU0xKSA9IFQwOwotfQotCi12b2lkIE9QUFJPVE8gb3Bf YWRkX1QxX1QwKHZvaWQpCi17Ci0gICAgVDAgKz0gVDE7Ci19Ci0KIHZvaWQgT1BQUk9UTyBvcF9h ZGRfVDFfVDBfY2Modm9pZCkKIHsKICAgICB0YXJnZXRfdWxvbmcgc3JjMTsKQEAgLTU2NSwxMSAr MzcyLDYgQEAKICAgICBGT1JDRV9SRVQoKTsKIH0KIAotdm9pZCBPUFBST1RPIG9wX3N1Yl9UMV9U MCh2b2lkKQotewotICAgIFQwIC09IFQxOwotfQotCiB2b2lkIE9QUFJPVE8gb3Bfc3ViX1QxX1Qw X2NjKHZvaWQpCiB7CiAgICAgdGFyZ2V0X3Vsb25nIHNyYzE7CkBAIC03NjUsMjEgKzU2Nyw2IEBA CiAgICAgRk9SQ0VfUkVUKCk7CiB9CiAKLXZvaWQgT1BQUk9UTyBvcF9hbmRfVDFfVDAodm9pZCkK LXsKLSAgICBUMCAmPSBUMTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX29yX1QxX1QwKHZvaWQpCi17 Ci0gICAgVDAgfD0gVDE7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF94b3JfVDFfVDAodm9pZCkKLXsK LSAgICBUMCBePSBUMTsKLX0KLQogdm9pZCBPUFBST1RPIG9wX2FuZG5fVDFfVDAodm9pZCkKIHsK ICAgICBUMCAmPSB+VDE7CkBAIC05MjEsMTIgKzcwOCw2IEBACiB9CiAKICNpZmRlZiBUQVJHRVRf U1BBUkM2NAotdm9pZCBPUFBST1RPIG9wX211bHhfVDFfVDAodm9pZCkKLXsKLSAgICBUMCAqPSBU MTsKLSAgICBGT1JDRV9SRVQoKTsKLX0KLQogdm9pZCBPUFBST1RPIG9wX3VkaXZ4X1QxX1QwKHZv aWQpCiB7CiAgICAgaWYgKFQxID09IDApIHsKQEAgLTE0OTksMjggKzEyODAsOCBAQAogewogICAg IFQyID0gKChpbnQ2NF90KVQwID49IDApOwogfQotCi12b2lkIE9QUFJPVE8gb3Bfam1wX2ltNjQo dm9pZCkKLXsKLSAgICBlbnYtPnBjID0gUEFSQU1RMTsKLX0KLQotdm9pZCBPUFBST1RPIG9wX21v dnFfbnBjX2ltNjQodm9pZCkKLXsKLSAgICBlbnYtPm5wYyA9IFBBUkFNUTE7Ci19CiAjZW5kaWYK IAotdm9pZCBPUFBST1RPIG9wX2ptcF9pbSh2b2lkKQotewotICAgIGVudi0+cGMgPSAodWludDMy X3QpUEFSQU0xOwotfQotCi12b2lkIE9QUFJPVE8gb3BfbW92bF9ucGNfaW0odm9pZCkKLXsKLSAg ICBlbnYtPm5wYyA9ICh1aW50MzJfdClQQVJBTTE7Ci19Ci0KIHZvaWQgT1BQUk9UTyBvcF9tb3Zs X25wY19UMCh2b2lkKQogewogICAgIGVudi0+bnBjID0gVDA7CkluZGV4OiBxZW11L3RhcmdldC1z cGFyYy9vcF90ZW1wbGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy90YXJnZXQtc3BhcmMv b3BfdGVtcGxhdGUuaAkyMDA4LTAyLTIxIDIwOjAwOjI4LjAwMDAwMDAwMCArMDAwMAorKysgL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCkBAIC0xLDQ4ICswLDAg QEAKLS8qCi0gKiAgU1BBUkMgbWljcm8gb3BlcmF0aW9ucyAodGVtcGxhdGVzIGZvciB2YXJpb3Vz IHJlZ2lzdGVyIHJlbGF0ZWQKLSAqICBvcGVyYXRpb25zKQotICoKLSAqICBDb3B5cmlnaHQgKGMp IDIwMDMgRmFicmljZSBCZWxsYXJkCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi12b2lkIE9QUFJPVE8gZ2x1ZShv cF9tb3ZsX1QwXywgUkVHTkFNRSkodm9pZCkKLXsKLSAgICBUMCA9IFJFRzsKLX0KLQotdm9pZCBP UFBST1RPIGdsdWUob3BfbW92bF9UMV8sIFJFR05BTUUpKHZvaWQpCi17Ci0gICAgVDEgPSBSRUc7 Ci19Ci0KLXZvaWQgT1BQUk9UTyBnbHVlKG9wX21vdmxfVDJfLCBSRUdOQU1FKSh2b2lkKQotewot ICAgIFQyID0gUkVHOwotfQotCi12b2lkIE9QUFJPVE8gZ2x1ZShnbHVlKG9wX21vdmxfLCBSRUdO QU1FKSwgX1QwKSh2b2lkKQotewotICAgIFJFRyA9IFQwOwotfQotCi12b2lkIE9QUFJPVE8gZ2x1 ZShnbHVlKG9wX21vdmxfLCBSRUdOQU1FKSwgX1QxKSh2b2lkKQotewotICAgIFJFRyA9IFQxOwot fQotCi0jdW5kZWYgUkVHCi0jdW5kZWYgUkVHTkFNRQpJbmRleDogcWVtdS90YXJnZXQtc3BhcmMv b3BfbWVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3RhcmdldC1zcGFyYy9vcF9tZW0uaAky MDA4LTAyLTIxIDIwOjAwOjI4LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS90YXJnZXQtc3BhcmMv b3BfbWVtLmgJMjAwOC0wMi0yMSAyMDowMjowNy4wMDAwMDAwMDAgKzAwMDAKQEAgLTQsMzYgKzQs NiBAQAogI2RlZmluZSBBRERSKHgpICh4KQogI2VuZGlmCiAKLS8qKiogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEludGVnZXIgbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoq Ki8KLSNkZWZpbmUgU1BBUkNfTERfT1AobmFtZSwgcXApICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXZvaWQgT1BQUk9UTyBnbHVlKGdsdWUob3BfLCBu YW1lKSwgTUVNU1VGRklYKSh2b2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICBUMSA9ICh0YXJnZXRfdWxvbmcpZ2x1ZShxcCwgTUVNU1VG RklYKShBRERSKFQwKSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0KLQotI2RlZmluZSBT UEFSQ19MRF9PUF9TKG5hbWUsIHFwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgIHZvaWQgT1BQUk9UTyBnbHVlKGdsdWUob3BfLCBuYW1lKSwgTUVNU1VGRklY KSh2b2lkKSAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBUMSA9 ICh0YXJnZXRfbG9uZylnbHVlKHFwLCBNRU1TVUZGSVgpKEFERFIoVDApKTsgICAgICAgICAgICAg ICAgICAgICAgXAotICAgIH0KLQotI2RlZmluZSBTUEFSQ19TVF9PUChuYW1lLCBvcCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdm9pZCBPUFBST1RP IGdsdWUoZ2x1ZShvcF8sIG5hbWUpLCBNRU1TVUZGSVgpKHZvaWQpICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdsdWUob3AsIE1FTVNVRkZJ WCkoQUREUihUMCksIFQxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LX0KLQotU1BBUkNfTERfT1AobGQsIGxkbCk7Ci1TUEFSQ19MRF9PUChsZHViLCBsZHViKTsKLVNQ QVJDX0xEX09QKGxkdWgsIGxkdXcpOwotU1BBUkNfTERfT1BfUyhsZHNiLCBsZHNiKTsKLVNQQVJD X0xEX09QX1MobGRzaCwgbGRzdyk7Ci0KLS8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbnRlZ2VyIHN0b3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KLVNQQVJDX1NU X09QKHN0LCBzdGwpOwotU1BBUkNfU1RfT1Aoc3RiLCBzdGIpOwotU1BBUkNfU1RfT1Aoc3RoLCBz dHcpOwotCiB2b2lkIE9QUFJPVE8gZ2x1ZShvcF9zdGQsIE1FTVNVRkZJWCkodm9pZCkKIHsKICAg ICB1aW50NjRfdCB0bXAgPSAoKHVpbnQ2NF90KVQxIDw8IDMyKSB8ICh1aW50NjRfdCkoVDIgJiAw eGZmZmZmZmZmKTsKQEAgLTQxLDE5ICsxMSw2IEBACiAgICAgZ2x1ZShzdHEsIE1FTVNVRkZJWCko QUREUihUMCksIHRtcCk7CiB9CiAKLXZvaWQgT1BQUk9UTyBnbHVlKG9wX2xkc3R1YiwgTUVNU1VG RklYKSh2b2lkKQotewotICAgIFQxID0gZ2x1ZShsZHViLCBNRU1TVUZGSVgpKEFERFIoVDApKTsK LSAgICBnbHVlKHN0YiwgTUVNU1VGRklYKShBRERSKFQwKSwgMHhmZik7ICAgICAvKiBYWFg6IFNo b3VsZCBiZSBBdG9taWNhbGx5ICovCi19Ci0KLXZvaWQgT1BQUk9UTyBnbHVlKG9wX3N3YXAsIE1F TVNVRkZJWCkodm9pZCkKLXsKLSAgICB0YXJnZXRfdWxvbmcgdG1wID0gZ2x1ZShsZGwsIE1FTVNV RkZJWCkoQUREUihUMCkpOwotICAgIGdsdWUoc3RsLCBNRU1TVUZGSVgpKEFERFIoVDApLCBUMSk7 ICAgICAgIC8qIFhYWDogU2hvdWxkIGJlIEF0b21pY2FsbHkgKi8KLSAgICBUMSA9IHRtcDsKLX0K LQogdm9pZCBPUFBST1RPIGdsdWUob3BfbGRkLCBNRU1TVUZGSVgpKHZvaWQpCiB7CiAgICAgdWlu dDY0X3QgdG1wOwpAQCAtMTA3LDE4ICs2NCw0IEBACiB9CiAjZW5kaWYKIAotI2lmZGVmIFRBUkdF VF9TUEFSQzY0Ci12b2lkIE9QUFJPVE8gZ2x1ZShvcF9sZHV3LCBNRU1TVUZGSVgpKHZvaWQpCi17 Ci0gICAgVDEgPSAodWludDY0X3QpKGdsdWUobGRsLCBNRU1TVUZGSVgpKEFERFIoVDApKSAmIDB4 ZmZmZmZmZmYpOwotfQotCi12b2lkIE9QUFJPVE8gZ2x1ZShvcF9sZHN3LCBNRU1TVUZGSVgpKHZv aWQpCi17Ci0gICAgVDEgPSAoaW50NjRfdCkoZ2x1ZShsZGwsIE1FTVNVRkZJWCkoQUREUihUMCkp ICYgMHhmZmZmZmZmZik7Ci19Ci0KLVNQQVJDX0xEX09QKGxkeCwgbGRxKTsKLVNQQVJDX1NUX09Q KHN0eCwgc3RxKTsKLSNlbmRpZgogI3VuZGVmIE1FTVNVRkZJWAo= ------=_Part_5547_9715581.1203625644422--