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: Sander Hoentjen To: git-commits@fedoraproject.org Subject: [rpms/tcltls] epel10: Fix building against TCL 9.0 Date: Mon, 17 Aug 2026 17:42:12 GMT Message-ID: <178698853242.1.12397914649995613241.rpms-tcltls-353b25b02790@fedoraproject.org> List-ID: X-Git-Repo: rpms/tcltls X-Git-Branch: epel10 X-Git-Rev: 353b25b027906b684c546b872c7f168405fd9cd5 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvdGNsdGxzCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWwxMAogICAgICAgICAg ICBDb21taXQgOiAzNTNiMjViMDI3OTA2YjY4NGM1NDZiODcyYzdmMTY4NDA1ZmQ5Y2Q1CiAgICAg ICAgICAgIEF1dGhvciA6IFNhbmRlciBIb2VudGplbiA8c2hvZW50amVuQGFudGFnb25pc3Qubmw+ CiAgICAgICAgICAgIERhdGUgICA6IDIwMjUtMDEtMTVUMjA6MTY6MTUrMDE6MDAKICAgICAgICAg ICAgU3RhdHMgIDogKzE2OTYvLTAgaW4gMyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0 dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvdGNsdGxzL2MvMzUzYjI1YjAyNzkwNmI2 ODRjNTQ2Yjg3MmM3ZjE2ODQwNWZkOWNkNT9icmFuY2g9ZXBlbDEwCgogICAgICAgICAgICBMb2c6 CiAgICAgICAgICAgIEZpeCBidWlsZGluZyBhZ2FpbnN0IFRDTCA5LjAKCi0gRml4ZXMgIzIzMzc3 OTAKCi0tLQpkaWZmIC0tZ2l0IGEvdGNsdGxzLTEuNy4yMi10Y2wtOV8wLnBhdGNoIGIvdGNsdGxz LTEuNy4yMi10Y2wtOV8wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjkwOTg0NjcKLS0tIC9kZXYvbnVsbAorKysgYi90Y2x0bHMtMS43LjIyLXRjbC05XzAucGF0Y2gK QEAgLTAsMCArMSwxNTIzIEBACitjb21taXQgZDFjOTcyODA0YWE5MjRhNDM4Y2I5MTg4Y2NhNDU4 M2U2YWY4ZGE4NworQXV0aG9yOiBib2hhZ2FuIDxib2hhZ2FuPgorRGF0ZTogICBNb24gQXByIDEw IDAxOjI3OjM1IDIwMjMgKzAwMDAKKworICAgIEluaXRpYWwgY2hhbmdlcyBmb3IgVENMIDkuMC4K KyAgICAKKyAgICBGaXhlZCBwYWNrYWdlIHJlcXVpcmVzIHRvIHdvcmsgd2l0aCBUQ0wgOS4wLgor ICAgIFJlbW92ZWQgb2Jzb2xldGUgbWFjcm8gX0FOU0lfQVJHU18sIHVzZSBBTlNJIGFyZyBkZWZp bml0aW9ucywgZXRjLgorICAgIE1hY3JvczogQ09OU1Q4NCB0byBjb25zdCwgV0lOMzIgdG8gX1dJ TjMyLCBDT05TVCB0byBjb25zdCwgVk9JRCB0byB2b2lkLCBldGMuCisgICAgUmVwbGFjZWQgVGNs X1NhdmVSZXN1bHQgd2l0aCBUY2xfU2F2ZUludGVycFN0YXRlLCBUY2xfUmVzdG9yZVJlc3VsdCB3 aXRoIFRjbF9SZXN0b3JlSW50ZXJwU3RhdGUsIGFuZCBUY2xfRGlzY2FyZFJlc3VsdCB3aXRoIFRj bF9EaXNjYXJkSW50ZXJwU3RhdGUuCisgICAgVXNlIFRjbF9CYWNrZ3JvdW5kRXJyb3IgZm9yIHBy ZSBUQ0wgOC42IGFuZCBUY2xfQmFja2dyb3VuZEV4Y2VwdGlvbiBmb3IgVENMIDguNisuCisKK2Rp ZmYgLS1naXQgYS9wa2dJbmRleC50Y2wuaW4gYi9wa2dJbmRleC50Y2wuaW4KK2luZGV4IDA4NjE4 ZWUuLjI0ZDMzNjQgMTAwNjQ0CistLS0gYS9wa2dJbmRleC50Y2wuaW4KKysrKyBiL3BrZ0luZGV4 LnRjbC5pbgorQEAgLTEsNCArMSw0IEBACistaWYge1twYWNrYWdlIHZzYXRpc2ZpZXMgW3BhY2th Z2UgcHJlc2VudCBUY2xdIDguNV19IHsKKytpZiB7W3BhY2thZ2UgdnNhdGlzZmllcyBbcGFja2Fn ZSBwcmVzZW50IFRjbF0gOC41LV19IHsKKyAJcGFja2FnZSBpZm5lZWRlZCB0bHMgQFBBQ0tBR0Vf VkVSU0lPTkAgW2xpc3QgYXBwbHkge3tkaXJ9IHsKKyAJCWlmIHt7QFRDTEVYVF9CVUlMREB9IGVx ICJzdGF0aWMifSB7CisgCQkJbG9hZCB7fSBUbHMKK2RpZmYgLS1naXQgYS90Y2xPcHRzLmggYi90 Y2xPcHRzLmgKK2luZGV4IDhlNzgyMGIuLjFmOThmYzYgMTAwNjQ0CistLS0gYS90Y2xPcHRzLmgK KysrKyBiL3RjbE9wdHMuaAorQEAgLTEsNyArMSw3IEBACisgLyoKKyAgKiAgQ29weXJpZ2h0IChD KSAxOTk3LTIwMDAgTWF0dCBOZXdtYW4gPG1hdHRAbm92YWRpZ20uY29tPgorICAqCistICogU3R5 bGl6ZWQgb3B0aW9uIHByb2Nlc3NpbmcgLSByZXF1aXJlcyBjb25zaXRlbnQKKysgKiBTdHlsaXpl ZCBvcHRpb24gcHJvY2Vzc2luZyAtIHJlcXVpcmVzIGNvbnNpc3RlbnQKKyAgKiBleHRlcm5hbCB2 YXJzOiBvcHQsIGlkeCwgb2JqYywgb2JqdgorICAqLworICNpZm5kZWYgX1RDTF9PUFRTX0gKK2Rp ZmYgLS1naXQgYS90bHMuYyBiL3Rscy5jCitpbmRleCA2NzI4NGM5Li4zNTJmYzJjIDEwMDY0NAor LS0tIGEvdGxzLmMKKysrKyBiL3Rscy5jCitAQCAtMzgsMzMgKzM4LDEwIEBACisgCQlUY2xfVHJh bnNsYXRlRmlsZU5hbWUoaW50ZXJwLCAoa2V5KSwgKGRzcCkpKQorICNkZWZpbmUgUkVBU09OKCkJ RVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKQorIAorLXN0YXRpYyB2b2lk CUluZm9DYWxsYmFjayhDT05TVCBTU0wgKnNzbCwgaW50IHdoZXJlLCBpbnQgcmV0KTsKKy0KKy1z dGF0aWMgaW50CUNpcGhlcnNPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLAorLQkJCVRjbF9J bnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKkNPTlNUIG9ianZbXSk7CistCistc3Rh dGljIGludAlIYW5kc2hha2VPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLAorLQkJCVRjbF9J bnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKkNPTlNUIG9ianZbXSk7CistCistc3Rh dGljIGludAlJbXBvcnRPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLAorLQkJCVRjbF9JbnRl cnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKkNPTlNUIG9ianZbXSk7CistCistc3RhdGlj IGludAlTdGF0dXNPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLAorLQkJCVRjbF9JbnRlcnAg KmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKkNPTlNUIG9ianZbXSk7CistCistc3RhdGljIGlu dAlWZXJzaW9uT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwKKy0JCQlUY2xfSW50ZXJwICpp bnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpDT05TVCBvYmp2W10pOworLQorLXN0YXRpYyBpbnQJ TWlzY09iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsCistCQkJVGNsX0ludGVycCAqaW50ZXJw LCBpbnQgb2JqYywgVGNsX09iaiAqQ09OU1Qgb2JqdltdKTsKKy0KKy1zdGF0aWMgaW50CVVuaW1w b3J0T2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwKKy0JCQlUY2xfSW50ZXJwICppbnRlcnAs IGludCBvYmpjLCBUY2xfT2JqICpDT05TVCBvYmp2W10pOworLQorIHN0YXRpYyBTU0xfQ1RYICpD VFhfSW5pdChTdGF0ZSAqc3RhdGVQdHIsIGludCBpc1NlcnZlciwgaW50IHByb3RvLCBjaGFyICpr ZXksCistCQkJY2hhciAqY2VydGZpbGUsIHVuc2lnbmVkIGNoYXIgKmtleV9hc24xLCB1bnNpZ25l ZCBjaGFyICpjZXJ0X2FzbjEsCistCQkJaW50IGtleV9hc24xX2xlbiwgaW50IGNlcnRfYXNuMV9s ZW4sIGNoYXIgKkNBZGlyLCBjaGFyICpDQWZpbGUsCistICAgICAgY2hhciAqY2lwaGVycywgY2hh ciAqREhwYXJhbXMpOworKwljaGFyICpjZXJ0ZmlsZSwgdW5zaWduZWQgY2hhciAqa2V5X2FzbjEs IHVuc2lnbmVkIGNoYXIgKmNlcnRfYXNuMSwKKysJaW50IGtleV9hc24xX2xlbiwgaW50IGNlcnRf YXNuMV9sZW4sIGNoYXIgKkNBZGlyLCBjaGFyICpDQWZpbGUsCisrCWNoYXIgKmNpcGhlcnMsIGNo YXIgKkRIcGFyYW1zKTsKKyAKKyBzdGF0aWMgaW50CVRsc0xpYkluaXQoaW50IHVuaW5pdGlhbGl6 ZSk7CisgCitAQCAtMTcxLDggKzE0OCw3IEBAIHVuc2lnbmVkIGxvbmcgQ3J5cHRvVGhyZWFkSWRD YWxsYmFjayh2b2lkKSB7CisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCisgc3RhdGljIHZvaWQKKy1JbmZv Q2FsbGJhY2soQ09OU1QgU1NMICpzc2wsIGludCB3aGVyZSwgaW50IHJldCkKKy17CisrSW5mb0Nh bGxiYWNrKGNvbnN0IFNTTCAqc3NsLCBpbnQgd2hlcmUsIGludCByZXQpIHsKKyAgICAgU3RhdGUg KnN0YXRlUHRyID0gKFN0YXRlKilTU0xfZ2V0X2FwcF9kYXRhKChTU0wgKilzc2wpOworICAgICBU Y2xfT2JqICpjbWRQdHI7CisgICAgIGNoYXIgKm1ham9yOyBjaGFyICptaW5vcjsKK0BAIC0yMjgs NyArMjA0LDcgQEAgSW5mb0NhbGxiYWNrKENPTlNUIFNTTCAqc3NsLCBpbnQgd2hlcmUsIGludCBy ZXQpCisgCVRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCggc3RhdGVQdHItPmludGVycCwgY21kUHRy LAorIAkgICAgVGNsX05ld1N0cmluZ09iaiggU1NMX3N0YXRlX3N0cmluZ19sb25nKHNzbCksIC0x KSApOworICAgICB9IGVsc2UgaWYgKHdoZXJlICYgU1NMX0NCX0FMRVJUKSB7CistCUNPTlNUIGNo YXIgKmNwID0gKGNoYXIgKikgU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmcocmV0KTsKKysJY29u c3QgY2hhciAqY3AgPSAoY2hhciAqKSBTU0xfYWxlcnRfZGVzY19zdHJpbmdfbG9uZyhyZXQpOwor IAorIAlUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQoIHN0YXRlUHRyLT5pbnRlcnAsIGNtZFB0ciwK KyAJICAgIFRjbF9OZXdTdHJpbmdPYmooIGNwLCAtMSkgKTsKK0BAIC0yNjksOCArMjQ1LDcgQEAg SW5mb0NhbGxiYWNrKENPTlNUIFNTTCAqc3NsLCBpbnQgd2hlcmUsIGludCByZXQpCisgICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICovCisgc3RhdGljIGludAorLVZlcmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9T VE9SRV9DVFggKmN0eCkKKy17CisrVmVyaWZ5Q2FsbGJhY2soaW50IG9rLCBYNTA5X1NUT1JFX0NU WCAqY3R4KSB7CisgICAgIFRjbF9PYmogKmNtZFB0ciwgKnJlc3VsdDsKKyAgICAgY2hhciAqZXJy U3RyLCAqc3RyaW5nOworICAgICBpbnQgbGVuZ3RoOworQEAgLTI3OSw2ICsyNTQsNyBAQCBWZXJp ZnlDYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpjdHgpCisgICAgIFN0YXRlICpzdGF0 ZVB0cgk9IChTdGF0ZSopU1NMX2dldF9hcHBfZGF0YShzc2wpOworICAgICBpbnQgZGVwdGgJCT0g WDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yX2RlcHRoKGN0eCk7CisgICAgIGludCBlcnIJCT0gWDUw OV9TVE9SRV9DVFhfZ2V0X2Vycm9yKGN0eCk7CisrICAgIGludCBjb2RlOworIAorICAgICBkcHJp bnRmKCJWZXJpZnk6ICVkIiwgb2spOworIAorQEAgLTMyMSwxNyArMjk3LDI3IEBAIFZlcmlmeUNh bGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFggKmN0eCkKKyAgICAgc3RhdGVQdHItPmZsYWdz IHw9IFRMU19UQ0xfQ0FMTEJBQ0s7CisgCisgICAgIFRjbF9JbmNyUmVmQ291bnQoIGNtZFB0cik7 CistICAgIGlmIChUY2xfRXZhbE9iakV4KHN0YXRlUHRyLT5pbnRlcnAsIGNtZFB0ciwgVENMX0VW QUxfR0xPQkFMKSAhPSBUQ0xfT0spIHsKKysgICAgY29kZSA9IFRjbF9FdmFsT2JqRXgoc3RhdGVQ dHItPmludGVycCwgY21kUHRyLCBUQ0xfRVZBTF9HTE9CQUwpOworKyAgICBpZiAoY29kZSAhPSBU Q0xfT0spIHsKKyAJLyogSXQgZ290IGFuIGVycm9yIC0gcmVqZWN0IHRoZSBjZXJ0aWZpY2F0ZS4J CSovCistCVRjbF9CYWNrZ3JvdW5kRXJyb3IoIHN0YXRlUHRyLT5pbnRlcnApOworKyNpZiAoVENM X01BSk9SX1ZFUlNJT04gPT0gOCkgJiYgKFRDTF9NSU5PUl9WRVJTSU9OIDwgNikKKysJVGNsX0Jh Y2tncm91bmRFcnJvcihzdGF0ZVB0ci0+aW50ZXJwKTsKKysjZWxzZQorKwlUY2xfQmFja2dyb3Vu ZEV4Y2VwdGlvbihzdGF0ZVB0ci0+aW50ZXJwLCBjb2RlKTsKKysjZW5kaWYKKyAJb2sgPSAwOwor ICAgICB9IGVsc2UgeworIAlyZXN1bHQgPSBUY2xfR2V0T2JqUmVzdWx0KHN0YXRlUHRyLT5pbnRl cnApOworIAlzdHJpbmcgPSBUY2xfR2V0U3RyaW5nRnJvbU9iaihyZXN1bHQsICZsZW5ndGgpOwor IAkvKiBBbiBlbXB0eSByZXN1bHQgbGVhdmVzIHZlcmlmaWNhdGlvbiB1bmNoYW5nZWQuCSovCisg CWlmIChzdHJpbmcgIT0gTlVMTCAmJiBsZW5ndGggPiAwKSB7CistCSAgICBpZiAoVGNsX0dldElu dEZyb21PYmooc3RhdGVQdHItPmludGVycCwgcmVzdWx0LCAmb2spICE9IFRDTF9PSykgeworKwkg ICAgY29kZSA9IFRjbF9HZXRJbnRGcm9tT2JqKHN0YXRlUHRyLT5pbnRlcnAsIHJlc3VsdCwgJm9r KTsKKysJICAgIGlmIChjb2RlICE9IFRDTF9PSykgeworKyNpZiAoVENMX01BSk9SX1ZFUlNJT04g PT0gOCkgJiYgKFRDTF9NSU5PUl9WRVJTSU9OIDwgNikKKyAJCVRjbF9CYWNrZ3JvdW5kRXJyb3Io c3RhdGVQdHItPmludGVycCk7CisrI2Vsc2UKKysJCVRjbF9CYWNrZ3JvdW5kRXhjZXB0aW9uKHN0 YXRlUHRyLT5pbnRlcnAsIGNvZGUpOworKyNlbmRpZgorIAkJb2sgPSAwOworIAkgICAgfQorIAl9 CitAQCAtMzYwLDkgKzM0Niw5IEBAIFZlcmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9D VFggKmN0eCkKKyAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKi8KKyB2b2lkCistVGxzX0Vycm9yKFN0YXRlICpz dGF0ZVB0ciwgY2hhciAqbXNnKQorLXsKKytUbHNfRXJyb3IoU3RhdGUgKnN0YXRlUHRyLCBjaGFy ICptc2cpIHsKKyAgICAgVGNsX09iaiAqY21kUHRyOworKyAgICBpbnQgY29kZTsKKyAKKyAgICAg ZHByaW50ZigiQ2FsbGVkIik7CisgCitAQCAtMzc4LDcgKzM2NCwxMSBAQCBUbHNfRXJyb3IoU3Rh dGUgKnN0YXRlUHRyLCBjaGFyICptc2cpCisgCXNwcmludGYoYnVmLCAiU1NMIGNoYW5uZWwgXCIl c1wiOiBlcnJvcjogJXMiLAorIAkgICAgVGNsX0dldENoYW5uZWxOYW1lKHN0YXRlUHRyLT5zZWxm KSwgbXNnKTsKKyAJVGNsX1NldFJlc3VsdCggc3RhdGVQdHItPmludGVycCwgYnVmLCBUQ0xfVk9M QVRJTEUpOworLQlUY2xfQmFja2dyb3VuZEVycm9yKCBzdGF0ZVB0ci0+aW50ZXJwKTsKKysjaWYg KFRDTF9NQUpPUl9WRVJTSU9OID09IDgpICYmIChUQ0xfTUlOT1JfVkVSU0lPTiA8IDYpCisrCVRj bF9CYWNrZ3JvdW5kRXJyb3Ioc3RhdGVQdHItPmludGVycCk7CisrI2Vsc2UKKysJVGNsX0JhY2tn cm91bmRFeGNlcHRpb24oc3RhdGVQdHItPmludGVycCwgVENMX0VSUk9SKTsKKysjZW5kaWYKKyAJ cmV0dXJuOworICAgICB9CisgICAgIGNtZFB0ciA9IFRjbF9EdXBsaWNhdGVPYmooc3RhdGVQdHIt PmNhbGxiYWNrKTsKK0BAIC0zOTYsOCArMzg2LDEzIEBAIFRsc19FcnJvcihTdGF0ZSAqc3RhdGVQ dHIsIGNoYXIgKm1zZykKKyAgICAgVGNsX1ByZXNlcnZlKChDbGllbnREYXRhKSBzdGF0ZVB0cik7 CisgCisgICAgIFRjbF9JbmNyUmVmQ291bnQoY21kUHRyKTsKKy0gICAgaWYgKFRjbF9FdmFsT2Jq RXgoc3RhdGVQdHItPmludGVycCwgY21kUHRyLCBUQ0xfRVZBTF9HTE9CQUwpICE9IFRDTF9PSykg eworKyAgICBjb2RlID0gVGNsX0V2YWxPYmpFeChzdGF0ZVB0ci0+aW50ZXJwLCBjbWRQdHIsIFRD TF9FVkFMX0dMT0JBTCk7CisrICAgIGlmIChjb2RlICE9IFRDTF9PSykgeworKyNpZiAoVENMX01B Sk9SX1ZFUlNJT04gPT0gOCkgJiYgKFRDTF9NSU5PUl9WRVJTSU9OIDwgNikKKyAJVGNsX0JhY2tn cm91bmRFcnJvcihzdGF0ZVB0ci0+aW50ZXJwKTsKKysjZWxzZQorKwlUY2xfQmFja2dyb3VuZEV4 Y2VwdGlvbihzdGF0ZVB0ci0+aW50ZXJwLCBjb2RlKTsKKysjZW5kaWYKKyAgICAgfQorICAgICBU Y2xfRGVjclJlZkNvdW50KGNtZFB0cik7CisgCitAQCAtNDIxLDIxICs0MTYsMTkgQEAgVGxzX0Vy cm9yKFN0YXRlICpzdGF0ZVB0ciwgY2hhciAqbXNnKQorICAqIHZhcmlhYmxlIHRvIGFjY2VzcyB0 aGUgVGNsIGludGVycHJldGVyLgorICovCisgc3RhdGljIGludAorLVBhc3N3b3JkQ2FsbGJhY2so Y2hhciAqYnVmLCBpbnQgc2l6ZSwgaW50IHZlcmlmeSkKKy17CisrUGFzc3dvcmRDYWxsYmFjayhj aGFyICpidWYsIGludCBzaXplLCBpbnQgdmVyaWZ5KSB7CisgICAgIHJldHVybiAtMTsKKy0gICAg CWJ1ZiA9IGJ1ZjsKKysJYnVmID0gYnVmOworIAlzaXplID0gc2l6ZTsKKyAJdmVyaWZ5ID0gdmVy aWZ5OworIH0KKyAjZWxzZQorIHN0YXRpYyBpbnQKKy1QYXNzd29yZENhbGxiYWNrKGNoYXIgKmJ1 ZiwgaW50IHNpemUsIGludCB2ZXJpZnksIHZvaWQgKnVkYXRhKQorLXsKKytQYXNzd29yZENhbGxi YWNrKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGludCB2ZXJpZnksIHZvaWQgKnVkYXRhKSB7CisgICAg IFN0YXRlICpzdGF0ZVB0cgk9IChTdGF0ZSAqKSB1ZGF0YTsKKyAgICAgVGNsX0ludGVycCAqaW50 ZXJwCT0gc3RhdGVQdHItPmludGVycDsKKyAgICAgVGNsX09iaiAqY21kUHRyOworLSAgICBpbnQg cmVzdWx0OworKyAgICBpbnQgY29kZTsKKyAKKyAgICAgZHByaW50ZigiQ2FsbGVkIik7CisgCitA QCAtNDUyLDI3ICs0NDUsMzIgQEAgUGFzc3dvcmRDYWxsYmFjayhjaGFyICpidWYsIGludCBzaXpl LCBpbnQgdmVyaWZ5LCB2b2lkICp1ZGF0YSkKKyAKKyAgICAgY21kUHRyID0gVGNsX0R1cGxpY2F0 ZU9iaihzdGF0ZVB0ci0+cGFzc3dvcmQpOworIAorLSAgICBUY2xfUHJlc2VydmUoKENsaWVudERh dGEpIHN0YXRlUHRyLT5pbnRlcnApOworKyAgICBUY2xfUHJlc2VydmUoKENsaWVudERhdGEpIGlu dGVycCk7CisgICAgIFRjbF9QcmVzZXJ2ZSgoQ2xpZW50RGF0YSkgc3RhdGVQdHIpOworIAorICAg ICBUY2xfSW5jclJlZkNvdW50KGNtZFB0cik7CistICAgIHJlc3VsdCA9IFRjbF9FdmFsT2JqRXgo aW50ZXJwLCBjbWRQdHIsIFRDTF9FVkFMX0dMT0JBTCk7CistICAgIGlmIChyZXN1bHQgIT0gVENM X09LKSB7CistCVRjbF9CYWNrZ3JvdW5kRXJyb3Ioc3RhdGVQdHItPmludGVycCk7CisrICAgIGNv ZGUgPSBUY2xfRXZhbE9iakV4KGludGVycCwgY21kUHRyLCBUQ0xfRVZBTF9HTE9CQUwpOworKyAg ICBpZiAoY29kZSAhPSBUQ0xfT0spIHsKKysjaWYgKFRDTF9NQUpPUl9WRVJTSU9OID09IDgpICYm IChUQ0xfTUlOT1JfVkVSU0lPTiA8IDYpCisrCVRjbF9CYWNrZ3JvdW5kRXJyb3IoaW50ZXJwKTsK KysjZWxzZQorKwlUY2xfQmFja2dyb3VuZEV4Y2VwdGlvbihpbnRlcnAsIGNvZGUpOworKyNlbmRp ZgorICAgICB9CisgICAgIFRjbF9EZWNyUmVmQ291bnQoY21kUHRyKTsKKyAKKyAgICAgVGNsX1Jl bGVhc2UoKENsaWVudERhdGEpIHN0YXRlUHRyKTsKKy0gICAgVGNsX1JlbGVhc2UoKENsaWVudERh dGEpIHN0YXRlUHRyLT5pbnRlcnApOworIAorLSAgICBpZiAocmVzdWx0ID09IFRDTF9PSykgewor KyAgICBpZiAoY29kZSA9PSBUQ0xfT0spIHsKKyAJY2hhciAqcmV0ID0gKGNoYXIgKikgVGNsX0dl dFN0cmluZ1Jlc3VsdChpbnRlcnApOworLQlzdHJuY3B5KGJ1ZiwgcmV0LCAoc2l6ZV90KSBzaXpl KTsKKy0JcmV0dXJuIChpbnQpc3RybGVuKHJldCk7CistICAgIH0gZWxzZSB7CistCXJldHVybiAt MTsKKy0gICAgfQorLSAgICAJdmVyaWZ5ID0gdmVyaWZ5OworKwlpZiAoc3RybGVuKHJldCkgPCBz aXplIC0gMSkgeworKwkgICAgc3RybmNweShidWYsIHJldCwgKHNpemVfdCkgc2l6ZSk7CisrCSAg ICBUY2xfUmVsZWFzZSgoQ2xpZW50RGF0YSkgaW50ZXJwKTsKKysJICAgIHJldHVybiAoaW50KXN0 cmxlbihyZXQpOworKwl9CisrICAgICB9CisrICAgIFRjbF9SZWxlYXNlKChDbGllbnREYXRhKSBp bnRlcnApOworKyAgICByZXR1cm4gLTE7CisgfQorICNlbmRpZgorIAwKK0BAIC00OTMsMTMgKzQ5 MSw4IEBAIFBhc3N3b3JkQ2FsbGJhY2soY2hhciAqYnVmLCBpbnQgc2l6ZSwgaW50IHZlcmlmeSwg dm9pZCAqdWRhdGEpCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCisgc3RhdGljIGludAorLUNpcGhlcnNP YmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorLSAgICBDbGllbnREYXRhIGNs aWVudERhdGE7CS8qIE5vdCB1c2VkLiAqLworLSAgICBUY2xfSW50ZXJwICppbnRlcnA7CistICAg IGludCBvYmpjOworLSAgICBUY2xfT2JqCSpDT05TVCBvYmp2W107CisteworLSAgICBzdGF0aWMg Q09OU1Q4NCBjaGFyICpwcm90b2NvbHNbXSA9IHsKKytDaXBoZXJzT2JqQ21kKENsaWVudERhdGEg Y2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qg b2JqdltdKSB7CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpwcm90b2NvbHNbXSA9IHsKKyAJInNz bDIiLAkic3NsMyIsCSJ0bHMxIiwJInRsczEuMSIsICJ0bHMxLjIiLCAidGxzMS4zIiwgTlVMTAor ICAgICB9OworICAgICBlbnVtIHByb3RvY29sIHsKK0BAIC01NjksNyArNTYyLDggQEAgQ2lwaGVy c09iakNtZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgI2Vsc2UKKyAJCWN0eCA9 IFNTTF9DVFhfbmV3KFRMU19tZXRob2QoKSk7IGJyZWFrOworICAgICAgICAgICAgICAgICBTU0xf Q1RYX3NldF9taW5fcHJvdG9fdmVyc2lvbiAoY3R4LCBUTFMxXzNfVkVSU0lPTik7CistICAgICAg ICAgICAgICAgIFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uIChjdHgsIFRMUzFfM19WRVJT SU9OKTsKKysJCVNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uIChjdHgsIFRMUzFfM19WRVJT SU9OKTsKKysJCWJyZWFrOworICNlbmRpZgorICAgICBkZWZhdWx0OgorIAkJYnJlYWs7CitAQCAt NjE3LDcgKzYxMSw3IEBAIENpcGhlcnNPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBv Ymp2KQorIAorICAgICBUY2xfU2V0T2JqUmVzdWx0KCBpbnRlcnAsIG9ialB0cik7CisgICAgIHJl dHVybiBUQ0xfT0s7CistICAgIAljbGllbnREYXRhID0gY2xpZW50RGF0YTsKKysJY2xpZW50RGF0 YSA9IGNsaWVudERhdGE7CisgfQorIAwKKyAvKgorQEAgLTYzNywxMCArNjMxLDEwIEBAIENpcGhl cnNPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorICAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAqLworIAorLXN0YXRpYyBpbnQgSGFuZHNoYWtlT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0 YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqQ09OU1Qgb2JqdltdKSB7 Cisrc3RhdGljIGludCBIYW5kc2hha2VPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xf SW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pIHsKKyAJVGNs X0NoYW5uZWwgY2hhbjsJCS8qIFRoZSBjaGFubmVsIHRvIHNldCBhIG1vZGUgb24uICovCisgCVN0 YXRlICpzdGF0ZVB0cjsJCS8qIGNsaWVudCBzdGF0ZSBmb3Igc3NsIHNvY2tldCAqLworLQlDT05T VCBjaGFyICplcnJTdHIgPSBOVUxMOworKwljb25zdCBjaGFyICplcnJTdHIgPSBOVUxMOworIAlp bnQgcmV0ID0gMTsKKyAJaW50IGVyciA9IDA7CisgCitAQCAtNjcwLDEwICs2NjQsNyBAQCBzdGF0 aWMgaW50IEhhbmRzaGFrZU9iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAg KmludGVycCwgaW50IG9iamMsCisgCXJldCA9IFRsc19XYWl0Rm9yQ29ubmVjdChzdGF0ZVB0ciwg JmVyciwgMSk7CisgCWRwcmludGYoIlRsc19XYWl0Rm9yQ29ubmVjdCByZXR1cm5lZDogJWkiLCBy ZXQpOworIAorLQlpZiAoCistCSAgICByZXQgPCAwICYmIFwKKy0JICAgICgoc3RhdGVQdHItPmZs YWdzICYgVExTX1RDTF9BU1lOQykgJiYgZXJyID09IEVBR0FJTikKKy0JKSB7CisrCWlmIChyZXQg PCAwICYmICgoc3RhdGVQdHItPmZsYWdzICYgVExTX1RDTF9BU1lOQykgJiYgKGVyciA9PSBFQUdB SU4pKSkgeworIAkJZHByaW50ZigiQXN5bmMgc2V0IGFuZCBlcnIgPSBFQUdBSU4iKTsKKyAJCXJl dCA9IDA7CisgCX0gZWxzZSBpZiAocmV0IDwgMCkgeworQEAgLTcwMCw3ICs2OTEsNyBAQCBzdGF0 aWMgaW50IEhhbmRzaGFrZU9iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAg KmludGVycCwgaW50IG9iamMsCisgCVRjbF9TZXRPYmpSZXN1bHQoaW50ZXJwLCBUY2xfTmV3SW50 T2JqKHJldCkpOworIAlyZXR1cm4oVENMX09LKTsKKyAKKy0gICAgCWNsaWVudERhdGEgPSBjbGll bnREYXRhOworKwljbGllbnREYXRhID0gY2xpZW50RGF0YTsKKyB9CisgCisgLyoKK0BAIC03MjIs MTIgKzcxMyw3IEBAIHN0YXRpYyBpbnQgSGFuZHNoYWtlT2JqQ21kKENsaWVudERhdGEgY2xpZW50 RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywKKyAgKi8KKyAKKyBzdGF0aWMgaW50 CistSW1wb3J0T2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKy0gICAgQ2xp ZW50RGF0YSBjbGllbnREYXRhOwkvKiBOb3QgdXNlZC4gKi8KKy0gICAgVGNsX0ludGVycCAqaW50 ZXJwOworLSAgICBpbnQgb2JqYzsKKy0gICAgVGNsX09iaiAqQ09OU1Qgb2JqdltdOworLXsKKytJ bXBvcnRPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGlu dCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pIHsKKyAgICAgVGNsX0NoYW5uZWwgY2hhbjsJ CS8qIFRoZSBjaGFubmVsIHRvIHNldCBhIG1vZGUgb24uICovCisgICAgIFN0YXRlICpzdGF0ZVB0 cjsJCS8qIGNsaWVudCBzdGF0ZSBmb3Igc3NsIHNvY2tldCAqLworICAgICBTU0xfQ1RYICpjdHgJ ICAgICAgICA9IE5VTEw7CitAQCAtODExLDcgKzc5Nyw3IEBAIEltcG9ydE9iakNtZChjbGllbnRE YXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgCU9QVEJPT0woICItcmVxdWVzdCIsIHJlcXVlc3Qp OworIAlPUFRCT09MKCAiLXNlcnZlciIsIHNlcnZlcik7CisgI2lmbmRlZiBPUEVOU1NMX05PX1RM U0VYVAorLSAgICAgICAgT1BUU1RSKCAiLXNlcnZlcm5hbWUiLCBzZXJ2ZXJuYW1lKTsKKysJT1BU U1RSKCAiLXNlcnZlcm5hbWUiLCBzZXJ2ZXJuYW1lKTsKKyAjZW5kaWYKKyAKKyAJT1BUQk9PTCgg Ii1zc2wyIiwgc3NsMik7CitAQCAtODg0LDEwICs4NzEsMTAgQEAgSW1wb3J0T2JqQ21kKGNsaWVu dERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKyAJICAgIHJldHVybiBUQ0xfRVJST1I7CisgCX0K KyAKKy0gICAgICAgIC8qCistICAgICAgICAgKiBNYWtlIHN1cmUgdG8gb3BlcmF0ZSBvbiB0aGUg dG9wbW9zdCBjaGFubmVsCistICAgICAgICAgKi8KKy0gICAgICAgIGNoYW4gPSBUY2xfR2V0VG9w Q2hhbm5lbChjaGFuKTsKKysJLyoKKysJICogTWFrZSBzdXJlIHRvIG9wZXJhdGUgb24gdGhlIHRv cG1vc3QgY2hhbm5lbAorKwkgKi8KKysJY2hhbiA9IFRjbF9HZXRUb3BDaGFubmVsKGNoYW4pOwor IAlpZiAoVGNsX0dldENoYW5uZWxUeXBlKGNoYW4pICE9IFRsc19DaGFubmVsVHlwZSgpKSB7Cisg CSAgICBUY2xfQXBwZW5kUmVzdWx0KGludGVycCwgImJhZCBjaGFubmVsIFwiIiwKKyAJCSAgICBU Y2xfR2V0Q2hhbm5lbE5hbWUoY2hhbiksICJcIjogbm90IGEgVExTIGNoYW5uZWwiLCBOVUxMKTsK K0BAIC05NTMsMTIgKzk0MCwxMiBAQCBJbXBvcnRPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBv YmpjLCBvYmp2KQorIAorICNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKyAgICAgaWYgKHNlcnZl cm5hbWUpIHsKKy0gICAgICAgIGlmICghU1NMX3NldF90bHNleHRfaG9zdF9uYW1lKHN0YXRlUHRy LT5zc2wsIHNlcnZlcm5hbWUpICYmIHJlcXVpcmUpIHsKKy0gICAgICAgICAgICBUY2xfQXBwZW5k UmVzdWx0KGludGVycCwgInNldHRpbmcgVExTIGhvc3QgbmFtZSBleHRlbnNpb24gZmFpbGVkIiwK Ky0gICAgICAgICAgICAgICAgKGNoYXIgKikgTlVMTCk7CistICAgICAgICAgICAgVGxzX0ZyZWUo KGNoYXIgKikgc3RhdGVQdHIpOworLSAgICAgICAgICAgIHJldHVybiBUQ0xfRVJST1I7CistICAg ICAgICB9CisrCWlmICghU1NMX3NldF90bHNleHRfaG9zdF9uYW1lKHN0YXRlUHRyLT5zc2wsIHNl cnZlcm5hbWUpICYmIHJlcXVpcmUpIHsKKysJICAgIFRjbF9BcHBlbmRSZXN1bHQoaW50ZXJwLCAi c2V0dGluZyBUTFMgaG9zdCBuYW1lIGV4dGVuc2lvbiBmYWlsZWQiLAorKwkJKGNoYXIgKikgTlVM TCk7CisrCSAgICBUbHNfRnJlZSgoY2hhciAqKSBzdGF0ZVB0cik7CisrCSAgICByZXR1cm4gVENM X0VSUk9SOworKwl9CisgICAgIH0KKyAjZW5kaWYKKyAKK0BAIC05NjYsNyArOTUzLDcgQEAgSW1w b3J0T2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKyAgICAgICogU1NMIENh bGxiYWNrcworICAgICAgKi8KKyAKKy0gICAgU1NMX3NldF9hcHBfZGF0YShzdGF0ZVB0ci0+c3Ns LCAoVk9JRCAqKXN0YXRlUHRyKTsJLyogcG9pbnQgYmFjayB0byB1cyAqLworKyAgICBTU0xfc2V0 X2FwcF9kYXRhKHN0YXRlUHRyLT5zc2wsICh2b2lkICopc3RhdGVQdHIpOwkvKiBwb2ludCBiYWNr IHRvIHVzICovCisgCisgICAgIFNTTF9zZXRfdmVyaWZ5KHN0YXRlUHRyLT5zc2wsIHZlcmlmeSwg VmVyaWZ5Q2FsbGJhY2spOworIAorQEAgLTk5Miw3ICs5NzksNyBAQCBJbXBvcnRPYmpDbWQoY2xp ZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwg KGNoYXIgKikgVGNsX0dldENoYW5uZWxOYW1lKHN0YXRlUHRyLT5zZWxmKSwKKyAJICAgIFRDTF9W T0xBVElMRSk7CisgICAgIHJldHVybiBUQ0xfT0s7CistICAgIAljbGllbnREYXRhID0gY2xpZW50 RGF0YTsKKysJY2xpZW50RGF0YSA9IGNsaWVudERhdGE7CisgfQorIAwKKyAvKgorQEAgLTEwMTIs MTIgKzk5OSw3IEBAIEltcG9ydE9iakNtZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYp CisgICovCisgCisgc3RhdGljIGludAorLVVuaW1wb3J0T2JqQ21kKGNsaWVudERhdGEsIGludGVy cCwgb2JqYywgb2JqdikKKy0gICAgQ2xpZW50RGF0YSBjbGllbnREYXRhOwkvKiBOb3QgdXNlZC4g Ki8KKy0gICAgVGNsX0ludGVycCAqaW50ZXJwOworLSAgICBpbnQgb2JqYzsKKy0gICAgVGNsX09i aiAqQ09OU1Qgb2JqdltdOworLXsKKytVbmltcG9ydE9iakNtZChDbGllbnREYXRhIGNsaWVudERh dGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSkg eworICAgICBUY2xfQ2hhbm5lbCBjaGFuOwkJLyogVGhlIGNoYW5uZWwgdG8gc2V0IGEgbW9kZSBv bi4gKi8KKyAKKyAgICAgZHByaW50ZigiQ2FsbGVkIik7CitAQCAtMTA0OCw3ICsxMDMwLDcgQEAg VW5pbXBvcnRPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorICAgICB9Cisg CisgICAgIHJldHVybiBUQ0xfT0s7CistICAgIAljbGllbnREYXRhID0gY2xpZW50RGF0YTsKKysJ Y2xpZW50RGF0YSA9IGNsaWVudERhdGE7CisgfQorIAwKKyAvKgorQEAgLTEwNjYsMjIgKzEwNDgs OSBAQCBVbmltcG9ydE9iakNtZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgICov CisgCisgc3RhdGljIFNTTF9DVFggKgorLUNUWF9Jbml0KHN0YXRlUHRyLCBpc1NlcnZlciwgcHJv dG8sIGtleWZpbGUsIGNlcnRmaWxlLCBrZXksIGNlcnQsCistICAgICAgICAga2V5X2xlbiwgY2Vy dF9sZW4sIENBZGlyLCBDQWZpbGUsIGNpcGhlcnMsIERIcGFyYW1zKQorLSAgICBTdGF0ZSAqc3Rh dGVQdHI7CistICAgIGludCBpc1NlcnZlcjsKKy0gICAgaW50IHByb3RvOworLSAgICBjaGFyICpr ZXlmaWxlOworLSAgICBjaGFyICpjZXJ0ZmlsZTsKKy0gICAgdW5zaWduZWQgY2hhciAqa2V5Owor LSAgICB1bnNpZ25lZCBjaGFyICpjZXJ0OworLSAgICBpbnQga2V5X2xlbjsKKy0gICAgaW50IGNl cnRfbGVuOworLSAgICBjaGFyICpDQWRpcjsKKy0gICAgY2hhciAqQ0FmaWxlOworLSAgICBjaGFy ICpjaXBoZXJzOworLSAgICBjaGFyICpESHBhcmFtczsKKy17CisrQ1RYX0luaXQoU3RhdGUgKnN0 YXRlUHRyLCBpbnQgaXNTZXJ2ZXIsIGludCBwcm90bywgY2hhciAqa2V5ZmlsZSwgY2hhciAqY2Vy dGZpbGUsCisrICAgIHVuc2lnbmVkIGNoYXIgKmtleSwgdW5zaWduZWQgY2hhciAqY2VydCwgaW50 IGtleV9sZW4sIGludCBjZXJ0X2xlbiwgY2hhciAqQ0FkaXIsCisrICAgIGNoYXIgKkNBZmlsZSwg Y2hhciAqY2lwaGVycywgY2hhciAqREhwYXJhbXMpIHsKKyAgICAgVGNsX0ludGVycCAqaW50ZXJw ID0gc3RhdGVQdHItPmludGVycDsKKyAgICAgU1NMX0NUWCAqY3R4ID0gTlVMTDsKKyAgICAgVGNs X0RTdHJpbmcgZHM7CitAQCAtMTEzOCw0NCArMTEwNyw0NCBAQCBDVFhfSW5pdChzdGF0ZVB0ciwg aXNTZXJ2ZXIsIHByb3RvLCBrZXlmaWxlLCBjZXJ0ZmlsZSwga2V5LCBjZXJ0LAorICAgICBzd2l0 Y2ggKHByb3RvKSB7CisgI2lmICFkZWZpbmVkKE5PX1NTTDIpCisgICAgIGNhc2UgVExTX1BST1RP X1NTTDI6CistCW1ldGhvZCA9IFNTTHYyX21ldGhvZCAoKTsKKysJbWV0aG9kID0gU1NMdjJfbWV0 aG9kKCk7CisgCWJyZWFrOworICNlbmRpZgorICNpZiAhZGVmaW5lZChOT19TU0wzKQorICAgICBj YXNlIFRMU19QUk9UT19TU0wzOgorLQltZXRob2QgPSBTU0x2M19tZXRob2QgKCk7CisrCW1ldGhv ZCA9IFNTTHYzX21ldGhvZCgpOworIAlicmVhazsKKyAjZW5kaWYKKyAjaWYgIWRlZmluZWQoTk9f VExTMSkKKyAgICAgY2FzZSBUTFNfUFJPVE9fVExTMToKKy0JbWV0aG9kID0gVExTdjFfbWV0aG9k ICgpOworKwltZXRob2QgPSBUTFN2MV9tZXRob2QoKTsKKyAJYnJlYWs7CisgI2VuZGlmCisgI2lm ICFkZWZpbmVkKE5PX1RMUzFfMSkKKyAgICAgY2FzZSBUTFNfUFJPVE9fVExTMV8xOgorLQltZXRo b2QgPSBUTFN2MV8xX21ldGhvZCAoKTsKKysJbWV0aG9kID0gVExTdjFfMV9tZXRob2QoKTsKKyAJ YnJlYWs7CisgI2VuZGlmCisgI2lmICFkZWZpbmVkKE5PX1RMUzFfMikKKyAgICAgY2FzZSBUTFNf UFJPVE9fVExTMV8yOgorLQltZXRob2QgPSBUTFN2MV8yX21ldGhvZCAoKTsKKysJbWV0aG9kID0g VExTdjFfMl9tZXRob2QoKTsKKyAJYnJlYWs7CisgI2VuZGlmCisgI2lmICFkZWZpbmVkKE5PX1RM UzFfMykKKyAgICAgY2FzZSBUTFNfUFJPVE9fVExTMV8zOgorLSAgICAgICAgLyoKKy0gICAgICAg ICAqIFRoZSB2ZXJzaW9uIHJhbmdlIGlzIGNvbnN0cmFpbmVkIGJlbG93LAorLSAgICAgICAgICog YWZ0ZXIgdGhlIGNvbnRleHQgaXMgY3JlYXRlZC4gIFVzZSB0aGUKKy0gICAgICAgICAqIGdlbmVy aWMgbWV0aG9kIGhlcmUuCistICAgICAgICAgKi8KKy0JbWV0aG9kID0gVExTX21ldGhvZCAoKTsK KysJLyoKKysJICogVGhlIHZlcnNpb24gcmFuZ2UgaXMgY29uc3RyYWluZWQgYmVsb3csCisrCSAq IGFmdGVyIHRoZSBjb250ZXh0IGlzIGNyZWF0ZWQuICBVc2UgdGhlCisrCSAqIGdlbmVyaWMgbWV0 aG9kIGhlcmUuCisrCSAqLworKwltZXRob2QgPSBUTFNfbWV0aG9kKCk7CisgCWJyZWFrOworICNl bmRpZgorICAgICBkZWZhdWx0OgorICNpZmRlZiBIQVZFX1RMU19NRVRIT0QKKy0gICAgICAgIG1l dGhvZCA9IFRMU19tZXRob2QgKCk7CisrCW1ldGhvZCA9IFRMU19tZXRob2QoKTsKKyAjZWxzZQor LSAgICAgICAgbWV0aG9kID0gU1NMdjIzX21ldGhvZCAoKTsKKysJbWV0aG9kID0gU1NMdjIzX21l dGhvZCgpOworICNlbmRpZgorICNpZiAhZGVmaW5lZChOT19TU0wyKQorIAlvZmYgfD0gKEVOQUJM RUQocHJvdG8sIFRMU19QUk9UT19TU0wyKSAgID8gMCA6IFNTTF9PUF9OT19TU0x2Mik7CitAQCAt MTE5OCwyMCArMTE2NywyMCBAQCBDVFhfSW5pdChzdGF0ZVB0ciwgaXNTZXJ2ZXIsIHByb3RvLCBr ZXlmaWxlLCBjZXJ0ZmlsZSwga2V5LCBjZXJ0LAorIAlicmVhazsKKyAgICAgfQorICAgICAKKy0g ICAgY3R4ID0gU1NMX0NUWF9uZXcgKG1ldGhvZCk7CisrICAgIGN0eCA9IFNTTF9DVFhfbmV3KG1l dGhvZCk7CisgCisgICAgIGlmICghY3R4KSB7CistICAgICAgICByZXR1cm4oTlVMTCk7CisrCXJl dHVybihOVUxMKTsKKyAgICAgfQorIAorICNpZiAhZGVmaW5lZChOT19UTFMxXzMpCisgICAgIGlm IChwcm90byA9PSBUTFNfUFJPVE9fVExTMV8zKSB7CistICAgICAgICBTU0xfQ1RYX3NldF9taW5f cHJvdG9fdmVyc2lvbiAoY3R4LCBUTFMxXzNfVkVSU0lPTik7CistICAgICAgICBTU0xfQ1RYX3Nl dF9tYXhfcHJvdG9fdmVyc2lvbiAoY3R4LCBUTFMxXzNfVkVSU0lPTik7CisrCVNTTF9DVFhfc2V0 X21pbl9wcm90b192ZXJzaW9uIChjdHgsIFRMUzFfM19WRVJTSU9OKTsKKysJU1NMX0NUWF9zZXRf bWF4X3Byb3RvX3ZlcnNpb24gKGN0eCwgVExTMV8zX1ZFUlNJT04pOworICAgICB9CisgI2VuZGlm CisgICAgIAorLSAgICBTU0xfQ1RYX3NldF9hcHBfZGF0YSggY3R4LCAoVk9JRCopaW50ZXJwKTsJ LyogcmVtZW1iZXIgdGhlIGludGVycHJldGVyICovCisrICAgIFNTTF9DVFhfc2V0X2FwcF9kYXRh KCBjdHgsICh2b2lkKilpbnRlcnApOwkvKiByZW1lbWJlciB0aGUgaW50ZXJwcmV0ZXIgKi8KKyAg ICAgU1NMX0NUWF9zZXRfb3B0aW9ucyggY3R4LCBTU0xfT1BfQUxMKTsJLyogYWxsIFNTTCBidWcg d29ya2Fyb3VuZHMgKi8KKyAgICAgU1NMX0NUWF9zZXRfb3B0aW9ucyggY3R4LCBvZmYpOwkvKiBh bGwgU1NMIGJ1ZyB3b3JrYXJvdW5kcyAqLworICAgICBTU0xfQ1RYX3Nlc3Nfc2V0X2NhY2hlX3Np emUoIGN0eCwgMTI4KTsKK0BAIC0xMzc0LDcgKzEzNDMsNyBAQCBDVFhfSW5pdChzdGF0ZVB0ciwg aXNTZXJ2ZXIsIHByb3RvLCBrZXlmaWxlLCBjZXJ0ZmlsZSwga2V5LCBjZXJ0LAorICAgICAvKiBo dHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL3Rscy9idWdzLzU3LyAqLworICAgICAvKiBYWFg6VE9E TzogTGV0IHRoZSB1c2VyIHN1cHBseSB2YWx1ZXMgaGVyZSBpbnN0ZWFkIG9mIHNvbWV0aGluZyB0 aGF0IGV4aXN0cyBvbiB0aGUgZmlsZXN5c3RlbSAqLworICAgICBpZiAoIENBZmlsZSAhPSBOVUxM ICkgeworLSAgICAgICAgU1RBQ0tfT0YoWDUwOV9OQU1FKSAqY2VydE5hbWVzID0gU1NMX2xvYWRf Y2xpZW50X0NBX2ZpbGUoIEYyTihDQWZpbGUsICZkcykgKTsKKysJU1RBQ0tfT0YoWDUwOV9OQU1F KSAqY2VydE5hbWVzID0gU1NMX2xvYWRfY2xpZW50X0NBX2ZpbGUoIEYyTihDQWZpbGUsICZkcykg KTsKKyAJaWYgKCBjZXJ0TmFtZXMgIT0gTlVMTCApIHsgCisgCSAgICBTU0xfQ1RYX3NldF9jbGll bnRfQ0FfbGlzdChjdHgsIGNlcnROYW1lcyApOworIAl9CitAQCAtMTM5OSwxMiArMTM2OCw3IEBA IENUWF9Jbml0KHN0YXRlUHRyLCBpc1NlcnZlciwgcHJvdG8sIGtleWZpbGUsIGNlcnRmaWxlLCBr ZXksIGNlcnQsCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCisgc3RhdGljIGludAorLVN0YXR1c09iakNt ZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCistICAgIENsaWVudERhdGEgY2xpZW50 RGF0YTsJLyogTm90IHVzZWQuICovCistICAgIFRjbF9JbnRlcnAgKmludGVycDsKKy0gICAgaW50 IG9iamM7CistICAgIFRjbF9PYmoJKkNPTlNUIG9ianZbXTsKKy17CisrU3RhdHVzT2JqQ21kKENs aWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09i aiAqY29uc3Qgb2JqdltdKSB7CisgICAgIFN0YXRlICpzdGF0ZVB0cjsKKyAgICAgWDUwOSAqcGVl cjsKKyAgICAgVGNsX09iaiAqb2JqUHRyOworQEAgLTE0NzYsNyArMTQ0MCw3IEBAIFN0YXR1c09i akNtZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgCisgICAgIFRjbF9TZXRPYmpS ZXN1bHQoIGludGVycCwgb2JqUHRyKTsKKyAgICAgcmV0dXJuIFRDTF9PSzsKKy0gICAgCWNsaWVu dERhdGEgPSBjbGllbnREYXRhOworKwljbGllbnREYXRhID0gY2xpZW50RGF0YTsKKyB9CisgDAor IC8qCitAQCAtMTQ5MywxMiArMTQ1Nyw3IEBAIFN0YXR1c09iakNtZChjbGllbnREYXRhLCBpbnRl cnAsIG9iamMsIG9ianYpCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCisgc3RhdGljIGludAorLVZlcnNp b25PYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorLSAgICBDbGllbnREYXRh IGNsaWVudERhdGE7CS8qIE5vdCB1c2VkLiAqLworLSAgICBUY2xfSW50ZXJwICppbnRlcnA7Cist ICAgIGludCBvYmpjOworLSAgICBUY2xfT2JqCSpDT05TVCBvYmp2W107CisteworK1ZlcnNpb25P YmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpj LCBUY2xfT2JqICpjb25zdCBvYmp2W10pIHsKKyAgICAgVGNsX09iaiAqb2JqUHRyOworIAorICAg ICBkcHJpbnRmKCJDYWxsZWQiKTsKK0BAIC0xNTA3LDkgKzE0NjYsOSBAQCBWZXJzaW9uT2JqQ21k KGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKyAKKyAgICAgVGNsX1NldE9ialJlc3Vs dChpbnRlcnAsIG9ialB0cik7CisgICAgIHJldHVybiBUQ0xfT0s7CistICAgIAljbGllbnREYXRh ID0gY2xpZW50RGF0YTsKKy0gICAgCW9iamMgPSBvYmpjOworLSAgICAJb2JqdiA9IG9ianY7Cisr CWNsaWVudERhdGEgPSBjbGllbnREYXRhOworKwlvYmpjID0gb2JqYzsKKysJb2JqdiA9IG9ianY7 CisgfQorIAwKKyAvKgorQEAgLTE1MjYsMTUgKzE0ODUsMTAgQEAgVmVyc2lvbk9iakNtZChjbGll bnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCisgc3RhdGlj IGludAorLU1pc2NPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorLSAgICBD bGllbnREYXRhIGNsaWVudERhdGE7CS8qIE5vdCB1c2VkLiAqLworLSAgICBUY2xfSW50ZXJwICpp bnRlcnA7CistICAgIGludCBvYmpjOworLSAgICBUY2xfT2JqCSpDT05TVCBvYmp2W107Cistewor LSAgICBzdGF0aWMgQ09OU1Q4NCBjaGFyICpjb21tYW5kcyBbXSA9IHsgInJlcSIsIE5VTEwgfTsK Ky0gICAgZW51bSBjb21tYW5kIHsgQ19SRVEsIENfRFVNTVkgfTsKKy0gICAgaW50IGNtZDsKKytN aXNjT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQg b2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdKSB7CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpj b21tYW5kcyBbXSA9IHsgInJlcSIsICJzdHJyZXEiLCBOVUxMIH07CisrICAgIGVudW0gY29tbWFu ZCB7IENfUkVRLCBDX1NUUlJFUSwgQ19EVU1NWSB9OworKyAgICBpbnQgY21kOworIAorICAgICBk cHJpbnRmKCJDYWxsZWQiKTsKKyAKK0BAIC0xNTQyLDggKzE0OTcsNyBAQCBNaXNjT2JqQ21kKGNs aWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKyAJVGNsX1dyb25nTnVtQXJncyhpbnRlcnAs IDEsIG9ianYsICJzdWJjb21tYW5kID9hcmdzPyIpOworIAlyZXR1cm4gVENMX0VSUk9SOworICAg ICB9CistICAgIGlmIChUY2xfR2V0SW5kZXhGcm9tT2JqKGludGVycCwgb2JqdlsxXSwgY29tbWFu ZHMsCistCSAgICAiY29tbWFuZCIsIDAsJmNtZCkgIT0gVENMX09LKSB7CisrICAgIGlmIChUY2xf R2V0SW5kZXhGcm9tT2JqKGludGVycCwgb2JqdlsxXSwgY29tbWFuZHMsICJjb21tYW5kIiwgMCwm Y21kKSAhPSBUQ0xfT0spIHsKKyAJcmV0dXJuIFRDTF9FUlJPUjsKKyAgICAgfQorIAorQEAgLTE1 NjAsNyArMTUxNCw3IEBAIE1pc2NPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2 KQorIAkgICAgY2hhciAqa19DPSIiLCprX1NUPSIiLCprX0w9IiIsKmtfTz0iIiwqa19PVT0iIiwq a19DTj0iIiwqa19FbWFpbD0iIjsKKyAJICAgIGNoYXIgKmtleW91dCwqcGVtb3V0LCpzdHI7Cisg CSAgICBpbnQga2V5c2l6ZSxzZXJpYWw9MCxkYXlzPTM2NTsKKy0JICAgIAorKworIAkgICAgaWYg KChvYmpjPDUpIHx8IChvYmpjPjYpKSB7CisgCQlUY2xfV3JvbmdOdW1BcmdzKGludGVycCwgMiwg b2JqdiwgImtleXNpemUga2V5ZmlsZSBjZXJ0ZmlsZSA/aW5mbz8iKTsKKyAJCXJldHVybiBUQ0xf RVJST1I7CitAQCAtMTc3MSw3ICsxNzI1LDcgQEAgdm9pZCBUbHNfQ2xlYW4oU3RhdGUgKnN0YXRl UHRyKSB7CisgICogUmVzdWx0czogIFNzbCBjb25maWd1cmVkIGFuZCBsb2FkZWQKKyAgKgorICAq IFNpZGUgZWZmZWN0czoKKy0gKgkgY3JlYXRlIHRoZSBzc2wgY29tbWFuZCwgaW5pdGlhbGlzZSBz c2wgY29udGV4dAorKyAqCSBjcmVhdGUgdGhlIHNzbCBjb21tYW5kLCBpbml0aWFsaXplIHNzbCBj b250ZXh0CisgICoKKyAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKi8KK0BAIC0xNzc5LDEwICsxNzMzLDEwIEBA IHZvaWQgVGxzX0NsZWFuKFN0YXRlICpzdGF0ZVB0cikgeworIGludCBUbHNfSW5pdChUY2xfSW50 ZXJwICppbnRlcnApIHsKKyAJY29uc3QgY2hhciB0bHNUY2xJbml0U2NyaXB0W10gPSB7CisgI2lu Y2x1ZGUgInRscy50Y2wuaCIKKy0gICAgICAgICAgICAweDAwCisrCSAgICAweDAwCisgCX07Cisg CistICAgICAgICBkcHJpbnRmKCJDYWxsZWQiKTsKKysJZHByaW50ZigiQ2FsbGVkIik7CisgCisg CS8qCisgCSAqIFdlIG9ubHkgc3VwcG9ydCBUY2wgOC40IG9yIG5ld2VyCitAQCAtMTc5MSw3ICsx NzQ1LDcgQEAgaW50IFRsc19Jbml0KFRjbF9JbnRlcnAgKmludGVycCkgeworICNpZmRlZiBVU0Vf VENMX1NUVUJTCisgCSAgICBUY2xfSW5pdFN0dWJzKGludGVycCwgIjguNCIsIDApCisgI2Vsc2UK Ky0JICAgIFRjbF9Qa2dSZXF1aXJlKGludGVycCwgIlRjbCIsICI4LjQiLCAwKQorKwkgICAgVGNs X1BrZ1JlcXVpcmUoaW50ZXJwLCAiVGNsIiwgIjguNC0iLCAwKQorICNlbmRpZgorIAkgICAgID09 IE5VTEwpIHsKKyAJCXJldHVybiBUQ0xfRVJST1I7CitAQCAtMTgyNyw3ICsxNzgxLDcgQEAgaW50 IFRsc19Jbml0KFRjbF9JbnRlcnAgKmludGVycCkgeworICAqCUluaXRpYWxpemVzIHRoaXMgZXh0 ZW5zaW9uIGZvciBhIHNhZmUgaW50ZXJwcmV0ZXIuCisgICoJLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICAqCistICoJU2lkZWVmZmVjdHM6CisrICoJ U2lkZSBlZmZlY3RzOgorICAqCQlBcyBvZiAnVGxzX0luaXQnCisgICoKKyAgKglSZXN1bHQ6CitA QCAtMTg1MSw3ICsxODA1LDcgQEAgaW50IFRsc19TYWZlSW5pdChUY2xfSW50ZXJwICppbnRlcnAp IHsKKyAgKgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q CisgICoKKyAgKglTaWRlIGVmZmVjdHM6CistICoJCWluaXRpbGl6ZXMgU1NMIGxpYnJhcnkKKysg KgkJaW5pdGlhbGl6ZXMgU1NMIGxpYnJhcnkKKyAgKgorICAqCVJlc3VsdDoKKyAgKgkJbm9uZQor ZGlmZiAtLWdpdCBhL3Rscy5odG0gYi90bHMuaHRtCitpbmRleCAxMzc3Mzc3Li5lOGJmNmEzIDEw MDY0NAorLS0tIGEvdGxzLmh0bQorKysrIGIvdGxzLmh0bQorQEAgLTcyLDExICs3Miw5IEBAIHBv cnQ8L2VtPjxicj4KKyA8cD5UaGlzIGV4dGVuc2lvbiBwcm92aWRlcyBhIGdlbmVyaWMgYmluZGlu ZyB0byA8YQorIGhyZWY9Imh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIj5PcGVuU1NMPC9hPiwgdXRp bGl6aW5nIHRoZQorIDxzdHJvbmc+VGNsX1N0YWNrQ2hhbm5lbDwvc3Ryb25nPgorLUFQSSBmb3Ig VGNsIDguMiBhbmQgaGlnaGVyLiBUaGUgc29ja2V0cyBiZWhhdmUgZXhhY3RseSB0aGUgc2FtZQor K0FQSSBmb3IgVGNsIDguNCBhbmQgaGlnaGVyLiBUaGUgc29ja2V0cyBiZWhhdmUgZXhhY3RseSB0 aGUgc2FtZQorIGFzIGNoYW5uZWxzIGNyZWF0ZWQgdXNpbmcgVGNsJ3MgYnVpbHQtaW4gPHN0cm9u Zz5zb2NrZXQ8L3N0cm9uZz4KKyBjb21tYW5kIHdpdGggYWRkaXRpb25hbCBvcHRpb25zIGZvciBj b250cm9sbGluZyB0aGUgU1NMIHNlc3Npb24uCistVG8gdXNlIFRMUyB3aXRoIGFuIGVhcmxpZXIg dmVyc2lvbiBvZiBUY2wgdGhhbiA4LjQsIHBsZWFzZSBvYnRhaW4KKy1UTFMgMS4zLgorIDwvcD4K KyAKKyA8aDM+PGEgbmFtZT0iQ09NTUFORFMiPkNPTU1BTkRTPC9hPjwvaDM+CitkaWZmIC0tZ2l0 IGEvdGxzQklPLmMgYi90bHNCSU8uYworaW5kZXggZmU3ZDM5MS4uMjcwZTYzOCAxMDA2NDQKKy0t LSBhL3Rsc0JJTy5jCisrKysgYi90bHNCSU8uYworQEAgLTE2LDkgKzE2LDkgQEAKKyAKKyAvKiBY WFg6IFRoaXMgYXNzdW1lcyB0aGUgdmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8gaXMgQmlvTWV0 aG9kcyAqLworICNkZWZpbmUgQklPX21ldGhfbmV3KHR5cGVfLCBuYW1lXykgICAgICAgKEJJT19N RVRIT0QgKilUY2xfQWxsb2Moc2l6ZW9mKEJJT19NRVRIT0QpKTsgXAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KEJpb01ldGhvZHMsIDAsIHNpemVvZihC SU9fTUVUSE9EKSk7IFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEJpb01ldGhvZHMtPnR5cGUgPSB0eXBlXzsgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQmlvTWV0aG9kcy0+bmFtZSA9IG5hbWVfOworKwkJCQkJIG1lbXNldChC aW9NZXRob2RzLCAwLCBzaXplb2YoQklPX01FVEhPRCkpOyBcCisrCQkJCQkgQmlvTWV0aG9kcy0+ dHlwZSA9IHR5cGVfOyBcCisrCQkJCQkgQmlvTWV0aG9kcy0+bmFtZSA9IG5hbWVfOworICNkZWZp bmUgQklPX21ldGhfc2V0X3dyaXRlKGJpbywgdmFsKSAgICAgKGJpbyktPmJ3cml0ZSA9IHZhbDsK KyAjZGVmaW5lIEJJT19tZXRoX3NldF9yZWFkKGJpbywgdmFsKSAgICAgIChiaW8pLT5icmVhZCA9 IHZhbDsKKyAjZGVmaW5lIEJJT19tZXRoX3NldF9wdXRzKGJpbywgdmFsKSAgICAgIChiaW8pLT5i cHV0cyA9IHZhbDsKK0BAIC0yNyw5MCArMjcsNyBAQAorICNkZWZpbmUgQklPX21ldGhfc2V0X2Rl c3Ryb3koYmlvLCB2YWwpICAgKGJpbyktPmRlc3Ryb3kgPSB2YWw7CisgI2VuZGlmCisgCistLyoK Ky0gKiBGb3J3YXJkIGRlY2xhcmF0aW9ucworLSAqLworLQorLXN0YXRpYyBpbnQgQmlvV3JpdGUg X0FOU0lfQVJHU18oKEJJTyAqaCwgQ09OU1QgY2hhciAqYnVmLCBpbnQgbnVtKSk7Cistc3RhdGlj IGludCBCaW9SZWFkICBfQU5TSV9BUkdTXygoQklPICpoLCBjaGFyICpidWYsIGludCBudW0pKTsK Ky1zdGF0aWMgaW50IEJpb1B1dHMgIF9BTlNJX0FSR1NfKChCSU8gKmgsIENPTlNUIGNoYXIgKnN0 cikpOworLXN0YXRpYyBsb25nIEJpb0N0cmwgX0FOU0lfQVJHU18oKEJJTyAqaCwgaW50IGNtZCwg bG9uZyBhcmcxLCB2b2lkICpwdHIpKTsKKy1zdGF0aWMgaW50IEJpb05ldyAgIF9BTlNJX0FSR1Nf KChCSU8gKmgpKTsKKy1zdGF0aWMgaW50IEJpb0ZyZWUgIF9BTlNJX0FSR1NfKChCSU8gKmgpKTsK Ky0KKy1CSU8gKkJJT19uZXdfdGNsKFN0YXRlICpzdGF0ZVB0ciwgaW50IGZsYWdzKSB7CistCUJJ TyAqYmlvOworLQlzdGF0aWMgQklPX01FVEhPRCAqQmlvTWV0aG9kcyA9IE5VTEw7CistI2lmZGVm IFRDTFRMU19TU0xfVVNFX0ZBU1RQQVRICistCVRjbF9DaGFubmVsIHBhcmVudENoYW5uZWw7Cist CWNvbnN0IFRjbF9DaGFubmVsVHlwZSAqcGFyZW50Q2hhbm5lbFR5cGU7CistCXZvaWQgKnBhcmVu dENoYW5uZWxGZEluX3AsICpwYXJlbnRDaGFubmVsRmRPdXRfcDsKKy0JaW50IHBhcmVudENoYW5u ZWxGZEluLCBwYXJlbnRDaGFubmVsRmRPdXQsIHBhcmVudENoYW5uZWxGZDsKKy0JaW50IHZhbGlk UGFyZW50Q2hhbm5lbEZkOworLQlpbnQgdGNsR2V0Q2hhbm5lbEhhbmRsZVJldDsKKy0jZW5kaWYK Ky0KKy0JZHByaW50ZigiQklPX25ld190Y2woKSBjYWxsZWQiKTsKKy0KKy0JaWYgKEJpb01ldGhv ZHMgPT0gTlVMTCkgeworLQkJQmlvTWV0aG9kcyA9IEJJT19tZXRoX25ldyhCSU9fVFlQRV9UQ0ws ICJ0Y2wiKTsKKy0JCUJJT19tZXRoX3NldF93cml0ZShCaW9NZXRob2RzLCBCaW9Xcml0ZSk7Cist CQlCSU9fbWV0aF9zZXRfcmVhZChCaW9NZXRob2RzLCBCaW9SZWFkKTsKKy0JCUJJT19tZXRoX3Nl dF9wdXRzKEJpb01ldGhvZHMsIEJpb1B1dHMpOworLQkJQklPX21ldGhfc2V0X2N0cmwoQmlvTWV0 aG9kcywgQmlvQ3RybCk7CistCQlCSU9fbWV0aF9zZXRfY3JlYXRlKEJpb01ldGhvZHMsIEJpb05l dyk7CistCQlCSU9fbWV0aF9zZXRfZGVzdHJveShCaW9NZXRob2RzLCBCaW9GcmVlKTsKKy0JfQor LQorLQlpZiAoc3RhdGVQdHIgPT0gTlVMTCkgeworLQkJZHByaW50ZigiQXNrZWQgdG8gc2V0dXAg YSBOVUxMIHN0YXRlLCBqdXN0IGNyZWF0aW5nIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24iKTsK Ky0KKy0JCXJldHVybihOVUxMKTsKKy0JfQorLQorLSNpZmRlZiBUQ0xUTFNfU1NMX1VTRV9GQVNU UEFUSAorLQkvKgorLQkgKiBJZiB0aGUgY2hhbm5lbCBjYW4gYmUgbWFwcGVkIGJhY2sgdG8gYSBm aWxlIGRlc2NyaXB0b3IsIGp1c3QgdXNlIHRoZSBmaWxlIGRlc2NyaXB0b3IKKy0JICogd2l0aCB0 aGUgU1NMIGxpYnJhcnkgc2luY2UgaXQgd2lsbCBsaWtlbHkgYmUgb3B0aW1pemVkIGZvciB0aGlz LgorLQkgKi8KKy0JcGFyZW50Q2hhbm5lbCA9IFRsc19HZXRQYXJlbnQoc3RhdGVQdHIsIDApOwor LQlwYXJlbnRDaGFubmVsVHlwZSA9IFRjbF9HZXRDaGFubmVsVHlwZShwYXJlbnRDaGFubmVsKTsK Ky0KKy0JdmFsaWRQYXJlbnRDaGFubmVsRmQgPSAwOworLQlpZiAoc3RyY21wKHBhcmVudENoYW5u ZWxUeXBlLT50eXBlTmFtZSwgInRjcCIpID09IDApIHsKKy0JCXRjbEdldENoYW5uZWxIYW5kbGVS ZXQgPSBUY2xfR2V0Q2hhbm5lbEhhbmRsZShwYXJlbnRDaGFubmVsLCBUQ0xfUkVBREFCTEUsIChD bGllbnREYXRhKSAmcGFyZW50Q2hhbm5lbEZkSW5fcCk7CistCQlpZiAodGNsR2V0Q2hhbm5lbEhh bmRsZVJldCA9PSBUQ0xfT0spIHsKKy0JCQl0Y2xHZXRDaGFubmVsSGFuZGxlUmV0ID0gVGNsX0dl dENoYW5uZWxIYW5kbGUocGFyZW50Q2hhbm5lbCwgVENMX1dSSVRBQkxFLCAoQ2xpZW50RGF0YSkg JnBhcmVudENoYW5uZWxGZE91dF9wKTsKKy0JCQlpZiAodGNsR2V0Q2hhbm5lbEhhbmRsZVJldCA9 PSBUQ0xfT0spIHsKKy0JCQkJcGFyZW50Q2hhbm5lbEZkSW4gPSBQVFIySU5UKHBhcmVudENoYW5u ZWxGZEluX3ApOworLQkJCQlwYXJlbnRDaGFubmVsRmRPdXQgPSBQVFIySU5UKHBhcmVudENoYW5u ZWxGZE91dF9wKTsKKy0JCQkJaWYgKHBhcmVudENoYW5uZWxGZEluID09IHBhcmVudENoYW5uZWxG ZE91dCkgeworLQkJCQkJcGFyZW50Q2hhbm5lbEZkID0gcGFyZW50Q2hhbm5lbEZkSW47CistCQkJ CQl2YWxpZFBhcmVudENoYW5uZWxGZCA9IDE7CistCQkJCX0KKy0JCQl9CistCQl9CistCX0KKy0K Ky0JaWYgKHZhbGlkUGFyZW50Q2hhbm5lbEZkKSB7CistCQlkcHJpbnRmKCJXZSBmb3VuZCBhIHNo b3J0Y3V0LCB0aGlzIGNoYW5uZWwgaXMgYmFja2VkIGJ5IGEgc29ja2V0OiAlaSIsIHBhcmVudENo YW5uZWxGZEluKTsKKy0JCWJpbyA9IEJJT19uZXdfc29ja2V0KHBhcmVudENoYW5uZWxGZCwgZmxh Z3MpOworLQkJc3RhdGVQdHItPmZsYWdzIHw9IFRMU19UQ0xfRkFTVFBBVEg7CistCQlyZXR1cm4o YmlvKTsKKy0JfQorLQorLQlkcHJpbnRmKCJGYWxsaW5nIGJhY2sgdG8gVGNsIEkvTyBmb3IgdGhp cyBjaGFubmVsIik7CistI2VuZGlmCistCistCWJpbyA9IEJJT19uZXcoQmlvTWV0aG9kcyk7Cist CUJJT19zZXRfZGF0YShiaW8sIHN0YXRlUHRyKTsKKy0JQklPX3NldF9zaHV0ZG93bihiaW8sIGZs YWdzKTsKKy0JQklPX3NldF9pbml0KGJpbywgMSk7CistCistCXJldHVybihiaW8pOworLX0KKy0K Ky1zdGF0aWMgaW50IEJpb1dyaXRlKEJJTyAqYmlvLCBDT05TVCBjaGFyICpidWYsIGludCBidWZM ZW4pIHsKKytzdGF0aWMgaW50IEJpb1dyaXRlKEJJTyAqYmlvLCBjb25zdCBjaGFyICpidWYsIGlu dCBidWZMZW4pIHsKKyAJVGNsX0NoYW5uZWwgY2hhbjsKKyAJaW50IHJldDsKKyAJaW50IHRjbEVv ZkNoYW4sIHRjbEVycm5vOworQEAgLTIxNCw3ICsxMzEsNyBAQCBzdGF0aWMgaW50IEJpb1JlYWQo QklPICpiaW8sIGNoYXIgKmJ1ZiwgaW50IGJ1ZkxlbikgeworIAlyZXR1cm4ocmV0KTsKKyB9Cisg Cistc3RhdGljIGludCBCaW9QdXRzKEJJTyAqYmlvLCBDT05TVCBjaGFyICpzdHIpIHsKKytzdGF0 aWMgaW50IEJpb1B1dHMoQklPICpiaW8sIGNvbnN0IGNoYXIgKnN0cikgeworIAlkcHJpbnRmKCJC aW9QdXRzKCVwLCA8c3RyaW5nOiVwPikgY2FsbGVkIiwgYmlvLCBzdHIpOworIAorIAlyZXR1cm4g QmlvV3JpdGUoYmlvLCBzdHIsIChpbnQpIHN0cmxlbihzdHIpKTsKK0BAIC0zMTcsMyArMjM0LDc1 IEBAIHN0YXRpYyBpbnQgQmlvRnJlZShCSU8gKmJpbykgeworIAorIAlyZXR1cm4oMSk7CisgfQor KworK0JJTyAqQklPX25ld190Y2woU3RhdGUgKnN0YXRlUHRyLCBpbnQgZmxhZ3MpIHsKKysJQklP ICpiaW87CisrCXN0YXRpYyBCSU9fTUVUSE9EICpCaW9NZXRob2RzID0gTlVMTDsKKysjaWZkZWYg VENMVExTX1NTTF9VU0VfRkFTVFBBVEgKKysJVGNsX0NoYW5uZWwgcGFyZW50Q2hhbm5lbDsKKysJ Y29uc3QgVGNsX0NoYW5uZWxUeXBlICpwYXJlbnRDaGFubmVsVHlwZTsKKysJdm9pZCAqcGFyZW50 Q2hhbm5lbEZkSW5fcCwgKnBhcmVudENoYW5uZWxGZE91dF9wOworKwlpbnQgcGFyZW50Q2hhbm5l bEZkSW4sIHBhcmVudENoYW5uZWxGZE91dCwgcGFyZW50Q2hhbm5lbEZkOworKwlpbnQgdmFsaWRQ YXJlbnRDaGFubmVsRmQ7CisrCWludCB0Y2xHZXRDaGFubmVsSGFuZGxlUmV0OworKyNlbmRpZgor KworKwlkcHJpbnRmKCJCSU9fbmV3X3RjbCgpIGNhbGxlZCIpOworKworKwlpZiAoQmlvTWV0aG9k cyA9PSBOVUxMKSB7CisrCQlCaW9NZXRob2RzID0gQklPX21ldGhfbmV3KEJJT19UWVBFX1RDTCwg InRjbCIpOworKwkJQklPX21ldGhfc2V0X3dyaXRlKEJpb01ldGhvZHMsIEJpb1dyaXRlKTsKKysJ CUJJT19tZXRoX3NldF9yZWFkKEJpb01ldGhvZHMsIEJpb1JlYWQpOworKwkJQklPX21ldGhfc2V0 X3B1dHMoQmlvTWV0aG9kcywgQmlvUHV0cyk7CisrCQlCSU9fbWV0aF9zZXRfY3RybChCaW9NZXRo b2RzLCBCaW9DdHJsKTsKKysJCUJJT19tZXRoX3NldF9jcmVhdGUoQmlvTWV0aG9kcywgQmlvTmV3 KTsKKysJCUJJT19tZXRoX3NldF9kZXN0cm95KEJpb01ldGhvZHMsIEJpb0ZyZWUpOworKwl9Cisr CisrCWlmIChzdGF0ZVB0ciA9PSBOVUxMKSB7CisrCQlkcHJpbnRmKCJBc2tlZCB0byBzZXR1cCBh IE5VTEwgc3RhdGUsIGp1c3QgY3JlYXRpbmcgdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbiIpOwor KworKwkJcmV0dXJuKE5VTEwpOworKwl9CisrCisrI2lmZGVmIFRDTFRMU19TU0xfVVNFX0ZBU1RQ QVRICisrCS8qCisrCSAqIElmIHRoZSBjaGFubmVsIGNhbiBiZSBtYXBwZWQgYmFjayB0byBhIGZp bGUgZGVzY3JpcHRvciwganVzdCB1c2UgdGhlIGZpbGUgZGVzY3JpcHRvcgorKwkgKiB3aXRoIHRo ZSBTU0wgbGlicmFyeSBzaW5jZSBpdCB3aWxsIGxpa2VseSBiZSBvcHRpbWl6ZWQgZm9yIHRoaXMu CisrCSAqLworKwlwYXJlbnRDaGFubmVsID0gVGxzX0dldFBhcmVudChzdGF0ZVB0ciwgMCk7Cisr CXBhcmVudENoYW5uZWxUeXBlID0gVGNsX0dldENoYW5uZWxUeXBlKHBhcmVudENoYW5uZWwpOwor KworKwl2YWxpZFBhcmVudENoYW5uZWxGZCA9IDA7CisrCWlmIChzdHJjbXAocGFyZW50Q2hhbm5l bFR5cGUtPnR5cGVOYW1lLCAidGNwIikgPT0gMCkgeworKwkJdGNsR2V0Q2hhbm5lbEhhbmRsZVJl dCA9IFRjbF9HZXRDaGFubmVsSGFuZGxlKHBhcmVudENoYW5uZWwsIFRDTF9SRUFEQUJMRSwgKENs aWVudERhdGEpICZwYXJlbnRDaGFubmVsRmRJbl9wKTsKKysJCWlmICh0Y2xHZXRDaGFubmVsSGFu ZGxlUmV0ID09IFRDTF9PSykgeworKwkJCXRjbEdldENoYW5uZWxIYW5kbGVSZXQgPSBUY2xfR2V0 Q2hhbm5lbEhhbmRsZShwYXJlbnRDaGFubmVsLCBUQ0xfV1JJVEFCTEUsIChDbGllbnREYXRhKSAm cGFyZW50Q2hhbm5lbEZkT3V0X3ApOworKwkJCWlmICh0Y2xHZXRDaGFubmVsSGFuZGxlUmV0ID09 IFRDTF9PSykgeworKwkJCQlwYXJlbnRDaGFubmVsRmRJbiA9IFBUUjJJTlQocGFyZW50Q2hhbm5l bEZkSW5fcCk7CisrCQkJCXBhcmVudENoYW5uZWxGZE91dCA9IFBUUjJJTlQocGFyZW50Q2hhbm5l bEZkT3V0X3ApOworKwkJCQlpZiAocGFyZW50Q2hhbm5lbEZkSW4gPT0gcGFyZW50Q2hhbm5lbEZk T3V0KSB7CisrCQkJCQlwYXJlbnRDaGFubmVsRmQgPSBwYXJlbnRDaGFubmVsRmRJbjsKKysJCQkJ CXZhbGlkUGFyZW50Q2hhbm5lbEZkID0gMTsKKysJCQkJfQorKwkJCX0KKysJCX0KKysJfQorKwor KwlpZiAodmFsaWRQYXJlbnRDaGFubmVsRmQpIHsKKysJCWRwcmludGYoIldlIGZvdW5kIGEgc2hv cnRjdXQsIHRoaXMgY2hhbm5lbCBpcyBiYWNrZWQgYnkgYSBzb2NrZXQ6ICVpIiwgcGFyZW50Q2hh bm5lbEZkSW4pOworKwkJYmlvID0gQklPX25ld19zb2NrZXQocGFyZW50Q2hhbm5lbEZkLCBmbGFn cyk7CisrCQlzdGF0ZVB0ci0+ZmxhZ3MgfD0gVExTX1RDTF9GQVNUUEFUSDsKKysJCXJldHVybihi aW8pOworKwl9CisrCisrCWRwcmludGYoIkZhbGxpbmcgYmFjayB0byBUY2wgSS9PIGZvciB0aGlz IGNoYW5uZWwiKTsKKysjZW5kaWYKKysKKysJYmlvID0gQklPX25ldyhCaW9NZXRob2RzKTsKKysJ QklPX3NldF9kYXRhKGJpbywgc3RhdGVQdHIpOworKwlCSU9fc2V0X3NodXRkb3duKGJpbywgZmxh Z3MpOworKwlCSU9fc2V0X2luaXQoYmlvLCAxKTsKKysKKysJcmV0dXJuKGJpbyk7CisrfQorZGlm ZiAtLWdpdCBhL3Rsc0lPLmMgYi90bHNJTy5jCitpbmRleCBkODU4OTY2Li4xNzQxZDdmIDEwMDY0 NAorLS0tIGEvdGxzSU8uYworKysrIGIvdGxzSU8uYworQEAgLTIyLDk4ICsyMiwxMyBAQAorIC8q CisgICogRm9yd2FyZCBkZWNsYXJhdGlvbnMKKyAgKi8KKy1zdGF0aWMgaW50ICBUbHNCbG9ja01v ZGVQcm9jIF9BTlNJX0FSR1NfKChDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgaW50IG1vZGUpKTsK Ky1zdGF0aWMgaW50ICBUbHNDbG9zZVByb2MgX0FOU0lfQVJHU18oKENsaWVudERhdGEgaW5zdGFu Y2VEYXRhLCBUY2xfSW50ZXJwICppbnRlcnApKTsKKy1zdGF0aWMgaW50ICBUbHNJbnB1dFByb2Mg X0FOU0lfQVJHU18oKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBjaGFyICpidWYsIGludCBidWZT aXplLCBpbnQgKmVycm9yQ29kZVB0cikpOworLXN0YXRpYyBpbnQgIFRsc091dHB1dFByb2MgX0FO U0lfQVJHU18oKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBDT05TVCBjaGFyICpidWYsIGludCB0 b1dyaXRlLCBpbnQgKmVycm9yQ29kZVB0cikpOworLXN0YXRpYyBpbnQgIFRsc0dldE9wdGlvblBy b2MgX0FOU0lfQVJHU18oKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBUY2xfSW50ZXJwICppbnRl cnAsIENPTlNUODQgY2hhciAqb3B0aW9uTmFtZSwgVGNsX0RTdHJpbmcgKmRzUHRyKSk7Cistc3Rh dGljIHZvaWQgVGxzV2F0Y2hQcm9jIF9BTlNJX0FSR1NfKChDbGllbnREYXRhIGluc3RhbmNlRGF0 YSwgaW50IG1hc2spKTsKKy1zdGF0aWMgaW50ICBUbHNHZXRIYW5kbGVQcm9jIF9BTlNJX0FSR1Nf KChDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgaW50IGRpcmVjdGlvbiwgQ2xpZW50RGF0YSAqaGFu ZGxlUHRyKSk7Cistc3RhdGljIGludCAgVGxzTm90aWZ5UHJvYyBfQU5TSV9BUkdTXygoQ2xpZW50 RGF0YSBpbnN0YW5jZURhdGEsIGludCBtYXNrKSk7CistI2lmIDAKKy1zdGF0aWMgdm9pZCBUbHND aGFubmVsSGFuZGxlciBfQU5TSV9BUkdTXygoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBpbnQgbWFz aykpOworLSNlbmRpZgorLXN0YXRpYyB2b2lkIFRsc0NoYW5uZWxIYW5kbGVyVGltZXIgX0FOU0lf QVJHU18oKENsaWVudERhdGEgY2xpZW50RGF0YSkpOworK3N0YXRpYyB2b2lkIFRsc0NoYW5uZWxI YW5kbGVyVGltZXIoQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKKyAKKyAvKgorICAqIFRMUyBDaGFu bmVsIFR5cGUKKyAgKi8KKyBzdGF0aWMgVGNsX0NoYW5uZWxUeXBlICp0bHNDaGFubmVsVHlwZSA9 IE5VTEw7CisgCistLyoKKy0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gKgorLSAqIFRsc19DaGFubmVsVHlwZSAt LQorLSAqCistICoJUmV0dXJuIHRoZSBjb3JyZWN0IFRMUyBjaGFubmVsIGRyaXZlciBpbmZvCist ICoKKy0gKiBSZXN1bHRzOgorLSAqCVRoZSBjb3JyZWN0IGNoYW5uZWwgZHJpdmVyIGZvciB0aGUg Y3VycmVudCB2ZXJzaW9uIG9mIFRjbC4KKy0gKgorLSAqIFNpZGUgZWZmZWN0czoKKy0gKglOb25l LgorLSAqCistICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistICovCistVGNsX0NoYW5uZWxUeXBlICpUbHNfQ2hhbm5l bFR5cGUodm9pZCkgeworLQl1bnNpZ25lZCBpbnQgc2l6ZTsKKy0KKy0JLyoKKy0JICogSW5pdGlh bGl6ZSB0aGUgY2hhbm5lbCB0eXBlIGlmIG5lY2Vzc2FyeQorLQkgKi8KKy0JaWYgKHRsc0NoYW5u ZWxUeXBlID09IE5VTEwpIHsKKy0JCS8qCistCQkgKiBBbGxvY2F0aW9uIG9mIGEgbmV3IGNoYW5u ZWx0eXBlIHN0cnVjdHVyZSBpcyBub3QgZWFzeSwgYmVjYXVzZSBvZgorLQkJICogdGhlIHZhcmlv dXMgdmVyc29uIG9mIHRoZSBjb3JlIGFuZCBzdWJzZXF1ZW50IGNoYW5nZXMgdG8gdGhlCistCQkg KiBzdHJ1Y3R1cmUuIFRoZSBtYWluIGNoYWxsZW5nZSBpcyB0byBhbGxvY2F0ZSBlbm91Z2ggbWVt b3J5IGZvcgorLQkJICogbW9kZXJuIHZlcnNpb25zIGV2ZW4gaWYgdGhpcyBleHRzZW5zaW9uIGlz IGNvbXBpbGVkIGFnYWluc3Qgb25lCistCQkgKiBvZiB0aGUgb2xkZXIgdmFyaWFudCEKKy0JCSAq CistCQkgKiAoMSkgVmVyc2lvbnMgYmVmb3JlIHN0dWJzICg4LjAueCkgYXJlIHNpbXBsZSwgYmVj YXVzZSB0aGV5IGFyZQorLQkJICogICAgIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBleHRlbnNpb24g aXMgY29tcGlsZWQgYWdhaW5zdCBleGFjdGx5CistCQkgKiAgICAgdGhhdCB2ZXJzaW9uIG9mIHRo ZSBjb3JlLgorLQkJICoKKy0JCSAqICgyKSBXaXRoIHN0dWJzIHdlIGp1c3QgZGV0ZXJtaW5lIHRo ZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZGVyCistCQkgKiAgICAgYW5kIG1vZGVybiB2YXJp YW50IGFuZCBvdmVyYWxsb2NhdGUgYWNjb3JkaW5nbHkgaWYgY29tcGlsZWQKKy0JCSAqICAgICBh Z2FpbnN0IGFuIG9sZGVyIHZhcmlhbnQuCistCQkgKi8KKy0JCXNpemUgPSBzaXplb2YoVGNsX0No YW5uZWxUeXBlKTsgLyogQmFzZSBzaXplICovCistCistCQl0bHNDaGFubmVsVHlwZSA9IChUY2xf Q2hhbm5lbFR5cGUgKikgY2thbGxvYyhzaXplKTsKKy0JCW1lbXNldCgoVk9JRCAqKSB0bHNDaGFu bmVsVHlwZSwgMCwgc2l6ZSk7CistCistCQkvKgorLQkJICogQ29tbW9uIGVsZW1lbnRzIG9mIHRo ZSBzdHJ1Y3R1cmUgKG5vIGNoYW5nZXMgaW4gbG9jYXRpb24gb3IgbmFtZSkKKy0JCSAqIGNsb3Nl MlByb2MsIHNlZWtQcm9jLCBzZXRPcHRpb25Qcm9jIHN0YXkgTlVMTC4KKy0JCSAqLworLQorLQkJ dGxzQ2hhbm5lbFR5cGUtPnR5cGVOYW1lCT0gInRscyI7CistCQl0bHNDaGFubmVsVHlwZS0+Y2xv c2VQcm9jCT0gVGxzQ2xvc2VQcm9jOworLQkJdGxzQ2hhbm5lbFR5cGUtPmlucHV0UHJvYwk9IFRs c0lucHV0UHJvYzsKKy0JCXRsc0NoYW5uZWxUeXBlLT5vdXRwdXRQcm9jCT0gVGxzT3V0cHV0UHJv YzsKKy0JCXRsc0NoYW5uZWxUeXBlLT5nZXRPcHRpb25Qcm9jCT0gVGxzR2V0T3B0aW9uUHJvYzsK Ky0JCXRsc0NoYW5uZWxUeXBlLT53YXRjaFByb2MJPSBUbHNXYXRjaFByb2M7CistCQl0bHNDaGFu bmVsVHlwZS0+Z2V0SGFuZGxlUHJvYwk9IFRsc0dldEhhbmRsZVByb2M7CistCistCQkvKgorLQkJ ICogQ29tcGlsZWQgYWdhaW5zdCA4LjMuMisuIERpcmVjdCBhY2Nlc3MgdG8gYWxsIGVsZW1lbnRz IHBvc3NpYmxlLiBVc2UKKy0JCSAqIGNoYW5uZWxUeXBlVmVyc2lvbiBpbmZvcm1hdGlvbiB0byBz ZWxlY3QgdGhlIHZhbHVlcyB0byB1c2UuCistCQkgKi8KKy0KKy0JCS8qCistCQkgKiBGb3IgdGhl IDguMy4yIGNvcmUgd2UgcHJlc2VudCBvdXJzZWx2ZXMgYXMgYSB2ZXJzaW9uIDIKKy0JCSAqIGRy aXZlci4gVGhpcyBtZWFucyBhIHNwZWNpYWwgdmFsdWUgaW4gdmVyc2lvbiAoZXgKKy0JCSAqIGJs b2NrTW9kZVByb2MpLCBibG9ja01vZGVQcm9jIGluIGEgZGlmZmVyZW50IHBsYWNlIGFuZCBvZgor LQkJICogY291cnNlIHVzYWdlIG9mIHRoZSBoYW5kbGVyUHJvYy4KKy0JCSAqLworLQkJdGxzQ2hh bm5lbFR5cGUtPnZlcnNpb24gICAgICAgPSBUQ0xfQ0hBTk5FTF9WRVJTSU9OXzI7CistCQl0bHND aGFubmVsVHlwZS0+YmxvY2tNb2RlUHJvYyA9IFRsc0Jsb2NrTW9kZVByb2M7CistCQl0bHNDaGFu bmVsVHlwZS0+aGFuZGxlclByb2MgICA9IFRsc05vdGlmeVByb2M7CistCX0KKy0KKy0JcmV0dXJu KHRsc0NoYW5uZWxUeXBlKTsKKy19CistCisgLyoKKyAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKgorQEAgLTE2 NywxNSArODIsMTkgQEAgc3RhdGljIGludCBUbHNDbG9zZVByb2MoQ2xpZW50RGF0YSBpbnN0YW5j ZURhdGEsIFRjbF9JbnRlcnAgKmludGVycCkgeworIAorIAlUbHNfQ2xlYW4oc3RhdGVQdHIpOwor IAlUY2xfRXZlbnR1YWxseUZyZWUoKENsaWVudERhdGEpc3RhdGVQdHIsIFRsc19GcmVlKTsKKy0K Ky0JZHByaW50ZigiUmV0dXJuaW5nIFRDTF9PSyIpOworLQorLQlyZXR1cm4oVENMX09LKTsKKysJ cmV0dXJuKDApOworIAorIAkvKiBJbnRlcnAgaXMgdW51c2VkLiAqLworIAlpbnRlcnAgPSBpbnRl cnA7CisgfQorIAorK3N0YXRpYyBpbnQgVGxzQ2xvc2VQcm9jMihDbGllbnREYXRhIGluc3RhbmNl RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgZmxhZ3MpIHsKKysgICAgaWYgKChmbGFncyAm IChUQ0xfQ0xPU0VfUkVBRHxUQ0xfQ0xPU0VfV1JJVEUpKSA9PSAwKSB7CisrCXJldHVybiBUbHND bG9zZVByb2MoaW5zdGFuY2VEYXRhLCBpbnRlcnApOworKyAgICB9CisrICAgIHJldHVybiBFSU5W QUw7CisrfQorKworIC8qCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qCisgICoKK0BAIC01MDEsNyArNDIwLDcgQEAgc3RhdGljIGludCBU bHNJbnB1dFByb2MoQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGNoYXIgKmJ1ZiwgaW50IGJ1ZlNp emUsIGludCAqZXIKKyAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKi8KKyAKKy1zdGF0aWMgaW50IFRsc091dHB1 dFByb2MoQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIENPTlNUIGNoYXIgKmJ1ZiwgaW50IHRvV3Jp dGUsIGludCAqZXJyb3JDb2RlUHRyKSB7Cisrc3RhdGljIGludCBUbHNPdXRwdXRQcm9jKENsaWVu dERhdGEgaW5zdGFuY2VEYXRhLCBjb25zdCBjaGFyICpidWYsIGludCB0b1dyaXRlLCBpbnQgKmVy cm9yQ29kZVB0cikgeworIAl1bnNpZ25lZCBsb25nIGJhY2tpbmdFcnJvcjsKKyAJU3RhdGUgKnN0 YXRlUHRyID0gKFN0YXRlICopIGluc3RhbmNlRGF0YTsKKyAJaW50IHdyaXR0ZW4sIGVycjsKK0BA IC02MjIsNiArNTQxLDUxIEBAIHN0YXRpYyBpbnQgVGxzT3V0cHV0UHJvYyhDbGllbnREYXRhIGlu c3RhbmNlRGF0YSwgQ09OU1QgY2hhciAqYnVmLCBpbnQgdG9Xcml0ZSwKKyAJcmV0dXJuKHdyaXR0 ZW4pOworIH0KKyAKKysvKgorKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyAqCisrICogVGxzU2V0T3B0aW9uUHJv YyAtLQorKyAqCisrICoJQ29tcHV0ZXMgYW4gb3B0aW9uIHZhbHVlIGZvciBhIFNTTCBzb2NrZXQg YmFzZWQgY2hhbm5lbCwgb3IgYQorKyAqCWxpc3Qgb2YgYWxsIG9wdGlvbnMgYW5kIHRoZWlyIHZh bHVlcy4KKysgKgorKyAqIFJlc3VsdHM6CisrICoJQSBzdGFuZGFyZCBUY2wgcmVzdWx0LiBUaGUg dmFsdWUgb2YgdGhlIHNwZWNpZmllZCBvcHRpb24gb3IgYQorKyAqCWxpc3Qgb2YgYWxsIG9wdGlv bnMgYW5kCXRoZWlyIHZhbHVlcyBpcyByZXR1cm5lZCBpbiB0aGUKKysgKglzdXBwbGllZCBEU3Ry aW5nLgorKyAqCisrICogU2lkZSBlZmZlY3RzOgorKyAqCU5vbmUuCisrICoKKysgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKysgKi8KKytzdGF0aWMgaW50CisrVGxzU2V0T3B0aW9uUHJvYyhDbGllbnREYXRhIGluc3Rh bmNlRGF0YSwJLyogU29ja2V0IHN0YXRlLiAqLworKwlUY2xfSW50ZXJwICppbnRlcnAsCQkvKiBG b3IgZXJyb3JzIC0gY2FuIGJlIE5VTEwuICovCisrCWNvbnN0IGNoYXIgKm9wdGlvbk5hbWUsCQkv KiBOYW1lIG9mIHRoZSBvcHRpb24gdG8gc2V0IHRoZSB2YWx1ZSBmb3IsIG9yCisrCQkJCQkgKiBO VUxMIHRvIGdldCBhbGwgb3B0aW9ucyBhbmQgdGhlaXIgdmFsdWVzLiAqLworKwljb25zdCBjaGFy ICpvcHRpb25WYWx1ZSkJLyogVmFsdWUgZm9yIG9wdGlvbi4gKi8KKyt7CisrICAgIFN0YXRlICpz dGF0ZVB0ciA9IChTdGF0ZSAqKSBpbnN0YW5jZURhdGE7CisrCisrICAgVGNsX0NoYW5uZWwgZG93 bkNoYW4gPSBUbHNfR2V0UGFyZW50KHN0YXRlUHRyLCBUTFNfVENMX0ZBU1RQQVRIKTsKKysgICBU Y2xfRHJpdmVyU2V0T3B0aW9uUHJvYyAqc2V0T3B0aW9uUHJvYzsKKysKKysgICAgc2V0T3B0aW9u UHJvYyA9IFRjbF9DaGFubmVsU2V0T3B0aW9uUHJvYyhUY2xfR2V0Q2hhbm5lbFR5cGUoZG93bkNo YW4pKTsKKysgICAgaWYgKHNldE9wdGlvblByb2MgIT0gTlVMTCkgeworKwlyZXR1cm4gKCpzZXRP cHRpb25Qcm9jKShUY2xfR2V0Q2hhbm5lbEluc3RhbmNlRGF0YShkb3duQ2hhbiksIGludGVycCwg b3B0aW9uTmFtZSwgb3B0aW9uVmFsdWUpOworKyAgICB9IGVsc2UgaWYgKG9wdGlvbk5hbWUgPT0g KGNoYXIqKSBOVUxMKSB7CisrCS8qCisrCSAqIFJlcXVlc3QgaXMgcXVlcnkgZm9yIGFsbCBvcHRp b25zLCB0aGlzIGlzIG9rLgorKwkgKi8KKysJIHJldHVybiBUQ0xfT0s7CisrICAgIH0KKysgICAg LyoKKysgICAgICogUmVxdWVzdCBmb3IgYSBzcGVjaWZpYyBvcHRpb24gaGFzIHRvIGZhaWwsIHdl IGRvbid0IGhhdmUgYW55LgorKyAgICAgKi8KKysgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyt9Cisr CisgLyoKKyAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKgorQEAgLTY0MywxMCArNjA3LDggQEAgc3RhdGljIGlu dCBUbHNPdXRwdXRQcm9jKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBDT05TVCBjaGFyICpidWYs IGludCB0b1dyaXRlLAorIHN0YXRpYyBpbnQKKyBUbHNHZXRPcHRpb25Qcm9jKENsaWVudERhdGEg aW5zdGFuY2VEYXRhLAkvKiBTb2NrZXQgc3RhdGUuICovCisgCVRjbF9JbnRlcnAgKmludGVycCwJ CS8qIEZvciBlcnJvcnMgLSBjYW4gYmUgTlVMTC4gKi8KKy0JQ09OU1Q4NCBjaGFyICpvcHRpb25O YW1lLAkvKiBOYW1lIG9mIHRoZSBvcHRpb24gdG8KKy0JCQkJCSAqIHJldHJpZXZlIHRoZSB2YWx1 ZSBmb3IsIG9yCistCQkJCQkgKiBOVUxMIHRvIGdldCBhbGwgb3B0aW9ucyBhbmQKKy0JCQkJCSAq IHRoZWlyIHZhbHVlcy4gKi8KKysJY29uc3QgY2hhciAqb3B0aW9uTmFtZSwJCS8qIE5hbWUgb2Yg dGhlIG9wdGlvbiB0byByZXRyaWV2ZSB0aGUgdmFsdWUgZm9yLCBvcgorKwkJCQkJICogTlVMTCB0 byBnZXQgYWxsIG9wdGlvbnMgYW5kIHRoZWlyIHZhbHVlcy4gKi8KKyAJVGNsX0RTdHJpbmcgKmRz UHRyKQkJLyogV2hlcmUgdG8gc3RvcmUgdGhlIGNvbXB1dGVkIHZhbHVlCisgCQkJCQkgKiBpbml0 aWFsaXplZCBieSBjYWxsZXIuICovCisgeworQEAgLTY1NywxMiArNjE5LDEyIEBAIFRsc0dldE9w dGlvblByb2MoQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsCS8qIFNvY2tldCBzdGF0ZS4gKi8KKyAK KyAgICAgZ2V0T3B0aW9uUHJvYyA9IFRjbF9DaGFubmVsR2V0T3B0aW9uUHJvYyhUY2xfR2V0Q2hh bm5lbFR5cGUoZG93bkNoYW4pKTsKKyAgICAgaWYgKGdldE9wdGlvblByb2MgIT0gTlVMTCkgewor LSAgICAgICAgcmV0dXJuICgqZ2V0T3B0aW9uUHJvYykoVGNsX0dldENoYW5uZWxJbnN0YW5jZURh dGEoZG93bkNoYW4pLCBpbnRlcnAsIG9wdGlvbk5hbWUsIGRzUHRyKTsKKysJcmV0dXJuICgqZ2V0 T3B0aW9uUHJvYykoVGNsX0dldENoYW5uZWxJbnN0YW5jZURhdGEoZG93bkNoYW4pLCBpbnRlcnAs IG9wdGlvbk5hbWUsIGRzUHRyKTsKKyAgICAgfSBlbHNlIGlmIChvcHRpb25OYW1lID09IChjaGFy KikgTlVMTCkgeworLSAgICAgICAgLyoKKy0gICAgICAgICAqIFJlcXVlc3QgaXMgcXVlcnkgZm9y IGFsbCBvcHRpb25zLCB0aGlzIGlzIG9rLgorLSAgICAgICAgICovCistICAgICAgICAgcmV0dXJu IFRDTF9PSzsKKysJLyoKKysJICogUmVxdWVzdCBpcyBxdWVyeSBmb3IgYWxsIG9wdGlvbnMsIHRo aXMgaXMgb2suCisrCSAqLworKwkgcmV0dXJuIFRDTF9PSzsKKyAgICAgfQorICAgICAvKgorICAg ICAgKiBSZXF1ZXN0IGZvciBhIHNwZWNpZmljIG9wdGlvbiBoYXMgdG8gZmFpbCwgd2UgZG9uJ3Qg aGF2ZSBhbnkuCitAQCAtNjg5LDkgKzY1MSw4IEBAIFRsc0dldE9wdGlvblByb2MoQ2xpZW50RGF0 YSBpbnN0YW5jZURhdGEsCS8qIFNvY2tldCBzdGF0ZS4gKi8KKyAKKyBzdGF0aWMgdm9pZAorIFRs c1dhdGNoUHJvYyhDbGllbnREYXRhIGluc3RhbmNlRGF0YSwJLyogVGhlIHNvY2tldCBzdGF0ZS4g Ki8KKy0gICAgICAgICAgICAgaW50IG1hc2spCQkJLyogRXZlbnRzIG9mIGludGVyZXN0OyBhbiBP Ui1lZAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjb21iaW5h dGlvbiBvZiBUQ0xfUkVBREFCTEUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqIFRDTF9XUklUQUJMRSBhbmQgVENMX0VYQ0VQVElPTi4gKi8KKysJICAgICBpbnQg bWFzaykJCQkvKiBFdmVudHMgb2YgaW50ZXJlc3Q7IGFuIE9SLWVkIGNvbWJpbmF0aW9uIG9mICov CisrCQkJCQkvKiBUQ0xfUkVBREFCTEUsIFRDTF9XUklUQUJMRSBhbmQgVENMX0VYQ0VQVElPTi4g Ki8KKyB7CisgICAgIFRjbF9DaGFubmVsICAgICBkb3duQ2hhbjsKKyAgICAgU3RhdGUgKnN0YXRl UHRyID0gKFN0YXRlICopIGluc3RhbmNlRGF0YTsKK0BAIC03MDEsOCArNjYyLDggQEAgVGxzV2F0 Y2hQcm9jKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLAkvKiBUaGUgc29ja2V0IHN0YXRlLiAqLwor ICAgICAvKiBQcmV0ZW5kIHRvIGJlIGRlYWQgYXMgbG9uZyBhcyB0aGUgdmVyaWZ5IGNhbGxiYWNr IGlzIHJ1bm5pbmcuIAorICAgICAgKiBPdGhlcndpc2UgdGhhdCBjYWxsYmFjayBjb3VsZCBiZSBp bnZva2VkIHJlY3Vyc2l2ZWx5LiAqLworICAgICBpZiAoc3RhdGVQdHItPmZsYWdzICYgVExTX1RD TF9DQUxMQkFDSykgeworLSAgICAgICAgZHByaW50ZigiQ2FsbGJhY2sgaXMgb24tZ29pbmcsIGRv aW5nIG5vdGhpbmciKTsKKy0gICAgICAgIHJldHVybjsKKysJZHByaW50ZigiQ2FsbGJhY2sgaXMg b24tZ29pbmcsIGRvaW5nIG5vdGhpbmciKTsKKysJcmV0dXJuOworICAgICB9CisgCisgICAgIGRw cmludEZsYWdzKHN0YXRlUHRyKTsKK0BAIC03MTAsNTEgKzY3MSw1MCBAQCBUbHNXYXRjaFByb2Mo Q2xpZW50RGF0YSBpbnN0YW5jZURhdGEsCS8qIFRoZSBzb2NrZXQgc3RhdGUuICovCisgICAgIGRv d25DaGFuID0gVGxzX0dldFBhcmVudChzdGF0ZVB0ciwgVExTX1RDTF9GQVNUUEFUSCk7CisgCisg ICAgIGlmIChzdGF0ZVB0ci0+ZmxhZ3MgJiBUTFNfVENMX0hBTkRTSEFLRV9GQUlMRUQpIHsKKy0g ICAgICAgIGRwcmludGYoIkFza2VkIHRvIHdhdGNoIGEgc29ja2V0IHdpdGggYSBmYWlsZWQgaGFu ZHNoYWtlIC0tIG5vdGhpbmcgY2FuIGhhcHBlbiBoZXJlIik7CisrCWRwcmludGYoIkFza2VkIHRv IHdhdGNoIGEgc29ja2V0IHdpdGggYSBmYWlsZWQgaGFuZHNoYWtlIC0tIG5vdGhpbmcgY2FuIGhh cHBlbiBoZXJlIik7CisgCisgCWRwcmludGYoIlVucmVnaXN0ZXJpbmcgaW50ZXJlc3QgaW4gdGhl IGxvd2VyIGNoYW5uZWwiKTsKKyAJKFRjbF9HZXRDaGFubmVsVHlwZShkb3duQ2hhbikpLT53YXRj aFByb2MoVGNsX0dldENoYW5uZWxJbnN0YW5jZURhdGEoZG93bkNoYW4pLCAwKTsKKyAKKyAJc3Rh dGVQdHItPndhdGNoTWFzayA9IDA7CisgCistICAgICAgICByZXR1cm47CisrCXJldHVybjsKKyAg ICAgfQorIAorIAlzdGF0ZVB0ci0+d2F0Y2hNYXNrID0gbWFzazsKKyAKKy0JLyogTm8gY2hhbm5l bCBoYW5kbGVycyBhbnkgbW9yZS4gV2Ugd2lsbCBiZSBub3RpZmllZCBhdXRvbWF0aWNhbGx5Cist CSAqIGFib3V0IGV2ZW50cyBvbiB0aGUgY2hhbm5lbCBiZWxvdyB2aWEgYSBjYWxsIHRvIG91cgor LQkgKiAnVHJhbnNmb3JtTm90aWZ5UHJvYycuIEJ1dCB3ZSBoYXZlIHRvIHBhc3MgdGhlIGludGVy ZXN0IGRvd24gbm93LgorLQkgKiBXZSBhcmUgYWxsb3dlZCB0byBhZGQgYWRkaXRpb25hbCAnaW50 ZXJlc3QnIHRvIHRoZSBtYXNrIGlmIHdlIHdhbnQKKy0JICogdG8uIEJ1dCB0aGlzIHRyYW5zZm9y bWF0aW9uIGhhcyBubyBzdWNoIGludGVyZXN0LiBJdCBqdXN0IHBhc3NlcworLQkgKiB0aGUgcmVx dWVzdCBkb3duLCB1bmNoYW5nZWQuCistCSAqLworKyAgICAvKiBObyBjaGFubmVsIGhhbmRsZXJz IGFueSBtb3JlLiBXZSB3aWxsIGJlIG5vdGlmaWVkIGF1dG9tYXRpY2FsbHkKKysgICAgICogYWJv dXQgZXZlbnRzIG9uIHRoZSBjaGFubmVsIGJlbG93IHZpYSBhIGNhbGwgdG8gb3VyCisrICAgICAq ICdUcmFuc2Zvcm1Ob3RpZnlQcm9jJy4gQnV0IHdlIGhhdmUgdG8gcGFzcyB0aGUgaW50ZXJlc3Qg ZG93biBub3cuCisrICAgICAqIFdlIGFyZSBhbGxvd2VkIHRvIGFkZCBhZGRpdGlvbmFsICdpbnRl cmVzdCcgdG8gdGhlIG1hc2sgaWYgd2Ugd2FudAorKyAgICAgKiB0by4gQnV0IHRoaXMgdHJhbnNm b3JtYXRpb24gaGFzIG5vIHN1Y2ggaW50ZXJlc3QuIEl0IGp1c3QgcGFzc2VzCisrICAgICAqIHRo ZSByZXF1ZXN0IGRvd24sIHVuY2hhbmdlZC4KKysgICAgICovCisgCisgCistICAgICAgICBkcHJp bnRmKCJSZWdpc3RlcmluZyBvdXIgaW50ZXJlc3QgaW4gdGhlIGxvd2VyIGNoYW5uZWwgKGNoYW49 JXApIiwgKHZvaWQgKikgZG93bkNoYW4pOworLQkoVGNsX0dldENoYW5uZWxUeXBlKGRvd25DaGFu KSkKKy0JICAgIC0+d2F0Y2hQcm9jKFRjbF9HZXRDaGFubmVsSW5zdGFuY2VEYXRhKGRvd25DaGFu KSwgbWFzayk7CisrICAgIGRwcmludGYoIlJlZ2lzdGVyaW5nIG91ciBpbnRlcmVzdCBpbiB0aGUg bG93ZXIgY2hhbm5lbCAoY2hhbj0lcCkiLCAodm9pZCAqKSBkb3duQ2hhbik7CisrICAgIChUY2xf R2V0Q2hhbm5lbFR5cGUoZG93bkNoYW4pKQorKwktPndhdGNoUHJvYyhUY2xfR2V0Q2hhbm5lbElu c3RhbmNlRGF0YShkb3duQ2hhbiksIG1hc2spOworIAorLQkvKgorLQkgKiBNYW5hZ2VtZW50IG9m IHRoZSBpbnRlcm5hbCB0aW1lci4KKy0JICovCisrICAgIC8qCisrICAgICAqIE1hbmFnZW1lbnQg b2YgdGhlIGludGVybmFsIHRpbWVyLgorKyAgICAgKi8KKyAKKy0JaWYgKHN0YXRlUHRyLT50aW1l ciAhPSAoVGNsX1RpbWVyVG9rZW4pIE5VTEwpIHsKKy0gICAgICAgICAgICBkcHJpbnRmKCJBIHRp bWVyIHdhcyBmb3VuZCwgZGVsZXRpbmcgaXQiKTsKKy0JICAgIFRjbF9EZWxldGVUaW1lckhhbmRs ZXIoc3RhdGVQdHItPnRpbWVyKTsKKy0JICAgIHN0YXRlUHRyLT50aW1lciA9IChUY2xfVGltZXJU b2tlbikgTlVMTDsKKy0JfQorKyAgICBpZiAoc3RhdGVQdHItPnRpbWVyICE9IChUY2xfVGltZXJU b2tlbikgTlVMTCkgeworKwlkcHJpbnRmKCJBIHRpbWVyIHdhcyBmb3VuZCwgZGVsZXRpbmcgaXQi KTsKKysJVGNsX0RlbGV0ZVRpbWVySGFuZGxlcihzdGF0ZVB0ci0+dGltZXIpOworKwlzdGF0ZVB0 ci0+dGltZXIgPSAoVGNsX1RpbWVyVG9rZW4pIE5VTEw7CisrICAgIH0KKyAKKy0JaWYgKG1hc2sg JiBUQ0xfUkVBREFCTEUpIHsKKy0JCWlmIChUY2xfSW5wdXRCdWZmZXJlZChzdGF0ZVB0ci0+c2Vs ZikgPiAwIHx8IEJJT19jdHJsX3BlbmRpbmcoc3RhdGVQdHItPmJpbykgPiAwKSB7CistCQkJLyoK Ky0JCQkgKiBUaGVyZSBpcyBpbnRlcmVzdCBpbiByZWFkYWJsZSBldmVudHMgYW5kIHdlIGFjdHVh bGx5IGhhdmUKKy0JCQkgKiBkYXRhIHdhaXRpbmcsIHNvIGdlbmVyYXRlIGEgdGltZXIgdG8gZmx1 c2ggdGhhdC4KKy0JCQkgKi8KKy0JCQlkcHJpbnRmKCJDcmVhdGluZyBhIG5ldyB0aW1lciBzaW5j ZSBkYXRhIGFwcGVhcnMgdG8gYmUgd2FpdGluZyIpOworLQkJCXN0YXRlUHRyLT50aW1lciA9IFRj bF9DcmVhdGVUaW1lckhhbmRsZXIoVExTX1RDTF9ERUxBWSwgVGxzQ2hhbm5lbEhhbmRsZXJUaW1l ciwgKENsaWVudERhdGEpIHN0YXRlUHRyKTsKKy0JCX0KKy0JfQorKyAgICBpZiAoKG1hc2sgJiBU Q0xfUkVBREFCTEUpICYmCisrCSgoVGNsX0lucHV0QnVmZmVyZWQoc3RhdGVQdHItPnNlbGYpID4g MCkgfHwgKEJJT19jdHJsX3BlbmRpbmcoc3RhdGVQdHItPmJpbykgPiAwKSkpIHsKKysJICAgIC8q CisrCSAgICAgKiBUaGVyZSBpcyBpbnRlcmVzdCBpbiByZWFkYWJsZSBldmVudHMgYW5kIHdlIGFj dHVhbGx5IGhhdmUKKysJICAgICAqIGRhdGEgd2FpdGluZywgc28gZ2VuZXJhdGUgYSB0aW1lciB0 byBmbHVzaCB0aGF0LgorKwkgICAgICovCisrCSAgICBkcHJpbnRmKCJDcmVhdGluZyBhIG5ldyB0 aW1lciBzaW5jZSBkYXRhIGFwcGVhcnMgdG8gYmUgd2FpdGluZyIpOworKwkgICAgc3RhdGVQdHIt PnRpbWVyID0gVGNsX0NyZWF0ZVRpbWVySGFuZGxlcihUTFNfVENMX0RFTEFZLCBUbHNDaGFubmVs SGFuZGxlclRpbWVyLCAoQ2xpZW50RGF0YSkgc3RhdGVQdHIpOworKyAgICB9CisgfQorIAorIC8q CitAQCAtODYyLDEwICs4MjIsNyBAQCBzdGF0aWMgaW50IFRsc05vdGlmeVByb2MoQ2xpZW50RGF0 YSBpbnN0YW5jZURhdGEsIGludCBtYXNrKSB7CisgICovCisgCisgc3RhdGljIHZvaWQKKy1UbHND aGFubmVsSGFuZGxlciAoY2xpZW50RGF0YSwgbWFzaykKKy0gICAgQ2xpZW50RGF0YSAgICAgY2xp ZW50RGF0YTsKKy0gICAgaW50ICAgICAgICAgICAgbWFzazsKKy17CisrVGxzQ2hhbm5lbEhhbmRs ZXIgKENsaWVudERhdGEgY2xpZW50RGF0YSwgaW50IG1hc2spIHsKKyAgICAgU3RhdGUgKnN0YXRl UHRyID0gKFN0YXRlICopIGNsaWVudERhdGE7CisgCisgICAgIGRwcmludGYoIkhBTkRMRVIoMHgl eCkiLCBtYXNrKTsKK0BAIC05NzgsMyArOTM1LDcwIEBAIFRjbF9DaGFubmVsIFRsc19HZXRQYXJl bnQoU3RhdGUgKnN0YXRlUHRyLCBpbnQgbWFza0ZsYWdzKSB7CisgCisgCXJldHVybihUY2xfR2V0 U3RhY2tlZENoYW5uZWwoc3RhdGVQdHItPnNlbGYpKTsKKyB9CisrCisrLyoKKysgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKysgKgorKyAqIFRsc19DaGFubmVsVHlwZSAtLQorKyAqCisrICoJUmV0dXJuIHRoZSBjb3Jy ZWN0IFRMUyBjaGFubmVsIGRyaXZlciBpbmZvCisrICoKKysgKiBSZXN1bHRzOgorKyAqCVRoZSBj b3JyZWN0IGNoYW5uZWwgZHJpdmVyIGZvciB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIFRjbC4KKysg KgorKyAqIFNpZGUgZWZmZWN0czoKKysgKglOb25lLgorKyAqCisrICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrICov CisrVGNsX0NoYW5uZWxUeXBlICpUbHNfQ2hhbm5lbFR5cGUodm9pZCkgeworKwl1bnNpZ25lZCBp bnQgc2l6ZTsKKysKKysJLyoKKysJICogSW5pdGlhbGl6ZSB0aGUgY2hhbm5lbCB0eXBlIGlmIG5l Y2Vzc2FyeQorKwkgKi8KKysJaWYgKHRsc0NoYW5uZWxUeXBlID09IE5VTEwpIHsKKysJCS8qCisr CQkgKiBBbGxvY2F0ZSBuZXcgY2hhbm5lbHR5cGUgc3RydWN0dXJlCisrCQkgKi8KKysJCXNpemUg PSBzaXplb2YoVGNsX0NoYW5uZWxUeXBlKTsgLyogQmFzZSBzaXplICovCisrCisrCQl0bHNDaGFu bmVsVHlwZSA9IChUY2xfQ2hhbm5lbFR5cGUgKikgY2thbGxvYyhzaXplKTsKKysJCW1lbXNldCgo dm9pZCAqKSB0bHNDaGFubmVsVHlwZSwgMCwgc2l6ZSk7CisrCisrCQl0bHNDaGFubmVsVHlwZS0+ dHlwZU5hbWUJPSAidGxzIjsKKysjaWZkZWYgVENMX0NIQU5ORUxfVkVSU0lPTl81CisrCQl0bHND aGFubmVsVHlwZS0+dmVyc2lvbgkJPSBUQ0xfQ0hBTk5FTF9WRVJTSU9OXzU7CisrCQl0bHNDaGFu bmVsVHlwZS0+Y2xvc2VQcm9jCT0gVGxzQ2xvc2VQcm9jOworKwkJdGxzQ2hhbm5lbFR5cGUtPmlu cHV0UHJvYwk9IFRsc0lucHV0UHJvYzsKKysJCXRsc0NoYW5uZWxUeXBlLT5vdXRwdXRQcm9jCT0g VGxzT3V0cHV0UHJvYzsKKysJCXRsc0NoYW5uZWxUeXBlLT5zZWVrUHJvYwk9IE5VTEw7CisrCQl0 bHNDaGFubmVsVHlwZS0+c2V0T3B0aW9uUHJvYwk9IFRsc1NldE9wdGlvblByb2M7CisrCQl0bHND aGFubmVsVHlwZS0+Z2V0T3B0aW9uUHJvYwk9IFRsc0dldE9wdGlvblByb2M7CisrCQl0bHNDaGFu bmVsVHlwZS0+d2F0Y2hQcm9jCT0gVGxzV2F0Y2hQcm9jOworKwkJdGxzQ2hhbm5lbFR5cGUtPmdl dEhhbmRsZVByb2MJPSBUbHNHZXRIYW5kbGVQcm9jOworKwkJdGxzQ2hhbm5lbFR5cGUtPmNsb3Nl MlByb2MJPSBUbHNDbG9zZVByb2MyOworKwkJdGxzQ2hhbm5lbFR5cGUtPmJsb2NrTW9kZVByb2MJ PSBUbHNCbG9ja01vZGVQcm9jOworKwkJdGxzQ2hhbm5lbFR5cGUtPmZsdXNoUHJvYwk9IE5VTEw7 CisrCQl0bHNDaGFubmVsVHlwZS0+aGFuZGxlclByb2MJPSBUbHNOb3RpZnlQcm9jOworKwkJdGxz Q2hhbm5lbFR5cGUtPndpZGVTZWVrUHJvYwk9IE5VTEw7CisrCQl0bHNDaGFubmVsVHlwZS0+dGhy ZWFkQWN0aW9uUHJvYz0gTlVMTDsKKysJCXRsc0NoYW5uZWxUeXBlLT50cnVuY2F0ZVByb2MJPSBO VUxMOworKyNlbHNlCisrCQl0bHNDaGFubmVsVHlwZS0+dmVyc2lvbgkJPSBUQ0xfQ0hBTk5FTF9W RVJTSU9OXzI7CisrCQl0bHNDaGFubmVsVHlwZS0+Y2xvc2VQcm9jCT0gVGxzQ2xvc2VQcm9jOwor KwkJdGxzQ2hhbm5lbFR5cGUtPmlucHV0UHJvYwk9IFRsc0lucHV0UHJvYzsKKysJCXRsc0NoYW5u ZWxUeXBlLT5vdXRwdXRQcm9jCT0gVGxzT3V0cHV0UHJvYzsKKysJCXRsc0NoYW5uZWxUeXBlLT5z ZWVrUHJvYwk9IE5VTEw7CisrCQl0bHNDaGFubmVsVHlwZS0+c2V0T3B0aW9uUHJvYwk9IFRsc1Nl dE9wdGlvblByb2M7CisrCQl0bHNDaGFubmVsVHlwZS0+Z2V0T3B0aW9uUHJvYwk9IFRsc0dldE9w dGlvblByb2M7CisrCQl0bHNDaGFubmVsVHlwZS0+d2F0Y2hQcm9jCT0gVGxzV2F0Y2hQcm9jOwor KwkJdGxzQ2hhbm5lbFR5cGUtPmdldEhhbmRsZVByb2MJPSBUbHNHZXRIYW5kbGVQcm9jOworKwkJ dGxzQ2hhbm5lbFR5cGUtPmNsb3NlMlByb2MJPSBOVUxMOworKwkJdGxzQ2hhbm5lbFR5cGUtPmJs b2NrTW9kZVByb2MJPSBUbHNCbG9ja01vZGVQcm9jOworKwkJdGxzQ2hhbm5lbFR5cGUtPmZsdXNo UHJvYwk9IE5VTEw7CisrCQl0bHNDaGFubmVsVHlwZS0+aGFuZGxlclByb2MJPSBUbHNOb3RpZnlQ cm9jOworKyNlbmRpZgorKwl9CisrCXJldHVybih0bHNDaGFubmVsVHlwZSk7CisrfQorZGlmZiAt LWdpdCBhL3Rsc0ludC5oIGIvdGxzSW50LmgKK2luZGV4IDY2ODI3MmMuLjVkOWUwNDAgMTAwNjQ0 CistLS0gYS90bHNJbnQuaAorKysrIGIvdGxzSW50LmgKK0BAIC0yMywxNSArMjMsMTUgQEAKKyAj aW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorLSNpZmRlZiBfX1dJ TjMyX18KKysjaWZkZWYgX1dJTjMyCisgI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisgI2lu Y2x1ZGUgPHdpbmRvd3MuaD4KKyAjaW5jbHVkZSA8d2luY3J5cHQuaD4gLyogT3BlblNTTCBuZWVk cyB0aGlzIG9uIFdpbmRvd3MgKi8KKyAjZW5kaWYKKyAKKy0vKiBIYW5kbGUgdGNsOC4zLT50Y2w4 LjQgQ09OU1QgY2hhbmdlcyAqLworLSNpZm5kZWYgQ09OU1Q4NAorLSNkZWZpbmUgQ09OU1Q4NAor Ky8qIEhhbmRsZSBUQ0wgOC42IENPTlNUIGNoYW5nZXMgKi8KKysjaWZuZGVmIENPTlNUODYKKysj ZGVmaW5lIENPTlNUODYKKyAjZW5kaWYKKyAKKyAjaWZkZWYgTk9fUEFURU5UUworZGlmZiAtLWdp dCBhL3Rsc1g1MDkuYyBiL3Rsc1g1MDkuYworaW5kZXggODM4ZjM1MC4uYWU1OWViZiAxMDA2NDQK Ky0tLSBhL3Rsc1g1MDkuYworKysrIGIvdGxzWDUwOS5jCitAQCAtMzUsOCArMzUsOCBAQCBBU04x X1VUQ1RJTUVfdG9zdHIoQVNOMV9VVENUSU1FICp0bSkKKyAgICAgY2hhciAqdjsKKyAgICAgaW50 IGdtdD0wOworICAgICBzdGF0aWMgY2hhciAqbW9uWzEyXT17CistICAgICAgICAiSmFuIiwiRmVi IiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwKKy0gICAgICAgICJKdWwiLCJBdWciLCJTZXAiLCJP Y3QiLCJOb3YiLCJEZWMifTsKKysJIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIs CisrCSJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMifTsKKyAgICAgaW50IGk7Cisg ICAgIGludCB5PTAsTT0wLGQ9MCxoPTAsbT0wLHM9MDsKKyAgICAgCitAQCAtNDYsNyArNDYsNyBA QCBBU04xX1VUQ1RJTUVfdG9zdHIoQVNOMV9VVENUSU1FICp0bSkKKyAgICAgaWYgKGkgPCAxMCkg Z290byBlcnI7CisgICAgIGlmICh2W2ktMV0gPT0gJ1onKSBnbXQ9MTsKKyAgICAgZm9yIChpPTA7 IGk8MTA7IGkrKykKKy0gICAgICAgIGlmICgodltpXSA+ICc5JykgfHwgKHZbaV0gPCAnMCcpKSBn b3RvIGVycjsKKysJaWYgKCh2W2ldID4gJzknKSB8fCAodltpXSA8ICcwJykpIGdvdG8gZXJyOwor ICAgICB5PSAodlswXS0nMCcpKjEwKyh2WzFdLScwJyk7CisgICAgIGlmICh5IDwgNzApIHkrPTEw MDsKKyAgICAgTT0gKHZbMl0tJzAnKSoxMCsodlszXS0nMCcpOworQEAgLTU2LDEwICs1NiwxMCBA QCBBU04xX1VUQ1RJTUVfdG9zdHIoQVNOMV9VVENUSU1FICp0bSkKKyAgICAgbT0gICh2WzhdLScw JykqMTArKHZbOV0tJzAnKTsKKyAgICAgaWYgKAkodlsxMF0gPj0gJzAnKSAmJiAodlsxMF0gPD0g JzknKSAmJgorIAkJKHZbMTFdID49ICcwJykgJiYgKHZbMTFdIDw9ICc5JykpCistICAgICAgICBz PSAgKHZbMTBdLScwJykqMTArKHZbMTFdLScwJyk7CisrCXM9ICAodlsxMF0tJzAnKSoxMCsodlsx MV0tJzAnKTsKKyAgICAgCisgICAgIHNwcmludGYoYnAsIiVzICUyZCAlMDJkOiUwMmQ6JTAyZCAl ZCVzIiwKKy0gICAgICAgICAgICAgICAgICAgbW9uW00tMV0sZCxoLG0scyx5KzE5MDAsKGdtdCk/ IiBHTVQiOiIiKTsKKysJCSAgIG1vbltNLTFdLGQsaCxtLHMseSsxOTAwLChnbXQpPyIgR01UIjoi Iik7CisgICAgIHJldHVybiBicDsKKyAgZXJyOgorICAgICByZXR1cm4gIkJhZCB0aW1lIHZhbHVl IjsKK0BAIC04NywxMCArODcsNyBAQCBBU04xX1VUQ1RJTUVfdG9zdHIoQVNOMV9VVENUSU1FICp0 bSkKKyAjZGVmaW5lIENFUlRfU1RSX1NJWkUgMTYzODQKKyAKKyBUY2xfT2JqKgorLVRsc19OZXdY NTA5T2JqKCBpbnRlcnAsIGNlcnQpCistICAgIFRjbF9JbnRlcnAgKmludGVycDsKKy0gICAgWDUw OSAqY2VydDsKKy17CisrVGxzX05ld1g1MDlPYmooIFRjbF9JbnRlcnAgKmludGVycCwgWDUwOSAq Y2VydCkgeworICAgICBUY2xfT2JqICpjZXJ0UHRyID0gVGNsX05ld0xpc3RPYmooIDAsIE5VTEwp OworICAgICBCSU8gKmJpbzsKKyAgICAgaW50IG47CitAQCAtMTM4LDI2ICsxMzUsMjYgQEAgVGxz X05ld1g1MDlPYmooIGludGVycCwgY2VydCkKKyAJc2VyaWFsW25dID0gMDsKKyAJKHZvaWQpQklP X2ZsdXNoKGJpbyk7CisgCistICAgICAgICBpZiAoUEVNX3dyaXRlX2Jpb19YNTA5KGJpbywgY2Vy dCkpIHsKKy0gICAgICAgICAgICBjZXJ0U3RyX3AgPSBjZXJ0U3RyOworLSAgICAgICAgICAgIGNl cnRTdHJfbGVuID0gMDsKKy0gICAgICAgICAgICB3aGlsZSAoMSkgeworLSAgICAgICAgICAgICAg ICB0b1JlYWQgPSBtaW4oQklPX3BlbmRpbmcoYmlvKSwgQ0VSVF9TVFJfU0laRSAtIGNlcnRTdHJf bGVuIC0gMSk7CistICAgICAgICAgICAgICAgIHRvUmVhZCA9IG1pbih0b1JlYWQsIEJVRlNJWik7 CistICAgICAgICAgICAgICAgIGlmICh0b1JlYWQgPT0gMCkgeworLSAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgZHByaW50Zigi UmVhZGluZyAlaSBieXRlcyBmcm9tIHRoZSBjZXJ0aWZpY2F0ZS4uLiIsIHRvUmVhZCk7CistICAg ICAgICAgICAgICAgIG4gPSBCSU9fcmVhZChiaW8sIGNlcnRTdHJfcCwgdG9SZWFkKTsKKy0gICAg ICAgICAgICAgICAgaWYgKG4gPD0gMCkgeworLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cist ICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgY2VydFN0cl9sZW4gKz0gbjsKKy0g ICAgICAgICAgICAgICAgY2VydFN0cl9wICAgKz0gbjsKKy0gICAgICAgICAgICB9CistICAgICAg ICAgICAgKmNlcnRTdHJfcCA9ICdcMCc7CistICAgICAgICAgICAgKHZvaWQpQklPX2ZsdXNoKGJp byk7CistICAgICAgICB9CisrCWlmIChQRU1fd3JpdGVfYmlvX1g1MDkoYmlvLCBjZXJ0KSkgewor KwkgICAgY2VydFN0cl9wID0gY2VydFN0cjsKKysJICAgIGNlcnRTdHJfbGVuID0gMDsKKysJICAg IHdoaWxlICgxKSB7CisrCQl0b1JlYWQgPSBtaW4oQklPX3BlbmRpbmcoYmlvKSwgQ0VSVF9TVFJf U0laRSAtIGNlcnRTdHJfbGVuIC0gMSk7CisrCQl0b1JlYWQgPSBtaW4odG9SZWFkLCBCVUZTSVop OworKwkJaWYgKHRvUmVhZCA9PSAwKSB7CisrCQkgICAgYnJlYWs7CisrCQl9CisrCQlkcHJpbnRm KCJSZWFkaW5nICVpIGJ5dGVzIGZyb20gdGhlIGNlcnRpZmljYXRlLi4uIiwgdG9SZWFkKTsKKysJ CW4gPSBCSU9fcmVhZChiaW8sIGNlcnRTdHJfcCwgdG9SZWFkKTsKKysJCWlmIChuIDw9IDApIHsK KysJCSAgICBicmVhazsKKysJCX0KKysJCWNlcnRTdHJfbGVuICs9IG47CisrCQljZXJ0U3RyX3Ag ICArPSBuOworKwkgICAgfQorKwkgICAgKmNlcnRTdHJfcCA9ICdcMCc7CisrCSAgICAodm9pZClC SU9fZmx1c2goYmlvKTsKKysJfQorIAorIAlCSU9fZnJlZShiaW8pOworICAgICB9CitAQCAtMTY2 LDEwICsxNjMsMTEgQEAgVGxzX05ld1g1MDlPYmooIGludGVycCwgY2VydCkKKyAgICAgc3RyY3B5 KCBub3RBZnRlciwgQVNOMV9VVENUSU1FX3Rvc3RyKCBYNTA5X2dldF9ub3RBZnRlcihjZXJ0KSAp KTsKKyAKKyAjaWZuZGVmIE5PX1NTTF9TSEEKKy0gICAgWDUwOV9kaWdlc3QoY2VydCwgRVZQX3No YTEoKSwgc2hhX2hhc2hfYmluYXJ5LCBOVUxMKTsKKy0gICAgZm9yIChzaGFpID0gMDsgc2hhaSA8 IFNIQV9ESUdFU1RfTEVOR1RIOyBzaGFpKyspIHsKKy0gICAgICAgIHNoYV9oYXNoX2FzY2lpW3No YWkgKiAyXSAgICAgPSBzaGFjaGFyc1soc2hhX2hhc2hfYmluYXJ5W3NoYWldICYgMHhGMCkgPj4g NF07CistICAgICAgICBzaGFfaGFzaF9hc2NpaVtzaGFpICogMiArIDFdID0gc2hhY2hhcnNbKHNo YV9oYXNoX2JpbmFyeVtzaGFpXSAmIDB4MEYpXTsKKysgICAgLyogU0hBMSAqLworKyAgICBYNTA5 X2RpZ2VzdChjZXJ0LCBFVlBfc2hhMSgpLCBzaGFfaGFzaF9iaW5hcnksIE5VTEwpOworKyAgICBm b3IgKHNoYWkgPSAwOyBzaGFpIDwgU0hBX0RJR0VTVF9MRU5HVEg7IHNoYWkrKykgeworKwlzaGFf aGFzaF9hc2NpaVtzaGFpICogMl0gICAgID0gc2hhY2hhcnNbKHNoYV9oYXNoX2JpbmFyeVtzaGFp XSAmIDB4RjApID4+IDRdOworKwlzaGFfaGFzaF9hc2NpaVtzaGFpICogMiArIDFdID0gc2hhY2hh cnNbKHNoYV9oYXNoX2JpbmFyeVtzaGFpXSAmIDB4MEYpXTsKKyAgICAgfQorICAgICBUY2xfTGlz dE9iakFwcGVuZEVsZW1lbnQoIGludGVycCwgY2VydFB0ciwgVGNsX05ld1N0cmluZ09iaigic2hh MV9oYXNoIiwgLTEpICk7CisgICAgIFRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCggaW50ZXJwLCBj ZXJ0UHRyLCBUY2xfTmV3U3RyaW5nT2JqKHNoYV9oYXNoX2FzY2lpLCBTSEFfRElHRVNUX0xFTkdU SCAqIDIpICk7Citjb21taXQgN2YwODkyNGVmZDUxZjllMmUwZmJkYWE5ZGQzYWI4YzMzMThiNDhm MworQXV0aG9yOiBib2hhZ2FuIDxib2hhZ2FuPgorRGF0ZTogICBGcmkgTWFyIDE1IDIyOjE3OjIz IDIwMjQgKzAwMDAKKworICAgIEZpeCB3YXJuaW5ncyBmb3IgY29tcGlsZSB3aXRoIEdDQyBvbiBU Q0wgOS4wCisKK2RpZmYgLS1naXQgYS90bHMuYyBiL3Rscy5jCitpbmRleCAzNTJmYzJjLi41NjQz N2I5IDEwMDY0NAorLS0tIGEvdGxzLmMKKysrKyBiL3Rscy5jCitAQCAtODY3LDcgKzg2Nyw3IEBA IEltcG9ydE9iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwg aW50IG9iamMsIFRjbF9PYmogKmNvbnN0CisgCS8qIEdldCB0aGUgIm1vZGVsIiBjb250ZXh0ICov CisgCWNoYW4gPSBUY2xfR2V0Q2hhbm5lbChpbnRlcnAsIG1vZGVsLCAmbW9kZSk7CisgCWlmIChj aGFuID09IChUY2xfQ2hhbm5lbCkgTlVMTCkgeworLQkgICAgVGxzX0ZyZWUoKGNoYXIgKikgc3Rh dGVQdHIpOworKwkgICAgVGxzX0ZyZWUoKHRsc19mcmVlX3R5cGUgKikgc3RhdGVQdHIpOworIAkg ICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorQEAgLTg3OCw3ICs4NzgsNyBAQCBJbXBvcnRP YmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpj LCBUY2xfT2JqICpjb25zdAorIAlpZiAoVGNsX0dldENoYW5uZWxUeXBlKGNoYW4pICE9IFRsc19D aGFubmVsVHlwZSgpKSB7CisgCSAgICBUY2xfQXBwZW5kUmVzdWx0KGludGVycCwgImJhZCBjaGFu bmVsIFwiIiwKKyAJCSAgICBUY2xfR2V0Q2hhbm5lbE5hbWUoY2hhbiksICJcIjogbm90IGEgVExT IGNoYW5uZWwiLCBOVUxMKTsKKy0JICAgIFRsc19GcmVlKChjaGFyICopIHN0YXRlUHRyKTsKKysJ ICAgIFRsc19GcmVlKCh0bHNfZnJlZV90eXBlICopIHN0YXRlUHRyKTsKKyAJICAgIHJldHVybiBU Q0xfRVJST1I7CisgCX0KKyAJY3R4ID0gKChTdGF0ZSAqKVRjbF9HZXRDaGFubmVsSW5zdGFuY2VE YXRhKGNoYW4pKS0+Y3R4OworQEAgLTg4Niw3ICs4ODYsNyBAQCBJbXBvcnRPYmpDbWQoQ2xpZW50 RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpj b25zdAorIAlpZiAoKGN0eCA9IENUWF9Jbml0KHN0YXRlUHRyLCBzZXJ2ZXIsIHByb3RvLCBrZXlm aWxlLCBjZXJ0ZmlsZSwga2V5LAorICAgICBjZXJ0LCBrZXlfbGVuLCBjZXJ0X2xlbiwgQ0FkaXIs IENBZmlsZSwgY2lwaGVycywKKyAgICAgREhwYXJhbXMpKSA9PSAoU1NMX0NUWCopMCkgeworLQkg ICAgVGxzX0ZyZWUoKGNoYXIgKikgc3RhdGVQdHIpOworKwkgICAgVGxzX0ZyZWUoKHRsc19mcmVl X3R5cGUgKikgc3RhdGVQdHIpOworIAkgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorICAgICB9 CitAQCAtOTE2LDcgKzkxNiw3IEBAIEltcG9ydE9iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEs IFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0CisgCS8qCisgCSAq IE5vIHVzZSBvZiBUY2xfRXZlbnR1YWxseUZyZWUgYmVjYXVzZSBubyBwb3NzaWJsZSBUY2xfUHJl c2VydmUuCisgCSAqLworLQlUbHNfRnJlZSgoY2hhciAqKSBzdGF0ZVB0cik7CisrCVRsc19GcmVl KCh0bHNfZnJlZV90eXBlICopIHN0YXRlUHRyKTsKKyAJcmV0dXJuIFRDTF9FUlJPUjsKKyAgICAg fQorIAorQEAgLTkzNCw3ICs5MzQsNyBAQCBJbXBvcnRPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnRE YXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdAorIAkvKiBT U0wgbGlicmFyeSBlcnJvciAqLworIAlUY2xfQXBwZW5kUmVzdWx0KGludGVycCwgImNvdWxkbid0 IGNvbnN0cnVjdCBzc2wgc2Vzc2lvbjogIiwgUkVBU09OKCksCisgCQkoY2hhciAqKSBOVUxMKTsK Ky0JVGxzX0ZyZWUoKGNoYXIgKikgc3RhdGVQdHIpOworKwlUbHNfRnJlZSgodGxzX2ZyZWVfdHlw ZSAqKSBzdGF0ZVB0cik7CisgCXJldHVybiBUQ0xfRVJST1I7CisgICAgIH0KKyAKK0BAIC05NDMs NyArOTQzLDcgQEAgSW1wb3J0T2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVy cCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3QKKyAJaWYgKCFTU0xfc2V0X3Rsc2V4 dF9ob3N0X25hbWUoc3RhdGVQdHItPnNzbCwgc2VydmVybmFtZSkgJiYgcmVxdWlyZSkgeworIAkg ICAgVGNsX0FwcGVuZFJlc3VsdChpbnRlcnAsICJzZXR0aW5nIFRMUyBob3N0IG5hbWUgZXh0ZW5z aW9uIGZhaWxlZCIsCisgCQkoY2hhciAqKSBOVUxMKTsKKy0JICAgIFRsc19GcmVlKChjaGFyICop IHN0YXRlUHRyKTsKKysJICAgIFRsc19GcmVlKCh0bHNfZnJlZV90eXBlICopIHN0YXRlUHRyKTsK KyAJICAgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3Rsc0lu dC5oIGIvdGxzSW50LmgKK2luZGV4IDVkOWUwNDAuLjZmMDUzYzUgMTAwNjQ0CistLS0gYS90bHNJ bnQuaAorKysrIGIvdGxzSW50LmgKK0BAIC0xNjEsNiArMTYxLDEyIEBAIHR5cGVkZWYgc3RydWN0 IFN0YXRlIHsKKyAjZW5kaWYgLyogVGNsX0dldFN0YWNrZWRDaGFubmVsICovCisgI2VuZGlmIC8q IFVTRV9UQ0xfU1RVQlMgKi8KKyAKKysjaWYgVENMX01BSk9SX1ZFUlNJT04gPCA5CisrICAgIHR5 cGVkZWYgY2hhciB0bHNfZnJlZV90eXBlOworKyNlbHNlCisrICAgIHR5cGVkZWYgdm9pZCB0bHNf ZnJlZV90eXBlOworKyNlbmRpZgorKworIC8qCisgICogRm9yd2FyZCBkZWNsYXJhdGlvbnMKKyAg Ki8KK0BAIC0xNjksNyArMTc1LDcgQEAgVGNsX0NoYW5uZWwgICAgIFRsc19HZXRQYXJlbnQoU3Rh dGUgKnN0YXRlUHRyLCBpbnQgbWFza0ZsYWdzKTsKKyAKKyBUY2xfT2JqICAgICAgICAgKlRsc19O ZXdYNTA5T2JqKFRjbF9JbnRlcnAgKmludGVycCwgWDUwOSAqY2VydCk7Cisgdm9pZCAgICAgICAg ICAgIFRsc19FcnJvcihTdGF0ZSAqc3RhdGVQdHIsIGNoYXIgKm1zZyk7Cistdm9pZCAgICAgICAg ICAgIFRsc19GcmVlKGNoYXIgKmJsb2NrUHRyKTsKKyt2b2lkICAgICAgICAgICAgVGxzX0ZyZWUo dGxzX2ZyZWVfdHlwZSAqYmxvY2tQdHIpOworIHZvaWQgICAgICAgICAgICBUbHNfQ2xlYW4oU3Rh dGUgKnN0YXRlUHRyKTsKKyBpbnQgICAgICAgICAgICAgVGxzX1dhaXRGb3JDb25uZWN0KFN0YXRl ICpzdGF0ZVB0ciwgaW50ICplcnJvckNvZGVQdHIsIGludCBoYW5kc2hha2VGYWlsdXJlSXNQZXJt YW5lbnQpOworIAoKZGlmZiAtLWdpdCBhL3RjbHRscy0xLjcuMjItdGNsLTlfMF9zZWNvbmQucGF0 Y2ggYi90Y2x0bHMtMS43LjIyLXRjbC05XzBfc2Vjb25kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjY5YTc2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi90Y2x0bHMtMS43 LjIyLXRjbC05XzBfc2Vjb25kLnBhdGNoCkBAIC0wLDAgKzEsMTcxIEBACitkaWZmIC0tZ2l0IGEv dGNsT3B0cy5oIGIvdGNsT3B0cy5oCitpbmRleCAxZjk4ZmM2Li5hZTI3NDA3IDEwMDY0NAorLS0t IGEvdGNsT3B0cy5oCisrKysgYi90Y2xPcHRzLmgKK0BAIC0yNiw3ICsyNiw3IEBACisgCisgI2Rl ZmluZSBPUFRTVFIob3B0aW9uLCB2YXIpCQkJXAorICAgICBPUFRfUFJPTE9HKG9wdGlvbikJCQkJ XAorLSAgICB2YXIgPSBUY2xfR2V0U3RyaW5nRnJvbU9iaihvYmp2W2lkeF0sIE5VTEwpO1wKKysg ICAgdmFyID0gVGNsX0dldFN0cmluZ0Zyb21PYmoob2JqdltpZHhdLCAoVGNsX1NpemUgKilOVUxM KTtcCisgICAgIE9QVF9QT1NUTE9HKCkKKyAKKyAjZGVmaW5lIE9QVElOVChvcHRpb24sIHZhcikJ CQlcCitkaWZmIC0tZ2l0IGEvdGxzLmMgYi90bHMuYworaW5kZXggNTY0MzdiOS4uZmQ0MzU2NCAx MDA2NDQKKy0tLSBhL3Rscy5jCisrKysgYi90bHMuYworQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0 aWMgaW50CisgVmVyaWZ5Q2FsbGJhY2soaW50IG9rLCBYNTA5X1NUT1JFX0NUWCAqY3R4KSB7Cisg ICAgIFRjbF9PYmogKmNtZFB0ciwgKnJlc3VsdDsKKyAgICAgY2hhciAqZXJyU3RyLCAqc3RyaW5n OworLSAgICBpbnQgbGVuZ3RoOworKyAgICBUY2xfU2l6ZSBsZW5ndGg7CisgICAgIFNTTCAgICpz c2wJCT0gKFNTTCopWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGEoY3R4LCBTU0xfZ2V0X2V4X2Rh dGFfWDUwOV9TVE9SRV9DVFhfaWR4KCkpOworICAgICBYNTA5ICAqY2VydAkJPSBYNTA5X1NUT1JF X0NUWF9nZXRfY3VycmVudF9jZXJ0KGN0eCk7CisgICAgIFN0YXRlICpzdGF0ZVB0cgk9IChTdGF0 ZSopU1NMX2dldF9hcHBfZGF0YShzc2wpOworQEAgLTM1NSw3ICszNTUsNyBAQCBUbHNfRXJyb3Io U3RhdGUgKnN0YXRlUHRyLCBjaGFyICptc2cpIHsKKyAgICAgaWYgKG1zZyAmJiAqbXNnKSB7Cisg CVRjbF9TZXRFcnJvckNvZGUoc3RhdGVQdHItPmludGVycCwgIlNTTCIsIG1zZywgKGNoYXIgKilO VUxMKTsKKyAgICAgfSBlbHNlIHsKKy0JbXNnID0gVGNsX0dldFN0cmluZ0Zyb21PYmooVGNsX0dl dE9ialJlc3VsdChzdGF0ZVB0ci0+aW50ZXJwKSwgTlVMTCk7CisrCW1zZyA9IFRjbF9HZXRTdHJp bmdGcm9tT2JqKFRjbF9HZXRPYmpSZXN1bHQoc3RhdGVQdHItPmludGVycCksIChUY2xfU2l6ZSAq KU5VTEwpOworICAgICB9CisgICAgIHN0YXRlUHRyLT5lcnIgPSBtc2c7CisgCitAQCAtNjQ1LDcg KzY0NSw3IEBAIHN0YXRpYyBpbnQgSGFuZHNoYWtlT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0 YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywKKyAJCXJldHVybihUQ0xfRVJST1IpOwor IAl9CisgCistCWNoYW4gPSBUY2xfR2V0Q2hhbm5lbChpbnRlcnAsIFRjbF9HZXRTdHJpbmdGcm9t T2JqKG9ianZbMV0sIE5VTEwpLCBOVUxMKTsKKysJY2hhbiA9IFRjbF9HZXRDaGFubmVsKGludGVy cCwgVGNsX0dldFN0cmluZ0Zyb21PYmoob2JqdlsxXSwgKFRjbF9TaXplICopTlVMTCksIE5VTEwp OworIAlpZiAoY2hhbiA9PSAoVGNsX0NoYW5uZWwpIE5VTEwpIHsKKyAJCXJldHVybihUQ0xfRVJS T1IpOworIAl9CitAQCAtNzIwLDE1ICs3MjAsMTYgQEAgSW1wb3J0T2JqQ21kKENsaWVudERhdGEg Y2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3QK KyAgICAgVGNsX09iaiAqc2NyaXB0CSAgICAgICAgPSBOVUxMOworICAgICBUY2xfT2JqICpwYXNz d29yZAkgICAgICAgID0gTlVMTDsKKyAgICAgVGNsX0RTdHJpbmcgdXBwZXJDaGFubmVsVHJhbnNs YXRpb24sIHVwcGVyQ2hhbm5lbEJsb2NraW5nLCB1cHBlckNoYW5uZWxFbmNvZGluZywgdXBwZXJD aGFubmVsRU9GQ2hhcjsKKy0gICAgaW50IGlkeCwgbGVuOworKyAgICBpbnQgaWR4OworKyAgICBU Y2xfU2l6ZSBsZW47CisgICAgIGludCBmbGFncwkJICAgICAgICA9IFRMU19UQ0xfSU5JVDsKKyAg ICAgaW50IHNlcnZlcgkJICAgICAgICA9IDA7CS8qIGlzIGNvbm5lY3Rpb24gaW5jb21pbmcgb3Ig b3V0Z29pbmc/ICovCisgICAgIGNoYXIgKmtleWZpbGUJICAgICAgICA9IE5VTEw7CisgICAgIGNo YXIgKmNlcnRmaWxlCSAgICAgICAgPSBOVUxMOworICAgICB1bnNpZ25lZCBjaGFyICprZXkgIAk9 IE5VTEw7CistICAgIGludCBrZXlfbGVuICAgICAgICAgICAgICAgICA9IDA7CisrICAgIFRjbF9T aXplIGtleV9sZW4gICAgICAgICAgICA9IDA7CisgICAgIHVuc2lnbmVkIGNoYXIgKmNlcnQgICAg ICAgICA9IE5VTEw7CistICAgIGludCBjZXJ0X2xlbiAgICAgICAgICAgICAgICA9IDA7CisrICAg IFRjbF9TaXplIGNlcnRfbGVuICAgICAgICAgICA9IDA7CisgICAgIGNoYXIgKmNpcGhlcnMJICAg ICAgICA9IE5VTEw7CisgICAgIGNoYXIgKkNBZmlsZQkgICAgICAgID0gTlVMTDsKKyAgICAgY2hh ciAqQ0FkaXIJCSAgICAgICAgPSBOVUxMOworQEAgLTc2OCw3ICs3NjksNyBAQCBJbXBvcnRPYmpD bWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBU Y2xfT2JqICpjb25zdAorIAlyZXR1cm4gVENMX0VSUk9SOworICAgICB9CisgCistICAgIGNoYW4g PSBUY2xfR2V0Q2hhbm5lbChpbnRlcnAsIFRjbF9HZXRTdHJpbmdGcm9tT2JqKG9ianZbMV0sIE5V TEwpLCBOVUxMKTsKKysgICAgY2hhbiA9IFRjbF9HZXRDaGFubmVsKGludGVycCwgVGNsX0dldFN0 cmluZ0Zyb21PYmoob2JqdlsxXSwgKFRjbF9TaXplICopTlVMTCksIE5VTEwpOworICAgICBpZiAo Y2hhbiA9PSAoVGNsX0NoYW5uZWwpIE5VTEwpIHsKKyAJcmV0dXJuIFRDTF9FUlJPUjsKKyAgICAg fQorQEAgLTc3OSw3ICs3ODAsNyBAQCBJbXBvcnRPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRh LCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdAorICAgICBjaGFu ID0gVGNsX0dldFRvcENoYW5uZWwoY2hhbik7CisgCisgICAgIGZvciAoaWR4ID0gMjsgaWR4IDwg b2JqYzsgaWR4KyspIHsKKy0JY2hhciAqb3B0ID0gVGNsX0dldFN0cmluZ0Zyb21PYmoob2Jqdltp ZHhdLCBOVUxMKTsKKysJY2hhciAqb3B0ID0gVGNsX0dldFN0cmluZ0Zyb21PYmoob2JqdltpZHhd LCAoVGNsX1NpemUgKilOVUxMKTsKKyAKKyAJaWYgKG9wdFswXSAhPSAnLScpCisgCSAgICBicmVh azsKK0BAIC0xMzgwLDEyICsxMzgxLDEyIEBAIFN0YXR1c09iakNtZChDbGllbnREYXRhIGNsaWVu dERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0CisgCisg ICAgIHN3aXRjaCAob2JqYykgeworIAljYXNlIDI6CistCSAgICBjaGFubmVsTmFtZSA9IFRjbF9H ZXRTdHJpbmdGcm9tT2JqKG9ianZbMV0sIE5VTEwpOworKwkgICAgY2hhbm5lbE5hbWUgPSBUY2xf R2V0U3RyaW5nRnJvbU9iaihvYmp2WzFdLCAoVGNsX1NpemUgKilOVUxMKTsKKyAJICAgIGJyZWFr OworIAorIAljYXNlIDM6CisgCSAgICBpZiAoIXN0cmNtcCAoVGNsX0dldFN0cmluZyAob2Jqdlsx XSksICItbG9jYWwiKSkgeworLQkJY2hhbm5lbE5hbWUgPSBUY2xfR2V0U3RyaW5nRnJvbU9iaihv Ymp2WzJdLCBOVUxMKTsKKysJCWNoYW5uZWxOYW1lID0gVGNsX0dldFN0cmluZ0Zyb21PYmoob2Jq dlsyXSwgKFRjbF9TaXplICopTlVMTCk7CisgCQlicmVhazsKKyAJICAgIH0KKyAJICAgIC8qIGVs c2UgZmFsbC10aHJvdWdoIC4uLiAqLworQEAgLTE0NDIsNiArMTQ0Myw3IEBAIFN0YXR1c09iakNt ZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRj bF9PYmogKmNvbnN0CisgICAgIHJldHVybiBUQ0xfT0s7CisgCWNsaWVudERhdGEgPSBjbGllbnRE YXRhOworIH0KKysKKyAMCisgLyoKKyAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BAIC0xNDg4LDcgKzE0OTAsNyBA QCBzdGF0aWMgaW50CisgTWlzY09iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRl cnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSkgeworICAgICBzdGF0 aWMgY29uc3QgY2hhciAqY29tbWFuZHMgW10gPSB7ICJyZXEiLCAic3RycmVxIiwgTlVMTCB9Owor ICAgICBlbnVtIGNvbW1hbmQgeyBDX1JFUSwgQ19TVFJSRVEsIENfRFVNTVkgfTsKKy0gICAgaW50 IGNtZDsKKysgICAgVGNsX1NpemUgY21kOworIAorICAgICBkcHJpbnRmKCJDYWxsZWQiKTsKKyAK K0BAIC0xNTA3LDcgKzE1MTAsOCBAQCBNaXNjT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwg VGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3QgbworIAkgICAgWDUw OSAqY2VydD1OVUxMOworIAkgICAgWDUwOV9OQU1FICpuYW1lPU5VTEw7CisgCSAgICBUY2xfT2Jq ICoqbGlzdHY7CistCSAgICBpbnQgbGlzdGMsaTsKKysJICAgIFRjbF9TaXplIGxpc3RjOworKwkg ICAgaW50IGk7CisgCisgCSAgICBCSU8gKm91dD1OVUxMOworIAorQEAgLTE1MjcsOCArMTUzMSw3 IEBAIE1pc2NPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAs IGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvCisgCSAgICBwZW1vdXQ9VGNsX0dldFN0cmluZyhv Ymp2WzRdKTsKKyAKKyAJICAgIGlmIChvYmpjPj02KSB7CistCQlpZiAoVGNsX0xpc3RPYmpHZXRF bGVtZW50cyhpbnRlcnAsIG9ianZbNV0sCistCQkJJmxpc3RjLCAmbGlzdHYpICE9IFRDTF9PSykg eworKwkJaWYgKFRjbF9MaXN0T2JqR2V0RWxlbWVudHMoaW50ZXJwLCBvYmp2WzVdLCAmbGlzdGMs ICZsaXN0dikgIT0gVENMX09LKSB7CisgCQkgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJCX0KKyAK K0BAIC0xNjQ4LDcgKzE2NTEsNyBAQCBNaXNjT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwg VGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3QgbworICAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAqLworIHZvaWQKKy1UbHNfRnJlZSggY2hhciAqYmxvY2tQdHIgKQorK1Rsc19GcmVl KCB0bHNfZnJlZV90eXBlICpibG9ja1B0ciApCisgeworICAgICBTdGF0ZSAqc3RhdGVQdHIgPSAo U3RhdGUgKilibG9ja1B0cjsKKyAKK2RpZmYgLS1naXQgYS90bHNJbnQuaCBiL3Rsc0ludC5oCitp bmRleCA2ZjA1M2M1Li4xZDAyYmQxIDEwMDY0NAorLS0tIGEvdGxzSW50LmgKKysrKyBiL3Rsc0lu dC5oCitAQCAtMzEsNyArMzEsMjIgQEAKKyAKKyAvKiBIYW5kbGUgVENMIDguNiBDT05TVCBjaGFu Z2VzICovCisgI2lmbmRlZiBDT05TVDg2CistI2RlZmluZSBDT05TVDg2CisrIyAgIGlmIFRDTF9N QUpPUl9WRVJTSU9OID4gOAorKyMJZGVmaW5lIENPTlNUODYgY29uc3QKKysjICAgZWxzZQorKyMJ ZGVmaW5lIENPTlNUODYKKysjICAgZW5kaWYKKysjZW5kaWYKKysKKysvKgorKyAqIEJhY2t3YXJk cyBjb21wYXRpYmlsaXR5IGZvciBzaXplIHR5cGUgY2hhbmdlCisrICovCisrI2lmIFRDTF9NQUpP Ul9WRVJTSU9OIDwgOSAmJiBUQ0xfTUlOT1JfVkVSU0lPTiA8IDcKKysgICAgI2lmbmRlZiBUY2xf U2l6ZQorKyAgICAgICAgdHlwZWRlZiBpbnQgVGNsX1NpemU7CisrICAgICNlbmRpZgorKworKyAg ICAjZGVmaW5lIFRDTF9TSVpFX01PRElGSUVSICIiCisgI2VuZGlmCisgCisgI2lmZGVmIE5PX1BB VEVOVFMKCmRpZmYgLS1naXQgYS90Y2x0bHMuc3BlYyBiL3RjbHRscy5zcGVjCmluZGV4IDQ3MzFh NjIuLjIxYmVhOGUgMTAwNjQ0Ci0tLSBhL3RjbHRscy5zcGVjCisrKyBiL3RjbHRscy5zcGVjCkBA IC0xNiw2ICsxNiw4IEBAIFBhdGNoMTogICAgICAgICB0Y2x0bHMtMS43LjIxLWhvc3RuYW1lLXRl c3RzLnBhdGNoCiBQYXRjaDI6ICAgICAgICAgdGNsdGxzLTEuNy4yMi1jZXJ0LXRlc3RzLnBhdGNo CiBQYXRjaDM6ICAgICAgICAgdGNsdGxzLTEuNy4yMi1mYWxsLXRocm91Z2gucGF0Y2gKIFBhdGNo NDogICAgICAgICB0Y2x0bHMtMS43LjIyLW9wZW5zc2wzLnBhdGNoCitQYXRjaDU6ICAgICAgICAg dGNsdGxzLTEuNy4yMi10Y2wtOV8wLnBhdGNoCitQYXRjaDY6ICAgICAgICAgdGNsdGxzLTEuNy4y Mi10Y2wtOV8wX3NlY29uZC5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOiAgbWFrZQogJWlmIDAlez9m ZWRvcmF9IHx8IDAlez9yaGVsfSA+PSA4Cg==