From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: - Rebase to FSF GDB 7.2.50.20101231 (which is a 7.3 pre-release). Date: Sat, 27 Jun 2026 23:54:53 GMT Message-ID: <178260449310.1.7811844324531437727.rpms-gdb-6fa2f55b2780@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 6fa2f55b2780c05a15a945461d351a86d147aa7a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogNmZhMmY1NWIyNzgwYzA1YTE1YTk0NTQ2MWQzNTFhODZkMTQ3 YWE3YQogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wMS0wMVQwMToyNzozMCswMTow MAogICAgICAgICAgICBTdGF0cyAgOiArMjE0NC8tMjY4OCBpbiAyMCBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvNmZh MmY1NWIyNzgwYzA1YTE1YTk0NTQ2MWQzNTFhODZkMTQ3YWE3YT9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICAtIFJlYmFzZSB0byBGU0YgR0RC IDcuMi41MC4yMDEwMTIzMSAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgotIFJlbW92ZSBn ZGItNi4zLWJ0LXBhc3QtemVyby0yMDA1MTIwMS5wYXRjaCwgZ2RiLWFyY2hlci1hZGEucGF0Y2gg YW5kCiAgZ2RiLTYuMy1mcmFtZXBjemVyby0yMDA0MDkyNy5wYXRjaCBhbHJlYWR5IHJlbW92ZWQg ZnJvbSAuc3BlYyBiZWZvcmUuCi0gUmVtb3ZlIGdkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cu cGF0Y2gsIHVwc3RyZWFtZWQgKFRvbSBUcm9tZXkpLgotIFJlbW92ZSBnZGItNi42LWJ6MjI1Nzgz LWdkYi1kZWJ1Z2luZm8tcGF0aHMucGF0Y2gsIHVwc3RyZWFtZWQgKFRvbSBUcm9tZXkpLgotIFJl bW92ZSBnZGItNi42LXJlYWRsaW5lLXN5c3RlbS5wYXRjaCwgcmVpbXBsZW1lbnRlZCB1cHN0cmVh bSAoVG9tIFRyb21leSkuCi0gUmVtb3ZlIGdkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFs ZS5wYXRjaCwgdXBzdHJlYW1lZCAoSmFuIEtyYXRvY2h2aWwpLgotIFJlbW92ZSBnZGItbmV4dC1v dmVyLXRocm93LnBhdGNoLCB1cHN0cmVhbWVkIChUb20gVHJvbWV5KS4KCi0tLQpkaWZmIC0tZ2l0 IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggMmJmYTYwOS4uZWQxMmE5ZCAxMDA2NDQK LS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xICsxIEBACi1nZGItNy4yLjUw LjIwMTAxMTE3LnRhci5iejIKKy9nZGItNy4yLjUwLjIwMTAxMjMxLnRhci5iejIKCmRpZmYgLS1n aXQgYS9nZGItNi4zLWJ0LXBhc3QtemVyby0yMDA1MTIwMS5wYXRjaCBiL2dkYi02LjMtYnQtcGFz dC16ZXJvLTIwMDUxMjAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI5 NDZkLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUxMjAxLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotMjAwNS0xMi0wMSAgSmVmZiBKb2huc3RvbiAg PGpqb2huc3RuQHJlZGhhdC5jb20+Ci0KLQkqIGZyYW1lLmMgKGJhY2t0cmFjZV9wYXN0X3plcm9f cGMpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgotCShnZXRfcHJldl9mcmFtZSk6IERvbid0IHJldHVy biBOVUxMIGZvciB6ZXJvIHBjIHZhbHVlIGlmCi0JYmFja3RyYWNlIHBhc3QtemVyby1mcmFtZSBv cHRpb24gaXMgdHVybmVkIG9uLgotCShfaW5pdGlhbGl6ZV9mcmFtZSk6IEluaXRpYWxpemUgbmV3 IGNvbW1hbmQgdG8gYWxsb3cgYmFja3RyYWNpbmcKLQlwYXN0IGEgemVybyBwYyB2YWx1ZSAoc2V0 IGJhY2t0cmFjZSBwYXN0LXplcm8tcGMpLgotCi10ZXN0c3VpdGUvZ2RiLmJhc2U6Ci0yMDA1LTEy LTAxICBKZWZmIEpvaG5zdG9uICA8ampvaG5zdG5AcmVkaGF0LmNvbT4KLQotCSogc2V0c2hvdy5l eHA6IEFkZCB0ZXN0aW5nIG9mICJzZXQgYmFja3RyYWNlIHBhc3QtemVyby1wYyIgb3B0aW9uLgot Ci0yMDA3LTEwLTE1ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQlQb3J0IHRvIEdEQi02LjcuCi0KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2V0c2hvdy5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAkyMDEwLTA2 LTExIDIyOjU2OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAkyMDEwLTA3LTEyIDEwOjQ2OjA2LjAwMDAw MDAwMCArMDIwMAotQEAgLTk2LDYgKzk2LDE2IEBAIGlmIHsgIVt0YXJnZXRfaW5mbyBleGlzdHMg dXNlX2dkYl9zdHViXSAKLSAgICAgZGVsZXRlX2JyZWFrcG9pbnRzCi0gICAgIGdkYl90ZXN0ICJy dW4iICJTdGFydGluZyBwcm9ncmFtOi4qZm9vIGJhciBibHVwIGJheiBidWJibGUuKiIgInBhc3Np bmcgYXJncyIKLSB9Ci0rI3Rlc3Qgc2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjCi0rZ2RiX3Rl c3QgInNob3cgYmFja3RyYWNlIHBhc3QtemVyby1wYyIgIldoZXRoZXIgYmFja3RyYWNlcyBzaG91 bGQgY29udGludWUgcGFzdCBhIHplcm8gcGMgdmFsdWUgaXMgb2ZmLiIgImRlZmF1bHQgc2hvdyBi YWNrdHJhY2UgcGFzdC16ZXJvLXBjIChvZmYpIgotKyN0ZXN0IHNldCBiYWNrdHJhY2UgcGFzdC16 ZXJvLXBjIG9uCi0rZ2RiX3Rlc3QgInNldCBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIG9uIiAiIiAi c2V0IGJhY2t0cmFjZSBwYXN0LXplcm8tcGMgb24iCi0rI3Rlc3Qgc2hvdyBiYWNrdHJhY2UgcGFz dC16ZXJvLXBjCi0rZ2RiX3Rlc3QgInNob3cgYmFja3RyYWNlIHBhc3QtemVyby1wYyIgIldoZXRo ZXIgYmFja3RyYWNlcyBzaG91bGQgY29udGludWUgcGFzdCBhIHplcm8gcGMgdmFsdWUgaXMgb24u IiAic2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIChvbikiCi0rI3Rlc3Qgc2V0IGJhY2t0cmFj ZSBwYXN0LXplcm8tcGMgb2ZmCi0rZ2RiX3Rlc3QgInNldCBiYWNrdHJhY2UgcGFzdC16ZXJvLXBj IG9mZiIgIiIgInNldCBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIG9mZiIKLSsjdGVzdCBzaG93IGJh Y2t0cmFjZSBwYXN0LXplcm8tcGMKLStnZGJfdGVzdCAic2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJv LXBjIiAiV2hldGhlciBiYWNrdHJhY2VzIHNob3VsZCBjb250aW51ZSBwYXN0IGEgemVybyBwYyB2 YWx1ZSBpcyBvZmYuIiAic2hvdyBiYWNrdHJhY2UgcGFzdC16ZXJvLXBjIChvZmYpIgotICN0ZXN0 IHNldCBjaGVjayByYW5nZSBvbgotIGdkYl90ZXN0ICJzZXQgY2hlY2sgcmFuZ2Ugb24iICIuKiIg InNldCBjaGVjayByYW5nZSBvbiIgCi0gI3Rlc3Qgc2hvdyBjaGVjayByYW5nZSBvbgotSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2ZyYW1lLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL2ZyYW1lLmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mcmFtZS5jCTIwMTAtMDctMTIg MTA6NDU6MTguMDAwMDAwMDAwICswMjAwCi1AQCAtMTg1LDYgKzE4NSwxNiBAQCBXaGV0aGVyIGJh Y2t0cmFjZXMgc2hvdWxkIGNvbnRpbnVlIHBhc3QgCi0gCQkgICAgdmFsdWUpOwotIH0KLSAKLStz dGF0aWMgaW50IGJhY2t0cmFjZV9wYXN0X3plcm9fcGM7Ci0rc3RhdGljIHZvaWQKLStzaG93X2Jh Y2t0cmFjZV9wYXN0X3plcm9fcGMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHks Ci0rCQkJICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp Ci0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiXAotK1doZXRoZXIgYmFja3RyYWNl cyBzaG91bGQgY29udGludWUgcGFzdCBhIHplcm8gcGMgdmFsdWUgaXMgJXMuXG4iKSwKLSsJCSAg ICB2YWx1ZSk7Ci0rfQotKwotIHN0YXRpYyBpbnQgYmFja3RyYWNlX3Bhc3RfZW50cnk7Ci0gc3Rh dGljIHZvaWQKLSBzaG93X2JhY2t0cmFjZV9wYXN0X2VudHJ5IChzdHJ1Y3QgdWlfZmlsZSAqZmls ZSwgaW50IGZyb21fdHR5LAotQEAgLTE3ODQsOSArMTc5NCw3IEBAIGdldF9wcmV2X2ZyYW1lIChz dHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc18KLSAgICAgfQotIAotICAgaWYgKHRoaXNfZnJhbWUtPmxl dmVsID4gMAotLSNpZiAwCi0tICAgICAgJiYgYmFja3RyYWNlX3Bhc3RfemVyb19wYwotLSNlbmRp ZgotKyAgICAgICYmICFiYWNrdHJhY2VfcGFzdF96ZXJvX3BjCi0gICAgICAgJiYgZ2V0X2ZyYW1l X3R5cGUgKHRoaXNfZnJhbWUpID09IE5PUk1BTF9GUkFNRQotICAgICAgICYmIGdldF9mcmFtZV90 eXBlIChnZXRfbmV4dF9mcmFtZSAodGhpc19mcmFtZSkpID09IE5PUk1BTF9GUkFNRQotICAgICAg ICYmIGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSkgPT0gMCkKLUBAIC0yMjcxLDYgKzIyNzksMTcg QEAgdGhlIHJlc3Qgb2YgdGhlIHN0YWNrIHRyYWNlLiIpLAotIAkJCSAgICZzZXRfYmFja3RyYWNl X2NtZGxpc3QsCi0gCQkJICAgJnNob3dfYmFja3RyYWNlX2NtZGxpc3QpOwotIAotKyAgYWRkX3Nl dHNob3dfYm9vbGVhbl9jbWQgKCJwYXN0LXplcm8tcGMiLCBjbGFzc19vYnNjdXJlLAotKyAJCQkg ICAmYmFja3RyYWNlX3Bhc3RfemVyb19wYywgXygiXAotK1NldCB3aGV0aGVyIGJhY2t0cmFjZXMg c2hvdWxkIGNvbnRpbnVlIHBhc3QgYSB6ZXJvIHBjIHZhbHVlLiIpLCBfKCJcCi0rU2hvdyB3aGV0 aGVyIGJhY2t0cmFjZXMgc2hvdWxkIGNvbnRpbnVlIHBhc3QgYSB6ZXJvIHBjIHZhbHVlLiIpLCBf KCJcCi0rTm9ybWFsbHkgR0RCIHN0b3BzIGJhY2t0cmFjaW5nIHdoZW4gaXQgZmluZHMgYSB6ZXJv IHBjLlxuXAotK1NldCB0aGlzIHZhcmlhYmxlIGlmIHlvdSBuZWVkIHRvIHNlZSB0aGUgcmVzdCBv ZiB0aGUgc3RhY2sgdHJhY2UuIiksIAotKyAJCQkgICBOVUxMLAotKwkJCSAgIHNob3dfYmFja3Ry YWNlX3Bhc3RfemVyb19wYywKLSsJCQkgICAmc2V0X2JhY2t0cmFjZV9jbWRsaXN0LAotKyAJCQkg ICAmc2hvd19iYWNrdHJhY2VfY21kbGlzdCk7Ci0rCi0gICBhZGRfc2V0c2hvd19pbnRlZ2VyX2Nt ZCAoImxpbWl0IiwgY2xhc3Nfb2JzY3VyZSwKLSAJCQkgICAmYmFja3RyYWNlX2xpbWl0LCBfKCJc Ci0gU2V0IGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgYmFja3RyYWNlIGxldmVscy4i KSwgXygiXAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtZnJhbWVwY3plcm8tMjAwNDA5MjcucGF0Y2gg Yi9nZGItNi4zLWZyYW1lcGN6ZXJvLTIwMDQwOTI3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBhOGRhZTZiLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtZnJhbWVwY3plcm8tMjAw NDA5MjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0yMDA0LTA5LTI3ICBB bmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGdudS5vcmc+Ci0KLQkqIGZyYW1lLmMgKGdldF9wcmV2X2Zy YW1lKTogU3RvcCBiYWNrdHJhY2Ugd2hlbiBhIHplcm8gUEMgYW5kCi0Jc3VjY2Vzc2l2ZSBub3Jt YWwgZnJhbWVzLgotCi1JbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvZnJhbWUuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIvZnJhbWUuYwkyMDA4LTEy LTA0IDAxOjM0OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwODExMjgvZ2Ri L2ZyYW1lLmMJMjAwOC0xMi0wNCAwMTozNTo0Ny4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTY2LDYg KzE1NjYsMTggQEAgZ2V0X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzXwotICAg ICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0rICBpZiAodGhpc19mcmFtZS0+bGV2ZWwgPiAw Ci0rI2lmIDAKLSsgICAgICAmJiBiYWNrdHJhY2VfcGFzdF96ZXJvX3BjCi0rI2VuZGlmCi0rICAg ICAgJiYgZ2V0X2ZyYW1lX3R5cGUgKHRoaXNfZnJhbWUpID09IE5PUk1BTF9GUkFNRQotKyAgICAg ICYmIGdldF9mcmFtZV90eXBlIChnZXRfbmV4dF9mcmFtZSAodGhpc19mcmFtZSkpID09IE5PUk1B TF9GUkFNRQotKyAgICAgICYmIGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSkgPT0gMCkKLSsgICAg ewotKyAgICAgIGZyYW1lX2RlYnVnX2dvdF9udWxsX2ZyYW1lICh0aGlzX2ZyYW1lLCAiemVybyBQ QyIpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0gICByZXR1cm4gZ2V0X3ByZXZf ZnJhbWVfMSAodGhpc19mcmFtZSk7Ci0gfQotIAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtaWE2NC1z aWdpbGwtMjAwNTExMTUucGF0Y2ggYi9nZGItNi4zLWlhNjQtc2lnaWxsLTIwMDUxMTE1LnBhdGNo CmluZGV4IDA3YTZiNDYuLjg0ZDgzY2UgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtaWE2NC1zaWdpbGwt MjAwNTExMTUucGF0Y2gKKysrIGIvZ2RiLTYuMy1pYTY0LXNpZ2lsbC0yMDA1MTExNS5wYXRjaApA QCAtMTIsMTAgKzEyLDEwIEBAIGdkYi90ZXN0c3VpdGU6CiAJKiBnZGIuYXJjaC9pYTY0LXNpZ2ls bC5jOiBOZXcgdGVzdC4KIAkqIGdkYi5hcmNoL2lhNjQtc2lnaWxsLmV4cDogRGl0dG8uCiAKLUlu ZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdp bGwuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L2lhNjQtc2lnaWxsLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ2lsbC5leHAJMjAwOC0xMi0wMiAyMToxMDo1Ny4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv aWE2NC1zaWdpbGwuZXhwCTIwMTEtMDEtMDEgMDA6NTU6MDQuMDAwMDAwMDAwICswMTAwCiBAQCAt MCwwICsxLDQ5IEBACiArIyAgIENvcHlyaWdodCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwpAQCAtNjYsMTAgKzY2LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4 L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuZXhwCiArZ2RiX3Rlc3QgImhhbmRs ZSBTSUdJTEwgbm9zdG9wIG5vcHJpbnQiICJTSUdJTEwuKk5vLipOby4qWWVzLioiICJoYW5kbGUg c2lnaWxsIgogK2dkYl90ZXN0ICJydW4iICJTdGFydGluZyBwcm9ncmFtLippYTY0LXNpZ2lsbC4q XFtOZXcgdGhyZWFkLipcXS4qaGVsbG8gd29ybGQuKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5LiIg InJ1biB0byBleGl0IgogKyAKLUluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ2lsbC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTYuOC41MC4y MDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2lhNjQtc2lnaWxsLmMJMjAwOC0xMi0wMiAy MToxMDo1Ny4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuYwkyMDExLTAxLTAxIDAwOjU1OjA0LjAwMDAwMDAw MCArMDEwMAogQEAgLTAsMCArMSw4IEBACiArI2luY2x1ZGUgPHN0ZGlvLmg+CiArCkBAIC03OSwx MSArNzksMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC9pYTY0LXNpZ2lsbC5jCiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTYuOC41 MC4yMDA4MTEyOC9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dk Yi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODExMjgub3JpZy9n ZGIvbGludXgtbmF0LmMJMjAwOC0xMi0wMiAxOTowNDozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNi44LjUwLjIwMDgxMTI4L2dkYi9saW51eC1uYXQuYwkyMDA4LTEyLTAyIDIxOjExOjExLjAw MDAwMDAwMCArMDEwMAotQEAgLTI5NzQsNyArMjk3NCw4IEBAIHJldHJ5OgorLS0tIGdkYi03LjIu NTAuMjAxMDEyMzEub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0wMS0wMSAwMDo1NDowNC4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9saW51eC1uYXQuYwkyMDEx LTAxLTAxIDAwOjU1OjU4LjAwMDAwMDAwMCArMDEwMAorQEAgLTM2NTIsNyArMzY1Miw4IEBAIHJl dHJ5OgogICAgICAgdGhyZWFkcyBjYW4gYmUgYSBiaXQgdGltZS1jb25zdW1pbmcgc28gaWYgd2Ug d2FudCBkZWNlbnQKICAgICAgIHBlcmZvcm1hbmNlIHdpdGggaGVhdmlseSBtdWx0aS10aHJlYWRl ZCBwcm9ncmFtcywgZXNwZWNpYWxseSB3aGVuCiAgICAgICB0aGV5J3JlIHVzaW5nIGEgaGlnaCBm cmVxdWVuY3kgdGltZXIsIHdlJ2QgYmV0dGVyIGF2b2lkIGl0IGlmIHdlCkBAIC05Myw4ICs5Myw4 IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9saW51eC1uYXQuYwogIAogICAgaWYg KFdJRlNUT1BQRUQgKHN0YXR1cykpCiAgICAgIHsKLUBAIC0yOTkyLDcgKzI5OTMsOSBAQCByZXRy eToKLSAJICAmJiBpbmYtPnN0b3Bfc29vbiA9PSBOT19TVE9QX1FVSUVUTFkKK0BAIC0zNjcwLDcg KzM2NzEsOSBAQCByZXRyeToKKyAJICAmJiBpbmYtPmNvbnRyb2wuc3RvcF9zb29uID09IE5PX1NU T1BfUVVJRVRMWQogIAkgICYmIHNpZ25hbF9zdG9wX3N0YXRlIChzaWdubykgPT0gMAogIAkgICYm IHNpZ25hbF9wcmludF9zdGF0ZSAoc2lnbm8pID09IDAKIC0JICAmJiBzaWduYWxfcGFzc19zdGF0 ZSAoc2lnbm8pID09IDEpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcu cGF0Y2ggYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCA1MTk2NDNkLi44 MGUzMDY4IDEwMDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysg Yi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAK ICAgICAgICAgKiBnZGIudGV4aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2 ZXIuCiAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9kb2MvZ2RiLnRleGluZm8KK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTEx LTEyIDIxOjQ5OjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEwLTExLTE2IDA3OjU5OjMxLjAwMDAwMDAwMCArMDEwMAotQEAg LTEwMDEsNiArMTAwMSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9s IHRhCistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx MC0xMi0yOSAwOTowMTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMx L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wMS0wMSAwMDo1NDowNy4wMDAwMDAwMDAgKzAxMDAK K0BAIC0xMDA3LDYgKzEwMDcsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5 bWJvbCB0YQogIHRoZSBkZWZhdWx0LCB3aGljaCBpcyB0byByZWFkIGl0IGluY3JlbWVudGFsbHkg YXMgaXQgaXMgbmVlZGVkLgogIFRoaXMgbWFrZXMgc3RhcnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBm dXR1cmUgb3BlcmF0aW9ucyBmYXN0ZXIuCiAgCkBAIC0yOCwxMSArMjgsMTEgQEAgSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBlbmQgdGFibGUKICAKICBA bm9kZSBNb2RlIE9wdGlvbnMKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9tYWluLmMK K0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL21haW4uYwkyMDEwLTExLTE2IDA3OjU5OjIwLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL21haW4uYwkyMDEwLTEx LTE2IDA3OjU5OjU5LjAwMDAwMDAwMCArMDEwMAotQEAgLTM5MCw2ICszOTAsNyBAQCBjYXB0dXJl ZF9tYWluICh2b2lkICpkYXRhKQorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvbWFp bi5jCTIwMTEtMDEtMDEgMDA6NTM6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4y MDEwMTIzMS9nZGIvbWFpbi5jCTIwMTEtMDEtMDEgMDA6NTQ6MDcuMDAwMDAwMDAwICswMTAwCitA QCAtMzkxLDYgKzM5MSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgeyJ4 ZGIiLCBub19hcmd1bWVudCwgJnhkYl9jb21tYW5kcywgMX0sCiAgICAgICAgeyJkYngiLCBub19h cmd1bWVudCwgJmRieF9jb21tYW5kcywgMX0sCiAgICAgICAgeyJyZWFkbm93Iiwgbm9fYXJndW1l bnQsICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9tYWluLmMKICAgICAgICB7InIiLCBub19hcmd1bWVudCwg JnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKICAgICAgICB7InF1aWV0Iiwgbm9fYXJndW1lbnQs ICZxdWlldCwgMX0sCiAgICAgICAgeyJxIiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0sCi1AQCAt OTgyLDYgKzk4Myw3IEBAIE9wdGlvbnM6XG5cblwKK0BAIC05OTMsNiArOTk0LDcgQEAgT3B0aW9u czpcblxuXAogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCiAgICAtLXF1aWV0ICAg ICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAt LXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNz LlxuXApAQCAtNDgsMTAgKzQ4LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9t YWluLmMKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9 RklMRSAgICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxl LlxuXAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDEyMzEvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMTAtMTcgMjA6NDk6NDYuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltZmlsZS5jCTIwMTAtMTEt MTYgMDc6NTk6MzEuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmln L2dkYi9zeW1maWxlLmMJMjAxMC0xMS0yMyAwMTo1OTo1OC4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9zeW1maWxlLmMJMjAxMS0wMS0wMSAwMDo1NDowNy4wMDAw MDAwMDAgKzAxMDAKIEBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91 c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmls ZSAqLwpAQCAtNjAsMTAgKzYwLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9z eW1maWxlLmMKICAKICAvKiBFeHRlcm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVu Y2VkLiAqLwogIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2R3YXJmMnJlYWQuYwor SW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYg MDc6NTQ6MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZHdh cmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MDA6MTguMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu Mi41MC4yMDEwMTIzMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMS0wMSAwMDo0MTo1MS4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9kd2FyZjJyZWFkLmMJ MjAxMS0wMS0wMSAwMDo1NDowNy4wMDAwMDAwMDAgKzAxMDAKIEBAIC01Nyw2ICs1Nyw3IEBACiAg I2luY2x1ZGUgInZlYy5oIgogICNpbmNsdWRlICJjLWxhbmcuaCIKQEAgLTcyLDcgKzcyLDcgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2R3YXJmMnJlYWQuYwogIAogICNpbmNsdWRl IDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTM1Niw4ICsxMzU3LDkg QEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTEzNDUsOCAr MTM0Niw5IEBAIGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAg ICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2Vj dGlvbnMsIE5VTEwpOwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZp bGU7CiAgICAgIH0KQEAgLTg0LDE1ICs4NCwxNSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2Ug Y2FuIGVpdGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgotSW5kZXg6IGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL3RvcC5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdG9wLmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3RvcC5oCTIwMTAt MDQtMDcgMTg6NTQ6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvdG9wLmgJMjAxMC0xMS0xNiAwNzo1OTozMS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4y LjUwLjIwMTAxMjMxLm9yaWcvZ2RiL3RvcC5oCTIwMTAtMTItMjkgMDE6NTg6MTQuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdG9wLmgJMjAxMS0wMS0wMSAwMDo1 NDoyMS4wMDAwMDAwMDAgKzAxMDAKIEBAIC02MSw2ICs2MSw3IEBAIGV4dGVybiB2b2lkIHNldF9w cm9tcHQgKGNoYXIgKik7CiAgCiAgLyogRnJvbSByYW5kb20gcGxhY2VzLiAgKi8KICBleHRlcm4g aW50IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwogK2V4dGVybiBpbnQgcmVhZG5ldmVyX3N5bWJvbF9m aWxlczsKICAKLSAvKiBQZXJmb3JtIF9pbml0aWFsaXplIGluaXRpYWxpemF0aW9uICovCisgLyog UGVyZm9ybSBfaW5pdGlhbGl6ZSBpbml0aWFsaXphdGlvbi4gICovCiAgZXh0ZXJuIHZvaWQgZ2Ri X2luaXQgKGNoYXIgKik7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAw NTA2MTAucGF0Y2ggYi9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRjaAppbmRl eCAzNzc2NWY5Li4wZmU2OGRmIDEwMDY0NAotLS0gYS9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0y MDA1MDYxMC5wYXRjaAorKysgYi9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRj aApAQCAtMTksMTAgKzE5LDEwIEBAIFByb3Bvc2VkIHVwc3RyZWFtIGJ1dCBuZXZlciBjb21taXR0 ZWQgdXBzdHJlYW0uCiAgICAgICAgIChzb3VyY2VfY29tbWFuZCk6IFVwZGF0ZSBkb2N1bWVudGF0 aW9uLiAgQ2hlY2sgcGVybWlzc2lvbnMgaWYKICAgICAgICAgRlJPTV9UVFkgaXMgLTEuCiAKLUlu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYworSW5kZXg6IGdkYi03 LjIuNTAuMjAxMDEyMzEvZ2RiL2NsaS9jbGktY21kcy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MS45MC4yMDEwMDcyMC5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEwLTA1LTE3IDIxOjI4OjEy LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21k cy5jCTIwMTAtMDctMjEgMjA6MzA6MzAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4y MDEwMTIzMS5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEwLTEyLTI5IDAzOjExOjA0LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2NsaS9jbGktY21kcy5jCTIw MTEtMDEtMDEgMDA6NTM6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMzksNiArMzksNyBAQAogICNp bmNsdWRlICJzb3VyY2UuaCIKICAjaW5jbHVkZSAiZGlzYXNtLmgiCkBAIC0zMSw3ICszMSw3IEBA IEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYwogIAogICNpbmNs dWRlICJ1aS1vdXQuaCIKICAKLUBAIC00ODcsNyArNDg4LDcgQEAgU2NyaXB0IGZpbGVuYW1lIGV4 dGVuc2lvbiByZWNvZ25pdGlvbiBpcworQEAgLTQ4OCw3ICs0ODksNyBAQCBTY3JpcHQgZmlsZW5h bWUgZXh0ZW5zaW9uIHJlY29nbml0aW9uIGlzCiAgCiAgaW50CiAgZmluZF9hbmRfb3Blbl9zY3Jp cHQgKGNvbnN0IGNoYXIgKnNjcmlwdF9maWxlLCBpbnQgc2VhcmNoX3BhdGgsCkBAIC00MCw3ICs0 MCw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYwogIHsK ICAgIGNoYXIgKmZpbGU7CiAgICBpbnQgZmQ7Ci1AQCAtNTEzLDYgKzUxNCwzMiBAQCBmaW5kX2Fu ZF9vcGVuX3NjcmlwdCAoY29uc3QgY2hhciAqc2NyaXB0CitAQCAtNTE0LDYgKzUxNSwzMiBAQCBm aW5kX2FuZF9vcGVuX3NjcmlwdCAoY29uc3QgY2hhciAqc2NyaXB0CiAgICAgICAgcmV0dXJuIDA7 CiAgICAgIH0KICAKQEAgLTczLDcgKzczLDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAv Z2RiL2NsaS9jbGktY21kcy5jCiAgICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKICAKICAg ICpzdHJlYW1wID0gZmRvcGVuIChmZCwgRk9QRU5fUlQpOwotQEAgLTU3MiwxMyArNTk5LDE0IEBA IHNvdXJjZV9zY3JpcHRfd2l0aF9zZWFyY2ggKGNvbnN0IGNoYXIgKmYKK0BAIC01NzMsMTMgKzYw MCwxNCBAQCBzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoIChjb25zdCBjaGFyICpmCiAgICBpZiAo ZmlsZSA9PSBOVUxMIHx8ICpmaWxlID09IDApCiAgICAgIGVycm9yIChfKCJzb3VyY2UgY29tbWFu ZCByZXF1aXJlcyBmaWxlIG5hbWUgb2YgZmlsZSB0byBzb3VyY2UuIikpOwogIApAQCAtODEsMTkg KzgxLDE5IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYwog KyAgaWYgKCFmaW5kX2FuZF9vcGVuX3NjcmlwdCAoZmlsZSwgc2VhcmNoX3BhdGgsICZzdHJlYW0s ICZmdWxsX3BhdGgsCiArCQkJICAgICBmcm9tX3R0eSkpCiAgICAgIHsKLSAgICAgICAvKiBUaGUg c2NyaXB0IHdhc24ndCBmb3VuZCwgb3Igd2FzIG90aGVyd2lzZSBpbmFjY2Vzc2libGUuCi0gCSBJ ZiB0aGUgc291cmNlIGNvbW1hbmQgd2FzIGludm9rZWQgaW50ZXJhY3RpdmVseSwgdGhyb3cgYW4g ZXJyb3IuCi0gCSBPdGhlcndpc2UgKGUuZy4gaWYgaXQgd2FzIGludm9rZWQgYnkgYSBzY3JpcHQp LCBzaWxlbnRseSBpZ25vcmUKLSAJIHRoZSBlcnJvci4gICovCisgICAgICAgLyogVGhlIHNjcmlw dCB3YXNuJ3QgZm91bmQsIG9yIHdhcyBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLiAgCisgICAgICAg ICAgSWYgdGhlIHNvdXJjZSBjb21tYW5kIHdhcyBpbnZva2VkIGludGVyYWN0aXZlbHksIHRocm93 IGFuCisgCSBlcnJvci4gIE90aGVyd2lzZSAoZS5nLiBpZiBpdCB3YXMgaW52b2tlZCBieSBhIHNj cmlwdCksCisgCSBzaWxlbnRseSBpZ25vcmUgdGhlIGVycm9yLiAgKi8KIC0gICAgICBpZiAoZnJv bV90dHkpCiArICAgICAgaWYgKGZyb21fdHR5ID4gMCkKICAJcGVycm9yX3dpdGhfbmFtZSAoZmls ZSk7CiAgICAgICAgZWxzZQogIAlyZXR1cm47Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMC9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu MS45MC4yMDEwMDcyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTAtMDct MjAgMjI6MjU6NDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTEtMDEtMDEgMDA6NTM6MDkuMDAwMDAw MDAwICswMTAwCiBAQCAtMCwwICsxLDkxIEBACiArIyAgIENvcHlyaWdodCAyMDA1CiArIyAgIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTg2LDE3ICsxODYsMTcgQEAgSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAog K30KICsKICtyZW1vdGVfZXhlYyBidWlsZCAicm0gLmdkYmluaXQiCi1JbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxl CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dk YmluaXQuc2FtcGxlCTIwMTAtMDctMjAgMjI6MjU6NDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCTIw MTEtMDEtMDEgMDA6NTM6MDkuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxIEBACiArZWNobyAi XG5pbiBnZGJpbml0IgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL21haW4uYworSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjEuOTAuMjAxMDA3MjAub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvbWFpbi5jCTIwMTAtMDctMjEg MjA6MDk6MDMuMDAwMDAwMDAwICswMjAwCi1AQCAtNzk0LDcgKzc5NCw3IEBAIEV4Y2VzcyBjb21t YW5kIGxpbmUgYXJndW1lbnRzIGlnbm9yZWQuICgKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9y aWcvZ2RiL21haW4uYwkyMDEwLTEyLTI5IDAxOjU4OjE0LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjIuNTAuMjAxMDEyMzEvZ2RiL21haW4uYwkyMDExLTAxLTAxIDAwOjUzOjA5LjAwMDAwMDAw MCArMDEwMAorQEAgLTgwNSw3ICs4MDUsNyBAQCBFeGNlc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50 cyBpZ25vcmVkLiAoCiAgICAgICBkZWJ1Z2dpbmcgb3Igd2hhdCBkaXJlY3RvcnkgeW91IGFyZSBp bi4gICovCiAgCiAgICBpZiAoaG9tZV9nZGJpbml0ICYmICFpbmhpYml0X2dkYmluaXQpCkBAIC0y MDUsNyArMjA1LDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL21haW4uYwogIAog ICAgLyogTm93IHBlcmZvcm0gYWxsIHRoZSBhY3Rpb25zIGluZGljYXRlZCBieSB0aGUgYXJndW1l bnRzLiAgKi8KICAgIGlmIChjZGFyZyAhPSBOVUxMKQotQEAgLTg2OCw3ICs4NjgsNyBAQCBDYW4n dCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvCitAQCAtODgwLDcgKzg4MCw3IEBA IENhbid0IGF0dGFjaCB0byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY28KICAgIC8qIFJlYWQgdGhl IC5nZGJpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCAqaWYqIGl0IGlzbid0CiAg ICAgICB0aGUgc2FtZSBhcyB0aGUgJEhPTUUvLmdkYmluaXQgZmlsZSAoaXQgc2hvdWxkIGV4aXN0 LCBhbHNvKS4gICovCiAgICBpZiAobG9jYWxfZ2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0KQpA QCAtMjE0LDExICsyMTQsMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL21haW4u YwogIAogICAgLyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFs bCAtZCBvcHRpb25zIGhhdmUgYmVlbgogICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkg c2NyaXB0cyBtZW50aW9uZWQgaW4gU1lNQVJHLgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3 MjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTAtMDUtMTcgMjM6MjM6MjUuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvcHl0aG9uL3B5LWF1dG8t bG9hZC5jCTIwMTAtMDctMjAgMjI6MjU6NDAuMDAwMDAwMDAwICswMjAwCi1AQCAtMjE5LDcgKzIx OSw3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKy0tLSBnZGIt Ny4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEwLTEyLTE1 IDE4OjI3OjU5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3B5 dGhvbi9weS1hdXRvLWxvYWQuYwkyMDExLTAxLTAxIDAwOjUzOjA5LjAwMDAwMDAwMCArMDEwMAor QEAgLTIyNCw3ICsyMjQsNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmls ZSAqCiAgCX0KICAKICAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoZmlsZSwg MSAvKnNlYXJjaF9wYXRoKi8sCkBAIC0yMjcsMTAgKzIyNywxMCBAQCBJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCiAgCiAgICAgICAgLyogSWYgdGhl IGZpbGUgaXMgbm90IGZvdW5kLCB3ZSBzdGlsbCByZWNvcmQgdGhlIGZpbGUgaW4gdGhlIGhhc2gg dGFibGUsCiAgCSB3ZSBvbmx5IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbmNlLgot SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21kcy5oCitJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTIzMS9nZGIvY2xpL2NsaS1jbWRzLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xLjkwLjIwMTAwNzIwLm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMDUtMDMgMDE6NTI6 MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvY2xpL2NsaS1j bWRzLmgJMjAxMC0wNy0yMCAyMjoyNTo0MC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUw LjIwMTAxMjMxLm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMTItMjkgMDM6MTE6MDQuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY2xpL2NsaS1jbWRzLmgJ MjAxMS0wMS0wMSAwMDo1MzowOS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMjYsNyArMTI2LDggQEAg ZXh0ZXJuIHZvaWQgc291cmNlX3NjcmlwdCAoY2hhciAqLCBpbnQpOwogIC8qIEV4cG9ydGVkIHRv IG9iamZpbGVzLmMuICAqLwogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjUtZHdhcmYtc3RhY2stb3Zl cmZsb3cucGF0Y2ggYi9nZGItNi41LWR3YXJmLXN0YWNrLW92ZXJmbG93LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDEwN2IzLi4wMDAwMDAwCi0tLSBhL2dkYi02LjUtZHdh cmYtc3RhY2stb3ZlcmZsb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1m b3IgZ2RiL0NoYW5nZUxvZzoKLTIwMDYtMDgtMjIgIFdpbGwgRHJld3J5IDx3YWRAZ29vZ2xlLmNv bT4KLQkgICAgVGF2aXMgT3JtYW5keSA8dGF2aXNvQGdvb2dsZS5jb20+Ci0KLQkqIGR3YXJmMnJl YWQuYyAoZGVjb2RlX2xvY2Rlc2MpOiBFbmZvcmNlIGxvY2F0aW9uIGRlc2NyaXB0aW9uIHN0YWNr Ci0JYm91bmRhcmllcy4KLQkqIGR3YXJmcmVhZC5jIChsb2N2YWwpOiBMaWtld2lzZS4KLQotMjAw Ny0xMC0xNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0J UG9ydCB0byBHREItNi43LgotCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYy cmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9kd2Fy ZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDo0Mzo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDo0OTozMi4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xMTM4Miw4ICsxMTM4Miw3IEBAIHJlYWRfc2lnbmF0dXJlZF90eXBlIChz dHJ1Y3Qgb2JqZmlsZSAqb2IKLSAgICBjYWxsZXJzIHdpbGwgb25seSB3YW50IGEgdmVyeSBiYXNp YyByZXN1bHQgYW5kIHRoaXMgY2FuIGJlY29tZSBhCi0gICAgY29tcGxhaW50LgotIAotLSAgIE5v dGUgdGhhdCBzdGFja1swXSBpcyB1bnVzZWQgZXhjZXB0IGFzIGEgZGVmYXVsdCBlcnJvciByZXR1 cm4uCi0tICAgTm90ZSB0aGF0IHN0YWNrIG92ZXJmbG93IGlzIG5vdCB5ZXQgaGFuZGxlZC4gICov Ci0rICAgTm90ZSB0aGF0IHN0YWNrWzBdIGlzIHVudXNlZCBleGNlcHQgYXMgYSBkZWZhdWx0IGVy cm9yIHJldHVybi4gKi8KLSAKLSBzdGF0aWMgQ09SRV9BRERSCi0gZGVjb2RlX2xvY2Rlc2MgKHN0 cnVjdCBkd2FyZl9ibG9jayAqYmxrLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLUBAIC0xMTM5OSw3 ICsxMTM5OCw3IEBAIGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgZHdhcmZfYmxvY2sgKmJsaywKLSAK LSAgIGkgPSAwOwotICAgc3RhY2tpID0gMDsKLS0gIHN0YWNrW3N0YWNraV0gPSAwOwotKyAgc3Rh Y2tbKytzdGFja2ldID0gMDsKLSAKLSAgIHdoaWxlIChpIDwgc2l6ZSkKLSAgICAgewotQEAgLTEx NTgxLDYgKzExNTgwLDE2IEBAIGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgZHdhcmZfYmxvY2sgKmJs aywKLSAJCSAgICAgZHdhcmZfc3RhY2tfb3BfbmFtZSAob3AsIDEpKTsKLSAJICByZXR1cm4gKHN0 YWNrW3N0YWNraV0pOwotIAl9Ci0rICAgICAgLyogRW5mb3JjZSBtYXhpbXVtIHN0YWNrIGRlcHRo IG9mIHNpemUtMSB0byBhdm9pZCArK3N0YWNraSB3cml0aW5nCi0rICAgICAgICAgb3V0c2lkZSBv ZiB0aGUgYWxsb2NhdGVkIHNwYWNlLiBBbHNvIGVuZm9yY2UgbWluaW11bSA+IDAuCi0rICAgICAg ICAgLS0gd2FkQGdvb2dsZS5jb20gMTQgQXVnIDIwMDYgKi8KLSsgICAgICBpZiAoc3RhY2tpID49 IHNpemVvZiAoc3RhY2spIC8gc2l6ZW9mICgqc3RhY2spIC0gMSkKLSsJaW50ZXJuYWxfZXJyb3Ig KF9fRklMRV9fLCBfX0xJTkVfXywKLSsJICAgICAgICAgICAgICAgIF8oImxvY2F0aW9uIGRlc2Ny aXB0aW9uIHN0YWNrIHRvbyBkZWVwOiAlZCIpLAotKwkgICAgICAgICAgICAgICAgc3RhY2tpKTsK LSsgICAgICBpZiAoc3RhY2tpIDw9IDApCi0rCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19M SU5FX18sCi0rCSAgICAgICAgICAgICAgICBfKCJsb2NhdGlvbiBkZXNjcmlwdGlvbiBzdGFjayB0 b28gc2hhbGxvdyIpKTsKLSAgICAgfQotICAgcmV0dXJuIChzdGFja1tzdGFja2ldKTsKLSB9Cgpk aWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaCBiL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKaW5kZXggYTQzMDY2Ny4uYzhi ODg4MyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRj aAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCkBAIC01OCwx MCArNTgsMTAgQEAgSHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEv bXNnMDA1MTcuaHRtbAogCSogZXhlYy5jIChleGVjX2ZpbGVfYXR0YWNoKTogUHJpbnQgYSBtb3Jl IHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlmIHRoZQogCXVzZXIgZGlkICJnZGIgY29yZSIuCiAKLUlu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGNlcHRpb25zLmgKK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMjMxL2dkYi9leGNlcHRpb25zLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEwLTA1LTAzIDAxOjUyOjE0LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEw LTA3LTEzIDIyOjU2OjI5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEu b3JpZy9nZGIvZXhjZXB0aW9ucy5oCTIwMTAtMDUtMDMgMDE6NTI6MTQuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvZXhjZXB0aW9ucy5oCTIwMTEtMDEtMDEgMDE6 MTA6NDQuMDAwMDAwMDAwICswMTAwCiBAQCAtNzgsNiArNzgsOSBAQCBlbnVtIGVycm9ycyB7CiAg ICAvKiBGZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4gICovCiAg ICBVTlNVUFBPUlRFRF9FUlJPUiwKQEAgLTcyLDEwICs3MiwxMCBAQCBJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvZXhjZXB0aW9ucy5oCiAgICAvKiBBZGQgbW9yZSBlcnJvcnMgaGVyZS4g ICovCiAgICBOUl9FUlJPUlMKICB9OwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4 ZWMuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V4ZWMuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZXhlYy5jCTIwMTAtMDctMTIgMjM6MDc6 MzQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5jCTIw MTAtMDctMTMgMjI6NTY6MjkuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIz MS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wOC0zMSAyMDowODo0My4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9leGVjLmMJMjAxMS0wMS0wMSAwMToxMDo0NC4wMDAw MDAwMDAgKzAxMDAKIEBAIC0zNCw2ICszNCw3IEBACiAgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIK ICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5jCiAgCX0KICAKICAgICAgICAvKiBGSVhNRSAtIFRo aXMgc2hvdWxkIG9ubHkgYmUgcnVuIGZvciBSUzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBwb29y Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuMi41 MC4yMDEwMTIzMS9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcx MS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wNy0xMiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9tYWluLmMJMjAxMC0wNy0xMyAyMjo1ODoyMC4wMDAw MDAwMDAgKzAyMDAKLUBAIC0yNDEsNiArMjQxLDM2IEBAIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAo dm9pZCAqZGF0YSkKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL21haW4uYwkyMDEx LTAxLTAxIDAxOjAwOjU0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEv Z2RiL21haW4uYwkyMDExLTAxLTAxIDAxOjExOjQ4LjAwMDAwMDAwMCArMDEwMAorQEAgLTI0Miw2 ICsyNDIsMzYgQEAgY2FwdHVyZWRfY29tbWFuZF9sb29wICh2b2lkICpkYXRhKQogICAgcmV0dXJu IDE7CiAgfQogIApAQCAtMTU2LDcgKzE1Niw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9tYWluLmMKICBzdGF0aWMgaW50CiAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICB7 Ci1AQCAtNjc4LDYgKzcwOCw4IEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKK0BA IC02ODgsNiArNzE4LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAJewogIAkgIHN5 bWFyZyA9IGFyZ3Zbb3B0aW5kXTsKICAJICBleGVjYXJnID0gYXJndltvcHRpbmRdOwpAQCAtMTY1 LDcgKzE2NSw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9tYWluLmMKICAJICBv cHRpbmQrKzsKICAJfQogIAotQEAgLTgxNiwxMCArODQ4LDI1IEBAIEV4Y2VzcyBjb21tYW5kIGxp bmUgYXJndW1lbnRzIGlnbm9yZWQuICgKK0BAIC04MjgsMTAgKzg2MCwyNSBAQCBFeGNlc3MgY29t bWFuZCBsaW5lIGFyZ3VtZW50cyBpZ25vcmVkLiAoCiAgICAgICAgJiYgc3ltYXJnICE9IE5VTEwK ICAgICAgICAmJiBzdHJjbXAgKGV4ZWNhcmcsIHN5bWFyZykgPT0gMCkKICAgICAgewpAQCAtMTgy LDExICsxODIsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL21haW4uYwogKwlm dW5jID0gZXhlY19maWxlX2F0dGFjaDsKICsKICAgICAgICAvKiBUaGUgZXhlYyBmaWxlIGFuZCB0 aGUgc3ltYm9sLWZpbGUgYXJlIHRoZSBzYW1lLiAgSWYgd2UgY2FuJ3QKLS0gICAgICAgICBvcGVu IGl0LCBiZXR0ZXIgb25seSBwcmludCBvbmUgZXJyb3IgbWVzc2FnZS4KLS0gICAgICAgICBjYXRj aF9jb21tYW5kX2Vycm9ycyByZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MhICovCisgICAgICAg ICAgb3BlbiBpdCwgYmV0dGVyIG9ubHkgcHJpbnQgb25lIGVycm9yIG1lc3NhZ2UuCistICAgICAg ICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgcmV0dXJucyBub24temVybyBvbiBzdWNjZXNzISAgKi8K IC0gICAgICBpZiAoY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWNfZmlsZV9hdHRhY2gsIGV4ZWNh cmcsICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpKQotKwkgb3BlbiBpdCwgYmV0dGVyIG9u bHkgcHJpbnQgb25lIGVycm9yIG1lc3NhZ2UuCi0rCSBjYXRjaF9jb21tYW5kX2Vycm9ycyByZXR1 cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MhCisrICAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMg cmV0dXJucyBub24temVybyBvbiBzdWNjZXNzIQogKwkgRG8gbm90IGxvYWQgRVhFQ0FSRyBhcyBh IHN5bWJvbCBmaWxlIGlmIGl0IGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkCiArCSBhcyBhIGNv cmUgZmlsZS4gICovCiArICAgICAgaWYgKGNhdGNoX2NvbW1hbmRfZXJyb3JzIChmdW5jLCBleGVj YXJnLCAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKQoKZGlmZiAtLWdpdCBhL2dkYi02LjYt YnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0 Y2gKaW5kZXggNDQxNmU2OC4uNDc3Y2MyNyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKQEAg LTEsMjUgKzEsMjUgQEAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9ldmVudC10b3Au YworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTA5LTEx IDE4OjAwOjI1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2V2 ZW50LXRvcC5jCTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu Mi41MC4yMDEwMTIzMS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTEyLTI5IDAxOjU4OjE0LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V2ZW50LXRvcC5jCTIw MTEtMDEtMDEgMDE6MDc6MzcuMDAwMDAwMDAwICswMTAwCiBAQCAtMzMsNiArMzMsNyBAQAogICNp bmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIiAgICAgLyogZm9yIHJlc2V0X2NvbW1hbmRfbmVzdF9k ZXB0aCAqLwogICNpbmNsdWRlICJtYWluLmgiCiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogKyNp bmNsdWRlICJzeW1maWxlLmgiCiAgCi0gLyogRm9yIGRvbnRfcmVwZWF0KCkgKi8KLSAjaW5jbHVk ZSAiZ2RiY21kLmgiCi1AQCAtMTkzLDYgKzE5NCw4IEBAIGNsaV9jb21tYW5kX2xvb3AgKHZvaWQp CisgI2luY2x1ZGUgImdkYmNtZC5oIgkJLyogZm9yIGRvbnRfcmVwZWF0KCkgKi8KKyAKK0BAIC0x OTIsNiArMTkzLDggQEAgY2xpX2NvbW1hbmRfbG9vcCAodm9pZCkKICAgICAgICBjaGFyICphX3By b21wdDsKICAgICAgICBjaGFyICpnZGJfcHJvbXB0ID0gZ2V0X3Byb21wdCAoKTsKICAKICsgICAg ICBkZWJ1Z19mbHVzaF9taXNzaW5nICgpOwogKwotICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hh dCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24gaXQKLSAgICAgICAg ICB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNv IGRpc3BsYXlzCi0gICAgICAgICAgdGhlIGZpcnN0IHByb21wdC4gKi8KLUBAIC0yNjQsNiArMjY3 LDggQEAgZGlzcGxheV9nZGJfcHJvbXB0IChjaGFyICpuZXdfcHJvbXB0KQorICAgICAgIC8qIFRl bGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rp b24KKyAgICAgICAgICBpdCB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMg cmVhZC4gIFRoaXMgYWxzbworICAgICAgICAgIGRpc3BsYXlzIHRoZSBmaXJzdCBwcm9tcHQuICAq LworQEAgLTI2Myw2ICsyNjYsOCBAQCBkaXNwbGF5X2dkYl9wcm9tcHQgKGNoYXIgKm5ld19wcm9t cHQpCiAgICAvKiBSZXNldCB0aGUgbmVzdGluZyBkZXB0aCB1c2VkIHdoZW4gdHJhY2UtY29tbWFu ZHMgaXMgc2V0LiAgKi8KICAgIHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAoKTsKICAKQEAgLTI4 LDEwICsyOCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZXZlbnQtdG9wLmMK ICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24gcnVsZXMgb24gZGlzcGxheWluZyB0 aGUgY29tbWFuZAogICAgICAgcHJvbXB0LiAgKi8KICAgIGlmICghY3VycmVudF9pbnRlcnBfZGlz cGxheV9wcm9tcHRfcCAoKSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9lbGZyZWFk LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTExLTE2IDA4 OjA0OjE4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2VsZnJl YWQuYwkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAu MjAxMDEyMzEub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTEtMDEtMDEgMDE6MDU6MDEuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvZWxmcmVhZC5jCTIwMTEtMDEtMDEg MDE6MDU6MTAuMDAwMDAwMDAwICswMTAwCiBAQCAtNDIsNiArNDIsNyBAQAogICNpbmNsdWRlICJn ZGJjb3JlLmgiCiAgI2luY2x1ZGUgImdkYmNtZC5oIgpAQCAtNDY0LDExICs0NjQsMTEgQEAgSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2VsZnJlYWQuYwogIH0KICAKICBzdGF0aWMgY2hh ciAqCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTIzMS9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41 MC4yMDEwMTExNi5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMC0xMS0xNiAwODowNDoxOC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW1maWxlLmgJMjAxMC0xMS0x NiAwODoxNDoyNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC01NTIsNiArNTUyLDggQEAgZXh0ZXJuIHN0 cnVjdCBidWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZQorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEu b3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMDEtMDEgMDE6MDU6MDEuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvc3ltZmlsZS5oCTIwMTEtMDEtMDEgMDE6MDU6MTAu MDAwMDAwMDAwICswMTAwCitAQCAtNTU5LDYgKzU1OSw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRf aWQgKmJ1aWxkX2lkX2FkZHJfZ2UKICBleHRlcm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUg KHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQsCiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwg aW50IGFkZF9kZWJ1Z19zdWZmaXgpOwogIGV4dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3Npbmcg KGNvbnN0IGNoYXIgKmJpbmFyeSwgY29uc3QgY2hhciAqZGVidWcpOwpAQCAtNDc3LDExICs0Nzcs MTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUuaAogIAogIC8qIEZy b20gZHdhcmYycmVhZC5jICovCiAgCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmln L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMC0xMS0xNiAwODowNDoxOC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJ MjAxMC0xMS0xNiAwODoxNDoyNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMzU4LDcgKzEzNTgsNyBA QCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5v cmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMS0wMSAwMTowNTowMS4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAJMjAxMS0wMS0wMSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMzg5LDcgKzEzODks NyBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4n dCBzZXQgdGhlIHdpZHRoIHRvIDAuIgogIAl9CiAgICAgIH0KQEAgLTQ5MCwxMCArNDkwLDEwIEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAg ICAgc2VuZF9nZGIgInNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAx MCB7CiAgCS1yZSAiJGdkYl9wcm9tcHQgJCIgewotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAx MjMxL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIw MTAtMTEtMTYgMDg6MDQ6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTExLTE2IDA4OjE0OjI2LjAw MDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTAxLTAxIDAxOjA1OjAxLjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJ MjAxMS0wMS0wMSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yMjEsNyArMjIxLDcgQEAg cHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CkBA IC01MDMsMTAgKzUwMywxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogICAgICBzZW5kX2dkYiAiMTkwLWdkYi1zZXQgYnVpbGQt aWQtdmVyYm9zZSAwXG4iCiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIi4qMTkwLWdkYi1z ZXQgYnVpbGQtaWQtdmVyYm9zZSAwXHJcbjE5MFxcXF5kb25lXHJcbiRtaV9nZGJfcHJvbXB0JCIg ewotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3R1aS90dWktaW50ZXJwLmMKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90dWkvdHVpLWludGVycC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDUt MTggMDA6MjE6NDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv dHVpL3R1aS1pbnRlcnAuYwkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTA1LTE4 IDAwOjIxOjQzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3R1 aS90dWktaW50ZXJwLmMJMjAxMS0wMS0wMSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0z MCw2ICszMCw3IEBACiAgI2luY2x1ZGUgInR1aS90dWkuaCIKICAjaW5jbHVkZSAidHVpL3R1aS1p by5oIgpAQCAtNTI0LDEwICs1MjQsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L3R1aS90dWktaW50ZXJwLmMKICAgICAgICAvKiBUZWxsIHJlYWRsaW5lIHdoYXQgdGhlIHByb21w dCB0byBkaXNwbGF5IGlzIGFuZCB3aGF0IGZ1bmN0aW9uCiAgICAgICAgICAgaXQgd2lsbCBuZWVk IHRvIGNhbGwgYWZ0ZXIgYSB3aG9sZSBsaW5lIGlzIHJlYWQuIFRoaXMgYWxzbwogICAgICAgICAg IGRpc3BsYXlzIHRoZSBmaXJzdCBwcm9tcHQuICAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL2FjbG9jYWwubTQKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9hY2xvY2Fs Lm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9hY2xvY2Fs Lm00CTIwMTAtMDUtMjMgMDI6NTY6NTkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvYWNsb2NhbC5tNAkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEw MAorLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDEwLTA1LTIz IDAyOjU2OjU5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2Fj bG9jYWwubTQJMjAxMS0wMS0wMSAwMTowNToxMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOSw2ICsx OSwxNjIgQEAgWW91IGhhdmUgYW5vdGhlciB2ZXJzaW9uIG9mIGF1dG9jb25mLiAgSQogIElmIHlv dSBoYXZlIHByb2JsZW1zLCB5b3UgbWF5IG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgYnVpbGQgc3lz dGVtIGVudGlyZWx5LgogIFRvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5 IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKQEAgLTY5MSwxMCArNjkx LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9hY2xvY2FsLm00CiAgIyBDb3B5 cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogICMKICAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvY29uZmlnLmluCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY29uZmlnLmluCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9jb25maWcuaW4JMjAx MC0wOS0wMiAxOToxMjozNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9jb25maWcuaW4JMjAxMC0xMS0xNiAwODoxNDoyNi4wMDAwMDAwMDAgKzAxMDAKKy0tLSBn ZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEwLTA5LTAyIDE5OjEyOjM1 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2NvbmZpZy5pbgky MDExLTAxLTAxIDAxOjA1OjEwLjAwMDAwMDAwMCArMDEwMAogQEAgLTQ2LDYgKzQ2LDkgQEAKICAv KiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCB0YXJnZXQgdmVjdG9yLiAqLwogICN1bmRlZiBERUZB VUxUX0JGRF9WRUMKQEAgLTcxNSwxMSArNzE1LDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgaWYgbGlidW53aW5kIGxpYnJhcnkgaXMgYmVp bmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJVTldJTkQKICAKLUluZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi9jb25maWd1cmUKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9j b25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2Nv bmZpZ3VyZQkyMDEwLTExLTA1IDAyOjUwOjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL2NvbmZpZ3VyZQkyMDEwLTExLTE2IDA4OjE1OjMzLjAwMDAwMDAwMCAr MDEwMAotQEAgLTY3OSw2ICs2NzksOSBAQCBSRVBPUlRfQlVHU19UTworLS0tIGdkYi03LjIuNTAu MjAxMDEyMzEub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMTItMTQgMDg6MTc6MTQuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvY29uZmlndXJlCTIwMTEtMDEtMDEg MDE6MDg6NTAuMDAwMDAwMDAwICswMTAwCitAQCAtNjgwLDYgKzY4MCw5IEBAIFJFUE9SVF9CVUdT X1RPCiAgUEtHVkVSU0lPTgogIFRBUkdFVF9PQlMKICBzdWJkaXJzCkBAIC03MjksNyArNzI5LDcg QEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZpZ3VyZQogIEdEQl9EQVRBRElS CiAgREVCVUdESVIKICBhbV9fZmFzdGRlcENDX0ZBTFNFCi1AQCAtOTQ1LDYgKzk0OCw3IEBAIGVu YWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCitAQCAtOTQ2LDYgKzk0OSw3IEBAIGVuYWJsZV9kZXBl bmRlbmN5X3RyYWNraW5nCiAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKICB3aXRoX2dkYl9kYXRh ZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291cmNlcwpAQCAtNzM3LDcgKzczNyw3IEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9jb25maWd1cmUKICBlbmFibGVfdGFyZ2V0cwogIGVuYWJs ZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAgLTk4Niw2ICs5OTAsOSBAQCBMREZMQUdT CitAQCAtOTg3LDYgKzk5MSw5IEBAIExERkxBR1MKICBMSUJTCiAgQ1BQRkxBR1MKICBDUFAKQEAg LTc0Nyw3ICs3NDcsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmlndXJl CiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE2NDksNiArMTY1Niw4IEBAIE9wdGlvbmFs IFBhY2thZ2VzOgorQEAgLTE2NTAsNiArMTY1Nyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiXQogICAgLS13aXRoLXJlbG9jYXRl ZC1zb3VyY2VzPVBBVEgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkg cmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKQEAgLTc1Niw3ICs3NTYsNyBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgtbGlidW53 aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CiAgICAtLXdp dGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhl IHRlcm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0xNjg0LDYg KzE2OTMsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC0x Njg1LDYgKzE2OTQsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoK ICAgIENQUEZMQUdTICAgIEMvQysrL09iamVjdGl2ZSBDIHByZXByb2Nlc3NvciBmbGFncywgZS5n LiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAgIHlvdSBoYXZlIGhlYWRlcnMgaW4g YSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgogICAgQ1BQICAgICAgICAgQyBw cmVwcm9jZXNzb3IKQEAgLTc2Niw3ICs3NjYsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUgYFlldCBBbm90aGVyIEMgQ29tcGls ZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMgdG8KICAgICAgICAgICAgICAgIHRo ZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29uIC15JywgYGJ5YWNjJywgYHlhY2Mn LgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSBwYXNz ZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC03ODgxLDYgKzc4OTMsNDg2IEBAIF9BQ0VPRgor QEAgLTc4ODIsNiArNzg5NCw0ODYgQEAgX0FDRU9GCiAgZmkKICAKICAKQEAgLTEyNTIsMTEgKzEy NTIsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZpZ3VyZQogKwogIAog IAotIHN1YmRpcnM9IiRzdWJkaXJzIGRvYyB0ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvY29uZmlndXJlLmFjCisgc3ViZGlycz0iJHN1YmRpcnMgdGVzdHN1aXRlIgor SW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMTEtMDUg MDI6NTA6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29u ZmlndXJlLmFjCTIwMTAtMTEtMTYgMDg6MTU6MTAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu Mi41MC4yMDEwMTIzMS5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMC0xMi0xNCAwODoxNzoxNS4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9jb25maWd1cmUuYWMJ MjAxMS0wMS0wMSAwMTowODoyOC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMDgsNiArMTA4LDE5OSBA QCBBU19IRUxQX1NUUklORyhbLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzCiAgICAgICAgICAgICAg ICBbUmVsb2NhdGVkIGRpcmVjdG9yeSBmb3Igc291cmNlIGZpbGVzLiBdKQogIF0pCkBAIC0xNDU0 LDEzICsxNDU0LDEzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9jb25maWd1cmUu YWMKICsgIGZpCiArZmkKICsgCi0gQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKKyBB Q19DT05GSUdfU1VCRElSUyh0ZXN0c3VpdGUpCiAgCiAgIyBDaGVjayB3aGV0aGVyIHRvIHN1cHBv cnQgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi1JbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvYWNpbmNsdWRlLm00CitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv YWNpbmNsdWRlLm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dk Yi9hY2luY2x1ZGUubTQJMjAxMC0wNS0yNyAwNTo0MDo0NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9hY2luY2x1ZGUubTQJMjAxMC0xMS0xNiAwODoxNDoyNi4w MDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL2FjaW5jbHVk ZS5tNAkyMDEwLTA1LTI3IDA1OjQwOjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAu MjAxMDEyMzEvZ2RiL2FjaW5jbHVkZS5tNAkyMDExLTAxLTAxIDAxOjA1OjEwLjAwMDAwMDAwMCAr MDEwMAogQEAgLTEsMyArMSw1IEBACiArIyBzZXJpYWwgMQogKwpAQCAtMTQ3NiwxMCArMTQ3Niwx MCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYWNpbmNsdWRlLm00CiAgIyBAZGVm bWFjIEFDX1BST0dfQ0NfU1REQwogICMgQG1haW5kZXggUFJPR19DQ19TVERDCiAgIyBAb3ZpbmRl eCBDQwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDEyMzEvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvY29yZWxvdy5jCTIwMTAtMTEtMTYgMDg6MDQ6MTguMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29yZWxvdy5jCTIwMTAtMTEt MTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmln L2dkYi9jb3JlbG93LmMJMjAxMS0wMS0wMSAwMTowNTowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9jb3JlbG93LmMJMjAxMS0wMS0wMSAwMTowNToxMC4wMDAw MDAwMDAgKzAxMDAKIEBAIC0zMTcsNyArMzE3LDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGlu dCBmcm9tX3R0eSkKICAgICAgICAgIHN5bWZpbGVfb2JqZmlsZS0+ZmxhZ3MgfD0gT0JKRl9CVUlM RF9JRF9DT1JFX0xPQURFRDsKICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnoyMjU3ODMt Z2RiLWRlYnVnaW5mby1wYXRocy5wYXRjaCBiL2dkYi02LjYtYnoyMjU3ODMtZ2RiLWRlYnVnaW5m by1wYXRocy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5YmJjZC4uMDAw MDAwMAotLS0gYS9nZGItNi42LWJ6MjI1NzgzLWdkYi1kZWJ1Z2luZm8tcGF0aHMucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20v YnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyNTc4MwotCi0KLUluZGV4OiBnZGItNi44LjUwLjIw MDgxMTI4L2dkYi9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODEx Mjgub3JpZy9nZGIvTWFrZWZpbGUuaW4JMjAwOC0xMi0wMiAyMzowNjoxNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9NYWtlZmlsZS5pbgkyMDA4LTEyLTAyIDIz OjI4OjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTE0OTAsOCArMTQ5MCwxMCBAQCBwby8kKFBBQ0tB R0UpLnBvdDogZm9yY2UKLSAKLSAuU1VGRklYRVM6IC55IC5sCi0gLnkuYzoKLS0JJChTSEVMTCkg JChZTFdSQVApICQ8IHkudGFiLmMgJEAudG1wIC0tICQoWUFDQykgJChZRkxBR1MpCi0tCS1zZWQg LWUgJy9leHRlcm4uKm1hbGxvYy9kJyBcCi0rCXJtIC1mICRAICRALnRtcAotKwkkKFNIRUxMKSAk KFlMV1JBUCkgJDwgeS50YWIuYyAkQCAtLSAkKFlBQ0MpICQoWUZMQUdTKSAmJiBtdiAkQCAkQC50 bXAgXAotKwkJfHwgKHJtIC1mICRAOyBmYWxzZSkKLSsJc2VkIC1lICcvZXh0ZXJuLiptYWxsb2Mv ZCcgXAotIAkgICAgIC1lICcvZXh0ZXJuLipyZWFsbG9jL2QnIFwKLSAJICAgICAtZSAnL2V4dGVy bi4qZnJlZS9kJyBcCi0gCSAgICAgLWUgJy9pbmNsdWRlLiptYWxsb2MuaC9kJyBcCi1AQCAtMTUw MCw5ICsxNTAyLDkgQEAgcG8vJChQQUNLQUdFKS5wb3Q6IGZvcmNlCi0gCSAgICAgLWUgJ3MvXChb IFx0OywoXVwpZnJlZVwoWyBcdF0qWyYoKSxdXCkvXDF4ZnJlZVwyL2cnIFwKLSAJICAgICAtZSAn cy9cKFsgXHQ7LChdXClmcmVlJCQvXDF4ZnJlZS9nJyBcCi0gCSAgICAgLWUgJy9eI2xpbmUuKnku dGFiLmMvZCcgXAotLQkgIDwgJEAudG1wID4gJEAubmV3Ci0tCS1ybSAkQC50bXAKLS0JbXYgJEAu bmV3IC4vJCouYwotKwkgICAgIC1lICJzL15cKCNsaW5lLipcKWBiYXNlbmFtZSAkPGAvXDFgZWNo byAkPHxzZWQgJ3MvXC8vXFxcXFwvL2cnYC8iIFwKLSsJICA8ICRALnRtcCA+ICRACi0rCXJtIC1m ICRALnRtcAotIC5sLmM6Ci0gCWlmIFsgIiQoRkxFWCkiIF0gJiYgJChGTEVYKSAtLXZlcnNpb24g Pi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKLSAJICAgICQoRkxFWCkgLW8kQCAkPCAmJiBcCgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNi1yZWFkbGluZS1zeXN0ZW0ucGF0Y2ggYi9nZGItNi42LXJlYWRsaW5l LXN5c3RlbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI5MDFlNy4uMDAw MDAwMAotLS0gYS9nZGItNi42LXJlYWRsaW5lLXN5c3RlbS5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDExNiArMCwwIEBACi0yMDA3LTEwLTE2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdEQi02LjcuCi0KLUluZGV4OiBnZGItNi43L2dk Yi9kb2MvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi43Lm9yaWcvZ2RiL2RvYy9N YWtlZmlsZS5pbgkyMDA3LTA3LTI2IDEyOjM0OjAwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02 LjcvZ2RiL2RvYy9NYWtlZmlsZS5pbgkyMDA3LTEwLTE2IDE2OjMxOjA4LjAwMDAwMDAwMCArMDIw MAotQEAgLTEwOSw5ICsxMDksNyBAQCBEVklQUyA9IGR2aXBzCi0gR0RCX0RPQ19TT1VSQ0VfSU5D TFVERVMgPSBcCi0gCSQoc3JjZGlyKS9mZGwudGV4aSBcCi0gCSQoc3JjZGlyKS9ncGwudGV4aSBc Ci0tCSQoc3JjZGlyKS9hZ2VudGV4cHIudGV4aSBcCi0tCSQoUkVBRExJTkVfRElSKS9ybHVzZXIu dGV4aSBcCi0tCSQoUkVBRExJTkVfRElSKS9pbmMtaGlzdC50ZXhpbmZvCi0rCSQoc3JjZGlyKS9h Z2VudGV4cHIudGV4aQotIEdEQl9ET0NfQlVJTERfSU5DTFVERVMgPSBcCi0gCWdkYi1jZmcudGV4 aSBcCi0gCUdEQnZuLnRleGkKLUluZGV4OiBnZGItNi43L2dkYi9kb2MvZ2RiLnRleGluZm8KLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNi43Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA3LTEwLTE2 IDE2OjE5OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjcvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDA3LTEwLTE2IDE2OjMyOjEwLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1OCw4ICsxNTgsOCBA QCBzb2Z0d2FyZSBpbiBnZW5lcmFsLiAgV2Ugd2lsbCBtaXNzIGhpbS4KLSAKLSAqIEdEQiBCdWdz OjogICAgICAgICAgICAgICAgICAgIFJlcG9ydGluZyBidWdzIGluIEB2YWx1ZXtHREJOfQotIAot LSogQ29tbWFuZCBMaW5lIEVkaXRpbmc6OiAgICAgICAgQ29tbWFuZCBMaW5lIEVkaXRpbmcKLS0q IFVzaW5nIEhpc3RvcnkgSW50ZXJhY3RpdmVseTo6IFVzaW5nIEhpc3RvcnkgSW50ZXJhY3RpdmVs eQotKyogQ29tbWFuZCBMaW5lIEVkaXRpbmc6IChybHVzZXJtYW4pLiAgICAgICBDb21tYW5kIExp bmUgRWRpdGluZwotKyogVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5OiAoaGlzdG9yeSkuICBV c2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkKLSAqIEZvcm1hdHRpbmcgRG9jdW1lbnRhdGlvbjo6 ICAgIEhvdyB0byBmb3JtYXQgYW5kIHByaW50IEB2YWx1ZXtHREJOfSBkb2N1bWVudGF0aW9uCi0g KiBJbnN0YWxsaW5nIEdEQjo6ICAgICAgICAgICAgICBJbnN0YWxsaW5nIEdEQgotICogTWFpbnRl bmFuY2UgQ29tbWFuZHM6OiAgICAgICAgTWFpbnRlbmFuY2UgQ29tbWFuZHMKLUBAIC0xNTUzMyw3 ICsxNTUzMyw3IEBAIERpc2FibGUgY29tbWFuZCBsaW5lIGVkaXRpbmcuCi0gU2hvdyB3aGV0aGVy IGNvbW1hbmQgbGluZSBlZGl0aW5nIGlzIGVuYWJsZWQuCi0gQGVuZCB0YWJsZQotIAotLUB4cmVm e0NvbW1hbmQgTGluZSBFZGl0aW5nfSwgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgUmVhZGxp bmUKLStAeHJlZntDb21tYW5kIExpbmUgRWRpdGluZywgLCAsIHJsdXNlcm1hbiwgR05VIFJlYWRs aW5lIExpYnJhcnl9LCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBSZWFkbGluZQotIGludGVy ZmFjZS4gIFVzZXJzIHVuZmFtaWxpYXIgd2l0aCBAc2N7Z251fSBFbWFjcyBvciBAY29kZXt2aX0g YXJlCi0gZW5jb3VyYWdlZCB0byByZWFkIHRoYXQgY2hhcHRlci4KLSAKLUBAIC0xNTU0OCw3ICsx NTU0OCw4IEBAIGhpc3RvcnkgZmFjaWxpdHkuCi0gCi0gQHZhbHVle0dEQk59IHVzZXMgdGhlIEBz Y3tnbnV9IEhpc3RvcnkgbGlicmFyeSwgYSBwYXJ0IG9mIHRoZSBSZWFkbGluZQotIHBhY2thZ2Us IHRvIHByb3ZpZGUgdGhlIGhpc3RvcnkgZmFjaWxpdHkuICBAeHJlZntVc2luZyBIaXN0b3J5Ci0t SW50ZXJhY3RpdmVseX0sIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIEhpc3Rv cnkgbGlicmFyeS4KLStJbnRlcmFjdGl2ZWx5LCAsICwgaGlzdG9yeSwgR05VIEhpc3RvcnkgTGli cmFyeX0sIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24KLStvZiB0aGUgSGlzdG9yeSBsaWJy YXJ5LgotIAotIFRvIGlzc3VlIGEgY29tbWFuZCB0byBAdmFsdWV7R0RCTn0gd2l0aG91dCBhZmZl Y3RpbmcgY2VydGFpbiBhc3BlY3RzIG9mCi0gdGhlIHN0YXRlIHdoaWNoIGlzIHNlZW4gYnkgdXNl cnMsIHByZWZpeCBpdCB3aXRoIEBzYW1we3NlcnZlciB9Ci1AQCAtMTU2MDAsNyArMTU2MDEsNyBA QCBUaGlzIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvCi0gQGVuZCB0YWJsZQot IAotIEhpc3RvcnkgZXhwYW5zaW9uIGFzc2lnbnMgc3BlY2lhbCBtZWFuaW5nIHRvIHRoZSBjaGFy YWN0ZXIgQGtiZHshfS4KLS1AeHJlZntFdmVudCBEZXNpZ25hdG9yc30sIGZvciBtb3JlIGRldGFp bHMuCi0rQHhyZWZ7RXZlbnQgRGVzaWduYXRvcnMsICwgLCBoaXN0b3J5LCBHTlUgSGlzdG9yeSBM aWJyYXJ5fSwgZm9yIG1vcmUgZGV0YWlscy4KLSAKLSBAY2luZGV4IGhpc3RvcnkgZXhwYW5zaW9u LCB0dXJuIG9uL29mZgotIFNpbmNlIEBrYmR7IX0gaXMgYWxzbyB0aGUgbG9naWNhbCBub3Qgb3Bl cmF0b3IgaW4gQywgaGlzdG9yeSBleHBhbnNpb24KLUBAIC0xNjY2MCw3ICsxNjY2MSw4IEBAIElu ZGljYXRlcyB0aGUgY3VycmVudCBwcm9ncmFtIGNvdW50ZXIgYWQKLSBAY2luZGV4IFRVSSBrZXkg YmluZGluZ3MKLSAKLSBUaGUgVFVJIGluc3RhbGxzIHNldmVyYWwga2V5IGJpbmRpbmdzIGluIHRo ZSByZWFkbGluZSBrZXltYXBzCi0tKEBweHJlZntDb21tYW5kIExpbmUgRWRpdGluZ30pLiAgVGhl IGZvbGxvd2luZyBrZXkgYmluZGluZ3MKLSsoQHB4cmVme0NvbW1hbmQgTGluZSBFZGl0aW5nLCAs ICwgcmx1c2VybWFuLCBHTlUgUmVhZGxpbmUgTGlicmFyeX0pLgotK1RoZSBmb2xsb3dpbmcga2V5 IGJpbmRpbmdzCi0gYXJlIGluc3RhbGxlZCBmb3IgYm90aCBUVUkgbW9kZSBhbmQgdGhlIEB2YWx1 ZXtHREJOfSBzdGFuZGFyZCBtb2RlLgotIAotIEB0YWJsZSBAa2JkCi1AQCAtMjE5MzcsMTUgKzIx OTM5LDYgQEAgU3VjaCBndWVzc2VzIGFyZSB1c3VhbGx5IHdyb25nLiAgRXZlbiB3ZQotIHRoaW5n cyB3aXRob3V0IGZpcnN0IHVzaW5nIHRoZSBkZWJ1Z2dlciB0byBmaW5kIHRoZSBmYWN0cy4KLSBA ZW5kIGl0ZW1pemUKLSAKLS1AYyBUaGUgcmVhZGxpbmUgZG9jdW1lbnRhdGlvbiBpcyBkaXN0cmli dXRlZCB3aXRoIHRoZSByZWFkbGluZSBjb2RlCi0tQGMgYW5kIGNvbnNpc3RzIG9mIHRoZSB0d28g Zm9sbG93aW5nIGZpbGVzOgotLUBjICAgICBybHVzZXIudGV4aW5mbwotLUBjICAgICBpbmMtaGlz dC50ZXhpbmZvCi0tQGMgVXNlIC1JIHdpdGggbWFrZWluZm8gdG8gcG9pbnQgdG8gdGhlIGFwcHJv cHJpYXRlIGRpcmVjdG9yeSwKLS1AYyBlbnZpcm9ubWVudCB2YXIgVEVYSU5QVVRTIHdpdGggVGVY LgotLUBpbmNsdWRlIHJsdXNlci50ZXhpCi0tQGluY2x1ZGUgaW5jLWhpc3QudGV4aW5mbwotLQot IAotIEBub2RlIEZvcm1hdHRpbmcgRG9jdW1lbnRhdGlvbgotIEBhcHBlbmRpeCBGb3JtYXR0aW5n IERvY3VtZW50YXRpb24KLUBAIC0yMjExNSw5ICsyMjEwOCw2IEBAIHNvdXJjZSBmb3IgdGhlIEBz YW1wey1saWJlcnR5fSBmcmVlIHNvZnQKLSBAaXRlbSBnZGItQHZhbHVle0dEQlZOfS9vcGNvZGVz Ci0gc291cmNlIGZvciB0aGUgbGlicmFyeSBvZiBvcGNvZGUgdGFibGVzIGFuZCBkaXNhc3NlbWJs ZXJzCi0gCi0tQGl0ZW0gZ2RiLUB2YWx1ZXtHREJWTn0vcmVhZGxpbmUKLS1zb3VyY2UgZm9yIHRo ZSBAc2N7Z251fSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlCi0tCi0gQGl0ZW0gZ2RiLUB2YWx1ZXtH REJWTn0vZ2xvYgotIHNvdXJjZSBmb3IgdGhlIEBzY3tnbnV9IGZpbGVuYW1lIHBhdHRlcm4tbWF0 Y2hpbmcgc3Vicm91dGluZQotIAotQEAgLTIyMTQ5LDcgKzIyMTM5LDcgQEAgd2hlcmUgQHZhcnto b3N0fSBpcyBhbiBpZGVudGlmaWVyIHN1Y2ggYQotIGNvcnJlY3QgdmFsdWUgYnkgZXhhbWluaW5n IHlvdXIgc3lzdGVtLikKLSAKLSBSdW5uaW5nIEBzYW1we2NvbmZpZ3VyZSBAdmFye2hvc3R9fSBh bmQgdGhlbiBydW5uaW5nIEBjb2Rle21ha2V9IGJ1aWxkcyB0aGUKLS1AZmlsZXtiZmR9LCBAZmls ZXtyZWFkbGluZX0sIEBmaWxle21tYWxsb2N9LCBhbmQgQGZpbGV7bGliaWJlcnR5fQotK0BmaWxl e2JmZH0sIEBmaWxle21tYWxsb2N9LCBhbmQgQGZpbGV7bGliaWJlcnR5fQotIGxpYnJhcmllcywg dGhlbiBAY29kZXtnZGJ9IGl0c2VsZi4gIFRoZSBjb25maWd1cmVkIHNvdXJjZSBmaWxlcywgYW5k IHRoZQotIGJpbmFyaWVzLCBhcmUgbGVmdCBpbiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgZGly ZWN0b3JpZXMuCi0gCi1AQCAtMjIxNzUsNyArMjIxNjUsNyBAQCBzb3VyY2UgdHJlZSwgdGhlIEBm aWxle2dkYi1AdmFye3ZlcnNpb24tCi0gdGhhdCBzdWJkaXJlY3RvcnkuICBUaGF0IGlzIHVzdWFs bHkgbm90IHdoYXQgeW91IHdhbnQuICBJbiBwYXJ0aWN1bGFyLAotIGlmIHlvdSBydW4gdGhlIGZp cnN0IEBmaWxle2NvbmZpZ3VyZX0gZnJvbSB0aGUgQGZpbGV7Z2RifSBzdWJkaXJlY3RvcnkKLSBv ZiB0aGUgQGZpbGV7Z2RiLUB2YXJ7dmVyc2lvbi1udW1iZXJ9fSBkaXJlY3RvcnksIHlvdSB3aWxs IG9taXQgdGhlCi0tY29uZmlndXJhdGlvbiBvZiBAZmlsZXtiZmR9LCBAZmlsZXtyZWFkbGluZX0s IGFuZCBvdGhlciBzaWJsaW5nCi0rY29uZmlndXJhdGlvbiBvZiBAZmlsZXtiZmR9LCBhbmQgb3Ro ZXIgc2libGluZwotIGRpcmVjdG9yaWVzIG9mIHRoZSBAZmlsZXtnZGJ9IHN1YmRpcmVjdG9yeS4g IFRoaXMgbGVhZHMgdG8gYnVpbGQgZXJyb3JzCi0gYWJvdXQgbWlzc2luZyBpbmNsdWRlIGZpbGVz IHN1Y2ggYXMgQGZpbGV7YmZkL2JmZC5ofS4KLSAKCmRpZmYgLS1naXQgYS9nZGItNi42LXNjaGVk dWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoIGIvZ2RiLTYuNi1zY2hlZHVs ZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAppbmRleCBmMTk3MTJlLi5lODk0 MjU4IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hw b2ludHMyLnBhdGNoCisrKyBiL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRj aHBvaW50czIucGF0Y2gKQEAgLTIxLDExICsyMSwxMSBAQAogCiAJUG9ydCB0byBHREItNi44cHJl LgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mZXJpb3IuaAorSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDEyMzEvZ2RiL2luZmVyaW9yLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0wNi0yNCAxNzoxNzozMC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZlcmlvci5oCTIwMTAt MTEtMTYgMDc6NTQ6MzYuMDAwMDAwMDAwICswMTAwCi1AQCAtMTk4LDcgKzE5OCwxNSBAQCBleHRl cm4gdm9pZCByZW9wZW5fZXhlY19maWxlICh2b2lkKTsKKy0tLSBnZGItNy4yLjUwLjIwMTAxMjMx Lm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMS0wMS0wMSAwMToyNTowMS4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9pbmZlcmlvci5oCTIwMTEtMDEtMDEgMDE6MjU6 MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMTg2LDcgKzE4NiwxNSBAQCBleHRlcm4gdm9pZCByZW9w ZW5fZXhlY19maWxlICh2b2lkKTsKICAvKiBUaGUgYHJlc3VtZScgcm91dGluZSBzaG91bGQgb25s eSBiZSBjYWxsZWQgaW4gc3BlY2lhbCBjaXJjdW1zdGFuY2VzLgogICAgIE5vcm1hbGx5LCB1c2Ug YHByb2NlZWQnLCB3aGljaCBoYW5kbGVzIGEgbG90IG9mIGJvb2trZWVwaW5nLiAgKi8KICAKQEAg LTQyLDExICs0MiwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mZXJpb3Iu aAogIAogIC8qIEZyb20gbWlzYyBmaWxlcyAqLwogIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL2luZnJ1bi5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvaW5mcnVuLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2luZnJ1bi5jCTIw MTAtMTEtMTYgMDc6NTM6NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvaW5mcnVuLmMJMjAxMC0xMS0xNiAwNzo1NToyMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC03 NCw3ICs3NCw3IEBAIHN0YXRpYyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQpOworLS0tIGdkYi03LjIu NTAuMjAxMDEyMzEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMS0wMS0wMSAwMToyNTowMS4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9pbmZydW4uYwkyMDExLTAxLTAx IDAxOjI1OjI5LjAwMDAwMDAwMCArMDEwMAorQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBm b2xsb3dfZm9yayAodm9pZCk7CiAgc3RhdGljIHZvaWQgc2V0X3NjaGVkbG9ja19mdW5jIChjaGFy ICphcmdzLCBpbnQgZnJvbV90dHksCiAgCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKTsK ICAKQEAgLTU1LDcgKzU1LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1 bi5jCiAgCiAgc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGluZ19jYWxsYmFj ayAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0x NTU3LDcgKzE1NTcsNyBAQCBtYXliZV9zb2Z0d2FyZV9zaW5nbGVzdGVwIChzdHJ1Y3QgZ2RiYXJj CitAQCAtMTU3MCw3ICsxNTcwLDcgQEAgbWF5YmVfc29mdHdhcmVfc2luZ2xlc3RlcCAoc3RydWN0 IGdkYmFyYwogICAgIFNURVAgbm9uemVybyBpZiB3ZSBzaG91bGQgc3RlcCAoemVybyB0byBjb250 aW51ZSBpbnN0ZWFkKS4KICAgICBTSUcgaXMgdGhlIHNpZ25hbCB0byBnaXZlIHRoZSBpbmZlcmlv ciAoemVybyBmb3Igbm9uZSkuICAqLwogIHZvaWQKQEAgLTY0LDI0ICs2NCwyNCBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMKICB7CiAgICBpbnQgc2hvdWxkX3Jlc3Vt ZSA9IDE7CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChy ZXN1bWVfY2xlYW51cHMsIDApOwotQEAgLTE1ODksMTAgKzE1ODksMTIgQEAgcmVzdW1lIChpbnQg c3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZworQEAgLTE2MDIsMTAgKzE2MDIsMTIgQEAgcmVz dW1lIChpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZwogICAgICB9CiAgCiAgICBpZiAo ZGVidWdfaW5mcnVuKQogLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCiAtICAg ICAgICAgICAgICAgICAgICAgICAgImluZnJ1bjogcmVzdW1lIChzdGVwPSVkLCBzaWduYWw9JWQp LCAiCiAtCQkJInRyYXBfZXhwZWN0ZWQ9JWRcbiIsCi0tIAkJCXN0ZXAsIHNpZywgdHAtPnRyYXBf ZXhwZWN0ZWQpOworLSAJCQlzdGVwLCBzaWcsIHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQpOwog KyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IHJlc3VtZSAoc3Rl cD0lcywgc2lnbmFsPSVkKSwgIgogKwkJCQkgICAgInRyYXBfZXhwZWN0ZWQ9JWRcbiIsCiArCQkJ KHN0ZXAgPT0gUkVTVU1FX1NURVBfQ09OVElOVUUgPyAiUkVTVU1FX1NURVBfQ09OVElOVUUiCiAr CQkJOiAoc3RlcCA9PSBSRVNVTUVfU1RFUF9VU0VSID8gIlJFU1VNRV9TVEVQX1VTRVIiCiArCQkJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIlJFU1VNRV9TVEVQX05FRURFRCIpKSwKLSsJ CQlzaWcsIHRwLT50cmFwX2V4cGVjdGVkKTsKKysJCQlzaWcsIHRwLT5jb250cm9sLnRyYXBfZXhw ZWN0ZWQpOwogIAogICAgLyogTm9ybWFsbHksIGJ5IHRoZSB0aW1lIHdlIHJlYWNoIGByZXN1bWUn LCB0aGUgYnJlYWtwb2ludHMgYXJlIGVpdGhlcgogICAgICAgcmVtb3ZlZCBvciBpbnNlcnRlZCwg YXMgYXBwcm9wcmlhdGUuICBUaGUgZXhjZXB0aW9uIGlzIGlmIHdlJ3JlIHNpdHRpbmcKLUBAIC0x NzEwLDkgKzE3MTIsMTAgQEAgYSBjb21tYW5kIGxpa2UgYHJldHVybicgb3IgYGp1bXAnIHRvIGNv bgorQEAgLTE3MjMsOSArMTcyNSwxMCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBvciBganVt cCcgdG8gY29uCiAgCSAgICAgaW5kaXZpZHVhbGx5LiAgKi8KICAJICByZXN1bWVfcHRpZCA9IGlu ZmVyaW9yX3B0aWQ7CiAgCX0KQEAgLTk0LDcgKzk0LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL2luZnJ1bi5jCiAgCXsKICAJICAvKiBVc2VyLXNldHRhYmxlICdzY2hlZHVsZXIn IG1vZGUgcmVxdWlyZXMgc29sbyB0aHJlYWQgcmVzdW1lLiAqLwogIAkgIHJlc3VtZV9wdGlkID0g aW5mZXJpb3JfcHRpZDsKLUBAIC0xOTIxLDcgKzE5MjQsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIg YWRkciwgZW51bSB0YXJnZXRfc2lnCitAQCAtMTkzNCw3ICsxOTM3LDcgQEAgcHJvY2VlZCAoQ09S RV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsK ICAgIENPUkVfQUREUiBwYzsKICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2U7CkBAIC0x MDMsNyArMTAzLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiAg CiAgICAvKiBJZiB3ZSdyZSBzdG9wcGVkIGF0IGEgZm9yay92Zm9yaywgZm9sbG93IHRoZSBicmFu Y2ggc2V0IGJ5IHRoZQogICAgICAgInNldCBmb2xsb3ctZm9yay1tb2RlIiBjb21tYW5kOyBvdGhl cndpc2UsIHdlJ2xsIGp1c3QgcHJvY2VlZAotQEAgLTE5NTYsMTMgKzE5NTksMTMgQEAgcHJvY2Vl ZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE5NjksMTMgKzE5NzIsMTMg QEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgICBhY3R1YWxs eSBiZSBleGVjdXRpbmcgdGhlIGJyZWFrcG9pbnQgaW5zbiBhbnl3YXkuCiAgCSAgIFdlJ2xsIGJl ICh1bi0pZXhlY3V0aW5nIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbi4gICovCiAgCkBAIC0xMTks NyArMTE5LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiAgICAg IH0KICAgIGVsc2UKICAgICAgewotQEAgLTIwMDMsMTMgKzIwMDYsMTMgQEAgcHJvY2VlZCAoQ09S RV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIwMTYsMTMgKzIwMTksMTMgQEAgcHJv Y2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgaXMgcmVxdWlyZWQgaXQg cmV0dXJucyBUUlVFIGFuZCBzZXRzIHRoZSBjdXJyZW50IHRocmVhZCB0bwogIAkgdGhlIG9sZCB0 aHJlYWQuICovCiAgICAgICAgaWYgKHByZXBhcmVfdG9fcHJvY2VlZCAoc3RlcCkpCkBAIC0xMzMs OSArMTMzLDkgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5jCiAtICBp ZiAob25lcHJvYykKICsgIGlmIChyZXN1bWVfc3RlcCA9PSBSRVNVTUVfU1RFUF9VU0VSKQogICAg ICB7Ci0gICAgICAgdHAtPnRyYXBfZXhwZWN0ZWQgPSAxOworICAgICAgIHRwLT5jb250cm9sLnRy YXBfZXhwZWN0ZWQgPSAxOwogICAgICAgIC8qIElmIGRpc3BsYWNlZCBzdGVwcGluZyBpcyBlbmFi bGVkLCB3ZSBjYW4gc3RlcCBvdmVyIHRoZQotQEAgLTIwOTYsOCArMjA5OSwxMyBAQCBwcm9jZWVk IChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCitAQCAtMjEwOSw4ICsyMTEyLDEzIEBA IHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIC8qIFJlc2V0IHRv IG5vcm1hbCBzdGF0ZS4gICovCiAgICBpbml0X2luZndhaXRfc3RhdGUgKCk7CiAgCkBAIC0xNDUs MTIgKzE0NSwxMiBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMKICsg ICAgcmVzdW1lX3N0ZXAgPSBSRVNVTUVfU1RFUF9ORUVERUQ7CiArCiAgICAvKiBSZXN1bWUgaW5m ZXJpb3IuICAqLwotLSAgcmVzdW1lIChvbmVwcm9jIHx8IHN0ZXAgfHwgYnBzdGF0X3Nob3VsZF9z dGVwICgpLCB0cC0+c3RvcF9zaWduYWwpOwotKyAgcmVzdW1lIChyZXN1bWVfc3RlcCwgdHAtPnN0 b3Bfc2lnbmFsKTsKKy0gIHJlc3VtZSAob25lcHJvYyB8fCBzdGVwIHx8IGJwc3RhdF9zaG91bGRf c3RlcCAoKSwgdHAtPnN1c3BlbmQuc3RvcF9zaWduYWwpOworKyAgcmVzdW1lIChyZXN1bWVfc3Rl cCwgdHAtPnN1c3BlbmQuc3RvcF9zaWduYWwpOwogIAogICAgLyogV2FpdCBmb3IgaXQgdG8gc3Rv cCAoaWYgbm90IHN0YW5kYWxvbmUpCiAgICAgICBhbmQgaW4gYW55IGNhc2UgZGVjb2RlIHdoeSBp dCBzdG9wcGVkLCBhbmQgYWN0IGFjY29yZGluZ2x5LiAgKi8KLUBAIC00ODU5LDEzICs0ODY3LDE4 IEBAIGluZnJ1bjogbm90IHN3aXRjaGluZyBiYWNrIHRvIHN0ZXBwZWQgdGgKK0BAIC00OTMzLDE0 ICs0OTQxLDE5IEBAIGluZnJ1bjogbm90IHN3aXRjaGluZyBiYWNrIHRvIHN0ZXBwZWQgdGgKICAK ICAvKiBJcyB0aHJlYWQgVFAgaW4gdGhlIG1pZGRsZSBvZiBzaW5nbGUtc3RlcHBpbmc/ICAqLwog IApAQCAtMTU4LDEyICsxNTgsMTQgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2lu ZnJ1bi5jCiArc3RhdGljIGVudW0gcmVzdW1lX3N0ZXAKICBjdXJyZW50bHlfc3RlcHBpbmcgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHApCiAgewotLSAgcmV0dXJuICgodHAtPnN0ZXBfcmFuZ2VfZW5k ICYmIHRwLT5zdGVwX3Jlc3VtZV9icmVha3BvaW50ID09IE5VTEwpCi0tIAkgIHx8IHRwLT50cmFw X2V4cGVjdGVkCi0tIAkgIHx8IHRwLT5zdGVwcGluZ190aHJvdWdoX3NvbGliX2FmdGVyX2NhdGNo Ci0tIAkgIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSk7Ci0rICBpZiAoKHRwLT5zdGVwX3Jhbmdl X2VuZCAmJiB0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQotKyAgICAgIHx8IHRw LT50cmFwX2V4cGVjdGVkCistICByZXR1cm4gKCh0cC0+Y29udHJvbC5zdGVwX3JhbmdlX2VuZAor LQkgICAmJiB0cC0+Y29udHJvbC5zdGVwX3Jlc3VtZV9icmVha3BvaW50ID09IE5VTEwpCistCSAg fHwgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZAorLQkgIHx8IHRwLT5zdGVwcGluZ190aHJvdWdo X3NvbGliX2FmdGVyX2NhdGNoCistCSAgfHwgYnBzdGF0X3Nob3VsZF9zdGVwICgpKTsKKysgIGlm ICgodHAtPmNvbnRyb2wuc3RlcF9yYW5nZV9lbmQKKysgICAgICAgJiYgdHAtPmNvbnRyb2wuc3Rl cF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQorKyAgICAgIHx8IHRwLT5jb250cm9sLnRyYXBf ZXhwZWN0ZWQKICsgICAgICB8fCB0cC0+c3RlcHBpbmdfdGhyb3VnaF9zb2xpYl9hZnRlcl9jYXRj aCkKICsgICAgcmV0dXJuIFJFU1VNRV9TVEVQX1VTRVI7CiArCkBAIC0xNzQsMTEgKzE3NiwxMSBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMKICB9CiAgCiAgLyogUmV0 dXJucyB0cnVlIGlmIGFueSB0aHJlYWQgKmJ1dCogdGhlIG9uZSBwYXNzZWQgaW4gImRhdGEiIGlz IGluIHRoZQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCitJbmRl eDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDc6NTM6 NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0 LmMJMjAxMC0xMS0xNiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yODgzLDcgKzI4ODMs MTAgQEAgY291bnRfZXZlbnRzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKgorLS0tIGdkYi03 LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0wMS0wMSAwMToyNToxNi4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9saW51eC1uYXQuYwky MDExLTAxLTAxIDAxOjI1OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTI5MDgsNyArMjkwOCwxMCBA QCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqCiAgc3RhdGljIGludAog IHNlbGVjdF9zaW5nbGVzdGVwX2x3cF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwgdm9p ZCAqZGF0YSkKICB7CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvbGludXgtbmF0LmMKICAgICAgcmV0dXJuIDE7CiAgICBlbHNlCiAgICAgIHJldHVy biAwOwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5oCitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvbGludXgtbmF0LmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDctMjcgMjI6NTE6Mzcu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmgJ MjAxMC0xMS0xNiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAx MjMxLm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMDEtMDEgMDE6MjU6MTYuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvbGludXgtbmF0LmgJMjAxMS0wMS0wMSAw MToyNToxNi4wMDAwMDAwMDAgKzAxMDAKIEBAIC01NSw4ICs1NSw4IEBAIHN0cnVjdCBsd3BfaW5m bwogICAgLyogSWYgbm9uLXplcm8sIGEgcGVuZGluZyB3YWl0IHN0YXR1cy4gICovCiAgICBpbnQg c3RhdHVzOwoKZGlmZiAtLWdpdCBhL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2ggYi9n ZGItNi44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoCmluZGV4IGVkMjJkNmIuLjc5YTJmNDcgMTAw NjQ0Ci0tLSBhL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKKysrIGIvZ2RiLTYuOC1x dWl0LW5ldmVyLWFib3J0cy5wYXRjaApAQCAtNSwxMSArNSwxMSBAQCBTb21lIG9mIHRoZSB0aHJl YWRzIG1heSBub3QgYmUgcHJvcGVybHkgUFRSQUNFX0RFVEFDSGVkIHdoaWNoIGh1cnRzIGlmIHRo ZXkKIHNob3VsZCBoYXZlIGJlZW4gZGV0YWNoZWQgd2l0aCBTSUdTVE9QIChhcyB0aGV5IGFyZSBh Y2NpZGVudGFsbHkgbGVmdCBydW5uaW5nCiBvbiB0aGUgZGVidWdnZXIgdGVybWluYXRpb24pLgog Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvZGVmcy5oCitJbmRleDogZ2RiLTcuMi41 MC4yMDEwMTIzMS9nZGIvZGVmcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA4MTEy OC5vcmlnL2dkYi9kZWZzLmgJMjAwOC0xMS0yNyAxMDoyMzowMS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9kZWZzLmgJMjAwOC0xMi0wNiAyMTo0OTozMi4wMDAw MDAwMDAgKzAxMDAKLUBAIC0xNTUsNiArMTU1LDcgQEAgZXh0ZXJuIGNoYXIgKmdkYl9zeXNyb290 OworLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvZGVmcy5oCTIwMTEtMDEtMDEgMDE6 MDA6MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvZGVmcy5o CTIwMTEtMDEtMDEgMDE6MDk6MTcuMDAwMDAwMDAwICswMTAwCitAQCAtMTY1LDYgKzE2NSw3IEBA IGV4dGVybiBjaGFyICpweXRob25fbGliZGlyOwogIGV4dGVybiBjaGFyICpkZWJ1Z19maWxlX2Rp cmVjdG9yeTsKICAKICBleHRlcm4gaW50IHF1aXRfZmxhZzsKQEAgLTE3LDcgKzE3LDcgQEAgSW5k ZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL2RlZnMuaAogIGV4dGVybiBpbnQgaW1tZWRpYXRl X3F1aXQ7CiAgZXh0ZXJuIGludCBzZXZlbmJpdF9zdHJpbmdzOwogIAotQEAgLTE2OCw3ICsxNjks NyBAQCBleHRlcm4gdm9pZCBxdWl0ICh2b2lkKTsKK0BAIC0xNzgsNyArMTc5LDcgQEAgZXh0ZXJu IHZvaWQgcXVpdCAodm9pZCk7CiAgICAgbmVlZGVkLiAqLwogIAogICNkZWZpbmUgUVVJVCB7IFwK QEAgLTI2LDI0ICsyNiwyNCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvZGVmcy5o CiAgICBpZiAoZGVwcmVjYXRlZF9pbnRlcmFjdGl2ZV9ob29rKSBkZXByZWNhdGVkX2ludGVyYWN0 aXZlX2hvb2sgKCk7IFwKICB9CiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvZXZl bnQtdG9wLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9ldmVudC10b3AuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAw OC0xMi0wNCAxMDozNDozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4 L2dkYi9ldmVudC10b3AuYwkyMDA4LTEyLTA2IDIxOjQ5OjA3LjAwMDAwMDAwMCArMDEwMAotQEAg LTkzOSw3ICs5MzksNyBAQCBhc3luY19yZXF1ZXN0X3F1aXQgKGdkYl9jbGllbnRfZGF0YSBhcmcp CistLS0gZ2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDExLTAxLTAx IDAxOjA3OjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2V2 ZW50LXRvcC5jCTIwMTEtMDEtMDEgMDE6MDk6MzkuMDAwMDAwMDAwICswMTAwCitAQCAtOTA0LDcg KzkwNCw3IEBAIGFzeW5jX3JlcXVlc3RfcXVpdCAoZ2RiX2NsaWVudF9kYXRhIGFyZykKICAgICAg IGlzIG5vIHJlYXNvbiB0byBjYWxsIHF1aXQgYWdhaW4gaGVyZSwgdW5sZXNzIGltbWVkaWF0ZV9x dWl0IGlzCi0gICAgICBzZXQuKi8KKyAgICAgIHNldC4gICovCiAgCiAtICBpZiAocXVpdF9mbGFn IHx8IGltbWVkaWF0ZV9xdWl0KQogKyAgaWYgKChxdWl0X2ZsYWcgfHwgaW1tZWRpYXRlX3F1aXQp ICYmICFxdWl0X2ZsYWdfY2xlYW51cCkKICAgICAgcXVpdCAoKTsKICB9CiAgCi1JbmRleDogZ2Ri LTYuOC41MC4yMDA4MTEyOC9nZGIvdG9wLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dk Yi90b3AuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwODExMjgub3JpZy9nZGIvdG9w LmMJMjAwOC0xMi0wNCAxMDoyMzoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIw MDgxMTI4L2dkYi90b3AuYwkyMDA4LTEyLTA2IDIxOjQ5OjA3LjAwMDAwMDAwMCArMDEwMAotQEAg LTEyOTksNyArMTI5OSw5IEBAIHF1aXRfZm9yY2UgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkK Ky0tLSBnZGItNy4yLjUwLjIwMTAxMjMxLm9yaWcvZ2RiL3RvcC5jCTIwMTEtMDEtMDEgMDE6MDA6 MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdG9wLmMJMjAx MS0wMS0wMSAwMTowOToxNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjU0LDcgKzEyNTQsOSBAQCBx dWl0X2ZvcmNlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBxdC5hcmdzID0gYXJnczsK ICAgIHF0LmZyb21fdHR5ID0gZnJvbV90dHk7CiAgCkBAIC01NCwxMSArNTQsMTEgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3RvcC5jCiAgICBjYXRjaF9lcnJvcnMgKHF1aXRfdGFy Z2V0LCAmcXQsCiAgCSAgICAgICAgIlF1aXR0aW5nOiAiLCBSRVRVUk5fTUFTS19BTEwpOwogIAot SW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3V0aWxzLmMKK0luZGV4OiBnZGItNy4yLjUw LjIwMTAxMjMxL2dkYi91dGlscy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA4MTEy OC5vcmlnL2dkYi91dGlscy5jCTIwMDgtMTItMDQgMTA6MzE6MDAuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdXRpbHMuYwkyMDA4LTEyLTA2IDIxOjQ5OjA3LjAw MDAwMDAwMCArMDEwMAotQEAgLTExNCw2ICsxMTQsMTEgQEAgaW50IGpvYl9jb250cm9sOworLS0t IGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvdXRpbHMuYwkyMDExLTAxLTAxIDAxOjAwOjI5 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL3V0aWxzLmMJMjAx MS0wMS0wMSAwMTowOToxNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjEsNiArMTIxLDExIEBAIGlu dCBqb2JfY29udHJvbDsKICAKICBpbnQgcXVpdF9mbGFnOwogIAoKZGlmZiAtLWdpdCBhL2dkYi1h cmNoZXItYWRhLnBhdGNoIGIvZ2RiLWFyY2hlci1hZGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDEyODExMmIuLjAwMDAwMDAKLS0tIGEvZ2RiLWFyY2hlci1hZGEucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1Gcm9tOiBLZWl0aCBTZWl0eiA8a2VpdGhz QHJlZGhhdC5jb20+Ci1NZXNzYWdlLUlEOiA8NEI3RjIwN0EuNzAyMDEwMkByZWRoYXQuY29tPgot Ci1bIHJlYWRfcGFydGlhbF9kaWUgcGFydCBkcm9wcGVkIGluIHRoZSBwb3J0IHRvIFJhd2hpZGUg XQotCi0tLS0gZ2RiLTcuMC4xLW9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAyLTIwIDAxOjA2 OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAt MDItMjAgMDE6MDg6MjguMDAwMDAwMDAwICswMTAwCi1AQCAtOTkyNCw5ICs5OTI4LDEzIEBAIGR3 YXJmMl9jYW5vbmljYWxpemVfbmFtZSAoY2hhciAqbmFtZSwgc3QKLSBzdGF0aWMgY2hhciAqCi0g ZHdhcmYyX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSB7Ci0tICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotKyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 ciA9IE5VTEw7Ci0rCi0rICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2FkYSkKLSsgICAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0g Ci0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbmFtZSwgY3UpOwotKyAgaWYgKCFh dHRyKQotKyAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbmFtZSwgY3UpOwotICAg aWYgKCFhdHRyIHx8ICFEV19TVFJJTkcgKGF0dHIpKQotICAgICByZXR1cm4gTlVMTDsKLSAKCmRp ZmYgLS1naXQgYS9nZGItYXJjaGVyLnBhdGNoIGIvZ2RiLWFyY2hlci5wYXRjaAppbmRleCA5YzEy YTdmLi4wNmU3NmEwIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLnBhdGNoCisrKyBiL2dkYi1hcmNo ZXIucGF0Y2gKQEAgLTIsNyArMiw3IEBAIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Q cm9qZWN0QXJjaGVyCiBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvQXJjaGVyQnJhbmNo TWFuYWdlbWVudAogCiBHSVQgc25hcHNob3Q6Ci1jb21taXQgZTc3NDAyMzczZDQzZWMyMzY2MWEx NmExMzRjOTRlNjExMmI5ZDAzMAorY29tbWl0IDE4ZDNkNWQ1NjRlYWM3YWQxMGJjOTcyYzk1N2U2 MTU5YTQyNzZkM2YKIAogYnJhbmNoIGBhcmNoZXInIC0gdGhlIG1lcmdlIG9mIGJyYW5jaGVzOgog YXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhCkBAIC0xNCwxMCArMTQsMTAgQEAgYXJjaGVyLWphbmty YXRvY2h2aWwtaWZ1bmMKIAogCiBkaWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRh LWxhbmcuYwotaW5kZXggZWE3MWVhMi4uY2NkN2IyOSAxMDA2NDQKK2luZGV4IDNlZmZmMmUuLjk5 MDk3YmYgMTAwNjQ0CiAtLS0gYS9nZGIvYWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMK LUBAIC0xMTI1MCw2ICsxMTI1MCw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCitAQCAtMTEzNTYsNiArMTEz NTYsNyBAQCBhZGFfb3BlcmF0b3JfbGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgcGMsIGludCAqb3BsZW5wLAogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hl Y2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC0yNSw3ICsyNSw3IEBAIGlu ZGV4IGVhNzFlYTIuLmNjZDdiMjkgMTAwNjQ0CiAgCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAogIAkJICAgIHZvaWQgKmRhdGEp CiAgewotQEAgLTExMjY0LDEyICsxMTI2NSwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTEzNzAsMTIgKzExMzcxLDE1IEBAIGFk YV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJYnJl YWs7CiAgCiAgICAgICAgZGVmYXVsdDoKQEAgLTQ0LDQwICs0NCwyMjkgQEAgaW5kZXggZWE3MWVh Mi4uY2NkN2IyOSAxMDA2NDQKICAgICAgcmV0dXJuIDE7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2Ft ZDY0LWxpbnV4LW5hdC5jIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi1pbmRleCAxNmU5N2EyLi4z YTVkNTdlIDEwMDY0NAoraW5kZXggMTZlOTdhMi4uNzg0YTQ3NiAxMDA2NDQKIC0tLSBhL2dkYi9h bWQ2NC1saW51eC1uYXQuYwogKysrIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi1AQCAtMzc1LDYg KzM3NSwyMCBAQCBhbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFz aykKLSAgICAgfQorQEAgLTI2NSwxOCArMjY1LDExIEBAIGFtZDY0X2xpbnV4X3N0b3JlX2luZmVy aW9yX3JlZ2lzdGVycyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKyAMCisgLyogU3VwcG9ydCBm b3IgZGVidWcgcmVnaXN0ZXJzLiAgKi8KKyAKKy1zdGF0aWMgdW5zaWduZWQgbG9uZyBhbWQ2NF9s aW51eF9kcltEUl9DT05UUk9MICsgMV07CistCisgc3RhdGljIHVuc2lnbmVkIGxvbmcKKy1hbWQ2 NF9saW51eF9kcl9nZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtKQorK2FtZDY0X2xpbnV4X2Ry X2dldCAoaW50IHRpZCwgaW50IHJlZ251bSkKKyB7CistICBpbnQgdGlkOworICAgdW5zaWduZWQg bG9uZyB2YWx1ZTsKKyAKKy0gIHRpZCA9IFRJREdFVCAocHRpZCk7CistICBpZiAodGlkID09IDAp CistICAgIHRpZCA9IFBJREdFVCAocHRpZCk7CistCisgICAvKiBGSVhNRToga2V0dGVuaXMvMjAw MS0wMy0yNzogQ2FsbGluZyBwZXJyb3Jfd2l0aF9uYW1lIGlmIHRoZQorICAgICAgcHRyYWNlIGNh bGwgZmFpbHMgYnJlYWtzIGRlYnVnZ2luZyByZW1vdGUgdGFyZ2V0cy4gIFRoZSBjb3JyZWN0Cisg ICAgICB3YXkgdG8gZml4IHRoaXMgaXMgdG8gYWRkIHRoZSBoYXJkd2FyZSBicmVha3BvaW50IGFu ZCB3YXRjaHBvaW50CitAQCAtMjk4LDE0ICsyOTEsOCBAQCBhbWQ2NF9saW51eF9kcl9nZXQgKHB0 aWRfdCBwdGlkLCBpbnQgcmVnbnVtKQorIC8qIFNldCBkZWJ1ZyByZWdpc3RlciBSRUdOVU0gdG8g VkFMVUUgaW4gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KKyAKKyBzdGF0aWMgdm9pZAor LWFtZDY0X2xpbnV4X2RyX3NldCAocHRpZF90IHB0aWQsIGludCByZWdudW0sIHVuc2lnbmVkIGxv bmcgdmFsdWUpCisrYW1kNjRfbGludXhfZHJfc2V0IChpbnQgdGlkLCBpbnQgcmVnbnVtLCB1bnNp Z25lZCBsb25nIHZhbHVlKQorIHsKKy0gIGludCB0aWQ7CistCistICB0aWQgPSBUSURHRVQgKHB0 aWQpOworLSAgaWYgKHRpZCA9PSAwKQorLSAgICB0aWQgPSBQSURHRVQgKHB0aWQpOworLQorICAg ZXJybm8gPSAwOworICAgcHRyYWNlIChQVFJBQ0VfUE9LRVVTRVIsIHRpZCwKKyAJICBvZmZzZXRv ZiAoc3RydWN0IHVzZXIsIHVfZGVidWdyZWdbcmVnbnVtXSksIHZhbHVlKTsKK0BAIC0zMTMsMzUg KzMwMCw5NiBAQCBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1 bnNpZ25lZCBsb25nIHZhbHVlKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3 cml0ZSBkZWJ1ZyByZWdpc3RlciIpKTsKICB9CiAgCi0rLyogU2VlIGkzODZfZHJfbG93X3R5cGUu ZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJvbAot KyAgIG9yIGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2FkZHIgYXMgdGhleSB3b3VsZCBtb2RpZnkgdGhl IHJlZ2lzdGVyIGNhY2hlCi0rICAgKGFtZDY0X2xpbnV4X2RyKS4gICovCistLyogU2V0IERSX0NP TlRST0wgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCisrLyogSGVscGVyIGZv ciBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJvbC4gICovCisrCisrc3RhdGljIHZvaWQKKythbWQ2 NF9saW51eF9kcl9zZXRfY29udHJvbF9jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqY29udHJvbF92 b2lkcCkKKyt7CisrICB1bnNpZ25lZCBsb25nIGNvbnRyb2wgPSAqKHVuc2lnbmVkIGxvbmcgKikg Y29udHJvbF92b2lkcDsKKysKKysgIGFtZDY0X2xpbnV4X2RyX3NldCAodGlkLCBEUl9DT05UUk9M LCBjb250cm9sKTsKKyt9CisrCisrc3RhdGljIHZvaWQgYW1kNjRfbGludXhfZHJfc2V0X2FkZHIg KGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKTsKKysKKysvKiBTZXQgRFJfQ09OVFJPTCB0byBB RERSIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuICAqLworIAorIHN0YXRpYyB2b2lk CisgYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKKyB7 CistICBzdHJ1Y3QgbHdwX2luZm8gKmxwOworLSAgcHRpZF90IHB0aWQ7CisrICBpbnQgaW5mZXJp b3JfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKKysgIHN0cnVjdCBpbmZlcmlv ciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKKysKKysgIC8qIEFyZSB3ZSBkZXRhY2hpbmcg YnJlYWtwb2ludHMgZnJvbSBhIGZvcmstZWQgY2hpbGQ/CisrICAgICBTZWUgbGludXhfbmF0X2l0 ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIGZvciB0aGUgZm9yay1lZCBjaGlsZCBkZXNjcmlwdGlvbi4K KysgICAgIFRoZSBpMzg2IGNvdW50ZXJwYXJ0IGlzIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wu ICAqLworKyAgaWYgKGluZi0+cGlkICE9IGluZmVyaW9yX3BpZCkKKysgICAgeworKyAgICAgIHN0 cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgpOwor KyAgICAgIGludCBpOworKworKyAgICAgIC8qIFRoZXJlIHdlcmUgdHdvIGNoYW5nZXMgaW4gTGlu dXgga2VybmVsIDIuNi4zMyBieSB0aGUgY29tbWl0OgorKyAgICAgICAgIDcyZjY3NGQyMDNjZDIz MDQyNjQzN2NkY2Y3ZGQ2ZjY4MWRhZDhiMGQKKysKKysgICAgICAgICAoMSkgQWZ0ZXIgZm9yay92 Zm9yay9jbG9uZSB0aGUgbmV3IHRhc2sgbm8gbG9uZ2VyIGluaGVyaXRzIHRoZSBkZWJ1ZworKwkg cmVnaXN0ZXJzLiAgSXQgaGFzIHRoZW0gemVyb2VkIGluc3RlYWQuICBFaXRoZXIgY2FzZSBpcyBP SyBmb3IgR0RCIGFzCisrCSBHREIgYWxyZWFkeSByZWdpc3RlcnMgYSBmaXggdXAgYnkgbGludXhf bmF0X3NldF9uZXdfdGhyZWFkLgorKworKwkgKDIpIElmIHlvdSBlbmFibGUgYSBicmVha3BvaW50 IGJ5IHRoZSBDT05UUk9MIGJpdHMgeW91IGhhdmUgYWxyZWFkeQorKwkgd3JpdHRlbiBpdHMgQURE UkVTUy4gIE90aGVyd2lzZSBMaW51eCBrZXJuZWwgd2lsbCByZXBvcnQgRUlOVkFMLgorKwkgRm9y IHRoaXMgY2FzZSB0aGUgd29ya2Fyb3VuZCBoZXJlIGVuc3VyZXMgdGhhdCBkdXJpbmcgcmVzZXR0 aW5nCisrCSAoZGV0YWNoaW5nKSB3YXRjaHBvaW50cyBmb3IgYSBmb3JrLWVkIGNoaWxkIHdlIGNh biBzZXQgQ09OVFJPTAorKwkgYXJiaXRyYXJpbHkgYXMgdGhlIGFkZHJlc3NlcyBnZXQgcHJlLXNl dCBoZXJlIGp1c3QgdG8gYmUgc3VyZS4KKysKKysJIFRoZSBzZWNvbmQgaXNzdWUgaXMgaG9wZWZ1 bGx5IGdvaW5nIHRvIGJlIGZpeGVkIGluIExpbnV4IGtlcm5lbDoKKysJIGh0dHBzOi8vYnVnemls bGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjYwMjA0ICAqLworKworKyAgICAgIGlmICgh ZHJfbWlycm9yLT5hZGRyX3ByZXNldCkKKysJeworKwkgIGRyX21pcnJvci0+YWRkcl9wcmVzZXQg PSAxOworKworKwkgIGZvciAoaSA9IDA7IGkgPCBEUl9MQVNUQUREUiAtIERSX0ZJUlNUQUREUjsg aSsrKQorKwkgICAgYW1kNjRfbGludXhfZHJfc2V0X2FkZHIgKGksIGRyX21pcnJvci0+YWRkcltp XSk7CisrCX0KKysgICAgfQorKworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3Bz IChhbWQ2NF9saW51eF9kcl9zZXRfY29udHJvbF9jYWxsYmFjaywKKysJCQkJICAgICAmY29udHJv bCk7CisrfQorKworKy8qIEhlbHBlciBmb3IgYW1kNjRfbGludXhfZHJfc2V0X2FkZHIuICAqLwor KworK3N0cnVjdCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9kYXRhCisrICB7CisrICAgIGludCBy ZWdudW07CisrICAgIENPUkVfQUREUiBhZGRyOworKyAgfTsKICsKICtzdGF0aWMgdm9pZAotK2Ft ZDY0X2xpbnV4X2RyX2RldGFjaCAodm9pZCkKKythbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9jYWxs YmFjayAoaW50IHRpZCwgdm9pZCAqZGF0YXBfdm9pZHApCiArewotKyAgaW50IHJlZ251bTsKKysg IGNvbnN0IHN0cnVjdCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9kYXRhICpkYXRhcCA9IGRhdGFw X3ZvaWRwOworIAorLSAgYW1kNjRfbGludXhfZHJbRFJfQ09OVFJPTF0gPSBjb250cm9sOworLSAg QUxMX0xXUFMgKGxwLCBwdGlkKQorLSAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERSX0NP TlRST0wsIGNvbnRyb2wpOworKyAgYW1kNjRfbGludXhfZHJfc2V0ICh0aWQsIERSX0ZJUlNUQURE UiArIGRhdGFwLT5yZWdudW0sIGRhdGFwLT5hZGRyKTsKKyB9CisgCistLyogU2V0IGFkZHJlc3Mg UkVHTlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8K KysvKiBTZXQgYWRkcmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMg b2YgQ1VSUkVOVF9JTkZFUklPUi4KKysgICAqLworIAorIHN0YXRpYyB2b2lkCisgYW1kNjRfbGlu dXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorIHsKKy0gIHN0cnVj dCBsd3BfaW5mbyAqbHA7CistICBwdGlkX3QgcHRpZDsKKysgIHN0cnVjdCBhbWQ2NF9saW51eF9k cl9zZXRfYWRkcl9kYXRhIGRhdGE7CisgCisgICBnZGJfYXNzZXJ0IChyZWdudW0gPj0gMCAmJiBy ZWdudW0gPD0gRFJfTEFTVEFERFIgLSBEUl9GSVJTVEFERFIpOworIAorLSAgYW1kNjRfbGludXhf ZHJbRFJfRklSU1RBRERSICsgcmVnbnVtXSA9IGFkZHI7CistICBBTExfTFdQUyAobHAsIHB0aWQp CistICAgIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfRklSU1RBRERSICsgcmVnbnVtLCBh ZGRyKTsKKysgIGRhdGEucmVnbnVtID0gcmVnbnVtOworKyAgZGF0YS5hZGRyID0gYWRkcjsKKysg IGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYW1kNjRfbGludXhfZHJfc2V0X2Fk ZHJfY2FsbGJhY2ssICZkYXRhKTsKKyB9CisgCistLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJv IGJhc2VkKSB0byB6ZXJvIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KKysvKiBTZXQgYWRk cmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIHplcm8gaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9J TkZFUklPUi4KKysgICAqLworIAorIHN0YXRpYyB2b2lkCisgYW1kNjRfbGludXhfZHJfcmVzZXRf YWRkciAoaW50IHJlZ251bSkKK0BAIC0zNTQsMzcgKzQwMiw1NCBAQCBhbWQ2NF9saW51eF9kcl9y ZXNldF9hZGRyIChpbnQgcmVnbnVtKQorIHN0YXRpYyB1bnNpZ25lZCBsb25nCisgYW1kNjRfbGlu dXhfZHJfZ2V0X3N0YXR1cyAodm9pZCkKKyB7CistICByZXR1cm4gYW1kNjRfbGludXhfZHJfZ2V0 IChpbmZlcmlvcl9wdGlkLCBEUl9TVEFUVVMpOworKyAgaW50IHRpZDsKKysKKysgIHRpZCA9IFRJ REdFVCAoaW5mZXJpb3JfcHRpZCk7CisrICBpZiAodGlkID09IDApCisrICAgIHRpZCA9IFBJREdF VCAoaW5mZXJpb3JfcHRpZCk7CisrCisrICByZXR1cm4gYW1kNjRfbGludXhfZHJfZ2V0ICh0aWQs IERSX1NUQVRVUyk7CisgfQorIAorLS8qIFVuc2V0IE1BU0sgYml0cyBpbiBEUl9TVEFUVVMgaW4g YWxsIExXUHMgb2YgTFdQX0xJU1QuICAqLworKy8qIEhlbHBlciBmb3IgYW1kNjRfbGludXhfZHJf dW5zZXRfc3RhdHVzLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLWFtZDY0X2xpbnV4X2RyX3Vuc2V0 X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorK2FtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1 c19jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqbWFza192b2lkcCkKKyB7CistICBzdHJ1Y3QgbHdw X2luZm8gKmxwOworLSAgcHRpZF90IHB0aWQ7CistCistICBBTExfTFdQUyAobHAsIHB0aWQpCist ICAgIHsKKy0gICAgICB1bnNpZ25lZCBsb25nIHZhbHVlOworKyAgdW5zaWduZWQgbG9uZyBtYXNr ID0gKih1bnNpZ25lZCBsb25nICopIG1hc2tfdm9pZHA7CisrICB1bnNpZ25lZCBsb25nIHZhbHVl OworICAgICAgIAorLSAgICAgIHZhbHVlID0gYW1kNjRfbGludXhfZHJfZ2V0IChwdGlkLCBEUl9T VEFUVVMpOworLSAgICAgIHZhbHVlICY9IH5tYXNrOworLSAgICAgIGFtZDY0X2xpbnV4X2RyX3Nl dCAocHRpZCwgRFJfU1RBVFVTLCB2YWx1ZSk7CistICAgIH0KKysgIHZhbHVlID0gYW1kNjRfbGlu dXhfZHJfZ2V0ICh0aWQsIERSX1NUQVRVUyk7CisrICB2YWx1ZSAmPSB+bWFzazsKKysgIGFtZDY0 X2xpbnV4X2RyX3NldCAodGlkLCBEUl9TVEFUVVMsIHZhbHVlKTsKKyB9CisgCisrLyogVW5zZXQg TUFTSyBiaXRzIGluIERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBDVVJSRU5UX0lORkVSSU9SLiAg Ki8KICsKLSsgIGFtZDY0X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgRFJfQ09OVFJPTCwg MCk7Ci0rICBhbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXMgKH4wVUwpOwotKyAgZm9yIChyZWdu dW0gPSBEUl9GSVJTVEFERFI7IHJlZ251bSA8PSBEUl9MQVNUQUREUjsgcmVnbnVtKyspCi0rICAg IGFtZDY0X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgcmVnbnVtLCAwKTsKKytzdGF0aWMg dm9pZAorK2FtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQor K3sKKysgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYW1kNjRfbGludXhfZHJf dW5zZXRfc3RhdHVzX2NhbGxiYWNrLAorKwkJCQkgICAgICZtYXNrKTsKICt9CiAgCiAgc3RhdGlj IHZvaWQKICBhbWQ2NF9saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKLUBAIC04MDAsNiAr ODE0LDcgQEAgX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0ICh2b2lkKQotICAgaTM4Nl9kcl9s b3cucmVzZXRfYWRkciA9IGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2FkZHI7Ci0gICBpMzg2X2RyX2xv dy5nZXRfc3RhdHVzID0gYW1kNjRfbGludXhfZHJfZ2V0X3N0YXR1czsKLSAgIGkzODZfZHJfbG93 LnVuc2V0X3N0YXR1cyA9IGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKLSsgIGkzODZfZHJf bG93LmRldGFjaCA9IGFtZDY0X2xpbnV4X2RyX2RldGFjaDsKLSAgIGkzODZfc2V0X2RlYnVnX3Jl Z2lzdGVyX2xlbmd0aCAoOCk7Ci0gCi0gICAvKiBPdmVycmlkZSB0aGUgR05VL0xpbnV4IGluZmVy aW9yIHN0YXJ0dXAgaG9vay4gICovCisgeworLSAgaW50IGk7CisrICBzdHJ1Y3QgaTM4Nl9kcl9t aXJyb3IgKmRyX21pcnJvciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKKysgIGludCBpLCB0aWQ7 CisrCisrICAvKiBWZXJpZnkgRFJfTUlSUk9SIGlzIHZhbGlkLiAgKi8KKysgIGdkYl9hc3NlcnQg KFBJREdFVCAocHRpZCkgPT0gUElER0VUIChpbmZlcmlvcl9wdGlkKSk7CisrCisrICB0aWQgPSBU SURHRVQgKHB0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURHRVQgKHB0aWQp OworIAorLSAgZm9yIChpID0gRFJfRklSU1RBRERSOyBpIDw9IERSX0xBU1RBRERSOyBpKyspCist ICAgIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZCwgaSwgYW1kNjRfbGludXhfZHJbaV0pOworKyAg Zm9yIChpID0gMDsgaSA8IERSX0xBU1RBRERSIC0gRFJfRklSU1RBRERSOyBpKyspCisrICAgIGFt ZDY0X2xpbnV4X2RyX3NldCAodGlkLCBEUl9GSVJTVEFERFIgKyBpLCBkcl9taXJyb3ItPmFkZHJb aV0pOworIAorLSAgYW1kNjRfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBhbWQ2NF9s aW51eF9kcltEUl9DT05UUk9MXSk7CisrICBhbWQ2NF9saW51eF9kcl9zZXQgKHRpZCwgRFJfQ09O VFJPTCwgZHJfbWlycm9yLT5jb250cm9sKTsKKyB9CisgDAorIAogZGlmZiAtLWdpdCBhL2dkYi9i bG9jay5jIGIvZ2RiL2Jsb2NrLmMKLWluZGV4IDQ4YWMyMWIuLmZmY2M5N2YgMTAwNjQ0CitpbmRl eCBmOTMyZDQxLi42ZTJjZDg4IDEwMDY0NAogLS0tIGEvZ2RiL2Jsb2NrLmMKICsrKyBiL2dkYi9i bG9jay5jCiBAQCAtMzIxLDMgKzMyMSwyMSBAQCBhbGxvY2F0ZV9ibG9jayAoc3RydWN0IG9ic3Rh Y2sgKm9ic3RhY2spCkBAIC0xMTQsMjYgKzMwMywxOCBAQCBpbmRleCA3ZWVkYjZjLi5hNTE3ZTgw IDEwMDY0NAogKwogICNlbmRpZiAvKiBCTE9DS19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2Nr ZnJhbWUuYyBiL2dkYi9ibG9ja2ZyYW1lLmMKLWluZGV4IDAzNDhiZjQuLmYwMWQwZWUgMTAwNjQ0 CitpbmRleCAzNjZiZWRkLi45N2Y0MThhIDEwMDY0NAogLS0tIGEvZ2RiL2Jsb2NrZnJhbWUuYwog KysrIGIvZ2RiL2Jsb2NrZnJhbWUuYwotQEAgLTM4LDYgKzM4LDcgQEAKLSAjaW5jbHVkZSAiYmxv Y2suaCIKLSAjaW5jbHVkZSAiaW5saW5lLWZyYW1lLmgiCi0gI2luY2x1ZGUgInBzeW10YWIuaCIK LSsjaW5jbHVkZSAiZWxmLWJmZC5oIgotIAotIC8qIFJldHVybiB0aGUgaW5uZXJtb3N0IGxleGlj YWwgYmxvY2sgaW4gZXhlY3V0aW9uCi0gICAgaW4gYSBzcGVjaWZpZWQgc3RhY2sgZnJhbWUuICBU aGUgZnJhbWUgYWRkcmVzcyBpcyBhc3N1bWVkIHZhbGlkLgotQEAgLTE1OSw2ICsxNjAsNyBAQCBz dGF0aWMgQ09SRV9BRERSIGNhY2hlX3BjX2Z1bmN0aW9uX2xvdyA9IDA7CitAQCAtMTYwLDYgKzE2 MCw3IEBAIHN0YXRpYyBDT1JFX0FERFIgY2FjaGVfcGNfZnVuY3Rpb25fbG93ID0gMDsKICBzdGF0 aWMgQ09SRV9BRERSIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwogIHN0YXRpYyBjaGFyICpj YWNoZV9wY19mdW5jdGlvbl9uYW1lID0gMDsKICBzdGF0aWMgc3RydWN0IG9ial9zZWN0aW9uICpj YWNoZV9wY19mdW5jdGlvbl9zZWN0aW9uID0gTlVMTDsKICtzdGF0aWMgaW50IGNhY2hlX3BjX2Z1 bmN0aW9uX2lzX2dudV9pZnVuYyA9IDA7CiAgCi0gLyogQ2xlYXIgY2FjaGUsIGUuZy4gd2hlbiBz eW1ib2wgdGFibGUgaXMgZGlzY2FyZGVkLiAqLworIC8qIENsZWFyIGNhY2hlLCBlLmcuIHdoZW4g c3ltYm9sIHRhYmxlIGlzIGRpc2NhcmRlZC4gICovCiAgCi1AQCAtMTY5LDYgKzE3MSw3IEBAIGNs ZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKQorQEAgLTE3MCw2ICsxNzEsNyBAQCBjbGVhcl9w Y19mdW5jdGlvbl9jYWNoZSAodm9pZCkKICAgIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwog ICAgY2FjaGVfcGNfZnVuY3Rpb25fbmFtZSA9IChjaGFyICopIDA7CiAgICBjYWNoZV9wY19mdW5j dGlvbl9zZWN0aW9uID0gTlVMTDsKQEAgLTE0MSw3ICszMjIsNyBAQCBpbmRleCAwMzQ4YmY0Li5m MDFkMGVlIDEwMDY0NAogIH0KICAKICAvKiBGaW5kcyB0aGUgImZ1bmN0aW9uIiAodGV4dCBzeW1i b2wpIHRoYXQgaXMgc21hbGxlciB0aGFuIFBDIGJ1dAotQEAgLTE4NCw3ICsxODcsNyBAQCBjbGVh cl9wY19mdW5jdGlvbl9jYWNoZSAodm9pZCkKK0BAIC0xODUsNyArMTg3LDcgQEAgY2xlYXJfcGNf ZnVuY3Rpb25fY2FjaGUgKHZvaWQpCiAgCiAgLyogQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgbm8g c2VjdGlvbiBhcmd1bWVudC4gICovCiAgCkBAIC0xNTAsNyArMzMxLDcgQEAgaW5kZXggMDM0OGJm NC4uZjAxZDBlZSAxMDA2NDQKICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBw YywgY2hhciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKICAJCQkgIENPUkVfQUREUiAqZW5k YWRkcikKICB7Ci1AQCAtMjM2LDYgKzIzOSw3IEBAIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAo Q09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAorQEAgLTIzNyw2 ICsyMzksNyBAQCBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hhciAq Km5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKICAJICBjYWNoZV9wY19mdW5jdGlvbl9oaWdoID0g QkxPQ0tfRU5EIChTWU1CT0xfQkxPQ0tfVkFMVUUgKGYpKTsKICAJICBjYWNoZV9wY19mdW5jdGlv bl9uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAoZik7CiAgCSAgY2FjaGVfcGNfZnVuY3Rpb25f c2VjdGlvbiA9IHNlY3Rpb247CkBAIC0xNTgsNyArMzM5LDcgQEAgaW5kZXggMDM0OGJmNC4uZjAx ZDBlZSAxMDA2NDQKICAJICBnb3RvIHJldHVybl9jYWNoZWRfdmFsdWU7CiAgCX0KICAgICAgfQot QEAgLTI1OCwxMiArMjYyLDEzIEBAIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERS IHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAorQEAgLTI1OSwxMiArMjYyLDEz IEBAIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwg Q09SRV9BRERSICphZGRyZXNzLAogIAkqYWRkcmVzcyA9IDA7CiAgICAgICAgaWYgKGVuZGFkZHIg IT0gTlVMTCkKICAJKmVuZGFkZHIgPSAwOwpAQCAtMTczLDcgKzM1NCw3IEBAIGluZGV4IDAzNDhi ZjQuLmYwMWQwZWUgMTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgbWluaW1hbCBzeW1ib2wgaGFzIGEg c2l6ZSwgdXNlIGl0IGZvciB0aGUgY2FjaGUuCiAgICAgICBPdGhlcndpc2UgdXNlIHRoZSBsZXNz ZXIgb2YgdGhlIG5leHQgbWluaW1hbCBzeW1ib2wgaW4gdGhlIHNhbWUKLUBAIC0zMjMsNyArMzI4 LDggQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1l LCBDT1JFX0FERFIgKmFkZHJlc3MsCitAQCAtMzI0LDcgKzMyOCw4IEBAIGZpbmRfcGNfcGFydGlh bF9mdW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNz LAogIAkqZW5kYWRkciA9IGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2g7CiAgICAgIH0KICAKQEAgLTE4 Miw5ICszNjMsOSBAQCBpbmRleCAwMzQ4YmY0Li5mMDFkMGVlIDEwMDY0NAogKwkJCQkJOiBGSU5E X1BDX1BBUlRJQUxfRlVOQ1RJT05fTk9STUFMOwogIH0KICAKLSAvKiBSZXR1cm4gdGhlIGlubmVy bW9zdCBzdGFjayBmcmFtZSBleGVjdXRpbmcgaW5zaWRlIG9mIEJMT0NLLAorIC8qIFJldHVybiB0 aGUgaW5uZXJtb3N0IHN0YWNrIGZyYW1lIGV4ZWN1dGluZyBpbnNpZGUgb2YgQkxPQ0ssIG9yIE5V TEwKIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5k ZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKK2luZGV4IDgwOWViNTMuLjhmOTJjNGUgMTAwNjQ0 CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysgYi9nZGIvYnJlYWtwb2ludC5jCiBAQCAtNjIs NiArNjIsNyBAQApAQCAtMTk1LDI3ICszNzYsMTcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAx MDA2NDQKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCiAgI2luY2x1ZGUgInJlYWRs aW5lL3JlYWRsaW5lLmgiCi1AQCAtOTIsNiArOTMsOSBAQCBzdGF0aWMgdm9pZCBtYXBfYnJlYWtw b2ludF9udW1iZXJzIChjaGFyICosIHZvaWQgKCopIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAotIAot IHN0YXRpYyB2b2lkIGlnbm9yZV9jb21tYW5kIChjaGFyICosIGludCk7Ci0gCi0rc3RhdGljIHZv aWQgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSsJ CQkJCSBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2Fscyk7Ci0rCi0gc3RhdGljIGludCBicmVh a3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKik7Ci0gCi0gc3RhdGljIHZvaWQgY2xlYXJfY29tbWFu ZCAoY2hhciAqLCBpbnQpOwotQEAgLTEwNCw2ICsxMDgsOSBAQCBzdGF0aWMgdm9pZCBicmVha19j b21tYW5kXzEgKGNoYXIgKiwgaW50LCBpbnQpOworQEAgLTEwNCw2ICsxMDUsOSBAQCBzdGF0aWMg dm9pZCBicmVha19jb21tYW5kXzEgKGNoYXIgKiwgaW50LCBpbnQpOwogIAogIHN0YXRpYyB2b2lk IG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICopOwogIAogK3N0YXRpYyBzdHJ1Y3QgYnBfbG9j YXRpb24gKmFkZF9sb2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwK ICsJCQkJCSAgICAgY29uc3Qgc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKTsKICsKLSAvKiBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gZ2RidGsgc291cmNlcyBhbmQgdGh1cyBjYW4gbm90IGJl IG1hZGUgc3RhdGljLiAgKi8KKyAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gZ2RidGsgc291 cmNlcyBhbmQgdGh1cyBjYW4gbm90IGJlIG1hZGUKKyAgICBzdGF0aWMuICAqLwogIHN0cnVjdCBi cmVha3BvaW50ICpzZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot IAkJCQkJICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSwKLUBAIC0yMTksNiArMjI2LDEwIEBA IHN0YXRpYyB2b2lkIGRpc2FibGVfdHJhY2VfY29tbWFuZCAoY2hhciAqLCBpbnQpOworQEAgLTIy MCw2ICsyMjQsMTAgQEAgc3RhdGljIHZvaWQgZGlzYWJsZV90cmFjZV9jb21tYW5kIChjaGFyICos IGludCk7CiAgCiAgc3RhdGljIHZvaWQgdHJhY2VfcGFzc19jb21tYW5kIChjaGFyICosIGludCk7 CiAgCkBAIC0yMjYsNyArMzk3LDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAv KiBBc3N1bWluZyB3ZSdyZSBjcmVhdGluZyBhIHN0YXRpYyB0cmFjZXBvaW50LCBkb2VzIFMgbG9v ayBsaWtlIGEKICAgICBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlYyAoIi1tIE1BUktFUl9J RCIpPyAgKi8KICAjZGVmaW5lIGlzX21hcmtlcl9zcGVjKHMpCQkJCQkJXAotQEAgLTEyNDEsNiAr MTI1MiwyMiBAQCB3YXRjaHBvaW50X2luX3RocmVhZF9zY29wZSAoc3RydWN0IGJyZWFrcG9pbnQg KmIpCitAQCAtMTI3MCw2ICsxMjc4LDIyIEBAIHdhdGNocG9pbnRfaW5fdGhyZWFkX3Njb3BlIChz dHJ1Y3QgYnJlYWtwb2ludCAqYikKICAJICAgICAgJiYgIWlzX2V4ZWN1dGluZyAoaW5mZXJpb3Jf cHRpZCkpKTsKICB9CiAgCkBAIC0yNDksNyArNDIwLDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZh NiAxMDA2NDQKICAvKiBBc3N1bWluZyB0aGF0IEIgaXMgYSB3YXRjaHBvaW50OgogICAgIC0gUmVw YXJzZSB3YXRjaHBvaW50IGV4cHJlc3Npb24sIGlmIFJFUEFSU0UgaXMgbm9uLXplcm8KICAgICAt IEV2YWx1YXRlIGV4cHJlc3Npb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gQi0+dmFsCi1AQCAt MTI5Niw2ICsxMzIzLDggQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpi LCBpbnQgcmVwYXJzZSkKK0BAIC0xMzI5LDEyICsxMzUzLDE3IEBAIHVwZGF0ZV93YXRjaHBvaW50 IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgaW50IHJlcGFyc2UpCiAgICBzdHJ1Y3QgZnJhbWVfaWQg c2F2ZWRfZnJhbWVfaWQ7CiAgICBpbnQgZnJhbWVfc2F2ZWQ7CiAgCkBAIC0yNTgsNyArNDI5LDE2 IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgICAvKiBJZiB0aGlzIGlzIGEgbG9j YWwgd2F0Y2hwb2ludCwgd2Ugb25seSB3YW50IHRvIGNoZWNrIGlmIHRoZQogICAgICAgd2F0Y2hw b2ludCBmcmFtZSBpcyBpbiBzY29wZSBpZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgdGhlIHRocmVh ZAogICAgICAgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHdhdGNocG9pbnQuICAqLwotQEAg LTE1MDAsMTMgKzE1MjksNyBAQCB1cGRhdGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQg KmIsIGludCByZXBhcnNlKQorICAgaWYgKCF3YXRjaHBvaW50X2luX3RocmVhZF9zY29wZSAoYikp CisgICAgIHJldHVybjsKKyAKKysgIGlmIChiLT5wc3BhY2UgIT0gY3VycmVudF9wcm9ncmFtX3Nw YWNlKQorKyAgICByZXR1cm47CisrCisgICAvKiBXZSBkb24ndCBmcmVlIGxvY2F0aW9ucy4gIFRo ZXkgYXJlIHN0b3JlZCBpbiBicF9sb2NhdGlvbiBhcnJheQorICAgICAgYW5kIHVwZGF0ZV9nbG9i YWxfbG9jYXRpb25zIHdpbGwgZXZlbnR1YWxseSBkZWxldGUgdGhlbSBhbmQKKyAgICAgIHJlbW92 ZSBicmVha3BvaW50cyBpZiBuZWVkZWQuICAqLworQEAgLTE1MzQsMTMgKzE1NjMsNyBAQCB1cGRh dGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNlKQogIFdhdGNo cG9pbnQgJWQgZGVsZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9ja1xu XAogIGluIHdoaWNoIGl0cyBleHByZXNzaW9uIGlzIHZhbGlkLlxuIiksCiAgCQkgICAgICAgYi0+ bnVtYmVyKTsKQEAgLTI3MywzMCArNDUzLDY3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAw NjQ0CiAgICAgIH0KICAKICAgIC8qIFJlc3RvcmUgdGhlIHNlbGVjdGVkIGZyYW1lLiAgKi8KLUBA IC0yMzU0LDYgKzIzNzcsOCBAQCBkZXRhY2hfYnJlYWtwb2ludHMgKGludCBwaWQpCi0gICAvKiBE ZXRhY2ggc2luZ2xlLXN0ZXAgYnJlYWtwb2ludHMgYXMgd2VsbC4gICovCi0gICBkZXRhY2hfc2lu Z2xlX3N0ZXBfYnJlYWtwb2ludHMgKCk7CitAQCAtMTkxNiw2ICsxOTM5LDcgQEAgaW5zZXJ0X2Jy ZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQorICAgaW50IHZhbCA9IDA7CisgICBpbnQgZGlzYWJs ZWRfYnJlYWtzID0gMDsKKyAgIGludCBod19icmVha3BvaW50X2Vycm9yID0gMDsKKysgIHN0cnVj dCBwcm9ncmFtX3NwYWNlICpzYXZlZF9jdXJyZW50X3Byb2dyYW1fc3BhY2UgPSBjdXJyZW50X3By b2dyYW1fc3BhY2U7CisgCisgICBzdHJ1Y3QgdWlfZmlsZSAqdG1wX2Vycm9yX3N0cmVhbSA9IG1l bV9maWxlb3BlbiAoKTsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51 cF91aV9maWxlX2RlbGV0ZSAodG1wX2Vycm9yX3N0cmVhbSk7CitAQCAtMTk0Myw5ICsxOTY3LDEz IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKKyAgICAgICAvKiBGb3IgdGFy Z2V0cyB0aGF0IHN1cHBvcnQgZ2xvYmFsIGJyZWFrcG9pbnRzLCB0aGVyZSdzIG5vIG5lZWQKKyAJ IHRvIHNlbGVjdCBhbiBpbmZlcmlvciB0byBpbnNlcnQgYnJlYWtwb2ludCB0by4gIEluIGZhY3Qs IGV2ZW4KKyAJIGlmIHdlIGFyZW4ndCBhdHRhY2hlZCB0byBhbnkgcHJvY2VzcyB5ZXQsIHdlIHNo b3VsZCBzdGlsbAorLQkgaW5zZXJ0IGJyZWFrcG9pbnRzLiAgKi8KKysJIGluc2VydCBicmVha3Bv aW50cy4KKysKKysJIEFsc28gaW5zZXJ0aW5nIGJyZWFrcG9pbnRzIGludG8gaW5hcHByb3ByaWF0 ZSBpbmZlcmlvciBtdXN0IGJlCisrCSBwcmV2ZW50ZWQuICAqLworICAgICAgIGlmICghZ2RiYXJj aF9oYXNfZ2xvYmFsX2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCkKKy0JICAmJiBwdGlkX2Vx dWFsIChpbmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpKQorKwkgICYmIChwdGlkX2VxdWFsIChpbmZl cmlvcl9wdGlkLCBudWxsX3B0aWQpCisrCSAgICAgIHx8IGJsLT5wc3BhY2UgIT0gc2F2ZWRfY3Vy cmVudF9wcm9ncmFtX3NwYWNlKSkKKyAJY29udGludWU7CiAgCi0rICB2YWwgfD0gdGFyZ2V0X2Rl dGFjaF93YXRjaHBvaW50cyAoKTsKLSsKLSAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAg cmV0dXJuIHZhbDsKLSB9Ci1AQCAtMjQ1NSw5ICsyNDgwLDExIEBAIHJlbW92ZV9icmVha3BvaW50 XzEgKHN0cnVjdCBicF9sb2NhdGlvbiAqYiwgaW5zZXJ0aW9uX3N0YXRlX3QgaXMpCi0gCXJldHVy biB2YWw7Ci0gICAgICAgYi0+aW5zZXJ0ZWQgPSAoaXMgPT0gbWFya19pbnNlcnRlZCk7Ci0gICAg IH0KLS0gIGVsc2UgaWYgKGItPmxvY190eXBlID09IGJwX2xvY19oYXJkd2FyZV93YXRjaHBvaW50 KQotKyAgLyogYnBfbG9jX2hhcmR3YXJlX3dhdGNocG9pbnQgd2l0aCBtYXJrX2luc2VydGVkIGlz IGJlaW5nIGhhbmRsZWQgYnkKLSsgICAgIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICAqLwot KyAgZWxzZSBpZiAoYi0+bG9jX3R5cGUgPT0gYnBfbG9jX2hhcmR3YXJlX3dhdGNocG9pbnQgJiYg aXMgPT0gbWFya191bmluc2VydGVkKQotICAgICB7Ci0tICAgICAgYi0+aW5zZXJ0ZWQgPSAoaXMg PT0gbWFya19pbnNlcnRlZCk7Ci0rICAgICAgYi0+aW5zZXJ0ZWQgPSAwOwotICAgICAgIHZhbCA9 IHRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludCAoYi0+YWRkcmVzcywgYi0+bGVuZ3RoLAotIAkJCQkg ICAgICBiLT53YXRjaHBvaW50X3R5cGUsIGItPm93bmVyLT5jb25kX2V4cCk7CisgICAgICAgdmFs ID0gaW5zZXJ0X2JwX2xvY2F0aW9uIChibCwgdG1wX2Vycm9yX3N0cmVhbSwgJmRpc2FibGVkX2Jy ZWFrcywKK0BAIC0xOTY5LDEzICsxOTk3LDE5IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9u cyAodm9pZCkKICAKLUBAIC0zMzQyLDYgKzMzNjksOCBAQCBwcmludF9pdF90eXBpY2FsIChicHN0 YXQgYnMpCisgICAgICAgaWYgKGJwdC0+ZGlzcG9zaXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4dF9z dG9wKQorIAljb250aW51ZTsKKy0gICAgICAKKysKKyAgICAgICBmb3IgKGxvYyA9IGJwdC0+bG9j OyBsb2M7IGxvYyA9IGxvYy0+bmV4dCkKKy0JaWYgKCFsb2MtPmluc2VydGVkICYmIHNob3VsZF9i ZV9pbnNlcnRlZCAobG9jKSkKKy0JICB7CistCSAgICBzb21lX2ZhaWxlZCA9IDE7CistCSAgICBi cmVhazsKKy0JICB9CisrCXsKKysJICAvKiBWZXJpZnkgdGhlIGZpcnN0IGxvb3AgYWJvdmUgcmVh bGx5IHRyaWVkIHRvIGluc2VydCB0aGlzIExPQy4gICovCisrCSAgaWYgKCFsb2MtPmluc2VydGVk ICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jKQorKwkgICAgICAmJiAoZ2RiYXJjaF9oYXNfZ2xv YmFsX2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCkKKysJCSAgfHwgKCFwdGlkX2VxdWFsIChp bmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpCisrCQkgICAgICAmJiBsb2MtPnBzcGFjZSA9PSBzYXZl ZF9jdXJyZW50X3Byb2dyYW1fc3BhY2UpKSkKKysJICAgIHsKKysJICAgICAgc29tZV9mYWlsZWQg PSAxOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQorICAgICAgIGlmIChzb21lX2ZhaWxl ZCkKKyAJeworIAkgIGZvciAobG9jID0gYnB0LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQor QEAgLTI1MjUsOCArMjU1OSw3IEBAIHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVjdCBicF9sb2Nh dGlvbiAqYmwsIGluc2VydGlvbl9zdGF0ZV90IGlzKQorICAgICB7CisgICAgICAgYmwtPmluc2Vy dGVkID0gKGlzID09IG1hcmtfaW5zZXJ0ZWQpOworICAgICAgIHZhbCA9IHRhcmdldF9yZW1vdmVf d2F0Y2hwb2ludCAoYmwtPmFkZHJlc3MsIGJsLT5sZW5ndGgsCistCQkJCSAgICAgIGJsLT53YXRj aHBvaW50X3R5cGUsIAorLQkJCQkgICAgICBibC0+b3duZXItPmNvbmRfZXhwKTsKKysJCQkJICAg ICAgYmwtPndhdGNocG9pbnRfdHlwZSwgYmwtPm93bmVyLT5jb25kX2V4cCk7CisgCisgICAgICAg LyogRmFpbHVyZSB0byByZW1vdmUgYW55IG9mIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50cyBjb21l cyBoZXJlLiAgKi8KKyAgICAgICBpZiAoKGlzID09IG1hcmtfdW5pbnNlcnRlZCkgJiYgKGJsLT5p bnNlcnRlZCkpCitAQCAtMzQxOSw2ICszNDUyLDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0 IGJzKQogICAgICBjYXNlIGJwX3RyYWNlcG9pbnQ6CiAgICAgIGNhc2UgYnBfZmFzdF90cmFjZXBv aW50OgogICAgICBjYXNlIGJwX2ppdF9ldmVudDoKQEAgLTMwNSw3ICs1MjIsNyBAQCBpbmRleCA2 YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAogICAgICBkZWZhdWx0OgogICAgICAgIHJlc3VsdCA9IFBS SU5UX1VOS05PV047CiAgICAgICAgYnJlYWs7Ci1AQCAtMzU2Miw2ICszNTkxLDggQEAgd2F0Y2hw b2ludF9jaGVjayAodm9pZCAqcCkKK0BAIC0zNjQwLDYgKzM2NzUsOCBAQCB3YXRjaHBvaW50X2No ZWNrICh2b2lkICpwKQogICAgZ2RiX2Fzc2VydCAoYnMtPmJyZWFrcG9pbnRfYXQgIT0gTlVMTCk7 CiAgICBiID0gYnMtPmJyZWFrcG9pbnRfYXQ7CiAgCkBAIC0zMTQsNyArNTMxLDcgQEAgaW5kZXgg NmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAgIC8qIElmIHRoaXMgaXMgYSBsb2NhbCB3YXRjaHBv aW50LCB3ZSBvbmx5IHdhbnQgdG8gY2hlY2sgaWYgdGhlCiAgICAgICB3YXRjaHBvaW50IGZyYW1l IGlzIGluIHNjb3BlIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyB0aGUgdGhyZWFkCiAgICAgICB0 aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgd2F0Y2hwb2ludC4gICovCi1AQCAtMzY2OCwxMyAr MzY5OSw3IEBAIHdhdGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCitAQCAtMzc0OCwxMyArMzc4NSw3 IEBAIHdhdGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCiAgICAgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiIGRlbGV0ZWQgYmVjYXVzZSB0aGUgcHJvZ3JhbSBoYXMgbGVmdCB0aGUgYmxvY2sgaW5cblwK ICB3aGljaCBpdHMgZXhwcmVzc2lvbiBpcyB2YWxpZC5cbiIpOyAgICAgCiAgCkBAIC0zMjksMjIg KzU0Niw3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJu IFdQX0RFTEVURUQ7CiAgICAgIH0KLUBAIC0zNzQzLDggKzM3NjgsMTIgQEAgYnBzdGF0X2NoZWNr X2xvY2F0aW9uIChjb25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLAotIAotIC8qIElmIEJTIHJl ZmVycyB0byBhIHdhdGNocG9pbnQsIGRldGVybWluZSBpZiB0aGUgd2F0Y2hlZCB2YWx1ZXMKLSAg ICBoYXMgYWN0dWFsbHkgY2hhbmdlZCwgYW5kIHdlIHNob3VsZCBzdG9wLiAgSWYgbm90LCBzZXQg QlMtPnN0b3AKLS0gICB0byAwLiAgKi8KLS1zdGF0aWMgdm9pZAotKyAgIHRvIDAuCi0rICAgUmV0 dXJuIDAgZm9yIHdhdGNocG9pbnRzIHdoaWNoIGNvdWxkIG5vdCBiZSB0aGUgY2F1c2Ugb2YgdGhp cyB0cmFwLgotKyAgIEluIHN1Y2ggY2FzZSBQUklOVF9JVCB3aWxsIGJlIHByaW50X2l0X25vb3Ag YW5kIFNUT1Agd2lsbCBiZSAwLgotKyAgIE90aGVyd2lzZSByZXR1cm4gMSBidXQgaW4gc3VjaCBj YXNlIGl0IGlzIG5vdCBndWFyYW50ZWVkIHdoZXRoZXIgdGhpcwotKyAgIGJyZWFrcG9pbnQgZGlk IG9yIGRpZCBub3QgdHJpZ2dlciB0aGlzIHRyYXAuICAqLwotK3N0YXRpYyBpbnQKLSBicHN0YXRf Y2hlY2tfd2F0Y2hwb2ludCAoYnBzdGF0IGJzKQotIHsKLSAgIGNvbnN0IHN0cnVjdCBicF9sb2Nh dGlvbiAqYmw7Ci1AQCAtMzg3OCw5ICszOTA3LDcgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQg KGJwc3RhdCBicykKK0BAIC0zOTU4LDkgKzM5ODksNyBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2lu dCAoYnBzdGF0IGJzKQogIAkgICAgY2FzZSAwOgogIAkgICAgICAvKiBFcnJvciBmcm9tIGNhdGNo X2Vycm9ycy4gICovCiAgCSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiV2F0Y2hwb2ludCAlZCBk ZWxldGVkLlxuIiksIGItPm51bWJlcik7CkBAIC0zNTUsMjcgKzU1Nyw3IEBAIGluZGV4IDZiNTUz MTMuLjMwNjI2YTYgMTAwNjQ0CiAgCSAgICAgIC8qIFdlJ3ZlIGFscmVhZHkgcHJpbnRlZCB3aGF0 IG5lZWRzIHRvIGJlIHByaW50ZWQuICAqLwogIAkgICAgICBicy0+cHJpbnRfaXQgPSBwcmludF9p dF9kb25lOwogIAkgICAgICBicmVhazsKLUBAIC0zODk0LDggKzM5MjEsMTAgQEAgYnBzdGF0X2No ZWNrX3dhdGNocG9pbnQgKGJwc3RhdCBicykKLSAJICAgICBhbnl0aGluZyBmb3IgdGhpcyB3YXRj aHBvaW50LiAgKi8KLSAJICBicy0+cHJpbnRfaXQgPSBwcmludF9pdF9ub29wOwotIAkgIGJzLT5z dG9wID0gMDsKLSsJICByZXR1cm4gMDsKLSAJfQotICAgICB9Ci0rICByZXR1cm4gMTsKLSB9Ci0g Ci0gCi1AQCAtNDAzNSw3ICs0MDY0LDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqYXNwYWNlLAotICAgc3RydWN0IGJwX2xvY2F0aW9uICpibDsKLSAgIHN0cnVj dCBicF9sb2NhdGlvbiAqbG9jOwotICAgLyogRmlyc3QgaXRlbSBvZiBhbGxvY2F0ZWQgYnBzdGF0 J3MuICAqLwotLSAgYnBzdGF0IGJzX2hlYWQgPSBOVUxMLCAqYnNfbGluayA9ICZic19oZWFkOwot KyAgYnBzdGF0IGJzX2hlYWQgPSBOVUxMLCAqYnNfbGluayA9ICZic19oZWFkLCAqYnNfbGlua19u ZXh0OwotICAgLyogUG9pbnRlciB0byB0aGUgbGFzdCB0aGluZyBpbiB0aGUgY2hhaW4gY3VycmVu dGx5LiAgKi8KLSAgIGJwc3RhdCBiczsKLSAgIGludCBpeDsKLUBAIC00MDg0LDcgKzQxMTMsNyBA QCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCitAQCAt NDE2Niw3ICs0MTk1LDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFj ZSAqYXNwYWNlLAogIAkgICAgIHdhdGNocG9pbnQgYXMgdHJpZ2dlcmVkIHNvIHRoYXQgd2Ugd2ls bCBoYW5kbGUgdGhlCiAgCSAgICAgb3V0LW9mLXNjb3BlIGV2ZW50LiAgV2UnbGwgZ2V0IHRvIHRo ZSB3YXRjaHBvaW50IG5leHQKICAJICAgICBpdGVyYXRpb24uICAqLwpAQCAtMzg0LDM2ICs1NjYs NyBAQCBpbmRleCA2YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAogIAkgICAgYi0+cmVsYXRlZF9icmVh a3BvaW50LT53YXRjaHBvaW50X3RyaWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7CiAgCX0K ICAgICAgfQotQEAgLTQxMDgsMTIgKzQxMzcsMjYgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlLAotIAotICAgcmVtb3ZlZF9hbnkgPSAwOwotIAotLSAg Zm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCi0rICBmb3IgKGJz X2xpbmsgPSAmYnNfaGVhZDsgKmJzX2xpbmsgIT0gTlVMTDsgYnNfbGluayA9IGJzX2xpbmtfbmV4 dCkKLSAgICAgewotKyAgICAgIGJzID0gKmJzX2xpbms7Ci0rICAgICAgYnNfbGlua19uZXh0ID0g JmJzLT5uZXh0OwotKwotICAgICAgIGlmICghYnMtPnN0b3ApCi0gCWNvbnRpbnVlOwotIAotLSAg ICAgIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicyk7Ci0rICAgICAgaWYgKCFicHN0YXRfY2hl Y2tfd2F0Y2hwb2ludCAoYnMpKQotKwl7Ci0rCSAgLyogRW5zdXJlIGJwc3RhdF9leHBsYWluc19z aWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKLSsJICAgICB0aGUgY2F1 c2Ugb2YgdGhpcyB0cmFwLiAgKi8KLSsKLSsJICBnZGJfYXNzZXJ0IChicy0+cHJpbnRfaXQgPT0g cHJpbnRfaXRfbm9vcCk7Ci0rCSAgZ2RiX2Fzc2VydCAoIWJzLT5zdG9wKTsKLSsJICAqYnNfbGlu ayA9IGJzLT5uZXh0OwotKwkgIGJzX2xpbmtfbmV4dCA9IGJzX2xpbms7Ci0rCSAgeGZyZWUgKGJz KTsKLSsJICBjb250aW51ZTsKLSsJfQotICAgICAgIGlmICghYnMtPnN0b3ApCi0gCWNvbnRpbnVl OwotIAotQEAgLTQyMDUsNyArNDI0OCw3IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZvaWQpCitAQCAt NDI4OCw3ICs0MzE3LDcgQEAgaGFuZGxlX2ppdF9ldmVudCAodm9pZCkKICAvKiBEZWNpZGUgd2hh dCBpbmZydW4gbmVlZHMgdG8gZG8gd2l0aCB0aGlzIGJwc3RhdC4gICovCiAgCiAgc3RydWN0IGJw c3RhdF93aGF0CkBAIC00MjIsNyArNTc1LDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2 NDQKICB7CiAgICBzdHJ1Y3QgYnBzdGF0X3doYXQgcmV0dmFsOwogICAgLyogV2UgbmVlZCB0byBk ZWZlciBjYWxsaW5nIGBzb2xpYl9hZGQnLCBhcyBhZGRpbmcgbmV3IHN5bWJvbHMKLUBAIC00MjEz LDExICs0MjU2LDEyIEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtNDI5NiwxMiArNDMy NSwxMyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogICAgICAgYW5kIGhlbmNlIG1heSBjbGVh ciB1bnByb2Nlc3NlZCBlbnRyaWVzIGluIHRoZSBCUyBjaGFpbi4gICovCiAgICBpbnQgc2hsaWJf ZXZlbnQgPSAwOwogICAgaW50IGppdF9ldmVudCA9IDA7CkBAIC00MzAsMTMgKzU4MywxNCBAQCBp bmRleCA2YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAogIAogICAgcmV0dmFsLm1haW5fYWN0aW9uID0g QlBTVEFUX1dIQVRfS0VFUF9DSEVDS0lORzsKICAgIHJldHZhbC5jYWxsX2R1bW15ID0gU1RPUF9O T05FOworICAgcmV0dmFsLmlzX2xvbmdqbXAgPSAwOwogIAogLSAgZm9yICg7IGJzICE9IE5VTEw7 IGJzID0gYnMtPm5leHQpCiArICBmb3IgKGJzID0gYnNfaGVhZDsgYnMgIT0gTlVMTDsgYnMgPSBi cy0+bmV4dCkKICAgICAgewogICAgICAgIC8qIEV4dHJhY3QgdGhpcyBCUydzIGFjdGlvbi4gIEFm dGVyIHByb2Nlc3NpbmcgZWFjaCBCUywgd2UgY2hlY2sKICAJIGlmIGl0cyBhY3Rpb24gb3ZlcnJp ZGVzIGFsbCB3ZSd2ZSBzZWVtIHNvIGZhci4gICovCi1AQCAtNDM0Miw2ICs0Mzg2LDIwIEBAIGJw c3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtNDQzMSw2ICs0NDYxLDIwIEBAIGJwc3RhdF93aGF0 IChicHN0YXQgYnMpCiAgCSAgICAgb3V0IGFscmVhZHkuICAqLwogIAkgIGludGVybmFsX2Vycm9y IChfX0ZJTEVfXywgX19MSU5FX18sCiAgCQkJICBfKCJicHN0YXRfd2hhdDogdHJhY2Vwb2ludCBl bmNvdW50ZXJlZCIpKTsKQEAgLTQ1Nyw3ICs2MTEsNyBAQCBpbmRleCA2YjU1MzEzLi4zMDYyNmE2 IDEwMDY0NAogIAlkZWZhdWx0OgogIAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5F X18sCiAgCQkJICBfKCJicHN0YXRfd2hhdDogdW5oYW5kbGVkIGJwdHlwZSAlZCIpLCAoaW50KSBi cHR5cGUpOwotQEAgLTQzNzksNiArNDQzNywyMSBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQor QEAgLTQ0NjgsNiArNDUxMiwyMSBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogICAgICAgIGhh bmRsZV9qaXRfZXZlbnQgKCk7CiAgICAgIH0KICAKQEAgLTQ3OSw3ICs2MzMsNyBAQCBpbmRleCA2 YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCi1AQCAtNDQ5 Nyw2ICs0NTcwLDggQEAgYnB0eXBlX3N0cmluZyAoZW51bSBicHR5cGUgdHlwZSkKK0BAIC00NTg5 LDYgKzQ2NDgsOCBAQCBicHR5cGVfc3RyaW5nIChlbnVtIGJwdHlwZSB0eXBlKQogICAgICB7YnBf ZmFzdF90cmFjZXBvaW50LCAiZmFzdCB0cmFjZXBvaW50In0sCiAgICAgIHticF9zdGF0aWNfdHJh Y2Vwb2ludCwgInN0YXRpYyB0cmFjZXBvaW50In0sCiAgICAgIHticF9qaXRfZXZlbnQsICJqaXQg ZXZlbnRzIn0sCkBAIC00ODgsNyArNjQyLDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2 NDQKICAgIH07CiAgCiAgICBpZiAoKChpbnQpIHR5cGUgPj0gKHNpemVvZiAoYnB0eXBlcykgLyBz aXplb2YgKGJwdHlwZXNbMF0pKSkKLUBAIC00NjQzLDYgKzQ3MTgsOCBAQCBwcmludF9vbmVfYnJl YWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCitAQCAtNDczNiw2ICs0Nzk3 LDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpi LAogICAgICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50OgogICAgICAgIGNhc2UgYnBfc3RhdGlj X3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CkBAIC00OTcsNyArNjUxLDcg QEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAJaWYgKG9wdHMuYWRkcmVzc3ByaW50 KQogIAkgIHsKICAJICAgIGFubm90YXRlX2ZpZWxkICg0KTsKLUBAIC00OTIzLDcgKzUwMDAsOCBA QCB1c2VyX3NldHRhYmxlX2JyZWFrcG9pbnQgKGNvbnN0IHN0cnVjdCBicmVha3BvaW50ICpiKQor QEAgLTUwMTcsNyArNTA4MCw4IEBAIHVzZXJfc2V0dGFibGVfYnJlYWtwb2ludCAoY29uc3Qgc3Ry dWN0IGJyZWFrcG9pbnQgKmIpCiAgCSAgfHwgYi0+dHlwZSA9PSBicF9jYXRjaHBvaW50CiAgCSAg fHwgYi0+dHlwZSA9PSBicF9oYXJkd2FyZV9icmVha3BvaW50CiAgCSAgfHwgaXNfdHJhY2Vwb2lu dCAoYikKQEAgLTUwNSwyNiArNjU5LDI2IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0 CiArCSAgfHwgaXNfd2F0Y2hwb2ludCAoYikKICsJICB8fCBiLT50eXBlID09IGJwX2dudV9pZnVu Y19yZXNvbHZlcik7CiAgfQotIAkKKyAKICAvKiBQcmludCBpbmZvcm1hdGlvbiBvbiB1c2VyIHNl dHRhYmxlIGJyZWFrcG9pbnQgKHdhdGNocG9pbnQsIGV0YykKLUBAIC01Mzg5LDYgKzU0NjcsOCBA QCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKLSAgICAgY2Fz ZSBicF9qaXRfZXZlbnQ6CitAQCAtNTQ5Nyw2ICs1NTYxLDggQEAgYWxsb2NhdGVfYnBfbG9jYXRp b24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6 CiAgICAgIGNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CisgICAgIGNhc2UgYnBfZXhjZXB0 aW9uX21hc3RlcjoKICsgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CiArICAgIGNhc2Ug YnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKICAgICAgICBsb2MtPmxvY190eXBlID0gYnBf bG9jX3NvZnR3YXJlX2JyZWFrcG9pbnQ7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgYnBfaGFy ZHdhcmVfYnJlYWtwb2ludDoKLUBAIC01NDc3LDYgKzU1NTcsNyBAQCBzZXRfcmF3X2JyZWFrcG9p bnRfd2l0aG91dF9sb2NhdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTU4Niw2 ICs1NjUyLDcgQEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAogICAgYi0+b3BzID0gTlVMTDsKICAgIGItPmNvbmRpdGlvbl9ub3Rf cGFyc2VkID0gMDsKICAgIGItPnB5X2JwX29iamVjdCA9IE5VTEw7CiArICBiLT5yZWxhdGVkX2Jy ZWFrcG9pbnQgPSBiOwogIAotICAgLyogQWRkIHRoaXMgYnJlYWtwb2ludCB0byB0aGUgZW5kIG9m IHRoZSBjaGFpbgotICAgICAgc28gdGhhdCBhIGxpc3Qgb2YgYnJlYWtwb2ludHMgd2lsbCBjb21l IG91dCBpbiBvcmRlcgotQEAgLTU0OTYsNyArNTU3Nyw3IEBAIHNldF9yYXdfYnJlYWtwb2ludF93 aXRob3V0X2xvY2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgIC8qIEFkZCB0aGlz IGJyZWFrcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4gc28gdGhhdCBhIGxpc3Qgb2YKKyAg ICAgIGJyZWFrcG9pbnRzIHdpbGwgY29tZSBvdXQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBudW1i ZXJzLiAgKi8KK0BAIC01NjA0LDcgKzU2NzEsNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91 dF9sb2NhdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCiAgLyogSW5pdGlhbGl6ZSBs b2MtPmZ1bmN0aW9uX25hbWUuICAqLwogIHN0YXRpYyB2b2lkCkBAIC01MzMsNyArNjg3LDcgQEAg aW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICB7CiAgICBnZGJfYXNzZXJ0IChsb2MtPm93 bmVyICE9IE5VTEwpOwogIAotQEAgLTU1MDQsOCArNTU4NSwyOSBAQCBzZXRfYnJlYWtwb2ludF9s b2NhdGlvbl9mdW5jdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCitAQCAtNTYxMiw4ICs1 Njc5LDI5IEBAIHNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9j YXRpb24gKmxvYykKICAgICAgICB8fCBsb2MtPm93bmVyLT50eXBlID09IGJwX2hhcmR3YXJlX2Jy ZWFrcG9pbnQKICAgICAgICB8fCBpc190cmFjZXBvaW50IChsb2MtPm93bmVyKSkKICAgICAgewpA QCAtNTY1LDcgKzcxOSw3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAgICAgICAg aWYgKGxvYy0+ZnVuY3Rpb25fbmFtZSkKICAJbG9jLT5mdW5jdGlvbl9uYW1lID0geHN0cmR1cCAo bG9jLT5mdW5jdGlvbl9uYW1lKTsKICAgICAgfQotQEAgLTU1NzgsNyArNTY4MCw4IEBAIHNldF9y YXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTY4OCw3ICs1Nzc2 LDggQEAgc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIGIt PmxvYy0+c2VjdGlvbiA9IHNhbC5zZWN0aW9uOwogICAgYi0+bGluZV9udW1iZXIgPSBzYWwubGlu ZTsKICAKQEAgLTU3NSw3ICs3MjksNyBAQCBpbmRleCA2YjU1MzEzLi4zMDYyNmE2IDEwMDY0NAog IAogICAgYnJlYWtwb2ludHNfY2hhbmdlZCAoKTsKICAKLUBAIC02NjUyLDcgKzY3NTUsNyBAQCBj bG9uZV9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCitAQCAt Njc3NSw3ICs2ODY0LDcgQEAgY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh a3BvaW50ICpvcmlnKQogIAogICAgY29weSA9IHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xv Y2F0aW9uIChvcmlnLT5nZGJhcmNoLCBvcmlnLT50eXBlKTsKICAgIGNvcHktPmxvYyA9IGFsbG9j YXRlX2JwX2xvY2F0aW9uIChjb3B5KTsKQEAgLTU4NCw3ICs3MzgsNyBAQCBpbmRleCA2YjU1MzEz Li4zMDYyNmE2IDEwMDY0NAogIAogICAgY29weS0+bG9jLT5nZGJhcmNoID0gb3JpZy0+bG9jLT5n ZGJhcmNoOwogICAgY29weS0+bG9jLT5yZXF1ZXN0ZWRfYWRkcmVzcyA9IG9yaWctPmxvYy0+cmVx dWVzdGVkX2FkZHJlc3M7Ci1AQCAtNjc1MSw2ICs2ODU0LDcgQEAgbWVudGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmIpCitAQCAtNjg3NCw2ICs2OTYzLDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKmIpCiAgCWRvX2NsZWFudXBzICh1aV9vdXRfY2hhaW4pOwogIAlicmVhazsKICAgICAg ICBjYXNlIGJwX2JyZWFrcG9pbnQ6CkBAIC01OTIsNyArNzQ2LDcgQEAgaW5kZXggNmI1NTMxMy4u MzA2MjZhNiAxMDA2NDQKICAJaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKICAJICB7 CiAgCSAgICBzYXlfd2hlcmUgPSAwOwotQEAgLTY3NjEsNiArNjg2NSw4IEBAIG1lbnRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTY4ODQsNiArNjk3NCw4IEBAIG1lbnRpb24gKHN0cnVj dCBicmVha3BvaW50ICpiKQogIAllbHNlCiAgCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJCcmVha3Bv aW50IikpOwogIAlwcmludGZfZmlsdGVyZWQgKF8oIiAlZCIpLCBiLT5udW1iZXIpOwpAQCAtNjAx LDE1ICs3NTUsMTUgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICAJc2F5X3doZXJl ID0gMTsKICAJYnJlYWs7CiAgICAgICAgY2FzZSBicF9oYXJkd2FyZV9icmVha3BvaW50OgotQEAg LTY4MTcsNiArNjkyMyw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQotICAgICAg IGNhc2UgYnBfaml0X2V2ZW50OgorQEAgLTY5NDMsNiArNzAzNSw3IEBAIG1lbnRpb24gKHN0cnVj dCBicmVha3BvaW50ICpiKQogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CiAgICAgICAg Y2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKKyAgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9t YXN0ZXI6CiArICAgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgogIAlicmVh azsKICAgICAgICB9CiAgCi1AQCAtNjg3Nyw3ICs2OTg0LDggQEAgYWRkX2xvY2F0aW9uX3RvX2Jy ZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTcwMDMsNyArNzA5Niw4IEBAIGFk ZF9sb2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICAgIGdkYl9h c3NlcnQgKGxvYy0+cHNwYWNlICE9IE5VTEwpOwogICAgbG9jLT5zZWN0aW9uID0gc2FsLT5zZWN0 aW9uOwogIApAQCAtNjE5LDEwICs3NzMsMjggQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2 NDQKICAgIHJldHVybiBsb2M7CiAgfQogIAwKLUBAIC05NzEyLDEyICs5ODIwLDIyIEBAIGRlbGV0 ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorQEAgLTgzOTcsNiArODQ5MSw3 IEBAIHdhdGNoX2NvbW1hbmRfMSAoY2hhciAqYXJnLCBpbnQgYWNjZXNzZmxhZywgaW50IGZyb21f dHR5LAorICAgYiA9IHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChOVUxMLCBi cF90eXBlKTsKKyAgIHNldF9icmVha3BvaW50X251bWJlciAoaW50ZXJuYWwsIGIpOworICAgYi0+ dGhyZWFkID0gdGhyZWFkOworKyAgYi0+cHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOwor ICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RvbnR0b3VjaDsKKyAgIGItPmV4cCA9IGV4cDsKKyAg IGItPmV4cF92YWxpZF9ibG9jayA9IGV4cF92YWxpZF9ibG9jazsKK0BAIC05NTUwLDYgKzk2NDUs OSBAQCB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQorICAg ICAgIGludCBrZWVwX2luX3RhcmdldCA9IDA7CisgICAgICAgaW50IHJlbW92ZWQgPSAwOworIAor KyAgICAgIGlmIChvbGRfbG9jLT5wc3BhY2UgIT0gY3VycmVudF9wcm9ncmFtX3NwYWNlKQorKwlj b250aW51ZTsKKysKKyAgICAgICAvKiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmlu aXRlbHkgbmV2ZXIgYmUgbmVlZGVkLgorIAkgU3RvcCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9u ZSBtYXRjaGluZyBPTERfTE9DLiAgKi8KKyAgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9u ICsgYnBfbG9jYXRpb25fY291bnQKK0BAIC05ODY1LDEyICs5OTYzLDIyIEBAIGRlbGV0ZV9icmVh a3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQogIAotICAgLyogQXQgbGVhc3QgYXZvaWQg dGhpcyBzdGFsZSByZWZlcmVuY2UgdW50aWwgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBvZgotICAg ICAgYnJlYWtwb2ludHMgZ2V0cyByZXNvbHZlZC4gICovCisgICAvKiBBdCBsZWFzdCBhdm9pZCB0 aGlzIHN0YWxlIHJlZmVyZW5jZSB1bnRpbCB0aGUgcmVmZXJlbmNlIGNvdW50aW5nCisgICAgICBv ZiBicmVha3BvaW50cyBnZXRzIHJlc29sdmVkLiAgKi8KIC0gIGlmIChicHQtPnJlbGF0ZWRfYnJl YWtwb2ludCAhPSBOVUxMKQogKyAgaWYgKGJwdC0+cmVsYXRlZF9icmVha3BvaW50ICE9IGJwdCkK ICAgICAgewpAQCAtNjQ3LDcgKzgxOSw3IEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0 CiAgICAgIH0KICAKICAgIG9ic2VydmVyX25vdGlmeV9icmVha3BvaW50X2RlbGV0ZWQgKGJwdC0+ bnVtYmVyKTsKLUBAIC0xMDA0OSw2ICsxMDE2Nyw5IEBAIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0 aW9ucyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCitAQCAtMTAyMDEsNiArMTAzMDksOSBAQCB1cGRh dGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICByZXR1 cm47CiAgCiAgICBiLT5sb2MgPSBOVUxMOwpAQCAtNjU3LDcgKzgyOSw3IEBAIGluZGV4IDZiNTUz MTMuLjMwNjI2YTYgMTAwNjQ0CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytp KQogICAgICB7Ci1AQCAtMTAwNzUsMTEgKzEwMTk2LDcgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9j YXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC0xMDIyNywxMSArMTAzMzgsNyBAQCB1 cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVha3BvaW50ICpiLAogIAkgICAg fQogIAl9CiAgCkBAIC02NzAsNyArODQyLDcgQEAgaW5kZXggNmI1NTMxMy4uMzA2MjZhNiAxMDA2 NDQKICAJYi0+c291cmNlX2ZpbGUgPSB4c3RyZHVwIChzYWxzLnNhbHNbaV0uc3ltdGFiLT5maWxl bmFtZSk7CiAgCiAgICAgICAgaWYgKGItPmxpbmVfbnVtYmVyID09IDApCi1AQCAtMTAxNjEsNiAr MTAyNzgsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCitAQCAtMTAzMTQs NiArMTA0MjEsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCiAgICAgIGNh c2UgYnBfdHJhY2Vwb2ludDoKICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgIGNh c2UgYnBfc3RhdGljX3RyYWNlcG9pbnQ6CkBAIC02NzgsMTUgKzg1MCwxNSBAQCBpbmRleCA2YjU1 MzEzLi4zMDYyNmE2IDEwMDY0NAogICAgICAgIC8qIERvIG5vdCBhdHRlbXB0IHRvIHJlLXNldCBi cmVha3BvaW50cyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cC4gICovCiAgICAgICAgaWYgKGItPmVu YWJsZV9zdGF0ZSA9PSBicF9zdGFydHVwX2Rpc2FibGVkKQogIAlyZXR1cm4gMDsKLUBAIC0xMDMy NSw2ICsxMDQ0Myw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAg Y2FzZSBicF9sb25nam1wOgotICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgorQEAgLTEwNDg0 LDYgKzEwNTkyLDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorICAgICBj YXNlIGJwX2V4Y2VwdGlvbjoKKyAgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgogICAgICBj YXNlIGJwX2ppdF9ldmVudDoKICsgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJu OgogICAgICAgIGJyZWFrOwogICAgICB9CiAgCi1AQCAtMTA0OTYsMTEgKzEwNjE1LDI1IEBAIG1h cF9icmVha3BvaW50X251bWJlcnMgKGNoYXIgKmFyZ3MsIHZvaWQgKCpmdW5jdGlvbikgKHN0cnVj dCBicmVha3BvaW50ICosCitAQCAtMTA2NTYsMTEgKzEwNzY1LDI1IEBAIG1hcF9icmVha3BvaW50 X251bWJlcnMgKGNoYXIgKmFyZ3MsIHZvaWQgKCpmdW5jdGlvbikgKHN0cnVjdCBicmVha3BvaW50 ICosCiAgCSAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRtcCkKICAJICAgIGlmIChiLT5udW1i ZXIgPT0gbnVtKQogIAkgICAgICB7CkBAIC03MTYsNyArODg4LDcgQEAgaW5kZXggNmI1NTMxMy4u MzA2MjZhNiAxMDA2NDQKICAJCWJyZWFrOwogIAkgICAgICB9CiAgCSAgaWYgKG1hdGNoID09IDAp Ci1AQCAtMTE2MDQsNiArMTE3MzcsMjIgQEAgYWxsX3RyYWNlcG9pbnRzICgpCitAQCAtMTE3Njks NiArMTE4OTIsMjIgQEAgYWxsX3RyYWNlcG9pbnRzICgpCiAgICByZXR1cm4gdHBfdmVjOwogIH0K ICAKQEAgLTczNywxMCArOTA5LDEwIEBAIGluZGV4IDZiNTUzMTMuLjMwNjI2YTYgMTAwNjQ0CiAr fQogKwogIAwKLSAvKiBUaGlzIGhlbHAgc3RyaW5nIGlzIHVzZWQgZm9yIHRoZSBicmVhaywgaGJy ZWFrLCB0YnJlYWsgYW5kIHRoYnJlYWsgY29tbWFuZHMuCi0gICAgSXQgaXMgZGVmaW5lZCBhcyBh IG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTE2NzMsNiArMTE4MjIsMTA3IEBA IHNhdmVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gICBoZWxwX2xpc3QgKHNh dmVfY21kbGlzdCwgInNhdmUgIiwgLTEsIGdkYl9zdGRvdXQpOworIC8qIFRoaXMgaGVscCBzdHJp bmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhaworICAg IGNvbW1hbmRzLiAgSXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRp b24uCitAQCAtMTE4NTQsNiArMTE5OTMsMTA3IEBAIGl0ZXJhdGVfb3Zlcl9icmVha3BvaW50cyAo aW50ICgqY2FsbGJhY2spIChzdHJ1Y3QgYnJlYWtwb2ludCAqLCB2b2lkICopLAorICAgcmV0dXJu IE5VTEw7CiAgfQogIAogK3N0YXRpYyB2b2lkCkBAIC04NDQsMjAgKzEwMTYsMjAgQEAgaW5kZXgg NmI1NTMxMy4uMzA2MjZhNiAxMDA2NDQKICsgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAo Yiwgc2Fscyk7CiArfQogKwotIHN0cnVjdCBicmVha3BvaW50ICoKLSBpdGVyYXRlX292ZXJfYnJl YWtwb2ludHMgKGludCAoKmNhbGxiYWNrKSAoc3RydWN0IGJyZWFrcG9pbnQgKiwgdm9pZCAqKSwK LSAJCQkgIHZvaWQgKmRhdGEpCi1AQCAtMTIyMjIsNCArMTI0NzIsNSBAQCBpbmZlcmlvciBpbiBh bGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0ZWQgbW9kZSBpcyBv ZmYuIiksCisgdm9pZAorIF9pbml0aWFsaXplX2JyZWFrcG9pbnQgKHZvaWQpCisgeworQEAgLTEy Mzg4LDQgKzEyNjI4LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMg YXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAogICAgYXV0b21hdGljX2hhcmR3 YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9j ZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwogKyAgb2JzZXJ2ZXJfYXR0YWNoX21h cmtfdXNlZCAoYnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQpOwogIH0KIGRpZmYgLS1naXQgYS9n ZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFrcG9pbnQuaAotaW5kZXggZTM0YzJkMy4uNGFhZGQ1 NyAxMDA2NDQKK2luZGV4IGJmYWU4ZDkuLmEwNThlNDYgMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtw b2ludC5oCiArKysgYi9nZGIvYnJlYWtwb2ludC5oCi1AQCAtMTM4LDYgKzEzOCw5IEBAIGVudW0g YnB0eXBlCitAQCAtMTQ3LDYgKzE0Nyw5IEBAIGVudW0gYnB0eXBlCiAgCiAgICAgIC8qIEV2ZW50 IGZvciBKSVQgY29tcGlsZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0aW9uLiAgKi8KICAgICAg YnBfaml0X2V2ZW50LApAQCAtODg2LDYgKzEwNTgsMTkgQEAgaW5kZXggMDRmODEyNy4uMmUyOWVi MiAxMDA2NDQKICAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIChpbnQpIChoaWdo X2JvdW5kIC0gbG93X2JvdW5kICsgMSkpOwogIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJd Iik7CiAgCitkaWZmIC0tZ2l0IGEvZ2RiL2RlZnMuaCBiL2dkYi9kZWZzLmgKK2luZGV4IDQ4OWRl NzQuLjMzNWQzZjUgMTAwNjQ0CistLS0gYS9nZGIvZGVmcy5oCisrKysgYi9nZGIvZGVmcy5oCitA QCAtMzk4LDYgKzM5OCw4IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jl c3RvcmVfcGFnZV9pbmZvICh2b2lkKTsKKyBleHRlcm4gc3RydWN0IGNsZWFudXAgKgorICAgc2V0 X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7Cisg CisrZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9m cmFtZSAodm9pZCk7CisrCisgZXh0ZXJuIGNoYXIgKmdkYl9yZWFscGF0aCAoY29uc3QgY2hhciAq KTsKKyBleHRlcm4gY2hhciAqeGZ1bGxwYXRoIChjb25zdCBjaGFyICopOworIAogZGlmZiAtLWdp dCBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8gYi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCiBpbmRl eCA0YTExMmFhLi43YjZiZWQ0IDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwpA QCAtMTAzMiwxMCArMTIxNywxMCBAQCBpbmRleCBlMTliOGVkLi4zNDNlMTYwIDEwMDY0NAogIFRo aXMgb2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAK ICBTZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgogZGlmZiAtLWdpdCBhL2dkYi9k d2FyZjJleHByLmMgYi9nZGIvZHdhcmYyZXhwci5jCi1pbmRleCBiOWFlMTA4Li4yNTU1OTA4IDEw MDY0NAoraW5kZXggMjliZmNmNC4uYzMzOTM3OCAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJleHBy LmMKICsrKyBiL2dkYi9kd2FyZjJleHByLmMKLUBAIC04NzUsNiArODc1LDEzIEBAIGV4ZWN1dGVf c3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKK0BAIC05MDAsNiArOTAw LDEzIEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwK ICAJICBjdHgtPmR3YXJmX2NhbGwgKGN0eCwgcmVzdWx0KTsKICAJICBnb3RvIG5vX3B1c2g7CiAg CkBAIC0xMDUwLDEwICsxMjM1LDEwIEBAIGluZGV4IGI5YWUxMDguLjI1NTU5MDggMTAwNjQ0CiAg CSAgZXJyb3IgKF8oIlVuaGFuZGxlZCBkd2FyZiBleHByZXNzaW9uIG9wY29kZSAweCV4IiksIG9w KTsKICAJfQogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmggYi9nZGIvZHdhcmYyZXhwci5o Ci1pbmRleCA2MWI4ZjAwLi5kOTRjMDNjIDEwMDY0NAoraW5kZXggNjhjYzY2Ny4uNWI1ZjI5YyAx MDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJleHByLmgKICsrKyBiL2dkYi9kd2FyZjJleHByLmgKLUBA IC0xMDgsOSArMTA4LDE1IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQKK0BAIC0xMTQsOSAr MTE0LDE1IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQKICAjaWYgMAogICAgLyogTm90IHll dCBpbXBsZW1lbnRlZC4gICovCiAgCkBAIC0xMDcxLDEwICsxMjU2LDEwIEBAIGluZGV4IDYxYjhm MDAuLmQ5NGMwM2MgMTAwNjQ0CiAgICAvKiBUaGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHBy ZXNzaW9uIHJlY3Vyc2lvbiwgdmlhIERXX09QX2NhbGwqLAogICAgICAgRFdfT1BfZmJyZWcsIERX X09QX3B1c2hfb2JqZWN0X2FkZHJlc3MsIGV0Yy4sIGFuZCB0aGUgbWF4aW11bQogZGlmZiAtLWdp dCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggYjJhZWNmMi4uYWZj NzkwNyAxMDA2NDQKK2luZGV4IGYwZTA4YzcuLmQ1YzBjMzYgMTAwNjQ0CiAtLS0gYS9nZGIvZHdh cmYybG9jLmMKICsrKyBiL2dkYi9kd2FyZjJsb2MuYwotQEAgLTEyNyw2ICsxMjcsOSBAQCBzdHJ1 Y3QgZHdhcmZfZXhwcl9iYXRvbgorQEAgLTEzMyw2ICsxMzMsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhw cl9iYXRvbgogIHsKICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKQEAgLTEwODQsOSArMTI2OSw5IEBAIGluZGV4IGIyYWVj ZjIuLmFmYzc5MDcgMTAwNjQ0CiAgfTsKICAKICAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2Fy ZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICAqLwotQEAgLTE5NSwyMyArMTk4LDMzIEBAIGR3YXJmX2V4 cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywK K0BAIC0yMDEsMjMgKzIwNCwzMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5 bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCiAgICAgICAgc3ltYmF0b24gPSBTWU1CT0xf TE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYyk7Ci0gICAgICAgKnN0YXJ0ID0gZmluZF9sb2NhdGlv bl9leHByZXNzaW9uIChzeW1iYXRvbiwgbGVuZ3RoLCBwYyk7CisgICAgICAgKnN0YXJ0ID0gZHdh cmYyX2ZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoc3ltYmF0b24sIGxlbmd0aCwgcGMpOwogICAg ICB9CiAtICBlbHNlCiArICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMp ID09ICZkd2FyZjJfbG9jZXhwcl9mdW5jcykKQEAgLTExMjcsOCArMTMxMiw4IEBAIGluZGV4IGIy YWVjZjIuLmFmYzc5MDcgMTAwNjQ0CiAgfQogIAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgQ29tcHV0ZXMgdGhlIENGQSBmb3IKLUBAIC0yNjMsNiAr Mjc2LDE1OCBAQCBkd2FyZl9leHByX2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRl eHQgKmN0eCwgc2l6ZV90IGRpZV9vZmZzZXQpCi0gICByZXR1cm4gcGVyX2N1X2R3YXJmX2NhbGwg KGN0eCwgZGllX29mZnNldCwgZGViYXRvbi0+cGVyX2N1KTsKK0BAIC0yODQsNiArMjk3LDE1OSBA QCBkd2FyZl9leHByX2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwg c2l6ZV90IGRpZV9vZmZzZXQpCisgCQkJICAgIGN0eC0+Z2V0X2ZyYW1lX3BjLCBjdHgtPmJhdG9u KTsKICB9CiAgCiArc3RhdGljIENPUkVfQUREUgpAQCAtMTIwOSw2ICsxMzk0LDcgQEAgaW5kZXgg YjJhZWNmMi4uYWZjNzkwNyAxMDA2NDQKICsgIGN0eC0+cmVhZF9tZW0gPSBkd2FyZl9leHByX3Jl YWRfbWVtOwogKyAgY3R4LT5nZXRfZnJhbWVfYmFzZSA9IGR3YXJmX2V4cHJfZnJhbWVfYmFzZTsK ICsgIGN0eC0+Z2V0X2ZyYW1lX2NmYSA9IGR3YXJmX2V4cHJfZnJhbWVfY2ZhOworKyAgY3R4LT5n ZXRfZnJhbWVfcGMgPSBkd2FyZl9leHByX2ZyYW1lX3BjOwogKyAgY3R4LT5nZXRfdGxzX2FkZHJl c3MgPSBkd2FyZl9leHByX3Rsc19hZGRyZXNzOwogKyAgY3R4LT5kd2FyZl9jYWxsID0gZHdhcmZf ZXhwcl9kd2FyZl9jYWxsOwogKyAgY3R4LT5nZXRfb2JqZWN0X2FkZHJlc3MgPSBkd2FyZl9leHBy X29iamVjdF9hZGRyZXNzOwpAQCAtMTI3MCw4ICsxNDU2LDggQEAgaW5kZXggYjJhZWNmMi4uYWZj NzkwNyAxMDA2NDQKICsgIGlmICghZGxsYmF0b24pCiArICAgIHJldHVybiAwOwogKwotKyAgZGF0 YSA9IGZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoZGxsYmF0b24sICZzaXplLAotKwkJCQkgICBn ZXRfZnJhbWVfYWRkcmVzc19pbl9ibG9jayAoZnJhbWUpKTsKKysgIGRhdGEgPSBkd2FyZjJfZmlu ZF9sb2NhdGlvbl9leHByZXNzaW9uIChkbGxiYXRvbiwgJnNpemUsCisrCQkJCQkgIGdldF9mcmFt ZV9hZGRyZXNzX2luX2Jsb2NrIChmcmFtZSkpOwogKyAgaWYgKGRhdGEgPT0gTlVMTCkKICsgICAg cmV0dXJuIDA7CiArCkBAIC0xMjg2LDI5ICsxNDcyLDI5IEBAIGluZGV4IGIyYWVjZjIuLmFmYzc5 MDcgMTAwNjQ0CiAgc3RydWN0IHBpZWNlX2Nsb3N1cmUKICB7CiAgICAvKiBSZWZlcmVuY2UgY291 bnQuICAqLwotQEAgLTg4NywxMCArMTA1Miw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJCQkgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKK0BAIC0xMDM4LDEwICsxMjA0LDggQEAgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCisgCQkJICAgICAgIExPTkdFU1QgYnl0ZV9vZmZzZXQpCiAgewogICAg c3RydWN0IHZhbHVlICpyZXR2YWw7CiAtICBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiBiYXRvbjsK ICAgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKLS0gIHN0cnVjdCBjbGVhbnVwICpv bGRfY2hhaW47CisgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwogLSAgc3RydWN0IG9iamZp bGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci0rICBzdHJ1Y3Qg Y2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwogIAot ICAgaWYgKHNpemUgPT0gMCkKLSAgICAgewotQEAgLTkwMCwyNCArMTA2Myw4IEBAIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKKyAgIGlmIChieXRlX29mZnNldCA8IDApCisgICAgIGludmFsaWRfc3ludGhldGljX3Bv aW50ZXIgKCk7CitAQCAtMTA1NCwyNSArMTIxOCwxMCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rl c2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAg ICAgICByZXR1cm4gcmV0dmFsOwogICAgICB9CiAgCiAtICBiYXRvbi5mcmFtZSA9IGZyYW1lOwog LSAgYmF0b24ucGVyX2N1ID0gcGVyX2N1OwotKyAgY3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAo ZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAg KG51bGxfY2xlYW51cCwgMCk7CiAgCiAtICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgp OwogLSAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChj dHgpOwotLQorKyAgY3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUs IHBlcl9jdSk7CisgCiAtICBjdHgtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxl KTsKIC0gIGN0eC0+YWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7 CiAtICBjdHgtPm9mZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CkBA IC0xMzE3LDYgKzE1MDMsNyBAQCBpbmRleCBiMmFlY2YyLi5hZmM3OTA3IDEwMDY0NAogLSAgY3R4 LT5yZWFkX21lbSA9IGR3YXJmX2V4cHJfcmVhZF9tZW07CiAtICBjdHgtPmdldF9mcmFtZV9iYXNl ID0gZHdhcmZfZXhwcl9mcmFtZV9iYXNlOwogLSAgY3R4LT5nZXRfZnJhbWVfY2ZhID0gZHdhcmZf ZXhwcl9mcmFtZV9jZmE7CistICBjdHgtPmdldF9mcmFtZV9wYyA9IGR3YXJmX2V4cHJfZnJhbWVf cGM7CiAtICBjdHgtPmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7CiAt ICBjdHgtPmR3YXJmX2NhbGwgPSBkd2FyZl9leHByX2R3YXJmX2NhbGw7CiAtCkBAIC0xMzI0LDEw ICsxNTExLDE0IEBAIGluZGV4IGIyYWVjZjIuLmFmYzc5MDcgMTAwNjQ0CiAgICBpZiAoY3R4LT5u dW1fcGllY2VzID4gMCkKICAgICAgewogICAgICAgIHN0cnVjdCBwaWVjZV9jbG9zdXJlICpjOwot QEAgLTk1MSw2ICsxMDk4LDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0xMTE2LDYgKzEyNjUsMTUg QEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCSAgICBDT1JFX0FERFIgYWRkcmVzcyA9IGR3YXJmX2V4 cHJfZmV0Y2hfYWRkcmVzcyAoY3R4LCAwKTsKICAJICAgIGludCBpbl9zdGFja19tZW1vcnkgPSBk d2FyZl9leHByX2ZldGNoX2luX3N0YWNrX21lbW9yeSAoY3R4LCAwKTsKICAKKysJICAgIC8qIEZy YW1lIG1heSBiZSBuZWVkZWQgZm9yIGNoZWNrX3R5cGVkZWYgb2YgVFlQRV9EWU5BTUlDLiAgKi8K KysJICAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lICgpOworKwkgICAgc2Vs ZWN0X2ZyYW1lIChmcmFtZSk7CisrCiArCSAgICAvKiBvYmplY3RfYWRkcmVzc19zZXQgY2FsbGVk IGhlcmUgaXMgcmVxdWlyZWQgaW4gQUxMT0NBVEVfVkFMVUUncwogKwkgICAgICAgQ0hFQ0tfVFlQ RURFRiBmb3IgdGhlIG9iamVjdCdzIHBvc3NpYmxlCiArCSAgICAgICBEV19PUF9wdXNoX29iamVj dF9hZGRyZXNzLiAgKi8KQEAgLTEzMzYsNyArMTUyNyw3IEBAIGluZGV4IGIyYWVjZjIuLmFmYzc5 MDcgMTAwNjQ0CiAgCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CiAgCSAgICBW QUxVRV9MVkFMIChyZXR2YWwpID0gbHZhbF9tZW1vcnk7CiAgCSAgICBzZXRfdmFsdWVfbGF6eSAo cmV0dmFsLCAxKTsKLUBAIC0yNTg3LDExICsyNzM5LDUxIEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92 YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor QEAgLTI4MTAsMTEgKzI5NjgsNTEgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVj dCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJIGRsYmF0b24t PnBlcl9jdSk7CiAgfQogIApAQCAtMTM5MSwxMCArMTU4MiwxMCBAQCBpbmRleCBiMmFlY2YyLi5h ZmM3OTA3IDEwMDY0NAogKyAgbWlzc2luZ190cmFjZXBvaW50X3Zhcl9yZWYKICt9OwogZGlmZiAt LWdpdCBhL2dkYi9kd2FyZjJsb2MuaCBiL2dkYi9kd2FyZjJsb2MuaAotaW5kZXggYTJjZmU3Zi4u ZjJkMDdlZiAxMDA2NDQKK2luZGV4IGU5NDM0NmMuLjU1YmVlYzIgMTAwNjQ0CiAtLS0gYS9nZGIv ZHdhcmYybG9jLmgKICsrKyBiL2dkYi9kd2FyZjJsb2MuaAotQEAgLTk2LDUgKzk2LDE0IEBAIHN0 cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbgorQEAgLTEwNSw1ICsxMDUsMTQgQEAgc3RydWN0IGR3 YXJmMl9sb2NsaXN0X2JhdG9uCiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0 ZWRfb3BzIGR3YXJmMl9sb2NleHByX2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9s X2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jczsKQEAgLTE0MTAsMTIgKzE2MDEsMTIg QEAgaW5kZXggYTJjZmU3Zi4uZjJkMDdlZiAxMDA2NDQKICAKICAjZW5kaWYgLyogZHdhcmYybG9j LmggKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwot aW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKK2luZGV4IDgwNzcwZjguLjk5MDg0OTUgMTAw NjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAt MTIyMSw2ICsxMjIxLDkgQEAgc3RhdGljIGludCBhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQg KHN0cnVjdCBhdHRyaWJ1dGUgKik7Ci0gCi0gc3RhdGljIGludCBhdHRyX2Zvcm1faXNfY29uc3Rh bnQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7CitAQCAtMTIwNiw2ICsxMjA2LDkgQEAgc3RhdGljIHZv aWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKKyAJCQkJICAg c3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbiwKKyAJCQkJICAgc3RydWN0IGF0dHJp YnV0ZSAqYXR0cik7CiAgCiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZHdh cmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbgogKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KTsKQEAgLTE0MjMsNyArMTYxNCw3IEBAIGluZGV4IDQwNGZhZjgu LmUzNzJhZmIgMTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVk IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAogIAkJCQkJIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAJ CQkJCSBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci1AQCAtMTI1MSw2ICsxMjU0LDkgQEAgc3RhdGlj IHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKK0BAIC0xMjQwLDYgKzEyNDMsOSBA QCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAogIHN0YXRpYyB2 b2lkIGZyZWVfb25lX2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKik7CiAgCkBAIC0xNDMzLDcgKzE2 MjQsNyBAQCBpbmRleCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAogIHN0YXRpYyBzdHJ1Y3QgdHlw ZSAqc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJ ICBzdHJ1Y3QgZHdhcmYyX2N1ICopOwogIAotQEAgLTEyNzUsNiArMTI4MSw5IEBAIHN0YXRpYyBz dHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnNldCAodW5zaWduZWQgaW50LAorQEAgLTEy NjQsNiArMTI3MCw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnNl dCAodW5zaWduZWQgaW50LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIApAQCAtMTQ0Myw3 ICsxNjM0LDcgQEAgaW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICBzdGF0aWMgdm9pZCBk d2FyZjJfcmVsZWFzZV9xdWV1ZSAodm9pZCAqZHVtbXkpOwogIAogIHN0YXRpYyB2b2lkIHF1ZXVl X2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTcxMTIs NiArNzEyMSwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNzIzNyw2ICs3MjQ2LDI5IEBAIHByb2Nl c3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAt MTQ3Myw3ICsxNjY0LDcgQEAgaW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICAvKiBFeHRy YWN0IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQg aXQgaW4KICAgICB0aGUgRElFJ3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5k bGVzIG9uZSBkaW1lbnNpb25hbAogICAgIGFycmF5cy4gICovCi1AQCAtNzEyNSw3ICs3MTU3LDcg QEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCitAQCAtNzI1MCw3ICs3MjgyLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVu dF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdl X3R5cGVzID0gTlVMTDsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC0xNDgyLDcgKzE2 NzMsNyBAQCBpbmRleCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAg KmJhY2tfdG87CiAgICBjaGFyICpuYW1lOwogIAotQEAgLTcxNzgsMTcgKzcyMTAsMTEgQEAgcmVh ZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CitAQCAtNzMwMywxNyArNzMzNSwxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAg CiAgICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikK QEAgLTE1MDUsNyArMTY5Niw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAgCiAg ICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhl eSBvY2N1ciBvbgogICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRz IGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAgLTc2ODEsMjkgKzc3MDcsMTE0IEBAIHJlYWRf dGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCitAQCAtNzgwNiwyOSArNzgzMiwxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiAgICBzdHJ1Y3QgdHlwZSAq dHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOwogICAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cjsKQEAgLTE2MzQsNyArMTgyNSw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJh ZmIgMTAwNjQ0CiAgICBjaGFyX3R5cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+ bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7CiAgICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChO VUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUpOwogIAotQEAgLTc5ODUsOCArODA5Niw3IEBAIHJl YWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorQEAgLTgxMTAsOCArODIyMSw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2Vf dHlwZTsKICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAq YXR0cjsKQEAgLTE2NDQsNyArMTgzNSw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0 CiAgICBjaGFyICpuYW1lOwogICAgTE9OR0VTVCBuZWdhdGl2ZV9tYXNrOwogIAotQEAgLTc5OTks NDggKzgxMDksMTI1IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTgxMjQsNDggKzgyMzQsMTI1IEBAIHJlYWRfc3Vi cmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog ICAgaWYgKHJhbmdlX3R5cGUpCiAgICAgIHJldHVybiByYW5nZV90eXBlOwogIApAQCAtMTgwMiw3 ICsxOTkzLDcgQEAgaW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICAgICAgfQogIAogICAg LyogRHdhcmYtMiBzcGVjaWZpY2F0aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3Vi cmFuZ2UgdHlwZXMKLUBAIC04MDgyLDIwICs4MjY5LDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTgyMDcsMjAg KzgzOTQsNDEgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiAgCX0KICAgICAgfQogIApAQCAtMTg1Niw3ICsyMDQ3LDcgQEAg aW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAo ZGllLCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC0xMDU1OSwxMCArMTA3NjcsMTIgQEAgdmFyX2Rl Y29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3lt LAorQEAgLTEwNjg2LDEwICsxMDg5NCwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3Qg YXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRo ZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJl bmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWln aHQKICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3Qg dW5sZXNzIHBlcmZvcm1hbmNlCkBAIC0xODcxLDcgKzIwNjIsNyBAQCBpbmRleCA0MDRmYWY4Li5l MzcyYWZiIDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBEV0FSRiBpbmZv cm1hdGlvbiBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCi1AQCAtMTA2MDAsNiArMTA4MTAs OCBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTA3MjcsNiArMTA5MzcsOCBAQCBuZXdf c3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UsCiAgICAgICAgZWxzZQogIAlzeW0gPSBPQlNUQUNLX1pBTExPQyAo Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IHN5bWJvbCk7CiAgICAgICAgT0JKU1RB VCAob2JqZmlsZSwgbl9zeW1zKyspOwpAQCAtMTg4MCw3ICsyMDcxLDcgQEAgaW5kZXggNDA0ZmFm OC4uZTM3MmFmYiAxMDA2NDQKICAKICAgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUg YW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLwogICAgICAgIFNZTUJP TF9TRVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxhbmd1YWdlKTsKLUBAIC0xMTM2Nyw2ICsxMTU3OSw5 IEBAIHJlYWRfdHlwZV9kaWVfMSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorQEAgLTExNDk0LDYgKzExNzA2LDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgYnJlYWs7CiAgICAg IH0KICAKQEAgLTE4OTAsOCArMjA4MSw4IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0 CiAgICByZXR1cm4gdGhpc190eXBlOwogIH0KICAKLUBAIC0xNDExOSw2NyArMTQzMzQsMTAyIEBA IGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKLSAgICAgfQor QEAgLTE0MjkyLDU5ICsxNDUwNyw5NyBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBk d2FyZjJfY3UgKmN1LAorICAgYmF0b24tPmJhc2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7 CiAgfQogIAogLXN0YXRpYyB2b2lkCkBAIC0xOTExLDI3ICsyMTAyLDE1IEBAIGluZGV4IDQwNGZh ZjguLmUzNzJhZmIgMTAwNjQ0CiAtICAgIHsKIC0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3Rf YmF0b24gKmJhdG9uOwogKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKLSAK LS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAotLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKLS0g ICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0gICAgICBnZGJfYXNzZXJ0IChiYXRv bi0+cGVyX2N1KTsKKysKICsgIGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp OwotIAotLSAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2Jq ZmlsZSwKLS0JCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOworKwogKyAgYmF0b24gPSBv YnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqYmF0 b24pKTsKICsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwogKyAgZ2RiX2Fzc2VydCAoYmF0 b24tPnBlcl9jdSk7CiAgCi0tICAgICAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9j YXRpb24gbGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3ZQotLQkgZG9uJ3QgcnVuIG9mZiB0aGUgZWRn ZSBvZiB0aGUgc2VjdGlvbi4gICovCi0tICAgICAgYmF0b24tPnNpemUgPSBkd2FyZjJfcGVyX29i amZpbGUtPmxvYy5zaXplIC0gRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgIGJhdG9uLT5kYXRhID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIpOwotLSAgICAg IGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOwotLSAgICAgIGlmIChjdS0+ YmFzZV9rbm93biA9PSAwKQotLQljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0tCQkg ICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFk ZHJlc3MuIikpOworLSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5v YmpmaWxlX29ic3RhY2ssCistCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9i YXRvbikpOwogKyAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBk YXRhIHBvaW50ZXIKICsgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFsIGRhdGEuICBXZSdyZSBzdGls bCBwb2ludGluZyBpbnRvIHRoZQogKyAgICAgaW5mb19idWZmZXIgZm9yIFNZTSdzIG9iamZpbGU7 IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNlCkBAIC0xOTQwLDIwICsyMTE5LDI0IEBAIGluZGV4 IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiArICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRy KS0+c2l6ZTsKICsgIGJhdG9uLT5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwogKyAgZ2Ri X2Fzc2VydCAoYmF0b24tPnNpemUgPT0gMCB8fCBiYXRvbi0+ZGF0YSAhPSBOVUxMKTsKLSsKKyAK Ky0gICAgICBmaWxsX2luX2xvY2xpc3RfYmF0b24gKGN1LCBiYXRvbiwgYXR0cik7CiArICByZXR1 cm4gYmF0b247CiArfQotKworIAorLSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQorLQlj b21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCistCQkgICBfKCJMb2NhdGlvbiBsaXN0IHVz ZWQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOwogK3N0YXRpYyBz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKgogK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0 b24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKICsg IHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqYmF0b247Ci0rCisgCiArICAvKiBEV19BVF9s b2NhdGlvbiBvZiB0aGUgcmVmZXJlbmNlZCBESUUgbWF5IGJlIG1pc3NpbmcgaWYgdGhlIHJlZmVy ZW5jZWQKICsgICAgIHZhcmlhYmxlIGhhcyBiZWVuIG9wdGltaXplZCBvdXQuICAqLwogKyAgaWYg KCFhdHRyKQogKyAgICByZXR1cm4gTlVMTDsKLSAKKysKICsgIGR3YXJmMl9yZWFkX3NlY3Rpb24g KGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKICsJCSAgICAgICAmZHdhcmYyX3Blcl9vYmpm aWxlLT5sb2MpOwogKwpAQCAtMTk2NiwxNCArMjE0OSw5IEBAIGluZGV4IDQwNGZhZjguLmUzNzJh ZmIgMTAwNjQ0CiArCiArICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLAogKwkJCSBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbikp OwotKyAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rICBnZGJfYXNzZXJ0IChiYXRvbi0+ cGVyX2N1KTsKICsKLSsgIC8qIFdlIGRvbid0IGtub3cgaG93IGxvbmcgdGhlIGxvY2F0aW9uIGxp c3QgaXMsIGJ1dCBtYWtlIHN1cmUgd2UKLSsgICAgIGRvbid0IHJ1biBvZmYgdGhlIGVkZ2Ugb2Yg dGhlIHNlY3Rpb24uICAqLwotKyAgYmF0b24tPnNpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmxv Yy5zaXplIC0gRFdfVU5TTkQgKGF0dHIpOwotKyAgYmF0b24tPmRhdGEgPSBkd2FyZjJfcGVyX29i amZpbGUtPmxvYy5idWZmZXIgKyBEV19VTlNORCAoYXR0cik7Ci0rICBiYXRvbi0+YmFzZV9hZGRy ZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKKysgIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoY3UsIGJh dG9uLCBhdHRyKTsKKysKICsgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQogKyAgICBjb21wbGFp bnQgKCZzeW1maWxlX2NvbXBsYWludHMsCiArCSAgICAgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQg d2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOwpAQCAtMjA0Miw3ICsy MjIwLDcgQEAgaW5kZXggNDA0ZmFmOC4uZTM3MmFmYiAxMDA2NDQKICAgICAgfQogIH0KICAKLUBA IC0xNDUzMyw2ICsxNDc4MywzMSBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0 ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKK0BAIC0xNDY5MCw2ICsxNDk0MywzMSBAQCBv ZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVt X3JocykKICAgIHJldHVybiBvZnNfbGhzLT5vZmZzZXQgPT0gb2ZzX3Jocy0+b2Zmc2V0OwogIH0K ICAKQEAgLTIwNzQsNyArMjI1Miw3IEBAIGluZGV4IDQwNGZhZjguLmUzNzJhZmIgMTAwNjQ0CiAg LyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQRS4gIFNhdmUgaXQgaW4g Q1UncyBoYXNoCiAgICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNvbnZlbmllbmNlLCByZXR1 cm4gVFlQRS4KICAKLUBAIC0xNDU1OCw2ICsxNDgzMyw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC0xNDcxNSw2ICsxNDk5Myw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZpbGU7CiAgICBodGFiX3QgKnR5cGVfaGFzaF9wdHI7 CiAgCkBAIC0yMDg0LDcgKzIyNjIsNyBAQCBpbmRleCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAog ICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcg dHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2UgdGhl IHR5cGUtc3BlY2lmaWMgYXJlYSBpcwogZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9nZGIv ZWxmcmVhZC5jCi1pbmRleCAyNzBmOTNmLi5hNTg5YzIzIDEwMDY0NAoraW5kZXggZDYwN2I4Ny4u MmFhN2RkOSAxMDA2NDQKIC0tLSBhL2dkYi9lbGZyZWFkLmMKICsrKyBiL2dkYi9lbGZyZWFkLmMK IEBAIC0zNyw2ICszNyw3IEBACkBAIC0yMzY4LDcgKzI1NDYsNyBAQCBpbmRleCAyNzBmOTNmLi5h NTg5YzIzIDEwMDY0NAogIHN0cnVjdCBidWlsZF9pZAogICAgewogICAgICBzaXplX3Qgc2l6ZTsK LUBAIC04MDAsNiArMTA0OSw4IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKK0BAIC04MDYsNiArMTA1NSw4IEBAIGVsZl9zeW1m aWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKICAJ ICAgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKICAKICAgICAgICBlbGZfc3lt dGFiX3JlYWQgKG9iamZpbGUsIFNUX0RZTkFNSUMsIGR5bnN5bWNvdW50LCBkeW5fc3ltYm9sX3Rh YmxlLCAwKTsKQEAgLTMwMzgsNyArMzIxNiw3IEBAIGluZGV4IGUwY2ExMmMuLmRlNjMxMWEgMTAw NjQ0CiAgICBlbHNlCiAgICAgIHsKIGRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9n ZGJ0eXBlcy5jCi1pbmRleCBkOTZkMGY4Li40YmViY2RhIDEwMDY0NAoraW5kZXggYjY1MTA5OC4u NzAyNjlkNiAxMDA2NDQKIC0tLSBhL2dkYi9nZGJ0eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMu YwogQEAgLTM5LDYgKzM5LDkgQEAKQEAgLTMzMjIsNyArMzUwMCw3IEBAIGluZGV4IGQ5NmQwZjgu LjRiZWJjZGEgMTAwNjQ0CiArCVRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpID0gdGFyZ2V0X3R5cGU7 CiAgICAgICAgaWYgKFRZUEVfU1RVQiAodGFyZ2V0X3R5cGUpIHx8IFRZUEVfVEFSR0VUX1NUVUIg KHRhcmdldF90eXBlKSkKICAJewotIAkgIC8qIEVtcHR5LiAgKi8KKyAJICAvKiBOb3RoaW5nIHdl IGNhbiBkby4gICovCiAgCX0KICAgICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZ UEVfQ09ERV9BUlJBWQogLQkgICAgICAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxCkBAIC0z OTY4LDcgKzQxNDYsNyBAQCBpbmRleCBkOTZkMGY4Li40YmViY2RhIDEwMDY0NAogIAogICAgYWRk X3NldHNob3dfemludGVnZXJfY21kICgib3ZlcmxvYWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2Rl YnVnLCBfKCJcCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAot aW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2NDQKK2luZGV4IDFjZTJkOTEuLjEzM2Y1ODMgMTAw NjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgKIEBAIC0xNzAs NiArMTcwLDcgQEAgZW51bSB0eXBlX2ZsYWdfdmFsdWUKQEAgLTQxODIsNyArNDM2MCw3IEBAIGlu ZGV4IDUxZWI0NDUuLjYyN2U1YWYgMTAwNjQ0CiAgCiAgLyogQysrICovCiAgCi1AQCAtMTE3Niw2 ICsxMjg1LDEwIEBAIHN0cnVjdCBidWlsdGluX3R5cGUKK0BAIC0xMTc3LDYgKzEyODYsMTAgQEAg c3RydWN0IGJ1aWx0aW5fdHlwZQogICAgICAgKCopICgpIGNhbiBzZXJ2ZXIgYXMgYSBnZW5lcmlj IGZ1bmN0aW9uIHBvaW50ZXIuICAqLwogICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19wdHI7 CiAgCkBAIC00MTkzLDcgKzQzNzEsNyBAQCBpbmRleCA1MWViNDQ1Li42MjdlNWFmIDEwMDY0NAog IAogICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KICAKLUBAIC0xMjE2LDYgKzEzMjks OCBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCitAQCAtMTIxNyw2ICsxMzMwLDggQEAgc3RydWN0IG9i amZpbGVfdHlwZQogIAogICAgLyogVHlwZXMgdXNlZCBmb3Igc3ltYm9scyB3aXRoIG5vIGRlYnVn IGluZm9ybWF0aW9uLiAgKi8KICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfc3ltYm9sOwpA QCAtNDIwMiw3ICs0MzgwLDcgQEAgaW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2NDQKICAgIHN0 cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOwogICAgc3RydWN0IHR5cGUgKm5vZGVidWdf dW5rbm93bl9zeW1ib2w7CiAgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9sOwotQEAg LTEzNjMsNiArMTQ3OCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBl IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAorQEAgLTEzNjQsNiArMTQ3OSwxOCBAQCBl eHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdHlwZSAqLAogIAkJCQkgICAgICAgc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJuIHN0cnVjdCB0 eXBlICpsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwog IApAQCAtNDIyMSw3ICs0Mzk5LDcgQEAgaW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2NDQKICBl eHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHR5cGUgKiwKICAJCQkJCXN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAq bG9va3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci1AQCAt MTQwOCw2ICsxNTM1LDggQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB0eXBlICopOworQEAgLTE0MDksNiArMTUzNiw4IEBAIGV4dGVybiBpbnQg aXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKICBl eHRlcm4gaW50IGlzX3VuaXF1ZV9hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVl ICopOwogIApAQCAtNDIzMCw3ICs0NDA4LDcgQEAgaW5kZXggNTFlYjQ0NS4uNjI3ZTVhZiAxMDA2 NDQKICAvKiBPdmVybG9hZCByZXNvbHV0aW9uICovCiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0go YnYpICgoYnYpLT5yYW5rWzBdKQotQEAgLTE0NzgsMTAgKzE2MDcsMTEgQEAgZXh0ZXJuIHZvaWQg bWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOworQEAgLTE0NzksMTAgKzE2MDgs MTEgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwog IAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSk7CiAgCkBAIC00MjQ1LDEyMyArNDQyMyw2MzIgQEAgaW5kZXggNTFlYjQ0NS4u NjI3ZTVhZiAxMDA2NDQKICsKICAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLwogZGlmZiAtLWdpdCBh L2dkYi9pMzg2LWxpbnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKLWluZGV4IDRmY2Ux YWMuLjE0NGE4OTkgMTAwNjQ0CitpbmRleCA0ZmNlMWFjLi43YjY5NjFlIDEwMDY0NAogLS0tIGEv Z2RiL2kzODYtbGludXgtbmF0LmMKICsrKyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1AQCAtNzQ3 LDYgKzc0NywyMSBAQCBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBt YXNrKQotICAgICB9CitAQCAtNjMzLDIyICs2MzMsMTMgQEAgaTM4Nl9saW51eF9zdG9yZV9pbmZl cmlvcl9yZWdpc3RlcnMgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgfQorIAwKKyAKKy0vKiBT dXBwb3J0IGZvciBkZWJ1ZyByZWdpc3RlcnMuICAqLworLQorLXN0YXRpYyB1bnNpZ25lZCBsb25n IGkzODZfbGludXhfZHJbRFJfQ09OVFJPTCArIDFdOworLQorIC8qIEdldCBkZWJ1ZyByZWdpc3Rl ciBSRUdOVU0gdmFsdWUgZnJvbSBvbmx5IHRoZSBvbmUgTFdQIG9mIFBUSUQuICAqLworIAorIHN0 YXRpYyB1bnNpZ25lZCBsb25nCistaTM4Nl9saW51eF9kcl9nZXQgKHB0aWRfdCBwdGlkLCBpbnQg cmVnbnVtKQorK2kzODZfbGludXhfZHJfZ2V0IChpbnQgdGlkLCBpbnQgcmVnbnVtKQorIHsKKy0g IGludCB0aWQ7CisgICB1bnNpZ25lZCBsb25nIHZhbHVlOworIAorLSAgdGlkID0gVElER0VUIChw dGlkKTsKKy0gIGlmICh0aWQgPT0gMCkKKy0gICAgdGlkID0gUElER0VUIChwdGlkKTsKKy0KKyAg IC8qIEZJWE1FOiBrZXR0ZW5pcy8yMDAxLTAzLTI3OiBDYWxsaW5nIHBlcnJvcl93aXRoX25hbWUg aWYgdGhlCisgICAgICBwdHJhY2UgY2FsbCBmYWlscyBicmVha3MgZGVidWdnaW5nIHJlbW90ZSB0 YXJnZXRzLiAgVGhlIGNvcnJlY3QKKyAgICAgIHdheSB0byBmaXggdGhpcyBpcyB0byBhZGQgdGhl IGhhcmR3YXJlIGJyZWFrcG9pbnQgYW5kIHdhdGNocG9pbnQKK0BAIC02NzAsMTQgKzY2MSw4IEBA IGkzODZfbGludXhfZHJfZ2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSkKKyAvKiBTZXQgZGVi dWcgcmVnaXN0ZXIgUkVHTlVNIHRvIFZBTFVFIGluIG9ubHkgdGhlIG9uZSBMV1Agb2YgUFRJRC4g ICovCisgCisgc3RhdGljIHZvaWQKKy1pMzg2X2xpbnV4X2RyX3NldCAocHRpZF90IHB0aWQsIGlu dCByZWdudW0sIHVuc2lnbmVkIGxvbmcgdmFsdWUpCisraTM4Nl9saW51eF9kcl9zZXQgKGludCB0 aWQsIGludCByZWdudW0sIHVuc2lnbmVkIGxvbmcgdmFsdWUpCisgeworLSAgaW50IHRpZDsKKy0K Ky0gIHRpZCA9IFRJREdFVCAocHRpZCk7CistICBpZiAodGlkID09IDApCistICAgIHRpZCA9IFBJ REdFVCAocHRpZCk7CistCisgICBlcnJubyA9IDA7CisgICBwdHJhY2UgKFBUUkFDRV9QT0tFVVNF UiwgdGlkLAorIAkgIG9mZnNldG9mIChzdHJ1Y3QgdXNlciwgdV9kZWJ1Z3JlZ1tyZWdudW1dKSwg dmFsdWUpOworQEAgLTY4NSwzNSArNjcwLDc4IEBAIGkzODZfbGludXhfZHJfc2V0IChwdGlkX3Qg cHRpZCwgaW50IHJlZ251bSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKKyAgICAgcGVycm9yX3dpdGhf bmFtZSAoXygiQ291bGRuJ3Qgd3JpdGUgZGVidWcgcmVnaXN0ZXIiKSk7CiAgfQogIAotKy8qIFNl ZSBpMzg2X2RyX2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4Nl9saW51 eF9kcl9zZXRfY29udHJvbAotKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBhcyB0aGV5 IHdvdWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoaTM4Nl9saW51eF9kcikuICAq LworLS8qIFNldCBEUl9DT05UUk9MIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAq LworKy8qIEhlbHBlciBmb3IgaTM4Nl9saW51eF9kcl9zZXRfY29udHJvbC4gICovCiArCiArc3Rh dGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX2RldGFjaCAodm9pZCkKKytpMzg2X2xpbnV4X2RyX3Nl dF9jb250cm9sX2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICpjb250cm9sX3ZvaWRwKQogK3sKLSsg IGludCByZWdudW07CisrICB1bnNpZ25lZCBsb25nIGNvbnRyb2wgPSAqKHVuc2lnbmVkIGxvbmcg KikgY29udHJvbF92b2lkcDsKICsKLSsgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlk LCBEUl9DT05UUk9MLCAwKTsKLSsgIGkzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh+MFVMKTsK LSsgIGZvciAocmVnbnVtID0gRFJfRklSU1RBRERSOyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJl Z251bSsrKQotKyAgICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgcmVnbnVtLCAw KTsKKysgIGkzODZfbGludXhfZHJfc2V0ICh0aWQsIERSX0NPTlRST0wsIGNvbnRyb2wpOwogK30K ICsKKytzdGF0aWMgdm9pZCBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JF X0FERFIgYWRkcik7CisrCisrLyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwgTFdQcyBv ZiBDVVJSRU5UX0lORkVSSU9SLiAgKi8KKyAKICBzdGF0aWMgdm9pZAotIGkzODZfbGludXhfbmV3 X3RocmVhZCAocHRpZF90IHB0aWQpCisgaTM4Nl9saW51eF9kcl9zZXRfY29udHJvbCAodW5zaWdu ZWQgbG9uZyBjb250cm9sKQogIHsKLUBAIC05NzYsNiArOTkxLDcgQEAgX2luaXRpYWxpemVfaTM4 Nl9saW51eF9uYXQgKHZvaWQpCi0gICBpMzg2X2RyX2xvdy5yZXNldF9hZGRyID0gaTM4Nl9saW51 eF9kcl9yZXNldF9hZGRyOwotICAgaTM4Nl9kcl9sb3cuZ2V0X3N0YXR1cyA9IGkzODZfbGludXhf ZHJfZ2V0X3N0YXR1czsKLSAgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyA9IGkzODZfbGludXhf ZHJfdW5zZXRfc3RhdHVzOwotKyAgaTM4Nl9kcl9sb3cuZGV0YWNoID0gaTM4Nl9saW51eF9kcl9k ZXRhY2g7Ci0gICBpMzg2X3NldF9kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggKDQpOwotIAotICAgLyog T3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHRyYWNlIHJlc3VtZSBtZXRob2QuICAqLwotZGlmZiAtLWdp dCBhL2dkYi9pMzg2LW5hdC5jIGIvZ2RiL2kzODYtbmF0LmMKLWluZGV4IGVhYTM2NDQuLjA5MjFj N2UgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuYwotKysrIGIvZ2RiL2kzODYtbmF0LmMKLUBA IC01MzMsNiArNTMzLDE3IEBAIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLCBpbnQgdHlwZSwKLSAgIHJldHVybiByZXR2YWw7CistICBzdHJ1Y3QgbHdwX2lu Zm8gKmxwOworLSAgcHRpZF90IHB0aWQ7CisrICBpbnQgaW5mZXJpb3JfcGlkID0gcHRpZF9nZXRf cGlkIChpbmZlcmlvcl9wdGlkKTsKKysgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gY3VycmVudF9p bmZlcmlvciAoKTsKKysKKysgIC8qIFRoZSBhbWQ2NCBjb3VudGVycGFydCBhbmQgZGVzY3JpcHRp b24gaXMgYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wuICAqLworKyAgaWYgKGluZi0+cGlkICE9 IGluZmVyaW9yX3BpZCkKKysgICAgeworKyAgICAgIHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJf bWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgpOworKyAgICAgIGludCBpOworKworKyAgICAg IGlmICghZHJfbWlycm9yLT5hZGRyX3ByZXNldCkKKysJeworKwkgIGRyX21pcnJvci0+YWRkcl9w cmVzZXQgPSAxOworIAorLSAgaTM4Nl9saW51eF9kcltEUl9DT05UUk9MXSA9IGNvbnRyb2w7Cist ICBBTExfTFdQUyAobHAsIHB0aWQpCistICAgIGkzODZfbGludXhfZHJfc2V0IChwdGlkLCBEUl9D T05UUk9MLCBjb250cm9sKTsKKysJICBmb3IgKGkgPSAwOyBpIDwgRFJfTEFTVEFERFIgLSBEUl9G SVJTVEFERFI7IGkrKykKKysJICAgIGkzODZfbGludXhfZHJfc2V0X2FkZHIgKGksIGRyX21pcnJv ci0+YWRkcltpXSk7CisrCX0KKysgICAgfQorKworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hw b2ludF9sd3BzIChpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sX2NhbGxiYWNrLAorKwkJCQkgICAg ICZjb250cm9sKTsKICB9CiAgCi0rLyogU2VlIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICAq LworLS8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gQUREUiBpbiBhbGwgTFdQ cyBvZiBMV1BfTElTVC4gICovCisrLyogSGVscGVyIGZvciBpMzg2X2xpbnV4X2RyX3NldF9hZGRy LiAgKi8KICsKLStzdGF0aWMgaW50Ci0raTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpCisr c3RydWN0IGkzODZfbGludXhfZHJfc2V0X2FkZHJfZGF0YQorKyAgeworKyAgICBpbnQgcmVnbnVt OworKyAgICBDT1JFX0FERFIgYWRkcjsKKysgIH07CisrCisrc3RhdGljIHZvaWQKKytpMzg2X2xp bnV4X2RyX3NldF9hZGRyX2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICpkYXRhcF92b2lkcCkKICt7 Ci0rICBpZiAoaTM4Nl9kcl9sb3cuZGV0YWNoKQotKyAgICBpMzg2X2RyX2xvdy5kZXRhY2ggKCk7 CisrICBjb25zdCBzdHJ1Y3QgaTM4Nl9saW51eF9kcl9zZXRfYWRkcl9kYXRhICpkYXRhcCA9IGRh dGFwX3ZvaWRwOwogKwotKyAgcmV0dXJuIDA7CisrICBpMzg2X2xpbnV4X2RyX3NldCAodGlkLCBE Ul9GSVJTVEFERFIgKyBkYXRhcC0+cmVnbnVtLCBkYXRhcC0+YWRkcik7CiArfQogKwotIC8qIFJl dHVybiBub24temVybyBpZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRz IGF0Ci0gICAgYWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8K KysvKiBTZXQgYWRkcmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMg b2YgQ1VSUkVOVF9JTkZFUklPUi4KKysgICAqLwogIAotQEAgLTY4NSw2ICs2OTYsNyBAQCBpMzg2 X3VzZV93YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKnQpCi0gICB0LT50b19zdG9wcGVk X2RhdGFfYWRkcmVzcyA9IGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3M7Ci0gICB0LT50b19pbnNl cnRfd2F0Y2hwb2ludCA9IGkzODZfaW5zZXJ0X3dhdGNocG9pbnQ7Ci0gICB0LT50b19yZW1vdmVf d2F0Y2hwb2ludCA9IGkzODZfcmVtb3ZlX3dhdGNocG9pbnQ7Ci0rICB0LT50b19kZXRhY2hfd2F0 Y2hwb2ludHMgPSBpMzg2X2RldGFjaF93YXRjaHBvaW50czsKLSAgIHQtPnRvX2luc2VydF9od19i cmVha3BvaW50ID0gaTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludDsKLSAgIHQtPnRvX3JlbW92ZV9o d19icmVha3BvaW50ID0gaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludDsKKyBzdGF0aWMgdm9pZAor IGkzODZfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorIHsK Ky0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7CistICBwdGlkX3QgcHRpZDsKKysgIHN0cnVjdCBpMzg2 X2xpbnV4X2RyX3NldF9hZGRyX2RhdGEgZGF0YTsKKyAKKyAgIGdkYl9hc3NlcnQgKHJlZ251bSA+ PSAwICYmIHJlZ251bSA8PSBEUl9MQVNUQUREUiAtIERSX0ZJUlNUQUREUik7CisgCistICBpMzg2 X2xpbnV4X2RyW0RSX0ZJUlNUQUREUiArIHJlZ251bV0gPSBhZGRyOworLSAgQUxMX0xXUFMgKGxw LCBwdGlkKQorLSAgICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfRklSU1RBRERSICsgcmVn bnVtLCBhZGRyKTsKKysgIGRhdGEucmVnbnVtID0gcmVnbnVtOworKyAgZGF0YS5hZGRyID0gYWRk cjsKKysgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoaTM4Nl9saW51eF9kcl9z ZXRfYWRkcl9jYWxsYmFjaywgJmRhdGEpOwogIH0KLWRpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQu aCBiL2dkYi9pMzg2LW5hdC5oCi1pbmRleCA3MzE3ZTdkLi5lYTkxNGE1IDEwMDY0NAotLS0tIGEv Z2RiL2kzODYtbmF0LmgKLSsrKyBiL2dkYi9pMzg2LW5hdC5oCi1AQCAtNjIsNiArNjIsMTAgQEAg ZXh0ZXJuIHZvaWQgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICopOwot ICAgICAgIHVuc2V0X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUgc3BlY2lmaWVkIGJp dHMgb2YgdGhlIGRlYnVnCi0gCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBhbGwgTFdQ cwotIAotKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVhciBhbGwgZGVidWcg cmVnaXN0ZXJzIG9mIG9ubHkgdGhlCi0rCQkJCSAgSU5GRVJJT1JfUFRJRCB0YXNrIHdpdGhvdXQg YWZmZWN0aW5nIGFueQotKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KLSsKLSAgICBBZGRpdGlvbmFs bHksIHRoZSBuYXRpdmUgZmlsZSBzaG91bGQgc2V0IHRoZSBkZWJ1Z19yZWdpc3Rlcl9sZW5ndGgK LSAgICBmaWVsZCB0byA0IG9yIDggZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNl ZCBmb3IKLSAgICBkZXViZyByZWdpc3RlcnMuICAqLwotQEAgLTczLDYgKzc3LDcgQEAgc3RydWN0 IGkzODZfZHJfbG93X3R5cGUKLSAgICAgdm9pZCAoKnJlc2V0X2FkZHIpIChpbnQpOwotICAgICB1 bnNpZ25lZCBsb25nICgqZ2V0X3N0YXR1cykgKHZvaWQpOwotICAgICB2b2lkICgqdW5zZXRfc3Rh dHVzKSAodW5zaWduZWQgbG9uZyk7Ci0rICAgIHZvaWQgKCpkZXRhY2gpICh2b2lkKTsKLSAgICAg aW50IGRlYnVnX3JlZ2lzdGVyX2xlbmd0aDsKLSAgIH07CiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2lu ZmNhbGwuYyBiL2dkYi9pbmZjYWxsLmMKLWluZGV4IDdmNjBlNTYuLmI3YWNmYzYgMTAwNjQ0Ci0t LS0gYS9nZGIvaW5mY2FsbC5jCi0rKysgYi9nZGIvaW5mY2FsbC5jCi1AQCAtMjI1LDYgKzIyNSw1 NiBAQCB2YWx1ZV9hcmdfY29lcmNlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZh bHVlICphcmcsCi0gICByZXR1cm4gdmFsdWVfY2FzdCAodHlwZSwgYXJnKTsKKy0vKiBTZXQgYWRk cmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIHplcm8gaW4gYWxsIExXUHMgb2YgTFdQX0xJU1Qu ICAqLworKy8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwg TFdQcyBvZiBDVVJSRU5UX0lORkVSSU9SLgorKyAgICovCisgCisgc3RhdGljIHZvaWQKKyBpMzg2 X2xpbnV4X2RyX3Jlc2V0X2FkZHIgKGludCByZWdudW0pCitAQCAtNzI2LDM2ICs3NTQsNTQgQEAg aTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIChpbnQgcmVnbnVtKQorIHN0YXRpYyB1bnNpZ25lZCBs b25nCisgaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzICh2b2lkKQorIHsKKy0gIHJldHVybiBpMzg2 X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsKKysgIGludCB0aWQ7Cisr CisrICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAg ICB0aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOworKworKyAgcmV0dXJuIGkzODZfbGludXhf ZHJfZ2V0ICh0aWQsIERSX1NUQVRVUyk7CiAgfQogIAotKy8qIENhbGwgZ251LWlmdW5jIChTVFRf R05VX0lGVU5DIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgYWRkcmVzc3Mgb2YgYSByZWFsCi0rICAg ZnVuY3Rpb24gdG8gY2FsbCkuICBQQyBpcyB0aGUgZ251LWlmdW5jIGZ1bmN0aW9uIGVudHJ5LiAg RnVuY3Rpb24gcmV0dXJucwotKyAgIGZ1bmN0aW9uIGVudHJ5IG9mIHRoZSBnbnUtaWZ1bmMtcmVz b2x2ZWQgZnVuY3Rpb24gdG8gY2FsbC4gIElmIFJFVFZBTF9UWVBFUAotKyAgIGlzIG5vdCBOVUxM IGZpbGwgaW4gKlJFVFZBTF9UWVBFUCB3aXRoIHJldHVybiB0eXBlIG9mIHRoZSBnbnUtaWZ1bmMt cmVzb2x2ZWQKLSsgICBmdW5jdGlvbiB0byBjYWxsLiAgS2VlcCAqUkVUVkFMX1RZUEVQIGludGFj dCBpZiB0aGUgcmV0dXJuIHR5cGUgY291bGQgbm90IGJlCi0rICAgZm91bmQuICAqLworLS8qIFVu c2V0IE1BU0sgYml0cyBpbiBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAqLwor Ky8qIEhlbHBlciBmb3IgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMuICAqLworIAorIHN0YXRp YyB2b2lkCistaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykK KytpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1c19jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqbWFz a192b2lkcCkKKyB7CistICBzdHJ1Y3QgbHdwX2luZm8gKmxwOworLSAgcHRpZF90IHB0aWQ7Cist CistICBBTExfTFdQUyAobHAsIHB0aWQpCistICAgIHsKKy0gICAgICB1bnNpZ25lZCBsb25nIHZh bHVlOworKyAgdW5zaWduZWQgbG9uZyBtYXNrID0gKih1bnNpZ25lZCBsb25nICopIG1hc2tfdm9p ZHA7CisrICB1bnNpZ25lZCBsb25nIHZhbHVlOworICAgICAgIAorLSAgICAgIHZhbHVlID0gaTM4 Nl9saW51eF9kcl9nZXQgKHB0aWQsIERSX1NUQVRVUyk7CistICAgICAgdmFsdWUgJj0gfm1hc2s7 CistICAgICAgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWQsIERSX1NUQVRVUywgdmFsdWUpOworLSAg ICB9CisrICB2YWx1ZSA9IGkzODZfbGludXhfZHJfZ2V0ICh0aWQsIERSX1NUQVRVUyk7CisrICB2 YWx1ZSAmPSB+bWFzazsKKysgIGkzODZfbGludXhfZHJfc2V0ICh0aWQsIERSX1NUQVRVUywgdmFs dWUpOworK30KICsKLStzdGF0aWMgQ09SRV9BRERSCi0rZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCisrLyogVW5zZXQgTUFTSyBiaXRzIGlu IERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBDVVJSRU5UX0lORkVSSU9SLiAgKi8KKysKKytzdGF0 aWMgdm9pZAorK2kzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2sp CiArewotKyAgY2hhciAqbmFtZV9hdF9wYzsKLSsgIENPUkVfQUREUiBzdGFydF9hdF9wYywgYWRk cmVzczsKLSsgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2Ri YXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOwotKyAgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgKmFk ZHJlc3NfdmFsOworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChpMzg2X2xp bnV4X2RyX3Vuc2V0X3N0YXR1c19jYWxsYmFjaywKKysJCQkJICAgICAmbWFzayk7CisgfQorIAor IHN0YXRpYyB2b2lkCisgaTM4Nl9saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKKyB7Cist ICBpbnQgaTsKKysgIHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9t aXJyb3JfZ2V0ICgpOworKyAgaW50IGksIHRpZDsKICsKLSsgIGlmIChmaW5kX3BjX3BhcnRpYWxf ZnVuY3Rpb24gKHBjLCAmbmFtZV9hdF9wYywgJnN0YXJ0X2F0X3BjLCBOVUxMKQotKyAgICAgICYm IHN0YXJ0X2F0X3BjID09IHBjKQotKyAgICB7Ci0rICAgICAgaWYgKHJlc29sdmVfZ251X2lmdW5j IChuYW1lX2F0X3BjLCAmYWRkcmVzcykpCi0rCXJldHVybiBhZGRyZXNzOwotKyAgICB9Ci0rICBl bHNlCi0rICAgIG5hbWVfYXRfcGMgPSBOVUxMOworKyAgLyogVmVyaWZ5IERSX01JUlJPUiBpcyB2 YWxpZC4gICovCisrICBnZGJfYXNzZXJ0IChQSURHRVQgKHB0aWQpID09IFBJREdFVCAoaW5mZXJp b3JfcHRpZCkpOworKworKyAgdGlkID0gVElER0VUIChwdGlkKTsKKysgIGlmICh0aWQgPT0gMCkK KysgICAgdGlkID0gUElER0VUIChwdGlkKTsKKyAKKy0gIGZvciAoaSA9IERSX0ZJUlNUQUREUjsg aSA8PSBEUl9MQVNUQUREUjsgaSsrKQorLSAgICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgaSwg aTM4Nl9saW51eF9kcltpXSk7CisrICBmb3IgKGkgPSAwOyBpIDwgRFJfTEFTVEFERFIgLSBEUl9G SVJTVEFERFI7IGkrKykKKysgICAgaTM4Nl9saW51eF9kcl9zZXQgKHRpZCwgRFJfRklSU1RBRERS ICsgaSwgZHJfbWlycm9yLT5hZGRyW2ldKTsKKyAKKy0gIGkzODZfbGludXhfZHJfc2V0IChwdGlk LCBEUl9DT05UUk9MLCBpMzg2X2xpbnV4X2RyW0RSX0NPTlRST0xdKTsKKysgIGkzODZfbGludXhf ZHJfc2V0ICh0aWQsIERSX0NPTlRST0wsIGRyX21pcnJvci0+Y29udHJvbCk7CisgfQorIAwKKyAK K2RpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCitpbmRleCBlYWEz NjQ0Li43ZjMyYmQyIDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbmF0LmMKKysrKyBiL2dkYi9pMzg2 LW5hdC5jCitAQCAtMjUsNiArMjUsNyBAQAorICNpbmNsdWRlICJnZGJjbWQuaCIKKyAjaW5jbHVk ZSAidGFyZ2V0LmgiCisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKysjaW5jbHVkZSAiaW5mZXJp b3IuaCIKKyAKKyAvKiBTdXBwb3J0IGZvciBoYXJkd2FyZSB3YXRjaHBvaW50cyBhbmQgYnJlYWtw b2ludHMgdXNpbmcgdGhlIGkzODYKKyAgICBkZWJ1ZyByZWdpc3RlcnMuCitAQCAtNDQsNyArNDUs NiBAQCBzdHJ1Y3QgaTM4Nl9kcl9sb3dfdHlwZSBpMzg2X2RyX2xvdzsKKyAjZGVmaW5lIFRBUkdF VF9IQVNfRFJfTEVOXzggKGkzODZfZHJfbG93LmRlYnVnX3JlZ2lzdGVyX2xlbmd0aCA9PSA4KQor IAorIC8qIERlYnVnIHJlZ2lzdGVycycgaW5kaWNlcy4gICovCistI2RlZmluZSBEUl9OQUREUgk0 CS8qIFRoZSBudW1iZXIgb2YgZGVidWcgYWRkcmVzcyByZWdpc3RlcnMuICAqLworICNkZWZpbmUg RFJfU1RBVFVTCTYJLyogSW5kZXggb2YgZGVidWcgc3RhdHVzIHJlZ2lzdGVyIChEUjYpLiAgKi8K KyAjZGVmaW5lIERSX0NPTlRST0wJNwkvKiBJbmRleCBvZiBkZWJ1ZyBjb250cm9sIHJlZ2lzdGVy IChEUjcpLiAqLworIAorQEAgLTExMSw0OSArMTExLDYwIEBAIHN0cnVjdCBpMzg2X2RyX2xvd190 eXBlIGkzODZfZHJfbG93OworIAorIC8qIFRoZSBJJ3RoIGRlYnVnIHJlZ2lzdGVyIGlzIHZhY2Fu dCBpZiBpdHMgTG9jYWwgYW5kIEdsb2JhbCBFbmFibGUKKyAgICBiaXRzIGFyZSByZXNldCBpbiB0 aGUgRGVidWcgQ29udHJvbCByZWdpc3Rlci4gICovCistI2RlZmluZSBJMzg2X0RSX1ZBQ0FOVChp KSBcCistICAoKGRyX2NvbnRyb2xfbWlycm9yICYgKDMgPDwgKERSX0VOQUJMRV9TSVpFICogKGkp KSkpID09IDApCisrCisrc3RhdGljIGlubGluZSBpbnQKKytpMzg2X2RyX3ZhY2FudCAoc3RydWN0 IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IsIGludCBpKQorK3sKKysgIHJldHVybiAoZHJfbWly cm9yLT5jb250cm9sICYgKDMgPDwgKERSX0VOQUJMRV9TSVpFICogaSkpKSA9PSAwOworK30KKyAK KyAvKiBMb2NhbGx5IGVuYWJsZSB0aGUgYnJlYWsvd2F0Y2hwb2ludCBpbiB0aGUgSSd0aCBkZWJ1 ZyByZWdpc3Rlci4gICovCistI2RlZmluZSBJMzg2X0RSX0xPQ0FMX0VOQUJMRShpKSBcCistICBk cl9jb250cm9sX21pcnJvciB8PSAoMSA8PCAoRFJfTE9DQUxfRU5BQkxFX1NISUZUICsgRFJfRU5B QkxFX1NJWkUgKiAoaSkpKQorIAorLS8qIEdsb2JhbGx5IGVuYWJsZSB0aGUgYnJlYWsvd2F0Y2hw b2ludCBpbiB0aGUgSSd0aCBkZWJ1ZyByZWdpc3Rlci4gICovCistI2RlZmluZSBJMzg2X0RSX0dM T0JBTF9FTkFCTEUoaSkgXAorLSAgZHJfY29udHJvbF9taXJyb3IgfD0gKDEgPDwgKERSX0dMT0JB TF9FTkFCTEVfU0hJRlQgKyBEUl9FTkFCTEVfU0laRSAqIChpKSkpCisrc3RhdGljIGlubGluZSB2 b2lkCisraTM4Nl9kcl9sb2NhbF9lbmFibGUgKHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWly cm9yLCBpbnQgaSkKKyt7CisrICBkcl9taXJyb3ItPmNvbnRyb2wgfD0gMSA8PCAoRFJfTE9DQUxf RU5BQkxFX1NISUZUICsgRFJfRU5BQkxFX1NJWkUgKiBpKTsKKyt9CisgCisgLyogRGlzYWJsZSB0 aGUgYnJlYWsvd2F0Y2hwb2ludCBpbiB0aGUgSSd0aCBkZWJ1ZyByZWdpc3Rlci4gICovCistI2Rl ZmluZSBJMzg2X0RSX0RJU0FCTEUoaSkgXAorLSAgZHJfY29udHJvbF9taXJyb3IgJj0gfigzIDw8 IChEUl9FTkFCTEVfU0laRSAqIChpKSkpCisrCisrc3RhdGljIGlubGluZSB2b2lkCisraTM4Nl9k cl9kaXNhYmxlIChzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciwgaW50IGkpCisrewor KyAgZHJfbWlycm9yLT5jb250cm9sICY9IH4oMyA8PCAoRFJfRU5BQkxFX1NJWkUgKiBpKSk7Cisr fQorIAorIC8qIFNldCBpbiBEUjcgdGhlIFJXIGFuZCBMRU4gZmllbGRzIGZvciB0aGUgSSd0aCBk ZWJ1ZyByZWdpc3Rlci4gICovCistI2RlZmluZSBJMzg2X0RSX1NFVF9SV19MRU4oaSxyd2xlbikg XAorLSAgZG8geyBcCistICAgIGRyX2NvbnRyb2xfbWlycm9yICY9IH4oMHgwZiA8PCAoRFJfQ09O VFJPTF9TSElGVCtEUl9DT05UUk9MX1NJWkUqKGkpKSk7ICAgXAorLSAgICBkcl9jb250cm9sX21p cnJvciB8PSAoKHJ3bGVuKSA8PCAoRFJfQ09OVFJPTF9TSElGVCtEUl9DT05UUk9MX1NJWkUqKGkp KSk7IFwKKy0gIH0gd2hpbGUgKDApCisrCisrc3RhdGljIGlubGluZSB2b2lkCisraTM4Nl9kcl9z ZXRfcndfbGVuIChzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciwgaW50IGksIHVuc2ln bmVkIHJ3bGVuKQorK3sKKysgIGRyX21pcnJvci0+Y29udHJvbCAmPSB+KDB4MGYgPDwgKERSX0NP TlRST0xfU0hJRlQgKyBEUl9DT05UUk9MX1NJWkUgKiBpKSk7CisrICBkcl9taXJyb3ItPmNvbnRy b2wgfD0gcndsZW4gPDwgKERSX0NPTlRST0xfU0hJRlQgKyBEUl9DT05UUk9MX1NJWkUgKiBpKTsK Kyt9CisgCisgLyogR2V0IGZyb20gRFI3IHRoZSBSVyBhbmQgTEVOIGZpZWxkcyBmb3IgdGhlIEkn dGggZGVidWcgcmVnaXN0ZXIuICAqLworLSNkZWZpbmUgSTM4Nl9EUl9HRVRfUldfTEVOKGkpIFwK Ky0gICgoZHJfY29udHJvbF9taXJyb3IgPj4gKERSX0NPTlRST0xfU0hJRlQgKyBEUl9DT05UUk9M X1NJWkUgKiAoaSkpKSAmIDB4MGYpCisrCisrc3RhdGljIGlubGluZSB1bnNpZ25lZAorK2kzODZf ZHJfZ2V0X3J3X2xlbiAoc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IsIGludCBpKQor K3sKKysgIHJldHVybiAoKGRyX21pcnJvci0+Y29udHJvbCA+PiAoRFJfQ09OVFJPTF9TSElGVCAr IERSX0NPTlRST0xfU0laRSAqIGkpKQorKwkgICYgMHgwZik7CisrfQorIAorIC8qIE1hc2sgdGhh dCB0aGlzIEkndGggd2F0Y2hwb2ludCBoYXMgdHJpZ2dlcmVkLiAgKi8KKyAjZGVmaW5lIEkzODZf RFJfV0FUQ0hfTUFTSyhpKQkoMSA8PCAoaSkpCisgCisgLyogRGlkIHRoZSB3YXRjaHBvaW50IHdo b3NlIGFkZHJlc3MgaXMgaW4gdGhlIEkndGggcmVnaXN0ZXIgYnJlYWs/ICAqLworLSNkZWZpbmUg STM4Nl9EUl9XQVRDSF9ISVQoaSkJKGRyX3N0YXR1c19taXJyb3IgJiBJMzg2X0RSX1dBVENIX01B U0sgKGkpKQorK3N0YXRpYyBpbmxpbmUgaW50CisraTM4Nl9kcl93YXRjaF9oaXQgKHN0cnVjdCBp Mzg2X2RyX21pcnJvciAqZHJfbWlycm9yLCBpbnQgaSkKKyt7CisrICByZXR1cm4gKGRyX21pcnJv ci0+c3RhdHVzICYgSTM4Nl9EUl9XQVRDSF9NQVNLIChpKSkgIT0gMDsKKyt9CisgCisgLyogQSBt YWNybyB0byBsb29wIG92ZXIgYWxsIGRlYnVnIHJlZ2lzdGVycy4gICovCisgI2RlZmluZSBBTExf REVCVUdfUkVHSVNURVJTKGkpCWZvciAoaSA9IDA7IGkgPCBEUl9OQUREUjsgaSsrKQorIAorLS8q IE1pcnJvciB0aGUgaW5mZXJpb3IncyBEUmkgcmVnaXN0ZXJzLiAgV2Uga2VlcCB0aGUgc3RhdHVz IGFuZAorLSAgIGNvbnRyb2wgcmVnaXN0ZXJzIHNlcGFyYXRlZCBiZWNhdXNlIHRoZXkgZG9uJ3Qg aG9sZCBhZGRyZXNzZXMuICAqLworLXN0YXRpYyBDT1JFX0FERFIgZHJfbWlycm9yW0RSX05BRERS XTsKKy1zdGF0aWMgdW5zaWduZWQgbG9uZyBkcl9zdGF0dXNfbWlycm9yLCBkcl9jb250cm9sX21p cnJvcjsKKy0KKy0vKiBSZWZlcmVuY2UgY291bnRzIGZvciBlYWNoIGRlYnVnIHJlZ2lzdGVyLiAg Ki8KKy1zdGF0aWMgaW50IGRyX3JlZl9jb3VudFtEUl9OQUREUl07CistCisgLyogV2hldGhlciBv ciBub3QgdG8gcHJpbnQgdGhlIG1pcnJvcmVkIGRlYnVnIHJlZ2lzdGVycy4gICovCisgc3RhdGlj IGludCBtYWludF9zaG93X2RyOworIAorQEAgLTE5NSwyMSArMjA2LDgwIEBAIHN0YXRpYyBpbnQg aTM4Nl9oYW5kbGVfbm9uYWxpZ25lZF93YXRjaHBvaW50IChpMzg2X3dwX29wX3Qgd2hhdCwKKyAK KyAvKiBJbXBsZW1lbnRhdGlvbi4gICovCisgCisrLyogUGVyLWluZmVyaW9yIGRhdGEga2V5LiAg Ki8KKytzdGF0aWMgY29uc3Qgc3RydWN0IGluZmVyaW9yX2RhdGEgKmkzODZfaW5mZXJpb3JfZGF0 YTsKKysKKytzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhCisrICB7CisrICAgIC8qIENvcHkgb2Yg aTM4NiBoYXJkd2FyZSBkZWJ1ZyByZWdpc3RlcnMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICAq LworKyAgICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgZHJfbWlycm9yOworKyAgfTsKKysKKytzdGF0 aWMgdm9pZAorK2kzODZfaW5mZXJpb3JfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgaW5mZXJpb3IgKmlu Ziwgdm9pZCAqYXJnKQorK3sKKysgIHN0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEgKmluZl9kYXRh ID0gYXJnOworKworKyAgeGZyZWUgKGluZl9kYXRhKTsKKyt9CisrCisrc3RhdGljIHN0cnVjdCBp Mzg2X2luZmVyaW9yX2RhdGEgKgorK2kzODZfaW5mZXJpb3JfZGF0YV9nZXQgKHZvaWQpCisrewor KyAgc3RydWN0IGluZmVyaW9yICppbmYgPSBjdXJyZW50X2luZmVyaW9yICgpOworKyAgc3RydWN0 IGkzODZfaW5mZXJpb3JfZGF0YSAqaW5mX2RhdGE7CisrCisrICBpbmZfZGF0YSA9IGluZmVyaW9y X2RhdGEgKGluZiwgaTM4Nl9pbmZlcmlvcl9kYXRhKTsKKysgIGlmIChpbmZfZGF0YSA9PSBOVUxM KQorKyAgICB7CisrICAgICAgaW5mX2RhdGEgPSB4emFsbG9jIChzaXplb2YgKCppbmZfZGF0YSkp OworKyAgICAgIHNldF9pbmZlcmlvcl9kYXRhIChjdXJyZW50X2luZmVyaW9yICgpLCBpMzg2X2lu ZmVyaW9yX2RhdGEsIGluZl9kYXRhKTsKKysgICAgfQorKworKyAgaWYgKGluZi0+cGlkICE9IHB0 aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpCisrICAgIHsKKysgICAgICBzdGF0aWMgc3RydWN0 IGkzODZfaW5mZXJpb3JfZGF0YSBkZXRhY2hlZF9pbmZfZGF0YV9sb2NhbDsKKysgICAgICBzdGF0 aWMgaW50IGRldGFjaGVkX2luZl9waWQgPSAtMTsKKysKKysgICAgICBpZiAoZGV0YWNoZWRfaW5m X3BpZCAhPSBwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKQorKwl7CisrCSAgZGV0YWNoZWRf aW5mX3BpZCA9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCk7CisrCisrCSAgLyogRm9ya2Vk IHByb2Nlc3NlcyBnZXQgYSBjb3B5IG9mIHRoZSBkZWJ1ZyByZWdpc3RlcnMuICAqLworKwkgIG1l bWNweSAoJmRldGFjaGVkX2luZl9kYXRhX2xvY2FsLCBpbmZfZGF0YSwKKysJCSAgc2l6ZW9mIChk ZXRhY2hlZF9pbmZfZGF0YV9sb2NhbCkpOworKwkgIGRldGFjaGVkX2luZl9kYXRhX2xvY2FsLmRy X21pcnJvci5hZGRyX3ByZXNldCA9IDA7CisrCX0KKysKKysgICAgICByZXR1cm4gJmRldGFjaGVk X2luZl9kYXRhX2xvY2FsOworKyAgICB9CisrCisrICByZXR1cm4gaW5mX2RhdGE7CisrfQorKwor IC8qIENsZWFyIHRoZSByZWZlcmVuY2UgY291bnRzIGFuZCBmb3JnZXQgZXZlcnl0aGluZyB3ZSBr bmV3IGFib3V0IHRoZQorICAgIGRlYnVnIHJlZ2lzdGVycy4gICovCisgCisrc3RydWN0IGkzODZf ZHJfbWlycm9yICoKKytpMzg2X2RyX21pcnJvcl9nZXQgKHZvaWQpCisreworKyAgcmV0dXJuICZp Mzg2X2luZmVyaW9yX2RhdGFfZ2V0ICgpLT5kcl9taXJyb3I7CisrfQorKworIHZvaWQKKyBpMzg2 X2NsZWFudXBfZHJlZ3MgKHZvaWQpCisgeworKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9t aXJyb3IgPSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7CisgICBpbnQgaTsKKyAKKyAgIEFMTF9ERUJV R19SRUdJU1RFUlMoaSkKKyAgICAgeworLSAgICAgIGRyX21pcnJvcltpXSA9IDA7CistICAgICAg ZHJfcmVmX2NvdW50W2ldID0gMDsKKysgICAgICBkcl9taXJyb3ItPmFkZHJbaV0gPSAwOworKyAg ICAgIGRyX21pcnJvci0+cmVmX2NvdW50W2ldID0gMDsKKyAgICAgfQorLSAgZHJfY29udHJvbF9t aXJyb3IgPSAwOworLSAgZHJfc3RhdHVzX21pcnJvciAgPSAwOworKyAgZHJfbWlycm9yLT5hZGRy X3ByZXNldCA9IDA7CisrICBkcl9taXJyb3ItPmNvbnRyb2wgPSAwOworKyAgZHJfbWlycm9yLT5z dGF0dXMgPSAwOworIH0KKyAKKyAvKiBQcmludCB0aGUgdmFsdWVzIG9mIHRoZSBtaXJyb3JlZCBk ZWJ1ZyByZWdpc3RlcnMuICBUaGlzIGlzIGNhbGxlZAorQEAgLTIyMCw2ICsyOTAsNyBAQCBzdGF0 aWMgdm9pZAorIGkzODZfc2hvd19kciAoY29uc3QgY2hhciAqZnVuYywgQ09SRV9BRERSIGFkZHIs CisgCSAgICAgIGludCBsZW4sIGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSkKKyB7CisrICBz dHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsK KyAgIGludCBhZGRyX3NpemUgPSBnZGJhcmNoX2FkZHJfYml0ICh0YXJnZXRfZ2RiYXJjaCkgLyA4 OworICAgaW50IGk7CisgCitAQCAtMjM5LDEzICszMTAsMTYgQEAgaTM4Nl9zaG93X2RyIChjb25z dCBjaGFyICpmdW5jLCBDT1JFX0FERFIgYWRkciwKKyAJCQkJOiAiPz91bmtub3duPz8iKSkpKTsK KyAgIHB1dHNfdW5maWx0ZXJlZCAoIjpcbiIpOworICAgcHJpbnRmX3VuZmlsdGVyZWQgKCJcdENP TlRST0wgKERSNyk6ICVzICAgICAgICAgIFNUQVRVUyAoRFI2KTogJXNcbiIsCistCQkgICAgIHBo ZXggKGRyX2NvbnRyb2xfbWlycm9yLCA4KSwgcGhleCAoZHJfc3RhdHVzX21pcnJvciwgOCkpOwor KwkJICAgICBwaGV4IChkcl9taXJyb3ItPmNvbnRyb2wsIDgpLAorKwkJICAgICBwaGV4IChkcl9t aXJyb3ItPnN0YXR1cywgOCkpOworICAgQUxMX0RFQlVHX1JFR0lTVEVSUyhpKQorICAgICB7Cisg ICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKCJcCisgXHREUiVkOiBhZGRyPTB4JXMsIHJlZi5jb3Vu dD0lZCAgRFIlZDogYWRkcj0weCVzLCByZWYuY291bnQ9JWRcbiIsCistCQkgaSwgcGhleCAoZHJf bWlycm9yW2ldLCBhZGRyX3NpemUpLCBkcl9yZWZfY291bnRbaV0sCistCQkgaSsxLCBwaGV4IChk cl9taXJyb3JbaSsxXSwgYWRkcl9zaXplKSwgZHJfcmVmX2NvdW50W2krMV0pOworKwkJCSBpLCBw aGV4IChkcl9taXJyb3ItPmFkZHJbaV0sIGFkZHJfc2l6ZSksCisrCQkJIGRyX21pcnJvci0+cmVm X2NvdW50W2ldLCBpICsgMSwKKysJCQkgcGhleCAoZHJfbWlycm9yLT5hZGRyW2kgKyAxXSwgYWRk cl9zaXplKSwKKysJCQkgZHJfbWlycm9yLT5yZWZfY291bnRbaSArIDFdKTsKKyAgICAgICBpKys7 CisgICAgIH0KKyB9CitAQCAtMzExLDYgKzM4NSw3IEBAIEludmFsaWQgaGFyZHdhcmUgYnJlYWtw b2ludCBsZW5ndGggJWQgaW4gaTM4Nl9sZW5ndGhfYW5kX3J3X2JpdHMuXG4iKSwgbGVuKTsKKyBz dGF0aWMgaW50CisgaTM4Nl9pbnNlcnRfYWxpZ25lZF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgdW5zaWduZWQgbGVuX3J3X2JpdHMpCisgeworKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpk cl9taXJyb3IgPSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7CisgICBpbnQgaTsKKyAKKyAgIGlmICgh aTM4Nl9kcl9sb3cuc2V0X2FkZHIgfHwgIWkzODZfZHJfbG93LnNldF9jb250cm9sKQorQEAgLTMy MSwxMSArMzk2LDEwIEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQorICAgICAgcmV1c2UgaXQgZm9yIHRoaXMgd2F0 Y2hwb2ludCBhcyB3ZWxsIChhbmQgc2F2ZSBhIHJlZ2lzdGVyKS4gICovCisgICBBTExfREVCVUdf UkVHSVNURVJTKGkpCisgICAgIHsKKy0gICAgICBpZiAoIUkzODZfRFJfVkFDQU5UIChpKQorLQkg ICYmIGRyX21pcnJvcltpXSA9PSBhZGRyCistCSAgJiYgSTM4Nl9EUl9HRVRfUldfTEVOIChpKSA9 PSBsZW5fcndfYml0cykKKysgICAgICBpZiAoIWkzODZfZHJfdmFjYW50IChkcl9taXJyb3IsIGkp ICYmIGRyX21pcnJvci0+YWRkcltpXSA9PSBhZGRyCisrCSAgJiYgaTM4Nl9kcl9nZXRfcndfbGVu IChkcl9taXJyb3IsIGkpID09IGxlbl9yd19iaXRzKQorIAl7CistCSAgZHJfcmVmX2NvdW50W2ld Kys7CisrCSAgZHJfbWlycm9yLT5yZWZfY291bnRbaV0rKzsKKyAJICByZXR1cm4gMDsKKyAJfQor ICAgICB9CitAQCAtMzMzLDcgKzQwNyw3IEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQorICAgLyogTmV4dCwgbG9v ayBmb3IgYSB2YWNhbnQgZGVidWcgcmVnaXN0ZXIuICAqLworICAgQUxMX0RFQlVHX1JFR0lTVEVS UyhpKQorICAgICB7CistICAgICAgaWYgKEkzODZfRFJfVkFDQU5UIChpKSkKKysgICAgICBpZiAo aTM4Nl9kcl92YWNhbnQgKGRyX21pcnJvciwgaSkpCisgCWJyZWFrOworICAgICB9CisgCitAQCAt MzQ0LDkgKzQxOCw5IEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQorICAgLyogTm93IHNldCB1cCB0aGUgcmVnaXN0 ZXIgSSB0byB3YXRjaCBvdXIgcmVnaW9uLiAgKi8KKyAKKyAgIC8qIFJlY29yZCB0aGUgaW5mbyBp biBvdXIgbG9jYWwgbWlycm9yZWQgYXJyYXkuICAqLworLSAgZHJfbWlycm9yW2ldID0gYWRkcjsK Ky0gIGRyX3JlZl9jb3VudFtpXSA9IDE7CistICBJMzg2X0RSX1NFVF9SV19MRU4gKGksIGxlbl9y d19iaXRzKTsKKysgIGRyX21pcnJvci0+YWRkcltpXSA9IGFkZHI7CisrICBkcl9taXJyb3ItPnJl Zl9jb3VudFtpXSA9IDE7CisrICBpMzg2X2RyX3NldF9yd19sZW4gKGRyX21pcnJvciwgaSwgbGVu X3J3X2JpdHMpOworICAgLyogTm90ZTogd2Ugb25seSBlbmFibGUgdGhlIHdhdGNocG9pbnQgbG9j YWxseSwgaS5lLiBpbiB0aGUgY3VycmVudAorICAgICAgdGFzay4gIEN1cnJlbnRseSwgbm8gaTM4 NiB0YXJnZXQgYWxsb3dzIG9yIHN1cHBvcnRzIGdsb2JhbAorICAgICAgd2F0Y2hwb2ludHM7IGhv d2V2ZXIsIGlmIGFueSB0YXJnZXQgd291bGQgd2FudCB0aGF0IGluIHRoZQorQEAgLTM1NCwxMyAr NDI4LDEzIEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIs IHVuc2lnbmVkIGxlbl9yd19iaXRzKQorICAgICAgdG8gZW5hYmxlIHdhdGNocG9pbnRzIGdsb2Jh bGx5IG9yIGxvY2FsbHksIGFuZCB0aGUgY29kZSBiZWxvdworICAgICAgc2hvdWxkIHVzZSBnbG9i YWwgb3IgbG9jYWwgZW5hYmxlIGFuZCBzbG93LWRvd24gZmxhZ3MgYXMKKyAgICAgIGFwcHJvcHJp YXRlLiAgKi8KKy0gIEkzODZfRFJfTE9DQUxfRU5BQkxFIChpKTsKKy0gIGRyX2NvbnRyb2xfbWly cm9yIHw9IERSX0xPQ0FMX1NMT1dET1dOOworLSAgZHJfY29udHJvbF9taXJyb3IgJj0gSTM4Nl9E Ul9DT05UUk9MX01BU0s7CisrICBpMzg2X2RyX2xvY2FsX2VuYWJsZSAoZHJfbWlycm9yLCBpKTsK KysgIGRyX21pcnJvci0+Y29udHJvbCB8PSBEUl9MT0NBTF9TTE9XRE9XTjsKKysgIGRyX21pcnJv ci0+Y29udHJvbCAmPSBJMzg2X0RSX0NPTlRST0xfTUFTSzsKKyAKKyAgIC8qIEZpbmFsbHksIGFj dHVhbGx5IHBhc3MgdGhlIGluZm8gdG8gdGhlIGluZmVyaW9yLiAgKi8KKyAgIGkzODZfZHJfbG93 LnNldF9hZGRyIChpLCBhZGRyKTsKKy0gIGkzODZfZHJfbG93LnNldF9jb250cm9sIChkcl9jb250 cm9sX21pcnJvcik7CisrICBpMzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfbWlycm9yLT5jb250 cm9sKTsKKyAKKyAgIC8qIE9ubHkgYSBzYW5pdHkgY2hlY2sgZm9yIGxlZnRvdmVyIGJpdHMgKHNl dCBwb3NzaWJseSBvbmx5IGJ5IGluZmVyaW9yKS4gICovCisgICBpZiAoaTM4Nl9kcl9sb3cudW5z ZXRfc3RhdHVzKQorQEAgLTM3OCwyMSArNDUyLDIxIEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQorIHN0YXRpYyBp bnQKKyBpMzg2X3JlbW92ZV9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCB1bnNp Z25lZCBsZW5fcndfYml0cykKKyB7CisrICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJv ciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKKyAgIGludCBpLCByZXR2YWwgPSAtMTsKKyAKKyAg IEFMTF9ERUJVR19SRUdJU1RFUlMoaSkKKyAgICAgeworLSAgICAgIGlmICghSTM4Nl9EUl9WQUNB TlQgKGkpCistCSAgJiYgZHJfbWlycm9yW2ldID09IGFkZHIKKy0JICAmJiBJMzg2X0RSX0dFVF9S V19MRU4gKGkpID09IGxlbl9yd19iaXRzKQorKyAgICAgIGlmICghaTM4Nl9kcl92YWNhbnQgKGRy X21pcnJvciwgaSkgJiYgZHJfbWlycm9yLT5hZGRyW2ldID09IGFkZHIKKysJICAmJiBpMzg2X2Ry X2dldF9yd19sZW4gKGRyX21pcnJvciwgaSkgPT0gbGVuX3J3X2JpdHMpCisgCXsKKy0JICBpZiAo LS1kcl9yZWZfY291bnRbaV0gPT0gMCkgLyogbm8gbG9uZ2VyIGluIHVzZT8gKi8KKysJICBpZiAo LS1kcl9taXJyb3ItPnJlZl9jb3VudFtpXSA9PSAwKSAvKiBubyBsb25nZXIgaW4gdXNlPyAqLwor IAkgICAgeworIAkgICAgICAvKiBSZXNldCBvdXIgbWlycm9yLiAgKi8KKy0JICAgICAgZHJfbWly cm9yW2ldID0gMDsKKy0JICAgICAgSTM4Nl9EUl9ESVNBQkxFIChpKTsKKysJICAgICAgZHJfbWly cm9yLT5hZGRyW2ldID0gMDsKKysJICAgICAgaTM4Nl9kcl9kaXNhYmxlIChkcl9taXJyb3IsIGkp OworIAkgICAgICAvKiBSZXNldCBpdCBpbiB0aGUgaW5mZXJpb3IuICAqLworLQkgICAgICBpMzg2 X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfY29udHJvbF9taXJyb3IpOworKwkgICAgICBpMzg2X2Ry X2xvdy5zZXRfY29udHJvbCAoZHJfbWlycm9yLT5jb250cm9sKTsKKyAJICAgICAgaWYgKGkzODZf ZHJfbG93LnJlc2V0X2FkZHIpCisgCQlpMzg2X2RyX2xvdy5yZXNldF9hZGRyIChpKTsKKyAJICAg IH0KK0BAIC01NTQsMjYgKzYyOCwyNyBAQCBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4pCisgc3RhdGljIGludAorIGkzODZfc3RvcHBlZF9kYXRh X2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiAqYWRkcl9wKQorIHsK KysgIHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0 ICgpOworICAgQ09SRV9BRERSIGFkZHIgPSAwOworICAgaW50IGk7CisgICBpbnQgcmMgPSAwOwor IAorLSAgZHJfc3RhdHVzX21pcnJvciA9IGkzODZfZHJfbG93LmdldF9zdGF0dXMgKCk7CisrICBk cl9taXJyb3ItPnN0YXR1cyA9IGkzODZfZHJfbG93LmdldF9zdGF0dXMgKCk7CisgCisgICBBTExf REVCVUdfUkVHSVNURVJTKGkpCisgICAgIHsKKy0gICAgICBpZiAoSTM4Nl9EUl9XQVRDSF9ISVQg KGkpCisrICAgICAgaWYgKGkzODZfZHJfd2F0Y2hfaGl0IChkcl9taXJyb3IsIGkpCisgCSAgLyog VGhpcyBzZWNvbmQgY29uZGl0aW9uIG1ha2VzIHN1cmUgRFJpIGlzIHNldCB1cCBmb3IgYSBkYXRh CisgCSAgICAgd2F0Y2hwb2ludCwgbm90IGEgaGFyZHdhcmUgYnJlYWtwb2ludC4gIFRoZSByZWFz b24gaXMKKyAJICAgICB0aGF0IEdEQiBkb2Vzbid0IGNhbGwgdGhlIHRhcmdldF9zdG9wcGVkX2Rh dGFfYWRkcmVzcworIAkgICAgIG1ldGhvZCBleGNlcHQgZm9yIGRhdGEgd2F0Y2hwb2ludHMuICBJ biBvdGhlciB3b3JkcywgSSdtCisgCSAgICAgYmVpbmcgcGFyYW5vaWFjLiAgKi8KKy0JICAmJiBJ Mzg2X0RSX0dFVF9SV19MRU4gKGkpICE9IDAKKysJICAmJiBpMzg2X2RyX2dldF9yd19sZW4gKGRy X21pcnJvciwgaSkgIT0gMAorIAkgIC8qIFRoaXMgdGhpcmQgY29uZGl0aW9uIG1ha2VzIHN1cmUg RFJpIGlzIG5vdCB2YWNhbnQsIHRoaXMKKyAJICAgICBhdm9pZHMgZmFsc2UgcG9zaXRpdmVzIGlu IHdpbmRvd3MtbmF0LmMuICAqLworLQkgICYmICFJMzg2X0RSX1ZBQ0FOVCAoaSkpCisrCSAgJiYg IWkzODZfZHJfdmFjYW50IChkcl9taXJyb3IsIGkpKQorIAl7CistCSAgYWRkciA9IGRyX21pcnJv cltpXTsKKysJICBhZGRyID0gZHJfbWlycm9yLT5hZGRyW2ldOworIAkgIHJjID0gMTsKKyAJICBp ZiAobWFpbnRfc2hvd19kcikKKyAJICAgIGkzODZfc2hvd19kciAoIndhdGNocG9pbnRfaGl0Iiwg YWRkciwgLTEsIGh3X3dyaXRlKTsKK0BAIC02ODcsNiArNzYyLDEwIEBAIGkzODZfdXNlX3dhdGNo cG9pbnRzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKKyAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50 ID0gaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX2luc2VydF9od19icmVha3BvaW50 ID0gaTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV9od19icmVha3Bv aW50ID0gaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludDsKKysKKysgIGlmIChpMzg2X2luZmVyaW9y X2RhdGEgPT0gTlVMTCkKKysgICAgaTM4Nl9pbmZlcmlvcl9kYXRhCisrICAgICAgPSByZWdpc3Rl cl9pbmZlcmlvcl9kYXRhX3dpdGhfY2xlYW51cCAoaTM4Nl9pbmZlcmlvcl9kYXRhX2NsZWFudXAp OworIH0KKyAKKyB2b2lkCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmggYi9nZGIvaTM4Ni1u YXQuaAoraW5kZXggNzMxN2U3ZC4uNjVjZDMyNiAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LW5hdC5o CisrKysgYi9nZGIvaTM4Ni1uYXQuaAorQEAgLTc4LDYgKzc4LDI4IEBAIHN0cnVjdCBpMzg2X2Ry X2xvd190eXBlCisgCisgZXh0ZXJuIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlIGkzODZfZHJfbG93 OworIAorKy8qIFRoZSBudW1iZXIgb2YgZGVidWcgYWRkcmVzcyByZWdpc3RlcnMuICAqLworKyNk ZWZpbmUgRFJfTkFERFIJNAorKworKy8qIENvcHkgb2YgaGFyZHdhcmUgZGVidWcgcmVnaXN0ZXJz IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgKi8KKysKKytzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IK KysgIHsKKysgICAgLyogTWlycm9yIHRoZSBpbmZlcmlvcidzIERSaSByZWdpc3RlcnMuICBXZSBr ZWVwIHRoZSBzdGF0dXMgYW5kCisrICAgICAgIGNvbnRyb2wgcmVnaXN0ZXJzIHNlcGFyYXRlZCBi ZWNhdXNlIHRoZXkgZG9uJ3QgaG9sZCBhZGRyZXNzZXMuICAqLworKyAgICBDT1JFX0FERFIgYWRk cltEUl9OQUREUl07CisrCisrICAgIC8qIEFsbCB0aGUgQUREUiBoYXJkd2FyZSByZWdpc3RlcnMg aGF2ZSBiZWVuIHdyaXR0ZW4gYXQgbGVhc3Qgb25jZS4gICovCisrICAgIHVuc2lnbmVkIGFkZHJf cHJlc2V0IDogMTsKKysKKysgICAgLyogUmVmZXJlbmNlIGNvdW50cyBmb3IgZWFjaCBkZWJ1ZyBy ZWdpc3Rlci4gICovCisrICAgIGludCByZWZfY291bnRbRFJfTkFERFJdOworKworKyAgICB1bnNp Z25lZCBsb25nIHN0YXR1cywgY29udHJvbDsKKysgIH07CisrCisrZXh0ZXJuIHN0cnVjdCBpMzg2 X2RyX21pcnJvciAqaTM4Nl9kcl9taXJyb3JfZ2V0ICh2b2lkKTsKKysKKyAvKiBVc2UgdGhpcyBm dW5jdGlvbiB0byBzZXQgaTM4Nl9kcl9sb3cgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoIGZpZWxkCisg ICAgcmF0aGVyIHRoYW4gc2V0dGluZyBpdCBkaXJlY3RseSB0byBjaGVjayB0aGF0IHRoZSBsZW5n dGggaXMgb25seQorICAgIHNldCBvbmNlLiAgSXQgYWxzbyBlbmFibGVzIHRoZSAnbWFpbnQgc2V0 L3Nob3cgc2hvdy1kZWJ1Zy1yZWdzJyAKK2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2Ri L2luZmNhbGwuYworaW5kZXggNmViMWJiZi4uNzMyM2M0YiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZj YWxsLmMKKysrKyBiL2dkYi9pbmZjYWxsLmMKK0BAIC0yMjUsNiArMjI1LDU2IEBAIHZhbHVlX2Fy Z19jb2VyY2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmFyZywKKyAg IHJldHVybiB2YWx1ZV9jYXN0ICh0eXBlLCBhcmcpOworIH0KKyAKKysvKiBDYWxsIGdudS1pZnVu YyAoU1RUX0dOVV9JRlVOQyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEgcmVh bAorKyAgIGZ1bmN0aW9uIHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlvbiBl bnRyeS4gIEZ1bmN0aW9uIHJldHVybnMKKysgICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251LWlm dW5jLXJlc29sdmVkIGZ1bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRWQUxfVFlQRVAKKysgICBpcyBu b3QgTlVMTCBmaWxsIGluICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUgZ251 LWlmdW5jLXJlc29sdmVkCisrICAgZnVuY3Rpb24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9UWVBF UCBpbnRhY3QgaWYgdGhlIHJldHVybiB0eXBlIGNvdWxkIG5vdCBiZQorKyAgIGZvdW5kLiAgKi8K KysKKytzdGF0aWMgQ09SRV9BRERSCisrZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCisreworKyAgY2hhciAqbmFtZV9hdF9wYzsKKysgIENP UkVfQUREUiBzdGFydF9hdF9wYywgYWRkcmVzczsKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNf dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3Ry dWN0IHZhbHVlICpmdW5jdGlvbiwgKmFkZHJlc3NfdmFsOworKworKyAgaWYgKGZpbmRfcGNfcGFy dGlhbF9mdW5jdGlvbiAocGMsICZuYW1lX2F0X3BjLCAmc3RhcnRfYXRfcGMsIE5VTEwpCisrICAg ICAgJiYgc3RhcnRfYXRfcGMgPT0gcGMpCisrICAgIHsKKysgICAgICBpZiAocmVzb2x2ZV9nbnVf aWZ1bmMgKG5hbWVfYXRfcGMsICZhZGRyZXNzKSkKKysJcmV0dXJuIGFkZHJlc3M7CisrICAgIH0K KysgIGVsc2UKKysgICAgbmFtZV9hdF9wYyA9IE5VTEw7CiArCiArICBmdW5jdGlvbiA9IGFsbG9j YXRlX3ZhbHVlIChmdW5jX2Z1bmNfdHlwZSk7CiArICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rp b24sIHBjKTsKQEAgLTQ0NDUsOTggKzUxMzIsOTEgQEAgaW5kZXggN2Y2MGU1Ni4uYjdhY2ZjNiAx MDA2NDQKICAgICAgewogICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlvbnMgbGFj a2luZyBkZWJ1Z2dpbmcgaW5mby4KICAgICAgICAgICBUaGVpciB2YWx1ZXMgYXJlIGNoYXJhY3Rl cnMgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2lu ZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCi1pbmRleCBmNmIwMGRhLi41NmU1NThiIDEwMDY0NAotLS0t IGEvZ2RiL2luZnJ1bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC0zMjY3LDYgKzMyNjcsMTAg QEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUg KmVjcykKLSAKLSAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9y ZWdjYWNoZSAoZWNzLT5wdGlkKSk7Ci0gCi0rICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lOVF9UUklH R0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3VsZAotKwkgY29uZnVzZSBi cHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLwotKyAgICAg IHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOwotKwotICAgICAgIGVjcy0+ZXZlbnRf dGhyZWFkLT5zdG9wX2Jwc3RhdAotIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hl X2FzcGFjZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAotIAkJCSAgICAgIHN0b3BfcGMsIGVj cy0+cHRpZCk7Ci1AQCAtMzM1NCw2ICszMzU4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAo c3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCi0gICAgICAgc3RvcF9wYyA9 IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOwotIAot KyAgICAgIC8qIENsZWFyIFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3Vz IHN0b3Agd2hpY2ggY291bGQKLSsJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0 YXRfZXhwbGFpbnNfc2lnbmFsLiAgKi8KLSsgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZl Y3MtPndzKTsKLSsKLSAgICAgICAvKiBEbyB3aGF0ZXZlciBpcyBuZWNlc3NhcnkgdG8gdGhlIHBh cmVudCBicmFuY2ggb2YgdGhlIHZmb3JrLiAgKi8KLSAgICAgICBoYW5kbGVfdmZvcmtfY2hpbGRf ZXhlY19vcl9leGl0ICgxKTsKLSAKIGRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIv bGludXgtbmF0LmMKLWluZGV4IDBlMTgwMzQuLjk2ODk1ZGIgMTAwNjQ0CitpbmRleCA1NjQ5MGNj Li5jNGQxYzI4IDEwMDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiArKysgYi9nZGIvbGludXgt bmF0LmMKLUBAIC0yNjA3LDYgKzI2MDcsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRy ZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKLSAgIHJldHVy biBscC0+c3RvcHBlZF9kYXRhX2FkZHJlc3NfcDsKK0BAIC0xMjQzLDYgKzEyNDMsNjQgQEAgaXRl cmF0ZV9vdmVyX2x3cHMgKHB0aWRfdCBmaWx0ZXIsCisgICByZXR1cm4gTlVMTDsKICB9CiAgCi0r LyogSW4gYHNldCBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJyB3aXRoIG11bHRpdGhyZWFkZWQgcGFy ZW50IHdlIG5lZWQgdG8gZGV0YWNoCi0rICAgd2F0Y2hwb2ludHMgZnJvbSBhbGwgdGhlIExXUHMu ICBJbiBzdWNoIGNhc2UgSU5GRVJJT1JfUFRJRCB3aWxsIGJlIHRoZQotKyAgIG5vbi10aHJlYWRl ZCBuZXcgY2hpbGQgd2hpbGUgTFdQX0xJU1Qgd2lsbCBzdGlsbCBjb250YWluIGFsbCB0aGUgdGhy ZWFkcyBvZgotKyAgIHRoZSBwYXJlbnQgYmVpbmcgZGV0YWNoZWQuICAqLworKy8qIEhlbHBlciBm b3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLiAgKi8KKysKKytzdHJ1Y3QgaXRl cmF0ZV93YXRjaHBvaW50X2x3cHNfZGF0YQorKyAgeworKyAgICBsaW51eF9uYXRfaXRlcmF0ZV93 YXRjaHBvaW50X2x3cHNfZnR5cGUgY2FsbGJhY2s7CisrICAgIHZvaWQgKmNhbGxiYWNrX2RhdGE7 CisrICB9OwogKwogK3N0YXRpYyBpbnQKLStsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzICh2 b2lkKQorK2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8g KmxwLCB2b2lkICpkYXRhcF92b2lkcCkKICt7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotKyAg aW50IGZvdW5kID0gMCwgcmV0dmFsID0gMDsKLSsgIHB0aWRfdCBmaWx0ZXIgPSBwaWRfdG9fcHRp ZCAocHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xk X2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOworKyAgc3RydWN0IGl0ZXJhdGVfd2F0Y2hw b2ludF9sd3BzX2RhdGEgKmRhdGFwID0gZGF0YXBfdm9pZHA7CisrICBpbnQgdGlkOwogKwotKyAg Zm9yIChscCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKLSsgICAgaWYgKHB0aWRfbWF0 Y2ggKGxwLT5wdGlkLCBmaWx0ZXIpKQotKyAgICAgIHsKLSsJaW5mZXJpb3JfcHRpZCA9IGxwLT5w dGlkOwotKwlyZXR2YWwgfD0gbGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0r CWZvdW5kID0gMTsKLSsgICAgICB9CisrICB0aWQgPSBUSURHRVQgKGxwLT5wdGlkKTsKKysgIGlm ICh0aWQgPT0gMCkKKysgICAgdGlkID0gUElER0VUIChscC0+cHRpZCk7CiArCi0rICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKKysgIGRhdGFwLT5jYWxsYmFjayAodGlkLCBkYXRhcC0+Y2FsbGJh Y2tfZGF0YSk7CisrCisrICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KKysgIHJldHVy biAwOworK30KICsKLSsgIGlmICghZm91bmQpCisrLyogSXRlcmF0ZSBsaWtlIGl0ZXJhdGVfb3Zl cl9sd3BzIGRvZXMgZXhjZXB0IHdoZW4gZm9ya2luZy1vZmYgYSBjaGlsZCBjYWxsCisrICAgQ0FM TEJBQ0sgd2l0aCBDQUxMQkFDS19EQVRBIHNwZWNpZmljYWxseSBvbmx5IGZvciB0aGF0IG5ldyBj aGlsZCBQSUQuCisrCisrICAgRHVyaW5nIGBzZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgdGhl IGNhbGwgaXMgYWxzbyBtYWRlIGZvciB0aGUgbmV3IGNoaWxkCisrICAgUElEOyBwYXJlbnQgd2F0 Y2hwb2ludHMgZ2V0IGRldGFjaGVkIGVsc2V3aGVyZSAoZHVyaW5nIHRhcmdldF9kZXRhY2gpLiAg Ki8KKysKKyt2b2lkCisrbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzCisrICAobGlu dXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2Z0eXBlIGNhbGxiYWNrLCB2b2lkICpjYWxs YmFja19kYXRhKQorK3sKKysgIHN0cnVjdCBpdGVyYXRlX3dhdGNocG9pbnRfbHdwc19kYXRhIGRh dGE7CisrICBpbnQgaW5mZXJpb3JfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsK KysgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKKysKKysgIGRh dGEuY2FsbGJhY2sgPSBjYWxsYmFjazsKKysgIGRhdGEuY2FsbGJhY2tfZGF0YSA9IGNhbGxiYWNr X2RhdGE7CisrCisrICBpZiAoaW5mLT5waWQgPT0gaW5mZXJpb3JfcGlkKQogKyAgICB7Ci0rICAg ICAgZ2RiX2Fzc2VydCAoIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOworKyAgICAgIC8qIFN0YW5k YXJkIG1vZGUuICBJdGVyYXRlIGFsbCB0aGUgdGhyZWFkcyBvZiB0aGUgY3VycmVudCBpbmZlcmlv ci4KKysJIFdpdGhvdXQgc3BlY2lmeWluZyBJTkZFUklPUl9QSUQgaXQgd291bGQgaXRlcmF0ZSBh bGwgdGhlIHRocmVhZHMgb2YKKysJIGFsbCB0aGUgaW5mZXJpb3JzLCB3aGljaCBpcyBpbmFwcHJv cHJpYXRlIGZvciB3YXRjaHBvaW50cy4gICovCiArCi0rICAgICAgcmV0dmFsIHw9IGxpbnV4X29w cy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOworKyAgICAgIGl0ZXJhdGVfb3Zlcl9sd3BzIChw aWRfdG9fcHRpZCAoaW5mZXJpb3JfcGlkKSwKKysJCQkgaXRlcmF0ZV93YXRjaHBvaW50X2x3cHNf Y2FsbGJhY2ssICZkYXRhKTsKICsgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgLyogRGV0 YWNoaW5nIGEgbmV3IGNoaWxkIFBJRCB0ZW1wb3JhcmlseSBwcmVzZW50IGluIElORkVSSU9SX1BJ RC4gICovCiArCi0rICByZXR1cm4gcmV0dmFsOworKyAgICAgIGNhbGxiYWNrIChpbmZlcmlvcl9w aWQsIGNhbGxiYWNrX2RhdGEpOworKyAgICB9CiArfQogKwotIC8qIENvbW1vbmx5IGFueSBicmVh a3BvaW50IC8gd2F0Y2hwb2ludCBnZW5lcmF0ZSBvbmx5IFNJR1RSQVAuICAqLwotIAotIHN0YXRp YyBpbnQKLUBAIC01NjYwLDYgKzU2OTMsOCBAQCBsaW51eF9uYXRfYWRkX3RhcmdldCAoc3RydWN0 IHRhcmdldF9vcHMgKnQpCi0gICB0LT50b190aHJlYWRfYWRkcmVzc19zcGFjZSA9IGxpbnV4X25h dF90aHJlYWRfYWRkcmVzc19zcGFjZTsKLSAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9 IGxpbnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7Ci0gICB0LT50b19zdG9wcGVkX2RhdGFf YWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKLSsgIGlmIChsaW51eF9v cHMtPnRvX2RldGFjaF93YXRjaHBvaW50cykKLSsgICAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRz ID0gbGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50czsKLSAKLSAgIHQtPnRvX2Nhbl9hc3luY19w ID0gbGludXhfbmF0X2Nhbl9hc3luY19wOwotICAgdC0+dG9faXNfYXN5bmNfcCA9IGxpbnV4X25h dF9pc19hc3luY19wOwotZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmMgYi9nZGIvbGludXgt dGRlcC5jCi1pbmRleCBjNTFlZGU5Li5lZjhjYmRhIDEwMDY0NAotLS0tIGEvZ2RiL2xpbnV4LXRk ZXAuYwotKysrIGIvZ2RiL2xpbnV4LXRkZXAuYwotQEAgLTI0LDYgKzI0LDggQEAKLSAjaW5jbHVk ZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAjaW5jbHVkZSAiaW5mZXJp b3IuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiaW5mY2FsbC5oIgotIAotIHN0 YXRpYyBzdHJ1Y3QgZ2RiYXJjaF9kYXRhICpsaW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlOworIC8q IFVwZGF0ZSBvdXIgaW50ZXJuYWwgc3RhdGUgd2hlbiBjaGFuZ2luZyBmcm9tIG9uZSBjaGVja3Bv aW50IHRvCisgICAgYW5vdGhlciBpbmRpY2F0ZWQgYnkgTkVXX1BUSUQuICBXZSBjYW4gb25seSBz d2l0Y2ggc2luZ2xlLXRocmVhZGVkCisgICAgYXBwbGljYXRpb25zLCBzbyB3ZSBvbmx5IGNyZWF0 ZSBvbmUgbmV3IExXUCwgYW5kIHRoZSBwcmV2aW91cyBsaXN0CitkaWZmIC0tZ2l0IGEvZ2RiL2xp bnV4LW5hdC5oIGIvZ2RiL2xpbnV4LW5hdC5oCitpbmRleCA2NDM5M2ZkLi5hMDUzY2JkIDEwMDY0 NAorLS0tIGEvZ2RiL2xpbnV4LW5hdC5oCisrKysgYi9nZGIvbGludXgtbmF0LmgKK0BAIC0xMzks NiArMTM5LDExIEBAIHN0cnVjdCBsd3BfaW5mbyAqaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWRfdCBm aWx0ZXIsCisgCQkJCQkJICAgICB2b2lkICopLCAKKyAJCQkJICAgIHZvaWQgKmRhdGEpOwogIAor K3R5cGVkZWYgdm9pZCAoKmxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwc19mdHlwZSkg KGludCB0aWQsIHZvaWQgKmRhdGEpOworKworK2V4dGVybiB2b2lkIGxpbnV4X25hdF9pdGVyYXRl X3dhdGNocG9pbnRfbHdwcworKyAgKGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwc19m dHlwZSBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfZGF0YSk7CisrCisgLyogQ3JlYXRlIGEgcHJv dG90eXBlIGdlbmVyaWMgR05VL0xpbnV4IHRhcmdldC4gIFRoZSBjbGllbnQgY2FuCisgICAgb3Zl cnJpZGUgaXQgd2l0aCBsb2NhbCBtZXRob2RzLiAgKi8KKyBzdHJ1Y3QgdGFyZ2V0X29wcyAqIGxp bnV4X3RhcmdldCAodm9pZCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dk Yi9taS9taS1jbWQtdmFyLmMKIGluZGV4IDMxMGFkZTkuLmQ4NzEwYTEgMTAwNjQ0CiAtLS0gYS9n ZGIvbWkvbWktY21kLXZhci5jCkBAIC00NjAxLDcgKzUyODEsNyBAQCBpbmRleCAwYTU3ZTc3Li42 YmU3NGRmIDEwMDY0NAogIAkJICAgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHRzeW1ib2wpKSA9 PSAwKQogIAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7CiBkaWZmIC0t Z2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBiL2dkYi9wLXZhbHByaW50LmMKLWluZGV4IDQ0YTJkNzIu LmUzYWVhZDQgMTAwNjQ0CitpbmRleCA0NzY2M2JkLi5kOWZiODc4IDEwMDY0NAogLS0tIGEvZ2Ri L3AtdmFscHJpbnQuYwogKysrIGIvZ2RiL3AtdmFscHJpbnQuYwogQEAgLTM4LDYgKzM4LDcgQEAK QEAgLTQ4NjAsNDIgKzU1NDAsMTQ2IEBAIGluZGV4IDE2MjU1NzUuLmQwNzJmODYgMTAwNjQ0CiAr CiAgI2VuZGlmIC8qIFBBUlNFUl9ERUZTX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4 LW5hdC5jIGIvZ2RiL3BwYy1saW51eC1uYXQuYwotaW5kZXggMThkZGVlNy4uNjUyYjAyYSAxMDA2 NDQKK2luZGV4IDE4ZGRlZTcuLmViYjAwMjIgMTAwNjQ0CiAtLS0gYS9nZGIvcHBjLWxpbnV4LW5h dC5jCiArKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCi1AQCAtMjAxMCw2ICsyMDEwLDI0IEBAIHBw Y19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBy dywKLSAgIHJldHVybiByZXQ7CitAQCAtMTYyMCwxMiArMTYyMCwxOCBAQCBib29rZV9yZW1vdmVf cG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAqYiwgaW50IHRpZCkKKyAgIGh3X2JyZWFr c1tpXS5od19icmVhayA9IE5VTEw7CiAgfQogIAotKy8qIFNlZSB0YXJnZXRfZGV0YWNoX3dhdGNo cG9pbnRzLiAgRG8gbm90IHVzZSB3cmFwcGVyCi0rICAgcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBv aW50IGFzIGl0IHdvdWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoc2F2ZWRfZGFi cl92YWx1ZSkuICAqLworK3N0YXRpYyB2b2lkCisrYm9va2VfaW5zZXJ0X3BvaW50X2NhbGxiYWNr IChpbnQgdGlkLCB2b2lkICpwcF92b2lkcCkKKyt7CisrICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9p bnQgKnBwID0gcHBfdm9pZHA7CiArCi0rc3RhdGljIGludAotK3BwY19saW51eF9kZXRhY2hfd2F0 Y2hwb2ludHMgKHZvaWQpCisrICBib29rZV9pbnNlcnRfcG9pbnQgKHBwLCB0aWQpOworK30KKysK KyBzdGF0aWMgaW50CisgcHBjX2xpbnV4X2luc2VydF9od19icmVha3BvaW50IChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKKyAJCQkJICBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKmJwX3RndCkKKyB7 CistICBwdGlkX3QgcHRpZDsKKy0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7CisgICBzdHJ1Y3QgcHBj X2h3X2JyZWFrcG9pbnQgcDsKKyAKKyAgIGlmICghaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNl ICgpKQorQEAgLTE2MzksMTggKzE2NDUsMjMgQEAgcHBjX2xpbnV4X2luc2VydF9od19icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgIHAuYWRkcjIgICAgICAgICAgID0gMDsK KyAgIHAuY29uZGl0aW9uX3ZhbHVlID0gMDsKKyAKKy0gIEFMTF9MV1BTIChscCwgcHRpZCkKKy0g ICAgYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7CisrICBsaW51eF9uYXRf aXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKGJvb2tlX2luc2VydF9wb2ludF9jYWxsYmFjaywgJnAp OworIAorICAgcmV0dXJuIDA7CisgfQorIAorK3N0YXRpYyB2b2lkCisrYm9va2VfcmVtb3ZlX3Bv aW50X2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICpwcF92b2lkcCkKICt7Ci0rICBwaWRfdCB0aWQ7 CisrICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKnBwID0gcHBfdm9pZHA7CiArCi0rICB0aWQg PSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOwotKyAgaWYgKHRpZCA9PSAwKQotKyAgICB0aWQgPSBQ SURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgYm9va2VfcmVtb3ZlX3BvaW50IChwcCwgdGlkKTsK Kyt9CiArCi0rICBpZiAocHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCB0aWQsIE5VTEwsIE5V TEwpIDwgMCkKLSsgICAgcmV0dXJuIC0xOwotKyAgcmV0dXJuIDA7Cisgc3RhdGljIGludAorIHBw Y19saW51eF9yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisg CQkJCSAgc3RydWN0IGJwX3RhcmdldF9pbmZvICpicF90Z3QpCisgeworLSAgcHRpZF90IHB0aWQ7 CistICBzdHJ1Y3QgbHdwX2luZm8gKmxwOworICAgc3RydWN0IHBwY19od19icmVha3BvaW50IHA7 CisgCisgICBpZiAoIWhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKK0BAIC0xNjY0LDgg KzE2NzUsNyBAQCBwcGNfbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorICAgcC5hZGRyMiAgICAgICAgICAgPSAwOworICAgcC5jb25kaXRpb25fdmFs dWUgPSAwOworIAorLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQorLSAgICBib29rZV9yZW1vdmVfcG9p bnQgKCZwLCBUSURHRVQgKHB0aWQpKTsKKysgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRf bHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAmcCk7CisgCisgICByZXR1cm4gMDsK KyB9CitAQCAtMTg3OCwxMiArMTg4OCwxOSBAQCBwcGNfbGludXhfY2FuX2FjY2VsX3dhdGNocG9p bnRfY29uZGl0aW9uIChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorIAkgICYmIGNo ZWNrX2NvbmRpdGlvbiAoYWRkciwgY29uZCwgJmRhdGFfdmFsdWUpKTsKKyB9CisgCisrc3RhdGlj IHZvaWQKKytzZXRfc2F2ZWRfZGFicl92YWx1ZV9jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqcmV0 cF92b2lkcCkKKyt7CisrICBpbnQgKnJldHAgPSByZXRwX3ZvaWRwOworKworKyAgaWYgKHB0cmFj ZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCAwLCBzYXZlZF9kYWJyX3ZhbHVlKSA8IDApCisr ICAgICpyZXRwID0gLTE7CiArfQogKwotIHN0YXRpYyB2b2lkCi0gcHBjX2xpbnV4X25ld190aHJl YWQgKHB0aWRfdCBwdGlkKQorIHN0YXRpYyBpbnQKKyBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCisgCQkJICAgICBzdHJ1Y3QgZXhw cmVzc2lvbiAqY29uZCkKICB7Ci1AQCAtMjM0OSw2ICsyMzY3LDcgQEAgX2luaXRpYWxpemVfcHBj X2xpbnV4X25hdCAodm9pZCkKLSAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQ7Ci0gICB0LT50b19pbnNlcnRf d2F0Y2hwb2ludCA9IHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKLSAgIHQtPnRvX3JlbW92 ZV93YXRjaHBvaW50ID0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50OwotKyAgdC0+dG9fZGV0 YWNoX3dhdGNocG9pbnRzID0gcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50czsKLSAgIHQtPnRv X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7 Ci0gICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFf YWRkcmVzczsKLSAgIHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGlu dXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZTsKKy0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7 CistICBwdGlkX3QgcHRpZDsKKyAgIGludCByZXQgPSAtMTsKKyAKKyAgIGlmIChoYXZlX3B0cmFj ZV9ib29rZV9pbnRlcmZhY2UgKCkpCitAQCAtMTkwNyw4ICsxOTI0LDcgQEAgcHBjX2xpbnV4X2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorICAgICAg IHAuYWRkciAgICAgICAgICAgID0gKHVpbnQ2NF90KSBhZGRyOworICAgICAgIHAuYWRkcjIgICAg ICAgICAgID0gMDsKKyAKKy0gICAgICBBTExfTFdQUyAobHAsIHB0aWQpCistCWJvb2tlX2luc2Vy dF9wb2ludCAoJnAsIFRJREdFVCAocHRpZCkpOworKyAgICAgIGxpbnV4X25hdF9pdGVyYXRlX3dh dGNocG9pbnRfbHdwcyAoYm9va2VfaW5zZXJ0X3BvaW50X2NhbGxiYWNrLCAmcCk7CisgCisgICAg ICAgcmV0ID0gMDsKKyAgICAgfQorQEAgLTE5NTEsMTIgKzE5NjcsOCBAQCBwcGNfbGludXhfaW5z ZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCisgCisgICAg ICAgc2F2ZWRfZGFicl92YWx1ZSA9IGRhYnJfdmFsdWU7CisgCistICAgICAgQUxMX0xXUFMgKGxw LCBwdGlkKQorLQlpZiAocHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCBUSURHRVQgKHB0aWQp LCAwLAorLQkJICAgIHNhdmVkX2RhYnJfdmFsdWUpIDwgMCkKKy0JICByZXR1cm4gLTE7CistCisg ICAgICAgcmV0ID0gMDsKKysgICAgICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMg KHNldF9zYXZlZF9kYWJyX3ZhbHVlX2NhbGxiYWNrLCAmcmV0KTsKKyAgICAgfQorIAorICAgcmV0 dXJuIHJldDsKK0BAIC0xOTY2LDggKzE5NzgsNiBAQCBzdGF0aWMgaW50CisgcHBjX2xpbnV4X3Jl bW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorIAkJCSAg ICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCisgeworLSAgc3RydWN0IGx3cF9pbmZvICpscDsK Ky0gIHB0aWRfdCBwdGlkOworICAgaW50IHJldCA9IC0xOworIAorICAgaWYgKGhhdmVfcHRyYWNl X2Jvb2tlX2ludGVyZmFjZSAoKSkKK0BAIC0xOTkxLDIwICsyMDAxLDE2IEBAIHBwY19saW51eF9y ZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKKyAgICAg ICBwLmFkZHIgICAgICAgICAgICA9ICh1aW50NjRfdCkgYWRkcjsKKyAgICAgICBwLmFkZHIyICAg ICAgICAgICA9IDA7CisgCistICAgICAgQUxMX0xXUFMgKGxwLCBwdGlkKQorLQlib29rZV9yZW1v dmVfcG9pbnQgKCZwLCBUSURHRVQgKHB0aWQpKTsKKysgICAgICBsaW51eF9uYXRfaXRlcmF0ZV93 YXRjaHBvaW50X2x3cHMgKGJvb2tlX3JlbW92ZV9wb2ludF9jYWxsYmFjaywgJnApOworIAorICAg ICAgIHJldCA9IDA7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworICAgICAgIHNhdmVkX2RhYnJf dmFsdWUgPSAwOworLSAgICAgIEFMTF9MV1BTIChscCwgcHRpZCkKKy0JaWYgKHB0cmFjZSAoUFRS QUNFX1NFVF9ERUJVR1JFRywgVElER0VUIChwdGlkKSwgMCwKKy0JCSAgICBzYXZlZF9kYWJyX3Zh bHVlKSA8IDApCistCSAgcmV0dXJuIC0xOworIAorICAgICAgIHJldCA9IDA7CisrICAgICAgbGlu dXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChzZXRfc2F2ZWRfZGFicl92YWx1ZV9jYWxs YmFjaywgJnJldCk7CisgICAgIH0KKyAKKyAgIHJldHVybiByZXQ7CiBkaWZmIC0tZ2l0IGEvZ2Ri L3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwogaW5kZXggNTU4Njc2Ny4uMTQ0ZTg1MSAxMDA2 NDQKIC0tLSBhL2dkYi9wcmludGNtZC5jCkBAIC01MTI5LDcgKzU5MTMsNyBAQCBpbmRleCA4MjMy NDM2Li5lOWZjOGFhIDEwMDY0NAogIAogIAwKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZh bHVlLmMgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLWluZGV4IDQ0NDU2NTUuLjhiMDZmZDggMTAw NjQ0CitpbmRleCAzYWRlNTEyLi43MGUwMGU5IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS12 YWx1ZS5jCiArKysgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKIEBAIC0yOCw2ICsyOCw3IEBACkBA IC01MTY4LDcgKzU5NTIsNyBAQCBpbmRleCA0NDQ1NjU1Li44YjA2ZmQ4IDEwMDY0NAogIAogIAwK IGRpZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYwotaW5kZXgg ZGIyMTM2MC4uMTg5N2QxMCAxMDA2NDQKK2luZGV4IDYwZWZjNGEuLjgyNGEwNzYgMTAwNjQ0CiAt LS0gYS9nZGIvc29saWItc3ZyNC5jCiArKysgYi9nZGIvc29saWItc3ZyNC5jCiBAQCAtMTI3Niw3 ICsxMjc2LDggQEAgc3ZyNF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcGMpCkBA IC01MTgxLDYgKzU5NjUsMzIgQEAgaW5kZXggZGIyMTM2MC4uMTg5N2QxMCAxMDA2NDQKICB9CiAg CiAgLyogR2l2ZW4gYW4gZXhlY3V0YWJsZSdzIEFCRkQgYW5kIHRhcmdldCwgY29tcHV0ZSB0aGUg ZW50cnktcG9pbnQKK2RpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCitpbmRl eCAxZTBjMmU2Li4yM2Y3ZjU2IDEwMDY0NAorLS0tIGEvZ2RiL3N0YWNrLmMKKysrKyBiL2dkYi9z dGFjay5jCitAQCAtMzY2LDYgKzM2Niw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1i b2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAJICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlOworIAkJICBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworKwkJICBzdHJ1Y3QgY2xlYW51cCAqb2xk X2NoYWluOworIAorICAgICAgICAgICAgICAgICAgIC8qIFVzZSB0aGUgYXBwcm9wcmlhdGUgbGFu Z3VhZ2UgdG8gZGlzcGxheSBvdXIgc3ltYm9sLAorICAgICAgICAgICAgICAgICAgICAgIHVubGVz cyB0aGUgdXNlciBmb3JjZWQgdGhlIGxhbmd1YWdlIHRvIGEgc3BlY2lmaWMKK0BAIC0zNzgsNyAr Mzc5LDEzIEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSwKKyAJCSAgZ2V0X3Jhd19wcmludF9vcHRpb25zICgmb3B0cyk7Cisg CQkgIG9wdHMuZGVyZWZfcmVmID0gMDsKKyAJCSAgb3B0cy5zdW1tYXJ5ID0gc3VtbWFyeTsKKysK KysJCSAgLyogRnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBFX0RZ TkFNSUMuICAqLworKwkJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3Rl ZF9mcmFtZSAoKTsKKysJCSAgc2VsZWN0X2ZyYW1lIChmcmFtZSk7CisgCQkgIGNvbW1vbl92YWxf cHJpbnQgKHZhbCwgc3RiLT5zdHJlYW0sIDIsICZvcHRzLCBsYW5ndWFnZSk7CisrCQkgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOworKworIAkJICB1aV9vdXRfZmllbGRfc3RyZWFtICh1aW91dCwg InZhbHVlIiwgc3RiKTsKKyAJICAgICAgICB9CisgCSAgICAgIGVsc2UKIGRpZmYgLS1naXQgYS9n ZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1pc2MuYwogaW5kZXggZWY2MzIxNi4uMWNjOTA4MiAxMDA2 NDQKIC0tLSBhL2dkYi9zeW1taXNjLmMKQEAgLTUyNTksOTMgKzYwNjksNiBAQCBpbmRleCBhNDAz MmY4Li45NDRkZDMzIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKgogICAg ICBsb29rdXBfbWluaW1hbF9zeW1ib2xfYW5kX29iamZpbGUgKGNvbnN0IGNoYXIgKiwKICAJCQkJ ICAgICAgIHN0cnVjdCBvYmpmaWxlICoqKTsKLWRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMgYi9n ZGIvdGFyZ2V0LmMKLWluZGV4IDU5ODQxMjUuLjA2NTg5ZDQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGFy Z2V0LmMKLSsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTEyMyw2ICsxMjMsOCBAQCBzdGF0aWMgaW50 IGRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50LAotIHN0YXRp YyBpbnQgZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiwgaW50LCBpbnQsCi0g CQkJCSAgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSAKLStzdGF0aWMgaW50IGRlYnVnX3Rv X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCk7Ci0rCi0gc3RhdGljIGludCBkZWJ1Z190b19zdG9w cGVkX2J5X3dhdGNocG9pbnQgKHZvaWQpOwotIAotIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBl ZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKLUBAIC02 MDYsNiArNjA4LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotICAgICAgIElOSEVS SVQgKHRvX3JlbW92ZV9od19icmVha3BvaW50LCB0KTsKLSAgICAgICBJTkhFUklUICh0b19pbnNl cnRfd2F0Y2hwb2ludCwgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9fcmVtb3ZlX3dhdGNocG9pbnQs IHQpOwotKyAgICAgIElOSEVSSVQgKHRvX2RldGFjaF93YXRjaHBvaW50cywgdCk7Ci0gICAgICAg SU5IRVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOwotICAgICAgIElOSEVSSVQgKHRv X2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX2hhdmVf Y29udGludWFibGVfd2F0Y2hwb2ludCwgdCk7Ci1AQCAtNzM5LDYgKzc0Miw5IEBAIHVwZGF0ZV9j dXJyZW50X3RhcmdldCAodm9pZCkKLSAgIGRlX2ZhdWx0ICh0b19yZW1vdmVfd2F0Y2hwb2ludCwK LSAJICAgIChpbnQgKCopIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAq KSkKLSAJICAgIHJldHVybl9taW51c19vbmUpOwotKyAgZGVfZmF1bHQgKHRvX2RldGFjaF93YXRj aHBvaW50cywKLSsJICAgIChpbnQgKCopICh2b2lkKSkKLSsJICAgIHJldHVybl96ZXJvKTsKLSAg IGRlX2ZhdWx0ICh0b19zdG9wcGVkX2J5X3dhdGNocG9pbnQsCi0gCSAgICAoaW50ICgqKSAodm9p ZCkpCi0gCSAgICByZXR1cm5femVybyk7Ci1AQCAtMzU3MCw2ICszNTc2LDE5IEBAIGRlYnVnX3Rv X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0g ICByZXR1cm4gcmV0dmFsOwotIH0KLSAKLStzdGF0aWMgaW50Ci0rZGVidWdfdG9fZGV0YWNoX3dh dGNocG9pbnRzICh2b2lkKQotK3sKLSsgIGludCByZXR2YWw7Ci0rCi0rICByZXR2YWwgPSBkZWJ1 Z190YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOwotKwotKyAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAotKwkJICAgICAgInRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMgKCkg PSAlbGRcbiIsCi0rCQkgICAgICAodW5zaWduZWQgbG9uZykgcmV0dmFsKTsKLSsgIHJldHVybiBy ZXR2YWw7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gZGVidWdfdG9fdGVybWluYWxfaW5pdCAodm9p ZCkKLSB7Ci1AQCAtMzgxNyw2ICszODM2LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQot ICAgY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1v dmVfaHdfYnJlYWtwb2ludDsKLSAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50 ID0gZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQ7Ci0gICBjdXJyZW50X3RhcmdldC50b19yZW1v dmVfd2F0Y2hwb2ludCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OwotKyAgY3VycmVudF90 YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzID0gZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRz OwotICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gZGVidWdfdG9f c3RvcHBlZF9ieV93YXRjaHBvaW50OwotICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRh X2FkZHJlc3MgPSBkZWJ1Z190b19zdG9wcGVkX2RhdGFfYWRkcmVzczsKLSAgIGN1cnJlbnRfdGFy Z2V0LnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50 X2FkZHJfd2l0aGluX3JhbmdlOwotZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJn ZXQuaAotaW5kZXggNzI5MGQ5MC4uYzAyNmQ3NiAxMDA2NDQKLS0tLSBhL2dkYi90YXJnZXQuaAot KysrIGIvZ2RiL3RhcmdldC5oCi1AQCAtNDQ1LDYgKzQ0NSw3IEBAIHN0cnVjdCB0YXJnZXRfb3Bz Ci0gICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0XyogbWFjcm9z LiAgKi8KLSAgICAgaW50ICgqdG9fcmVtb3ZlX3dhdGNocG9pbnQpIChDT1JFX0FERFIsIGludCwg aW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSAgICAgaW50ICgqdG9faW5zZXJ0X3dhdGNocG9p bnQpIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSsgICAgaW50 ICgqdG9fZGV0YWNoX3dhdGNocG9pbnRzKSAodm9pZCk7Ci0gCi0gICAgIGludCAoKnRvX3N0b3Bw ZWRfYnlfd2F0Y2hwb2ludCkgKHZvaWQpOwotICAgICBpbnQgdG9faGF2ZV9zdGVwcGFibGVfd2F0 Y2hwb2ludDsKLUBAIC0xMzI0LDYgKzEzMjUsMTUgQEAgZXh0ZXJuIGNoYXIgKm5vcm1hbF9waWRf dG9fc3RyIChwdGlkX3QgcHRpZCk7Ci0gI2RlZmluZQl0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQo YWRkciwgbGVuLCB0eXBlLCBjb25kKSBcCi0gICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92 ZV93YXRjaHBvaW50KSAoYWRkciwgbGVuLCB0eXBlLCBjb25kKQotIAotKy8qIENsZWFyIGFsbCBk ZWJ1ZyByZWdpc3RlcnMgd2l0aG91dCBhZmZlY3RpbmcgYW55IHJlZ2lzdGVyIGNhY2hlcy4gIEZ1 bmN0aW9uCi0rICAgYWN0cyBvbiBJTkZFUklPUl9QVElEIHdoaWNoIHNob3VsZCBiZSB0aGUgZm9y a2VkLW9mZiBwcm9jZXNzLCBlaXRoZXIgdGhlCi0rICAgbm9uLXRocmVhZGVkIGNoaWxkIG9uZSBv ciB0aGUgdGhyZWFkZWQgcGFyZW50IG9uZSwgZGVwZW5kaW5nIG9uIGBzZXQKLSsgICBmb2xsb3ct Zm9yay1tb2RlJy4gIEJvdGggd2F0Y2hwb2ludHMgYW5kIGhhcmR3YXJlIGJyZWFrcG9pbnRzIGdl dCByZW1vdmVkLgotKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAqLwot KwotKyNkZWZpbmUJdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cygpCVwKLSsgICAgICgqY3VycmVu dF90YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzKSAoKQotKwotICNkZWZpbmUgdGFyZ2V0X2lu c2VydF9od19icmVha3BvaW50KGdkYmFyY2gsIGJwX3RndCkgXAotICAgICAgKCpjdXJyZW50X3Rh cmdldC50b19pbnNlcnRfaHdfYnJlYWtwb2ludCkgKGdkYmFyY2gsIGJwX3RndCkKLSAKIGRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uODNmYWFmNgpAQCAtNzgyMyw2ICs4NTQ2LDEy MSBAQCBpbmRleCAwMDAwMDAwLi5lNDkyYjNhCiArICBwcmludCAqLCBjNDBwdCAgISBicmVhay1o ZXJlCiArCiArZW5kIHByb2dyYW0gcmVwcm8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi4yNjFjZTE3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAKK0BAIC0wLDAg KzEsMjQgQEAKKyshIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEg SWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KKysh IE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29t Pi4KKyshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KKysKKytzdWJyb3V0aW5lIGJhcgorKyAgcmVhbCA6 OiBkdW1teQorKyAgZHVtbXkgPSAxCisrZW5kIHN1YnJvdXRpbmUgYmFyCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40ZmRkNWVlCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCitAQCAtMCww ICsxLDM3IEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIyAKKysjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIyAKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAorKwor K3NldCB0ZXN0ZmlsZSAiZHluYW1pYy1vdGhlci1mcmFtZSIKKytzZXQgc3JjZmlsZTEgJHt0ZXN0 ZmlsZX0uZjkwCisrc2V0IHNyY2ZpbGUyICR7dGVzdGZpbGV9LXN0dWIuZjkwCisrc2V0IG9iamZp bGUyICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tc3R1Yi5vCisrc2V0IGV4ZWN1dGFi bGUgJHt0ZXN0ZmlsZX0KKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0 YWJsZX0KKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Zp bGUyfSIgIiR7b2JqZmlsZTJ9IiBvYmplY3Qge2Y3N31dICE9ICIiCisrICAgICB8fCBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlMX0gJHtvYmpmaWxlMn0iICIke2Jp bmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlMX0gb3IgJHtzcmNmaWxlMn0iCisrICAgIHJldHVy biAtMQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICR7ZXhlY3V0YWJsZX0KKysKKytpZiAhW3J1bnRv IGJhcl9dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBiYXJfIgorKyAgICBj b250aW51ZQorK30KKysKKytnZGJfdGVzdCAiYnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFt ZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkw CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmJjNjM3ZAorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1l LmY5MAorQEAgLTAsMCArMSwzNiBAQAorKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5 bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGph a3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFu IEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKworK3N1YnJvdXRpbmUg Zm9vIChzdHJpbmcpCisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBiYXIKKysgICAgZW5k IHN1YnJvdXRpbmUKKysgIGVuZCBpbnRlcmZhY2UKKysgIGNoYXJhY3RlciBzdHJpbmcqKCopCisr ICBjYWxsIGJhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBzdG9wLWhlcmUKKytl bmQgc3Vicm91dGluZSBmb28KKytwcm9ncmFtIHRlc3QKKysgIGludGVyZmFjZQorKyAgICBzdWJy b3V0aW5lIGZvbyAoc3RyaW5nKQorKyAgICBjaGFyYWN0ZXIgc3RyaW5nKigqKQorKyAgICBlbmQg c3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgY2FsbCBmb28gKCdoZWxsbycpCisrZW5k CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0 CiBpbmRleCAwMDAwMDAwLi4wY2NlYmUwCkBAIC04MTY5LDIzICs5MDA3LDIwNyBAQCBpbmRleCAw MDAwMDAwLi4yMjZkYzVkCiArISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4uCiArISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBi eSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCiArCi0rc3Vicm91 dGluZSBmb28gKGUsIGYpCi0rICBjaGFyYWN0ZXIgKGxlbj0xKSA6OiBjCi0rICBjaGFyYWN0ZXIg KGxlbj04KSA6OiBkCi0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBlCi0rICBjaGFyYWN0ZXIgKGxl bj0qKSA6OiBmICgxOjcsIDg6MTApCi0rICBjID0gJ2MnCi0rICBkID0gJ2QnCi0rICBlID0gJ2Un ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXItaW5pdAotKyAgZiA9 ICdmJwotKyAgZigxLDkpID0gJ2YyJwotKyAgYyA9ICdjJyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICEgdmFyLWZpbmlzaAotK2VuZCBzdWJyb3V0aW5lIGZvbwotKyAgY2hh cmFjdGVyIChsZW49NCkgOjogZywgaCAoMTo3LCA4OjEwKQotKyAgZyA9ICdnJwotKyAgaCA9ICdo JwotKyAgY2FsbCBmb28gKGcsIGgpCi0rZW5kCisrc3Vicm91dGluZSBmb28gKGUsIGYpCisrICBj aGFyYWN0ZXIgKGxlbj0xKSA6OiBjCisrICBjaGFyYWN0ZXIgKGxlbj04KSA6OiBkCisrICBjaGFy YWN0ZXIgKGxlbj0qKSA6OiBlCisrICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBmICgxOjcsIDg6MTAp CisrICBjID0gJ2MnCisrICBkID0gJ2QnCisrICBlID0gJ2UnICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgISB2YXItaW5pdAorKyAgZiA9ICdmJworKyAgZigxLDkpID0gJ2Yy JworKyAgYyA9ICdjJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFy LWZpbmlzaAorK2VuZCBzdWJyb3V0aW5lIGZvbworKyAgY2hhcmFjdGVyIChsZW49NCkgOjogZywg aCAoMTo3LCA4OjEwKQorKyAgZyA9ICdnJworKyAgaCA9ICdoJworKyAgY2FsbCBmb28gKGcsIGgp CisrZW5kCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1t dWx0aS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMTUzYzE4YgorLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCitAQCAtMCww ICsxLDU5IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1 Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2lu Y2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrc3RhdGljIHZvbGF0 aWxlIGludCBhLCBiLCBjOworKworK3N0YXRpYyB2b2lkCisrbWFya2VyX2V4aXQxICh2b2lkKQor K3sKKysgIGEgPSAxOworK30KKysKKysvKiBXb3JrYXJvdW5kIFBSIGJyZWFrcG9pbnRzLzEyMjcy IGJ5IHR3byBkaWZmZXJlbnQgYnJlYWtwb2ludCBsb2NhdGlvbnMuICAqLworK3N0YXRpYyB2b2lk CisrbWFya2VyX2V4aXQyICh2b2lkKQorK3sKKysgIGEgPSAxOworK30KKysKKytzdGF0aWMgdm9p ZCAqCisrc3RhcnQgKHZvaWQgKmFyZykKKyt7CisrICBiID0gMjsKKysgIGMgPSAzOworKworKyAg cmV0dXJuIE5VTEw7CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgcHRocmVhZF90 IHRocmVhZDsKKysgIGludCBpOworKworKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkLCBO VUxMLCBzdGFydCwgTlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gcHRocmVhZF9q b2luICh0aHJlYWQsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgbWFya2VyX2V4 aXQxICgpOworKyAgbWFya2VyX2V4aXQyICgpOworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGkuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5leHAKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi4zYjVkMDQwCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAorQEAgLTAsMCArMSwxMTMgQEAK KysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpZiB7IFtpc19yZW1vdGUgdGFyZ2V0XSB8 fCAhW2lzbmF0aXZlXSB9IHRoZW4geworKyAgICBjb250aW51ZQorK30KKysKKytzZXQgdGVzdGZp bGUgIndhdGNocG9pbnQtbXVsdGkiCisrCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KKytz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke2V4ZWN1dGFibGV9CisrCisraWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0g IT0gIiIgfSB7CisrICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKyAgICByZXR1cm4gLTEK Kyt9CisrCisrY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQorKworK2lmICFbcnVudG9fbWFpbl0g eworKyAgICByZXR1cm4KKyt9CisrIyBOZXZlciBrZWVwL3VzZSBhbnkgbm9uLWh3IGJyZWFrcG9p bnRzIHRvIHdvcmthcm91bmQgYSBtdWx0aS1pbmZlcmlvciBidWcuCisrZGVsZXRlX2JyZWFrcG9p bnRzCisrCisrZ2RiX3Rlc3QgImFkZC1pbmZlcmlvciIgIkFkZGVkIGluZmVyaW9yIDIiCisrZ2Ri X3Rlc3QgImluZmVyaW9yIDIiICJ3aXRjaGluZyB0byBpbmZlcmlvciAyIC4qIgorK2dkYl9sb2Fk ICRiaW5maWxlCisrCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHJldHVybgorK30KKytkZWxl dGVfYnJlYWtwb2ludHMKKysKKysjIFNpbXVsYXRlIG5vbi1zdG9wK3RhcmdldC1hc3luYyB3aGlj aCBhbHNvIHVzZXMgYnJlYWtwb2ludCBhbHdheXMtaW5zZXJ0ZWQuCisrZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgYnJlYWtwb2ludCBhbHdheXMtaW5zZXJ0ZWQgb24iCisrIyBkaXNwbGFjZWQtc3Rl cHBpbmcgaXMgYWxzbyBuZWVkZWQgYXMgb3RoZXIgR0RCIHNvbWV0aW1lcyBzdGlsbCByZW1vdmVz IHRoZQorKyMgYnJlYWtwb2ludHMsIGV2ZW4gd2l0aCBhbHdheXMtaW5zZXJ0ZWQgb24uCisrZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGlzcGxhY2VkLXN0ZXBwaW5nIG9uIgorKworKyMgRGVidWdn aW5nIG9mIHRoaXMgdGVzdGNhc2U6CisrI2dkYl90ZXN0X25vX291dHB1dCAibWFpbnRlbmFuY2Ug c2V0IHNob3ctZGVidWctcmVncyBvbiIKKysjZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGVidWcg aW5mcnVuIDEiCisrCisrIyBEbyBub3QgdXNlIHNpbXBsZSBoYXJkd2FyZSB3YXRjaHBvaW50ICgi d2F0Y2giKSBhcyBpdHMgZmFsc2UgaGl0IG1heSBiZQorKyMgdW5ub3RpY2VkIGJ5IEdEQiBpZiBp dCByZWFkcyBpdCBzdGlsbCBoYXMgdGhlIHNhbWUgdmFsdWUuCisrZ2RiX3Rlc3QgImF3YXRjaCBj IiAiSGFyZHdhcmUgYWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkgd2F0Y2hwb2ludCBcWzAtOVxdKzog YyIKKysjIE5ldmVyIGtlZXAvdXNlIGFueSBub24taHcgYnJlYWtwb2ludHMgdG8gd29ya2Fyb3Vu ZCBhIG11bHRpLWluZmVyaW9yIGJ1Zy4KKysjIFVzZSBgKicgdG8gd29ya2Fyb3VuZCBhIG11bHRp LWluZmVyaW9yIGJ1Zy4KKytzZXQgdGVzdCAiaGJyZWFrICptYXJrZXJfZXhpdDIiCisrZ2RiX3Rl c3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIkhhcmR3YXJlIGFzc2lzdGVkIGJy ZWFrcG9pbnQgXFswLTlcXSsgYXQgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0 CisrICAgIH0KKysgICAgLXJlICIoTm8gaGFyZHdhcmUgYnJlYWtwb2ludCBzdXBwb3J0IGluIHRo ZSB0YXJnZXRcXC58SGFyZHdhcmUgYnJlYWtwb2ludHMgdXNlZCBleGNlZWRzIGxpbWl0XFwuKVxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0u ZXhwCisrCXJldHVybgorKyAgICB9CisrfQorKworK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAid2l0 Y2hpbmcgdG8gaW5mZXJpb3IgMSAuKiIKKysKKytnZGJfdGVzdCAiYXdhdGNoIGIiICJIYXJkd2Fy ZSBhY2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBiIgorK2dkYl90 ZXN0ICJoYnJlYWsgKm1hcmtlcl9leGl0MSIge0hhcmR3YXJlIGFzc2lzdGVkIGJyZWFrcG9pbnQg WzAtOV0rIGF0IC4qfQorKworK2dkYl90ZXN0ICJpbmZlcmlvciAyIiAid2l0Y2hpbmcgdG8gaW5m ZXJpb3IgMiAuKiIKKysKKysjIEZBSUwgd291bGQgYmUgYSBoaXQgb24gd2F0Y2hwb2ludCBmb3Ig YGInIC0gdGhhdCBvbmUgaXMgZm9yIHRoZSBvdGhlcgorKyMgaW5mZXJpb3IuCisrZ2RiX3Rlc3Qg ImNvbnRpbnVlIiAiSGFyZHdhcmUgYWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkgd2F0Y2hwb2ludCBc WzAtOVxdKzogY1xyXG5cclxuT2xkIHZhbHVlID0gMFxyXG5OZXcgdmFsdWUgPSAzXHJcbi4qIiAi Y2F0Y2ggYyIKKysKKytzZXQgdGVzdCAiY2F0Y2ggbWFya2VyX2V4aXQyIgorK2dkYl90ZXN0X211 bHRpcGxlICJjb250aW51ZSIgJHRlc3QgeworKyAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlcXSss IG1hcmtlcl9leGl0MiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldHVwX2tmYWlsIGJyZWFr cG9pbnRzLzEyMzEyICotKi0qCisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIkhhcmR3 YXJlIGFjY2VzcyBcXChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGNcclxuXHJc blZhbHVlID0gM1xyXG4uKiBpbiBfX25wdGxfZGVhdGhfZXZlbnQgLipcclxuJGdkYl9wcm9tcHQg JCIgeworKwlzZXR1cF9rZmFpbCBicmVha3BvaW50cy8xMjMxMiAqLSotKgorKwlmYWlsICR0ZXN0 CisrICAgIH0KKyt9CisrCisrZ2RiX3Rlc3QgImluZmVyaW9yIDEiICJ3aXRjaGluZyB0byBpbmZl cmlvciAxIC4qIgorKworK2dkYl90ZXN0ICJjb250aW51ZSIgIkhhcmR3YXJlIGFjY2VzcyBcXChy ZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGJcclxuXHJcbk9sZCB2YWx1ZSA9IDBc clxuTmV3IHZhbHVlID0gMlxyXG4uKiIgImNhdGNoIGIiCisrCisrc2V0IHRlc3QgImNhdGNoIG1h cmtlcl9leGl0MSIKKytnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICR0ZXN0IHsKKysgICAg LXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJfZXhpdDEgLipcclxuJGdkYl9wcm9tcHQg JCIgeworKwlzZXR1cF9rZmFpbCBicmVha3BvaW50cy8xMjMxMiAqLSotKgorKwlwYXNzICR0ZXN0 CisrICAgIH0KKysgICAgLXJlICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3YXRj aHBvaW50IFxbMC05XF0rOiBiXHJcblxyXG5WYWx1ZSA9IDJcclxuLiogaW4gX19ucHRsX2RlYXRo X2V2ZW50IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJc2V0dXBfa2ZhaWwgYnJlYWtwb2ludHMv MTIzMTIgKi0qLSoKKysJZmFpbCAkdGVzdAorKyAgICB9CisrfQorKwogZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwogbmV3IGZpbGUgbW9kZSAx MDA2NDQKIGluZGV4IDAwMDAwMDAuLjcyOWY0NTcKQEAgLTg1NjQsMTUgKzk1ODYsMTUgQEAgaW5k ZXggMDAwMDAwMC4uMjk1NjAyZAogKyAgcyA6PSAndGVzdCcjMCdzdHJpbmcnOwogKyAgd3JpdGVs bihzKTsgeyBzZXQgYnJlYWtwb2ludCAyIGhlcmUgfQogK2VuZC4KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwogbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRkYzMwOGIKK2luZGV4IDAwMDAwMDAuLmEyYWQy OWEKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLWZvcmtvZmYuYwotQEAgLTAsMCArMSwxNzUgQEAKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWNoaWxkLmMKK0BAIC0wLDAgKzEsMTI3IEBA CiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygp LW9mZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgogKwpAQCAtODU5Myw2MSArOTYxNSwxMiBAQCBpbmRleCAwMDAwMDAwLi40ZGMzMDhiCiAr CiArI2luY2x1ZGUgPHN0cmluZy5oPgogKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDx1 bmlzdGQuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNp bmNsdWRlIDxzdGRpby5oPgogKwotK3N0YXRpYyB2b2lkCi0rZGVsYXkgKHZvaWQpCi0rewotKyAg aW50IGkgPSB1c2xlZXAgKDEwMDAwMDAgLyAxMDApOwotKyAgYXNzZXJ0IChpID09IDAgfHwgZXJy bm8gPT0gRUlOVFIpOwotK30KLSsKLSsjaWYgZGVmaW5lZCBGT0xMT1dfUEFSRU5UCi0rCi0rc3Rh dGljIHZvaWQKLStmb3Jrb2ZmIChpbnQgbnIpCi0rewotKyAgcGlkX3QgY2hpbGQsIHBpZF9nb3Q7 Ci0rICBpbnQgZXhpdF9jb2RlID0gNDIgKyBucjsKLSsgIGludCBzdGF0dXMsIGk7Ci0rCi0rICBj aGlsZCA9IGZvcmsgKCk7Ci0rICBzd2l0Y2ggKGNoaWxkKQotKyAgICB7Ci0rICAgIGNhc2UgLTE6 Ci0rICAgICAgYXNzZXJ0ICgwKTsKLSsgICAgY2FzZSAwOgotKyAgICAgIHByaW50ZiAoImNoaWxk JWQ6ICVkXG4iLCBuciwgKGludCkgZ2V0cGlkICgpKTsKLSsgICAgICAvKiBEZWxheSB0byBnZXQg Ym90aCB0aGUgImNoaWxkJWQiIGFuZCAicGFyZW50JWQiIG1lc3NhZ2UgcHJpbnRlZCB3aXRob3V0 Ci0rCSBhIHJhY2UgYnJlYWtpbmcgZXhwZWN0IGJ5IGl0cyBlbmRsZXNzIHdhaXQgb24gYCRnZGJf cHJvbXB0JCc6Ci0rCSBCcmVha3BvaW50IDMsIGJyZWFrcG9pbnQgKCkgYXQgLi4vLi4vLi4vZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYzozMwotKwkgMzMgICAgICB9 Ci0rCSAoZ2RiKSBwYXJlbnQyOiAxNDIyMyAgKi8KLSsgICAgICBpID0gc2xlZXAgKDEpOwotKyAg ICAgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0 IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLwotKyAgICAgIHZhcisr OwotKyAgICAgIGJyZWFrcG9pbnQgKCk7Ci0rCi0rICAgICAgX2V4aXQgKGV4aXRfY29kZSk7Ci0r ICAgIGRlZmF1bHQ6Ci0rICAgICAgcHJpbnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkg Y2hpbGQpOwotKyAgICAgIC8qIERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJw YXJlbnQlZCIgbWVzc2FnZSBwcmludGVkLCBzZWUKLSsJIGFib3ZlLiAgKi8KLSsgICAgICBpID0g c2xlZXAgKDEpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgICAgICBwaWRfZ290ID0g d2FpdCAoJnN0YXR1cyk7Ci0rICAgICAgYXNzZXJ0IChwaWRfZ290ID09IGNoaWxkKTsKLSsgICAg ICBhc3NlcnQgKFdJRkVYSVRFRCAoc3RhdHVzKSk7Ci0rICAgICAgYXNzZXJ0IChXRVhJVFNUQVRV UyAoc3RhdHVzKSA9PSBleGl0X2NvZGUpOwotKwotKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdo dCBoZXJlIChhZ2FpbnN0IGEgZmFsc2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCi0rICAgICAg YnJlYWtwb2ludCAoKTsKLSsgICAgfQotK30KLSsKLSsjZWxpZiBkZWZpbmVkIEZPTExPV19DSElM RAorKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmsuaCIKICsKICtzdGF0aWMgdm9sYXRpbGUgaW50 IHVzcjFfZ290OwogKwpAQCAtODY1NywxMSArOTYzMCwxMSBAQCBpbmRleCAwMDAwMDAwLi40ZGMz MDhiCiArICB1c3IxX2dvdCsrOwogK30KICsKLStzdGF0aWMgdm9pZAorK3ZvaWQKICtmb3Jrb2Zm IChpbnQgbnIpCiArewotKyAgcGlkX3QgY2hpbGQ7Ci0rICBpbnQgaSwgbG9vcDsKKysgIHBpZF90 IGNoaWxkLCBzYXZlX3BhcmVudCA9IGdldHBpZCAoKTsKKysgIGludCBpOwogKyAgc3RydWN0IHNp Z2FjdGlvbiBhY3QsIG9sZGFjdDsKICsjaWZkZWYgVEhSRUFECiArICB2b2lkICp0aHJlYWRfcmVz dWx0OwpAQCAtODY5Miw3ICs5NjY1LDcgQEAgaW5kZXggMDAwMDAwMC4uNGRjMzA4YgogKyAgICAg IC8qIFdlIG11c3Qgbm90IGdldCBjYXVnaHQgaGVyZSAoYWdhaW5zdCBhIGZvcmdvdHRlbiBicmVh a3BvaW50KS4gICovCiArCiArICAgICAgdmFyKys7Ci0rICAgICAgYnJlYWtwb2ludCAoKTsKKysg ICAgICBtYXJrZXIgKCk7CiArCiArI2lmZGVmIFRIUkVBRAogKyAgICAgIC8qIEFuZCBuZWl0aGVy IGdvdCBjYXVnaHQgb3VyIHRocmVhZC4gICovCkBAIC04NzIwLDQwICs5NjkzLDQxIEBAIGluZGV4 IDAwMDAwMDAuLjRkYzMwOGIKICsKICsgICAgICAvKiBMZXQgdGhlIHBhcmVudCBzaWduYWwgdXMg YWJvdXQgaXRzIHN1Y2Nlc3MuICBCZSBjYXJlZnVsIG9mIHJhY2VzLiAgKi8KICsKLSsgICAgICBm b3IgKGxvb3AgPSAwOyBsb29wIDwgMTAwMDsgbG9vcCsrKQorKyAgICAgIGZvciAoOzspCiArCXsK ICsJICAvKiBQYXJlbnQgZWl0aGVyIGRpZWQgKGFuZCBVU1IxX0dPVCBpcyB6ZXJvKSBvciBpdCBz dWNjZWVkZWQuICAqLworKwkgIGlmIChnZXRwcGlkICgpICE9IHNhdmVfcGFyZW50KQorKwkgICAg YnJlYWs7CiArCSAgaWYgKGtpbGwgKGdldHBwaWQgKCksIDApICE9IDApCiArCSAgICBicmVhazsK ICsJICAvKiBQYXJlbnQgc3VjY2VlZGVkPyAgKi8KICsJICBpZiAodXNyMV9nb3QpCiArCSAgICBi cmVhazsKICsKLSsJICBkZWxheSAoKTsKKysjaWZkZWYgVEhSRUFECisrCSAgaSA9IHB0aHJlYWRf eWllbGQgKCk7CisrCSAgYXNzZXJ0IChpID09IDApOworKyNlbmRpZgogKwl9CiArICAgICAgYXNz ZXJ0ICh1c3IxX2dvdCk7CiArCiArICAgICAgLyogV2UgbXVzdCBnZXQgY2F1Z2h0IGhlcmUgKGFn YWluc3QgYSBmYWxzZSB3YXRjaHBvaW50IHJlbW92YWwpLiAgKi8KICsKLSsgICAgICBicmVha3Bv aW50ICgpOworKyAgICAgIG1hcmtlciAoKTsKICsgICAgfQogKwogKyAgaSA9IHNpZ2FjdGlvbiAo U0lHVVNSMSwgJm9sZGFjdCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7CiArfQotKwotKyNl bHNlCi0rIyBlcnJvciAiIUZPTExPV19QQVJFTlQgJiYgIUZPTExPV19DSElMRCIKLSsjZW5kaWYK IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1t dC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYwogbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmVkYWNmYzAKK2luZGV4IDAwMDAwMDAu LjA4YTVhZmYKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLW10LmMKLUBAIC0wLDAgKzEsMTU3IEBACitAQCAtMCwwICsxLDE3NCBA QAogKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmso KS1vZmYgb2YgYSBwcm9jZXNzLgogKwotKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5LCAyMDEwIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdEQi4KICsKQEAgLTg3ODMsNDkgKzk3NTcsNTYgQEAgaW5kZXggMDAwMDAwMC4uZWRhY2ZjMAog KyNpbmNsdWRlIDx1bmlzdGQuaD4KICsjZGVmaW5lIGdldHRpZCgpIHN5c2NhbGwgKF9fTlJfZ2V0 dGlkKQogKworKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmsuaCIKKysKICsvKiBOb24tYXRvbWlj IGB2YXIrKycgc2hvdWxkIG5vdCBodXJ0IGFzIHdlIHN5bmNocm9uaXplIHRoZSB0aHJlYWRzIGJ5 IHRoZSBTVEVQCiArICAgdmFyaWFibGUuICBIaXQtY29tbWVudHMgbmVlZCB0byBiZSBkdXBsaWNp dGUgdGhlcmUgdG8gY2F0Y2ggYm90aCBhdC1zdG9wcwogKyAgIGFuZCBiZWhpbmQtc3RvcHMsIGRl cGVuZGluZyBvbiB0aGUgdGFyZ2V0LiAgKi8KICsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsK Kyt2b2xhdGlsZSBpbnQgdmFyOwogKwotK3N0YXRpYyB2b2lkCi0rZHVtbXkgKHZvaWQpCisrdm9p ZAorK21hcmtlciAodm9pZCkKICt7CiArfQogKwogK3N0YXRpYyB2b2lkCi0rYnJlYWtwb2ludCAo dm9pZCkKKytlbXB0eSAodm9pZCkKICt7CiArfQogKwotKy8qIEluY2x1ZGUgaGVyZSB0aGUgZnVu Y3Rpb25zOgotKyAgIHN0YXRpYyB2b2lkIGZvcmtvZmYgKGludCBucik7Ci0rICAgc3RhdGljIHZv aWQgZGVsYXkgKHZvaWQpOyAgKi8KLSsKLStzdGF0aWMgcHRocmVhZF90IHRocmVhZDsKLStzdGF0 aWMgdm9sYXRpbGUgaW50IHN0ZXA7Ci0rI2RlZmluZSBUSFJFQUQKKytzdGF0aWMgdm9pZAorK21h cmtfZXhpdCAodm9pZCkKKyt7CisrfQogKwotKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmstZm9y a29mZi5jIgorK3B0aHJlYWRfdCB0aHJlYWQ7Cisrdm9sYXRpbGUgaW50IHN0ZXA7CiArCiArc3Rh dGljIHZvaWQgKgogK3N0YXJ0ICh2b2lkICphcmcpCiAreworKyAgaW50IGk7CisrCiArICBpZiAo c3RlcCA+PSAzKQogKyAgICBnb3RvIHN0ZXBfMzsKICsKICsgIHdoaWxlIChzdGVwICE9IDEpCi0r ICAgIGRlbGF5ICgpOworKyAgICB7CisrICAgICAgaSA9IHB0aHJlYWRfeWllbGQgKCk7CisrICAg ICAgYXNzZXJ0IChpID09IDApOworKyAgICB9CiArCiArICB2YXIrKzsJLyogdmFsaWRpdHktdGhy ZWFkLUIgKi8KLSsgIGR1bW15ICgpOwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLworKyAgZW1wdHkg KCk7CS8qIHZhbGlkaXR5LXRocmVhZC1CICovCiArICBzdGVwID0gMjsKICsgIHdoaWxlIChzdGVw ICE9IDMpCiArICAgIHsKICsgICAgICBpZiAoc3RlcCA9PSA5OSkKICsJZ290byBzdGVwXzk5Owot KyAgICAgIGRlbGF5ICgpOworKworKyAgICAgIGkgPSBwdGhyZWFkX3lpZWxkICgpOworKyAgICAg IGFzc2VydCAoaSA9PSAwKTsKICsgICAgfQogKwogK3N0ZXBfMzoKQEAgLTg4MzMsMjQgKzk4MTQs MjYgQEAgaW5kZXggMDAwMDAwMC4uZWRhY2ZjMAogKyAgICBnb3RvIHN0ZXBfNTsKICsKICsgIHZh cisrOwkvKiBhZnRlci1mb3JrMS1CICovCi0rICBkdW1teSAoKTsJLyogYWZ0ZXItZm9yazEtQiAq LworKyAgZW1wdHkgKCk7CS8qIGFmdGVyLWZvcmsxLUIgKi8KICsgIHN0ZXAgPSA0OwogKyAgd2hp bGUgKHN0ZXAgIT0gNSkKICsgICAgewogKyAgICAgIGlmIChzdGVwID09IDk5KQogKwlnb3RvIHN0 ZXBfOTk7Ci0rICAgICAgZGVsYXkgKCk7CisrCisrICAgICAgaSA9IHB0aHJlYWRfeWllbGQgKCk7 CisrICAgICAgYXNzZXJ0IChpID09IDApOwogKyAgICB9CiArCiArc3RlcF81OgogKyAgdmFyKys7 CS8qIGFmdGVyLWZvcmsyLUIgKi8KLSsgIGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMi1CICovCisr ICBlbXB0eSAoKTsJLyogYWZ0ZXItZm9yazItQiAqLwogKyAgcmV0dXJuICh2b2lkICopIDVVTDsK ICsKICtzdGVwXzk5OgogKyAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0 IGEgZm9yZ290dGVuIGJyZWFrcG9pbnQpLiAgKi8KICsgIHZhcisrOwotKyAgYnJlYWtwb2ludCAo KTsKKysgIG1hcmtlciAoKTsKICsgIHJldHVybiAodm9pZCAqKSA5OVVMOwogK30KICsKQEAgLTg4 NjMsMjQgKzk4NDYsMjggQEAgaW5kZXggMDAwMDAwMC4uZWRhY2ZjMAogKyAgc2V0YnVmIChzdGRv dXQsIE5VTEwpOwogKyAgcHJpbnRmICgibWFpbjogJWRcbiIsIChpbnQpIGdldHRpZCAoKSk7CiAr Ci0rICAvKiBHZW5lcmFsIHdhdGNocG9pbnRzIHZhbGlkaXR5LiAgKi8KKysgIC8qIEdlbmVyYWwg aGFyZHdhcmUgYnJlYWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIHZhbGlkaXR5LiAgKi8KKysgIG1h cmtlciAoKTsKICsgIHZhcisrOwkvKiB2YWxpZGl0eS1maXJzdCAqLwotKyAgZHVtbXkgKCk7CS8q IHZhbGlkaXR5LWZpcnN0ICovCisrICBlbXB0eSAoKTsJLyogdmFsaWRpdHktZmlyc3QgKi8KICsK ICsgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOwogKyAg YXNzZXJ0IChpID09IDApOwogKwogKyAgdmFyKys7CS8qIHZhbGlkaXR5LXRocmVhZC1BICovCi0r ICBkdW1teSAoKTsJLyogdmFsaWRpdHktdGhyZWFkLUEgKi8KKysgIGVtcHR5ICgpOwkvKiB2YWxp ZGl0eS10aHJlYWQtQSAqLwogKyAgc3RlcCA9IDE7CiArICB3aGlsZSAoc3RlcCAhPSAyKQotKyAg ICBkZWxheSAoKTsKKysgICAgeworKyAgICAgIGkgPSBwdGhyZWFkX3lpZWxkICgpOworKyAgICAg IGFzc2VydCAoaSA9PSAwKTsKKysgICAgfQogKwogKyAgLyogSGFyZHdhcmUgd2F0Y2hwb2ludHMg Z290IGRpc2FybWVkIGhlcmUuICAqLwogKyAgZm9ya29mZiAoMSk7CiArCiArICB2YXIrKzsJLyog YWZ0ZXItZm9yazEtQSAqLwotKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsxLUEgKi8KKysgIGVt cHR5ICgpOwkvKiBhZnRlci1mb3JrMS1BICovCiArICBzdGVwID0gMzsKICsjaWZkZWYgRk9MTE9X X0NISUxECiArICAvKiBTcGF3biBuZXcgdGhyZWFkIGFzIGl0IHdhcyBkZWxldGVkIGluIHRoZSBj aGlsZCBvZiBGT1JLLiAgKi8KQEAgLTg4ODgsMTMgKzk4NzUsMTYgQEAgaW5kZXggMDAwMDAwMC4u ZWRhY2ZjMAogKyAgYXNzZXJ0IChpID09IDApOwogKyNlbmRpZgogKyAgd2hpbGUgKHN0ZXAgIT0g NCkKLSsgICAgZGVsYXkgKCk7CisrICAgIHsKKysgICAgICBpID0gcHRocmVhZF95aWVsZCAoKTsK KysgICAgICBhc3NlcnQgKGkgPT0gMCk7CisrICAgIH0KICsKICsgIC8qIEEgc2FuaXR5IGNoZWNr IGZvciBkb3VibGUgaGFyZHdhcmUgd2F0Y2hwb2ludHMgcmVtb3ZhbC4gICovCiArICBmb3Jrb2Zm ICgyKTsKICsKICsgIHZhcisrOwkvKiBhZnRlci1mb3JrMi1BICovCi0rICBkdW1teSAoKTsJLyog YWZ0ZXItZm9yazItQSAqLworKyAgZW1wdHkgKCk7CS8qIGFmdGVyLWZvcmsyLUEgKi8KICsgIHN0 ZXAgPSA1OwogKyNpZmRlZiBGT0xMT1dfQ0hJTEQKICsgIC8qIFNwYXduIG5ldyB0aHJlYWQgYXMg aXQgd2FzIGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLwpAQCAtODkwNiwxNyArOTg5 Niw5OCBAQCBpbmRleCAwMDAwMDAwLi5lZGFjZmMwCiArICBhc3NlcnQgKGkgPT0gMCk7CiArICBh c3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikgNVVMKTsKICsKKysgIG1hcmtfZXhpdCAo KTsKICsgIHJldHVybiAwOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3dhdGNocG9pbnQtZm9yay5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBv aW50LWZvcmsuYworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLXBhcmVudC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50 LWZvcmstcGFyZW50LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44MmQx MTgyCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNo cG9pbnQtZm9yay1wYXJlbnQuYworQEAgLTAsMCArMSw3NCBAQAorKy8qIFRlc3QgY2FzZSBmb3Ig Zm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgor KworKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwKKysgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisrCisrI2lu Y2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNs dWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorKworKyNpbmNsdWRlICJ3YXRj aHBvaW50LWZvcmsuaCIKKysKKyt2b2lkCisrZm9ya29mZiAoaW50IG5yKQorK3sKKysgIHBpZF90 IGNoaWxkLCBwaWRfZ290OworKyAgaW50IGV4aXRfY29kZSA9IDQyICsgbnI7CisrICBpbnQgc3Rh dHVzLCBpOworKworKyAgY2hpbGQgPSBmb3JrICgpOworKyAgc3dpdGNoIChjaGlsZCkKKysgICAg eworKyAgICBjYXNlIC0xOgorKyAgICAgIGFzc2VydCAoMCk7CisrICAgIGNhc2UgMDoKKysgICAg ICBwcmludGYgKCJjaGlsZCVkOiAlZFxuIiwgbnIsIChpbnQpIGdldHBpZCAoKSk7CisrICAgICAg LyogRGVsYXkgdG8gZ2V0IGJvdGggdGhlICJjaGlsZCVkIiBhbmQgInBhcmVudCVkIiBtZXNzYWdl IHByaW50ZWQgd2l0aG91dAorKwkgYSByYWNlIGJyZWFraW5nIGV4cGVjdCBieSBpdHMgZW5kbGVz cyB3YWl0IG9uIGAkZ2RiX3Byb21wdCQnOgorKwkgQnJlYWtwb2ludCAzLCBtYXJrZXIgKCkgYXQg Li4vLi4vLi4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYzozMwor KwkgMzMgICAgICB9CisrCSAoZ2RiKSBwYXJlbnQyOiAxNDIyMyAgKi8KKysgICAgICBpID0gc2xl ZXAgKDEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAgICAvKiBXZSBtdXN0IG5v dCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLwor KyAgICAgIHZhcisrOworKyAgICAgIG1hcmtlciAoKTsKKysKKysgICAgICBfZXhpdCAoZXhpdF9j b2RlKTsKKysgICAgZGVmYXVsdDoKKysgICAgICBwcmludGYgKCJwYXJlbnQlZDogJWRcbiIsIG5y LCAoaW50KSBjaGlsZCk7CisrICAgICAgLyogRGVsYXkgdG8gZ2V0IGJvdGggdGhlICJjaGlsZCVk IiBhbmQgInBhcmVudCVkIiBtZXNzYWdlIHByaW50ZWQsIHNlZQorKwkgYWJvdmUuICAqLworKyAg ICAgIGkgPSBzbGVlcCAoMSk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKworKyAgICAgIHBp ZF9nb3QgPSB3YWl0ICgmc3RhdHVzKTsKKysgICAgICBhc3NlcnQgKHBpZF9nb3QgPT0gY2hpbGQp OworKyAgICAgIGFzc2VydCAoV0lGRVhJVEVEIChzdGF0dXMpKTsKKysgICAgICBhc3NlcnQgKFdF WElUU1RBVFVTIChzdGF0dXMpID09IGV4aXRfY29kZSk7CisrCisrICAgICAgLyogV2UgbXVzdCBn ZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmYWxzZSB3YXRjaHBvaW50IHJlbW92YWwpLiAgKi8K KysgICAgICBtYXJrZXIgKCk7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstc3QuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2hwb2ludC1mb3JrLXN0LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi41ZjYyZTdmCitpbmRleCAwMDAwMDAwLi5hN2VlZWRkCiAtLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jCi1AQCAtMCww ICsxLDU3IEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9y ay1zdC5jCitAQCAtMCwwICsxLDYxIEBACiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHct d2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJp Z2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJp Z2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiAr ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgogKwpAQCAtODk0MSwxNyArMTAwMTIsMTkgQEAg aW5kZXggMDAwMDAwMC4uNWY2MmU3ZgogKyNpbmNsdWRlIDxzdGRpby5oPgogKyNpbmNsdWRlIDxz dGRsaWIuaD4KICsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKKysjaW5jbHVkZSAid2F0Y2hw b2ludC1mb3JrLmgiCiArCi0rc3RhdGljIHZvaWQKLSticmVha3BvaW50ICh2b2lkKQorK3ZvbGF0 aWxlIGludCB2YXI7CisrCisrdm9pZAorK21hcmtlciAodm9pZCkKICt7CiArfQogKwotKy8qIElu Y2x1ZGUgaGVyZSB0aGUgZnVuY3Rpb246Ci0rICAgc3RhdGljIHZvaWQgZm9ya29mZiAoaW50IG5y KTsgICovCi0rCi0rI2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMiCisrc3RhdGlj IHZvaWQKKyttYXJrX2V4aXQgKHZvaWQpCisreworK30KICsKICtpbnQKICttYWluICh2b2lkKQpA QCAtODk1OSw3ICsxMDAzMiw4IEBAIGluZGV4IDAwMDAwMDAuLjVmNjJlN2YKICsgIHNldGJ1ZiAo c3Rkb3V0LCBOVUxMKTsKICsgIHByaW50ZiAoIm1haW46ICVkXG4iLCAoaW50KSBnZXRwaWQgKCkp OwogKwotKyAgLyogR2VuZXJhbCB3YXRjaHBvaW50cyB2YWxpZGl0eS4gICovCisrICAvKiBHZW5l cmFsIGhhcmR3YXJlIGJyZWFrcG9pbnRzIGFuZCB3YXRjaHBvaW50cyB2YWxpZGl0eS4gICovCisr ICBtYXJrZXIgKCk7CiArICB2YXIrKzsKICsgIC8qIEhhcmR3YXJlIHdhdGNocG9pbnRzIGdvdCBk aXNhcm1lZCBoZXJlLiAgKi8KICsgIGZvcmtvZmYgKDEpOwpAQCAtODk2OSwxNSArMTAwNDMsMTYg QEAgaW5kZXggMDAwMDAwMC4uNWY2MmU3ZgogKyAgZm9ya29mZiAoMik7CiArICB2YXIrKzsKICsK KysgIG1hcmtfZXhpdCAoKTsKICsgIHJldHVybiAwOwogK30KIGRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi4xZGM5M2FiCitpbmRleCAwMDAwMDAwLi4xMTc3MDBiCiAtLS0gL2Rldi9udWxs CiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKLUBA IC0wLDAgKzEsMTMwIEBACi0rIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KK0BAIC0wLDAgKzEsMTQ5IEBACisrIyBDb3B5cmlnaHQgMjAwOCwgMjAw OSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQpAQCAtODk5NSw1NiArMTAwNzAsNzIgQEAgaW5kZXggMDAwMDAwMC4u MWRjOTNhYgogKyMgVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIg Zm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCiArcHJvYyB0ZXN0IHt0eXBlIHN5bWJvbH0gewot KyAgICBnbG9iYWwgb2JqZGlyIHN1YmRpciBzcmNkaXIKKysgICAgZ2xvYmFsIG9iamRpciBzdWJk aXIgc3JjZGlyIGdkYl9wcm9tcHQKICsKLSsgICAgc2V0IHRlc3Qgd2F0Y2hwb2ludC1mb3JrCisr ICAgIHNldCB0ZXN0ZmlsZSB3YXRjaHBvaW50LWZvcmsKICsKICsgICAgZ2xvYmFsIHBmX3ByZWZp eAogKyAgICBzZXQgcHJlZml4X3Rlc3QgJHBmX3ByZWZpeAogKyAgICBsYXBwZW5kIHBmX3ByZWZp eCAiJHR5cGU6IgogKyAgICBzZXQgcHJlZml4X210ICRwZl9wcmVmaXgKICsKKysgICAgc2V0IHNy Y2ZpbGVfdHlwZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LSR7dHlwZX0uYworKwor KwogKyAgICAjIG5vIHRocmVhZHMKICsKICsgICAgc2V0IHBmX3ByZWZpeCAkcHJlZml4X210CiAr ICAgIGxhcHBlbmQgcGZfcHJlZml4ICJzaW5nbGV0aHJlYWRlZDoiCiArCi0rICAgIHNldCBleGVj dXRhYmxlICR7dGVzdH0tJHt0eXBlfQotKyAgICBpZiB7IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7dGVzdH0uYyAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0gZXhl Y3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJvbF1dICE9ICIiIH0g ewotKwl1bnRlc3RlZCAke3Rlc3R9LmV4cAotKwlyZXR1cm4gLTEKKysgICAgc2V0IGV4ZWN1dGFi bGUgJHt0ZXN0ZmlsZX0tJHt0eXBlfS1zdAorKyAgICBzZXQgc3JjZmlsZV9tYWluICR7c3JjZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tc3QuYworKyAgICBpZiB7IFtnZGJfY29tcGlsZSAiJHtz cmNmaWxlX21haW59ICR7c3JjZmlsZV90eXBlfSIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1 dGFibGV9IGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRCRzeW1ib2xd XSAhPSAiIiB9IHsKKysJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCisrCXJldHVybgogKyAgICB9 CiArICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKICsKLSsgICAgZ2RiX3Rlc3QgInNob3cg ZGV0YWNoLW9uLWZvcmsiICJXaGV0aGVyIGdkYiB3aWxsIGRldGFjaCB0aGUgY2hpbGQgb2YgYSBm b3JrIGlzIG9uLiIKLSsgICAgZ2RiX3Rlc3QgInNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgot KyAgICBnZGJfdGVzdCAic2hvdyBmb2xsb3ctZm9yay1tb2RlIiAiRGVidWdnZXIgcmVzcG9uc2Ug dG8gYSBwcm9ncmFtIGNhbGwgb2YgZm9yayBvciB2Zm9yayBpcyBcIiR0eXBlXCIuIgorKyAgICBn ZGJfdGVzdCAic2hvdyBkZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNoIHRo ZSBjaGlsZCBvZiBhIGZvcmsgaXMgb25cXC4iCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0 IGZvbGxvdy1mb3JrLW1vZGUgJHR5cGUiCisrICAgIGdkYl90ZXN0ICJzaG93IGZvbGxvdy1mb3Jr LW1vZGUiICJEZWJ1Z2dlciByZXNwb25zZSB0byBhIHByb2dyYW0gY2FsbCBvZiBmb3JrIG9yIHZm b3JrIGlzIFwiJHR5cGVcIlxcLiIKICsgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0aGUgYGZv bGxvdy1mb3JrLW1vZGUgY2hpbGQnIHR5cGUuCi0rICAgIGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNS MSBub3N0b3Agbm9wcmludCBwYXNzIgorKyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEgbm9z dG9wIG5vcHJpbnQgcGFzcyIgIk5vXFsgXHRcXStOb1xbIFx0XF0rWWVzLioiCiArCi0rICAgIGlm IHsgIVtydW50b19tYWluXSB9IHRoZW4gewotKwlnZGJfc3VwcHJlc3NfdGVzdHMKKysgICAgaWYg IVtydW50b19tYWluXSB7CiArCXJldHVybgogKyAgICB9CiArCi0rICAgICMgSW5zdGFsbCB0aGUg d2F0Y2hwb2ludCBvbmx5IGFmdGVyIGdldHRpbmcgaW50byBNQUlOIC0gd29ya2Fyb3VuZCBzb21l IFBQQwotKyAgICAjIHByb2JsZW0uCi0rICAgIGdkYl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9p bnQgMjogdmFyIiAiU2V0IHRoZSB3YXRjaHBvaW50IgorKyAgICBnZGJfdGVzdCAid2F0Y2ggdmFy IiAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIiICJTZXQgdGhlIHdhdGNocG9pbnQiCiArCiArICAg ICMgSXQgaXMgbmV2ZXIgaGl0IGJ1dCBpdCBzaG91bGQgbm90IGJlIGxlZnQgb3ZlciBpbiB0aGUg Zm9yaygpZWQtb2ZmIGNoaWxkLgotKyAgICBnZGJfYnJlYWtwb2ludCAiYnJlYWtwb2ludCIKKysg ICAgc2V0IGhicmVhayAiaGJyZWFrIgorKyAgICBzZXQgdGVzdCAiaGJyZWFrIG1hcmtlciIKKysg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwktcmUgIkhhcmR3YXJlIGFzc2lz dGVkIGJyZWFrcG9pbnQgXFswLTlcXSsgYXQgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAg cGFzcyAkdGVzdAorKwl9CisrCS1yZSAiKE5vIGhhcmR3YXJlIGJyZWFrcG9pbnQgc3VwcG9ydCBp biB0aGUgdGFyZ2V0XFwufEhhcmR3YXJlIGJyZWFrcG9pbnRzIHVzZWQgZXhjZWVkcyBsaW1pdFxc LilcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgcGFzcyAkdGVzdAorKwkgICAgc2V0IGhicmVh ayAiYnJlYWsiCisrCSAgICBnZGJfdGVzdCAiYnJlYWsgbWFya2VyIgorKwl9CisrICAgIH0KKysK KysgICAgZ2RiX2JyZWFrcG9pbnQgIm1hcmtfZXhpdCIKICsKICsgICAgZ2RiX3Rlc3QgImNvbnRp bnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDAuKk5ldyB2YWx1 ZSA9IDEuKmZvcmtvZmYgKlxcKDFcXCkuKiIgIndhdGNocG9pbnRzIHdvcmsiCisrCSAgICAgInJl YWtwb2ludCBcWzAtOVxdKywgbWFya2VyLioiICJoYXJkd2FyZSBicmVha3BvaW50cyB3b3JrIgog KyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IDMsIGJyZWFrcG9p bnQuKiIgImJyZWFrcG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCisrCSAgICAgImF0Y2hwb2lu dCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLipmb3Jrb2ZmICpc XCgxXFwpLioiICJ3YXRjaHBvaW50cyB3b3JrIgogKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwK LSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4q Zm9ya29mZiAqXFwoMlxcKS4qIiAid2F0Y2hwb2ludCBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysJ ICAgICAicmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXIuKiIgImJyZWFrcG9pbnQgYWZ0ZXIgdGhl IGZpcnN0IGZvcmsiCiArICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFrcG9p bnQgMywgYnJlYWtwb2ludC4qIiAiYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisr CSAgICAgImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFsdWUg PSAyLipmb3Jrb2ZmICpcXCgyXFwpLioiICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBmaXJzdCBmb3Jr IgogKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4q T2xkIHZhbHVlID0gMi4qTmV3IHZhbHVlID0gMy4qcmV0dXJuICowOyIgIndhdGNocG9pbnQgYWZ0 ZXIgdGhlIHNlY29uZCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5n Li4qUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuIiAiZmluaXNoIgorKwkgICAgICJyZWFrcG9pbnQg XFswLTlcXSssIG1hcmtlci4qIiAiYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisr ICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgXFswLTlcXSs6IHZh ci4qT2xkIHZhbHVlID0gMi4qTmV3IHZhbHVlID0gMy4qbWFya19leGl0IFxcKFxcKTsiICJ3YXRj aHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAi Q29udGludWluZ1xcLi4qXHJcbkJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtfZXhpdCAuKiIgImZp bmlzaCIKICsKICsKICsgICAgIyB0aHJlYWRzCkBAIC05MDUyLDYxICsxMDE0MywxMDIgQEAgaW5k ZXggMDAwMDAwMC4uMWRjOTNhYgogKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfbXQKICsgICAg bGFwcGVuZCBwZl9wcmVmaXggIm11bHRpdGhyZWFkZWQ6IgogKwotKyAgICBzZXQgZXhlY3V0YWJs ZSAke3Rlc3R9LW10LSR7dHlwZX0KLSsgICAgaWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVhZHMgJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9LW10LmMgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1 dGFibGV9IGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRCRzeW1ib2xd XSAhPSAiIiB9IHsKLSsJdW50ZXN0ZWQgJHt0ZXN0fS5leHAKLSsJcmV0dXJuIC0xCisrICAgIHNl dCBleGVjdXRhYmxlICR7dGVzdGZpbGV9LSR7dHlwZX0tbXQKKysgICAgc2V0IHNyY2ZpbGVfbWFp biAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LW10LmMKKysgICAgaWYgeyBbZ2RiX2Nv bXBpbGVfcHRocmVhZHMgIiR7c3JjZmlsZV9tYWlufSAke3NyY2ZpbGVfdHlwZX0iICR7b2JqZGly fS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJhZGRpdGlv bmFsX2ZsYWdzPS1EJHN5bWJvbCAtRFRIUkVBRCJdXSAhPSAiIiB9IHsKKysJdW50ZXN0ZWQgJHt0 ZXN0ZmlsZX0uZXhwCisrCXJldHVybgogKyAgICB9CiArICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1 dGFibGUKICsKLSsgICAgZ2RiX3Rlc3QgInNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgorKyAg ICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgogKyAgICAj IFRlc3RjYXNlIHVzZXMgaXQgZm9yIHRoZSBgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgdHlwZS4K LSsgICAgZ2RiX3Rlc3QgImhhbmRsZSBTSUdVU1IxIG5vc3RvcCBub3ByaW50IHBhc3MiCisrICAg IGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0b3Agbm9wcmludCBwYXNzIiAiTm9cWyBcdFxd K05vXFsgXHRcXStZZXMuKiIKICsKLSsgICAgaWYgeyAhW3J1bnRvX21haW5dIH0gdGhlbiB7Ci0r CWdkYl9zdXBwcmVzc190ZXN0cworKyAgICBpZiAhW3J1bnRvX21haW5dIHsKICsJcmV0dXJuCiAr ICAgIH0KICsKLSsgICAgIyBJbnN0YWxsIHRoZSB3YXRjaHBvaW50IG9ubHkgYWZ0ZXIgZ2V0dGlu ZyBpbnRvIE1BSU4gLSB3b3JrYXJvdW5kIHNvbWUgUFBDCi0rICAgICMgcHJvYmxlbS4KLSsgICAg Z2RiX3Rlc3QgIndhdGNoIHZhciIgImF0Y2hwb2ludCAyOiB2YXIiICJTZXQgdGhlIHdhdGNocG9p bnQiCisrICAgIGdkYl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9pbnQgXFswLTlcXSs6IHZhciIg IlNldCB0aGUgd2F0Y2hwb2ludCIKICsKLSsgICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNo b3VsZCBub3QgYmUgbGVmdCBvdmVyIGluIHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCi0rICAgIGdk Yl9icmVha3BvaW50ICJicmVha3BvaW50IgorKyAgICAjIEl0IHNob3VsZCBub3QgYmUgbGVmdCBv dmVyIGluIHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCisrICAgIGdkYl90ZXN0ICIkaGJyZWFrIG1h cmtlciIge3JlYWtwb2ludCBbMC05XSsuKn0KKysKKysgICAgZ2RiX2JyZWFrcG9pbnQgIm1hcmtf ZXhpdCIKICsKICsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCAy OiB2YXIuKk9sZCB2YWx1ZSA9IDAuKk5ldyB2YWx1ZSA9IDEuKnZhbGlkaXR5LWZpcnN0LioiICJz aW5nbGV0aHJlYWQgd2F0Y2hwb2ludHMgd29yayIKKysJICAgICAicmVha3BvaW50IFxbMC05XF0r LCBtYXJrZXIuKiIgImhhcmR3YXJlIGJyZWFrcG9pbnRzIHdvcmsiCiArICAgIGdkYl90ZXN0ICJj b250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcg dmFsdWUgPSAyLip2YWxpZGl0eS10aHJlYWQtQS4qIiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50 cyB3b3JrIGF0IEEiCisrCSAgICAgImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUg PSAwLipOZXcgdmFsdWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhyZWFkIHdhdGNo cG9pbnRzIHdvcmsiCiArICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9p bnQgMjogdmFyLipPbGQgdmFsdWUgPSAyLipOZXcgdmFsdWUgPSAzLip2YWxpZGl0eS10aHJlYWQt Qi4qIiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEIiCisrCSAgICAgImF0Y2hw b2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFsdWUgPSAyLip2YWxpZGl0 eS10aHJlYWQtQS4qIiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEEiCiArICAg IGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4q IiAiYnJlYWtwb2ludCAoQSkgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCisrCSAgICAgImF0Y2hwb2lu dCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAyLipOZXcgdmFsdWUgPSAzLip2YWxpZGl0eS10 aHJlYWQtQi4qIiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEIiCiArICAgIGdk Yl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUg PSAzLipOZXcgdmFsdWUgPSA0LiphZnRlci1mb3JrMS1BLioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIg dGhlIGZpcnN0IGZvcmsiCisrCSAgICAgInJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyLioiICJi cmVha3BvaW50IChBKSBhZnRlciB0aGUgZmlyc3QgZm9yayIKICsgICAgZ2RiX3Rlc3QgImNvbnRp bnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDQuKk5ldyB2YWx1 ZSA9IDUuKmFmdGVyLWZvcmsxLUIuKiIgIndhdGNocG9pbnQgQiBhZnRlciB0aGUgZmlyc3QgZm9y ayIKKysJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIuKk9sZCB2YWx1ZSA9IDMuKk5ldyB2 YWx1ZSA9IDQuKmFmdGVyLWZvcmsxLUEuKiIgIndhdGNocG9pbnQgQSBhZnRlciB0aGUgZmlyc3Qg Zm9yayIKICsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgInJlYWtwb2ludCAzLCBi cmVha3BvaW50LioiICJicmVha3BvaW50IChBKSBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrCSAg ICAgImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSA0LipOZXcgdmFsdWUgPSA1 LiphZnRlci1mb3JrMS1CLioiICJ3YXRjaHBvaW50IEIgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCiAr ICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQg dmFsdWUgPSA1LipOZXcgdmFsdWUgPSA2LiphZnRlci1mb3JrMi1BLioiICJ3YXRjaHBvaW50IEEg YWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgorKwkgICAgICJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtl ci4qIiAiYnJlYWtwb2ludCAoQSkgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgogKyAgICBnZGJfdGVz dCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gNi4q TmV3IHZhbHVlID0gNy4qYWZ0ZXItZm9yazItQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVyIHRoZSBz ZWNvbmQgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy4uKlByb2dy YW0gZXhpdGVkIG5vcm1hbGx5LiIgImZpbmlzaCIKKysJICAgICAiYXRjaHBvaW50IFxbMC05XF0r OiB2YXIuKk9sZCB2YWx1ZSA9IDUuKk5ldyB2YWx1ZSA9IDYuKmFmdGVyLWZvcmsyLUEuKiIgIndh dGNocG9pbnQgQSBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51 ZSIgXAorKwkgICAgICJhdGNocG9pbnQgXFswLTlcXSs6IHZhci4qT2xkIHZhbHVlID0gNi4qTmV3 IHZhbHVlID0gNy4qYWZ0ZXItZm9yazItQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVyIHRoZSBzZWNv bmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZ1xcLi4qXHJcbkJy ZWFrcG9pbnQgXFswLTlcXSssIG1hcmtfZXhpdCAuKiIgImZpbmlzaCIKICsKICsKICsgICAgIyBj bGVhbnVwCi0rCiArICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF90ZXN0CiArfQogKwogK3Rlc3Qg cGFyZW50IEZPTExPV19QQVJFTlQKICsKICsjIE9ubHkgR05VL0xpbnV4IGlzIGtub3duIHRvIHN1 cHBvcnQgYHNldCBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJy4KLStpZiB7W2lzdGFyZ2V0ICIqLSot bGludXgqIl19IHsKKytpZiB7W2lzdGFyZ2V0ICIqLSotbGludXgqIl0gJiYgIVtpc19yZW1vdGUg dGFyZ2V0XX0gewogKyAgICB0ZXN0IGNoaWxkIEZPTExPV19DSElMRAorK30gZWxzZSB7CisrICAg IHVudGVzdGVkICJjaGlsZCIKICt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy93YXRjaHBvaW50LWZvcmsuaCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4zMWY3NjU2 CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9p bnQtZm9yay5oCitAQCAtMCwwICsxLDMyIEBACisrLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4g aHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCisrCisrICAgQ29w eXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisrICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LAorKyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKysKKysjaWZkZWYgVEhSRUFE CisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysKKytleHRlcm4gdm9sYXRpbGUgaW50IHN0ZXA7Cisr ZXh0ZXJuIHB0aHJlYWRfdCB0aHJlYWQ7CisrI2VuZGlmIC8qIFRIUkVBRCAqLworKworK2V4dGVy biB2b2xhdGlsZSBpbnQgdmFyOworKworK2V4dGVybiB2b2lkIG1hcmtlciAodm9pZCk7CisrZXh0 ZXJuIHZvaWQgZm9ya29mZiAoaW50IG5yKTsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xp Yi9wYXNjYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAogaW5kZXggYWYwYjAw ZC4uZTFhOGRjNCAxMDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKQEAg LTkxNDMsMTcgKzEwMjc1LDE3IEBAIGluZGV4IGFmMGIwMGQuLmUxYThkYzQgMTAwNjQ0CiAgICAg IHNldCBwYXNjYWxfaW5pdF9kb25lIDEKICB9ICAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIv Z2RiL3RvcC5jCi1pbmRleCA2NjgwYzM4Li4zOGQxY2MyIDEwMDY0NAoraW5kZXggNDVjOTI1OS4u ODg1NjMyMiAxMDA2NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAtMzM4 LDYgKzMzOCw3IEBAIHZvaWQKK0BAIC0zNDMsNiArMzQzLDcgQEAgdm9pZAogIHByZXBhcmVfZXhl Y3V0ZV9jb21tYW5kICh2b2lkKQogIHsKICAgIGZyZWVfYWxsX3ZhbHVlcyAoKTsKICsgIGZyZWVf YWxsX3R5cGVzICgpOwogIAotICAgLyogV2l0aCBtdWx0aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hp bGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcgaXMgc3RvcHBlZCwKLSAgICAgIHRoZSBkY2FjaGUg Y2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJlaW5nIGFibGUgdG8gZGV0ZWN0IGl0LgorICAgLyog V2l0aCBtdWx0aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5p bmcgaXMKKyAgICAgIHN0b3BwZWQsIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVz IGJlaW5nIGFibGUgdG8gZGV0ZWN0CiBkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2Ri L3R5cGVwcmludC5jCiBpbmRleCBjZTlmNTUxLi41ZjlkNzM5IDEwMDY0NAogLS0tIGEvZ2RiL3R5 cGVwcmludC5jCkBAIC05MjExLDExICsxMDM0Myw1MiBAQCBpbmRleCBjZTlmNTUxLi41ZjlkNzM5 IDEwMDY0NAogIH0KICAKICBzdGF0aWMgdm9pZAorZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIv Z2RiL3V0aWxzLmMKK2luZGV4IDAyYzdhMzcuLjg5NGJlNjkgMTAwNjQ0CistLS0gYS9nZGIvdXRp bHMuYworKysrIGIvZ2RiL3V0aWxzLmMKK0BAIC0yMTk4LDYgKzIxOTgsMzYgQEAgc2V0X2JhdGNo X2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKKyAgIHJldHVy biBiYWNrX3RvOworIH0KKyAKKysvKiBIZWxwZXIgZm9yIG1ha2VfY2xlYW51cF9yZXN0b3JlX3Bh Z2VfaW5mby4gICovCisrCisrc3RhdGljIHZvaWQKKytkb19yZXN0b3JlX3NlbGVjdGVkX2ZyYW1l X2NsZWFudXAgKHZvaWQgKmFyZykKKyt7CisrICBzdHJ1Y3QgZnJhbWVfaWQgKmZyYW1lX2lkcCA9 IGFyZzsKKysKKysgIHNlbGVjdF9mcmFtZSAoZnJhbWVfZmluZF9ieV9pZCAoKmZyYW1lX2lkcCkp OworKworKyAgeGZyZWUgKGZyYW1lX2lkcCk7CisrfQorKworKy8qIFByb3ZpZGUgY2xlYW51cCBm b3IgcmVzdG9yaW5nIGN1cnJlbnRseSBzZWxlY3RlZCBmcmFtZS4gIFVzZSBmcmFtZV9pZCBmb3IK KysgICB0aGUgY2FzZSB0aGUgY3VycmVudCBmcmFtZSBiZWNvbWVzIHN0YWxlIGluIHRoZSBtZWFu dGltZS4gICovCisrCisrc3RydWN0IGNsZWFudXAgKgorK21ha2VfY2xlYW51cF9yZXN0b3JlX3Nl bGVjdGVkX2ZyYW1lICh2b2lkKQorK3sKKysgIHN0cnVjdCBmcmFtZV9pZCAqZnJhbWVfaWRwOwor KworKyAgLyogZ2V0X3NlbGVjdGVkX2ZyYW1lLT5nZXRfY3VycmVudF9mcmFtZSB3b3VsZCBlcnJv ciBvdGhlcndpc2UuICAqLworKyAgaWYgKCFoYXNfc3RhY2tfZnJhbWVzICgpKQorKyAgICByZXR1 cm4gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKworKyAgZnJhbWVfaWRwID0g eG1hbGxvYyAoc2l6ZW9mICgqZnJhbWVfaWRwKSk7CisrICAqZnJhbWVfaWRwID0gZ2V0X2ZyYW1l X2lkIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpKTsKKysKKysgIHJldHVybiBtYWtlX2NsZWFu dXAgKGRvX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWVfY2xlYW51cCwgZnJhbWVfaWRwKTsKKyt9Cisr CisgLyogU2V0IHRoZSBzY3JlZW4gc2l6ZSBiYXNlZCBvbiBMSU5FU19QRVJfUEFHRSBhbmQgQ0hB UlNfUEVSX0xJTkUuICAqLworIAorIHN0YXRpYyB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFy aXRoLmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggN2M1NTNkMS4uODBiZTgyZiAxMDA2NDQKK2lu ZGV4IDZiMjEyYjIuLmM2YjQ4NDMgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsYXJpdGguYwogKysrIGIv Z2RiL3ZhbGFyaXRoLmMKLUBAIC0xNjEsMTIgKzE2MSwyNiBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0 cnVjdCB2YWx1ZSAqYXJyYXksIExPTkdFU1QgaW5kZXgpCitAQCAtMTY1LDEyICsxNjUsMjYgQEAg dmFsdWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4KQogIAog ICAgICAgIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dlcmJvdW5kLCAmdXBw ZXJib3VuZCk7CiAgICAgICAgaWYgKFZBTFVFX0xWQUwgKGFycmF5KSAhPSBsdmFsX21lbW9yeSkK QEAgLTkyNDQsNyArMTA0MTcsNyBAQCBpbmRleCA3YzU1M2QxLi44MGJlODJmIDEwMDY0NAogIAkg IC8qIEVtaXQgd2FybmluZyB1bmxlc3Mgd2UgaGF2ZSBhbiBhcnJheSBvZiB1bmtub3duIHNpemUu CiAgCSAgICAgQW4gYXJyYXkgb2YgdW5rbm93biBzaXplIGhhcyBsb3dlcmJvdW5kIDAgYW5kIHVw cGVyYm91bmQgLTEuICAqLwogIAkgIGlmICh1cHBlcmJvdW5kID4gLTEpCi1AQCAtMTg1LDM0ICsx OTksMzcgQEAgdmFsdWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGlu ZGV4KQorQEAgLTE4OSwzNCArMjAzLDM3IEBAIHZhbHVlX3N1YnNjcmlwdCAoc3RydWN0IHZhbHVl ICphcnJheSwgTE9OR0VTVCBpbmRleCkKICAgICAgZXJyb3IgKF8oIm5vdCBhbiBhcnJheSBvciBz dHJpbmciKSk7CiAgfQogIApAQCAtOTI5NCw3ICsxMDQ2Nyw3IEBAIGluZGV4IDdjNTUzZDEuLjgw YmU4MmYgMTAwNjQ0CiAgICByZXR1cm4gdjsKICB9CiAgCi1AQCAtMjkyLDYgKzMwOSwxMCBAQCBp bnQKK0BAIC0yOTYsNiArMzEzLDEwIEBAIGludAogIGJpbm9wX3VzZXJfZGVmaW5lZF9wIChlbnVt IGV4cF9vcGNvZGUgb3AsCiAgCQkgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1 ZSAqYXJnMikKICB7CkBAIC05MzA2LDcgKzEwNDc5LDcgQEAgaW5kZXggN2M1NTNkMS4uODBiZTgy ZiAxMDA2NDQKICB9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5j Ci1pbmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0NAoraW5kZXggN2VhNjMxNS4uYWQzZGFjZiAx MDA2NDQKIC0tLSBhL2dkYi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtMzgsNiAr MzgsNyBAQApAQCAtOTMxNyw3ICsxMDQ5MCw3IEBAIGluZGV4IDkzMmUzMTEuLjVjZTU2NWYgMTAw NjQ0CiAgCiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBA IC04OTcsNiArODk4LDY1IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUsIGVudW0gbHZh bF90eXBlIGx2KQorQEAgLTkwMSw2ICs5MDIsNjUgQEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAq dHlwZSwgZW51bSBsdmFsX3R5cGUgbHYpCiAgICByZXR1cm4gdmFsOwogIH0KICAKQEAgLTkzODMs NyArMTA1NTYsNyBAQCBpbmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0NAogIC8qIEhlbHBlciBm dW5jdGlvbiBmb3IgdmFsdWVfYXQsIHZhbHVlX2F0X2xhenksIGFuZCB2YWx1ZV9hdF9sYXp5X3N0 YWNrLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKLUBAIC05OTUsMTUgKzEwNTUsMjEg QEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtOTk5LDE1ICsxMDU5 LDIxIEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQogICAgICB9CiAgICBl bHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQogICAgICB7CkBAIC05NDEy LDcgKzEwNTg1LDcgQEAgaW5kZXggOTMyZTMxMS4uNWNlNTY1ZiAxMDA2NDQKICAJfQogICAgICB9 CiAgICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfcmVnaXN0ZXIpCi1AQCAtMTQw Nyw3ICsxNDczLDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGJsb2NrICpiKQorQEAgLTE0MTgsNyArMTQ4NCwxOCBAQCBhZGRyZXNzX29mX3Zhcmlh YmxlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFMVUVf TFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAgIHx8 IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAgLTk0MzIsNyAr MTA2MDUsNyBAQCBpbmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0NAogIAogICAgICAgIHJldHVy biB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhZGRyKTsK ICAgICAgfQotQEAgLTE1MTUsNiArMTU5Miw3IEBAIHN0cnVjdCB2YWx1ZSAqCitAQCAtMTUyNiw2 ICsxNjAzLDcgQEAgc3RydWN0IHZhbHVlICoKICB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2 YWx1ZSAqYXJnMSkKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFyZzEpKTsKQEAgLTk0NDAsNyArMTA2MTMsNyBAQCBpbmRleCA5MzJlMzExLi41 Y2U1NjVmIDEwMDY0NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5n IHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMgbm90IHll dCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xNTI0LDgg KzE2MDIsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCitAQCAt MTUzNSw4ICsxNjEzLDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcx KQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBlcnJvciAo XygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVtb3J5 LiIpKTsKICAKQEAgLTk0NTUsNyArMTA2MjgsNyBAQCBpbmRleCA5MzJlMzExLi41Y2U1NjVmIDEw MDY0NAogIAogIC8qIEdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgYSBmdW5jdGlvbiwgcmV0dXJuIGEg dmFsdWUgd2hpY2ggaXMgYSBwb2ludGVyCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHByaW50LmMgYi9n ZGIvdmFscHJpbnQuYwotaW5kZXggZGRiMTZlNC4uYzRjMjk2OSAxMDA2NDQKK2luZGV4IDVjYmEw MjMuLjRlZjVlNWEgMTAwNjQ0CiAtLS0gYS9nZGIvdmFscHJpbnQuYwogKysrIGIvZ2RiL3ZhbHBy aW50LmMKIEBAIC0zNiw2ICszNiw3IEBACkBAIC05NDc0LDcgKzEwNjQ3LDcgQEAgaW5kZXggZGRi MTZlNC4uYzRjMjk2OSAxMDA2NDQKICAgICAgY2FzZSBUWVBFX0NPREVfQklUU1RSSU5HOgogICAg ICAgIHJldHVybiAwOwogICAgICBkZWZhdWx0OgotQEAgLTExMDQsNiArMTEwNCw3IEBAIHZhbF9w cmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAorQEAgLTExMTEsNiArMTExMSw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogIHsKICAgIHVuc2ln bmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CiAgICB1bnNpZ25lZCBsZW47CkBAIC05NDgyLDcg KzEwNjU1LDcgQEAgaW5kZXggZGRiMTZlNC4uYzRjMjk2OSAxMDA2NDQKICAgIHN0cnVjdCB0eXBl ICplbHR0eXBlLCAqaW5kZXhfdHlwZTsKICAgIHVuc2lnbmVkIGVsdGxlbjsKICAgIC8qIFBvc2l0 aW9uIG9mIHRoZSBhcnJheSBlbGVtZW50IHdlIGFyZSBleGFtaW5pbmcgdG8gc2VlCi1AQCAtMTEx Miw5ICsxMTEzLDMzIEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorQEAgLTExMTksOSArMTEyMCwzMyBAQCB2YWxf cHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKICAgIC8qIE51bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZlIGRldGVjdGVkIHNv IGZhci4gICovCiAgICB1bnNpZ25lZCBpbnQgcmVwczsKICAgIExPTkdFU1QgbG93X2JvdW5kLCBo aWdoX2JvdW5kOwpAQCAtOTUxOCw3ICsxMDY5MSw3IEBAIGluZGV4IGRkYjE2ZTQuLmM0YzI5Njkg MTAwNjQ0CiAgICBpbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsKICAKICAgIGlm IChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi1AQCAt MTE4OSw2ICsxMjE0LDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCitAQCAtMTE5Niw2ICsxMjIxLDggQEAgdmFs X3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCiAgICAgIHsKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4i KTsKICAgICAgfQpAQCAtOTUyOCw3ICsxMDcwMSw3IEBAIGluZGV4IGRkYjE2ZTQuLmM0YzI5Njkg MTAwNjQ0CiAgCiAgLyogUmVhZCBMRU4gYnl0ZXMgb2YgdGFyZ2V0IG1lbW9yeSBhdCBhZGRyZXNz IE1FTUFERFIsIHBsYWNpbmcgdGhlCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFs dWUuYwotaW5kZXggODVjYjYyYS4uMDEzYTlmYyAxMDA2NDQKK2luZGV4IGM3ZGUzMjMuLjY0NWZl ZjIgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsdWUuYwogKysrIGIvZ2RiL3ZhbHVlLmMKIEBAIC0zOSw2 ICszOSw3IEBACkBAIC05NTM5LDcgKzEwNzEyLDcgQEAgaW5kZXggODVjYjYyYS4uMDEzYTlmYyAx MDA2NDQKICAKICAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgogIAotQEAgLTg1MCwxMiArODUx LDE1IEBAIHZvaWQKK0BAIC04NjQsMTIgKzg2NSwxNSBAQCB2b2lkCiAgc2V0X3ZhbHVlX2NvbXBv bmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCiAgCQkJICAgICAgY29uc3Qg c3RydWN0IHZhbHVlICp3aG9sZSkKICB7CkBAIC05NTU1LDcgKzEwNzI4LDcgQEAgaW5kZXggODVj YjYyYS4uMDEzYTlmYyAxMDA2NDQKICAgIGlmICh3aG9sZS0+bHZhbCA9PSBsdmFsX2NvbXB1dGVk KQogICAgICB7CiAgICAgICAgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUtPmxvY2F0 aW9uLmNvbXB1dGVkLmZ1bmNzOwotQEAgLTg2Myw2ICs4NjcsMTIgQEAgc2V0X3ZhbHVlX2NvbXBv bmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCitAQCAtODc3LDYgKzg4MSwx MiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVu dCwKICAgICAgICBpZiAoZnVuY3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+ bG9jYXRpb24uY29tcHV0ZWQuY2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsK ICAgICAgfQpAQCAtOTU2OCw3ICsxMDc0MSw3IEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAw NjQ0CiAgfQogIAogIAwKLUBAIC05OTUsNiArMTAwNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAq bnVtX2V4cCwgaW50IGZyb21fdHR5KQorQEAgLTEwMDksNiArMTAxOSwyOSBAQCBzaG93X3ZhbHVl cyAoY2hhciAqbnVtX2V4cCwgaW50IGZyb21fdHR5KQogICAgICAgIG51bV9leHBbMV0gPSAnXDAn OwogICAgICB9CiAgfQpAQCAtOTU5OCw3ICsxMDc3MSw3IEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5 ZmMgMTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2YXJpYWJs ZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkg ZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMTQ3Myw2ICsxNTA2LDQwIEBAIGNhbGxfaW50ZXJuYWxf ZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTE1MDMsNiArMTUzNiw0MCBA QCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIHJl dHVybiAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gsIGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJn YywgYXJndik7CiAgfQogIApAQCAtOTYzOSw3ICsxMDgxMiw3IEBAIGluZGV4IDg1Y2I2MmEuLjAx M2E5ZmMgMTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3Ro aW5nIC0tIGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlv biBOQU1FIiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRp b24gb2YgdGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMTUyMCwxMSAr MTU4NywxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTE1NTAsMTEgKzE2MTcsMTAgQEAgcHJlc2VydmVfb25l X3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJ CSAgICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVl LT50eXBlKSA9PSBvYmpmaWxlKQpAQCAtOTY1Myw3ICsxMDgyNiw3IEBAIGluZGV4IDg1Y2I2MmEu LjAxM2E5ZmMgMTAwNjQ0CiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTE1Mzks MTMgKzE2MDUsMTMgQEAgcHJlc2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2 YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTU2OSwxMyArMTYzNSwxMyBA QCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAg ICAgIGlmICh2YXItPnUuaW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVn ZXIudHlwZSkgPT0gb2JqZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtOTY2OSw3ICsx MDg0Miw3IEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAg CiAgICAgIGNhc2UgSU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAtMjM5OSw3ICsyNDY1LDI0IEBAIHZh bHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqZGVj KQorQEAgLTI0MzgsNyArMjUwNCwyNCBAQCB2YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKmRlYykKICBzdHJ1Y3QgdmFsdWUgKgogIGNvZXJjZV9y ZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTk2OTUsNyArMTA4NjgsNyBAQCBpbmRleCA4 NWNiNjJhLi4wMTNhOWZjIDEwMDY0NAogIAogICAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZV9h cmdfdG1wKSA9PSBUWVBFX0NPREVfUkVGKQogICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5IChUWVBF X1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlX2FyZ190bXApLAotQEAgLTI0OTcsNCArMjU4MCw4IEBA IFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOworQEAgLTI1MzYsNCArMjYxOSw4 IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOwogICAgYWRkX3ByZWZpeF9j bWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBmdW5jdGlvbl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vo b2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBoZWxwIG9uIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4i KSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1bmN0aW9uICIsIDAsICZjbWRsaXN0KTsKQEAgLTk3 MDUsMTAgKzEwODc4LDEwIEBAIGluZGV4IDg1Y2I2MmEuLjAxM2E5ZmMgMTAwNjQ0CiArICBvYnNl cnZlcl9hdHRhY2hfbWFya191c2VkICh2YWx1ZV90eXBlc19tYXJrX3VzZWQpOwogIH0KIGRpZmYg LS1naXQgYS9nZGIvdmFsdWUuaCBiL2dkYi92YWx1ZS5oCi1pbmRleCBlZjJjYjRmLi5hYzk5YTRi IDEwMDY0NAoraW5kZXggY2YwODliZS4uMGZiODlmMSAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5o CiArKysgYi9nZGIvdmFsdWUuaAotQEAgLTM3Myw2ICszNzMsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2 YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0p OworQEAgLTM4OSw2ICszODksMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9k b3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0pOwogIGV4dGVybiBzdHJ1Y3Qg dmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBj b25zdCBnZGJfYnl0ZSAqZGVjYnl0ZXMpOwogIApAQCAtOTcxOSw3ICsxMDg5Miw3IEBAIGluZGV4 IGVmMmNiNGYuLmFjOTlhNGIgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXQg KHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1 ZSAqdmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICAK LUBAIC03MzMsNyArNzM3LDcgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYWxsb2NhdGVf c3BhY2VfaW5faW5mZXJpb3IgKGludCk7CitAQCAtNzQ5LDcgKzc1Myw3IEBAIGV4dGVybiBzdHJ1 Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRlX3NwYWNlX2luX2luZmVyaW9yIChpbnQpOwogIGV4dGVy biBzdHJ1Y3QgdmFsdWUgKnZhbHVlX29mX2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29t cGxhaW4pOwogIAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1 ZSAoc3RydWN0IHZhbHVlICphcnJheSwKQEAgLTk3MjksNyArMTA5MDIsNyBAQCBpbmRleCBlZjJj YjRmLi5hYzk5YTRiIDEwMDY0NAogIC8qIFVzZXIgZnVuY3Rpb24gaGFuZGxlci4gICovCiAgCiBk aWZmIC0tZ2l0IGEvZ2RiL3Zhcm9iai5jIGIvZ2RiL3Zhcm9iai5jCi1pbmRleCAyNTUxOGQ0Li5j YjVkOGEyIDEwMDY0NAoraW5kZXggZTg3ZDM5OS4uMGVhNTRmNSAxMDA2NDQKIC0tLSBhL2dkYi92 YXJvYmouYwogKysrIGIvZ2RiL3Zhcm9iai5jCiBAQCAtMjYsNiArMjYsOCBAQAoKZGlmZiAtLWdp dCBhL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoIGIvZ2RiLWJ6NTMzMTc2LWZv cnRyYW4tb21wLXN0ZXAucGF0Y2gKaW5kZXggMzljYWMwZC4uYjlhZWZkNSAxMDA2NDQKLS0tIGEv Z2RiLWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0ZXAucGF0Y2gKKysrIGIvZ2RiLWJ6NTMzMTc2LWZv cnRyYW4tb21wLXN0ZXAucGF0Y2gKQEAgLTIxLDExICsyMSwxMyBAQCBkZWJ1Z2dpbmcgcHJvYmxl bSBvZiBHT01QIG91dHNpZGUgb2YgdGhlIHNjb3BlIG9mIHRoaXMgQnVnLgogCiAKIAotLS0tIC4v Z2RiL2luZnJ1bi5jCTIwMDktMTItMDkgMjI6MDM6MzMuMDAwMDAwMDAwICswMTAwCi0rKysgLi9n ZGIvaW5mcnVuLmMJMjAwOS0xMi0wOSAyMjoyOTo1Ni4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zOTk0 LDYgKzM5OTQsMTIgQEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAor SW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2luZnJ1bi5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuMi41MC4yMDEwMTIzMS5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTAxLTAxIDAxOjAyOjQ1 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEyMzEvZ2RiL2luZnJ1bi5jCTIw MTEtMDEtMDEgMDE6MTA6MjIuMDAwMDAwMDAwICswMTAwCitAQCAtNDU4NSw2ICs0NTg1LDEyIEBA IGluZnJ1bjogbm90IHN3aXRjaGluZyBiYWNrIHRvIHN0ZXBwZWQgdGgKICAKLSAgICAgICBpZiAo ZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfb3Zlcl9jYWxscyA9PSBTVEVQX09WRVJfQUxMKQorICAg ICAgIGlmIChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMgPT0gU1RF UF9PVkVSX0FMTCkKICAJewogKwkgIHN0cnVjdCBzeW1ib2wgKnN0b3BfZm4gPSBmaW5kX3BjX2Z1 bmN0aW9uIChzdG9wX3BjKTsKICsKQEAgLTM2LDcgKzM4LDcgQEAgZGVidWdnaW5nIHByb2JsZW0g b2YgR09NUCBvdXRzaWRlIG9mIHRoZSBzY29wZSBvZiB0aGlzIEJ1Zy4KICAJICAvKiBXZSdyZSBk b2luZyBhICJuZXh0Ii4KICAKICAJICAgICBOb3JtYWwgKGZvcndhcmQpIGV4ZWN1dGlvbjogc2V0 IGEgYnJlYWtwb2ludCBhdCB0aGUKLUBAIC00MDIwLDYgKzQwMjYsNyBAQCBpbmZydW46IG5vdCBz d2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCitAQCAtNDYxMiw2ICs0NjE4LDcgQEAgaW5mcnVu OiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAogIAogIAkgIGtlZXBfZ29pbmcgKGVj cyk7CiAgCSAgcmV0dXJuOwpAQCAtNDQsOCArNDYsMTAgQEAgZGVidWdnaW5nIHByb2JsZW0gb2Yg R09NUCBvdXRzaWRlIG9mIHRoZSBzY29wZSBvZiB0aGlzIEJ1Zy4KICAJfQogIAogICAgICAgIC8q IElmIHdlIGFyZSBpbiBhIGZ1bmN0aW9uIGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJldHdlZW4g dGhlCi0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9vbXAtc3RlcC5leHAJMjAwOS0xMi0wOSAyMjozMTowNC4wMDAwMDAwMDAgKzAxMDAKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0 ZXAuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL29tcC1zdGVwLmV4cAkyMDExLTAxLTAxIDAxOjA5OjU4LjAwMDAwMDAwMCArMDEwMAog QEAgLTAsMCArMSwzMSBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCkBAIC03OCw4ICs4MiwxMCBAQCBkZWJ1Z2dpbmcgcHJvYmxlbSBvZiBHT01Q IG91dHNpZGUgb2YgdGhlIHNjb3BlIG9mIHRoaXMgQnVnLgogKwogK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJzdWNjZXNzIl0KICtnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAic3VjY2VzcyIgIi4qc3VjY2Vzcy4qIgotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9vbXAtc3RlcC5mOTAJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAu L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZjkwCTIwMDktMTItMDkgMjI6MjU6 MzUuMDAwMDAwMDAwICswMTAwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMDEy MzEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAJMjAxMS0wMS0wMSAwMTow OTo1OC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMzIgQEAKICshIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi1iejY0 Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFsZS5wYXRjaCBiL2dkYi1iejY0Mjg3OS1lbGZyZWFkLXNp Z2ludC1zdGFsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEwNzllZi4u MDAwMDAwMAotLS0gYS9nZGItYno2NDI4NzktZWxmcmVhZC1zaWdpbnQtc3RhbGUucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxMC0wOS9tc2cwMDE5Mi5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIEZpeCBFTEYg c3RhbGUgcmVmZXJlbmNlICBbUmU6IFtwYXRjaF0gLmdkYl9pbmRleDogRG8gbm90IGNyYXNoIG9u IE5PQklUU10KLQotT24gV2VkLCAwOCBTZXAgMjAxMCAyMTo0MDoxMiArMDIwMCwgVG9tIFRyb21l eSB3cm90ZToKLT4gPj4+Pj4gIkphbiIgPT0gSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+IHdyaXRlczoKLT4gCi0+IEphbj4gd2hpY2ggc2hvdWxkIG5vdCBiZSBmYXRh bCBidXQgZHVlIHRvIHNvbWUgb3RoZXIgYnVncyB0aGVyZWluIGl0IGNhbgotPiBKYW4+IGNyYXNo IEdEQi4KLT4gCi0+IEkgYW0gY3VyaW91cyBhYm91dCB0aGVzZSBvdGhlciBidWdzLgotCi0rICAg ICAgLyogTWVtb3J5IGdldHMgcGVybWFuZW50bHkgcmVmZXJlbmNlZCBmcm9tIEFCRkQgYWZ0ZXIK LSsJIGJmZF9nZXRfc3ludGhldGljX3N5bXRhYiBzbyBpdCBtdXN0IG5vdCBnZXQgZnJlZWQgYmVm b3JlIEFCRkQgZ2V0cy4KLSsJIEl0IGhhcHBlbnMgb25seSBpbiB0aGUgY2FzZSB3aGVuIGVsZl9z bHVycF9yZWxvY190YWJsZSBzZWVzCi0rCSBhc2VjdGlvbi0+cmVsb2NhdGlvbiBOVUxMLiAgRGV0 ZXJtaW5pbmcgd2hpY2ggc2VjdGlvbiBpcyBhc2VjdGlvbiBpcwotKwkgZG9uZSBieSBfYmZkX2Vs Zl9nZXRfc3ludGhldGljX3N5bXRhYiB3aGljaCBpcyBhbGwgYSBiZmQKLSsJIGltcGxlbWVudGF0 aW9uIGRldGFpbCwgdGhvdWdoLiAgKi8KLQotVGhhdCBpcyBmcm9tOgotCi0jMCAgaW4gZWxmX3Ns dXJwX3JlbG9jX3RhYmxlX2Zyb21fc2VjdGlvbiAoYWJmZCwgYXNlY3QsIHJlbF9oZHIsIHJlbG9j X2NvdW50PTExNzAsIHJlbGVudHMsIHN5bWJvbHMsIGR5bmFtaWM9MSkgYXQgZWxmY29kZS5oOjE0 ODIKLSMxICBpbiBiZmRfZWxmNjRfc2x1cnBfcmVsb2NfdGFibGUgKGFiZmQsIGFzZWN0LCBzeW1i b2xzLCBkeW5hbWljPTEpIGF0IGVsZmNvZGUuaDoxNTYzCi0jMiAgaW4gX2JmZF9lbGZfZ2V0X3N5 bnRoZXRpY19zeW10YWIgKGFiZmQsIHN5bWNvdW50PTAsIHN5bXMsIGR5bnN5bWNvdW50PTE3OTIs IGR5bnN5bXMsIHJldCkgYXQgZWxmLmM6OTI2OQotIzMgIGluIGVsZl9zeW1maWxlX3JlYWQgKG9i amZpbGUsIHN5bWZpbGVfZmxhZ3M9NikgYXQgZWxmcmVhZC5jOjgwOQotCi1XaGVyZQotCSAgZWxm Y29kZS5oOmVsZl9zbHVycF9yZWxvY190YWJsZV9mcm9tX3NlY3Rpb24KLWNvbnRhaW5zCi0gICAg ICAgICAgcHMgPSBzeW1ib2xzICsgRUxGX1JfU1lNIChyZWxhLnJfaW5mbykgLSAxOwotICAgICAg ICAgIHJlbGVudC0+c3ltX3B0cl9wdHIgPSBwczsKLQotYHN5bWJvbHMnIGhlcmUgaXMgZWxmX3N5 bWZpbGVfcmVhZCdzIGBkeW5fc3ltYm9sX3RhYmxlJy4gIGBkeW5fc3ltYm9sX3RhYmxlJwotZ290 IGltbWVkaWF0ZWx5IHhmcmVlJ2QgYnV0IHRoZSBmcmVlZCBtZW1vcnkgcmVtYWluZWQgcmVmZXJl bmNlZCBieQotYXNlY3QtPnJlbG9jYXRpb24gKGNvbnRhaW5pbmcgdGhlIFJFTEVOVCBtZW1vcnkg YWJvdmUsIHN0b3JlZCB0aGVyZSBieQotZWxmX3NsdXJwX3JlbG9jX3RhYmxlKS4KLQotYXNlY3Qt PnJlbG9jYXRpb24gcHJvYmFibHkgZG9lcyBub3QgZ2V0IHVzZWQgaWYgQUJGRCBpcyBub3QgYmVp bmcgcmVhZC1pbiB0aGUKLXNlY29uZCB0aW1lLCB3aGljaCBoYXBwZW5zIG9ubHkgaWYgT0JKRklM RSBpcyBiZWluZyBjcmVhdGVkIHRoZSBzZWNvbmQgdGltZSwKLXdoaWNoIGhhcHBlbnMgZHVlIHRv IHRoZSBlcnJvciBjYWxsIGluIHRoZSBwcmV2aW91cyBtYWlsLgotCi0KLUkgd2FzIGN1cmlvdXMg dGhlcmUgZWxmX3N5bWZpbGVfcmVhZCB1c2VzIDAgZm9yIENPUFlfTkFNRVMgaW4gYSBzaW1pbGFy IGNhc2U6Ci0gICAgICBlbGZfc3ltdGFiX3JlYWQgKG9iamZpbGUsIFNUX1JFR1VMQVIsIHN5bWNv dW50LCBzeW1ib2xfdGFibGUsIDApOwotd2hlcmUgU1lNQk9MX1RBQkxFIGlzIGFsc28gaW1tZWRp YXRlbHkgeGZyZWVkLiAgQnV0IHRoYXQgc2VlbXMgdG8gYmUgY29ycmVjdCBhcwotZWxmX3NsdXJw X3N5bWJvbF90YWJsZSB1c2VzIAotICAgICAgc3ltYmFzZSA9IChlbGZfc3ltYm9sX3R5cGUgKikg YmZkX3phbGxvYyAoYWJmZCwgYW10KTsKLWZvciB0aGUgY29udGVudCB3aGVyZSBsYXRlciBlbGZy ZWFkLmMncyBTWU1CT0xfVEFCTEUgcG9pbnRzIHRvLiAgT25seSB0aGUKLXBvaW50ZXJzIGdldCB4 ZnJlZWQgd2hpY2ggaXMgT0suCi0KLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQt bTMyLGk2ODZ9LWZlZG9yYTE0c25hcHNob3QtbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgot Ci0KLWdkYi8KLTIwMTAtMDktMDkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLQotCUZpeCBzdGFsZSBtZW1vcnkgcmVmZXJlbmNlcy4KLQkqIGVsZnJlYWQuYzog SW5jbHVkZSBsaWJiZmQuaC4KLQkoZWxmX3N5bWZpbGVfcmVhZCk6IFJlcGxhY2UgeG1hbGxvYyBi eSBiZmRfYWxsb2MsIGRyb3AgeGZyZWUsIG5ldwotCWNvbW1lbnQuCi0KLS0tLSBhL2dkYi9lbGZy ZWFkLmMKLSsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC03OTIsOCArNzkzLDE0IEBAIGVsZl9zeW1m aWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAK LSAgIGlmIChzdG9yYWdlX25lZWRlZCA+IDApCi0gICAgIHsKLS0gICAgICBkeW5fc3ltYm9sX3Rh YmxlID0gKGFzeW1ib2wgKiopIHhtYWxsb2MgKHN0b3JhZ2VfbmVlZGVkKTsKLS0gICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCBkeW5fc3ltYm9sX3RhYmxlKTsKLSsgICAgICAvKiBNZW1vcnkgZ2V0 cyBwZXJtYW5lbnRseSByZWZlcmVuY2VkIGZyb20gQUJGRCBhZnRlcgotKwkgYmZkX2dldF9zeW50 aGV0aWNfc3ltdGFiIHNvIGl0IG11c3Qgbm90IGdldCBmcmVlZCBiZWZvcmUgQUJGRCBnZXRzLgot KwkgSXQgaGFwcGVucyBvbmx5IGluIHRoZSBjYXNlIHdoZW4gZWxmX3NsdXJwX3JlbG9jX3RhYmxl IHNlZXMKLSsJIGFzZWN0aW9uLT5yZWxvY2F0aW9uIE5VTEwuICBEZXRlcm1pbmluZyB3aGljaCBz ZWN0aW9uIGlzIGFzZWN0aW9uIGlzCi0rCSBkb25lIGJ5IF9iZmRfZWxmX2dldF9zeW50aGV0aWNf c3ltdGFiIHdoaWNoIGlzIGFsbCBhIGJmZAotKwkgaW1wbGVtZW50YXRpb24gZGV0YWlsLCB0aG91 Z2guICAqLwotKwotKyAgICAgIGR5bl9zeW1ib2xfdGFibGUgPSBiZmRfYWxsb2MgKGFiZmQsIHN0 b3JhZ2VfbmVlZGVkKTsKLSAgICAgICBkeW5zeW1jb3VudCA9IGJmZF9jYW5vbmljYWxpemVfZHlu YW1pY19zeW10YWIgKG9iamZpbGUtPm9iZmQsCi0gCQkJCQkJICAgICBkeW5fc3ltYm9sX3RhYmxl KTsKLSAKLQoKZGlmZiAtLWdpdCBhL2dkYi1uZXh0LW92ZXItdGhyb3cucGF0Y2ggYi9nZGItbmV4 dC1vdmVyLXRocm93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2ZlZWYy Li4wMDAwMDAwCi0tLSBhL2dkYi1uZXh0LW92ZXItdGhyb3cucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMjgzICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEwLTEwL21zZzAwMTA5Lmh0bWwKLVN1YmplY3Q6IFJGQzogbmV4dC9maW5pc2gvZXRjIC12cy0g ZXhjZXB0aW9ucwotCi1UaGlzIGlzIGEgcmVmcmVzaCBvZjoKLQotICAgIGh0dHA6Ly93d3cuc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0wNS9tc2cwMDYzNS5odG1sCi0KLShUaGUg dGhyZWFkIGNvbnRpbnVlcyBpbiB0aGUgZm9sbG93aW5nIG1vbnRoLikKLQotSSByZWJhc2VkIHRo ZSBwYXRjaCBhbmQgYWRkcmVzc2VkIFBlZHJvJ3MgY29tbWVudHMuCi0KLUkgZGlkIG5vdCBhZGQg dGhlIHVzZXIgbm90aWZpY2F0aW9uIHRoYXQgRG91ZyBhc2tlZCBmb3IuCi0KLVRoaXMgdmVyc2lv biBkb2VzIHdvcmsgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGEgc2lnbmFsIGhhbmRs ZXIuCi1UaGUgaW5jbHVkZWQgSmF2YSB0ZXN0IGNhc2UgY2hlY2tzIHRoYXQgKG9uIG1vc3QgcGxh dGZvcm1zKS4KLQotQnVpbHQgYW5kIHJlZ3Rlc3RlZCBvbiB4ODYtNjQgKGNvbXBpbGUgZmFybSku Ci1UZXN0cyBmb3IgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFyZSBpbmNsdWRlZC4KLQotSSdkIGFw cHJlY2lhdGUgY29tbWVudHMuICBJIGRvbid0IHdhbnQgdG8gY29tbWl0IHRoaXMgd2l0aG91dCBh IHJldmlldywKLWFzIG15IGV4cGVyaWVuY2UgaXMgdGhhdCBJIHVzdWFsbHkgZXJyIHdoZW4gdG91 Y2hpbmcgYnJlYWtwb2ludHMgb3IKLWluZnJ1bi4KLQotSWYgeW91IHdhbnQgdG8gdHJ5IHRoaXMg eW91cnNlbGYsIHlvdSB3aWxsIG5lZWQgYSBuZXctZW5vdWdoIGxpYmdjYywgb25lCi10aGF0IGlu Y2x1ZGVzIHRoZSBuZWNlc3NhcnkgZGVidWdnaW5nIGhvb2suCi0KLVRvbQotCi0yMDEwLTEwLTA2 ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0KLQkqIGluZnJ1bi5jIChoYW5kbGVf aW5mZXJpb3JfZXZlbnQpOiBIYW5kbGUgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCShoYW5kbGVf aW5mZXJpb3JfZXZlbnQpOiBMaWtld2lzZS4KLQkoaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJl YWtwb2ludCk6IE5ldyBmdW5jdGlvbi4KLQkoY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSk6IExpa2V3 aXNlLgotCSogaW5mZXJpb3IuaCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwKTog RGVjbGFyZS4KLQkqIGluZmNtZC5jIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAp OiBObyBsb25nZXIgc3RhdGljLgotCShzdGVwXzEpOiBTZXQgdGhyZWFkJ3MgaW5pdGlhdGluZyBm cmFtZS4KLQkodW50aWxfbmV4dF9jb250aW51YXRpb24pOiBOZXcgZnVuY3Rpb24uCi0JKHVudGls X25leHRfY29tbWFuZCk6IFN1cHBvcnQgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCShmaW5pc2hf Y29tbWFuZF9jb250aW51YXRpb24pOiBEZWxldGUgbG9uZ2ptcCBicmVha3BvaW50LgotCShmaW5p c2hfZm9yd2FyZCk6IFN1cHBvcnQgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCSogZ2RidGhyZWFk LmggKHN0cnVjdCB0aHJlYWRfaW5mbykgPGluaXRpYXRpbmdfZnJhbWU+OiBOZXcgZmllbGQuCi0J KiBicmVha3BvaW50LmggKGVudW0gYnB0eXBlKSA8YnBfZXhjZXB0aW9uLCBicF9leGNlcHRpb25f cmVzdW1lLAotCWJwX2V4Y2VwdGlvbl9tYXN0ZXI+OiBOZXcgY29uc3RhbnRzLgotCShzdHJ1Y3Qg YnBzdGF0X3doYXQpIDxpc19sb25nam1wPjogTmV3IGZpZWxkLgotCSogYnJlYWtwb2ludC5jIChj cmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50KTogTmV3IGZ1bmN0aW9uLgotCSh1cGRh dGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVyLiAg Q2FsbAotCWNyZWF0ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQuCi0JKHByaW50X2l0X3R5 cGljYWwpOiBIYW5kbGUgYnBfZXhjZXB0aW9uX21hc3RlciwgYnBfZXhjZXB0aW9uLgotCShicHN0 YXRfc3RvcF9zdGF0dXMpOiBIYW5kbGUgYnBfZXhjZXB0aW9uX21hc3Rlci4KLQkoYnBzdGF0X3do YXQpOiBIYW5kbGUgYnBfZXhjZXB0aW9uX21hc3RlciwgYnBfZXhjZXB0aW9uLAotCWJwX2V4Y2Vw dGlvbl9yZXN1bWUuCi0JKGJwdHlwZV9zdHJpbmcpOiBMaWtld2lzZS4KLQkocHJpbnRfb25lX2Jy ZWFrcG9pbnRfbG9jYXRpb24pOiBMaWtld2lzZS4KLQkoYWxsb2NhdGVfYnBfbG9jYXRpb24pOiBM aWtld2lzZS4KLQkoc2V0X2xvbmdqbXBfYnJlYWtwb2ludCk6IEhhbmRsZSBleGNlcHRpb24gYnJl YWtwb2ludHMuCi0JKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQpOiBMaWtld2lzZS4KLQkobWVu dGlvbik6IExpa2V3aXNlLgotCShzdHJ1Y3QgdW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRp b25fYXJncykgPHRocmVhZF9udW0+OiBOZXcKLQlmaWVsZC4KLQkodW50aWxfYnJlYWtfY29tbWFu ZF9jb250aW51YXRpb24pOiBDYWxsCi0JZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludC4KLQkodW50 aWxfYnJlYWtfY29tbWFuZCk6IFN1cHBvcnQgZXhjZXB0aW9uIGJyZWFrcG9pbnRzLgotCShkZWxl dGVfY29tbWFuZCk6IExpa2V3aXNlLgotCShicmVha3BvaW50X3JlX3NldF9vbmUpOiBMaWtld2lz ZS4KLQkoYnJlYWtwb2ludF9yZV9zZXQpOiBMaWtld2lzZS4KLQotMjAxMC0xMC0wNiAgVG9tIFRy b21leSAgPHRyb21leUByZWRoYXQuY29tPgotCi0JKiBnZGIuamF2YS9qbnBlLmphdmE6IE5ldyBm aWxlLgotCSogZ2RiLmphdmEvam5wZS5leHA6IE5ldyBmaWxlLgotCSogZ2RiLmNwL2dkYjk1OTMu ZXhwOiBOZXcgZmlsZS4KLQkqIGdkYi5jcC9nZGI5NTkzLmNjOiBOZXcgZmlsZS4KLQotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2JyZWFrcG9pbnQuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMTEtMTcgMDI6Mzg6 NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYnJlYWtwb2lu dC5jCTIwMTAtMTEtMTcgMDI6NDE6NTMuMDAwMDAwMDAwICswMTAwCi1AQCAtMjIzMiw2ICsyMjMy LDMzIEBAIGNyZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgKLSAgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOwotIH0KLSAKLSsvKiBJbnN0YWxsIGEgbWFzdGVyIGJyZWFrcG9p bnQgb24gdGhlIHVud2luZGVyJ3MgZGVidWcgaG9vay4gICovCi0rCi0rdm9pZAotK2NyZWF0ZV9l eGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCi0rewotKyAgc3RydWN0IG9iamZpbGUg Km9iamZpbGU7Ci0rCi0rICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0rICAgIHsKLSsgICAgICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmRlYnVnX2hvb2s7Ci0rCi0rICAgICAgZGVidWdfaG9vayA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0ICgiX1Vud2luZF9EZWJ1Z0hvb2siLCBvYmpmaWxl KTsKLSsgICAgICBpZiAoZGVidWdfaG9vayAhPSBOVUxMKQotKwl7Ci0rCSAgc3RydWN0IGJyZWFr cG9pbnQgKmI7Ci0rCi0rCSAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZXRfb2Jq ZmlsZV9hcmNoIChvYmpmaWxlKSwKLSsJCQkJCSAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGRlYnVn X2hvb2spLAotKwkJCQkJICBicF9leGNlcHRpb25fbWFzdGVyKTsKLSsJICBiLT5hZGRyX3N0cmlu ZyA9IHhzdHJkdXAgKCJfVW53aW5kX0RlYnVnSG9vayIpOwotKwkgIGItPmVuYWJsZV9zdGF0ZSA9 IGJwX2Rpc2FibGVkOwotKwl9Ci0rICAgIH0KLSsKLSsgIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25f bGlzdCAoMSk7Ci0rfQotKwotIHZvaWQKLSB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAo dm9pZCkKLSB7Ci1AQCAtMjI3Myw3ICsyMzAwLDggQEAgdXBkYXRlX2JyZWFrcG9pbnRzX2FmdGVy X2V4ZWMgKHZvaWQpCi0gICAgIC8qIFRocmVhZCBldmVudCBicmVha3BvaW50cyBtdXN0IGJlIHNl dCBhbmV3IGFmdGVyIGFuIGV4ZWMoKSwKLSAgICAgICAgYXMgbXVzdCBvdmVybGF5IGV2ZW50IGFu ZCBsb25nam1wIG1hc3RlciBicmVha3BvaW50cy4gICovCi0gICAgIGlmIChiLT50eXBlID09IGJw X3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQKLS0JfHwgYi0+dHlw ZSA9PSBicF9sb25nam1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVfbWFz dGVyKQotKwl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBf c3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKLSsJfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFzdGVy KQotICAgICAgIHsKLSAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotIAljb250aW51ZTsKLUBAIC0y Mjg4LDcgKzIzMTYsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKLSAK LSAgICAgLyogTG9uZ2ptcCBhbmQgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludHMgYXJlIGFsc28g bWVhbmluZ2xlc3MKLSAgICAgICAgYWZ0ZXIgYW4gZXhlYy4gICovCi0tICAgIGlmIChiLT50eXBl ID09IGJwX2xvbmdqbXAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX3Jlc3VtZSkKLSsgICAgaWYg KGItPnR5cGUgPT0gYnBfbG9uZ2ptcCB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfcmVzdW1lCi0r CXx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uIHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uX3Jl c3VtZSkKLSAgICAgICB7Ci0gCWRlbGV0ZV9icmVha3BvaW50IChiKTsKLSAJY29udGludWU7Ci1A QCAtMjM1MCw2ICsyMzc5LDcgQEAgdXBkYXRlX2JyZWFrcG9pbnRzX2FmdGVyX2V4ZWMgKHZvaWQp Ci0gICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKLSAg IGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKLSAgIGNy ZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgic3RkOjp0ZXJtaW5hdGUoKSIp OwotKyAgY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKLSB9Ci0gCi0gaW50 Ci1AQCAtMzI3NSw2ICszMzA1LDEyIEBAIHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKLSAg ICAgICByZXN1bHQgPSBQUklOVF9OT1RISU5HOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNl IGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0rICAgICAgLyogVGhlc2Ugc2hvdWxkIG5ldmVyIGJlIGVu YWJsZWQuICAqLwotKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiRXhjZXB0aW9uIE1hc3RlciBC cmVha3BvaW50OiBnZGIgc2hvdWxkIG5vdCBzdG9wIVxuIikpOwotKyAgICAgIHJlc3VsdCA9IFBS SU5UX05PVEhJTkc7Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgYnBfd2F0Y2hwb2ludDoK LSAgICAgY2FzZSBicF9oYXJkd2FyZV93YXRjaHBvaW50OgotICAgICAgIGFubm90YXRlX3dhdGNo cG9pbnQgKGItPm51bWJlcik7Ci1AQCAtMzM2Miw2ICszMzk4LDggQEAgcHJpbnRfaXRfdHlwaWNh bCAoYnBzdGF0IGJzKQotICAgICBjYXNlIGJwX25vbmU6Ci0gICAgIGNhc2UgYnBfbG9uZ2ptcDoK LSAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKLSsgICAgY2FzZSBicF9leGNlcHRpb246Ci0r ICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToK LSAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgotICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6 Ci1AQCAtNDE2NCw3ICs0MjAyLDggQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVz c19zcGFjZQotIAotIAkgIGlmIChiLT50eXBlID09IGJwX3RocmVhZF9ldmVudCB8fCBiLT50eXBl ID09IGJwX292ZXJsYXlfZXZlbnQKLSAJICAgICAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX21h c3RlcgotLQkgICAgICB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyKQotKwkg ICAgICB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyCi0rCSAgICAgIHx8IGIt PnR5cGUgPT0gYnBfZXhjZXB0aW9uX21hc3RlcikKLSAJICAgIC8qIFdlIGRvIG5vdCBzdG9wIGZv ciB0aGVzZS4gICovCi0gCSAgICBicy0+c3RvcCA9IDA7Ci0gCSAgZWxzZQotQEAgLTQyNjAsNiAr NDI5OSw3IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnNfaGVhZCkKLSAKLSAgIHJldHZhbC5tYWlu X2FjdGlvbiA9IEJQU1RBVF9XSEFUX0tFRVBfQ0hFQ0tJTkc7Ci0gICByZXR2YWwuY2FsbF9kdW1t eSA9IFNUT1BfTk9ORTsKLSsgIHJldHZhbC5pc19sb25nam1wID0gMDsKLSAKLSAgIGZvciAoYnMg PSBic19oZWFkOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQotICAgICB7Ci1AQCAtNDMxNSwx MCArNDM1NSwxNCBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzX2hlYWQpCi0gCSAgICB9Ci0gCSAg YnJlYWs7Ci0gCWNhc2UgYnBfbG9uZ2ptcDoKLSsJY2FzZSBicF9leGNlcHRpb246Ci0gCSAgdGhp c19hY3Rpb24gPSBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUU7Ci0rCSAgcmV0dmFsLmlz X2xvbmdqbXAgPSBicHR5cGUgPT0gYnBfbG9uZ2ptcDsKLSAJICBicmVhazsKLSAJY2FzZSBicF9s b25nam1wX3Jlc3VtZToKLSsJY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgotIAkgIHRoaXNfYWN0 aW9uID0gQlBTVEFUX1dIQVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUU7Ci0rCSAgcmV0dmFsLmlzX2xv bmdqbXAgPSBicHR5cGUgPT0gYnBfbG9uZ2ptcF9yZXN1bWU7Ci0gCSAgYnJlYWs7Ci0gCWNhc2Ug YnBfc3RlcF9yZXN1bWU6Ci0gCSAgaWYgKGJzLT5zdG9wKQotQEAgLTQzMzQsNiArNDM3OCw3IEBA IGJwc3RhdF93aGF0IChicHN0YXQgYnNfaGVhZCkKLSAJY2FzZSBicF9vdmVybGF5X2V2ZW50Ogot IAljYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgotIAljYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVy OgotKwljYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gCSAgdGhpc19hY3Rpb24gPSBCUFNUQVRf V0hBVF9TSU5HTEU7Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgYnBfY2F0Y2hwb2ludDoKLUBAIC00NTU2 LDYgKzQ2MDEsOCBAQCBicHR5cGVfc3RyaW5nIChlbnVtIGJwdHlwZSB0eXBlKQotICAgICB7YnBf YWNjZXNzX3dhdGNocG9pbnQsICJhY2Mgd2F0Y2hwb2ludCJ9LAotICAgICB7YnBfbG9uZ2ptcCwg ImxvbmdqbXAifSwKLSAgICAge2JwX2xvbmdqbXBfcmVzdW1lLCAibG9uZ2ptcCByZXN1bWUifSwK LSsgICAge2JwX2V4Y2VwdGlvbiwgImV4Y2VwdGlvbiJ9LAotKyAgICB7YnBfZXhjZXB0aW9uX3Jl c3VtZSwgImV4Y2VwdGlvbiByZXN1bWUifSwKLSAgICAge2JwX3N0ZXBfcmVzdW1lLCAic3RlcCBy ZXN1bWUifSwKLSAgICAge2JwX3dhdGNocG9pbnRfc2NvcGUsICJ3YXRjaHBvaW50IHNjb3BlIn0s Ci0gICAgIHticF9jYWxsX2R1bW15LCAiY2FsbCBkdW1teSJ9LAotQEAgLTQ1NjUsNiArNDYxMiw3 IEBAIGJwdHlwZV9zdHJpbmcgKGVudW0gYnB0eXBlIHR5cGUpCi0gICAgIHticF9vdmVybGF5X2V2 ZW50LCAib3ZlcmxheSBldmVudHMifSwKLSAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2pt cCBtYXN0ZXIifSwKLSAgICAge2JwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyLCAic3RkOjp0ZXJtaW5h dGUgbWFzdGVyIn0sCi0rICAgIHticF9leGNlcHRpb25fbWFzdGVyLCAiZXhjZXB0aW9uIG1hc3Rl ciJ9LAotICAgICB7YnBfY2F0Y2hwb2ludCwgImNhdGNocG9pbnQifSwKLSAgICAge2JwX3RyYWNl cG9pbnQsICJ0cmFjZXBvaW50In0sCi0gICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRy YWNlcG9pbnQifSwKLUBAIC00NzA1LDYgKzQ3NTMsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9s b2NhdGlvbiAoc3RydWN0IGJyCi0gICAgICAgY2FzZSBicF9maW5pc2g6Ci0gICAgICAgY2FzZSBi cF9sb25nam1wOgotICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6Ci0rICAgICAgY2FzZSBi cF9leGNlcHRpb246Ci0rICAgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgotICAgICAgIGNh c2UgYnBfc3RlcF9yZXN1bWU6Ci0gICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgotICAg ICAgIGNhc2UgYnBfY2FsbF9kdW1teToKLUBAIC00NzE0LDYgKzQ3NjQsNyBAQCBwcmludF9vbmVf YnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyCi0gICAgICAgY2FzZSBicF9vdmVybGF5X2V2 ZW50OgotICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6Ci0gICAgICAgY2FzZSBicF9zdGRf dGVybWluYXRlX21hc3RlcjoKLSsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gICAg ICAgY2FzZSBicF90cmFjZXBvaW50OgotICAgICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50Ogot ICAgICAgIGNhc2UgYnBfc3RhdGljX3RyYWNlcG9pbnQ6Ci1AQCAtNTQ1Nyw2ICs1NTA4LDggQEAg YWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50IAotICAgICBjYXNlIGJwX2Zp bmlzaDoKLSAgICAgY2FzZSBicF9sb25nam1wOgotICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1l OgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbjoKLSsgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1l OgotICAgICBjYXNlIGJwX3N0ZXBfcmVzdW1lOgotICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2Nv cGU6Ci0gICAgIGNhc2UgYnBfY2FsbF9kdW1teToKLUBAIC01NDY5LDYgKzU1MjIsNyBAQCBhbGxv Y2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgCi0gICAgIGNhc2UgYnBfc3RkX3Rl cm1pbmF0ZV9tYXN0ZXI6Ci0gICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgotICAgICBj YXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0rICAgIGNhc2UgYnBfZXhjZXB0aW9u X21hc3RlcjoKLSAgICAgICBsb2MtPmxvY190eXBlID0gYnBfbG9jX3NvZnR3YXJlX2JyZWFrcG9p bnQ7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtwb2ludDoKLUBA IC01NzA4LDggKzU3NjIsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChzdHJ1Y3QgYnJl YWtwCi0gfQotIAotIC8qIENhbGwgdGhpcyByb3V0aW5lIHdoZW4gc3RlcHBpbmcgYW5kIG5leHRp bmcgdG8gZW5hYmxlIGEgYnJlYWtwb2ludAotLSAgIGlmIHdlIGRvIGEgbG9uZ2ptcCgpIGluIFRI UkVBRC4gIFdoZW4gd2UgaGl0IHRoYXQgYnJlYWtwb2ludCwgY2FsbAotLSAgIHNldF9sb25nam1w X3Jlc3VtZV9icmVha3BvaW50KCkgdG8gZmlndXJlIG91dCB3aGVyZSB3ZSBhcmUgZ29pbmcuICov Ci0rICAgaWYgd2UgZG8gYSBsb25nam1wKCkgb3IgJ3Rocm93JyBpbiBUSFJFQUQuICAqLwotIAot IHZvaWQKLSBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQotQEAgLTU3MjIsMTEg KzU3NzUsMTIgQEAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkKLSAgICAgIGNs b25lcyBvZiB0aG9zZSBhbmQgZW5hYmxlIHRoZW0gZm9yIHRoZSByZXF1ZXN0ZWQgdGhyZWFkLiAg Ki8KLSAgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCB0ZW1wKQotICAgICBpZiAoYi0+cHNwYWNl ID09IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZQotLQkmJiBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFz dGVyKQotKwkmJiAoYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlcgotKwkgICAgfHwgYi0+dHlw ZSA9PSBicF9leGNlcHRpb25fbWFzdGVyKSkKLSAgICAgICB7Ci0gCXN0cnVjdCBicmVha3BvaW50 ICpjbG9uZSA9IGNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChiKTsKLSAKLS0JY2xvbmUtPnR5 cGUgPSBicF9sb25nam1wOwotKwljbG9uZS0+dHlwZSA9IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9t YXN0ZXIgPyBicF9sb25nam1wIDogYnBfZXhjZXB0aW9uOwotIAljbG9uZS0+dGhyZWFkID0gdGhy ZWFkOwotICAgICAgIH0KLSB9Ci1AQCAtNTczOCw3ICs1NzkyLDcgQEAgZGVsZXRlX2xvbmdqbXBf YnJlYWtwb2ludCAoaW50IHRocmVhZCkKLSAgIHN0cnVjdCBicmVha3BvaW50ICpiLCAqdGVtcDsK LSAKLSAgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCB0ZW1wKQotLSAgICBpZiAoYi0+dHlwZSA9 PSBicF9sb25nam1wKQotKyAgICBpZiAoYi0+dHlwZSA9PSBicF9sb25nam1wIHx8IGItPnR5cGUg PT0gYnBfZXhjZXB0aW9uKQotICAgICAgIHsKLSAJaWYgKGItPnRocmVhZCA9PSB0aHJlYWQpCi0g CSAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotQEAgLTY5MTMsNiArNjk2Nyw4IEBAIG1lbnRpb24g KHN0cnVjdCBicmVha3BvaW50ICpiKQotICAgICAgIGNhc2UgYnBfZmluaXNoOgotICAgICAgIGNh c2UgYnBfbG9uZ2ptcDoKLSAgICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgotKyAgICAgIGNh c2UgYnBfZXhjZXB0aW9uOgotKyAgICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAg ICBjYXNlIGJwX3N0ZXBfcmVzdW1lOgotICAgICAgIGNhc2UgYnBfY2FsbF9kdW1teToKLSAgICAg ICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGU6Ci1AQCAtNjkyNCw2ICs2OTgwLDcgQEAgbWVudGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKmIpCi0gICAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKLSAg ICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgotICAgICAgIGNhc2UgYnBfZ251X2lm dW5jX3Jlc29sdmVyX3JldHVybjoKLSsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0g CWJyZWFrOwotICAgICAgIH0KLSAKLUBAIC04NTk4LDYgKzg2NTUsNyBAQCBzdHJ1Y3QgdW50aWxf YnJlYWtfY29tbWFuZF9jb250aW51YXRpb25fCi0gewotICAgc3RydWN0IGJyZWFrcG9pbnQgKmJy ZWFrcG9pbnQ7Ci0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDI7Ci0rICBpbnQgdGhy ZWFkX251bTsKLSB9OwotIAotIC8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGZldGNoX2lu ZmVyaW9yX2V2ZW50IHZpYSB0aGUKLUBAIC04NjEyLDYgKzg2NzAsNyBAQCB1bnRpbF9icmVha19j b21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqCi0gICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJl YWtwb2ludCk7Ci0gICBpZiAoYS0+YnJlYWtwb2ludDIpCi0gICAgIGRlbGV0ZV9icmVha3BvaW50 IChhLT5icmVha3BvaW50Mik7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChhLT50aHJl YWRfbnVtKTsKLSB9Ci0gCi0gdm9pZAotQEAgLTg2MjMsNiArODY4Miw4IEBAIHVudGlsX2JyZWFr X2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb20KLSAgIHN0cnVjdCBicmVha3BvaW50ICpicmVh a3BvaW50OwotICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQyID0gTlVMTDsKLSAgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0rICBpbnQgdGhyZWFkOwotKyAgc3RydWN0IHRocmVh ZF9pbmZvICp0cDsKLSAKLSAgIGNsZWFyX3Byb2NlZWRfc3RhdHVzICgpOwotIAotQEAgLTg2NjEs NiArODcyMiw5IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb20KLSAK LSAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2lu dCk7Ci0gCi0rICB0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKLSsgIHRocmVhZCA9IHRwLT5udW07 Ci0rCi0gICAvKiBLZWVwIHdpdGhpbiB0aGUgY3VycmVudCBmcmFtZSwgb3IgaW4gZnJhbWVzIGNh bGxlZCBieSB0aGUgY3VycmVudAotICAgICAgb25lLiAgKi8KLSAKLUBAIC04NjczLDYgKzg3Mzcs MTAgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbQotIAkJCQkJICAg ICAgZnJhbWVfdW53aW5kX2NhbGxlcl9pZCAoZnJhbWUpLAotIAkJCQkJICAgICAgYnBfdW50aWwp OwotICAgICAgIG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludDIpOwot KwotKyAgICAgIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICAgICAgdHAtPmlu aXRpYXRpbmdfZnJhbWUgPSBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSk7Ci0rICAgICAg bWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQp OwotICAgICB9Ci0gCi0gICBwcm9jZWVkICgtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAwKTsK LUBAIC04Njg5LDYgKzg3NTcsNyBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tCi0gCi0gICAgICAgYXJncy0+YnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7Ci0gICAgICAg YXJncy0+YnJlYWtwb2ludDIgPSBicmVha3BvaW50MjsKLSsgICAgICBhcmdzLT50aHJlYWRfbnVt ID0gdGhyZWFkOwotIAotICAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0gICAg ICAgYWRkX2NvbnRpbnVhdGlvbiAoaW5mZXJpb3JfdGhyZWFkICgpLAotQEAgLTk5NDAsNiArMTAw MDksNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gCSAgICAm JiBiLT50eXBlICE9IGJwX292ZXJsYXlfZXZlbnQKLSAJICAgICYmIGItPnR5cGUgIT0gYnBfbG9u Z2ptcF9tYXN0ZXIKLSAJICAgICYmIGItPnR5cGUgIT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIK LSsJICAgICYmIGItPnR5cGUgIT0gYnBfZXhjZXB0aW9uX21hc3RlcgotIAkgICAgJiYgYi0+bnVt YmVyID49IDApCi0gCSAgewotIAkgICAgYnJlYWtzX3RvX2RlbGV0ZSA9IDE7Ci1AQCAtOTk2MSw2 ICsxMDAzMSw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAJ CSYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAotIAkJJiYgYi0+dHlwZSAhPSBicF9sb25n am1wX21hc3RlcgotIAkJJiYgYi0+dHlwZSAhPSBicF9zdGRfdGVybWluYXRlX21hc3RlcgotKwkJ JiYgYi0+dHlwZSAhPSBicF9leGNlcHRpb25fbWFzdGVyCi0gCQkmJiBiLT5udW1iZXIgPj0gMCkK LSAJICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotIAkgIH0KLUBAIC0xMDQ3MCw2ICsxMDU0 MSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF9v dmVybGF5X2V2ZW50OgotICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgotICAgICBjYXNlIGJw X3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0g ICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotICAgICAgIGJyZWFrOwotIAotQEAgLTEwNDkz LDYgKzEwNTY1LDggQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQotICAgICBj YXNlIGJwX3N0ZXBfcmVzdW1lOgotICAgICBjYXNlIGJwX2xvbmdqbXA6Ci0gICAgIGNhc2UgYnBf bG9uZ2ptcF9yZXN1bWU6Ci0rICAgIGNhc2UgYnBfZXhjZXB0aW9uOgotKyAgICBjYXNlIGJwX2V4 Y2VwdGlvbl9yZXN1bWU6Ci0gICAgIGNhc2UgYnBfaml0X2V2ZW50OgotICAgICBjYXNlIGJwX2du dV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTA1MzcsNiArMTA2 MTEsNyBAQCBicmVha3BvaW50X3JlX3NldCAodm9pZCkKLSAgIGNyZWF0ZV9sb25nam1wX21hc3Rl cl9icmVha3BvaW50ICgic2lnbG9uZ2ptcCIpOwotICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2Jy ZWFrcG9pbnQgKCJfc2lnbG9uZ2ptcCIpOwotICAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVy X2JyZWFrcG9pbnQgKCJzdGQ6OnRlcm1pbmF0ZSgpIik7Ci0rICBjcmVhdGVfZXhjZXB0aW9uX21h c3Rlcl9icmVha3BvaW50ICgpOwotIH0KLSAMCi0gLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIg b2YgdGhpcyBicmVha3BvaW50OgotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2JyZWFr cG9pbnQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvYnJl YWtwb2ludC5oCTIwMTAtMTEtMTcgMDI6Mzg6NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAw MDAwICswMTAwCi1AQCAtNjEsNiArNjEsMTMgQEAgZW51bSBicHR5cGUKLSAgICAgYnBfbG9uZ2pt cCwJCQkvKiBzZWNyZXQgYnJlYWtwb2ludCB0byBmaW5kIGxvbmdqbXAoKSAqLwotICAgICBicF9s b25nam1wX3Jlc3VtZSwJCS8qIHNlY3JldCBicmVha3BvaW50IHRvIGVzY2FwZSBsb25nam1wKCkg Ki8KLSAKLSsgICAgLyogQW4gaW50ZXJuYWwgYnJlYWtwb2ludCB0aGF0IGlzIGluc3RhbGxlZCBv biB0aGUgdW53aW5kZXIncwotKyAgICAgICBkZWJ1ZyBob29rLiAgKi8KLSsgICAgYnBfZXhjZXB0 aW9uLAotKyAgICAvKiBBbiBpbnRlcm5hbCBicmVha3BvaW50IHRoYXQgaXMgc2V0IGF0IHRoZSBw b2ludCB3aGVyZSBhbgotKyAgICAgICBleGNlcHRpb24gd2lsbCBsYW5kLiAgKi8KLSsgICAgYnBf ZXhjZXB0aW9uX3Jlc3VtZSwKLSsKLSAgICAgLyogVXNlZCBieSB3YWl0X2Zvcl9pbmZlcmlvciBm b3Igc3RlcHBpbmcgb3ZlciBzdWJyb3V0aW5lIGNhbGxzLCBmb3IKLSAgICAgICAgc3RlcHBpbmcg b3ZlciBzaWduYWwgaGFuZGxlcnMsIGFuZCBmb3Igc2tpcHBpbmcgcHJvbG9ndWVzLiAgKi8KLSAg ICAgYnBfc3RlcF9yZXN1bWUsCi1AQCAtMTMwLDYgKzEzNyw5IEBAIGVudW0gYnB0eXBlCi0gICAg IC8qIE1hc3RlciBjb3BpZXMgb2Ygc3RkOjp0ZXJtaW5hdGUgYnJlYWtwb2ludHMuICAqLwotICAg ICBicF9zdGRfdGVybWluYXRlX21hc3RlciwKLSAKLSsgICAgLyogTGlrZSBicF9sb25nam1wX21h c3RlciwgYnV0IGZvciBleGNlcHRpb25zLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uX21hc3RlciwK LSsKLSAgICAgYnBfY2F0Y2hwb2ludCwKLSAKLSAgICAgYnBfdHJhY2Vwb2ludCwKLUBAIC02NzIs NiArNjgyLDEwIEBAIHN0cnVjdCBicHN0YXRfd2hhdAotICAgICAgICBjb250aW51aW5nIGZyb20g YSBjYWxsIGR1bW15IHdpdGhvdXQgcG9wcGluZyB0aGUgZnJhbWUgaXMgbm90IGEKLSAgICAgICAg dXNlZnVsIG9uZSkuICAqLwotICAgICBlbnVtIHN0b3Bfc3RhY2tfa2luZCBjYWxsX2R1bW15Owot KwotKyAgICAvKiBVc2VkIGZvciBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUuICBUcnVl IGlmIHdlIGFyZQotKyAgICAgICBoYW5kbGluZyBhIGxvbmdqbXAsIGZhbHNlIGlmIHdlIGFyZSBo YW5kbGluZyBhbiBleGNlcHRpb24uICAqLwotKyAgICBpbnQgaXNfbG9uZ2ptcDsKLSAgIH07Ci0g Ci0gLyogVGhlIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMgZm9yIHByaW50X2Jwc3RhdCwgcHJpbnRf aXRfbm9ybWFsLAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2dkYnRocmVhZC5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9nZGJ0aHJlYWQuaAky MDEwLTExLTAyIDAyOjM3OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL2dkYnRocmVhZC5oCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCi1A QCAtMTg1LDYgKzE4NSwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFRydWUgaWYgdGhp cyB0aHJlYWQgaGFzIGJlZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgdG8gc3RvcC4gICovCi0gICBp bnQgc3RvcF9yZXF1ZXN0ZWQ7Ci0gCi0rICAvKiBUaGUgaW5pdGlhdGluZyBmcmFtZSBvZiBhIG5l eHRpbmcgb3BlcmF0aW9uLCB1c2VkIGZvciBkZWNpZGluZwotKyAgICAgd2hpY2ggZXhjZXB0aW9u cyB0byBpbnRlcmNlcHQuICAqLwotKyAgc3RydWN0IGZyYW1lX2lkIGluaXRpYXRpbmdfZnJhbWU7 Ci0rCi0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1l bnRhdGlvbi4gICovCi0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKLSAK LUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZjbWQuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvaW5mY21kLmMJMjAxMC0wNy0wMSAxNzozNjox NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZjbWQuYwky MDEwLTExLTE3IDAyOjM5OjE5LjAwMDAwMDAwMCArMDEwMAotQEAgLTgyMiw3ICs4MjIsNyBAQCBu ZXh0aV9jb21tYW5kIChjaGFyICpjb3VudF9zdHJpbmcsIGludCBmCi0gICBzdGVwXzEgKDEsIDEs IGNvdW50X3N0cmluZyk7Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIGRlbGV0ZV9sb25n am1wX2JyZWFrcG9pbnRfY2xlYW51cCAodm9pZCAqYXJnKQotIHsKLSAgIGludCB0aHJlYWQgPSAq IChpbnQgKikgYXJnOwotQEAgLTg2MiwxMCArODYyLDEzIEBAIHN0ZXBfMSAoaW50IHNraXBfc3Vi cm91dGluZXMsIGludCBzaW5nbGUKLSAKLSAgIGlmICghc2luZ2xlX2luc3QgfHwgc2tpcF9zdWJy b3V0aW5lcykJCS8qIGxlYXZlIHNpIGNvbW1hbmQgYWxvbmUgKi8KLSAgICAgewotKyAgICAgIHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7Ci0rCi0gICAgICAgaWYg KGluX3RocmVhZF9saXN0IChpbmZlcmlvcl9wdGlkKSkKLSAgCXRocmVhZCA9IHBpZF90b190aHJl YWRfaWQgKGluZmVyaW9yX3B0aWQpOwotIAotICAgICAgIHNldF9sb25nam1wX2JyZWFrcG9pbnQg KHRocmVhZCk7Ci0rICAgICAgdHAtPmluaXRpYXRpbmdfZnJhbWUgPSBnZXRfZnJhbWVfaWQgKGdl dF9jdXJyZW50X2ZyYW1lICgpKTsKLSAKLSAgICAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25n am1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7Ci0gICAgIH0KLUBAIC0xMjE5LDYgKzEy MjIsMTUgQEAgc2lnbmFsX2NvbW1hbmQgKGNoYXIgKnNpZ251bV9leHAsIGludCBmcgotICAgcHJv Y2VlZCAoKENPUkVfQUREUikgLTEsIG91cnNpZywgMCk7Ci0gfQotIAotKy8qIEEgY29udGludWF0 aW9uIGNhbGxiYWNrIGZvciB1bnRpbF9uZXh0X2NvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2b2lk Ci0rdW50aWxfbmV4dF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwID0gYXJnOwotKyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAodHAtPm51 bSk7Ci0rfQotKwotIC8qIFByb2NlZWQgdW50aWwgd2UgcmVhY2ggYSBkaWZmZXJlbnQgc291cmNl IGxpbmUgd2l0aCBwYyBncmVhdGVyIHRoYW4KLSAgICBvdXIgY3VycmVudCBvbmUgb3IgZXhpdCB0 aGUgZnVuY3Rpb24uICBXZSBza2lwIGNhbGxzIGluIGJvdGggY2FzZXMuCi0gCi1AQCAtMTIzNSw2 ICsxMjQ3LDggQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gICBzdHJ1Y3Qg c3ltYm9sICpmdW5jOwotICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0gICBzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOwotKyAgaW50IHRocmVhZCA9IHRw LT5udW07Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotIAotICAgY2xlYXJfcHJvY2Vl ZF9zdGF0dXMgKCk7Ci0gICBzZXRfc3RlcF9mcmFtZSAoKTsKLUBAIC0xMjcwLDcgKzEyODQsMTkg QEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gCi0gICB0cC0+c3RlcF9tdWx0 aSA9IDA7CQkvKiBPbmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KLSAKLSsgIHNldF9sb25nam1w X2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFt ZV9pZCAoZnJhbWUpOwotKyAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2pt cF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwotKwotICAgcHJvY2VlZCAoKENPUkVfQURE UikgLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVMVCwgMSk7Ci0rCi0rICBpZiAodGFyZ2V0X2Nhbl9h c3luY19wICgpICYmIGlzX3J1bm5pbmcgKGluZmVyaW9yX3B0aWQpKQotKyAgICB7Ci0rICAgICAg ZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgICAgICBhZGRfY29udGludWF0aW9uICh0 cCwgdW50aWxfbmV4dF9jb250aW51YXRpb24sIHRwLCBOVUxMKTsKLSsgICAgfQotKyAgZWxzZQot KyAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0x NDYzLDYgKzE0ODksNyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykK LSAgIGlmIChicyAhPSBOVUxMICYmIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKLSAgICAgb2JzZXJ2 ZXJfbm90aWZ5X25vcm1hbF9zdG9wIChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7Ci0gICBkZWxl dGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludCk7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVha3Bv aW50IChpbmZlcmlvcl90aHJlYWQgKCktPm51bSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAt MTU0Niw2ICsxNTczLDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9u LAotICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7Ci0gICBzdHJ1Y3QgY2xlYW51cCAq b2xkX2NoYWluOwotICAgc3RydWN0IGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzICpj YXJnczsKLSsgIGludCB0aHJlYWQgPSB0cC0+bnVtOwotIAotICAgc2FsID0gZmluZF9wY19saW5l IChnZXRfZnJhbWVfcGMgKGZyYW1lKSwgMCk7Ci0gICBzYWwucGMgPSBnZXRfZnJhbWVfcGMgKGZy YW1lKTsKLUBAIC0xNTU2LDYgKzE1ODQsMTAgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1i b2wgKmZ1bmN0aW9uLAotIAotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVh a3BvaW50IChicmVha3BvaW50KTsKLSAKLSsgIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRocmVh ZCk7Ci0rICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotKyAg bWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQp OwotKwotICAgdHAtPnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3Jl Z2lzdGVycywgcGxlYXNlLi4uICAqLwotICAgY2FyZ3MgPSB4bWFsbG9jIChzaXplb2YgKCpjYXJn cykpOwotIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZmVyaW9yLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0x MS0xNyAwMjozODo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9pbmZlcmlvci5oCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCi1AQCAtMjk5 LDYgKzI5OSw4IEBAIGV4dGVybiB2b2lkIGludGVycnVwdF90YXJnZXRfY29tbWFuZCAoY2gKLSAK LSBleHRlcm4gdm9pZCBpbnRlcnJ1cHRfdGFyZ2V0XzEgKGludCBhbGxfdGhyZWFkcyk7Ci0gCi0r ZXh0ZXJuIHZvaWQgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcp OwotKwotIGV4dGVybiB2b2lkIGRldGFjaF9jb21tYW5kIChjaGFyICosIGludCk7Ci0gCi0gZXh0 ZXJuIHZvaWQgbm90aWNlX25ld19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7Ci1JbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAtMTEtMTcgMDI6Mzg6NTkuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mcnVuLmMJMjAxMC0xMS0x NyAwMjozOToxOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NSw2ICs0NSw4IEBACi0gI2luY2x1ZGUg Imxhbmd1YWdlLmgiCi0gI2luY2x1ZGUgInNvbGliLmgiCi0gI2luY2x1ZGUgIm1haW4uaCIKLSsj aW5jbHVkZSAiZGljdGlvbmFyeS5oIgotKyNpbmNsdWRlICJibG9jay5oIgotICNpbmNsdWRlICJn ZGJfYXNzZXJ0LmgiCi0gI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgotICNpbmNsdWRlICJldmVu dC10b3AuaCIKLUBAIC0yMjI5LDYgKzIyMzEsOCBAQCBzdGF0aWMgdm9pZCBpbnNlcnRfc3RlcF9y ZXN1bWVfYnJlYWtwb2luCi0gCQkJCQkJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNyX3NhbCwK LSAJCQkJCQkgIHN0cnVjdCBmcmFtZV9pZCBzcl9pZCk7Ci0gc3RhdGljIHZvaWQgaW5zZXJ0X2xv bmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7Ci0r c3RhdGljIHZvaWQgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250 cm9sX3N0YXRlICosCi0rCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qgc3ltYm9s ICopOwotIAotIHN0YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKTsKLSBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBl eGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC00MTIxLDIzICs0MTI1LDMzIEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgotIAotIAllY3MtPmV2ZW50X3RocmVhZC0+c3RlcHBpbmdf b3Zlcl9icmVha3BvaW50ID0gMTsKLSAKLS0JaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3Rhcmdl dF9wIChnZGJhcmNoKQotLQkgICAgfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJh cmNoLCBmcmFtZSwgJmptcF9idWZfcGMpKQotKwlpZiAod2hhdC5pc19sb25nam1wKQotIAkgIHsK LS0JICAgIGlmIChkZWJ1Z19pbmZydW4pCi0tCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywgIlwKLSsJICAgIGlmICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2Ri YXJjaCkKLSsJCXx8ICFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwKLSsJCQkJ CQlmcmFtZSwgJmptcF9idWZfcGMpKQotKwkgICAgICB7Ci0rCQlpZiAoZGVidWdfaW5mcnVuKQot KwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJcCi0gaW5mcnVuOiBCUFNUQVRf V0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIp OwotLQkgICAga2VlcF9nb2luZyAoZWNzKTsKLS0JICAgIHJldHVybjsKLS0JICB9Ci0rCQlrZWVw X2dvaW5nIChlY3MpOwotKwkJcmV0dXJuOwotKwkgICAgICB9Ci0gCi0tCS8qIFdlJ3JlIGdvaW5n IHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUgYnJlYWtwb2ludAotLQkgICB3aXRo IGEgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludC4gICovCi0tCWRlbGV0ZV9zdGVwX3Jlc3VtZV9i cmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0rCSAgICAvKiBXZSdyZSBnb2luZyB0byBy ZXBsYWNlIHRoZSBjdXJyZW50IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQKLSsJICAgICAgIHdpdGgg YSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50LiAgKi8KLSsJICAgIGRlbGV0ZV9zdGVwX3Jlc3Vt ZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0gCi0tCS8qIEluc2VydCBhIGJyZWFr cG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLwotLQlpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJl YWtwb2ludCAoZ2RiYXJjaCwgam1wX2J1Zl9wYyk7Ci0rCSAgICAvKiBJbnNlcnQgYSBicmVha3Bv aW50IGF0IHJlc3VtZSBhZGRyZXNzLiAgKi8KLSsJICAgIGluc2VydF9sb25nam1wX3Jlc3VtZV9i cmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0r CSAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jID0gZ2V0X2ZyYW1lX2Z1bmN0aW9uIChmcmFtZSk7Ci0g Ci0rCSAgICBpZiAoZnVuYykKLSsJICAgICAgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoZWNzLCBm cmFtZSwgZnVuYyk7Ci0rCSAgfQotIAlrZWVwX2dvaW5nIChlY3MpOwotIAlyZXR1cm47Ci0gCi1A QCAtNDE0OSw2ICs0MTYzLDUzIEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVT VU1FICgKLSAJZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFr cG9pbnQgIT0gTlVMTCk7Ci0gCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2 ZW50X3RocmVhZCk7Ci0gCi0rCWlmICghd2hhdC5pc19sb25nam1wKQotKwkgIHsKLSsJICAgIC8q IFRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHRvIGNvbnNpZGVyLgotKwkgICAgICAgCi0rCSAgICAg ICAxLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcyBjYXNl Ci0rCSAgICAgICB3ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgZ29uZSB0 b28gZmFyLgotKwkgICAgICAgCi0rCSAgICAgICAyLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlz dHMsIGFuZCBpcyB0aGUgc2FtZSBhcyB0aGUKLSsJICAgICAgIGN1cnJlbnQgZnJhbWUuCi0rCSAg ICAgICAKLSsJICAgICAgIDIuMS4gSWYgd2UgYXJlIHN0ZXBwaW5nLCBkZWZlciB0byB0aGUgc3Rl cHBpbmcgbG9naWMuCi0rCSAgICAgICAKLSsJICAgICAgIDIuMi4gT3RoZXJ3aXNlLCB3ZSBhcmUg bm90IHN0ZXBwaW5nLCBzbyB3ZSBhcmUgZG9pbmcgYQotKwkgICAgICAgImZpbmlzaCIgYW5kIHdl IGhhdmUgcmVhY2hlZCB0aGUgY2FsbGluZyBmcmFtZS4gIFNvLAotKwkgICAgICAgc3RvcC4KLSsJ ICAgICAgIAotKwkgICAgICAgMy4gVGhlIGluaXRpYXRpbmcgZnJhbWUgZXhpc3RzIGFuZCBpcyBk aWZmZXJlbnQgZnJvbQotKwkgICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBUaGlzIG1lYW5zIHRo ZSBleGNlcHRpb24gaGFzIGJlZW4KLSsJICAgICAgIGNhdWdodCBiZW5lYXRoIHRoZSBpbml0aWF0 aW5nIGZyYW1lLCBzbyBrZWVwIGdvaW5nLiAgKi8KLSsJICAgIHN0cnVjdCBmcmFtZV9pbmZvICpp bml0X2ZyYW1lCi0rCSAgICAgID0gZnJhbWVfZmluZF9ieV9pZCAoZWNzLT5ldmVudF90aHJlYWQt PmluaXRpYXRpbmdfZnJhbWUpOwotKwkgICAgaWYgKGluaXRfZnJhbWUpCi0rCSAgICAgIHsKLSsJ CXN0cnVjdCBmcmFtZV9pZCBjdXJyZW50X2lkCi0rCQkgID0gZ2V0X2ZyYW1lX2lkIChnZXRfY3Vy cmVudF9mcmFtZSAoKSk7Ci0rCQlpZiAoZnJhbWVfaWRfZXEgKGN1cnJlbnRfaWQsCi0rCQkJCSBl Y3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSkpCi0rCQkgIHsKLSsJCSAgICBpZiAo ZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmFuZ2Vfc3RhcnQpCi0rCQkgICAgICB7Ci0rCQkJLyog Q2FzZSAyLjEuICAqLwotKwkJCWJyZWFrOwotKwkJICAgICAgfQotKwkJICAgIGVsc2UKLSsJCSAg ICAgIHsKLSsJCQkvKiBDYXNlIDIuMjogZmFsbCB0aHJvdWdoLiAgKi8KLSsJCSAgICAgIH0KLSsJ CSAgfQotKwkJZWxzZQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAzLiAgKi8KLSsJCSAgICBrZWVw X2dvaW5nIChlY3MpOwotKwkJICAgIHJldHVybjsKLSsJCSAgfQotKwkgICAgICB9Ci0rCSAgfQot KwotIAllY3MtPmV2ZW50X3RocmVhZC0+c3RvcF9zdGVwID0gMTsKLSAJcHJpbnRfZW5kX3N0ZXBw aW5nX3JhbmdlX3JlYXNvbiAoKTsKLSAJc3RvcF9zdGVwcGluZyAoZWNzKTsKLUBAIC01MTI3LDYg KzUxODgsMTAwIEBAIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QKLSAg ICAgc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9uZ2pt cF9yZXN1bWUpOwotIH0KLSAKLSsvKiBJbnNlcnQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3Bv aW50LiAgVFAgaXMgdGhlIHRocmVhZCB0aHJvd2luZwotKyAgIHRoZSBleGNlcHRpb24uICBUaGUg YmxvY2sgQiBpcyB0aGUgYmxvY2sgb2YgdGhlIHVud2luZGVyIGRlYnVnIGhvb2sKLSsgICBmdW5j dGlvbi4gIEZSQU1FIGlzIHRoZSBmcmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsIHRvIHRo aXMKLSsgICBmdW5jdGlvbi4gIFNZTSBpcyB0aGUgc3ltYm9sIG9mIHRoZSBmdW5jdGlvbiBhcmd1 bWVudCBob2xkaW5nIHRoZQotKyAgIHRhcmdldCBQQyBvZiB0aGUgZXhjZXB0aW9uLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2luc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVj dCB0aHJlYWRfaW5mbyAqdHAsCi0rCQkJCSAgICBzdHJ1Y3QgYmxvY2sgKmIsCi0rCQkJCSAgICBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCSAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0r ewotKyAgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLSsKLSsgIC8qIFdlIHdhbnQgdG8gaWdub3Jl IGVycm9ycyBoZXJlLiAgKi8KLSsgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQotKyAg ICB7Ci0rICAgICAgc3RydWN0IHN5bWJvbCAqdnN5bTsKLSsgICAgICBzdHJ1Y3QgdmFsdWUgKnZh bHVlOwotKyAgICAgIENPUkVfQUREUiBoYW5kbGVyOwotKyAgICAgIHN0cnVjdCBicmVha3BvaW50 ICpicDsKLSsKLSsgICAgICB2c3ltID0gbG9va3VwX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFN RSAoc3ltKSwgYiwgVkFSX0RPTUFJTiwgTlVMTCk7Ci0rICAgICAgdmFsdWUgPSByZWFkX3Zhcl92 YWx1ZSAodnN5bSwgZnJhbWUpOwotKyAgICAgIC8qIElmIHRoZSB2YWx1ZSB3YXMgb3B0aW1pemVk IG91dCwgcmV2ZXJ0IHRvIHRoZSBvbGQgYmVoYXZpb3IuICAqLwotKyAgICAgIGlmICghIHZhbHVl X29wdGltaXplZF9vdXQgKHZhbHVlKSkKLSsJewotKwkgIGhhbmRsZXIgPSB2YWx1ZV9hc19hZGRy ZXNzICh2YWx1ZSk7Ci0rCi0rCSAgLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVu dCBzdGVwLXJlc3VtZSBicmVha3BvaW50Ci0rCSAgICAgd2l0aCBhbiBleGNlcHRpb24tcmVzdW1l IGJyZWFrcG9pbnQuICAqLwotKwkgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7 Ci0rCi0rCSAgaWYgKGRlYnVnX2luZnJ1bikKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKLSsJCQkJImluZnJ1bjogZXhjZXB0aW9uIHJlc3VtZSBhdCAlbHhcbiIsCi0rCQkJ CSh1bnNpZ25lZCBsb25nKSBoYW5kbGVyKTsKLSsKLSsJICBicCA9IHNldF9tb21lbnRhcnlfYnJl YWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJCSAgICAgICBoYW5k bGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKLSsJICBpbmZlcmlvcl90aHJlYWQgKCktPnN0ZXBf cmVzdW1lX2JyZWFrcG9pbnQgPSBicDsKLSsJfQotKyAgICB9Ci0rfQotKwotKy8qIFRoaXMgaXMg Y2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2VwdGVkLiAgQ2hlY2sgdG8K LSsgICBzZWUgd2hldGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRpb24gaXMgb2YgaW50ZXJl c3QsIGFuZCBpZiBzbywKLSsgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50IHRo ZXJlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2NoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgKHN0cnVj dCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzLAotKwkJCXN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwgc3RydWN0IHN5bWJvbCAqZnVuYykKLSt7Ci0rICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBl OwotKwotKyAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBz dHJ1Y3QgYmxvY2sgKmI7Ci0rICAgICAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgICAg ICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0rICAgICAgaW50IGFyZ25vID0gMDsKLSsKLSsgICAgICAv KiBUaGUgZXhjZXB0aW9uIGJyZWFrcG9pbnQgaXMgYSB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2lu dCBvbgotKwkgdGhlIHVud2luZGVyJ3MgZGVidWcgaG9vaywgZGVjbGFyZWQgYXM6Ci0rCSAKLSsJ IHZvaWQgX1Vud2luZF9EZWJ1Z0hvb2sgKHZvaWQgKmNmYSwgdm9pZCAqaGFuZGxlcik7Ci0rCSAK LSsJIFRoZSBDRkEgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBmcmFtZSB0byB3aGljaCBjb250cm9s IGlzCi0rCSBhYm91dCB0byBiZSB0cmFuc2ZlcnJlZC4gIEhBTkRMRVIgaXMgdGhlIGRlc3RpbmF0 aW9uIFBDLgotKwkgCi0rCSBXZSBpZ25vcmUgdGhlIENGQSBhbmQgc2V0IGEgdGVtcG9yYXJ5IGJy ZWFrcG9pbnQgYXQgSEFORExFUi4KLSsJIFRoaXMgaXMgbm90IGV4dHJlbWVseSBlZmZpY2llbnQg YnV0IGl0IGF2b2lkcyBpc3N1ZXMgaW4gZ2RiCi0rCSB3aXRoIGNvbXB1dGluZyB0aGUgRFdBUkYg Q0ZBLCBhbmQgaXQgYWxzbyB3b3JrcyBldmVuIGluIHdlaXJkCi0rCSBjYXNlcyBzdWNoIGFzIHRo cm93aW5nIGFuIGV4Y2VwdGlvbiBmcm9tIGluc2lkZSBhIHNpZ25hbAotKwkgaGFuZGxlci4gICov Ci0rCi0rICAgICAgYiA9IFNZTUJPTF9CTE9DS19WQUxVRSAoZnVuYyk7Ci0rICAgICAgQUxMX0JM T0NLX1NZTUJPTFMgKGIsIGl0ZXIsIHN5bSkKLSsJewotKwkgIGlmICghU1lNQk9MX0lTX0FSR1VN RU5UIChzeW0pKQotKwkgICAgY29udGludWU7Ci0rCi0rCSAgaWYgKGFyZ25vID09IDApCi0rCSAg ICArK2FyZ25vOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgaW5zZXJ0X2V4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQsCi0rCQkJCQkJICBiLCBmcmFtZSwg c3ltKTsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotK30KLSsKLSBzdGF0 aWMgdm9pZAotIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAq ZWNzKQotIHsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmNw L2dkYjk1OTMuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2dkYjk1OTMuY2MJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAwMDAgKzAxMDAKLUBA IC0wLDAgKzEsMTgwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K LSsgICAqLwotKyNpbmNsdWRlIDxpb3N0cmVhbT4KLSsKLSt1c2luZyBuYW1lc3BhY2Ugc3RkOwot KwotK2NsYXNzIE5leHRPdmVyVGhyb3dEZXJpdmF0ZXMKLSt7Ci0rCi0rcHVibGljOgotKwotKwot KyAgLy8gU2luZ2xlIHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGlzIGZ1bmN0aW9uLgotKyAgdm9p ZCBmdW5jdGlvbjEoKSAKLSsgIHsKLSsgICAgdGhyb3cgMjA7Ci0rICB9Ci0rCi0rICAvLyBUaHJv dyBhbiBleGNlcHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rpb24yKCkg Ci0rICB7Ci0rICAgIGZ1bmN0aW9uMSgpOwotKyAgfQotKwotKyAgLy8gVGhyb3cgYW4gZXhjZXB0 aW9uIGluIGFub3RoZXIgZnVuY3Rpb24sIGJ1dCBoYW5kbGUgaXQKLSsgIC8vIGxvY2FsbHkuCi0r ICB2b2lkIGZ1bmN0aW9uMyAoKSAKLSsgIHsKLSsgICAgewotKyAgICAgIHRyeQotKwl7Ci0rCSAg ZnVuY3Rpb24xICgpOwotKwl9Ci0rICAgICAgY2F0Y2ggKC4uLikgCi0rCXsKLSsJICBjb3V0IDw8 ICJDYXVnaHQgYW5kIGhhbmRsZWQgZnVuY3Rpb24xIGV4Y2VwdGlvbiIgPDwgZW5kbDsKLSsJfQot KyAgICB9Ci0rICB9Ci0rCi0rICB2b2lkIHJldGhyb3cgKCkKLSsgIHsKLSsgICAgdHJ5Ci0rICAg ICAgewotKwlmdW5jdGlvbjEgKCk7Ci0rICAgICAgfQotKyAgICBjYXRjaCAoLi4uKQotKyAgICAg IHsKLSsJdGhyb3c7Ci0rICAgICAgfQotKyAgfQotKwotKyAgdm9pZCBmaW5pc2ggKCkKLSsgIHsK LSsgICAgLy8gV2UgdXNlIHRoaXMgdG8gdGVzdCB0aGF0IGEgImZpbmlzaCIgaGVyZSBkb2VzIG5v dCBlbmQgdXAgaW4KLSsgICAgLy8gdGhpcyBmcmFtZSwgYnV0IGluIHRoZSBvbmUgYWJvdmUuCi0r ICAgIHRyeQotKyAgICAgIHsKLSsJZnVuY3Rpb24xICgpOwotKyAgICAgIH0KLSsgICAgY2F0Y2gg KGludCB4KQotKyAgICAgIHsKLSsgICAgICB9Ci0rICAgIGZ1bmN0aW9uMSAoKTsJCS8vIG1hcmtl ciBmb3IgdW50aWwKLSsgIH0KLSsKLSsgIHZvaWQgdW50aWwgKCkKLSsgIHsKLSsgICAgZnVuY3Rp b24xICgpOwotKyAgICBmdW5jdGlvbjEgKCk7CQkvLyB1bnRpbCBoZXJlCi0rICB9Ci0rCi0rfTsK LStOZXh0T3ZlclRocm93RGVyaXZhdGVzIG5leHRfY2FzZXM7Ci0rCi0rCi0raW50IG1haW4gKCkg Ci0reyAKLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjEgKCk7Ci0r ICAgIH0KLSsgIGNhdGNoICguLi4pCi0rICAgIHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0K LSsKLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7Ci0rICAg IH0KLSsgIGNhdGNoICguLi4pCi0rICAgIHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0KLSsK LSsgIHRyeQotKyAgICB7Ci0rICAgICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVkIHNvIHdlIGNhbiBu ZXh0IG92ZXIgb25lIGJ1dCBzdGVwIGludG8KLSsgICAgICAvLyBhbm90aGVyLgotKyAgICAgIG5l eHRfY2FzZXMuZnVuY3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0r ICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMyAoKTsK LSsKLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5yZXRocm93ICgpOwotKyAgICB9 Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0r ICB0cnkKLSsgICAgewotKyAgICAgIC8vIEFub3RoZXIgZHVwbGljYXRlIHNvIHdlIGNhbiB0ZXN0 ICJmaW5pc2giLgotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOwotKyAgICB9Ci0rICBj YXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICAvLyBB bm90aGVyIHRlc3QgZm9yICJmaW5pc2giLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nh c2VzLmZpbmlzaCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0r Ci0rICAvLyBUZXN0IG9mICJ1bnRpbCIuCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2Fz ZXMuZmluaXNoICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0KLSsK LSsgIC8vIFRlc3Qgb2YgInVudGlsIiB3aXRoIGFuIGFyZ3VtZW50LgotKyAgdHJ5Ci0rICAgIHsK LSsgICAgICBuZXh0X2Nhc2VzLnVudGlsICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAg ICB7Ci0rICAgIH0KLSsKLSsgIC8vIFRlc3Qgb2YgImFkdmFuY2UiLgotKyAgdHJ5Ci0rICAgIHsK LSsgICAgICBuZXh0X2Nhc2VzLnVudGlsICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAg ICB7Ci0rICAgIH0KLSt9Ci0rCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAw MDAgKzAxMDAKLUBAIC0wLDAgKzEsMTgyIEBACi0rIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSwgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0rCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJh Y2VsZXZlbAotK30KLSsKLStpZiB7IFtza2lwX2NwbHVzX3Rlc3RzXSB9IHsgY29udGludWUgfQot KwotK3NldCB0ZXN0ZmlsZSAiZ2RiOTU5MyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwot K3NldCBiaW5maWxlICRvYmpkaXIvJHN1YmRpci8kdGVzdGZpbGUKLSsKLSsjIENyZWF0ZSBhbmQg c291cmNlIHRoZSBmaWxlIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBp bGVyCi0rIyB1c2VkIHRvIGNvbXBpbGUgdGhlIHRlc3QgY2FzZS4KLStpZiBbZ2V0X2NvbXBpbGVy X2luZm8gJHtiaW5maWxlfSAiYysrIl0gewotKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIi IH0gewotKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r IyBTb21lIHRhcmdldHMgY2FuJ3QgZG8gZnVuY3Rpb24gY2FsbHMsIHNvIGRvbid0IGV2ZW4gYm90 aGVyIHdpdGggdGhpcwotKyMgdGVzdC4KLStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixjYW5u b3RfY2FsbF9mdW5jdGlvbnNdIHsKLSsgICAgc2V0dXBfeGZhaWwgIiotKi0qIiA5NTkzCi0rICAg IGZhaWwgIlRoaXMgdGFyZ2V0IGNhbiBub3QgY2FsbCBmdW5jdGlvbnMiCi0rICAgIGNvbnRpbnVl Ci0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0g dGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCi0rICAgIGNvbnRpbnVl Ci0rfSAKLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhlIG5lZWRlZCB1bndpbmRlciBob29r cy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5kX0RlYnVnSG9v ayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7Ci0rICAgIC1yZSAiPSAuKl9VbndpbmRfRGVi dWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICJjaGVjayBmb3IgdW53aW5kZXIg aG9vayIKLSsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQu XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBQYXNzIHRoZSB0ZXN0IHNvIHdlIGRvbid0IGdldCBi b2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KLSsJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhv b2siCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsgICAgdW50ZXN0ZWQg Z2RiOTU5My5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgU2VlIGh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9OTU5MwotKwotK2dkYl90ZXN0ICJuZXh0 IiBcCi0rICAgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICAgIm5leHQgb3ZlciBhIHRocm93IDEi Ci0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwK LSsgICJuZXh0IHBhc3QgY2F0Y2ggMSIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgICAiLipj YXRjaCAoLi4uKS4qIiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJvdyAyIgotKwotK2dkYl90ZXN0 ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCi0rICAibmV4dCBwYXN0 IGNhdGNoIDIiCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSgpLioiIFwK LSsgICJzdGVwIGludG8gZnVuY3Rpb24yIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICAg Ii4qY2F0Y2ggKC4uLikuKiIgXAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgMyIKLSsKLStnZGJf dGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlvbjMuKiIgXAotKyAgIm5leHQg cGFzdCBjYXRjaCAzIgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnJl dGhyb3cuKiIgXAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgNCIKLSsKLStnZGJfdGVzdCAibmV4 dCIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgIm5leHQgb3ZlciBhIHJldGhyb3ciCi0r Ci0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKLSsg ICJuZXh0IGFmdGVyIGEgcmV0aHJvdyIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVu Y3Rpb24xKCkuKiIgXAotKyAgInN0ZXAgaW50byBmdW5jdGlvbjIgMiIKLSsKLStnZGJfdGVzdCAi ZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDEiCi0rCi0rZ2Ri X3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0 IHBhc3QgY2F0Y2ggNCIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgp LioiIFwKLSsgICJzdGVwIGludG8gZmluaXNoIG1ldGhvZCIKLSsKLStnZGJfdGVzdCAiZmluaXNo IiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDIiCi0rCi0rZ2RiX3Rlc3Qg Im5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0IHBhc3Qg Y2F0Y2ggNSIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwK LSsgICJzdGVwIGludG8gZmluaXNoLCBmb3IgdW50aWwiCi0rCi0rZ2RiX3Rlc3QgInVudGlsIiBc Ci0rICAiLipjYXRjaCAuaW50IHguKiIgXAotKyAgInVudGlsIHdpdGggbm8gYXJndW1lbnQgMSIK LSsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyIGZvciB1bnRpbCIgJHRl c3RmaWxlLmNjXQotKwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAotKyAgIi4qZnVuY3Rpb24x ICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNiIKLSsKLStnZGJfdGVzdCAidW50aWwiIFwK LSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJ1bnRpbCB3aXRoIG5vIGFyZ3VtZW50IDIiCi0r Ci0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgInVudGlsIGhlcmUiICR0ZXN0ZmlsZS5j Y10KLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAoKS4qIiBc Ci0rICAibmV4dCBwYXN0IGNhdGNoIDYiCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1 bmN0aW9uMSAoKS4qIiBcCi0rICAic3RlcCBpbnRvIHVudGlsIgotKwotK2dkYl90ZXN0ICJ1bnRp bCAkbGluZSIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgInVudGlsLW92ZXItdGhyb3ci Ci0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMudW50aWwgKCkuKiIgXAot KyAgIm5leHQgcGFzdCBjYXRjaCA3IgotKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5j dGlvbjEgKCkuKiIgXAotKyAgInN0ZXAgaW50byB1bnRpbCwgZm9yIGFkdmFuY2UiCi0rCi0rZ2Ri X3Rlc3QgImFkdmFuY2UgJGxpbmUiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJhZHZh bmNlLW92ZXItdGhyb3ciCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5qYXZhL2pucGUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVz dHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwCTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICsw MTAwCi1AQCAtMCwwICsxLDc0IEBACi0rIyBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0r bG9hZF9saWIgImphdmEuZXhwIgotKwotK3NldCB0ZXN0ZmlsZSAiam5wZSIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5qYXZhCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfQotK2lmICB7IFtjb21waWxlX2phdmFfZnJvbV9zb3VyY2UgJHtzcmNkaXJ9LyRzdWJk aXIvJHtzcmNmaWxlfSAke2JpbmZpbGV9ICItZyJdICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSAke3NyY2Rpcn0vJHN1YmRpci8ke3NyY2ZpbGV9IgotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotKwotK2dkYl9leGl0Ci0r Z2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xv YWQgJHtiaW5maWxlfQotKwotK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhayBo ZXJlIiAkdGVzdGZpbGUuamF2YV0KLStnZGJfdGVzdCAiYnJlYWsgJHRlc3RmaWxlLmphdmE6JGxp bmUiICIiCi0rCi0rZ2RiX3Rlc3QgInJ1biIgXAotKyAgIi8vIGJyZWFrIGhlcmUuKiIgXAotKyAg InJ1biBqYXZhIG5leHQtb3Zlci10aHJvdyIKLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhl IG5lZWRlZCB1bndpbmRlciBob29rcy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRpcGxlICJw cmludCBfVW53aW5kX0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEi IHsKLSsgICAgLXJlICI9IC4qX1Vud2luZF9EZWJ1Z0hvb2suKlxyXG4kZ2RiX3Byb21wdCAkIiB7 Ci0rCXBhc3MgImNoZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEiCi0rICAgIH0KLSsgICAg LXJlICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0Lj9cclxuJGdkYl9wcm9tcHQgJCIg ewotKwkjIFBhc3MgdGhlIHRlc3Qgc28gd2UgZG9uJ3QgZ2V0IGJvZ3VzIGZhaWxzIGluIHRoZSBy ZXN1bHRzLgotKwlzZXR1cF94ZmFpbCAqLSotKgotKwlmYWlsICJjaGVjayBmb3IgdW53aW5kZXIg aG9vayBpbiBqYXZhIgotKwlzZXQgb2sgMAotKyAgICB9Ci0rfQotK2lmIHshJG9rfSB7Ci0rICAg IHVudGVzdGVkIGpucGUuZXhwCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAiaGFu ZGxlIFNJR1NFR1Ygbm9zdG9wIG5vcHJpbnQiIFwKLSsgICJTSUdTRUdWLipmYXVsdCIgXAotKyAg ImRpc2FibGUgU0lHU0VHViBmb3IgbmV4dC1vdmVyLU5QRSIKLSsKLSsjIFRoZSBsaW5lIHdoZXJl IHdlIHN0b3AgZGlmZmVyIGFjY29yZGluZyB0byBnY2o7IGNoZWNrIGp1c3Qgd2UgZGlkIG5vdCBh bHJlYWR5Ci0rIyBleGVjdXRlIHRoZSBjYXRjaCBwb2ludC4KLSsKLStnZGJfdGVzdCAibmV4dCIg XAotKyAgIiIgXAotKyAgIm5leHQgb3ZlciBOUEUiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgImNhdGNoIHBvaW50Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiY2F0Y2ggcG9pbnQiICIuKi8vIGNhdGNoIHBvaW50LioiCi1JbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuamF2YQotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmphdmEJMjAxMC0xMS0x NyAwMjozOToxOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMzggQEAKLSsvLyBUZXN0IG5l eHQtb3Zlci1OUEUuCi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsgICAqLwot KwotK3B1YmxpYyBjbGFzcyBqbnBlCi0rewotKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgbnBlICgp Ci0rICB7Ci0rICAgIHJldHVybiAoKE9iamVjdCkgbnVsbCkudG9TdHJpbmcoKTsKLSsgIH0KLSsK LSsgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKQotKyAgewotKyAgICB0 cnkKLSsgICAgICB7Ci0rCVN5c3RlbS5vdXQucHJpbnRsbiAobnBlICgpKTsgLy8gYnJlYWsgaGVy ZQotKyAgICAgIH0KLSsgICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG4pCi0rICAgICAg ewotKwlTeXN0ZW0ub3V0LnByaW50bG4gKCJzdWNjZXNzIik7IC8vIGNhdGNoIHBvaW50Ci0rICAg ICAgfQotKyAgfQotK30KCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDI2 MTBkNDguLmUyOTI2NzMgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0y MywxMSArMjMsMTEgQEAgTmFtZTogZ2RiJXs/X3dpdGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVy c2lvbiB0byBjb250ZW50cyBvZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIg dmVyc2lvbnMgYXJlIG51bWJlcmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4z CiAjIGFuZCwgc2luY2UgSmFudWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hv dHMsIGxpa2UgNi4zLjUwLjIwMDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSks IG9yIDYuMy4wLjIwMDQwMTEyIChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9u OiA3LjIuNTAuMjAxMDExMTcKK1ZlcnNpb246IDcuMi41MC4yMDEwMTIzMQogCiAjIFRoZSByZWxl YXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBh dCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkg cnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDQl ez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQorUmVsZWFzZTogNSV7P193aXRoX3Vw c3RyZWFtOi51cHN0cmVhbX0le2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdp dGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBH UEwrIGFuZCBMR1BMdjIrIGFuZCBHRkRMIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3Vw OiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTIwMywxMSArMjAzLDYgQEAgUGF0Y2gxNjk6IGdk Yi02LjMtaWE2NC1zaWdpbGwtMjAwNTExMTUucGF0Y2gKICM9cHVzaCt3b3JrOiBUaGVyZSB3YXMg c29tZSBtYWlsIHRocmVhZCBhYm91dCBpdCwgdGhpcyBwYXRjaCBtYXkgYmUgYSBoYWNrLgogUGF0 Y2gxODg6IGdkYi02LjUtYnoyMDM2NjEtZW1pdC1yZWxvY3MucGF0Y2gKIAotIyBTZWN1cml0eSBw YXRjaDogYXZvaWQgc3RhY2sgb3ZlcmZsb3dzIGluIGR3YXJmIGV4cHJlc3Npb24gY29tcHV0YXRp b24uCi0jIENWRS0yMDA2LTQxNDYKLSM9cHVzaAotUGF0Y2gxOTA6IGdkYi02LjUtZHdhcmYtc3Rh Y2stb3ZlcmZsb3cucGF0Y2gKLQogIyBTdXBwb3J0IFRMUyBzeW1ib2xzICgrYGVycm5vJyBzdWdn ZXN0aW9uIGlmIG5vIHB0aHJlYWQgaXMgZm91bmQpIChCWiAxODUzMzcpLgogIz1wdXNoK3dvcms6 IEl0IHNob3VsZCBiZSByZXBsYWNlZCBieSBleGlzdGluZyB1bmNvbW1pdHRlZCBSb2xhbmQncyBn bGliYyBwYXRjaCBmb3IgVExTIHdpdGhvdXQgbGlicHRocmVhZHMuCiBQYXRjaDE5NDogZ2RiLTYu NS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaApAQCAtMjcy LDEwICsyNjcsNiBAQCBQYXRjaDIzNDogZ2RiLTYuNi1iejIzMDAwMC1wb3dlcjYtZGlzYXNzZW1i bHktdGVzdC5wYXRjaAogIz1wdXNoK3dvcms6IFVwc3RyZWFtIHNob3VsZCBoYXZlIGJhY2t3YXJk IGNvbXBhdC4gQVBJOiBsaWJjLWFscGhhOiA8MjAwNzAxMjcxMDQ1MzkuR0E5NDQ0QC4qPgogUGF0 Y2gyMzU6IGdkYi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2gKIAotIyBGaXggZGVidWdn aW5nIEdEQiBpdHNlbGYgLSB0aGUgY29tcGlsZWQgaW4gc291cmNlIGZpbGVzIHBhdGhzIChCWiAy MjU3ODMpLgotIz1wdXNoCi1QYXRjaDI0MTogZ2RiLTYuNi1iejIyNTc4My1nZGItZGVidWdpbmZv LXBhdGhzLnBhdGNoCi0KICMgQWxsb3cgcnVubmluZyBgL3Vzci9iaW4vZ2NvcmUnIHdpdGggcHJv dmlkZWQgYnV0IGluYWNjZXNzaWJsZSB0dHkgKEJaIDIyOTUxNykuCiAjPWZlZG9yYXRlc3QKIFBh dGNoMjQ1OiBnZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2gKQEAg LTI5MiwxMCArMjgzLDYgQEAgUGF0Y2gyNTQ6IGdkYi02LjYtdGVzdHN1aXRlLXRpbWVvdXRzLnBh dGNoCiAjPWZlZG9yYXRlc3QKIFBhdGNoMjU4OiBnZGItNi42LWJ6MjM3NTcyLXBwYy1hdG9taWMt c2VxdWVuY2UtdGVzdC5wYXRjaAogCi0jIExpbmsgd2l0aCBsaWJyZWFkbGluZSBwcm92aWRlZCBi eSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KLSM9cHVzaAotUGF0Y2gyNjE6IGdkYi02LjYtcmVhZGxp bmUtc3lzdGVtLnBhdGNoCi0KICMgVGVzdCBrZXJuZWwgVkRTTyBkZWNvZGluZyB3aGlsZSBhdHRh Y2hpbmcgdG8gYW4gaTM4NiBwcm9jZXNzLgogIz1mZWRvcmF0ZXN0CiBQYXRjaDI2MzogZ2RiLTYu My1hdHRhY2gtc2VlLXZkc28tdGVzdC5wYXRjaApAQCAtNTE2LDE0ICs1MDMsNiBAQCBQYXRjaDUx MDogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1LnBhdGNoCiAjPXB1c2gKIFBhdGNoNTEx OiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTVvZjUucGF0Y2gKIAotIyBGaXggY3Jhc2ggb24g Q1RSTC1DIHdoaWxlIHJlYWRpbmcgYW4gRUxGIHN5bWJvbCBmaWxlIChCWiA2NDI4NzkpLgotIz1w dXNoCi1QYXRjaDUyMDogZ2RiLWJ6NjQyODc5LWVsZnJlYWQtc2lnaW50LXN0YWxlLnBhdGNoCi0K LSMgRml4IG5leHQvZmluaXNoL2V0YyAtdnMtIGV4Y2VwdGlvbnMgKFRvbSBUcm9tZXkpLgotIz1w dXNoCi1QYXRjaDUyNTogZ2RiLW5leHQtb3Zlci10aHJvdy5wYXRjaAotCiAjIFZlcmlmeSBHREIg UHl0aG9uIGJ1aWx0LWluIGZ1bmN0aW9uIGdkYi5zb2xpYl9hZGRyZXNzIGV4aXN0cyAoQlogIyA2 MzQxMDgpLgogUGF0Y2g1MjY6IGdkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNoCiAKQEAg LTY4OSw3ICs2NjgsNiBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpj LWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gxNjQgLXAxCiAlcGF0Y2gxNjkgLXAxCiAlcGF0Y2gx ODggLXAxCi0lcGF0Y2gxOTAgLXAxCiAlcGF0Y2gxOTQgLXAxCiAlcGF0Y2gxOTYgLXAxCiAlcGF0 Y2gxOTkgLXAxCkBAIC03MDUsMTMgKzY4MywxMSBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20y LWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gyMzEgLXAxCiAlcGF0Y2gy MzQgLXAxCiAlcGF0Y2gyMzUgLXAxCi0lcGF0Y2gyNDEgLXAxCiAlcGF0Y2gyNDUgLXAxCiAlcGF0 Y2gyNDcgLXAxCiAlcGF0Y2gyNTQgLXAxCiAlcGF0Y2gyNTggLXAxCiAlcGF0Y2gyNjAgLXAxCi0l cGF0Y2gyNjEgLXAxCiAlcGF0Y2gyNjMgLXAxCiAlcGF0Y2gyNjUgLXAxCiAlcGF0Y2gyNjYgLXAx CkBAIC03NjgsOCArNzQ0LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIv b2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNTA0IC1wMQogJXBhdGNoNTEwIC1wMQogJXBh dGNoNTExIC1wMQotJXBhdGNoNTIwIC1wMQotJXBhdGNoNTI1IC1wMQogJXBhdGNoNTI2IC1wMQog CiAlcGF0Y2gzOTMgLXAxCkBAIC0xMTQ3LDYgKzExMjEsMTYgQEAgZmkKICVlbmRpZgogCiAlY2hh bmdlbG9nCisqIFNhdCBKYW4gIDEgMjAxMSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4gLSA3LjIuNTAuMjAxMDEyMzEtNS5mYzE1CistIFJlYmFzZSB0byBGU0YgR0RC IDcuMi41MC4yMDEwMTIzMSAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgorLSBSZW1vdmUg Z2RiLTYuMy1idC1wYXN0LXplcm8tMjAwNTEyMDEucGF0Y2gsIGdkYi1hcmNoZXItYWRhLnBhdGNo IGFuZAorICBnZGItNi4zLWZyYW1lcGN6ZXJvLTIwMDQwOTI3LnBhdGNoIGFscmVhZHkgcmVtb3Zl ZCBmcm9tIC5zcGVjIGJlZm9yZS4KKy0gUmVtb3ZlIGdkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZs b3cucGF0Y2gsIHVwc3RyZWFtZWQgKFRvbSBUcm9tZXkpLgorLSBSZW1vdmUgZ2RiLTYuNi1iejIy NTc4My1nZGItZGVidWdpbmZvLXBhdGhzLnBhdGNoLCB1cHN0cmVhbWVkIChUb20gVHJvbWV5KS4K Ky0gUmVtb3ZlIGdkYi02LjYtcmVhZGxpbmUtc3lzdGVtLnBhdGNoLCByZWltcGxlbWVudGVkIHVw c3RyZWFtIChUb20gVHJvbWV5KS4KKy0gUmVtb3ZlIGdkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2lu dC1zdGFsZS5wYXRjaCwgdXBzdHJlYW1lZCAoSmFuIEtyYXRvY2h2aWwpLgorLSBSZW1vdmUgZ2Ri LW5leHQtb3Zlci10aHJvdy5wYXRjaCwgdXBzdHJlYW1lZCAoVG9tIFRyb21leSkuCisKICogTW9u IERlYyAyNyAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAt IDcuMi41MC4yMDEwMTExNy00LmZjMTUKIC0gUHJvdmlkZSBzdHViICUle19zeXNjb25mZGlyfS9n ZGJpbml0IChCWiA2NTEyMzIpLgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5k ZXggYzVlYjlkZS4uMWQxMTliNiAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBA IC0xICsxIEBACi1iMTMxNDNjN2M3ZTcwZjkyOWM4NmMzZjM2MzI0NzkwOSAgZ2RiLTcuMi41MC4y MDEwMTExNy50YXIuYnoyCitiYWMzNjE0MzQ4MzBkZGMzZTgzYzQwZTE4N2I2MGE5NiAgZ2RiLTcu Mi41MC4yMDEwMTIzMS50YXIuYnoyCg==