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: Kaleb S. KEITHLEY To: git-commits@fedoraproject.org Subject: [rpms/libntirpc] rawhide: (lib)ntirpc 10.0 GA Date: Sat, 20 Jun 2026 09:15:31 GMT Message-ID: <178194693110.1.15418444226491375946.rpms-libntirpc-324edfe64d63@fedoraproject.org> List-ID: X-Git-Repo: rpms/libntirpc X-Git-Branch: rawhide X-Git-Rev: 324edfe64d63fa547b357a86da7d7af0e9e1ab6f QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbGlibnRpcnBjCkJy YW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogMzI0ZWRmZTY0ZDYzZmE1NDdiMzU3YTg2ZGE3ZDdhZjBl OWUxYWI2ZgpBdXRob3IgOiBLYWxlYiBTLiBLRUlUSExFWSA8a2tlaXRobGVAcmVkaGF0LmNvbT4K RGF0ZSAgIDogMjAyNi0wNi0yMFQwNToxNTowMS0wNDowMApTdGF0cyAgOiArNi8tMzA5MCBpbiA0 IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9saWJu dGlycGMvYy8zMjRlZGZlNjRkNjNmYTU0N2IzNTdhODZkYTdkN2FmMGU5ZTFhYjZmP2JyYW5jaD1y YXdoaWRlCgpMb2c6CihsaWIpbnRpcnBjIDEwLjAgR0EKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1D TWFrZUxpc3RzLnR4dC5wYXRjaCBiLzAwMDEtQ01ha2VMaXN0cy50eHQucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYTM3Y2MuLjAwMDAwMDAKLS0tIGEvMDAwMS1DTWFrZUxp c3RzLnR4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS0tLSBudGlycGMt Ny4yL0NNYWtlTGlzdHMudHh0Lm9yaWcJMjAyNi0wMy0xOCAxMToyNDowMC4xMjU3MTYwNjQgLTA0 MDAKLSsrKyBudGlycGMtNy4yL0NNYWtlTGlzdHMudHh0CTIwMjYtMDMtMTggMTE6NDU6NDAuMzU5 NDcwNDM2IC0wNDAwCi1AQCAtMiw3ICsyLDcgQEAKLSAKLSAjIEN1cnJlbnQgdmVyc2lvbiBhcyBv ZiBGZWRvcmEgMTYuICBOb3QgdGVzdGVkIHdpdGggZWFybGllci4KLSAKLS1jbWFrZV9taW5pbXVt X3JlcXVpcmVkKFZFUlNJT04gMi42LjMpCi0rY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9O IDMuNS4wLi4uNC4wKQotIAotIHNldChDTUFLRV9NT0RVTEVfUEFUSCAke0NNQUtFX01PRFVMRV9Q QVRIfSAiJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzLyIpCi0gCi1AQCAtMjM3LDE0 ICsyMzgsNiBAQAotICAgJHtTWVNURU1fTElCUkFSSUVTfQotICkKLSAKLS1pZiAoTk9UIEJTREJB U0VEKQotLSAgZmluZF9wYWNrYWdlKE5TTCkgIyBzb2NrZXRzCi0tICBzZXQoU1lTVEVNX0xJQlJB UklFUwotLSAgICAke1NZU1RFTV9MSUJSQVJJRVN9Ci0tICAgICR7TlNMX0xJQlJBUll9Ci0tICAp Ci0tZW5kaWYgKE5PVCBCU0RCQVNFRCkKLS0KLSBzZXQoTElCTlRJUlBDX01BUCAiJHtQUk9KRUNU X0JJTkFSWV9ESVJ9L3NyYy9saWJudGlycGMubWFwIikKLSAjIHN1YnN0IGZpbGVzIChuZWVkIGFk ZF9jdXN0b21fY29tbWFuZCBmb3IgZGVwZW5kZW5jeSwgZnlpKQotIGNvbmZpZ3VyZV9maWxlKAoK ZGlmZiAtLWdpdCBhLzAwMDItNy4ycGx1cy5wYXRjaCBiLzAwMDItNy4ycGx1cy5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFjZjhhZC4uMDAwMDAwMAotLS0gYS8wMDAyLTcu MnBsdXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDU5ICswLDAgQEAKLWRpZmYgLXVyIG50 aXJwYy03LjIvQ01ha2VMaXN0cy50eHQgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4 OGZjZDg3NmVjYmQ2MzMvQ01ha2VMaXN0cy50eHQKLS0tLSBudGlycGMtNy4yL0NNYWtlTGlzdHMu dHh0CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMz Y2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvQ01ha2VMaXN0cy50eHQJMjAyNi0w Ni0xMSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC0zNiwxOCArMzcsNyBAQAotIAotIHNl dChDTUFLRV9QT1NJVElPTl9JTkRFUEVOREVOVF9DT0RFIE9OKQotIAotLSMgSW5zdGFsbCBkZXN0 aW5hdGlvbiwgaWYgYnVpbHQgc3RhbmRhbG9uZQotLWdldF9wcm9wZXJ0eShVU0VfTElCNjQgR0xP QkFMIFBST1BFUlRZIEZJTkRfTElCUkFSWV9VU0VfTElCNjRfUEFUSFMpCi0taWYgKFVTRV9MSUI2 NCkKLS0Jc2V0KExJQl9JTlNUQUxMX0RJUiBsaWI2NCBDQUNIRSBQQVRICi0tCQkiU3BlY2lmeSBu YW1lIG9mIGxpYmRpciBpbnNpZGUgaW5zdGFsbCBwYXRoIikKLS1lbHNlIChVU0VfTElCNjQpCi0t CXNldChMSUJfSU5TVEFMTF9ESVIgbGliIENBQ0hFIFBBVEgKLS0JCSJTcGVjaWZ5IG5hbWUgb2Yg bGliZGlyIGluc2lkZSBpbnN0YWxsIHBhdGgiKQotLWVuZGlmIChVU0VfTElCNjQpCi0tCi0tc2V0 KFNZU1RFTV9MSUJSQVJJRVMgJHtTWVNURU1fTElCUkFSSUVTfSkKLS1zZXQoQklOQVJZX0xJQlJB UklFUyAke0JJTkFSWV9MSUJSQVJJRVN9KQotK2luY2x1ZGUoR05VSW5zdGFsbERpcnMpCi0gCi0g aW5jbHVkZShHZXRHaXRSZXZpc2lvbkRlc2NyaXB0aW9uKQotIGdldF9naXRfaGVhZF9yZXZpc2lv bihHSVRfUkVGU1BFQyBfR0lUX0hFQURfQ09NTUlUKQotQEAgLTMyNCwyMSArMzA2LDE5IEBACi0g ZW5kaWYgKE5PVCBUQVJHRVQgZGlzdCkKLSAKLSBpZiAoTk9UIFRBUkdFVCBycG0pCi0tYWRkX2N1 c3RvbV90YXJnZXQoIHJwbSBERVBFTkRTIGRpc3QpCi0tYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdF VCBycG0KLSthZGRfY3VzdG9tX3RhcmdldCggcnBtCi0gICAgICAgICAgICAgICAgICAgQ09NTUFO RCBzaCAtYyAicnBtYnVpbGQgLXRhICR7UEtHX05BTUV9IgotIAkJICBWRVJCQVRJTQotIAkJICBE RVBFTkRTIGRpc3QpCi0gCi0gc2V0KFJQTURFU1QgIi0tZGVmaW5lICdfc3JjcnBtZGlyICR7Q01B S0VfQ1VSUkVOVF9CSU5BUllfRElSfSciKQotLWFkZF9jdXN0b21fdGFyZ2V0KCBzcnBtIERFUEVO RFMgZGlzdCkKLS1hZGRfY3VzdG9tX2NvbW1hbmQoVEFSR0VUIHNycG0KLSthZGRfY3VzdG9tX3Rh cmdldCggc3JwbQotICAgICAgICAgICAgICAgICAgIENPTU1BTkQgc2ggLWMgInJwbWJ1aWxkICR7 UlBNREVTVH0gLXRzICR7UEtHX05BTUV9IgotIAkJICBWRVJCQVRJTQotIAkJICBERVBFTkRTIGRp c3QpCi0gZW5kaWYgKE5PVCBUQVJHRVQgcnBtKQotICMjIyMjIyMjIyMjIGluc3RhbGwgZmlsZXMg IyMjIyMjIyMjIyMjIyMjCi0gCi0taW5zdGFsbChGSUxFUyAgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9 L2xpYm50aXJwYy5wYyBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0vcGtnY29uZmlnKQot LWluc3RhbGwoRElSRUNUT1JZICAke05USVJQQ19CQVNFX0RJUn0vbnRpcnBjIERFU1RJTkFUSU9O IGluY2x1ZGUpCi0taW5zdGFsbChGSUxFUyAgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L250aXJwYy92 ZXJzaW9uLmggREVTVElOQVRJT04gaW5jbHVkZS9udGlycGMpCi0raW5zdGFsbChGSUxFUyAgJHtQ Uk9KRUNUX0JJTkFSWV9ESVJ9L2xpYm50aXJwYy5wYyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RB TExfTElCRElSfS9wa2djb25maWcpCi0raW5zdGFsbChESVJFQ1RPUlkgICR7TlRJUlBDX0JBU0Vf RElSfS9udGlycGMgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9KQotK2lu c3RhbGwoRklMRVMgICR7UFJPSkVDVF9CSU5BUllfRElSfS9udGlycGMvdmVyc2lvbi5oIERFU1RJ TkFUSU9OICR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS9udGlycGMpCi1Pbmx5IGluIG50aXJw Yy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzOiAuZ2l0aHViCi1kaWZm IC11ciBudGlycGMtNy4yL2xpYm50aXJwYy5wYy5pbi5jbWFrZSBudGlycGMtYmIzMzNjY2EyZjRh ZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9saWJudGlycGMucGMuaW4uY21ha2UKLS0tLSBu dGlycGMtNy4yL2xpYm50aXJwYy5wYy5pbi5jbWFrZQkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAw MDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZl Y2JkNjMzL2xpYm50aXJwYy5wYy5pbi5jbWFrZQkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAw MCAtMDQwMAotQEAgLTEsNiArMSw2IEBACi0gcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BSRUZJWEAK LSBleGVjX3ByZWZpeD0ke3ByZWZpeH0KLS1saWJkaXI9JHtwcmVmaXh9L0BMSUJfSU5TVEFMTF9E SVJACi0rbGliZGlyPSR7cHJlZml4fS9AQ01BS0VfSU5TVEFMTF9MSUJESVJACi0gaW5jbHVkZWRp cj0ke3ByZWZpeH0vaW5jbHVkZS9udGlycGMKLSAKLSBOYW1lOiBsaWJudGlycGMKLWRpZmYgLXVy IG50aXJwYy03LjIvbnRpcnBjL2x0dG5nL250aXJwY190cmFjZXMuaCBudGlycGMtYmIzMzNjY2Ey ZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9udGlycGMvbHR0bmcvbnRpcnBjX3RyYWNl cy5oCi0tLS0gbnRpcnBjLTcuMi9udGlycGMvbHR0bmcvbnRpcnBjX3RyYWNlcy5oCTIwMjUtMDkt MjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlm MWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvbnRpcnBjL2x0dG5nL250aXJwY190cmFjZXMuaAkyMDI2 LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTMyLDYgKzMyLDEyIEBACi0gI2Rl ZmluZSBfX1MyKHgpIF9fUzEoeCkKLSAjZGVmaW5lIExJTkVfQVNfU1RSSU5HIF9fUzIoX19MSU5F X18pCi0gCi0rI2lmbmRlZiBVTlVTRUQKLSsjZGVmaW5lIFVOVVNFRF9BVFRSIF9fYXR0cmlidXRl X18oKHVudXNlZCkpCi0rI2RlZmluZSBVTlVTRUQoLi4uKSBVTlVTRURfKF9fVkFfQVJHU19fKQot KyNkZWZpbmUgVU5VU0VEXyhhcmcpIE5PVF9VU0VEXyMjYXJnIFVOVVNFRF9BVFRSCi0rI2VuZGlm Ci0rCi0gI2lmZGVmIFVTRV9MVFROR19OVElSUEMKLSAKLSAjaW5jbHVkZSAibHR0bmdfZ2VuZXJh dG9yLmgiCi1AQCAtNTcsNyArNjMsNyBAQAotIAotIC8qIFdlIGNhbGwgdGhlIGVtcHR5IGZ1bmN0 aW9uIHdpdGggdGhlIHZhcmlhYmxlIGFyZ3MgdG8gYXZvaWQgdW51c2VkIHZhcmlhYmxlcwotICAq IHdhcm5pbmcgd2hlbiBMVFRORyB0cmFjZXMgYXJlIGRpc2FibGVkICovCi0tc3RhdGljIHZvaWQg aW5saW5lIG50aXJwY19lbXB0eV9mdW5jdGlvbihjb25zdCBjaGFyKiB1bnVzZWQsIC4uLikge30K LStzdGF0aWMgdm9pZCBpbmxpbmUgbnRpcnBjX2VtcHR5X2Z1bmN0aW9uKGNvbnN0IGNoYXIqIFVO VVNFRCh1bnVzZWQpLCAuLi4pIHt9Ci0gCi0gI2RlZmluZSBOVElSUENfQVVUT19UUkFDRVBPSU5U KHByb3ZfbmFtZSwgZXZlbnRfbmFtZSwgbG9nX2xldmVsLCAuLi4pIFwKLSAJCW50aXJwY19lbXB0 eV9mdW5jdGlvbigidW51c2VkIiwgIyNfX1ZBX0FSR1NfXykKLUBAIC03NCw0ICs4MCw0IEBACi0g I2VuZGlmIC8qIFRQX0lOVF9BUlIgKi8KLSAKLSAjZW5kaWYgLy8gVVNFX0xUVE5HX05USVJQQwot LSNlbmRpZiAvLyBfX05USVJQQ19UUkFDRVNfSF9fCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKLSsjZW5kaWYgLy8gX19OVElSUENfVFJBQ0VTX0hfXwotZGlmZiAtdXIgbnRpcnBjLTcuMi9u dGlycGMvcnBjL2NsbnQuaCBudGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2 ZWNiZDYzMy9udGlycGMvcnBjL2NsbnQuaAotLS0tIG50aXJwYy03LjIvbnRpcnBjL3JwYy9jbG50 LmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBudGlycGMtYmIzMzNj Y2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9udGlycGMvcnBjL2NsbnQuaAkyMDI2 LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTExNSw2ICsxMTUsNyBAQAotIAlt dXRleF90IGNsX2xvY2s7CS8qIHNlcmlhbGl6ZSBwcml2YXRlIGRhdGEgKi8KLSAJc3RydWN0IHJw Y19lcnIgY2xfZXJyb3I7IC8qIHNwZWNpZmljIGVycm9yIGNvZGUgKi8KLSAJaW50MzJfdCBjbF9y ZWZjbnQ7CS8qIGhhbmRsZSByZWZlcmVuY2UgY291bnQgKi8KLSsJYm9vbCByZG1hX2NsbnQ7CQkv KiB0cmFuc3BvcnQgcmRtYSAqLwotIAl1aW50MTZfdCBjbF9mbGFnczsJLyogc3RhdGUgZmxhZ3Mg Ki8KLSAKLSB9IENMSUVOVDsKLUBAIC00NTcsOSArNDU4LDI3IEBACi0gICogR2VuZXJpYyBUTEkg Y3JlYXRlIHJvdXRpbmUuIE9ubHkgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkuCi0gICovCi0g Ci0tZXh0ZXJuIENMSUVOVCAqY2xudF90bGlfbmNyZWF0ZShjb25zdCBpbnQsIGNvbnN0IHN0cnVj dCBuZXRjb25maWcgKiwKLS0JCQkJc3RydWN0IG5ldGJ1ZiAqLCBjb25zdCBycGNwcm9nX3QsCi0t CQkJCWNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgdV9pbnQsIGNvbnN0IHVfaW50KTsKLStleHRlcm4g Q0xJRU5UICpjbG50X3RsaV9uY3JlYXRlX29wdChjb25zdCBpbnQsIGNvbnN0IHN0cnVjdCBuZXRj b25maWcgKiwKLSsJCQkJICAgIHN0cnVjdCBuZXRidWYgKiwgc3RydWN0IG5ldGJ1ZiAqLAotKwkJ CQkgICAgY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJzX3QsCi0rCQkJCSAgICBjb25zdCB1 X2ludCwgY29uc3QgdV9pbnQsIGludCk7Ci0rCi0rc3RhdGljIGlubGluZSBDTElFTlQgKgotK2Ns bnRfdGxpX25jcmVhdGUoaW50IGZkLCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZiwKLSsJ CSBzdHJ1Y3QgbmV0YnVmICpiaW5kYWRkciwgc3RydWN0IG5ldGJ1ZiAqc3ZjYWRkciwKLSsJCSBy cGNwcm9nX3QgcHJvZywgcnBjdmVyc190IHZlcnMsCi0rCQkgdV9pbnQgc2VuZHN6LCB1X2ludCBy ZWN2c3opCi0rewotKyNpZmRlZiBTT0xfSVBWNgotKwlpbnQgb3B0cyA9IElQVjZfVjZPTkxZOwot KyNlbHNlCi0rCWludCBvcHRzID0gMDsKLSsjZW5kaWYKLSsKLSsJcmV0dXJuIGNsbnRfdGxpX25j cmVhdGVfb3B0KGZkLCBuY29uZiwgYmluZGFkZHIsIHN2Y2FkZHIsIHByb2csIHZlcnMsCi0rCQkJ CSAgICBzZW5kc3osIHJlY3Zzeiwgb3B0cyk7Ci0rfQotKwotIC8qCi0gICogY29uc3QgcmVnaXN0 ZXIgaW50IGZkOyAgLS0gZmQKLSAgKiBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZjsgLS0g bmV0Y29uZmlnIHN0cnVjdHVyZQotQEAgLTQ4OSw2ICs1MDgsMTMgQEAKLSAJCQkJY29uc3QgcnBj cHJvZ190LCBjb25zdCBycGN2ZXJzX3QsCi0gCQkJCWNvbnN0IHVfaW50LCBjb25zdCB1X2ludCwg Y29uc3QgdWludDMyX3QpOwotIAotKyNpZmRlZiBVU0VfUlBDX1JETUEKLStDTElFTlQgKgotK2Ns bnRfcmRtYV9jcmVhdGUoaW50IGZkLCBjaGFyICpob3N0LCBpbnQgcG9ydCwgaW50IHJlY3Zfc3os Ci0rICAgIGludCBzZW5kX3N6LCBpbnQgcGFnZV9zeiwgY29uc3QgcnBjcHJvZ190IHByb2csCi0r ICAgIGNvbnN0IHJwY3ZlcnNfdCB2ZXJzLCBjb25zdCB1aW50MzJfdCBmbGFncyk7Ci0rI2VuZGlm Ci0rCi0gc3RhdGljIGlubGluZSBDTElFTlQgKgotIGNsbnRfdmNfbmNyZWF0ZShjb25zdCBpbnQg ZmQsIGNvbnN0IHN0cnVjdCBuZXRidWYgKnJhZGRyLAotIAkJY29uc3QgcnBjcHJvZ190IHByb2cs IGNvbnN0IHJwY3ZlcnNfdCB2ZXJzLAotQEAgLTUwMyw2ICs1MjksMTEgQEAKLSAgKi8KLSBleHRl cm4gQ0xJRU5UICpjbG50X3ZjX25jcmVhdGVfc3ZjKGNvbnN0IFNWQ1hQUlQgKiwgY29uc3QgcnBj cHJvZ190LAotIAkJCQkgICBjb25zdCBycGN2ZXJzX3QsIGNvbnN0IHVpbnQzMl90KTsKLSsKLSsj aWYgZGVmaW5lZChfVVNFX05GU19SRE1BKSB8fCBkZWZpbmVkKFVTRV9SUENfUkRNQSkKLStleHRl cm4gQ0xJRU5UICpjbG50X3JkbWFfbmNyZWF0ZWYoY29uc3QgU1ZDWFBSVCAqLCBjb25zdCBycGNw cm9nX3QsCi0rCQkJCSAgY29uc3QgcnBjdmVyc190LCBjb25zdCB1aW50MzJfdCwgYm9vbCk7Ci0r I2VuZGlmCi0gLyoKLSAgKiAgICAgIGNvbnN0IFNWQ1hQUlQgKnhwcnQ7ICAgICAgICAgICAgICAg ICAgICAtLSBhY3RpdmUgc2VydmljZSB4cHJ0Ci0gICogICAgICBjb25zdCBycGNwcm9nX3QgcHJv ZzsgICAgICAgICAgICAgICAgICAgLS0gUlBDIHByb2dyYW0gbnVtYmVyCi1kaWZmIC11ciBudGly cGMtNy4yL250aXJwYy9ycGMvaGFwcm94eS5oIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNl NjkzODhmY2Q4NzZlY2JkNjMzL250aXJwYy9ycGMvaGFwcm94eS5oCi0tLS0gbnRpcnBjLTcuMi9u dGlycGMvcnBjL2hhcHJveHkuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAot KysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL250aXJw Yy9ycGMvaGFwcm94eS5oCTIwMjYtMDYtMTEgMTQ6MTI6MTcuMDAwMDAwMDAwIC0wNDAwCi1AQCAt MzAsNiArMzAsMTMgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0rLyogQWRkaW5nIG1h Y3JvIGZvciBjb21wYXRpYmlsdHkgb2YgYysrIGNvbXBpbGF0aW9uICovCi0rI2lmZGVmIF9fY3Bs dXNwbHVzCi0rI2lmbmRlZiBfU3RhdGljX2Fzc2VydAotKyNkZWZpbmUgX1N0YXRpY19hc3NlcnQg c3RhdGljX2Fzc2VydAotKyNlbmRpZgotKyNlbmRpZgotKwotICNpZm5kZWYgX05USVJQQ19SUENf SEFQUk9YWV9ICi0gI2RlZmluZSBfTlRJUlBDX1JQQ19IQVBST1hZX0gKLSAKLUBAIC0xMjIsNiAr MTI5LDcgQEAKLSAJdWludDE2X3Qgc3JjX3BvcnQ7Ci0gCXVpbnQxNl90IGRzdF9wb3J0OwotIH07 Ci0rCi0gX1N0YXRpY19hc3NlcnQoCi0gCXNpemVvZihzdHJ1Y3QgcHJveHlfaGVhZGVyX2FkZHJf aXA0X3BhcnQpID09IFBQMl9BRERSX0xFTl9JTkVULAotIAkicHJveHlfaGVhZGVyX2FkZHJfaXA0 X3BhcnQgc2l6ZSBpcyBub3QgZXF1YWwgdG8gUFAyX0FERFJfTEVOX0lORVQiKTsKLUBAIC0xMzIs NiArMTQwLDcgQEAKLSAJdWludDE2X3Qgc3JjX3BvcnQ7Ci0gCXVpbnQxNl90IGRzdF9wb3J0Owot IH07Ci0rCi0gX1N0YXRpY19hc3NlcnQoCi0gCXNpemVvZihzdHJ1Y3QgcHJveHlfaGVhZGVyX2Fk ZHJfaXA2X3BhcnQpID09IFBQMl9BRERSX0xFTl9JTkVUNiwKLSAJInByb3h5X2hlYWRlcl9hZGRy X2lwNl9wYXJ0IHNpemUgaXMgbm90IGVxdWFsIHRvIFBQMl9BRERSX0xFTl9JTkVUNiIpOwotZGlm ZiAtdXIgbnRpcnBjLTcuMi9udGlycGMvcnBjL3JwYy5oIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5 ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL250aXJwYy9ycGMvcnBjLmgKLS0tLSBudGlycGMtNy4y L250aXJwYy9ycGMvcnBjLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKLSsr KyBudGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9udGlycGMv cnBjL3JwYy5oCTIwMjYtMDYtMTEgMTQ6MTI6MTcuMDAwMDAwMDAwIC0wNDAwCi1AQCAtOTEsOCAr OTEsMjYgQEAKLSAgKiBhbmQgcnBjYmluZCB1c2Ugb25seS4gRG8gbm90IHVzZSwgdGhleSBtYXkg Y2hhbmdlIHdpdGhvdXQgbm90aWNlLgotICAqLwotIF9fQkVHSU5fREVDTFMKLS1pbnQgX19ycGNf bmNvbmYyZmQoY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAqKTsKLS1pbnQgX19ycGNfbmNvbmYyZmRf ZmxhZ3MoY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAqLCBpbnQpOwotK2ludCBfX3JwY19uY29uZjJm ZF9mbGFnc19vcHQoY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAqLCBpbnQsIGludCk7Ci0rCi0rc3Rh dGljIGlubGluZSBpbnQKLStfX3JwY19uY29uZjJmZF9mbGFncyhjb25zdCBzdHJ1Y3QgbmV0Y29u ZmlnICpuY29uZiwgaW50IGZsYWdzKQotK3sKLSsjaWZkZWYgU09MX0lQVjYKLSsJaW50IG9wdHMg PSBJUFY2X1Y2T05MWTsKLSsjZWxzZQotKwlpbnQgb3B0cyA9IDA7Ci0rI2VuZGlmCi0rCi0rCXJl dHVybiBfX3JwY19uY29uZjJmZF9mbGFnc19vcHQobmNvbmYsIGZsYWdzLCBvcHRzKTsKLSt9Ci0r Ci0rc3RhdGljIGlubGluZSBpbnQKLStfX3JwY19uY29uZjJmZChjb25zdCBzdHJ1Y3QgbmV0Y29u ZmlnICpuY29uZikKLSt7Ci0rCXJldHVybiBfX3JwY19uY29uZjJmZF9mbGFncyhuY29uZiwgMCk7 Ci0rfQotKwotIGludCBfX3JwY19uY29uZjJzb2NraW5mbyhjb25zdCBzdHJ1Y3QgbmV0Y29uZmln ICosIHN0cnVjdCBfX3JwY19zb2NraW5mbyAqKTsKLSBpbnQgX19ycGNfZmQyc29ja2luZm8oaW50 LCBzdHJ1Y3QgX19ycGNfc29ja2luZm8gKik7Ci0gdV9pbnQgX19ycGNfZ2V0X3Rfc2l6ZShpbnQs IGludCwgaW50KTsKLWRpZmYgLXVyIG50aXJwYy03LjIvbnRpcnBjL3JwYy9zdmMuaCBudGlycGMt YmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9udGlycGMvcnBjL3N2Yy5o Ci0tLS0gbnRpcnBjLTcuMi9udGlycGMvcnBjL3N2Yy5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAw MDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3 NmVjYmQ2MzMvbnRpcnBjL3JwYy9zdmMuaAkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAt MDQwMAotQEAgLTE4MCw2ICsxODAsNyBAQAotICNkZWZpbmUgU1ZDX1hQUlRfRkxBR19SRU1PVEVf QUREUl9TRVQJMHgwMjAwCS8qIHJlbW90ZSBhZGRyIHdhcyBmaW5hbCBzZXQgKi8KLSAjZGVmaW5l IFNWQ19YUFJUX0ZMQUdfUkVBRFkJCTB4MDQwMAkvKiByZWFkeSB0byB1c2UgKi8KLSAjZGVmaW5l IFNWQ19YUFJUX0ZMQUdfSU9RX1dSSVRJTkcJMHgwODAwCS8qIHhwcnQgaXMgdXNlZCBieSBzdmNf aW9xX3dyaXRlICovCi0rI2RlZmluZSBTVkNfWFBSVF9GTEFHX05PX1NFVAkJMHgxMDAwICAvKiBk byBub3QgcmVnaXN0ZXIgd2l0aCBycGNiaW5kICovCi0gCi0gI2RlZmluZSBTVkNfWFBSVF9GTEFH X0RFU1RST1lFRCAoU1ZDX1hQUlRfRkxBR19ERVNUUk9ZSU5HIFwKLSAJCQkJfCBTVkNfWFBSVF9G TEFHX1JFTEVBU0lORykKLUBAIC0yNzIsNyArMjczLDExIEBACi0gCQlzdHJ1Y3QgewotIAkJCXN2 Y19yZXFfZnVuX3QgcHJvY2Vzc19jYjsKLSAJCQlzdmNfeHBydF9mdW5fdCByZW1vdGVfYWRkcl9z ZXRfY2I7Ci0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rCQl9Y29ubmVjdGlvbl9kaXNwYXRjaF9vcHM7 Ci0rI2Vsc2UKLSAJCX07Ci0rI2VuZGlmCi0gCQlzdmNfeHBydF9mdW5fdCByZW5kZXp2b3VzX2Ni OwotIAl9ICB4cF9kaXNwYXRjaDsKLSAJU1ZDWFBSVCAqeHBfcGFyZW50OwotQEAgLTMxNSw2ICsz MjAsOCBAQAotIAlpbnQgeHBfaWZpbmRleDsJCS8qIGludGVyZmFjZSBpbmRleCAqLwotIAlpbnQg eHBfc2lfdHlwZTsJCS8qIHNpIHR5cGUgKi8KLSAJaW50IHhwX3R5cGU7CQkvKiB4cHJ0IHR5cGUg Ki8KLSsJY2hhciAqeHBfaXA7CQkvKiByZW1vdGUgaXAgKi8KLSsJaW50IHhwX3BvcnQ7CQkvKiBy ZW1vdGUgcG9ydCAqLwotIAotIAlpbnQzMl90IHhwX3JlZmNudDsJLyogaGFuZGxlIHJlZmVyZW5j ZSBjb3VudCAqLwotIAl1aW50MTZfdCB4cF9mbGFnczsJLyogZmxhZ3MgKi8KLUBAIC0zMjcsNiAr MzM0LDEwIEBACi0gCQlzdHJ1Y3QgaW42X3BrdGluZm8gaW42OwotICNlbmRpZgotIAl9IHhwX3Br dGluZm87Ci0rCi0rCS8qIENsaWVudCBkZXRhaWxzIC0gSVAgQWRkcmVzcyAmIFBvcnQgKi8KLSsJ Y2hhciB4cF9jbG50X2FkZHJbSU5FVDZfQUREUlNUUkxFTl07Ci0rCXVpbnQxNl90IHhwX2NsbnRf cG9ydDsKLSB9OwotIAotICNkZWZpbmUgWFBSVF9GTVQgInhwcnQ6IFtwdHIgPSB7fSxmbGFncyA9 IHt9LGZkID0ge30sdHlwZSA9IHt9LHJlZmNudCA9IHt9XSIKLWRpZmYgLXVyIG50aXJwYy03LjIv bnRpcnBjL3JwYy94ZHIuaCBudGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2 ZWNiZDYzMy9udGlycGMvcnBjL3hkci5oCi0tLS0gbnRpcnBjLTcuMi9udGlycGMvcnBjL3hkci5o CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2Nh MmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvbnRpcnBjL3JwYy94ZHIuaAkyMDI2LTA2 LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTEyMyw3ICsxMjMsNyBAQAotIAlWSU9f REFUQSwgICAgICAgICAgICAgICAvKiBkYXRhIGJ1ZmZlciAqLwotIAlWSU9fVFJBSUxFUl9MRU4s CS8qIGxlbmd0aCBmaWVsZCBmb3IgZm9sbG93aW5nIFRSQUlMRVIgYnVmZmVyICovCi0gCVZJT19U UkFJTEVSLCAgICAgICAgICAgIC8qIHRyYWlsZXIgYnVmZmVyIGFmdGVyIGRhdGEgKi8KLS19IHZp b190eXBlOwotK30gdmlvX3R5cGVfdDsKLSAKLSAvKiBYRFIgYnVmZmVyIHZlY3RvciBkZXNjcmlw dG9ycyAqLwotIHR5cGVkZWYgc3RydWN0IHhkcl92aW8gewotQEAgLTEzMyw3ICsxMzMsNyBAQAot IAl1aW50OF90ICp2aW9fd3JhcDsJLyogbWF4aW11bSB2aW9fdGFpbCAqLwotIAl1aW50MzJfdCB2 aW9fbGVuZ3RoOwkvKiBsZW5ndGggb2YgYnVmZmVyLCB1c2VkIGZvciB2ZWN0b3IKLSAJCQkJICAg cHJlLWFsbG9jYXRpb24gKi8KLS0JdmlvX3R5cGUgdmlvX3R5cGU7CS8qIHR5cGUgb2YgYnVmZmVy ICovICAgCi0rCXZpb190eXBlX3QgdmlvX3R5cGU7CS8qIHR5cGUgb2YgYnVmZmVyICovICAgCi0g fSB4ZHJfdmlvOwotIAotIC8qIHZpb193cmFwID49IHZpb190YWlsID49IHZpb19oZWFkID49IHZp b19iYXNlICovCi1AQCAtMTYyLDcgKzE2MiwxMSBAQAotIAkJCQkgKiAwOiBub3QgYWxsb2NhdGVk ICovCi0gCXVfaW50CXVpb19mbGFnczsKLSAJaW50MzJfdCB1aW9fcmVmZXJlbmNlczsKLSsjaWZk ZWYgX19jcGx1c3BsdXMKLSsJeGRyX3ZpbyB1aW9fdmlvWzFdOwotKyNlbHNlCi0gCXhkcl92aW8J dWlvX3Zpb1swXTsJLyogYXBwZW5kZWQgdmVjdG9ycyAqLwotKyNlbmRpZgotIH0geGRyX3VpbzsK LSAKLSAvKiBPcCBmbGFncyAqLwotZGlmZiAtdXIgbnRpcnBjLTcuMi9udGlycGMvcnBjL3hkcl9p bmxpbmUuaCBudGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9u dGlycGMvcnBjL3hkcl9pbmxpbmUuaAotLS0tIG50aXJwYy03LjIvbnRpcnBjL3JwYy94ZHJfaW5s aW5lLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBudGlycGMtYmIz MzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9udGlycGMvcnBjL3hkcl9pbmxp bmUuaAkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTUyLDYgKzUyLDE3 IEBACi0gI2luY2x1ZGUgPHJwYy90eXBlcy5oPgotICNpbmNsdWRlIDxycGMveGRyLmg+Ci0gCi0r I2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBV TlVTRUQKLSsjZGVmaW5lIFVOVVNFRF9BVFRSIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCi0rI2Rl ZmluZSBVTlVTRUQoLi4uKSBVTlVTRURfKF9fVkFfQVJHU19fKQotKyNkZWZpbmUgVU5VU0VEXyhh cmcpIE5PVF9VU0VEXyMjYXJnIFVOVVNFRF9BVFRSCi0rI2VuZGlmCi0rCi0rCi0gLyoKLSAgKiBY RFIgaW50ZWdlcnMKLSAgKi8KLUBAIC02MzksNyArNjUwLDcgQEAKLSB9Ci0gCi0gc3RhdGljIGlu bGluZSBib29sCi0teGRyX2J5dGVzX2ZyZWUoWERSICp4ZHJzLCBjaGFyICoqY3BwLCBzaXplX3Qg c2l6ZSkKLSt4ZHJfYnl0ZXNfZnJlZShYRFIgKlVOVVNFRCh4ZHJzKSwgY2hhciAqKmNwcCwgc2l6 ZV90IHNpemUpCi0gewotIAlpZiAoKmNwcCkgewotIAkJbWVtX2ZyZWUoKmNwcCwgc2l6ZSk7Ci1A QCAtODQwLDcgKzg1MSw3IEBACi0gfQotIAotIHN0YXRpYyBpbmxpbmUgYm9vbAotLXhkcl9hcnJh eV9mcmVlKFhEUiAqeGRycywgY2hhciAqKmNwcCwgdV9pbnQgKnNpemVwLCB1X2ludCBtYXhzaXpl LAotK3hkcl9hcnJheV9mcmVlKFhEUiAqeGRycywgY2hhciAqKmNwcCwgdV9pbnQgKnNpemVwLCB1 X2ludCBVTlVTRUQobWF4c2l6ZSksCi0gCSAgICAgICB1X2ludCBzZWxlbSwgeGRycHJvY190IHhk cl9lbGVtKQotIHsKLSAJY2hhciAqdGFyZ2V0ID0gKmNwcDsKLUBAIC05OTMsNyArMTAwNCw3IEBA Ci0gfQotIAotIHN0YXRpYyBpbmxpbmUgYm9vbAotLXhkcl9zdHJpbmdfZnJlZShYRFIgKnhkcnMs IGNoYXIgKipjcHApCi0reGRyX3N0cmluZ19mcmVlKFhEUiAqVU5VU0VEKHhkcnMpLCBjaGFyICoq Y3BwKQotIHsKLSAJaWYgKCpjcHApIHsKLSAJCW1lbV9mcmVlKCpjcHAsIHN0cmxlbigqY3BwKSAr IDEpOwotQEAgLTEwNjQsNCArMTA3NSw4IEBACi0gCXJldHVybiAoaW5saW5lX3hkcl91X2ludDY0 X3QoeGRycywgKHVfaW50NjRfdCAqKSB1bGxwKSk7Ci0gfQotIAotKyNpZmRlZiBfX2NwbHVzcGx1 cwotK30KLSsjZW5kaWYgLyogZXh0ZXJuICJDIiAqLwotKwotICNlbmRpZgkJCQkvKiBfVElSUENf SU5MSU5FX1hEUl9IICovCi1kaWZmIC11ciBudGlycGMtNy4yL3NyYy9jbG50X2dlbmVyaWMuYyBu dGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvY2xudF9n ZW5lcmljLmMKLS0tLSBudGlycGMtNy4yL3NyYy9jbG50X2dlbmVyaWMuYwkyMDI1LTA5LTIzIDEw OjA1OjE5LjAwMDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNl NjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9jbG50X2dlbmVyaWMuYwkyMDI2LTA2LTExIDE0OjEyOjE3 LjAwMDAwMDAwMCAtMDQwMAotQEAgLTI1Miw3ICsyNTIsNyBAQAotIAlDTElFTlQgKmNsID0gTlVM TDsJLyogY2xpZW50IGhhbmRsZSAqLwotIAotIAlpZiAobmNvbmYgPT0gTlVMTCkgewotLQkJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6ICVzIiwKLSsJCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FUlJPUiwgIiVzOiAlcyBuY29uZiBpcyBOVUxMIiwKLSAJCQlfX2Z1bmNfXywg Y2xudF9zcGVycm5vKFJQQ19UTElFUlJPUikpOwotIAkJY2wgPSBjbG50X3Jhd19uY3JlYXRlKHBy b2csIHZlcnMpOwotIAkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19UTElFUlJPUjsKLUBA IC0yNzIsOCArMjcyLDggQEAKLSAJfQotIAlpZiAoY2wgPT0gTlVMTCkgewotIAkJLyogX19ycGNf ZmluZGFkZHJfdGltZWQgZmFpbGVkPyAqLwotLQkJY2wgPSBjbG50X3RsaV9uY3JlYXRlKFJQQ19B TllGRCwgbmNvbmYsIHN2Y2FkZHIsIHByb2csIHZlcnMsIDAsCi0tCQkJCSAgICAgIDApOwotKwkJ Y2wgPSBjbG50X3RsaV9uY3JlYXRlKFJQQ19BTllGRCwgbmNvbmYsIE5VTEwsIHN2Y2FkZHIsIHBy b2csCi0rCQkJCSAgICAgIHZlcnMsIDAsIDApOwotIAl9Ci0gCWlmIChDTE5UX1NVQ0NFU1MoY2wp KSB7Ci0gCQkvKiBSZXVzZSB0aGUgQ0xJRU5UIGhhbmRsZSBhbmQgY2hhbmdlIHRoZSBhcHByb3By aWF0ZSBmaWVsZHMgKi8KLUBAIC0yODYsOCArMjg2LDggQEAKLSAJCQkodm9pZClDTE5UX0NPTlRS T0woY2wsIENMU0VUX1ZFUlMsICh2b2lkICopJnZlcnMpOwotIAkJfSBlbHNlIHsKLSAJCQlDTE5U X0RFU1RST1koY2wpOwotLQkJCWNsID0gY2xudF90bGlfbmNyZWF0ZShSUENfQU5ZRkQsIG5jb25m LCBzdmNhZGRyLCBwcm9nLAotLQkJCQkJICAgICAgdmVycywgMCwgMCk7Ci0rCQkJY2wgPSBjbG50 X3RsaV9uY3JlYXRlKFJQQ19BTllGRCwgbmNvbmYsIE5VTEwsIHN2Y2FkZHIsCi0rCQkJCQkgICAg ICBwcm9nLCB2ZXJzLCAwLCAwKTsKLSAJCX0KLSAJfQotIAltZW1fZnJlZShzdmNhZGRyLT5idWYs IHNpemVvZigqc3ZjYWRkci0+YnVmKSk7Ci1AQCAtMzA0LDkgKzMwNCwxMCBAQAotICAqIElmIHNp emVzIGFyZSAwOyBhcHByb3ByaWF0ZSBkZWZhdWx0cyB3aWxsIGJlIGNob3Nlbi4KLSAgKi8KLSBD TElFTlQgKgotLWNsbnRfdGxpX25jcmVhdGUoaW50IGZkLCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmln ICpuY29uZiwKLS0JCSBzdHJ1Y3QgbmV0YnVmICpzdmNhZGRyLCBycGNwcm9nX3QgcHJvZywKLS0J CSBycGN2ZXJzX3QgdmVycywgdV9pbnQgc2VuZHN6LCB1X2ludCByZWN2c3opCi0rY2xudF90bGlf bmNyZWF0ZV9vcHQoaW50IGZkLCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZiwKLSsJCSAg ICAgc3RydWN0IG5ldGJ1ZiAqYmluZGFkZHIsIHN0cnVjdCBuZXRidWYgKnN2Y2FkZHIsCi0rCQkg ICAgIHJwY3Byb2dfdCBwcm9nLCBycGN2ZXJzX3QgdmVycywKLSsJCSAgICAgdV9pbnQgc2VuZHN6 LCB1X2ludCByZWN2c3osIGludCBvcHQpCi0gewotIAlDTElFTlQgKmNsOwkJLyogY2xpZW50IGhh bmRsZSAqLwotIAlzdHJ1Y3QgX19ycGNfc29ja2luZm8gc2k7Ci1AQCAtMzE4LDE0ICszMTksMTQg QEAKLSAKLSAJaWYgKGZkID09IFJQQ19BTllGRCkgewotIAkJaWYgKG5jb25mID09IE5VTEwpIHsK LS0JCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogJXMiLAotKwkJCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiAlcyBuY29uZiBpcyBOVUxMIiwKLSAJCQkJ X19mdW5jX18sIGNsbnRfc3BlcnJubyhSUENfVExJRVJST1IpKTsKLSAJCQljbCA9IGNsbnRfcmF3 X25jcmVhdGUocHJvZywgdmVycyk7Ci0gCQkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19U TElFUlJPUjsKLSAJCQlyZXR1cm4gKGNsKTsKLSAJCX0KLSAKLS0JCWZkID0gX19ycGNfbmNvbmYy ZmQobmNvbmYpOwotKwkJZmQgPSBfX3JwY19uY29uZjJmZF9mbGFnc19vcHQobmNvbmYsIDAsIG9w dCk7Ci0gCi0gCQlpZiAoZmQgPT0gLTEpCi0gCQkJZ290byBlcnI7Ci1AQCAtMzM1LDcgKzMzNiwy NiBAQAotIAkJc2VydnR5cGUgPSBuY29uZi0+bmNfc2VtYW50aWNzOwotIAkJaWYgKCFfX3JwY19m ZDJzb2NraW5mbyhmZCwgJnNpKSkKLSAJCQlnb3RvIGVycjsKLS0JCWJpbmRyZXN2cG9ydChmZCwg TlVMTCk7Ci0rCQlpZiAoYmluZGFkZHIgPT0gTlVMTCkKLSsJCQliaW5kcmVzdnBvcnQoZmQsIE5V TEwpOwotKwkJZWxzZSB7Ci0rCQkJc3RydWN0IHNvY2thZGRyICphZGRyOwotKwotKwkJCWFkZHIg PSAoc3RydWN0IHNvY2thZGRyICopYmluZGFkZHItPmJ1ZjsKLSsKLSsJCQlpZiAoc2kuc2lfYWYg IT0gYWRkci0+c2FfZmFtaWx5KSB7Ci0rCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJP UiwKLSsJCQkJCSIlczogJXMgYWRkcmVzcyBmYW1pbHkgbWlzbWF0Y2giLAotKwkJCQkJX19mdW5j X18sCi0rCQkJCQljbG50X3NwZXJybm8oUlBDX1RMSUVSUk9SKSk7Ci0rCQkJCWNsID0gY2xudF9y YXdfbmNyZWF0ZShwcm9nLCB2ZXJzKTsKLSsJCQkJLyogWFhYICovCi0rCQkJCWNsLT5jbF9lcnJv ci5yZV9zdGF0dXMgPSBSUENfVExJRVJST1I7Ci0rCQkJCWdvdG8gZXJyMTsKLSsJCQl9Ci0rCi0r CQkJYmluZHJlc3Zwb3J0KGZkLCAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcik7Ci0rCQl9Ci0g CX0gZWxzZSB7Ci0gCQlpZiAoIV9fcnBjX2ZkMnNvY2tpbmZvKGZkLCAmc2kpKQotIAkJCWdvdG8g ZXJyOwotQEAgLTQ0NywxMCArNDY3LDQzIEBACi0gCXJldHVybiAoMSk7Ci0gfQotIAotKy8qCi0r ICogSGVscGVyIGZ1bmN0aW9uIHRvIGluc2VydCBSRE1BIGNsaWVudCByZXF1ZXN0IGludG8gY2Fs bF9leHBpcmVzCi0rICovCi0rc3RhdGljIHZvaWQKLStyZG1hX2NsbnRfcmVxX2V4cGlyZV9pbnNl cnQoc3RydWN0IGNsbnRfcmVxICpjYykKLSt7Ci0rCXN0cnVjdCBjeF9kYXRhICpjeCA9IENYX0RB VEEoY2MtPmNjX2NsbnQpOwotKwlzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWMgPSBjeC0+Y3hfcmVj OwotKwlzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpudjsKLSsJc3RydWN0IHRpbWVzcGVjIHRzOwot KwotKwkvKiBDYWxjdWxhdGUgZXhwaXJhdGlvbiB0aW1lICovCi0rCSh2b2lkKWNsb2NrX2dldHRp bWUoQ0xPQ0tfTU9OT1RPTklDX0ZBU1QsICZ0cyk7Ci0rCXRpbWVzcGVjYWRkKCZ0cywgJmNjLT5j Y190aW1lb3V0LCAmdHMpOwotKwljYy0+Y2NfZXhwaXJlX21zID0gdGltZXNwZWNfbXMoJnRzKTsK LSsKLSsJcnBjX2RwbHhfcmxpKHJlYyk7Ci0rCWNjLT5jY19mbGFncyA9IENMTlRfUkVRX0ZMQUdf RVhQSVJJTkc7Ci0rIHJlcGVhdDoKLSsJbnYgPSBvcHJfcmJ0cmVlX2luc2VydCgmcmVjLT5yZG1h X2NhbGxfZXhwaXJlcywgJmNjLT5jY19ycXN0KTsKLSsJaWYgKG52KSB7Ci0rCQkvKiBhZGQgdGhp cyBzbGlnaHRseSBsYXRlciAqLwotKwkJY2MtPmNjX2V4cGlyZV9tcysrOwotKwkJZ290byByZXBl YXQ7Ci0rCX0KLSsJcnBjX2RwbHhfcnVpKHJlYyk7Ci0rfQotKwotIGVudW0gY2xudF9zdGF0Ci0g Y2xudF9yZXFfY2FsbGJhY2soc3RydWN0IGNsbnRfcmVxICpjYykKLSB7Ci0tCXN2Y19ycXN0X2V4 cGlyZV9pbnNlcnQoY2MpOwotKwkvKiBBZGQgdG8gYXBwcm9wcmlhdGUgY2FsbF9leHBpcmVzIGxp c3QgYmFzZWQgb24gdHJhbnNwb3J0IHR5cGUgKi8KLSsJaWYgKGNjLT5jY19jbG50LT5yZG1hX2Ns bnQpIHsKLSsJCXJkbWFfY2xudF9yZXFfZXhwaXJlX2luc2VydChjYyk7Ci0rCX0gZWxzZSB7Ci0r CQlzdmNfcnFzdF9leHBpcmVfaW5zZXJ0KGNjKTsKLSsJfQotIAotIAlyZXR1cm4gQ0xOVF9DQUxM X09OQ0UoY2MpOwotIH0KLUBAIC00OTIsNiArNTQ1LDIwIEBACi0gCXJldHVybiAoUlBDX1NVQ0NF U1MpOwotIH0KLSAKLSsvKgotKyAqIEhlbHBlciBmdW5jdGlvbiB0byByZW1vdmUgUkRNQSBjbGll bnQgcmVxdWVzdCBmcm9tIGNhbGxfZXhwaXJlcwotKyAqLwotK3ZvaWQKLStyZG1hX2NsbnRfcmVx X2V4cGlyZV9yZW1vdmUoc3RydWN0IGNsbnRfcmVxICpjYykKLSt7Ci0rCXN0cnVjdCBjeF9kYXRh ICpjeCA9IENYX0RBVEEoY2MtPmNjX2NsbnQpOwotKwlzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWMg PSBjeC0+Y3hfcmVjOwotKwotKwlycGNfZHBseF9ybGkocmVjKTsKLSsJb3ByX3JidHJlZV9yZW1v dmUoJnJlYy0+cmRtYV9jYWxsX2V4cGlyZXMsICZjYy0+Y2NfcnFzdCk7Ci0rCXJwY19kcGx4X3J1 aShyZWMpOwotK30KLSsKLSB2b2lkCi0gY2xudF9yZXFfcmVzZXQoc3RydWN0IGNsbnRfcmVxICpj YykKLSB7Ci1AQCAtNTA1LDcgKzU3MiwxMiBAQAotIAkJCQkJICAgQ0xOVF9SRVFfRkxBR19BQ0tT WU5DIHwKLSAJCQkJCSAgIENMTlRfUkVRX0ZMQUdfRVhQSVJJTkcpCi0gCSAgICAmIENMTlRfUkVR X0ZMQUdfRVhQSVJJTkcpIHsKLS0JCXN2Y19ycXN0X2V4cGlyZV9yZW1vdmUoY2MpOwotKwkJLyog UmVtb3ZlIGZyb20gYXBwcm9wcmlhdGUgY2FsbF9leHBpcmVzIGxpc3QgYmFzZWQgb24gdHJhbnNw b3J0IHR5cGUgKi8KLSsJCWlmIChjYy0+Y2NfY2xudC0+cmRtYV9jbG50KSB7Ci0rCQkJcmRtYV9j bG50X3JlcV9leHBpcmVfcmVtb3ZlKGNjKTsKLSsJCX0gZWxzZSB7Ci0rCQkJc3ZjX3Jxc3RfZXhw aXJlX3JlbW92ZShjYyk7Ci0rCQl9Ci0gCQljYy0+Y2NfZXhwaXJlX21zID0gMDsJLyogYXRvbWlj IGJhcnJpZXIocykgKi8KLSAJfQotIH0KLUBAIC01MjUsNiArNTk3LDcgQEAKLSAJY2MtPmNjX3Jl ZnJlc2hlcyA9IDI7Ci0gCWNjLT5jY190aW1lb3V0ID0gdGltZW91dDsKLSAKLSsKLSAJaWYgKHRp bWVvdXQudHZfbnNlYyA8IDAgfHwgdGltZW91dC50dl9uc2VjID4gOTk5OTk5OTk5Ci0gCSB8fCB0 aW1lb3V0LnR2X3NlYyA8IDApIHsKLSAJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwK LUBAIC01ODUsNyArNjU4LDExIEBACi0gCWlmIChhdG9taWNfcG9zdGNsZWFyX3VpbnQxNl90X2Jp dHMoJmNjLT5jY19mbGFncywKLSAJCQkJCSAgIENMTlRfUkVRX0ZMQUdfRVhQSVJJTkcpCi0gCSAg ICAmIENMTlRfUkVRX0ZMQUdfRVhQSVJJTkcpIHsKLS0JCXN2Y19ycXN0X2V4cGlyZV9yZW1vdmUo Y2MpOwotKwkJaWYgKGNjLT5jY19jbG50LT5yZG1hX2NsbnQpIHsKLSsJCQlyZG1hX2NsbnRfcmVx X2V4cGlyZV9yZW1vdmUoY2MpOwotKwkJfSBlbHNlIHsKLSsJCQlzdmNfcnFzdF9leHBpcmVfcmVt b3ZlKGNjKTsKLSsJCX0KLSAJCWNjLT5jY19leHBpcmVfbXMgPSAwOwkvKiBhdG9taWMgYmFycmll cihzKSAqLwotIAl9Ci0gCi1kaWZmIC11ciBudGlycGMtNy4yL3NyYy9jbG50X2ludGVybmFsLmgg bnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL2NsbnRf aW50ZXJuYWwuaAotLS0tIG50aXJwYy03LjIvc3JjL2NsbnRfaW50ZXJuYWwuaAkyMDI1LTA5LTIz IDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFl ZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9jbG50X2ludGVybmFsLmgJMjAyNi0wNi0xMSAxNDox MjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC02NCw1ICs2NCw5IEBACi0gLyogaW4gc3ZjX3Jxc3Qu YyAqLwotIHZvaWQgc3ZjX3Jxc3RfZXhwaXJlX2luc2VydChzdHJ1Y3QgY2xudF9yZXEgKik7Ci0g dm9pZCBzdmNfcnFzdF9leHBpcmVfcmVtb3ZlKHN0cnVjdCBjbG50X3JlcSAqKTsKLS0KLSt2b2lk IHN2Y19ycXN0X2V4cGlyZV90YXNrKHN0cnVjdCB3b3JrX3Bvb2xfZW50cnkgKik7Ci0raW50IHN2 Y19ycXN0X2V4cGlyZV9jbXBmKGNvbnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKmxocywKLSsJ CQkgY29uc3Qgc3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqcmhzKTsKLSt2b2lkIHJkbWFfY2xudF9y ZXFfZXhwaXJlX3JlbW92ZShzdHJ1Y3QgY2xudF9yZXEgKik7Ci0rYm9vbCBjbG50X2RhdGFfaXN2 YWxpZChzdHJ1Y3QgcnBjX2NsaWVudCAqKTsKLSAjZW5kaWYJCQkJLyogX0NMTlRfSU5URVJOQUxf SCAqLwotZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvY2xudF9yZG1hLmMgbnRpcnBjLWJiMzMzY2Nh MmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL2NsbnRfcmRtYS5jCi0tLS0gbnRp cnBjLTcuMi9zcmMvY2xudF9yZG1hLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0 MDAKLSsrKyBudGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9z cmMvY2xudF9yZG1hLmMJMjAyNi0wNi0xMSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC01 NCw2ICs1NCw3IEBACi0gI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlICJycGNfY29tLmgiCi0g I2luY2x1ZGUgImNsbnRfaW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAic3ZjX2ludGVybmFsLmgiCi0g I2luY2x1ZGUgInJwY19yZG1hLmgiCi0gCi0gI2RlZmluZSBNQVhfREVGQVVMVF9GRFMJCSAyMDAw MAotQEAgLTg4LDI5ICs4OSwxMDEgQEAKLSAgKiBmb2xsb3dlZCBieSBDTE5UX0RFU1RST1koKSBh cyBuZWNlc3NhcnkuCi0gICovCi0gQ0xJRU5UICoKLS1jbG50X3JkbWFfbmNyZWF0ZWYoUkRNQVhQ UlQgKnJkbWFfeHBydCwJCS8qIGluaXQgYnV0IE5PVCBjb25uZWN0KCllZCAqLwotK2NsbnRfcmRt YV9uY3JlYXRlZihjb25zdCBTVkNYUFJUICp4cHJ0LAkJLyogaW5pdCBidXQgTk9UIGNvbm5lY3Qo KWVkICovCi0gCQkgICBjb25zdCBycGNwcm9nX3QgcHJvZ3JhbSwKLSAJCSAgIGNvbnN0IHJwY3Zl cnNfdCB2ZXJzaW9uLAotLQkJICAgY29uc3QgdV9pbnQgZmxhZ3MpCi0rCQkgICBjb25zdCB1X2lu dCBmbGFncywgYm9vbCBjcmVhdGUpCi0gewotIAlzdHJ1Y3QgY21fZGF0YSAqY20gPSBjbG50X3Jk bWFfZGF0YV96YWxsb2MoKTsKLSAJQ0xJRU5UICpjbCA9ICZjbS0+Y21fY3guY3hfYzsKLSAJc3Ry dWN0IHJwY19tc2cgY2FsbF9tc2c7Ci0gCVhEUiB4ZHJzWzFdOwkJLyogdGVtcCBYRFIgc3RyZWFt ICovCi0gCi0tCWNsLT5jbF9vcHMgPSBjbG50X3JkbWFfb3BzKCk7Ci0tCi0tCWlmICghcmRtYV94 cHJ0IHx8IHJkbWFfeHBydC0+c3RhdGUgIT0gUkRNQVhTX0lOSVRJQUwpIHsKLS0JCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FUlJPUiwKLS0JCQkiJXM6ICVwQCVwIGNhbGxlZCB3aXRoIGludmFs aWQgdHJhbnNwb3J0IGFkZHJlc3MiLAotLQkJCV9fZnVuY19fLCBjbCwgcmRtYV94cHJ0KTsKLS0J CWNsLT5jbF9lcnJvci5yZV9zdGF0dXMgPSBSUENfVU5LTk9XTkFERFI7Ci0tCQlyZXR1cm4gKGNs KTsKLSsJUkRNQVhQUlQgKnJkbWFfeHBydCA9IE5VTEw7Ci0rCWlmIChjcmVhdGUpIHsKLSsJCXJk bWFfeHBydCA9IHJwY19yZG1hX2FsbG9jYXRlKCgoUkRNQVhQUlQgKil4cHJ0KS0+eGEpOwotKwkJ aWYgKCFyZG1hX3hwcnQpIHsKLSsJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCi0r CQkJCSIlczogcmRtYSBhbGxvY2F0ZSBmYWlsZWQiLCBfX2Z1bmNfXyk7Ci0rCQkJY2wtPmNsX2Vy cm9yLnJlX3N0YXR1cyA9IFJQQ19TWVNURU1FUlJPUjsKLSsJCQlyZXR1cm4gY2w7Ci0rCQl9Ci0r CX0gZWxzZSB7Ci0rCQlyZG1hX3hwcnQgPSAoUkRNQVhQUlQgKil4cHJ0OwotKwkJcmRtYV94cHJ0 LT5zaGFyZWQgPSB0cnVlOwotKwkJLyogVGFrZSByZWYgZm9yIHNoYXJlZCB4cHJ0ICovCi0rCQlT VkNfUkVGKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsIFNWQ19SRUZfRkxBR19OT05FKTsKLSAJfQot KwotIAljbS0+Y21fY3guY3hfcmVjID0gJnJkbWFfeHBydC0+c21fZHI7Ci0rCWNsLT5jbF9vcHMg PSBjbG50X3JkbWFfb3BzKCk7Ci0rCWNsLT5yZG1hX2NsbnQgPSB0cnVlOwotIAotLQlycGNfcmRt YV9jb25uZWN0KHJkbWFfeHBydCk7Ci0tCXJwY19yZG1hX2Nvbm5lY3RfZmluYWxpemUocmRtYV94 cHJ0KTsKLSsJLyogVGhpcyBpcyB1c2VkIHdoZW4gd2Ugd2FudCB0byBjcmVhdGUgc2VwZXJhdGUK LSsJICogY29ubmVjdGlvbiBmb3IgY2FsbGJhY2sgY2hhbm5lbC4KLSsJICogeHBydCB3ZSBhcmUg cGFzc2luZyBpcyBleGlzdGluZyBjb25uZWN0aW9uLAotKwkgKiBzbyB3ZSBuZWVkIHNlcGFyZXQg ZmxhZyB0byBpbmRpY2F0ZSB3ZSB3YW50IHRvCi0rCSAqIGNyZWF0ZSBuZXcgY29ubmVjdGlvbiBv ciBleGlzdGluZyBvbmUgYXMgY2FsbGJhY2sgY2hhbm5lbC4KLSsJICogRm9yIE5GU3Y0LjEgaXRz IGFsd2F5cyBmYWxzZSwgc2luY2Ugd2Ugd2FudCB0byB1c2Ugc2FtZSBjb25uZWN0aW9uLiAqLwot KwlpZiAoY3JlYXRlKSB7Ci0rCQkvKiBDb3B5IHJlbW90ZSBpcCAqLwotKwkJc3ZjX3JkbWFfb3Bz KCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOwotKwotKwkJcmRtYV94cHJ0LT5zbV9kci54cHJ0Lnhw X2lwID0gbWVtX2FsbG9jKFNPQ0tfTkFNRV9NQVgpOwotKwkJbWVtY3B5KHJkbWFfeHBydC0+c21f ZHIueHBydC54cF9pcCwgeHBydC0+eHBfaXAsIFNPQ0tfTkFNRV9NQVgpOwotKwkJcmRtYV94cHJ0 LT5zbV9kci54cHJ0LnhwX3BvcnQgPSB4cHJ0LT54cF9wb3J0OwotKwotKwkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXM6IGNyZWF0ZSByZG1hIGNsbnQgaXAgJXMgcG9ydCAl ZCIsCi0rCQkJX19mdW5jX18sIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwgcmRtYV94cHJ0 LT5zbV9kci54cHJ0LnhwX3BvcnQpOwotKwotKwkJLyogUkRNQVhfQ0xJRU5UIGluZGljYXRlIGlz IGNsaWVudCBjb25uZWN0aW9uIGZyb20KLSsJCSAqIHNlcnZlciB0byBjbGllbnQgaWYgd2UgYXJl IGNyZWF0aW5nIG5ldyBjb25uZWN0aW9uCi0rCQkgKiBmb3Igc2VydmVyIGxpc3RlbiBjb25uZWN0 aW9uIHdlIHVzZSB4YS0+YmFja2xvZwotKwkJICogZm9yIGNsaWVudCB0byBzZXJ2ZXIgY29ubmVj dGlvbiB3ZSB1c2UgUkRNQVhfU0VSVkVSX0NISUxEICovCi0rCQlyZG1hX3hwcnQtPnNlcnZlciA9 IFJETUFYX0NMSUVOVDsKLSsKLSsJCWlmICghcmRtYV94cHJ0IHx8IHJkbWFfeHBydC0+c3RhdGUg IT0gUkRNQVhTX0lOSVRJQUwpIHsKLSsJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1Is Ci0rCQkJCSIlczogJXBAJXAgY2FsbGVkIHdpdGggaW52YWxpZCB0cmFuc3BvcnQgYWRkcmVzcyIs Ci0rCQkJCV9fZnVuY19fLCBjbCwgcmRtYV94cHJ0KTsKLSsJCQljbC0+Y2xfZXJyb3IucmVfc3Rh dHVzID0gUlBDX1VOS05PV05BRERSOwotKwkJCXJldHVybiAoY2wpOwotKwkJfQotKwotKwkJaWYg KHJwY19yZG1hX2Nvbm5lY3RfcHJlcGFyZShyZG1hX3hwcnQpKSB7Ci0rCQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGZhaWxlZCIsIF9fZnVuY19fKTsKLSsJCQljbC0+Y2xf ZXJyb3IucmVfc3RhdHVzID0gUlBDX1VOS05PV05BRERSOwotKwkJCXJldHVybiAoY2wpOwotKwkJ fQotKwotKwkJaWYgKHJwY19yZG1hX2Nvbm5lY3QocmRtYV94cHJ0KSkgewotKwkJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FUlJPUiwKLSsJCQkJIiVzOiByZG1hIGNvbm5lY3QgZmFpbGVkIiwg X19mdW5jX18pOwotKwkJCWNsLT5jbF9lcnJvci5yZV9zdGF0dXMgPSBSUENfVU5LTk9XTkFERFI7 Ci0rCQkJcmV0dXJuIChjbCk7Ci0rCQl9Ci0rCQlpZiAocnBjX3JkbWFfY29ubmVjdF9maW5hbGl6 ZShyZG1hX3hwcnQpKSB7Ci0rCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAotKwkJ CQkiJXM6IHJkbWEgY29ubmVjdCBmaW5hbGl6ZSBmYWlsZWQiLCBfX2Z1bmNfXyk7Ci0rCQkJY2wt PmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19VTktOT1dOQUREUjsKLSsJCQlyZXR1cm4gKGNsKTsK LSsJCX0KLSsKLSsJCXN0cnVjdCBycGNfZHBseF9yZWMgKnJlYyA9IFJFQ19YUFJUKHhwcnQpOwot KwkJcmRtYV94cHJ0LT5zbV9kci5yZWN2c3ogPSByZWMtPnJlY3ZzejsKLSsJCXJkbWFfeHBydC0+ c21fZHIuc2VuZHN6ID0gcmVjLT5zZW5kc3o7Ci0rCQlyZG1hX3hwcnQtPnNtX2RyLnBhZ2VzeiA9 IHJlYy0+cGFnZXN6OwotKwotKwkJcmRtYV94cHJ0LT5zbV9kci5yZWN2X2hkcl9zeiA9IHJlYy0+ cmVjdl9oZHJfc3o7Ci0rCQlyZG1hX3hwcnQtPnNtX2RyLnNlbmRfaGRyX3N6ID0gcmVjLT5zZW5k X2hkcl9zejsKLSsKLSsJCWlmICh4ZHJfcmRtYV9jcmVhdGUocmRtYV94cHJ0KSkgewotKwkJCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKLSsJCQkJIiVzOiBidWZmZXIgYWxsb2NhdGlv biBmYWlsZWQiLCBfX2Z1bmNfXyk7Ci0rCQkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19T WVNURU1FUlJPUjsKLSsJCQlyZXR1cm4gKGNsKTsKLSsJCX0KLSsJfQotIAotIAkvKgotIAkgKiBp bml0aWFsaXplIGNhbGwgbWVzc2FnZQotQEAgLTE2MiwyMyArMjM1LDQyIEBACi0gCQl4ZHJfcmRt YV9pb3FfdXZfZmV0Y2goJnJkbWFfeHBydC0+c21fZHIuaW9xLCAmcmRtYV94cHJ0LT5jYnFoLAot IAkJCQkgImNhbGwgY29udGV4dCIsIDEsIElPUV9GTEFHX05PTkUpOwotIAlzdHJ1Y3QgcnBjX3Jk bWFfY2JjICpjYmMgPSAoc3RydWN0IHJwY19yZG1hX2NiYyAqKShfSU9RKGhhdmUpKTsKLSsKLSsg ICAgICAgIGNiYy0+cmVjdnEueGRyc1swXS54X2xpYlsxXSA9Ci0rICAgICAgICBjYmMtPnNlbmRx LnhkcnNbMF0ueF9saWJbMV0gPQotKyAgICAgICAgY2JjLT5kYXRhcS54ZHJzWzBdLnhfbGliWzFd ID0KLSsgICAgICAgIGNiYy0+ZnJlZXEueGRyc1swXS54X2xpYlsxXSA9IHJkbWFfeHBydDsKLSsK LSsgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmcmRtYV94cHJ0LT5jYmNsaXN0LnFtdXRleCk7 Ci0rCi0rICAgICAgICBjYmMtPmNhbGxfaW5saW5lID0gMTsKLSsgICAgICAgIGNiYy0+ZGF0YV9j aHVua191diA9IE5VTEw7Ci0rICAgICAgICBjYmMtPnJlZmNudCA9IDE7IC8vIFNlbnRpbmVsIHJl ZgotKwlTVkNfUkVGKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsIFNWQ19SRUZfRkxBR19OT05FKTsg Ly8gZm9yIGNiYyByZWYKLSsgICAgICAgIGNiYy0+Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFT RTsKLSsgICAgICAgIGNiYy0+cmVhZF93YWl0cyA9IDA7Ci0rICAgICAgICBjYmMtPndyaXRlX3dh aXRzID0gMDsKLSsgICAgICAgIGNiYy0+YWN0aXZlID0gZmFsc2U7Ci0rICAgICAgICBjYmMtPm5v bl9yZWdpc3RlcmVkX2J1ZiA9IE5VTEw7Ci0rICAgICAgICBjYmMtPm5vbl9yZWdpc3RlcmVkX2J1 Zl9sZW4gPSAwOwotKwotKyAgICAgICAgVEFJTFFfSU5TRVJUX1RBSUwoJnJkbWFfeHBydC0+Y2Jj bGlzdC5xaCwgJmNiYy0+Y2JjX2xpc3QsIHEpOwotKyAgICAgICAgcmRtYV94cHJ0LT5jYmNsaXN0 LnFjb3VudCsrOwotKyAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnJkbWFfeHBydC0+Y2Jj bGlzdC5xbXV0ZXgpOwotKwotIAlYRFIgKnhkcnM7Ci0gCXVfaW50MzJfdCAqdWludDMycDsKLSAK LS0JLyogZnJlZSBvbGQgYnVmZmVycyAoc2hvdWxkIGRvIG5vdGhpbmcpICovCi0tCXhkcl9pb3Ff cmVsZWFzZSgmY2JjLT5yZWN2cS5pb3FfdXYudXZxaCk7Ci0tCXhkcl9pb3FfcmVsZWFzZSgmY2Jj LT5zZW5kcS5pb3FfdXYudXZxaCk7Ci0tCXhkcl9yZG1hX2NhbGxxKHJkbWFfeHBydCk7Ci0tCi0t CWNiYy0+cmVjdnEueGRyc1swXS54X2xpYlsxXSA9Ci0tCWNiYy0+c2VuZHEueGRyc1swXS54X2xp YlsxXSA9IHJkbWFfeHBydDsKLSsJY2MtPmNjX3RpbWVvdXQudHZfc2VjID0gY2MtPmNjX3RpbWVv dXQudHZfbnNlYyA9IDA7Ci0gCi0tCSh2b2lkKSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+ c2VuZHEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfZGF0YS51dnFoLAotKwkvKiBVc2UgaGRyIGJ1ZmZl ciBzaW5jZSBjYWxsYmFja3MgZG9uJ3QgY29udGFpbiBkYXRhICovCi0rCSh2b2lkKSB4ZHJfcmRt YV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfaGRyLnV2cWgs Ci0gCQkJCSJjYWxsIGJ1ZmZlciIsIDEsIElPUV9GTEFHX05PTkUpOwotIAl4ZHJfaW9xX3Jlc2V0 KCZjYmMtPnNlbmRxLCAwKTsKLSAKLSAJeGRycyA9IGNiYy0+c2VuZHEueGRyczsKLSAJY2MtPmNj X2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19TVUNDRVNTOwotKwl4ZHJzLT54X29wID0gWERSX0VOQ09E RTsKLSAKLSAJbXV0ZXhfbG9jaygmY2wtPmNsX2xvY2spOwotIAl1aW50MzJwID0gKHVfaW50MzJf dCAqKSZjeC0+Y3hfbWNhbGxjWzBdOwotQEAgLTE5NCwxNiArMjg2LDIwIEBACi0gCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfQ0xOVF9SRE1BLAotIAkJCSIlczogJXBAJXAgZmFpbGVkIiwKLSAJ CQlfX2Z1bmNfXywgY2wsIGN4LT5jeF9yZWMpOwotLQkJeGRyX2lvcV9yZWxlYXNlKCZjYmMtPnNl bmRxLmlvcV91di51dnFoKTsKLSsJCWNiY19yZWxlYXNlX2l0KGNiYyk7Ci0gCQlyZXR1cm4gKFJQ Q19DQU5URU5DT0RFQVJHUyk7Ci0gCX0KLSAJbXV0ZXhfdW5sb2NrKCZjbC0+Y2xfbG9jayk7Ci0g Ci0rCS8qIHNlbmQgcmVxdWVzdCBhbmQgcmVjdiByZXNwb25zZSAqLwotIAlpZiAoIXhkcl9yZG1h X2NsbnRfZmx1c2hvdXQoY2JjKSkgewotKwkJY2JjX3JlbGVhc2VfaXQoY2JjKTsKLSAJCWNsLT5j bF9lcnJvci5yZV9lcnJubyA9IGVycm5vOwotIAkJcmV0dXJuIChSUENfQ0FOVFNFTkQpOwotIAl9 Ci0gCi0rCWNiY19yZWxlYXNlX2l0KGNiYyk7Ci0rCi0gCXJldHVybiAoUlBDX1NVQ0NFU1MpOwot IH0KLSAKLWRpZmYgLXVyIG50aXJwYy03LjIvc3JjL2NsbnRfdmMuYyBudGlycGMtYmIzMzNjY2Ey ZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvY2xudF92Yy5jCi0tLS0gbnRpcnBj LTcuMi9zcmMvY2xudF92Yy5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0r KysgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL2Ns bnRfdmMuYwkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTczLDYgKzcz LDkgQEAKLSAjaW5jbHVkZSAic3ZjX2lvcS5oIgotICNpbmNsdWRlICJjbG50X2ludGVybmFsLmgi Ci0gI2luY2x1ZGUgInN2Y19pbnRlcm5hbC5oIgotKyNpZmRlZiBVU0VfUlBDX1JETUEKLSsjaW5j bHVkZSAicnBjX3JkbWEuaCIKLSsjZW5kaWYKLSAKLSBzdGF0aWMgZW51bSB4cHJ0X3N0YXQgY2xu dF92Y19wcm9jZXNzKHN0cnVjdCBzdmNfcmVxICpyZXEpOwotIHN0YXRpYyBzdHJ1Y3QgY2xudF9v cHMgKmNsbnRfdmNfb3BzKHZvaWQpOwotQEAgLTEyNCw2ICsxMjcsNDkgQEAKLSAgKiAgICAgIHNl cnZlciB0cmFucHNvcnRzIHNoYXJpbmcgYW4gdW5kZXJseWluZyBieXRlc3RyZWFtIChNYXR0KS4K LSAgKi8KLSAKLSsjaWZkZWYgVVNFX1JQQ19SRE1BCi0rLyogQ3JlYXRlIG5ldyBSRE1BIGNsaWVu dCB3aXRoIHNwZWNpZmllZCBjb25uZWN0aW9uIHBhcmFtZXRlcnMgKi8KLStDTElFTlQgKgotK2Ns bnRfcmRtYV9jcmVhdGUoaW50IGZkLCBjaGFyICpob3N0LCBpbnQgcG9ydCwgaW50IHJlY3Zfc3os IGludCBzZW5kX3N6LAotKyAgICBpbnQgcGFnZV9zeiwgY29uc3QgcnBjcHJvZ190IHByb2csIGNv bnN0IHJwY3ZlcnNfdCB2ZXJzLAotKyAgICBjb25zdCB1aW50MzJfdCBmbGFncykKLSt7Ci0rCXN0 cnVjdCBycGNfcmRtYV9hdHRyIHRtcF94YSA9IHsKLSsJCS5zdGF0aXN0aWNzX3ByZWZpeCA9IE5V TEwsCi0rCQkubm9kZSA9ICI6OiIsCi0rCQkucG9ydCA9ICIyMDA0OSIsICAgICAgICAgICAgICAg IC8qIGRlZmF1bHQgcG9ydCAyMDA0OSAqLwotKwkJLnNxX2RlcHRoID0gMzIsICAgICAgICAgICAg ICAgICAvKiBkZWZhdWx0IHdhcyA1MCAqLwotKwkJLm1heF9zZW5kX3NnZSA9IDMyLCAgICAgICAg ICAgICAvKiBtaW5pbXVtIDIgKi8KLSsJCS5ycV9kZXB0aCA9IDMyLCAgICAgICAgICAgICAgICAg LyogZGVmYXVsdCB3YXMgNTAgKi8KLSsJCS5tYXhfcmVjdl9zZ2UgPSAzMSwgICAgICAgICAgICAg LyogbWluaW11bSAxICovCi0rCQkuYmFja2xvZyA9IDEwLCAgICAgICAgICAgICAgICAgIC8qIG1p bmltdW0gMiAqLwotKwkJLmNyZWRpdHMgPSAzMCwgICAgICAgICAgICAgICAgICAvKiBkZWZhdWx0 IDEwICovCi0rCQkuZGVzdHJveV9vbl9kaXNjb25uZWN0ID0gdHJ1ZSwKLSsJCS51c2Vfc3JxID0g ZmFsc2UsCi0rCX07Ci0rCXN0cnVjdCBycGNfcmRtYV9hdHRyICp1c2VfeGEgPSBtZW1fYWxsb2Mo c2l6ZW9mKHN0cnVjdCBycGNfcmRtYV9hdHRyKSk7Ci0rCW1lbWNweSh1c2VfeGEsICZ0bXBfeGEs IHNpemVvZihzdHJ1Y3QgcnBjX3JkbWFfYXR0cikpOwotKwlTVkNYUFJUICp4cHJ0ID0gc3ZjX2Zk X25jcmVhdGVmKGZkLCBzZW5kX3N6LCByZWN2X3N6LCBmbGFncyk7Ci0rCWlmICgheHBydCkgewot KwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IEZhaWxlZCB0byBjcmVhdGUg eHBydCBmZCAlZCIsCi0rCQkJX19mdW5jX18sIGZkKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0r CVJETUFYUFJUICpyZG1hX3hwcnQgPSAoUkRNQVhQUlQgKil4cHJ0OwotKwlyZG1hX3hwcnQtPnhh ID0gdXNlX3hhOwotKwlzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWMgPSBSRUNfWFBSVCh4cHJ0KTsK LSsJcmVjLT5yZWN2c3ogPSBSRE1BX0RBVEFfQ0hVTktfU1o7Ci0rCXJlYy0+c2VuZHN6ID0gUkRN QV9EQVRBX0NIVU5LX1NaOwotKwlyZWMtPnBhZ2VzeiA9IHBhZ2Vfc3o7Ci0rCXJlYy0+cmVjdl9o ZHJfc3ogPSBSRE1BX0hEUl9DSFVOS19TWjsKLSsJcmVjLT5zZW5kX2hkcl9zeiA9IFJETUFfSERS X0NIVU5LX1NaOwotKwl4cHJ0LT54cF9pcCA9IGhvc3Q7Ci0rCXhwcnQtPnhwX3BvcnQgPSBwb3J0 OwotKwkvKiBjcmVhdGUgcmRtYV94cHJ0IHVzaW5nIHhwcnQgKi8KLSsJcmV0dXJuIGNsbnRfcmRt YV9uY3JlYXRlZih4cHJ0LCBwcm9nLCB2ZXJzLCBmbGFncywgdHJ1ZSk7Ci0rfQotKyNlbmRpZgot KwotIC8qCi0gICogQ3JlYXRlIGEgY2xpZW50IGhhbmRsZSBmb3IgYSBjb25uZWN0aW9uLgotICAq IERlZmF1bHQgb3B0aW9ucyBhcmUgc2V0LCB3aGljaCB0aGUgdXNlciBjYW4gY2hhbmdlIHVzaW5n IGNsbnRfY29udHJvbCgpJ3MuCi1kaWZmIC11ciBudGlycGMtNy4yL3NyYy9DTWFrZUxpc3RzLnR4 dCBudGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvQ01h a2VMaXN0cy50eHQKLS0tLSBudGlycGMtNy4yL3NyYy9DTWFrZUxpc3RzLnR4dAkyMDI1LTA5LTIz IDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFl ZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9DTWFrZUxpc3RzLnR4dAkyMDI2LTA2LTExIDE0OjEy OjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTUsOSArNSw2IEBACi0gICAtRF9HTlVfU09VUkNFCi0g KQotIAotLSMgb2sgb24gTGludXggYW5kIEZyZWVCU0Qgdy9HQ0MgYW5kIGNsYW5nIGNvbXBpbGVy cwotLXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1mUElDIikKLS0KLSAjIyMj IyMjIyMjIyBuZXh0IHRhcmdldCAjIyMjIyMjIyMjIyMjIyMKLSAKLSBTRVQobnRpcnBjX2NvbW1v bl9TUkNTCi1AQCAtMjcsNyArMjQsNiBAQAotICAgZ2V0bmV0Y29uZmlnLmMKLSAgIGdldG5ldHBh dGguYwotICAgZ2V0cGVlcmVpZC5jCi0tICBnZXRycGNlbnQuYwotICAgbXRfbWlzYy5jCi0gICBw bWFwX3Byb3QuYwotICAgcG1hcF9wcm90Mi5jCi1AQCAtMTM2LDcgKzEzMiw3IEBACi0gICBTT1ZF UlNJT04gIiR7TlRJUlBDX01BSk9SX1ZFUlNJT059JHtOVElSUENfTUlOT1JfVkVSU0lPTn0iCi0g ICApCi0gCi0taW5zdGFsbChUQVJHRVRTIG50aXJwYyBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxM X0RJUn0pCi0raW5zdGFsbChUQVJHRVRTIG50aXJwYyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RB TExfTElCRElSfSkKLSAKLSAjIyMjIyMjIyMjIyBpbnN0YWxsIGZpbGVzICMjIyMjIyMjIyMjIyMj IwotIAotZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvbGlibnRpcnBjLm1hcC5pbi5jbWFrZSBudGly cGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvbGlibnRpcnBj Lm1hcC5pbi5jbWFrZQotLS0tIG50aXJwYy03LjIvc3JjL2xpYm50aXJwYy5tYXAuaW4uY21ha2UJ MjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBudGlycGMtYmIzMzNjY2Ey ZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvbGlibnRpcnBjLm1hcC5pbi5jbWFr ZQkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTY2LDEwICs2NiwxMyBA QAotICAgICBjbG50X3JlcV93YWl0X3JlcGx5OwotICAgICBjbG50X3NwZXJybm87Ci0gICAgIGNs bnRfdGxpX2NyZWF0ZTsKLSsgICAgY2xudF90bGlfbmNyZWF0ZV9vcHQ7Ci0gICAgIGNsbnRfdHBf bmNyZWF0ZV90aW1lZDsKLSAgICAgY2xudF92Y19nZXRfY2xpZW50X3hwcnQ7Ci0gICAgIGNsbnRf dmNfbmNyZWF0ZWY7Ci0gICAgIGNsbnRfdmNfbmNyZWF0ZV9zdmM7Ci0rICAgIGNsbnRfcmRtYV9j cmVhdGU7Ci0rICAgIGNsbnRfcmRtYV9uY3JlYXRlZjsKLSAKLSAgICAgIyBlKgotICAgICBlbmRu ZXRjb25maWc7Ci1kaWZmIC11ciBudGlycGMtNy4yL3NyYy9sdHRuZy9DTWFrZUxpc3RzLnR4dCBu dGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvbHR0bmcv Q01ha2VMaXN0cy50eHQKLS0tLSBudGlycGMtNy4yL3NyYy9sdHRuZy9DTWFrZUxpc3RzLnR4dAky MDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJm NGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9sdHRuZy9DTWFrZUxpc3RzLnR4dAky MDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTIyLDcgKzIyLDcgQEAKLSAg IFNPVkVSU0lPTiAiJHtOVElSUENfTUFKT1JfVkVSU0lPTn0ke05USVJQQ19NSU5PUl9WRVJTSU9O fSIKLSApCi0gCi0taW5zdGFsbChUQVJHRVRTIG50aXJwY190cmFjZXBvaW50cyBDT01QT05FTlQg dHJhY2luZyBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0gKQotK2luc3RhbGwoVEFSR0VU UyBudGlycGNfdHJhY2Vwb2ludHMgQ09NUE9ORU5UIHRyYWNpbmcgREVTVElOQVRJT04gJHtDTUFL RV9JTlNUQUxMX0xJQkRJUn0gKQotIAotIGFkZF9saWJyYXJ5KG50aXJwY19sdHRuZyBTVEFUSUMg bHR0bmdfZGVmaW5lcy5jKQotICNhZGRfc2FuaXRpemVycyhudGlycGNfbHR0bmcpCi1kaWZmIC11 ciBudGlycGMtNy4yL3NyYy9tZXRyaWNzX2xpYm50aXJwYy5oIG50aXJwYy1iYjMzM2NjYTJmNGFm Mzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9tZXRyaWNzX2xpYm50aXJwYy5oCi0tLS0g bnRpcnBjLTcuMi9zcmMvbWV0cmljc19saWJudGlycGMuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAw MDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4 NzZlY2JkNjMzL3NyYy9tZXRyaWNzX2xpYm50aXJwYy5oCTIwMjYtMDYtMTEgMTQ6MTI6MTcuMDAw MDAwMDAwIC0wNDAwCi1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlIDxycGMvYXV0aF9nc3Mu aD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8cnBjL2F1dGhfc3RhdC5oPgotKyNpbmNsdWRlIDx0aW1l Lmg+Ci0gCi0gdHlwZWRlZiBlbnVtIGdzc19zdmNfYXV0aF9zdGVwIHsKLSAJVkFMSURBVEVfQVVU SF9EQVRBID0gMCwKLWRpZmYgLXVyIG50aXJwYy03LjIvc3JjL21vbml0b3JpbmcvQ01ha2VMaXN0 cy50eHQgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3Jj L21vbml0b3JpbmcvQ01ha2VMaXN0cy50eHQKLS0tLSBudGlycGMtNy4yL3NyYy9tb25pdG9yaW5n L0NNYWtlTGlzdHMudHh0CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysg bnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL21vbml0 b3JpbmcvQ01ha2VMaXN0cy50eHQJMjAyNi0wNi0xMSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAK LUBAIC04LDEzICs4LDEzIEBACi0gCi0gYWRkX2xpYnJhcnkobnRpcnBjbW9uaXRvcmluZyBTSEFS RUQgJHtudGlycGNtb25pdG9yaW5nX1NSQ1N9KQotIGFkZF9zYW5pdGl6ZXJzKG50aXJwY21vbml0 b3JpbmcpCi0tc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG50aXJwY21vbml0b3JpbmcgUFJPUEVSVElF UyBDT01QSUxFX0ZMQUdTICItZlBJQyIKLStzZXRfdGFyZ2V0X3Byb3BlcnRpZXMobnRpcnBjbW9u aXRvcmluZyBQUk9QRVJUSUVTCi0gICBWRVJTSU9OICR7TlRJUlBDX1ZFUlNJT059Ci0gICBTT1ZF UlNJT04gIiR7TlRJUlBDX01BSk9SX1ZFUlNJT059JHtOVElSUENfTUlOT1JfVkVSU0lPTn0iCi0g ICApCi0gdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMobnRpcnBjbW9uaXRvcmluZyAgICAgUFJJ VkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcHJvbWV0aGV1cy1jcHAtbGl0ZS9jb3Jl L2luY2x1ZGUpCi0gc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1wZWRh bnRpYy1lcnJvcnMgLVdlcnJvciAtV2FsbCAtV2V4dHJhIikKLS1pbnN0YWxsKFRBUkdFVFMgbnRp cnBjbW9uaXRvcmluZyBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0pCi0raW5zdGFsbChU QVJHRVRTIG50aXJwY21vbml0b3JpbmcgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJ Un0pCi0gCi0gIyMjIyMjIyMjIyMgaW5zdGFsbCBmaWxlcyAjIyMjIyMjIyMjIyMjIyMKLS1pbnN0 YWxsKEZJTEVTICBpbmNsdWRlL21vbml0b3JpbmcuaCBERVNUSU5BVElPTiBpbmNsdWRlL250aXJw YykKLStpbnN0YWxsKEZJTEVTICBpbmNsdWRlL21vbml0b3JpbmcuaCBERVNUSU5BVElPTiAke0NN QUtFX0lOU1RBTExfSU5DTFVERURJUn0vbnRpcnBjKQotZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMv cnBjYl9jbG50LmMgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2 MzMvc3JjL3JwY2JfY2xudC5jCi0tLS0gbnRpcnBjLTcuMi9zcmMvcnBjYl9jbG50LmMJMjAyNS0w OS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBudGlycGMtYmIzMzNjY2EyZjRhZjM3 OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvcnBjYl9jbG50LmMJMjAyNi0wNi0xMSAxNDox MjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC0yODQsNyArMjg0LDcgQEAKLSAJaWYgKGFkX2NhY2hl ICE9IE5VTEwpIHsKLSAJCWFkZHIgPSBhZF9jYWNoZS0+YWNfdGFkZHI7Ci0gCQljbGllbnQgPQot LQkJICAgIGNsbnRfdGxpX25jcmVhdGUoUlBDX0FOWUZELCBuY29uZiwgYWRkciwKLSsJCSAgICBj bG50X3RsaV9uY3JlYXRlKFJQQ19BTllGRCwgbmNvbmYsIE5VTEwsIGFkZHIsCi0gCQkJCSAgICAg KHJwY3Byb2dfdCkgUlBDQlBST0csCi0gCQkJCSAgICAgKHJwY3ZlcnNfdCkgUlBDQlZFUlM0LCAw LCAwKTsKLSAJCWlmIChDTE5UX1NVQ0NFU1MoY2xpZW50KSkgewotQEAgLTQwMCw3ICs0MDAsNyBA QAotIAkJfQotICNlbmRpZgotIAkJY2xpZW50ID0KLS0JCSAgICBjbG50X3RsaV9uY3JlYXRlKFJQ Q19BTllGRCwgbmNvbmYsICZ0YWRkciwKLSsJCSAgICBjbG50X3RsaV9uY3JlYXRlKFJQQ19BTllG RCwgbmNvbmYsIE5VTEwsICZ0YWRkciwKLSAJCQkJICAgICAocnBjcHJvZ190KSBSUENCUFJPRywK LSAJCQkJICAgICAocnBjdmVyc190KSBSUENCVkVSUzQsIDAsIDApOwotIAkJaWYgKENMTlRfU1VD Q0VTUyhjbGllbnQpKSB7Ci1kaWZmIC11ciBudGlycGMtNy4yL3NyYy9ycGNfY29tLmggbnRpcnBj LWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3JwY19jb20uaAot LS0tIG50aXJwYy03LjIvc3JjL3JwY19jb20uaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAw MCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2Jk NjMzL3NyYy9ycGNfY29tLmgJMjAyNi0wNi0xMSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBA IC01NCw4ICs1NCwxMyBAQAotICNkZWZpbmUgUlBDX01BWEFERFJTSVpFIDEwMjQKLSAKLSAjaWZu ZGVmIF9fUlBDX0dFVFhJRAotKyNpZmRlZiBfX1JQQ19HRVRYSURfTEVHQUNZCi0gI2RlZmluZSBf X1JQQ19HRVRYSUQobm93KSAoKHVfaW50MzJfdClnZXRwaWQoKSBeICh1X2ludDMyX3QpKG5vdykt PnR2X3NlYyBeIFwKLSAJCQkgICAodV9pbnQzMl90KSgobm93KS0+dHZfbnNlYykpCi0rI2Vsc2UK LSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2RlZmluZSBfX1JQQ19HRVRYSUQobm93KSAoKHVfaW50 MzJfdClyYW5kb20oKSkKLSsjZW5kaWYKLSAjZW5kaWYJCQkJLyogIV9fUlBDX0dFVFhJRCAqLwot IAotIF9fQkVHSU5fREVDTFMKLWRpZmYgLXVyIG50aXJwYy03LjIvc3JjL3JwY19kcGx4X2ludGVy bmFsLmggbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3Jj L3JwY19kcGx4X2ludGVybmFsLmgKLS0tLSBudGlycGMtNy4yL3NyYy9ycGNfZHBseF9pbnRlcm5h bC5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMz Y2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3JwY19kcGx4X2ludGVybmFs LmgJMjAyNi0wNi0xMSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC0zNCw2ICszNCw3IEBA Ci0gI2luY2x1ZGUgPHJwYy94ZHJfaW9xLmg+Ci0gI2luY2x1ZGUgPHJwYy9wb29sX3F1ZXVlLmg+ Ci0gI2luY2x1ZGUgPHJwYy9oYXByb3h5Lmg+Ci0rI2luY2x1ZGUgInJwY19jb20uaCIKLSAKLSAv KiBTdmMgZXZlbnQgc3RyYXRlZ3kgKi8KLSBlbnVtIHN2Y19ldmVudF90eXBlIHsKLUBAIC01Nyw2 ICs1OCw3IEBACi0gCXN0cnVjdCB4ZHJfaW9xIGlvcTsKLSAJc3RydWN0IHBvb2xxX2hlYWQgd3Jp dGVxOwkvKio8IHBvb2xxIGZvciB3cml0ZSByZXF1ZXN0cyAqLwotIAlzdHJ1Y3Qgb3ByX3JidHJl ZSBjYWxsX3JlcGxpZXM7Ci0rCXN0cnVjdCBvcHJfcmJ0cmVlIHJkbWFfY2FsbF9leHBpcmVzOwkv Kio8IGNhbGwgZXhwaXJhdGlvbiB0cmVlIGZvciBSRE1BICovCi0gCXN0cnVjdCBvcHJfcmJ0cmVl X25vZGUgZmRfbm9kZTsKLSAJc3RydWN0IHsKLSAJCXJwY19kcGx4X2xvY2tfdCBsb2NrOwotQEAg LTExNCwxMSArMTE2LDE2IEBACi0gCWNvbmRfZGVzdHJveSgmbG9jay0+d2UuY3YpOwotIH0KLSAK LSsvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBjYWxsX2V4cGlyZXMgY29tcGFyaXNvbiBmdW5j dGlvbiAqLwotK2ludCBzdmNfcnFzdF9leHBpcmVfY21wZihjb25zdCBzdHJ1Y3Qgb3ByX3JidHJl ZV9ub2RlICpsaHMsCi0rCQkJIGNvbnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKnJocyk7Ci0r Ci0gc3RhdGljIGlubGluZSB2b2lkCi0gcnBjX2RwbHhfcmVjX2luaXQoc3RydWN0IHJwY19kcGx4 X3JlYyAqcmVjKQotIHsKLSAJcnBjX2RwbHhfbG9ja19pbml0KCZyZWMtPnJlY3YubG9jayk7Ci0g CW9wcl9yYnRyZWVfaW5pdCgmcmVjLT5jYWxsX3JlcGxpZXMsIGNsbnRfcmVxX3hpZF9jbXBmKTsK LSsJb3ByX3JidHJlZV9pbml0KCZyZWMtPnJkbWFfY2FsbF9leHBpcmVzLCBzdmNfcnFzdF9leHBp cmVfY21wZik7Ci0gCW11dGV4X2luaXQoJnJlYy0+eHBydC54cF9sb2NrLCBOVUxMKTsKLSAJVEFJ TFFfSU5JVCgmcmVjLT53cml0ZXEucWgpOwotIAltdXRleF9pbml0KCZyZWMtPndyaXRlcS5xbXV0 ZXgsIE5VTEwpOwotQEAgLTEyNyw2ICsxMzQsNyBAQAotIAkodm9pZCljbG9ja19nZXR0aW1lKENM T0NLX01PTk9UT05JQ19GQVNULCAmKHJlYy0+cmVjdi50cykpOwotIAotIAlyZWMtPnhwcnQueHBf cmVmY250ID0gMTsKLSsJcmVjLT5jYWxsX3hpZCA9IF9fUlBDX0dFVFhJRCgmKHJlYy0+cmVjdi50 cykpOwotIAotIAkvLyBJbml0IFRMViBoZWFkZXJzLCBuZXR3b3JrIGlkIHZhbHVlcyBpbiBjYXNl IHRoZXkgYXJlIG5vdCBzZXQgbGF0ZXIgb24KLSAJcmVjLT54cHJ0LnByb3h5X3Byb3RvY29sX3Rs dl9oZWFkZXJzLnRsdl9jb3VudCA9IDA7Ci1kaWZmIC11ciBudGlycGMtNy4yL3NyYy9ycGNfZ2Vu ZXJpYy5jIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3Ny Yy9ycGNfZ2VuZXJpYy5jCi0tLS0gbnRpcnBjLTcuMi9zcmMvcnBjX2dlbmVyaWMuYwkyMDI1LTA5 LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5 ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9ycGNfZ2VuZXJpYy5jCTIwMjYtMDYtMTEgMTQ6 MTI6MTcuMDAwMDAwMDAwIC0wNDAwCi1AQCAtNjg5LDcgKzY4OSw3IEBACi0gfQotIAotIGludAot LV9fcnBjX25jb25mMmZkX2ZsYWdzKGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKm5jb25mLCBpbnQg ZmxhZ3MpCi0rX19ycGNfbmNvbmYyZmRfZmxhZ3Nfb3B0KGNvbnN0IHN0cnVjdCBuZXRjb25maWcg Km5jb25mLCBpbnQgZmxhZ3MsIGludCBvcHQpCi0gewotIAlzdHJ1Y3QgX19ycGNfc29ja2luZm8g c2k7Ci0gCWludCBmZDsKLUBAIC03MDEsOSArNzAxLDExIEBACi0gCWlmICgoZmQgPj0gMCkgJiYK LSAJICAgIChzaS5zaV9hZiA9PSBBRl9JTkVUNikpIHsKLSAjaWZkZWYgU09MX0lQVjYKLS0JCWlu dCB2YWwgPSAxOwotLQkJKHZvaWQpIHNldHNvY2tvcHQoZmQsIFNPTF9JUFY2LCBJUFY2X1Y2T05M WSwgJnZhbCwKLS0JCQkJICBzaXplb2YodmFsKSk7Ci0rCQlpZiAoKG9wdCAmIElQVjZfVjZPTkxZ KSAhPSAwKSB7Ci0rCQkJaW50IHZhbCA9IDE7Ci0rCQkJKHZvaWQpIHNldHNvY2tvcHQoZmQsIFNP TF9JUFY2LCBJUFY2X1Y2T05MWSwgJnZhbCwKLSsJCQkJCSAgc2l6ZW9mKHZhbCkpOwotKwkJfQot ICNlbmRpZgotIAl9Ci0gCi1AQCAtNzExLDEyICs3MTMsNiBAQAotIH0KLSAKLSBpbnQKLS1fX3Jw Y19uY29uZjJmZChjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZikKLS17Ci0tCXJldHVybiBf X3JwY19uY29uZjJmZF9mbGFncyhuY29uZiwgMCk7Ci0tfQotLQotLWludAotIF9fcnBjX3NvY2tp bmZvMm5ldGlkKHN0cnVjdCBfX3JwY19zb2NraW5mbyAqc2lwLCBjb25zdCBjaGFyICoqbmV0aWQp Ci0gewotIAlpbnQgaTsKLWRpZmYgLXVyIG50aXJwYy03LjIvc3JjL3JwY19yZG1hLmMgbnRpcnBj LWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3JwY19yZG1hLmMK LS0tLSBudGlycGMtNy4yL3NyYy9ycGNfcmRtYS5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAw MDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVj YmQ2MzMvc3JjL3JwY19yZG1hLmMJMjAyNi0wNi0xMSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAK LUBAIC03NCw2ICs3NCw3IEBACi0gI2luY2x1ZGUgIm1pc2MvYWJzdHJhY3RfYXRvbWljLmgiCi0g I2luY2x1ZGUgInJwY19yZG1hLmgiCi0gI2luY2x1ZGUgInN2Y19pbnRlcm5hbC5oIgotKyNpbmNs dWRlICJjbG50X2ludGVybmFsLmgiCi0gCi0gI2lmZGVmIEhBVkVfVkFMR1JJTkRfTUVNQ0hFQ0tf SAotICMgIGluY2x1ZGUgPHZhbGdyaW5kL21lbWNoZWNrLmg+Ci1AQCAtMzI5LDcgKzMzMCw3IEBA Ci0gCWludCBjbGVhbnVwX2NvdW50ID0gMDsKLSAJc3RydWN0IHBvb2xxX2hlYWQgKmlvcWggPSAm cmRtYV94cHJ0LT5jYmNsaXN0OwotIAotLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQs ICIlcygpIGJlZm9yZSBjbGVhbnVwICIKLSsJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19S RE1BLCAiJXMoKSBiZWZvcmUgY2xlYW51cCAiCi0gCSAgICAiJXAgeHBfcmVmY250ICVkIGFjdGl2 ZSByZXF1ZXN0cyAlZCBxY291bnQgJWQiLAotIAkgICAgX19mdW5jX18sICZyZG1hX3hwcnQtPnNt X2RyLnhwcnQsCi0gCSAgICByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcmVmY250LCByZG1hX3hw cnQtPmFjdGl2ZV9yZXF1ZXN0cywKLUBAIC0zNzYsNyArMzc3LDcgQEAKLSAJCQkJY2JjX3JlbGVh c2UgPSB0cnVlOwotIAkJCQljYmNfcmVsZWFzZV9jb3VudCA9IGNiYy0+d3JpdGVfd2FpdHM7Ci0g Ci0tCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVzIGFjdGl2ZSBjYmMgJXAg IgotKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlcyBhY3RpdmUgY2Jj ICVwICIKLSAJCQkJICAgICJjYmNfcmVmICVkIHJlYWRfd2FpdHMgJWQgd3JpdGVfd2FpdHMgJWQg IgotIAkJCQkgICAgImFjdGl2ZSByZXF1ZXN0cyAlZCByZG1hX3hwcnQgJXAiLAotIAkJCQkgICAg X19mdW5jX18sIGNiYywgY2JjLT5yZWZjbnQsIGNiYy0+cmVhZF93YWl0cywKLUBAIC0zODYsNyAr Mzg3LDcgQEAKLSAKLSAJCQlpZiAoIWNiY19yZWxlYXNlKSB7Ci0gCQkJCS8qIFBlbmRpbmcgcmVx dWVzdCBzaG91bGQgY2xlYW51cCB0aGlzIGNiYyAqLwotLQkJCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfRVZFTlQsICIlcyBhY3RpdmUgY2JjICVwICIKLSsJCQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX1JQQ19SRE1BLCAiJXMgYWN0aXZlIGNiYyAlcCAiCi0gCQkJCSAgICAiY2JjX3JlZiAl ZCByZWFkX3dhaXRzICVkIHdyaXRlX3dhaXRzICVkICIKLSAJCQkJICAgICJhY3RpdmUgcmVxdWVz dHMgJWQgcmRtYV94cHJ0ICVwIiwKLSAJCQkJICAgIF9fZnVuY19fLCBjYmMsIGNiYy0+cmVmY250 LCBjYmMtPnJlYWRfd2FpdHMsCi1AQCAtNDE3LDcgKzQxOCw3IEBACi0gCi0gCXB0aHJlYWRfbXV0 ZXhfdW5sb2NrKCZpb3FoLT5xbXV0ZXgpOwotIAotLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVZFTlQsICIlcygpIGFmdGVyIGNsZWFudXAgIgotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsICIlcygpIGFmdGVyIGNsZWFudXAgIgotIAkgICAgIiVwIHhwX3JlZmNudCAlZCBh Y3RpdmUgcmVxdWVzdHMgJWQgY2xlYW51cCBjb3VudCAlZCAiCi0gCSAgICAicWNvdW50ICVkIiwK LSAJICAgIF9fZnVuY19fLCAmcmRtYV94cHJ0LT5zbV9kci54cHJ0LAotQEAgLTUxNSw3ICs1MTYs NyBAQAotIAotIAkJcnBjX3JkbWFfc3RhdGUuY3FfdGhyZWFkX2lkc1tycGNfcmRtYV9zdGF0ZS5j cV90aHJlYWRfY291bnRdID0gdGhyaWQ7Ci0gCi0tCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVZFTlQsCi0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCi0gCQkJIiVzKCkg dGhyZWFkICVseCBzcGF3bmVkIGZvciBlcG9sbCAlZCIsCi0gCQkJX19mdW5jX18sCi0gCQkJKHVu c2lnbmVkIGxvbmcpdGhyaWQsCi1AQCAtNjYxLDcgKzY2Miw3IEBACi0gCQlyZXR1cm4gcmM7Ci0g CX0KLSAKLS0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfUlBDX1JETUEsCi0gCQkiJXA6cnBjX3JkbWFfZmRfYWRkIGZkOiVkIGVwb2xs ZmQ6JWQiLAotIAkJcHRocmVhZF9zZWxmKCksIGZkLCBlcG9sbGZkKTsKLSAKLUBAIC02NzEsNyAr NjcyLDcgQEAKLSBpbnQKLSBycGNfcmRtYV9mZF9kZWwoaW50IGZkLCBpbnQgZXBvbGxmZCkKLSB7 Ci0tCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKLSsJX193YXJueChUSVJQQ19ERUJV R19GTEFHX1JQQ19SRE1BLAotIAkJIiVwOnJwY19yZG1hX2ZkX2RlbCBmZDolZCBlcG9sbGZkOiVk IiwKLSAJCXB0aHJlYWRfc2VsZigpLCBmZCwgZXBvbGxmZCk7Ci0gCi1AQCAtODQ0LDggKzg0NSw4 IEBACi0gICoKLSAgKiBAcmV0dXJuIDAgb24gc3VjY2Vzcywgd29yayBjb21wbGV0aW9uIHN0YXR1 cyBpZiBub3QgMAotICAqLwotLXN0YXRpYyBpbnQKLS1ycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVy KFJETUFYUFJUICpyZG1hX3hwcnQpCi0raW50Ci0rcnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihS RE1BWFBSVCAqcmRtYV94cHJ0LCBpbnQgZXhwZWN0ZWRfcG9sbF9jb3VudCkKLSB7Ci0gCXN0cnVj dCBpYnZfd2Mgd2NbSUJWX1BPTExfRVZFTlRTXTsKLSAJc3RydWN0IGlidl9jcSAqZXZfY3E7Ci1A QCAtODU4LDYgKzg1OSw5IEBACi0gCXVpbnQzMl90IGxlbjsKLSAJaW50IHBvbGxfY291bnQgPSBJ QlZfUE9MTF9DT1VOVDsKLSAKLSsJaWYgKGV4cGVjdGVkX3BvbGxfY291bnQpCi0rCQlwb2xsX2Nv dW50ID0gZXhwZWN0ZWRfcG9sbF9jb3VudDsKLSsKLSAJcmMgPSBpYnZfZ2V0X2NxX2V2ZW50KHJk bWFfeHBydC0+Y29tcF9jaGFubmVsLCAmZXZfY3EsICZldl9jdHgpOwotIAlpZiAocmMpIHsKLSAJ CXJjID0gZXJybm87Ci1AQCAtMTA0Nyw2ICsxMDUxLDU2IEBACi0gfQotIAotIC8qKgotKyAqIHJw Y19yZG1hX3Byb2Nlc3NfdHJhbnNwb3J0X2V4cGlyZXM6IHByb2Nlc3MgZXhwaXJlZCBjbGllbnQg cmVxdWVzdHMgZm9yIGEgc3BlY2lmaWMgUkRNQSB0cmFuc3BvcnQKLSsgKiBTaW1pbGFyIHRvIHRo ZSBjYWxsX2V4cGlyZXMgcHJvY2Vzc2luZyBpbiBzdmNfcnFzdF9lcG9sbF9sb29wCi0rICoKLSsg KiBAcGFyYW1bSU5dIHJkbWFfeHBydCBSRE1BIHRyYW5zcG9ydCB0byBwcm9jZXNzCi0rICogQHBh cmFtW0lOXSBleHBpcmVfbXMgY3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcwotKyAqIEBwYXJh bVtJTk9VVF0gdGltZW91dF9tcyBwb2ludGVyIHRvIHRpbWVvdXQgdmFsdWUgdG8gYmUgdXBkYXRl ZAotKyAqLwotK3N0YXRpYyB2b2lkCi0rcnBjX3JkbWFfcHJvY2Vzc190cmFuc3BvcnRfZXhwaXJl cyhSRE1BWFBSVCAqcmRtYV94cHJ0LCBpbnQgZXhwaXJlX21zLCBpbnQgKnRpbWVvdXRfbXMpCi0r ewotKwlzdHJ1Y3QgY2xudF9yZXEgKmNjOwotKwlzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpuX25v ZGU7Ci0rCXN0cnVjdCBycGNfZHBseF9yZWMgKnJlYzsKLSsJaW50IG1pbl90aW1lb3V0ID0gKnRp bWVvdXRfbXM7Ci0rCi0rCWlmICghcmRtYV94cHJ0KQotKwkJcmV0dXJuOwotKwotKwlyZWMgPSAm cmRtYV94cHJ0LT5zbV9kcjsKLSsKLSsJLyogUHJvY2VzcyByZG1hX2NhbGxfZXhwaXJlcyBmb3Ig dGhpcyB0cmFuc3BvcnQgLSBzaW1pbGFyIHRvIHN2Y19ycXN0X2Vwb2xsX2xvb3AgKi8KLSsJcnBj X2RwbHhfcmxpKHJlYyk7Ci0rCXdoaWxlICgobl9ub2RlID0gb3ByX3JidHJlZV9maXJzdCgmcmVj LT5yZG1hX2NhbGxfZXhwaXJlcykpKSB7Ci0rCQljYyA9IG9wcl9jb250YWluZXJvZihuX25vZGUs IHN0cnVjdCBjbG50X3JlcSwgY2NfcnFzdCk7Ci0rCi0rCQlpZiAoY2MtPmNjX2V4cGlyZV9tcyA+ IGV4cGlyZV9tcykgewotKwkJCWludCB0cmFuc3BvcnRfdGltZW91dCA9IGNjLT5jY19leHBpcmVf bXMgLSBleHBpcmVfbXM7Ci0rCQkJaWYgKHRyYW5zcG9ydF90aW1lb3V0IDwgbWluX3RpbWVvdXQp IHsKLSsJCQkJbWluX3RpbWVvdXQgPSB0cmFuc3BvcnRfdGltZW91dDsKLSsJCQl9Ci0rCQkJYnJl YWs7Ci0rCQl9Ci0rCi0rCQkvKiBvcmRlciBkZXBlbmRlbnQgKi8KLSsJCWF0b21pY19jbGVhcl91 aW50MTZfdF9iaXRzKCZjYy0+Y2NfZmxhZ3MsCi0rCQkJCQkgICBDTE5UX1JFUV9GTEFHX0VYUElS SU5HKTsKLSsJCW9wcl9yYnRyZWVfcmVtb3ZlKCZyZWMtPnJkbWFfY2FsbF9leHBpcmVzLCAmY2Mt PmNjX3Jxc3QpOwotKwkJY2MtPmNjX2V4cGlyZV9tcyA9IDA7CS8qIGF0b21pYyBiYXJyaWVyKHMp ICovCi0rCi0rCQlhdG9taWNfaW5jX3VpbnQzMl90KCZjYy0+Y2NfcmVmY250KTsKLSsJCWNjLT5j Y193cGUuZnVuID0gc3ZjX3Jxc3RfZXhwaXJlX3Rhc2s7Ci0rCQljYy0+Y2Nfd3BlLmFyZyA9IE5V TEw7Ci0rCQl3b3JrX3Bvb2xfc3VibWl0KCZzdmNfd29ya19wb29sLCAmY2MtPmNjX3dwZSk7Ci0r CX0KLSsJcnBjX2RwbHhfcnVpKHJlYyk7Ci0rCi0rCSp0aW1lb3V0X21zID0gbWluX3RpbWVvdXQ7 Ci0rfQotKwotKy8qKgotICAqIHJwY19yZG1hX2NxX3RocmVhZDogdGhyZWFkIGZ1bmN0aW9uIHdo aWNoIHdhaXRzIGZvciBuZXcgY29tcGxldGlvbiBldmVudHMKLSAgKiBhbmQgZ2l2ZXMgdGhlbSB0 byBoYW5kbGVyICh0aGVuIGFjayB0aGUgZXZlbnQpCi0gICoKLUBAIC0xMDU2LDI0ICsxMTEwLDMw IEBACi0gewotIAlSRE1BWFBSVCAqcmRtYV94cHJ0OwotIAlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXBv bGxfZXZlbnRzW0VQT0xMX0VWRU5UU107Ci0rCXN0cnVjdCB0aW1lc3BlYyB0czsKLSsJaW50IHRp bWVvdXRfbXM7Ci0rCWludCBleHBpcmVfbXM7Ci0gCWludCBpOwotIAlpbnQgbjsKLSAJaW50IHJj OwotIAlpbnQgZXBvbGxmZCA9ICooKGludCAqKSBhcmcpOwotIAotLQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVZFTlQsCi0tCQkiJXAsIFN0YXJ0aW5nIHJwY19yZG1hX2NxX3RocmVhZCBlcG9s bGZkOiVkIiwKLS0JCXB0aHJlYWRfc2VsZigpLCBlcG9sbGZkKTsKLS0KLS0JX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEs Ci0gCQkiJXAsIFN0YXJ0aW5nIHJwY19yZG1hX2NxX3RocmVhZCBlcG9sbGZkOiVkIiwKLSAJCXB0 aHJlYWRfc2VsZigpLCBlcG9sbGZkKTsKLSAKLSAJcmN1X3JlZ2lzdGVyX3RocmVhZCgpOwotIAot IAl3aGlsZSAocnBjX3JkbWFfc3RhdGUucnVuX2NvdW50ID4gMCkgewotKwkJdGltZW91dF9tcyA9 IEVQT0xMX1dBSVRfTVM7Ci0rCi0rCQkvKiBQcm9jZXNzIGNhbGxfZXhwaXJlcyBmb3IgUkRNQSB0 cmFuc3BvcnRzICovCi0rCQkvKiBjb2Fyc2UgbnNlYywgbm90IHN5c3RlbSB0aW1lICovCi0rCQko dm9pZCljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQ19GQVNULCAmdHMpOwotKwkJZXhwaXJl X21zID0gdGltZXNwZWNfbXMoJnRzKTsKLSsKLSAJCW4gPSBlcG9sbF93YWl0KGVwb2xsZmQsCi0t CQkJCWVwb2xsX2V2ZW50cywgRVBPTExfRVZFTlRTLCBFUE9MTF9XQUlUX01TKTsKLSsJCQkJZXBv bGxfZXZlbnRzLCBFUE9MTF9FVkVOVFMsIHRpbWVvdXRfbXMpOwotIAkJaWYgKG4gPT0gMCkKLSAJ CQljb250aW51ZTsKLSAKLUBAIC0xMDk4LDYgKzExNTgsOSBAQAotIAkJCQljb250aW51ZTsKLSAJ CQl9Ci0gCi0rCQkJLyogUHJvY2VzcyBjYWxsX2V4cGlyZXMgZm9yIHRoaXMgUkRNQSB0cmFuc3Bv cnQgKi8KLSsJCQlycGNfcmRtYV9wcm9jZXNzX3RyYW5zcG9ydF9leHBpcmVzKHJkbWFfeHBydCwg ZXhwaXJlX21zLCAmdGltZW91dF9tcyk7Ci0rCi0gCQkJaWYgKGVwb2xsX2V2ZW50c1tpXS5ldmVu dHMgPT0gRVBPTExFUlIKLSAJCQkgfHwgZXBvbGxfZXZlbnRzW2ldLmV2ZW50cyA9PSBFUE9MTEhV UCkgewotIAkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCi1AQCAtMTExNiw3ICsx MTc5LDcgQEAKLSAKLSAJCQltdXRleF9sb2NrKCZyZG1hX3hwcnQtPmNtX2xvY2spOwotIAotLQkJ CXJjID0gcnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihyZG1hX3hwcnQpOwotKwkJCXJjID0gcnBj X3JkbWFfY3FfZXZlbnRfaGFuZGxlcihyZG1hX3hwcnQsIDApOwotIAkJCWlmIChyYykgewotIAkJ CQlTVkNfREVTVFJPWSgmcmRtYV94cHJ0LT5zbV9kci54cHJ0KTsKLSAJCQl9Ci1AQCAtMTE2MSw3 ICsxMjI0LDcgQEAKLSAKLSAJc3dpdGNoIChldmVudC0+ZXZlbnQpIHsKLSAJY2FzZSBSRE1BX0NN X0VWRU5UX0FERFJfUkVTT0xWRUQ6Ci0tCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQs Ci0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCi0gCQkJIiVzKCkgJXAgQURE Ul9SRVNPTFZFRCIsCi0gCQkJX19mdW5jX18sIHJkbWFfeHBydCk7Ci0gCQltdXRleF9sb2NrKCZy ZG1hX3hwcnQtPmNtX2xvY2spOwotQEAgLTExNzEsNyArMTIzNCw3IEBACi0gCQlicmVhazsKLSAK LSAJY2FzZSBSRE1BX0NNX0VWRU5UX1JPVVRFX1JFU09MVkVEOgotLQkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VWRU5ULAotKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAot IAkJCSIlcygpICVwIFJPVVRFX1JFU09MVkVEIiwKLSAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0KTsK LSAJCW11dGV4X2xvY2soJnJkbWFfeHBydC0+Y21fbG9jayk7Ci1AQCAtMTE4MSwyNiArMTI0NCwy OCBAQAotIAkJYnJlYWs7Ci0gCi0gCWNhc2UgUkRNQV9DTV9FVkVOVF9FU1RBQkxJU0hFRDoKLS0J CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKLSsJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19SUENfUkRNQSwKLSAJCQkiJXMoKSAlcCBFU1RBQkxJU0hFRCIsCi0gCQkJX19mdW5jX18s IHJkbWFfeHBydCk7Ci0gCi0gCQlyZG1hX3hwcnQtPnN0YXRlID0gUkRNQVhTX0NPTk5FQ1RFRDsK LSAKLS0JCWludCBjcV9mZCA9IHJkbWFfeHBydC0+Y29tcF9jaGFubmVsLT5mZDsKLS0JCWludCBj cV90aHJlYWRfaW5kZXggPSBjcV9mZCAlIE5VTV9DUV9FUE9MTF9USFJFQURTOwotLQkJcmMgPSBy cGNfcmRtYV9mZF9hZGQocmRtYV94cHJ0LCBjcV9mZCwKLSsJCWlmIChyZG1hX3hwcnQtPnNlcnZl cikgewotKwkJCWludCBjcV9mZCA9IHJkbWFfeHBydC0+Y29tcF9jaGFubmVsLT5mZDsKLSsJCQlp bnQgY3FfdGhyZWFkX2luZGV4ID0gY3FfZmQgJSBOVU1fQ1FfRVBPTExfVEhSRUFEUzsKLSsJCQly YyA9IHJwY19yZG1hX2ZkX2FkZChyZG1hX3hwcnQsIGNxX2ZkLAotIAkJCQkgICAgIHJwY19yZG1h X3N0YXRlLmNxX2Vwb2xsZmRbY3FfdGhyZWFkX2luZGV4XSk7Ci0tCQlpZiAocmMpIHsKLS0JCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCi0tCQkJCSIlczoldSBFUlJPUiAocmV0dXJu KSIsCi0tCQkJCV9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCQkJaWYgKHJjKSB7Ci0rCQkJCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKLSsJCQkJCSIlczoldSBFUlJPUiAocmV0dXJuKSIs Ci0rCQkJCQlfX2Z1bmNfXywgX19MSU5FX18pOwotKwkJCX0KLSsJCQlycGNfcmRtYV9zdGF0c19h ZGQocmRtYV94cHJ0KTsKLSAJCX0KLS0JCXJwY19yZG1hX3N0YXRzX2FkZChyZG1hX3hwcnQpOwot IAkJYnJlYWs7Ci0gCi0gCWNhc2UgUkRNQV9DTV9FVkVOVF9DT05ORUNUX1JFUVVFU1Q6Ci0tCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCi0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfUlBDX1JETUEsCi0gCQkJIiVzKCkgJXAgQ09OTkVDVF9SRVFVRVNUIiwKLSAJCQlfX2Z1bmNf XywgcmRtYV94cHJ0KTsKLSAJCXJwY19yZG1hX3N0YXRlLmNfci5pZF9xdWV1ZVswXSA9IGNtX2lk OwotQEAgLTEyMjMsNyArMTI4OCw3IEBACi0gCQlicmVhazsKLSAKLSAJY2FzZSBSRE1BX0NNX0VW RU5UX0RJU0NPTk5FQ1RFRDoKLS0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKLSsJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKLSAJCQkiJXMoKSAlcFsldV0gRElT Q09OTkVDVCBFVkVOVC4uLiIsCi0gCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5z dGF0ZSk7Ci0gCi1AQCAtMTIzMiwxNCArMTI5NywxNCBAQAotIAkJYnJlYWs7Ci0gCi0gCWNhc2Ug UkRNQV9DTV9FVkVOVF9ERVZJQ0VfUkVNT1ZBTDoKLS0JCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FVkVOVCwKLSsJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKLSAJCQkiJXMo KSAlcFsldV0gY21hIGRldGVjdGVkIGRldmljZSByZW1vdmFsISEhISIsCi0gCQkJX19mdW5jX18s IHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSk7Ci0gCQlyYyA9IEVOT0RFVjsKLSAJCWJyZWFr OwotIAotIAljYXNlIFJETUFfQ01fRVZFTlRfVElNRVdBSVRfRVhJVDoKLS0JCV9fd2FybngoVElS UENfREVCVUdfRkxBR19FVkVOVCwKLSsJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRN QSwKLSAJCSAgICAiJXMoKSAlcFsldV0gUkRNQV9DTV9FVkVOVF9USU1FV0FJVF9FWElUIiwKLSAJ CSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlKTsKLSAKLUBAIC0xMzUy LDYgKzE0MTcsNDEgQEAKLSAJcHRocmVhZF9leGl0KE5VTEwpOwotIH0KLSAKLSsvKiBIYW5kbGUg UkRNQSBjb25uZWN0aW9uIG1hbmFnZXIgZXZlbnRzIHN5bmNocm9ub3VzbHkgKi8KLStpbnQKLSty cGNfcmRtYV9jbV9ldmVudF9oYW5kbGVyX2lubGluZShSRE1BWFBSVCAqcmRtYV94cHJ0LCBpbnQg ZXhwZWN0ZWRfZXZlbnQpCi0rewotKwlpbnQgcmMgPSAwOwotKwlzdHJ1Y3QgcmRtYV9jbV9ldmVu dCAqZXZlbnQgPSBOVUxMOwotKwotKwlyYyA9IHJkbWFfZ2V0X2NtX2V2ZW50KHJkbWFfeHBydC0+ ZXZlbnRfY2hhbm5lbCwgJmV2ZW50KTsKLSsJaWYgKHJjKSB7Ci0rCQlyYyA9IGVycm5vOwotKwkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IHJkbWEgZ2V0IGV2ZW50IGZhaWxl ZCB4cHJ0ICVwICIKLSsJCQkiZXJyICVkIiwgX19mdW5jX18sIHJkbWFfeHBydCwgcmMpOwotKwkJ Z290byBvdXQ7Ci0rCX0KLSsKLSsJaWYgKGV2ZW50LT5ldmVudCAhPSBleHBlY3RlZF9ldmVudCkg ewotKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IHVuZXhwZWN0ZWQgZXZl bnQgJWQsIGV4cGVjdGVkICVkICIKLSsJCQkieHBydCAlcyIsIF9fZnVuY19fLCBldmVudC0+ZXZl bnQsIGV4cGVjdGVkX2V2ZW50KTsKLSsJfQotKwotKwlTVkNfUkVGKCZyZG1hX3hwcnQtPnNtX2Ry LnhwcnQsIFNWQ19SRUZfRkxBR19OT05FKTsKLSsKLSsJcmMgPSBycGNfcmRtYV9jbV9ldmVudF9o YW5kbGVyKHJkbWFfeHBydCwgZXZlbnQpOwotKwotKwlyZG1hX2Fja19jbV9ldmVudChldmVudCk7 Ci0rCi0rCVNWQ19SRUxFQVNFKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsIFNWQ19SRUZfRkxBR19O T05FKTsKLSsKLStvdXQ6Ci0rCWlmIChyYykKLSsJCVNWQ19ERVNUUk9ZKCZyZG1hX3hwcnQtPnNt X2RyLnhwcnQpOwotKwotKwlyZXR1cm4gcmM7Ci0rfQotKwotIC8qKgotICAqIHJwY19yZG1hX2Rl c3Ryb3lfc3R1ZmY6IGRlc3Ryb3lzIGFsbCBxcC1yZWxhdGVkIHN0dWZmIGZvciB1cwotICAqCi1A QCAtMTM3Myw3ICsxNDczLDggQEAKLSAJfQotIAotIAlpZiAocmRtYV94cHJ0LT5jb21wX2NoYW5u ZWwpIHsKLS0JCWlmIChyZG1hX3hwcnQtPnN0YXRlID09IFJETUFYU19DT05ORUNURUQpIHsKLSsJ CWlmIChyZG1hX3hwcnQtPnNlcnZlciAmJgotKwkJICAgIChyZG1hX3hwcnQtPnN0YXRlID09IFJE TUFYU19DT05ORUNURUQpKSB7Ci0gCQkJaW50IGNxX2ZkID0gKChSRE1BWFBSVCAqKXJkbWFfeHBy dCktPmNvbXBfY2hhbm5lbC0+ZmQ7Ci0gCQkJaW50IGNxX3RocmVhZF9pbmRleCA9IGNxX2ZkICUg TlVNX0NRX0VQT0xMX1RIUkVBRFM7Ci0gCQkJcnBjX3JkbWFfZmRfZGVsKGNxX2ZkLAotQEAgLTEz OTYsNyArMTQ5Nyw3IEBACi0gc3RhdGljIHZvaWQKLSByZG1hX2Rlc3Ryb3lfY2JjcyhSRE1BWFBS VCAqcmRtYV94cHJ0KSB7Ci0gCi0tCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKLSsJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAotIAkgICAgIiVzKCkgRGVzdHJveWlu ZyB4cHJ0ICVwIGNiY3MgcWNvdW50ICV1IHFzaXplICV1IHRvdGFsIGNiY3NfbWVtb3J5ICV1IiwK LSAJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+Y2JxaC5xY291bnQsIHJkbWFf eHBydC0+Y2JxaC5xc2l6ZSwKLSAJICAgIHJkbWFfeHBydC0+Y2JxaC5xY291bnQgKiByZG1hX3hw cnQtPmNicWgucXNpemUpOwotQEAgLTE0MzYsNyArMTUzNyw3IEBACi0gCi0gc3RhdGljIHZvaWQK LSByZG1hX2Rlc3Ryb3lfaW9fYnVmcyhSRE1BWFBSVCAqcmRtYV94cHJ0KSB7Ci0tCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FVkVOVCwKLSsJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19S RE1BLAotIAkgICAgIiVzKCkgRGVzdHJveWluZyB4cHJ0ICVwIGlvX2J1ZnMiLAotIAkgICAgX19m dW5jX18sIHJkbWFfeHBydCk7Ci0gCi1AQCAtMTQ1NiwxMyArMTU1NywxMyBAQAotIAkJCXN0cnVj dCBycGNfaW9fYnVmcyAqaW9fYnVmID0KLSAJCQkJb3ByX2NvbnRhaW5lcm9mKGhhdmUsIHN0cnVj dCBycGNfaW9fYnVmcywgcSk7Ci0gCi0tCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5U LCAiJXMgRGVzdHJveSBpb19idWYgJXAgaW9xaCAlcCBjb3VudCAlZCIsCi0rCQkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXMgRGVzdHJveSBpb19idWYgJXAgaW9xaCAlcCBj b3VudCAlZCIsCi0gCQkJICAgIF9fZnVuY19fLCBpb19idWYsIGlvcWgsIGlvcWgtPnFjb3VudCk7 Ci0gCi0gCQkJaWYgKChpb19idWYtPnR5cGUgPT0gSU9fQlVGX0FMTCkgfHwKLSAJCQkgICAgKGlv X2J1Zi0+dHlwZSA9PSBJT19JTkJVRl9IRFIpKSB7Ci0gCQkJCXN0cnVjdCBwb29scV9oZWFkICpp b3FoX2J1ZnMgPSAmcmRtYV94cHJ0LT5pbmJ1ZnNfaGRyLnV2cWg7Ci0tCQkJCV9fd2FybngoVElS UENfREVCVUdfRkxBR19FVkVOVCwKLSsJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19S RE1BLAotIAkJCQkgICAgIiVzKCkgRGVzdHJveWluZyAlcCBpbmJ1ZnNfaGRyIGhlYWQgJXAgY291 bnQgJWQgaW9fYnVmICVwIiwKLSAJCQkJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIGlvcWhfYnVm cywgaW9xaF9idWZzLT5xY291bnQsIGlvX2J1Zik7Ci0gCQkJCXhkcl9yZG1hX2J1Zl9wb29sX2Rl c3Ryb3koaW9xaF9idWZzLCBpb19idWYpOwotQEAgLTE0NzEsNyArMTU3Miw3IEBACi0gCQkJaWYg KChpb19idWYtPnR5cGUgPT0gSU9fQlVGX0FMTCkgfHwKLSAJCQkgICAgKGlvX2J1Zi0+dHlwZSA9 PSBJT19PVVRCVUZfSERSKSkgewotIAkJCQlzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaF9idWZzID0g JnJkbWFfeHBydC0+b3V0YnVmc19oZHIudXZxaDsKLS0JCQkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VWRU5ULAotKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCi0gCQkJ CSAgICAiJXMoKSBEZXN0cm95aW5nICVwIG91dGJ1ZnNfaGRyIGhlYWQgJXAgY291bnQgJWQgaW9f YnVmICVwIiwKLSAJCQkJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIGlvcWhfYnVmcywgaW9xaF9i dWZzLT5xY291bnQsIGlvX2J1Zik7Ci0gCQkJCXhkcl9yZG1hX2J1Zl9wb29sX2Rlc3Ryb3koaW9x aF9idWZzLCBpb19idWYpOwotQEAgLTE0ODAsNyArMTU4MSw3IEBACi0gCQkJaWYgKChpb19idWYt PnR5cGUgPT0gSU9fQlVGX0FMTCkgfHwKLSAJCQkgICAgKGlvX2J1Zi0+dHlwZSA9PSBJT19JTkJV Rl9EQVRBKSkgewotIAkJCQlzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaF9idWZzID0gJnJkbWFfeHBy dC0+aW5idWZzX2RhdGEudXZxaDsKLS0JCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5U LAotKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCi0gCQkJCSAgICAiJXMo KSBEZXN0cm95aW5nICVwIGluYnVmc19kYXRhIGhlYWQgJXAgY291bnQgJWQgaW9fYnVmICVwIiwK LSAJCQkJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIGlvcWhfYnVmcywgaW9xaF9idWZzLT5xY291 bnQsIGlvX2J1Zik7Ci0gCQkJCXhkcl9yZG1hX2J1Zl9wb29sX2Rlc3Ryb3koaW9xaF9idWZzLCBp b19idWYpOwotQEAgLTE0ODksNyArMTU5MCw3IEBACi0gCQkJaWYgKChpb19idWYtPnR5cGUgPT0g SU9fQlVGX0FMTCkgfHwKLSAJCQkgICAgKGlvX2J1Zi0+dHlwZSA9PSBJT19PVVRCVUZfREFUQSkp IHsKLSAJCQkJc3RydWN0IHBvb2xxX2hlYWQgKmlvcWhfYnVmcyA9ICZyZG1hX3hwcnQtPm91dGJ1 ZnNfZGF0YS51dnFoOwotLQkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCi0rCQkJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKLSAJCQkJICAgICIlcygpIERlc3Ry b3lpbmcgJXAgb3V0YnVmc19kYXRhIGhlYWQgJXAgY291bnQgJWQgaW9fYnVmICVwIiwKLSAJCQkJ ICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIGlvcWhfYnVmcywgaW9xaF9idWZzLT5xY291bnQsIGlv X2J1Zik7Ci0gCQkJCXhkcl9yZG1hX2J1Zl9wb29sX2Rlc3Ryb3koaW9xaF9idWZzLCBpb19idWYp OwotQEAgLTE1OTAsNyArMTY5MSw3IEBACi0gICoKLSAgKiBAcmV0dXJuIHJkbWFfeHBydCBvbiBz dWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUKLSAgKi8KLS1zdGF0aWMgUkRNQVhQUlQgKgotK1JETUFY UFJUICoKLSBycGNfcmRtYV9hbGxvY2F0ZShjb25zdCBzdHJ1Y3QgcnBjX3JkbWFfYXR0ciAqeGEp Ci0gewotIAlSRE1BWFBSVCAqcmRtYV94cHJ0OwotQEAgLTE3MzksOSArMTg0MCwxMyBAQAotIAkJ CV9fZnVuY19fKTsKLSAJCWdvdG8gZmFpbHVyZTsKLSAJfQotLQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfUlBDX1JETUEsCi0tCQkiJXMoKSBORlMvUkRNQSBlbmdpbmUgYm91bmQgcmVjdnN6ICVs bHUgc2VuZHN6ICVsbHUgcmRtYV94cHJ0ICVwIiwKLS0JCV9fZnVuY19fLCByZG1hX3hwcnQtPnNt X2RyLnJlY3ZzeiwgcmRtYV94cHJ0LT5zbV9kci5zZW5kc3osIHJkbWFfeHBydCk7Ci0rCi0rCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCB8IFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEs Ci0rCQkiJXMoKSBSRE1BOiBORlMvUkRNQSB0cmFuc3BvcnQgcmVhZHkgb24gcG9ydCAlcyByZWN2 c3o9JWxsdSBzZW5kc3o9JWxsdSB4cHJ0PSVwIiwKLSsJCV9fZnVuY19fLCB4YS0+cG9ydCwKLSsJ CSh1bnNpZ25lZCBsb25nIGxvbmcpcmRtYV94cHJ0LT5zbV9kci5yZWN2c3osCi0rCQkodW5zaWdu ZWQgbG9uZyBsb25nKXJkbWFfeHBydC0+c21fZHIuc2VuZHN6LAotKwkJcmRtYV94cHJ0KTsKLSAK LSAJcmV0dXJuICgmcmRtYV94cHJ0LT5zbV9kci54cHJ0KTsKLSAKLUBAIC0xNzkwLDcgKzE4OTUs NyBAQAotIAkgICAgSUJWX1FQX1BBVEhfTVRVIHwgSUJWX1FQX0RFU1RfUVBOIHwgSUJWX1FQX1JR X1BTTiB8Ci0gCSAgICBJQlZfUVBfTUFYX0RFU1RfUkRfQVRPTUlDIHwgSUJWX1FQX01JTl9STlJf VElNRVIsICZxcF9hdHRyKTsKLSAKLS0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAot KwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCi0gCQkiJXMoKSAlcFsldV0gaWJ2 X3F1ZXJ5X3FwIHBhdGggbXR1ICVkIHN0YXRlICVkIHFwIHR5cGUgJWQiLAotIAkJX19mdW5jX18s IHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgYXR0ci5xcF9zdGF0ZSwKLSAJCWF0dHIucGF0 aF9tdHUsIHFwX2F0dHIucXBfdHlwZSk7Ci1AQCAtMTc5OSw2ICsxOTA0LDQ4IEBACi0gCXJldHVy biAwOwotIH0KLSAKLSsvKiBJbml0aWFsaXplIFJETUEgY2xpZW50IGNvbXBsZXRpb24gY2hhbm5l bCBhbmQgcXVldWUgKi8KLStpbnQKLStycGNfcmRtYV9zZXR1cF9zdHVmZl9jbGllbnQoUkRNQVhQ UlQgKnJkbWFfeHBydCkKLSt7Ci0rCWludCByYyA9IDA7Ci0rCi0rCXJkbWFfeHBydC0+Y29tcF9j aGFubmVsID0gaWJ2X2NyZWF0ZV9jb21wX2NoYW5uZWwocmRtYV94cHJ0LT5jbV9pZC0+dmVyYnMp OwotKwlpZiAoIXJkbWFfeHBydC0+Y29tcF9jaGFubmVsKSB7Ci0rCQlyYyA9IGVycm5vOwotKwkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGNyZWF0ZSBjb21wIGNoYW5uZWwg ZmFpbGVkIHhwcnQgJXAgIgotKwkJCSJlcnIgJWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7 Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotKwlyZG1hX3hwcnQtPmNxID0gaWJ2X2NyZWF0ZV9jcShy ZG1hX3hwcnQtPmNtX2lkLT52ZXJicywgTUFYX0NRX1NJWkUocmRtYV94cHJ0LT54YSksCi0rCSAg ICByZG1hX3hwcnQsIHJkbWFfeHBydC0+Y29tcF9jaGFubmVsLCAwKTsKLSsJaWYgKCFyZG1hX3hw cnQtPmNxKSB7Ci0rCQlyYyA9IGVycm5vOwotKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VS Uk9SLCAiJXM6IGNyZWF0ZSBjcSBmYWlsZWQgeHBydCAlcCBlcnIgJWQiLAotKwkJCV9fZnVuY19f LCByZG1hX3hwcnQsIHJjKTsKLSsJCWdvdG8gb3V0OwotKwl9Ci0rCi0rCXJjID0gaWJ2X3JlcV9u b3RpZnlfY3EocmRtYV94cHJ0LT5jcSwgMCk7Ci0rCWlmIChyYykgewotKwkJcmMgPSBlcnJubzsK LSsJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBub3RpZnkgY3EgZmFpbGVk IHhwcnQgJXAgZXJyICVkIiwKLSsJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7Ci0rCQlnb3Rv IG91dDsKLSsJfQotKwotKwlyYyA9IHJwY19yZG1hX2NyZWF0ZV9xcChyZG1hX3hwcnQsIHJkbWFf eHBydC0+Y21faWQpOwotKwlpZiAocmMpIHsKLSsJCXJjID0gZXJybm87Ci0rCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogY3JlYXRlIHFwIGZhaWxlZCB4cHJ0ICVwIGVyciAl ZCIsCi0rCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmMpOwotKwl9Ci0rCi0rb3V0OgotKwlyZXR1 cm4gcmM7Ci0rfQotKwotIC8qKgotICAqIHJwY19yZG1hX3NldHVwX3N0dWZmOiBzZXR1cCBwZCwg cXAgYW4nIHN0dWZmCi0gICoKLUBAIC0xOTIxLDEwICsyMDY4LDE0IEBACi0gLyoqCi0gICogcnBj X3JkbWFfc2V0dXBfY2JxCi0gICovCi0tc3RhdGljIGludAotK2ludAotIHJwY19yZG1hX3NldHVw X2NicShSRE1BWFBSVCAqcmRtYV94cHJ0LAotICAgICBzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaCwg dV9pbnQgZGVwdGgsIHVfaW50IHNnZSkKLSB7Ci0rCV9fd2FybngoVElSUENfREVCVUdfRkxBR19S UENfUkRNQSwKLSsJCSIlczogc2V0dXAgY2JxIHhwcnQgJXAgZGVwdGggJWQgc2dlICVkIiwKLSsJ CV9fZnVuY19fLCByZG1hX3hwcnQsIGRlcHRoLCBzZ2UpOwotKwotIAlpZiAoaW9xaC0+cXNpemUp IHsKLSAJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKLSAJCQkiJXMoKSBjb250ZXh0 cyBhbHJlYWR5IGFsbG9jYXRlZCIsCi1AQCAtMTk0OCw3ICsyMDk5LDcgQEAKLSAJCXJwY19yZG1h X2FsbG9jYXRlX2NiY19sb2NrZWQoaW9xaCk7Ci0gCX0KLSAKLS0JX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULCAiJXMgVG90YWwgY2Jjc19tZW1vcnkgJXUgIgotKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlcyBUb3RhbCBjYmNzX21lbW9yeSAldSAiCi0gCSAgICAi cWNvdW50ICV1IHFzaXplICV1IHhwcnQgJXAiLAotIAkgICAgX19mdW5jX18sIGlvcWgtPnFjb3Vu dCAqIGlvcWgtPnFzaXplLAotIAkgICAgaW9xaC0+cWNvdW50LCBpb3FoLT5xc2l6ZSwgcmRtYV94 cHJ0KTsKLUBAIC0yMDM1LDYgKzIxODYsMTcgQEAKLSAJfQotIAotIAlyZG1hX3hwcnQtPnN0YXRl ID0gUkRNQVhTX0xJU1RFTklORzsKLSsKLSsJLyogTG9nIGF0IEVWRU5UIGxldmVsIHRoYXQgUkRN QSBsaXN0ZW5lciBpcyB1cCAqLwotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCi0r CQkiJXMoKSBSRE1BOiBORlMvUkRNQSBzZXJ2ZXIgaXMgbm93IGxpc3RlbmluZyBvbiBub2RlICVz IHBvcnQgJXMgKGJhY2tsb2c9JWQgc3FfZGVwdGg9JWQgcnFfZGVwdGg9JWQpIiwKLSsJCV9fZnVu Y19fLAotKwkJcmRtYV94cHJ0LT54YS0+bm9kZSA/IHJkbWFfeHBydC0+eGEtPm5vZGUgOiAiKiIs Ci0rCQlyZG1hX3hwcnQtPnhhLT5wb3J0LAotKwkJcmRtYV94cHJ0LT54YS0+YmFja2xvZywKLSsJ CXJkbWFfeHBydC0+eGEtPnNxX2RlcHRoLAotKwkJcmRtYV94cHJ0LT54YS0+cnFfZGVwdGgpOwot KwotIAlhdG9taWNfaW5jX2ludDMyX3QoJnJwY19yZG1hX3N0YXRlLnJ1bl9jb3VudCk7Ci0gCi0g CXJjID0gcnBjX3JkbWFfdGhyZWFkX2NyZWF0ZV9lcG9sbCgmcnBjX3JkbWFfc3RhdGUuY21fdGhy ZWFkX2lkLAotQEAgLTIyMTgsNyArMjM4MCw3IEBACi0gewotIAlzdHJ1Y3QgcmRtYV9jbV9pZCAq Y21faWQ7Ci0gCi0tCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKLSsJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAotIAkJIiVzKCkgJXBbJXVdIGxpc3RlbmluZyAoYWZ0 ZXIgYmluZF9zZXJ2ZXIpIiwKLSAJCV9fZnVuY19fLCBsX3JkbWFfeHBydCwgbF9yZG1hX3hwcnQt PnN0YXRlKTsKLSAKLUBAIC0yMjgxLDI1ICsyNDQzLDI5IEBACi0gCXN0cnVjdCByZG1hX2FkZHJp bmZvICpyZXM7Ci0gCWludCByYzsKLSAKLS0JbXV0ZXhfbG9jaygmcmRtYV94cHJ0LT5jbV9sb2Nr KTsKLS0KLSAJZG8gewotIAkJbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7Ci0gCQlo aW50cy5haV9wb3J0X3NwYWNlID0gcmRtYV94cHJ0LT5jb25uX3R5cGU7Ci0gCi0tCQlyYyA9IHJk bWFfZ2V0YWRkcmluZm8ocmRtYV94cHJ0LT54YS0+bm9kZSwgcmRtYV94cHJ0LT54YS0+cG9ydCwK LSsJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzOiByZXNvbHZlICVzIHBv cnQgJWQiLCBfX2Z1bmNfXywKLSsJCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHJkbWFf eHBydC0+c21fZHIueHBydC54cF9wb3J0KTsKLSsJCWNoYXIgcG9ydF9zdHJbU09DS19OQU1FX01B WF07Ci0rCQlzbnByaW50Zihwb3J0X3N0ciwgU09DS19OQU1FX01BWCwgIiVkIiwgcmRtYV94cHJ0 LT5zbV9kci54cHJ0LnhwX3BvcnQpOwotKwotKwkJcmMgPSByZG1hX2dldGFkZHJpbmZvKHJkbWFf eHBydC0+c21fZHIueHBydC54cF9pcCwgcG9ydF9zdHIsCi0gCQkJCQkmaGludHMsICZyZXMpOwot IAkJaWYgKHJjKSB7Ci0gCQkJcmMgPSBlcnJubzsKLSAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVJST1IsCi0tCQkJCSIlcygpICVwWyV1XSByZG1hX2dldGFkZHJpbmZvOiAlcyAoJWQpIiwK LS0JCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgc3RyZXJyb3IocmMp LCByYyk7Ci0rCQkJCSIlcygpICVwWyV1XSByZG1hX2dldGFkZHJpbmZvOiAlcyAoJWQpIGlwICVz IHBvcnQgJWQiLAotKwkJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBz dHJlcnJvcihyYyksIHJjLAotKwkJCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHJkbWFf eHBydC0+c21fZHIueHBydC54cF9wb3J0KTsKLSAJCQlicmVhazsKLSAJCX0KLSAKLSAJCXJjID0g cmRtYV9yZXNvbHZlX2FkZHIocmRtYV94cHJ0LT5jbV9pZCwgcmVzLT5haV9zcmNfYWRkciwKLSAJ CQkJCXJlcy0+YWlfZHN0X2FkZHIsCi0tCQkJCQlfX3N2Y19wYXJhbXMtPmlkbGVfdGltZW91dCk7 Ci0rCQkJCQk1MDAwKTsKLSAJCWlmIChyYykgewotIAkJCXJjID0gZXJybm87Ci0gCQkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAotQEAgLTIzMDksMTQgKzI0NzUsOCBAQAotIAkJfQot IAkJcmRtYV9mcmVlYWRkcmluZm8ocmVzKTsKLSAKLS0JCXdoaWxlIChyZG1hX3hwcnQtPnN0YXRl ID09IFJETUFYU19JTklUSUFMKSB7Ci0tCQkJY29uZF93YWl0KCZyZG1hX3hwcnQtPmNtX2NvbmQs ICZyZG1hX3hwcnQtPmNtX2xvY2spOwotLQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENf UkRNQSwKLS0JCQkJIiVzKCkgJXBbJXVdIGFmdGVyIGNvbmRfd2FpdCIsCi0tCQkJCV9fZnVuY19f LCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUpOwotLQkJfQotLQotLQkJaWYgKHJkbWFfeHBy dC0+c3RhdGUgIT0gUkRNQVhTX0FERFJfUkVTT0xWRUQpIHsKLSsJCXJjID0gcnBjX3JkbWFfY21f ZXZlbnRfaGFuZGxlcl9pbmxpbmUocmRtYV94cHJ0LCBSRE1BX0NNX0VWRU5UX0FERFJfUkVTT0xW RUQpOwotKwkJaWYgKHJjKSB7Ci0gCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAot IAkJCQkiJXMoKSBDb3VsZCBub3QgcmVzb2x2ZSBhZGRyIiwKLSAJCQkJX19mdW5jX18pOwotQEAg LTIzMjUsNyArMjQ4NSw3IEBACi0gCQl9Ci0gCi0gCQlyYyA9IHJkbWFfcmVzb2x2ZV9yb3V0ZShy ZG1hX3hwcnQtPmNtX2lkLAotLQkJCQkJX19zdmNfcGFyYW1zLT5pZGxlX3RpbWVvdXQpOwotKwkJ CQkJNTAwMCk7Ci0gCQlpZiAocmMpIHsKLSAJCQlyZG1hX3hwcnQtPnN0YXRlID0gUkRNQVhTX0VS Uk9SOwotIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKLUBAIC0yMzM0LDE0ICsy NDk0LDggQEAKLSAJCQlicmVhazsKLSAJCX0KLSAKLS0JCXdoaWxlIChyZG1hX3hwcnQtPnN0YXRl ID09IFJETUFYU19BRERSX1JFU09MVkVEKSB7Ci0tCQkJY29uZF93YWl0KCZyZG1hX3hwcnQtPmNt X2NvbmQsICZyZG1hX3hwcnQtPmNtX2xvY2spOwotLQkJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19SUENfUkRNQSwKLS0JCQkJIiVzKCkgJXBbJXVdIGFmdGVyIGNvbmRfd2FpdCIsCi0tCQkJCV9f ZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUpOwotLQkJfQotLQotLQkJaWYgKHJk bWFfeHBydC0+c3RhdGUgIT0gUkRNQVhTX1JPVVRFX1JFU09MVkVEKSB7Ci0rCQlyYyA9IHJwY19y ZG1hX2NtX2V2ZW50X2hhbmRsZXJfaW5saW5lKHJkbWFfeHBydCwgUkRNQV9DTV9FVkVOVF9ST1VU RV9SRVNPTFZFRCk7Ci0rCQlpZiAocmMpIHsKLSAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVJST1IsCi0gCQkJCSIlcygpIENvdWxkIG5vdCByZXNvbHZlIHJvdXRlIiwKLSAJCQkJX19mdW5j X18pOwotQEAgLTIzNTAsOCArMjUwNCw2IEBACi0gCQl9Ci0gCX0gd2hpbGUgKDApOwotIAotLQlt dXRleF91bmxvY2soJnJkbWFfeHBydC0+Y21fbG9jayk7Ci0tCi0gCXJldHVybiByYzsKLSB9Ci0g Ci1AQCAtMjM5OCw2ICsyNTUwLDM5IEBACi0gCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94 cHJ0LT5zdGF0ZSwgc3RyZXJyb3IocmMpLCByYyk7Ci0gCX0KLSAKLSsJcmMgPSBycGNfcmRtYV9j bV9ldmVudF9oYW5kbGVyX2lubGluZShyZG1hX3hwcnQsIFJETUFfQ01fRVZFTlRfRVNUQUJMSVNI RUQpOwotKwlpZiAocmMpIHsKLSsJCXJjID0gZXJybm87Ci0rCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfRVJST1IsICIlczogY29uZWN0IGZhaWxlZCB4cHJ0ICVwIGVyciAlZCIsCi0rCQkJX19m dW5jX18sIHJkbWFfeHBydCwgcmMpOwotKwl9Ci0rCi0rCXJldHVybiByYzsKLSt9Ci0rCi0rLyog UHJlcGFyZSBSRE1BIGNvbm5lY3Rpb24gYnkgY3JlYXRpbmcgZXZlbnQgY2hhbm5lbCBhbmQgQ00g SUQgKi8KLStpbnQKLStycGNfcmRtYV9jb25uZWN0X3ByZXBhcmUoUkRNQVhQUlQgKnJkbWFfeHBy dCkKLSt7Ci0rCWludCByYyA9IDA7Ci0rCi0rCXJkbWFfeHBydC0+ZXZlbnRfY2hhbm5lbCA9IHJk bWFfY3JlYXRlX2V2ZW50X2NoYW5uZWwoKTsKLSsJaWYgKCFyZG1hX3hwcnQtPmV2ZW50X2NoYW5u ZWwpIHsKLSsJCXJjID0gZXJybm87Ci0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1Is ICIlczogY3JlYXRlIGV2ZW50IGNoYW5uZWwgZmFpbGVkICIKLSsJCQkiaXAgJXMgZXJyICVkIiwg X19mdW5jX18sIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwgcmMpOwotKwkJZ290byBvdXQ7 Ci0rCX0KLSsKLSsJcmMgPSByZG1hX2NyZWF0ZV9pZChyZG1hX3hwcnQtPmV2ZW50X2NoYW5uZWws ICZyZG1hX3hwcnQtPmNtX2lkLCByZG1hX3hwcnQsCi0rCSAgICByZG1hX3hwcnQtPmNvbm5fdHlw ZSk7Ci0rCWlmIChyYykgewotKwkJcmMgPSBlcnJubzsKLSsJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FUlJPUiwgIiVzOiBjcmVhdGUgaWQgZmFpbGVkIGlwICVzIGVyciAlZCIsCi0rCQkJX19m dW5jX18sIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwgcmMpOwotKwkJZ290byBvdXQ7Ci0r CX0KLStvdXQ6Ci0gCXJldHVybiByYzsKLSB9Ci0gCi1AQCAtMjQyNywyOSArMjYxMiwyMCBAQAot IAkJcmV0dXJuIEVJTlZBTDsKLSAJfQotIAotLQlpZiAocmRtYV94cHJ0LT5zZXJ2ZXIpIHsKLSsJ aWYgKHJkbWFfeHBydC0+c2VydmVyICE9IFJETUFYX0NMSUVOVCkgewotIAkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VSUk9SLAotIAkJCSIlcygpIG9ubHkgY2FsbGVkIGZyb20gY2xpZW50IHNp ZGUhIiwKLSAJCQlfX2Z1bmNfXyk7Ci0gCQlyZXR1cm4gRUlOVkFMOwotIAl9Ci0gCi0tCXJjID0g cnBjX3JkbWFfdGhyZWFkX2NyZWF0ZV9lcG9sbCgmcnBjX3JkbWFfc3RhdGUuY21fdGhyZWFkX2lk LAotLQkJcnBjX3JkbWFfY21fdGhyZWFkLCByZG1hX3hwcnQsICZycGNfcmRtYV9zdGF0ZS5jbV9l cG9sbGZkKTsKLS0JaWYgKHJjKSB7Ci0tCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1Is Ci0tCQkJIiVzKCkgJXBbJXVdIHJwY19yZG1hX3RocmVhZF9jcmVhdGVfZXBvbGwgZmFpbGVkOiAl cyAoJWQpIiwKLS0JCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBzdHJl cnJvcihyYyksIHJjKTsKLS0JCXJldHVybiByYzsKLS0JfQotLQotIAlyYyA9IHJwY19yZG1hX2Jp bmRfY2xpZW50KHJkbWFfeHBydCk7Ci0gCWlmIChyYykKLSAJCXJldHVybiByYzsKLSAJcmMgPSBy cGNfcmRtYV9wZF9nZXQocmRtYV94cHJ0KTsKLSAJaWYgKHJjKQotIAkJcmV0dXJuIHJjOwotLQly YyA9IHJwY19yZG1hX3NldHVwX3N0dWZmKHJkbWFfeHBydCk7Ci0rCXJjID0gcnBjX3JkbWFfc2V0 dXBfc3R1ZmZfY2xpZW50KHJkbWFfeHBydCk7Ci0gCWlmIChyYykgewotIAkJcnBjX3JkbWFfZGVz dHJveV9zdHVmZihyZG1hX3hwcnQpOwotIAkJcmV0dXJuIHJjOwotQEAgLTI0NTcsMTEgKzI2MzMs NyBAQAotIAlyYyA9IHJwY19yZG1hX3NldHVwX2NicShyZG1hX3hwcnQsICZyZG1hX3hwcnQtPmNi cWgsCi0gCQkJCXJkbWFfeHBydC0+eGEtPnJxX2RlcHRoICsgcmRtYV94cHJ0LT54YS0+c3FfZGVw dGgsCi0gCQkJCXJkbWFfeHBydC0+eGEtPmNyZWRpdHMpOwotLQlpZiAocmMpCi0tCQlyZXR1cm4g cmM7Ci0tCi0tCXJldHVybiBycGNfcmRtYV9mZF9hZGQocmRtYV94cHJ0LCByZG1hX3hwcnQtPmV2 ZW50X2NoYW5uZWwtPmZkLAotLQkJCQlycGNfcmRtYV9zdGF0ZS5jbV9lcG9sbGZkKTsKLSsJcmV0 dXJuIHJjOwotIH0KLSAKLSBleHRlcm4gbXV0ZXhfdCBvcHNfbG9jazsKLWRpZmYgLXVyIG50aXJw Yy03LjIvc3JjL3JwY19yZG1hLmggbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZj ZDg3NmVjYmQ2MzMvc3JjL3JwY19yZG1hLmgKLS0tLSBudGlycGMtNy4yL3NyYy9ycGNfcmRtYS5o CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2Nh MmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3JwY19yZG1hLmgJMjAyNi0wNi0x MSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC04Nyw2ICs4NywxMCBAQAotICNkZWZpbmUg Q0JDX0ZMQUdfTk9ORQkJMHgwMDAwCi0gI2RlZmluZSBDQkNfRkxBR19SRUxFQVNFCTB4MDAwMQot ICNkZWZpbmUgQ0JDX0ZMQUdfUkVMRUFTSU5HCTB4MDAwMgotKy8qIHN2Y19yZXF1ZXN0IHJldHVy bmVkIFhQUlRfU1VTUEVORCAoZS5nLiBRT1MsIGFzeW5jIHJlcXVlc3QgaGFuZGxpbmcpCi0rICog d3JhcF9jYWxsYmFjayBkZWZlcnJlZCB0aGUgc2VudGluZWwgY2JjX3JlbGVhc2VfaXQgdG8geGRy X3JkbWFfc3ZjX2ZsdXNob3V0Ci0rICogc28gdGhhdCBkYXRhcSBidWZmZXJzIHJlbWFpbiB2YWxp ZCBhY3Jvc3MgdGhlIHN1c3BlbnNpb24gd2luZG93LiAqLwotKyNkZWZpbmUgQ0JDX0ZMQUdfU0VO VElORUxfUEVORElORyAweDAwMDQKLSAKLSAjZGVmaW5lIFJETUFfQ0JfVElNRU9VVF9TRUMgMTAK LSAKLUBAIC0yMjIsNiArMjI2LDcgQEAKLSAJCQkJCSAqIC0xIChSRE1BWF9TRVJWRVJfQ0hJTEQp OgotIAkJCQkJICogc2VydmVyIGhhcyBhY2NlcHRlZCBjb25uZWN0aW9uCi0gCQkJCQkgKi8KLSsJ Ym9vbCBzaGFyZWQ7Ci0gCi0gCWVudW0gcmRtYV90cmFuc3BvcnRfc3RhdGUgewotIAkJUkRNQVhT X0lOSVRJQUwsIAkvKiBhc3N1bWVzIHplcm8sIG5ldmVyIHNldCAqLwotQEAgLTM3NCw2ICszNzks NyBAQAotIGVudW0geHBydF9zdGF0IHN2Y19yZG1hX3JlbmRlenZvdXMoU1ZDWFBSVCAqKTsKLSAK LSAvKiBjbGllbnQgKi8KLStpbnQgcnBjX3JkbWFfY29ubmVjdF9wcmVwYXJlKFJETUFYUFJUICop OwotIGludCBycGNfcmRtYV9jb25uZWN0KFJETUFYUFJUICopOwotIGludCBycGNfcmRtYV9jb25u ZWN0X2ZpbmFsaXplKFJETUFYUFJUICopOwotIAotQEAgLTM4Myw3ICszODksNyBAQAotIHZvaWQg eGRyX3JkbWFfYWRkX291dGJ1ZnNfZGF0YShSRE1BWFBSVCAqcmRtYV94cHJ0KTsKLSB2b2lkIHhk cl9yZG1hX2FkZF9pbmJ1ZnNfaGRyKFJETUFYUFJUICpyZG1hX3hwcnQpOwotIHZvaWQgeGRyX3Jk bWFfYWRkX291dGJ1ZnNfaGRyKFJETUFYUFJUICpyZG1hX3hwcnQpOwotLXZvaWQgeGRyX3JkbWFf Y2FsbHEoUkRNQVhQUlQgKik7Ci0rdm9pZCB4ZHJfcmRtYV9jYWxscShSRE1BWFBSVCAqLCBpbnQp OwotIAotIGJvb2wgeGRyX3JkbWFfY2xudF9yZXBseShYRFIgKiwgdV9pbnQzMl90KTsKLSBib29s IHhkcl9yZG1hX2NsbnRfZmx1c2hvdXQoc3RydWN0IHJwY19yZG1hX2NiYyAqKTsKLUBAIC00MDYs NCArNDEyLDEzIEBACi0gaW50IHhkcl9yZG1hX2RlcmVnX21yKFJETUFYUFJUICpyZG1hX3hwcnQs IHN0cnVjdCBpYnZfbXIgKm1yLAotICAgICB1aW50OF90ICpidWZmZXJfYWxpZ25lZCwgdWludDMy X3QgYnVmZmVyX3RvdGFsKTsKLSAKLStpbnQgcnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihSRE1B WFBSVCAqLCBpbnQpOwotKwotK1JETUFYUFJUICogcnBjX3JkbWFfYWxsb2NhdGUoY29uc3Qgc3Ry dWN0IHJwY19yZG1hX2F0dHIgKik7Ci0rCi0raW50IHJwY19yZG1hX3NldHVwX2NicShSRE1BWFBS VCAqLCBzdHJ1Y3QgcG9vbHFfaGVhZCAqLAotKyAgICB1X2ludCBkZXB0aCwgdV9pbnQgc2dlKTsK LSsKLSt2b2lkIHN2Y19yZG1hX29wcyhTVkNYUFJUICopOwotKwotICNlbmRpZiAvKiAhX1RJUlBD X1JQQ19SRE1BX0ggKi8KLWRpZmYgLXVyIG50aXJwYy03LjIvc3JjL3N2Yy5jIG50aXJwYy1iYjMz M2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9zdmMuYwotLS0tIG50aXJw Yy03LjIvc3JjL3N2Yy5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysg bnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3N2Yy5j CTIwMjYtMDYtMTEgMTQ6MTI6MTcuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMzc4LDcgKzM3OCw3IEBA Ci0gIHJwY2JfaXQ6Ci0gCXJ3bG9ja191bmxvY2soJnN2Y19sb2NrKTsKLSAJLyogbm93IHJlZ2lz dGVyIHRoZSBpbmZvcm1hdGlvbiB3aXRoIHRoZSBsb2NhbCBiaW5kZXIgc2VydmljZSAqLwotLQlp ZiAobmNvbmYpIHsKLSsJaWYgKG5jb25mICYmICgoeHBydC0+eHBfZmxhZ3MgJiBTVkNfWFBSVF9G TEFHX05PX1NFVCkgPT0gMCkpIHsKLSAJCS8qTElOVEVEIGNvbnN0IGNhc3Rhd2F5ICovCi0gCQlk dW1teSA9Ci0gCQkgICAgcnBjYl9zZXQocHJvZywgdmVycywgKHN0cnVjdCBuZXRjb25maWcgKilu Y29uZiwKLWRpZmYgLXVyIG50aXJwYy03LjIvc3JjL3N2Y19kZy5jIG50aXJwYy1iYjMzM2NjYTJm NGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy9zdmNfZGcuYwotLS0tIG50aXJwYy03 LjIvc3JjL3N2Y19kZy5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysg bnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3N2Y19k Zy5jCTIwMjYtMDYtMTEgMTQ6MTI6MTcuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMzE5LDYgKzMxOSw4 IEBACi0gCi0gCVNWQ19SRUYoeHBydCwgU1ZDX1JFRl9GTEFHX05PTkUpOwotIAluZXd4cHJ0LT54 cF9wYXJlbnQgPSB4cHJ0OwotKwlpZiAoeHBydC0+eHBfbmV0aWQpCi0rCQluZXd4cHJ0LT54cF9u ZXRpZCA9IG1lbV9zdHJkdXAoeHBydC0+eHBfbmV0aWQpOwotIAotIAlhdG9taWNfc2V0X3VpbnQx Nl90X2JpdHMoJm5ld3hwcnQtPnhwX2ZsYWdzLAotIAkJU1ZDX1hQUlRfRkxBR19SRUFEWSk7Ci1k aWZmIC11ciBudGlycGMtNy4yL3NyYy9zdmNfaW50ZXJuYWwuaCBudGlycGMtYmIzMzNjY2EyZjRh ZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvc3ZjX2ludGVybmFsLmgKLS0tLSBudGly cGMtNy4yL3NyYy9zdmNfaW50ZXJuYWwuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAt MDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMz L3NyYy9zdmNfaW50ZXJuYWwuaAkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAot QEAgLTMwLDYgKzMwLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxu ZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPG1pc2Mvb3NfZXBvbGwuaD4KLSsjaW5jbHVkZSA8YXJw YS9pbmV0Lmg+Ci0gI2luY2x1ZGUgPHJwYy9ycGNfbXNnLmg+Ci0gCi0gI2luY2x1ZGUgInJwY19k cGx4X2ludGVybmFsLmgiCi1AQCAtMTk0LDcgKzE5NSw0NiBAQAotIHZvaWQgc3ZjX3Jxc3RfeHBy dF9zZW5kX2NvbXBsZXRlKFNWQ1hQUlQgKik7Ci0gdm9pZCBzdmNfcnFzdF91bmhvb2soU1ZDWFBS VCAqKTsKLSAKLSsvKiBBbGxvdyBtdWNoIG1vcmUgc3BhY2UgdGhhbiB3ZSByZWFsbHkgbmVlZCBm b3IgYSBzb2NrIG5hbWUuIEFuIElQVjQgYWRkcmVzcwotKyAqIGVtYmVkZGVkIGluIElQdjYgY291 bGQgdXNlIDQ1IGJ5dGVzIGFuZCB0aGVuIGlmIHdlIGFkZCBhIHBvcnQsIHRoYXQgd291bGQgYmUK LSsgKiBhbiBhZGRpdGlvbmFsIDYgYnl0ZXMgKDo2NTUzNSkgZm9yIGEgdG90YWwgb2YgNTEsIGFu ZCB0aGVuIG9uZSBtb3JlIGZvciBOVUwKLSsgKiB0ZXJtaW5hdGlvbi4gV2UgY291bGQgdXNlIDY0 IGluc3RlYWQgb2YgMTI4LgotKyAqLwotKyNkZWZpbmUgU09DS19OQU1FX01BWCAxMjgKLSsKLSB0 eXBlZGVmIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2thZGRyX3Q7Ci0gaW50IHN2Y19nZXRf cG9ydChzb2NrYWRkcl90ICopOwotIAotK3N0YXRpYyBpbmxpbmUgdm9pZCAqc29ja2V0X2FkZHIo c29ja2FkZHJfdCAqYWRkcikKLSt7Ci0rCXN3aXRjaCAoYWRkci0+c3NfZmFtaWx5KSB7Ci0rCWNh c2UgQUZfSU5FVDoKLSsJCXJldHVybiAmKCgoc3RydWN0IHNvY2thZGRyX2luICopYWRkciktPnNp bl9hZGRyKTsKLSsJY2FzZSBBRl9JTkVUNjoKLSsJCXJldHVybiAmKCgoc3RydWN0IHNvY2thZGRy X2luNiAqKWFkZHIpLT5zaW42X2FkZHIpOwotKyNpZmRlZiBSUENfVlNPQ0sKLSsJY2FzZSBBRl9W U09DSzoKLSsJCXJldHVybiAmKCgoc3RydWN0IHNvY2thZGRyX3ZtICopYWRkciktPnN2bV9jaWQp OwotKyNlbmRpZiAvKiBWU09DSyAqLwotKwlkZWZhdWx0OgotKwkJcmV0dXJuIGFkZHI7Ci0rCX0K LSt9Ci0rCi0rc3RhdGljIGlubGluZSBib29sIHNwcmludF9zb2NraXAoc29ja2FkZHJfdCAqYWRk ciwgY2hhciAqYnVmLCBpbnQgbGVuKQotK3sKLSsjaWZkZWYgUlBDX1ZTT0NLCi0rCWlmIChhZGRy LT5zc19mYW1pbHkgPT0gQUZfVlNPQ0spIHsKLSsJCWludCByYyA9IHNucHJpbnRmKGJ1ZiwgbGVu LCAiJWQiLAotKwkJCSAoKHN0cnVjdCBzb2NrYWRkcl92bSAqKWFkZHIpLT5zdm1fY2lkKSk7Ci0r CQlyZXR1cm4gcmMgPj0gMCAmJiByYyA8IGxlbjsKLSsJfQotKyNlbmRpZiAvKiBWU09DSyAqLwot KwotKwlpZiAoYWRkci0+c3NfZmFtaWx5ICE9IEFGX0lORVQgJiYgYWRkci0+c3NfZmFtaWx5ICE9 IEFGX0lORVQ2KQotKwkJcmV0dXJuIGZhbHNlOwotKwotKwlyZXR1cm4gaW5ldF9udG9wKGFkZHIt PnNzX2ZhbWlseSwgc29ja2V0X2FkZHIoYWRkciksIGJ1ZiwgbGVuKSAhPSBOVUxMOwotK30KLSsK LSAjZW5kaWYJCQkJLyogVElSUENfU1ZDX0lOVEVSTkFMX0ggKi8KLWRpZmYgLXVyIG50aXJwYy03 LjIvc3JjL3N2Y19yZG1hLmMgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3 NmVjYmQ2MzMvc3JjL3N2Y19yZG1hLmMKLS0tLSBudGlycGMtNy4yL3NyYy9zdmNfcmRtYS5jCTIw MjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2NhMmY0 YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3N2Y19yZG1hLmMJMjAyNi0wNi0xMSAx NDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC02MCw3ICs2MCw2IEBACi0gI2luY2x1ZGUgPHJw Yy9zdmNfcnFzdC5oPgotICNpbmNsdWRlIDxycGMvc3ZjX2F1dGguaD4KLSAKLS1zdGF0aWMgdm9p ZCBzdmNfcmRtYV9vcHMoU1ZDWFBSVCAqKTsKLSAKLSAvKgotICAqIHN2Y19yZG1hX3JlbmRlenZv dXM6IHdhaXRzIGZvciBjb25uZWN0aW9uIHJlcXVlc3QKLUBAIC05NSwxMSArOTQsMTggQEAKLSAJ bWVtY3B5KHJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZW1vdGUubmIuYnVmLCBzcywKLSAJCXJk bWFfeHBydC0+c21fZHIueHBydC54cF9yZW1vdGUubmIubGVuKTsKLSAKLS0JX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULAotLQkJIiVzOiV1IGxvY2FsICVwIHJlbW90ZSAlcCB4cHJ0ICVw IiwgX19mdW5jX18sIF9fTElORV9fLAotKwlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAgPSBt ZW1fYWxsb2MoU09DS19OQU1FX01BWCk7Ci0rCXNwcmludF9zb2NraXAoc3MsIHJkbWFfeHBydC0+ c21fZHIueHBydC54cF9pcCwKLSsJICAgIFNPQ0tfTkFNRV9NQVgpOwotKwlyZG1hX3hwcnQtPnNt X2RyLnhwcnQueHBfcG9ydCA9IHN2Y19nZXRfcG9ydChzcyk7Ci0rCi0rCV9fd2FybngoVElSUENf REVCVUdfRkxBR19SUENfUkRNQSwKLSsJCSIlczoldSBsb2NhbCAlcCByZW1vdGUgJXAgeHBydCAl cCByZW1vdGUgaXAgJXMiLAotKwkJX19mdW5jX18sIF9fTElORV9fLAotIAkJJnJkbWFfeHBydC0+ c21fZHIueHBydC54cF9sb2NhbC5uYiwKLSAJCSZyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcmVt b3RlLm5iLAotLQkJJnJkbWFfeHBydC0+c21fZHIueHBydCk7Ci0rCQkmcmRtYV94cHJ0LT5zbV9k ci54cHJ0LAotKwkJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwKTsKLSAKLSAJc3ZjX3JkbWFf b3BzKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOwotIAlyZG1hX3hwcnQtPnNtX2RyLnJlY3ZzeiA9 IHJlcV9yZG1hX3hwcnQtPnNtX2RyLnJlY3ZzejsKLUBAIC0xNTUsNyArMTYxLDcgQEAKLSAJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAotIAkJIiVzOiV1IE5ldyBSRE1BIGNsaWVudCBj b25uZWN0ZWQgeHBydCAlcCwgeHBfZmQgJWQsICIKLSAJCSJxcF9udW0gJWQsIHhwX2ZkICVkIGlz X3JkbWFfZW5hYmxlZCAlZCB0byBsb2NhbCBwb3J0ICVkICIKLS0JCSJmcm9tIHJlbW90ZSBwb3J0 ICVkIHJlZiAlZCBlcG9sbCAlIzA0eCIsCi0rCQkiZnJvbSByZW1vdGUgcG9ydCAlZCByZWYgJWQg ZXBvbGwgJSMwNHggcmVtb3RlIGlwICVzIiwKLSAJCV9fZnVuY19fLCBfX0xJTkVfXywKLSAJCSZy ZG1hX3hwcnQtPnNtX2RyLnhwcnQsIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9mZCwKLSAJCXJk bWFfeHBydC0+cXAtPnFwX251bSwKLUBAIC0xNjUsNyArMTcxLDggQEAKLSAJCXJkbWFfeHBydC0+ c21fZHIueHBydC54cF9yZW1vdGUubmIuYnVmID8KLSAJCXN2Y19nZXRfcG9ydChyZG1hX3hwcnQt PnNtX2RyLnhwcnQueHBfcmVtb3RlLm5iLmJ1ZikgOiAwLAotIAkJcmRtYV94cHJ0LT5zbV9kci54 cHJ0LnhwX3JlZmNudCwKLS0JCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9mbGFncyk7Ci0rCQly ZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MsCi0rCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQu eHBfaXApOwotIAotIAlyZXR1cm4gKFhQUlRfSURMRSk7Ci0gfQotQEAgLTIyMSw2ICsyMjgsMjcg QEAKLSAJCXJldHVybiAoWFBSVF9ESUVEKTsKLSAJfQotIAotKwkvKiBpbiBvcmRlciBvZiBsaWtl bGlob29kICovCi0rCWlmIChyZXEtPnJxX21zZy5ybV9kaXJlY3Rpb24gPT0gQ0FMTCkgewotKwkJ LyogYW4gb3JkaW5hcnkgY2FsbCBoZWFkZXIgKi8KLSsJCWdvdG8gcHJvY2Vzc19jYWxsOwotKwl9 Ci0rCi0rCWlmIChyZXEtPnJxX21zZy5ybV9kaXJlY3Rpb24gPT0gUkVQTFkpIHsKLSsJCS8qIHJl cGx5IGhlYWRlciAoeHBydCBPSykgKi8KLSsJCWNsbnRfcmVxX3Byb2Nlc3NfcmVwbHkocmVxLT5y cV94cHJ0LCByZXEpOwotKwkJcmV0dXJuIFhQUlRfSURMRTsKLSsJfQotKwotKwlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfV0FSTiwKLSsJCSIlczogJXAgZmQgJWQgZmFpbGVkIGRpcmVjdGlvbiAl IiBQUkl1MzIKLSsJCSIgKHdpbGwgc2V0IGRlYWQpIiwKLSsJCV9fZnVuY19fLCByZXEtPnJxX3hw cnQsIHJlcS0+cnFfeHBydC0+eHBfZmQsCi0rCQlyZXEtPnJxX21zZy5ybV9kaXJlY3Rpb24pOwot KwlyZXR1cm4gKFhQUlRfRElFRCk7Ci0rCi0rcHJvY2Vzc19jYWxsOgotKwotIAkvKiB0aGUgY2hl Y2tzdW0gKi8KLSAJcmVxLT5ycV9ja3N1bSA9IDA7Ci0gCi1AQCAtMjg5LDcgKzMxNyw3IEBACi0g Ci0gCXN2Y19ycXN0X3hwcnRfdW5yZWdpc3Rlcl9yZG1hKHhwcnQsIGZsYWdzKTsKLSAKLS0JX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsCi0gCSAgICAiJXMoKSAlcFsldV0iLAotIAkgICAgX19mdW5jX18sIHJkbWFfeHBy dCwgcmRtYV94cHJ0LT5zdGF0ZSk7Ci0gCi1AQCAtMzEzLDcgKzM0MSw3IEBACi0gewotIAlSRE1B WFBSVCAqcmRtYV94cHJ0ID0gUkRNQV9EUihSRUNfWFBSVCh4cHJ0KSk7Ci0gCi0tCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FVkVOVCwKLSsJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19S RE1BLAotIAkJIiVzKCkgJXAgeHBfcmVmY250ICUiIFBSSWQzMgotIAkJIiBzaG91bGQgYWN0dWFs bHkgZGVzdHJveSB0aGluZ3MgQCAlczolZCIsCi0gCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBf cmVmY250LCB0YWcsIGxpbmUpOwotQEAgLTM2OCw3ICszOTYsNyBAQAotIAlyZXR1cm4gKFRSVUUp OwotIH0KLSAKLS1zdGF0aWMgdm9pZAotK3ZvaWQKLSBzdmNfcmRtYV9vcHMoU1ZDWFBSVCAqeHBy dCkKLSB7Ci0gCXN0YXRpYyBzdHJ1Y3QgeHBfb3BzIG9wczsKLWRpZmYgLXVyIG50aXJwYy03LjIv c3JjL3N2Y19ycXN0LmMgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVj YmQ2MzMvc3JjL3N2Y19ycXN0LmMKLS0tLSBudGlycGMtNy4yL3NyYy9zdmNfcnFzdC5jCTIwMjUt MDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2NhMmY0YWYz NzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3N2Y19ycXN0LmMJMjAyNi0wNi0xMSAxNDox MjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC0yOTcsNyArMjk3LDcgQEAKLSBzdGF0aWMgdm9pZCBz dmNfcnFzdF9lcG9sbF9sb29wKHN0cnVjdCB3b3JrX3Bvb2xfZW50cnkgKndwZSk7Ci0gc3RhdGlj IHZvaWQgc3ZjX2NvbXBsZXRlX3Rhc2soc3RydWN0IHN2Y19ycXN0X3JlYyAqc3JfcmVjLCBib29s IGZpbmlzaGVkKTsKLSAKLS1zdGF0aWMgaW50Ci0raW50Ci0gc3ZjX3Jxc3RfZXhwaXJlX2NtcGYo Y29uc3Qgc3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqbGhzLAotIAkJICAgICBjb25zdCBzdHJ1Y3Qg b3ByX3JidHJlZV9ub2RlICpyaHMpCi0gewotQEAgLTM3MSw3ICszNzEsNyBAQAotIAlldl9zaWco c3JfcmVjLT5zdlswXSwgMCk7CS8qIHNlbmQgd2FrZXVwICovCi0gfQotIAotLXN0YXRpYyB2b2lk Ci0rdm9pZAotIHN2Y19ycXN0X2V4cGlyZV90YXNrKHN0cnVjdCB3b3JrX3Bvb2xfZW50cnkgKndw ZSkKLSB7Ci0gCXN0cnVjdCBjbG50X3JlcSAqY2MgPSBvcHJfY29udGFpbmVyb2Yod3BlLCBzdHJ1 Y3QgY2xudF9yZXEsIGNjX3dwZSk7Ci1kaWZmIC11ciBudGlycGMtNy4yL3NyYy9zdmNfdmMuYyBu dGlycGMtYmIzMzNjY2EyZjRhZjM3OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy9zcmMvc3ZjX3Zj LmMKLS0tLSBudGlycGMtNy4yL3NyYy9zdmNfdmMuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAw MDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZl Y2JkNjMzL3NyYy9zdmNfdmMuYwkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAot QEAgLTc0LDYgKzc0LDcgQEAKLSAjaW5jbHVkZSA8cnBjL3N2Y19hdXRoLmg+Ci0gI2luY2x1ZGUg PHJwYy9zdmNfcnFzdC5oPgotICNpbmNsdWRlIDxycGMveGRyX2lvcS5oPgotKyNpbmNsdWRlIDxh cnBhL2luZXQuaD4KLSAKLSAjaW5jbHVkZSAicnBjX2NvbS5oIgotICNpbmNsdWRlICJjbG50X2lu dGVybmFsLmgiCi1AQCAtNDM4LDYgKzQzOSw3IEBACi0gCXNvY2tsZW5fdCBsZW47Ci0gCXN0YXRp YyBpbnQgbiA9IDE7Ci0gCXN0cnVjdCB0aW1ldmFsIHRpbWV2YWw7Ci0rCXN0cnVjdCBzb2NrYWRk ciAqc2E7Ci0gCi0gCVhQUlRfQVVUT19UUkFDRVBPSU5UKHhwcnQsIHJlbmRlenZvdXNfc3RhcnQs IFRSQUNFX0lORk8sCi0gCQkicmVuZGV6dm91c19zdGFydCIpOwotQEAgLTUwNSw2ICs1MDcsMjgg QEAKLSAJbmV3eHBydC0+eHBfcmVtb3RlLm5iLmxlbiA9IGxlbjsKLSAJWFBSVF9UUkFDRShuZXd4 cHJ0LCBfX2Z1bmNfXywgX19mdW5jX18sIF9fTElORV9fKTsKLSAKLSsJc2EgPSAoc3RydWN0IHNv Y2thZGRyICopbmV3eHBydC0+eHBfcmVtb3RlLm5iLmJ1ZjsKLSsJLyogU3RvcmUgY2xpZW50IGlu Zm9ybWF0aW9uIChJUCAmIFBvcnQpIGluIFNWQ1hQUlQgKi8KLSsJaWYgKG5ld3hwcnQtPnhwX3Jl bW90ZS5uYi5sZW4gPiAwICYmIHNhICE9IE5VTEwpIHsKLSsJCWlmIChzYS0+c2FfZmFtaWx5ID09 IEFGX0lORVQpIHsKLSsJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IChzdHJ1Y3Qgc29ja2Fk ZHJfaW4gKilzYTsKLSsJCQlpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+c2luX2FkZHIsIG5ld3hw cnQtPnhwX2NsbnRfYWRkciwKLSsJCQkJCXNpemVvZihuZXd4cHJ0LT54cF9jbG50X2FkZHIpKTsK LSsJCQluZXd4cHJ0LT54cF9jbG50X3BvcnQgPSBudG9ocyhzaW4tPnNpbl9wb3J0KTsKLSsJCX0g ZWxzZSBpZiAoc2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewotKwkJCXN0cnVjdCBzb2NrYWRk cl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhOwotKwkJCWluZXRfbnRvcChB Rl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwgbmV3eHBydC0+eHBfY2xudF9hZGRyLAotKwkJCQkJ c2l6ZW9mKG5ld3hwcnQtPnhwX2NsbnRfYWRkcikpOwotKwkJCW5ld3hwcnQtPnhwX2NsbnRfcG9y dCA9IG50b2hzKHNpbjYtPnNpbjZfcG9ydCk7Ci0rCQl9IGVsc2UgewotKwkJCXNucHJpbnRmKG5l d3hwcnQtPnhwX2NsbnRfYWRkciwgc2l6ZW9mKG5ld3hwcnQtPnhwX2NsbnRfYWRkciksICJ1bmtu b3duIik7Ci0rCQkJbmV3eHBydC0+eHBfY2xudF9wb3J0ID0gMDsKLSsJCX0KLSsJfSBlbHNlIHsK LSsJCXNucHJpbnRmKG5ld3hwcnQtPnhwX2NsbnRfYWRkciwgc2l6ZW9mKG5ld3hwcnQtPnhwX2Ns bnRfYWRkciksICJub19hZGRyIik7Ci0rCQluZXd4cHJ0LT54cF9jbG50X3BvcnQgPSAwOwotKwl9 Ci0rCi0gCS8qIFhYWCBmdmRsIC0gaXMgdGhpcyB1c2VmdWw/IChZZXMuICBNYXR0KSAqLwotIAlp ZiAoc2kuc2lfcHJvdG8gPT0gSVBQUk9UT19UQ1ApIHsKLSAJCWxlbiA9IDE7Ci1AQCAtOTc5LDcg KzEwMDMsNyBAQAotIAlTVkNYUFJUICp4cHJ0LCBzdHJ1Y3QgcHJveHlfaGVhZGVyX3BhcnQgKnBy b3h5X2hlYWRlcl9wYXJ0KQotIHsKLSAJZW51bSBoYXByb3h5X3JldF9jb2RlIHJldDsKLS0JX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsCi0gCQkiJXM6ICVwIGZkICVkIHByb3h5IGlnbm9yZWQgZm9yIGxvY2FsLiBsZW4g aWdub3JlZDogJWQiLAotIAkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCBwcm94eV9oZWFk ZXJfcGFydC0+bGVuKTsKLSAJY29uc3QgZW51bSBoYXByb3h5X3JldF9jb2RlIGlnbm9yZV9yZW1h aW5pbmdfZGF0YV9yZXN1bHQgPQotQEAgLTEyMDUsOSArMTIyOSw5IEBACi0gCQkJCQkJeHBydCwK LSAJCQkJCQlTVkNfWFBSVF9GTEFHX0FEREVEX1JFQ1YpKSkgewotIAkJCQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VSUk9SLAotLQkJCQkJCSIlczogJXAgZmQgJWQgc3ZjX3Jxc3RfcmVhcm1f ZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkiLAotKwkJCQkJCSIlczogJXAgZmQgJWQgc3Zj X3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6 JXUiLAotIAkJCQkJCSJzdmNfdmNfd2FpdCIsCi0tCQkJCQkJeHBydCwgeHBydC0+eHBfZmQpOwot KwkJCQkJCXhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2Ns bnRfcG9ydCk7Ci0gCQkJCQlTVkNfREVTVFJPWSh4cHJ0KTsKLSAJCQkJCWNvZGUgPSBFSU5WQUw7 Ci0gCQkJCX0KLUBAIC0xMjE2LDggKzEyNDAsOCBAQAotIAkJCQlyZXR1cm4gU1ZDX1NUQVQoeHBy dCk7Ci0gCQkJfQotIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19XQVJOLAotLQkJCQkiJXM6 ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHdpbGwgc2V0IGRlYWQpIiwKLS0JCQkJInN2Y192Y193 YWl0IiwgeHBydCwgeHBydC0+eHBfZmQsIGNvZGUpOwotKwkJCQkiJXM6ICVwIGZkICVkIHJlY3Yg ZXJybm8gJWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKLSsJCQkJInN2Y192 Y193YWl0IiwgeHBydCwgeHBydC0+eHBfZmQsIGNvZGUsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBy dC0+eHBfY2xudF9wb3J0KTsKLSAJCQlTVkNfREVTVFJPWSh4cHJ0KTsKLSAKLSAJCQlYUFJUX0FV VE9fVFJBQ0VQT0lOVCh4cHJ0LCByZWN2X2VyciwKLUBAIC0xMjI3LDggKzEyNTEsOCBAQAotIAot IAkJaWYgKHVubGlrZWx5KCFybGVuKSkgewotIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19T VkNfVkMsCi0tCQkJCSIlczogJXAgZmQgJWQgcmVjdiBjbG9zZWQgKHdpbGwgc2V0IGRlYWQpIiwK LS0JCQkJInN2Y192Y193YWl0IiwgeHBydCwgeHBydC0+eHBfZmQpOwotKwkJCQkiJXM6ICVwIGZk ICVkIHJlY3YgY2xvc2VkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCi0rCQkJ CSJzdmNfdmNfd2FpdCIsIHhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhw cnQtPnhwX2NsbnRfcG9ydCk7Ci0gCQkJU1ZDX0RFU1RST1koeHBydCk7Ci0gCi0gCQkJWFBSVF9B VVRPX1RSQUNFUE9JTlQoeHBydCwgcmVjdl9lbXB0eSwKLUBAIC0xMjQzLDYgKzEyNjcsMTYgQEAK LSAJCQkic3hfZmJ0YmMgPSAlMDh4IiwgKGludCl4ZC0+c3hfZmJ0YmMpOwotIAotIAkJaWYgKHhk LT5zeF9mYnRiYyA9PSBQUDJfU0lHX1VJTlQzMikgewotKwkJCS8qIFNpbmNlIHRoaXMgaXMgaGFw cm94eSBoZWFkZXIgY2xlYXIgb2ZmIHN4X2ZidGJjCi0rCQkJICogSW4gY2FzZSBvZiBIQVBST1hZ X1JFVF9DT0RFX19JR05PUkVfTE9DQUwsCi0rCQkJICogaGFuZGxlX2hhcHJveHlfaGVhZGVyKCkg ZG8gcmVhcm0gdGhlIHhwcnQgcmVjdiBmZC4KLSsJCQkgKiBjYXVzaW5nIGEgcmFjZSBpZiB0aGUg dGhyZWFkIGdldHMgc2NoZWR1bGVkCi0rCQkJICogb3V0IGFmdGVyIHJlYXJtIGFuZCBlcG9sbF93 YWl0IGdldHMgZGF0YSBhdmFpbGFibGUKLSsJCQkgKiBldmVudCwgdGhlbiBuZXcgcmVjdiBlbmR1 cCBpbiBlbHNlY2FzZQotKwkJCSAqICJpZiAoIXhkLT5zeF9mYnRiYykiCi0rCQkJICogYW5kIHdp bGwgY2F1c2UgdXYgdG8gTlVMTCAqLwotKwkJCXhkLT5zeF9mYnRiYyA9IDA7Ci0rCi0gCQkJLyog SEEgUHJveHkgVjI/ICovCi0gCQkJZW51bSBoYXByb3h5X3JldF9jb2RlIHJldCA9IGhhbmRsZV9o YXByb3h5X2hlYWRlcih4cHJ0KTsKLSAJCQlzd2l0Y2ggKHJldCkgewotQEAgLTEyNTIsMTcgKzEy ODYsMTUgQEAKLSAJCQkJCXJldHVybiBTVkNfU1RBVCh4cHJ0KTsKLSAJCQkJfQotIAkJCQkvKiBO b3cgbG9vayB0byBzZWUgaWYgdGhlcmUncyBtb3JlLi4uICovCi0tCSAgICAgICAgICAgICAgICAg ICAgICAgIHhkLT5zeF9mYnRiYyA9IDA7Ci0gCQkJCWhhcF9hZ2FpbiA9IHRydWU7Ci0gCQkJCWdv dG8gYWdhaW47Ci0gCQkJY2FzZSBIQVBST1hZX1JFVF9DT0RFX19GQUlMVVJFOgotIAkJCQlTVkNf REVTVFJPWSh4cHJ0KTsKLSAJCQkJcmV0dXJuIFNWQ19TVEFUKHhwcnQpOwotIAkJCWNhc2UgSEFQ Uk9YWV9SRVRfQ09ERV9fSUdOT1JFX0xPQ0FMOgotLQkJCQkvKiBjbGVhciBvZmYgc3hfZmJ0YmMg Ki8KLS0JICAgICAgICAgICAgICAgICAgICAgICAgeGQtPnN4X2ZidGJjID0gMDsKLSAJCQkJcmV0 dXJuIFNWQ19TVEFUKHhwcnQpOwotIAkJCWNhc2UgSEFQUk9YWV9SRVRfQ09ERV9fTk9UX0hBUFJP WFk6Ci0rCQkJCXhkLT5zeF9mYnRiYyA9IFBQMl9TSUdfVUlOVDMyOwotIAkJCQlicmVhazsKLSAJ CQl9Ci0gCQl9Ci1AQCAtMTI3Niw4ICsxMzA4LDggQEAKLSAKLSAJCWlmICh1bmxpa2VseSgheGQt PnN4X2ZidGJjKSkgewotIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKLS0JCQkJ IiVzOiAlcCBmZCAlZCBmcmFnbWVudCBpcyB6ZXJvICh3aWxsIHNldCBkZWFkKSIsCi0tCQkJCV9f ZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCk7Ci0rCQkJCSIlczogJXAgZmQgJWQgZnJhZ21lbnQg aXMgemVybyAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAotKwkJCQlfX2Z1bmNf XywgeHBydCwgeHBydC0+eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9w b3J0KTsKLSAJCQlTVkNfREVTVFJPWSh4cHJ0KTsKLSAKLSAJCQlYUFJUX0FVVE9fVFJBQ0VQT0lO VCh4cHJ0LCByZWN2X25vX3JlY29yZCwKLUBAIC0xMzAzLDE0ICsxMzM1LDE0IEBACi0gCi0gCQlp ZiAoY29kZSA9PSBFQUdBSU4gfHwgY29kZSA9PSBFV09VTERCTE9DSykgewotIAkJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19TVkNfVkMsCi0tCQkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJubyAl ZCAodHJ5IGFnYWluKSIsCi0tCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgY29kZSk7 Ci0rCQkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJubyAlZCAodHJ5IGFnYWluKSAtIGNsaWVudGlw OiAlczoldSIsCi0rCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgY29kZSwgeHBydC0+ eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOwotIAkJCWlmICh1bmxpa2VseShzdmNf cnFzdF9yZWFybV9ldmVudHMoCi0gCQkJCQkJeHBydCwKLSAJCQkJCQlTVkNfWFBSVF9GTEFHX0FE REVEX1JFQ1YpKSkgewotIAkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCi0tCQkJ CQkiJXM6ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRl YWQpIiwKLS0JCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCk7Ci0rCQkJCQkiJXM6ICVw IGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xp ZW50aXA6ICVzOiV1IiwKLSsJCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgeHBydC0+ eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOwotIAkJCQlTVkNfREVTVFJPWSh4cHJ0 KTsKLSAJCQkJY29kZSA9IEVJTlZBTDsKLSAJCQl9Ci1AQCAtMTMyMSw4ICsxMzUzLDggQEAKLSAJ CQlyZXR1cm4gU1ZDX1NUQVQoeHBydCk7Ci0gCQl9Ci0gCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVJST1IsCi0tCQkJIiVzOiAlcCBmZCAlZCByZWN2IGVycm5vICVkICh3aWxsIHNldCBkZWFk KSIsCi0tCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCBjb2RlKTsKLSsJCQkiJXM6ICVw IGZkICVkIHJlY3YgZXJybm8gJWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwK LSsJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIGNvZGUsIHhwcnQtPnhwX2NsbnRfYWRk ciwgeHBydC0+eHBfY2xudF9wb3J0KTsKLSAJCVNWQ19ERVNUUk9ZKHhwcnQpOwotIAotIAkJWFBS VF9BVVRPX1RSQUNFUE9JTlQoeHBydCwgcmVjdl9lcnJvciwKLUBAIC0xMzMzLDggKzEzNjUsOCBA QAotIAotIAlpZiAodW5saWtlbHkoIXJsZW4pKSB7Ci0gCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfU1ZDX1ZDLAotLQkJCSIlczogJXAgZmQgJWQgcmVjdiBjbG9zZWQgKHdpbGwgc2V0IGRlYWQp IiwKLS0JCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQpOwotKwkJCSIlczogJXAgZmQgJWQg cmVjdiBjbG9zZWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKLSsJCQlfX2Z1 bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xu dF9wb3J0KTsKLSAJCVNWQ19ERVNUUk9ZKHhwcnQpOwotIAotIAkJWFBSVF9BVVRPX1RSQUNFUE9J TlQoeHBydCwgcmVjdl9jbG9zZWQsCi1AQCAtMTM1OCw4ICsxMzkwLDggQEAKLSAJCWlmICh1bmxp a2VseShzdmNfcnFzdF9yZWFybV9ldmVudHMoeHBydCwKLSAJCQkJCQkgICBTVkNfWFBSVF9GTEFH X0FEREVEX1JFQ1YpKSkgewotIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKLS0J CQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMgZmFpbGVkICh3aWxsIHNldCBk ZWFkKSIsCi0tCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCk7Ci0rCQkJCSIlczogJXAg ZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkgLSBjbGll bnRpcDogJXM6JXUiLAotKwkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIHhwcnQtPnhw X2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKLSAJCQlYUFJUX1VOSVFVRV9BVVRPX1RS QUNFUE9JTlQoeHBydCwgcmVhcm1fZmFpbGVkLAotIAkJCQlUUkFDRV9FUlIsICJSZWFybSBmYWls ZWQiKTsKLSAJCQlTVkNfREVTVFJPWSh4cHJ0KTsKLUBAIC0xMzg1LDggKzE0MTcsOCBAQAotIAot IAlpZiAodW5saWtlbHkoc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzKHhwcnQsIFNWQ19YUFJUX0ZMQUdf QURERURfUkVDVikpKSB7Ci0gCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCi0tCQkJ IiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMgZmFpbGVkICh3aWxsIHNldCBkZWFk KSIsCi0tCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkKTsKLSsJCQkiJXM6ICVwIGZkICVk IHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6 ICVzOiV1IiwKLSsJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIHhwcnQtPnhwX2NsbnRf YWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKLSAJCXhkcl9pb3FfZGVzdHJveSh4aW9xLCB4aW9x LT5pb3Ffcy5xc2l6ZSk7Ci0gCQlTVkNfREVTVFJPWSh4cHJ0KTsKLSAKLWRpZmYgLXVyIG50aXJw Yy03LjIvc3JjL3N2Y194cHJ0LmMgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZj ZDg3NmVjYmQ2MzMvc3JjL3N2Y194cHJ0LmMKLS0tLSBudGlycGMtNy4yL3NyYy9zdmNfeHBydC5j CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbnRpcnBjLWJiMzMzY2Nh MmY0YWYzNzlmMWVlY2U2OTM4OGZjZDg3NmVjYmQ2MzMvc3JjL3N2Y194cHJ0LmMJMjAyNi0wNi0x MSAxNDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC00MTQsMTEgKzQxNCwxNyBAQAotIAkJCQkJ Z290byByZXN0YXJ0OwotIAkJCQl9Ci0gCQkJfQotLQkJCS8qIElmIGV4aXRzIGVhcmxpZXIsIGNs ZWFyIHRoZSBmbGFnIGV4cGxpY2l0bHkgKi8KLSsJCQkvKgotKwkJCSAqIEdldCB0aGUgbmV4dCBu b2RlIEJFRk9SRSByZWxlYXNpbmcgdGhlIHJlZmVyZW5jZS4KLSsJCQkgKiBTVkNfUkVMRUFTRSBt YXkgdHJpZ2dlciBkZXN0cnVjdGlvbiBpZiByZWZjbnQgZHJvcHMKLSsJCQkgKiB0byAwLCB3aGlj aCBmcmVlcyB0aGUgbWVtb3J5LiBUaGUgbWVtb3J5IGNhbiBiZQotKwkJCSAqIGltbWVkaWF0ZWx5 IHJldXNlZCBieSBhbm90aGVyIHhwcnQgKHVzZS1hZnRlci1mcmVlKS4KLSsJCQkgKi8KLSsJCQlu ID0gb3ByX3JidHJlZV9uZXh0KG4pOwotKwkJCS8qIE5vdyBzYWZlIHRvIHJlbGVhc2UgLSB3ZSBo YXZlIHRoZSBuZXh0IG5vZGUgKi8KLSAJCQlhdG9taWNfY2xlYXJfdWludDE2X3RfYml0cygKLSAJ CQkJJnJlYy0+eHBydC54cF9mbGFncywgU1ZDX1hQUlRfVFJFRV9MT0NLRUQpOwotIAkJCVNWQ19S RUxFQVNFKCZyZWMtPnhwcnQsIFNWQ19SRUxFQVNFX0ZMQUdfTk9ORSk7Ci0tCQkJbiA9IG9wcl9y YnRyZWVfbmV4dChuKTsKLSAJCX0JCS8qIGN1cnIgcGFydGl0aW9uICovCi0gCQlyd2xvY2tfdW5s b2NrKCZ0LT5sb2NrKTsgLyogdCAhTE9DS0VEICovCi0gCQlwX2l4Kys7Ci1kaWZmIC11ciBudGly cGMtNy4yL3NyYy94ZHJfaW9xLmMgbnRpcnBjLWJiMzMzY2NhMmY0YWYzNzlmMWVlY2U2OTM4OGZj ZDg3NmVjYmQ2MzMvc3JjL3hkcl9pb3EuYwotLS0tIG50aXJwYy03LjIvc3JjL3hkcl9pb3EuYwky MDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJm NGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy94ZHJfaW9xLmMJMjAyNi0wNi0xMSAx NDoxMjoxNy4wMDAwMDAwMDAgLTA0MDAKLUBAIC0yNjAsNiArMjYwLDcgQEAKLSAJCSAgICAmcmRt YV94cHJ0LT5sYXN0X2V4dHJhX2J1Zl9hbGxvY2F0aW9uX3RpbWUpOwotIAl9Ci0gCi0rCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19YRFIsICJpbyBidWYgcmVmICVwIHJlZnMgJWQiLCBpb19idWYs IGlvX2J1Zi0+cmVmcyk7Ci0gCXJldHVybiBhdG9taWNfaW5jX3VpbnQzMl90KCZpb19idWYtPnJl ZnMpOwotIH0KLSAKLUBAIC0yOTEsNyArMjkyLDcgQEAKLSB7Ci0gCXN0cnVjdCBwb29scV9oZWFk ICppb3FoID0gZ2V0X2RhdGFfcG9vbHFfaGVhZChpb19idWYsIHJkbWFfeHBydCk7Ci0gCi0tCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVzOiBTdGFydCBzaHJpbmtpbmcgeHBydCAl cCAiCi0rCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsICIlczogU3RhcnQgc2hyaW5raW5n IHhwcnQgJXAgIgotIAkgICAgImlvX2J1ZiAlcCByZWZzICVkIGlvcWggJXAgY291bnQgJWQiLAot IAkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgaW9fYnVmLCBpb19idWYtPnJlZnMsIGlvcWgsCi0g CSAgICBpb3FoLT5xY291bnQpOwotQEAgLTM4NSw3ICszODYsNyBAQAotIAkJCXJkbWFfeHBydC0+ aW9fYnVmc19jb3VudC0tOwotIAkJCXJkbWFfeHBydC0+aW9fYnVmcy5xY291bnQtLTsKLSAKLS0J CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlczogeHBydCAlcCBzaHJpbmsgIgot KwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsICIlczogeHBydCAlcCBzaHJpbmsgIgot IAkJCSAgICAiaW9fYnVmICVwIHJlZnMgJWQgaW9fYnVmcyBjb3VudCAlZCAlZCIsCi0gCQkJICAg IF9fZnVuY19fLCByZG1hX3hwcnQsIGlvX2J1ZiwgaW9fYnVmLT5yZWZzLAotIAkJCSAgICByZG1h X3hwcnQtPmlvX2J1ZnNfY291bnQsCi1AQCAtNDAzLDYgKzQwNCw3IEBACi0gCXN0cnVjdCBycGNf aW9fYnVmcyAqaW9fYnVmID0gZ2V0X3BhcmVudF9jaHVuayhoYXZlKTsKLSAJdWludDMyX3QgcmVm cyA9IGF0b21pY19kZWNfdWludDMyX3QoJmlvX2J1Zi0+cmVmcyk7Ci0gCVJETUFYUFJUICpyZG1h X3hwcnQgPSAoUkRNQVhQUlQgKilpb19idWYtPmN0eDsKLSsJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1hEUiwgImlvIGJ1ZiB1bnJlZiAlcCByZWZzICVkIiwgaW9fYnVmLCBpb19idWYtPnJlZnMp OwotIAotIAkvKiBDaGVjayBpZiBpdHMgb24gb24gZGVtYW5kIGFsbG9jYXRlZCBkYXRhIGJ1ZiAq LwotIAlpZiAoaXNfc2hyaW5rX2J1Zihpb19idWYsIHJkbWFfeHBydCkpIHsKLUBAIC02NDgsNyAr NjUwLDcgQEAKLSAJCQkgICAgaW9fYnVmLT5idWZmZXJfYWxpZ25lZCwgaW9fYnVmLT5idWZmZXJf dG90YWwpKTsKLSAJCQlpb19idWYtPm1yID0gTlVMTDsKLSAKLS0JCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVZFTlQsICIlcygpIEZyZWUgeHBydCAlcCBtciAiCi0rCQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1hEUiwgIiVzKCkgRnJlZSB4cHJ0ICVwIG1yICIKLSAJCQkgICAgImlvX2J1 ZnMgJXAgc2l6ZSAldSBpb19idWYgJXAiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LAotIAkJCSAgICBp b19idWYtPmJ1ZmZlcl9hbGlnbmVkLCBpb19idWYtPmJ1ZmZlcl90b3RhbCwgaW9fYnVmKTsKLSAK LUBAIC05OTgsMTIgKzEwMDAsMTIgQEAKLSAJfQotIAotIAkvKgotLQkgKiBTbWFsbCBSRE1BIFdy aXRlcwotLQkgKiBJZiBkYXRhIGlzIGlubGluZSwgaXQgc2hvdWxkIGJlIHBhcnQgb2YgbmZzX2J1 ZmZlciBpdHNlbGYuCi0tCSAqIFNvLCB0byBhdm9pZCB0aGUgSUxMRUdBTF9PUCwgc3RhcnQgc2hv dWxkIGFkdmFuY2UgYnkgZGF0YWxlbgotLQkgKiB0byBwaWNrIHRoZSBjb3JyZWN0IE9QIHdoaWxl IGRlY29kaW5nIHRoZSBDT01QT1VORCBvcHMuCi0rCSAqIFNtYWxsIFJETUEgV3JpdGVzIChJbmxp bmUgUkRNQSkKLSsJICogVGhlIHdyaXRlIGRhdGEgZml0cyBlbnRpcmVseSB3aXRoaW4gdGhlIGN1 cnJlbnQgKE5GUyBoZWFkZXIpIFVWCi0rCSAqIGF0IHRoZSBjdXJyZW50IFhEUiBwb3NpdGlvbi4g IFJldHVybiAnc3RhcnQnIHVuY2hhbmdlZCBzbyB0aGF0Ci0rCSAqIFhEUl9GSUxMQlVGUyByZWFk cyB0aGUgYWN0dWFsIGRhdGEgYnl0ZXMuCi0gCSAqLwotLQlyZXR1cm4gc3RhcnQgKyBkYXRhbGVu OwotKwlyZXR1cm4gc3RhcnQ7Ci0gCi0gfQotIAotQEAgLTEwMjcsOSArMTAyOSwxNSBAQAotIAkg KiBuZXh0IG5mcyBoZWFkZXIgaW4gY29tcG91bmQgb3AuICovCi0gCWlmIChkYXRhbGVuID4gKCh1 aW50cHRyX3QpeGRycy0+eF92LnZpb190YWlsIC0gKHVpbnRwdHJfdCl4ZHJzLT54X2RhdGEpKSB7 Ci0gCQlvZmZzZXQgPSAodWludHB0cl90KXhkcnMtPnhfdi52aW9fdGFpbCAtICh1aW50cHRyX3Qp eGRycy0+eF9kYXRhOwotKwkJcmV0dXJuIHN0YXJ0IC0gb2Zmc2V0OwotIAl9Ci0gCi0tCXJldHVy biBzdGFydCAtIG9mZnNldDsKLSsJLyogSW5saW5lIFJETUE6ICdzdGFydCcgaXMgdGhlIHBvc2l0 aW9uIG9mIHRoZSBmaXJzdCBkYXRhIGJ5dGUKLSsJICogKGdldHN0YXJ0ZGF0YXBvcyByZXR1cm5l ZCBpdCB1bmNoYW5nZWQpLiAgJ2RhdGFsZW4nIGhlcmUgaXMKLSsJICogUk5EVVAoZGF0YV9sZW4p LCBpLmUuIHRoZSBkYXRhIGJ5dGVzIHBsdXMgYW55IFhEUiBhbGlnbm1lbnQKLSsJICogcGFkZGlu Zy4gIEFkdmFuY2UgcGFzdCBib3RoIHNvIHRoZSBkZWNvZGVyIGlzIHBvc2l0aW9uZWQgYXQKLSsJ ICogdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNvbXBvdW5kIG9wLiAqLwotKwlyZXR1cm4gc3RhcnQg KyBkYXRhbGVuOwotIH0KLSAKLSBzdGF0aWMgYm9vbAotQEAgLTE4NTUsNyArMTg2Myw3IEBACi0g Ci0gCXdoaWxlIChpZHggPCBpb3ZfY291bnQpIHsKLSAJCS8qIEFub3RoZXIgVFJBSUxFUiBidWZm ZXIgdG8gbWFuYWdlICovCi0tCQl2aW9fdHlwZSB2dCA9IHZlY3RvcltpZHhdLnZpb190eXBlOwot KwkJdmlvX3R5cGVfdCB2dCA9IHZlY3RvcltpZHhdLnZpb190eXBlOwotIAotIAkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1hEUiwKLSAJCQkiQ2FsbGluZyB4ZHJfaW9xX3VzZV9vcl9hbGxvY2F0 ZSBmb3IgaWR4ICVkIGZvciAlcyIsCi1kaWZmIC11ciBudGlycGMtNy4yL3NyYy94ZHJfcmRtYS5j IG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3NyYy94ZHJf cmRtYS5jCi0tLS0gbnRpcnBjLTcuMi9zcmMveGRyX3JkbWEuYwkyMDI1LTA5LTIzIDEwOjA1OjE5 LjAwMDAwMDAwMCAtMDQwMAotKysrIG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhm Y2Q4NzZlY2JkNjMzL3NyYy94ZHJfcmRtYS5jCTIwMjYtMDYtMTEgMTQ6MTI6MTcuMDAwMDAwMDAw IC0wNDAwCi1AQCAtMjExLDE3ICsyMTEsMTggQEAKLSAJaW50IHJldCA9IDA7Ci0gCWludDMyX3Qg d3JpdGVfd2FpdHMgPSBhdG9taWNfZGVjX2ludDMyX3QoJmNiYy0+d3JpdGVfd2FpdHMpOwotIAot LQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAotLQkgICAgIiVzKCkgJXBbJXVdIGNiYyAl cCBjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkXG4iLAotLQkgICAgX19mdW5jX18sIHJkbWFfeHBy dCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjLAotLQkgICAgY2JjLT5yZWZjbnQsIHdyaXRlX3dhaXRz KTsKLSAKLSAJaWYgKHJkbWFfeHBydC0+c21fZHIueHBydC54cF9mbGFncyAmIFNWQ19YUFJUX0ZM QUdfREVTVFJPWUVEKSB7Ci0tCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIgJXMg cmRtYV94cHJ0ICVwIGNiYyAlcCAiCi0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JE TUEsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCi0gCQkgICAgImNiY19yZWYgJWQgd3JpdGVf d2FpdHMgJWQgYWxyZWFkeSBkZXN0cm95ZWQiLAotIAkJICAgIF9fZnVuY19fLCByZG1hX3hwcnQs IGNiYywgY2JjLT5yZWZjbnQsIHdyaXRlX3dhaXRzKTsKLSAKLSAJCXJldCA9ICAtMTsKLSsJfSBl bHNlIHsKLSsJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCi0rCQkJIiVzKCkgJXBbJXVd IGNiYyAlcCBjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkXG4iLAotKwkJCV9fZnVuY19fLCByZG1h X3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYywKLSsJCQljYmMtPnJlZmNudCwgd3JpdGVfd2Fp dHMpOwotIAl9Ci0gCi0gCWNiY19yZWxlYXNlX2l0KGNiYyk7Ci1AQCAtMjM1LDE3ICsyMzYsMTgg QEAKLSAJaW50IHJldCA9IDA7Ci0gCWludCB3cml0ZV93YWl0cyA9IGF0b21pY19kZWNfaW50MzJf dCgmY2JjLT53cml0ZV93YWl0cyk7Ci0gCi0tCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJP UiwKLS0JICAgICIlcygpICVwWyV1XSBjYmMgJXAgcmVmcyAlZCB3cml0ZV93YWl0cyAlZFxuIiwK LS0JICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYywKLS0JICAg IGNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7Ci0gCi0gCWlmIChyZG1hX3hwcnQtPnNtX2RyLnhw cnQueHBfZmxhZ3MgJiBTVkNfWFBSVF9GTEFHX0RFU1RST1lFRCkgewotLQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VSUk9SLCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgotKwkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgot IAkJICAgICJjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkIGFscmVhZHkgZGVzdHJveWVkIiwKLSAJ CSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMsIGNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7 Ci0gCi0gCQlyZXQgPSAtMTsKLSsJfSBlbHNlIHsKLSsJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FUlJPUiwKLSsJCQkiJXMoKSAlcFsldV0gY2JjICVwIHJlZnMgJWQgd3JpdGVfd2FpdHMgJWRc biIsCi0rCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjLAotKwkJ CWNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7Ci0gCX0KLSAKLSAJY2JjX3JlbGVhc2VfaXQoY2Jj KTsKLUBAIC0yNjAsMTUgKzI2MiwxNSBAQAotIHsKLSAJaW50IHJldCA9IDA7Ci0gCi0tCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19YRFIsCi0tCQkiJXMoKSAlcFsldV0gY2JjICVwXG4iLAotLQkJ X19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjKTsKLS0KLSAJaWYgKHJk bWFfeHBydC0+c21fZHIueHBydC54cF9mbGFncyAmIFNWQ19YUFJUX0ZMQUdfREVTVFJPWUVEKSB7 Ci0tCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIgJXMgcmRtYV94cHJ0ICVwIGNi YyAlcCAiCi0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsICIgJXMgcmRtYV94 cHJ0ICVwIGNiYyAlcCAiCi0gCQkJImFscmVhZHkgZGVzdHJveWVkIiwgX19mdW5jX18sIHJkbWFf eHBydCwgY2JjKTsKLSAKLSAJCXJldCA9IC0xOwotKwl9IGVsc2UgewotKwkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1hEUiwKLSsJCQkiJXMoKSAlcFsldV0gY2JjICVwXG4iLAotKwkJCV9fZnVu Y19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYyk7Ci0gCX0KLSAKLSAJeGRyX3Jk bWFfY2FsbGJhY2tfc2lnbmFsKGNiYywgcmRtYV94cHJ0KTsKLUBAIC0yODMsMTUgKzI4NSwxNiBA QAotIHsKLSAJaW50IHJldCA9IDA7Ci0gCi0tCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJP UiwKLS0JCSIlcygpICVwWyV1XSBjYmMgJXBcbiIsCi0tCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCBy ZG1hX3hwcnQtPnN0YXRlLCBjYmMpOwotLQotIAlpZiAocmRtYV94cHJ0LT5zbV9kci54cHJ0Lnhw X2ZsYWdzICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQpIHsKLS0JCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FUlJPUiwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIKLSsJCV9fd2FybngoVElS UENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIKLSAJCQki YWxyZWFkeSBkZXN0cm95ZWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMpOwotIAotIAkJcmV0 ID0gLTE7Ci0rCX0gZWxzZSB7Ci0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCi0r CQkJIiVzKCkgJXBbJXVdIGNiYyAlcFxuIiwKLSsJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1h X3hwcnQtPnN0YXRlLCBjYmMpOwotKwotIAl9Ci0gCi0gCXhkcl9yZG1hX2NhbGxiYWNrX3NpZ25h bChjYmMsIHJkbWFfeHBydCk7Ci1AQCAtMzA4LDE1ICszMTEsMTYgQEAKLSB7Ci0gCWludCByZXQg PSAwOwotIAotLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCi0tCQkiRXJyb3IgaW4g cmVjdiBjYWxsYmFjayAlcygpICVwWyV1XSBjYmMgJXBcbiIsCi0tCQlfX2Z1bmNfXywgcmRtYV94 cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOwotLQotIAlpZiAocmRtYV94cHJ0LT5zbV9kci54 cHJ0LnhwX2ZsYWdzICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQpIHsKLS0JCV9fd2FybngoVElS UENfREVCVUdfRkxBR19FUlJPUiwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIKLSsJCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIK LSAJCQkiYWxyZWFkeSBkZXN0cm95ZWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMpOwotIAot IAkJcmV0ID0gLTE7Ci0rCX0gZWxzZSB7Ci0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJS T1IsCi0rCQkJIkVycm9yIGluIHJlY3YgY2FsbGJhY2sgJXMoKSAlcFsldV0gY2JjICVwXG4iLAot KwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYyk7Ci0rCi0gCX0K LSAKLSAJY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxFQVNFOwotQEAgLTM1NSw2ICszNTks MzMgQEAKLSAKLSAJYXRvbWljX2RlY191aW50MzJfdCgmcmRtYV94cHJ0LT5hY3RpdmVfcmVxdWVz dHMpOwotIAotKwlpZiAoKGVudW0geHBydF9zdGF0KXJldCA9PSBYUFJUX1NVU1BFTkQpIHsKLSsJ CS8qCi0rCQkgKiBUaGUgcmVxdWVzdCB3YXMgc3VzcGVuZGVkIG1pZC1jb21wb3VuZAotKwkJICog ZS5nLiBRT1MgQlcgdGhyb3R0bGUsIGFzeW5jIElPIGJhY2tlbmQuCi0rCQkgKiBObyBSRE1BIFdS SVRFL1NFTkQgb3BlcmF0aW9ucyBoYXZlIGJlZW4gcG9zdGVkCi0rCQkgKiB5ZXQsIHNvIGNiYy0+ cmVmY250IGlzIHN0aWxsIDEgKHNlbnRpbmVsIG9ubHkpLiAgUmVsZWFzaW5nCi0rCQkgKiB0aGUg c2VudGluZWwgaGVyZSB3b3VsZCBkcm9wIHJlZmNudCB0byAwLCB3aGljaCB0cmlnZ2VycwotKwkJ ICogeGRyX3JkbWFfaW9xX3JlbGVhc2UoJmNiYy0+ZGF0YXEpLCB6ZXJvaW5nIGRhdGFxLnFjb3Vu dCBhbmQKLSsJCSAqIHJldHVybmluZyBkYXRhX2NodW5rX3V2IHRvIHRoZSBwb29sIHdoaWxlIHRo ZSBzdXNwZW5kZWQKLSsJCSAqIHJlcXVlc3Qgc3RpbGwgaG9sZHMgYSBwb2ludGVyIHRvIGl0LiAg VGhlIHN1YnNlcXVlbnQKLSsJCSAqIHhkcl9yZG1hX3N2Y19mbHVzaG91dCBjYWxsIHdvdWxkIHRo ZW4gaGl0OgotKwkJICogICBhc3NlcnQoZGF0YXEucWNvdW50ID4gMCkgIGZpcmVzIHdpdGggcWNv dW50ID09IDAKLSsJCSAqCi0rCQkgKiBGaXg6IG1hcmsgRkxBR19SRUxFQVNFIChzbyBjbGVhbnVw IGZpcmVzIHdoZW4gcmVmcyBldmVudHVhbGx5Ci0rCQkgKiByZWFjaCAwKSBidXQgZGVmZXIgdGhl IHNlbnRpbmVsIGNiY19yZWxlYXNlX2l0IHRvCi0rCQkgKiB4ZHJfcmRtYV9zdmNfZmx1c2hvdXQs IHdoaWNoIGlzIGNhbGxlZCBhZnRlciBSRE1BIG9wZXJhdGlvbnMKLSsJCSAqIGFyZSBwb3N0ZWQg b24gdGhlIHJlc3VtZSBwYXRoIGFuZCB0aGVpciByZWZzIGtlZXAgdGhlIGNiYwotKwkJICogYWxp dmUuCi0rCQkgKi8KLSsJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCi0rCQkJIiVzIHJk bWFfeHBydCAlcCBjYmMgJXAgc3VzcGVuZGVkLCBkZWZlcnJpbmcgIgotKwkJCSJzZW50aW5lbCBy ZWxlYXNlIHRvIGZsdXNob3V0IiwKLSsJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMpOwotKwkJ Y2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxFQVNFIHwgQ0JDX0ZMQUdfU0VOVElORUxfUEVO RElORzsKLSsJCXJldHVybiByZXQ7Ci0rCX0KLSsKLSBlcnI6Ci0gCWNiYy0+Y2JjX2ZsYWdzID0g Q0JDX0ZMQUdfUkVMRUFTRTsKLSAKLUBAIC00NjEsNiArNDkyLDM1IEBACi0gCXJldHVybiAwOwot IH0KLSAKLSsvKiBQb3N0IHN5bmNocm9ub3VzIFJETUEgcmVjZWl2ZSBvcGVyYXRpb24gKi8KLStz dGF0aWMgaW50Ci0reGRyX3JkbWFfcG9zdF9yZWN2X3N5bmMoUkRNQVhQUlQgKnJkbWFfeHBydCwg c3RydWN0IHJwY19yZG1hX2NiYyAqY2JjLCBpbnQgc2dlKQotK3sKLSsJY2JjLT5wb3NpdGl2ZV9j YiA9IHhkcl9yZG1hX3dyYXBfY2FsbGJhY2s7Ci0rCWNiYy0+bmVnYXRpdmVfY2IgPSB4ZHJfcmRt YV9kZXN0cm95X2NhbGxiYWNrX3JlY3Y7Ci0rCWNiYy0+Y2FsbGJhY2tfYXJnID0gTlVMTDsKLSsJ Y2JjLT5jYWxsX2lubGluZSA9IDE7Ci0rCi0rCVNWQ19SRUYoJnJkbWFfeHBydC0+c21fZHIueHBy dCwgU1ZDX1JFRl9GTEFHX05PTkUpOwotKwotKwlpbnQgcmV0ID0geGRyX3JkbWFfcG9zdF9yZWN2 X24ocmRtYV94cHJ0LCBjYmMsIHNnZSk7Ci0rCi0rCWlmIChyZXQpIHsKLSsJCV9fd2FybngoVElS UENfREVCVUdfRkxBR19FUlJPUiwgIiVzIHBvc3RfcmVjdiBmYWlsZWQgcmRtYV94cHJ0ICVwICIK LSsJCQkiY2JjICVwIGVycm9yICVkIiwgX19mdW5jX18sIHJkbWFfeHBydCwgY2JjLCByZXQpOwot KwotKwkJY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxFQVNFOwotKwotKwkJLyogUmVsZWFz ZSBzZW50aW5lbCByZWYgKi8KLSsJCWNiY19yZWxlYXNlX2l0KGNiYyk7Ci0rCi0rCQlTVkNfREVT VFJPWSgmcmRtYV94cHJ0LT5zbV9kci54cHJ0KTsKLSsJfQotKwlycGNfcmRtYV9jcV9ldmVudF9o YW5kbGVyKHJkbWFfeHBydCwgMSk7Ci0rCi0rCXJldHVybiByZXQ7Ci0rfQotKwotIC8qKgotICAq IHhkcl9yZG1hX3Bvc3RfcmVjdl9jYjogUG9zdCByZWNlaXZlIGNodW5rKHMpIHdpdGggc3RhbmRh cmQgY2FsbGJhY2tzLgotICAqCi1AQCAtNjU1LDYgKzcxNSwzOSBAQAotIAotIH0KLSAKLSsvKiBQ b3N0IHN5bmNocm9ub3VzIFJETUEgc2VuZCBvcGVyYXRpb24gd2l0aCBjYWxsYmFjayAqLwotK3N0 YXRpYyBpbmxpbmUgaW50Ci0reGRyX3JkbWFfc3luY19zZW5kX2NiKFJETUFYUFJUICpyZG1hX3hw cnQsIHN0cnVjdCBycGNfcmRtYV9jYmMgKmNiYywgaW50IHNnZSkKLSt7Ci0rCWludCByZXQ7Ci0r Ci0rCWNiYy0+cG9zaXRpdmVfY2IgPSB4ZHJfcmRtYV9yZXNwb25kX2NhbGxiYWNrX3NlbmQ7Ci0r CWNiYy0+bmVnYXRpdmVfY2IgPSB4ZHJfcmRtYV9kZXN0cm95X2NhbGxiYWNrX3NlbmQ7Ci0rCWNi Yy0+Y2FsbGJhY2tfYXJnID0gTlVMTDsKLSsJY2JjLT5jYWxsX2lubGluZSA9IDE7Ci0rCWludDMy X3Qgd3JpdGVfd2FpdHMgPSBhdG9taWNfaW5jX2ludDMyX3QoJmNiYy0+d3JpdGVfd2FpdHMpOwot KwotKwljYmNfcmVmX2l0KGNiYywgcmRtYV94cHJ0KTsKLSsKLSsJcmV0ID0geGRyX3JkbWFfcG9z dF9zZW5kX24ocmRtYV94cHJ0LCBjYmMsIHNnZSwgTlVMTCwgSUJWX1dSX1NFTkQpOwotKwotKwlp ZiAocmV0KSB7Ci0rCQl3cml0ZV93YWl0cyA9IGF0b21pY19kZWNfaW50MzJfdCgmY2JjLT53cml0 ZV93YWl0cyk7Ci0rCi0rCQljYmNfcmVsZWFzZV9pdChjYmMpOwotKwotKwkJU1ZDX0RFU1RST1ko JnJkbWFfeHBydC0+c21fZHIueHBydCk7Ci0rCi0rCQkvKiBBc3N1bWluZyB0aGVyZSB3b24ndCBi ZSBjYWxsYmFjayAqLwotKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGZh aWxlZCByZXQgJWQgZXJyICVkIgotKwkJICAgICIgcmRtYV94cHJ0ICVwIGNiYyAlcCBjYmNfcmVm ICVkIHdyaXRlX3dhaXRzICVkIiwKLSsJCSAgICBfX2Z1bmNfXywgcmV0LCBlcnJubywgcmRtYV94 cHJ0LCBjYmMsIGNiYy0+cmVmY250LAotKwkJICAgIHdyaXRlX3dhaXRzKTsKLSsJfQotKwlycGNf cmRtYV9jcV9ldmVudF9oYW5kbGVyKHJkbWFfeHBydCwgMik7Ci0rCi0rCXJldHVybiByZXQ7Ci0r fQotIC8qKgotICAqIFBvc3QgYSB3b3JrIGNodW5rIHdpdGggc3RhbmRhcmQgY2FsbGJhY2tzLgot ICAqCi1AQCAtODg3LDggKzk4MCwxMCBAQAotIAotIC8qIHBvc3QgcmVjdiBidWZmZXJzICovCi0g dm9pZAotLXhkcl9yZG1hX2NhbGxxKFJETUFYUFJUICpyZG1hX3hwcnQpCi0reGRyX3JkbWFfY2Fs bHEoUkRNQVhQUlQgKnJkbWFfeHBydCwgaW50IHN5bmMpCi0gewotKwlpbnQgcmMgPSAwOwotKwot IAkvKiBHZXQgY29udGV4dCBidWYgZnJvbSBjYnFoIGFuZCBhZGQgdG8gc21fZHIKLSAJICogcnBj X3JkbWFfYWxsb2NhdGUtPnhkcl9pb3Ffc2V0dXAoJnJkbWFfeHBydC0+c21fZHIuaW9xKTsKLSAJ ICogQ2hlY2sgaWYgd2UgaGF2ZSBjcmVkaXRzIGF2YWlsYWJsZWQgZnJvbSBjYnFoCi1AQCAtOTI3 LDcgKzEwMjIsNyBAQAotIAotIAlwdGhyZWFkX211dGV4X2xvY2soJnJkbWFfeHBydC0+Y2JjbGlz dC5xbXV0ZXgpOwotIAotLQljYmMtPmNhbGxfaW5saW5lID0gMDsKLSsJY2JjLT5jYWxsX2lubGlu ZSA9IHN5bmM7Ci0gCWNiYy0+ZGF0YV9jaHVua191diA9IE5VTEw7Ci0gCWNiYy0+cmVmY250ID0g MTsgLy8gU2VudGluZWwgcmVmCi0gCWNiYy0+Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfTk9ORTsKLUBA IC05NDEsOCArMTAzNiwxMyBAQAotIAlyZG1hX3hwcnQtPmNiY2xpc3QucWNvdW50Kys7Ci0gCXB0 aHJlYWRfbXV0ZXhfdW5sb2NrKCZyZG1hX3hwcnQtPmNiY2xpc3QucW11dGV4KTsKLSAKLSsJaWYg KHN5bmMpCi0rCQlyYyA9IHhkcl9yZG1hX3Bvc3RfcmVjdl9zeW5jKHJkbWFfeHBydCwgY2JjLCAx KTsKLSsJZWxzZQotKwkJcmMgPSB4ZHJfcmRtYV9wb3N0X3JlY3ZfY2IocmRtYV94cHJ0LCBjYmMs IDEpOwotKwotIAkvKiByZG1hX3hwcnQgcmVmIGlzIHRha2VuIGJ5IHhkcl9yZG1hX3Bvc3RfcmVj dl9jYiAqLwotLQlpZiAoeGRyX3JkbWFfcG9zdF9yZWN2X2NiKHJkbWFfeHBydCwgY2JjLCAxKSkg ewotKwlpZiAocmMpIHsKLSAJCSBfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczog cmVjdiBmYWlsZWQgJXAiLAotIAkJCV9fZnVuY19fLCByZG1hX3hwcnQpOwotIAl9Ci1AQCAtOTcz LDcgKzEwNzMsNyBAQAotIAotIAkJZGF0YS0+cmRtYV91diA9IDE7Ci0gCi0tCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCi0rCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERS X1JETUEsCi0gCQkJIiVzKCkgcmVjdmJ1ZiBhdCAlcCBiYXNlICVwIiwKLSAJCQlfX2Z1bmNfXywg ZGF0YSwgYl9hZGRyKTsKLSAKLUBAIC0xMDQ3LDcgKzExNDcsNyBAQAotIAlyZG1hX3hwcnQtPmlv X2J1ZnNfY291bnQrKzsKLSAJcmRtYV94cHJ0LT5pb19idWZzLnFjb3VudCsrOwotIAotLQlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCi0rCV9fd2FybngoVElSUENfREVCVUdfRkxBR19Y RFJfUkRNQSwKLSAJCSIlcygpIGlvIGJ1ZnMgY291bnQgJXUgaW9fYnVmICVwIHJkbWFfeHBydCAl cCIsCi0gCQlfX2Z1bmNfXywgcmRtYV94cHJ0LT5pb19idWZzX2NvdW50LCBpb19idWYsIHJkbWFf eHBydCk7Ci0gCi1AQCAtMTA3MSw3ICsxMTcxLDcgQEAKLSAJaWYgKG1yKSB7Ci0gCQlhdG9taWNf YWRkX3VpbnQ2NF90KCZ0b3RhbF9yZG1hX3JlZ19tZW0sIGJ1ZmZlcl90b3RhbCk7Ci0gCi0tCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlczogdG90YWxfcmRtYV9yZWdfbWVtICVs bHUgcmVnaXN0ZXJlZCwgIgotKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAi JXM6IHRvdGFsX3JkbWFfcmVnX21lbSAlbGx1IHJlZ2lzdGVyZWQsICIKLSAJCSAgICAicmVnaXN0 ZXJpbmcgZm9yIHhwcnQgJXAgbXIgJXAgYnVmZmVyX2FsaWduZWQgJXAgYnVmZmVyX3RvdGFsICV1 IiwKLSAJCSAgICBfX2Z1bmNfXywgYXRvbWljX2ZldGNoX3VpbnQ2NF90KCZ0b3RhbF9yZG1hX3Jl Z19tZW0pLAotIAkJICAgIHJkbWFfeHBydCwgbXIsIGJ1ZmZlcl9hbGlnbmVkLCBidWZmZXJfdG90 YWwpOwotQEAgLTExMDQsNyArMTIwNCw3IEBACi0gCX0gZWxzZSB7Ci0gCQlhdG9taWNfc3ViX3Vp bnQ2NF90KCZ0b3RhbF9yZG1hX3JlZ19tZW0sIGJ1ZmZlcl90b3RhbCk7Ci0gCi0tCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlczogdG90YWxfcmRtYV9yZWdfbWVtICVsbHUgcmVn aXN0ZXJlZCwgIgotKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAiJXM6IHRv dGFsX3JkbWFfcmVnX21lbSAlbGx1IHJlZ2lzdGVyZWQsICIKLSAJCSAgICAidW5yZWdpc3Rlcmlu ZyBmb3IgeHBydCAlcCBtciAlcCBidWZmZXJfYWxpZ25lZCAlcCBidWZmZXJfdG90YWwgJXUiLAot IAkJICAgIF9fZnVuY19fLCBhdG9taWNfZmV0Y2hfdWludDY0X3QoJnRvdGFsX3JkbWFfcmVnX21l bSksCi0gCQkgICAgcmRtYV94cHJ0LCBtciwgYnVmZmVyX2FsaWduZWQsIGJ1ZmZlcl90b3RhbCk7 Ci1AQCAtMTEyMSw3ICsxMjIxLDcgQEAKLSAJdWludDMyX3QgYnVmZmVyX3RvdGFsID0gcmRtYV94 cHJ0LT5zbV9kci5zZW5kX2hkcl9zeiAqIGhkcl9xZGVwdGg7Ci0gCXN0cnVjdCBycGNfaW9fYnVm cyAqaW9fYnVmID0gTlVMTDsKLSAKLS0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAot KwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCi0gCQkiJXMoKSBidWZmZXJfdG90 YWwgJWxsdSwgc2VuZHN6ICVsbHUgc3EgJWxsdSByZG1hX3hwcnQgJXAgcGFnZXN6ICVsbHUiLAot IAkJX19mdW5jX18sIGJ1ZmZlcl90b3RhbCwgcmRtYV94cHJ0LT5zbV9kci5zZW5kX2hkcl9zeiwg aGRyX3FkZXB0aCwKLSAJCXJkbWFfeHBydCwgcmRtYV94cHJ0LT5zbV9kci5wYWdlc3opOwotQEAg LTExMzEsNyArMTIzMSw3IEBACi0gCWFzc2VydChidWZmZXJfYWxpZ25lZCk7Ci0gCW1lbXNldChi dWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3RvdGFsKTsKLSAKLS0JX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCi0gCQki JXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90ZWN0aW9uIGRvbWFpbiAlcCByZG1hX3hwcnQg JXAiLAotIAkJX19mdW5jX18sIGJ1ZmZlcl9hbGlnbmVkLCByZG1hX3hwcnQtPnBkLT5wZCwgcmRt YV94cHJ0KTsKLSAKLUBAIC0xMTU4LDcgKzEyNTgsNyBAQAotIAl1aW50MzJfdCBidWZmZXJfdG90 YWwgPSByZG1hX3hwcnQtPnNtX2RyLnNlbmRzeiAqIGRhdGFfcWRlcHRoOwotIAlzdHJ1Y3QgcnBj X2lvX2J1ZnMgKmlvX2J1ZiA9IE5VTEw7Ci0gCi0tCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F VkVOVCwKLSsJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAotIAkJIiVzKCkgYnVm ZmVyX3RvdGFsICVsbHUsIHNlbmRzeiAlbGx1IHNxICVsbHUgcmRtYV94cHJ0ICVwIHBhZ2VzeiAl bGx1IiwKLSAJCV9fZnVuY19fLCBidWZmZXJfdG90YWwsIHJkbWFfeHBydC0+c21fZHIuc2VuZHN6 LCBkYXRhX3FkZXB0aCwKLSAJCXJkbWFfeHBydCwgcmRtYV94cHJ0LT5zbV9kci5wYWdlc3opOwot QEAgLTExNjgsNyArMTI2OCw3IEBACi0gCWFzc2VydChidWZmZXJfYWxpZ25lZCk7Ci0gCW1lbXNl dChidWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3RvdGFsKTsKLSAKLS0JX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCi0g CQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90ZWN0aW9uIGRvbWFpbiAlcCByZG1hX3hw cnQgJXAiLAotIAkJX19mdW5jX18sIGJ1ZmZlcl9hbGlnbmVkLCByZG1hX3hwcnQtPnBkLT5wZCwg cmRtYV94cHJ0KTsKLSAKLUBAIC0xMTk1LDcgKzEyOTUsNyBAQAotIAl1aW50MzJfdCBidWZmZXJf dG90YWwgPSByZG1hX3hwcnQtPnNtX2RyLnJlY3ZfaGRyX3N6ICogaGRyX3FkZXB0aDsKLSAJc3Ry dWN0IHJwY19pb19idWZzICppb19idWYgPSBOVUxMOwotIAotLQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfRVZFTlQsCi0rCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKLSAJCSIl cygpIGJ1ZmZlcl90b3RhbCAlbGx1LCByZWN2c3ogJWxsdSBycSAlbGx1IHJkbWFfeHBydCAlcCBw YWdlc3ogJWxsdSIsCi0gCQlfX2Z1bmNfXywgYnVmZmVyX3RvdGFsLCByZG1hX3hwcnQtPnNtX2Ry LnJlY3ZfaGRyX3N6LCBoZHJfcWRlcHRoLAotIAkJcmRtYV94cHJ0LCByZG1hX3hwcnQtPnNtX2Ry LnBhZ2Vzeik7Ci1AQCAtMTIwNSw3ICsxMzA1LDcgQEAKLSAJYXNzZXJ0KGJ1ZmZlcl9hbGlnbmVk KTsKLSAJbWVtc2V0KGJ1ZmZlcl9hbGlnbmVkLCAwLCBidWZmZXJfdG90YWwpOwotIAotLQlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCi0rCV9fd2FybngoVElSUENfREVCVUdfRkxBR19Y RFJfUkRNQSwKLSAJCSIlcygpIGJ1ZmZlcl9hbGlnbmVkIGF0ICVwIHByb3RlY3Rpb24gZG9tYWlu ICVwIHJkbWFfeHBydCAlcCIsCi0gCQlfX2Z1bmNfXywgYnVmZmVyX2FsaWduZWQsIHJkbWFfeHBy dC0+cGQtPnBkLCByZG1hX3hwcnQpOwotIAotQEAgLTEyMzIsNyArMTMzMiw3IEBACi0gCXVpbnQz Ml90IGJ1ZmZlcl90b3RhbCA9IHJkbWFfeHBydC0+c21fZHIucmVjdnN6ICogZGF0YV9xZGVwdGg7 Ci0gCXN0cnVjdCBycGNfaW9fYnVmcyAqaW9fYnVmID0gTlVMTDsKLSAKLS0JX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEs Ci0gCQkiJXMoKSBidWZmZXJfdG90YWwgJWxsdSwgcmVjdnN6ICVsbHUgcnEgJWxsdSByZG1hX3hw cnQgJXAgcGFnZXN6ICVsbHUiLAotIAkJX19mdW5jX18sIGJ1ZmZlcl90b3RhbCwgcmRtYV94cHJ0 LT5zbV9kci5yZWN2c3osIGRhdGFfcWRlcHRoLAotIAkJcmRtYV94cHJ0LCByZG1hX3hwcnQtPnNt X2RyLnBhZ2Vzeik7Ci1AQCAtMTI0Miw3ICsxMzQyLDcgQEAKLSAJYXNzZXJ0KGJ1ZmZlcl9hbGln bmVkKTsKLSAJbWVtc2V0KGJ1ZmZlcl9hbGlnbmVkLCAwLCBidWZmZXJfdG90YWwpOwotIAotLQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCi0rCV9fd2FybngoVElSUENfREVCVUdfRkxB R19YRFJfUkRNQSwKLSAJCSIlcygpIGJ1ZmZlcl9hbGlnbmVkIGF0ICVwIHByb3RlY3Rpb24gZG9t YWluICVwIHJkbWFfeHBydCAlcCIsCi0gCQlfX2Z1bmNfXywgYnVmZmVyX2FsaWduZWQsIHJkbWFf eHBydC0+cGQtPnBkLCByZG1hX3hwcnQpOwotIAotQEAgLTEyOTcsNyArMTM5Nyw3IEBACi0gCi0g CXJkbWFfeHBydC0+YnVmZmVyX3RvdGFsID0gdGlycGNfYnVmZl90b3RhbCArIHRvdGFsX2hkcl9z ejsKLSAKLS0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAotKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfWERSX1JETUEsCi0gCQkiJXMoKSBidWZmZXJfdG90YWwgJWxsdSglbGx1ICsg JWxsdSksIHJkbWFfeHBydCAlcCBwYWdlc3ogJWxsdSAiCi0gCQkicmVjdnN6IGRhdGEgJWxsdSBo ZHIgJWxsdSBycSAlbGx1ICIKLSAJCSJzZW5kc3ogZGF0YSAlbGx1IGhkciAlbGx1IHNxICVsbHUi LAotQEAgLTEzMTEsNyArMTQxMSw3IEBACi0gCWFzc2VydChyZG1hX3hwcnQtPmJ1ZmZlcl9hbGln bmVkKTsKLSAJbWVtc2V0KHJkbWFfeHBydC0+YnVmZmVyX2FsaWduZWQsIDAsIHJkbWFfeHBydC0+ YnVmZmVyX3RvdGFsKTsKLSAKLS0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAotKwlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCi0gCQkiJXMoKSBidWZmZXJfYWxpZ25l ZCBhdCAlcCBwcm90ZWN0aW9uIGRvbWFpbiAlcCByZG1hX3hwcnQgJXAiLAotIAkJX19mdW5jX18s IHJkbWFfeHBydC0+YnVmZmVyX2FsaWduZWQsIHJkbWFfeHBydC0+cGQtPnBkLCByZG1hX3hwcnQp OwotIAotQEAgLTEzNzAsMTggKzE0NzAsMTggQEAKLSAJICogd2UgY291bGQgaGF2ZSBtYXggY2Jj cyByZXF1aXJlZCB3aWxsIGJlIGNhbGxxX3NpemUgKiAyICovCi0gCWludCBjYWxscV9zaXplID0g TUFYX1JFQ1ZfT1VUU1RBTkRJTkcocmRtYV94cHJ0LT54YSk7Ci0gCi0tCV9fd2FybngoVElSUENf REVCVUdfRkxBR19SUENfUkRNQSwgImNhbGxxIHNpemUgJWQiLCBjYWxscV9zaXplKTsKLSsJX193 YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAiY2FsbHEgc2l6ZSAlZCIsIGNhbGxxX3Np emUpOwotIAotIAlwb29scV9oZWFkX3NldHVwKCZyZG1hX3hwcnQtPmNiY2xpc3QpOwotIAotIAl3 aGlsZSAocmRtYV94cHJ0LT5zbV9kci5pb3EuaW9xX3V2LnV2cWgucWNvdW50IDwgY2FsbHFfc2l6 ZSkgewotIAkJLyogUG9zdCBjYWxscV9zaXplIGJ1ZmZlcnMgdG8gZG8gZmlyc3QgcmVjdnMKLSAJ CSAqIGNhbGxiYWNrIHdpbGwgYmUgZG9uZSBvbiByZWN2IHdoaWNoIHNob3VsZCByZWFyYW0gYWdh aW4gKi8KLS0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKLSsJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKLSAJCQkiJXMoKSBxY291bnQgJWQgY2FsbHEgc2l6 ZSAlZCIsCi0gCQkJX19mdW5jX18sIHJkbWFfeHBydC0+c21fZHIuaW9xLmlvcV91di51dnFoLnFj b3VudCwKLSAJCQljYWxscV9zaXplKTsKLS0JCXhkcl9yZG1hX2NhbGxxKHJkbWFfeHBydCk7Ci0r CQl4ZHJfcmRtYV9jYWxscShyZG1hX3hwcnQsIDApOwotIAl9Ci0gCi0gCXJldHVybiAwOwotQEAg LTE1MDUsNyArMTYwNSw3IEBACi0gCWFzc2VydChjYmMtPndyaXRlX3dhaXRzID09IDApOwotIAot IAkvKiBNYWludGFpbiBtYXhfb3V0c3RhbmRpbmcgKi8KLS0JeGRyX3JkbWFfY2FsbHEocmRtYV94 cHJ0KTsKLSsJeGRyX3JkbWFfY2FsbHEocmRtYV94cHJ0LCAwKTsKLSAKLSAJLyogR2V0IGluYnVm IGZyb20gcmVjdnEgKi8KLSAJY2JjLT5jYWxsX3V2ID0gSU9RXyhUQUlMUV9GSVJTVCgmY2JjLT5y ZWN2cS5pb3FfdXYudXZxaC5xaCkpOwotQEAgLTE4NzMsMTUgKzE5NzMsMTYgQEAKLSAJCWFsbG9j YXRlX2hlYWRlciA9IDE7Ci0gCi0gCQlpZiAoYWxsb2NhdGVfaGVhZGVyKSB7Ci0tCQkJaGF2ZSA9 IHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5zZW5kcSwgJnJkbWFfeHBydC0+b3V0YnVmc19o ZHIudXZxaCwKLS0JCQkJCSJzcmVwbHkgYnVmZmVyIiwgMSwgSU9RX0ZMQUdfTk9ORSk7Ci0tCi0r CQkJLyogV2l0aCBBQ0wgc3VwcG9ydCB3ZSBjb3VsZCBuZWVkIGJ1ZmZlcnMgPjhrICovCi0rCQkJ aGF2ZSA9IHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5zZW5kcSwgJnJkbWFfeHBydC0+b3V0 YnVmc19kYXRhLnV2cWgsCi0rCQkJCSJzcmVwbHkgYnVmZmVyIiwgMSwgSU9RX0ZMQUdfTk9ORSk7 Ci0gCi0gCQkJLyogYnVmZmVyIGlzIGxpbWl0ZWQgc2l6ZSAqLwotIAkJCUlPUV8oaGF2ZSktPnYu dmlvX2hlYWQgPQotIAkJCUlPUV8oaGF2ZSktPnYudmlvX3RhaWwgPSBJT1FfKGhhdmUpLT52LnZp b19iYXNlOwotIAkJCUlPUV8oaGF2ZSktPnYudmlvX3dyYXAgPSAoY2hhciAqKUlPUV8oaGF2ZSkt PnYudmlvX2Jhc2UKLS0JCQkJCSsgcmRtYV94cHJ0LT5zbV9kci5zZW5kX2hkcl9zejsKLSsJCQkJ KyByZG1hX3hwcnQtPnNtX2RyLnNlbmRzejsKLSsKLSAJCQkvKiBtYWtlIHJvb20gYXQgaGVhZCBm b3IgUkRNQSBoZWFkZXIgKi8KLSAJCQl4ZHJfaW9xX3Jlc2V0KCZjYmMtPnNlbmRxLCAwKTsKLSAJ CX0KLUBAIC0xOTAzLDE2ICsyMDA0LDM1IEBACi0gCQkJCUlPUV8oaGF2ZSktPnYudmlvX3dyYXAg PSAoY2hhciAqKUlPUV8oaGF2ZSktPnYudmlvX2Jhc2UKLSAJCQkJCSsgcmRtYV94cHJ0LT5zbV9k ci5zZW5kX2hkcl9zejsKLSAJCQl9IGVsc2UgewotLQkJCQkvKiBGb3IgcmVwbHlfbGlzdCB3ZSBj b3B5IGZyb20gcHJvdG9jb2wgYnVmZmVyIHNvIGFsbG9jYXRlIGJpZ2dlcgotLQkJCQkgKiBjaHVu ayAqLwotLQkJCQlhc3NlcnQobCA8PSByZG1hX3hwcnQtPnNtX2RyLnNlbmRzeik7Ci0rCQkJCS8q IEZvciByZXBseV9saXN0IHdlIGNvcHkgZnJvbSBwcm90b2NvbCBidWZmZXIgc28gYWxsb2NhdGUK LSsJCQkJICogYmlnZ2VyIGNodW5rLgotKwkJCQkgKgotKwkJCQkgKiBUaGUgY2xpZW50J3MgcmVw bHkgY2h1bmsgbGVuZ3RoIChsKSBjYW4gbGVnYWxseSBleGNlZWQKLSsJCQkJICogc2VuZHN6OiB0 aGUgY2xpZW50IHByZS1yZWdpc3RlcnMgYSBidWZmZXIgb2YgbWF4Y291bnQgKwotKwkJCQkgKiBO RlMgQ09NUE9VTkQgb3ZlcmhlYWQgKGEgZmV3IGh1bmRyZWQgYnl0ZXMpLCBhbmQgd2hlbgotKwkJ CQkgKiBtYXhjb3VudCA9PSBzZW5kc3ogKD0gUkRNQV9EQVRBX0NIVU5LX1NaID0gMSBNaUIpIHRo ZQotKwkJCQkgKiB0b3RhbCBsID4gc2VuZHN6LgotKwkJCQkgKgotKwkJCQkgKiB2aW9fd3JhcCBp cyBzZXQgdG8gbWluKGwsIHNlbmRzeik6Ci0rCQkJCSAqIGwgPCBzZW5kc3o6IGhvbm91ciB0aGUg Y2xpZW50J3MgYWN0dWFsIGNodW5rIGNhcGFjaXR5LgotKwkJCQkgKiBsID49IHNlbmRzejogY2Fw IGF0IHRoZSBwaHlzaWNhbCBidWZmZXIgc2l6ZSB0byBwcmV2ZW50Ci0rCQkJCSAqIGEgc2VydmVy LXNpZGUgYnVmZmVyIG92ZXJmbG93ICh0aGUgb3ZlcmZsb3cgZGF0YSBpcwotKwkJCQkgKiBvbmx5 IE5GUyBoZWFkZXIgYnl0ZXMsIGZhciBsZXNzIHRoYW4gc2VuZHN6KS4KLSsJCQkJICoKLSsJCQkJ ICogVGhlIFJETUEgV1JJVEUgc2l6ZSBpcyBkZXJpdmVkIGZyb20gaW9xdXZfbGVuZ3RoKCkgPQot KwkJCQkgKiB2aW9fdGFpbCAtIHZpb19oZWFkIChhY3R1YWwgYnl0ZXMgd3JpdHRlbiBieSBYRFIp LCBuZXZlcgotKwkJCQkgKiBmcm9tIGwsIHNvIHRoZSB0cmFuc2ZlciBzdGF5cyB3aXRoaW4gYm90 aCB0aGUgc2VydmVyIGJ1ZmZlcgotKwkJCQkgKiBhbmQgdGhlIGNsaWVudCdzIHByZS1yZWdpc3Rl cmVkIHJlZ2lvbi4KLSsJCQkJICovCi0gCQkJCWhhdmUgPSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2go JmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfZGF0YS51dnFoLAotIAkJCQkgICAgInNy ZXBseSBidWZmZXIiLCAxLCBJT1FfRkxBR19OT05FKTsKLSAKLS0JCQkJLyogYnVmZmVyIGlzIGxp bWl0ZWQgc2l6ZSAqLwotKwkJCQkvKiBidWZmZXIgaXMgbGltaXRlZCB0byBtaW4obCwgc2VuZHN6 KSAqLwotIAkJCQlJT1FfKGhhdmUpLT52LnZpb19oZWFkID0KLSAJCQkJSU9RXyhoYXZlKS0+di52 aW9fdGFpbCA9IElPUV8oaGF2ZSktPnYudmlvX2Jhc2U7Ci0tCQkJCUlPUV8oaGF2ZSktPnYudmlv X3dyYXAgPSAoY2hhciAqKUlPUV8oaGF2ZSktPnYudmlvX2Jhc2UgKyBsOwotKwkJCQlJT1FfKGhh dmUpLT52LnZpb193cmFwID0gKGNoYXIgKilJT1FfKGhhdmUpLT52LnZpb19iYXNlCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChsIDwgcmRtYV94cHJ0LT5zbV9kci5zZW5k c3oKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbCA6IHJkbWFfeHBy dC0+c21fZHIuc2VuZHN6KTsKLSAJCQl9Ci0gCQl9Ci0gCQlpZiAoIWFsbG9jYXRlX2hlYWRlcikK LUBAIC0xOTM4LDIxICsyMDU4LDIyIEBACi0gYm9vbAotIHhkcl9yZG1hX2NsbnRfZmx1c2hvdXQo c3RydWN0IHJwY19yZG1hX2NiYyAqY2JjKQotIHsKLS0vKiBGSVhNRTogZGVjaWRlIGhvdyBtYW55 IGJ1ZmZlcnMgd2UgdXNlIGluIGFyZ3VtZW50ISEhISEhICovCi0tI2RlZmluZSBudW1fY2h1bmtz IChyZG1hX3hwcnQtPnhhLT5jcmVkaXRzIC0gMSkKLS0KLS0JUkRNQVhQUlQgKnJkbWFfeHBydCA9 IHhfcmRtYV94cHJ0KGNiYy0+cmVjdnEueGRycyk7Ci0rCVJETUFYUFJUICpyZG1hX3hwcnQgPSB4 X3JkbWFfeHBydChjYmMtPnNlbmRxLnhkcnMpOwotIAlzdHJ1Y3QgcnBjX21zZyAqbXNnOwotIAlz dHJ1Y3QgcmRtYV9tc2cgKnJtc2c7Ci0tCXN0cnVjdCB4ZHJfd3JpdGVfbGlzdCAqd19hcnJheTsK LSAJc3RydWN0IHhkcl9pb3FfdXYgKmhlYWRfdXY7Ci0gCXN0cnVjdCB4ZHJfaW9xX3V2ICpob2xk X3V2OwotLQlzdHJ1Y3QgcG9vbHFfZW50cnkgKmhhdmU7Ci0tCWludCBpID0gMDsKLSAKLSsJLyog aG9sZCBORlMgcmVxdWVzdCAqLwotIAlob2xkX3V2ID0gSU9RXyhUQUlMUV9GSVJTVCgmY2JjLT5z ZW5kcS5pb3FfdXYudXZxaC5xaCkpOwotKwotKwlwdGhyZWFkX211dGV4X2xvY2soJmNiYy0+c2Vu ZHEuaW9xX3V2LnV2cWgucW11dGV4KTsKLSsJVEFJTFFfUkVNT1ZFKCZjYmMtPnNlbmRxLmlvcV91 di51dnFoLnFoLCAmaG9sZF91di0+dXZxLCBxKTsKLSsJKGNiYy0+c2VuZHEuaW9xX3V2LnV2cWgu cWNvdW50KS0tOwotKwlwdGhyZWFkX211dGV4X3VubG9jaygmY2JjLT5zZW5kcS5pb3FfdXYudXZx aC5xbXV0ZXgpOwotKwotIAltc2cgPSAoc3RydWN0IHJwY19tc2cgKikoaG9sZF91di0+di52aW9f aGVhZCk7Ci0tCXhkcl90YWlsX3VwZGF0ZShjYmMtPnJlY3ZxLnhkcnMpOwotKwl4ZHJfdGFpbF91 cGRhdGUoY2JjLT5zZW5kcS54ZHJzKTsKLSAKLSAJc3dpdGNoKG50b2hsKG1zZy0+cm1fZGlyZWN0 aW9uKSkgewotIAkgICAgY2FzZSBDQUxMOgotQEAgLTE5NzAsMTQgKzIwOTEsMTEgQEAKLSAJCXJl dHVybiAoZmFsc2UpOwotIAl9Ci0gCi0tCWNiYy0+cmVjdnEuaW9xX3V2LnV2cV9mZXRjaCA9IHhk cl9yZG1hX2lvcV91dl9mZXRjaF9ub3RoaW5nOwotKwljYmMtPnNlbmRxLmlvcV91di51dnFfZmV0 Y2ggPSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2hfbm90aGluZzsKLSAKLS0JaGVhZF91diA9IElPUV8o eGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZjYmMtPnJlY3ZxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2Rh dGEudXZxaCwKLSsJaGVhZF91diA9IElPUV8oeGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZjYmMtPnNl bmRxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2hkci51dnFoLAotIAkJCQkJImNfaGVhZCBidWZmZXIi LCAxLCBJT1FfRkxBR19OT05FKSk7Ci0gCi0tCSh2b2lkKXhkcl9yZG1hX2lvcV91dl9mZXRjaCgm Y2JjLT5zZW5kcSwgJnJkbWFfeHBydC0+aW5idWZzX2RhdGEudXZxaCwKLS0JCQkJImNhbGwgYnVm ZmVycyIsIG51bV9jaHVua3MsIElPUV9GTEFHX05PTkUpOwotLQotIAlybXNnID0gbV8oaGVhZF91 di0+di52aW9faGVhZCk7Ci0gCXJtc2ctPnJkbWFfeGlkID0gbXNnLT5ybV94aWQ7Ci0gCXJtc2ct PnJkbWFfdmVycyA9IGh0b25sKFJQQ1JETUFfVkVSU0lPTik7Ci1AQCAtMTk4NywzMSArMjEwNSwy NSBAQAotIAkvKiBubyByZWFkLCB3cml0ZSBjaHVua3MuICovCi0gCXJtc2ctPnJkbWFfYm9keS5y ZG1hX21zZy5yZG1hX3JlYWRzID0gMDsgLyogaHRvbmwoMCk7ICovCi0gCXJtc2ctPnJkbWFfYm9k eS5yZG1hX21zZy5yZG1hX3dyaXRlcyA9IDA7IC8qIGh0b25sKDApOyAqLwotLQotLQkvKiByZXBs eSBjaHVuayAqLwotLQl3X2FycmF5ID0gKHdsX3QgKikmcm1zZy0+cmRtYV9ib2R5LnJkbWFfbXNn LnJkbWFfcmVwbHk7Ci0tCXdfYXJyYXktPnByZXNlbnQgPSBodG9ubCgxKTsKLS0Jd19hcnJheS0+ ZWxlbWVudHMgPSBodG9ubChudW1fY2h1bmtzKTsKLS0KLS0JVEFJTFFfRk9SRUFDSChoYXZlLCAm Y2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xaCwgcSkgewotLQkJc3RydWN0IHhkcl9yZG1hX3NlZ21l bnQgKndfc2VnID0KLS0JCQkmd19hcnJheS0+ZW50cnlbaSsrXS50YXJnZXQ7Ci0tCQl1aW50MzJf dCBsZW5ndGggPSBpb3F1dl9sZW5ndGgoSU9RXyhoYXZlKSk7Ci0tCi0tCQl3X3NlZy0+aGFuZGxl ID0gaHRvbmwocmRtYV94cHJ0LT5tci0+cmtleSk7Ci0tCQl3X3NlZy0+bGVuZ3RoID0gaHRvbmwo bGVuZ3RoKTsKLS0JCXhkcl9lbmNvZGVfaHlwZXIoKHVpbnQzMl90Kikmd19zZWctPm9mZnNldCwK LS0JCQkJICh1aW50cHRyX3QpSU9RXyhoYXZlKS0+di52aW9faGVhZCk7Ci0tCX0KLSsJcm1zZy0+ cmRtYV9ib2R5LnJkbWFfbXNnLnJkbWFfcmVwbHkgPSAwOwotIAotIAloZWFkX3V2LT52LnZpb190 YWlsID0gaGVhZF91di0+di52aW9faGVhZAotIAkJCQkrIHhkcl9yZG1hX2hlYWRlcl9sZW5ndGgo cm1zZyk7Ci0gCi0rCXB0aHJlYWRfbXV0ZXhfbG9jaygmY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5x bXV0ZXgpOwotKwlUQUlMUV9JTlNFUlRfVEFJTCgmY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xaCwg JmhvbGRfdXYtPnV2cSwgcSk7Ci0rCShjYmMtPnNlbmRxLmlvcV91di51dnFoLnFjb3VudCkrKzsK LSsJcHRocmVhZF9tdXRleF91bmxvY2soJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucW11dGV4KTsK LSsKLSAJcnBjcmRtYV9kdW1wX21zZyhoZWFkX3V2LCAiY2xudGhlYWQiLCBtc2ctPnJtX3hpZCk7 Ci0gCXJwY3JkbWFfZHVtcF9tc2coaG9sZF91diwgImNsbnRjYWxsIiwgbXNnLT5ybV94aWQpOwot IAotIAkvKiBhY3R1YWwgc2VuZCwgY2FsbGJhY2sgd2lsbCB0YWtlIGNhcmUgb2YgY2xlYW51cCAq LwotLQl4ZHJfcmRtYV9hc3luY19zZW5kX2NiKHJkbWFfeHBydCwgY2JjLCAyKTsKLSsJY2JjLT5o YXZlID0gVEFJTFFfRklSU1QoJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWgpOwotKwlpZiAocmRt YV94cHJ0LT5zaGFyZWQpCi0rCQl4ZHJfcmRtYV9hc3luY19zZW5kX2NiKHJkbWFfeHBydCwgY2Jj LCAyKTsKLSsJZWxzZQotKwkJeGRyX3JkbWFfc3luY19zZW5kX2NiKHJkbWFfeHBydCwgY2JjLCAy KTsKLSAJcmV0dXJuICh0cnVlKTsKLSB9Ci0gCi1AQCAtMjIxMSw2ICsyMzIzLDcgQEAKLSAJCSAq IHByb3RvY29scyBhbmQgVUlPX0ZMQUdfUkVGRVIgd2lsbCBiZSBzZXQuCi0gCQkgKiBmaXJzdF9i dWYgPSBuZnNfaGVhZGVyIGJ1ZiArIHJkbWFfd3JpdGUgYnVmcyAqLwotIAkJaWYgKHJkbWFfYnVm X3VzZWQpIHsKLSsJCQkvKiBkYXRhX2NodW5rIGJ1ZmZlciB3aWxsIGJlIHNldCBieSB4X3B1dGJ1 ZnMgdG8gdmlvX2hlYWQgKi8KLSAJCQlyZG1hX2J1Zl9hZGRyID0gZmlyc3Rfc2VuZF9idWZfdXYt PnYudmlvX2hlYWQ7Ci0gCQkJcmRtYV9idWZfbGVuID0gaW9xdXZfbGVuZ3RoKGZpcnN0X3NlbmRf YnVmX3V2KTsKLSAJCQlpZiAoZmlyc3Rfc2VuZF9idWZfdXYtPnUudWlvX2ZsYWdzICYgVUlPX0ZM QUdfUkVGRVIpCi1AQCAtMjI2Miw4ICsyMzc1LDEzIEBACi0gCQkJdWludDMyX3QgbGVuZ3RoID0g bnRvaGwoY19zZWctPmxlbmd0aCk7Ci0gCQkJdWludDMyX3QgbmZzX2hlYWRlcl9sZW4gPSBpb3F1 dl9sZW5ndGgobmZzX2hlYWRlcl91dik7Ci0gCi0tCQkJYXNzZXJ0KGxlbmd0aCA8PSByZG1hX3hw cnQtPnNtX2RyLnNlbmRzeik7Ci0tCi0rCQkJLyogRG8gbm90IGFzc2VydCwgaWYgbGVuZ3RoID4g c2VuZHN6OiB0aGUgY2xpZW50IGNhbiBsZWdpdGltYXRlbHkKLSsJCQkgKiBwcmUtcmVnaXN0ZXIg YSByZXBseSBjaHVuayBsYXJnZXIgdGhhbiBzZW5kc3ogKGUuZy4gd2hlbgotKwkJCSAqIG1heGNv dW50IGVxdWFscyBzZW5kc3ogdGhlIHRvdGFsIGNodW5rIGluY2x1ZGVzIE5GUyBDT01QT1VORAot KwkJCSAqIG92ZXJoZWFkIHB1c2hpbmcgbCBhYm92ZSBzZW5kc3opLiBUaGUgYWN0dWFsIFJETUEg V1JJVEUgc2l6ZQotKwkJCSAqIGlzIHdyaXRlX2xlbiA9IG1pbihyZG1hX2J1Zl9sZW4sIGxlbmd0 aCkgPD0gc2VuZHN6LCBzbyB0aGUKLSsJCQkgKiB0cmFuc2ZlciBpcyBhbHdheXMgd2l0aGluIHRo ZSBzZXJ2ZXIncyByZWdpc3RlcmVkIGJ1ZmZlci4KLSsJCQkgKi8KLSAJCQkqd19zZWcgPSAqY19z ZWc7Ci0gCi0gCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwKLUBAIC0yMzgzLDYgKzI1 MDEsMjYgQEAKLSAJCXVpb19yZWZlci0+dWlvX3JlbGVhc2UodWlvX3JlZmVyLCBVSU9fRkxBR19O T05FKTsKLSAJfQotIAotKwkvKgotKwkgKiBSZWxlYXNlIHRoZSBkZWZlcnJlZCBzZW50aW5lbCBy ZWYgd2hlbiB0aGUgcmVxdWVzdCB3YXMgc3VzcGVuZGVkCi0rCSAqIGJ5IHdyYXBfY2FsbGJhY2sg KGUuZy4gUU9TLCBhc3luYyBJTykuIEluIHRoYXQgcGF0aCBDQkNfRkxBR19SRUxFQVNFCi0rCSAq IHdhcyBzZXQgYnV0IGNiY19yZWxlYXNlX2l0IHdhcyBpbnRlbnRpb25hbGx5IHNraXBwZWQgdG8g a2VlcAotKwkgKiBjYmMtPmRhdGFxIGFsaXZlLiAgTm93IHRoYXQgYWxsIFJETUEgb3BlcmF0aW9u cyBoYXZlIGJlZW4gcG9zdGVkCi0rCSAqICh0YWtpbmcgdGhlaXIgb3duIHJlZnMpLCBpdCBpcyBz YWZlIHRvIGRyb3AgdGhlIHNlbnRpbmVsLiAgVGhlCi0rCSAqIGxhc3QgUkRNQSBjb21wbGV0aW9u IHdpbGwgdGhlbiBzZWUgcmVmY250PT0wIHdpdGggQ0JDX0ZMQUdfUkVMRUFTRQotKwkgKiBzZXQg YW5kIHRyaWdnZXIgdGhlIG5vcm1hbCBjYmMgY2xlYW51cC4KLSsJICoKLSsJICogRm9yIHRoZSBu b3JtYWwgKG5vbi1zdXNwZW5kZWQpIHBhdGggQ0JDX0ZMQUdfU0VOVElORUxfUEVORElORyBpcwot KwkgKiBuZXZlciBzZXQsIHNvIHRoaXMgaXMgYSBuby1vcC4KLSsJICovCi0rCWlmIChjYmMtPmNi Y19mbGFncyAmIENCQ19GTEFHX1NFTlRJTkVMX1BFTkRJTkcpIHsKLSsJCWNiYy0+Y2JjX2ZsYWdz ICY9IH5DQkNfRkxBR19TRU5USU5FTF9QRU5ESU5HOwotKwkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1hEUiwKLSsJCQkiJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCByZWxlYXNpbmcgZGVmZXJyZWQg c2VudGluZWwiLAotKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIGNiYyk7Ci0rCQljYmNfcmVsZWFz ZV9pdChjYmMpOwotKwl9Ci0rCi0gCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsICIlczog Y2JjICVwIHJlY3ZxICVwICVkIHNlbmRxICVwICVkIHJkbWFfeHBydCAlcCIsCi0gCQlfX2Z1bmNf XywgY2JjLCAmY2JjLT5yZWN2cSwgY2JjLT5yZWN2cS5pb3FfdXYudXZxaC5xY291bnQsICZjYmMt PnNlbmRxLAotIAkJY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xY291bnQsIHJkbWFfeHBydCk7Ci1k aWZmIC11ciBudGlycGMtNy4yL3Rlc3RzL3JwY3BpbmcuYyBudGlycGMtYmIzMzNjY2EyZjRhZjM3 OWYxZWVjZTY5Mzg4ZmNkODc2ZWNiZDYzMy90ZXN0cy9ycGNwaW5nLmMKLS0tLSBudGlycGMtNy4y L3Rlc3RzL3JwY3BpbmcuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAotKysr IG50aXJwYy1iYjMzM2NjYTJmNGFmMzc5ZjFlZWNlNjkzODhmY2Q4NzZlY2JkNjMzL3Rlc3RzL3Jw Y3BpbmcuYwkyMDI2LTA2LTExIDE0OjEyOjE3LjAwMDAwMDAwMCAtMDQwMAotQEAgLTM0LDYgKzM0 LDcgQEAKLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotICNpbmNsdWRlIDxycGMvc3ZjX2F1dGguaD4K LSAKLSsKLSAjaW5jbHVkZSAibHR0bmcvbnRpcnBjX3RyYWNlcy5oIgotICNpZiBkZWZpbmVkKFVT RV9MVFROR19OVElSUEMpICYmICFkZWZpbmVkKExUVE5HX1BBUlNJTkcpCi0gI2luY2x1ZGUgImx0 dG5nL2dlbmVyYXRlZF90cmFjZXMvcnBjcGluZy5oIgotQEAgLTQ0LDYgKzQ1LDExIEBACi0gc3Rh dGljIHVpbnQzMl90IHJwY3BpbmdfdGhyZWFkczsKLSAKLSBzdGF0aWMgc3RydWN0IHRpbWVzcGVj IHRvID0gezMwLCAwfTsKLSt0eXBlZGVmIGVudW0gewotKwlUQ1AgPSAxLAotKwlSRE1BID0gMiwK LSsJUkFXID0gMwotK30gcHJvdG9fdDsKLSAKLSBzdHJ1Y3Qgc3RhdGUgewotIAlDTElFTlQgKmhh bmRsZTsKLUBAIC01Myw2ICs1OSw3IEBACi0gCXN0cnVjdCB0aW1lc3BlYyBzdG9wcGluZzsKLSAJ aW50IGNvdW50OwotIAlpbnQgcHJvYzsKLSsJcHJvdG9fdCBwcm90bzsKLSAJaW50IGlkOwotIAl1 aW50MzJfdCBmYWlsdXJlczsKLSAJdWludDMyX3QgcmVzcG9uc2VzOwotQEAgLTE4Myw5ICsxOTAs MTEgQEAKLSAJCX0KLSAJfQotIAotLQlwdGhyZWFkX211dGV4X2xvY2soJnMtPnNfbXV0ZXgpOwot LQlwdGhyZWFkX2NvbmRfd2FpdCgmcy0+c19jb25kLCAmcy0+c19tdXRleCk7Ci0tCXB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZzLT5zX211dGV4KTsKLSsJaWYgKHMtPnByb3RvICE9IFJETUEpIHsKLSsJ CXB0aHJlYWRfbXV0ZXhfbG9jaygmcy0+c19tdXRleCk7Ci0rCQlwdGhyZWFkX2NvbmRfd2FpdCgm cy0+c19jb25kLCAmcy0+c19tdXRleCk7Ci0rCQlwdGhyZWFkX211dGV4X3VubG9jaygmcy0+c19t dXRleCk7Ci0rCX0KLSAJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZzLT5zdG9wcGlu Zyk7Ci0gCi0gCWlmIChhdG9taWNfZGVjX3VpbnQzMl90KCZycGNwaW5nX3RocmVhZHMpID4gMCkg ewotQEAgLTI1NCw5ICsyNjMsMTMgQEAKLSAJaW50IHByb2MgPSAwOwotIAlpbnQgc2VuZF9zeiA9 IDgxOTI7Ci0gCWludCByZWN2X3N6ID0gODE5MjsKLSsjaWZkZWYgVVNFX1JQQ19SRE1BCi0rCWlu dCBwYWdlX3N6ID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwotKyNlbmRpZgotIAl1bnNpZ25lZCBp bnQgZmFpbHVyZXMgPSAwOwotIAl1bnNpZ25lZCBpbnQgdGltZW91dHMgPSAwOwotIAlib29sIHJw Y2JpbmQgPSBmYWxzZTsKLSsJcHJvdG9fdCBwcm90b191c2VkID0gMDsKLSAKLSAJTlRJUlBDX0FV VE9fVFJBQ0VQT0lOVChycGNwaW5nLCB0ZXN0LCBUUkFDRV9JTkZPLCAiQm9vIik7Ci0gCi1AQCAt MzM0LDcgKzM0Nyw4IEBACi0gCQkJCQkgICAiY2xudF9uY3JlYXRlIGZhaWxlZCIpOwotIAkJCQll eGl0KDIpOwotIAkJCX0KLS0JCX0gZWxzZSB7Ci0rCQl9IGVsc2UgaWYgKHN0cmNtcChwcm90bywg InJkbWEiKSkgewotKwkJCXByb3RvX3VzZWQgPSBUQ1A7Ci0gCQkJLyogY29ubmVjdCB0byBob3N0 OnBvcnQgKi8KLSAJCQlzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzczsKLSAJCQlzdHJ1Y3QgbmV0 YnVmIHJhZGRyID0gewotQEAgLTM1Niw3ICszNzAsMjYgQEAKLSAJCQkJCSAgICJjbG50X25jcmVh dGUgZmFpbGVkIik7Ci0gCQkJCWV4aXQoNCk7Ci0gCQkJfQotKwkJfSBlbHNlIHsKLSsJCQlwcm90 b191c2VkID0gUkRNQTsKLSsJCQlpbnQgZmQgPSBnZXRfY29ubl9mZChob3N0LCBwb3J0KTsKLSsJ CQlpZiAoZmQgPD0gMCkgewotKwkJCQlwZXJyb3IoImdldF9jb25uX2ZkIGZhaWxlZCIpOwotKwkJ CQlleGl0KDMpOwotKwkJCX0KLSsjaWZkZWYgVVNFX1JQQ19SRE1BCi0rCQkJY2xudCA9IGNsbnRf cmRtYV9jcmVhdGUoZmQsIGhvc3QsIDIwMDQ5LCByZWN2X3N6LAotKwkJCSAgICBzZW5kX3N6LCBw YWdlX3N6LCBwcm9nLCB2ZXJzLCBDTE5UX0NSRUFURV9GTEFHX0NMT1NFKTsKLSsJCQlpZiAoQ0xO VF9GQUlMVVJFKGNsbnQpKSB7Ci0rCQkJCXJwY19wZXJyb3IoJmNsbnQtPmNsX2Vycm9yLCAiY2xu dF9yZG1hX2NyZWF0ZSBmYWlsZWQiKTsKLSsJCQkJZXhpdCg0KTsKLSsJCQl9Ci0rI2Vsc2UKLSsJ CQlwZXJyb3IoInJkbWEgbm90IGVuYWJsZWQiKTsKLSsJCQlleGl0KDQpOwotKyNlbmRpZgotIAkJ fQotKwotIAkJcyA9ICZzdGF0ZXNbaV07Ci0gCQljbG50LT5jbF91MSA9IHM7Ci0gCi1AQCAtMzY0 LDYgKzM5Nyw3IEBACi0gCQlzLT5pZCA9IGk7Ci0gCQlzLT5jb3VudCA9IGNvdW50OwotIAkJcy0+ cHJvYyA9IHByb2M7Ci0rCQlzLT5wcm90byA9IHByb3RvX3VzZWQ7Ci0gCQlwdGhyZWFkX2NyZWF0 ZSgmdCwgTlVMTCwgd29ya2VyLCBzKTsKLSAJfQotIAoKZGlmZiAtLWdpdCBhL2xpYm50aXJwYy5z cGVjIGIvbGlibnRpcnBjLnNwZWMKaW5kZXggNjgwNmE3Zi4uOWU0MTJmOCAxMDA2NDQKLS0tIGEv bGlibnRpcnBjLnNwZWMKKysrIGIvbGlibnRpcnBjLnNwZWMKQEAgLTIsOCArMiw4IEBACiAjJSVn bG9iYWwJCWRldiByYzMKIAogTmFtZToJCWxpYm50aXJwYwotVmVyc2lvbjoJNy4yCi1SZWxlYXNl Ogk1JXs/ZGV2OiV7ZGV2fX0lez9kaXN0fQorVmVyc2lvbjoJMTAuMAorUmVsZWFzZToJMSV7P2Rl djole2Rldn19JXs/ZGlzdH0KIFN1bW1hcnk6CU5ldyBUcmFuc3BvcnQgSW5kZXBlbmRlbnQgUlBD IExpYnJhcnkKIExpY2Vuc2U6CUJTRC0zLUNsYXVzZQogVXJsOgkJaHR0cHM6Ly9naXRodWIuY29t L25mcy1nYW5lc2hhL250aXJwYwpAQCAtMTIsOCArMTIsNiBAQCBVcmw6CQlodHRwczovL2dpdGh1 Yi5jb20vbmZzLWdhbmVzaGEvbnRpcnBjCiAlZ2xvYmFsIHByb21ldGhfdmVyX3Nob3J0CTQ4ZDA5 YzQ1CiBTb3VyY2UwOglodHRwczovL2dpdGh1Yi5jb20vbmZzLWdhbmVzaGEvbnRpcnBjL2FyY2hp dmUvdiV7dmVyc2lvbn0vbnRpcnBjLSV7dmVyc2lvbn0lez9kZXY6JXtkZXZ9fS50YXIuZ3oKIFNv dXJjZTE6CWh0dHBzOi8vZ2l0aHViLmNvbS9iaWFrcy9wcm9tZXRoZXVzLWNwcC1saXRlL2FyY2hp dmUvJXtwcm9tZXRoX3Zlcl9sb25nfS9wcm9tZXRoZXVzLWNwcC1saXRlLSV7cHJvbWV0aF92ZXJf c2hvcnR9LnRhci5negotUGF0Y2g6CQkwMDAxLUNNYWtlTGlzdHMudHh0LnBhdGNoCi1QYXRjaDoJ CTAwMDItNy4ycGx1cy5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOgljbWFrZSBnY2MgZ2NjLWMrKwog JWlmYXJjaCB4ODZfNjQgYWFyY2g2NApAQCAtOTMsNiArOTEsOSBAQCBsbiAtcyAle25hbWV9LnNv LiV7dmVyc2lvbn0gJXtidWlsZHJvb3R9JXtfbGliZGlyfS8le25hbWV9LnNvLjcKICV7X2xpYmRp cn0vcGtnY29uZmlnL2xpYm50aXJwYy5wYwogCiAlY2hhbmdlbG9nCisqIEZyaSBKdW4gMTkgMjAy NiBLYWxlYiBTLiBLRUlUSExFWSA8a2tlaXRobGUgYXQgcmVkaGF0LmNvbT4gMTAuMC0xCistIG50 aXJwYy0xMC4wIEdBCisKICogTW9uIEp1biAxNSAyMDI2IEthbGViIFMuIEtFSVRITEVZIDxra2Vp dGhsZSBhdCByZWRoYXQuY29tPiA3LjItNQogLSBudGlycGMtNy4yLCBudGlycGMgZGlkIG5vdCB0 YWcvcmVsZWFzZSByZXF1aXJlZCB1cGRhdGVzIGZvcgogICBnYW5lc2hhLTguMSBhbmQgbGF0ZXIg KG5mcy1nYW5lc2hhLTkuMTYpCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXgg YjI1NzQ1ZC4uODFkZjZjZiAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0x LDIgKzEsMiBAQAorU0hBNTEyIChudGlycGMtMTAuMC50YXIuZ3opID0gNmU1ODk4OTU0MmRhNjkz NGMxNGEwNWNlMTVjYzk5ZDRlNTQzYzJhNGNjMDE0MTM0Nzc1OWFmMDg3OWNlZTA5YjhhZWQwY2Q4 ZDY4YTg0ZDQ0Njk5ZjRlYjJhMDgxM2JlMGEwYmQ4M2M3YWQ3N2EwNGZjMWRlZmM1Yzc0NzMxYzQK IFNIQTUxMiAocHJvbWV0aGV1cy1jcHAtbGl0ZS00OGQwOWM0NS50YXIuZ3opID0gYWU3MTk5YzVj YzI2NWJlMTBiODIwNDZhYzEwZmE0MzhkYjI3OTdhZDk4MjExNjNjZTNmNWUyYzI3Y2MwMTY1M2Iz YTgyM2I1M2NiMWFlY2I3ZGNjNmQxOGMwZjE2OTMzNTEwNDc3ZThjZWU0MzdkMGE3YTIyNDgyMGNh NWZlYmMKLVNIQTUxMiAobnRpcnBjLTcuMi50YXIuZ3opID0gOWQ0MDc1ZGI3MWE5NTExNDMwOWJk ZDMzYjYwMjVhMGM5YjgwNWFlZmIwYjkyYjg1NDQzOTU5MjBiYjQ0MDJhMWM1YmFlZWU2N2YzNDY2 YjA2YzQ0YWJiMWFmYWIyOGY4ODlhOTlmMTA3Y2EwYWQ2Njc5OGEwOTZjNTY0YmQ3MzgK