From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IgbAM-0002uI-Rj for qemu-devel@nongnu.org; Sat, 13 Oct 2007 03:12:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IgbAL-0002u6-Pu for qemu-devel@nongnu.org; Sat, 13 Oct 2007 03:12:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IgbAL-0002u3-L1 for qemu-devel@nongnu.org; Sat, 13 Oct 2007 03:12:05 -0400 Received: from mx20.gnu.org ([199.232.41.8]) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1IgbAK-00047t-M0 for qemu-devel@nongnu.org; Sat, 13 Oct 2007 03:12:05 -0400 Received: from mu-out-0910.google.com ([209.85.134.187]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IgbAH-0003Fz-1w for qemu-devel@nongnu.org; Sat, 13 Oct 2007 03:12:02 -0400 Received: by mu-out-0910.google.com with SMTP id w8so877366mue for ; Sat, 13 Oct 2007 00:12:00 -0700 (PDT) Message-ID: Date: Sat, 13 Oct 2007 10:11:59 +0300 From: "Blue Swirl" Subject: Re: [Fwd: Re: [Qemu-devel] RFC: Code fetch optimisation] In-Reply-To: <1192230023.9976.291.camel@rapid> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_28969_24732967.1192259519804" References: <1192230023.9976.291.camel@rapid> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_28969_24732967.1192259519804 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/13/07, J. Mayer wrote: > -------- Forwarded Message -------- > > From: Jocelyn Mayer > > Reply-To: l_indien@magic.fr, qemu-devel@nongnu.org > > To: qemu-devel@nongnu.org > > Subject: Re: [Qemu-devel] RFC: Code fetch optimisation > > Date: Fri, 12 Oct 2007 20:24:44 +0200 > > > > On Fri, 2007-10-12 at 18:21 +0300, Blue Swirl wrote: > > > On 10/12/07, J. Mayer wrote: > > > > Here's a small patch that allow an optimisation for code fetch, at least > > > > for RISC CPU targets, as suggested by Fabrice Bellard. > > > > The main idea is that a translated block is never to span over a page > > > > boundary. As the tb_find_slow routine already gets the physical address > > > > of the page of code to be translated, the code translator could then > > > > fetch the code using raw host memory accesses instead of doing it > > > > through the softmmu routines. > > > > This patch could also be adapted to RISC CPU targets, with care for the > > > > last instruction of a page. For now, I did implement it for alpha, arm, > > > > mips, PowerPC and SH4. > > > > I don't actually know if the optimsation would bring a sensible speed > > > > gain or if it will be absolutelly marginal. > > > > > > > > Please comment. > > > > > > This will not work correctly for execution of MMIO registers, but > > > maybe that won't work on real hardware either. Who cares. > > > > I wonder if this is important or not... But maybe, when retrieving the > > physical address we could check if it is inside ROM/RAM or an I/O area > > and in the last case do not give the phys_addr information to the > > translator. In that case, it would go on using the ldxx_code. I guess if > > we want to do that, a set of helpers would be appreciated to avoid > > adding code like: > > if (phys_pc == 0) > > opc = ldul_code(virt_pc) > > else > > opc = ldul_raw(phys_pc) > > everywhere... I could also add another check so this set of macro would > > automatically use ldxx_code if we reach a page boundary, which would > > then make easy to use this optimisation for CISC/VLE architectures too. > > > > I'm not sure of the proper solution to allow executing code from mmio > > devices. But adding specific accessors to handle the CISC/VLE case is to > > be done. > > [...] > > I did update my patch following this way and it's now able to run x86 > and PowerPC targets. > PowerPC is the easy case, x86 is maybe the worst... Well, I'm not really > sure of what I've done for Sparc, but other targets should be safe. It broke Sparc, delay slot handling makes things complicated. The updated patch passes my tests. For extra performance, I bypassed the ldl_code_p. On Sparc, instructions can't be split between two pages. Isn't translation always contained to the same page for all targets like Sparc? ------=_Part_28969_24732967.1192259519804 Content-Type: text/x-diff; name="code_raw_optim.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="code_raw_optim.diff"; filename="code_raw_optim.diff" X-Attachment-Id: f_f7psfca9 SW5kZXg6IHFlbXUvY3B1LWFsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9jcHUtYWxsLmgJ MjAwNy0xMC0xMyAwNjoyMjozNS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvY3B1LWFsbC5oCTIw MDctMTAtMTMgMDY6MjU6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02NDYsNiArNjQ2LDEzIEBACiAj ZGVmaW5lIGxkbF9jb2RlKHApIGxkbF9yYXcocCkKICNkZWZpbmUgbGRxX2NvZGUocCkgbGRxX3Jh dyhwKQogCisjZGVmaW5lIGxkdWJfY29kZV9wKHNwLCBwcCwgcCkgbGR1Yl9yYXcocCkKKyNkZWZp bmUgbGRzYl9jb2RlX3Aoc3AsIHBwLCBwKSBsZHNiX3JhdyhwKQorI2RlZmluZSBsZHV3X2NvZGVf cChzcCwgcHAsIHApIGxkdXdfcmF3KHApCisjZGVmaW5lIGxkc3dfY29kZV9wKHNwLCBwcCwgcCkg bGRzd19yYXcocCkKKyNkZWZpbmUgbGRsX2NvZGVfcChzcCwgcHAsIHApIGxkbF9yYXcocCkKKyNk ZWZpbmUgbGRxX2NvZGVfcChzcCwgcHAsIHApIGxkcV9yYXcocCkKKwogI2RlZmluZSBsZHViX2tl cm5lbChwKSBsZHViX3JhdyhwKQogI2RlZmluZSBsZHNiX2tlcm5lbChwKSBsZHNiX3JhdyhwKQog I2RlZmluZSBsZHV3X2tlcm5lbChwKSBsZHV3X3JhdyhwKQpJbmRleDogcWVtdS9jcHUtZXhlYy5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9jcHUtZXhlYy5jCTIwMDctMTAtMTMgMDY6MjI6MzUu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L2NwdS1leGVjLmMJMjAwNy0xMC0xMyAwNjoyNTo0Ni4w MDAwMDAwMDAgKzAwMDAKQEAgLTEzMyw2ICsxMzMsNyBAQAogICAgIHRiLT50Y19wdHIgPSB0Y19w dHI7CiAgICAgdGItPmNzX2Jhc2UgPSBjc19iYXNlOwogICAgIHRiLT5mbGFncyA9IGZsYWdzOwor ICAgIHRiLT5wYWdlX2FkZHJbMF0gPSBwaHlzX3BhZ2UxOwogICAgIGNwdV9nZW5fY29kZShlbnYs IHRiLCBDT0RFX0dFTl9NQVhfU0laRSwgJmNvZGVfZ2VuX3NpemUpOwogICAgIGNvZGVfZ2VuX3B0 ciA9ICh2b2lkICopKCgodW5zaWduZWQgbG9uZyljb2RlX2dlbl9wdHIgKyBjb2RlX2dlbl9zaXpl ICsgQ09ERV9HRU5fQUxJR04gLSAxKSAmIH4oQ09ERV9HRU5fQUxJR04gLSAxKSk7CiAKSW5kZXg6 IHFlbXUvc29mdG1tdV9oZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc29mdG1tdV9o ZWFkZXIuaAkyMDA3LTEwLTEzIDA2OjIyOjM1LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zb2Z0 bW11X2hlYWRlci5oCTIwMDctMTAtMTMgMDY6MjU6NDYuMDAwMDAwMDAwICswMDAwCkBAIC0zMzYs NiArMzM2LDYwIEBACiAgICAgfQogfQogCisjZWxzZQorCisjaWYgREFUQV9TSVpFIDw9IDIKK3N0 YXRpYyBpbmxpbmUgUkVTX1RZUEUgZ2x1ZShnbHVlKGdsdWUobGRzLFNVRkZJWCksTUVNU1VGRklY KSxfcCkodW5zaWduZWQgbG9uZyAqc3RhcnRfcGMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGh5 c19wYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHZpcnRfcGMpCit7CisgICAgUkVTX1RZUEUgb3Bj OworCisgICAgaWYgKHVubGlrZWx5KCgqc3RhcnRfcGMgXgorICAgICAgICAgICAgICAgICAgKHBo eXNfcGMgKyBzaXplb2YoUkVTX1RZUEUpIC0gMSkpID4+IFRBUkdFVF9QQUdFX0JJVFMpKSB7Cisg ICAgICAgIC8qIFNsb3cgcGF0aDogcGh5c19wYyBpcyBub3QgaW4gdGhlIHNhbWUgcGFnZSB0aGFu IHN0YXJ0X3BjCisgICAgICAgICAqICAgICAgICAgICAgb3IgdGhlIGluc24gaXMgc3Bhbm5pbmcg dHdvIHBhZ2VzCisgICAgICAgICAqLworICAgICAgICBvcGMgPSBnbHVlKGdsdWUobGRzLFNVRkZJ WCksTUVNU1VGRklYKSh2aXJ0X3BjKTsKKyAgICAgICAgLyogQXZvaWQgc29mdG1tdSBhY2Nlc3Mg b24gbmV4dCBsb2FkICovCisgICAgICAgIC8qIFhYWDogZG9udDogcGh5cyBQQyBpcyBub3QgY29y cmVjdCBhbnltb3JlCisgICAgICAgICAqICAgICAgV2UgY2hvdWxkIGNhbGwgZ2V0X3BoeXNfYWRk cl9jb2RlKGVudiwgcGMpOyBhbmQgcmVtb3ZlIHRoZSBlbHNlCisgICAgICAgICAqICAgICAgY29u ZGl0aW9uLCBoZXJlLgorICAgICAgICAgKi8KKyAgICAgICAgLy8qc3RhcnRfcGMgPSBwaHlzX3Bj OworICAgIH0gZWxzZSB7CisgICAgICAgIG9wYyA9IGdsdWUoZ2x1ZShsZHMsU1VGRklYKSxfcmF3 KShwaHlzX3BjKTsKKyAgICB9CisKKyAgICByZXR1cm4gb3BjOworfQorI2VuZGlmCisKK3N0YXRp YyBpbmxpbmUgUkVTX1RZUEUgZ2x1ZShnbHVlKGdsdWUobGQsVVNVRkZJWCksTUVNU1VGRklYKSxf cCkodW5zaWduZWQgbG9uZyAqc3RhcnRfcGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGh5c19w YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHZpcnRfcGMpCit7CisgICAgUkVTX1RZUEUgb3BjOwor CisgICAgaWYgKHVubGlrZWx5KCgqc3RhcnRfcGMgXgorICAgICAgICAgICAgICAgICAgKHBoeXNf cGMgKyBzaXplb2YoUkVTX1RZUEUpIC0gMSkpID4+IFRBUkdFVF9QQUdFX0JJVFMpKSB7CisgICAg ICAgIC8qIFNsb3cgcGF0aDogcGh5c19wYyBpcyBub3QgaW4gdGhlIHNhbWUgcGFnZSB0aGFuIHN0 YXJ0X3BjCisgICAgICAgICAqICAgICAgICAgICAgb3IgdGhlIGluc24gaXMgc3Bhbm5pbmcgdHdv IHBhZ2VzCisgICAgICAgICAqLworICAgICAgICBvcGMgPSBnbHVlKGdsdWUobGQsVVNVRkZJWCks TUVNU1VGRklYKSh2aXJ0X3BjKTsKKyAgICAgICAgLyogQXZvaWQgc29mdG1tdSBhY2Nlc3Mgb24g bmV4dCBsb2FkICovCisgICAgICAgIC8qIFhYWDogZG9udDogcGh5cyBQQyBpcyBub3QgY29ycmVj dCBhbnltb3JlCisgICAgICAgICAqICAgICAgV2UgY2hvdWxkIGNhbGwgZ2V0X3BoeXNfYWRkcl9j b2RlKGVudiwgcGMpOyBhbmQgcmVtb3ZlIHRoZSBlbHNlCisgICAgICAgICAqICAgICAgY29uZGl0 aW9uLCBoZXJlLgorICAgICAgICAgKi8KKyAgICAgICAgLy8qc3RhcnRfcGMgPSBwaHlzX3BjOwor ICAgIH0gZWxzZSB7CisgICAgICAgIG9wYyA9IGdsdWUoZ2x1ZShsZCxVU1VGRklYKSxfcmF3KShw aHlzX3BjKTsKKyAgICB9CisKKyAgICByZXR1cm4gb3BjOworfQorCiAjZW5kaWYgLyogQUNDRVNT X1RZUEUgIT0gMyAqLwogCiAjZW5kaWYgLyogIWFzbSAqLwpJbmRleDogcWVtdS90YXJnZXQtYWxw aGEvdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3RhcmdldC1hbHBoYS90cmFu c2xhdGUuYwkyMDA3LTEwLTEzIDA2OjIyOjM1LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS90YXJn ZXQtYWxwaGEvdHJhbnNsYXRlLmMJMjAwNy0xMC0xMyAwNjoyNTo0Ni4wMDAwMDAwMDAgKzAwMDAK QEAgLTE5NjUsNiArMTk2NSw3IEBACiAgICAgc3RhdGljIGludCBpbnNuX2NvdW50OwogI2VuZGlm CiAgICAgRGlzYXNDb250ZXh0IGN0eCwgKmN0eHAgPSAmY3R4OworICAgIHVuc2lnbmVkIGxvbmcg cGh5c19wYywgcGh5c19wY19zdGFydDsKICAgICB0YXJnZXRfdWxvbmcgcGNfc3RhcnQ7CiAgICAg dWludDMyX3QgaW5zbjsKICAgICB1aW50MTZfdCAqZ2VuX29wY19lbmQ7CkBAIC0xOTcyLDYgKzE5 NzMsOSBAQAogICAgIGludCByZXQ7CiAKICAgICBwY19zdGFydCA9IHRiLT5wYzsKKyAgICBwaHlz X3BjX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGh5c19yYW1fYmFzZSArIHRiLT5wYWdlX2FkZHJb MF0gKworICAgICAgICAocGNfc3RhcnQgJiB+VEFSR0VUX1BBR0VfTUFTSyk7CisgICAgcGh5c19w YyA9IHBoeXNfcGNfc3RhcnQ7CiAgICAgZ2VuX29wY19wdHIgPSBnZW5fb3BjX2J1ZjsKICAgICBn ZW5fb3BjX2VuZCA9IGdlbl9vcGNfYnVmICsgT1BDX01BWF9TSVpFOwogICAgIGdlbl9vcHBhcmFt X3B0ciA9IGdlbl9vcHBhcmFtX2J1ZjsKQEAgLTIwMTAsNyArMjAxNCw3IEBACiAgICAgICAgICAg ICAgICAgICAgIGN0eC5wYywgY3R4Lm1lbV9pZHgpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAg ICAgaW5zbiA9IGxkbF9jb2RlKGN0eC5wYyk7CisgICAgICAgIGluc24gPSBsZGxfY29kZV9wKCZw aHlzX3BjX3N0YXJ0LCBwaHlzX3BjLCBjdHgucGMpOwogI2lmIGRlZmluZWQgQUxQSEFfREVCVUdf RElTQVMKICAgICAgICAgaW5zbl9jb3VudCsrOwogICAgICAgICBpZiAobG9nZmlsZSAhPSBOVUxM KSB7CkBAIC0yMDE4LDYgKzIwMjIsNyBAQAogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgY3R4 LnBjICs9IDQ7CisgICAgICAgIHBoeXNfcGMgKz0gNDsKICAgICAgICAgcmV0ID0gdHJhbnNsYXRl X29uZShjdHhwLCBpbnNuKTsKICAgICAgICAgaWYgKHJldCAhPSAwKQogICAgICAgICAgICAgYnJl YWs7CkluZGV4OiBxZW11L3RhcmdldC1hcm0vdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL3RhcmdldC1hcm0vdHJhbnNsYXRlLmMJMjAwNy0xMC0xMyAwNjoyMjozNS4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LWFybS90cmFuc2xhdGUuYwkyMDA3LTEwLTEzIDA2OjI1 OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMzgsNiArMzgsOCBAQAogLyogaW50ZXJuYWwgZGVmaW5l cyAqLwogdHlwZWRlZiBzdHJ1Y3QgRGlzYXNDb250ZXh0IHsKICAgICB0YXJnZXRfdWxvbmcgcGM7 CisgICAgdW5zaWduZWQgbG9uZyBwaHlzX3BjOworICAgIHVuc2lnbmVkIGxvbmcgcGh5c19wY19z dGFydDsKICAgICBpbnQgaXNfam1wOwogICAgIC8qIE5vbnplcm8gaWYgdGhpcyBpbnN0cnVjdGlv biBoYXMgYmVlbiBjb25kaXRpb25hbGx5IHNraXBwZWQuICAqLwogICAgIGludCBjb25kam1wOwpA QCAtMjIwNiw4ICsyMjA4LDkgQEAKIHsKICAgICB1bnNpZ25lZCBpbnQgY29uZCwgaW5zbiwgdmFs LCBvcDEsIGksIHNoaWZ0LCBybSwgcnMsIHJuLCByZCwgc2g7CiAKLSAgICBpbnNuID0gbGRsX2Nv ZGUocy0+cGMpOworICAgIGluc24gPSBsZGxfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5w aHlzX3BjLCBzLT5wYyk7CiAgICAgcy0+cGMgKz0gNDsKKyAgICBzLT5waHlzX3BjICs9IDQ7CiAK ICAgICBjb25kID0gaW5zbiA+PiAyODsKICAgICBpZiAoY29uZCA9PSAweGYpewpAQCAtMjk3MSw4 ICsyOTc0LDkgQEAKICAgICBpbnQzMl90IG9mZnNldDsKICAgICBpbnQgaTsKIAotICAgIGluc24g PSBsZHV3X2NvZGUocy0+cGMpOworICAgIGluc24gPSBsZHV3X2NvZGVfcCgmcy0+cGh5c19wY19z dGFydCwgcy0+cGh5c19wYywgcy0+cGMpOwogICAgIHMtPnBjICs9IDI7CisgICAgcy0+cGh5c19w YyArPSAyOwogCiAgICAgc3dpdGNoIChpbnNuID4+IDEyKSB7CiAgICAgY2FzZSAwOiBjYXNlIDE6 CkBAIC0zNDk0LDcgKzM0OTgsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg ICAgICAgb2Zmc2V0ID0gKChpbnQzMl90KWluc24gPDwgMjEpID4+IDEwOwotICAgICAgICBpbnNu ID0gbGR1d19jb2RlKHMtPnBjKTsKKyAgICAgICAgaW5zbiA9IGxkdXdfY29kZV9wKCZzLT5waHlz X3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7CiAgICAgICAgIG9mZnNldCB8PSBpbnNuICYg MHg3ZmY7CiAKICAgICAgICAgdmFsID0gKHVpbnQzMl90KXMtPnBjICsgMjsKQEAgLTM1NDQsNiAr MzU0OCw5IEBACiAKICAgICBkYy0+aXNfam1wID0gRElTQVNfTkVYVDsKICAgICBkYy0+cGMgPSBw Y19zdGFydDsKKyAgICBkYy0+cGh5c19wY19zdGFydCA9ICh1bnNpZ25lZCBsb25nKXBoeXNfcmFt X2Jhc2UgKyB0Yi0+cGFnZV9hZGRyWzBdICsKKyAgICAgICAgKHBjX3N0YXJ0ICYgflRBUkdFVF9Q QUdFX01BU0spOworICAgIGRjLT5waHlzX3BjID0gZGMtPnBoeXNfcGNfc3RhcnQ7CiAgICAgZGMt PnNpbmdsZXN0ZXBfZW5hYmxlZCA9IGVudi0+c2luZ2xlc3RlcF9lbmFibGVkOwogICAgIGRjLT5j b25kam1wID0gMDsKICAgICBkYy0+dGh1bWIgPSBlbnYtPnRodW1iOwpJbmRleDogcWVtdS90YXJn ZXQtY3Jpcy90cmFuc2xhdGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGFyZ2V0LWNyaXMv dHJhbnNsYXRlLmMJMjAwNy0xMC0xMyAwNjoyMjozNS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUv dGFyZ2V0LWNyaXMvdHJhbnNsYXRlLmMJMjAwNy0xMC0xMyAwNjoyNTo0Ni4wMDAwMDAwMDAgKzAw MDAKQEAgLTEwMCw2ICsxMDAsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgRGlzYXNDb250ZXh0IHsKIAlD UFVTdGF0ZSAqZW52OwogCXRhcmdldF91bG9uZyBwYywgaW5zbl9wYzsKKyAgICAgICAgdW5zaWdu ZWQgbG9uZyBwaHlzX3BjLCBwaHlzX3BjX3N0YXJ0OwogCiAJLyogRGVjb2Rlci4gICovCiAJdWlu dDMyX3QgaXI7CkBAIC04MjgsNyArODI5LDggQEAKIAkJaWYgKG1lbXNpemUgPT0gMSkKIAkJCWlu c25fbGVuKys7CiAKLQkJaW1tID0gbGRsX2NvZGUoZGMtPnBjICsgMik7CisgICAgICAgICAgICAg ICAgaW1tID0gbGRsX2NvZGVfcCgmZGMtPnBoeXNfcGNfc3RhcnQsIGRjLT5waHlzX3BjICsgMiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjLT5wYyArIDIpOwogCQlpZiAobWVt c2l6ZSAhPSA0KSB7CiAJCQlpZiAoc19leHQpIHsKIAkJCQlpbW0gPSBzaWduX2V4dGVuZChpbW0s IChtZW1zaXplICogOCkgLSAxKTsKQEAgLTE5NjIsNyArMTk2NCw3IEBACiAJcmQgPSBkYy0+b3Ay OwogCiAJY3Jpc19jY19tYXNrKGRjLCAwKTsKLQlpbW0gPSBsZGxfY29kZShkYy0+cGMgKyAyKTsK KwlpbW0gPSBsZGxfY29kZV9wKCZkYy0+cGh5c19wY19zdGFydCwgZGMtPnBoeXNfcGMgKyAyLCBk Yy0+cGMgKyAyKTsKIAlESVMoZnByaW50ZiAobG9nZmlsZSwgImxhcGMgMHgleCwgJHIldVxuIiwg aW1tICsgZGMtPnBjLCBkYy0+b3AyKSk7CiAJZ2VuX29wX21vdmxfVDBfaW0gKGRjLT5wYyArIGlt bSk7CiAJZ2VuX21vdmxfcmVnX1QwW3JkXSAoKTsKQEAgLTE5OTksNyArMjAwMSw3IEBACiB7CiAJ dWludDMyX3QgaW1tOwogCi0JaW1tID0gbGRsX2NvZGUoZGMtPnBjICsgMik7CisJaW1tID0gbGRs X2NvZGVfcCgmZGMtPnBoeXNfcGNfc3RhcnQsIGRjLT5waHlzX3BjICsgMiwgZGMtPnBjICsgMik7 CiAKIAlESVMoZnByaW50ZiAobG9nZmlsZSwgImphcyAweCV4XG4iLCBpbW0pKTsKIAljcmlzX2Nj X21hc2soZGMsIDApOwpAQCAtMjAxNiw3ICsyMDE4LDcgQEAKIHsKIAl1aW50MzJfdCBpbW07CiAK LQlpbW0gPSBsZGxfY29kZShkYy0+cGMgKyAyKTsKKwlpbW0gPSBsZGxfY29kZV9wKCZkYy0+cGh5 c19wY19zdGFydCwgZGMtPnBoeXNfcGMgKyAyLCBkYy0+cGMgKyAyKTsKIAogCURJUyhmcHJpbnRm IChsb2dmaWxlLCAiamFzYyAweCV4XG4iLCBpbW0pKTsKIAljcmlzX2NjX21hc2soZGMsIDApOwpA QCAtMjA0Nyw3ICsyMDQ5LDcgQEAKIAlpbnQzMl90IG9mZnNldDsKIAl1aW50MzJfdCBjb25kID0g ZGMtPm9wMjsKIAotCW9mZnNldCA9IGxkbF9jb2RlKGRjLT5wYyArIDIpOworCW9mZnNldCA9IGxk bF9jb2RlX3AoJmRjLT5waHlzX3BjX3N0YXJ0LCBkYy0+cGh5c19wYyArIDIsIGRjLT5wYyArIDIp OwogCW9mZnNldCA9IHNpZ25fZXh0ZW5kKG9mZnNldCwgMTUpOwogCiAJRElTKGZwcmludGYgKGxv Z2ZpbGUsICJiJXMgJWQgcGM9JXggZHN0PSV4XG4iLApAQCAtMjA2NSw3ICsyMDY3LDcgQEAKIAlp bnQzMl90IHNpbW07CiAKIAotCXNpbW0gPSBsZGxfY29kZShkYy0+cGMgKyAyKTsKKwlzaW1tID0g bGRsX2NvZGVfcCgmZGMtPnBoeXNfcGNfc3RhcnQsIGRjLT5waHlzX3BjICsgMiwgZGMtPnBjICsg Mik7CiAKIAlESVMoZnByaW50ZiAobG9nZmlsZSwgImJhcyAweCV4LCAkcCV1XG4iLCBkYy0+cGMg KyBzaW1tLCBkYy0+b3AyKSk7CiAJY3Jpc19jY19tYXNrKGRjLCAwKTsKQEAgLTIwODEsNyArMjA4 Myw3IEBACiBzdGF0aWMgdW5zaWduZWQgaW50IGRlY19iYXNjX2ltKERpc2FzQ29udGV4dCAqZGMp CiB7CiAJaW50MzJfdCBzaW1tOwotCXNpbW0gPSBsZGxfY29kZShkYy0+cGMgKyAyKTsKKwlzaW1t ID0gbGRsX2NvZGVfcCgmZGMtPnBoeXNfcGNfc3RhcnQsIGRjLT5waHlzX3BjICsgMiwgZGMtPnBj ICsgMik7CiAKIAlESVMoZnByaW50ZiAobG9nZmlsZSwgImJhc2MgMHgleCwgJHAldVxuIiwgZGMt PnBjICsgc2ltbSwgZGMtPm9wMikpOwogCWNyaXNfY2NfbWFzayhkYywgMCk7CkBAIC0yMjU5LDcg KzIyNjEsNyBAQAogCWludCBpOwogCiAJLyogTG9hZCBhIGhhbGZ3b3JkIG9udG8gdGhlIGluc3Ry dWN0aW9uIHJlZ2lzdGVyLiAgKi8KLQl0bXAgPSBsZGxfY29kZShkYy0+cGMpOworCXRtcCA9IGxk bF9jb2RlX3AoJmRjLT5waHlzX3BjX3N0YXJ0LCBkYy0+cGh5c19wYywgZGMtPnBjKTsKIAlkYy0+ aXIgPSB0bXAgJiAweGZmZmY7CiAKIAkvKiBOb3cgZGVjb2RlIGl0LiAgKi8KQEAgLTIzMTMsNiAr MjMxNSw5IEBACiAJdWludDMyX3QgbmV4dF9wYWdlX3N0YXJ0OwogCiAJcGNfc3RhcnQgPSB0Yi0+ cGM7CisgICAgICAgIGRjLT5waHlzX3BjX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGh5c19yYW1f YmFzZSArIHRiLT5wYWdlX2FkZHJbMF0gKworICAgICAgICAgICAgKHBjX3N0YXJ0ICYgflRBUkdF VF9QQUdFX01BU0spOworICAgICAgICBkYy0+cGh5c19wYyA9IGRjLT5waHlzX3BjX3N0YXJ0Owog CWRjLT5lbnYgPSBlbnY7CiAJZGMtPnRiID0gdGI7CiAKQEAgLTIzNDcsNiArMjM1Miw3IEBACiAJ CWluc25fbGVuID0gY3Jpc19kZWNvZGVyKGRjKTsKIAkJU1RBVFMoZ2VuX29wX2V4ZWNfaW5zbigp KTsKIAkJZGMtPnBjICs9IGluc25fbGVuOworICAgICAgICAgICAgICAgIGRjLT5waHlzX3BjICs9 IGluc25fbGVuOwogCQlpZiAoIWRjLT5mbGFneF9saXZlCiAJCSAgICB8fCAoZGMtPmZsYWd4X2xp dmUgJiYKIAkJCSEoZGMtPmNjX29wID09IENDX09QX0ZMQUdTICYmIGRjLT5mbGFnc194KSkpIHsK SW5kZXg6IHFlbXUvdGFyZ2V0LWkzODYvdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5v cmlnL3RhcmdldC1pMzg2L3RyYW5zbGF0ZS5jCTIwMDctMTAtMTMgMDY6MjI6MzUuMDAwMDAwMDAw ICswMDAwCisrKyBxZW11L3RhcmdldC1pMzg2L3RyYW5zbGF0ZS5jCTIwMDctMTAtMTMgMDY6MjU6 NDYuMDAwMDAwMDAwICswMDAwCkBAIC03Myw2ICs3Myw3IEBACiAgICAgaW50IHByZWZpeDsKICAg ICBpbnQgYWZsYWcsIGRmbGFnOwogICAgIHRhcmdldF91bG9uZyBwYzsgLyogcGMgPSBlaXAgKyBj c19iYXNlICovCisgICAgdW5zaWduZWQgbG9uZyBwaHlzX3BjLHBoeXNfcGNfc3RhcnQ7CiAgICAg aW50IGlzX2ptcDsgLyogMSA9IG1lYW5zIGp1bXAgKHN0b3AgdHJhbnNsYXRpb24pLCAyIG1lYW5z IENQVQogICAgICAgICAgICAgICAgICAgIHN0YXRpYyBzdGF0ZSBjaGFuZ2UgKHN0b3AgdHJhbnNs YXRpb24pICovCiAgICAgLyogY3VycmVudCBibG9jayBjb250ZXh0ICovCkBAIC0xNDUxLDcgKzE0 NTIsNyBAQAogCiAgICAgICAgIGlmIChiYXNlID09IDQpIHsKICAgICAgICAgICAgIGhhdmVzaWIg PSAxOwotICAgICAgICAgICAgY29kZSA9IGxkdWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgICAg IGNvZGUgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5w YysrKTsKICAgICAgICAgICAgIHNjYWxlID0gKGNvZGUgPj4gNikgJiAzOwogICAgICAgICAgICAg aW5kZXggPSAoKGNvZGUgPj4gMykgJiA3KSB8IFJFWF9YKHMpOwogICAgICAgICAgICAgYmFzZSA9 IChjb2RlICYgNyk7CkBAIC0xNDYyLDggKzE0NjMsMTAgQEAKICAgICAgICAgY2FzZSAwOgogICAg ICAgICAgICAgaWYgKChiYXNlICYgNykgPT0gNSkgewogICAgICAgICAgICAgICAgIGJhc2UgPSAt MTsKLSAgICAgICAgICAgICAgICBkaXNwID0gKGludDMyX3QpbGRsX2NvZGUocy0+cGMpOworICAg ICAgICAgICAgICAgIGRpc3AgPSAoaW50MzJfdClsZGxfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0 LCBzLT5waHlzX3BjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHMtPnBjKTsKICAgICAgICAgICAgICAgICBzLT5wYyArPSA0OworICAgICAgICAgICAgICAgIHMt PnBoeXNfcGMgKz0gNDsKICAgICAgICAgICAgICAgICBpZiAoQ09ERTY0KHMpICYmICFoYXZlc2li KSB7CiAgICAgICAgICAgICAgICAgICAgIGRpc3AgKz0gcy0+cGMgKyBzLT5yaXBfb2Zmc2V0Owog ICAgICAgICAgICAgICAgIH0KQEAgLTE0NzIsMTIgKzE0NzUsMTQgQEAKICAgICAgICAgICAgIH0K ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBkaXNwID0g KGludDhfdClsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgICAgICBkaXNwID0gKGludDhfdCls ZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGMrKyk7CiAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgZGlzcCA9IGxk bF9jb2RlKHMtPnBjKTsKKyAgICAgICAgICAgIGRpc3AgPSBsZGxfY29kZV9wKCZzLT5waHlzX3Bj X3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7CiAgICAgICAgICAgICBzLT5wYyArPSA0OworICAg ICAgICAgICAgcy0+cGh5c19wYyArPSA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K IApAQCAtMTU0NSw4ICsxNTUwLDkgQEAKICAgICAgICAgc3dpdGNoIChtb2QpIHsKICAgICAgICAg Y2FzZSAwOgogICAgICAgICAgICAgaWYgKHJtID09IDYpIHsKLSAgICAgICAgICAgICAgICBkaXNw ID0gbGR1d19jb2RlKHMtPnBjKTsKKyAgICAgICAgICAgICAgICBkaXNwID0gbGR1d19jb2RlX3Ao JnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICAgICAgICAgICAgICBz LT5wYyArPSAyOworICAgICAgICAgICAgICAgIHMtPnBoeXNfcGMgKz0gMjsKICAgICAgICAgICAg ICAgICBnZW5fb3BfbW92bF9BMF9pbShkaXNwKTsKICAgICAgICAgICAgICAgICBybSA9IDA7IC8q IGF2b2lkIFNTIG92ZXJyaWRlICovCiAgICAgICAgICAgICAgICAgZ290byBub19ybTsKQEAgLTE1 NTUsMTIgKzE1NjEsMTQgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBkaXNwID0gKGludDhfdClsZHViX2NvZGUocy0+cGMr Kyk7CisgICAgICAgICAgICBkaXNwID0gKGludDhfdClsZHViX2NvZGVfcCgmcy0+cGh5c19wY19z dGFydCwgcy0+cGh5c19wYysrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcy0+cGMrKyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg ICAgY2FzZSAyOgotICAgICAgICAgICAgZGlzcCA9IGxkdXdfY29kZShzLT5wYyk7CisgICAgICAg ICAgICBkaXNwID0gbGR1d19jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMsIHMt PnBjKTsKICAgICAgICAgICAgIHMtPnBjICs9IDI7CisgICAgICAgICAgICBzLT5waHlzX3BjICs9 IDI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBzd2l0Y2gocm0pIHsK QEAgLTE2MjksNyArMTYzNyw3IEBACiAgICAgICAgIGJhc2UgPSBybTsKIAogICAgICAgICBpZiAo YmFzZSA9PSA0KSB7Ci0gICAgICAgICAgICBjb2RlID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAg ICAgICAgICAgY29kZSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3Bj KyssIHMtPnBjKyspOwogICAgICAgICAgICAgYmFzZSA9IChjb2RlICYgNyk7CiAgICAgICAgIH0K IApAQCAtMTYzNywxNCArMTY0NSwxNyBAQAogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBp ZiAoYmFzZSA9PSA1KSB7CiAgICAgICAgICAgICAgICAgcy0+cGMgKz0gNDsKKyAgICAgICAgICAg ICAgICBzLT5waHlzX3BjICs9IDQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgcy0+cGMrKzsKKyAgICAgICAgICAgIHMtPnBo eXNfcGMrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICBj YXNlIDI6CiAgICAgICAgICAgICBzLT5wYyArPSA0OworICAgICAgICAgICAgcy0+cGh5c19wYyAr PSA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMTY1 MiwxNCArMTY2MywxNyBAQAogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAocm0gPT0g NikgewogICAgICAgICAgICAgICAgIHMtPnBjICs9IDI7CisgICAgICAgICAgICAgICAgcy0+cGh5 c19wYyArPSAyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh c2UgMToKICAgICAgICAgICAgIHMtPnBjKys7CisgICAgICAgICAgICBzLT5waHlzX3BjKys7CiAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgY2FzZSAyOgogICAg ICAgICAgICAgcy0+cGMgKz0gMjsKKyAgICAgICAgICAgIHMtPnBoeXNfcGMgKz0gMjsKICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTcyNywxNyArMTc0MSwyMCBAQAog CiAgICAgc3dpdGNoKG90KSB7CiAgICAgY2FzZSBPVF9CWVRFOgotICAgICAgICByZXQgPSBsZHVi X2NvZGUocy0+cGMpOworICAgICAgICByZXQgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFy dCwgcy0+cGh5c19wYywgcy0+cGMpOwogICAgICAgICBzLT5wYysrOworICAgICAgICBzLT5waHlz X3BjKys7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT1RfV09SRDoKLSAgICAgICAgcmV0ID0g bGR1d19jb2RlKHMtPnBjKTsKKyAgICAgICAgcmV0ID0gbGR1d19jb2RlX3AoJnMtPnBoeXNfcGNf c3RhcnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICAgICAgcy0+cGMgKz0gMjsKKyAgICAgICAg cy0+cGh5c19wYyArPSAyOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgIGNhc2Ug T1RfTE9ORzoKLSAgICAgICAgcmV0ID0gbGRsX2NvZGUocy0+cGMpOworICAgICAgICByZXQgPSBs ZGxfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7CiAgICAgICAg IHMtPnBjICs9IDQ7CisgICAgICAgIHMtPnBoeXNfcGMgKz0gNDsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogICAgIHJldHVybiByZXQ7CkBAIC0yNjg5LDcgKzI3MDYsNyBAQAogICAgICAgICBnZW5f b3BfZW50ZXJfbW14KCk7CiAgICAgfQogCi0gICAgbW9kcm0gPSBsZHViX2NvZGUocy0+cGMrKyk7 CisgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysr LCBzLT5wYysrKTsKICAgICByZWcgPSAoKG1vZHJtID4+IDMpICYgNyk7CiAgICAgaWYgKGlzX3ht bSkKICAgICAgICAgcmVnIHw9IHJleF9yOwpAQCAtMjk2Miw3ICsyOTc5LDcgQEAKICAgICAgICAg Y2FzZSAweDE3MTogLyogc2hpZnQgeG1tLCBpbSAqLwogICAgICAgICBjYXNlIDB4MTcyOgogICAg ICAgICBjYXNlIDB4MTczOgotICAgICAgICAgICAgdmFsID0gbGR1Yl9jb2RlKHMtPnBjKyspOwor ICAgICAgICAgICAgdmFsID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNf cGMrKywgcy0+cGMrKyk7CiAgICAgICAgICAgICBpZiAoaXNfeG1tKSB7CiAgICAgICAgICAgICAg ICAgZ2VuX29wX21vdmxfVDBfaW0odmFsKTsKICAgICAgICAgICAgICAgICBnZW5fb3BfbW92bF9l bnZfVDAob2Zmc2V0b2YoQ1BVWDg2U3RhdGUseG1tX3QwLlhNTV9MKDApKSk7CkBAIC0zMDgyLDcg KzMwOTksNyBAQAogICAgICAgICBjYXNlIDB4MWM0OgogICAgICAgICAgICAgcy0+cmlwX29mZnNl dCA9IDE7CiAgICAgICAgICAgICBnZW5fbGRzdF9tb2RybShzLCBtb2RybSwgT1RfV09SRCwgT1Jf VE1QMCwgMCk7Ci0gICAgICAgICAgICB2YWwgPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAg ICAgICB2YWwgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBz LT5wYysrKTsKICAgICAgICAgICAgIGlmIChiMSkgewogICAgICAgICAgICAgICAgIHZhbCAmPSA3 OwogICAgICAgICAgICAgICAgIGdlbl9vcF9waW5zcndfeG1tKG9mZnNldG9mKENQVVg4NlN0YXRl LHhtbV9yZWdzW3JlZ10pLCB2YWwpOwpAQCAtMzA5NSw3ICszMTEyLDcgQEAKICAgICAgICAgY2Fz ZSAweDFjNToKICAgICAgICAgICAgIGlmIChtb2QgIT0gMykKICAgICAgICAgICAgICAgICBnb3Rv IGlsbGVnYWxfb3A7Ci0gICAgICAgICAgICB2YWwgPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAg ICAgICAgICB2YWwgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysr LCBzLT5wYysrKTsKICAgICAgICAgICAgIGlmIChiMSkgewogICAgICAgICAgICAgICAgIHZhbCAm PSA3OwogICAgICAgICAgICAgICAgIHJtID0gKG1vZHJtICYgNykgfCBSRVhfQihzKTsKQEAgLTMy MTMsMTMgKzMyMzAsMTMgQEAKICAgICAgICAgc3dpdGNoKGIpIHsKICAgICAgICAgY2FzZSAweDcw OiAvKiBwc2h1ZnggaW5zbiAqLwogICAgICAgICBjYXNlIDB4YzY6IC8qIHBzaHVmeCBpbnNuICov Ci0gICAgICAgICAgICB2YWwgPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgICAgICB2YWwg PSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsK ICAgICAgICAgICAgIHNzZV9vcDMgPSAoR2VuT3BGdW5jMyAqKXNzZV9vcDI7CiAgICAgICAgICAg ICBzc2Vfb3AzKG9wMV9vZmZzZXQsIG9wMl9vZmZzZXQsIHZhbCk7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgY2FzZSAweGMyOgogICAgICAgICAgICAgLyogY29tcGFyZSBpbnNucyAqLwot ICAgICAgICAgICAgdmFsID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICAgICAgdmFsID0g bGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAg ICAgICAgICAgICBpZiAodmFsID49IDgpCiAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX29w OwogICAgICAgICAgICAgc3NlX29wMiA9IHNzZV9vcF90YWJsZTRbdmFsXVtiMV07CkBAIC0zMjYw LDggKzMyNzcsOSBAQAogI2VuZGlmCiAgICAgcy0+cmlwX29mZnNldCA9IDA7IC8qIGZvciByZWxh dGl2ZSBpcCBhZGRyZXNzICovCiAgbmV4dF9ieXRlOgotICAgIGIgPSBsZHViX2NvZGUocy0+cGMp OworICAgIGIgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYywgcy0+ cGMpOwogICAgIHMtPnBjKys7CisgICAgcy0+cGh5c19wYysrOwogICAgIC8qIGNoZWNrIHByZWZp eGVzICovCiAjaWZkZWYgVEFSR0VUX1g4Nl82NAogICAgIGlmIChDT0RFNjQocykpIHsKQEAgLTMz NzUsNyArMzM5Myw3IEBACiAgICAgY2FzZSAweDBmOgogICAgICAgICAvKioqKioqKioqKioqKioq KioqKioqKioqKiovCiAgICAgICAgIC8qIGV4dGVuZGVkIG9wIGNvZGUgKi8KLSAgICAgICAgYiA9 IGxkdWJfY29kZShzLT5wYysrKSB8IDB4MTAwOworICAgICAgICBiID0gbGR1Yl9jb2RlX3AoJnMt PnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKykgfCAweDEwMDsKICAgICAgICAg Z290byByZXN3aXRjaDsKIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBA IC0zNDAwLDcgKzM0MTgsNyBAQAogCiAgICAgICAgICAgICBzd2l0Y2goZikgewogICAgICAgICAg ICAgY2FzZSAwOiAvKiBPUCBFdiwgR3YgKi8KLSAgICAgICAgICAgICAgICBtb2RybSA9IGxkdWJf Y29kZShzLT5wYysrKTsKKyAgICAgICAgICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5w aHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICAgICAgICAgIHJl ZyA9ICgobW9kcm0gPj4gMykgJiA3KSB8IHJleF9yOwogICAgICAgICAgICAgICAgIG1vZCA9ICht b2RybSA+PiA2KSAmIDM7CiAgICAgICAgICAgICAgICAgcm0gPSAobW9kcm0gJiA3KSB8IFJFWF9C KHMpOwpAQCAtMzQyMiw3ICszNDQwLDcgQEAKICAgICAgICAgICAgICAgICBnZW5fb3Aocywgb3As IG90LCBvcHJlZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDE6 IC8qIE9QIEd2LCBFdiAqLwotICAgICAgICAgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBj KyspOworICAgICAgICAgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3Rh cnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgICAgICAgICAgbW9kID0gKG1vZHJt ID4+IDYpICYgMzsKICAgICAgICAgICAgICAgICByZWcgPSAoKG1vZHJtID4+IDMpICYgNykgfCBy ZXhfcjsKICAgICAgICAgICAgICAgICBybSA9IChtb2RybSAmIDcpIHwgUkVYX0Iocyk7CkBAIC0z NDU3LDcgKzM0NzUsNyBAQAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG90ID0g ZGZsYWcgKyBPVF9XT1JEOwogCi0gICAgICAgICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5wYysr KTsKKyAgICAgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMt PnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgICAgICBtb2QgPSAobW9kcm0gPj4gNikgJiAz OwogICAgICAgICAgICAgcm0gPSAobW9kcm0gJiA3KSB8IFJFWF9CKHMpOwogICAgICAgICAgICAg b3AgPSAobW9kcm0gPj4gMykgJiA3OwpAQCAtMzUwNiw3ICszNTI0LDcgQEAKICAgICAgICAgZWxz ZQogICAgICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CiAKLSAgICAgICAgbW9kcm0gPSBs ZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNf cGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9IChtb2RybSA+ PiA2KSAmIDM7CiAgICAgICAgIHJtID0gKG1vZHJtICYgNykgfCBSRVhfQihzKTsKICAgICAgICAg b3AgPSAobW9kcm0gPj4gMykgJiA3OwpAQCAtMzY0OCw3ICszNjY2LDcgQEAKICAgICAgICAgZWxz ZQogICAgICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CiAKLSAgICAgICAgbW9kcm0gPSBs ZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNf cGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9IChtb2RybSA+ PiA2KSAmIDM7CiAgICAgICAgIHJtID0gKG1vZHJtICYgNykgfCBSRVhfQihzKTsKICAgICAgICAg b3AgPSAobW9kcm0gPj4gMykgJiA3OwpAQCAtMzc1NCw3ICszNzcyLDcgQEAKICAgICAgICAgZWxz ZQogICAgICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CiAKLSAgICAgICAgbW9kcm0gPSBs ZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNf cGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9IChtb2RybSA+ PiA2KSAmIDM7CiAgICAgICAgIHJtID0gKG1vZHJtICYgNykgfCBSRVhfQihzKTsKICAgICAgICAg cmVnID0gKChtb2RybSA+PiAzKSAmIDcpIHwgcmV4X3I7CkBAIC0zODA1LDcgKzM4MjMsNyBAQAog ICAgIGNhc2UgMHg2OTogLyogaW11bCBHdiwgRXYsIEkgKi8KICAgICBjYXNlIDB4NmI6CiAgICAg ICAgIG90ID0gZGZsYWcgKyBPVF9XT1JEOwotICAgICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5w YysrKTsKKyAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+ cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgcmVnID0gKChtb2RybSA+PiAzKSAmIDcpIHwg cmV4X3I7CiAgICAgICAgIGlmIChiID09IDB4NjkpCiAgICAgICAgICAgICBzLT5yaXBfb2Zmc2V0 ID0gaW5zbl9jb25zdF9zaXplKG90KTsKQEAgLTM4NDEsNyArMzg1OSw3IEBACiAgICAgICAgICAg ICBvdCA9IE9UX0JZVEU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG90ID0gZGZsYWcgKyBP VF9XT1JEOwotICAgICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgbW9k cm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysr KTsKICAgICAgICAgcmVnID0gKChtb2RybSA+PiAzKSAmIDcpIHwgcmV4X3I7CiAgICAgICAgIG1v ZCA9IChtb2RybSA+PiA2KSAmIDM7CiAgICAgICAgIGlmIChtb2QgPT0gMykgewpAQCAtMzg2OCw3 ICszODg2LDcgQEAKICAgICAgICAgICAgIG90ID0gT1RfQllURTsKICAgICAgICAgZWxzZQogICAg ICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9jb2Rl KHMtPnBjKyspOworICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0 LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICByZWcgPSAoKG1vZHJtID4+IDMpICYg NykgfCByZXhfcjsKICAgICAgICAgbW9kID0gKG1vZHJtID4+IDYpICYgMzsKICAgICAgICAgZ2Vu X29wX21vdl9UTl9yZWdbb3RdWzFdW3JlZ10oKTsKQEAgLTM4ODUsNyArMzkwMyw3IEBACiAgICAg ICAgIHMtPmNjX29wID0gQ0NfT1BfU1VCQiArIG90OwogICAgICAgICBicmVhazsKICAgICBjYXNl IDB4MWM3OiAvKiBjbXB4Y2hnOGIgKi8KLSAgICAgICAgbW9kcm0gPSBsZHViX2NvZGUocy0+cGMr Kyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBo eXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAmIDM7CiAgICAg ICAgIGlmIChtb2QgPT0gMykKICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9vcDsKQEAgLTM5NDQs NyArMzk2Miw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBvdCA9IGRmbGFnICsg T1RfV09SRDsKICAgICAgICAgfQotICAgICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5wYysrKTsK KyAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19w YysrLCBzLT5wYysrKTsKICAgICAgICAgbW9kID0gKG1vZHJtID4+IDYpICYgMzsKICAgICAgICAg Z2VuX3BvcF9UMChzKTsKICAgICAgICAgaWYgKG1vZCA9PSAzKSB7CkBAIC0zOTYzLDkgKzM5ODEs MTAgQEAKICAgICBjYXNlIDB4Yzg6IC8qIGVudGVyICovCiAgICAgICAgIHsKICAgICAgICAgICAg IGludCBsZXZlbDsKLSAgICAgICAgICAgIHZhbCA9IGxkdXdfY29kZShzLT5wYyk7CisgICAgICAg ICAgICB2YWwgPSBsZHV3X2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYywgcy0+ cGMpOwogICAgICAgICAgICAgcy0+cGMgKz0gMjsKLSAgICAgICAgICAgIGxldmVsID0gbGR1Yl9j b2RlKHMtPnBjKyspOworICAgICAgICAgICAgcy0+cGh5c19wYyArPSAyOworICAgICAgICAgICAg bGV2ZWwgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5w YysrKTsKICAgICAgICAgICAgIGdlbl9lbnRlcihzLCB2YWwsIGxldmVsKTsKICAgICAgICAgfQog ICAgICAgICBicmVhazsKQEAgLTQwNDUsNyArNDA2NCw3IEBACiAgICAgICAgICAgICBvdCA9IE9U X0JZVEU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG90ID0gZGZsYWcgKyBPVF9XT1JEOwot ICAgICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgbW9kcm0gPSBsZHVi X2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAg ICAgcmVnID0gKChtb2RybSA+PiAzKSAmIDcpIHwgcmV4X3I7CiAKICAgICAgICAgLyogZ2VuZXJh dGUgYSBnZW5lcmljIHN0b3JlICovCkBAIC00MDU3LDcgKzQwNzYsNyBAQAogICAgICAgICAgICAg b3QgPSBPVF9CWVRFOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdCA9IGRmbGFnICsgT1Rf V09SRDsKLSAgICAgICAgbW9kcm0gPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJt ID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7 CiAgICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAmIDM7CiAgICAgICAgIGlmIChtb2QgIT0gMykg ewogICAgICAgICAgICAgcy0+cmlwX29mZnNldCA9IGluc25fY29uc3Rfc2l6ZShvdCk7CkBAIC00 MDc2LDE0ICs0MDk1LDE0IEBACiAgICAgICAgICAgICBvdCA9IE9UX0JZVEU7CiAgICAgICAgIGVs c2UKICAgICAgICAgICAgIG90ID0gT1RfV09SRCArIGRmbGFnOwotICAgICAgICBtb2RybSA9IGxk dWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19w Y19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgcmVnID0gKChtb2RybSA+ PiAzKSAmIDcpIHwgcmV4X3I7CiAKICAgICAgICAgZ2VuX2xkc3RfbW9kcm0ocywgbW9kcm0sIG90 LCBPUl9UTVAwLCAwKTsKICAgICAgICAgZ2VuX29wX21vdl9yZWdfVDBbb3RdW3JlZ10oKTsKICAg ICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDhlOiAvKiBtb3Ygc2VnLCBHdiAqLwotICAgICAgICBt b2RybSA9IGxkdWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgm cy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgcmVnID0g KG1vZHJtID4+IDMpICYgNzsKICAgICAgICAgaWYgKHJlZyA+PSA2IHx8IHJlZyA9PSBSX0NTKQog ICAgICAgICAgICAgZ290byBpbGxlZ2FsX29wOwpAQCAtNDEwMyw3ICs0MTIyLDcgQEAKICAgICAg ICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4OGM6IC8qIG1vdiBHdiwgc2VnICovCi0g ICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICBtb2RybSA9IGxkdWJf Y29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAg ICByZWcgPSAobW9kcm0gPj4gMykgJiA3OwogICAgICAgICBtb2QgPSAobW9kcm0gPj4gNikgJiAz OwogICAgICAgICBpZiAocmVnID49IDYpCkBAIC00MTI2LDcgKzQxNDUsNyBAQAogICAgICAgICAg ICAgZF9vdCA9IGRmbGFnICsgT1RfV09SRDsKICAgICAgICAgICAgIC8qIG90IGlzIHRoZSBzaXpl IG9mIHNvdXJjZSAqLwogICAgICAgICAgICAgb3QgPSAoYiAmIDEpICsgT1RfQllURTsKLSAgICAg ICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICAgICAgbW9kcm0gPSBs ZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAg ICAgICAgICAgIHJlZyA9ICgobW9kcm0gPj4gMykgJiA3KSB8IHJleF9yOwogICAgICAgICAgICAg bW9kID0gKG1vZHJtID4+IDYpICYgMzsKICAgICAgICAgICAgIHJtID0gKG1vZHJtICYgNykgfCBS RVhfQihzKTsKQEAgLTQxNjMsNyArNDE4Miw3IEBACiAKICAgICBjYXNlIDB4OGQ6IC8qIGxlYSAq LwogICAgICAgICBvdCA9IGRmbGFnICsgT1RfV09SRDsKLSAgICAgICAgbW9kcm0gPSBsZHViX2Nv ZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3Rh cnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAm IDM7CiAgICAgICAgIGlmIChtb2QgPT0gMykKICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9vcDsK QEAgLTQxOTAsOCArNDIwOSw5IEBACiAgICAgICAgICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dP UkQ7CiAjaWZkZWYgVEFSR0VUX1g4Nl82NAogICAgICAgICAgICAgaWYgKHMtPmFmbGFnID09IDIp IHsKLSAgICAgICAgICAgICAgICBvZmZzZXRfYWRkciA9IGxkcV9jb2RlKHMtPnBjKTsKKyAgICAg ICAgICAgICAgICBvZmZzZXRfYWRkciA9IGxkcV9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMt PnBoeXNfcGMsIHMtPnBjKTsKICAgICAgICAgICAgICAgICBzLT5wYyArPSA4OworICAgICAgICAg ICAgICAgIHMtPnBoeXNfcGMgKz0gODsKICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0X2FkZHIg PT0gKGludDMyX3Qpb2Zmc2V0X2FkZHIpCiAgICAgICAgICAgICAgICAgICAgIGdlbl9vcF9tb3Zx X0EwX2ltKG9mZnNldF9hZGRyKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC00MjQzLDggKzQy NjMsOSBAQAogICAgICAgICBpZiAoZGZsYWcgPT0gMikgewogICAgICAgICAgICAgdWludDY0X3Qg dG1wOwogICAgICAgICAgICAgLyogNjQgYml0IGNhc2UgKi8KLSAgICAgICAgICAgIHRtcCA9IGxk cV9jb2RlKHMtPnBjKTsKKyAgICAgICAgICAgIHRtcCA9IGxkcV9jb2RlX3AoJnMtPnBoeXNfcGNf c3RhcnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICAgICAgICAgIHMtPnBjICs9IDg7CisgICAg ICAgICAgICBzLT5waHlzX3BjICs9IDg7CiAgICAgICAgICAgICByZWcgPSAoYiAmIDcpIHwgUkVY X0Iocyk7CiAgICAgICAgICAgICBnZW5fbW92dGxfVDBfaW0odG1wKTsKICAgICAgICAgICAgIGdl bl9vcF9tb3ZfcmVnX1QwW09UX1FVQURdW3JlZ10oKTsKQEAgLTQyNzAsNyArNDI5MSw3IEBACiAg ICAgICAgICAgICBvdCA9IE9UX0JZVEU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG90ID0g ZGZsYWcgKyBPVF9XT1JEOwotICAgICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5wYysrKTsKKyAg ICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysr LCBzLT5wYysrKTsKICAgICAgICAgcmVnID0gKChtb2RybSA+PiAzKSAmIDcpIHwgcmV4X3I7CiAg ICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAmIDM7CiAgICAgICAgIGlmIChtb2QgPT0gMykgewpA QCAtNDMxMyw3ICs0MzM0LDcgQEAKICAgICAgICAgb3AgPSBSX0dTOwogICAgIGRvX2x4eDoKICAg ICAgICAgb3QgPSBkZmxhZyA/IE9UX0xPTkcgOiBPVF9XT1JEOwotICAgICAgICBtb2RybSA9IGxk dWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19w Y19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgcmVnID0gKChtb2RybSA+ PiAzKSAmIDcpIHwgcmV4X3I7CiAgICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAmIDM7CiAgICAg ICAgIGlmIChtb2QgPT0gMykKQEAgLTQzNDUsNyArNDM2Niw3IEBACiAgICAgICAgICAgICBlbHNl CiAgICAgICAgICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CiAKLSAgICAgICAgICAgIG1v ZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVf cCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgICAg IG1vZCA9IChtb2RybSA+PiA2KSAmIDM7CiAgICAgICAgICAgICBvcCA9IChtb2RybSA+PiAzKSAm IDc7CiAKQEAgLTQzNjQsNyArNDM4NSw4IEBACiAgICAgICAgICAgICAgICAgZ2VuX3NoaWZ0KHMs IG9wLCBvdCwgb3ByZWcsIE9SX0VDWCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgICAgIGlmIChzaGlmdCA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gbGR1 Yl9jb2RlKHMtPnBjKyspOworICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IGxkdWJfY29kZV9w KCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcy0+cGMrKyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgIGdlbl9zaGlmdGkocywgb3AsIG90LCBvcHJlZywgc2hpZnQpOwogICAgICAgICAgICAg fQpAQCAtNDM5OCw3ICs0NDIwLDcgQEAKICAgICAgICAgc2hpZnQgPSAwOwogICAgIGRvX3NoaWZ0 ZDoKICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9j b2RlKHMtPnBjKyspOworICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0 YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICBtb2QgPSAobW9kcm0gPj4gNikg JiAzOwogICAgICAgICBybSA9IChtb2RybSAmIDcpIHwgUkVYX0Iocyk7CiAgICAgICAgIHJlZyA9 ICgobW9kcm0gPj4gMykgJiA3KSB8IHJleF9yOwpAQCAtNDQxMiw3ICs0NDM0LDcgQEAKICAgICAg ICAgZ2VuX29wX21vdl9UTl9yZWdbb3RdWzFdW3JlZ10oKTsKIAogICAgICAgICBpZiAoc2hpZnQp IHsKLSAgICAgICAgICAgIHZhbCA9IGxkdWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgICAgIHZh bCA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKysp OwogICAgICAgICAgICAgaWYgKG90ID09IE9UX1FVQUQpCiAgICAgICAgICAgICAgICAgdmFsICY9 IDB4M2Y7CiAgICAgICAgICAgICBlbHNlCkBAIC00NDUwLDcgKzQ0NzIsNyBAQAogICAgICAgICAg ICAgZ2VuX2V4Y2VwdGlvbihzLCBFWENQMDdfUFJFWCwgcGNfc3RhcnQgLSBzLT5jc19iYXNlKTsK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9jb2Rl KHMtPnBjKyspOworICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0 LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICBtb2QgPSAobW9kcm0gPj4gNikgJiAz OwogICAgICAgICBybSA9IG1vZHJtICYgNzsKICAgICAgICAgb3AgPSAoKGIgJiA3KSA8PCAzKSB8 ICgobW9kcm0gPj4gMykgJiA3KTsKQEAgLTUwMTMsNyArNTAzNSw3IEBACiAgICAgICAgICAgICBv dCA9IE9UX0JZVEU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG90ID0gZGZsYWcgPyBPVF9M T05HIDogT1RfV09SRDsKLSAgICAgICAgdmFsID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAg ICB2YWwgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5w YysrKTsKICAgICAgICAgZ2VuX29wX21vdmxfVDBfaW0odmFsKTsKICAgICAgICAgZ2VuX2NoZWNr X2lvKHMsIG90LCAwLCBwY19zdGFydCAtIHMtPmNzX2Jhc2UpOwogICAgICAgICBpZiAoZ2VuX3N2 bV9jaGVja19pbyhzLCBwY19zdGFydCwKQEAgLTUwMjksNyArNTA1MSw3IEBACiAgICAgICAgICAg ICBvdCA9IE9UX0JZVEU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG90ID0gZGZsYWcgPyBP VF9MT05HIDogT1RfV09SRDsKLSAgICAgICAgdmFsID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAg ICAgICB2YWwgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBz LT5wYysrKTsKICAgICAgICAgZ2VuX29wX21vdmxfVDBfaW0odmFsKTsKICAgICAgICAgZ2VuX2No ZWNrX2lvKHMsIG90LCAwLCBwY19zdGFydCAtIHMtPmNzX2Jhc2UpOwogICAgICAgICBpZiAoZ2Vu X3N2bV9jaGVja19pbyhzLCBwY19zdGFydCwgc3ZtX2lzX3JlcChwcmVmaXhlcykgfApAQCAtNTA3 Myw4ICs1MDk1LDkgQEAKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAg ICAgLyogY29udHJvbCAqLwogICAgIGNhc2UgMHhjMjogLyogcmV0IGltICovCi0gICAgICAgIHZh bCA9IGxkc3dfY29kZShzLT5wYyk7CisgICAgICAgIHZhbCA9IGxkc3dfY29kZV9wKCZzLT5waHlz X3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7CiAgICAgICAgIHMtPnBjICs9IDI7CisgICAg ICAgIHMtPnBoeXNfcGMgKz0gMjsKICAgICAgICAgZ2VuX3BvcF9UMChzKTsKICAgICAgICAgaWYg KENPREU2NChzKSAmJiBzLT5kZmxhZykKICAgICAgICAgICAgIHMtPmRmbGFnID0gMjsKQEAgLTUw OTMsOCArNTExNiw5IEBACiAgICAgICAgIGdlbl9lb2Iocyk7CiAgICAgICAgIGJyZWFrOwogICAg IGNhc2UgMHhjYTogLyogbHJldCBpbSAqLwotICAgICAgICB2YWwgPSBsZHN3X2NvZGUocy0+cGMp OworICAgICAgICB2YWwgPSBsZHN3X2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19w Yywgcy0+cGMpOwogICAgICAgICBzLT5wYyArPSAyOworICAgICAgICBzLT5waHlzX3BjICs9IDI7 CiAgICAgZG9fbHJldDoKICAgICAgICAgaWYgKHMtPnBlICYmICFzLT52bTg2KSB7CiAgICAgICAg ICAgICBpZiAocy0+Y2Nfb3AgIT0gQ0NfT1BfRFlOQU1JQykKQEAgLTUyMjMsMTMgKzUyNDcsMTMg QEAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4MTkwIC4uLiAweDE5ZjogLyogc2V0Y2Mg R3YgKi8KLSAgICAgICAgbW9kcm0gPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJt ID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7 CiAgICAgICAgIGdlbl9zZXRjYyhzLCBiKTsKICAgICAgICAgZ2VuX2xkc3RfbW9kcm0ocywgbW9k cm0sIE9UX0JZVEUsIE9SX1RNUDAsIDEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4MTQw IC4uLiAweDE0ZjogLyogY21vdiBHdiwgRXYgKi8KICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dP UkQ7Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICBtb2RybSA9 IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwog ICAgICAgICByZWcgPSAoKG1vZHJtID4+IDMpICYgNykgfCByZXhfcjsKICAgICAgICAgbW9kID0g KG1vZHJtID4+IDYpICYgMzsKICAgICAgICAgZ2VuX3NldGNjKHMsIGIpOwpAQCAtNTMzOCw3ICs1 MzYyLDcgQEAKICAgICAgICAgLyogYml0IG9wZXJhdGlvbnMgKi8KICAgICBjYXNlIDB4MWJhOiAv KiBidC9idHMvYnRyL2J0YyBHdiwgaW0gKi8KICAgICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7 Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICBtb2RybSA9IGxk dWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAg ICAgICBvcCA9IChtb2RybSA+PiAzKSAmIDc7CiAgICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAm IDM7CiAgICAgICAgIHJtID0gKG1vZHJtICYgNykgfCBSRVhfQihzKTsKQEAgLTUzNTAsNyArNTM3 NCw3IEBACiAgICAgICAgICAgICBnZW5fb3BfbW92X1ROX3JlZ1tvdF1bMF1bcm1dKCk7CiAgICAg ICAgIH0KICAgICAgICAgLyogbG9hZCBzaGlmdCAqLwotICAgICAgICB2YWwgPSBsZHViX2NvZGUo cy0+cGMrKyk7CisgICAgICAgIHZhbCA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBz LT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICBnZW5fb3BfbW92bF9UMV9pbSh2YWwpOwog ICAgICAgICBpZiAob3AgPCA0KQogICAgICAgICAgICAgZ290byBpbGxlZ2FsX29wOwpAQCAtNTM3 OCw3ICs1NDAyLDcgQEAKICAgICAgICAgb3AgPSAzOwogICAgIGRvX2J0eDoKICAgICAgICAgb3Qg PSBkZmxhZyArIE9UX1dPUkQ7Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOwor ICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3Bj KyssIHMtPnBjKyspOwogICAgICAgICByZWcgPSAoKG1vZHJtID4+IDMpICYgNykgfCByZXhfcjsK ICAgICAgICAgbW9kID0gKG1vZHJtID4+IDYpICYgMzsKICAgICAgICAgcm0gPSAobW9kcm0gJiA3 KSB8IFJFWF9CKHMpOwpAQCAtNTQwNCw3ICs1NDI4LDcgQEAKICAgICBjYXNlIDB4MWJjOiAvKiBi c2YgKi8KICAgICBjYXNlIDB4MWJkOiAvKiBic3IgKi8KICAgICAgICAgb3QgPSBkZmxhZyArIE9U X1dPUkQ7Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICBtb2Ry bSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKysp OwogICAgICAgICByZWcgPSAoKG1vZHJtID4+IDMpICYgNykgfCByZXhfcjsKICAgICAgICAgZ2Vu X2xkc3RfbW9kcm0ocywgbW9kcm0sIG90LCBPUl9UTVAwLCAwKTsKICAgICAgICAgLyogTk9URTog aW4gb3JkZXIgdG8gaGFuZGxlIHRoZSAwIGNhc2UsIHdlIG11c3QgbG9hZCB0aGUKQEAgLTU0NTEs NyArNTQ3NSw3IEBACiAgICAgY2FzZSAweGQ0OiAvKiBhYW0gKi8KICAgICAgICAgaWYgKENPREU2 NChzKSkKICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9vcDsKLSAgICAgICAgdmFsID0gbGR1Yl9j b2RlKHMtPnBjKyspOworICAgICAgICB2YWwgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFy dCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgaWYgKHZhbCA9PSAwKSB7CiAgICAg ICAgICAgICBnZW5fZXhjZXB0aW9uKHMsIEVYQ1AwMF9ESVZaLCBwY19zdGFydCAtIHMtPmNzX2Jh c2UpOwogICAgICAgICB9IGVsc2UgewpAQCAtNTQ2Miw3ICs1NDg2LDcgQEAKICAgICBjYXNlIDB4 ZDU6IC8qIGFhZCAqLwogICAgICAgICBpZiAoQ09ERTY0KHMpKQogICAgICAgICAgICAgZ290byBp bGxlZ2FsX29wOwotICAgICAgICB2YWwgPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIHZh bCA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKysp OwogICAgICAgICBnZW5fb3BfYWFkKHZhbCk7CiAgICAgICAgIHMtPmNjX29wID0gQ0NfT1BfTE9H SUNCOwogICAgICAgICBicmVhazsKQEAgLTU0OTQsNyArNTUxOCw3IEBACiAgICAgICAgIGdlbl9p bnRlcnJ1cHQocywgRVhDUDAzX0lOVDMsIHBjX3N0YXJ0IC0gcy0+Y3NfYmFzZSwgcy0+cGMgLSBz LT5jc19iYXNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweGNkOiAvKiBpbnQgTiAqLwot ICAgICAgICB2YWwgPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIHZhbCA9IGxkdWJfY29k ZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICBp ZiAoZ2VuX3N2bV9jaGVja19pbnRlcmNlcHQocywgcGNfc3RhcnQsIFNWTV9FWElUX1NXSU5UKSkK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAocy0+dm04NiAmJiBzLT5pb3BsICE9IDMp IHsKQEAgLTU1NjcsNyArNTU5MSw3IEBACiAgICAgICAgIGlmIChDT0RFNjQocykpCiAgICAgICAg ICAgICBnb3RvIGlsbGVnYWxfb3A7CiAgICAgICAgIG90ID0gZGZsYWcgPyBPVF9MT05HIDogT1Rf V09SRDsKLSAgICAgICAgbW9kcm0gPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJt ID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7 CiAgICAgICAgIHJlZyA9IChtb2RybSA+PiAzKSAmIDc7CiAgICAgICAgIG1vZCA9IChtb2RybSA+ PiA2KSAmIDM7CiAgICAgICAgIGlmIChtb2QgPT0gMykKQEAgLTU3MzgsNyArNTc2Miw3IEBACiAg ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDEwMDoKLSAgICAgICAgbW9kcm0g PSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBo eXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9IChtb2Ry bSA+PiA2KSAmIDM7CiAgICAgICAgIG9wID0gKG1vZHJtID4+IDMpICYgNzsKICAgICAgICAgc3dp dGNoKG9wKSB7CkBAIC01ODA4LDcgKzU4MzIsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFr OwogICAgIGNhc2UgMHgxMDE6Ci0gICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOwor ICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3Bj KyssIHMtPnBjKyspOwogICAgICAgICBtb2QgPSAobW9kcm0gPj4gNikgJiAzOwogICAgICAgICBv cCA9IChtb2RybSA+PiAzKSAmIDc7CiAgICAgICAgIHJtID0gbW9kcm0gJiA3OwpAQCAtNjAyMiw3 ICs2MDQ2LDcgQEAKICAgICAgICAgICAgIC8qIGRfb3QgaXMgdGhlIHNpemUgb2YgZGVzdGluYXRp b24gKi8KICAgICAgICAgICAgIGRfb3QgPSBkZmxhZyArIE9UX1dPUkQ7CiAKLSAgICAgICAgICAg IG1vZHJtID0gbGR1Yl9jb2RlKHMtPnBjKyspOworICAgICAgICAgICAgbW9kcm0gPSBsZHViX2Nv ZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAg ICAgIHJlZyA9ICgobW9kcm0gPj4gMykgJiA3KSB8IHJleF9yOwogICAgICAgICAgICAgbW9kID0g KG1vZHJtID4+IDYpICYgMzsKICAgICAgICAgICAgIHJtID0gKG1vZHJtICYgNykgfCBSRVhfQihz KTsKQEAgLTYwNDgsNyArNjA3Miw3IEBACiAgICAgICAgICAgICBpZiAoIXMtPnBlIHx8IHMtPnZt ODYpCiAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX29wOwogICAgICAgICAgICAgb3QgPSBk ZmxhZyA/IE9UX0xPTkcgOiBPVF9XT1JEOwotICAgICAgICAgICAgbW9kcm0gPSBsZHViX2NvZGUo cy0+cGMrKyk7CisgICAgICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0 YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICAgICAgcmVnID0gKG1vZHJtID4+ IDMpICYgNzsKICAgICAgICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAmIDM7CiAgICAgICAgICAg ICBybSA9IG1vZHJtICYgNzsKQEAgLTYwNzUsNyArNjA5OSw3IEBACiAgICAgICAgIGlmICghcy0+ cGUgfHwgcy0+dm04NikKICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9vcDsKICAgICAgICAgb3Qg PSBkZmxhZyA/IE9UX0xPTkcgOiBPVF9XT1JEOwotICAgICAgICBtb2RybSA9IGxkdWJfY29kZShz LT5wYysrKTsKKyAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwg cy0+cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgcmVnID0gKChtb2RybSA+PiAzKSAmIDcp IHwgcmV4X3I7CiAgICAgICAgIGdlbl9sZHN0X21vZHJtKHMsIG1vZHJtLCBvdCwgT1JfVE1QMCwg MCk7CiAgICAgICAgIGdlbl9vcF9tb3ZfVE5fcmVnW290XVsxXVtyZWddKCk7CkBAIC02MDg5LDcg KzYxMTMsNyBAQAogICAgICAgICBnZW5fb3BfbW92X3JlZ19UMVtvdF1bcmVnXSgpOwogICAgICAg ICBicmVhazsKICAgICBjYXNlIDB4MTE4OgotICAgICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5w YysrKTsKKyAgICAgICAgbW9kcm0gPSBsZHViX2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+ cGh5c19wYysrLCBzLT5wYysrKTsKICAgICAgICAgbW9kID0gKG1vZHJtID4+IDYpICYgMzsKICAg ICAgICAgb3AgPSAobW9kcm0gPj4gMykgJiA3OwogICAgICAgICBzd2l0Y2gob3ApIHsKQEAgLTYx MDgsNyArNjEzMiw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDEx OSAuLi4gMHgxMWY6IC8qIG5vcCAobXVsdGkgYnl0ZSkgKi8KLSAgICAgICAgbW9kcm0gPSBsZHVi X2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNf c3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIGdlbl9ub3BfbW9kcm0ocywg bW9kcm0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4MTIwOiAvKiBtb3YgcmVnLCBjck4g Ki8KQEAgLTYxMTYsNyArNjE0MCw3IEBACiAgICAgICAgIGlmIChzLT5jcGwgIT0gMCkgewogICAg ICAgICAgICAgZ2VuX2V4Y2VwdGlvbihzLCBFWENQMERfR1BGLCBwY19zdGFydCAtIHMtPmNzX2Jh c2UpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW9kcm0gPSBsZHViX2NvZGUocy0+ cGMrKyk7CisgICAgICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0 LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICAgICAgaWYgKChtb2RybSAmIDB4YzAp ICE9IDB4YzApCiAgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX29wOwogICAgICAgICAgICAg cm0gPSAobW9kcm0gJiA3KSB8IFJFWF9CKHMpOwpAQCAtNjE1OCw3ICs2MTgyLDcgQEAKICAgICAg ICAgaWYgKHMtPmNwbCAhPSAwKSB7CiAgICAgICAgICAgICBnZW5fZXhjZXB0aW9uKHMsIEVYQ1Aw RF9HUEYsIHBjX3N0YXJ0IC0gcy0+Y3NfYmFzZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICBtb2RybSA9IGxkdWJfY29kZShzLT5wYysrKTsKKyAgICAgICAgICAgIG1vZHJtID0gbGR1 Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAg ICAgICAgICBpZiAoKG1vZHJtICYgMHhjMCkgIT0gMHhjMCkKICAgICAgICAgICAgICAgICBnb3Rv IGlsbGVnYWxfb3A7CiAgICAgICAgICAgICBybSA9IChtb2RybSAmIDcpIHwgUkVYX0Iocyk7CkBA IC02MTk5LDcgKzYyMjMsNyBAQAogICAgICAgICBpZiAoIShzLT5jcHVpZF9mZWF0dXJlcyAmIENQ VUlEX1NTRTIpKQogICAgICAgICAgICAgZ290byBpbGxlZ2FsX29wOwogICAgICAgICBvdCA9IHMt PmRmbGFnID09IDIgPyBPVF9RVUFEIDogT1RfTE9ORzsKLSAgICAgICAgbW9kcm0gPSBsZHViX2Nv ZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMtPnBoeXNfcGNfc3Rh cnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9IChtb2RybSA+PiA2KSAm IDM7CiAgICAgICAgIGlmIChtb2QgPT0gMykKICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9vcDsK QEAgLTYyMDgsNyArNjIzMiw3IEBACiAgICAgICAgIGdlbl9sZHN0X21vZHJtKHMsIG1vZHJtLCBv dCwgcmVnLCAxKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDFhZToKLSAgICAgICAgbW9k cm0gPSBsZHViX2NvZGUocy0+cGMrKyk7CisgICAgICAgIG1vZHJtID0gbGR1Yl9jb2RlX3AoJnMt PnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMrKywgcy0+cGMrKyk7CiAgICAgICAgIG1vZCA9ICht b2RybSA+PiA2KSAmIDM7CiAgICAgICAgIG9wID0gKG1vZHJtID4+IDMpICYgNzsKICAgICAgICAg c3dpdGNoKG9wKSB7CkBAIC02Mjc0LDcgKzYyOTgsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJy ZWFrOwogICAgIGNhc2UgMHgxMGQ6IC8qIHByZWZldGNoICovCi0gICAgICAgIG1vZHJtID0gbGR1 Yl9jb2RlKHMtPnBjKyspOworICAgICAgICBtb2RybSA9IGxkdWJfY29kZV9wKCZzLT5waHlzX3Bj X3N0YXJ0LCBzLT5waHlzX3BjKyssIHMtPnBjKyspOwogICAgICAgICBnZW5fbGVhX21vZHJtKHMs IG1vZHJtLCAmcmVnX2FkZHIsICZvZmZzZXRfYWRkcik7CiAgICAgICAgIC8qIGlnbm9yZSBmb3Ig bm93ICovCiAgICAgICAgIGJyZWFrOwpAQCAtNjc1Miw2ICs2Nzc2LDkgQEAKIAogICAgIGRjLT5p c19qbXAgPSBESVNBU19ORVhUOwogICAgIHBjX3B0ciA9IHBjX3N0YXJ0OworICAgIGRjLT5waHlz X3BjX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGh5c19yYW1fYmFzZSArIHRiLT5wYWdlX2FkZHJb MF0gKworICAgICAgICAocGNfc3RhcnQgJiB+VEFSR0VUX1BBR0VfTUFTSyk7CisgICAgZGMtPnBo eXNfcGMgPSBkYy0+cGh5c19wY19zdGFydDsKICAgICBsaiA9IC0xOwogCiAgICAgZm9yKDs7KSB7 CkluZGV4OiBxZW11L3RhcmdldC1tNjhrL3RyYW5zbGF0ZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy90YXJnZXQtbTY4ay90cmFuc2xhdGUuYwkyMDA3LTEwLTEzIDA2OjIyOjM1LjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS90YXJnZXQtbTY4ay90cmFuc2xhdGUuYwkyMDA3LTEwLTEzIDA2OjI1 OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNDUsNiArNDUsOCBAQAogICAgIENQVU02OEtTdGF0ZSAq ZW52OwogICAgIHRhcmdldF91bG9uZyBpbnNuX3BjOyAvKiBTdGFydCBvZiB0aGUgY3VycmVudCBp bnN0cnVjdGlvbi4gICovCiAgICAgdGFyZ2V0X3Vsb25nIHBjOworICAgIHVuc2lnbmVkIGxvbmcg cGh5c19wYzsKKyAgICB1bnNpZ25lZCBsb25nIHBoeXNfcGNfc3RhcnQ7CiAgICAgaW50IGlzX2pt cDsKICAgICBpbnQgY2Nfb3A7CiAgICAgaW50IHVzZXI7CkBAIC0yMDcsMTAgKzIwOSwxMiBAQAog c3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkX2ltMzIoRGlzYXNDb250ZXh0ICpzKQogewogICAg IHVpbnQzMl90IGltOwotICAgIGltID0gKCh1aW50MzJfdClsZHV3X2NvZGUocy0+cGMpKSA8PCAx NjsKKyAgICBpbSA9ICgodWludDMyX3QpbGR1d19jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMt PnBoeXNfcGMsIHMtPnBjKSkgPDwgMTY7CiAgICAgcy0+cGMgKz0gMjsKLSAgICBpbSB8PSBsZHV3 X2NvZGUocy0+cGMpOworICAgIHMtPnBoeXNfcGMgKz0gMjsKKyAgICBpbSB8PSBsZHV3X2NvZGVf cCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYywgcy0+cGMpOwogICAgIHMtPnBjICs9IDI7 CisgICAgcy0+cGh5c19wYyArPSAyOwogICAgIHJldHVybiBpbTsKIH0KIApAQCAtMjQ0LDggKzI0 OCw5IEBACiAgICAgdWludDMyX3QgYmQsIG9kOwogCiAgICAgb2Zmc2V0ID0gcy0+cGM7Ci0gICAg ZXh0ID0gbGR1d19jb2RlKHMtPnBjKTsKKyAgICBleHQgPSBsZHV3X2NvZGVfcCgmcy0+cGh5c19w Y19zdGFydCwgcy0+cGh5c19wYywgcy0+cGMpOwogICAgIHMtPnBjICs9IDI7CisgICAgcy0+cGh5 c19wYyArPSAyOwogCiAgICAgaWYgKChleHQgJiAweDgwMCkgPT0gMCAmJiAhbTY4a19mZWF0dXJl KHMtPmVudiwgTTY4S19GRUFUVVJFX1dPUkRfSU5ERVgpKQogICAgICAgICByZXR1cm4gLTE7CkBA IC0yNTgsOCArMjYzLDEwIEBACiAgICAgICAgIGlmICgoZXh0ICYgMHgzMCkgPiAweDEwKSB7CiAg ICAgICAgICAgICAvKiBiYXNlIGRpc3BsYWNlbWVudCAqLwogICAgICAgICAgICAgaWYgKChleHQg JiAweDMwKSA9PSAweDIwKSB7Ci0gICAgICAgICAgICAgICAgYmQgPSAoaW50MTZfdClsZHV3X2Nv ZGUocy0+cGMpOworICAgICAgICAgICAgICAgIGJkID0gKGludDE2X3QpbGR1d19jb2RlX3AoJnMt PnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzLT5wYyk7CiAgICAgICAgICAgICAgICAgcy0+cGMgKz0gMjsKKyAgICAg ICAgICAgICAgICBzLT5waHlzX3BjICs9IDI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgIGJkID0gcmVhZF9pbTMyKHMpOwogICAgICAgICAgICAgfQpAQCAtMzA3LDggKzMx NCwxMCBAQAogICAgICAgICAgICAgaWYgKChleHQgJiAzKSA+IDEpIHsKICAgICAgICAgICAgICAg ICAvKiBvdXRlciBkaXNwbGFjZW1lbnQgKi8KICAgICAgICAgICAgICAgICBpZiAoKGV4dCAmIDMp ID09IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgb2QgPSAoaW50MTZfdClsZHV3X2NvZGUocy0+ cGMpOworICAgICAgICAgICAgICAgICAgICBvZCA9IChpbnQxNl90KWxkdXdfY29kZV9wKCZzLT5w aHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMtPnBjKTsKICAgICAgICAgICAgICAgICAgICAgcy0+cGMgKz0gMjsK KyAgICAgICAgICAgICAgICAgICAgcy0+cGh5c19wYyArPSAyOwogICAgICAgICAgICAgICAgIH0g ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG9kID0gcmVhZF9pbTMyKHMpOwogICAgICAgICAg ICAgICAgIH0KQEAgLTQ1NSw4ICs0NjQsOSBAQAogICAgIGNhc2UgNTogLyogSW5kaXJlY3QgZGlz cGxhY2VtZW50LiAgKi8KICAgICAgICAgcmVnICs9IFFSRUdfQTA7CiAgICAgICAgIHRtcCA9IGdl bl9uZXdfcXJlZyhRTU9ERV9JMzIpOwotICAgICAgICBleHQgPSBsZHV3X2NvZGUocy0+cGMpOwor ICAgICAgICBleHQgPSBsZHV3X2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYywg cy0+cGMpOwogICAgICAgICBzLT5wYyArPSAyOworICAgICAgICBzLT5waHlzX3BjICs9IDI7CiAg ICAgICAgIGdlbl9vcF9hZGQzMih0bXAsIHJlZywgZ2VuX2ltMzIoKGludDE2X3QpZXh0KSk7CiAg ICAgICAgIHJldHVybiB0bXA7CiAgICAgY2FzZSA2OiAvKiBJbmRpcmVjdCBpbmRleCArIGRpc3Bs YWNlbWVudC4gICovCkBAIC00NjUsOCArNDc1LDkgQEAKICAgICBjYXNlIDc6IC8qIE90aGVyICov CiAgICAgICAgIHN3aXRjaCAocmVnKSB7CiAgICAgICAgIGNhc2UgMDogLyogQWJzb2x1dGUgc2hv cnQuICAqLwotICAgICAgICAgICAgb2Zmc2V0ID0gbGRzd19jb2RlKHMtPnBjKTsKKyAgICAgICAg ICAgIG9mZnNldCA9IGxkc3dfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBz LT5wYyk7CiAgICAgICAgICAgICBzLT5wYyArPSAyOworICAgICAgICAgICAgcy0+cGh5c19wYyAr PSAyOwogICAgICAgICAgICAgcmV0dXJuIGdlbl9pbTMyKG9mZnNldCk7CiAgICAgICAgIGNhc2Ug MTogLyogQWJzb2x1dGUgbG9uZy4gICovCiAgICAgICAgICAgICBvZmZzZXQgPSByZWFkX2ltMzIo cyk7CkBAIC00NzQsOCArNDg1LDkgQEAKICAgICAgICAgY2FzZSAyOiAvKiBwYyBkaXNwbGFjZW1l bnQgICovCiAgICAgICAgICAgICB0bXAgPSBnZW5fbmV3X3FyZWcoUU1PREVfSTMyKTsKICAgICAg ICAgICAgIG9mZnNldCA9IHMtPnBjOwotICAgICAgICAgICAgb2Zmc2V0ICs9IGxkc3dfY29kZShz LT5wYyk7CisgICAgICAgICAgICBvZmZzZXQgKz0gbGRzd19jb2RlX3AoJnMtPnBoeXNfcGNfc3Rh cnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICAgICAgICAgIHMtPnBjICs9IDI7CisgICAgICAg ICAgICBzLT5waHlzX3BjICs9IDI7CiAgICAgICAgICAgICByZXR1cm4gZ2VuX2ltMzIob2Zmc2V0 KTsKICAgICAgICAgY2FzZSAzOiAvKiBwYyBpbmRleCtkaXNwbGFjZW1lbnQuICAqLwogICAgICAg ICAgICAgcmV0dXJuIGdlbl9sZWFfaW5kZXhlZChzLCBvcHNpemUsIC0xKTsKQEAgLTU4MSwxOCAr NTkzLDIzIEBACiAgICAgICAgICAgICAvKiBTaWduIGV4dGVuZCB2YWx1ZXMgZm9yIGNvbnNpc3Rl bmN5LiAgKi8KICAgICAgICAgICAgIHN3aXRjaCAob3BzaXplKSB7CiAgICAgICAgICAgICBjYXNl IE9TX0JZVEU6Ci0gICAgICAgICAgICAgICAgaWYgKHZhbCkKLSAgICAgICAgICAgICAgICAgICAg b2Zmc2V0ID0gbGRzYl9jb2RlKHMtPnBjICsgMSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgICAgICAgICBvZmZzZXQgPSBsZHViX2NvZGUocy0+cGMgKyAxKTsKKyAgICAgICAg ICAgICAgICBpZiAodmFsKSB7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGxkc2JfY29k ZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjICsgMSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGMgKyAxKTsKKyAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBsZHViX2NvZGVfcCgmcy0+cGh5c19w Y19zdGFydCwgcy0+cGh5c19wYyArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHMtPnBjICsgMSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IHMtPnBjICs9IDI7CisgICAgICAgICAgICAgICAgcy0+cGh5c19wYyArPSAyOwogICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBPU19XT1JEOgogICAgICAgICAgICAgICAg IGlmICh2YWwpCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGxkc3dfY29kZShzLT5wYyk7 CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGxkc3dfY29kZV9wKCZzLT5waHlzX3BjX3N0 YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg ICAgICAgICAgICBvZmZzZXQgPSBsZHV3X2NvZGUocy0+cGMpOworICAgICAgICAgICAgICAgICAg ICBvZmZzZXQgPSBsZHV3X2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYywgcy0+ cGMpOwogICAgICAgICAgICAgICAgIHMtPnBjICs9IDI7CisgICAgICAgICAgICAgICAgcy0+cGh5 c19wYyArPSAyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBPU19M T05HOgogICAgICAgICAgICAgICAgIG9mZnNldCA9IHJlYWRfaW0zMihzKTsKQEAgLTg3OSw4ICs4 OTYsOSBAQAogICAgIGludCByZWc7CiAgICAgdWludDE2X3QgZXh0OwogCi0gICAgZXh0ID0gbGR1 d19jb2RlKHMtPnBjKTsKKyAgICBleHQgPSBsZHV3X2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwg cy0+cGh5c19wYywgcy0+cGMpOwogICAgIHMtPnBjICs9IDI7CisgICAgcy0+cGh5c19wYyArPSAy OwogICAgIGlmIChleHQgJiAweDg3ZjgpIHsKICAgICAgICAgZ2VuX2V4Y2VwdGlvbihzLCBzLT5w YyAtIDQsIEVYQ1BfVU5TVVBQT1JURUQpOwogICAgICAgICByZXR1cm47CkBAIC0xMDY2LDggKzEw ODQsOSBAQAogICAgIGludCB0bXA7CiAgICAgaW50IGlzX2xvYWQ7CiAKLSAgICBtYXNrID0gbGR1 d19jb2RlKHMtPnBjKTsKKyAgICBtYXNrID0gbGR1d19jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQs IHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICBzLT5wYyArPSAyOworICAgIHMtPnBoeXNfcGMgKz0g MjsKICAgICB0bXAgPSBnZW5fbGVhKHMsIGluc24sIE9TX0xPTkcpOwogICAgIGlmICh0bXAgPT0g LTEpIHsKICAgICAgICAgZ2VuX2FkZHJfZmF1bHQocyk7CkBAIC0xMTExLDggKzExMzAsOSBAQAog ICAgICAgICBvcHNpemUgPSBPU19MT05HOwogICAgIG9wID0gKGluc24gPj4gNikgJiAzOwogCi0g ICAgYml0bnVtID0gbGR1d19jb2RlKHMtPnBjKTsKKyAgICBiaXRudW0gPSBsZHV3X2NvZGVfcCgm cy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYywgcy0+cGMpOwogICAgIHMtPnBjICs9IDI7Cisg ICAgcy0+cGh5c19wYyArPSAyOwogICAgIGlmIChiaXRudW0gJiAweGZmMDApIHsKICAgICAgICAg ZGlzYXNfdW5kZWYocywgaW5zbik7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNzUsOCArMTM5NSw5 IEBACiAgICAgZWxzZSBpZiAoKGluc24gJiAweDNmKSA9PSAweDNjKQogICAgICAgewogICAgICAg ICB1aW50MTZfdCB2YWw7Ci0gICAgICAgIHZhbCA9IGxkdXdfY29kZShzLT5wYyk7CisgICAgICAg IHZhbCA9IGxkdXdfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7 CiAgICAgICAgIHMtPnBjICs9IDI7CisgICAgICAgIHMtPnBoeXNfcGMgKz0gMjsKICAgICAgICAg Z2VuX3NldF9zcl9pbShzLCB2YWwsIGNjcl9vbmx5KTsKICAgICAgIH0KICAgICBlbHNlCkBAIC0x NTAyLDggKzE1MjMsOSBAQAogCiAgICAgLyogVGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHByb2R1 Y3QgYXJlIGRpc2NhcmRlZCwgc28KICAgICAgICBtdWxzLmwgYW5kIG11bHUubCBhcmUgZnVuY3Rp b25hbGx5IGVxdWl2YWxlbnQuICAqLwotICAgIGV4dCA9IGxkdXdfY29kZShzLT5wYyk7CisgICAg ZXh0ID0gbGR1d19jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsK ICAgICBzLT5wYyArPSAyOworICAgIHMtPnBoeXNfcGMgKz0gMjsKICAgICBpZiAoZXh0ICYgMHg4 N2ZmKSB7CiAgICAgICAgIGdlbl9leGNlcHRpb24ocywgcy0+cGMgLSA0LCBFWENQX1VOU1VQUE9S VEVEKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyMyw4ICsxNTQ1LDkgQEAKICAgICBpbnQgcmVn OwogICAgIGludCB0bXA7CiAKLSAgICBvZmZzZXQgPSBsZHN3X2NvZGUocy0+cGMpOworICAgIG9m ZnNldCA9IGxkc3dfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7 CiAgICAgcy0+cGMgKz0gMjsKKyAgICBzLT5waHlzX3BjICs9IDI7CiAgICAgcmVnID0gQVJFRyhp bnNuLCAwKTsKICAgICB0bXAgPSBnZW5fbmV3X3FyZWcoUU1PREVfSTMyKTsKICAgICBnZW5fb3Bf c3ViMzIodG1wLCBRUkVHX1NQLCBnZW5faW0zMig0KSk7CkBAIC0xNjIyLDkgKzE2NDUsMTEgQEAK ICAgICBzd2l0Y2ggKGluc24gJiA3KSB7CiAgICAgY2FzZSAyOiAvKiBPbmUgZXh0ZW5zaW9uIHdv cmQuICAqLwogICAgICAgICBzLT5wYyArPSAyOworICAgICAgICBzLT5waHlzX3BjICs9IDI7CiAg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzogLyogVHdvIGV4dGVuc2lvbiB3b3Jkcy4gICovCiAg ICAgICAgIHMtPnBjICs9IDQ7CisgICAgICAgIHMtPnBoeXNfcGMgKz0gNDsKICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSA0OiAvKiBObyBleHRlbnNpb24gd29yZHMuICAqLwogICAgICAgICBicmVh azsKQEAgLTE2NDQsOCArMTY2OSw5IEBACiAgICAgb3AgPSAoaW5zbiA+PiA4KSAmIDB4ZjsKICAg ICBvZmZzZXQgPSAoaW50OF90KWluc247CiAgICAgaWYgKG9mZnNldCA9PSAwKSB7Ci0gICAgICAg IG9mZnNldCA9IGxkc3dfY29kZShzLT5wYyk7CisgICAgICAgIG9mZnNldCA9IGxkc3dfY29kZV9w KCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7CiAgICAgICAgIHMtPnBjICs9 IDI7CisgICAgICAgIHMtPnBoeXNfcGMgKz0gMjsKICAgICB9IGVsc2UgaWYgKG9mZnNldCA9PSAt MSkgewogICAgICAgICBvZmZzZXQgPSByZWFkX2ltMzIocyk7CiAgICAgfQpAQCAtMTk1NywxNCAr MTk4MywxNiBAQAogICAgIHVpbnQzMl90IGFkZHI7CiAKICAgICBhZGRyID0gcy0+cGMgLSAyOwot ICAgIGV4dCA9IGxkdXdfY29kZShzLT5wYyk7CisgICAgZXh0ID0gbGR1d19jb2RlX3AoJnMtPnBo eXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICBzLT5wYyArPSAyOworICAgIHMt PnBoeXNfcGMgKz0gMjsKICAgICBpZiAoZXh0ICE9IDB4NDZGQykgewogICAgICAgICBnZW5fZXhj ZXB0aW9uKHMsIGFkZHIsIEVYQ1BfVU5TVVBQT1JURUQpOwogICAgICAgICByZXR1cm47CiAgICAg fQotICAgIGV4dCA9IGxkdXdfY29kZShzLT5wYyk7CisgICAgZXh0ID0gbGR1d19jb2RlX3AoJnMt PnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICBzLT5wYyArPSAyOworICAg IHMtPnBoeXNfcGMgKz0gMjsKICAgICBpZiAoSVNfVVNFUihzKSB8fCAoZXh0ICYgU1JfUykgPT0g MCkgewogICAgICAgICBnZW5fZXhjZXB0aW9uKHMsIGFkZHIsIEVYQ1BfUFJJVklMRUdFKTsKICAg ICAgICAgcmV0dXJuOwpAQCAtMjAzMiw4ICsyMDYwLDkgQEAKICAgICAgICAgcmV0dXJuOwogICAg IH0KIAotICAgIGV4dCA9IGxkdXdfY29kZShzLT5wYyk7CisgICAgZXh0ID0gbGR1d19jb2RlX3Ao JnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBoeXNfcGMsIHMtPnBjKTsKICAgICBzLT5wYyArPSAyOwor ICAgIHMtPnBoeXNfcGMgKz0gMjsKIAogICAgIGdlbl9zZXRfc3JfaW0ocywgZXh0LCAwKTsKICAg ICBnZW5fam1wKHMsIGdlbl9pbTMyKHMtPnBjKSk7CkBAIC0yMDU5LDggKzIwODgsOSBAQAogICAg ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZXh0ID0gbGR1d19jb2RlKHMtPnBjKTsKKyAgICBl eHQgPSBsZHV3X2NvZGVfcCgmcy0+cGh5c19wY19zdGFydCwgcy0+cGh5c19wYywgcy0+cGMpOwog ICAgIHMtPnBjICs9IDI7CisgICAgcy0+cGh5c19wYyArPSAyOwogCiAgICAgaWYgKGV4dCAmIDB4 ODAwMCkgewogICAgICAgICByZWcgPSBBUkVHKGV4dCwgMTIpOwpAQCAtMjEyMSw4ICsyMTUxLDkg QEAKICAgICBpbnQgcm91bmQ7CiAgICAgaW50IG9wc2l6ZTsKIAotICAgIGV4dCA9IGxkdXdfY29k ZShzLT5wYyk7CisgICAgZXh0ID0gbGR1d19jb2RlX3AoJnMtPnBoeXNfcGNfc3RhcnQsIHMtPnBo eXNfcGMsIHMtPnBjKTsKICAgICBzLT5wYyArPSAyOworICAgIHMtPnBoeXNfcGMgKz0gMjsKICAg ICBvcG1vZGUgPSBleHQgJiAweDdmOwogICAgIHN3aXRjaCAoKGV4dCA+PiAxMykgJiA3KSB7CiAg ICAgY2FzZSAwOiBjYXNlIDI6CkBAIC0yMzMxLDYgKzIzNjIsNyBAQAogICAgIHJldHVybjsKIHVu ZGVmOgogICAgIHMtPnBjIC09IDI7CisgICAgcy0+cGh5c19wYyAtPSAyOwogICAgIGRpc2FzX3Vu ZGVmX2ZwdShzLCBpbnNuKTsKIH0KIApAQCAtMjM0MywxMSArMjM3NSwxNCBAQAogICAgIGludCBs MTsKIAogICAgIGFkZHIgPSBzLT5wYzsKLSAgICBvZmZzZXQgPSBsZHN3X2NvZGUocy0+cGMpOwor ICAgIG9mZnNldCA9IGxkc3dfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBz LT5wYyk7CiAgICAgcy0+cGMgKz0gMjsKKyAgICBzLT5waHlzX3BjICs9IDI7CiAgICAgaWYgKGlu c24gJiAoMSA8PCA2KSkgewotICAgICAgICBvZmZzZXQgPSAob2Zmc2V0IDw8IDE2KSB8IGxkdXdf Y29kZShzLT5wYyk7CisgICAgICAgIG9mZnNldCA9IChvZmZzZXQgPDwgMTYpIHwKKyAgICAgICAg ICAgIGxkdXdfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBzLT5wYyk7CiAg ICAgICAgIHMtPnBjICs9IDI7CisgICAgICAgIHMtPnBoeXNfcGMgKz0gMjsKICAgICB9CiAKICAg ICBsMSA9IGdlbl9uZXdfbGFiZWwoKTsKQEAgLTI0NzMsOCArMjUwOCw5IEBACiAgICAgaW50IGR1 YWw7CiAgICAgaW50IHNhdmVkX2ZsYWdzID0gLTE7CiAKLSAgICBleHQgPSBsZHV3X2NvZGUocy0+ cGMpOworICAgIGV4dCA9IGxkdXdfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3Bj LCBzLT5wYyk7CiAgICAgcy0+cGMgKz0gMjsKKyAgICBzLT5waHlzX3BjICs9IDI7CiAKICAgICBh Y2MgPSAoKGluc24gPj4gNykgJiAxKSB8ICgoZXh0ID4+IDMpICYgMik7CiAgICAgZHVhbCA9ICgo aW5zbiAmIDB4MzApICE9IDAgJiYgKGV4dCAmIDMpICE9IDApOwpAQCAtMjg4Miw4ICsyOTE4LDkg QEAKIHsKICAgICB1aW50MTZfdCBpbnNuOwogCi0gICAgaW5zbiA9IGxkdXdfY29kZShzLT5wYyk7 CisgICAgaW5zbiA9IGxkdXdfY29kZV9wKCZzLT5waHlzX3BjX3N0YXJ0LCBzLT5waHlzX3BjLCBz LT5wYyk7CiAgICAgcy0+cGMgKz0gMjsKKyAgICBzLT5waHlzX3BjICs9IDI7CiAKICAgICBvcGNv ZGVfdGFibGVbaW5zbl0ocywgaW5zbik7CiB9CkBAIC0zMTY5LDYgKzMyMDYsOSBAQAogICAgIGRj LT5lbnYgPSBlbnY7CiAgICAgZGMtPmlzX2ptcCA9IERJU0FTX05FWFQ7CiAgICAgZGMtPnBjID0g cGNfc3RhcnQ7CisgICAgZGMtPnBoeXNfcGNfc3RhcnQgPSAodW5zaWduZWQgbG9uZylwaHlzX3Jh bV9iYXNlICsgdGItPnBhZ2VfYWRkclswXSArCisgICAgICAgIChwY19zdGFydCAmIH5UQVJHRVRf UEFHRV9NQVNLKTsKKyAgICBkYy0+cGh5c19wYyA9IGRjLT5waHlzX3BjX3N0YXJ0OwogICAgIGRj LT5jY19vcCA9IENDX09QX0RZTkFNSUM7CiAgICAgZGMtPnNpbmdsZXN0ZXBfZW5hYmxlZCA9IGVu di0+c2luZ2xlc3RlcF9lbmFibGVkOwogICAgIGRjLT5mcGNyID0gZW52LT5mcGNyOwpJbmRleDog cWVtdS90YXJnZXQtbWlwcy90cmFuc2xhdGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGFy Z2V0LW1pcHMvdHJhbnNsYXRlLmMJMjAwNy0xMC0xMyAwNjoyMjozNS4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvdGFyZ2V0LW1pcHMvdHJhbnNsYXRlLmMJMjAwNy0xMC0xMyAwNjoyNTo0Ni4wMDAw MDAwMDAgKzAwMDAKQEAgLTUzNiw2ICs1MzYsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgRGlzYXNDb250 ZXh0IHsKICAgICBzdHJ1Y3QgVHJhbnNsYXRpb25CbG9jayAqdGI7CiAgICAgdGFyZ2V0X3Vsb25n IHBjLCBzYXZlZF9wYzsKKyAgICB1bnNpZ25lZCBsb25nIHBoeXNfcGMsIHBoeXNfcGNfc3RhcnQ7 CiAgICAgdWludDMyX3Qgb3Bjb2RlOwogICAgIHVpbnQzMl90IGZwX3N0YXR1czsKICAgICAvKiBS b3V0aW5lIHVzZWQgdG8gYWNjZXNzIG1lbW9yeSAqLwpAQCAtMTc2NCw2ICsxNzY1LDcgQEAKICAg ICAgICAgICAgIC8qIFNraXAgdGhlIGluc3RydWN0aW9uIGluIHRoZSBkZWxheSBzbG90ICovCiAg ICAgICAgICAgICBNSVBTX0RFQlVHKCJibmV2ZXIsIGxpbmsgYW5kIHNraXAiKTsKICAgICAgICAg ICAgIGN0eC0+cGMgKz0gNDsKKyAgICAgICAgICAgIGN0eC0+cGh5c19wYyArPSA0OwogICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIE9QQ19CTkVMOiAgICAvKiByeCAhPSByeCBsaWtl bHkgKi8KICAgICAgICAgY2FzZSBPUENfQkdUWkw6ICAgLyogMCA+IDAgbGlrZWx5ICovCkBAIC0x NzcxLDYgKzE3NzMsNyBAQAogICAgICAgICAgICAgLyogU2tpcCB0aGUgaW5zdHJ1Y3Rpb24gaW4g dGhlIGRlbGF5IHNsb3QgKi8KICAgICAgICAgICAgIE1JUFNfREVCVUcoImJuZXZlciBhbmQgc2tp cCIpOwogICAgICAgICAgICAgY3R4LT5wYyArPSA0OworICAgICAgICAgICAgY3R4LT5waHlzX3Bj ICs9IDQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgT1BDX0o6CiAgICAgICAg ICAgICBjdHgtPmhmbGFncyB8PSBNSVBTX0hGTEFHX0I7CkBAIC02NDk1LDYgKzY0OTgsOSBAQAog ICAgIGdlbl9vcHBhcmFtX3B0ciA9IGdlbl9vcHBhcmFtX2J1ZjsKICAgICBuYl9nZW5fbGFiZWxz ID0gMDsKICAgICBjdHgucGMgPSBwY19zdGFydDsKKyAgICBjdHgucGh5c19wY19zdGFydCA9ICh1 bnNpZ25lZCBsb25nKXBoeXNfcmFtX2Jhc2UgKyB0Yi0+cGFnZV9hZGRyWzBdICsKKyAgICAgICAg KHBjX3N0YXJ0ICYgflRBUkdFVF9QQUdFX01BU0spOworICAgIGN0eC5waHlzX3BjID0gY3R4LnBo eXNfcGNfc3RhcnQ7CiAgICAgY3R4LnNhdmVkX3BjID0gLTE7CiAgICAgY3R4LnRiID0gdGI7CiAg ICAgY3R4LmJzdGF0ZSA9IEJTX05PTkU7CkBAIC02NTQ0LDkgKzY1NTAsMTAgQEAKICAgICAgICAg ICAgIGdlbl9vcGNfaGZsYWdzW2xqXSA9IGN0eC5oZmxhZ3MgJiBNSVBTX0hGTEFHX0JNQVNLOwog ICAgICAgICAgICAgZ2VuX29wY19pbnN0cl9zdGFydFtsal0gPSAxOwogICAgICAgICB9Ci0gICAg ICAgIGN0eC5vcGNvZGUgPSBsZGxfY29kZShjdHgucGMpOworICAgICAgICBjdHgub3Bjb2RlID0g bGRsX2NvZGVfcCgmY3R4LnBoeXNfcGNfc3RhcnQsIGN0eC5waHlzX3BjLCBjdHgucGMpOwogICAg ICAgICBkZWNvZGVfb3BjKGVudiwgJmN0eCk7CiAgICAgICAgIGN0eC5wYyArPSA0OworICAgICAg ICBjdHgucGh5c19wYyArPSA0OwogCiAgICAgICAgIGlmIChlbnYtPnNpbmdsZXN0ZXBfZW5hYmxl ZCkKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogcWVtdS90YXJnZXQtcHBjL3RyYW5zbGF0ZS5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy90YXJnZXQtcHBjL3RyYW5zbGF0ZS5jCTIwMDctMTAt MTMgMDY6MjI6MzUuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3RhcmdldC1wcGMvdHJhbnNsYXRl LmMJMjAwNy0xMC0xMyAwNjoyNTo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTY2NzgsNiArNjY3OCw3 IEBACiB7CiAgICAgRGlzYXNDb250ZXh0IGN0eCwgKmN0eHAgPSAmY3R4OwogICAgIG9wY19oYW5k bGVyX3QgKip0YWJsZSwgKmhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBwaHlzX3BjLCBwaHlz X3BjX3N0YXJ0OwogICAgIHRhcmdldF91bG9uZyBwY19zdGFydDsKICAgICB1aW50MTZfdCAqZ2Vu X29wY19lbmQ7CiAgICAgaW50IHN1cGVydmlzb3I7CkBAIC02Njg1LDYgKzY2ODYsOSBAQAogICAg IGludCBqLCBsaiA9IC0xOwogCiAgICAgcGNfc3RhcnQgPSB0Yi0+cGM7CisgICAgcGh5c19wY19z dGFydCA9ICh1bnNpZ25lZCBsb25nKXBoeXNfcmFtX2Jhc2UgKyB0Yi0+cGFnZV9hZGRyWzBdICsK KyAgICAgICAgKHBjX3N0YXJ0ICYgflRBUkdFVF9QQUdFX01BU0spOworICAgIHBoeXNfcGMgPSBw aHlzX3BjX3N0YXJ0OwogICAgIGdlbl9vcGNfcHRyID0gZ2VuX29wY19idWY7CiAgICAgZ2VuX29w Y19lbmQgPSBnZW5fb3BjX2J1ZiArIE9QQ19NQVhfU0laRTsKICAgICBnZW5fb3BwYXJhbV9wdHIg PSBnZW5fb3BwYXJhbV9idWY7CkBAIC02NzYzLDcgKzY3NjcsNyBAQAogICAgICAgICAgICAgICAg ICAgICBjdHgubmlwLCAxIC0gbXNyX3ByLCBtc3JfaXIpOwogICAgICAgICB9CiAjZW5kaWYKLSAg ICAgICAgY3R4Lm9wY29kZSA9IGxkbF9jb2RlKGN0eC5uaXApOworICAgICAgICBjdHgub3Bjb2Rl ID0gbGRsX2NvZGVfcCgmcGh5c19wY19zdGFydCwgcGh5c19wYywgZW52LT5uaXApOwogICAgICAg ICBpZiAobXNyX2xlKSB7CiAgICAgICAgICAgICBjdHgub3Bjb2RlID0gKChjdHgub3Bjb2RlICYg MHhGRjAwMDAwMCkgPj4gMjQpIHwKICAgICAgICAgICAgICAgICAoKGN0eC5vcGNvZGUgJiAweDAw RkYwMDAwKSA+PiA4KSB8CkBAIC02Nzc4LDYgKzY3ODIsNyBAQAogICAgICAgICB9CiAjZW5kaWYK ICAgICAgICAgY3R4Lm5pcCArPSA0OworICAgICAgICBwaHlzX3BjICs9IDQ7CiAgICAgICAgIHRh YmxlID0gZW52LT5vcGNvZGVzOwogICAgICAgICBoYW5kbGVyID0gdGFibGVbb3BjMShjdHgub3Bj b2RlKV07CiAgICAgICAgIGlmIChpc19pbmRpcmVjdF9vcGNvZGUoaGFuZGxlcikpIHsKSW5kZXg6 IHFlbXUvdGFyZ2V0LXNoNC90cmFuc2xhdGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGFy Z2V0LXNoNC90cmFuc2xhdGUuYwkyMDA3LTEwLTEzIDA2OjIyOjM2LjAwMDAwMDAwMCArMDAwMAor KysgcWVtdS90YXJnZXQtc2g0L3RyYW5zbGF0ZS5jCTIwMDctMTAtMTMgMDY6MjU6NDYuMDAwMDAw MDAwICswMDAwCkBAIC0xMTUwLDExICsxMTUwLDE1IEBACiB7CiAgICAgRGlzYXNDb250ZXh0IGN0 eDsKICAgICB0YXJnZXRfdWxvbmcgcGNfc3RhcnQ7CisgICAgdW5zaWduZWQgbG9uZyBwaHlzX3Bj LCBwaHlzX3BjX3N0YXJ0OwogICAgIHN0YXRpYyB1aW50MTZfdCAqZ2VuX29wY19lbmQ7CiAgICAg dWludDMyX3Qgb2xkX2ZsYWdzOwogICAgIGludCBpLCBpaTsKIAogICAgIHBjX3N0YXJ0ID0gdGIt PnBjOworICAgIHBoeXNfcGNfc3RhcnQgPSAodW5zaWduZWQgbG9uZylwaHlzX3JhbV9iYXNlICsg dGItPnBhZ2VfYWRkclswXSArCisgICAgICAgIChwY19zdGFydCAmIH5UQVJHRVRfUEFHRV9NQVNL KTsKKyAgICBwaHlzX3BjID0gcGh5c19wY19zdGFydDsKICAgICBnZW5fb3BjX3B0ciA9IGdlbl9v cGNfYnVmOwogICAgIGdlbl9vcGNfZW5kID0gZ2VuX29wY19idWYgKyBPUENfTUFYX1NJWkU7CiAg ICAgZ2VuX29wcGFyYW1fcHRyID0gZ2VuX29wcGFyYW1fYnVmOwpAQCAtMTIxMCw5ICsxMjE0LDEw IEBACiAJZnByaW50ZihzdGRlcnIsICJMb2FkaW5nIG9wY29kZSBhdCBhZGRyZXNzIDB4JTA4eFxu IiwgY3R4LnBjKTsKIAlmZmx1c2goc3RkZXJyKTsKICNlbmRpZgotCWN0eC5vcGNvZGUgPSBsZHV3 X2NvZGUoY3R4LnBjKTsKKwljdHgub3Bjb2RlID0gbGR1d19jb2RlX3AoJnBoeXNfcGNfc3RhcnQs IHBoeXNfcGMsIGN0eC5wYyk7CiAJZGVjb2RlX29wYygmY3R4KTsKIAljdHgucGMgKz0gMjsKKyAg ICAgICAgcGh5c19wYyArPSAyOwogCWlmICgoY3R4LnBjICYgKFRBUkdFVF9QQUdFX1NJWkUgLSAx KSkgPT0gMCkKIAkgICAgYnJlYWs7CiAJaWYgKGVudi0+c2luZ2xlc3RlcF9lbmFibGVkKQpJbmRl eDogcWVtdS90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmln L3RhcmdldC1zcGFyYy90cmFuc2xhdGUuYwkyMDA3LTEwLTEzIDA2OjIyOjM2LjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMJMjAwNy0xMC0xMyAwNjoyNTo0 Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTQ4LDYgKzQ4LDggQEAKICAgICB0YXJnZXRfdWxvbmcgcGM7 ICAgIC8qIGN1cnJlbnQgUHJvZ3JhbSBDb3VudGVyOiBpbnRlZ2VyIG9yIERZTkFNSUNfUEMgKi8K ICAgICB0YXJnZXRfdWxvbmcgbnBjOyAgIC8qIG5leHQgUEM6IGludGVnZXIgb3IgRFlOQU1JQ19Q QyBvciBKVU1QX1BDICovCiAgICAgdGFyZ2V0X3Vsb25nIGp1bXBfcGNbMl07IC8qIHVzZWQgd2hl biBKVU1QX1BDIHBjIHZhbHVlIGlzIHVzZWQgKi8KKyAgICB1bnNpZ25lZCBsb25nIHBoeXNfcGM7 CisgICAgdW5zaWduZWQgbG9uZyBwaHlzX3BjX3N0YXJ0OwogICAgIGludCBpc19icjsKICAgICBp bnQgbWVtX2lkeDsKICAgICBpbnQgZnB1X2VuYWJsZWQ7CkBAIC0xMDg5LDcgKzEwOTEsMTEgQEAK IHsKICAgICB1bnNpZ25lZCBpbnQgaW5zbiwgb3BjLCByczEsIHJzMiwgcmQ7CiAKLSAgICBpbnNu ID0gbGRsX2NvZGUoZGMtPnBjKTsKKyNpZiBkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpCisgICAg aW5zbiA9IGxkbF9yYXcoZGMtPnBjKTsKKyNlbHNlCisgICAgaW5zbiA9IGxkbF9yYXcoZGMtPnBo eXNfcGMpOworI2VuZGlmCiAgICAgb3BjID0gR0VUX0ZJRUxEKGluc24sIDAsIDEpOwogCiAgICAg cmQgPSBHRVRfRklFTEQoaW5zbiwgMiwgNik7CkBAIC0zMzc2LDYgKzMzODIsOCBAQAogICAgIGRj LT50YiA9IHRiOwogICAgIHBjX3N0YXJ0ID0gdGItPnBjOwogICAgIGRjLT5wYyA9IHBjX3N0YXJ0 OworICAgIGRjLT5waHlzX3BjX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpcGh5c19yYW1fYmFzZSAr IHRiLT5wYWdlX2FkZHJbMF0gKworICAgICAgICAocGNfc3RhcnQgJiB+VEFSR0VUX1BBR0VfTUFT Syk7CiAgICAgbGFzdF9wYyA9IGRjLT5wYzsKICAgICBkYy0+bnBjID0gKHRhcmdldF91bG9uZykg dGItPmNzX2Jhc2U7CiAjaWYgZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKQpAQCAtMzQyMiw2ICsz NDMwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBsYXN0X3BjID0gZGMt PnBjOworICAgICAgICBkYy0+cGh5c19wYyA9IGRjLT5waHlzX3BjX3N0YXJ0ICsgZGMtPnBjIC0g cGNfc3RhcnQ7CiAgICAgICAgIGRpc2FzX3NwYXJjX2luc24oZGMpOwogCiAgICAgICAgIGlmIChk Yy0+aXNfYnIpCg== ------=_Part_28969_24732967.1192259519804--