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: =?utf-8?b?VG9tw6HFoSBNcsOheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+?= To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: - upstream fix compression handling on session resumption Date: Tue, 09 Jun 2026 12:42:02 GMT Message-ID: <178100892271.1.14837636691685177892.rpms-openssl-2d6ef07fa3e4@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 2d6ef07fa3e464c542bb729af4a6b4bd0464f5d9 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvb3BlbnNzbAogICAgICAgICAgICBCcmFuY2ggOiByZWJhc2VfNDBiZXRhCiAg ICAgICAgICAgIENvbW1pdCA6IDJkNmVmMDdmYTNlNDY0YzU0MmJiNzI5YWY0YTZiNGJkMDQ2NGY1 ZDkKICAgICAgICAgICAgQXV0aG9yIDogVG9tw6HFoSBNcsOheiA8dG1yYXpAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDEtMDdUMjI6NDM6NTcrMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzE5MTgvLTExIGluIDYgZmlsZShzKQogICAgICAgICAgICBVUkwg ICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29wZW5zc2wvYy8yZDZlZjA3 ZmEzZTQ2NGM1NDJiYjcyOWFmNGE2YjRiZDA0NjRmNWQ5P2JyYW5jaD1yZWJhc2VfNDBiZXRhCgog ICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIC0gdXBzdHJlYW0gZml4IGNvbXByZXNzaW9uIGhh bmRsaW5nIG9uIHNlc3Npb24gcmVzdW1wdGlvbgotIHZhcmlvdXMgbnVsbCBjaGVja3MgYW5kIG90 aGVyIHNtYWxsIGZpeGVzIGZyb20gdXBzdHJlYW0KLSB1cHN0cmVhbSBjaGFuZ2VzIGZvciB0aGUg cmVuZWdvdGlhdGlvbiBpbmZvIGFjY29yZGluZyB0byB0aGUgbGF0ZXN0IGRyYWZ0CgotLS0KZGlm ZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTQtYmFja3BvcnRzMi5wYXRjaCBiL29wZW5zc2wt MS4wLjAtYmV0YTQtYmFja3BvcnRzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jY2UwNGQzCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMC1iZXRhNC1i YWNrcG9ydHMyLnBhdGNoCkBAIC0wLDAgKzEsMzM0IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4w LWJldGE0L2FwcHMvY2EuYy5iYWNrcG9ydHMyIG9wZW5zc2wtMS4wLjAtYmV0YTQvYXBwcy9jYS5j CistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9hcHBzL2NhLmMuYmFja3BvcnRzMgkyMDA5LTEwLTA0 IDE4OjQzOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvYXBwcy9j YS5jCTIwMTAtMDEtMDcgMjM6MTY6MDguMDAwMDAwMDAwICswMTAwCitAQCAtMjE1LDcgKzIxNSw2 IEBAIHN0YXRpYyBpbnQgY2VydGlmeV9zcGthYyhYNTA5ICoqeHJldCwgY2gKKyAJCQkgY2hhciAq c3RhcnRkYXRlLCBjaGFyICplbmRkYXRlLCBsb25nIGRheXMsIGNoYXIgKmV4dF9zZWN0LAorIAkJ CSBDT05GICpjb25mLCBpbnQgdmVyYm9zZSwgdW5zaWduZWQgbG9uZyBjZXJ0b3B0LCAKKyAJCQkg dW5zaWduZWQgbG9uZyBuYW1lb3B0LCBpbnQgZGVmYXVsdF9vcCwgaW50IGV4dF9jb3B5KTsKKy1z dGF0aWMgaW50IGZpeF9kYXRhKGludCBuaWQsIGludCAqdHlwZSk7Cisgc3RhdGljIHZvaWQgd3Jp dGVfbmV3X2NlcnRpZmljYXRlKEJJTyAqYnAsIFg1MDkgKngsIGludCBvdXRwdXRfZGVyLCBpbnQg bm90ZXh0KTsKKyBzdGF0aWMgaW50IGRvX2JvZHkoWDUwOSAqKnhyZXQsIEVWUF9QS0VZICpwa2V5 LCBYNTA5ICp4NTA5LCBjb25zdCBFVlBfTUQgKmRnc3QsCisgCVNUQUNLX09GKENPTkZfVkFMVUUp ICpwb2xpY3ksIENBX0RCICpkYiwgQklHTlVNICpzZXJpYWwsY2hhciAqc3Viaix1bnNpZ25lZCBs b25nIGNodHlwZSwgaW50IG11bHRpcmRuLAorQEAgLTIzMzQsMjUgKzIzMzMsOSBAQCBzdGF0aWMg aW50IGNlcnRpZnlfc3BrYWMoWDUwOSAqKnhyZXQsIGNoCisgCQkJY29udGludWU7CisgCQkJfQor IAorLQkJLyoKKy0JCWlmICgobmlkID09IE5JRF9wa2NzOV9lbWFpbEFkZHJlc3MpICYmIChlbWFp bF9kbiA9PSAwKSkKKy0JCQljb250aW51ZTsKKy0JCSovCistCQkKKy0JCWo9QVNOMV9QUklOVEFC TEVfdHlwZSgodW5zaWduZWQgY2hhciAqKWJ1ZiwtMSk7CistCQlpZiAoZml4X2RhdGEobmlkLCAm aikgPT0gMCkKKy0JCQl7CistCQkJQklPX3ByaW50ZihiaW9fZXJyLAorLQkJCQkiaW52YWxpZCBj aGFyYWN0ZXJzIGluIHN0cmluZyAlc1xuIixidWYpOworLQkJCWdvdG8gZXJyOworLQkJCX0KKy0K Ky0JCWlmICgobmU9WDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9OSUQoJm5lLG5pZCxqLAorLQkJ CSh1bnNpZ25lZCBjaGFyICopYnVmLAorLQkJCXN0cmxlbihidWYpKSkgPT0gTlVMTCkKKysJCWlm ICghWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9OSUQobiwgbmlkLCBjaHR5cGUsCisrCQkJCSh1bnNp Z25lZCBjaGFyICopYnVmLCAtMSwgLTEsIDApKQorIAkJCWdvdG8gZXJyOworLQorLQkJaWYgKCFY NTA5X05BTUVfYWRkX2VudHJ5KG4sbmUsLTEsIDApKSBnb3RvIGVycjsKKyAJCX0KKyAJaWYgKHNw a2kgPT0gTlVMTCkKKyAJCXsKK0BAIC0yMzk1LDIxICsyMzc4LDYgQEAgZXJyOgorIAlyZXR1cm4o b2spOworIAl9CisgCistc3RhdGljIGludCBmaXhfZGF0YShpbnQgbmlkLCBpbnQgKnR5cGUpCist CXsKKy0JaWYgKG5pZCA9PSBOSURfcGtjczlfZW1haWxBZGRyZXNzKQorLQkJKnR5cGU9Vl9BU04x X0lBNVNUUklORzsKKy0JaWYgKChuaWQgPT0gTklEX2NvbW1vbk5hbWUpICYmICgqdHlwZSA9PSBW X0FTTjFfSUE1U1RSSU5HKSkKKy0JCSp0eXBlPVZfQVNOMV9UNjFTVFJJTkc7CistCWlmICgobmlk ID09IE5JRF9wa2NzOV9jaGFsbGVuZ2VQYXNzd29yZCkgJiYgKCp0eXBlID09IFZfQVNOMV9JQTVT VFJJTkcpKQorLQkJKnR5cGU9Vl9BU04xX1Q2MVNUUklORzsKKy0JaWYgKChuaWQgPT0gTklEX3Br Y3M5X3Vuc3RydWN0dXJlZE5hbWUpICYmICgqdHlwZSA9PSBWX0FTTjFfVDYxU1RSSU5HKSkKKy0J CXJldHVybigwKTsKKy0JaWYgKG5pZCA9PSBOSURfcGtjczlfdW5zdHJ1Y3R1cmVkTmFtZSkKKy0J CSp0eXBlPVZfQVNOMV9JQTVTVFJJTkc7CistCXJldHVybigxKTsKKy0JfQorLQorIHN0YXRpYyBp bnQgY2hlY2tfdGltZV9mb3JtYXQoY29uc3QgY2hhciAqc3RyKQorIAl7CisgCXJldHVybiBBU04x X1RJTUVfc2V0X3N0cmluZyhOVUxMLCBzdHIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRh NC9jcnlwdG8vYXNuMS9hbWV0aF9saWIuYy5iYWNrcG9ydHMyIG9wZW5zc2wtMS4wLjAtYmV0YTQv Y3J5cHRvL2FzbjEvYW1ldGhfbGliLmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9h c24xL2FtZXRoX2xpYi5jLmJhY2twb3J0czIJMjAwOC0xMS0xMiAwNDo1Nzo0OS4wMDAwMDAwMDAg KzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hc24xL2FtZXRoX2xpYi5jCTIw MTAtMDEtMDcgMjM6MTY6MDguMDAwMDAwMDAwICswMTAwCitAQCAtMzAxLDYgKzMwMSw4IEBAIEVW UF9QS0VZX0FTTjFfTUVUSE9EKiBFVlBfUEtFWV9hc24xX25ldygKKyAJCWlmICghYW1ldGgtPmlu Zm8pCisgCQkJZ290byBlcnI7CisgCQl9CisrCWVsc2UKKysJCWFtZXRoLT5pbmZvID0gTlVMTDsK KyAKKyAJaWYgKHBlbV9zdHIpCisgCQl7CitAQCAtMzA4LDYgKzMxMCw4IEBAIEVWUF9QS0VZX0FT TjFfTUVUSE9EKiBFVlBfUEtFWV9hc24xX25ldygKKyAJCWlmICghYW1ldGgtPnBlbV9zdHIpCisg CQkJZ290byBlcnI7CisgCQl9CisrCWVsc2UKKysJCWFtZXRoLT5wZW1fc3RyID0gTlVMTDsKKyAK KyAJYW1ldGgtPnB1Yl9kZWNvZGUgPSAwOworIAlhbWV0aC0+cHViX2VuY29kZSA9IDA7CitkaWZm IC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9iaW8vYl9zb2NrLmMuYmFja3BvcnRzMiBv cGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9iaW8vYl9zb2NrLmMKKy0tLSBvcGVuc3NsLTEuMC4w LWJldGE0L2NyeXB0by9iaW8vYl9zb2NrLmMuYmFja3BvcnRzMgkyMDEwLTAxLTA3IDIzOjE2OjA4 LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Jpby9iX3Nv Y2suYwkyMDEwLTAxLTA3IDIzOjE2OjA4LjAwMDAwMDAwMCArMDEwMAorQEAgLTU5NSw3ICs1OTUs NyBAQCBpbnQgQklPX2dldF9hY2NlcHRfc29ja2V0KGNoYXIgKmhvc3QsIGluCisgCQlzdHJ1Y3Qg c29ja2FkZHJfaW42IHNhX2luNjsKKyAjZW5kaWYKKyAJfSBzZXJ2ZXIsY2xpZW50OworLQlpbnQg cz1JTlZBTElEX1NPQ0tFVCxjczsKKysJaW50IHM9SU5WQUxJRF9TT0NLRVQsY3MsYWRkcmxlbjsK KyAJdW5zaWduZWQgY2hhciBpcFs0XTsKKyAJdW5zaWduZWQgc2hvcnQgcG9ydDsKKyAJY2hhciAq c3RyPU5VTEwsKmU7CitAQCAtNjY2LDggKzY2NiwxMCBAQCBpbnQgQklPX2dldF9hY2NlcHRfc29j a2V0KGNoYXIgKmhvc3QsIGluCisgCisgCWlmICgoKnBfZ2V0YWRkcmluZm8uZikoaCxwLCZoaW50 LCZyZXMpKSBicmVhazsKKyAKKy0JbWVtY3B5KCZzZXJ2ZXIsIHJlcy0+YWlfYWRkciwKKy0JCXJl cy0+YWlfYWRkcmxlbjw9c2l6ZW9mKHNlcnZlcik/cmVzLT5haV9hZGRybGVuOnNpemVvZihzZXJ2 ZXIpKTsKKysJYWRkcmxlbiA9IHJlcy0+YWlfYWRkcmxlbjw9c2l6ZW9mKHNlcnZlcikgPworKwkJ CXJlcy0+YWlfYWRkcmxlbiA6CisrCQkJc2l6ZW9mKHNlcnZlcik7CisrCW1lbWNweSgmc2VydmVy LCByZXMtPmFpX2FkZHIsIGFkZHJsZW4pOworIAorIAkoKnBfZnJlZWFkZHJpbmZvLmYpKHJlcyk7 CisgCWdvdG8gYWdhaW47CitAQCAtNjc5LDYgKzY4MSw3IEBAIGludCBCSU9fZ2V0X2FjY2VwdF9z b2NrZXQoY2hhciAqaG9zdCwgaW4KKyAJbWVtc2V0KChjaGFyICopJnNlcnZlciwwLHNpemVvZihz ZXJ2ZXIpKTsKKyAJc2VydmVyLnNhX2luLnNpbl9mYW1pbHk9QUZfSU5FVDsKKyAJc2VydmVyLnNh X2luLnNpbl9wb3J0PWh0b25zKHBvcnQpOworKwlhZGRybGVuID0gc2l6ZW9mKHNlcnZlci5zYV9p bik7CisgCisgCWlmIChoID09IE5VTEwgfHwgc3RyY21wKGgsIioiKSA9PSAwKQorIAkJc2VydmVy LnNhX2luLnNpbl9hZGRyLnNfYWRkcj1JTkFERFJfQU5ZOworQEAgLTcxMiw3ICs3MTUsNyBAQCBh Z2FpbjoKKyAJCWJpbmRfbW9kZT1CSU9fQklORF9OT1JNQUw7CisgCQl9CisgI2VuZGlmCistCWlm IChiaW5kKHMsJnNlcnZlci5zYSxzaXplb2Yoc2VydmVyKSkgPT0gLTEpCisrCWlmIChiaW5kKHMs JnNlcnZlci5zYSxhZGRybGVuKSA9PSAtMSkKKyAJCXsKKyAjaWZkZWYgU09fUkVVU0VBRERSCisg CQllcnJfbnVtPWdldF9sYXN0X3NvY2tldF9lcnJvcigpOworQEAgLTc0MCw3ICs3NDMsNyBAQCBh Z2FpbjoKKyAJCQlpZiAoY3MgIT0gSU5WQUxJRF9TT0NLRVQpCisgCQkJCXsKKyAJCQkJaW50IGlp OworLQkJCQlpaT1jb25uZWN0KGNzLCZjbGllbnQuc2Esc2l6ZW9mKGNsaWVudCkpOworKwkJCQlp aT1jb25uZWN0KGNzLCZjbGllbnQuc2EsYWRkcmxlbik7CisgCQkJCWNsb3Nlc29ja2V0KGNzKTsK KyAJCQkJaWYgKGlpID09IElOVkFMSURfU09DS0VUKQorIAkJCQkJeworZGlmZiAtdXAgb3BlbnNz bC0xLjAuMC1iZXRhNC9jcnlwdG8vYmlvL2Jzc19kZ3JhbS5jLmJhY2twb3J0czIgb3BlbnNzbC0x LjAuMC1iZXRhNC9jcnlwdG8vYmlvL2Jzc19kZ3JhbS5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRh NC9jcnlwdG8vYmlvL2Jzc19kZ3JhbS5jLmJhY2twb3J0czIJMjAxMC0wMS0wNyAyMzoxNjowOC4w MDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9iaW8vYnNzX2Rn cmFtLmMJMjAxMC0wMS0wNyAyMzoxNjowOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMzUsMTEgKzMz NSwyMSBAQCBzdGF0aWMgaW50IGRncmFtX3dyaXRlKEJJTyAqYiwgY29uc3QgY2hhCisgCWlmICgg ZGF0YS0+Y29ubmVjdGVkICkKKyAJCXJldD13cml0ZXNvY2tldChiLT5udW0saW4saW5sKTsKKyAJ ZWxzZQorKwkJeworKwkJaW50IHBlZXJsZW4gPSBzaXplb2YoZGF0YS0+cGVlcik7CisrCisrCQlp ZiAoZGF0YS0+cGVlci5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkKKysJCQlwZWVybGVuID0gc2l6 ZW9mKGRhdGEtPnBlZXIuc2FfaW4pOworKyNpZiBPUEVOU1NMX1VTRV9JVlA2CisrCQllbHNlIGlm IChkYXRhLT5wZWVyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikKKysJCQlwZWVybGVuID0gc2l6 ZW9mKGRhdGEtPnBlZXIuc2FfaW42KTsKKysjZW5kaWYKKyAjaWYgZGVmaW5lZChORVRXQVJFX0NM SUIpICYmIGRlZmluZWQoTkVUV0FSRV9CU0RTT0NLKQorLQkJcmV0PXNlbmR0byhiLT5udW0sIChj aGFyICopaW4sIGlubCwgMCwgJmRhdGEtPnBlZXIuc2EsIHNpemVvZihkYXRhLT5wZWVyKSk7Cisr CQlyZXQ9c2VuZHRvKGItPm51bSwgKGNoYXIgKilpbiwgaW5sLCAwLCAmZGF0YS0+cGVlci5zYSwg cGVlcmxlbik7CisgI2Vsc2UKKy0JCXJldD1zZW5kdG8oYi0+bnVtLCBpbiwgaW5sLCAwLCAmZGF0 YS0+cGVlci5zYSwgc2l6ZW9mKGRhdGEtPnBlZXIpKTsKKysJCXJldD1zZW5kdG8oYi0+bnVtLCBp biwgaW5sLCAwLCAmZGF0YS0+cGVlci5zYSwgcGVlcmxlbik7CisgI2VuZGlmCisrCQl9CisgCisg CUJJT19jbGVhcl9yZXRyeV9mbGFncyhiKTsKKyAJaWYgKHJldCA8PSAwKQorZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYm4vYm5fbXVsLmMuYmFja3BvcnRzMiBvcGVuc3NsLTEu MC4wLWJldGE0L2NyeXB0by9ibi9ibl9tdWwuYworLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5 cHRvL2JuL2JuX211bC5jLmJhY2twb3J0czIJMjAwOS0wNi0xNyAxMzo0Nzo1NC4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ibi9ibl9tdWwuYwkyMDEwLTAx LTA3IDIzOjE2OjA4LjAwMDAwMDAwMCArMDEwMAorQEAgLTEwMzIsMTUgKzEwMzIsMTUgQEAgaW50 IEJOX211bChCSUdOVU0gKnIsIGNvbnN0IEJJR05VTSAqYSwgYworIAkJCQlnb3RvIGVycjsKKyAJ CQlpZiAoYWwgPiBqIHx8IGJsID4gaikKKyAJCQkJeworLQkJCQlibl93ZXhwYW5kKHQsayo0KTsK Ky0JCQkJYm5fd2V4cGFuZChycixrKjQpOworKwkJCQlpZiAoYm5fd2V4cGFuZCh0LGsqNCkgPT0g TlVMTCkgZ290byBlcnI7CisrCQkJCWlmIChibl93ZXhwYW5kKHJyLGsqNCkgPT0gTlVMTCkgZ290 byBlcnI7CisgCQkJCWJuX211bF9wYXJ0X3JlY3Vyc2l2ZShyci0+ZCxhLT5kLGItPmQsCisgCQkJ CQlqLGFsLWosYmwtaix0LT5kKTsKKyAJCQkJfQorIAkJCWVsc2UJLyogYWwgPD0gaiB8fCBibCA8 PSBqICovCisgCQkJCXsKKy0JCQkJYm5fd2V4cGFuZCh0LGsqMik7CistCQkJCWJuX3dleHBhbmQo cnIsayoyKTsKKysJCQkJaWYgKGJuX3dleHBhbmQodCxrKjIpID09IE5VTEwpIGdvdG8gZXJyOwor KwkJCQlpZiAoYm5fd2V4cGFuZChycixrKjIpID09IE5VTEwpIGdvdG8gZXJyOworIAkJCQlibl9t dWxfcmVjdXJzaXZlKHJyLT5kLGEtPmQsYi0+ZCwKKyAJCQkJCWosYWwtaixibC1qLHQtPmQpOwor IAkJCQl9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9kc2EvZHNhX3BtZXRo LmMuYmFja3BvcnRzMiBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9kc2EvZHNhX3BtZXRoLmMK Ky0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9kc2EvZHNhX3BtZXRoLmMuYmFja3BvcnRz MgkyMDA5LTA5LTAyIDE3OjUxOjI4LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjAt YmV0YTQvY3J5cHRvL2RzYS9kc2FfcG1ldGguYwkyMDEwLTAxLTA3IDIzOjE2OjA4LjAwMDAwMDAw MCArMDEwMAorQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgaW50IHBrZXlfZHNhX3NpZ24oRVZQ X1BLRVlfQ1RYICpjCisgCisgCXJldCA9IERTQV9zaWduKHR5cGUsIHRicywgdGJzbGVuLCBzaWcs ICZzbHRtcCwgZHNhKTsKKyAKKy0JaWYgKHJldCA8IDApCisrCWlmIChyZXQgPD0gMCkKKyAJCXJl dHVybiByZXQ7CisgCSpzaWdsZW4gPSBzbHRtcDsKKyAJcmV0dXJuIDE7CitkaWZmIC11cCBvcGVu c3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZGlnZXN0LmMuYmFja3BvcnRzMiBvcGVuc3NsLTEu MC4wLWJldGE0L2NyeXB0by9ldnAvZGlnZXN0LmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2Ny eXB0by9ldnAvZGlnZXN0LmMuYmFja3BvcnRzMgkyMDEwLTAxLTA3IDIzOjE2OjA3LjAwMDAwMDAw MCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9kaWdlc3QuYwkyMDEw LTAxLTA3IDIzOjE2OjA4LjAwMDAwMDAwMCArMDEwMAorQEAgLTEyNyw3ICsxMjcsOCBAQCBFVlBf TURfQ1RYICpFVlBfTURfQ1RYX2NyZWF0ZSh2b2lkKQorIAl7CisgCUVWUF9NRF9DVFggKmN0eD1P UEVOU1NMX21hbGxvYyhzaXplb2YgKmN0eCk7CisgCistCUVWUF9NRF9DVFhfaW5pdChjdHgpOwor KwlpZiAoY3R4KQorKwkJRVZQX01EX0NUWF9pbml0KGN0eCk7CisgCisgCXJldHVybiBjdHg7Cisg CX0KK0BAIC0yNTYsNiArMjU3LDEyIEBAIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RY ICpjdHgsIGMKKyAJCQl7CisgCQkJY3R4LT51cGRhdGUgPSB0eXBlLT51cGRhdGU7CisgCQkJY3R4 LT5tZF9kYXRhPU9QRU5TU0xfbWFsbG9jKHR5cGUtPmN0eF9zaXplKTsKKysJCQlpZiAoY3R4LT5t ZF9kYXRhID09IE5VTEwpCisrCQkJCXsKKysJCQkJRVZQZXJyKEVWUF9GX0VWUF9ESUdFU1RJTklU X0VYLAorKwkJCQkJCQlFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrCQkJCXJldHVybiAwOworKwkJ CQl9CisgCQkJfQorIAkJfQorICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKK0BAIC0zNDYsOCAr MzUzLDE3IEBAIGludCBFVlBfTURfQ1RYX2NvcHlfZXgoRVZQX01EX0NUWCAqb3V0LCAKKyAKKyAJ aWYgKGluLT5tZF9kYXRhICYmIG91dC0+ZGlnZXN0LT5jdHhfc2l6ZSkKKyAJCXsKKy0JCWlmICh0 bXBfYnVmKSBvdXQtPm1kX2RhdGEgPSB0bXBfYnVmOworLQkJZWxzZSBvdXQtPm1kX2RhdGE9T1BF TlNTTF9tYWxsb2Mob3V0LT5kaWdlc3QtPmN0eF9zaXplKTsKKysJCWlmICh0bXBfYnVmKQorKwkJ CW91dC0+bWRfZGF0YSA9IHRtcF9idWY7CisrCQllbHNlCisrCQkJeworKwkJCW91dC0+bWRfZGF0 YT1PUEVOU1NMX21hbGxvYyhvdXQtPmRpZ2VzdC0+Y3R4X3NpemUpOworKwkJCWlmICghb3V0LT5t ZF9kYXRhKQorKwkJCQl7CisrCQkJCUVWUGVycihFVlBfRl9FVlBfTURfQ1RYX0NPUFlfRVgsRVJS X1JfTUFMTE9DX0ZBSUxVUkUpOworKwkJCQlyZXR1cm4gMDsKKysJCQkJfQorKwkJCX0KKyAJCW1l bWNweShvdXQtPm1kX2RhdGEsaW4tPm1kX2RhdGEsb3V0LT5kaWdlc3QtPmN0eF9zaXplKTsKKyAJ CX0KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnBfZXJyLmMu YmFja3BvcnRzMiBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwX2Vyci5jCistLS0g b3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZXZwL2V2cF9lcnIuYy5iYWNrcG9ydHMyCTIwMTAt MDEtMDcgMjM6MTY6MDcuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9j cnlwdG8vZXZwL2V2cF9lcnIuYwkyMDEwLTAxLTA3IDIzOjE2OjA4LjAwMDAwMDAwMCArMDEwMAor QEAgLTE4Niw2ICsxODYsOCBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEVWUF9zdHJfcmVhc29u c1tdCisge0VSUl9SRUFTT04oRVZQX1JfUFJJVkFURV9LRVlfREVDT0RFX0VSUk9SKSwicHJpdmF0 ZSBrZXkgZGVjb2RlIGVycm9yIn0sCisge0VSUl9SRUFTT04oRVZQX1JfUFJJVkFURV9LRVlfRU5D T0RFX0VSUk9SKSwicHJpdmF0ZSBrZXkgZW5jb2RlIGVycm9yIn0sCisge0VSUl9SRUFTT04oRVZQ X1JfUFVCTElDX0tFWV9OT1RfUlNBKSAgICAsInB1YmxpYyBrZXkgbm90IHJzYSJ9LAorK3tFUlJf UkVBU09OKEVWUF9SX1VOS05PV05fQ0lQSEVSKSAgICAgICAgLCJ1bmtub3duIGNpcGhlciJ9LAor K3tFUlJfUkVBU09OKEVWUF9SX1VOS05PV05fRElHRVNUKSAgICAgICAgLCJ1bmtub3duIGRpZ2Vz dCJ9LAorIHtFUlJfUkVBU09OKEVWUF9SX1VOS05PV05fUEJFX0FMR09SSVRITSkgLCJ1bmtub3du IHBiZSBhbGdvcml0aG0ifSwKKyB7RVJSX1JFQVNPTihFVlBfUl9VTlNVUE9SVEVEX05VTUJFUl9P Rl9ST1VORFMpLCJ1bnN1cG9ydGVkIG51bWJlciBvZiByb3VuZHMifSwKKyB7RVJSX1JFQVNPTihF VlBfUl9VTlNVUFBPUlRFRF9BTEdPUklUSE0pICwidW5zdXBwb3J0ZWQgYWxnb3JpdGhtIn0sCitk aWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwLmguYmFja3BvcnRzMiBv cGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwLmgKKy0tLSBvcGVuc3NsLTEuMC4wLWJl dGE0L2NyeXB0by9ldnAvZXZwLmguYmFja3BvcnRzMgkyMDEwLTAxLTA3IDIzOjE2OjA3LjAwMDAw MDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnAuaAkyMDEw LTAxLTA3IDIzOjE2OjA4LjAwMDAwMDAwMCArMDEwMAorQEAgLTEyNzUsNiArMTI3NSw4IEBAIHZv aWQgRVJSX2xvYWRfRVZQX3N0cmluZ3Modm9pZCk7CisgI2RlZmluZSBFVlBfUl9QUklWQVRFX0tF WV9ERUNPREVfRVJST1IJCQkgMTQ1CisgI2RlZmluZSBFVlBfUl9QUklWQVRFX0tFWV9FTkNPREVf RVJST1IJCQkgMTQ2CisgI2RlZmluZSBFVlBfUl9QVUJMSUNfS0VZX05PVF9SU0EJCQkgMTA2Cisr I2RlZmluZSBFVlBfUl9VTktOT1dOX0NJUEhFUgkJCQkgMTYwCisrI2RlZmluZSBFVlBfUl9VTktO T1dOX0RJR0VTVAkJCQkgMTYxCisgI2RlZmluZSBFVlBfUl9VTktOT1dOX1BCRV9BTEdPUklUSE0J CQkgMTIxCisgI2RlZmluZSBFVlBfUl9VTlNVUE9SVEVEX05VTUJFUl9PRl9ST1VORFMJCSAxMzUK KyAjZGVmaW5lIEVWUF9SX1VOU1VQUE9SVEVEX0FMR09SSVRITQkJCSAxNTYKK2RpZmYgLXVwIG9w ZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnBfcGJlLmMuYmFja3BvcnRzMiBvcGVuc3Ns LTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwX3BiZS5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRh NC9jcnlwdG8vZXZwL2V2cF9wYmUuYy5iYWNrcG9ydHMyCTIwMDgtMTEtMDUgMTk6Mzg6NTcuMDAw MDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZXZwL2V2cF9wYmUu YwkyMDEwLTAxLTA3IDIzOjE3OjE1LjAwMDAwMDAwMCArMDEwMAorQEAgLTE3NCwxMiArMTc0LDI2 IEBAIGludCBFVlBfUEJFX0NpcGhlckluaXQoQVNOMV9PQkpFQ1QgKnBiZV8KKyAJaWYgKGNpcGhl cl9uaWQgPT0gLTEpCisgCQljaXBoZXIgPSBOVUxMOworIAllbHNlCisrCQl7CisgCQljaXBoZXIg PSBFVlBfZ2V0X2NpcGhlcmJ5bmlkKGNpcGhlcl9uaWQpOworKwkJaWYgKCFjaXBoZXIpCisrCQkJ eworKwkJCUVWUGVycihFVlBfRl9FVlBfUEJFX0NJUEhFUklOSVQsRVZQX1JfVU5LTk9XTl9DSVBI RVIpOworKwkJCXJldHVybiAwOworKwkJCX0KKysJCX0KKyAKKyAJaWYgKG1kX25pZCA9PSAtMSkK KyAJCW1kID0gTlVMTDsKKyAJZWxzZQorKwkJeworIAkJbWQgPSBFVlBfZ2V0X2RpZ2VzdGJ5bmlk KG1kX25pZCk7CisrCQlpZiAoIW1kKQorKwkJCXsKKysJCQlFVlBlcnIoRVZQX0ZfRVZQX1BCRV9D SVBIRVJJTklULEVWUF9SX1VOS05PV05fRElHRVNUKTsKKysJCQlyZXR1cm4gMDsKKysJCQl9Cisr CQl9CisgCisgCWlmICgha2V5Z2VuKGN0eCwgcGFzcywgcGFzc2xlbiwgcGFyYW0sIGNpcGhlciwg bWQsIGVuX2RlKSkKKyAJCXsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL3Jz YS9yc2FfbGliLmMuYmFja3BvcnRzMiBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9yc2EvcnNh X2xpYi5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vcnNhL3JzYV9saWIuYy5iYWNr cG9ydHMyCTIwMTAtMDEtMDcgMjM6MTY6MDcuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0x LjAuMC1iZXRhNC9jcnlwdG8vcnNhL3JzYV9saWIuYwkyMDEwLTAxLTA3IDIzOjE2OjA4LjAwMDAw MDAwMCArMDEwMAorQEAgLTIwOCw3ICsyMDgsMTYgQEAgUlNBICpSU0FfbmV3X21ldGhvZChFTkdJ TkUgKmVuZ2luZSkKKyAJcmV0LT5tdF9ibGluZGluZz1OVUxMOworIAlyZXQtPmJpZ251bV9kYXRh PU5VTEw7CisgCXJldC0+ZmxhZ3M9cmV0LT5tZXRoLT5mbGFnczsKKy0JQ1JZUFRPX25ld19leF9k YXRhKENSWVBUT19FWF9JTkRFWF9SU0EsIHJldCwgJnJldC0+ZXhfZGF0YSk7CisrCWlmICghQ1JZ UFRPX25ld19leF9kYXRhKENSWVBUT19FWF9JTkRFWF9SU0EsIHJldCwgJnJldC0+ZXhfZGF0YSkp CisrCQl7CisrI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQorKwlpZiAocmV0LT5lbmdpbmUpCisr CQlFTkdJTkVfZmluaXNoKHJldC0+ZW5naW5lKTsKKysjZW5kaWYKKysJCU9QRU5TU0xfZnJlZShy ZXQpOworKwkJcmV0dXJuKE5VTEwpOworKwkJfQorKworIAlpZiAoKHJldC0+bWV0aC0+aW5pdCAh PSBOVUxMKSAmJiAhcmV0LT5tZXRoLT5pbml0KHJldCkpCisgCQl7CisgI2lmbmRlZiBPUEVOU1NM X05PX0VOR0lORQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8veDUwOS94NTA5 X2x1LmMuYmFja3BvcnRzMiBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by94NTA5L3g1MDlfbHUu YworLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL3g1MDkveDUwOV9sdS5jLmJhY2twb3J0 czIJMjAwOS0xMC0xOCAxNjo0MjoyNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4w LWJldGE0L2NyeXB0by94NTA5L3g1MDlfbHUuYwkyMDEwLTAxLTA3IDIzOjE2OjA4LjAwMDAwMDAw MCArMDEwMAorQEAgLTIwMCw3ICsyMDAsMTMgQEAgWDUwOV9TVE9SRSAqWDUwOV9TVE9SRV9uZXco dm9pZCkKKyAJcmV0LT5sb29rdXBfY3JscyA9IDA7CisgCXJldC0+Y2xlYW51cCA9IDA7CisgCist CUNSWVBUT19uZXdfZXhfZGF0YShDUllQVE9fRVhfSU5ERVhfWDUwOV9TVE9SRSwgcmV0LCAmcmV0 LT5leF9kYXRhKTsKKysJaWYgKCFDUllQVE9fbmV3X2V4X2RhdGEoQ1JZUFRPX0VYX0lOREVYX1g1 MDlfU1RPUkUsIHJldCwgJnJldC0+ZXhfZGF0YSkpCisrCQl7CisrCQlza19YNTA5X09CSkVDVF9m cmVlKHJldC0+b2Jqcyk7CisrCQlPUEVOU1NMX2ZyZWUocmV0KTsKKysJCXJldHVybiBOVUxMOwor KwkJfQorKworIAlyZXQtPnJlZmVyZW5jZXM9MTsKKyAJcmV0dXJuIHJldDsKKyAJfQoKZGlmZiAt LWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTQtZHRscy1pcHY2LnBhdGNoIGIvb3BlbnNzbC0xLjAu MC1iZXRhNC1kdGxzLWlwdjYucGF0Y2gKaW5kZXggMTE3M2YxYS4uZmY5ZDMzMCAxMDA2NDQKLS0t IGEvb3BlbnNzbC0xLjAuMC1iZXRhNC1kdGxzLWlwdjYucGF0Y2gKKysrIGIvb3BlbnNzbC0xLjAu MC1iZXRhNC1kdGxzLWlwdjYucGF0Y2gKQEAgLTEzLDcgKzEzLDcgQEAgZGlmZiAtdXAgb3BlbnNz bC0xLjAuMC1iZXRhNC9jcnlwdG8vYmlvL2Jfc29jay5jLmR0bHMtaXB2NiBvcGVuc3NsLTEuMC4w LWJldGE0L2MKICAJCXsKIGRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Jpby9i c3NfZGdyYW0uYy5kdGxzLWlwdjYgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYmlvL2Jzc19k Z3JhbS5jCiAtLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYmlvL2Jzc19kZ3JhbS5jLmR0 bHMtaXB2NgkyMDA5LTEwLTE1IDE5OjQxOjQ0LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjAtYmV0YTQvY3J5cHRvL2Jpby9ic3NfZGdyYW0uYwkyMDA5LTExLTIzIDA4OjUwOjQ1LjAw MDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Jpby9ic3NfZGdy YW0uYwkyMDEwLTAxLTA3IDE3OjMxOjAwLjAwMDAwMDAwMCArMDEwMAogQEAgLTEwOCwxMSArMTA4 LDEzIEBAIHN0YXRpYyBCSU9fTUVUSE9EIG1ldGhvZHNfZGdyYW1wPQogIAogIHR5cGVkZWYgc3Ry dWN0IGJpb19kZ3JhbV9kYXRhX3N0CkBAIC0xMzUsNyArMTM1LDcgQEAgZGlmZiAtdXAgb3BlbnNz bC0xLjAuMC1iZXRhNC9jcnlwdG8vYmlvL2Jzc19kZ3JhbS5jLmR0bHMtaXB2NiBvcGVuc3NsLTEu MC4wLWJldGEKICAjaWYgMAogIAkJCX0KICAjZW5kaWYKLUBAIC01MzcsNDEgKzU0Myw2MCBAQCBz dGF0aWMgbG9uZyBkZ3JhbV9jdHJsKEJJTyAqYiwgaW50IGNtZCwgCitAQCAtNTM3LDQxICs1NDMs NjIgQEAgc3RhdGljIGxvbmcgZGdyYW1fY3RybChCSU8gKmIsIGludCBjbWQsIAogIAkJaWYgKCB0 byAhPSBOVUxMKQogIAkJCXsKICAJCQlkYXRhLT5jb25uZWN0ZWQgPSAxOwpAQCAtMTcwLDEyICsx NzAsMTIgQEAgZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYmlvL2Jzc19kZ3Jh bS5jLmR0bHMtaXB2NiBvcGVuc3NsLTEuMC4wLWJldGEKICAJCQl9CiAgCQlicmVhazsKICAJY2Fz ZSBCSU9fQ1RSTF9ER1JBTV9HRVRfUEVFUjoKLSAJCXRvID0gKHN0cnVjdCBzb2NrYWRkciAqKSBw dHI7CistCQl0byA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgcHRyOwogLQotKwkJc3dpdGNoICh0by0+ c2FfZmFtaWx5KQorKwkJc3dpdGNoIChkYXRhLT5wZWVyLnNhLnNhX2ZhbWlseSkKICsJCQl7CiAr CQkJY2FzZSBBRl9JTkVUOgotKwkJCQltZW1jcHkodG8sJmRhdGEtPnBlZXIsKHJldD1zaXplb2Yo ZGF0YS0+cGVlci5zYV9pbikpKTsKKysJCQkJcmV0PXNpemVvZihkYXRhLT5wZWVyLnNhX2luKTsK ICsJCQkJYnJlYWs7CiAgI2lmIE9QRU5TU0xfVVNFX0lQVjYKIC0JCW1lbWNweSh0bywgJihkYXRh LT5wZWVyKSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlKSk7CkBAIC0xODUsMTMgKzE4 NSwxNiBAQCBkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9iaW8vYnNzX2RncmFt LmMuZHRscy1pcHY2IG9wZW5zc2wtMS4wLjAtYmV0YQogLQkJcmV0ID0gc2l6ZW9mKHN0cnVjdCBz b2NrYWRkcl9pbik7CiAtI2VuZGlmCiArCQkJY2FzZSBBRl9JTkVUNjoKLSsJCQkJbWVtY3B5KHRv LCZkYXRhLT5wZWVyLChyZXQ9c2l6ZW9mKGRhdGEtPnBlZXIuc2FfaW42KSkpOworKwkJCQlyZXQ9 c2l6ZW9mKGRhdGEtPnBlZXIuc2FfaW42KTsKICsJCQkJYnJlYWs7CiArI2VuZGlmCiArCQkJZGVm YXVsdDoKLSsJCQkJbWVtY3B5KHRvLCZkYXRhLT5wZWVyLChyZXQ9c2l6ZW9mKGRhdGEtPnBlZXIu c2EpKSk7CisrCQkJCXJldD1zaXplb2YoZGF0YS0+cGVlci5zYSk7CiArCQkJCWJyZWFrOwogKwkJ CX0KKysJCWlmIChudW09PTAgfHwgbnVtPnJldCkKKysJCQludW09cmV0OworKwkJbWVtY3B5KHB0 ciwmZGF0YS0+cGVlciwocmV0PW51bSkpOwogIAkJYnJlYWs7CiAgCWNhc2UgQklPX0NUUkxfREdS QU1fU0VUX1BFRVI6CiAgCQl0byA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgcHRyOwoKZGlmZiAtLWdp dCBhL29wZW5zc2wtMS4wLjAtYmV0YTQtZHRscy1yZW5lZy5wYXRjaCBiL29wZW5zc2wtMS4wLjAt YmV0YTQtZHRscy1yZW5lZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li43OTE2NWYxCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMC1iZXRhNC1kdGxzLXJl bmVnLnBhdGNoCkBAIC0wLDAgKzEsNTcxIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0 L3NzbC9kMV9ib3RoLmMuZHRscy1yZW5lZyBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9kMV9ib3Ro LmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9kMV9ib3RoLmMuZHRscy1yZW5lZwkyMDA5 LTExLTAyIDE0OjM3OjE3LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQv c3NsL2QxX2JvdGguYwkyMDEwLTAxLTA3IDE3OjM1OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTc2 NCw2ICs3NjQsMjQgQEAgaW50IGR0bHMxX3NlbmRfZmluaXNoZWQoU1NMICpzLCBpbnQgYSwgaQor IAkJcCs9aTsKKyAJCWw9aTsKKyAKKysJLyogQ29weSB0aGUgZmluaXNoZWQgc28gd2UgY2FuIHVz ZSBpdCBmb3IKKysJICogcmVuZWdvdGlhdGlvbiBjaGVja3MKKysJICovCisrCWlmKHMtPnR5cGUg PT0gU1NMX1NUX0NPTk5FQ1QpCisrCQl7CisrCQlPUEVOU1NMX2Fzc2VydChpIDw9IEVWUF9NQVhf TURfU0laRSk7CisrCQltZW1jcHkocy0+czMtPnByZXZpb3VzX2NsaWVudF9maW5pc2hlZCwgCisr CQkgICAgICAgcy0+czMtPnRtcC5maW5pc2hfbWQsIGkpOworKwkJcy0+czMtPnByZXZpb3VzX2Ns aWVudF9maW5pc2hlZF9sZW49aTsKKysJCX0KKysJZWxzZQorKwkJeworKwkJT1BFTlNTTF9hc3Nl cnQoaSA8PSBFVlBfTUFYX01EX1NJWkUpOworKwkJbWVtY3B5KHMtPnMzLT5wcmV2aW91c19zZXJ2 ZXJfZmluaXNoZWQsIAorKwkJICAgICAgIHMtPnMzLT50bXAuZmluaXNoX21kLCBpKTsKKysJCXMt PnMzLT5wcmV2aW91c19zZXJ2ZXJfZmluaXNoZWRfbGVuPWk7CisrCQl9CisrCisgI2lmZGVmIE9Q RU5TU0xfU1lTX1dJTjE2CisgCQkvKiBNU1ZDIDEuNSBkb2VzIG5vdCBjbGVhciB0aGUgdG9wIGJ5 dGVzIG9mIHRoZSB3b3JkIHVubGVzcworIAkJICogSSBkbyB0aGlzLgorZGlmZiAtdXAgb3BlbnNz bC0xLjAuMC1iZXRhNC9zc2wvZDFfY2xudC5jLmR0bHMtcmVuZWcgb3BlbnNzbC0xLjAuMC1iZXRh NC9zc2wvZDFfY2xudC5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvZDFfY2xudC5jLmR0 bHMtcmVuZWcJMjAwOS0wNy0yNCAxMzo1MjozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMC4wLWJldGE0L3NzbC9kMV9jbG50LmMJMjAxMC0wMS0wNyAxNzo0NDo1NS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0yODYsMTYgKzI4Niw0NCBAQCBpbnQgZHRsczFfY29ubmVjdChTU0wgKnMpCisg CisgCQljYXNlIFNTTDNfU1RfQ1JfQ0VSVF9BOgorIAkJY2FzZSBTU0wzX1NUX0NSX0NFUlRfQjoK KysjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisrCQkJcmV0PXNzbDNfY2hlY2tfZmluaXNoZWQo cyk7CisrCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKKysJCQlpZiAocmV0ID09IDIpCisrCQkJ CXsKKysJCQkJcy0+aGl0ID0gMTsKKysJCQkJaWYgKHMtPnRsc2V4dF90aWNrZXRfZXhwZWN0ZWQp CisrCQkJCQlzLT5zdGF0ZT1TU0wzX1NUX0NSX1NFU1NJT05fVElDS0VUX0E7CisrCQkJCWVsc2UK KysJCQkJCXMtPnN0YXRlPVNTTDNfU1RfQ1JfRklOSVNIRURfQTsKKysJCQkJcy0+aW5pdF9udW09 MDsKKysJCQkJYnJlYWs7CisrCQkJCX0KKysjZW5kaWYKKyAJCQkvKiBDaGVjayBpZiBpdCBpcyBh bm9uIERIIG9yIFBTSyAqLworIAkJCWlmICghKHMtPnMzLT50bXAubmV3X2NpcGhlci0+YWxnb3Jp dGhtX2F1dGggJiBTU0xfYU5VTEwpICYmCisgCQkJICAgICEocy0+czMtPnRtcC5uZXdfY2lwaGVy LT5hbGdvcml0aG1fbWtleSAmIFNTTF9rUFNLKSkKKyAJCQkJeworIAkJCQlyZXQ9c3NsM19nZXRf c2VydmVyX2NlcnRpZmljYXRlKHMpOworIAkJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOworKyNp Zm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKysJCQkJaWYgKHMtPnRsc2V4dF9zdGF0dXNfZXhwZWN0 ZWQpCisrCQkJCQlzLT5zdGF0ZT1TU0wzX1NUX0NSX0NFUlRfU1RBVFVTX0E7CisrCQkJCWVsc2UK KysJCQkJCXMtPnN0YXRlPVNTTDNfU1RfQ1JfS0VZX0VYQ0hfQTsKKysJCQkJfQorKwkJCWVsc2UK KysJCQkJeworKwkJCQlza2lwID0gMTsKKysJCQkJcy0+c3RhdGU9U1NMM19TVF9DUl9LRVlfRVhD SF9BOworKwkJCQl9CisrI2Vsc2UKKyAJCQkJfQorIAkJCWVsc2UKKyAJCQkJc2tpcD0xOworKwor IAkJCXMtPnN0YXRlPVNTTDNfU1RfQ1JfS0VZX0VYQ0hfQTsKKysjZW5kaWYKKyAJCQlzLT5pbml0 X251bT0wOworIAkJCWJyZWFrOworIAorQEAgLTQzNywxMSArNDY1LDM2IEBAIGludCBkdGxzMV9j b25uZWN0KFNTTCAqcykKKyAJCQkJfQorIAkJCWVsc2UKKyAJCQkJeworKyNpZm5kZWYgT1BFTlNT TF9OT19UTFNFWFQKKysJCQkJLyogQWxsb3cgTmV3U2Vzc2lvblRpY2tldCBpZiB0aWNrZXQgZXhw ZWN0ZWQgKi8KKysJCQkJaWYgKHMtPnRsc2V4dF90aWNrZXRfZXhwZWN0ZWQpCisrCQkJCQlzLT5z My0+dG1wLm5leHRfc3RhdGU9U1NMM19TVF9DUl9TRVNTSU9OX1RJQ0tFVF9BOworKwkJCQllbHNl CisrI2VuZGlmCisrCQkJCQorIAkJCQlzLT5zMy0+dG1wLm5leHRfc3RhdGU9U1NMM19TVF9DUl9G SU5JU0hFRF9BOworIAkJCQl9CisgCQkJcy0+aW5pdF9udW09MDsKKyAJCQlicmVhazsKKyAKKysj aWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisrCQljYXNlIFNTTDNfU1RfQ1JfU0VTU0lPTl9USUNL RVRfQToKKysJCWNhc2UgU1NMM19TVF9DUl9TRVNTSU9OX1RJQ0tFVF9COgorKwkJCXJldD1zc2wz X2dldF9uZXdfc2Vzc2lvbl90aWNrZXQocyk7CisrCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsK KysJCQlzLT5zdGF0ZT1TU0wzX1NUX0NSX0ZJTklTSEVEX0E7CisrCQkJcy0+aW5pdF9udW09MDsK KysJCWJyZWFrOworKworKwkJY2FzZSBTU0wzX1NUX0NSX0NFUlRfU1RBVFVTX0E6CisrCQljYXNl IFNTTDNfU1RfQ1JfQ0VSVF9TVEFUVVNfQjoKKysJCQlyZXQ9c3NsM19nZXRfY2VydF9zdGF0dXMo cyk7CisrCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKKysJCQlzLT5zdGF0ZT1TU0wzX1NUX0NS X0tFWV9FWENIX0E7CisrCQkJcy0+aW5pdF9udW09MDsKKysJCWJyZWFrOworKyNlbmRpZgorKwor IAkJY2FzZSBTU0wzX1NUX0NSX0ZJTklTSEVEX0E6CisgCQljYXNlIFNTTDNfU1RfQ1JfRklOSVNI RURfQjoKKyAJCQlzLT5kMS0+Y2hhbmdlX2NpcGhlcl9zcGVjX29rID0gMTsKK0BAIC01NTQsOCAr NjA3LDE0IEBAIGludCBkdGxzMV9jbGllbnRfaGVsbG8oU1NMICpzKQorIAlidWY9KHVuc2lnbmVk IGNoYXIgKilzLT5pbml0X2J1Zi0+ZGF0YTsKKyAJaWYgKHMtPnN0YXRlID09IFNTTDNfU1RfQ1df Q0xOVF9IRUxMT19BKQorIAkJeworKwkJU1NMX1NFU1NJT04gKnNlc3MgPSBzLT5zZXNzaW9uOwor IAkJaWYgKChzLT5zZXNzaW9uID09IE5VTEwpIHx8CisgCQkJKHMtPnNlc3Npb24tPnNzbF92ZXJz aW9uICE9IHMtPnZlcnNpb24pIHx8CisrI2lmZGVmIE9QRU5TU0xfTk9fVExTRVhUCisrCQkJIXNl c3MtPnNlc3Npb25faWRfbGVuZ3RoIHx8CisrI2Vsc2UKKysJCQkoIXNlc3MtPnNlc3Npb25faWRf bGVuZ3RoICYmICFzZXNzLT50bHNleHRfdGljaykgfHwKKysjZW5kaWYKKyAJCQkocy0+c2Vzc2lv bi0+bm90X3Jlc3VtYWJsZSkpCisgCQkJeworIAkJCWlmICghc3NsX2dldF9uZXdfc2Vzc2lvbihz LDApKQorQEAgLTYzNSw3ICs2OTQsMTUgQEAgaW50IGR0bHMxX2NsaWVudF9oZWxsbyhTU0wgKnMp CisgCQkJKihwKyspPWNvbXAtPmlkOworIAkJCX0KKyAJCSoocCsrKT0wOyAvKiBBZGQgdGhlIE5V TEwgbWV0aG9kICovCistCQkKKysKKysjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisrCQlpZiAo KHAgPSBzc2xfYWRkX2NsaWVudGhlbGxvX3Rsc2V4dChzLCBwLCBidWYrU1NMM19SVF9NQVhfUExB SU5fTEVOR1RIKSkgPT0gTlVMTCkKKysJCQl7CisrCQkJU1NMZXJyKFNTTF9GX1NTTDNfQ0xJRU5U X0hFTExPLEVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKKysJCQlnb3RvIGVycjsKKysJCQl9CisrI2Vu ZGlmCQkKKysKKyAJCWw9KHAtZCk7CisgCQlkPWJ1ZjsKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjAtYmV0YTQvc3NsL2QxX2xpYi5jLmR0bHMtcmVuZWcgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wv ZDFfbGliLmMKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL2QxX3NydnIuYy5kdGxz LXJlbmVnIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL2QxX3NydnIuYworLS0tIG9wZW5zc2wtMS4w LjAtYmV0YTQvc3NsL2QxX3NydnIuYy5kdGxzLXJlbmVnCTIwMDktMDktMDkgMTk6MDU6NDIuMDAw MDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvZDFfc3J2ci5jCTIwMTAt MDEtMDcgMTc6NDQ6NTUuMDAwMDAwMDAwICswMTAwCitAQCAtMzA1LDggKzMwNSwxOCBAQCBpbnQg ZHRsczFfYWNjZXB0KFNTTCAqcykKKyAJCQlyZXQ9ZHRsczFfc2VuZF9zZXJ2ZXJfaGVsbG8ocyk7 CisgCQkJaWYgKHJldCA8PSAwKSBnb3RvIGVuZDsKKyAKKysjaWZuZGVmIE9QRU5TU0xfTk9fVExT RVhUCisgCQkJaWYgKHMtPmhpdCkKKy0JCQkJcy0+c3RhdGU9U1NMM19TVF9TV19DSEFOR0VfQTsK KysJCQkJeworKwkJCQlpZiAocy0+dGxzZXh0X3RpY2tldF9leHBlY3RlZCkKKysJCQkJCXMtPnN0 YXRlPVNTTDNfU1RfU1dfU0VTU0lPTl9USUNLRVRfQTsKKysJCQkJZWxzZQorKwkJCQkJcy0+c3Rh dGU9U1NMM19TVF9TV19DSEFOR0VfQTsKKysJCQkJfQorKyNlbHNlCisrCQkJaWYgKHMtPmhpdCkK KysJCQkJCXMtPnN0YXRlPVNTTDNfU1RfU1dfQ0hBTkdFX0E7CisrI2VuZGlmCisgCQkJZWxzZQor IAkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NXX0NFUlRfQTsKKyAJCQlzLT5pbml0X251bT0wOworQEAg LTMyMSwxMCArMzMxLDI0IEBAIGludCBkdGxzMV9hY2NlcHQoU1NMICpzKQorIAkJCQlkdGxzMV9z dGFydF90aW1lcihzKTsKKyAJCQkJcmV0PWR0bHMxX3NlbmRfc2VydmVyX2NlcnRpZmljYXRlKHMp OworIAkJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOworKyNpZm5kZWYgT1BFTlNTTF9OT19UTFNF WFQKKysJCQkJaWYgKHMtPnRsc2V4dF9zdGF0dXNfZXhwZWN0ZWQpCisrCQkJCQlzLT5zdGF0ZT1T U0wzX1NUX1NXX0NFUlRfU1RBVFVTX0E7CisrCQkJCWVsc2UKKysJCQkJCXMtPnN0YXRlPVNTTDNf U1RfU1dfS0VZX0VYQ0hfQTsKKysJCQkJfQorKwkJCWVsc2UKKysJCQkJeworKwkJCQlza2lwID0g MTsKKysJCQkJcy0+c3RhdGU9U1NMM19TVF9TV19LRVlfRVhDSF9BOworKwkJCQl9CisrI2Vsc2UK KyAJCQkJfQorIAkJCWVsc2UKKyAJCQkJc2tpcD0xOworKworIAkJCXMtPnN0YXRlPVNTTDNfU1Rf U1dfS0VZX0VYQ0hfQTsKKysjZW5kaWYKKyAJCQlzLT5pbml0X251bT0wOworIAkJCWJyZWFrOwor IAorQEAgLTUxOSwxMSArNTQzLDM0IEBAIGludCBkdGxzMV9hY2NlcHQoU1NMICpzKQorIAkJCWR0 bHMxX3N0b3BfdGltZXIocyk7CisgCQkJaWYgKHMtPmhpdCkKKyAJCQkJcy0+c3RhdGU9U1NMX1NU X09LOworKyNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKysJCQllbHNlIGlmIChzLT50bHNleHRf dGlja2V0X2V4cGVjdGVkKQorKwkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NXX1NFU1NJT05fVElDS0VU X0E7CisrI2VuZGlmCisgCQkJZWxzZQorIAkJCQlzLT5zdGF0ZT1TU0wzX1NUX1NXX0NIQU5HRV9B OworIAkJCXMtPmluaXRfbnVtPTA7CisgCQkJYnJlYWs7CisgCisrI2lmbmRlZiBPUEVOU1NMX05P X1RMU0VYVAorKwkJY2FzZSBTU0wzX1NUX1NXX1NFU1NJT05fVElDS0VUX0E6CisrCQljYXNlIFNT TDNfU1RfU1dfU0VTU0lPTl9USUNLRVRfQjoKKysJCQlyZXQ9ZHRsczFfc2VuZF9uZXdzZXNzaW9u X3RpY2tldChzKTsKKysJCQlpZiAocmV0IDw9IDApIGdvdG8gZW5kOworKwkJCXMtPnN0YXRlPVNT TDNfU1RfU1dfQ0hBTkdFX0E7CisrCQkJcy0+aW5pdF9udW09MDsKKysJCQlicmVhazsKKysKKysJ CWNhc2UgU1NMM19TVF9TV19DRVJUX1NUQVRVU19BOgorKwkJY2FzZSBTU0wzX1NUX1NXX0NFUlRf U1RBVFVTX0I6CisrCQkJcmV0PXNzbDNfc2VuZF9jZXJ0X3N0YXR1cyhzKTsKKysJCQlpZiAocmV0 IDw9IDApIGdvdG8gZW5kOworKwkJCXMtPnN0YXRlPVNTTDNfU1RfU1dfS0VZX0VYQ0hfQTsKKysJ CQlzLT5pbml0X251bT0wOworKwkJCWJyZWFrOworKworKyNlbmRpZgorKworIAkJY2FzZSBTU0wz X1NUX1NXX0NIQU5HRV9BOgorIAkJY2FzZSBTU0wzX1NUX1NXX0NIQU5HRV9COgorIAorQEAgLTc0 OSw2ICs3OTYsOCBAQCBpbnQgZHRsczFfc2VuZF9zZXJ2ZXJfaGVsbG8oU1NMICpzKQorIAkJcCs9 c2w7CisgCisgCQkvKiBwdXQgdGhlIGNpcGhlciAqLworKwkJaWYgKHMtPnMzLT50bXAubmV3X2Np cGhlciA9PSBOVUxMKQorKwkJCXJldHVybiAtMTsKKyAJCWk9c3NsM19wdXRfY2lwaGVyX2J5X2No YXIocy0+czMtPnRtcC5uZXdfY2lwaGVyLHApOworIAkJcCs9aTsKKyAKK0BAIC03NjIsNiArODEx LDE0IEBAIGludCBkdGxzMV9zZW5kX3NlcnZlcl9oZWxsbyhTU0wgKnMpCisgCQkJKihwKyspPXMt PnMzLT50bXAubmV3X2NvbXByZXNzaW9uLT5pZDsKKyAjZW5kaWYKKyAKKysjaWZuZGVmIE9QRU5T U0xfTk9fVExTRVhUCisrCQlpZiAoKHAgPSBzc2xfYWRkX3NlcnZlcmhlbGxvX3Rsc2V4dChzLCBw LCBidWYrU1NMM19SVF9NQVhfUExBSU5fTEVOR1RIKSkgPT0gTlVMTCkKKysJCQl7CisrCQkJU1NM ZXJyKFNTTF9GX1NTTDNfU0VORF9TRVJWRVJfSEVMTE8sRVJSX1JfSU5URVJOQUxfRVJST1IpOwor KwkJCXJldHVybiAtMTsKKysJCQl9CisrI2VuZGlmCisrCisgCQkvKiBkbyB0aGUgaGVhZGVyICov CisgCQlsPShwLWQpOworIAkJZD1idWY7CitAQCAtMTM4NCwzICsxNDQxLDExNCBAQCBpbnQgZHRs czFfc2VuZF9zZXJ2ZXJfY2VydGlmaWNhdGUoU1NMICpzCisgCS8qIFNTTDNfU1RfU1dfQ0VSVF9C ICovCisgCXJldHVybihkdGxzMV9kb193cml0ZShzLFNTTDNfUlRfSEFORFNIQUtFKSk7CisgCX0K KysKKysjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisraW50IGR0bHMxX3NlbmRfbmV3c2Vzc2lv bl90aWNrZXQoU1NMICpzKQorKwl7CisrCWlmIChzLT5zdGF0ZSA9PSBTU0wzX1NUX1NXX1NFU1NJ T05fVElDS0VUX0EpCisrCQl7CisrCQl1bnNpZ25lZCBjaGFyICpwLCAqc2VuYywgKm1hY3N0YXJ0 OworKwkJaW50IGxlbiwgc2xlbjsKKysJCXVuc2lnbmVkIGludCBobGVuLCBtc2dfbGVuOworKwkJ RVZQX0NJUEhFUl9DVFggY3R4OworKwkJSE1BQ19DVFggaGN0eDsKKysJCVNTTF9DVFggKnRjdHgg PSBzLT5pbml0aWFsX2N0eDsKKysJCXVuc2lnbmVkIGNoYXIgaXZbRVZQX01BWF9JVl9MRU5HVEhd OworKwkJdW5zaWduZWQgY2hhciBrZXlfbmFtZVsxNl07CisrCisrCQkvKiBnZXQgc2Vzc2lvbiBl bmNvZGluZyBsZW5ndGggKi8KKysJCXNsZW4gPSBpMmRfU1NMX1NFU1NJT04ocy0+c2Vzc2lvbiwg TlVMTCk7CisrCQkvKiBTb21lIGxlbmd0aCB2YWx1ZXMgYXJlIDE2IGJpdHMsIHNvIGZvcmdldCBp dCBpZiBzZXNzaW9uIGlzCisrIAkJICogdG9vIGxvbmcKKysgCQkgKi8KKysJCWlmIChzbGVuID4g MHhGRjAwKQorKwkJCXJldHVybiAtMTsKKysJCS8qIEdyb3cgYnVmZmVyIGlmIG5lZWQgYmU6IHRo ZSBsZW5ndGggY2FsY3VsYXRpb24gaXMgYXMKKysgCQkgKiBmb2xsb3dzIDEyIChEVExTIGhhbmRz aGFrZSBtZXNzYWdlIGhlYWRlcikgKworKyAJCSAqIDQgKHRpY2tldCBsaWZldGltZSBoaW50KSAr IDIgKHRpY2tldCBsZW5ndGgpICsKKysgCQkgKiAxNiAoa2V5IG5hbWUpICsgbWF4X2l2X2xlbiAo aXYgbGVuZ3RoKSArCisrIAkJICogc2Vzc2lvbl9sZW5ndGggKyBtYXhfZW5jX2Jsb2NrX3NpemUg KG1heCBlbmNyeXB0ZWQgc2Vzc2lvbgorKyAJCSAqIGxlbmd0aCkgKyBtYXhfbWRfc2l6ZSAoSE1B QykuCisrIAkJICovCisrCQlpZiAoIUJVRl9NRU1fZ3JvdyhzLT5pbml0X2J1ZiwKKysJCQlEVExT MV9ITV9IRUFERVJfTEVOR1RIICsgMjIgKyBFVlBfTUFYX0lWX0xFTkdUSCArCisrCQkJRVZQX01B WF9CTE9DS19MRU5HVEggKyBFVlBfTUFYX01EX1NJWkUgKyBzbGVuKSkKKysJCQlyZXR1cm4gLTE7 CisrCQlzZW5jID0gT1BFTlNTTF9tYWxsb2Moc2xlbik7CisrCQlpZiAoIXNlbmMpCisrCQkJcmV0 dXJuIC0xOworKwkJcCA9IHNlbmM7CisrCQlpMmRfU1NMX1NFU1NJT04ocy0+c2Vzc2lvbiwgJnAp OworKworKwkJcD0odW5zaWduZWQgY2hhciAqKSYocy0+aW5pdF9idWYtPmRhdGFbRFRMUzFfSE1f SEVBREVSX0xFTkdUSF0pOworKwkJRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKysJCUhNQUNf Q1RYX2luaXQoJmhjdHgpOworKwkJLyogSW5pdGlhbGl6ZSBITUFDIGFuZCBjaXBoZXIgY29udGV4 dHMuIElmIGNhbGxiYWNrIHByZXNlbnQKKysJCSAqIGl0IGRvZXMgYWxsIHRoZSB3b3JrIG90aGVy d2lzZSB1c2UgZ2VuZXJhdGVkIHZhbHVlcworKwkJICogZnJvbSBwYXJlbnQgY3R4LgorKwkJICov CisrCQlpZiAodGN0eC0+dGxzZXh0X3RpY2tldF9rZXlfY2IpCisrCQkJeworKwkJCWlmICh0Y3R4 LT50bHNleHRfdGlja2V0X2tleV9jYihzLCBrZXlfbmFtZSwgaXYsICZjdHgsCisrCQkJCQkJCSAm aGN0eCwgMSkgPCAwKQorKwkJCQl7CisrCQkJCU9QRU5TU0xfZnJlZShzZW5jKTsKKysJCQkJcmV0 dXJuIC0xOworKwkJCQl9CisrCQkJfQorKwkJZWxzZQorKwkJCXsKKysJCQlSQU5EX3BzZXVkb19i eXRlcyhpdiwgMTYpOworKwkJCUVWUF9FbmNyeXB0SW5pdF9leCgmY3R4LCBFVlBfYWVzXzEyOF9j YmMoKSwgTlVMTCwKKysJCQkJCXRjdHgtPnRsc2V4dF90aWNrX2Flc19rZXksIGl2KTsKKysJCQlI TUFDX0luaXRfZXgoJmhjdHgsIHRjdHgtPnRsc2V4dF90aWNrX2htYWNfa2V5LCAxNiwKKysJCQkJ CXRsc2V4dF90aWNrX21kKCksIE5VTEwpOworKwkJCW1lbWNweShrZXlfbmFtZSwgdGN0eC0+dGxz ZXh0X3RpY2tfa2V5X25hbWUsIDE2KTsKKysJCQl9CisrCQlsMm4ocy0+c2Vzc2lvbi0+dGxzZXh0 X3RpY2tfbGlmZXRpbWVfaGludCwgcCk7CisrCQkvKiBTa2lwIHRpY2tldCBsZW5ndGggZm9yIG5v dyAqLworKwkJcCArPSAyOworKwkJLyogT3V0cHV0IGtleSBuYW1lICovCisrCQltYWNzdGFydCA9 IHA7CisrCQltZW1jcHkocCwga2V5X25hbWUsIDE2KTsKKysJCXAgKz0gMTY7CisrCQkvKiBvdXRw dXQgSVYgKi8KKysJCW1lbWNweShwLCBpdiwgRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKCZjdHgp KTsKKysJCXAgKz0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKCZjdHgpOworKwkJLyogRW5jcnlw dCBzZXNzaW9uIGRhdGEgKi8KKysJCUVWUF9FbmNyeXB0VXBkYXRlKCZjdHgsIHAsICZsZW4sIHNl bmMsIHNsZW4pOworKwkJcCArPSBsZW47CisrCQlFVlBfRW5jcnlwdEZpbmFsKCZjdHgsIHAsICZs ZW4pOworKwkJcCArPSBsZW47CisrCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOworKwor KwkJSE1BQ19VcGRhdGUoJmhjdHgsIG1hY3N0YXJ0LCBwIC0gbWFjc3RhcnQpOworKwkJSE1BQ19G aW5hbCgmaGN0eCwgcCwgJmhsZW4pOworKwkJSE1BQ19DVFhfY2xlYW51cCgmaGN0eCk7CisrCisr CQlwICs9IGhsZW47CisrCQkvKiBOb3cgd3JpdGUgb3V0IGxlbmd0aHM6IHAgcG9pbnRzIHRvIGVu ZCBvZiBkYXRhIHdyaXR0ZW4gKi8KKysJCS8qIFRvdGFsIGxlbmd0aCAqLworKwkJbGVuID0gcCAt ICh1bnNpZ25lZCBjaGFyICopJihzLT5pbml0X2J1Zi0+ZGF0YVtEVExTMV9ITV9IRUFERVJfTEVO R1RIXSk7CisrCQlwPSh1bnNpZ25lZCBjaGFyICopJihzLT5pbml0X2J1Zi0+ZGF0YVtEVExTMV9I TV9IRUFERVJfTEVOR1RIXSkgKyA0OworKwkJczJuKGxlbiAtIDE4LCBwKTsgIC8qIFRpY2tldCBs ZW5ndGggKi8KKysKKysJCS8qIG51bWJlciBvZiBieXRlcyB0byB3cml0ZSAqLworKwkJcy0+aW5p dF9udW09IGxlbjsKKysJCXMtPnN0YXRlPVNTTDNfU1RfU1dfU0VTU0lPTl9USUNLRVRfQjsKKysJ CXMtPmluaXRfb2ZmPTA7CisrCQlPUEVOU1NMX2ZyZWUoc2VuYyk7CisrCisrCQkvKiBYRFRMUzog IHNldCBtZXNzYWdlIGhlYWRlciA/ICovCisrCQltc2dfbGVuID0gcy0+aW5pdF9udW0gLSBEVExT MV9ITV9IRUFERVJfTEVOR1RIOworKwkJZHRsczFfc2V0X21lc3NhZ2VfaGVhZGVyKHMsICh2b2lk ICopcy0+aW5pdF9idWYtPmRhdGEsCisrCQkJU1NMM19NVF9ORVdTRVNTSU9OX1RJQ0tFVCwgbXNn X2xlbiwgMCwgbXNnX2xlbik7CisrCisrCQkvKiBidWZmZXIgdGhlIG1lc3NhZ2UgdG8gaGFuZGxl IHJlLXhtaXRzICovCisrCQlkdGxzMV9idWZmZXJfbWVzc2FnZShzLCAwKTsKKysJCX0KKysKKysJ LyogU1NMM19TVF9TV19TRVNTSU9OX1RJQ0tFVF9CICovCisrCXJldHVybihkdGxzMV9kb193cml0 ZShzLFNTTDNfUlRfSEFORFNIQUtFKSk7CisrCX0KKysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wt MS4wLjAtYmV0YTQvc3NsL3NzbF9sb2NsLmguZHRscy1yZW5lZyBvcGVuc3NsLTEuMC4wLWJldGE0 L3NzbC9zc2xfbG9jbC5oCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsX2xvY2wuaC5k dGxzLXJlbmVnCTIwMDktMTEtMjMgMDg6MzY6MDMuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNz bC0xLjAuMC1iZXRhNC9zc2wvc3NsX2xvY2wuaAkyMDEwLTAxLTA3IDE3OjQ0OjU1LjAwMDAwMDAw MCArMDEwMAorQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIGR0bHMxX3N0YXJ0X3RpbWVyKFNTTCAq cyk7Cisgdm9pZCBkdGxzMV9zdG9wX3RpbWVyKFNTTCAqcyk7CisgaW50IGR0bHMxX2lzX3RpbWVy X2V4cGlyZWQoU1NMICpzKTsKKyB2b2lkIGR0bHMxX2RvdWJsZV90aW1lb3V0KFNTTCAqcyk7Cist CisraW50IGR0bHMxX3NlbmRfbmV3c2Vzc2lvbl90aWNrZXQoU1NMICpzKTsKKyAKKyAvKiBzb21l IGNsaWVudC1vbmx5IGZ1bmN0aW9ucyAqLworIGludCBzc2wzX2NsaWVudF9oZWxsbyhTU0wgKnMp OworQEAgLTk0OSw2ICs5NDksOSBAQCBpbnQgc3NsM19zZW5kX2NsaWVudF9rZXlfZXhjaGFuZ2Uo U1NMICpzCisgaW50IHNzbDNfZ2V0X2tleV9leGNoYW5nZShTU0wgKnMpOworIGludCBzc2wzX2dl dF9zZXJ2ZXJfY2VydGlmaWNhdGUoU1NMICpzKTsKKyBpbnQgc3NsM19jaGVja19jZXJ0X2FuZF9h bGdvcml0aG0oU1NMICpzKTsKKysjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisraW50IHNzbDNf Y2hlY2tfZmluaXNoZWQoU1NMICpzKTsKKysjZW5kaWYKKyAKKyBpbnQgZHRsczFfY2xpZW50X2hl bGxvKFNTTCAqcyk7CisgaW50IGR0bHMxX3NlbmRfY2xpZW50X2NlcnRpZmljYXRlKFNTTCAqcyk7 CitAQCAtMTAzMCw2ICsxMDMzLDcgQEAgaW50IHNzbF9wcmVwYXJlX2NsaWVudGhlbGxvX3Rsc2V4 dChTU0wgKgorIGludCBzc2xfcHJlcGFyZV9zZXJ2ZXJoZWxsb190bHNleHQoU1NMICpzKTsKKyBp bnQgc3NsX2NoZWNrX2NsaWVudGhlbGxvX3Rsc2V4dChTU0wgKnMpOworIGludCBzc2xfY2hlY2tf c2VydmVyaGVsbG9fdGxzZXh0KFNTTCAqcyk7CisrCisgI2lmZGVmIE9QRU5TU0xfTk9fU0hBMjU2 CisgI2RlZmluZSB0bHNleHRfdGlja19tZAlFVlBfc2hhMQorICNlbHNlCitkaWZmIC11cCBvcGVu c3NsLTEuMC4wLWJldGE0L3NzbC9zM19jbG50LmMuZHRscy1yZW5lZyBvcGVuc3NsLTEuMC4wLWJl dGE0L3NzbC9zM19jbG50LmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zM19jbG50LmMu ZHRscy1yZW5lZwkyMDA5LTExLTIzIDA4OjM2OjA0LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5z c2wtMS4wLjAtYmV0YTQvc3NsL3MzX2NsbnQuYwkyMDEwLTAxLTA3IDE3OjQ0OjU1LjAwMDAwMDAw MCArMDEwMAorQEAgLTE3MCw5ICsxNzAsNiBAQAorIAorIHN0YXRpYyBjb25zdCBTU0xfTUVUSE9E ICpzc2wzX2dldF9jbGllbnRfbWV0aG9kKGludCB2ZXIpOworIHN0YXRpYyBpbnQgY2FfZG5fY21w KGNvbnN0IFg1MDlfTkFNRSAqIGNvbnN0ICphLGNvbnN0IFg1MDlfTkFNRSAqIGNvbnN0ICpiKTsK Ky0jaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCistc3RhdGljIGludCBzc2wzX2NoZWNrX2Zpbmlz aGVkKFNTTCAqcyk7CistI2VuZGlmCisgCisgc3RhdGljIGNvbnN0IFNTTF9NRVRIT0QgKnNzbDNf Z2V0X2NsaWVudF9tZXRob2QoaW50IHZlcikKKyAJeworQEAgLTE4MjcsNiArMTgyNCw3IEBAIGlu dCBzc2wzX2dldF9uZXdfc2Vzc2lvbl90aWNrZXQoU1NMICpzKQorIAkJU1NMZXJyKFNTTF9GX1NT TDNfR0VUX05FV19TRVNTSU9OX1RJQ0tFVCxTU0xfUl9MRU5HVEhfTUlTTUFUQ0gpOworIAkJZ290 byBmX2VycjsKKyAJCX0KKysKKyAJcD1kPSh1bnNpZ25lZCBjaGFyICopcy0+aW5pdF9tc2c7Cisg CW4ybChwLCBzLT5zZXNzaW9uLT50bHNleHRfdGlja19saWZldGltZV9oaW50KTsKKyAJbjJzKHAs IHRpY2tsZW4pOworQEAgLTI5OTEsNyArMjk4OSw3IEBAIGVycjoKKyAgKi8KKyAKKyAjaWZuZGVm IE9QRU5TU0xfTk9fVExTRVhUCistc3RhdGljIGludCBzc2wzX2NoZWNrX2ZpbmlzaGVkKFNTTCAq cykKKytpbnQgc3NsM19jaGVja19maW5pc2hlZChTU0wgKnMpCisgCXsKKyAJaW50IG9rOworIAls b25nIG47CitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC90MV9saWIuYy5kdGxzLXJl bmVnIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3QxX2xpYi5jCistLS0gb3BlbnNzbC0xLjAuMC1i ZXRhNC9zc2wvdDFfbGliLmMuZHRscy1yZW5lZwkyMDA5LTExLTIzIDA4OjM2OjA0LjAwMDAwMDAw MCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3QxX2xpYi5jCTIwMTAtMDEtMDcg MTc6NDQ6NTUuMDAwMDAwMDAwICswMTAwCitAQCAtMzQwLDcgKzM0MCw4IEBAIHVuc2lnbmVkIGNo YXIgKnNzbF9hZGRfY2xpZW50aGVsbG9fdGxzZXgKKyAgICAgICAgIH0KKyAKKyAjaWZuZGVmIE9Q RU5TU0xfTk9fRUMKKy0JaWYgKHMtPnRsc2V4dF9lY3BvaW50Zm9ybWF0bGlzdCAhPSBOVUxMKQor KwlpZiAocy0+dGxzZXh0X2VjcG9pbnRmb3JtYXRsaXN0ICE9IE5VTEwgJiYKKysJICAgIHMtPnZl cnNpb24gIT0gRFRMUzFfVkVSU0lPTikKKyAJCXsKKyAJCS8qIEFkZCBUTFMgZXh0ZW5zaW9uIEVD UG9pbnRGb3JtYXRzIHRvIHRoZSBDbGllbnRIZWxsbyBtZXNzYWdlICovCisgCQlsb25nIGxlbm1h eDsgCitAQCAtMzU5LDcgKzM2MCw4IEBAIHVuc2lnbmVkIGNoYXIgKnNzbF9hZGRfY2xpZW50aGVs bG9fdGxzZXgKKyAJCW1lbWNweShyZXQsIHMtPnRsc2V4dF9lY3BvaW50Zm9ybWF0bGlzdCwgcy0+ dGxzZXh0X2VjcG9pbnRmb3JtYXRsaXN0X2xlbmd0aCk7CisgCQlyZXQrPXMtPnRsc2V4dF9lY3Bv aW50Zm9ybWF0bGlzdF9sZW5ndGg7CisgCQl9CistCWlmIChzLT50bHNleHRfZWxsaXB0aWNjdXJ2 ZWxpc3QgIT0gTlVMTCkKKysJaWYgKHMtPnRsc2V4dF9lbGxpcHRpY2N1cnZlbGlzdCAhPSBOVUxM ICYmCisrCSAgICBzLT52ZXJzaW9uICE9IERUTFMxX1ZFUlNJT04pCisgCQl7CisgCQkvKiBBZGQg VExTIGV4dGVuc2lvbiBFbGxpcHRpY0N1cnZlcyB0byB0aGUgQ2xpZW50SGVsbG8gbWVzc2FnZSAq LworIAkJbG9uZyBsZW5tYXg7IAorQEAgLTQyMyw3ICs0MjUsOCBAQCB1bnNpZ25lZCBjaGFyICpz c2xfYWRkX2NsaWVudGhlbGxvX3Rsc2V4CisgCQlza2lwX2V4dDoKKyAKKyAjaWZkZWYgVExTRVhU X1RZUEVfb3BhcXVlX3ByZl9pbnB1dAorLQlpZiAocy0+czMtPmNsaWVudF9vcGFxdWVfcHJmX2lu cHV0ICE9IE5VTEwpCisrCWlmIChzLT5zMy0+Y2xpZW50X29wYXF1ZV9wcmZfaW5wdXQgIT0gTlVM TCAmJgorKwkgICAgcy0+dmVyc2lvbiAhPSBEVExTMV9WRVJTSU9OKQorIAkJeworIAkJc2l6ZV90 IGNvbCA9IHMtPnMzLT5jbGllbnRfb3BhcXVlX3ByZl9pbnB1dF9sZW47CisgCQkKK0BAIC00NDAs NyArNDQzLDggQEAgdW5zaWduZWQgY2hhciAqc3NsX2FkZF9jbGllbnRoZWxsb190bHNleAorIAkJ fQorICNlbmRpZgorIAorLQlpZiAocy0+dGxzZXh0X3N0YXR1c190eXBlID09IFRMU0VYVF9TVEFU VVNUWVBFX29jc3ApCisrCWlmIChzLT50bHNleHRfc3RhdHVzX3R5cGUgPT0gVExTRVhUX1NUQVRV U1RZUEVfb2NzcCAmJgorKwkgICAgcy0+dmVyc2lvbiAhPSBEVExTMV9WRVJTSU9OKQorIAkJewor IAkJaW50IGk7CisgCQlsb25nIGV4dGxlbiwgaWRsZW4sIGl0bXA7CitAQCAtNTE1LDcgKzUxOSw3 IEBAIHVuc2lnbmVkIGNoYXIgKnNzbF9hZGRfc2VydmVyaGVsbG9fdGxzZXgKKyAJCXMybigwLHJl dCk7CisgCQl9CisgCistICAgICAgICBpZihzLT5zMy0+c2VuZF9jb25uZWN0aW9uX2JpbmRpbmcp CisrCWlmKHMtPnMzLT5zZW5kX2Nvbm5lY3Rpb25fYmluZGluZykKKyAgICAgICAgIHsKKyAgICAg ICAgICAgaW50IGVsOworICAgICAgICAgICAKK0BAIC01NDAsNyArNTQ0LDggQEAgdW5zaWduZWQg Y2hhciAqc3NsX2FkZF9zZXJ2ZXJoZWxsb190bHNleAorICAgICAgICAgfQorIAorICNpZm5kZWYg T1BFTlNTTF9OT19FQworLQlpZiAocy0+dGxzZXh0X2VjcG9pbnRmb3JtYXRsaXN0ICE9IE5VTEwp CisrCWlmIChzLT50bHNleHRfZWNwb2ludGZvcm1hdGxpc3QgIT0gTlVMTCAmJgorKwkgICAgcy0+ dmVyc2lvbiAhPSBEVExTMV9WRVJTSU9OKQorIAkJeworIAkJLyogQWRkIFRMUyBleHRlbnNpb24g RUNQb2ludEZvcm1hdHMgdG8gdGhlIFNlcnZlckhlbGxvIG1lc3NhZ2UgKi8KKyAJCWxvbmcgbGVu bWF4OyAKK0BAIC01NzksNyArNTg0LDggQEAgdW5zaWduZWQgY2hhciAqc3NsX2FkZF9zZXJ2ZXJo ZWxsb190bHNleAorIAkJfQorIAorICNpZmRlZiBUTFNFWFRfVFlQRV9vcGFxdWVfcHJmX2lucHV0 CistCWlmIChzLT5zMy0+c2VydmVyX29wYXF1ZV9wcmZfaW5wdXQgIT0gTlVMTCkKKysJaWYgKHMt PnMzLT5zZXJ2ZXJfb3BhcXVlX3ByZl9pbnB1dCAhPSBOVUxMICYmCisrCSAgICBzLT52ZXJzaW9u ICE9IERUTFMxX1ZFUlNJT04pCisgCQl7CisgCQlzaXplX3Qgc29sID0gcy0+czMtPnNlcnZlcl9v cGFxdWVfcHJmX2lucHV0X2xlbjsKKyAJCQorQEAgLTc1Nyw3ICs3NjMsOCBAQCBpbnQgc3NsX3Bh cnNlX2NsaWVudGhlbGxvX3Rsc2V4dChTU0wgKnMsCisgCQkJfQorIAorICNpZm5kZWYgT1BFTlNT TF9OT19FQworLQkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV9lY19wb2ludF9mb3JtYXRz KQorKwkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV9lY19wb2ludF9mb3JtYXRzICYmCisr CSAgICAgICAgICAgICBzLT52ZXJzaW9uICE9IERUTFMxX1ZFUlNJT04pCisgCQkJeworIAkJCXVu c2lnbmVkIGNoYXIgKnNkYXRhID0gZGF0YTsKKyAJCQlpbnQgZWNwb2ludGZvcm1hdGxpc3RfbGVu Z3RoID0gKihzZGF0YSsrKTsKK0BAIC03ODQsNyArNzkxLDggQEAgaW50IHNzbF9wYXJzZV9jbGll bnRoZWxsb190bHNleHQoU1NMICpzLAorIAkJCWZwcmludGYoc3RkZXJyLCJcbiIpOworICNlbmRp ZgorIAkJCX0KKy0JCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfZWxsaXB0aWNfY3VydmVz KQorKwkJZWxzZSBpZiAodHlwZSA9PSBUTFNFWFRfVFlQRV9lbGxpcHRpY19jdXJ2ZXMgJiYKKysJ ICAgICAgICAgICAgIHMtPnZlcnNpb24gIT0gRFRMUzFfVkVSU0lPTikKKyAJCQl7CisgCQkJdW5z aWduZWQgY2hhciAqc2RhdGEgPSBkYXRhOworIAkJCWludCBlbGxpcHRpY2N1cnZlbGlzdF9sZW5n dGggPSAoKihzZGF0YSsrKSA8PCA4KTsKK0BAIC04MTQsNyArODIyLDggQEAgaW50IHNzbF9wYXJz ZV9jbGllbnRoZWxsb190bHNleHQoU1NMICpzLAorIAkJCX0KKyAjZW5kaWYgLyogT1BFTlNTTF9O T19FQyAqLworICNpZmRlZiBUTFNFWFRfVFlQRV9vcGFxdWVfcHJmX2lucHV0CistCQllbHNlIGlm ICh0eXBlID09IFRMU0VYVF9UWVBFX29wYXF1ZV9wcmZfaW5wdXQpCisrCQllbHNlIGlmICh0eXBl ID09IFRMU0VYVF9UWVBFX29wYXF1ZV9wcmZfaW5wdXQgJiYKKysJICAgICAgICAgICAgIHMtPnZl cnNpb24gIT0gRFRMUzFfVkVSU0lPTikKKyAJCQl7CisgCQkJdW5zaWduZWQgY2hhciAqc2RhdGEg PSBkYXRhOworIAorQEAgLTg1OCw4ICs4NjcsOCBAQCBpbnQgc3NsX3BhcnNlX2NsaWVudGhlbGxv X3Rsc2V4dChTU0wgKnMsCisgCQkJCXJldHVybiAwOworIAkJCXJlbmVnb3RpYXRlX3NlZW4gPSAx OworIAkJCX0KKy0JCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfc3RhdHVzX3JlcXVlc3QK Ky0JCQkJCQkmJiBzLT5jdHgtPnRsc2V4dF9zdGF0dXNfY2IpCisrCQllbHNlIGlmICh0eXBlID09 IFRMU0VYVF9UWVBFX3N0YXR1c19yZXF1ZXN0ICYmCisrCQkgICAgICAgICBzLT52ZXJzaW9uICE9 IERUTFMxX1ZFUlNJT04gJiYgcy0+Y3R4LT50bHNleHRfc3RhdHVzX2NiKQorIAkJCXsKKyAJCQor IAkJCWlmIChzaXplIDwgNSkgCitAQCAtMTAyNyw3ICsxMDM2LDggQEAgaW50IHNzbF9wYXJzZV9z ZXJ2ZXJoZWxsb190bHNleHQoU1NMICpzLAorIAkJCX0KKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9f RUMKKy0JCWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfZWNfcG9pbnRfZm9ybWF0cykKKysJ CWVsc2UgaWYgKHR5cGUgPT0gVExTRVhUX1RZUEVfZWNfcG9pbnRfZm9ybWF0cyAmJgorKwkgICAg ICAgICAgICAgcy0+dmVyc2lvbiAhPSBEVExTMV9WRVJTSU9OKQorIAkJCXsKKyAJCQl1bnNpZ25l ZCBjaGFyICpzZGF0YSA9IGRhdGE7CisgCQkJaW50IGVjcG9pbnRmb3JtYXRsaXN0X2xlbmd0aCA9 ICooc2RhdGErKyk7CitAQCAtMTA3Myw3ICsxMDgzLDggQEAgaW50IHNzbF9wYXJzZV9zZXJ2ZXJo ZWxsb190bHNleHQoU1NMICpzLAorIAkJCXMtPnRsc2V4dF90aWNrZXRfZXhwZWN0ZWQgPSAxOwor IAkJCX0KKyAjaWZkZWYgVExTRVhUX1RZUEVfb3BhcXVlX3ByZl9pbnB1dAorLQkJZWxzZSBpZiAo dHlwZSA9PSBUTFNFWFRfVFlQRV9vcGFxdWVfcHJmX2lucHV0KQorKwkJZWxzZSBpZiAodHlwZSA9 PSBUTFNFWFRfVFlQRV9vcGFxdWVfcHJmX2lucHV0ICYmCisrCSAgICAgICAgICAgICBzLT52ZXJz aW9uICE9IERUTFMxX1ZFUlNJT04pCisgCQkJeworIAkJCXVuc2lnbmVkIGNoYXIgKnNkYXRhID0g ZGF0YTsKKyAKK0BAIC0xMTAzLDcgKzExMTQsOCBAQCBpbnQgc3NsX3BhcnNlX3NlcnZlcmhlbGxv X3Rsc2V4dChTU0wgKnMsCisgCQkJCX0KKyAJCQl9CisgI2VuZGlmCistCQllbHNlIGlmICh0eXBl ID09IFRMU0VYVF9UWVBFX3N0YXR1c19yZXF1ZXN0KQorKwkJZWxzZSBpZiAodHlwZSA9PSBUTFNF WFRfVFlQRV9zdGF0dXNfcmVxdWVzdCAmJgorKwkJICAgICAgICAgcy0+dmVyc2lvbiAhPSBEVExT MV9WRVJTSU9OKQorIAkJCXsKKyAJCQkvKiBNVVNUIGJlIGVtcHR5IGFuZCBvbmx5IHNlbnQgaWYg d2UndmUgcmVxdWVzdGVkCisgCQkJICogYSBzdGF0dXMgcmVxdWVzdCBtZXNzYWdlLgoKZGlmZiAt LWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTQtcmVuZWctc2Nzdi5wYXRjaCBiL29wZW5zc2wtMS4w LjAtYmV0YTQtcmVuZWctc2Nzdi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hNTBkNzFmCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMC1iZXRhNC1yZW5l Zy1zY3N2LnBhdGNoCkBAIC0wLDAgKzEsNzkzIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJl dGE0L2FwcHMvc19jbGllbnQuYy5zY3N2IG9wZW5zc2wtMS4wLjAtYmV0YTQvYXBwcy9zX2NsaWVu dC5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9hcHBzL3NfY2xpZW50LmMuc2NzdgkyMDEwLTAx LTA3IDIzOjM3OjM5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvYXBw cy9zX2NsaWVudC5jCTIwMTAtMDEtMDcgMjM6Mzc6MzkuMDAwMDAwMDAwICswMTAwCitAQCAtMzgy LDcgKzM4Miw3IEBAIGludCBNQUlOKGludCwgY2hhciAqKik7CisgCisgaW50IE1BSU4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQorIAl7CistCWludCBvZmY9MDsKKysJdW5zaWduZWQgaW50IG9mZj0w LCBjbHI9MDsKKyAJU1NMICpjb249TlVMTDsKKyAJaW50IHMsayx3aWR0aCxzdGF0ZT0wOworIAlj aGFyICpjYnVmPU5VTEwsKnNidWY9TlVMTCwqbWJ1Zj1OVUxMOworQEAgLTY2MCw2ICs2NjAsMTAg QEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCW9mZnw9U1NMX09QX0NJUEhF Ul9TRVJWRVJfUFJFRkVSRU5DRTsKKyAJCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiLWxlZ2FjeV9y ZW5lZ290aWF0aW9uIikgPT0gMCkKKyAJCQlvZmZ8PVNTTF9PUF9BTExPV19VTlNBRkVfTEVHQUNZ X1JFTkVHT1RJQVRJT047CisrCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi1sZWdhY3lfc2VydmVy X2Nvbm5lY3QiKSA9PSAwKQorKwkJCXsgb2ZmfD1TU0xfT1BfTEVHQUNZX1NFUlZFUl9DT05ORUNU OyB9CisrCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi1ub19sZWdhY3lfc2VydmVyX2Nvbm5lY3Qi KSA9PSAwKQorKwkJCXsgY2xyfD1TU0xfT1BfTEVHQUNZX1NFUlZFUl9DT05ORUNUOyB9CisgCQll bHNlIGlmCShzdHJjbXAoKmFyZ3YsIi1jaXBoZXIiKSA9PSAwKQorIAkJCXsKKyAJCQlpZiAoLS1h cmdjIDwgMSkgZ290byBiYWQ7CitAQCAtODcwLDYgKzg3NCw5IEBAIGJhZDoKKyAJCVNTTF9DVFhf c2V0X29wdGlvbnMoY3R4LFNTTF9PUF9BTEx8b2ZmKTsKKyAJZWxzZQorIAkJU1NMX0NUWF9zZXRf b3B0aW9ucyhjdHgsb2ZmKTsKKysKKysJaWYgKGNscikKKysJCVNTTF9DVFhfY2xlYXJfb3B0aW9u cyhjdHgsIGNscik7CisgCS8qIERUTFM6IHBhcnRpYWwgcmVhZHMgZW5kIHVwIGRpc2NhcmRpbmcg dW5yZWFkIFVEUCBieXRlcyA6LSggCisgCSAqIFNldHRpbmcgcmVhZCBhaGVhZCBzb2x2ZXMgdGhp cyBwcm9ibGVtLgorIAkgKi8KK0BAIC0xNzI1LDYgKzE3MzIsOCBAQCBzdGF0aWMgdm9pZCBwcmlu dF9zdHVmZihCSU8gKmJpbywgU1NMICpzCisgCQkJCQkJCSBFVlBfUEtFWV9iaXRzKHBrdG1wKSk7 CisgCQlFVlBfUEtFWV9mcmVlKHBrdG1wKTsKKyAJfQorKwlCSU9fcHJpbnRmKGJpbywgIlNlY3Vy ZSBSZW5lZ290aWF0aW9uIElTJXMgc3VwcG9ydGVkXG4iLAorKwkJCVNTTF9nZXRfc2VjdXJlX3Jl bmVnb3RpYXRpb25fc3VwcG9ydChzKSA/ICIiIDogIiBOT1QiKTsKKyAjaWZuZGVmIE9QRU5TU0xf Tk9fQ09NUAorIAljb21wPVNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbihzKTsKKyAJZXhwYW5z aW9uPVNTTF9nZXRfY3VycmVudF9leHBhbnNpb24ocyk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4w LWJldGE0L2FwcHMvc19zZXJ2ZXIuYy5zY3N2IG9wZW5zc2wtMS4wLjAtYmV0YTQvYXBwcy9zX3Nl cnZlci5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9hcHBzL3Nfc2VydmVyLmMuc2NzdgkyMDEw LTAxLTA3IDIzOjM3OjM5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQv YXBwcy9zX3NlcnZlci5jCTIwMTAtMDEtMDcgMjM6Mzc6MzkuMDAwMDAwMDAwICswMTAwCitAQCAt MjIxMiw2ICsyMjEyLDggQEAgc3RhdGljIGludCBpbml0X3NzbF9jb25uZWN0aW9uKFNTTCAqY29u KQorIAkJCWNvbi0+a3NzbF9jdHgtPmNsaWVudF9wcmluYyk7CisgCQl9CisgI2VuZGlmIC8qIE9Q RU5TU0xfTk9fS1JCNSAqLworKwlCSU9fcHJpbnRmKGJpb19zX291dCwgIlNlY3VyZSBSZW5lZ290 aWF0aW9uIElTJXMgc3VwcG9ydGVkXG4iLAorKwkJICAgICAgU1NMX2dldF9zZWN1cmVfcmVuZWdv dGlhdGlvbl9zdXBwb3J0KGNvbikgPyAiIiA6ICIgTk9UIik7CisgCXJldHVybigxKTsKKyAJfQor IAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9kb2Mvc3NsL1NTTF9DVFhfc2V0X29wdGlv bnMucG9kLnNjc3Ygb3BlbnNzbC0xLjAuMC1iZXRhNC9kb2Mvc3NsL1NTTF9DVFhfc2V0X29wdGlv bnMucG9kCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9kb2Mvc3NsL1NTTF9DVFhfc2V0X29wdGlv bnMucG9kLnNjc3YJMjAwNy0wOC0yNCAwMDo0OToxMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVu c3NsLTEuMC4wLWJldGE0L2RvYy9zc2wvU1NMX0NUWF9zZXRfb3B0aW9ucy5wb2QJMjAxMC0wMS0w NyAyMzozNzozOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yLDcgKzIsNyBAQAorIAorID1oZWFkMSBO QU1FCisgCistU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX3NldF9vcHRpb25zLCBTU0xfQ1RYX2dl dF9vcHRpb25zLCBTU0xfZ2V0X29wdGlvbnMgLSBtYW5pcHVsYXRlIFNTTCBlbmdpbmUgb3B0aW9u cworK1NTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9zZXRfb3B0aW9ucywgU1NMX0NUWF9jbGVhcl9v cHRpb25zLCBTU0xfY2xlYXJfb3B0aW9ucywgU1NMX0NUWF9nZXRfb3B0aW9ucywgU1NMX2dldF9v cHRpb25zLCBTU0xfZ2V0X3NlY3VyZV9yZW5lZ290aWF0aW9uX3N1cHBvcnQgLSBtYW5pcHVsYXRl IFNTTCBvcHRpb25zCisgCisgPWhlYWQxIFNZTk9QU0lTCisgCitAQCAtMTEsMjYgKzExLDQxIEBA IFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9zZXRfb3B0aW9ucywgU1MKKyAgbG9uZyBTU0xfQ1RY X3NldF9vcHRpb25zKFNTTF9DVFggKmN0eCwgbG9uZyBvcHRpb25zKTsKKyAgbG9uZyBTU0xfc2V0 X29wdGlvbnMoU1NMICpzc2wsIGxvbmcgb3B0aW9ucyk7CisgCisrIGxvbmcgU1NMX0NUWF9jbGVh cl9vcHRpb25zKFNTTF9DVFggKmN0eCwgbG9uZyBvcHRpb25zKTsKKysgbG9uZyBTU0xfY2xlYXJf b3B0aW9ucyhTU0wgKnNzbCwgbG9uZyBvcHRpb25zKTsKKysKKyAgbG9uZyBTU0xfQ1RYX2dldF9v cHRpb25zKFNTTF9DVFggKmN0eCk7CisgIGxvbmcgU1NMX2dldF9vcHRpb25zKFNTTCAqc3NsKTsK KyAKKysgbG9uZyBTU0xfZ2V0X3NlY3VyZV9yZW5lZ290aWF0aW9uX3N1cHBvcnQoU1NMICpzc2wp OworKworID1oZWFkMSBERVNDUklQVElPTgorIAorK05vdGU6IGFsbCB0aGVzZSBmdW5jdGlvbnMg YXJlIGltcGxlbWVudGVkIHVzaW5nIG1hY3Jvcy4KKysKKyBTU0xfQ1RYX3NldF9vcHRpb25zKCkg YWRkcyB0aGUgb3B0aW9ucyBzZXQgdmlhIGJpdG1hc2sgaW4gQjxvcHRpb25zPiB0byBCPGN0eD4u CisgT3B0aW9ucyBhbHJlYWR5IHNldCBiZWZvcmUgYXJlIG5vdCBjbGVhcmVkIQorIAorIFNTTF9z ZXRfb3B0aW9ucygpIGFkZHMgdGhlIG9wdGlvbnMgc2V0IHZpYSBiaXRtYXNrIGluIEI8b3B0aW9u cz4gdG8gQjxzc2w+LgorIE9wdGlvbnMgYWxyZWFkeSBzZXQgYmVmb3JlIGFyZSBub3QgY2xlYXJl ZCEKKyAKKytTU0xfQ1RYX2NsZWFyX29wdGlvbnMoKSBjbGVhcnMgdGhlIG9wdGlvbnMgc2V0IHZp YSBiaXRtYXNrIGluIEI8b3B0aW9ucz4KKyt0byBCPGN0eD4uCisrCisrU1NMX2NsZWFyX29wdGlv bnMoKSBjbGVhcnMgdGhlIG9wdGlvbnMgc2V0IHZpYSBiaXRtYXNrIGluIEI8b3B0aW9ucz4gdG8g Qjxzc2w+LgorKworIFNTTF9DVFhfZ2V0X29wdGlvbnMoKSByZXR1cm5zIHRoZSBvcHRpb25zIHNl dCBmb3IgQjxjdHg+LgorIAorIFNTTF9nZXRfb3B0aW9ucygpIHJldHVybnMgdGhlIG9wdGlvbnMg c2V0IGZvciBCPHNzbD4uCisgCisrU1NMX2dldF9zZWN1cmVfcmVuZWdvdGlhdGlvbl9zdXBwb3J0 KCkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBlZXIgc3VwcG9ydHMKKytzZWN1cmUgcmVuZWdvdGlh dGlvbi4KKysKKyA9aGVhZDEgTk9URVMKKyAKKyBUaGUgYmVoYXZpb3VyIG9mIHRoZSBTU0wgbGli cmFyeSBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIHNldmVyYWwgb3B0aW9ucy4KKyBUaGUgb3B0 aW9ucyBhcmUgY29kZWQgYXMgYml0bWFza3MgYW5kIGNhbiBiZSBjb21iaW5lZCBieSBhIGxvZ2lj YWwgQjxvcj4KKy1vcGVyYXRpb24gKHwpLiBPcHRpb25zIGNhbiBvbmx5IGJlIGFkZGVkIGJ1dCBj YW4gbmV2ZXIgYmUgcmVzZXQuCisrb3BlcmF0aW9uICh8KS4KKyAKKyBTU0xfQ1RYX3NldF9vcHRp b25zKCkgYW5kIFNTTF9zZXRfb3B0aW9ucygpIGFmZmVjdCB0aGUgKGV4dGVybmFsKQorIHByb3Rv Y29sIGJlaGF2aW91ciBvZiB0aGUgU1NMIGxpYnJhcnkuIFRoZSAoaW50ZXJuYWwpIGJlaGF2aW91 ciBvZgorQEAgLTE5OSw3ICsyMTQsNyBAQCBEbyBub3QgdXNlIHRoZSBUTFN2MSBwcm90b2NvbC4K KyAKKyBXaGVuIHBlcmZvcm1pbmcgcmVuZWdvdGlhdGlvbiBhcyBhIHNlcnZlciwgYWx3YXlzIHN0 YXJ0IGEgbmV3IHNlc3Npb24KKyAoaS5lLiwgc2Vzc2lvbiByZXN1bXB0aW9uIHJlcXVlc3RzIGFy ZSBvbmx5IGFjY2VwdGVkIGluIHRoZSBpbml0aWFsCistaGFuZHNoYWtlKS4gIFRoaXMgb3B0aW9u IGlzIG5vdCBuZWVkZWQgZm9yIGNsaWVudHMuCisraGFuZHNoYWtlKS4gVGhpcyBvcHRpb24gaXMg bm90IG5lZWRlZCBmb3IgY2xpZW50cy4KKyAKKyA9aXRlbSBTU0xfT1BfTk9fVElDS0VUCisgCitA QCAtMjA5LDE1ICsyMjQsNjMgQEAgb2YgUkZDNDUwN2JpcyB0aWNrZXRzIGZvciBzdGF0ZWxlc3Mg c2VzcworIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgZGlzYWJs ZWQgYW5kIHRpY2tldHMgd2lsbAorIG5vdCBiZSB1c2VkIGJ5IGNsaWVudHMgb3Igc2VydmVycy4K KyAKKys9aXRlbSBTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OCisrCisr U2VlIHRoZSBCPFNFQ1VSRSBSRU5FR09USUFUSU9OPiBzZWN0aW9uIGZvciBhIGRpc2N1c3Npb24g b2YgdGhlIHB1cnBvc2Ugb2YKKyt0aGlzIG9wdGlvbgorKworID1iYWNrCisgCisrPWhlYWQxIFNF Q1VSRSBSRU5FR09USUFUSU9OCisrCisrT3BlblNTTCAwLjkuOG0gYW5kIGxhdGVyIGFsd2F5cyBh dHRlbXB0cyB0byB1c2Ugc2VjdXJlIHJlbmVnb3RpYXRpb24gYXMKKytkZXNjcmliZWQgaW4gZHJh ZnQtaWV0Zi10bHMtcmVuZWdvdGlhdGlvbiAoRklYTUU6IHJlcGxhY2UgYnkgUkZDKS4gVGhpcwor K2NvdW50ZXJzIGEgcHJlZml4IGF0dGFjayBkZXNjcmliZWQgaW4gdGhlIGRyYWZ0IGFuZCBlbHNl d2hlcmUgKEZJWE1FOiBuZWVkIGZ1bGwKKytyZWZlcmVuY2UpLgorKworK1RoaXMgYXR0YWNrIGhh cyBmYXIgcmVhY2hpbmcgY29uc2VxdWVuY2VzIHdoaWNoIGFwcGxpY2F0aW9uIHdyaXRlcnMgc2hv dWxkIGJlCisrYXdhcmUgb2YuIEluIHRoZSBkZXNjcmlwdGlvbiBiZWxvdyBhbiBpbXBsZW1lbnRh dGlvbiBzdXBwb3J0aW5nIHNlY3VyZQorK3JlbmVnb3RpYXRpb24gaXMgcmVmZXJyZWQgdG8gYXMg STxwYXRjaGVkPi4gQSBzZXJ2ZXIgbm90IHN1cHBvcnRpbmcgc2VjdXJlCisrcmVuZWdvdGlhdGlv biBpcyByZWZlcnJlZCB0byBhcyBJPHVucGF0Y2hlZD4uCisrCisrSWYgYW4gdW5wYXRjaGVkIGNs aWVudCBhdHRlbXB0cyB0byBjb25uZWN0IHRvIGEgcGF0Y2hlZCBPcGVuU1NMIHNlcnZlciB0aGVu CisrdGhlIGF0dGVtcHQgd2lsbCBzdWNjZWVkIGJ1dCByZW5lZ290aWF0aW9uIGlzIG5vdCBwZXJt aXR0ZWQuIEFzIHJlcXVpcmVkCisrYnkgdGhlIHN0YW5kYXJkIGEgQjxub19yZW5lZ290aWF0aW9u PiBhbGVydCBpcyBzZW50IGJhY2sgdG8gdGhlIGNsaWVudCBpZgorK3RoZSBUTFMgdjEuMCBwcm90 b2NvbCBpcyB1c2VkLiBJZiBTU0x2My4wIGlzIHVzZWQgdGhlbiByZW5lZ290aWF0aW9uIHJlc3Vs dHMKKytpbiBhIGZhdGFsIEI8aGFuZHNoYWtlX2ZhaWxlZD4gYWxlcnQuCisrCisrSWYgYSBwYXRj aGVkIE9wZW5TU0wgY2xpZW50IGF0dGVtcHRzIHRvIGNvbm5lY3QgdG8gYW4gdW5wYXRjaGVkIHNl cnZlcgorK3RoZW4gdGhlIGNvbm5lY3Rpb24gd2lsbCBmYWlsIGJlY2F1c2UgaXQgaXMgbm90IHBv c3NpYmxlIHRvIGRldGVybWluZQorK3doZXRoZXIgYW4gYXR0YWNrIGlzIHRha2luZyBwbGFjZS4K KysKKytJZiB0aGUgb3B0aW9uIEI8U1NMX09QX0FMTE9XX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElB VElPTj4gaXMgc2V0IHRoZW4gdGhlCisrYWJvdmUgcmVzdHJpY3Rpb25zIGFyZSByZWxheGVkLiBS ZW5lZ290aWF0aW9uIGlzIHBlcm1pc3NpYmxlIGFuZCBpbml0aWFsCisrY29ubmVjdGlvbnMgdG8g dW5wYXRjaGVkIHNlcnZlcnMgd2lsbCBzdWNjZWVkLgorKworK1RoaXMgb3B0aW9uIHNob3VsZCBi ZSB1c2VkIHdpdGggY2F1dGlvbiBiZWNhdXNlIGl0IGxlYXZlcyBib3RoIGNsaWVudHMgYW5kCisr c2VydmVycyB2dWxuZXJhYmxlLiBIb3dldmVyIHVucGF0Y2hlZCBzZXJ2ZXJzIGFuZCBjbGllbnRz IGFyZSBsaWtlbHkgdG8gYmUKKythcm91bmQgZm9yIHNvbWUgdGltZSBhbmQgcmVmdXNpbmcgdG8g Y29ubmVjdCB0byB1bnBhdGNoZWQgc2VydmVycyBvciBkZW55aW5nCisrcmVuZWdvdGlvbiBhbHRv Z2V0aGVyIG1heSBiZSB1bmFjY2VwdGFibGUuIFNvIGFwcGxpY2F0aW9ucyBtYXkgYmUgZm9yY2Vk IHRvCisrdG9sZXJhdGUgdW5zYWZlIHJlbmVnb3RpYXRpb24gZm9yIHRoZSBpbW1lZGlhdGUgZnV0 dXJlLgorKworK1RoZSBmdW5jdGlvbiBTU0xfZ2V0X3NlY3VyZV9yZW5lZ290aWF0aW9uX3N1cHBv cnQoKSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcGVlcgorK3N1cHBvcnRzIHNlY3VyZSByZW5lZ290 aWF0aW9uLiAKKysKKytUaGUgZGVwcmVjYXRlZCBTU0x2MiBwcm90b2NvbCBkb2VzIG5vdCBzdXBw b3J0IHNlY3VyZSByZW5lZ290aWF0aW9uIGF0IGFsbC4KKysKKyA9aGVhZDEgUkVUVVJOIFZBTFVF UworIAorIFNTTF9DVFhfc2V0X29wdGlvbnMoKSBhbmQgU1NMX3NldF9vcHRpb25zKCkgcmV0dXJu IHRoZSBuZXcgb3B0aW9ucyBiaXRtYXNrCisgYWZ0ZXIgYWRkaW5nIEI8b3B0aW9ucz4uCisgCisr U1NMX0NUWF9jbGVhcl9vcHRpb25zKCkgYW5kIFNTTF9jbGVhcl9vcHRpb25zKCkgcmV0dXJuIHRo ZSBuZXcgb3B0aW9ucyBiaXRtYXNrCisrYWZ0ZXIgY2xlYXJpbmcgQjxvcHRpb25zPi4KKysKKyBT U0xfQ1RYX2dldF9vcHRpb25zKCkgYW5kIFNTTF9nZXRfb3B0aW9ucygpIHJldHVybiB0aGUgY3Vy cmVudCBiaXRtYXNrLgorIAorK1NTTF9nZXRfc2VjdXJlX3JlbmVnb3RpYXRpb25fc3VwcG9ydCgp IHJldHVybnMgMSBpcyB0aGUgcGVlciBzdXBwb3J0cworK3NlY3VyZSByZW5lZ290aWF0aW9uIGFu ZCAwIGlmIGl0IGRvZXMgbm90LgorKworID1oZWFkMSBTRUUgQUxTTworIAorIEw8c3NsKDMpfHNz bCgzKT4sIEw8U1NMX25ldygzKXxTU0xfbmV3KDMpPiwgTDxTU0xfY2xlYXIoMyl8U1NMX2NsZWFy KDMpPiwKK0BAIC0yNDAsNCArMzAzLDEwIEBAIFZlcnNpb25zIHVwIHRvIE9wZW5TU0wgMC45LjZj IGRvIG5vdCBpbmMKKyBjYW4gYmUgZGlzYWJsZWQgd2l0aCB0aGlzIG9wdGlvbiAoaW4gT3BlblNT TCAwLjkuNmQsIGl0IHdhcyBhbHdheXMKKyBlbmFibGVkKS4KKyAKKytTU0xfQ1RYX2NsZWFyX29w dGlvbnMoKSBhbmQgU1NMX2NsZWFyX29wdGlvbnMoKSB3ZXJlIGZpcnN0IGFkZGVkIGluIE9wZW5T U0wKKyswLjkuOG0uCisrCisrQjxTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFU SU9OPiB3YXMgZmlyc3QgYWRkZWQgaW4gT3BlblNTTAorKzAuOS44bS4KKysKKyA9Y3V0CitkaWZm IC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9kMV9jbG50LmMuc2NzdiBvcGVuc3NsLTEuMC4w LWJldGE0L3NzbC9kMV9jbG50LmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9kMV9jbG50 LmMuc2NzdgkyMDEwLTAxLTA3IDIzOjM3OjM5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjAtYmV0YTQvc3NsL2QxX2NsbnQuYwkyMDEwLTAxLTA3IDIzOjM3OjM5LjAwMDAwMDAwMCAr MDEwMAorQEAgLTY5OCw3ICs2OTgsNyBAQCBpbnQgZHRsczFfY2xpZW50X2hlbGxvKFNTTCAqcykK KyAjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisgCQlpZiAoKHAgPSBzc2xfYWRkX2NsaWVudGhl bGxvX3Rsc2V4dChzLCBwLCBidWYrU1NMM19SVF9NQVhfUExBSU5fTEVOR1RIKSkgPT0gTlVMTCkK KyAJCQl7CistCQkJU1NMZXJyKFNTTF9GX1NTTDNfQ0xJRU5UX0hFTExPLEVSUl9SX0lOVEVSTkFM X0VSUk9SKTsKKysJCQlTU0xlcnIoU1NMX0ZfRFRMUzFfQ0xJRU5UX0hFTExPLEVSUl9SX0lOVEVS TkFMX0VSUk9SKTsKKyAJCQlnb3RvIGVycjsKKyAJCQl9CisgI2VuZGlmCQkKK2RpZmYgLXVwIG9w ZW5zc2wtMS4wLjAtYmV0YTQvc3NsL2QxX3NydnIuYy5zY3N2IG9wZW5zc2wtMS4wLjAtYmV0YTQv c3NsL2QxX3NydnIuYworLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL2QxX3NydnIuYy5zY3N2 CTIwMTAtMDEtMDcgMjM6Mzc6MzkuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1i ZXRhNC9zc2wvZDFfc3J2ci5jCTIwMTAtMDEtMDcgMjM6Mzc6MzkuMDAwMDAwMDAwICswMTAwCitA QCAtODE0LDcgKzgxNCw3IEBAIGludCBkdGxzMV9zZW5kX3NlcnZlcl9oZWxsbyhTU0wgKnMpCisg I2lmbmRlZiBPUEVOU1NMX05PX1RMU0VYVAorIAkJaWYgKChwID0gc3NsX2FkZF9zZXJ2ZXJoZWxs b190bHNleHQocywgcCwgYnVmK1NTTDNfUlRfTUFYX1BMQUlOX0xFTkdUSCkpID09IE5VTEwpCisg CQkJeworLQkJCVNTTGVycihTU0xfRl9TU0wzX1NFTkRfU0VSVkVSX0hFTExPLEVSUl9SX0lOVEVS TkFMX0VSUk9SKTsKKysJCQlTU0xlcnIoU1NMX0ZfRFRMUzFfU0VORF9TRVJWRVJfSEVMTE8sRVJS X1JfSU5URVJOQUxfRVJST1IpOworIAkJCXJldHVybiAtMTsKKyAJCQl9CisgI2VuZGlmCitkaWZm IC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zc2xfZXJyLmMuc2NzdiBvcGVuc3NsLTEuMC4w LWJldGE0L3NzbC9zc2xfZXJyLmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zc2xfZXJy LmMuc2NzdgkyMDEwLTAxLTA3IDIzOjM3OjM5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjAtYmV0YTQvc3NsL3NzbF9lcnIuYwkyMDEwLTAxLTA3IDIzOjM3OjM5LjAwMDAwMDAwMCAr MDEwMAorQEAgLTQxNCw2ICs0MTQsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIFNTTF9zdHJf cmVhc29uc1tdCisge0VSUl9SRUFTT04oU1NMX1JfTk9fUFJJVkFURV9LRVlfQVNTSUdORUQpLCJu byBwcml2YXRlIGtleSBhc3NpZ25lZCJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX05PX1BST1RPQ09M U19BVkFJTEFCTEUpLCJubyBwcm90b2NvbHMgYXZhaWxhYmxlIn0sCisge0VSUl9SRUFTT04oU1NM X1JfTk9fUFVCTElDS0VZKSAgICAgICAgICAsIm5vIHB1YmxpY2tleSJ9LAorK3tFUlJfUkVBU09O KFNTTF9SX05PX1JFTkVHT1RJQVRJT04pICAgICAgLCJubyByZW5lZ290aWF0aW9uIn0sCisge0VS Ul9SRUFTT04oU1NMX1JfTk9fUkVRVUlSRURfRElHRVNUKSAgICAsImRpZ2VzdCByZXF1cmVkIGZv ciBoYW5kc2hha2UgaXNuJ3QgY29tcHV0ZWQifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9OT19TSEFS RURfQ0lQSEVSKSAgICAgICwibm8gc2hhcmVkIGNpcGhlciJ9LAorIHtFUlJfUkVBU09OKFNTTF9S X05PX1ZFUklGWV9DQUxMQkFDSykgICAgLCJubyB2ZXJpZnkgY2FsbGJhY2sifSwKK0BAIC00NTMs NiArNDU0LDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTU0xfc3RyX3JlYXNvbnNbXQorIHtF UlJfUkVBU09OKFNTTF9SX1JFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPKSwicmV1c2UgY2VydCBs ZW5ndGggbm90IHplcm8ifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9SRVVTRV9DRVJUX1RZUEVfTk9U X1pFUk8pLCJyZXVzZSBjZXJ0IHR5cGUgbm90IHplcm8ifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9S RVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyksInJldXNlIGNpcGhlciBsaXN0IG5vdCB6ZXJvIn0s Cisre0VSUl9SRUFTT04oU1NMX1JfU0NTVl9SRUNFSVZFRF9XSEVOX1JFTkVHT1RJQVRJTkcpLCJz Y3N2IHJlY2VpdmVkIHdoZW4gcmVuZWdvdGlhdGluZyJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX1NF UlZFUkhFTExPX1RMU0VYVCkgICAgLCJzZXJ2ZXJoZWxsbyB0bHNleHQifSwKKyB7RVJSX1JFQVNP TihTU0xfUl9TRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRCksInNlc3Npb24gaWQgY29u dGV4dCB1bmluaXRpYWxpemVkIn0sCisge0VSUl9SRUFTT04oU1NMX1JfU0hPUlRfUkVBRCkgICAg ICAgICAgICAsInNob3J0IHJlYWQifSwKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3Ns L3NzbC5oLnNjc3Ygb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsLmgKKy0tLSBvcGVuc3NsLTEu MC4wLWJldGE0L3NzbC9zc2wuaC5zY3N2CTIwMTAtMDEtMDcgMjM6Mzc6MzkuMDAwMDAwMDAwICsw MTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsLmgJMjAxMC0wMS0wNyAyMzozNzoz OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC01MTEsNiArNTExLDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc3Ns X3Nlc3Npb25fc3QKKyAKKyAjZGVmaW5lIFNTTF9PUF9NSUNST1NPRlRfU0VTU19JRF9CVUcJCQkw eDAwMDAwMDAxTAorICNkZWZpbmUgU1NMX09QX05FVFNDQVBFX0NIQUxMRU5HRV9CVUcJCQkweDAw MDAwMDAyTAorKy8qIEFsbG93IGluaXRpYWwgY29ubmVjdGlvbiB0byBzZXJ2ZXJzIHRoYXQgZG9u J3Qgc3VwcG9ydCBSSSAqLworKyNkZWZpbmUgU1NMX09QX0xFR0FDWV9TRVJWRVJfQ09OTkVDVAkJ CTB4MDAwMDAwMDRMCisgI2RlZmluZSBTU0xfT1BfTkVUU0NBUEVfUkVVU0VfQ0lQSEVSX0NIQU5H RV9CVUcJCTB4MDAwMDAwMDhMIC8qIGNhbiBicmVhayBzb21lIHNlY3VyaXR5IGV4cGVjdGF0aW9u cyAqLworICNkZWZpbmUgU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVRwkJMHgwMDAw MDAxMEwKKyAjZGVmaW5lIFNTTF9PUF9NSUNST1NPRlRfQklHX1NTTFYzX0JVRkZFUgkJMHgwMDAw MDAyMEwKK0BAIC01MTgsNyArNTIwLDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3NsX3Nlc3Npb25fc3QK KyAjZGVmaW5lIFNTTF9PUF9TU0xFQVlfMDgwX0NMSUVOVF9ESF9CVUcJCQkweDAwMDAwMDgwTAor ICNkZWZpbmUgU1NMX09QX1RMU19ENV9CVUcJCQkJMHgwMDAwMDEwMEwKKyAjZGVmaW5lIFNTTF9P UF9UTFNfQkxPQ0tfUEFERElOR19CVUcJCQkweDAwMDAwMjAwTAorLSNkZWZpbmUgU1NMX09QX0FM TE9XX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTgkweDAwMDAwNDAwTAorIAorIC8qIERpc2Fi bGUgU1NMIDMuMC9UTFMgMS4wIENCQyB2dWxuZXJhYmlsaXR5IHdvcmthcm91bmQgdGhhdCB3YXMg YWRkZWQKKyAgKiBpbiBPcGVuU1NMIDAuOS42ZC4gIFVzdWFsbHkgKGRlcGVuZGluZyBvbiB0aGUg YXBwbGljYXRpb24gcHJvdG9jb2wpCitAQCAtNTQ0LDYgKzU0NSw4IEBAIHR5cGVkZWYgc3RydWN0 IHNzbF9zZXNzaW9uX3N0CisgI2RlZmluZSBTU0xfT1BfTk9fU0VTU0lPTl9SRVNVTVBUSU9OX09O X1JFTkVHT1RJQVRJT04JMHgwMDAxMDAwMEwKKyAvKiBEb24ndCB1c2UgY29tcHJlc3Npb24gZXZl biBpZiBzdXBwb3J0ZWQgKi8KKyAjZGVmaW5lIFNTTF9PUF9OT19DT01QUkVTU0lPTgkJCQkweDAw MDIwMDAwTAorKy8qIFBlcm1pdCB1bnNhZmUgbGVnYWN5IHJlbmVnb3RpYXRpb24gKi8KKysjZGVm aW5lIFNTTF9PUF9BTExPV19VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT04JMHgwMDA0MDAwMEwK KyAvKiBJZiBzZXQsIGFsd2F5cyBjcmVhdGUgYSBuZXcga2V5IHdoZW4gdXNpbmcgdG1wX2VjZGgg cGFyYW1ldGVycyAqLworICNkZWZpbmUgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQkJCQkweDAwMDgw MDAwTAorIC8qIElmIHNldCwgYWx3YXlzIGNyZWF0ZSBhIG5ldyBrZXkgd2hlbiB1c2luZyB0bXBf ZGggcGFyYW1ldGVycyAqLworQEAgLTU5OSwxNyArNjAyLDI1IEBAIHR5cGVkZWYgc3RydWN0IHNz bF9zZXNzaW9uX3N0CisgCisgI2RlZmluZSBTU0xfQ1RYX3NldF9vcHRpb25zKGN0eCxvcCkgXAor IAlTU0xfQ1RYX2N0cmwoKGN0eCksU1NMX0NUUkxfT1BUSU9OUywob3ApLE5VTEwpCisrI2RlZmlu ZSBTU0xfQ1RYX2NsZWFyX29wdGlvbnMoY3R4LG9wKSBcCisrCVNTTF9DVFhfY3RybCgoY3R4KSxT U0xfQ1RSTF9DTEVBUl9PUFRJT05TLChvcCksTlVMTCkKKyAjZGVmaW5lIFNTTF9DVFhfZ2V0X29w dGlvbnMoY3R4KSBcCisgCVNTTF9DVFhfY3RybCgoY3R4KSxTU0xfQ1RSTF9PUFRJT05TLDAsTlVM TCkKKyAjZGVmaW5lIFNTTF9zZXRfb3B0aW9ucyhzc2wsb3ApIFwKKyAJU1NMX2N0cmwoKHNzbCks U1NMX0NUUkxfT1BUSU9OUywob3ApLE5VTEwpCisrI2RlZmluZSBTU0xfY2xlYXJfb3B0aW9ucyhz c2wsb3ApIFwKKysJU1NMX2N0cmwoKHNzbCksU1NMX0NUUkxfQ0xFQVJfT1BUSU9OUywob3ApLE5V TEwpCisgI2RlZmluZSBTU0xfZ2V0X29wdGlvbnMoc3NsKSBcCisgICAgICAgICBTU0xfY3RybCgo c3NsKSxTU0xfQ1RSTF9PUFRJT05TLDAsTlVMTCkKKyAKKyAjZGVmaW5lIFNTTF9DVFhfc2V0X21v ZGUoY3R4LG9wKSBcCisgCVNTTF9DVFhfY3RybCgoY3R4KSxTU0xfQ1RSTF9NT0RFLChvcCksTlVM TCkKKysjZGVmaW5lIFNTTF9DVFhfY2xlYXJfbW9kZShjdHgsb3ApIFwKKysJU1NMX0NUWF9jdHJs KChjdHgpLFNTTF9DVFJMX0NMRUFSX01PREUsKG9wKSxOVUxMKQorICNkZWZpbmUgU1NMX0NUWF9n ZXRfbW9kZShjdHgpIFwKKyAJU1NMX0NUWF9jdHJsKChjdHgpLFNTTF9DVFJMX01PREUsMCxOVUxM KQorKyNkZWZpbmUgU1NMX2NsZWFyX21vZGUoc3NsLG9wKSBcCisrCVNTTF9jdHJsKChzc2wpLFNT TF9DVFJMX0NMRUFSX01PREUsKG9wKSxOVUxMKQorICNkZWZpbmUgU1NMX3NldF9tb2RlKHNzbCxv cCkgXAorIAlTU0xfY3RybCgoc3NsKSxTU0xfQ1RSTF9NT0RFLChvcCksTlVMTCkKKyAjZGVmaW5l IFNTTF9nZXRfbW9kZShzc2wpIFwKK0BAIC02MTcsNiArNjI4LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg c3NsX3Nlc3Npb25fc3QKKyAjZGVmaW5lIFNTTF9zZXRfbXR1KHNzbCwgbXR1KSBcCisgICAgICAg ICBTU0xfY3RybCgoc3NsKSxTU0xfQ1RSTF9TRVRfTVRVLChtdHUpLE5VTEwpCisgCisrI2RlZmlu ZSBTU0xfZ2V0X3NlY3VyZV9yZW5lZ290aWF0aW9uX3N1cHBvcnQoc3NsKSBcCisrCVNTTF9jdHJs KChzc2wpLCBTU0xfQ1RSTF9HRVRfUklfU1VQUE9SVCwgMCwgTlVMTCkKKyAKKyB2b2lkIFNTTF9D VFhfc2V0X21zZ19jYWxsYmFjayhTU0xfQ1RYICpjdHgsIHZvaWQgKCpjYikoaW50IHdyaXRlX3As IGludCB2ZXJzaW9uLCBpbnQgY29udGVudF90eXBlLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBs ZW4sIFNTTCAqc3NsLCB2b2lkICphcmcpKTsKKyB2b2lkIFNTTF9zZXRfbXNnX2NhbGxiYWNrKFNT TCAqc3NsLCB2b2lkICgqY2IpKGludCB3cml0ZV9wLCBpbnQgdmVyc2lvbiwgaW50IGNvbnRlbnRf dHlwZSwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBTU0wgKnNzbCwgdm9pZCAqYXJnKSk7 CitAQCAtMTM4OSw2ICsxNDAyLDEwIEBAIERFQ0xBUkVfUEVNX3J3KFNTTF9TRVNTSU9OLCBTU0xf U0VTU0lPTikKKyAjZGVmaW5lIERUTFNfQ1RSTF9IQU5ETEVfVElNRU9VVAk3NAorICNkZWZpbmUg RFRMU19DVFJMX0xJU1RFTgkJCTc1CisgCisrI2RlZmluZSBTU0xfQ1RSTF9HRVRfUklfU1VQUE9S VAkJCTc2CisrI2RlZmluZSBTU0xfQ1RSTF9DTEVBUl9PUFRJT05TCQkJNzcKKysjZGVmaW5lIFNT TF9DVFJMX0NMRUFSX01PREUJCQk3OAorKworICNkZWZpbmUgRFRMU3YxX2dldF90aW1lb3V0KHNz bCwgYXJnKSBcCisgCVNTTF9jdHJsKHNzbCxEVExTX0NUUkxfR0VUX1RJTUVPVVQsMCwgKHZvaWQg KilhcmcpCisgI2RlZmluZSBEVExTdjFfaGFuZGxlX3RpbWVvdXQoc3NsKSBcCitAQCAtMjExOSw2 ICsyMTM2LDcgQEAgdm9pZCBFUlJfbG9hZF9TU0xfc3RyaW5ncyh2b2lkKTsKKyAjZGVmaW5lIFNT TF9SX05PX1BSSVZBVEVfS0VZX0FTU0lHTkVECQkJIDE5MAorICNkZWZpbmUgU1NMX1JfTk9fUFJP VE9DT0xTX0FWQUlMQUJMRQkJCSAxOTEKKyAjZGVmaW5lIFNTTF9SX05PX1BVQkxJQ0tFWQkJCQkg MTkyCisrI2RlZmluZSBTU0xfUl9OT19SRU5FR09USUFUSU9OCQkJCSAzMzkKKyAjZGVmaW5lIFNT TF9SX05PX1JFUVVJUkVEX0RJR0VTVAkJCSAzMjQKKyAjZGVmaW5lIFNTTF9SX05PX1NIQVJFRF9D SVBIRVIJCQkJIDE5MworICNkZWZpbmUgU1NMX1JfTk9fVkVSSUZZX0NBTExCQUNLCQkJIDE5NAor QEAgLTIxNTgsNiArMjE3Niw3IEBAIHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7Cisg I2RlZmluZSBTU0xfUl9SRVVTRV9DRVJUX0xFTkdUSF9OT1RfWkVSTwkJIDIxNgorICNkZWZpbmUg U1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPCQkJIDIxNworICNkZWZpbmUgU1NMX1JfUkVV U0VfQ0lQSEVSX0xJU1RfTk9UX1pFUk8JCSAyMTgKKysjZGVmaW5lIFNTTF9SX1NDU1ZfUkVDRUlW RURfV0hFTl9SRU5FR09USUFUSU5HCQkgMzQ1CisgI2RlZmluZSBTU0xfUl9TRVJWRVJIRUxMT19U TFNFWFQJCQkgMjc1CisgI2RlZmluZSBTU0xfUl9TRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFM SVpFRAkJIDI3NworICNkZWZpbmUgU1NMX1JfU0hPUlRfUkVBRAkJCQkgMjE5CitkaWZmIC11cCBv cGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zc2xfbGliLmMuc2NzdiBvcGVuc3NsLTEuMC4wLWJldGE0 L3NzbC9zc2xfbGliLmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zc2xfbGliLmMuc2Nz dgkyMDEwLTAxLTA3IDIzOjM3OjM5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAt YmV0YTQvc3NsL3NzbF9saWIuYwkyMDEwLTAxLTA3IDIzOjM4OjA4LjAwMDAwMDAwMCArMDEwMAor QEAgLTEwNDEsOCArMTA0MSwxMiBAQCBsb25nIFNTTF9jdHJsKFNTTCAqcyxpbnQgY21kLGxvbmcg bGFyZyx2CisgCisgCWNhc2UgU1NMX0NUUkxfT1BUSU9OUzoKKyAJCXJldHVybihzLT5vcHRpb25z fD1sYXJnKTsKKysJY2FzZSBTU0xfQ1RSTF9DTEVBUl9PUFRJT05TOgorKwkJcmV0dXJuKHMtPm9w dGlvbnMmPX5sYXJnKTsKKyAJY2FzZSBTU0xfQ1RSTF9NT0RFOgorIAkJcmV0dXJuKHMtPm1vZGV8 PWxhcmcpOworKwljYXNlIFNTTF9DVFJMX0NMRUFSX01PREU6CisrCQlyZXR1cm4ocy0+bW9kZSAm PX5sYXJnKTsKKyAJY2FzZSBTU0xfQ1RSTF9HRVRfTUFYX0NFUlRfTElTVDoKKyAJCXJldHVybihz LT5tYXhfY2VydF9saXN0KTsKKyAJY2FzZSBTU0xfQ1RSTF9TRVRfTUFYX0NFUlRfTElTVDoKK0BA IC0xMDYyLDYgKzEwNjYsMTAgQEAgbG9uZyBTU0xfY3RybChTU0wgKnMsaW50IGNtZCxsb25nIGxh cmcsdgorIAkJCXJldHVybiAwOworIAkJcy0+bWF4X3NlbmRfZnJhZ21lbnQgPSBsYXJnOworIAkJ cmV0dXJuIDE7CisrCWNhc2UgU1NMX0NUUkxfR0VUX1JJX1NVUFBPUlQ6CisrCQlpZiAocy0+czMp CisrCQkJcmV0dXJuIHMtPnMzLT5zZW5kX2Nvbm5lY3Rpb25fYmluZGluZzsKKysJCWVsc2UgcmV0 dXJuIDA7CisgCWRlZmF1bHQ6CisgCQlyZXR1cm4ocy0+bWV0aG9kLT5zc2xfY3RybChzLGNtZCxs YXJnLHBhcmcpKTsKKyAJCX0KK0BAIC0xMTQ4LDggKzExNTYsMTIgQEAgbG9uZyBTU0xfQ1RYX2N0 cmwoU1NMX0NUWCAqY3R4LGludCBjbWQsbAorIAkJcmV0dXJuKGN0eC0+c3RhdHMuc2Vzc19jYWNo ZV9mdWxsKTsKKyAJY2FzZSBTU0xfQ1RSTF9PUFRJT05TOgorIAkJcmV0dXJuKGN0eC0+b3B0aW9u c3w9bGFyZyk7CisrCWNhc2UgU1NMX0NUUkxfQ0xFQVJfT1BUSU9OUzoKKysJCXJldHVybihjdHgt Pm9wdGlvbnMmPX5sYXJnKTsKKyAJY2FzZSBTU0xfQ1RSTF9NT0RFOgorIAkJcmV0dXJuKGN0eC0+ bW9kZXw9bGFyZyk7CisrCWNhc2UgU1NMX0NUUkxfQ0xFQVJfTU9ERToKKysJCXJldHVybihjdHgt Pm1vZGUmPX5sYXJnKTsKKyAJY2FzZSBTU0xfQ1RSTF9TRVRfTUFYX1NFTkRfRlJBR01FTlQ6Cisg CQlpZiAobGFyZyA8IDUxMiB8fCBsYXJnID4gU1NMM19SVF9NQVhfUExBSU5fTEVOR1RIKQorIAkJ CXJldHVybiAwOworQEAgLTEzNTcsNiArMTM2OSwyMiBAQCBpbnQgc3NsX2NpcGhlcl9saXN0X3Rv X2J5dGVzKFNTTCAqcyxTVEFDCisgCQlqID0gcHV0X2NiID8gcHV0X2NiKGMscCkgOiBzc2xfcHV0 X2NpcGhlcl9ieV9jaGFyKHMsYyxwKTsKKyAJCXArPWo7CisgCQl9CisrCS8qIElmIHAgPT0gcSwg bm8gY2lwaGVycyBhbmQgY2FsbGVyIGluZGljYXRlcyBhbiBlcnJvci4gT3RoZXJ3aXNlCisrCSAq IGFkZCBTQ1NWIGlmIG5vdCByZW5lZ290aWF0aW5nLgorKwkgKi8KKysJaWYgKHAgIT0gcSAmJiAh cy0+bmV3X3Nlc3Npb24pCisrCQl7CisrCQlzdGF0aWMgU1NMX0NJUEhFUiBzY3N2ID0KKysJCQl7 CisrCQkJMCwgTlVMTCwgU1NMM19DS19TQ1NWLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCisr CQkJfTsKKysJCWogPSBwdXRfY2IgPyBwdXRfY2IoJnNjc3YscCkgOiBzc2xfcHV0X2NpcGhlcl9i eV9jaGFyKHMsJnNjc3YscCk7CisrCQlwKz1qOworKyNpZmRlZiBPUEVOU1NMX1JJX0RFQlVHCisr CQlmcHJpbnRmKHN0ZGVyciwgIlNDU1Ygc2VudCBieSBjbGllbnRcbiIpOworKyNlbmRpZgorKwkJ fQorKworIAlyZXR1cm4ocC1xKTsKKyAJfQorIAorQEAgLTEzNjYsNiArMTM5NCw4IEBAIFNUQUNL X09GKFNTTF9DSVBIRVIpICpzc2xfYnl0ZXNfdG9fY2lwaGUKKyAJY29uc3QgU1NMX0NJUEhFUiAq YzsKKyAJU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNrOworIAlpbnQgaSxuOworKwlpZiAocy0+czMp CisrCQlzLT5zMy0+c2VuZF9jb25uZWN0aW9uX2JpbmRpbmcgPSAwOworIAorIAluPXNzbF9wdXRf Y2lwaGVyX2J5X2NoYXIocyxOVUxMLE5VTEwpOworIAlpZiAoKG51bSVuKSAhPSAwKQorQEAgLTEz ODMsNiArMTQxMywyNiBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2J5dGVzX3RvX2NpcGhl CisgCisgCWZvciAoaT0wOyBpPG51bTsgaSs9bikKKyAJCXsKKysJCS8qIENoZWNrIGZvciBTQ1NW ICovCisrCQlpZiAocy0+czMgJiYgKG4gIT0gMyB8fCAhcFswXSkgJiYKKysJCQkocFtuLTJdID09 ICgoU1NMM19DS19TQ1NWID4+IDgpICYgMHhmZikpICYmCisrCQkJKHBbbi0xXSA9PSAoU1NMM19D S19TQ1NWICYgMHhmZikpKQorKwkJCXsKKysJCQkvKiBTQ1NWIGZhdGFsIGlmIHJlbmVnb3RpYXRp bmcgKi8KKysJCQlpZiAocy0+bmV3X3Nlc3Npb24pCisrCQkJCXsKKysJCQkJU1NMZXJyKFNTTF9G X1NTTF9CWVRFU19UT19DSVBIRVJfTElTVCxTU0xfUl9TQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdP VElBVElORyk7CisrCQkJCXNzbDNfc2VuZF9hbGVydChzLFNTTDNfQUxfRkFUQUwsU1NMX0FEX0hB TkRTSEFLRV9GQUlMVVJFKTsgCisrCQkJCWdvdG8gZXJyOworKwkJCQl9CisrCQkJcy0+czMtPnNl bmRfY29ubmVjdGlvbl9iaW5kaW5nID0gMTsKKysJCQlwICs9IG47CisrI2lmZGVmIE9QRU5TU0xf UklfREVCVUcKKysJCQlmcHJpbnRmKHN0ZGVyciwgIlNDU1YgcmVjZWl2ZWQgYnkgc2VydmVyXG4i KTsKKysjZW5kaWYKKysJCQljb250aW51ZTsKKysJCQl9CisrCisgCQljPXNzbF9nZXRfY2lwaGVy X2J5X2NoYXIocyxwKTsKKyAJCXArPW47CisgCQlpZiAoYyAhPSBOVUxMKQorQEAgLTE2NDIsNiAr MTY5MiwxMCBAQCBTU0xfQ1RYICpTU0xfQ1RYX25ldyhjb25zdCBTU0xfTUVUSE9EICptCisgCX0K KyAjZW5kaWYKKyAjZW5kaWYKKysJLyogRGVmYXVsdCBpcyB0byBjb25uZWN0IHRvIG5vbi1SSSBz ZXJ2ZXJzLiBXaGVuIFJJIGlzIG1vcmUgd2lkZWx5CisrCSAqIGRlcGxveWVkIG1pZ2h0IGNoYW5n ZSB0aGlzLgorKwkgKi8KKysJcmV0LT5vcHRpb25zID0gU1NMX09QX0xFR0FDWV9TRVJWRVJfQ09O TkVDVDsKKyAKKyAJcmV0dXJuKHJldCk7CisgZXJyOgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1i ZXRhNC9zc2wvc3NsMy5oLnNjc3Ygb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsMy5oCistLS0g b3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsMy5oLnNjc3YJMjAxMC0wMS0wNyAyMzozNzozOC4w MDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zc2wzLmgJMjAxMC0w MS0wNyAyMzozNzozOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjgsNiArMTI4LDkgQEAKKyBleHRl cm4gIkMiIHsKKyAjZW5kaWYKKyAKKysvKiBTaWduYWxsaW5nIGNpcGhlciBzdWl0ZSB2YWx1ZTog ZnJvbSBkcmFmdC1pZXRmLXRscy1yZW5lZ290aWF0aW9uLTAzLnR4dCAqLworKyNkZWZpbmUgU1NM M19DS19TQ1NWCQkJCTB4MDMwMDAwRkYKKysKKyAjZGVmaW5lIFNTTDNfQ0tfUlNBX05VTExfTUQ1 CQkJMHgwMzAwMDAwMQorICNkZWZpbmUgU1NMM19DS19SU0FfTlVMTF9TSEEJCQkweDAzMDAwMDAy CisgI2RlZmluZSBTU0wzX0NLX1JTQV9SQzRfNDBfTUQ1IAkJCTB4MDMwMDAwMDMKK2RpZmYgLXVw IG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3MzX2NsbnQuYy5zY3N2IG9wZW5zc2wtMS4wLjAtYmV0 YTQvc3NsL3MzX2NsbnQuYworLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3MzX2NsbnQuYy5z Y3N2CTIwMTAtMDEtMDcgMjM6Mzc6MzkuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAu MC1iZXRhNC9zc2wvczNfY2xudC5jCTIwMTAtMDEtMDcgMjM6Mzc6MzkuMDAwMDAwMDAwICswMTAw CitAQCAtOTE2LDcgKzkxNiw3IEBAIGludCBzc2wzX2dldF9zZXJ2ZXJfaGVsbG8oU1NMICpzKQor IAorICNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKyAJLyogVExTIGV4dGVuc2lvbnMqLworLQlp ZiAocy0+dmVyc2lvbiA+IFNTTDNfVkVSU0lPTikKKysJaWYgKHMtPnZlcnNpb24gPj0gU1NMM19W RVJTSU9OKQorIAkJeworIAkJaWYgKCFzc2xfcGFyc2Vfc2VydmVyaGVsbG9fdGxzZXh0KHMsJnAs ZCxuLCAmYWwpKQorIAkJCXsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3MzX3Br dC5jLnNjc3Ygb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvczNfcGt0LmMKKy0tLSBvcGVuc3NsLTEu MC4wLWJldGE0L3NzbC9zM19wa3QuYy5zY3N2CTIwMDktMDctMTQgMTc6Mjg6NDQuMDAwMDAwMDAw ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvczNfcGt0LmMJMjAxMC0wMS0wNyAy MzozNzozOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMTIwLDcgKzExMjAsMjUgQEAgc3RhcnQ6Cisg CQkgKiBub3cgdHJ5IGFnYWluIHRvIG9idGFpbiB0aGUgKGFwcGxpY2F0aW9uKSBkYXRhIHdlIHdl cmUgYXNrZWQgZm9yICovCisgCQlnb3RvIHN0YXJ0OworIAkJfQorLQorKwkvKiBJZiB3ZSBhcmUg YSBzZXJ2ZXIgYW5kIGdldCBhIGNsaWVudCBoZWxsbyB3aGVuIHJlbmVnb3RpYXRpb24gaXNuJ3QK KysJICogYWxsb3dlZCBzZW5kIGJhY2sgYSBubyByZW5lZ290aWF0aW9uIGFsZXJ0IGFuZCBjYXJy eSBvbi4KKysJICogV0FSTklORzogZXhwZXJpbWVudGFsIGNvZGUsIG5lZWRzIHJldmlld2luZyAo c3RldmUpCisrCSAqLworKwlpZiAocy0+c2VydmVyICYmCisrCQlTU0xfaXNfaW5pdF9maW5pc2hl ZChzKSAmJgorKyAgICAJCSFzLT5zMy0+c2VuZF9jb25uZWN0aW9uX2JpbmRpbmcgJiYKKysJCShz LT52ZXJzaW9uID4gU1NMM19WRVJTSU9OKSAmJgorKwkJKHMtPnMzLT5oYW5kc2hha2VfZnJhZ21l bnRfbGVuID49IDQpICYmCisrCQkocy0+czMtPmhhbmRzaGFrZV9mcmFnbWVudFswXSA9PSBTU0wz X01UX0NMSUVOVF9IRUxMTykgJiYKKysJCShzLT5zZXNzaW9uICE9IE5VTEwpICYmIChzLT5zZXNz aW9uLT5jaXBoZXIgIT0gTlVMTCkgJiYKKysJCSEocy0+Y3R4LT5vcHRpb25zICYgU1NMX09QX0FM TE9XX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTikpCisrCQkKKysJCXsKKysJCS8qcy0+czMt PmhhbmRzaGFrZV9mcmFnbWVudF9sZW4gPSAwOyovCisrCQlyci0+bGVuZ3RoID0gMDsKKysJCXNz bDNfc2VuZF9hbGVydChzLFNTTDNfQUxfV0FSTklORywgU1NMX0FEX05PX1JFTkVHT1RJQVRJT04p OworKwkJZ290byBzdGFydDsKKysJCX0KKyAJaWYgKHMtPnMzLT5hbGVydF9mcmFnbWVudF9sZW4g Pj0gMikKKyAJCXsKKyAJCWludCBhbGVydF9sZXZlbCA9IHMtPnMzLT5hbGVydF9mcmFnbWVudFsw XTsKK0BAIC0xMTUwLDYgKzExNjgsMjEgQEAgc3RhcnQ6CisgCQkJCXMtPnNodXRkb3duIHw9IFNT TF9SRUNFSVZFRF9TSFVURE9XTjsKKyAJCQkJcmV0dXJuKDApOworIAkJCQl9CisrCQkJLyogVGhp cyBpcyBhIHdhcm5pbmcgYnV0IHdlIHJlY2VpdmUgaXQgaWYgd2UgcmVxdWVzdGVkCisrCQkJICog cmVuZWdvdGlhdGlvbiBhbmQgdGhlIHBlZXIgZGVuaWVkIGl0LiBUZXJtaW5hdGUgd2l0aAorKwkJ CSAqIGEgZmF0YWwgYWxlcnQgYmVjYXVzZSBpZiBhcHBsaWNhdGlvbiB0cmllZCB0bworKwkJCSAq IHJlbmVnb3RpYXRpZSBpdCBwcmVzdW1hYmx5IGhhZCBhIGdvb2QgcmVhc29uIGFuZAorKwkJCSAq IGV4cGVjdHMgaXQgdG8gc3VjY2VlZC4KKysJCQkgKgorKwkJCSAqIEluIGZ1dHVyZSB3ZSBtaWdo dCBoYXZlIGEgcmVuZWdvdGlhdGlvbiB3aGVyZSB3ZQorKwkJCSAqIGRvbid0IGNhcmUgaWYgdGhl IHBlZXIgcmVmdXNlZCBpdCB3aGVyZSB3ZSBjYXJyeSBvbi4KKysJCQkgKi8KKysJCQllbHNlIGlm IChhbGVydF9kZXNjciA9PSBTU0xfQURfTk9fUkVORUdPVElBVElPTikKKysJCQkJeworKwkJCQlh bCA9IFNTTF9BRF9IQU5EU0hBS0VfRkFJTFVSRTsKKysJCQkJU1NMZXJyKFNTTF9GX1NTTDNfUkVB RF9CWVRFUyxTU0xfUl9OT19SRU5FR09USUFUSU9OKTsKKysJCQkJZ290byBmX2VycjsKKysJCQkJ fQorIAkJCX0KKyAJCWVsc2UgaWYgKGFsZXJ0X2xldmVsID09IDIpIC8qIGZhdGFsICovCisgCQkJ eworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvczNfc3J2ci5jLnNjc3Ygb3BlbnNz bC0xLjAuMC1iZXRhNC9zc2wvczNfc3J2ci5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wv czNfc3J2ci5jLnNjc3YJMjAxMC0wMS0wNyAyMzozNzozOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBv cGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zM19zcnZyLmMJMjAxMC0wMS0wNyAyMzozNzozOS4wMDAw MDAwMDAgKzAxMDAKK0BAIC0xMDE1LDcgKzEwMTUsNyBAQCBpbnQgc3NsM19nZXRfY2xpZW50X2hl bGxvKFNTTCAqcykKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisgCS8qIFRMUyBleHRl bnNpb25zKi8KKy0JaWYgKHMtPnZlcnNpb24gPiBTU0wzX1ZFUlNJT04pCisrCWlmIChzLT52ZXJz aW9uID49IFNTTDNfVkVSU0lPTikKKyAJCXsKKyAJCWlmICghc3NsX3BhcnNlX2NsaWVudGhlbGxv X3Rsc2V4dChzLCZwLGQsbiwgJmFsKSkKKyAJCQl7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJl dGE0L3NzbC90MV9saWIuYy5zY3N2IG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3QxX2xpYi5jCist LS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvdDFfbGliLmMuc2NzdgkyMDEwLTAxLTA3IDIzOjM3 OjM5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3QxX2xpYi5j CTIwMTAtMDEtMDcgMjM6Mzg6MDguMDAwMDAwMDAwICswMTAwCitAQCAtMjc1LDggKzI3NSw5IEBA IHVuc2lnbmVkIGNoYXIgKnNzbF9hZGRfY2xpZW50aGVsbG9fdGxzZXgKKyAJaW50IGV4dGRhdGFs ZW49MDsKKyAJdW5zaWduZWQgY2hhciAqcmV0ID0gcDsKKyAKKy0JLyogZG9uJ3QgYWRkIGV4dGVu c2lvbnMgZm9yIFNTTHYzICovCistCWlmIChzLT5jbGllbnRfdmVyc2lvbiA9PSBTU0wzX1ZFUlNJ T04pCisrCS8qIGRvbid0IGFkZCBleHRlbnNpb25zIGZvciBTU0x2MyB1bmxlc3MgZG9pbmcgc2Vj dXJlIHJlbmVnb3RpYXRpb24gKi8KKysJaWYgKHMtPmNsaWVudF92ZXJzaW9uID09IFNTTDNfVkVS U0lPTgorKwkJCQkJJiYgIXMtPnMzLT5zZW5kX2Nvbm5lY3Rpb25fYmluZGluZykKKyAJCXJldHVy biBwOworIAorIAlyZXQrPTI7CitAQCAtMzE1LDggKzMxNiw5IEBAIHVuc2lnbmVkIGNoYXIgKnNz bF9hZGRfY2xpZW50aGVsbG9fdGxzZXgKKyAJCXJldCs9c2l6ZV9zdHI7CisgCQl9CisgCistICAg ICAgICAvKiBBZGQgdGhlIHJlbmVnb3RpYXRpb24gb3B0aW9uOiBUT0RPRUtSIHN3aXRjaCAqLwor LSAgICAgICAgeworKyAgICAgICAgLyogQWRkIFJJIGlmIHJlbmVnb3RpYXRpbmcgKi8KKysgICAg ICAgIGlmIChzLT5uZXdfc2Vzc2lvbikKKysgICAgICAgICAgeworICAgICAgICAgICBpbnQgZWw7 CisgICAgICAgICAgIAorICAgICAgICAgICBpZighc3NsX2FkZF9jbGllbnRoZWxsb19yZW5lZ290 aWF0ZV9leHQocywgMCwgJmVsLCAwKSkKK0BAIC01MDQsOCArNTA2LDggQEAgdW5zaWduZWQgY2hh ciAqc3NsX2FkZF9zZXJ2ZXJoZWxsb190bHNleAorIAlpbnQgZXh0ZGF0YWxlbj0wOworIAl1bnNp Z25lZCBjaGFyICpyZXQgPSBwOworIAorLQkvKiBkb24ndCBhZGQgZXh0ZW5zaW9ucyBmb3IgU1NM djMgKi8KKy0JaWYgKHMtPnZlcnNpb24gPT0gU1NMM19WRVJTSU9OKQorKwkvKiBkb24ndCBhZGQg ZXh0ZW5zaW9ucyBmb3IgU1NMdjMsIHVubGVzcyBkb2luZyBzZWN1cmUgcmVuZWdvdGlhdGlvbiAq LworKwlpZiAocy0+dmVyc2lvbiA9PSBTU0wzX1ZFUlNJT04gJiYgIXMtPnMzLT5zZW5kX2Nvbm5l Y3Rpb25fYmluZGluZykKKyAJCXJldHVybiBwOworIAkKKyAJcmV0Kz0yOworQEAgLTYzMywyNCAr NjM1LDEzIEBAIGludCBzc2xfcGFyc2VfY2xpZW50aGVsbG9fdGxzZXh0KFNTTCAqcywKKyAKKyAJ cy0+c2VydmVybmFtZV9kb25lID0gMDsKKyAJcy0+dGxzZXh0X3N0YXR1c190eXBlID0gLTE7Cist CXMtPnMzLT5zZW5kX2Nvbm5lY3Rpb25fYmluZGluZyA9IDA7CisgCisgCWlmIChkYXRhID49IChk K24tMikpCistCQl7CistCQlpZiAocy0+bmV3X3Nlc3Npb24KKy0JCQkmJiAhKHMtPmN0eC0+b3B0 aW9ucyAmIFNTTF9PUF9BTExPV19VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT04pKQorLQkJCXsK Ky0JCQkvKiBXZSBzaG91bGQgYWx3YXlzIHNlZSBvbmUgZXh0ZW5zaW9uOiB0aGUgcmVuZWdvdGlh dGUgZXh0ZW5zaW9uICovCistCQkJKmFsID0gU1NMX0FEX0lMTEVHQUxfUEFSQU1FVEVSOyAvKiBp cyB0aGlzIHRoZSByaWdodCBhbGVydD8gKi8KKy0JCQlTU0xlcnIoU1NMX0ZfU1NMX1BBUlNFX0NM SUVOVEhFTExPX1RMU0VYVCwgU1NMX1JfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FC TEVEKTsKKy0JCQlyZXR1cm4gMDsKKy0JCQl9CistCQlyZXR1cm4gMTsKKy0JCX0KKysJCWdvdG8g cmlfY2hlY2s7CisgCW4ycyhkYXRhLGxlbik7CisgCisgCWlmIChkYXRhID4gKGQrbi1sZW4pKSAK Ky0JCXJldHVybiAxOworKwkJZ290byByaV9jaGVjazsKKyAKKyAJd2hpbGUgKGRhdGEgPD0gKGQr bi00KSkKKyAJCXsKK0BAIC02NTgsNyArNjQ5LDcgQEAgaW50IHNzbF9wYXJzZV9jbGllbnRoZWxs b190bHNleHQoU1NMICpzLAorIAkJbjJzKGRhdGEsc2l6ZSk7CisgCisgCQlpZiAoZGF0YStzaXpl ID4gKGQrbikpCistCSAgIAkJcmV0dXJuIDE7CisrCSAgIAkJZ290byByaV9jaGVjazsKKyAjaWYg MAorIAkJZnByaW50ZihzdGRlcnIsIlJlY2VpdmVkIGV4dGVuc2lvbiB0eXBlICVkIHNpemUgJWRc biIsdHlwZSxzaXplKTsKKyAjZW5kaWYKK0BAIC05NzEsMTcgKzk2MiwyMiBAQCBpbnQgc3NsX3Bh cnNlX2NsaWVudGhlbGxvX3Rsc2V4dChTU0wgKnMsCisgCQkvKiBzZXNzaW9uIHRpY2tldCBwcm9j ZXNzZWQgZWFybGllciAqLworIAkJZGF0YSs9c2l6ZTsKKyAJCX0KKy0gIAorLSAJaWYgKHMtPm5l d19zZXNzaW9uICYmICFyZW5lZ290aWF0ZV9zZWVuCistIAkJJiYgIShzLT5jdHgtPm9wdGlvbnMg JiBTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OKSkKKy0gCQl7CistCQlT U0xlcnIoU1NMX0ZfU1NMX1BBUlNFX0NMSUVOVEhFTExPX1RMU0VYVCwgU1NMX1JfVU5TQUZFX0xF R0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEKTsKKy0gCQkqYWwgPSBTU0xfQURfSUxMRUdBTF9Q QVJBTUVURVI7IC8qIGlzIHRoaXMgdGhlIHJpZ2h0IGFsZXJ0PyAqLworLSAJCXJldHVybiAwOwor LSAJCX0KKy0gCisgCQkJCQorIAkqcCA9IGRhdGE7CisrCisrCXJpX2NoZWNrOgorKworKwkvKiBO ZWVkIFJJIGlmIHJlbmVnb3RpYXRpbmcgKi8KKysKKysJaWYgKCFyZW5lZ290aWF0ZV9zZWVuICYm IHMtPm5ld19zZXNzaW9uICYmCisrCQkhKHMtPm9wdGlvbnMgJiBTU0xfT1BfQUxMT1dfVU5TQUZF X0xFR0FDWV9SRU5FR09USUFUSU9OKSkKKysJCXsKKysJCSphbCA9IFNTTF9BRF9IQU5EU0hBS0Vf RkFJTFVSRTsKKysJIAlTU0xlcnIoU1NMX0ZfU1NMX1BBUlNFX0NMSUVOVEhFTExPX1RMU0VYVCwK KysJCQkJU1NMX1JfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEKTsKKysJCXJl dHVybiAwOworKwkJfQorKworIAlyZXR1cm4gMTsKKyAJfQorIAorQEAgLTk5NSwyMSArOTkxLDcg QEAgaW50IHNzbF9wYXJzZV9zZXJ2ZXJoZWxsb190bHNleHQoU1NMICpzLAorIAlpbnQgcmVuZWdv dGlhdGVfc2VlbiA9IDA7CisgCisgCWlmIChkYXRhID49IChkK24tMikpCistCQl7CistI2lmIDAK Ky0JCS8qIEJlY2F1c2UgdGhlIGNsaWVudCBkb2VzIG5vdCBzZWUgYW55IHJlbmVnb3RpYXRpb24g ZHVyaW5nIGFuCistCQkgICBhdHRhY2ssIHdlIG11c3QgZW5mb3JjZSB0aGlzIG9uIGFsbCBzZXJ2 ZXIgaGVsbG9zLCBldmVuIHRoZQorLQkJICAgZmlyc3QgKi8KKy0JCWlmICghKHMtPmN0eC0+b3B0 aW9ucyAmIFNTTF9PUF9BTExPV19VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT04pKQorLQkJCXsK Ky0JCQkvKiBXZSBzaG91bGQgYWx3YXlzIHNlZSBvbmUgZXh0ZW5zaW9uOiB0aGUgcmVuZWdvdGlh dGUgZXh0ZW5zaW9uICovCistCQkJKmFsID0gU1NMX0FEX0lMTEVHQUxfUEFSQU1FVEVSOyAvKiBp cyB0aGlzIHRoZSByaWdodCBhbGVydD8gKi8KKy0JCQlTU0xlcnIoU1NMX0ZfU1NMX1BBUlNFX1NF UlZFUkhFTExPX1RMU0VYVCwgU1NMX1JfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FC TEVEKTsKKy0JCQlyZXR1cm4gMDsKKy0JCQl9CistI2VuZGlmCistCQlyZXR1cm4gMTsKKy0JCX0K KysJCWdvdG8gcmlfY2hlY2s7CisgCisgCW4ycyhkYXRhLGxlbik7CisgCitAQCAtMTAxOSw3ICsx MDAxLDcgQEAgaW50IHNzbF9wYXJzZV9zZXJ2ZXJoZWxsb190bHNleHQoU1NMICpzLAorIAkJbjJz KGRhdGEsc2l6ZSk7CisgCisgCQlpZiAoZGF0YStzaXplID4gKGQrbikpCistCSAgIAkJcmV0dXJu IDE7CisrCSAgIAkJZ290byByaV9jaGVjazsKKyAKKyAJCWlmIChzLT50bHNleHRfZGVidWdfY2Ip CisgCQkJcy0+dGxzZXh0X2RlYnVnX2NiKHMsIDEsIHR5cGUsIGRhdGEsIHNpemUsCitAQCAtMTE0 MywxNiArMTEyNSw2IEBAIGludCBzc2xfcGFyc2Vfc2VydmVyaGVsbG9fdGxzZXh0KFNTTCAqcywK KyAJCXJldHVybiAwOworIAkJfQorIAorLSNpZiAwCistCWlmICghcmVuZWdvdGlhdGVfc2Vlbgor LQkJJiYgIShzLT5jdHgtPm9wdGlvbnMgJiBTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5F R09USUFUSU9OKSkKKy0JCXsKKy0JCSphbCA9IFNTTF9BRF9JTExFR0FMX1BBUkFNRVRFUjsgLyog aXMgdGhpcyB0aGUgcmlnaHQgYWxlcnQ/ICovCistCQlTU0xlcnIoU1NMX0ZfU1NMX1BBUlNFX1NF UlZFUkhFTExPX1RMU0VYVCwgU1NMX1JfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FC TEVEKTsKKy0JCXJldHVybiAwOworLQkJfQorLSNlbmRpZgorLQorIAlpZiAoIXMtPmhpdCAmJiB0 bHNleHRfc2VydmVybmFtZSA9PSAxKQorIAkJeworICAJCWlmIChzLT50bHNleHRfaG9zdG5hbWUp CitAQCAtMTE3NSw2ICsxMTQ3LDI2IEBAIGludCBzc2xfcGFyc2Vfc2VydmVyaGVsbG9fdGxzZXh0 KFNTTCAqcywKKyAJCX0KKyAKKyAJKnAgPSBkYXRhOworKworKwlyaV9jaGVjazoKKysKKysJLyog RGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gc2VlIFJJLiBTdHJpY3RseSBzcGVha2luZyBpZiB3ZSB3 YW50IHRvCisrCSAqIGF2b2lkIGFuIGF0dGFjayB3ZSBzaG91bGQgKmFsd2F5cyogc2VlIFJJIGV2 ZW4gb24gaW5pdGlhbCBzZXJ2ZXIKKysJICogaGVsbG8gYmVjYXVzZSB0aGUgY2xpZW50IGRvZXNu J3Qgc2VlIGFueSByZW5lZ290aWF0aW9uIGR1cmluZyBhbgorKwkgKiBhdHRhY2suIEhvd2V2ZXIg dGhpcyB3b3VsZCBtZWFuIHdlIGNvdWxkIG5vdCBjb25uZWN0IHRvIGFueSBzZXJ2ZXIKKysJICog d2hpY2ggZG9lc24ndCBzdXBwb3J0IFJJIHNvIGZvciB0aGUgaW1tZWRpYXRlIGZ1dHVyZSB0b2xl cmF0ZSBSSQorKwkgKiBhYnNlbmNlIG9uIGluaXRpYWwgY29ubmVjdCBvbmx5LgorKwkgKi8KKysJ aWYgKCFyZW5lZ290aWF0ZV9zZWVuICYmIAorKwkJKHMtPm5ld19zZXNzaW9uIHx8ICEocy0+b3B0 aW9ucyAmIFNTTF9PUF9MRUdBQ1lfU0VSVkVSX0NPTk5FQ1QpKQorKwkJJiYgIShzLT5vcHRpb25z ICYgU1NMX09QX0FMTE9XX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTikpCisrCQl7CisrCQkq YWwgPSBTU0xfQURfSEFORFNIQUtFX0ZBSUxVUkU7CisrCQlTU0xlcnIoU1NMX0ZfU1NMX1BBUlNF X1NFUlZFUkhFTExPX1RMU0VYVCwKKysJCQkJU1NMX1JfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFU SU9OX0RJU0FCTEVEKTsKKysJCXJldHVybiAwOworKwkJfQorKworIAlyZXR1cm4gMTsKKyAJfQor IAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvdDFfcmVuZWcuYy5zY3N2IG9wZW5z c2wtMS4wLjAtYmV0YTQvc3NsL3QxX3JlbmVnLmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3Nz bC90MV9yZW5lZy5jLnNjc3YJMjAwOS0xMS0wOSAxOTo0NTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysr KyBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC90MV9yZW5lZy5jCTIwMTAtMDEtMDcgMjM6Mzc6Mzku MDAwMDAwMDAwICswMTAwCitAQCAtMTMwLDEwICsxMzAsMTUgQEAgaW50IHNzbF9hZGRfY2xpZW50 aGVsbG9fcmVuZWdvdGlhdGVfZXh0KAorIAorICAgICAgICAgbWVtY3B5KHAsIHMtPnMzLT5wcmV2 aW91c19jbGllbnRfZmluaXNoZWQsCisgCSAgICAgICBzLT5zMy0+cHJldmlvdXNfY2xpZW50X2Zp bmlzaGVkX2xlbik7CisrI2lmZGVmIE9QRU5TU0xfUklfREVCVUcKKysgICAgZnByaW50ZihzdGRl cnIsICIlcyBSSSBleHRlbnNpb24gc2VudCBieSBjbGllbnRcbiIsCisrCQlzLT5zMy0+cHJldmlv dXNfY2xpZW50X2ZpbmlzaGVkX2xlbiA/ICJOb24tZW1wdHkiIDogIkVtcHR5Iik7CisrI2VuZGlm CisgICAgICAgICB9CisgICAgIAorICAgICAqbGVuPXMtPnMzLT5wcmV2aW91c19jbGllbnRfZmlu aXNoZWRfbGVuICsgMTsKKy0gICAgCisrCisrIAorICAgICByZXR1cm4gMTsKKyAgICAgfQorIAor QEAgLTE2Niw3ICsxNzEsNyBAQCBpbnQgc3NsX3BhcnNlX2NsaWVudGhlbGxvX3JlbmVnb3RpYXRl X2V4CisgICAgIGlmKGlsZW4gIT0gcy0+czMtPnByZXZpb3VzX2NsaWVudF9maW5pc2hlZF9sZW4p CisgICAgICAgICB7CisgICAgICAgICBTU0xlcnIoU1NMX0ZfU1NMX1BBUlNFX0NMSUVOVEhFTExP X1JFTkVHT1RJQVRFX0VYVCxTU0xfUl9SRU5FR09USUFUSU9OX01JU01BVENIKTsKKy0gICAgICAg ICphbD1TU0xfQURfSUxMRUdBTF9QQVJBTUVURVI7CisrICAgICAgICAqYWw9U1NMX0FEX0hBTkRT SEFLRV9GQUlMVVJFOworICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICB9CisgICAgIAorQEAg LTE3NCw5ICsxNzksMTMgQEAgaW50IHNzbF9wYXJzZV9jbGllbnRoZWxsb19yZW5lZ290aWF0ZV9l eAorIAkgICAgICBzLT5zMy0+cHJldmlvdXNfY2xpZW50X2ZpbmlzaGVkX2xlbikpCisgICAgICAg ICB7CisgICAgICAgICBTU0xlcnIoU1NMX0ZfU1NMX1BBUlNFX0NMSUVOVEhFTExPX1JFTkVHT1RJ QVRFX0VYVCxTU0xfUl9SRU5FR09USUFUSU9OX01JU01BVENIKTsKKy0gICAgICAgICphbD1TU0xf QURfSUxMRUdBTF9QQVJBTUVURVI7CisrICAgICAgICAqYWw9U1NMX0FEX0hBTkRTSEFLRV9GQUlM VVJFOworICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICB9CisrI2lmZGVmIE9QRU5TU0xfUklf REVCVUcKKysgICAgZnByaW50ZihzdGRlcnIsICIlcyBSSSBleHRlbnNpb24gcmVjZWl2ZWQgYnkg c2VydmVyXG4iLAorKwkJCQlpbGVuID8gIk5vbi1lbXB0eSIgOiAiRW1wdHkiKTsKKysjZW5kaWYK KyAKKyAgICAgcy0+czMtPnNlbmRfY29ubmVjdGlvbl9iaW5kaW5nPTE7CisgCitAQCAtMjA2LDYg KzIxNSwxMCBAQCBpbnQgc3NsX2FkZF9zZXJ2ZXJoZWxsb19yZW5lZ290aWF0ZV9leHQoCisgCisg ICAgICAgICBtZW1jcHkocCwgcy0+czMtPnByZXZpb3VzX3NlcnZlcl9maW5pc2hlZCwKKyAJICAg ICAgIHMtPnMzLT5wcmV2aW91c19zZXJ2ZXJfZmluaXNoZWRfbGVuKTsKKysjaWZkZWYgT1BFTlNT TF9SSV9ERUJVRworKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIFJJIGV4dGVuc2lvbiBzZW50IGJ5 IHNlcnZlclxuIiwKKysgICAgCQlzLT5zMy0+cHJldmlvdXNfY2xpZW50X2ZpbmlzaGVkX2xlbiA/ ICJOb24tZW1wdHkiIDogIkVtcHR5Iik7CisrI2VuZGlmCisgICAgICAgICB9CisgICAgIAorICAg ICAqbGVuPXMtPnMzLT5wcmV2aW91c19jbGllbnRfZmluaXNoZWRfbGVuCitAQCAtMjQ5LDcgKzI2 Miw3IEBAIGludCBzc2xfcGFyc2Vfc2VydmVyaGVsbG9fcmVuZWdvdGlhdGVfZXgKKyAgICAgaWYo aWxlbiAhPSBleHBlY3RlZF9sZW4pCisgICAgICAgICB7CisgICAgICAgICBTU0xlcnIoU1NMX0Zf U1NMX1BBUlNFX1NFUlZFUkhFTExPX1JFTkVHT1RJQVRFX0VYVCxTU0xfUl9SRU5FR09USUFUSU9O X01JU01BVENIKTsKKy0gICAgICAgICphbD1TU0xfQURfSUxMRUdBTF9QQVJBTUVURVI7CisrICAg ICAgICAqYWw9U1NMX0FEX0hBTkRTSEFLRV9GQUlMVVJFOworICAgICAgICAgcmV0dXJuIDA7Cisg ICAgICAgICB9CisgCitAQCAtMjU3LDcgKzI3MCw3IEBAIGludCBzc2xfcGFyc2Vfc2VydmVyaGVs bG9fcmVuZWdvdGlhdGVfZXgKKyAJICAgICAgcy0+czMtPnByZXZpb3VzX2NsaWVudF9maW5pc2hl ZF9sZW4pKQorICAgICAgICAgeworICAgICAgICAgU1NMZXJyKFNTTF9GX1NTTF9QQVJTRV9TRVJW RVJIRUxMT19SRU5FR09USUFURV9FWFQsU1NMX1JfUkVORUdPVElBVElPTl9NSVNNQVRDSCk7Cist ICAgICAgICAqYWw9U1NMX0FEX0lMTEVHQUxfUEFSQU1FVEVSOworKyAgICAgICAgKmFsPVNTTF9B RF9IQU5EU0hBS0VfRkFJTFVSRTsKKyAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorICAg ICBkICs9IHMtPnMzLT5wcmV2aW91c19jbGllbnRfZmluaXNoZWRfbGVuOworQEAgLTI2OSw2ICsy ODIsMTEgQEAgaW50IHNzbF9wYXJzZV9zZXJ2ZXJoZWxsb19yZW5lZ290aWF0ZV9leAorICAgICAg ICAgKmFsPVNTTF9BRF9JTExFR0FMX1BBUkFNRVRFUjsKKyAgICAgICAgIHJldHVybiAwOworICAg ICAgICAgfQorKyNpZmRlZiBPUEVOU1NMX1JJX0RFQlVHCisrICAgIGZwcmludGYoc3RkZXJyLCAi JXMgUkkgZXh0ZW5zaW9uIHJlY2VpdmVkIGJ5IGNsaWVudFxuIiwKKysJCQkJaWxlbiA/ICJOb24t ZW1wdHkiIDogIkVtcHR5Iik7CisrI2VuZGlmCisrICAgIHMtPnMzLT5zZW5kX2Nvbm5lY3Rpb25f YmluZGluZz0xOworIAorICAgICByZXR1cm4gMTsKKyAgICAgfQoKZGlmZiAtLWdpdCBhL29wZW5z c2wtMS4wLjAtYmV0YTQtdGxzLWNvbXAucGF0Y2ggYi9vcGVuc3NsLTEuMC4wLWJldGE0LXRscy1j b21wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YzI1YzUKLS0t IC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4wLWJldGE0LXRscy1jb21wLnBhdGNoCkBAIC0w LDAgKzEsMTkzIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zc2xfZXJyLmMu dGxzLWNvbXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsX2Vyci5jCistLS0gb3BlbnNzbC0x LjAuMC1iZXRhNC9zc2wvc3NsX2Vyci5jLnRscy1jb21wCTIwMTAtMDEtMDcgMTg6NDU6NDYuMDAw MDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsX2Vyci5jCTIwMTAt MDEtMDcgMjI6NDY6MTAuMDAwMDAwMDAwICswMTAwCitAQCAtMzI5LDYgKzMyOSw3IEBAIHN0YXRp YyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9yZWFzb25zW10KKyB7RVJSX1JFQVNPTihTU0xfUl9D SVBIRVJfVEFCTEVfU1JDX0VSUk9SKSwiY2lwaGVyIHRhYmxlIHNyYyBlcnJvciJ9LAorIHtFUlJf UkVBU09OKFNTTF9SX0NMSUVOVEhFTExPX1RMU0VYVCkgICAgLCJjbGllbnRoZWxsbyB0bHNleHQi fSwKKyB7RVJSX1JFQVNPTihTU0xfUl9DT01QUkVTU0VEX0xFTkdUSF9UT09fTE9ORyksImNvbXBy ZXNzZWQgbGVuZ3RoIHRvbyBsb25nIn0sCisre0VSUl9SRUFTT04oU1NMX1JfQ09NUFJFU1NJT05f RElTQUJMRUQpICAsImNvbXByZXNzaW9uIGRpc2FibGVkIn0sCisge0VSUl9SRUFTT04oU1NMX1Jf Q09NUFJFU1NJT05fRkFJTFVSRSkgICAsImNvbXByZXNzaW9uIGZhaWx1cmUifSwKKyB7RVJSX1JF QVNPTihTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0UpLCJjb21w cmVzc2lvbiBpZCBub3Qgd2l0aGluIHByaXZhdGUgcmFuZ2UifSwKKyB7RVJSX1JFQVNPTihTU0xf Ul9DT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SKSwiY29tcHJlc3Npb24gbGlicmFyeSBlcnJvciJ9 LAorQEAgLTM1Nyw4ICszNTgsMTAgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBTU0xfc3RyX3Jl YXNvbnNbXQorIHtFUlJfUkVBU09OKFNTTF9SX0hUVFBTX1BST1hZX1JFUVVFU1QpICAgLCJodHRw cyBwcm94eSByZXF1ZXN0In0sCisge0VSUl9SRUFTT04oU1NMX1JfSFRUUF9SRVFVRVNUKSAgICAg ICAgICAsImh0dHAgcmVxdWVzdCJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX0lMTEVHQUxfUEFERElO RykgICAgICAgLCJpbGxlZ2FsIHBhZGRpbmcifSwKKyt7RVJSX1JFQVNPTihTU0xfUl9JTkNPTlNJ U1RFTlRfQ09NUFJFU1NJT04pLCJpbmNvbnNpc3RlbnQgY29tcHJlc3Npb24ifSwKKyB7RVJSX1JF QVNPTihTU0xfUl9JTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgpLCJpbnZhbGlkIGNoYWxsZW5nZSBs ZW5ndGgifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9JTlZBTElEX0NPTU1BTkQpICAgICAgICwiaW52 YWxpZCBjb21tYW5kIn0sCisre0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9B TEdPUklUSE0pLCJpbnZhbGlkIGNvbXByZXNzaW9uIGFsZ29yaXRobSJ9LAorIHtFUlJfUkVBU09O KFNTTF9SX0lOVkFMSURfUFVSUE9TRSkgICAgICAgLCJpbnZhbGlkIHB1cnBvc2UifSwKKyB7RVJS X1JFQVNPTihTU0xfUl9JTlZBTElEX1NUQVRVU19SRVNQT05TRSksImludmFsaWQgc3RhdHVzIHJl c3BvbnNlIn0sCisge0VSUl9SRUFTT04oU1NMX1JfSU5WQUxJRF9USUNLRVRfS0VZU19MRU5HVEgp LCJpbnZhbGlkIHRpY2tldCBrZXlzIGxlbmd0aCJ9LAorQEAgLTQyMSw2ICs0MjQsNyBAQCBzdGF0 aWMgRVJSX1NUUklOR19EQVRBIFNTTF9zdHJfcmVhc29uc1tdCisge0VSUl9SRUFTT04oU1NMX1Jf TlVMTF9TU0xfQ1RYKSAgICAgICAgICAsIm51bGwgc3NsIGN0eCJ9LAorIHtFUlJfUkVBU09OKFNT TF9SX05VTExfU1NMX01FVEhPRF9QQVNTRUQpLCJudWxsIHNzbCBtZXRob2QgcGFzc2VkIn0sCisg e0VSUl9SRUFTT04oU1NMX1JfT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRCksIm9sZCBz ZXNzaW9uIGNpcGhlciBub3QgcmV0dXJuZWQifSwKKyt7RVJSX1JFQVNPTihTU0xfUl9PTERfU0VT U0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVEKSwib2xkIHNlc3Npb24gY29t cHJlc3Npb24gYWxnb3JpdGhtIG5vdCByZXR1cm5lZCJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX09O TFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFKSwib25seSB0bHMgYWxsb3dlZCBpbiBmaXBzIG1v ZGUifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9PUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HKSwib3Bh cXVlIFBSRiBpbnB1dCB0b28gbG9uZyJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX1BBQ0tFVF9MRU5H VEhfVE9PX0xPTkcpLCJwYWNrZXQgbGVuZ3RoIHRvbyBsb25nIn0sCitAQCAtNDUxLDYgKzQ1NSw3 IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgU1NMX3N0cl9yZWFzb25zW10KKyB7RVJSX1JFQVNP TihTU0xfUl9SRU5FR09USUFUSU9OX0VOQ09ESU5HX0VSUiksInJlbmVnb3RpYXRpb24gZW5jb2Rp bmcgZXJyIn0sCisge0VSUl9SRUFTT04oU1NMX1JfUkVORUdPVElBVElPTl9NSVNNQVRDSCksInJl bmVnb3RpYXRpb24gbWlzbWF0Y2gifSwKKyB7RVJSX1JFQVNPTihTU0xfUl9SRVFVSVJFRF9DSVBI RVJfTUlTU0lORyksInJlcXVpcmVkIGNpcGhlciBtaXNzaW5nIn0sCisre0VSUl9SRUFTT04oU1NM X1JfUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HKSwicmVxdWlyZWQgY29t cHJlc3NzaW9uIGFsZ29yaXRobSBtaXNzaW5nIn0sCisge0VSUl9SRUFTT04oU1NMX1JfUkVVU0Vf Q0VSVF9MRU5HVEhfTk9UX1pFUk8pLCJyZXVzZSBjZXJ0IGxlbmd0aCBub3QgemVybyJ9LAorIHtF UlJfUkVBU09OKFNTTF9SX1JFVVNFX0NFUlRfVFlQRV9OT1RfWkVSTyksInJldXNlIGNlcnQgdHlw ZSBub3QgemVybyJ9LAorIHtFUlJfUkVBU09OKFNTTF9SX1JFVVNFX0NJUEhFUl9MSVNUX05PVF9a RVJPKSwicmV1c2UgY2lwaGVyIGxpc3Qgbm90IHplcm8ifSwKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjAtYmV0YTQvc3NsL3NzbC5oLnRscy1jb21wIG9wZW5zc2wtMS4wLjAtYmV0YTQvc3NsL3NzbC5o CistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvc3NsLmgudGxzLWNvbXAJMjAxMC0wMS0wNyAx ODo0NTo0Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zc2wu aAkyMDEwLTAxLTA3IDIyOjQ3OjA3LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ4NSw3ICs0ODUsNyBA QCB0eXBlZGVmIHN0cnVjdCBzc2xfc2Vzc2lvbl9zdAorIAlsb25nIHRpbWVvdXQ7CisgCWxvbmcg dGltZTsKKyAKKy0JaW50IGNvbXByZXNzX21ldGg7CQkvKiBOZWVkIHRvIGxvb2t1cCB0aGUgbWV0 aG9kICovCisrCXVuc2lnbmVkIGludCBjb21wcmVzc19tZXRoOwkvKiBOZWVkIHRvIGxvb2t1cCB0 aGUgbWV0aG9kICovCisgCisgCWNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcjsKKyAJdW5zaWduZWQg bG9uZyBjaXBoZXJfaWQ7CS8qIHdoZW4gQVNOLjEgbG9hZGVkLCB0aGlzCitAQCAtMjA1MSw2ICsy MDUxLDcgQEAgdm9pZCBFUlJfbG9hZF9TU0xfc3RyaW5ncyh2b2lkKTsKKyAjZGVmaW5lIFNTTF9S X0NJUEhFUl9UQUJMRV9TUkNfRVJST1IJCQkgMTM5CisgI2RlZmluZSBTU0xfUl9DTElFTlRIRUxM T19UTFNFWFQJCQkgMjI2CisgI2RlZmluZSBTU0xfUl9DT01QUkVTU0VEX0xFTkdUSF9UT09fTE9O RwkJIDE0MAorKyNkZWZpbmUgU1NMX1JfQ09NUFJFU1NJT05fRElTQUJMRUQJCQkgMzQzCisgI2Rl ZmluZSBTU0xfUl9DT01QUkVTU0lPTl9GQUlMVVJFCQkJIDE0MQorICNkZWZpbmUgU1NMX1JfQ09N UFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFCSAzMDcKKyAjZGVmaW5lIFNTTF9S X0NPTVBSRVNTSU9OX0xJQlJBUllfRVJST1IJCQkgMTQyCitAQCAtMjA3OSw4ICsyMDgwLDEwIEBA IHZvaWQgRVJSX2xvYWRfU1NMX3N0cmluZ3Modm9pZCk7CisgI2RlZmluZSBTU0xfUl9IVFRQU19Q Uk9YWV9SRVFVRVNUCQkJIDE1NQorICNkZWZpbmUgU1NMX1JfSFRUUF9SRVFVRVNUCQkJCSAxNTYK KyAjZGVmaW5lIFNTTF9SX0lMTEVHQUxfUEFERElORwkJCQkgMjgzCisrI2RlZmluZSBTU0xfUl9J TkNPTlNJU1RFTlRfQ09NUFJFU1NJT04JCQkgMzQwCisgI2RlZmluZSBTU0xfUl9JTlZBTElEX0NI QUxMRU5HRV9MRU5HVEgJCQkgMTU4CisgI2RlZmluZSBTU0xfUl9JTlZBTElEX0NPTU1BTkQJCQkJ IDI4MAorKyNkZWZpbmUgU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0JCSAzNDEK KyAjZGVmaW5lIFNTTF9SX0lOVkFMSURfUFVSUE9TRQkJCQkgMjc4CisgI2RlZmluZSBTU0xfUl9J TlZBTElEX1NUQVRVU19SRVNQT05TRQkJCSAzMjgKKyAjZGVmaW5lIFNTTF9SX0lOVkFMSURfVElD S0VUX0tFWVNfTEVOR1RICQkgMzI1CitAQCAtMjE0Myw2ICsyMTQ2LDcgQEAgdm9pZCBFUlJfbG9h ZF9TU0xfc3RyaW5ncyh2b2lkKTsKKyAjZGVmaW5lIFNTTF9SX05VTExfU1NMX0NUWAkJCQkgMTk1 CisgI2RlZmluZSBTU0xfUl9OVUxMX1NTTF9NRVRIT0RfUEFTU0VECQkJIDE5NgorICNkZWZpbmUg U1NMX1JfT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRAkJIDE5NworKyNkZWZpbmUgU1NM X1JfT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRCAzNDQKKyAj ZGVmaW5lIFNTTF9SX09OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFCQkgMjk3CisgI2RlZmlu ZSBTU0xfUl9PUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HCQkJIDMyNworICNkZWZpbmUgU1NMX1Jf UEFDS0VUX0xFTkdUSF9UT09fTE9ORwkJCSAxOTgKK0BAIC0yMTczLDYgKzIxNzcsNyBAQCB2b2lk IEVSUl9sb2FkX1NTTF9zdHJpbmdzKHZvaWQpOworICNkZWZpbmUgU1NMX1JfUkVORUdPVElBVElP Tl9FTkNPRElOR19FUlIJCSAzMzYKKyAjZGVmaW5lIFNTTF9SX1JFTkVHT1RJQVRJT05fTUlTTUFU Q0gJCQkgMzM3CisgI2RlZmluZSBTU0xfUl9SRVFVSVJFRF9DSVBIRVJfTUlTU0lORwkJCSAyMTUK KysjZGVmaW5lIFNTTF9SX1JFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lORwkg MzQyCisgI2RlZmluZSBTU0xfUl9SRVVTRV9DRVJUX0xFTkdUSF9OT1RfWkVSTwkJIDIxNgorICNk ZWZpbmUgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPCQkJIDIxNworICNkZWZpbmUgU1NM X1JfUkVVU0VfQ0lQSEVSX0xJU1RfTk9UX1pFUk8JCSAyMTgKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjAtYmV0YTQvc3NsL3MzX2NsbnQuYy50bHMtY29tcCBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9z M19jbG50LmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zM19jbG50LmMudGxzLWNvbXAJ MjAxMC0wMS0wNyAxNzo1MzoxMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wLWJl dGE0L3NzbC9zM19jbG50LmMJMjAxMC0wMS0wNyAyMjo0NzowNy4wMDAwMDAwMDAgKzAxMDAKK0BA IC04OTUsMTAgKzg5NSwzMSBAQCBpbnQgc3NsM19nZXRfc2VydmVyX2hlbGxvKFNTTCAqcykKKyAJ CVNTTGVycihTU0xfRl9TU0wzX0dFVF9TRVJWRVJfSEVMTE8sU1NMX1JfVU5TVVBQT1JURURfQ09N UFJFU1NJT05fQUxHT1JJVEhNKTsKKyAJCWdvdG8gZl9lcnI7CisgCQl9CisrCS8qIElmIGNvbXBy ZXNzaW9uIGlzIGRpc2FibGVkIHdlJ2QgYmV0dGVyIG5vdCB0cnkgdG8gcmVzdW1lIGEgc2Vzc2lv bgorKwkgKiB1c2luZyBjb21wcmVzc2lvbi4KKysJICovCisrCWlmIChzLT5zZXNzaW9uLT5jb21w cmVzc19tZXRoICE9IDApCisrCQl7CisrCQlhbD1TU0xfQURfSU5URVJOQUxfRVJST1I7CisrCQlT U0xlcnIoU1NMX0ZfU1NMM19HRVRfU0VSVkVSX0hFTExPLFNTTF9SX0lOQ09OU0lTVEVOVF9DT01Q UkVTU0lPTik7CisrCQlnb3RvIGZfZXJyOworKwkJfQorICNlbHNlCisgCWo9ICoocCsrKTsKKy0J aWYgKChqID09IDApIHx8IChzLT5vcHRpb25zICYgU1NMX09QX05PX0NPTVBSRVNTSU9OKSkKKysJ aWYgKHMtPmhpdCAmJiBqICE9IHMtPnNlc3Npb24tPmNvbXByZXNzX21ldGgpCisrCQl7CisrCQlh bD1TU0xfQURfSUxMRUdBTF9QQVJBTUVURVI7CisrCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfU0VS VkVSX0hFTExPLFNTTF9SX09MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVU VVJORUQpOworKwkJZ290byBmX2VycjsKKysJCX0KKysJaWYgKGogPT0gMCkKKyAJCWNvbXA9TlVM TDsKKysJZWxzZSBpZiAocy0+b3B0aW9ucyAmIFNTTF9PUF9OT19DT01QUkVTU0lPTikKKysJCXsK KysJCWFsPVNTTF9BRF9JTExFR0FMX1BBUkFNRVRFUjsKKysJCVNTTGVycihTU0xfRl9TU0wzX0dF VF9TRVJWRVJfSEVMTE8sU1NMX1JfQ09NUFJFU1NJT05fRElTQUJMRUQpOworKwkJZ290byBmX2Vy cjsKKysJCX0KKyAJZWxzZQorIAkJY29tcD1zc2wzX2NvbXBfZmluZChzLT5jdHgtPmNvbXBfbWV0 aG9kcyxqKTsKKyAJCitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L3NzbC9zM19zcnZyLmMu dGxzLWNvbXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvczNfc3J2ci5jCistLS0gb3BlbnNzbC0x LjAuMC1iZXRhNC9zc2wvczNfc3J2ci5jLnRscy1jb21wCTIwMTAtMDEtMDcgMTc6NTM6MTIuMDAw MDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9zc2wvczNfc3J2ci5jCTIwMTAt MDEtMDcgMjI6NDY6MTAuMDAwMDAwMDAwICswMTAwCitAQCAtMTA4OCw3ICsxMDg4LDUwIEBAIGlu dCBzc2wzX2dldF9jbGllbnRfaGVsbG8oU1NMICpzKQorIAkgKiBhbGdvcml0aG1zIGZyb20gdGhl IGNsaWVudCwgc3RhcnRpbmcgYXQgcS4gKi8KKyAJcy0+czMtPnRtcC5uZXdfY29tcHJlc3Npb249 TlVMTDsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAorLQlpZiAoIShzLT5vcHRpb25zICYgU1NM X09QX05PX0NPTVBSRVNTSU9OKSAmJiBzLT5jdHgtPmNvbXBfbWV0aG9kcykKKysJLyogVGhpcyBv bmx5IGhhcHBlbnMgaWYgd2UgaGF2ZSBhIGNhY2hlIGhpdCAqLworKwlpZiAocy0+c2Vzc2lvbi0+ Y29tcHJlc3NfbWV0aCAhPSAwKQorKwkJeworKwkJaW50IG0sIGNvbXBfaWQgPSBzLT5zZXNzaW9u LT5jb21wcmVzc19tZXRoOworKwkJLyogUGVyZm9ybSBzYW5pdHkgY2hlY2tzIG9uIHJlc3VtZWQg Y29tcHJlc3Npb24gYWxnb3JpdGhtICovCisrCQkvKiBDYW4ndCBkaXNhYmxlIGNvbXByZXNzaW9u ICovCisrCQlpZiAocy0+b3B0aW9ucyAmIFNTTF9PUF9OT19DT01QUkVTU0lPTikKKysJCQl7Cisr CQkJYWw9U1NMX0FEX0lOVEVSTkFMX0VSUk9SOworKwkJCVNTTGVycihTU0xfRl9TU0wzX0dFVF9D TElFTlRfSEVMTE8sU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OKTsKKysJCQlnb3RvIGZf ZXJyOworKwkJCX0KKysJCS8qIExvb2sgZm9yIHJlc3VtZWQgY29tcHJlc3Npb24gbWV0aG9kICov CisrCQlmb3IgKG0gPSAwOyBtIDwgc2tfU1NMX0NPTVBfbnVtKHMtPmN0eC0+Y29tcF9tZXRob2Rz KTsgbSsrKQorKwkJCXsKKysJCQljb21wPXNrX1NTTF9DT01QX3ZhbHVlKHMtPmN0eC0+Y29tcF9t ZXRob2RzLG0pOworKwkJCWlmIChjb21wX2lkID09IGNvbXAtPmlkKQorKwkJCQl7CisrCQkJCXMt PnMzLT50bXAubmV3X2NvbXByZXNzaW9uPWNvbXA7CisrCQkJCWJyZWFrOworKwkJCQl9CisrCQkJ fQorKwkJaWYgKHMtPnMzLT50bXAubmV3X2NvbXByZXNzaW9uID09IE5VTEwpCisrCQkJeworKwkJ CWFsPVNTTF9BRF9JTlRFUk5BTF9FUlJPUjsKKysJCQlTU0xlcnIoU1NMX0ZfU1NMM19HRVRfQ0xJ RU5UX0hFTExPLFNTTF9SX0lOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNKTsKKysJCQlnb3Rv IGZfZXJyOworKwkJCX0KKysJCS8qIExvb2sgZm9yIHJlc3VtZWQgbWV0aG9kIGluIGNvbXByZXNz aW9uIGxpc3QgKi8KKysJCWZvciAobSA9IDA7IG0gPCBpOyBtKyspCisrCQkJeworKwkJCWlmIChx W21dID09IGNvbXBfaWQpCisrCQkJCWJyZWFrOworKwkJCX0KKysJCWlmIChtID49IGkpCisrCQkJ eworKwkJCWFsPVNTTF9BRF9JTExFR0FMX1BBUkFNRVRFUjsKKysJCQlTU0xlcnIoU1NMX0ZfU1NM M19HRVRfQ0xJRU5UX0hFTExPLFNTTF9SX1JFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1f TUlTU0lORyk7CisrCQkJZ290byBmX2VycjsKKysJCQl9CisrCQl9CisrCWVsc2UgaWYgKHMtPmhp dCkKKysJCWNvbXAgPSBOVUxMOworKwllbHNlIGlmICghKHMtPm9wdGlvbnMgJiBTU0xfT1BfTk9f Q09NUFJFU1NJT04pICYmIHMtPmN0eC0+Y29tcF9tZXRob2RzKQorIAkJeyAvKiBTZWUgaWYgd2Ug aGF2ZSBhIG1hdGNoICovCisgCQlpbnQgbSxubixvLHYsZG9uZT0wOworIAorQEAgLTExMTIsNiAr MTE1NSwxNiBAQCBpbnQgc3NsM19nZXRfY2xpZW50X2hlbGxvKFNTTCAqcykKKyAJCWVsc2UKKyAJ CQljb21wPU5VTEw7CisgCQl9CisrI2Vsc2UKKysJLyogSWYgY29tcHJlc3Npb24gaXMgZGlzYWJs ZWQgd2UnZCBiZXR0ZXIgbm90IHRyeSB0byByZXN1bWUgYSBzZXNzaW9uCisrCSAqIHVzaW5nIGNv bXByZXNzaW9uLgorKwkgKi8KKysJaWYgKHMtPnNlc3Npb24tPmNvbXByZXNzX21ldGggIT0gMCkK KysJCXsKKysJCWFsPVNTTF9BRF9JTlRFUk5BTF9FUlJPUjsKKysJCVNTTGVycihTU0xfRl9TU0wz X0dFVF9DTElFTlRfSEVMTE8sU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OKTsKKysJCWdv dG8gZl9lcnI7CisrCQl9CisgI2VuZGlmCisgCisgCS8qIEdpdmVuIHMtPnNlc3Npb24tPmNpcGhl cnMgYW5kIFNTTF9nZXRfY2lwaGVycywgd2UgbXVzdAoKZGlmZiAtLWdpdCBhL29wZW5zc2wuc3Bl YyBiL29wZW5zc2wuc3BlYwppbmRleCAyNzI5ZTdlLi40OWFmOGYyIDEwMDY0NAotLS0gYS9vcGVu c3NsLnNwZWMKKysrIGIvb3BlbnNzbC5zcGVjCkBAIC0yMyw3ICsyMyw3IEBACiBTdW1tYXJ5OiBB IGdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaHkgbGlicmFyeSB3aXRoIFRMUyBpbXBsZW1lbnRh dGlvbgogTmFtZTogb3BlbnNzbAogVmVyc2lvbjogMS4wLjAKLVJlbGVhc2U6IDAuMTYuJXtiZXRh fSV7P2Rpc3R9CitSZWxlYXNlOiAwLjE3LiV7YmV0YX0lez9kaXN0fQogIyBXZSByZW1vdmUgY2Vy dGFpbiBwYXRlbnRlZCBhbGdvcml0aG1zIGZyb20gdGhlIG9wZW5zc2wgc291cmNlIHRhcmJhbGwK ICMgd2l0aCB0aGUgaG9iYmxlLW9wZW5zc2wgc2NyaXB0IHdoaWNoIGlzIGluY2x1ZGVkIGJlbG93 LgogU291cmNlOiBvcGVuc3NsLSV7dmVyc2lvbn0tJXtiZXRhfS11c2EudGFyLmJ6MgpAQCAtNjgs NiArNjgsMTAgQEAgUGF0Y2g2MTogb3BlbnNzbC0xLjAuMC1iZXRhNC1jbGllbnQtcmVuZWcucGF0 Y2gKIFBhdGNoNjI6IG9wZW5zc2wtMS4wLjAtYmV0YTQtYmFja3BvcnRzLnBhdGNoCiBQYXRjaDYz OiBvcGVuc3NsLTEuMC4wLWJldGE0LXJlbmVnLWVyci5wYXRjaAogUGF0Y2g2NDogb3BlbnNzbC0x LjAuMC1iZXRhNC1kdGxzLWlwdjYucGF0Y2gKK1BhdGNoNjU6IG9wZW5zc2wtMS4wLjAtYmV0YTQt ZHRscy1yZW5lZy5wYXRjaAorUGF0Y2g2Njogb3BlbnNzbC0xLjAuMC1iZXRhNC1iYWNrcG9ydHMy LnBhdGNoCitQYXRjaDY3OiBvcGVuc3NsLTEuMC4wLWJldGE0LXJlbmVnLXNjc3YucGF0Y2gKK1Bh dGNoNjg6IG9wZW5zc2wtMS4wLjAtYmV0YTQtdGxzLWNvbXAucGF0Y2gKIAogTGljZW5zZTogT3Bl blNTTAogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKQEAgLTE1Miw2ICsxNTYs MTAgQEAgZnJvbSBvdGhlciBmb3JtYXRzIHRvIHRoZSBmb3JtYXRzIHVzZWQgYnkgdGhlIE9wZW5T U0wgdG9vbGtpdC4KICVwYXRjaDYyIC1wMSAtYiAuYmFja3BvcnRzCiAlcGF0Y2g2MyAtcDEgLWIg LnJlbmVnLWVycgogJXBhdGNoNjQgLXAxIC1iIC5kdGxzLWlwdjYKKyVwYXRjaDY1IC1wMSAtYiAu ZHRscy1yZW5lZworJXBhdGNoNjYgLXAxIC1iIC5iYWNrcG9ydHMyCislcGF0Y2g2NyAtcDEgLWIg LnNjc3YKKyVwYXRjaDY4IC1wMSAtYiAudGxzLWNvbXAKIAogIyBNb2RpZnkgdGhlIHZhcmlvdXMg cGVybCBzY3JpcHRzIHRvIHJlZmVyZW5jZSBwZXJsIGluIHRoZSByaWdodCBsb2NhdGlvbi4KIHBl cmwgdXRpbC9wZXJscGF0aC5wbCBgZGlybmFtZSAle19fcGVybH1gCkBAIC0xNjAsNyArMTY4LDcg QEAgcGVybCB1dGlsL3BlcmxwYXRoLnBsIGBkaXJuYW1lICV7X19wZXJsfWAKIHRvdWNoIE1ha2Vm aWxlCiBtYWtlIFRBQkxFIFBFUkw9JXtfX3Blcmx9CiAKLSVidWlsZCAKKyVidWlsZAogIyBGaWd1 cmUgb3V0IHdoaWNoIGZsYWdzIHdlIHdhbnQgdG8gdXNlLgogIyBkZWZhdWx0CiBzc2xhcmNoPSV7 X29zfS0le19hcmNofQpAQCAtMzQ3LDcgKzM1NSw3IEBAIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1Qv JXtfbGliZGlyfS9maXBzY2FuaXN0ZXIuKgogJWNsZWFuCiBbICIkUlBNX0JVSUxEX1JPT1QiICE9 ICIvIiBdICYmIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKIAotJWZpbGVzIAorJWZpbGVzCiAlZGVm YXR0cigtLHJvb3Qscm9vdCkKICVkb2MgRkFRIExJQ0VOU0UgQ0hBTkdFUyBORVdTIElOU1RBTEwg UkVBRE1FCiAlZG9jIGRvYy9jLWluZGVudGF0aW9uLmVsIGRvYy9vcGVuc3NsLnR4dApAQCAtNDAw LDYgKzQwOCwxMSBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09ULyV7X2xpYmRpcn0vZmlwc2Nhbmlz dGVyLioKICVwb3N0dW4gLXAgL3NiaW4vbGRjb25maWcKIAogJWNoYW5nZWxvZworKiBUaHUgSmFu ICA3IDIwMTAgVG9tYXMgTXJheiA8dG1yYXpAcmVkaGF0LmNvbT4gMS4wLjAtMC4xNy5iZXRhNAor LSB1cHN0cmVhbSBmaXggY29tcHJlc3Npb24gaGFuZGxpbmcgb24gc2Vzc2lvbiByZXN1bXB0aW9u CistIHZhcmlvdXMgbnVsbCBjaGVja3MgYW5kIG90aGVyIHNtYWxsIGZpeGVzIGZyb20gdXBzdHJl YW0KKy0gdXBzdHJlYW0gY2hhbmdlcyBmb3IgdGhlIHJlbmVnb3RpYXRpb24gaW5mbyBhY2NvcmRp bmcgdG8gdGhlIGxhdGVzdCBkcmFmdCAKKwogKiBNb24gTm92IDIzIDIwMDkgVG9tYXMgTXJheiA8 dG1yYXpAcmVkaGF0LmNvbT4gMS4wLjAtMC4xNi5iZXRhNAogLSBmaXggbm9uLWZpcHMgbWluZ3cg YnVpbGQgKHBhdGNoIGJ5IEthbGV2IExlbWJlcikKIC0gYWRkIElQVjYgZml4IGZvciBEVExTCkBA IC00MTksNyArNDMyLDcgQEAgcm0gLXJmICRSUE1fQlVJTERfUk9PVC8le19saWJkaXJ9L2ZpcHNj YW5pc3Rlci4qCiAgIG9wZW5zc2ggYW5kIHBvc3NpYmx5IG90aGVyIGRlcGVuZGVuY2llcyB3aXRo IHRvbyBzdHJpY3QgdmVyc2lvbiBjaGVjawogCiAqIFRodSBOb3YgMTIgMjAwOSBUb21hcyBNcmF6 IDx0bXJhekByZWRoYXQuY29tPiAxLjAuMC0wLjExLmJldGE0Ci0tIHVwZGF0ZSB0byBuZXcgdXBz dHJlYW0gdmVyc2lvbiwgbm8gc29uYW1lIGJ1bXAgbmVlZGVkIAorLSB1cGRhdGUgdG8gbmV3IHVw c3RyZWFtIHZlcnNpb24sIG5vIHNvbmFtZSBidW1wIG5lZWRlZAogLSBmaXggQ1ZFLTIwMDktMzU1 NSAtIG5vdGUgdGhhdCB0aGUgZml4IGlzIGJ5cGFzc2VkIGlmIFNTTF9PUF9BTEwgaXMgdXNlZAog ICBzbyB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIHVuZml4ZWQgY2xpZW50cyBpcyBub3QgYnJva2Vu LiBUaGUKICAgcHJvdG9jb2wgZXh0ZW5zaW9uIGlzIGFsc28gbm90IGZpbmFsLgo=