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: Michel Lind To: git-commits@fedoraproject.org Subject: [rpms/hfsutils] rawhide: Port tclhfs.c and hfswish.c to the Tcl 9 result API Date: Fri, 31 Jul 2026 13:59:39 GMT Message-ID: <178550637998.1.7278145118155512351.rpms-hfsutils-8fe66a9c2fb7@fedoraproject.org> List-ID: X-Git-Repo: rpms/hfsutils X-Git-Branch: rawhide X-Git-Rev: 8fe66a9c2fb70500d291e871b669d1c097c437d2 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaGZzdXRpbHMKICAgICAgICAgICAgQnJhbmNoIDogcmF3aGlkZQogICAgICAg ICAgICBDb21taXQgOiA4ZmU2NmE5YzJmYjcwNTAwZDI5MWU4NzFiNjY5ZDFjMDk3YzQzN2QyCiAg ICAgICAgICAgIEF1dGhvciA6IE1pY2hlbCBMaW5kIDxzYWxpbW1hQGZlZG9yYXByb2plY3Qub3Jn PgogICAgICAgICAgICBEYXRlICAgOiAyMDI2LTA3LTIwVDE2OjAyOjM0KzAxOjAwCiAgICAgICAg ICAgIFN0YXRzICA6ICs4NzAvLTIgaW4gMyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0 dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvaGZzdXRpbHMvYy84ZmU2NmE5YzJmYjcw NTAwZDI5MWU4NzFiNjY5ZDFjMDk3YzQzN2QyP2JyYW5jaD1yYXdoaWRlCgogICAgICAgICAgICBM b2c6CiAgICAgICAgICAgIFBvcnQgdGNsaGZzLmMgYW5kIGhmc3dpc2guYyB0byB0aGUgVGNsIDkg cmVzdWx0IEFQSQoKLSBGaXggcG9pbnRlci10eXBlIG1pc21hdGNoZXMgd2l0aCB0aGUgVGNsIDkg QVBJIGFuZCBhbGxvY2F0b3IgcGFpcmluZwoKQXNzaXN0ZWQtYnk6IENsYXVkZSBDb2RlOmNsYXVk ZS1mYWJsZS01ClNpZ25lZC1vZmYtYnk6IE1pY2hlbCBMaW5kIDxzYWxpbW1hQGZlZG9yYXByb2pl Y3Qub3JnPgoKLS0tCmRpZmYgLS1naXQgYS9oZnN1dGlscy0zLjIuNi10Y2w5LWludGVycC1yZXN1 bHQucGF0Y2ggYi9oZnN1dGlscy0zLjIuNi10Y2w5LWludGVycC1yZXN1bHQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ1MWY0NwotLS0gL2Rldi9udWxsCisrKyBi L2hmc3V0aWxzLTMuMi42LXRjbDktaW50ZXJwLXJlc3VsdC5wYXRjaApAQCAtMCwwICsxLDU3OCBA QAorUG9ydCB0Y2xoZnMuYyBhbmQgaGZzd2lzaC5jIHRvIHRoZSBUY2wgOSByZXN1bHQgQVBJCisK K1RjbCA5LjAgKEZlZG9yYSA0MyspIG1hZGUgdGhlIFRjbF9JbnRlcnAgc3RydWN0IGZ1bGx5IG9w YXF1ZTogdGhlCisicmVzdWx0IiBmaWVsZCAtLSBkZXByZWNhdGVkIHNpbmNlIFRjbCA4LjYgKFRJ UCAzMzApIGFuZCB1bnRpbCBub3cKK3JlLWVuYWJsZWQgd2l0aCAtRFVTRV9JTlRFUlBfUkVTVUxU IC0tIG5vIGxvbmdlciBleGlzdHMsIHNvIGV2ZXJ5CitkaXJlY3QgaW50ZXJwLT5yZXN1bHQgYWNj ZXNzIGlzIGEgY29tcGlsZSBlcnJvci4KKworUmVwbGFjZSB0aGVtIHdpdGggdGhlIHN1cHBvcnRl ZCBBUEksIHdoaWNoIGV4aXN0cyBpbiBib3RoIFRjbCA4IGFuZCA5OgorLSBzdGF0aWMgbWVzc2Fn ZSBhc3NpZ25tZW50cyAtPiBUY2xfU2V0UmVzdWx0KGludGVycCwgbXNnLCBUQ0xfU1RBVElDKQor LSBzcHJpbnRmKGludGVycC0+cmVzdWx0LCAuLi4pIC0+IHNwcmludGYgaW50byBhIGxvY2FsIGJ1 ZmZlciArCisgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xBVElMRSkgKHRoZSBv bGQgY29kZSByZWxpZWQgb24gdGhlCisgIGludGVycCdzIGJ1aWx0LWluIHJlc3VsdCBidWZmZXIs IHdoaWNoIGlzIGdvbmUpCistIHRoZSBnZW5lcmF0ZWQgImhmc2ZpbGVOIi8iaGZzdm9sTiIgY29t bWFuZCBuYW1lcyBhcmUgbm93IGJ1aWx0IGluIGEKKyAgbG9jYWwgYnVmZmVyOyBhbiBleHBsaWNp dCBUY2xfU2V0UmVzdWx0IGtlZXBzIHRoZW0gYXMgdGhlIHNjcmlwdC1sZXZlbAorICByZXR1cm4g dmFsdWUgb2YgInZvbCBvcGVuIiwgInZvbCBjcmVhdGUiIGFuZCAiaGZzIG1vdW50IgorLSByZWFk aW5nIHRoZSByZXN1bHQgKFRjbF9TcGxpdExpc3QgaW4gInZvbCBwYXRoIiwgdGhlIGVycm9yIHJl cG9ydCBpbgorICBoZnN3aXNoJ3MgVGNsX0FwcEluaXQpIC0+IFRjbF9HZXRTdHJpbmdSZXN1bHQK KworLS0tIGhmc3V0aWxzLTMuMi42L3RjbGhmcy5jCTE5OTgtMTEtMDIgMjI6MDg6MzIuMDAwMDAw MDAwICswMDAwCisrKysgaGZzdXRpbHMtMy4yLjYvdGNsaGZzLmMJMjAyNi0wNy0yMCAxNTozMjox NC42NTUyODI4NzEgKzAxMDAKK0BAIC0yMzksNyArMjM5LDcgQEAgaW50IGdldGRpcihUY2xfSW50 ZXJwICppbnRlcnAsIHZvbHJlZiAqdgorICAgICAgIHN0ciA9IGRpcmVudHN0cigmZW50KTsKKyAg ICAgICBpZiAoc3RyID09IDApCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJvdXQgb2YgbWVt b3J5IjsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIm91dCBvZiBtZW1vcnkiLCBUQ0xfU1RB VElDKTsKKyAJICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgCitAQCAtMjg0LDcgKzI4NCw3IEBA IGludCBmaWxlX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF8KKyAgIHN3aXRjaCAoYXJn YykKKyAgICAgeworICAgICBjYXNlIDE6CistICAgICAgaW50ZXJwLT5yZXN1bHQgPSAibWlzc2lu ZyBjb21tYW5kIjsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgIm1pc3NpbmcgY29tbWFu ZCIsIFRDTF9TVEFUSUMpOworICAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCisgICAgIGNhc2Ug MjoKK0BAIC0yOTcsMTIgKzI5NywxNCBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0YSBjbGllbnRE YXRhLCBUY2xfCisgICAgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJ0ZWxsIikgPT0gMCkK KyAJeworIAkgIGxvbmcgb2Zmc2V0OworKwkgIGNoYXIgYnVmW0NIQVJMRU4odW5zaWduZWQgbG9u ZykgKyAxXTsKKyAKKyAJICBvZmZzZXQgPSBoZnNfc2VlayhmaWxlLCAwLCBIRlNfU0VFS19DVVIp OworIAkgIGlmIChvZmZzZXQgPT0gLTEpCisgCSAgICByZXR1cm4gZXJyb3IoaW50ZXJwLCAwKTsK KyAKKy0JICBzcHJpbnRmKGludGVycC0+cmVzdWx0LCAiJWx1Iiwgb2Zmc2V0KTsKKysJICBzcHJp bnRmKGJ1ZiwgIiVsdSIsIG9mZnNldCk7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsIGJ1Ziwg VENMX1ZPTEFUSUxFKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAic3Rh dCIpID09IDApCisgCXsKK0BAIC0zMTUsNyArMzE3LDcgQEAgaW50IGZpbGVfY21kKENsaWVudERh dGEgY2xpZW50RGF0YSwgVGNsXworIAkgIHN0ciA9IGRpcmVudHN0cigmZW50KTsKKyAJICBpZiAo c3RyID09IDApCisgCSAgICB7CistCSAgICAgIGludGVycC0+cmVzdWx0ID0gIm91dCBvZiBtZW1v cnkiOworKwkgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgIm91dCBvZiBtZW1vcnkiLCBUQ0xf U1RBVElDKTsKKyAJICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJICAgIH0KKyAKK0BAIC0zMjMs NyArMzI1LDcgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsXworIAl9 CisgICAgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJnZXRmb3JrIikgPT0gMCkKKyAJewor LQkgIGludGVycC0+cmVzdWx0ID0gKGhmc19nZXRmb3JrKGZpbGUpID09IDApID8gImRhdGEiIDog InJzcmMiOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAoaGZzX2dldGZvcmsoZmlsZSkgPT0g MCkgPyAiZGF0YSIgOiAicnNyYyIsIFRDTF9TVEFUSUMpOworIAl9CisgICAgICAgZWxzZQorIAl7 CitAQCAtMzQ2LDcgKzM0OCw3IEBAIGludCBmaWxlX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEs IFRjbF8KKyAJICAgIGZvcmsgPSAxOworIAkgIGVsc2UKKyAJICAgIHsKKy0JICAgICAgaW50ZXJw LT5yZXN1bHQgPSAiYmFkIGFyZyB0byBzZXRmb3JrOiBtdXN0IGJlIGRhdGEgb3IgcnNyYyI7Cisr CSAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAiYmFkIGFyZyB0byBzZXRmb3JrOiBtdXN0IGJl IGRhdGEgb3IgcnNyYyIsIFRDTF9TVEFUSUMpOworIAkgICAgICByZXR1cm4gVENMX0VSUk9SOwor IAkgICAgfQorIAorQEAgLTM1NSw2ICszNTcsNyBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0YSBj bGllbnREYXRhLCBUY2xfCisgICAgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJzZWVrIikg PT0gMCkKKyAJeworIAkgIGxvbmcgb2Zmc2V0OworKwkgIGNoYXIgYnVmW0NIQVJMRU4odW5zaWdu ZWQgbG9uZykgKyAxXTsKKyAKKyAJICBpZiAoVGNsX0V4cHJMb25nKGludGVycCwgYXJndlsyXSwg Jm9mZnNldCkgIT0gVENMX09LKQorIAkgICAgcmV0dXJuIFRDTF9FUlJPUjsKK0BAIC0zNjMsNyAr MzY2LDggQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsXworIAkgIGlm IChvZmZzZXQgPT0gLTEpCisgCSAgICByZXR1cm4gZXJyb3IoaW50ZXJwLCAwKTsKKyAKKy0JICBz cHJpbnRmKGludGVycC0+cmVzdWx0LCAiJWx1Iiwgb2Zmc2V0KTsKKysJICBzcHJpbnRmKGJ1Ziwg IiVsdSIsIG9mZnNldCk7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsIGJ1ZiwgVENMX1ZPTEFU SUxFKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAicmVhZCIpID09IDAp CisgCXsKK0BAIC0zNzUsMTQgKzM3OSwxNCBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0YSBjbGll bnREYXRhLCBUY2xfCisgCisgCSAgaWYgKGJ5dGVzIDwgMCkKKyAJICAgIHsKKy0JICAgICAgaW50 ZXJwLT5yZXN1bHQgPSAic2l6ZSBtdXN0IGJlID49IDAiOworKwkgICAgICBUY2xfU2V0UmVzdWx0 KGludGVycCwgInNpemUgbXVzdCBiZSA+PSAwIiwgVENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVy biBUQ0xfRVJST1I7CisgCSAgICB9CisgCisgCSAgbWVtID0gQUxMT0MoY2hhciwgYnl0ZXMgKyAx KTsKKyAJICBpZiAobWVtID09IDApCisgCSAgICB7CistCSAgICAgIGludGVycC0+cmVzdWx0ID0g Im91dCBvZiBtZW1vcnkiOworKwkgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgIm91dCBvZiBt ZW1vcnkiLCBUQ0xfU1RBVElDKTsKKyAJICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJICAgIH0K KyAKK0BAIC00MDAsMTIgKzQwNCwxNCBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0YSBjbGllbnRE YXRhLCBUY2xfCisgICAgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJ3cml0ZSIpID09IDAp CisgCXsKKyAJICBsb25nIGJ5dGVzOworKwkgIGNoYXIgYnVmW0NIQVJMRU4odW5zaWduZWQgbG9u ZykgKyAxXTsKKyAKKyAJICBieXRlcyA9IGhmc193cml0ZShmaWxlLCBhcmd2WzJdLCBzdHJsZW4o YXJndlsyXSkpOworIAkgIGlmIChieXRlcyA9PSAtMSkKKyAJICAgIHJldHVybiBlcnJvcihpbnRl cnAsIDApOworIAorLQkgIHNwcmludGYoaW50ZXJwLT5yZXN1bHQsICIlbHUiLCBieXRlcyk7Cisr CSAgc3ByaW50ZihidWYsICIlbHUiLCBieXRlcyk7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAs IGJ1ZiwgVENMX1ZPTEFUSUxFKTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworQEAgLTQyMCw2ICs0 MjYsNyBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfCisgCXsKKyAJ ICBsb25nIG9mZnNldDsKKyAJICBpbnQgd2hlbmNlOworKwkgIGNoYXIgYnVmW0NIQVJMRU4odW5z aWduZWQgbG9uZykgKyAxXTsKKyAKKyAJICBpZiAoVGNsX0V4cHJMb25nKGludGVycCwgYXJndlsy XSwgJm9mZnNldCkgIT0gVENMX09LKQorIAkgICAgcmV0dXJuIFRDTF9FUlJPUjsKK0BAIC00MzQs NyArNDQxLDcgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsXworIAkg ICAgd2hlbmNlID0gSEZTX1NFRUtfRU5EOworIAkgIGVsc2UKKyAJICAgIHsKKy0JICAgICAgaW50 ZXJwLT5yZXN1bHQgPSAiYmFkIGFyZyAzOiBtdXN0IGJlIHN0YXJ0LCBjdXJyZW50LCBvciBlbmQi OworKwkgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgImJhZCBhcmcgMzogbXVzdCBiZSBzdGFy dCwgY3VycmVudCwgb3IgZW5kIiwgVENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJS T1I7CisgCSAgICB9CisgCitAQCAtNDQyLDcgKzQ0OSw4IEBAIGludCBmaWxlX2NtZChDbGllbnRE YXRhIGNsaWVudERhdGEsIFRjbF8KKyAJICBpZiAob2Zmc2V0ID09IC0xKQorIAkgICAgcmV0dXJu IGVycm9yKGludGVycCwgMCk7CisgCistCSAgc3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgIiVsdSIs IG9mZnNldCk7CisrCSAgc3ByaW50ZihidWYsICIlbHUiLCBvZmZzZXQpOworKwkgIFRjbF9TZXRS ZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xBVElMRSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsK K0BAIC01MDAsMTggKzUwOCwyMSBAQCB2b2lkIGZpbGVfcmVmKFRjbF9JbnRlcnAgKmludGVycCwg dm9scmVmCisgICBUY2xfQ21kSW5mbyBpbmZvOworICAgVGNsX0hhc2hFbnRyeSAqZW50cnk7Cisg ICBpbnQgbmV3OworKyAgY2hhciBuYW1lW0NIQVJMRU4oaW50KSArIDhdOworIAorICAgZG8KKy0g ICAgc3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgImhmc2ZpbGUlZCIsIGlkKyspOworLSAgd2hpbGUg KFRjbF9HZXRDb21tYW5kSW5mbyhpbnRlcnAsIGludGVycC0+cmVzdWx0LCAmaW5mbykpOworKyAg ICBzcHJpbnRmKG5hbWUsICJoZnNmaWxlJWQiLCBpZCsrKTsKKysgIHdoaWxlIChUY2xfR2V0Q29t bWFuZEluZm8oaW50ZXJwLCBuYW1lLCAmaW5mbykpOworIAorICAgZnJlZi0+ZmlsZSAgID0gZmls ZTsKKyAgIGZyZWYtPmludGVycCA9IGludGVycDsKKy0gIGZyZWYtPmNtZCAgICA9IFRjbF9DcmVh dGVDb21tYW5kKGludGVycCwgaW50ZXJwLT5yZXN1bHQsCisrICBmcmVmLT5jbWQgICAgPSBUY2xf Q3JlYXRlQ29tbWFuZChpbnRlcnAsIG5hbWUsCisgCQkJCSAgIGZpbGVfY21kLCBmcmVmLCBmaWxl X2RlbCk7CisgCisgICBlbnRyeSA9IFRjbF9DcmVhdGVIYXNoRW50cnkoJmZpbGVzLCAoY2hhciAq KSBmcmVmLCAmbmV3KTsKKyAgIFRjbF9TZXRIYXNoVmFsdWUoZW50cnksIHZyZWYpOworKworKyAg VGNsX1NldFJlc3VsdChpbnRlcnAsIG5hbWUsIFRDTF9WT0xBVElMRSk7CisgfQorIAorIC8qCitA QCAtNjE4LDcgKzYyOSw3IEBAIGludCBjb3B5bmF0aXZlKFRjbF9JbnRlcnAgKmludGVycCwgdm9s cmUKKyAgIGlmIChzcmN2cmVmLT52b2wgPT0gZHN0dnJlZi0+dm9sICYmCisgICAgICAgZW50LmNu aWQgPT0gY25pZCkKKyAgICAgeworLSAgICAgIGludGVycC0+cmVzdWx0ID0gInNvdXJjZSBhbmQg ZGVzdGluYXRpb24gZmlsZXMgYXJlIHRoZSBzYW1lIjsKKysgICAgICBUY2xfU2V0UmVzdWx0KGlu dGVycCwgInNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmlsZXMgYXJlIHRoZSBzYW1lIiwgVENMX1NU QVRJQyk7CisgICAgICAgaGZzX2Nsb3NlKGlmaWxlKTsKKyAgICAgICByZXR1cm4gVENMX0VSUk9S OworICAgICB9CitAQCAtNjcyLDcgKzY4Myw3IEBAIGludCBjb3B5aW4oVGNsX0ludGVycCAqaW50 ZXJwLCBoZnN2b2wgKnYKKyAgICAgY29weWZpbGUgPSBjcGlfcmF3OworICAgZWxzZQorICAgICB7 CistICAgICAgaW50ZXJwLT5yZXN1bHQgPSAiYmFkIG1vZGU6IG11c3QgYmUgbWFjYiwgYmluaCwg dGV4dCwgb3IgcmF3IjsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgImJhZCBtb2RlOiBt dXN0IGJlIG1hY2IsIGJpbmgsIHRleHQsIG9yIHJhdyIsIFRDTF9TVEFUSUMpOworICAgICAgIHJl dHVybiBUQ0xfRVJST1I7CisgICAgIH0KKyAKK0BAIC03MDcsNyArNzE4LDcgQEAgaW50IGNvcHlv dXQoVGNsX0ludGVycCAqaW50ZXJwLCBoZnN2b2wgKgorICAgICBjb3B5ZmlsZSA9IGNwb19yYXc7 CisgICBlbHNlCisgICAgIHsKKy0gICAgICBpbnRlcnAtPnJlc3VsdCA9ICJiYWQgbW9kZTogbXVz dCBiZSBtYWNiLCBiaW5oLCB0ZXh0LCBvciByYXciOworKyAgICAgIFRjbF9TZXRSZXN1bHQoaW50 ZXJwLCAiYmFkIG1vZGU6IG11c3QgYmUgbWFjYiwgYmluaCwgdGV4dCwgb3IgcmF3IiwgVENMX1NU QVRJQyk7CisgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAgICAgfQorIAorQEAgLTgyMSw3ICs4 MzIsNyBAQCBpbnQgdm9sX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgICBzd2l0 Y2ggKGFyZ2MpCisgICAgIHsKKyAgICAgY2FzZSAxOgorLSAgICAgIGludGVycC0+cmVzdWx0ID0g Im1pc3NpbmcgY29tbWFuZCI7CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJtaXNzaW5n IGNvbW1hbmQiLCBUQ0xfU1RBVElDKTsKKyAgICAgICByZXR1cm4gVENMX0VSUk9SOworIAorICAg ICBjYXNlIDI6CitAQCAtODM1LDIzICs4NDYsMjkgQEAgaW50IHZvbF9jbWQoQ2xpZW50RGF0YSBj bGllbnREYXRhLCBUY2xfSQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAic2l6ZSIp ID09IDApCisgCXsKKyAJICBoZnN2b2xlbnQgZW50OworKwkgIGNoYXIgYnVmWzIgKiBDSEFSTEVO KHVuc2lnbmVkIGxvbmcpICsgMl07CisgCisgCSAgaGZzX3ZzdGF0KHZvbCwgJmVudCk7CistCSAg c3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgIiVsdSAlbHUiLCBlbnQudG90Ynl0ZXMsIGVudC5mcmVl Ynl0ZXMpOworKwkgIHNwcmludGYoYnVmLCAiJWx1ICVsdSIsIGVudC50b3RieXRlcywgZW50LmZy ZWVieXRlcyk7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsIGJ1ZiwgVENMX1ZPTEFUSUxFKTsK KyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiY3JkYXRlIikgPT0gMCkKKyAJ eworIAkgIGhmc3ZvbGVudCBlbnQ7CisrCSAgY2hhciBidWZbQ0hBUkxFTihsb25nKSArIDFdOwor IAorIAkgIGhmc192c3RhdCh2b2wsICZlbnQpOworLQkgIHNwcmludGYoaW50ZXJwLT5yZXN1bHQs ICIlbGQiLCAobG9uZykgZW50LmNyZGF0ZSk7CisrCSAgc3ByaW50ZihidWYsICIlbGQiLCAobG9u ZykgZW50LmNyZGF0ZSk7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsIGJ1ZiwgVENMX1ZPTEFU SUxFKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAibWRkYXRlIikgPT0g MCkKKyAJeworIAkgIGhmc3ZvbGVudCBlbnQ7CisrCSAgY2hhciBidWZbQ0hBUkxFTihsb25nKSAr IDFdOworIAorIAkgIGhmc192c3RhdCh2b2wsICZlbnQpOworLQkgIHNwcmludGYoaW50ZXJwLT5y ZXN1bHQsICIlbGQiLCAobG9uZykgZW50Lm1kZGF0ZSk7CisrCSAgc3ByaW50ZihidWYsICIlbGQi LCAobG9uZykgZW50Lm1kZGF0ZSk7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsIGJ1ZiwgVENM X1ZPTEFUSUxFKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiaXNsb2Nr ZWQiKSA9PSAwKQorIAl7CitAQCAtODU5LDkgKzg3Niw5IEBAIGludCB2b2xfY21kKENsaWVudERh dGEgY2xpZW50RGF0YSwgVGNsX0kKKyAKKyAJICBoZnNfdnN0YXQodm9sLCAmZW50KTsKKyAJICBp ZiAoZW50LmZsYWdzICYgSEZTX0lTTE9DS0VEKQorLQkgICAgaW50ZXJwLT5yZXN1bHQgPSAiMSI7 CisrCSAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgIjEiLCBUQ0xfU1RBVElDKTsKKyAJICBlbHNl CistCSAgICBpbnRlcnAtPnJlc3VsdCA9ICIwIjsKKysJICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJw LCAiMCIsIFRDTF9TVEFUSUMpOworIAl9CisgICAgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0s ICJ1bW91bnQiKSA9PSAwKQorIAl7CitAQCAtODcwLDcgKzg4NywxMiBAQCBpbnQgdm9sX2NtZChD bGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgICByZXR1cm4gZXJyb3IoaW50ZXJwLCAw KTsKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiY3dkIikgPT0gMCkKKy0J c3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgIiVsdSIsIHZyZWYtPmN3ZCk7CisrCXsKKysJICBjaGFy IGJ1ZltDSEFSTEVOKHVuc2lnbmVkIGxvbmcpICsgMV07CisrCisrCSAgc3ByaW50ZihidWYsICIl bHUiLCB2cmVmLT5jd2QpOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xB VElMRSk7CisrCX0KKyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInBhdGgiKSA9PSAw KQorIAl7CisgCSAgY2hhciBuYW1lW0hGU19NQVhfRkxFTiArIDFdOworQEAgLTg5MCw3ICs5MTIs NyBAQCBpbnQgdm9sX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCisgCSAgLyog cmV2ZXJzZSB0aGUgcmVzdWx0aW5nIGxpc3QgKi8KKyAKKy0JICBpZiAoVGNsX1NwbGl0TGlzdChp bnRlcnAsIGludGVycC0+cmVzdWx0LCAmbGlzdGMsICZsaXN0dikgIT0gVENMX09LKQorKwkgIGlm IChUY2xfU3BsaXRMaXN0KGludGVycCwgVGNsX0dldFN0cmluZ1Jlc3VsdChpbnRlcnApLCAmbGlz dGMsICZsaXN0dikgIT0gVENMX09LKQorIAkgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAKKyAJICBm b3IgKGkgPSAwOyBpIDwgbGlzdGMgLyAyOyArK2kpCitAQCAtOTE4LDcgKzk0MCw3IEBAIGludCB2 b2xfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAJICAgIHJldHVybiBlcnJvcihp bnRlcnAsIDApOworIAl9CisgICAgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJzZXBjaGFy IikgPT0gMCkKKy0JaW50ZXJwLT5yZXN1bHQgPSAiOiI7CisrCVRjbF9TZXRSZXN1bHQoaW50ZXJw LCAiOiIsIFRDTF9TVEFUSUMpOworICAgICAgIGVsc2UKKyAJeworIAkgIFRjbF9BcHBlbmRSZXN1 bHQoaW50ZXJwLCAiYmFkIGNvbW1hbmQgXCIiLCBhcmd2WzFdLAorQEAgLTk2NSw3ICs5ODcsNyBA QCBpbnQgdm9sX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgZnJlZiA9IEFM TE9DKGZpbGVyZWYsIDEpOworIAkgIGlmIChmcmVmID09IDApCisgCSAgICB7CistCSAgICAgIGlu dGVycC0+cmVzdWx0ID0gIm91dCBvZiBtZW1vcnkiOworKwkgICAgICBUY2xfU2V0UmVzdWx0KGlu dGVycCwgIm91dCBvZiBtZW1vcnkiLCBUQ0xfU1RBVElDKTsKKyAJICAgICAgcmV0dXJuIFRDTF9F UlJPUjsKKyAJICAgIH0KKyAKK0BAIC05OTAsNyArMTAxMiw3IEBAIGludCB2b2xfY21kKENsaWVu dERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAJICBzdHIgPSBkaXJlbnRzdHIoJmVudCk7CisgCSAg aWYgKHN0ciA9PSAwKQorIAkgICAgeworLQkgICAgICBpbnRlcnAtPnJlc3VsdCA9ICJvdXQgb2Yg bWVtb3J5IjsKKysJICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJvdXQgb2YgbWVtb3J5Iiwg VENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9CisgCitAQCAt MTA0Myw3ICsxMDY1LDcgQEAgaW50IHZvbF9jbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xf SQorIAorIAkgIGlmIChmYXJndiA9PSAwKQorIAkgICAgeworLQkgICAgICBpbnRlcnAtPnJlc3Vs dCA9ICJnbG9iYmluZyBlcnJvciI7CisrCSAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAiZ2xv YmJpbmcgZXJyb3IiLCBUQ0xfU1RBVElDKTsKKyAJICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJ ICAgIH0KKyAKK0BAIC0xMDk5LDE0ICsxMTIxLDE0IEBAIGludCB2b2xfY21kKENsaWVudERhdGEg Y2xpZW50RGF0YSwgVGNsX0kKKyAJICBpZiAoc3RybGVuKGFyZ3ZbM10pICE9IDQgfHwKKyAJICAg ICAgc3RybGVuKGFyZ3ZbNF0pICE9IDQpCisgCSAgICB7CistCSAgICAgIGludGVycC0+cmVzdWx0 ID0gInR5cGUgYW5kIGNyZWF0b3IgbXVzdCBiZSA0IGNoYXJhY3RlciBzdHJpbmdzIjsKKysJICAg ICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJ0eXBlIGFuZCBjcmVhdG9yIG11c3QgYmUgNCBjaGFy YWN0ZXIgc3RyaW5ncyIsIFRDTF9TVEFUSUMpOworIAkgICAgICByZXR1cm4gVENMX0VSUk9SOwor IAkgICAgfQorIAorIAkgIGZyZWYgPSBBTExPQyhmaWxlcmVmLCAxKTsKKyAJICBpZiAoZnJlZiA9 PSAwKQorIAkgICAgeworLQkgICAgICBpbnRlcnAtPnJlc3VsdCA9ICJvdXQgb2YgbWVtb3J5IjsK KysJICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJvdXQgb2YgbWVtb3J5IiwgVENMX1NUQVRJ Qyk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9CisgCitAQCAtMTE2NCw3ICsx MTg2LDcgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAorICAg aWYgKGFyZ2MgPCAyKQorICAgICB7CistICAgICAgaW50ZXJwLT5yZXN1bHQgPSAid3JvbmcgIyBh cmdzIjsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRDTF9T VEFUSUMpOworICAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgICAgIH0KKyAKK0BAIC0xMTc2LDEw ICsxMTk4LDExIEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAg ICAgICBUY2xfQ21kSW5mbyBpbmZvOworICAgICAgIFRjbF9IYXNoRW50cnkgKmVudHJ5OworICAg ICAgIGludCBuZXc7CisrICAgICAgY2hhciBuYW1lW0NIQVJMRU4oaW50KSArIDhdOworIAorICAg ICAgIGlmIChhcmdjIDwgMyB8fCBhcmdjID4gNCkKKyAJeworLQkgIGludGVycC0+cmVzdWx0ID0g Indyb25nICMgYXJncyI7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJ3cm9uZyAjIGFyZ3Mi LCBUQ0xfU1RBVElDKTsKKyAJICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgCitAQCAtMTE5MSw2 ICsxMjE0LDcgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorICAg ICAgIGVsc2UKKyAJeworIAkgIGludCBucGFydHM7CisrCSAgY2hhciBidWZbNjRdOworIAorIAkg IHN1aWRfZW5hYmxlKCk7CisgCSAgbnBhcnRzID0gaGZzX25wYXJ0cyhhcmd2WzJdKTsKK0BAIC0x MTk4LDggKzEyMjIsOSBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9J CisgCisgCSAgaWYgKG5wYXJ0cyA+IDEpCisgCSAgICB7CistCSAgICAgIHNwcmludGYoaW50ZXJw LT5yZXN1bHQsICJtdXN0IHNwZWNpZnkgcGFydGl0aW9uIG51bWJlciAiCisrCSAgICAgIHNwcmlu dGYoYnVmLCAibXVzdCBzcGVjaWZ5IHBhcnRpdGlvbiBudW1iZXIgIgorIAkJICAgICAgIiglZCBh dmFpbGFibGUpIiwgbnBhcnRzKTsKKysJICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsIGJ1Ziwg VENMX1ZPTEFUSUxFKTsKKyAJICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJICAgIH0KKyAJICBl bHNlIGlmIChucGFydHMgPT0gLTEpCitAQCAtMTIxMSw3ICsxMjM2LDcgQEAgaW50IGNtZF9oZnMo Q2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorICAgICAgIHZyZWYgPSBBTExPQyh2b2xyZWYs IDEpOworICAgICAgIGlmICh2cmVmID09IDApCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJv dXQgb2YgbWVtb3J5IjsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIm91dCBvZiBtZW1vcnki LCBUQ0xfU1RBVElDKTsKKyAJICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgCitAQCAtMTIzMiwy MCArMTI1NywyMyBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisg ICAgICAgZW50cnkgPSBUY2xfQ3JlYXRlSGFzaEVudHJ5KCZ2b2x1bWVzLCAoY2hhciAqKSB2cmVm LCAmbmV3KTsKKyAKKyAgICAgICBkbworLQlzcHJpbnRmKGludGVycC0+cmVzdWx0LCAiaGZzdm9s JWQiLCBpZCsrKTsKKy0gICAgICB3aGlsZSAoVGNsX0dldENvbW1hbmRJbmZvKGludGVycCwgaW50 ZXJwLT5yZXN1bHQsICZpbmZvKSk7CisrCXNwcmludGYobmFtZSwgImhmc3ZvbCVkIiwgaWQrKyk7 CisrICAgICAgd2hpbGUgKFRjbF9HZXRDb21tYW5kSW5mbyhpbnRlcnAsIG5hbWUsICZpbmZvKSk7 CisgCistICAgICAgVGNsX0NyZWF0ZUNvbW1hbmQoaW50ZXJwLCBpbnRlcnAtPnJlc3VsdCwKKysg ICAgICBUY2xfQ3JlYXRlQ29tbWFuZChpbnRlcnAsIG5hbWUsCisgCQkJdm9sX2NtZCwgdnJlZiwg dm9sX2RlbCk7CisrCisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsIG5hbWUsIFRDTF9WT0xB VElMRSk7CisgICAgIH0KKyAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiemVybyIpID09IDAp CisgICAgIHsKKyAgICAgICBpbnQgbnBhcnRzOworICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuOwor KyAgICAgIGNoYXIgYnVmW0NIQVJMRU4odW5zaWduZWQgbG9uZykgKyAxXTsKKyAKKyAgICAgICBp ZiAoYXJnYyAhPSA0KQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAid3JvbmcgIyBhcmdzIjsK KysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRDTF9TVEFUSUMpOwor IAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKK0BAIC0xMjU1LDcgKzEyODMsOCBAQCBpbnQg Y21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgICAgICAgaWYgKGRvX3plcm8o YXJndlsyXSwgbnBhcnRzLCAmbGVuKSA9PSAtMSkKKyAJcmV0dXJuIGVycm9yKGludGVycCwgMCk7 CisgCistICAgICAgc3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgIiVsdSIsIGxlbik7CisrICAgICAg c3ByaW50ZihidWYsICIlbHUiLCBsZW4pOworKyAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBi dWYsIFRDTF9WT0xBVElMRSk7CisgICAgIH0KKyAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAi bWtwYXJ0IikgPT0gMCkKKyAgICAgeworQEAgLTEyNjMsNyArMTI5Miw3IEBAIGludCBjbWRfaGZz KENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAKKyAgICAgICBpZiAoYXJnYyAhPSA0KQor IAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAid3JvbmcgIyBhcmdzIjsKKysJICBUY2xfU2V0UmVz dWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRDTF9TVEFUSUMpOworIAkgIHJldHVybiBUQ0xf RVJST1I7CisgCX0KKyAKK0BAIC0xMjc2LDEwICsxMzA1LDExIEBAIGludCBjbWRfaGZzKENsaWVu dERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAibnBh cnRzIikgPT0gMCkKKyAgICAgeworICAgICAgIGludCBucGFydHM7CisrICAgICAgY2hhciBidWZb Q0hBUkxFTihpbnQpICsgMV07CisgCisgICAgICAgaWYgKGFyZ2MgIT0gMykKKyAJeworLQkgIGlu dGVycC0+cmVzdWx0ID0gIndyb25nICMgYXJncyI7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAs ICJ3cm9uZyAjIGFyZ3MiLCBUQ0xfU1RBVElDKTsKKyAJICByZXR1cm4gVENMX0VSUk9SOworIAl9 CisgCitAQCAtMTI4Nyw3ICsxMzE3LDggQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnRE YXRhLCBUY2xfSQorICAgICAgIG5wYXJ0cyA9IGhmc19ucGFydHMoYXJndlsyXSk7CisgICAgICAg c3VpZF9kaXNhYmxlKCk7CisgCistICAgICAgc3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgIiVkIiwg bnBhcnRzKTsKKysgICAgICBzcHJpbnRmKGJ1ZiwgIiVkIiwgbnBhcnRzKTsKKysgICAgICBUY2xf U2V0UmVzdWx0KGludGVycCwgYnVmLCBUQ0xfVk9MQVRJTEUpOworICAgICB9CisgICBlbHNlIGlm IChzdHJjbXAoYXJndlsxXSwgImZvcm1hdCIpID09IDApCisgICAgIHsKK0BAIC0xMjk1LDcgKzEz MjYsNyBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCisgICAg ICAgaWYgKGFyZ2MgPCA1IHx8IGFyZ2MgPiA2KQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAi d3JvbmcgIyBhcmdzIjsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIs IFRDTF9TVEFUSUMpOworIAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKK0BAIC0xMzE2LDcg KzEzNDcsNyBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAg ICB7CisgCSAgICAgIGZyZWUobGlzdHYpOworIAorLQkgICAgICBpbnRlcnAtPnJlc3VsdCA9ICJv dXQgb2YgbWVtb3J5IjsKKysJICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJvdXQgb2YgbWVt b3J5IiwgVENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9Cisg CitAQCAtMTM1Niw3ICsxMzg3LDcgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRh LCBUY2xfSQorIAorICAgICAgIGlmIChhcmdjICE9IDUpCisgCXsKKy0JICBpbnRlcnAtPnJlc3Vs dCA9ICJ3cm9uZyAjIGFyZ3MiOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAid3JvbmcgIyBh cmdzIiwgVENMX1NUQVRJQyk7CisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorQEAgLTEz NjUsOCArMTM5Niw4IEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kK KyAJICAoc3RyY21wKGFyZ3ZbM10sICJsYXRpbjEiKSAhPSAwICYmCisgCSAgIHN0cmNtcChhcmd2 WzNdLCAibWFjcm9tYW4iKSAhPSAwKSkKKyAJeworLQkgIGludGVycC0+cmVzdWx0ID0gImJhZCBh cmcgdG8gY2hhcnRyYW5zOiAiCistCSAgICAiY2hhcnNldHMgbXVzdCBiZSBvbmUgb2YgbGF0aW4x LCBtYWNyb21hbiI7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJiYWQgYXJnIHRvIGNoYXJ0 cmFuczogIgorKwkgICAgImNoYXJzZXRzIG11c3QgYmUgb25lIG9mIGxhdGluMSwgbWFjcm9tYW4i LCBUQ0xfU1RBVElDKTsKKyAJICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgCitAQCAtMTM4NCw3 ICsxNDE1LDcgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAor ICAgICAgIGlmIChyZXN1bHQgPT0gMCkKKyAJeworLQkgIGludGVycC0+cmVzdWx0ID0gIm91dCBv ZiBtZW1vcnkiOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAib3V0IG9mIG1lbW9yeSIsIFRD TF9TVEFUSUMpOworIAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKK0BAIC0xMzk0LDQxICsx NDI1LDQxIEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAgICAg eworICAgICAgIGlmIChhcmdjICE9IDIpCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJ3cm9u ZyAjIGFyZ3MiOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAid3JvbmcgIyBhcmdzIiwgVENM X1NUQVRJQyk7CisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorLSAgICAgIGludGVycC0+ cmVzdWx0ID0gKGNoYXIgKikgaGZzdXRpbHNfdmVyc2lvbjsKKysgICAgICBUY2xfU2V0UmVzdWx0 KGludGVycCwgKGNoYXIgKikgaGZzdXRpbHNfdmVyc2lvbiwgVENMX1NUQVRJQyk7CisgICAgIH0K KyAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiY29weXJpZ2h0IikgPT0gMCkKKyAgICAgewor ICAgICAgIGlmIChhcmdjICE9IDIpCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJ3cm9uZyAj IGFyZ3MiOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAid3JvbmcgIyBhcmdzIiwgVENMX1NU QVRJQyk7CisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorLSAgICAgIGludGVycC0+cmVz dWx0ID0gKGNoYXIgKikgaGZzdXRpbHNfY29weXJpZ2h0OworKyAgICAgIFRjbF9TZXRSZXN1bHQo aW50ZXJwLCAoY2hhciAqKSBoZnN1dGlsc19jb3B5cmlnaHQsIFRDTF9TVEFUSUMpOworICAgICB9 CisgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgImF1dGhvciIpID09IDApCisgICAgIHsKKyAg ICAgICBpZiAoYXJnYyAhPSAyKQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAid3JvbmcgIyBh cmdzIjsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRDTF9TVEFU SUMpOworIAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKKy0gICAgICBpbnRlcnAtPnJlc3Vs dCA9IChjaGFyICopIGhmc3V0aWxzX2F1dGhvcjsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVy cCwgKGNoYXIgKikgaGZzdXRpbHNfYXV0aG9yLCBUQ0xfU1RBVElDKTsKKyAgICAgfQorICAgZWxz ZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJsaWNlbnNlIikgPT0gMCkKKyAgICAgeworICAgICAgIGlm IChhcmdjICE9IDIpCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJ3cm9uZyAjIGFyZ3MiOwor KwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAid3JvbmcgIyBhcmdzIiwgVENMX1NUQVRJQyk7Cisg CSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorLSAgICAgIGludGVycC0+cmVzdWx0ID0gKGNo YXIgKikgaGZzdXRpbHNfbGljZW5zZTsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgKGNo YXIgKikgaGZzdXRpbHNfbGljZW5zZSwgVENMX1NUQVRJQyk7CisgICAgIH0KKyAgIGVsc2UKKyAg ICAgeworQEAgLTE0NTUsNyArMTQ4Niw3IEBAIGludCBjbWRfZXhpdChDbGllbnREYXRhIGNsaWVu dERhdGEsIFRjbF8KKyAKKyAgIGlmIChhcmdjID4gMikKKyAgICAgeworLSAgICAgIGludGVycC0+ cmVzdWx0ID0gIndyb25nICMgYXJnczogc2hvdWxkIGJlIFwiZXhpdCA/cmV0dXJuQ29kZT9cIiI7 CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJ3cm9uZyAjIGFyZ3M6IHNob3VsZCBiZSBc ImV4aXQgP3JldHVybkNvZGU/XCIiLCBUQ0xfU1RBVElDKTsKKyAgICAgICByZXR1cm4gVENMX0VS Uk9SOworICAgICB9CisgCistLS0gaGZzdXRpbHMtMy4yLjYvaGZzd2lzaC5jCTE5OTgtMDQtMTEg MDk6MjY6NTcuMDAwMDAwMDAwICswMTAwCisrKysgaGZzdXRpbHMtMy4yLjYvaGZzd2lzaC5jCTIw MjYtMDctMjAgMTU6NDQ6NDAuMjgxMzc0NDEwICswMTAwCitAQCAtOTQsNyArOTQsNyBAQCBpbnQg VGNsX0FwcEluaXQoVGNsX0ludGVycCAqaW50ZXJwKQorIAorICAgaWYgKFRjbF9FdmFsKGludGVy cCwgeGhmcykgPT0gVENMX0VSUk9SKQorICAgICB7CistICAgICAgZnByaW50ZihzdGRlcnIsICJF cnJvcjogJXNcbiIsIGludGVycC0+cmVzdWx0KTsKKysgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVy cm9yOiAlc1xuIiwgVGNsX0dldFN0cmluZ1Jlc3VsdChpbnRlcnApKTsKKyAgICAgICBleGl0KDEp OworICAgICB9CisgCgpkaWZmIC0tZ2l0IGEvaGZzdXRpbHMtMy4yLjYtdGNsOS1wb2ludGVyLXR5 cGVzLnBhdGNoIGIvaGZzdXRpbHMtMy4yLjYtdGNsOS1wb2ludGVyLXR5cGVzLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmM2MxNTAKLS0tIC9kZXYvbnVsbAorKysg Yi9oZnN1dGlscy0zLjIuNi10Y2w5LXBvaW50ZXItdHlwZXMucGF0Y2gKQEAgLTAsMCArMSwyODAg QEAKK0ZpeCBwb2ludGVyLXR5cGUgbWlzbWF0Y2hlcyB3aXRoIHRoZSBUY2wgOSBBUEkgYW5kIGFs bG9jYXRvciBwYWlyaW5nCisKK1RoaXMgY29tcGxldGVzIHRoZSBUY2wgOSBwb3J0IHNvIHRoZSBw YWNrYWdlIG5vIGxvbmdlciBuZWVkcworLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlczoK KworLSBUY2wgOSdzIFRjbF9DbWRQcm9jIHRha2VzIChpbnQgYXJnYywgY29uc3QgY2hhciAqYXJn dltdKTsgYWRqdXN0IHRoZQorICBjb21tYW5kIHByb2NlZHVyZXMgYW5kIHRoZSBoZWxwZXJzIHRo ZXkgaGFuZCBhcmd2IHRvLiAgY3NfbGF0aW4xKCkvCisgIGNzX21hY3JvbWFuKCkgb25seSByZWFk IHRoZWlyIGlucHV0LCBzbyB0aGVpciBhcmd1bWVudCBpcyBjb25zdGlmaWVkCisgIHJhdGhlciB0 aGFuIGNhc3RpbmcgYXdheSBjb25zdCBhdCB0aGUgY2FsbCBzaXRlcy4KKy0gVGNsX1NwbGl0TGlz dCgpIG5vdyBmaWxscyBpbiBhIFRjbF9TaXplICg2NC1iaXQpIGVsZW1lbnQgY291bnQgYW5kIGEK KyAgY29uc3QgY2hhciAqKiB2ZWN0b3IuICBQYXNzaW5nIHRoZSBvbGQgaW50ICogbWlzcmVhZHMv Y2xvYmJlcnMgc3RhY2sKKyAgbWVtb3J5IG9uIDY0LWJpdCBhcmNoaXRlY3R1cmVzLCBzbyB0aGlz IHdhcyBhIGxhdGVudCBydW50aW1lIGJ1Zywgbm90CisgIGp1c3QgYSB3YXJuaW5nLgorLSBUY2xf TWVyZ2UoKSB0YWtlcyBjb25zdCBjaGFyICpjb25zdCAqOyBjb25zdGlmeSBkaXJlbnRzdHIoKSdz IGFyZ3YKKyAgYW5kIGNhc3QgaGZzX2dsb2IoKSdzIHJlc3VsdCB2ZWN0b3IuCistIFBhaXIgYWxs b2NhdG9ycyBjb3JyZWN0bHkgZm9yIFRjbCA5LCB3aGVyZSBUY2xfRnJlZSgpIGlzIG5vIGxvbmdl cgorICBpbnRlcmNoYW5nZWFibGUgd2l0aCBmcmVlKCk6IG1lbW9yeSBvYnRhaW5lZCBmcm9tIFRj bCAoVGNsX1NwbGl0TGlzdAorICB2ZWN0b3JzLCBUY2xfTWVyZ2Ugc3RyaW5ncykgaXMgcmVsZWFz ZWQgd2l0aCBUY2xfRnJlZSgpOyB0aGUgInJlYWQiCisgIGNvbW1hbmQgcmVzdWx0IGlzIGFsbG9j YXRlZCB3aXRoIFRjbF9BdHRlbXB0QWxsb2MoKSB0byBtYXRjaCBpdHMKKyAgVENMX0RZTkFNSUMg ZnJlZTsgdGhlIG1hbGxvYygpZWQgY2hhcnRyYW5zIHJlc3VsdCBpcyBjb3BpZWQgd2l0aAorICBU Q0xfVk9MQVRJTEUgYW5kIGZyZWVkIHdpdGggZnJlZSgpLgorLSBUY2xfR2V0SW50KCkgaW4gImhm cyBta3BhcnQiIG5lZWRzIGFuIGludCwgbm90IGFuIHVuc2lnbmVkIGludC4KKworLS0tIGhmc3V0 aWxzLTMuMi42L3RjbGhmcy5jCTIwMjYtMDctMjAgMTU6NTE6NTEuMzM5NDQzNDY4ICswMTAwCisr KysgaGZzdXRpbHMtMy4yLjYvdGNsaGZzLmMJMjAyNi0wNy0yMCAxNTo1ODoxMy42OTc5NzQ0MjEg KzAxMDAKK0BAIC0xMjAsNyArMTIwLDcgQEAgY2hhciAqZGlyZW50c3RyKGhmc2RpcmVudCAqZW50 KQorICAgICBtZGRhdGVbQ0hBUkxFTihsb25nKSArIDFdLAorICAgICBia2RhdGVbQ0hBUkxFTihs b25nKSArIDFdOworICAgcmVnaXN0ZXIgaW50IGFyZ2M7CistICBjaGFyICphcmd2WzI0XTsKKysg IGNvbnN0IGNoYXIgKmFyZ3ZbMjRdOworICAgaW50IGxvY2tlZCwgaW52aXM7CisgCisgICBhcmdj ID0gMDsKK0BAIC0yMjgsNyArMjI4LDcgQEAgaW50IGdldGRpcihUY2xfSW50ZXJwICppbnRlcnAs IHZvbHJlZiAqdgorIAorIAkgIFRjbF9BcHBlbmRFbGVtZW50KGludGVycCwgc3RyKTsKKyAKKy0J ICBmcmVlKHN0cik7CisrCSAgVGNsX0ZyZWUoc3RyKTsKKyAJfQorIAorICAgICAgIGlmIChoZnNf Y2xvc2VkaXIoZGlyKSA9PSAtMSkKK0BAIC0yNDUsNyArMjQ1LDcgQEAgaW50IGdldGRpcihUY2xf SW50ZXJwICppbnRlcnAsIHZvbHJlZiAqdgorIAorICAgICAgIFRjbF9BcHBlbmRFbGVtZW50KGlu dGVycCwgc3RyKTsKKyAKKy0gICAgICBmcmVlKHN0cik7CisrICAgICAgVGNsX0ZyZWUoc3RyKTsK KyAgICAgfQorIAorICAgcmV0dXJuIFRDTF9PSzsKK0BAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBm aWxlX2RlbChDbGllbnREYXRhIGNsaWVudERhdGEpCisgICovCisgc3RhdGljCisgaW50IGZpbGVf Y21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLAorLQkgICAgIGlu dCBhcmdjLCBjaGFyICphcmd2W10pCisrCSAgICAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3Zb XSkKKyB7CisgICBmaWxlcmVmICpmcmVmID0gY2xpZW50RGF0YTsKKyAgIGhmc2ZpbGUgKmZpbGUg PSBmcmVmLT5maWxlOworQEAgLTM4Myw3ICszODMsNyBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0 YSBjbGllbnREYXRhLCBUY2xfCisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9Cisg CistCSAgbWVtID0gQUxMT0MoY2hhciwgYnl0ZXMgKyAxKTsKKysJICBtZW0gPSBUY2xfQXR0ZW1w dEFsbG9jKGJ5dGVzICsgMSk7CisgCSAgaWYgKG1lbSA9PSAwKQorIAkgICAgeworIAkgICAgICBU Y2xfU2V0UmVzdWx0KGludGVycCwgIm91dCBvZiBtZW1vcnkiLCBUQ0xfU1RBVElDKTsKK0BAIC0z OTMsNyArMzkzLDcgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsXwor IAkgIGJ5dGVzID0gaGZzX3JlYWQoZmlsZSwgbWVtLCBieXRlcyk7CisgCSAgaWYgKGJ5dGVzID09 IC0xKQorIAkgICAgeworLQkgICAgICBmcmVlKG1lbSk7CisrCSAgICAgIFRjbF9GcmVlKG1lbSk7 CisgCSAgICAgIHJldHVybiBlcnJvcihpbnRlcnAsIDApOworIAkgICAgfQorIAorQEAgLTU1OCw3 ICs1NTgsNyBAQCBpbnQgZG9fY29weW5hdGl2ZShUY2xfSW50ZXJwICppbnRlcnAsIGhmCisgICog REVTQ1JJUFRJT046CWNvcHkgYW4gSEZTIGZpbGUgdG8gYW5vdGhlciBIRlMgdm9sdW1lCisgICov Cisgc3RhdGljCistaW50IGNvcHluYXRpdmUoVGNsX0ludGVycCAqaW50ZXJwLCB2b2xyZWYgKnNy Y3ZyZWYsIGNoYXIgKmFyZ3ZbXSkKKytpbnQgY29weW5hdGl2ZShUY2xfSW50ZXJwICppbnRlcnAs IHZvbHJlZiAqc3JjdnJlZiwgY29uc3QgY2hhciAqYXJndltdKQorIHsKKyAgIHZvbHJlZiAqZHN0 dnJlZjsKKyAgIFRjbF9DbWRJbmZvIGluZm87CitAQCAtNjY2LDcgKzY2Niw3IEBAIGludCBjb3B5 bmF0aXZlKFRjbF9JbnRlcnAgKmludGVycCwgdm9scmUKKyAgKiBERVNDUklQVElPTjoJY29weSBh IFVOSVggZmlsZSBpbnRvIGFuIEhGUyB2b2x1bWUKKyAgKi8KKyBzdGF0aWMKKy1pbnQgY29weWlu KFRjbF9JbnRlcnAgKmludGVycCwgaGZzdm9sICp2b2wsIGNoYXIgKmFyZ3ZbXSkKKytpbnQgY29w eWluKFRjbF9JbnRlcnAgKmludGVycCwgaGZzdm9sICp2b2wsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkK KyB7CisgICBjcGlmdW5jIGNvcHlmaWxlOworIAorQEAgLTcwMSw3ICs3MDEsNyBAQCBpbnQgY29w eWluKFRjbF9JbnRlcnAgKmludGVycCwgaGZzdm9sICp2CisgICogREVTQ1JJUFRJT046CWNvcHkg YW4gSEZTIGZpbGUgb3V0IHRvIGEgVU5JWCBmaWxlCisgICovCisgc3RhdGljCistaW50IGNvcHlv dXQoVGNsX0ludGVycCAqaW50ZXJwLCBoZnN2b2wgKnZvbCwgY2hhciAqYXJndltdKQorK2ludCBj b3B5b3V0KFRjbF9JbnRlcnAgKmludGVycCwgaGZzdm9sICp2b2wsIGNvbnN0IGNoYXIgKmFyZ3Zb XSkKKyB7CisgICBjcG9mdW5jIGNvcHlmaWxlOworIAorQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lk IHZvbF9kZWwoQ2xpZW50RGF0YSBjbGllbnREYXRhKQorICAqLworIHN0YXRpYworIGludCB2b2xf Y21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLAorLQkgICAgaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKysJICAgIGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10p CisgeworICAgdm9scmVmICp2cmVmID0gY2xpZW50RGF0YTsKKyAgIGhmc3ZvbCAqdm9sICA9IHZy ZWYtPnZvbDsKK0BAIC04OTcsOCArODk3LDggQEAgaW50IHZvbF9jbWQoQ2xpZW50RGF0YSBjbGll bnREYXRhLCBUY2xfSQorIAl7CisgCSAgY2hhciBuYW1lW0hGU19NQVhfRkxFTiArIDFdOworIAkg IGxvbmcgaWQ7CistCSAgaW50IGxpc3RjLCBpOworLQkgIGNoYXIgKipsaXN0djsKKysJICBUY2xf U2l6ZSBsaXN0YywgaTsKKysJICBjb25zdCBjaGFyICoqbGlzdHY7CisgCSAgY2hhciAqcmVzdWx0 OworIAorIAkgIGlkID0gdnJlZi0+Y3dkOworQEAgLTkxNyw3ICs5MTcsNyBAQCBpbnQgdm9sX2Nt ZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCisgCSAgZm9yIChpID0gMDsgaSA8IGxp c3RjIC8gMjsgKytpKQorIAkgICAgeworLQkgICAgICBjaGFyICp0bXA7CisrCSAgICAgIGNvbnN0 IGNoYXIgKnRtcDsKKyAKKyAJICAgICAgdG1wID0gbGlzdHZbaV07CisgCSAgICAgIGxpc3R2W2ld ID0gbGlzdHZbbGlzdGMgLSAxIC0gaV07CitAQCAtOTI1LDcgKzkyNSw3IEBAIGludCB2b2xfY21k KENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAJICAgIH0KKyAKKyAJICByZXN1bHQgPSBU Y2xfTWVyZ2UobGlzdGMsIGxpc3R2KTsKKy0JICBmcmVlKGxpc3R2KTsKKysJICBUY2xfRnJlZSgo dm9pZCAqKSBsaXN0dik7CisgCisgCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsIHJlc3VsdCwgVENM X0RZTkFNSUMpOworIAl9CitAQCAtMTA1MSw4ICsxMDUxLDEwIEBAIGludCB2b2xfY21kKENsaWVu dERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2 WzFdLCAiZ2xvYiIpID09IDApCisgCXsKKy0JICBpbnQgbGlzdGMsIGZhcmdjOworLQkgIGNoYXIg KipsaXN0diwgKipmYXJndiwgKnJlc3VsdDsKKysJICBUY2xfU2l6ZSBsaXN0YzsKKysJICBpbnQg ZmFyZ2M7CisrCSAgY29uc3QgY2hhciAqKmxpc3R2OworKwkgIGNoYXIgKipmYXJndiwgKnJlc3Vs dDsKKyAKKyAJICBpZiAoaGZzX3NldGN3ZCh2b2wsIHZyZWYtPmN3ZCkgPT0gLTEpCisgCSAgICBy ZXR1cm4gZXJyb3IoaW50ZXJwLCAwKTsKK0BAIC0xMDYwLDggKzEwNjIsOCBAQCBpbnQgdm9sX2Nt ZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgaWYgKFRjbF9TcGxpdExpc3QoaW50 ZXJwLCBhcmd2WzJdLCAmbGlzdGMsICZsaXN0dikgIT0gVENMX09LKQorIAkgICAgcmV0dXJuIFRD TF9FUlJPUjsKKyAKKy0JICBmYXJndiA9IGhmc19nbG9iKHZvbCwgbGlzdGMsIGxpc3R2LCAmZmFy Z2MpOworLQkgIGZyZWUobGlzdHYpOworKwkgIGZhcmd2ID0gaGZzX2dsb2Iodm9sLCBsaXN0Yywg KGNoYXIgKiopIGxpc3R2LCAmZmFyZ2MpOworKwkgIFRjbF9GcmVlKCh2b2lkICopIGxpc3R2KTsK KyAKKyAJICBpZiAoZmFyZ3YgPT0gMCkKKyAJICAgIHsKK0BAIC0xMDY5LDcgKzEwNzEsNyBAQCBp bnQgdm9sX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgICAgIHJldHVybiBU Q0xfRVJST1I7CisgCSAgICB9CisgCistCSAgcmVzdWx0ID0gVGNsX01lcmdlKGZhcmdjLCBmYXJn dik7CisrCSAgcmVzdWx0ID0gVGNsX01lcmdlKGZhcmdjLCAoY29uc3QgY2hhciAqKikgZmFyZ3Yp OworIAkgIGZyZWUoZmFyZ3YpOworIAorIAkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCByZXN1bHQs IFRDTF9EWU5BTUlDKTsKK0BAIC0xMTgwLDcgKzExODIsNyBAQCBpbnQgdm9sX2NtZChDbGllbnRE YXRhIGNsaWVudERhdGEsIFRjbF9JCisgICovCisgc3RhdGljCisgaW50IGNtZF9oZnMoQ2xpZW50 RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsCistCSAgICBpbnQgYXJnYywgY2hh ciAqYXJndltdKQorKwkgICAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKKyB7CisgICBz dGF0aWMgaW50IGlkID0gMDsKKyAKK0BAIC0xMjg4LDcgKzEyOTAsNyBAQCBpbnQgY21kX2hmcyhD bGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgICAgIH0KKyAgIGVsc2UgaWYgKHN0cmNtcChh cmd2WzFdLCAibWtwYXJ0IikgPT0gMCkKKyAgICAgeworLSAgICAgIHVuc2lnbmVkIGludCBsZW47 CisrICAgICAgaW50IGxlbjsKKyAKKyAgICAgICBpZiAoYXJnYyAhPSA0KQorIAl7CitAQCAtMTMz NSw4ICsxMzM3LDggQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQor IAorICAgICAgIGlmIChhcmdjID09IDYpCisgCXsKKy0JICBpbnQgbGlzdGMsIGk7CistCSAgY2hh ciAqKmxpc3R2OworKwkgIFRjbF9TaXplIGxpc3RjLCBpOworKwkgIGNvbnN0IGNoYXIgKipsaXN0 djsKKyAJICB1bnNpZ25lZCBsb25nICpiYWRibG9ja3M7CisgCisgCSAgaWYgKFRjbF9TcGxpdExp c3QoaW50ZXJwLCBhcmd2WzVdLCAmbGlzdGMsICZsaXN0dikgIT0gVENMX09LKQorQEAgLTEzNDUs NyArMTM0Nyw3IEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAJ ICBiYWRibG9ja3MgPSBBTExPQ1godW5zaWduZWQgbG9uZywgbGlzdGMpOworIAkgIGlmIChsaXN0 YyAmJiBiYWRibG9ja3MgPT0gMCkKKyAJICAgIHsKKy0JICAgICAgZnJlZShsaXN0dik7CisrCSAg ICAgIFRjbF9GcmVlKCh2b2lkICopIGxpc3R2KTsKKyAKKyAJICAgICAgVGNsX1NldFJlc3VsdChp bnRlcnAsICJvdXQgb2YgbWVtb3J5IiwgVENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVybiBUQ0xf RVJST1I7CitAQCAtMTM1NiwxMyArMTM1OCwxMyBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNs aWVudERhdGEsIFRjbF9JCisgCSAgICAgIGlmIChUY2xfRXhwckxvbmcoaW50ZXJwLCBsaXN0dltp XSwKKyAJCQkgICAgICAgKGxvbmcgKikgJmJhZGJsb2Nrc1tpXSkgIT0gVENMX09LKQorIAkJewor LQkJICBmcmVlKGxpc3R2KTsKKysJCSAgVGNsX0ZyZWUoKHZvaWQgKikgbGlzdHYpOworIAkJICBG UkVFKGJhZGJsb2Nrcyk7CisgCQkgIHJldHVybiBUQ0xfRVJST1I7CisgCQl9CisgCSAgICB9Cisg CistCSAgZnJlZShsaXN0dik7CisrCSAgVGNsX0ZyZWUoKHZvaWQgKikgbGlzdHYpOworIAorIAkg IGlmIChkb19mb3JtYXQoYXJndlsyXSwgcGFydG5vLCAwLCBhcmd2WzRdLCBsaXN0YywgYmFkYmxv Y2tzKSA9PSAtMSkKKyAJICAgIHsKK0BAIC0xNDE5LDcgKzE0MjEsOCBAQCBpbnQgY21kX2hmcyhD bGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQor IAorLSAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCByZXN1bHQsIFRDTF9EWU5BTUlDKTsKKysg ICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgcmVzdWx0LCBUQ0xfVk9MQVRJTEUpOworKyAgICAg IGZyZWUocmVzdWx0KTsKKyAgICAgfQorICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJ2ZXJz aW9uIikgPT0gMCkKKyAgICAgeworQEAgLTE0ODAsNyArMTQ4Myw3IEBAIGludCBjbWRfaGZzKENs aWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAgKi8KKyBzdGF0aWMKKyBpbnQgY21kX2V4aXQo Q2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsCistCSAgICAgaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKKysJICAgICBpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQor IHsKKyAgIGludCBzdGF0dXMgPSAwOworIAorLS0tIGhmc3V0aWxzLTMuMi42L2NoYXJzZXQuaAkx OTk4LTA0LTExIDA5OjI2OjUzLjAwMDAwMDAwMCArMDEwMAorKysrIGhmc3V0aWxzLTMuMi42L2No YXJzZXQuaAkyMDI2LTA3LTIwIDE1OjU4OjEzLjY5Nzk3NDQyMSArMDEwMAorQEAgLTIzLDUgKzIz LDUgQEAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVQ1MyOworIAorIFVDUzIgKmNzX3VuaWNvZGUo Y2hhciAqLCBpbnQgKik7CisgCistY2hhciAqY3NfbGF0aW4xKGNoYXIgKiwgaW50ICopOworLWNo YXIgKmNzX21hY3JvbWFuKGNoYXIgKiwgaW50ICopOworK2NoYXIgKmNzX2xhdGluMShjb25zdCBj aGFyICosIGludCAqKTsKKytjaGFyICpjc19tYWNyb21hbihjb25zdCBjaGFyICosIGludCAqKTsK Ky0tLSBoZnN1dGlscy0zLjIuNi9jaGFyc2V0LmMJMTk5OC0xMS0wMiAyMjowODoyMy4wMDAwMDAw MDAgKzAwMDAKKysrKyBoZnN1dGlscy0zLjIuNi9jaGFyc2V0LmMJMjAyNi0wNy0yMCAxNTo1ODox My42OTc5NzQ0MjEgKzAxMDAKK0BAIC0xNTEsNyArMTUxLDcgQEAgVUNTMiAqY3NfdW5pY29kZShj aGFyICptc3RyLCBpbnQgKmxlbnB0cgorICAqIE5BTUU6CWNoYXJzZXQtPmxhdGluMSgpCisgICog REVTQ1JJUFRJT046CXJldHVybiBhIExhdGluLTEgKElTTyA4ODU5LTEpIHN0cmluZyBmb3IgTWFj T1MgU3RhbmRhcmQgUm9tYW4KKyAgKi8KKy1jaGFyICpjc19sYXRpbjEoY2hhciAqbXN0ciwgaW50 ICpsZW5wdHIpCisrY2hhciAqY3NfbGF0aW4xKGNvbnN0IGNoYXIgKm1zdHIsIGludCAqbGVucHRy KQorIHsKKyAgIGludCBpbGVuLCBvbGVuLCBpOworICAgY2hhciAqbGF0aW4xLCAqcHRyOworQEAg LTIyOSw3ICsyMjksNyBAQCB2b2lkIG1rdGFibGUodm9pZCkKKyAgKiBOQU1FOgljaGFyc2V0LT5t YWNyb21hbigpCisgICogREVTQ1JJUFRJT046CXJldHVybiBhIE1hY09TIFN0YW5kYXJkIFJvbWFu IHN0cmluZyBmb3IgTGF0aW4tMSAoSVNPIDg4NTktMSkKKyAgKi8KKy1jaGFyICpjc19tYWNyb21h bihjaGFyICpsc3RyLCBpbnQgKmxlbnB0cikKKytjaGFyICpjc19tYWNyb21hbihjb25zdCBjaGFy ICpsc3RyLCBpbnQgKmxlbnB0cikKKyB7CisgICBpbnQgaWxlbiwgb2xlbiwgaTsKKyAgIGNoYXIg Km1hY3JvbWFuLCAqcHRyOwoKZGlmZiAtLWdpdCBhL2hmc3V0aWxzLnNwZWMgYi9oZnN1dGlscy5z cGVjCmluZGV4IGQ4NDIzMDMuLjRmN2NiYmUgMTAwNjQ0Ci0tLSBhL2hmc3V0aWxzLnNwZWMKKysr IGIvaGZzdXRpbHMuc3BlYwpAQCAtMSw3ICsxLDcgQEAKIFN1bW1hcnk6IFRvb2xzIGZvciByZWFk aW5nIGFuZCB3cml0aW5nIE1hY2ludG9zaCBIRlMgdm9sdW1lcwogTmFtZTogaGZzdXRpbHMKIFZl cnNpb246IDMuMi42Ci1SZWxlYXNlOiA1NiV7P2Rpc3R9CitSZWxlYXNlOiA1NyV7P2Rpc3R9CiAj IEF1dG9tYXRpY2FsbHkgY29udmVydGVkIGZyb20gb2xkIGZvcm1hdDogR1BMdjIrIC0gcmV2aWV3 IGlzIGhpZ2hseSByZWNvbW1lbmRlZC4KIExpY2Vuc2U6IEdQTC0yLjAtb3ItbGF0ZXIKIFNvdXJj ZTogZnRwOi8vZnRwLm1hcnMub3JnL3B1Yi9oZnMvJXtuYW1lfS0le3ZlcnNpb259LnRhci5negpA QCAtOSw2ICs5LDEyIEBAIFBhdGNoMDogaGZzdXRpbHMtMy4yLjYtZXJybm8ucGF0Y2gKIFBhdGNo MTogaGZzdXRpbHMtMy4yLjYtbGFyZ2VmaWxlLnBhdGNoCiBQYXRjaDI6IGhmc3V0aWxzLTMuMi42 LWNvbmZpZ3VyZS1jOTkucGF0Y2gKIFBhdGNoMzogaGZzdXRpbHMtMy4yLjYtaW5jbHVkZS1jOTku cGF0Y2gKKyMgVGNsIDkgbWFkZSBUY2xfSW50ZXJwIG9wYXF1ZTsgdXNlIFRjbF9TZXRSZXN1bHQo KS9UY2xfR2V0U3RyaW5nUmVzdWx0KCkKKyMgaW5zdGVhZCBvZiBwb2tpbmcgaW50ZXJwLT5yZXN1 bHQgZGlyZWN0bHkKK1BhdGNoNDogaGZzdXRpbHMtMy4yLjYtdGNsOS1pbnRlcnAtcmVzdWx0LnBh dGNoCisjIFRjbCA5IHR5cGUgZml4ZXMgKFRjbF9TaXplLCBjb25zdCBhcmd2KSBhbmQgVGNsX0Zy ZWUvZnJlZSBwYWlyaW5nLCBzbyB3ZQorIyBjYW4gZHJvcCAtV25vLWluY29tcGF0aWJsZS1wb2lu dGVyLXR5cGVzCitQYXRjaDU6IGhmc3V0aWxzLTMuMi42LXRjbDktcG9pbnRlci10eXBlcy5wYXRj aAogVVJMOiBodHRwOi8vd3d3Lm1hcnMub3JnL2hvbWUvcm9iL3Byb2ovaGZzLwogQnVpbGRSZXF1 aXJlczogbGliWGZ0LWRldmVsIHRjbC1kZXZlbCB0ay1kZXZlbCBnY2MKIEJ1aWxkUmVxdWlyZXM6 IG1ha2UKQEAgLTQ0LDcgKzUwLDcgQEAgaGZzdXRpbHMtZGV2ZWwgcGFja2FnZS4KICVhdXRvc2V0 dXAgLXAxCiAKICVidWlsZAotQ0ZMQUdTPSIle29wdGZsYWdzfSAtRF9GSUxFX09GRlNFVF9CSVRT PTY0IC1EVVNFX0lOVEVSUF9SRVNVTFQgLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcyAt V25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMg LVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLWludC10 by1wb2ludGVyLWNhc3QiCitDRkxBR1M9IiV7b3B0ZmxhZ3N9IC1EX0ZJTEVfT0ZGU0VUX0JJVFM9 NjQgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVu dXNlZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8taW50LXRvLXBvaW50ZXItY2FzdCIKICV7Y29uZmln dXJlfSAtLXdpdGgtdGNsPSV7X2xpYmRpcn0gIC0td2l0aC10az0le19saWJkaXJ9CiBtYWtlCiBt YWtlIGhmc2NrL2hmc2NrCkBAIC0xMTEsNiArMTE3LDEwIEBAIGluc3RhbGwgLXAgLW0gMDc1NSBo ZnNjay9oZnNjayAkUlBNX0JVSUxEX1JPT1QvJXtfYmluZGlyfQogJXtfaW5jbHVkZWRpcn0vcnNy Yy5oCiAKICVjaGFuZ2Vsb2cKKyogTW9uIEp1bCAyMCAyMDI2IE1pY2hlbCBMaW5kIDxzYWxpbW1h QGZlZG9yYXByb2plY3Qub3JnPiAtIDMuMi42LTU3CistIFBvcnQgdGNsaGZzLmMgYW5kIGhmc3dp c2guYyB0byB0aGUgVGNsIDkgcmVzdWx0IEFQSQorLSBGaXggcG9pbnRlci10eXBlIG1pc21hdGNo ZXMgd2l0aCB0aGUgVGNsIDkgQVBJIGFuZCBhbGxvY2F0b3IgcGFpcmluZworCiAqIFRodSBKdWwg MTYgMjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qu b3JnPiAtIDMuMi42LTU2CiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcv d2lraS9GZWRvcmFfNDVfTWFzc19SZWJ1aWxkCiAK