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] f44: Port tclhfs.c and hfswish.c to the Tcl 9 result API Date: Fri, 31 Jul 2026 17:43:01 GMT Message-ID: <178551978185.1.2079978249566576510.rpms-hfsutils-8fe66a9c2fb7@fedoraproject.org> List-ID: X-Git-Repo: rpms/hfsutils X-Git-Branch: f44 X-Git-Rev: 8fe66a9c2fb70500d291e871b669d1c097c437d2 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaGZzdXRpbHMKICAgICAgICAgICAgQnJhbmNoIDogZjQ0CiAgICAgICAgICAg IENvbW1pdCA6IDhmZTY2YTljMmZiNzA1MDBkMjkxZTg3MWI2NjlkMWMwOTdjNDM3ZDIKICAgICAg ICAgICAgQXV0aG9yIDogTWljaGVsIExpbmQgPHNhbGltbWFAZmVkb3JhcHJvamVjdC5vcmc+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMjYtMDctMjBUMTY6MDI6MzQrMDE6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzg3MC8tMiBpbiAzIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6 Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9oZnN1dGlscy9jLzhmZTY2YTljMmZiNzA1MDBk MjkxZTg3MWI2NjlkMWMwOTdjNDM3ZDI/YnJhbmNoPWY0NAoKICAgICAgICAgICAgTG9nOgogICAg ICAgICAgICBQb3J0IHRjbGhmcy5jIGFuZCBoZnN3aXNoLmMgdG8gdGhlIFRjbCA5IHJlc3VsdCBB UEkKCi0gRml4IHBvaW50ZXItdHlwZSBtaXNtYXRjaGVzIHdpdGggdGhlIFRjbCA5IEFQSSBhbmQg YWxsb2NhdG9yIHBhaXJpbmcKCkFzc2lzdGVkLWJ5OiBDbGF1ZGUgQ29kZTpjbGF1ZGUtZmFibGUt NQpTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgTGluZCA8c2FsaW1tYUBmZWRvcmFwcm9qZWN0Lm9yZz4K Ci0tLQpkaWZmIC0tZ2l0IGEvaGZzdXRpbHMtMy4yLjYtdGNsOS1pbnRlcnAtcmVzdWx0LnBhdGNo IGIvaGZzdXRpbHMtMy4yLjYtdGNsOS1pbnRlcnAtcmVzdWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NTFmNDcKLS0tIC9kZXYvbnVsbAorKysgYi9oZnN1dGls cy0zLjIuNi10Y2w5LWludGVycC1yZXN1bHQucGF0Y2gKQEAgLTAsMCArMSw1NzggQEAKK1BvcnQg dGNsaGZzLmMgYW5kIGhmc3dpc2guYyB0byB0aGUgVGNsIDkgcmVzdWx0IEFQSQorCitUY2wgOS4w IChGZWRvcmEgNDMrKSBtYWRlIHRoZSBUY2xfSW50ZXJwIHN0cnVjdCBmdWxseSBvcGFxdWU6IHRo ZQorInJlc3VsdCIgZmllbGQgLS0gZGVwcmVjYXRlZCBzaW5jZSBUY2wgOC42IChUSVAgMzMwKSBh bmQgdW50aWwgbm93CityZS1lbmFibGVkIHdpdGggLURVU0VfSU5URVJQX1JFU1VMVCAtLSBubyBs b25nZXIgZXhpc3RzLCBzbyBldmVyeQorZGlyZWN0IGludGVycC0+cmVzdWx0IGFjY2VzcyBpcyBh IGNvbXBpbGUgZXJyb3IuCisKK1JlcGxhY2UgdGhlbSB3aXRoIHRoZSBzdXBwb3J0ZWQgQVBJLCB3 aGljaCBleGlzdHMgaW4gYm90aCBUY2wgOCBhbmQgOToKKy0gc3RhdGljIG1lc3NhZ2UgYXNzaWdu bWVudHMgLT4gVGNsX1NldFJlc3VsdChpbnRlcnAsIG1zZywgVENMX1NUQVRJQykKKy0gc3ByaW50 ZihpbnRlcnAtPnJlc3VsdCwgLi4uKSAtPiBzcHJpbnRmIGludG8gYSBsb2NhbCBidWZmZXIgKwor ICBUY2xfU2V0UmVzdWx0KGludGVycCwgYnVmLCBUQ0xfVk9MQVRJTEUpICh0aGUgb2xkIGNvZGUg cmVsaWVkIG9uIHRoZQorICBpbnRlcnAncyBidWlsdC1pbiByZXN1bHQgYnVmZmVyLCB3aGljaCBp cyBnb25lKQorLSB0aGUgZ2VuZXJhdGVkICJoZnNmaWxlTiIvImhmc3ZvbE4iIGNvbW1hbmQgbmFt ZXMgYXJlIG5vdyBidWlsdCBpbiBhCisgIGxvY2FsIGJ1ZmZlcjsgYW4gZXhwbGljaXQgVGNsX1Nl dFJlc3VsdCBrZWVwcyB0aGVtIGFzIHRoZSBzY3JpcHQtbGV2ZWwKKyAgcmV0dXJuIHZhbHVlIG9m ICJ2b2wgb3BlbiIsICJ2b2wgY3JlYXRlIiBhbmQgImhmcyBtb3VudCIKKy0gcmVhZGluZyB0aGUg cmVzdWx0IChUY2xfU3BsaXRMaXN0IGluICJ2b2wgcGF0aCIsIHRoZSBlcnJvciByZXBvcnQgaW4K KyAgaGZzd2lzaCdzIFRjbF9BcHBJbml0KSAtPiBUY2xfR2V0U3RyaW5nUmVzdWx0CisKKy0tLSBo ZnN1dGlscy0zLjIuNi90Y2xoZnMuYwkxOTk4LTExLTAyIDIyOjA4OjMyLjAwMDAwMDAwMCArMDAw MAorKysrIGhmc3V0aWxzLTMuMi42L3RjbGhmcy5jCTIwMjYtMDctMjAgMTU6MzI6MTQuNjU1Mjgy ODcxICswMTAwCitAQCAtMjM5LDcgKzIzOSw3IEBAIGludCBnZXRkaXIoVGNsX0ludGVycCAqaW50 ZXJwLCB2b2xyZWYgKnYKKyAgICAgICBzdHIgPSBkaXJlbnRzdHIoJmVudCk7CisgICAgICAgaWYg KHN0ciA9PSAwKQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAib3V0IG9mIG1lbW9yeSI7Cisr CSAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJvdXQgb2YgbWVtb3J5IiwgVENMX1NUQVRJQyk7Cisg CSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgZmls ZV9jbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfCisgICBzd2l0Y2ggKGFyZ2MpCisgICAg IHsKKyAgICAgY2FzZSAxOgorLSAgICAgIGludGVycC0+cmVzdWx0ID0gIm1pc3NpbmcgY29tbWFu ZCI7CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJtaXNzaW5nIGNvbW1hbmQiLCBUQ0xf U1RBVElDKTsKKyAgICAgICByZXR1cm4gVENMX0VSUk9SOworIAorICAgICBjYXNlIDI6CitAQCAt Mjk3LDEyICsyOTcsMTQgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNs XworICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAidGVsbCIpID09IDApCisgCXsKKyAJ ICBsb25nIG9mZnNldDsKKysJICBjaGFyIGJ1ZltDSEFSTEVOKHVuc2lnbmVkIGxvbmcpICsgMV07 CisgCisgCSAgb2Zmc2V0ID0gaGZzX3NlZWsoZmlsZSwgMCwgSEZTX1NFRUtfQ1VSKTsKKyAJICBp ZiAob2Zmc2V0ID09IC0xKQorIAkgICAgcmV0dXJuIGVycm9yKGludGVycCwgMCk7CisgCistCSAg c3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgIiVsdSIsIG9mZnNldCk7CisrCSAgc3ByaW50ZihidWYs ICIlbHUiLCBvZmZzZXQpOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xB VElMRSk7CisgCX0KKyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInN0YXQiKSA9PSAw KQorIAl7CitAQCAtMzE1LDcgKzMxNyw3IEBAIGludCBmaWxlX2NtZChDbGllbnREYXRhIGNsaWVu dERhdGEsIFRjbF8KKyAJICBzdHIgPSBkaXJlbnRzdHIoJmVudCk7CisgCSAgaWYgKHN0ciA9PSAw KQorIAkgICAgeworLQkgICAgICBpbnRlcnAtPnJlc3VsdCA9ICJvdXQgb2YgbWVtb3J5IjsKKysJ ICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJvdXQgb2YgbWVtb3J5IiwgVENMX1NUQVRJQyk7 CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9CisgCitAQCAtMzIzLDcgKzMyNSw3 IEBAIGludCBmaWxlX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF8KKyAJfQorICAgICAg IGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiZ2V0Zm9yayIpID09IDApCisgCXsKKy0JICBpbnRl cnAtPnJlc3VsdCA9IChoZnNfZ2V0Zm9yayhmaWxlKSA9PSAwKSA/ICJkYXRhIiA6ICJyc3JjIjsK KysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgKGhmc19nZXRmb3JrKGZpbGUpID09IDApID8gImRh dGEiIDogInJzcmMiLCBUQ0xfU1RBVElDKTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworQEAgLTM0 Niw3ICszNDgsNyBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfCisg CSAgICBmb3JrID0gMTsKKyAJICBlbHNlCisgCSAgICB7CistCSAgICAgIGludGVycC0+cmVzdWx0 ID0gImJhZCBhcmcgdG8gc2V0Zm9yazogbXVzdCBiZSBkYXRhIG9yIHJzcmMiOworKwkgICAgICBU Y2xfU2V0UmVzdWx0KGludGVycCwgImJhZCBhcmcgdG8gc2V0Zm9yazogbXVzdCBiZSBkYXRhIG9y IHJzcmMiLCBUQ0xfU1RBVElDKTsKKyAJICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJICAgIH0K KyAKK0BAIC0zNTUsNiArMzU3LDcgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0 YSwgVGNsXworICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAic2VlayIpID09IDApCisg CXsKKyAJICBsb25nIG9mZnNldDsKKysJICBjaGFyIGJ1ZltDSEFSTEVOKHVuc2lnbmVkIGxvbmcp ICsgMV07CisgCisgCSAgaWYgKFRjbF9FeHByTG9uZyhpbnRlcnAsIGFyZ3ZbMl0sICZvZmZzZXQp ICE9IFRDTF9PSykKKyAJICAgIHJldHVybiBUQ0xfRVJST1I7CitAQCAtMzYzLDcgKzM2Niw4IEBA IGludCBmaWxlX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF8KKyAJICBpZiAob2Zmc2V0 ID09IC0xKQorIAkgICAgcmV0dXJuIGVycm9yKGludGVycCwgMCk7CisgCistCSAgc3ByaW50Zihp bnRlcnAtPnJlc3VsdCwgIiVsdSIsIG9mZnNldCk7CisrCSAgc3ByaW50ZihidWYsICIlbHUiLCBv ZmZzZXQpOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xBVElMRSk7Cisg CX0KKyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInJlYWQiKSA9PSAwKQorIAl7CitA QCAtMzc1LDE0ICszNzksMTQgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwg VGNsXworIAorIAkgIGlmIChieXRlcyA8IDApCisgCSAgICB7CistCSAgICAgIGludGVycC0+cmVz dWx0ID0gInNpemUgbXVzdCBiZSA+PSAwIjsKKysJICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAs ICJzaXplIG11c3QgYmUgPj0gMCIsIFRDTF9TVEFUSUMpOworIAkgICAgICByZXR1cm4gVENMX0VS Uk9SOworIAkgICAgfQorIAorIAkgIG1lbSA9IEFMTE9DKGNoYXIsIGJ5dGVzICsgMSk7CisgCSAg aWYgKG1lbSA9PSAwKQorIAkgICAgeworLQkgICAgICBpbnRlcnAtPnJlc3VsdCA9ICJvdXQgb2Yg bWVtb3J5IjsKKysJICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJvdXQgb2YgbWVtb3J5Iiwg VENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9CisgCitAQCAt NDAwLDEyICs0MDQsMTQgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNs XworICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAid3JpdGUiKSA9PSAwKQorIAl7Cisg CSAgbG9uZyBieXRlczsKKysJICBjaGFyIGJ1ZltDSEFSTEVOKHVuc2lnbmVkIGxvbmcpICsgMV07 CisgCisgCSAgYnl0ZXMgPSBoZnNfd3JpdGUoZmlsZSwgYXJndlsyXSwgc3RybGVuKGFyZ3ZbMl0p KTsKKyAJICBpZiAoYnl0ZXMgPT0gLTEpCisgCSAgICByZXR1cm4gZXJyb3IoaW50ZXJwLCAwKTsK KyAKKy0JICBzcHJpbnRmKGludGVycC0+cmVzdWx0LCAiJWx1IiwgYnl0ZXMpOworKwkgIHNwcmlu dGYoYnVmLCAiJWx1IiwgYnl0ZXMpOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRD TF9WT0xBVElMRSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC00MjAsNiArNDI2LDcgQEAg aW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsXworIAl7CisgCSAgbG9uZyBv ZmZzZXQ7CisgCSAgaW50IHdoZW5jZTsKKysJICBjaGFyIGJ1ZltDSEFSTEVOKHVuc2lnbmVkIGxv bmcpICsgMV07CisgCisgCSAgaWYgKFRjbF9FeHByTG9uZyhpbnRlcnAsIGFyZ3ZbMl0sICZvZmZz ZXQpICE9IFRDTF9PSykKKyAJICAgIHJldHVybiBUQ0xfRVJST1I7CitAQCAtNDM0LDcgKzQ0MSw3 IEBAIGludCBmaWxlX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF8KKyAJICAgIHdoZW5j ZSA9IEhGU19TRUVLX0VORDsKKyAJICBlbHNlCisgCSAgICB7CistCSAgICAgIGludGVycC0+cmVz dWx0ID0gImJhZCBhcmcgMzogbXVzdCBiZSBzdGFydCwgY3VycmVudCwgb3IgZW5kIjsKKysJICAg ICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJiYWQgYXJnIDM6IG11c3QgYmUgc3RhcnQsIGN1cnJl bnQsIG9yIGVuZCIsIFRDTF9TVEFUSUMpOworIAkgICAgICByZXR1cm4gVENMX0VSUk9SOworIAkg ICAgfQorIAorQEAgLTQ0Miw3ICs0NDksOCBAQCBpbnQgZmlsZV9jbWQoQ2xpZW50RGF0YSBjbGll bnREYXRhLCBUY2xfCisgCSAgaWYgKG9mZnNldCA9PSAtMSkKKyAJICAgIHJldHVybiBlcnJvcihp bnRlcnAsIDApOworIAorLQkgIHNwcmludGYoaW50ZXJwLT5yZXN1bHQsICIlbHUiLCBvZmZzZXQp OworKwkgIHNwcmludGYoYnVmLCAiJWx1Iiwgb2Zmc2V0KTsKKysJICBUY2xfU2V0UmVzdWx0KGlu dGVycCwgYnVmLCBUQ0xfVk9MQVRJTEUpOworIAl9CisgICAgICAgZWxzZQorIAl7CitAQCAtNTAw LDE4ICs1MDgsMjEgQEAgdm9pZCBmaWxlX3JlZihUY2xfSW50ZXJwICppbnRlcnAsIHZvbHJlZgor ICAgVGNsX0NtZEluZm8gaW5mbzsKKyAgIFRjbF9IYXNoRW50cnkgKmVudHJ5OworICAgaW50IG5l dzsKKysgIGNoYXIgbmFtZVtDSEFSTEVOKGludCkgKyA4XTsKKyAKKyAgIGRvCistICAgIHNwcmlu dGYoaW50ZXJwLT5yZXN1bHQsICJoZnNmaWxlJWQiLCBpZCsrKTsKKy0gIHdoaWxlIChUY2xfR2V0 Q29tbWFuZEluZm8oaW50ZXJwLCBpbnRlcnAtPnJlc3VsdCwgJmluZm8pKTsKKysgICAgc3ByaW50 ZihuYW1lLCAiaGZzZmlsZSVkIiwgaWQrKyk7CisrICB3aGlsZSAoVGNsX0dldENvbW1hbmRJbmZv KGludGVycCwgbmFtZSwgJmluZm8pKTsKKyAKKyAgIGZyZWYtPmZpbGUgICA9IGZpbGU7CisgICBm cmVmLT5pbnRlcnAgPSBpbnRlcnA7CistICBmcmVmLT5jbWQgICAgPSBUY2xfQ3JlYXRlQ29tbWFu ZChpbnRlcnAsIGludGVycC0+cmVzdWx0LAorKyAgZnJlZi0+Y21kICAgID0gVGNsX0NyZWF0ZUNv bW1hbmQoaW50ZXJwLCBuYW1lLAorIAkJCQkgICBmaWxlX2NtZCwgZnJlZiwgZmlsZV9kZWwpOwor IAorICAgZW50cnkgPSBUY2xfQ3JlYXRlSGFzaEVudHJ5KCZmaWxlcywgKGNoYXIgKikgZnJlZiwg Jm5ldyk7CisgICBUY2xfU2V0SGFzaFZhbHVlKGVudHJ5LCB2cmVmKTsKKysKKysgIFRjbF9TZXRS ZXN1bHQoaW50ZXJwLCBuYW1lLCBUQ0xfVk9MQVRJTEUpOworIH0KKyAKKyAvKgorQEAgLTYxOCw3 ICs2MjksNyBAQCBpbnQgY29weW5hdGl2ZShUY2xfSW50ZXJwICppbnRlcnAsIHZvbHJlCisgICBp ZiAoc3JjdnJlZi0+dm9sID09IGRzdHZyZWYtPnZvbCAmJgorICAgICAgIGVudC5jbmlkID09IGNu aWQpCisgICAgIHsKKy0gICAgICBpbnRlcnAtPnJlc3VsdCA9ICJzb3VyY2UgYW5kIGRlc3RpbmF0 aW9uIGZpbGVzIGFyZSB0aGUgc2FtZSI7CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJz b3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZpbGVzIGFyZSB0aGUgc2FtZSIsIFRDTF9TVEFUSUMpOwor ICAgICAgIGhmc19jbG9zZShpZmlsZSk7CisgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAgICAg fQorQEAgLTY3Miw3ICs2ODMsNyBAQCBpbnQgY29weWluKFRjbF9JbnRlcnAgKmludGVycCwgaGZz dm9sICp2CisgICAgIGNvcHlmaWxlID0gY3BpX3JhdzsKKyAgIGVsc2UKKyAgICAgeworLSAgICAg IGludGVycC0+cmVzdWx0ID0gImJhZCBtb2RlOiBtdXN0IGJlIG1hY2IsIGJpbmgsIHRleHQsIG9y IHJhdyI7CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJiYWQgbW9kZTogbXVzdCBiZSBt YWNiLCBiaW5oLCB0ZXh0LCBvciByYXciLCBUQ0xfU1RBVElDKTsKKyAgICAgICByZXR1cm4gVENM X0VSUk9SOworICAgICB9CisgCitAQCAtNzA3LDcgKzcxOCw3IEBAIGludCBjb3B5b3V0KFRjbF9J bnRlcnAgKmludGVycCwgaGZzdm9sICoKKyAgICAgY29weWZpbGUgPSBjcG9fcmF3OworICAgZWxz ZQorICAgICB7CistICAgICAgaW50ZXJwLT5yZXN1bHQgPSAiYmFkIG1vZGU6IG11c3QgYmUgbWFj YiwgYmluaCwgdGV4dCwgb3IgcmF3IjsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgImJh ZCBtb2RlOiBtdXN0IGJlIG1hY2IsIGJpbmgsIHRleHQsIG9yIHJhdyIsIFRDTF9TVEFUSUMpOwor ICAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgICAgIH0KKyAKK0BAIC04MjEsNyArODMyLDcgQEAg aW50IHZvbF9jbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorICAgc3dpdGNoIChhcmdj KQorICAgICB7CisgICAgIGNhc2UgMToKKy0gICAgICBpbnRlcnAtPnJlc3VsdCA9ICJtaXNzaW5n IGNvbW1hbmQiOworKyAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAibWlzc2luZyBjb21tYW5k IiwgVENMX1NUQVRJQyk7CisgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAKKyAgICAgY2FzZSAy OgorQEAgLTgzNSwyMyArODQ2LDI5IEBAIGludCB2b2xfY21kKENsaWVudERhdGEgY2xpZW50RGF0 YSwgVGNsX0kKKyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInNpemUiKSA9PSAwKQor IAl7CisgCSAgaGZzdm9sZW50IGVudDsKKysJICBjaGFyIGJ1ZlsyICogQ0hBUkxFTih1bnNpZ25l ZCBsb25nKSArIDJdOworIAorIAkgIGhmc192c3RhdCh2b2wsICZlbnQpOworLQkgIHNwcmludGYo aW50ZXJwLT5yZXN1bHQsICIlbHUgJWx1IiwgZW50LnRvdGJ5dGVzLCBlbnQuZnJlZWJ5dGVzKTsK KysJICBzcHJpbnRmKGJ1ZiwgIiVsdSAlbHUiLCBlbnQudG90Ynl0ZXMsIGVudC5mcmVlYnl0ZXMp OworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xBVElMRSk7CisgCX0KKyAg ICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgImNyZGF0ZSIpID09IDApCisgCXsKKyAJICBo ZnN2b2xlbnQgZW50OworKwkgIGNoYXIgYnVmW0NIQVJMRU4obG9uZykgKyAxXTsKKyAKKyAJICBo ZnNfdnN0YXQodm9sLCAmZW50KTsKKy0JICBzcHJpbnRmKGludGVycC0+cmVzdWx0LCAiJWxkIiwg KGxvbmcpIGVudC5jcmRhdGUpOworKwkgIHNwcmludGYoYnVmLCAiJWxkIiwgKGxvbmcpIGVudC5j cmRhdGUpOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xBVElMRSk7Cisg CX0KKyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIm1kZGF0ZSIpID09IDApCisgCXsK KyAJICBoZnN2b2xlbnQgZW50OworKwkgIGNoYXIgYnVmW0NIQVJMRU4obG9uZykgKyAxXTsKKyAK KyAJICBoZnNfdnN0YXQodm9sLCAmZW50KTsKKy0JICBzcHJpbnRmKGludGVycC0+cmVzdWx0LCAi JWxkIiwgKGxvbmcpIGVudC5tZGRhdGUpOworKwkgIHNwcmludGYoYnVmLCAiJWxkIiwgKGxvbmcp IGVudC5tZGRhdGUpOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xBVElM RSk7CisgCX0KKyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgImlzbG9ja2VkIikgPT0g MCkKKyAJeworQEAgLTg1OSw5ICs4NzYsOSBAQCBpbnQgdm9sX2NtZChDbGllbnREYXRhIGNsaWVu dERhdGEsIFRjbF9JCisgCisgCSAgaGZzX3ZzdGF0KHZvbCwgJmVudCk7CisgCSAgaWYgKGVudC5m bGFncyAmIEhGU19JU0xPQ0tFRCkKKy0JICAgIGludGVycC0+cmVzdWx0ID0gIjEiOworKwkgICAg VGNsX1NldFJlc3VsdChpbnRlcnAsICIxIiwgVENMX1NUQVRJQyk7CisgCSAgZWxzZQorLQkgICAg aW50ZXJwLT5yZXN1bHQgPSAiMCI7CisrCSAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgIjAiLCBU Q0xfU1RBVElDKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAidW1vdW50 IikgPT0gMCkKKyAJeworQEAgLTg3MCw3ICs4ODcsMTIgQEAgaW50IHZvbF9jbWQoQ2xpZW50RGF0 YSBjbGllbnREYXRhLCBUY2xfSQorIAkgICAgcmV0dXJuIGVycm9yKGludGVycCwgMCk7CisgCX0K KyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgImN3ZCIpID09IDApCistCXNwcmludGYo aW50ZXJwLT5yZXN1bHQsICIlbHUiLCB2cmVmLT5jd2QpOworKwl7CisrCSAgY2hhciBidWZbQ0hB UkxFTih1bnNpZ25lZCBsb25nKSArIDFdOworKworKwkgIHNwcmludGYoYnVmLCAiJWx1IiwgdnJl Zi0+Y3dkKTsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgYnVmLCBUQ0xfVk9MQVRJTEUpOwor Kwl9CisgICAgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJwYXRoIikgPT0gMCkKKyAJewor IAkgIGNoYXIgbmFtZVtIRlNfTUFYX0ZMRU4gKyAxXTsKK0BAIC04OTAsNyArOTEyLDcgQEAgaW50 IHZvbF9jbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAorIAkgIC8qIHJldmVyc2Ug dGhlIHJlc3VsdGluZyBsaXN0ICovCisgCistCSAgaWYgKFRjbF9TcGxpdExpc3QoaW50ZXJwLCBp bnRlcnAtPnJlc3VsdCwgJmxpc3RjLCAmbGlzdHYpICE9IFRDTF9PSykKKysJICBpZiAoVGNsX1Nw bGl0TGlzdChpbnRlcnAsIFRjbF9HZXRTdHJpbmdSZXN1bHQoaW50ZXJwKSwgJmxpc3RjLCAmbGlz dHYpICE9IFRDTF9PSykKKyAJICAgIHJldHVybiBUQ0xfRVJST1I7CisgCisgCSAgZm9yIChpID0g MDsgaSA8IGxpc3RjIC8gMjsgKytpKQorQEAgLTkxOCw3ICs5NDAsNyBAQCBpbnQgdm9sX2NtZChD bGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgICByZXR1cm4gZXJyb3IoaW50ZXJwLCAw KTsKKyAJfQorICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAic2VwY2hhciIpID09IDAp CistCWludGVycC0+cmVzdWx0ID0gIjoiOworKwlUY2xfU2V0UmVzdWx0KGludGVycCwgIjoiLCBU Q0xfU1RBVElDKTsKKyAgICAgICBlbHNlCisgCXsKKyAJICBUY2xfQXBwZW5kUmVzdWx0KGludGVy cCwgImJhZCBjb21tYW5kIFwiIiwgYXJndlsxXSwKK0BAIC05NjUsNyArOTg3LDcgQEAgaW50IHZv bF9jbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAkgIGZyZWYgPSBBTExPQyhmaWxl cmVmLCAxKTsKKyAJICBpZiAoZnJlZiA9PSAwKQorIAkgICAgeworLQkgICAgICBpbnRlcnAtPnJl c3VsdCA9ICJvdXQgb2YgbWVtb3J5IjsKKysJICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJv dXQgb2YgbWVtb3J5IiwgVENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7Cisg CSAgICB9CisgCitAQCAtOTkwLDcgKzEwMTIsNyBAQCBpbnQgdm9sX2NtZChDbGllbnREYXRhIGNs aWVudERhdGEsIFRjbF9JCisgCSAgc3RyID0gZGlyZW50c3RyKCZlbnQpOworIAkgIGlmIChzdHIg PT0gMCkKKyAJICAgIHsKKy0JICAgICAgaW50ZXJwLT5yZXN1bHQgPSAib3V0IG9mIG1lbW9yeSI7 CisrCSAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAib3V0IG9mIG1lbW9yeSIsIFRDTF9TVEFU SUMpOworIAkgICAgICByZXR1cm4gVENMX0VSUk9SOworIAkgICAgfQorIAorQEAgLTEwNDMsNyAr MTA2NSw3IEBAIGludCB2b2xfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAKKyAJ ICBpZiAoZmFyZ3YgPT0gMCkKKyAJICAgIHsKKy0JICAgICAgaW50ZXJwLT5yZXN1bHQgPSAiZ2xv YmJpbmcgZXJyb3IiOworKwkgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgImdsb2JiaW5nIGVy cm9yIiwgVENMX1NUQVRJQyk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9Cisg CitAQCAtMTA5OSwxNCArMTEyMSwxNCBAQCBpbnQgdm9sX2NtZChDbGllbnREYXRhIGNsaWVudERh dGEsIFRjbF9JCisgCSAgaWYgKHN0cmxlbihhcmd2WzNdKSAhPSA0IHx8CisgCSAgICAgIHN0cmxl bihhcmd2WzRdKSAhPSA0KQorIAkgICAgeworLQkgICAgICBpbnRlcnAtPnJlc3VsdCA9ICJ0eXBl IGFuZCBjcmVhdG9yIG11c3QgYmUgNCBjaGFyYWN0ZXIgc3RyaW5ncyI7CisrCSAgICAgIFRjbF9T ZXRSZXN1bHQoaW50ZXJwLCAidHlwZSBhbmQgY3JlYXRvciBtdXN0IGJlIDQgY2hhcmFjdGVyIHN0 cmluZ3MiLCBUQ0xfU1RBVElDKTsKKyAJICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJICAgIH0K KyAKKyAJICBmcmVmID0gQUxMT0MoZmlsZXJlZiwgMSk7CisgCSAgaWYgKGZyZWYgPT0gMCkKKyAJ ICAgIHsKKy0JICAgICAgaW50ZXJwLT5yZXN1bHQgPSAib3V0IG9mIG1lbW9yeSI7CisrCSAgICAg IFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAib3V0IG9mIG1lbW9yeSIsIFRDTF9TVEFUSUMpOworIAkg ICAgICByZXR1cm4gVENMX0VSUk9SOworIAkgICAgfQorIAorQEAgLTExNjQsNyArMTE4Niw3IEBA IGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAKKyAgIGlmIChhcmdj IDwgMikKKyAgICAgeworLSAgICAgIGludGVycC0+cmVzdWx0ID0gIndyb25nICMgYXJncyI7Cisr ICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJ3cm9uZyAjIGFyZ3MiLCBUQ0xfU1RBVElDKTsK KyAgICAgICByZXR1cm4gVENMX0VSUk9SOworICAgICB9CisgCitAQCAtMTE3NiwxMCArMTE5OCwx MSBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgICAgICAgVGNs X0NtZEluZm8gaW5mbzsKKyAgICAgICBUY2xfSGFzaEVudHJ5ICplbnRyeTsKKyAgICAgICBpbnQg bmV3OworKyAgICAgIGNoYXIgbmFtZVtDSEFSTEVOKGludCkgKyA4XTsKKyAKKyAgICAgICBpZiAo YXJnYyA8IDMgfHwgYXJnYyA+IDQpCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJ3cm9uZyAj IGFyZ3MiOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAid3JvbmcgIyBhcmdzIiwgVENMX1NU QVRJQyk7CisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorQEAgLTExOTEsNiArMTIxNCw3 IEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAgICAgICBlbHNl CisgCXsKKyAJICBpbnQgbnBhcnRzOworKwkgIGNoYXIgYnVmWzY0XTsKKyAKKyAJICBzdWlkX2Vu YWJsZSgpOworIAkgIG5wYXJ0cyA9IGhmc19ucGFydHMoYXJndlsyXSk7CitAQCAtMTE5OCw4ICsx MjIyLDkgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAorIAkg IGlmIChucGFydHMgPiAxKQorIAkgICAgeworLQkgICAgICBzcHJpbnRmKGludGVycC0+cmVzdWx0 LCAibXVzdCBzcGVjaWZ5IHBhcnRpdGlvbiBudW1iZXIgIgorKwkgICAgICBzcHJpbnRmKGJ1Ziwg Im11c3Qgc3BlY2lmeSBwYXJ0aXRpb24gbnVtYmVyICIKKyAJCSAgICAgICIoJWQgYXZhaWxhYmxl KSIsIG5wYXJ0cyk7CisrCSAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBidWYsIFRDTF9WT0xB VElMRSk7CisgCSAgICAgIHJldHVybiBUQ0xfRVJST1I7CisgCSAgICB9CisgCSAgZWxzZSBpZiAo bnBhcnRzID09IC0xKQorQEAgLTEyMTEsNyArMTIzNiw3IEBAIGludCBjbWRfaGZzKENsaWVudERh dGEgY2xpZW50RGF0YSwgVGNsX0kKKyAgICAgICB2cmVmID0gQUxMT0Modm9scmVmLCAxKTsKKyAg ICAgICBpZiAodnJlZiA9PSAwKQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAib3V0IG9mIG1l bW9yeSI7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJvdXQgb2YgbWVtb3J5IiwgVENMX1NU QVRJQyk7CisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorQEAgLTEyMzIsMjAgKzEyNTcs MjMgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorICAgICAgIGVu dHJ5ID0gVGNsX0NyZWF0ZUhhc2hFbnRyeSgmdm9sdW1lcywgKGNoYXIgKikgdnJlZiwgJm5ldyk7 CisgCisgICAgICAgZG8KKy0Jc3ByaW50ZihpbnRlcnAtPnJlc3VsdCwgImhmc3ZvbCVkIiwgaWQr Kyk7CistICAgICAgd2hpbGUgKFRjbF9HZXRDb21tYW5kSW5mbyhpbnRlcnAsIGludGVycC0+cmVz dWx0LCAmaW5mbykpOworKwlzcHJpbnRmKG5hbWUsICJoZnN2b2wlZCIsIGlkKyspOworKyAgICAg IHdoaWxlIChUY2xfR2V0Q29tbWFuZEluZm8oaW50ZXJwLCBuYW1lLCAmaW5mbykpOworIAorLSAg ICAgIFRjbF9DcmVhdGVDb21tYW5kKGludGVycCwgaW50ZXJwLT5yZXN1bHQsCisrICAgICAgVGNs X0NyZWF0ZUNvbW1hbmQoaW50ZXJwLCBuYW1lLAorIAkJCXZvbF9jbWQsIHZyZWYsIHZvbF9kZWwp OworKworKyAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCBuYW1lLCBUQ0xfVk9MQVRJTEUpOwor ICAgICB9CisgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInplcm8iKSA9PSAwKQorICAgICB7 CisgICAgICAgaW50IG5wYXJ0czsKKyAgICAgICB1bnNpZ25lZCBsb25nIGxlbjsKKysgICAgICBj aGFyIGJ1ZltDSEFSTEVOKHVuc2lnbmVkIGxvbmcpICsgMV07CisgCisgICAgICAgaWYgKGFyZ2Mg IT0gNCkKKyAJeworLQkgIGludGVycC0+cmVzdWx0ID0gIndyb25nICMgYXJncyI7CisrCSAgVGNs X1NldFJlc3VsdChpbnRlcnAsICJ3cm9uZyAjIGFyZ3MiLCBUQ0xfU1RBVElDKTsKKyAJICByZXR1 cm4gVENMX0VSUk9SOworIAl9CisgCitAQCAtMTI1NSw3ICsxMjgzLDggQEAgaW50IGNtZF9oZnMo Q2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorICAgICAgIGlmIChkb196ZXJvKGFyZ3ZbMl0s IG5wYXJ0cywgJmxlbikgPT0gLTEpCisgCXJldHVybiBlcnJvcihpbnRlcnAsIDApOworIAorLSAg ICAgIHNwcmludGYoaW50ZXJwLT5yZXN1bHQsICIlbHUiLCBsZW4pOworKyAgICAgIHNwcmludGYo YnVmLCAiJWx1IiwgbGVuKTsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwgYnVmLCBUQ0xf Vk9MQVRJTEUpOworICAgICB9CisgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIm1rcGFydCIp ID09IDApCisgICAgIHsKK0BAIC0xMjYzLDcgKzEyOTIsNyBAQCBpbnQgY21kX2hmcyhDbGllbnRE YXRhIGNsaWVudERhdGEsIFRjbF9JCisgCisgICAgICAgaWYgKGFyZ2MgIT0gNCkKKyAJeworLQkg IGludGVycC0+cmVzdWx0ID0gIndyb25nICMgYXJncyI7CisrCSAgVGNsX1NldFJlc3VsdChpbnRl cnAsICJ3cm9uZyAjIGFyZ3MiLCBUQ0xfU1RBVElDKTsKKyAJICByZXR1cm4gVENMX0VSUk9SOwor IAl9CisgCitAQCAtMTI3NiwxMCArMTMwNSwxMSBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNs aWVudERhdGEsIFRjbF9JCisgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIm5wYXJ0cyIpID09 IDApCisgICAgIHsKKyAgICAgICBpbnQgbnBhcnRzOworKyAgICAgIGNoYXIgYnVmW0NIQVJMRU4o aW50KSArIDFdOworIAorICAgICAgIGlmIChhcmdjICE9IDMpCisgCXsKKy0JICBpbnRlcnAtPnJl c3VsdCA9ICJ3cm9uZyAjIGFyZ3MiOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAid3Jvbmcg IyBhcmdzIiwgVENMX1NUQVRJQyk7CisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorQEAg LTEyODcsNyArMTMxNyw4IEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNs X0kKKyAgICAgICBucGFydHMgPSBoZnNfbnBhcnRzKGFyZ3ZbMl0pOworICAgICAgIHN1aWRfZGlz YWJsZSgpOworIAorLSAgICAgIHNwcmludGYoaW50ZXJwLT5yZXN1bHQsICIlZCIsIG5wYXJ0cyk7 CisrICAgICAgc3ByaW50ZihidWYsICIlZCIsIG5wYXJ0cyk7CisrICAgICAgVGNsX1NldFJlc3Vs dChpbnRlcnAsIGJ1ZiwgVENMX1ZPTEFUSUxFKTsKKyAgICAgfQorICAgZWxzZSBpZiAoc3RyY21w KGFyZ3ZbMV0sICJmb3JtYXQiKSA9PSAwKQorICAgICB7CitAQCAtMTI5NSw3ICsxMzI2LDcgQEAg aW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAorICAgICAgIGlmIChh cmdjIDwgNSB8fCBhcmdjID4gNikKKyAJeworLQkgIGludGVycC0+cmVzdWx0ID0gIndyb25nICMg YXJncyI7CisrCSAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJ3cm9uZyAjIGFyZ3MiLCBUQ0xfU1RB VElDKTsKKyAJICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgCitAQCAtMTMxNiw3ICsxMzQ3LDcg QEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAkgICAgeworIAkg ICAgICBmcmVlKGxpc3R2KTsKKyAKKy0JICAgICAgaW50ZXJwLT5yZXN1bHQgPSAib3V0IG9mIG1l bW9yeSI7CisrCSAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAib3V0IG9mIG1lbW9yeSIsIFRD TF9TVEFUSUMpOworIAkgICAgICByZXR1cm4gVENMX0VSUk9SOworIAkgICAgfQorIAorQEAgLTEz NTYsNyArMTM4Nyw3IEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kK KyAKKyAgICAgICBpZiAoYXJnYyAhPSA1KQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAid3Jv bmcgIyBhcmdzIjsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRD TF9TVEFUSUMpOworIAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKK0BAIC0xMzY1LDggKzEz OTYsOCBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgKHN0 cmNtcChhcmd2WzNdLCAibGF0aW4xIikgIT0gMCAmJgorIAkgICBzdHJjbXAoYXJndlszXSwgIm1h Y3JvbWFuIikgIT0gMCkpCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJiYWQgYXJnIHRvIGNo YXJ0cmFuczogIgorLQkgICAgImNoYXJzZXRzIG11c3QgYmUgb25lIG9mIGxhdGluMSwgbWFjcm9t YW4iOworKwkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAiYmFkIGFyZyB0byBjaGFydHJhbnM6ICIK KysJICAgICJjaGFyc2V0cyBtdXN0IGJlIG9uZSBvZiBsYXRpbjEsIG1hY3JvbWFuIiwgVENMX1NU QVRJQyk7CisgCSAgcmV0dXJuIFRDTF9FUlJPUjsKKyAJfQorIAorQEAgLTEzODQsNyArMTQxNSw3 IEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAKKyAgICAgICBp ZiAocmVzdWx0ID09IDApCisgCXsKKy0JICBpbnRlcnAtPnJlc3VsdCA9ICJvdXQgb2YgbWVtb3J5 IjsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIm91dCBvZiBtZW1vcnkiLCBUQ0xfU1RBVElD KTsKKyAJICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgCitAQCAtMTM5NCw0MSArMTQyNSw0MSBA QCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgICAgIHsKKyAgICAg ICBpZiAoYXJnYyAhPSAyKQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAid3JvbmcgIyBhcmdz IjsKKysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRDTF9TVEFUSUMp OworIAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKKy0gICAgICBpbnRlcnAtPnJlc3VsdCA9 IChjaGFyICopIGhmc3V0aWxzX3ZlcnNpb247CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAs IChjaGFyICopIGhmc3V0aWxzX3ZlcnNpb24sIFRDTF9TVEFUSUMpOworICAgICB9CisgICBlbHNl IGlmIChzdHJjbXAoYXJndlsxXSwgImNvcHlyaWdodCIpID09IDApCisgICAgIHsKKyAgICAgICBp ZiAoYXJnYyAhPSAyKQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAid3JvbmcgIyBhcmdzIjsK KysJICBUY2xfU2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRDTF9TVEFUSUMpOwor IAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKKy0gICAgICBpbnRlcnAtPnJlc3VsdCA9IChj aGFyICopIGhmc3V0aWxzX2NvcHlyaWdodDsKKysgICAgICBUY2xfU2V0UmVzdWx0KGludGVycCwg KGNoYXIgKikgaGZzdXRpbHNfY29weXJpZ2h0LCBUQ0xfU1RBVElDKTsKKyAgICAgfQorICAgZWxz ZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJhdXRob3IiKSA9PSAwKQorICAgICB7CisgICAgICAgaWYg KGFyZ2MgIT0gMikKKyAJeworLQkgIGludGVycC0+cmVzdWx0ID0gIndyb25nICMgYXJncyI7Cisr CSAgVGNsX1NldFJlc3VsdChpbnRlcnAsICJ3cm9uZyAjIGFyZ3MiLCBUQ0xfU1RBVElDKTsKKyAJ ICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgCistICAgICAgaW50ZXJwLT5yZXN1bHQgPSAoY2hh ciAqKSBoZnN1dGlsc19hdXRob3I7CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsIChjaGFy ICopIGhmc3V0aWxzX2F1dGhvciwgVENMX1NUQVRJQyk7CisgICAgIH0KKyAgIGVsc2UgaWYgKHN0 cmNtcChhcmd2WzFdLCAibGljZW5zZSIpID09IDApCisgICAgIHsKKyAgICAgICBpZiAoYXJnYyAh PSAyKQorIAl7CistCSAgaW50ZXJwLT5yZXN1bHQgPSAid3JvbmcgIyBhcmdzIjsKKysJICBUY2xf U2V0UmVzdWx0KGludGVycCwgIndyb25nICMgYXJncyIsIFRDTF9TVEFUSUMpOworIAkgIHJldHVy biBUQ0xfRVJST1I7CisgCX0KKyAKKy0gICAgICBpbnRlcnAtPnJlc3VsdCA9IChjaGFyICopIGhm c3V0aWxzX2xpY2Vuc2U7CisrICAgICAgVGNsX1NldFJlc3VsdChpbnRlcnAsIChjaGFyICopIGhm c3V0aWxzX2xpY2Vuc2UsIFRDTF9TVEFUSUMpOworICAgICB9CisgICBlbHNlCisgICAgIHsKK0BA IC0xNDU1LDcgKzE0ODYsNyBAQCBpbnQgY21kX2V4aXQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBU Y2xfCisgCisgICBpZiAoYXJnYyA+IDIpCisgICAgIHsKKy0gICAgICBpbnRlcnAtPnJlc3VsdCA9 ICJ3cm9uZyAjIGFyZ3M6IHNob3VsZCBiZSBcImV4aXQgP3JldHVybkNvZGU/XCIiOworKyAgICAg IFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAid3JvbmcgIyBhcmdzOiBzaG91bGQgYmUgXCJleGl0ID9y ZXR1cm5Db2RlP1wiIiwgVENMX1NUQVRJQyk7CisgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKKyAg ICAgfQorIAorLS0tIGhmc3V0aWxzLTMuMi42L2hmc3dpc2guYwkxOTk4LTA0LTExIDA5OjI2OjU3 LjAwMDAwMDAwMCArMDEwMAorKysrIGhmc3V0aWxzLTMuMi42L2hmc3dpc2guYwkyMDI2LTA3LTIw IDE1OjQ0OjQwLjI4MTM3NDQxMCArMDEwMAorQEAgLTk0LDcgKzk0LDcgQEAgaW50IFRjbF9BcHBJ bml0KFRjbF9JbnRlcnAgKmludGVycCkKKyAKKyAgIGlmIChUY2xfRXZhbChpbnRlcnAsIHhoZnMp ID09IFRDTF9FUlJPUikKKyAgICAgeworLSAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVz XG4iLCBpbnRlcnAtPnJlc3VsdCk7CisrICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogJXNc biIsIFRjbF9HZXRTdHJpbmdSZXN1bHQoaW50ZXJwKSk7CisgICAgICAgZXhpdCgxKTsKKyAgICAg fQorIAoKZGlmZiAtLWdpdCBhL2hmc3V0aWxzLTMuMi42LXRjbDktcG9pbnRlci10eXBlcy5wYXRj aCBiL2hmc3V0aWxzLTMuMi42LXRjbDktcG9pbnRlci10eXBlcy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjNjMTUwCi0tLSAvZGV2L251bGwKKysrIGIvaGZzdXRp bHMtMy4yLjYtdGNsOS1wb2ludGVyLXR5cGVzLnBhdGNoCkBAIC0wLDAgKzEsMjgwIEBACitGaXgg cG9pbnRlci10eXBlIG1pc21hdGNoZXMgd2l0aCB0aGUgVGNsIDkgQVBJIGFuZCBhbGxvY2F0b3Ig cGFpcmluZworCitUaGlzIGNvbXBsZXRlcyB0aGUgVGNsIDkgcG9ydCBzbyB0aGUgcGFja2FnZSBu byBsb25nZXIgbmVlZHMKKy1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXM6CisKKy0gVGNs IDkncyBUY2xfQ21kUHJvYyB0YWtlcyAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSk7IGFk anVzdCB0aGUKKyAgY29tbWFuZCBwcm9jZWR1cmVzIGFuZCB0aGUgaGVscGVycyB0aGV5IGhhbmQg YXJndiB0by4gIGNzX2xhdGluMSgpLworICBjc19tYWNyb21hbigpIG9ubHkgcmVhZCB0aGVpciBp bnB1dCwgc28gdGhlaXIgYXJndW1lbnQgaXMgY29uc3RpZmllZAorICByYXRoZXIgdGhhbiBjYXN0 aW5nIGF3YXkgY29uc3QgYXQgdGhlIGNhbGwgc2l0ZXMuCistIFRjbF9TcGxpdExpc3QoKSBub3cg ZmlsbHMgaW4gYSBUY2xfU2l6ZSAoNjQtYml0KSBlbGVtZW50IGNvdW50IGFuZCBhCisgIGNvbnN0 IGNoYXIgKiogdmVjdG9yLiAgUGFzc2luZyB0aGUgb2xkIGludCAqIG1pc3JlYWRzL2Nsb2JiZXJz IHN0YWNrCisgIG1lbW9yeSBvbiA2NC1iaXQgYXJjaGl0ZWN0dXJlcywgc28gdGhpcyB3YXMgYSBs YXRlbnQgcnVudGltZSBidWcsIG5vdAorICBqdXN0IGEgd2FybmluZy4KKy0gVGNsX01lcmdlKCkg dGFrZXMgY29uc3QgY2hhciAqY29uc3QgKjsgY29uc3RpZnkgZGlyZW50c3RyKCkncyBhcmd2Cisg IGFuZCBjYXN0IGhmc19nbG9iKCkncyByZXN1bHQgdmVjdG9yLgorLSBQYWlyIGFsbG9jYXRvcnMg Y29ycmVjdGx5IGZvciBUY2wgOSwgd2hlcmUgVGNsX0ZyZWUoKSBpcyBubyBsb25nZXIKKyAgaW50 ZXJjaGFuZ2VhYmxlIHdpdGggZnJlZSgpOiBtZW1vcnkgb2J0YWluZWQgZnJvbSBUY2wgKFRjbF9T cGxpdExpc3QKKyAgdmVjdG9ycywgVGNsX01lcmdlIHN0cmluZ3MpIGlzIHJlbGVhc2VkIHdpdGgg VGNsX0ZyZWUoKTsgdGhlICJyZWFkIgorICBjb21tYW5kIHJlc3VsdCBpcyBhbGxvY2F0ZWQgd2l0 aCBUY2xfQXR0ZW1wdEFsbG9jKCkgdG8gbWF0Y2ggaXRzCisgIFRDTF9EWU5BTUlDIGZyZWU7IHRo ZSBtYWxsb2MoKWVkIGNoYXJ0cmFucyByZXN1bHQgaXMgY29waWVkIHdpdGgKKyAgVENMX1ZPTEFU SUxFIGFuZCBmcmVlZCB3aXRoIGZyZWUoKS4KKy0gVGNsX0dldEludCgpIGluICJoZnMgbWtwYXJ0 IiBuZWVkcyBhbiBpbnQsIG5vdCBhbiB1bnNpZ25lZCBpbnQuCisKKy0tLSBoZnN1dGlscy0zLjIu Ni90Y2xoZnMuYwkyMDI2LTA3LTIwIDE1OjUxOjUxLjMzOTQ0MzQ2OCArMDEwMAorKysrIGhmc3V0 aWxzLTMuMi42L3RjbGhmcy5jCTIwMjYtMDctMjAgMTU6NTg6MTMuNjk3OTc0NDIxICswMTAwCitA QCAtMTIwLDcgKzEyMCw3IEBAIGNoYXIgKmRpcmVudHN0cihoZnNkaXJlbnQgKmVudCkKKyAgICAg bWRkYXRlW0NIQVJMRU4obG9uZykgKyAxXSwKKyAgICAgYmtkYXRlW0NIQVJMRU4obG9uZykgKyAx XTsKKyAgIHJlZ2lzdGVyIGludCBhcmdjOworLSAgY2hhciAqYXJndlsyNF07CisrICBjb25zdCBj aGFyICphcmd2WzI0XTsKKyAgIGludCBsb2NrZWQsIGludmlzOworIAorICAgYXJnYyA9IDA7CitA QCAtMjI4LDcgKzIyOCw3IEBAIGludCBnZXRkaXIoVGNsX0ludGVycCAqaW50ZXJwLCB2b2xyZWYg KnYKKyAKKyAJICBUY2xfQXBwZW5kRWxlbWVudChpbnRlcnAsIHN0cik7CisgCistCSAgZnJlZShz dHIpOworKwkgIFRjbF9GcmVlKHN0cik7CisgCX0KKyAKKyAgICAgICBpZiAoaGZzX2Nsb3NlZGly KGRpcikgPT0gLTEpCitAQCAtMjQ1LDcgKzI0NSw3IEBAIGludCBnZXRkaXIoVGNsX0ludGVycCAq aW50ZXJwLCB2b2xyZWYgKnYKKyAKKyAgICAgICBUY2xfQXBwZW5kRWxlbWVudChpbnRlcnAsIHN0 cik7CisgCistICAgICAgZnJlZShzdHIpOworKyAgICAgIFRjbF9GcmVlKHN0cik7CisgICAgIH0K KyAKKyAgIHJldHVybiBUQ0xfT0s7CitAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgZmlsZV9kZWwo Q2xpZW50RGF0YSBjbGllbnREYXRhKQorICAqLworIHN0YXRpYworIGludCBmaWxlX2NtZChDbGll bnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwKKy0JICAgICBpbnQgYXJnYywg Y2hhciAqYXJndltdKQorKwkgICAgIGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCisgewor ICAgZmlsZXJlZiAqZnJlZiA9IGNsaWVudERhdGE7CisgICBoZnNmaWxlICpmaWxlID0gZnJlZi0+ ZmlsZTsKK0BAIC0zODMsNyArMzgzLDcgQEAgaW50IGZpbGVfY21kKENsaWVudERhdGEgY2xpZW50 RGF0YSwgVGNsXworIAkgICAgICByZXR1cm4gVENMX0VSUk9SOworIAkgICAgfQorIAorLQkgIG1l bSA9IEFMTE9DKGNoYXIsIGJ5dGVzICsgMSk7CisrCSAgbWVtID0gVGNsX0F0dGVtcHRBbGxvYyhi eXRlcyArIDEpOworIAkgIGlmIChtZW0gPT0gMCkKKyAJICAgIHsKKyAJICAgICAgVGNsX1NldFJl c3VsdChpbnRlcnAsICJvdXQgb2YgbWVtb3J5IiwgVENMX1NUQVRJQyk7CitAQCAtMzkzLDcgKzM5 Myw3IEBAIGludCBmaWxlX2NtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF8KKyAJICBieXRl cyA9IGhmc19yZWFkKGZpbGUsIG1lbSwgYnl0ZXMpOworIAkgIGlmIChieXRlcyA9PSAtMSkKKyAJ ICAgIHsKKy0JICAgICAgZnJlZShtZW0pOworKwkgICAgICBUY2xfRnJlZShtZW0pOworIAkgICAg ICByZXR1cm4gZXJyb3IoaW50ZXJwLCAwKTsKKyAJICAgIH0KKyAKK0BAIC01NTgsNyArNTU4LDcg QEAgaW50IGRvX2NvcHluYXRpdmUoVGNsX0ludGVycCAqaW50ZXJwLCBoZgorICAqIERFU0NSSVBU SU9OOgljb3B5IGFuIEhGUyBmaWxlIHRvIGFub3RoZXIgSEZTIHZvbHVtZQorICAqLworIHN0YXRp YworLWludCBjb3B5bmF0aXZlKFRjbF9JbnRlcnAgKmludGVycCwgdm9scmVmICpzcmN2cmVmLCBj aGFyICphcmd2W10pCisraW50IGNvcHluYXRpdmUoVGNsX0ludGVycCAqaW50ZXJwLCB2b2xyZWYg KnNyY3ZyZWYsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKKyB7CisgICB2b2xyZWYgKmRzdHZyZWY7Cisg ICBUY2xfQ21kSW5mbyBpbmZvOworQEAgLTY2Niw3ICs2NjYsNyBAQCBpbnQgY29weW5hdGl2ZShU Y2xfSW50ZXJwICppbnRlcnAsIHZvbHJlCisgICogREVTQ1JJUFRJT046CWNvcHkgYSBVTklYIGZp bGUgaW50byBhbiBIRlMgdm9sdW1lCisgICovCisgc3RhdGljCistaW50IGNvcHlpbihUY2xfSW50 ZXJwICppbnRlcnAsIGhmc3ZvbCAqdm9sLCBjaGFyICphcmd2W10pCisraW50IGNvcHlpbihUY2xf SW50ZXJwICppbnRlcnAsIGhmc3ZvbCAqdm9sLCBjb25zdCBjaGFyICphcmd2W10pCisgeworICAg Y3BpZnVuYyBjb3B5ZmlsZTsKKyAKK0BAIC03MDEsNyArNzAxLDcgQEAgaW50IGNvcHlpbihUY2xf SW50ZXJwICppbnRlcnAsIGhmc3ZvbCAqdgorICAqIERFU0NSSVBUSU9OOgljb3B5IGFuIEhGUyBm aWxlIG91dCB0byBhIFVOSVggZmlsZQorICAqLworIHN0YXRpYworLWludCBjb3B5b3V0KFRjbF9J bnRlcnAgKmludGVycCwgaGZzdm9sICp2b2wsIGNoYXIgKmFyZ3ZbXSkKKytpbnQgY29weW91dChU Y2xfSW50ZXJwICppbnRlcnAsIGhmc3ZvbCAqdm9sLCBjb25zdCBjaGFyICphcmd2W10pCisgewor ICAgY3BvZnVuYyBjb3B5ZmlsZTsKKyAKK0BAIC04MjQsNyArODI0LDcgQEAgdm9pZCB2b2xfZGVs KENsaWVudERhdGEgY2xpZW50RGF0YSkKKyAgKi8KKyBzdGF0aWMKKyBpbnQgdm9sX2NtZChDbGll bnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwKKy0JICAgIGludCBhcmdjLCBj aGFyICphcmd2W10pCisrCSAgICBpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQorIHsKKyAg IHZvbHJlZiAqdnJlZiA9IGNsaWVudERhdGE7CisgICBoZnN2b2wgKnZvbCAgPSB2cmVmLT52b2w7 CitAQCAtODk3LDggKzg5Nyw4IEBAIGludCB2b2xfY21kKENsaWVudERhdGEgY2xpZW50RGF0YSwg VGNsX0kKKyAJeworIAkgIGNoYXIgbmFtZVtIRlNfTUFYX0ZMRU4gKyAxXTsKKyAJICBsb25nIGlk OworLQkgIGludCBsaXN0YywgaTsKKy0JICBjaGFyICoqbGlzdHY7CisrCSAgVGNsX1NpemUgbGlz dGMsIGk7CisrCSAgY29uc3QgY2hhciAqKmxpc3R2OworIAkgIGNoYXIgKnJlc3VsdDsKKyAKKyAJ ICBpZCA9IHZyZWYtPmN3ZDsKK0BAIC05MTcsNyArOTE3LDcgQEAgaW50IHZvbF9jbWQoQ2xpZW50 RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAorIAkgIGZvciAoaSA9IDA7IGkgPCBsaXN0YyAvIDI7 ICsraSkKKyAJICAgIHsKKy0JICAgICAgY2hhciAqdG1wOworKwkgICAgICBjb25zdCBjaGFyICp0 bXA7CisgCisgCSAgICAgIHRtcCA9IGxpc3R2W2ldOworIAkgICAgICBsaXN0dltpXSA9IGxpc3R2 W2xpc3RjIC0gMSAtIGldOworQEAgLTkyNSw3ICs5MjUsNyBAQCBpbnQgdm9sX2NtZChDbGllbnRE YXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgICB9CisgCisgCSAgcmVzdWx0ID0gVGNsX01lcmdl KGxpc3RjLCBsaXN0dik7CistCSAgZnJlZShsaXN0dik7CisrCSAgVGNsX0ZyZWUoKHZvaWQgKikg bGlzdHYpOworIAorIAkgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCByZXN1bHQsIFRDTF9EWU5BTUlD KTsKKyAJfQorQEAgLTEwNTEsOCArMTA1MSwxMCBAQCBpbnQgdm9sX2NtZChDbGllbnREYXRhIGNs aWVudERhdGEsIFRjbF9JCisgCX0KKyAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgImds b2IiKSA9PSAwKQorIAl7CistCSAgaW50IGxpc3RjLCBmYXJnYzsKKy0JICBjaGFyICoqbGlzdHYs ICoqZmFyZ3YsICpyZXN1bHQ7CisrCSAgVGNsX1NpemUgbGlzdGM7CisrCSAgaW50IGZhcmdjOwor KwkgIGNvbnN0IGNoYXIgKipsaXN0djsKKysJICBjaGFyICoqZmFyZ3YsICpyZXN1bHQ7CisgCisg CSAgaWYgKGhmc19zZXRjd2Qodm9sLCB2cmVmLT5jd2QpID09IC0xKQorIAkgICAgcmV0dXJuIGVy cm9yKGludGVycCwgMCk7CitAQCAtMTA2MCw4ICsxMDYyLDggQEAgaW50IHZvbF9jbWQoQ2xpZW50 RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAkgIGlmIChUY2xfU3BsaXRMaXN0KGludGVycCwgYXJn dlsyXSwgJmxpc3RjLCAmbGlzdHYpICE9IFRDTF9PSykKKyAJICAgIHJldHVybiBUQ0xfRVJST1I7 CisgCistCSAgZmFyZ3YgPSBoZnNfZ2xvYih2b2wsIGxpc3RjLCBsaXN0diwgJmZhcmdjKTsKKy0J ICBmcmVlKGxpc3R2KTsKKysJICBmYXJndiA9IGhmc19nbG9iKHZvbCwgbGlzdGMsIChjaGFyICoq KSBsaXN0diwgJmZhcmdjKTsKKysJICBUY2xfRnJlZSgodm9pZCAqKSBsaXN0dik7CisgCisgCSAg aWYgKGZhcmd2ID09IDApCisgCSAgICB7CitAQCAtMTA2OSw3ICsxMDcxLDcgQEAgaW50IHZvbF9j bWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSQorIAkgICAgICByZXR1cm4gVENMX0VSUk9S OworIAkgICAgfQorIAorLQkgIHJlc3VsdCA9IFRjbF9NZXJnZShmYXJnYywgZmFyZ3YpOworKwkg IHJlc3VsdCA9IFRjbF9NZXJnZShmYXJnYywgKGNvbnN0IGNoYXIgKiopIGZhcmd2KTsKKyAJICBm cmVlKGZhcmd2KTsKKyAKKyAJICBUY2xfU2V0UmVzdWx0KGludGVycCwgcmVzdWx0LCBUQ0xfRFlO QU1JQyk7CitAQCAtMTE4MCw3ICsxMTgyLDcgQEAgaW50IHZvbF9jbWQoQ2xpZW50RGF0YSBjbGll bnREYXRhLCBUY2xfSQorICAqLworIHN0YXRpYworIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xp ZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLAorLQkgICAgaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKKysJICAgIGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCisgeworICAgc3RhdGljIGlu dCBpZCA9IDA7CisgCitAQCAtMTI4OCw3ICsxMjkwLDcgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0 YSBjbGllbnREYXRhLCBUY2xfSQorICAgICB9CisgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwg Im1rcGFydCIpID09IDApCisgICAgIHsKKy0gICAgICB1bnNpZ25lZCBpbnQgbGVuOworKyAgICAg IGludCBsZW47CisgCisgICAgICAgaWYgKGFyZ2MgIT0gNCkKKyAJeworQEAgLTEzMzUsOCArMTMz Nyw4IEBAIGludCBjbWRfaGZzKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0kKKyAKKyAgICAg ICBpZiAoYXJnYyA9PSA2KQorIAl7CistCSAgaW50IGxpc3RjLCBpOworLQkgIGNoYXIgKipsaXN0 djsKKysJICBUY2xfU2l6ZSBsaXN0YywgaTsKKysJICBjb25zdCBjaGFyICoqbGlzdHY7CisgCSAg dW5zaWduZWQgbG9uZyAqYmFkYmxvY2tzOworIAorIAkgIGlmIChUY2xfU3BsaXRMaXN0KGludGVy cCwgYXJndls1XSwgJmxpc3RjLCAmbGlzdHYpICE9IFRDTF9PSykKK0BAIC0xMzQ1LDcgKzEzNDcs NyBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JCisgCSAgYmFkYmxv Y2tzID0gQUxMT0NYKHVuc2lnbmVkIGxvbmcsIGxpc3RjKTsKKyAJICBpZiAobGlzdGMgJiYgYmFk YmxvY2tzID09IDApCisgCSAgICB7CistCSAgICAgIGZyZWUobGlzdHYpOworKwkgICAgICBUY2xf RnJlZSgodm9pZCAqKSBsaXN0dik7CisgCisgCSAgICAgIFRjbF9TZXRSZXN1bHQoaW50ZXJwLCAi b3V0IG9mIG1lbW9yeSIsIFRDTF9TVEFUSUMpOworIAkgICAgICByZXR1cm4gVENMX0VSUk9SOwor QEAgLTEzNTYsMTMgKzEzNTgsMTMgQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0YSBjbGllbnREYXRh LCBUY2xfSQorIAkgICAgICBpZiAoVGNsX0V4cHJMb25nKGludGVycCwgbGlzdHZbaV0sCisgCQkJ ICAgICAgIChsb25nICopICZiYWRibG9ja3NbaV0pICE9IFRDTF9PSykKKyAJCXsKKy0JCSAgZnJl ZShsaXN0dik7CisrCQkgIFRjbF9GcmVlKCh2b2lkICopIGxpc3R2KTsKKyAJCSAgRlJFRShiYWRi bG9ja3MpOworIAkJICByZXR1cm4gVENMX0VSUk9SOworIAkJfQorIAkgICAgfQorIAorLQkgIGZy ZWUobGlzdHYpOworKwkgIFRjbF9GcmVlKCh2b2lkICopIGxpc3R2KTsKKyAKKyAJICBpZiAoZG9f Zm9ybWF0KGFyZ3ZbMl0sIHBhcnRubywgMCwgYXJndls0XSwgbGlzdGMsIGJhZGJsb2NrcykgPT0g LTEpCisgCSAgICB7CitAQCAtMTQxOSw3ICsxNDIxLDggQEAgaW50IGNtZF9oZnMoQ2xpZW50RGF0 YSBjbGllbnREYXRhLCBUY2xfSQorIAkgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKKy0gICAg ICBUY2xfU2V0UmVzdWx0KGludGVycCwgcmVzdWx0LCBUQ0xfRFlOQU1JQyk7CisrICAgICAgVGNs X1NldFJlc3VsdChpbnRlcnAsIHJlc3VsdCwgVENMX1ZPTEFUSUxFKTsKKysgICAgICBmcmVlKHJl c3VsdCk7CisgICAgIH0KKyAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAidmVyc2lvbiIpID09 IDApCisgICAgIHsKK0BAIC0xNDgwLDcgKzE0ODMsNyBAQCBpbnQgY21kX2hmcyhDbGllbnREYXRh IGNsaWVudERhdGEsIFRjbF9JCisgICovCisgc3RhdGljCisgaW50IGNtZF9leGl0KENsaWVudERh dGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLAorLQkgICAgIGludCBhcmdjLCBjaGFy ICphcmd2W10pCisrCSAgICAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKKyB7CisgICBp bnQgc3RhdHVzID0gMDsKKyAKKy0tLSBoZnN1dGlscy0zLjIuNi9jaGFyc2V0LmgJMTk5OC0wNC0x MSAwOToyNjo1My4wMDAwMDAwMDAgKzAxMDAKKysrKyBoZnN1dGlscy0zLjIuNi9jaGFyc2V0LmgJ MjAyNi0wNy0yMCAxNTo1ODoxMy42OTc5NzQ0MjEgKzAxMDAKK0BAIC0yMyw1ICsyMyw1IEBAIHR5 cGVkZWYgdW5zaWduZWQgc2hvcnQgVUNTMjsKKyAKKyBVQ1MyICpjc191bmljb2RlKGNoYXIgKiwg aW50ICopOworIAorLWNoYXIgKmNzX2xhdGluMShjaGFyICosIGludCAqKTsKKy1jaGFyICpjc19t YWNyb21hbihjaGFyICosIGludCAqKTsKKytjaGFyICpjc19sYXRpbjEoY29uc3QgY2hhciAqLCBp bnQgKik7CisrY2hhciAqY3NfbWFjcm9tYW4oY29uc3QgY2hhciAqLCBpbnQgKik7CistLS0gaGZz dXRpbHMtMy4yLjYvY2hhcnNldC5jCTE5OTgtMTEtMDIgMjI6MDg6MjMuMDAwMDAwMDAwICswMDAw CisrKysgaGZzdXRpbHMtMy4yLjYvY2hhcnNldC5jCTIwMjYtMDctMjAgMTU6NTg6MTMuNjk3OTc0 NDIxICswMTAwCitAQCAtMTUxLDcgKzE1MSw3IEBAIFVDUzIgKmNzX3VuaWNvZGUoY2hhciAqbXN0 ciwgaW50ICpsZW5wdHIKKyAgKiBOQU1FOgljaGFyc2V0LT5sYXRpbjEoKQorICAqIERFU0NSSVBU SU9OOglyZXR1cm4gYSBMYXRpbi0xIChJU08gODg1OS0xKSBzdHJpbmcgZm9yIE1hY09TIFN0YW5k YXJkIFJvbWFuCisgICovCistY2hhciAqY3NfbGF0aW4xKGNoYXIgKm1zdHIsIGludCAqbGVucHRy KQorK2NoYXIgKmNzX2xhdGluMShjb25zdCBjaGFyICptc3RyLCBpbnQgKmxlbnB0cikKKyB7Cisg ICBpbnQgaWxlbiwgb2xlbiwgaTsKKyAgIGNoYXIgKmxhdGluMSwgKnB0cjsKK0BAIC0yMjksNyAr MjI5LDcgQEAgdm9pZCBta3RhYmxlKHZvaWQpCisgICogTkFNRToJY2hhcnNldC0+bWFjcm9tYW4o KQorICAqIERFU0NSSVBUSU9OOglyZXR1cm4gYSBNYWNPUyBTdGFuZGFyZCBSb21hbiBzdHJpbmcg Zm9yIExhdGluLTEgKElTTyA4ODU5LTEpCisgICovCistY2hhciAqY3NfbWFjcm9tYW4oY2hhciAq bHN0ciwgaW50ICpsZW5wdHIpCisrY2hhciAqY3NfbWFjcm9tYW4oY29uc3QgY2hhciAqbHN0ciwg aW50ICpsZW5wdHIpCisgeworICAgaW50IGlsZW4sIG9sZW4sIGk7CisgICBjaGFyICptYWNyb21h biwgKnB0cjsKCmRpZmYgLS1naXQgYS9oZnN1dGlscy5zcGVjIGIvaGZzdXRpbHMuc3BlYwppbmRl eCBkODQyMzAzLi40ZjdjYmJlIDEwMDY0NAotLS0gYS9oZnN1dGlscy5zcGVjCisrKyBiL2hmc3V0 aWxzLnNwZWMKQEAgLTEsNyArMSw3IEBACiBTdW1tYXJ5OiBUb29scyBmb3IgcmVhZGluZyBhbmQg d3JpdGluZyBNYWNpbnRvc2ggSEZTIHZvbHVtZXMKIE5hbWU6IGhmc3V0aWxzCiBWZXJzaW9uOiAz LjIuNgotUmVsZWFzZTogNTYlez9kaXN0fQorUmVsZWFzZTogNTclez9kaXN0fQogIyBBdXRvbWF0 aWNhbGx5IGNvbnZlcnRlZCBmcm9tIG9sZCBmb3JtYXQ6IEdQTHYyKyAtIHJldmlldyBpcyBoaWdo bHkgcmVjb21tZW5kZWQuCiBMaWNlbnNlOiBHUEwtMi4wLW9yLWxhdGVyCiBTb3VyY2U6IGZ0cDov L2Z0cC5tYXJzLm9yZy9wdWIvaGZzLyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKQEAgLTksNiAr OSwxMiBAQCBQYXRjaDA6IGhmc3V0aWxzLTMuMi42LWVycm5vLnBhdGNoCiBQYXRjaDE6IGhmc3V0 aWxzLTMuMi42LWxhcmdlZmlsZS5wYXRjaAogUGF0Y2gyOiBoZnN1dGlscy0zLjIuNi1jb25maWd1 cmUtYzk5LnBhdGNoCiBQYXRjaDM6IGhmc3V0aWxzLTMuMi42LWluY2x1ZGUtYzk5LnBhdGNoCisj IFRjbCA5IG1hZGUgVGNsX0ludGVycCBvcGFxdWU7IHVzZSBUY2xfU2V0UmVzdWx0KCkvVGNsX0dl dFN0cmluZ1Jlc3VsdCgpCisjIGluc3RlYWQgb2YgcG9raW5nIGludGVycC0+cmVzdWx0IGRpcmVj dGx5CitQYXRjaDQ6IGhmc3V0aWxzLTMuMi42LXRjbDktaW50ZXJwLXJlc3VsdC5wYXRjaAorIyBU Y2wgOSB0eXBlIGZpeGVzIChUY2xfU2l6ZSwgY29uc3QgYXJndikgYW5kIFRjbF9GcmVlL2ZyZWUg cGFpcmluZywgc28gd2UKKyMgY2FuIGRyb3AgLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBl cworUGF0Y2g1OiBoZnN1dGlscy0zLjIuNi10Y2w5LXBvaW50ZXItdHlwZXMucGF0Y2gKIFVSTDog aHR0cDovL3d3dy5tYXJzLm9yZy9ob21lL3JvYi9wcm9qL2hmcy8KIEJ1aWxkUmVxdWlyZXM6IGxp YlhmdC1kZXZlbCB0Y2wtZGV2ZWwgdGstZGV2ZWwgZ2NjCiBCdWlsZFJlcXVpcmVzOiBtYWtlCkBA IC00NCw3ICs1MCw3IEBAIGhmc3V0aWxzLWRldmVsIHBhY2thZ2UuCiAlYXV0b3NldHVwIC1wMQog CiAlYnVpbGQKLUNGTEFHUz0iJXtvcHRmbGFnc30gLURfRklMRV9PRkZTRVRfQklUUz02NCAtRFVT RV9JTlRFUlBfUkVTVUxUIC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMgLVduby1kZXBy ZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tcG9p bnRlci1zaWduIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgLVduby1pbnQtdG8tcG9pbnRl ci1jYXN0IgorQ0ZMQUdTPSIle29wdGZsYWdzfSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1Xbm8t ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQtYnV0 LXNldC12YXJpYWJsZSAtV25vLWludC10by1wb2ludGVyLWNhc3QiCiAle2NvbmZpZ3VyZX0gLS13 aXRoLXRjbD0le19saWJkaXJ9ICAtLXdpdGgtdGs9JXtfbGliZGlyfQogbWFrZQogbWFrZSBoZnNj ay9oZnNjawpAQCAtMTExLDYgKzExNywxMCBAQCBpbnN0YWxsIC1wIC1tIDA3NTUgaGZzY2svaGZz Y2sgJFJQTV9CVUlMRF9ST09ULyV7X2JpbmRpcn0KICV7X2luY2x1ZGVkaXJ9L3JzcmMuaAogCiAl Y2hhbmdlbG9nCisqIE1vbiBKdWwgMjAgMjAyNiBNaWNoZWwgTGluZCA8c2FsaW1tYUBmZWRvcmFw cm9qZWN0Lm9yZz4gLSAzLjIuNi01NworLSBQb3J0IHRjbGhmcy5jIGFuZCBoZnN3aXNoLmMgdG8g dGhlIFRjbCA5IHJlc3VsdCBBUEkKKy0gRml4IHBvaW50ZXItdHlwZSBtaXNtYXRjaGVzIHdpdGgg dGhlIFRjbCA5IEFQSSBhbmQgYWxsb2NhdG9yIHBhaXJpbmcKKwogKiBUaHUgSnVsIDE2IDIwMjYg RmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAz LjIuNi01NgogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVk b3JhXzQ1X01hc3NfUmVidWlsZAogCg==