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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to: gdb-7.0.1-25.fc12 Date: Thu, 23 Jul 2026 18:29:19 GMT Message-ID: <178483135901.1.12264193400949968435.rpms-gdb-0911f375d9eb@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 0911f375d9ebd20a4f159df241a3febc18203a37 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMDkxMWYzNzVkOWViZDIwYTRmMTU5ZGYyNDFhM2ZlYmMx ODIwM2EzNwpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVjdC5v cmc+CkRhdGUgICA6IDIwMTAtMDEtMTJUMjI6MTU6NTcrMDA6MDAKU3RhdHMgIDogKzg5NjMvLTI1 MzMgaW4gNDggZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9y cG1zL2dkYi9jLzA5MTFmMzc1ZDllYmQyMGE0ZjE1OWRmMjQxYTNmZWJjMTgyMDNhMzc/YnJhbmNo PWZpeC1kdXAtcGF0Y2gKCkxvZzoKUmViYXNlIHRvOiBnZGItNy4wLjEtMjUuZmMxMgoKLS0tCmRp ZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2c2lnbm9yZQppbmRleCBlZTYxYzk5Li5jNWM4MDQ2 IDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisrKyBiLy5jdnNpZ25vcmUKQEAgLTEsMiArMSwyIEBA Ci1saWJzdGRjKystdjMtcHl0aG9uLXIxNTE3OTgudGFyLnh6Ci1nZGItNi44LjkxLjIwMDkwOTMw LnRhci5iejIKK2dkYi03LjAuMS50YXIuYnoyCitsaWJzdGRjKystdjMtcHl0aG9uLXIxNTE3OTgu dGFyLmJ6MgoKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggOTUwMDAzYy4u NWRmZTU1OCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTEsNSArMSw1 IEBACiAjIE1ha2VmaWxlIGZvciBzb3VyY2UgcnBtOiBnZGIKLSMgJElkOiBNYWtlZmlsZSx2IDEu MyAyMDA3LzEwLzE1IDE4OjQ2OjQ1IG5vdHRpbmcgRXhwICQKKyMgJElkOiBNYWtlZmlsZSx2IDEu NCAyMDA5LzExLzI2IDAxOjUzOjU5IG5vdHRpbmcgRXhwICQKIE5BTUUgOj0gZ2RiCiBTUEVDRklM RSA9ICQoZmlyc3R3b3JkICQod2lsZGNhcmQgKi5zcGVjKSkKIAoKZGlmZiAtLWdpdCBhL2dkYi02 LjMtYnoxODIxMTYtZXhlYy1mcm9tLXB0aHJlYWQucGF0Y2ggYi9nZGItNi4zLWJ6MTgyMTE2LWV4 ZWMtZnJvbS1wdGhyZWFkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjdm NThjLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtYnoxODIxMTYtZXhlYy1mcm9tLXB0aHJlYWQucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1odHRwczovL2J1Z3ppbGxhLnJlZGhh dC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4MjExNgotCi0KLUluZGV4OiBnZGItNi41 L2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjUub3JpZy9nZGIv bGludXgtdGhyZWFkLWRiLmMJMjAwNi0wOC0yNCAwMjo1NToyNC4wMDAwMDAwMDAgLTAzMDAKLSsr KyBnZGItNi41L2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDA2LTA4LTI0IDAyOjU2OjE2LjAwMDAw MDAwMCAtMDMwMAotQEAgLTkzOSw2ICs5MzksMTUgQEAgdGhyZWFkX2RiX3dhaXQgKHB0aWRfdCBw dGlkLCBzdHJ1Y3QgdGFyZwotICAgICAgIHx8IG91cnN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJ VEtJTkRfU0lHTkFMTEVEKQotICAgICByZXR1cm4gcGlkX3RvX3B0aWQgKC0xKTsKLSAKLSsgIGlm IChvdXJzdGF0dXMtPmtpbmQgPT0gVEFSR0VUX1dBSVRLSU5EX0VYRUNEKQotKyAgICB7Ci0rICAg ICAgcmVtb3ZlX3RocmVhZF9ldmVudF9icmVha3BvaW50cyAoKTsKLSsgICAgICB1bnB1c2hfdGFy Z2V0ICgmdGhyZWFkX2RiX29wcyk7Ci0rICAgICAgdXNpbmdfdGhyZWFkX2RiID0gMDsKLSsKLSsg ICAgICByZXR1cm4gcGlkX3RvX3B0aWQgKEdFVF9QSUQgKHB0aWQpKTsKLSsgICAgfQotKwotICAg aWYgKG91cnN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfU1RPUFBFRAotICAgICAgICYm IChvdXJzdGF0dXMtPnZhbHVlLnNpZyA9PSBUQVJHRVRfU0lHTkFMX1RSQVAKLSAgICAgICAgICAg fHwgb3Vyc3RhdHVzLT52YWx1ZS5zaWcgPT0gVEFSR0VUX1NJR05BTF9JTEwpKQoKZGlmZiAtLWdp dCBhL2dkYi02LjMtaWE2NC1jb3JlZmlsZS1maXgtMjAwNTAxMjcucGF0Y2ggYi9nZGItNi4zLWlh NjQtY29yZWZpbGUtZml4LTIwMDUwMTI3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA0NWE4NGNjLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtaWE2NC1jb3JlZmlsZS1maXgtMjAw NTAxMjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0yMDA1LTAxLTI1ICBK ZWZmIEpvaG5zdG9uICA8ampvaG5zdG5AcmVkaGF0LmNvbT4KLQotCSogaWE2NC10ZGVwLmMgKGdl dHVud2luZF90YWJsZSk6IENhbGwgdGhlIGxvdy1sZXZlbCB4ZmVyCi0JdW53aW5kIHRhYmxlIHN5 c2NhbGwgdG8gc3VwcG9ydCBiYWNrdHJhY2luZyBmcm9tIHN5c2NhbGxzIGluCi0JYSBjb3JlZmls ZS4KLQotSW5kZXg6IGdkYi02LjUvZ2RiL2lhNjQtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTYuNS5vcmlnL2dkYi9pYTY0LXRkZXAuYwkyMDA2LTA0LTE4IDE2OjIwOjA2LjAwMDAwMDAwMCAt MDMwMAotKysrIGdkYi02LjUvZ2RiL2lhNjQtdGRlcC5jCTIwMDYtMDctMDcgMDI6MTg6NDAuMDAw MDAwMDAwIC0wMzAwCi1AQCAtMjQ3MCw4ICsyNDcwLDE3IEBAIGdldHVud2luZF90YWJsZSAodm9p ZCAqYnVmLCBzaXplX3QgbGVuKQotICAgICAgd2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWxsIGJhY2sg dG8gdGhlIHJ1bm5pbmcga2VybmVsJ3MgdGFibGUsIHRoZW4KLSAgICAgIHdlIHNob3VsZCBmaW5k IGEgd2F5IHRvIG92ZXJyaWRlIHRoZSBjb3JlZmlsZSBsYXllcidzCi0gICAgICB4ZmVyX3BhcnRp YWwgbWV0aG9kLiAgKi8KLSsjaWYgMAotICAgeCA9IHRhcmdldF9yZWFkX3BhcnRpYWwgKCZjdXJy ZW50X3RhcmdldCwgVEFSR0VUX09CSkVDVF9VTldJTkRfVEFCTEUsIE5VTEwsCi0gCQkJICAgYnVm LCAwLCBsZW4pOwotKyNlbmRpZgotKyAgLyogRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29s dXRpb24gdG8gYmFja3RyYWNpbmcgc3lzY2FsbHMgaW4gY29yZWZpbGVzLgotKyAgICAgICAgICAg IFRvIGRvIHRoaXMgcHJvcGVybHksIHRoZSBBVVhWIHNlY3Rpb24gc2hvdWxkIGJlIHVzZWQuICBU aGlzCi0rCSAgICBmaXggd2lsbCB3b3JrIGFzIGxvbmcgYXMgdGhlIGtlcm5lbCB1c2VkIHRvIGdl bmVyYXRlIHRoZSBjb3JlZmlsZQotKwkgICAgaXMgZXF1aXZhbGVudCB0byB0aGUga2VybmVsIHVz ZWQgdG8gZGVidWcgdGhlIGNvcmVmaWxlLiAgKi8KLSsgIHggPSBpYTY0X2xpbnV4X3hmZXJfdW53 aW5kX3RhYmxlICgmY3VycmVudF90YXJnZXQsCi0rCQkgIAkJICAgIFRBUkdFVF9PQkpFQ1RfVU5X SU5EX1RBQkxFLCBOVUxMLAotKwkJCSAgIAkgICAgYnVmLCBOVUxMLCAwLCBsZW4pOwotIAotICAg cmV0dXJuIChpbnQpeDsKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1pYTY0LWluZm8tZnJhbWUt Zml4LTIwMDUwNzI1LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LWluZm8tZnJhbWUtZml4LTIwMDUwNzI1 LnBhdGNoCmluZGV4IDNiMmJkOWEuLjlkNjEzZmQgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtaWE2NC1p bmZvLWZyYW1lLWZpeC0yMDA1MDcyNS5wYXRjaAorKysgYi9nZGItNi4zLWlhNjQtaW5mby1mcmFt ZS1maXgtMjAwNTA3MjUucGF0Y2gKQEAgLTQxLDcgKzQxLDcgQEAgdGVzdHN1aXRlOgogKwogLS0t IGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ3RyYW1wLmV4cC5maXgJMjAw NS0wNy0yNSAxNjo0Mjo1MC4wMDAwMDAwMDAgLTA0MDAKICsrKyBnZGItNi4zL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvaWE2NC1zaWd0cmFtcC5leHAJMjAwNS0wNy0yNSAxNjo0MjowMS4wMDAwMDAw MDAgLTA0MDAKLUBAIC0wLDAgKzEsNjYgQEAKK0BAIC0wLDAgKzEsNzMgQEAKICsjICAgQ29weXJp Z2h0IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQpAQCAtOTAsNyArOTAsMTAgQEAgdGVzdHN1aXRlOgogK30KICsKICtnZGJfZXhpdAorK3NldCBt YXRjaF9tYXhfb2xkIFttYXRjaF9tYXhdCisrbWF0Y2hfbWF4IC1kIDEwMDAwMDAKICtnZGJfc3Rh cnQKKyttYXRjaF9tYXggLWQgJG1hdGNoX21heF9vbGQKICtnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKICtnZGJfbG9hZCAke2JpbmZpbGV9CiArCkBAIC0xMDYsNSArMTA5LDkg QEAgdGVzdHN1aXRlOgogK2dkYl90ZXN0ICJjb250aW51ZSIgIkJyZWFrcG9pbnQuKnguKiIgImNv bnRpbnVlIHRvIHgiCiArCiArZ2RiX3Rlc3QgImYgMSIgIi4qc2lnbmFsIGhhbmRsZXIgY2FsbGVk LioiICJmcmFtZSAxIgotK2dkYl90ZXN0ICJpbmZvIGZyYW1lIiAiU3RhY2sgbGV2ZWwgMS4qcDYz IGF0IC4qIiAiaW5mbyBzaWd0cmFtcCBmcmFtZSIKLSsgCisrCisrIyBnZGItNy4wKyBubyBsb25n ZXIgcHJpbnRzIHRoZSBwc2V1ZG8gcmVnaXN0ZXJzIGFzIHRoZXkgYXJlIGNvbXB1dGVkLgorKyMg ZnJhbWVfaW5mbyBzYXlzOiAvKiBGb3IgbW9tZW50LCBvbmx5IGRpc3BsYXkgcmVnaXN0ZXJzIHRo YXQgd2VyZSBzYXZlZCBvbiB0aGUKKysjICAgICAgICAgICAgICAgICAgICAgc3RhY2suICAqLwor K2dkYl90ZXN0ICJzZXQgZGVidWcgZnJhbWUgMSIKKytnZGJfdGVzdCAiaW5mbyBmcmFtZSIgIlN0 YWNrIGxldmVsIDEsIC4qZnJhbWVfdW53aW5kX3JlZ2lzdGVyX3ZhbHVlIFxcKGZyYW1lPTEscmVn bnVtPTc1MFxcKHA2M1xcKSxcW15cclxuXF0qXHJcblxbXlxyXG5cXSotPiBjb21wdXRlZCBieXRl cz0uKiIgImluZm8gc2lndHJhbXAgZnJhbWUiCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1pYTY0LXNp Z3RyYW1wLWZyYW1lLTIwMDUwNzA4LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LXNpZ3RyYW1wLWZyYW1l LTIwMDUwNzA4LnBhdGNoCmluZGV4IDE4NjJmOTcuLmM2YTc3ODkgMTAwNjQ0Ci0tLSBhL2dkYi02 LjMtaWE2NC1zaWd0cmFtcC1mcmFtZS0yMDA1MDcwOC5wYXRjaAorKysgYi9nZGItNi4zLWlhNjQt c2lndHJhbXAtZnJhbWUtMjAwNTA3MDgucGF0Y2gKQEAgLTI5LDcgKzI5LDcgQEAgSW5kZXg6IGdk Yi02LjguNTAuMjAwODExMjgvZ2RiL2lhNjQtdGRlcC5jCiArICAgICAgVUxPTkdFU1QgdW5hdE5f dmFsOwogKyAgICAgIFVMT05HRVNUIHVuYXQ7CiArICAgICAgcmVhZF9tZW1vcnkgKGNhY2hlLT5z YXZlZF9yZWdzW0lBNjRfVU5BVF9SRUdOVU1dLCAoY2hhciAqKSAmdW5hdCwKLSsJCSAgIHJlZ2lz dGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwgSUE2NF9VTkFUX1JFR05VTSkpOworKwkJICAgcmVn aXN0ZXJfc2l6ZSAodGFyZ2V0X2dkYmFyY2gsIElBNjRfVU5BVF9SRUdOVU0pKTsKICsgICAgICB1 bmF0Tl92YWwgPSAodW5hdCAmICgxTEwgPDwgKHJlZ251bSAtIElBNjRfTkFUMF9SRUdOVU0pKSkg IT0gMDsKICsgICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9jb25zdGFudCAodGhpc19mcmFt ZSwgcmVnbnVtLCB1bmF0Tl92YWwpOwogKyAgICB9CkBAIC00NSw5ICs0NSw5IEBAIEluZGV4OiBn ZGItNi44LjUwLjIwMDgxMTI4L2dkYi9pYTY0LXRkZXAuYwogKyAgICAgIENPUkVfQUREUiBncl9h ZGRyID0gMCwgbmF0X2FkZHIgPSAwOwogKwogKyAgICAgIHJlYWRfbWVtb3J5IChjYWNoZS0+c2F2 ZWRfcmVnc1tJQTY0X0JTUF9SRUdOVU1dLCAoY2hhciAqKSAmYnNwLAotKwkJICAgcmVnaXN0ZXJf c2l6ZSAoY3VycmVudF9nZGJhcmNoLCBJQTY0X0JTUF9SRUdOVU0pKTsKKysJCSAgIHJlZ2lzdGVy X3NpemUgKHRhcmdldF9nZGJhcmNoLCBJQTY0X0JTUF9SRUdOVU0pKTsKICsgICAgICByZWFkX21l bW9yeSAoY2FjaGUtPnNhdmVkX3JlZ3NbSUE2NF9DRk1fUkVHTlVNXSwgKGNoYXIgKikgJmNmbSwK LSsJCSAgIHJlZ2lzdGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwgSUE2NF9DRk1fUkVHTlVNKSk7 CisrCQkgICByZWdpc3Rlcl9zaXplICh0YXJnZXRfZ2RiYXJjaCwgSUE2NF9DRk1fUkVHTlVNKSk7 CiArCiArICAgICAgLyogVGhlIGJzcCBwb2ludHMgYXQgdGhlIGVuZCBvZiB0aGUgcmVnaXN0ZXIg ZnJhbWUgc28gd2UKICsJIHN1YnRyYWN0IHRoZSBzaXplIG9mIGZyYW1lIGZyb20gaXQgdG8gZ2V0 IHN0YXJ0IG9mIHJlZ2lzdGVyIGZyYW1lLiAgKi8KQEAgLTcxLDEwICs3MSwxMCBAQCBJbmRleDog Z2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvaWE2NC10ZGVwLmMKICsJICAgICAgbmF0X2FkZHIgPSBj YWNoZS0+c2F2ZWRfcmVnc1tJQTY0X1JOQVRfUkVHTlVNXTsKICsJICAgICAgaWYgKG5hdF9hZGRy ICE9IDApCiArCQlyZWFkX21lbW9yeSAobmF0X2FkZHIsIChjaGFyICopICZuYXRfY29sbGVjdGlv biwKLSsJCQkgICAgIHJlZ2lzdGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwgSUE2NF9STkFUX1JF R05VTSkpOworKwkJCSAgICAgcmVnaXN0ZXJfc2l6ZSAodGFyZ2V0X2dkYmFyY2gsIElBNjRfUk5B VF9SRUdOVU0pKTsKICsJICAgIH0KICsJICBlbHNlCi0rCSAgICBuYXRfY29sbGVjdGlvbiA9IHJl YWRfbWVtb3J5X2ludGVnZXIgKG5hdF9hZGRyLCA4KTsKKysJICAgIG5hdF9jb2xsZWN0aW9uID0g cmVhZF9tZW1vcnlfaW50ZWdlciAobmF0X2FkZHIsIDgsIEJGRF9FTkRJQU5fTElUVExFKTsKICsJ ICBpZiAobmF0X2FkZHIgIT0gMCkKICsJICAgIHsKICsJICAgICAgbmF0X2JpdCA9IChncl9hZGRy ID4+IDMpICYgMHgzZjsKQEAgLTk3LDkgKzk3LDkgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODEx MjgvZ2RiL2lhNjQtdGRlcC5jCiArICAgICAgVUxPTkdFU1QgYm9mOwogKwogKyAgICAgIHJlYWRf bWVtb3J5IChjYWNoZS0+c2F2ZWRfcmVnc1tJQTY0X0JTUF9SRUdOVU1dLCAoY2hhciAqKSAmYnNw LAotKwkJICAgcmVnaXN0ZXJfc2l6ZSAoY3VycmVudF9nZGJhcmNoLCBJQTY0X0JTUF9SRUdOVU0p KTsKKysJCSAgIHJlZ2lzdGVyX3NpemUgKHRhcmdldF9nZGJhcmNoLCBJQTY0X0JTUF9SRUdOVU0p KTsKICsgICAgICByZWFkX21lbW9yeSAoY2FjaGUtPnNhdmVkX3JlZ3NbSUE2NF9DRk1fUkVHTlVN XSwgKGNoYXIgKikgJmNmbSwKLSsJCSAgIHJlZ2lzdGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwg SUE2NF9DRk1fUkVHTlVNKSk7CisrCQkgICByZWdpc3Rlcl9zaXplICh0YXJnZXRfZ2RiYXJjaCwg SUE2NF9DRk1fUkVHTlVNKSk7CiArCiArICAgICAgLyogVGhlIGJzcCBwb2ludHMgYXQgdGhlIGVu ZCBvZiB0aGUgcmVnaXN0ZXIgZnJhbWUgc28gd2UKICsJIHN1YnRyYWN0IHRoZSBzaXplIG9mIGZy YW1lIGZyb20gaXQgdG8gZ2V0IGJlZ2lubmluZyBvZiBmcmFtZS4gICovCkBAIC0xMzMsOSArMTMz LDkgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL2lhNjQtdGRlcC5jCiArCSAgVUxP TkdFU1QgY2ZtOwogKwkgIFVMT05HRVNUIHByTl92YWw7CiArCSAgcmVhZF9tZW1vcnkgKHByX2Fk ZHIsIChjaGFyICopICZwciwKLSsJCSAgICAgICByZWdpc3Rlcl9zaXplIChjdXJyZW50X2dkYmFy Y2gsIElBNjRfUFJfUkVHTlVNKSk7CisrCQkgICAgICAgcmVnaXN0ZXJfc2l6ZSAodGFyZ2V0X2dk YmFyY2gsIElBNjRfUFJfUkVHTlVNKSk7CiArCSAgcmVhZF9tZW1vcnkgKGNhY2hlLT5zYXZlZF9y ZWdzW0lBNjRfQ0ZNX1JFR05VTV0sIChjaGFyICopICZjZm0sCi0rCQkgICAgICAgcmVnaXN0ZXJf c2l6ZSAoY3VycmVudF9nZGJhcmNoLCBJQTY0X0NGTV9SRUdOVU0pKTsKKysJCSAgICAgICByZWdp c3Rlcl9zaXplICh0YXJnZXRfZ2RiYXJjaCwgSUE2NF9DRk1fUkVHTlVNKSk7CiArCiArCSAgLyog R2V0IHRoZSByZWdpc3RlciByZW5hbWUgYmFzZSBmb3IgdGhpcyBmcmFtZSBhbmQgYWRqdXN0IHRo ZQogKwkgICAqIHJlZ2lzdGVyIG5hbWUgdG8gdGFrZSByb3RhdGlvbiBpbnRvIGFjY291bnQuICov CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1ub250aHJlYWRlZC13cC0yMDA1MDExNy5wYXRjaCBiL2dk Yi02LjMtbm9udGhyZWFkZWQtd3AtMjAwNTAxMTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDZmNDk4NjQuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuMy1ub250aHJlYWRlZC13cC0y MDA1MDExNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1bYmFzZV0KLQot MjAwNy0xMC0xMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot Ci0JKiBsaW51eC1uYXQuYyAoaXRlcmF0ZV9vdmVyX2x3cHMpOiBGaXhlZCBtaXNzaW5nIExXUCBp bml0aWFsaXphdGlvbiBmb3IKLQljdXJyZW50IElORkVSSU9SX1BUSUQuCi0KLTIwMDctMTAtMTMg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJh c2UvZm9sbG93LWNoaWxkLmV4cCwgZ2RiLmJhc2UvZm9sbG93LWNoaWxkLmM6IE5ldyBmaWxlcy4K LQotMjAwNy0xMC0xNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotCi0JUG9ydCB0byBHREItNi43LgotCi0yMDA4LTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdEQi02LjhwcmUuCi0KLTIwMDgt MDgtMjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVJl bW92ZSB0aGUgZml4IGFzIGNhdXNpbmcgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgZm9yCi0JZ2RiLmJh c2UvY2hlY2twb2ludC5leHAgYW5kIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQgZm9yCi0JZ2RiLmJh c2UvZm9sbG93LWNoaWxkLmV4cCAuCi0KLUluZGV4OiBnZGItNi44Y3ZzMjAwODAyMTkvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9mb2xsb3ctY2hpbGQuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02LjhjdnMyMDA4 MDIxOS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvbGxvdy1jaGlsZC5jCTIwMDgtMDItMjIgMDg6 MTQ6MDQuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDI5IEBACi0rLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAw NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rICAgUGxlYXNlIGVtYWlsIGFueSBi dWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rICAgYnVn LWdkYkBwcmVwLmFpLm1pdC5lZHUgICovCi0rCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKwotK2lu dCBtYWluKCkKLSt7Ci0rICBmb3JrICgpOwotKyAgc2xlZXAgKDYwKTsKLSsgIHJldHVybiAwOwot K30KLUluZGV4OiBnZGItNi44Y3ZzMjAwODAyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb2xs b3ctY2hpbGQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTYuOGN2czIwMDgwMjE5L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZm9sbG93LWNoaWxkLmV4cAkyMDA4LTAyLTIyIDA4OjE0OjE3LjAwMDAwMDAwMCAr MDEwMAotQEAgLTAsMCArMSw1NSBAQAotKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCi0rCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZl bAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0rc2V0IHRlc3RmaWxl IGZvbGxvdy1jaGlsZAotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1 Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dy YW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEdldCB0aGluZ3Mgc3RhcnRlZC4KLSsKLStn ZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIEZvciBDIHByb2dyYW1zLCAic3RhcnQiIHNo b3VsZCBzdG9wIGluIG1haW4oKS4KLSsKLStnZGJfdGVzdCAic2V0IGZvbGxvdy1mb3JrLW1vZGUg Y2hpbGQiICIiCi0rc2V0IHRlc3QgInN0YXJ0ZWQiCi0rIyBHREJfUlVOX0NNRCBhbHJlYWR5IGNo ZWNrcyBmb3IgYFN0YXJ0aW5nIHByb2dyYW06Jy4KLStnZGJfcnVuX2NtZAotK3NsZWVwIDUKLStz ZW5kX2dkYiAiXDAwMyIKLStzZXQgdGVzdCAiYnJlYWsiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIg JHRlc3QgewotKyAgICAtcmUgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0lOVC4qJGdkYl9w cm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJcXFxbTmV3IHByb2Nl c3MgXFswLTlcXStcXFxdIiB7Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30KCmRpZmYgLS1naXQg YS9nZGItNi4zLXBpZS0yMDA1MDExMC5wYXRjaCBiL2dkYi02LjMtcGllLTIwMDUwMTEwLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGZkN2Y3Li4wMDAwMDAwCi0tLSBhL2dk Yi02LjMtcGllLTIwMDUwMTEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM1MCArMCwwIEBA Ci0yMDA3LTExLTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQlQb3J0IHRvIEdEQi02LjcuMS4KLQotMjAwNy0xMS0wMiAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUG9ydCB0byBwb3N0LUdEQi02LjcuMSBtdWx0 aS1QQyBicmVha3BvaW50cy4KLQotMjAwNy0xMS0wOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBzb2xpYi1zdnI0LmMgKHN2cjRfY3VycmVudF9zb3Mp OiBGaXggc2VnZmF1bHQgb24gTlVMTCBFWEVDX0JGRC4KLQotMjAwOC0wMi0yNCAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUG9ydCB0byBHREItNi44cHJl LgotCi0yMDA4LTAyLTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQlQb3J0IHRvIGdkYi02LjcuNTAuMjAwODAyMjcuCi0KLTIwMDgtMDYtMDEgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBjcmFzaCBvbiBh IHdhdGNocG9pbnQgdXBkYXRlIG9uIGFuIGluZmVyaW9yIHN0b3AuCi0KLTIwMDgtMDktMDEgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBzY2FuX2R5 bnRhZygpIGZvciBiaW5hcmllcyBwcm92aWRlZCBieSB2YWxncmluZCAoQlogNDYwMzE5KS4KLQot SW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2FtZDY0LXRkZXAuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIwMDktMDktMjUg MTA6MjU6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvYW1k NjQtdGRlcC5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMzYsNiAr MzYsNyBAQAotICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJyZWdzZXQuaCIKLSAj aW5jbHVkZSAic3ltZmlsZS5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0gCi0gI2luY2x1 ZGUgImdkYl9hc3NlcnQuaCIKLSAKLUBAIC0xNTkxLDE4ICsxNTkyLDMxIEBAIGFtZDY0X2FuYWx5 emVfc3RhY2tfYWxpZ24gKENPUkVfQUREUiBwYywKLSAgICBBbnkgZnVuY3Rpb24gdGhhdCBkb2Vz bid0IHN0YXJ0IHdpdGggdGhpcyBzZXF1ZW5jZSB3aWxsIGJlIGFzc3VtZWQKLSAgICB0byBoYXZl IG5vIHByb2xvZ3VlIGFuZCB0aHVzIG5vIHZhbGlkIGZyYW1lIHBvaW50ZXIgaW4gJXJicC4gICov Ci0gCi0tc3RhdGljIENPUkVfQUREUgotLWFtZDY0X2FuYWx5emVfcHJvbG9ndWUgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotLQkJCUNPUkVfQUREUiBwYywgQ09SRV9BRERSIGN1cnJlbnRfcGMs Ci0tCQkJc3RydWN0IGFtZDY0X2ZyYW1lX2NhY2hlICpjYWNoZSkKLStzdHJ1Y3QgYW1kNjRfYW5h bHl6ZV9wcm9sb2d1ZV9kYXRhCi0rICB7Ci0rICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwot KyAgICBDT1JFX0FERFIgcGMsIGN1cnJlbnRfcGM7Ci0rICAgIHN0cnVjdCBhbWQ2NF9mcmFtZV9j YWNoZSAqY2FjaGU7Ci0rICAgIENPUkVfQUREUiByZXR2YWw7Ci0rICB9OwotKwotK3N0YXRpYyBp bnQKLSthbWQ2NF9hbmFseXplX3Byb2xvZ3VlXzEgKHZvaWQgKmRhdGFfcG9pbnRlcikKLSB7Ci0r ICBzdHJ1Y3QgYW1kNjRfYW5hbHl6ZV9wcm9sb2d1ZV9kYXRhICpkYXRhID0gZGF0YV9wb2ludGVy OwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBkYXRhLT5nZGJhcmNoOwotKyAgQ09SRV9B RERSIHBjID0gZGF0YS0+cGMsIGN1cnJlbnRfcGMgPSBkYXRhLT5jdXJyZW50X3BjOwotKyAgc3Ry dWN0IGFtZDY0X2ZyYW1lX2NhY2hlICpjYWNoZSA9IGRhdGEtPmNhY2hlOwotICAgZW51bSBiZmRf ZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwotICAgc3Rh dGljIGdkYl9ieXRlIHByb3RvWzNdID0geyAweDQ4LCAweDg5LCAweGU1IH07IC8qIG1vdnEgJXJz cCwgJXJicCAqLwotICAgZ2RiX2J5dGUgYnVmWzNdOwotICAgZ2RiX2J5dGUgb3A7Ci0gCi0gICBp ZiAoY3VycmVudF9wYyA8PSBwYykKLS0gICAgcmV0dXJuIGN1cnJlbnRfcGM7Ci0rICAgIHsKLSsg ICAgICBkYXRhLT5yZXR2YWwgPSBjdXJyZW50X3BjOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9 Ci0gCi0gICBwYyA9IGFtZDY0X2FuYWx5emVfc3RhY2tfYWxpZ24gKHBjLCBjdXJyZW50X3BjLCBj YWNoZSk7Ci0gCi1AQCAtMTYxNywxOCArMTYzMSw1OSBAQCBhbWQ2NF9hbmFseXplX3Byb2xvZ3Vl IChzdHJ1Y3QgZ2RiYXJjaCAqCi0gCi0gICAgICAgLyogSWYgdGhhdCdzIGFsbCwgcmV0dXJuIG5v dy4gICovCi0gICAgICAgaWYgKGN1cnJlbnRfcGMgPD0gcGMgKyAxKQotLSAgICAgICAgcmV0dXJu IGN1cnJlbnRfcGM7Ci0rICAgICAgICB7Ci0rCSAgZGF0YS0+cmV0dmFsID0gY3VycmVudF9wYzsK LSsJICByZXR1cm4gMTsKLSsgICAgICAgIH0KLSAKLSAgICAgICAvKiBDaGVjayBmb3IgYG1vdnEg JXJzcCwgJXJicCcuICAqLwotICAgICAgIHJlYWRfbWVtb3J5IChwYyArIDEsIGJ1ZiwgMyk7Ci0g ICAgICAgaWYgKG1lbWNtcCAoYnVmLCBwcm90bywgMykgIT0gMCkKLS0JcmV0dXJuIHBjICsgMTsK LSsJewotKwkgIGRhdGEtPnJldHZhbCA9IHBjICsgMTsKLSsJICByZXR1cm4gMTsKLSsJfQotIAot ICAgICAgIC8qIE9LLCB3ZSBhY3R1YWxseSBoYXZlIGEgZnJhbWUuICAqLwotICAgICAgIGNhY2hl LT5mcmFtZWxlc3NfcCA9IDA7Ci0tICAgICAgcmV0dXJuIHBjICsgNDsKLSsgICAgICBkYXRhLT5y ZXR2YWwgPSBwYyArIDQ7Ci0rICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLSAKLSsgIGRhdGEtPnJl dHZhbCA9IHBjOwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIENhdGNoIG1lbW9yeSByZWFkIGVy cm9ycyBhbmQgcmV0dXJuIGp1c3QgUEMgaW4gc3VjaCBjYXNlLgotKyAgIEl0IG9jY3VycyB2ZXJ5 IGVhcmx5IG9uIGVuYWJsZV9icmVhay0+bmV3X3N5bWZpbGVfb2JqZmlsZS0+Ci0rICAgLT5icmVh a3BvaW50X3JlX3NldC0+ZGVjb2RlX2xpbmVfMS0+ZGVjb2RlX3ZhcmlhYmxlXzEtPgotKyAgIC0+ ZmluZF9mdW5jdGlvbl9zdGFydF9zYWwgICovCi0rCi0rc3RhdGljIENPUkVfQUREUgotK2FtZDY0 X2FuYWx5emVfcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCUNPUkVfQURE UiBwYywgQ09SRV9BRERSIGN1cnJlbnRfcGMsCi0rCQkJc3RydWN0IGFtZDY0X2ZyYW1lX2NhY2hl ICpjYWNoZSkKLSt7Ci0rICBpbnQgc3RhdHVzOwotKyAgc3RydWN0IGFtZDY0X2FuYWx5emVfcHJv bG9ndWVfZGF0YSBkYXRhOwotKyAgc3RydWN0IHVpX2ZpbGUgKnNhdmVkX2dkYl9zdGRlcnI7Ci0r Ci0rICAvKiBTdXBwcmVzcyBlcnJvciBtZXNzYWdlcy4gICovCi0rICBzYXZlZF9nZGJfc3RkZXJy ID0gZ2RiX3N0ZGVycjsKLSsgIGdkYl9zdGRlcnIgPSB1aV9maWxlX25ldyAoKTsKLSsKLSsgIGRh dGEuZ2RiYXJjaCA9IGdkYmFyY2g7Ci0rICBkYXRhLnBjID0gcGM7Ci0rICBkYXRhLmN1cnJlbnRf cGMgPSBjdXJyZW50X3BjOwotKyAgZGF0YS5jYWNoZSA9IGNhY2hlOwotKyAgc3RhdHVzID0gY2F0 Y2hfZXJyb3JzIChhbWQ2NF9hbmFseXplX3Byb2xvZ3VlXzEsICZkYXRhLCAiIiwgUkVUVVJOX01B U0tfQUxMKTsKLSsKLSsgIC8qIFN0b3Agc3VwcHJlc3NpbmcgZXJyb3IgbWVzc2FnZXMuICAqLwot KyAgdWlfZmlsZV9kZWxldGUgKGdkYl9zdGRlcnIpOwotKyAgZ2RiX3N0ZGVyciA9IHNhdmVkX2dk Yl9zdGRlcnI7Ci0rCi0rICBpZiAoc3RhdHVzKQotKyAgICByZXR1cm4gZGF0YS5yZXR2YWw7Ci0g ICByZXR1cm4gcGM7Ci0gfQotIAotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2F1eHYu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvYXV4di5jCTIw MDktMDctMDIgMTk6MjU6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDky NS9nZGIvYXV4di5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtNzgs NyArNzgsNyBAQCBwcm9jZnNfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICAg UmV0dXJuIDEgaWYgYW4gZW50cnkgd2FzIHJlYWQgaW50byAqVFlQRVAgYW5kICpWQUxQLiAgKi8K LSBzdGF0aWMgaW50Ci0gZGVmYXVsdF9hdXh2X3BhcnNlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3Bz LCBnZGJfYnl0ZSAqKnJlYWRwdHIsCi0tCQkgICBnZGJfYnl0ZSAqZW5kcHRyLCBDT1JFX0FERFIg KnR5cGVwLCBDT1JFX0FERFIgKnZhbHApCi0rCQkgICBnZGJfYnl0ZSAqZW5kcHRyLCBVTE9OR0VT VCAqdHlwZXAsIENPUkVfQUREUiAqdmFscCkKLSB7Ci0gICBjb25zdCBpbnQgc2l6ZW9mX2F1eHZf ZmllbGQgPSBnZGJhcmNoX3B0cl9iaXQgKHRhcmdldF9nZGJhcmNoKQotIAkJCQkvIFRBUkdFVF9D SEFSX0JJVDsKLUBAIC0xMDYsNyArMTA2LDcgQEAgZGVmYXVsdF9hdXh2X3BhcnNlIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqbwotICAgIFJldHVybiAxIGlmIGFuIGVudHJ5IHdhcyByZWFkIGludG8gKlRZ UEVQIGFuZCAqVkFMUC4gICovCi0gaW50Ci0gdGFyZ2V0X2F1eHZfcGFyc2UgKHN0cnVjdCB0YXJn ZXRfb3BzICpvcHMsIGdkYl9ieXRlICoqcmVhZHB0ciwKLS0gICAgICAgICAgICAgICAgICBnZGJf Ynl0ZSAqZW5kcHRyLCBDT1JFX0FERFIgKnR5cGVwLCBDT1JFX0FERFIgKnZhbHApCi0rICAgICAg ICAgICAgICAgICAgZ2RiX2J5dGUgKmVuZHB0ciwgVUxPTkdFU1QgKnR5cGVwLCBDT1JFX0FERFIg KnZhbHApCi0gewotICAgc3RydWN0IHRhcmdldF9vcHMgKnQ7Ci0gICBmb3IgKHQgPSBvcHM7IHQg IT0gTlVMTDsgdCA9IHQtPmJlbmVhdGgpCi1AQCAtMTIxLDkgKzEyMSwxMCBAQCB0YXJnZXRfYXV4 dl9wYXJzZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wCi0gICAgYW4gZXJyb3IgZ2V0dGluZyB0aGUg aW5mb3JtYXRpb24uICBPbiBzdWNjZXNzLCByZXR1cm4gMSBhZnRlcgotICAgIHN0b3JpbmcgdGhl IGVudHJ5J3MgdmFsdWUgZmllbGQgaW4gKlZBTFAuICAqLwotIGludAotLXRhcmdldF9hdXh2X3Nl YXJjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSIG1hdGNoLCBDT1JFX0FERFIg KnZhbHApCi0rdGFyZ2V0X2F1eHZfc2VhcmNoIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBVTE9O R0VTVCBtYXRjaCwgQ09SRV9BRERSICp2YWxwKQotIHsKLS0gIENPUkVfQUREUiB0eXBlLCB2YWw7 Ci0rICBDT1JFX0FERFIgdmFsOwotKyAgVUxPTkdFU1QgYXRfdHlwZTsKLSAgIGdkYl9ieXRlICpk YXRhOwotICAgTE9OR0VTVCBuID0gdGFyZ2V0X3JlYWRfYWxsb2MgKG9wcywgVEFSR0VUX09CSkVD VF9BVVhWLCBOVUxMLCAmZGF0YSk7Ci0gICBnZGJfYnl0ZSAqcHRyID0gZGF0YTsKLUBAIC0xMzMs MTAgKzEzNCwxMCBAQCB0YXJnZXRfYXV4dl9zZWFyY2ggKHN0cnVjdCB0YXJnZXRfb3BzICpvCi0g ICAgIHJldHVybiBuOwotIAotICAgd2hpbGUgKDEpCi0tICAgIHN3aXRjaCAodGFyZ2V0X2F1eHZf cGFyc2UgKG9wcywgJnB0ciwgZGF0YSArIG4sICZ0eXBlLCAmdmFsKSkKLSsgICAgc3dpdGNoICh0 YXJnZXRfYXV4dl9wYXJzZSAob3BzLCAmcHRyLCBkYXRhICsgbiwgJmF0X3R5cGUsICZ2YWwpKQot ICAgICAgIHsKLSAgICAgICBjYXNlIDE6CQkJLyogSGVyZSdzIGFuIGVudHJ5LCBjaGVjayBpdC4g ICovCi0tCWlmICh0eXBlID09IG1hdGNoKQotKwlpZiAoYXRfdHlwZSA9PSBtYXRjaCkKLSAJICB7 Ci0gCSAgICB4ZnJlZSAoZGF0YSk7Ci0gCSAgICAqdmFscCA9IHZhbDsKLUBAIC0xNTksNyArMTYw LDggQEAgdGFyZ2V0X2F1eHZfc2VhcmNoIChzdHJ1Y3QgdGFyZ2V0X29wcyAqbwotIGludAotIGZw cmludF90YXJnZXRfYXV4diAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMpCi0gewotLSAgQ09SRV9BRERSIHR5cGUsIHZhbDsKLSsgIENPUkVfQUREUiB2YWw7Ci0r ICBVTE9OR0VTVCBhdF90eXBlOwotICAgZ2RiX2J5dGUgKmRhdGE7Ci0gICBMT05HRVNUIGxlbiA9 IHRhcmdldF9yZWFkX2FsbG9jIChvcHMsIFRBUkdFVF9PQkpFQ1RfQVVYViwgTlVMTCwKLSAJCQkJ ICAgJmRhdGEpOwotQEAgLTE2OSwxMyArMTcxLDEzIEBAIGZwcmludF90YXJnZXRfYXV4diAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUKLSAgIGlmIChsZW4gPD0gMCkKLSAgICAgcmV0dXJuIGxlbjsKLSAK LS0gIHdoaWxlICh0YXJnZXRfYXV4dl9wYXJzZSAob3BzLCAmcHRyLCBkYXRhICsgbGVuLCAmdHlw ZSwgJnZhbCkgPiAwKQotKyAgd2hpbGUgKHRhcmdldF9hdXh2X3BhcnNlIChvcHMsICZwdHIsIGRh dGEgKyBsZW4sICZhdF90eXBlLCAmdmFsKSA+IDApCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFy ICpuYW1lID0gIj8/PyI7Ci0gICAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24gPSAiIjsKLSAg ICAgICBlbnVtIHsgZGVjLCBoZXgsIHN0ciB9IGZsYXZvciA9IGhleDsKLSAKLS0gICAgICBzd2l0 Y2ggKHR5cGUpCi0rICAgICAgc3dpdGNoIChhdF90eXBlKQotIAl7Ci0gI2RlZmluZSBUQUcodGFn LCB0ZXh0LCBraW5kKSBcCi0gCWNhc2UgdGFnOiBuYW1lID0gI3RhZzsgZGVzY3JpcHRpb24gPSB0 ZXh0OyBmbGF2b3IgPSBraW5kOyBicmVhawotQEAgLTIzMSw3ICsyMzMsNyBAQCBmcHJpbnRfdGFy Z2V0X2F1eHYgKHN0cnVjdCB1aV9maWxlICpmaWxlCi0gCX0KLSAKLSAgICAgICBmcHJpbnRmX2Zp bHRlcmVkIChmaWxlLCAiJS00cyAlLTIwcyAlLTMwcyAiLAotLQkJCXBsb25nZXN0ICh0eXBlKSwg bmFtZSwgZGVzY3JpcHRpb24pOwotKwkJCXBsb25nZXN0IChhdF90eXBlKSwgbmFtZSwgZGVzY3Jp cHRpb24pOwotICAgICAgIHN3aXRjaCAoZmxhdm9yKQotIAl7Ci0gCWNhc2UgZGVjOgotQEAgLTI1 Myw3ICsyNTUsNyBAQCBmcHJpbnRfdGFyZ2V0X2F1eHYgKHN0cnVjdCB1aV9maWxlICpmaWxlCi0g CSAgYnJlYWs7Ci0gCX0KLSAgICAgICArK2VudHM7Ci0tICAgICAgaWYgKHR5cGUgPT0gQVRfTlVM TCkKLSsgICAgICBpZiAoYXRfdHlwZSA9PSBBVF9OVUxMKQotIAlicmVhazsKLSAgICAgfQotIAot SW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2F1eHYuaAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvYXV4di5oCTIwMDktMDYtMDcgMjE6MDc6MDguMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvYXV4di5oCTIwMDktMDkt MjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMzEsMTQgKzMxLDE0IEBACi0gICAgUmV0 dXJuIDEgaWYgYW4gZW50cnkgd2FzIHJlYWQgaW50byAqVFlQRVAgYW5kICpWQUxQLiAgKi8KLSBl eHRlcm4gaW50IHRhcmdldF9hdXh2X3BhcnNlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotIAkJ CSAgICAgIGdkYl9ieXRlICoqcmVhZHB0ciwgZ2RiX2J5dGUgKmVuZHB0ciwKLS0JCQkgICAgICBD T1JFX0FERFIgKnR5cGVwLCBDT1JFX0FERFIgKnZhbHApOwotKwkJCSAgICAgIFVMT05HRVNUICp0 eXBlcCwgQ09SRV9BRERSICp2YWxwKTsKLSAKLSAvKiBFeHRyYWN0IHRoZSBhdXhpbGlhcnkgdmVj dG9yIGVudHJ5IHdpdGggYV90eXBlIG1hdGNoaW5nIE1BVENILgotICAgIFJldHVybiB6ZXJvIGlm IG5vIHN1Y2ggZW50cnkgd2FzIGZvdW5kLCBvciAtMSBpZiB0aGVyZSB3YXMKLSAgICBhbiBlcnJv ciBnZXR0aW5nIHRoZSBpbmZvcm1hdGlvbi4gIE9uIHN1Y2Nlc3MsIHJldHVybiAxIGFmdGVyCi0g ICAgc3RvcmluZyB0aGUgZW50cnkncyB2YWx1ZSBmaWVsZCBpbiAqVkFMUC4gICovCi0gZXh0ZXJu IGludCB0YXJnZXRfYXV4dl9zZWFyY2ggKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCi0tCQkJICAg ICAgIENPUkVfQUREUiBtYXRjaCwgQ09SRV9BRERSICp2YWxwKTsKLSsJCQkgICAgICAgVUxPTkdF U1QgbWF0Y2gsIENPUkVfQUREUiAqdmFscCk7Ci0gCi0gLyogUHJpbnQgdGhlIGNvbnRlbnRzIG9m IHRoZSB0YXJnZXQncyBBVVhWIG9uIHRoZSBzcGVjaWZpZWQgZmlsZS4gKi8KLSBleHRlcm4gaW50 IGZwcmludF90YXJnZXRfYXV4diAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0cnVjdCB0YXJnZXRf b3BzICpvcHMpOwotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2R3YXJmMnJlYWQuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvZHdhcmYycmVhZC5j CTIwMDktMDktMjUgMTA6MjU6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5 MDkyNS9nZGIvZHdhcmYycmVhZC5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTcxNyw3ICsxNzE3LDcgQEAgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChzdHJ1Y3Qgb2Jq ZmlsZSAqbwotICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2Jq ZmlsZS0+ZWhfZnJhbWUpOwotICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJm Ml9wZXJfb2JqZmlsZS0+ZnJhbWUpOwotIAotLSAgaWYgKG1haW5saW5lCi0rICBpZiAoKG1haW5s aW5lID09IDEpCi0gICAgICAgfHwgKG9iamZpbGUtPmdsb2JhbF9wc3ltYm9scy5zaXplID09IDAK LSAJICAmJiBvYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMuc2l6ZSA9PSAwKSkKLSAgICAgewotSW5k ZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2VsZnJlYWQuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvZWxmcmVhZC5jCTIwMDktMDktMjUgMTA6MjU6Mzgu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvZWxmcmVhZC5jCTIw MDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtNjgxLDcgKzY4MSw3IEBAIGVs Zl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKLSAgIC8qIElmIHdlIGFyZSBy ZWluaXRpYWxpemluZywgb3IgaWYgd2UgaGF2ZSBuZXZlciBsb2FkZWQgc3ltcyB5ZXQsCi0gICAg ICBzZXQgdGFibGUgdG8gZW1wdHkuICBNQUlOTElORSBpcyBjbGVhcmVkIHNvIHRoYXQgKl9yZWFk X3BzeW10YWIKLSAgICAgIGZ1bmN0aW9ucyBkbyBub3QgYWxsIGFsc28gcmUtaW5pdGlhbGl6ZSB0 aGUgcHN5bWJvbCB0YWJsZS4gKi8KLS0gIGlmIChtYWlubGluZSkKLSsgIGlmIChtYWlubGluZSA9 PSAxKQotICAgICB7Ci0gICAgICAgaW5pdF9wc3ltYm9sX2xpc3QgKG9iamZpbGUsIDApOwotICAg ICAgIG1haW5saW5lID0gMDsKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9pbmZydW4u YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvaW5mcnVuLmMJ MjAwOS0wOS0yNSAxMDoyNTozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkw OTI1L2dkYi9pbmZydW4uYwkyMDA5LTA5LTI1IDEwOjI1OjQ1LjAwMDAwMDAwMCArMDIwMAotQEAg LTM2NTksNiArMzY1OSwxMCBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VN RSAoCi0gI2VuZGlmCi0gCSAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgpOwotIAotKwkgIC8q IEZvciBQSUUgZXhlY3V0YWJsZXMsIHdlIGRvbnQgcmVhbGx5IGtub3cgd2hlcmUgdGhlCi0rCSAg ICAgYnJlYWtwb2ludHMgYXJlIGdvaW5nIHRvIGJlIHVudGlsIHdlIHN0YXJ0IHVwIHRoZSBpbmZl cmlvci4gICovCi0rCSAgZW5hYmxlX2JyZWFrcG9pbnRzX2FmdGVyX3N0YXJ0dXAgKCk7Ci0rCi0g CSAgLyogSWYgcmVxdWVzdGVkLCBzdG9wIHdoZW4gdGhlIGR5bmFtaWMgbGlua2VyIG5vdGlmaWVz Ci0gCSAgICAgZ2RiIG9mIGV2ZW50cy4gIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIGdldCBjb250 cm9sCi0gCSAgICAgYW5kIHBsYWNlIGJyZWFrcG9pbnRzIGluIGluaXRpYWxpemVyIHJvdXRpbmVz IGZvcgotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL29iamZpbGVzLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL29iamZpbGVzLmMJMjAwOS0wOS0y NSAxMDoyNTozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9v YmpmaWxlcy5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtNTMsNiAr NTMsOSBAQAotICNpbmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJjb21wbGFpbnRzLmgi Ci0gCi0rI2luY2x1ZGUgImF1eHYuaCIKLSsjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgotKwotIC8q IFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucyAqLwotIAotIHN0YXRpYyB2b2lkIG9iamZp bGVfYWxsb2NfZGF0YSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotQEAgLTI4MCw5ICsyODMs MTcgQEAgaW5pdF9lbnRyeV9wb2ludF9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqbwotIENPUkVfQURE UgotIGVudHJ5X3BvaW50X2FkZHJlc3MgKHZvaWQpCi0gewotKyAgaW50IHJldDsKLSsKLSAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoOwotICAgQ09SRV9BRERSIGVudHJ5X3BvaW50OwotIAotKyAg LyogRmluZCB0aGUgYWRkcmVzcyBvZiB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIHByb2dyYW0gZnJv bSB0aGUKLSsgICAgIGF1eHYgdmVjdG9yLiAgKi8KLSsgIHJldCA9IHRhcmdldF9hdXh2X3NlYXJj aCAoJmN1cnJlbnRfdGFyZ2V0LCBBVF9FTlRSWSwgJmVudHJ5X3BvaW50KTsKLSsgIGlmIChyZXQg PT0gMSkKLSsgICAgIHJldHVybiBlbnRyeV9wb2ludDsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSsK LSAgIGlmIChzeW1maWxlX29iamZpbGUgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci0gCi1JbmRl eDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc29saWItc3ZyNC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0wOS0yNSAxMDoy NTozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zb2xpYi1z dnI0LmMJMjAwOS0wOS0yNSAxMDoyODowNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC00Nyw2ICs0Nyw3 IEBACi0gI2luY2x1ZGUgImV4ZWMuaCIKLSAjaW5jbHVkZSAiYXV4di5oIgotICNpbmNsdWRlICJl eGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAKLSBzdGF0aWMgc3RydWN0IGxp bmtfbWFwX29mZnNldHMgKnN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7Ci0gc3Rh dGljIGludCBzdnI0X2hhdmVfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7Ci1AQCAtMzU5LDcgKzM2 MCw5IEBAIHNvbGliX3N2cjRfaW5mZXJpb3JfZXhpdCAoaW50IHBpZCkKLSAKLSAvKiBMb2NhbCBm dW5jdGlvbiBwcm90b3R5cGVzICovCi0gCi0rI2lmIDAKLSBzdGF0aWMgaW50IG1hdGNoX21haW4g KGNoYXIgKik7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIENPUkVfQUREUiBiZmRfbG9va3VwX3N5bWJv bCAoYmZkICosIGNoYXIgKik7Ci0gCi1AQCAtNjAwLDEwICs2MDMsMTIgQEAgc2Nhbl9keW50YWcg KGludCBkeW50YWcsIGJmZCAqYWJmZCwgQ09SRQotICAgaW50IGFyY2hfc2l6ZSwgc3RlcCwgc2Vj dF9zaXplOwotICAgbG9uZyBkeW5fdGFnOwotICAgQ09SRV9BRERSIGR5bl9wdHIsIGR5bl9hZGRy OwotKyAgQ09SRV9BRERSIHJlbG9jX2FkZHIgPSAwOwotICAgZ2RiX2J5dGUgKmJ1ZmVuZCwgKmJ1 ZnN0YXJ0LCAqYnVmOwotICAgRWxmMzJfRXh0ZXJuYWxfRHluICp4X2R5bnBfMzI7Ci0gICBFbGY2 NF9FeHRlcm5hbF9EeW4gKnhfZHlucF82NDsKLSAgIHN0cnVjdCBiZmRfc2VjdGlvbiAqc2VjdDsK LSsgIGludCByZXQ7Ci0gCi0gICBpZiAoYWJmZCA9PSBOVUxMKQotICAgICByZXR1cm4gMDsKLUBA IC02MTUsMTkgKzYyMCw4MSBAQCBzY2FuX2R5bnRhZyAoaW50IGR5bnRhZywgYmZkICphYmZkLCBD T1JFCi0gICBpZiAoYXJjaF9zaXplID09IC0xKQotICAgICByZXR1cm4gMDsKLSAKLSsgIC8qIFRo ZSBhdXh2IHZlY3RvciBiYXNlZCByZWxvY2F0YWJsZSBmaWxlcyByZWFkaW5nIGlzIGxpbWl0ZWQg dG8gdGhlIG1haW4KLSsgICAgIGV4ZWN1dGFibGUuICAqLwotKyAgZ2RiX2Fzc2VydCAoYWJmZCA9 PSBleGVjX2JmZCB8fCBwdHIgPT0gTlVMTCk7Ci0rCi0rICBpZiAocHRyICE9IE5VTEwpCi0rICAg IHsKLSsgICAgICBDT1JFX0FERFIgZW50cnlfYWRkcjsKLSsKLSsgICAgICAvKiBGaW5kIHRoZSBh ZGRyZXNzIG9mIHRoZSBlbnRyeSBwb2ludCBvZiB0aGUgcHJvZ3JhbSBmcm9tIHRoZQotKwkgYXV4 diB2ZWN0b3IuICAqLwotKyAgICAgIHJldCA9IHRhcmdldF9hdXh2X3NlYXJjaCAoJmN1cnJlbnRf dGFyZ2V0LCBBVF9FTlRSWSwgJmVudHJ5X2FkZHIpOwotKwotKyAgICAgIGlmIChyZXQgPT0gMCB8 fCByZXQgPT0gLTEpCi0rCXsKLSsJICAvKiBObyBhdXh2IGluZm8sIG1heWJlIGFuIG9sZGVyIGtl cm5lbC4gRmFrZSBvdXIgd2F5IHRocm91Z2guICAqLwotKwkgIGVudHJ5X2FkZHIgPSBiZmRfZ2V0 X3N0YXJ0X2FkZHJlc3MgKGV4ZWNfYmZkKTsgCi0rCi0rCSAgaWYgKGRlYnVnX3NvbGliKQotKwkg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQkiZWxmX2xvY2F0ZV9iYXNl OiBwcm9ncmFtIGVudHJ5IGFkZHJlc3Mgbm90IGZvdW5kLiBVc2luZyBiZmQncyAlcyBmb3IgJXNc biIsCi0rCQkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgZW50cnlfYWRkciksIGV4ZWNfYmZk LT5maWxlbmFtZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAoZGVidWdfc29saWIp Ci0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSJlbGZfbG9jYXRl X2Jhc2U6IGZvdW5kIHByb2dyYW0gZW50cnkgYWRkcmVzcyAlcyBmb3IgJXNcbiIsCi0rCQkJCXBh ZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgZW50cnlfYWRkciksIGV4ZWNfYmZkLT5maWxlbmFtZSk7 Ci0rCX0KLSsgICAgICByZWxvY19hZGRyID0gZW50cnlfYWRkciAtIGJmZF9nZXRfc3RhcnRfYWRk cmVzcyAoZXhlY19iZmQpOwotKyAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAgICAiZWxmX2xvY2F0ZV9iYXNlOiBleHBlY3RlZCBy ZWxvY2F0aW9uIG9mZnNldCAlcyBmb3IgJXNcbiIsCi0rCQkJICAgIHBhZGRyZXNzICh0YXJnZXRf Z2RiYXJjaCwgcmVsb2NfYWRkciksIGV4ZWNfYmZkLT5maWxlbmFtZSk7Ci0rICAgIH0KLSsKLSAg IC8qIEZpbmQgdGhlIHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIC5keW5hbWljIHNlY3Rpb24uICAqLwot ICAgc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmR5bmFtaWMiKTsKLSAg IGlmIChzZWN0ID09IE5VTEwpCi0tICAgIHJldHVybiAwOwotKyAgICB7IAotKyAgICAgIGlmIChk ZWJ1Z19zb2xpYikKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAgICAi ZWxmX2xvY2F0ZV9iYXNlOiAuZHluYW1pYyBzZWN0aW9uIG5vdCBmb3VuZCBpbiAlcyAtLSByZXR1 cm4gbm93XG4iLAotKwkJCSAgICBleGVjX2JmZC0+ZmlsZW5hbWUpOwotKyAgICAgIHJldHVybiAw OwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsgCi0rICAgICAgaWYgKGRlYnVnX3NvbGliKQotKwlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJICAgICJlbGZfbG9jYXRlX2Jhc2U6 IC5keW5hbWljIHNlY3Rpb24gZm91bmQgaW4gJXNcbiIsCi0rCQkJICAgIGV4ZWNfYmZkLT5maWxl bmFtZSk7Ci0rICAgIH0KLSsKLSAgIGR5bl9hZGRyID0gYmZkX3NlY3Rpb25fdm1hIChhYmZkLCBz ZWN0KTsKLSsgIGlmIChkZWJ1Z19zb2xpYikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAotKwkJCSJlbGZfbG9jYXRlX2Jhc2U6IC5keW5hbWljIGFkZHIgJXNcbiIsCi0rCQkJ cGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBkeW5fYWRkcikpOwotIAotICAgLyogUmVhZCBpbiAu ZHluYW1pYyBmcm9tIHRoZSBCRkQuICBXZSB3aWxsIGdldCB0aGUgYWN0dWFsIHZhbHVlCi0gICAg ICBmcm9tIG1lbW9yeSBsYXRlci4gICovCi0gICBzZWN0X3NpemUgPSBiZmRfc2VjdGlvbl9zaXpl IChhYmZkLCBzZWN0KTsKLSAgIGJ1ZiA9IGJ1ZnN0YXJ0ID0gYWxsb2NhIChzZWN0X3NpemUpOwot KyAgaWYgKGRlYnVnX3NvbGliKSAKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAiZWxmX2xvY2F0ZV9iYXNlOiByZWFkIGluIC5k eW5hbWljIHNlY3Rpb25cbiIpOwotICAgaWYgKCFiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFi ZmQsIHNlY3QsCi0gCQkJCSBidWYsIDAsIHNlY3Rfc2l6ZSkpCi0tICAgIHJldHVybiAwOwotKyAg ICB7IAotKyAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAotKwkJCSAgICAiZWxmX2xvY2F0ZV9iYXNlOiBjb3VsZG4ndCByZWFkIC5keW5hbWlj IHNlY3Rpb24gLS0gcmV0dXJuIG5vd1xuIik7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSAK LSAgIC8qIEl0ZXJhdGUgb3ZlciBCVUYgYW5kIHNjYW4gZm9yIERZTlRBRy4gIElmIGZvdW5kLCBz ZXQgUFRSIGFuZCByZXR1cm4uICAqLwotICAgc3RlcCA9IChhcmNoX3NpemUgPT0gMzIpID8gc2l6 ZW9mIChFbGYzMl9FeHRlcm5hbF9EeW4pCi1AQCAtNjQ4LDI2ICs3MTUsMTA1IEBAIHNjYW5fZHlu dGFnIChpbnQgZHludGFnLCBiZmQgKmFiZmQsIENPUkUKLSAJZHluX3RhZyA9IGJmZF9oX2dldF82 NCAoYWJmZCwgKGJmZF9ieXRlICopIHhfZHlucF82NC0+ZF90YWcpOwotIAlkeW5fcHRyID0gYmZk X2hfZ2V0XzY0IChhYmZkLCAoYmZkX2J5dGUgKikgeF9keW5wXzY0LT5kX3VuLmRfcHRyKTsKLSAg ICAgICB9Ci0tICAgICBpZiAoZHluX3RhZyA9PSBEVF9OVUxMKQotKwotKyAgICAvKiBWZXJpZnkg UkVMT0NfQUREUiBtYWtlcyBzZW5zZSAtIGl0IGRvZXMgbm90IGhhdmUgdG8gZm9yIHZhbGdyaW5k IHdoaWNoCi0rICAgICAgIHN1cHBsaWVzIHVzIGEgc3BlY2lhbGx5IGNyYWZ0ZWQgZXhlY3V0YWJs ZSBpbiAvcHJvYy9QSUQvZmQvWCB3aGlsZQotKyAgICAgICAvcHJvYy9QSUQvYXV4diBjb3JyZXNw b25kcyB0byBhIGRpZmZlcmVudCBleGVjdXRhYmxlICguLi4vbWVtY2hlY2spLiAgKi8KLSsgICAg aWYgKHJlbG9jX2FkZHIpCi0rICAgICAgewotKwlnZGJfYnl0ZSB0YWdfYnVmWzhdOwotKwlDT1JF X0FERFIgdGFnX2FkZHI7Ci0rCi0rCXRhZ19hZGRyID0gZHluX2FkZHIgKyAoYnVmIC0gYnVmc3Rh cnQpICsgcmVsb2NfYWRkcjsKLSsJaWYgKHRhcmdldF9yZWFkX21lbW9yeSAodGFnX2FkZHIsIHRh Z19idWYsIGFyY2hfc2l6ZSAvIDgpID09IDApCi0rCSAgewotKwkgICAgaWYgKG1lbWNtcCAodGFn X2J1ZiwgYnVmLCBhcmNoX3NpemUgLyA4KSAhPSAwKQotKwkgICAgICB7Ci0rCQlpZiAoZGVidWdf c29saWIpCi0rCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJICAgICAg ImVsZl9sb2NhdGVfYmFzZTogdGFnIGF0IG9mZnNldCAweCVseCBkb2VzIG5vdCBtYXRjaCwiCi0r CQkJCSAgICAgICIgZHJvcHBpbmcgcmVsb2NhdGlvbiBvZmZzZXQgJXNcbiIsCi0rCQkJCSAgICAg ICh1bnNpZ25lZCBsb25nKSAoYnVmIC0gYnVmc3RhcnQpLCBwYWRkcmVzcyAodGFyZ2V0X2dkYmFy Y2gsIHJlbG9jX2FkZHIpKTsKLSsJCXJlbG9jX2FkZHIgPSAwOwotKwkgICAgICB9Ci0rCSAgfQot KwllbHNlCi0rCSAgewotKwkgICAgaWYgKGRlYnVnX3NvbGliKQotKwkgICAgICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSAgImVsZl9sb2NhdGVfYmFzZTogdGFnIGF0IG9m ZnNldCAweCVseCBpcyBub3QgcmVhZGFibGUsIgotKwkJCQkgICIgZHJvcHBpbmcgcmVsb2NhdGlv biBvZmZzZXQgJXNcbiIsCi0rCQkJCSAgKHVuc2lnbmVkIGxvbmcpIChidWYgLSBidWZzdGFydCks IHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgcmVsb2NfYWRkcikpOwotKwkgICAgcmVsb2NfYWRk ciA9IDA7Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsgICAgaWYgKGR5bl90YWcgPT0gRFRfTlVMTCkK LSAgICAgICAgcmV0dXJuIDA7Ci0tICAgICBpZiAoZHluX3RhZyA9PSBkeW50YWcpCi0tICAgICAg IHsKLS0JIC8qIElmIHJlcXVlc3RlZCwgdHJ5IHRvIHJlYWQgdGhlIHJ1bnRpbWUgdmFsdWUgb2Yg dGhpcyAuZHluYW1pYwotLQkgICAgZW50cnkuICAqLwotLQkgaWYgKHB0cikKLS0JICAgewotLQkg ICAgIHN0cnVjdCB0eXBlICpwdHJfdHlwZTsKLS0JICAgICBnZGJfYnl0ZSBwdHJfYnVmWzhdOwot LQkgICAgIENPUkVfQUREUiBwdHJfYWRkcjsKLS0KLS0JICAgICBwdHJfdHlwZSA9IGJ1aWx0aW5f dHlwZSAodGFyZ2V0X2dkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotLQkgICAgIHB0cl9hZGRy ID0gZHluX2FkZHIgKyAoYnVmIC0gYnVmc3RhcnQpICsgYXJjaF9zaXplIC8gODsKLS0JICAgICBp ZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChwdHJfYWRkciwgcHRyX2J1ZiwgYXJjaF9zaXplIC8gOCkg PT0gMCkKLS0JICAgICAgIGR5bl9wdHIgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKHB0cl9idWYs IHB0cl90eXBlKTsKLS0JICAgICAqcHRyID0gZHluX3B0cjsKLS0JICAgfQotLQkgcmV0dXJuIDE7 Ci0tICAgICAgIH0KLSsgICAgaWYgKGR5bl90YWcgPT0gZHludGFnKQotKyAgICAgIHsKLSsJLyog SWYgcmVxdWVzdGVkLCB0cnkgdG8gcmVhZCB0aGUgcnVudGltZSB2YWx1ZSBvZiB0aGlzIC5keW5h bWljCi0rCSAgIGVudHJ5LiAgKi8KLSsJaWYgKHB0cikKLSsJICB7Ci0rCSAgICBnZGJfYnl0ZSBw dHJfYnVmWzhdOwotKwkgICAgQ09SRV9BRERSIHB0cl9hZGRyOwotKwkgICAgaW50IGdvdDsKLSsK LSsJICAgIHB0cl9hZGRyID0gZHluX2FkZHIgKyAoYnVmIC0gYnVmc3RhcnQpICsgYXJjaF9zaXpl IC8gODsKLSsJICAgIGlmIChwdHIgIT0gTlVMTCkKLSsJICAgICAgewotKwkJaWYgKGRlYnVnX3Nv bGliKQotKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSAgICAgICJl bGZfbG9jYXRlX2Jhc2U6IHVucmVsb2NhdGVkIHB0ciBhZGRyICVzXG4iLAotKwkJCQkgICAgICBw YWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHB0cl9hZGRyKSk7Ci0rCQlwdHJfYWRkciArPSByZWxv Y19hZGRyOwotKwkJaWYgKGRlYnVnX3NvbGliKSAKLSsJCSAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLCAKLSsJCQkJICAgICAgImVsZl9sb2NhdGVfYmFzZTogcmVsb2NhdGVkIHB0ciBh ZGRyICVzIgotKwkJCQkgICAgICAiIChyZWxvY2F0aW9uIG9mZnNldCAlcykgZm9yICVzXG4iLAot KwkJCQkgICAgICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHB0cl9hZGRyKSwgcGFkZHJlc3Mg KHRhcmdldF9nZGJhcmNoLCByZWxvY19hZGRyKSwKLSsJCQkJICAgICAgZXhlY19iZmQtPmZpbGVu YW1lKTsKLSsJICAgICAgfQotKwkgICAgZ290ID0gdGFyZ2V0X3JlYWRfbWVtb3J5IChwdHJfYWRk ciwgcHRyX2J1ZiwgYXJjaF9zaXplIC8gOCk7Ci0rCSAgICBpZiAoZ290ICE9IDAgJiYgcmVsb2Nf YWRkcikKLSsJICAgICAgewotKwkJcHRyX2FkZHIgLT0gcmVsb2NfYWRkcjsKLSsJCWlmIChkZWJ1 Z19zb2xpYikgCi0rCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rCQkJCSAg ICAgICJlbGZfbG9jYXRlX2Jhc2U6IHVucmVsb2NhdGVkIGJhY2sgdG8gcHRyIGFkZHIgJXMiCi0r CQkJCSAgICAgICIgYXMgdGhlIG1lbW9yeSB3YXMgdW5yZWFibGUgZm9yICVzXG4iLAotKwkJCQkg ICAgICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHB0cl9hZGRyKSwgZXhlY19iZmQtPmZpbGVu YW1lKTsKLSsJCWdvdCA9IHRhcmdldF9yZWFkX21lbW9yeSAocHRyX2FkZHIsIHB0cl9idWYsIGFy Y2hfc2l6ZSAvIDgpOwotKwkgICAgICB9Ci0rCi0rCSAgICBpZiAoZ290ID09IDApCi0rCSAgICAg IHsKLSsJCXN0cnVjdCB0eXBlICpwdHJfdHlwZTsKLSsKLSsJCXB0cl90eXBlID0gYnVpbHRpbl90 eXBlICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Ci0rCQlkeW5fcHRyID0gZXh0 cmFjdF90eXBlZF9hZGRyZXNzIChwdHJfYnVmLCBwdHJfdHlwZSk7Ci0rCQlpZiAocHRyICE9IE5V TEwpCi0rCQkgIHsKLSsJCSAgICBpZiAoZGVidWdfc29saWIpCi0rCQkgICAgICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCQkgICJlbGZfbG9jYXRlX2Jhc2U6IFRhZyBlbnRy eSBoYXMgdmFsdWUgJXMgLS0gcmV0dXJuIG5vd1xuIiwKLSsJCQkJCSAgcGFkZHJlc3MgKHRhcmdl dF9nZGJhcmNoLCBkeW5fcHRyKSk7Ci0rCQkgIH0KLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkg ICAgICB7Ci0rCQlpZiAocHRyICE9IE5VTEwpCi0rCQkgIHsKLSsJCSAgICBpZiAoZGVidWdfc29s aWIpCi0rCQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCQkgICJl bGZfbG9jYXRlX2Jhc2U6IENvdWxkbid0IHJlYWQgdGFnIGVudHJ5IHZhbHVlIC0tIHJldHVybiBu b3dcbiIpOwotKwkJICB9Ci0rCSAgICAgIH0KLSsJICAgICpwdHIgPSBkeW5fcHRyOwotKwkgIH0K LSsJcmV0dXJuIDE7Ci0rICAgICAgfQotICAgfQotIAotICAgcmV0dXJuIDA7Ci1AQCAtMTA0MCw2 ICsxMTg2LDExIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gICBDT1JFX0FERFIgbGRzb21h cCA9IDA7Ci0gICBzdHJ1Y3QgaW5mZXJpb3IgKmluZjsKLSAgIHN0cnVjdCBzdnI0X2luZm8gKmlu Zm87Ci0rICBjb25zdCBjaGFyICpmaWxlbmFtZSA9IGV4ZWNfYmZkID8gZXhlY19iZmQtPmZpbGVu YW1lIDogIjxub25lPiI7Ci0rCi0rICBpZiAoZGVidWdfc29saWIpCi0rICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rICAgICAgICAgICAgICAgICAgICAgICAgInN2cjRfY3Vy cmVudF9zb3M6IGV4ZWNfYmZkICVzXG4iLCBmaWxlbmFtZSk7Ci0gCi0gICBpZiAocHRpZF9lcXVh bCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKSkKLSAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTA1 NCw3ICsxMjA1LDEzIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gICAvKiBJZiB3ZSBjYW4n dCBmaW5kIHRoZSBkeW5hbWljIGxpbmtlcidzIGJhc2Ugc3RydWN0dXJlLCB0aGlzCi0gICAgICBt dXN0IG5vdCBiZSBhIGR5bmFtaWNhbGx5IGxpbmtlZCBleGVjdXRhYmxlLiAgSG1tLiAgKi8KLSAg IGlmICghIGluZm8tPmRlYnVnX2Jhc2UpCi0tICAgIHJldHVybiBzdnI0X2RlZmF1bHRfc29zICgp OwotKyAgICB7Ci0rICAgICAgaWYgKGRlYnVnX3NvbGliKQotKwlmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csIAotKwkJCSAgICAic3ZyNF9jdXJyZW50X3Nvczogbm8gRFRfREVCVUcgZm91 bmQgaW4gJXMgLS0gcmV0dXJuIG5vd1xuIiwKLSsJCQkgICAgZmlsZW5hbWUpOwotKyAgICAgIHJl dHVybiBzdnI0X2RlZmF1bHRfc29zICgpOwotKyAgICB9Ci0gCi0gICAvKiBXYWxrIHRoZSBpbmZl cmlvcidzIGxpbmsgbWFwIGxpc3QsIGFuZCBidWlsZCBvdXIgbGlzdCBvZgotICAgICAgYHN0cnVj dCBzb19saXN0JyBub2Rlcy4gICovCi1AQCAtMTA3NCwyNiArMTIzMSwxMDQgQEAgc3ZyNF9jdXJy ZW50X3NvcyAodm9pZCkKLSAgICAgICBuZXctPmxtX2luZm8tPmxtID0geHphbGxvYyAobG1vLT5s aW5rX21hcF9zaXplKTsKLSAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBuZXctPmxtX2luZm8t PmxtKTsKLSAKLSsgICAgICBpZiAoZGVidWdfc29saWIpCi0rICAgICAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ZyNF9j dXJyZW50X3NvczogcmVhZCBsbSBhdCAlc1xuIiwgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBs bSkpOwotICAgICAgIHJlYWRfbWVtb3J5IChsbSwgbmV3LT5sbV9pbmZvLT5sbSwgbG1vLT5saW5r X21hcF9zaXplKTsKLSAKLSAgICAgICBsbSA9IExNX05FWFQgKG5ldyk7Ci0gCi0rICAgICAgaWYg KGRlYnVnX3NvbGliKQotKyAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ZyNF9jdXJyZW50X3NvczogaXMgZmlyc3Qg bGluayBlbnRyeT8gJWRcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIElHTk9SRV9G SVJTVF9MSU5LX01BUF9FTlRSWSAobmV3KSk7Ci0rCi0gICAgICAgLyogRm9yIFNWUjQgdmVyc2lv bnMsIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgbGluayBtYXAgaXMgZm9yIHRoZQotICAgICAgICAg IGluZmVyaW9yIGV4ZWN1dGFibGUsIHNvIHdlIG11c3QgaWdub3JlIGl0LiAgRm9yIHNvbWUgdmVy c2lvbnMgb2YKLSAgICAgICAgICBTVlI0LCBpdCBoYXMgbm8gbmFtZS4gIEZvciBvdGhlcnMgKFNv bGFyaXMgMi4zIGZvciBleGFtcGxlKSwgaXQKLSAgICAgICAgICBkb2VzIGhhdmUgYSBuYW1lLCBz byB3ZSBjYW4gbm8gbG9uZ2VyIHVzZSBhIG1pc3NpbmcgbmFtZSB0bwotICAgICAgICAgIGRlY2lk ZSB3aGVuIHRvIGlnbm9yZSBpdC4gKi8KLS0gICAgICBpZiAoSUdOT1JFX0ZJUlNUX0xJTktfTUFQ X0VOVFJZIChuZXcpICYmIGxkc29tYXAgPT0gMCkKLSsgICAgICBpZiAoZXhlY19iZmQgIT0gTlVM TCAmJiBJR05PUkVfRklSU1RfTElOS19NQVBfRU5UUlkgKG5ldykgJiYgbGRzb21hcCA9PSAwKQot IAl7Ci0tCSAgaW5mby0+bWFpbl9sbV9hZGRyID0gbmV3LT5sbV9pbmZvLT5sbV9hZGRyOwotLQkg IGZyZWVfc28gKG5ldyk7Ci0tCX0KLSsgICAgICAgICAgLyogSXQgaXMgdGhlIGZpcnN0IGxpbmsg bWFwIGVudHJ5LCBpLmUuIGl0IGlzIHRoZSBtYWluIGV4ZWN1dGFibGUuICAqLwotKwotKwkgIGlm IChiZmRfZ2V0X3N0YXJ0X2FkZHJlc3MgKGV4ZWNfYmZkKSA9PSBlbnRyeV9wb2ludF9hZGRyZXNz ICgpKQotKwkgICAgewotKwkgICAgICAvKiBOb24tcGllIGNhc2UsIG1haW4gZXhlY3V0YWJsZSBo YXMgbm90IGJlZW4gcmVsb2NhdGVkLiAgKi8KLSsJICAgICAgaW5mby0+bWFpbl9sbV9hZGRyID0g bmV3LT5sbV9pbmZvLT5sbV9hZGRyOwotKwkgICAgICBmcmVlX3NvIChuZXcpOwotKwkgICAgfQot KwkgIGVsc2UKLSsJICAgIHsKLSsgICAgICAgICAgICAgIC8qIFBpZSBjYXNlLCBtYWluIGV4ZWN1 dGFibGUgaGFzIGJlZW4gcmVsb2NhdGVkLiAgKi8KLSsJICAgICAgc3RydWN0IHNvX2xpc3QgKmdk Yl9zb2xpYjsKLSsKLSsJICAgICAgaWYgKGRlYnVnX3NvbGliKQotKwkJZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAotKwkJCQkgICAgInN2cjRfY3VycmVudF9zb3M6IFByb2Nlc3Npbmcg Zmlyc3QgbGluayBtYXAgZW50cnlcbiIpOwotKwkgICAgICBzdHJuY3B5IChuZXctPnNvX25hbWUs IGV4ZWNfYmZkLT5maWxlbmFtZSwKLSsJCSAgICAgICBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAx KTsKLSsJICAgICAgbmV3LT5zb19uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1ww JzsKLSsJICAgICAgc3RyY3B5IChuZXctPnNvX29yaWdpbmFsX25hbWUsIG5ldy0+c29fbmFtZSk7 Ci0rCSAgICAgIC8qbmV3LT5tYWluID0gMTsqLwotKwkgICAgICBuZXctPm1haW5fcmVsb2NhdGVk ID0gMDsKLSsgICAgICAgICAgICAKLSsJICAgICAgaWYgKGRlYnVnX3NvbGliKQotKwkJeyAKLSsJ CSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQkgICAgICAic3ZyNF9jdXJy ZW50X3NvczogUHJvY2Vzc2luZyBuYW1lbGVzcyBEU09cbiIpOwotKwkJICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSAgICAgICJzdnI0X2N1cnJlbnRfc29zOiBhZGRpbmcg bmFtZSAlc1xuIiwKLSsJCQkJICAgICAgbmV3LT5zb19uYW1lKTsKLSsJCX0KLSsKLSsJICAgICAg Zm9yIChnZGJfc29saWIgPSBtYXN0ZXJfc29fbGlzdCAoKTsKLSsgICAgICAgICAgICAgICAgICAg Z2RiX3NvbGliOwotKyAgICAgICAgICAgICAgICAgICBnZGJfc29saWIgPSBnZGJfc29saWItPm5l eHQpCi0rCQl7Ci0rCQkgIGlmIChkZWJ1Z19zb2xpYikKLSsJCSAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCi0rCQkJCQkic3ZyNF9jdXJyZW50X3NvczogY29tcGFyZSBnZGIgJXMg YW5kIG5ldyAlc1xuIiwKLSsJCQkJCWdkYl9zb2xpYi0+c29fbmFtZSwgbmV3LT5zb19uYW1lKTsK LSsJCSAgaWYgKHN0cmNtcCAoZ2RiX3NvbGliLT5zb19uYW1lLCBuZXctPnNvX25hbWUpID09IDAp Ci0rCQkgICAgaWYgKGdkYl9zb2xpYi0+bWFpbl9yZWxvY2F0ZWQpCi0rCQkgICAgICB7IAotKwkJ CWlmIChkZWJ1Z19zb2xpYikKLSsJCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK LSsJCQkJCSAgICAgICJzdnI0X2N1cnJlbnRfc29zOiBmb3VuZCBtYWluIHJlbG9jYXRlZFxuIik7 Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICB9Ci0rCQl9Ci0rCi0rCSAgICAgIGlmICgoZ2RiX3NvbGli ICYmICFnZGJfc29saWItPm1haW5fcmVsb2NhdGVkKSB8fCAoIWdkYl9zb2xpYikpCi0rCQl7Ci0r CQkgIGFkZF90b190YXJnZXRfc2VjdGlvbnMgKDAgLypmcm9tX3R0eSovLCAmY3VycmVudF90YXJn ZXQsIG5ldyk7Ci0rCQkgIG5ldy0+bWFpbiA9IDE7Ci0rCQl9Ci0rCi0rCSAgICAgIC8qIFdlIG5l ZWQgdGhpcyBpbiB0aGUgbGlzdCBvZiBzaGFyZWQgbGlicyB3ZSByZXR1cm4gYmVjYXVzZQotKwkJ IHNvbGliX2FkZF9zdHViIHdpbGwgbG9vcCB0aHJvdWdoIGl0IGFuZCBhZGQgdGhlIHN5bWJvbCBm aWxlLiAgKi8KLSsJICAgICAgbmV3LT5uZXh0ID0gMDsKLSsJICAgICAgKmxpbmtfcHRyID0gbmV3 OwotKwkgICAgICBsaW5rX3B0ciA9ICZuZXctPm5leHQ7IAotKwkgICAgfQotKwl9IC8qIEVuZCBv ZiBJR05PUkVfRklSU1RfTElOS19NQVBfRU5UUlkgICovCi0gICAgICAgZWxzZQotIAl7Ci0rICAg ICAgICAgIC8qIFRoaXMgaXMgbm90IHRoZSBmaXJzdCBsaW5rIG1hcCBlbnRyeSwgaS5lLiBpcyBu b3QgdGhlIG1haW4KLSsgICAgICAgICAgICAgZXhlY3V0YWJsZS4gIE5vdGUgaG93ZXZlciB0aGF0 IGl0IGNvdWxkIGJlIHRoZSBEU08gc3VwcGxpZWQgb24KLSsgICAgICAgICAgICAgY2VydGFpbiBz eXN0ZW1zIChpLmUuIExpbnV4IDIuNikgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dAotKyAg ICAgICAgICAgICB0aGUgdnN5c2NhbGwgcGFnZS4gIFdlIG11c3QgaWdub3JlIHN1Y2ggZW50cnku IFRoaXMgZW50cnkgaXMgCi0rICAgICAgICAgICAgIG5hbWVsZXNzIChqdXN0IGxpa2UgdGhlIG9u ZSBmb3IgdGhlIG1haW4gZXhlY3V0YWJsZSwgc2lnaCkuICAqLwotKwotIAkgIGludCBlcnJjb2Rl OwotIAkgIGNoYXIgKmJ1ZmZlcjsKLSAKLSAJICAvKiBFeHRyYWN0IHRoaXMgc2hhcmVkIG9iamVj dCdzIG5hbWUuICAqLwotKwkgIGlmIChkZWJ1Z19zb2xpYikKLSsJICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Zy NF9jdXJyZW50X3NvczogcmVhZCBMTV9OQU1FXG4iKTsKLSsKLSAJICB0YXJnZXRfcmVhZF9zdHJp bmcgKExNX05BTUUgKG5ldyksICZidWZmZXIsCi0gCQkJICAgICAgU09fTkFNRV9NQVhfUEFUSF9T SVpFIC0gMSwgJmVycmNvZGUpOwotIAkgIGlmIChlcnJjb2RlICE9IDApCi1AQCAtMTEwMSw2MyAr MTMzNiw3NiBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQotIAkJICAgICBzYWZlX3N0cmVycm9y IChlcnJjb2RlKSk7Ci0gCSAgZWxzZQotIAkgICAgewotLQkgICAgICBzdHJ1Y3QgYnVpbGRfaWQg KmJ1aWxkX2lkOwotLQotLQkgICAgICBzdHJuY3B5IChuZXctPnNvX29yaWdpbmFsX25hbWUsIGJ1 ZmZlciwgU09fTkFNRV9NQVhfUEFUSF9TSVpFIC0gMSk7Ci0tCSAgICAgIG5ldy0+c29fb3JpZ2lu YWxfbmFtZVtTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxXSA9ICdcMCc7Ci0tCSAgICAgIC8qIE1h eSBnZXQgb3ZlcndyaXR0ZW4gYmVsb3cuICAqLwotLQkgICAgICBzdHJjcHkgKG5ldy0+c29fbmFt ZSwgbmV3LT5zb19vcmlnaW5hbF9uYW1lKTsKLS0KLS0JICAgICAgYnVpbGRfaWQgPSBidWlsZF9p ZF9hZGRyX2dldCAoTE1fRFlOQU1JQ19GUk9NX0xJTktfTUFQIChuZXcpKTsKLS0JICAgICAgaWYg KGJ1aWxkX2lkICE9IE5VTEwpCi0rCSAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJCWZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rCQkJCSAgICAic3ZyNF9jdXJyZW50X3NvczogTE1f TkFNRSBpcyA8JXM+XG4iLAotKwkJCQkgICAgYnVmZmVyKTsKLSsJICAgICAgLyogVGhlIG5hbWUg Y291bGQgYmUgZW1wdHksIGluIHdoaWNoIGNhc2UgaXQgaXMgdGhlCi0rCQkgc3lzdGVtIHN1cHBs aWVkIERTTy4gICovCi0rCSAgICAgIGlmIChzdHJjbXAgKGJ1ZmZlciwgIiIpID09IDApCi0rCQlm cmVlX3NvIChuZXcpOwotKwkgICAgICBlbHNlCi0gCQl7Ci0tCQkgIGNoYXIgKm5hbWUsICpidWls ZF9pZF9maWxlbmFtZTsKLSsJCSAgc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZDsKLSsKLSsJCSAg c3RybmNweSAobmV3LT5zb19vcmlnaW5hbF9uYW1lLCBidWZmZXIsIFNPX05BTUVfTUFYX1BBVEhf U0laRSAtIDEpOwotKwkJICBuZXctPnNvX29yaWdpbmFsX25hbWVbU09fTkFNRV9NQVhfUEFUSF9T SVpFIC0gMV0gPSAnXDAnOwotKwkJICAvKiBNYXkgZ2V0IG92ZXJ3cml0dGVuIGJlbG93LiAgKi8K LSsJCSAgc3RyY3B5IChuZXctPnNvX25hbWUsIG5ldy0+c29fb3JpZ2luYWxfbmFtZSk7Ci0gCi0t CQkgIC8qIE1pc3NpbmcgdGhlIGJ1aWxkLWlkIG1hdGNoaW5nIHNlcGFyYXRlIGRlYnVnIGluZm8g ZmlsZQotLQkJICAgICB3b3VsZCBiZSBoYW5kbGVkIHdoaWxlIFNPX05BTUUgZ2V0cyBsb2FkZWQu ICAqLwotLQkJICBuYW1lID0gYnVpbGRfaWRfdG9fZmlsZW5hbWUgKGJ1aWxkX2lkLCAmYnVpbGRf aWRfZmlsZW5hbWUsIDApOwotLQkJICBpZiAobmFtZSAhPSBOVUxMKQotKwkJICBidWlsZF9pZCA9 IGJ1aWxkX2lkX2FkZHJfZ2V0IChMTV9EWU5BTUlDX0ZST01fTElOS19NQVAgKG5ldykpOwotKwkJ ICBpZiAoYnVpbGRfaWQgIT0gTlVMTCkKLSAJCSAgICB7Ci0tCQkgICAgICBzdHJuY3B5IChuZXct PnNvX25hbWUsIG5hbWUsIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEpOwotLQkJICAgICAgbmV3 LT5zb19uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1wwJzsKLS0JCSAgICAgIHhm cmVlIChuYW1lKTsKLSsJCSAgICAgIGNoYXIgKm5hbWUsICpidWlsZF9pZF9maWxlbmFtZTsKLSsK LSsJCSAgICAgIC8qIE1pc3NpbmcgdGhlIGJ1aWxkLWlkIG1hdGNoaW5nIHNlcGFyYXRlIGRlYnVn IGluZm8gZmlsZQotKwkJCSB3b3VsZCBiZSBoYW5kbGVkIHdoaWxlIFNPX05BTUUgZ2V0cyBsb2Fk ZWQuICAqLwotKwkJICAgICAgbmFtZSA9IGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChidWlsZF9pZCwg JmJ1aWxkX2lkX2ZpbGVuYW1lLCAwKTsKLSsJCSAgICAgIGlmIChuYW1lICE9IE5VTEwpCi0rCQkJ ewotKwkJCSAgc3RybmNweSAobmV3LT5zb19uYW1lLCBuYW1lLCBTT19OQU1FX01BWF9QQVRIX1NJ WkUgLSAxKTsKLSsJCQkgIG5ldy0+c29fbmFtZVtTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxXSA9 ICdcMCc7Ci0rCQkJICB4ZnJlZSAobmFtZSk7Ci0rCQkJfQotKwkJICAgICAgZWxzZQotKwkJCXsK LSsJCQkgIGRlYnVnX3ByaW50X21pc3NpbmcgKG5ldy0+c29fbmFtZSwgYnVpbGRfaWRfZmlsZW5h bWUpOwotKwotKwkJCSAgLyogSW4gdGhlIGNhc2UgdGhlIG1haW4gZXhlY3V0YWJsZSB3YXMgZm91 bmQgYWNjb3JkaW5nIHRvCi0rCQkJICAgICBpdHMgYnVpbGQtaWQgKGZyb20gYSBjb3JlIGZpbGUp IHByZXZlbnQgbG9hZGluZwotKwkJCSAgICAgYSBkaWZmZXJlbnQgYnVpbGQgb2YgYSBsaWJyYXJ5 IHdpdGggYWNjaWRlbnRhbGx5IHRoZQotKwkJCSAgICAgc2FtZSBTT19OQU1FLgotKwotKwkJCSAg ICAgSXQgc3VwcHJlc3NlcyBib2d1cyBiYWNrdHJhY2VzIChhbmQgcHJpbnRzICI/PyIgdGhlcmUK LSsJCQkgICAgIGluc3RlYWQpIGlmIHRoZSBvbi1kaXNrIGZpbGVzIG5vIGxvbmdlciBtYXRjaCB0 aGUKLSsJCQkgICAgIHJ1bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KLSsKLSsJCQkgIGlmIChz eW1maWxlX29iamZpbGUgIT0gTlVMTAotKwkJCSAgICAgICYmIChzeW1maWxlX29iamZpbGUtPmZs YWdzCi0rCQkJCSAgJiBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEKSAhPSAwKQotKwkJCSAgICBu ZXctPnNvX25hbWVbMF0gPSAwOwotKwkJCX0KLSsKLSsJCSAgICAgIHhmcmVlIChidWlsZF9pZF9m aWxlbmFtZSk7Ci0rCQkgICAgICB4ZnJlZSAoYnVpbGRfaWQpOwotIAkJICAgIH0KLS0JCSAgZWxz ZQotLQkJICAgIHsKLS0JCSAgICAgIGRlYnVnX3ByaW50X21pc3NpbmcgKG5ldy0+c29fbmFtZSwg YnVpbGRfaWRfZmlsZW5hbWUpOwotIAotLQkJICAgICAgLyogSW4gdGhlIGNhc2UgdGhlIG1haW4g ZXhlY3V0YWJsZSB3YXMgZm91bmQgYWNjb3JkaW5nIHRvCi0tCQkJIGl0cyBidWlsZC1pZCAoZnJv bSBhIGNvcmUgZmlsZSkgcHJldmVudCBsb2FkaW5nCi0tCQkJIGEgZGlmZmVyZW50IGJ1aWxkIG9m IGEgbGlicmFyeSB3aXRoIGFjY2lkZW50YWxseSB0aGUKLS0JCQkgc2FtZSBTT19OQU1FLgotLQot LQkJCSBJdCBzdXBwcmVzc2VzIGJvZ3VzIGJhY2t0cmFjZXMgKGFuZCBwcmludHMgIj8/IiB0aGVy ZQotLQkJCSBpbnN0ZWFkKSBpZiB0aGUgb24tZGlzayBmaWxlcyBubyBsb25nZXIgbWF0Y2ggdGhl Ci0tCQkJIHJ1bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KLS0KLS0JCSAgICAgIGlmIChzeW1m aWxlX29iamZpbGUgIT0gTlVMTAotLQkJCSAgJiYgKHN5bWZpbGVfb2JqZmlsZS0+ZmxhZ3MKLS0J CQkgICAgICAmIE9CSkZfQlVJTERfSURfQ09SRV9MT0FERUQpICE9IDApCi0tCQkJbmV3LT5zb19u YW1lWzBdID0gMDsKLSsJCSAgaWYgKGRlYnVnX3NvbGliKQotKwkJICAgIHsKLSsJCSAgICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rCQkJCQkgICJzdnI0X2N1cnJlbnRfc29z OiBQcm9jZXNzaW5nIERTTzogJXNcbiIsCi0rCQkJCQkgIG5ldy0+c29fbmFtZSk7Ci0rCQkgICAg ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCQkgICJzdnI0X2N1cnJlbnRf c29zOiBmaXJzdCBsaW5rIGVudHJ5ICVkXG4iLAotKwkJCQkJICBJR05PUkVfRklSU1RfTElOS19N QVBfRU5UUlkgKG5ldykpOwotIAkJICAgIH0KLSAKLS0JCSAgeGZyZWUgKGJ1aWxkX2lkX2ZpbGVu YW1lKTsKLS0JCSAgeGZyZWUgKGJ1aWxkX2lkKTsKLSsJCSAgbmV3LT5uZXh0ID0gMDsKLSsJCSAg KmxpbmtfcHRyID0gbmV3OwotKwkJICBsaW5rX3B0ciA9ICZuZXctPm5leHQ7Ci0gCQl9Ci0gCSAg ICB9Ci0tCSAgeGZyZWUgKGJ1ZmZlcik7Ci0tCi0tCSAgLyogSWYgdGhpcyBlbnRyeSBoYXMgbm8g bmFtZSwgb3IgaXRzIG5hbWUgbWF0Y2hlcyB0aGUgbmFtZQotLQkgICAgIGZvciB0aGUgbWFpbiBl eGVjdXRhYmxlLCBkb24ndCBpbmNsdWRlIGl0IGluIHRoZSBsaXN0LiAgKi8KLS0JICBpZiAoISBu ZXctPnNvX25hbWVbMF0KLS0JICAgICAgfHwgbWF0Y2hfbWFpbiAobmV3LT5zb19uYW1lKSkKLS0J ICAgIGZyZWVfc28gKG5ldyk7Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAgICBuZXctPm5leHQg PSAwOwotLQkgICAgICAqbGlua19wdHIgPSBuZXc7Ci0tCSAgICAgIGxpbmtfcHRyID0gJm5ldy0+ bmV4dDsKLS0JICAgIH0KLSsgICAgICAgICAgeGZyZWUgKGJ1ZmZlcik7Ci0gCX0KLSAKLSAgICAg ICAvKiBPbiBTb2xhcmlzLCB0aGUgZHluYW1pYyBsaW5rZXIgaXMgbm90IGluIHRoZSBub3JtYWwg bGlzdCBvZgotQEAgLTExNzMsNiArMTQyMSw5IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0g ICBpZiAoaGVhZCA9PSBOVUxMKQotICAgICByZXR1cm4gc3ZyNF9kZWZhdWx0X3NvcyAoKTsKLSAK LSsgIGlmIChkZWJ1Z19zb2xpYikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAic3ZyNF9jdXJyZW50X3NvczogRU5EUyAlc1xuIiwgZmlsZW5hbWUpOwotKwotICAgcmV0dXJu IGhlYWQ7Ci0gfQotIAotQEAgLTEyMDUsNyArMTQ1Niw3IEBAIHN2cjRfZmV0Y2hfb2JqZmlsZV9s aW5rX21hcCAoc3RydWN0IG9iamYKLSAvKiBPbiBzb21lIHN5c3RlbXMsIHRoZSBvbmx5IHdheSB0 byByZWNvZ25pemUgdGhlIGxpbmsgbWFwIGVudHJ5IGZvcgotICAgIHRoZSBtYWluIGV4ZWN1dGFi bGUgZmlsZSBpcyBieSBsb29raW5nIGF0IGl0cyBuYW1lLiAgUmV0dXJuCi0gICAgbm9uLXplcm8g aWZmIFNPTkFNRSBtYXRjaGVzIG9uZSBvZiB0aGUga25vd24gbWFpbiBleGVjdXRhYmxlIG5hbWVz LiAgKi8KLS0KLSsjaWYgMAotIHN0YXRpYyBpbnQKLSBtYXRjaF9tYWluIChjaGFyICpzb25hbWUp Ci0gewotQEAgLTEyMTksNiArMTQ3MCw3IEBAIG1hdGNoX21haW4gKGNoYXIgKnNvbmFtZSkKLSAK LSAgIHJldHVybiAoMCk7Ci0gfQotKyNlbmRpZgotIAotIC8qIFJldHVybiAxIGlmIFBDIGxpZXMg aW4gdGhlIGR5bmFtaWMgc3ltYm9sIHJlc29sdXRpb24gY29kZSBvZiB0aGUKLSAgICBTVlI0IHJ1 biB0aW1lIGxvYWRlci4gICovCi1AQCAtMTM3MCwxNSArMTYyMiwyOSBAQCBlbmFibGVfYnJlYWsg KHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0gICAvKiBGaW5kIHRoZSBwcm9ncmFtIGludGVycHJl dGVyOyBpZiBub3QgZm91bmQsIHdhcm4gdGhlIHVzZXIgYW5kIGRyb3AKLSAgICAgIGludG8gdGhl IG9sZCBicmVha3BvaW50IGF0IHN5bWJvbCBjb2RlLiAgKi8KLSAgIGludGVycF9uYW1lID0gZmlu ZF9wcm9ncmFtX2ludGVycHJldGVyICgpOwotKwotKyAgaWYgKGRlYnVnX3NvbGliKQotKyAgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAiZW5hYmxlX2JyZWFrOiBzZWFyY2ggZm9yIC5pbnRlcnAgaW4gJXNcbiIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgIGV4ZWNfYmZkLT5maWxlbmFtZSk7Ci0gICBpZiAoaW50ZXJwX25hbWUp Ci0gICAgIHsKLSAgICAgICBDT1JFX0FERFIgbG9hZF9hZGRyID0gMDsKLSsgICAgICBDT1JFX0FE RFIgbG9hZF9hZGRyX21hc2sgPSAtMUw7Ci0gICAgICAgaW50IGxvYWRfYWRkcl9mb3VuZCA9IDA7 Ci0gICAgICAgaW50IGxvYWRlcl9mb3VuZF9pbl9saXN0ID0gMDsKLSAgICAgICBzdHJ1Y3Qgc29f bGlzdCAqc287Ci0gICAgICAgYmZkICp0bXBfYmZkID0gTlVMTDsKLSAgICAgICBzdHJ1Y3QgdGFy Z2V0X29wcyAqdG1wX2JmZF90YXJnZXQ7Ci0gICAgICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNl cHRpb24gZXg7Ci0rICAgICAgaW50IGFyY2hfc2l6ZTsKLSsKLSsgICAgICAvKiBGb3IgMzJiaXQg aW5mZXJpb3JzIHdpdGggNjRiaXQgR0RCIHdlIG1heSBnZXQgTE9BRF9BRERSIGF0IDB4ZmYuLi4u Li4KLSsJIGFuZCB0aHVzIG92ZXJmbG93aW5nIGl0cyBhZGRpdGlvbiB0byB0aGUgYWRkcmVzcyB3 aGlsZSBDT1JFX0FERFIgaXMKLSsJIDY0Yml0IHByb2R1Y2luZyAweDEuLi4uLi4uLiBhZGRyZXNz IGludmFsaWQgYWNyb3NzIEdEQi4gICovCi0rICAgICAgYXJjaF9zaXplID0gYmZkX2dldF9hcmNo X3NpemUgKGV4ZWNfYmZkKTsKLSsgICAgICBpZiAoYXJjaF9zaXplID4gMCAmJiBhcmNoX3NpemUg PCBzaXplb2YgKDFVTCkgKiA4KQotKyAgICAgICAgbG9hZF9hZGRyX21hc2sgPSAoMVVMIDw8IGFy Y2hfc2l6ZSkgLSAxOwotIAotICAgICAgIHN5bV9hZGRyID0gMDsKLSAKLUBAIC0xMzk1LDYgKzE2 NjEsOSBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0gICAgICAgICB7 Ci0gCSAgdG1wX2JmZCA9IHNvbGliX2JmZF9vcGVuIChpbnRlcnBfbmFtZSk7Ci0gCX0KLSsgICAg ICBpZiAoZGVidWdfc29saWIpCi0rCSBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0r CQkJICAgICJlbmFibGVfYnJlYWs6IG9wZW5pbmcgJXNcbiIsIGludGVycF9uYW1lKTsKLSAgICAg ICBpZiAodG1wX2JmZCA9PSBOVUxMKQotIAlnb3RvIGJrcHRfYXRfc3ltYm9sOwotIAotQEAgLTE0 NTIsMTYgKzE3MjEsMTYgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQot ICAgICAgIGludGVycF9zZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKHRtcF9iZmQsICIu dGV4dCIpOwotICAgICAgIGlmIChpbnRlcnBfc2VjdCkKLSAJewotLQkgIGludGVycF90ZXh0X3Nl Y3RfbG93ID0KLS0JICAgIGJmZF9zZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpICsg bG9hZF9hZGRyOwotKwkgIGludGVycF90ZXh0X3NlY3RfbG93ID0gKGJmZF9zZWN0aW9uX3ZtYSAo dG1wX2JmZCwgaW50ZXJwX3NlY3QpCi0rCQkJCSAgKyBsb2FkX2FkZHIpICYgbG9hZF9hZGRyX21h c2s7Ci0gCSAgaW50ZXJwX3RleHRfc2VjdF9oaWdoID0KLSAJICAgIGludGVycF90ZXh0X3NlY3Rf bG93ICsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpOwotIAl9Ci0gICAg ICAgaW50ZXJwX3NlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAodG1wX2JmZCwgIi5wbHQi KTsKLSAgICAgICBpZiAoaW50ZXJwX3NlY3QpCi0gCXsKLS0JICBpbnRlcnBfcGx0X3NlY3RfbG93 ID0KLS0JICAgIGJmZF9zZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpICsgbG9hZF9h ZGRyOwotKwkgIGludGVycF9wbHRfc2VjdF9sb3cgPSAoYmZkX3NlY3Rpb25fdm1hICh0bXBfYmZk LCBpbnRlcnBfc2VjdCkKLSsJCQkJICsgbG9hZF9hZGRyKSAmIGxvYWRfYWRkcl9tYXNrOwotIAkg IGludGVycF9wbHRfc2VjdF9oaWdoID0KLSAJICAgIGludGVycF9wbHRfc2VjdF9sb3cgKyBiZmRf c2VjdGlvbl9zaXplICh0bXBfYmZkLCBpbnRlcnBfc2VjdCk7Ci0gCX0KLUBAIC0xNDk2LDcgKzE3 NjUsNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0gCi0gICAgICAg aWYgKHN5bV9hZGRyICE9IDApCi0gCXsKLS0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2lu dCAodGFyZ2V0X2dkYmFyY2gsIGxvYWRfYWRkciArIHN5bV9hZGRyKTsKLSsJICBjcmVhdGVfc29s aWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIChsb2FkX2FkZHIgKyBzeW1fYWRk cikgJiBsb2FkX2FkZHJfbWFzayk7Ci0gCSAgeGZyZWUgKGludGVycF9uYW1lKTsKLSAJICByZXR1 cm4gMTsKLSAJfQotQEAgLTE3NjksNiArMjAzOCw5IEBAIHN2cjRfc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKHZvaWQpCi0gICB3aGlsZSAodHAtPnN0b3Bfc2lnbmFsICE9IFRBUkdFVF9TSUdO QUxfVFJBUCk7Ci0gICBpbmYtPnN0b3Bfc29vbiA9IE5PX1NUT1BfUVVJRVRMWTsKLSAjZW5kaWYg LyogZGVmaW5lZChfU0NPX0RTKSAqLwotKwotKyAgaWYgKGJmZF9nZXRfc3RhcnRfYWRkcmVzcyAo ZXhlY19iZmQpICE9IGVudHJ5X3BvaW50X2FkZHJlc3MgKCkpCi0rICAgIGRpc2FibGVfYnJlYWtw b2ludHNfYmVmb3JlX3N0YXJ0dXAgKCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTk0NSw2 ICsyMjE3LDc2IEBAIHN2cjRfbHA2NF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICh2b2lkKQotIAot ICAgcmV0dXJuIGxtcDsKLSB9Ci0rdm9pZAotK2luZm9fbGlua21hcF9jb21tYW5kIChjaGFyICpj bWQsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBDT1JFX0FERFIgbG07Ci0rICBzdHJ1Y3Qgc3ZyNF9p bmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoUElER0VUIChpbmZlcmlvcl9wdGlkKSk7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKLSsgIC8qIE1ha2Ugc3VyZSB3ZSd2ZSBsb29rZWQgdXAgdGhl IGluZmVyaW9yJ3MgZHluYW1pYyBsaW5rZXIncyBiYXNlCi0rICAgICBzdHJ1Y3R1cmUuICAqLwot KyAgaWYgKCEgaW5mby0+ZGVidWdfYmFzZSkKLSsgICAgewotKyAgICAgIGluZm8tPmRlYnVnX2Jh c2UgPSBsb2NhdGVfYmFzZSAoaW5mbyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSsgICAg ICAvKiBJZiB3ZSBjYW4ndCBmaW5kIHRoZSBkeW5hbWljIGxpbmtlcidzIGJhc2Ugc3RydWN0dXJl LCB0aGlzCi0rICAgICAgICAgbXVzdCBub3QgYmUgYSBkeW5hbWljYWxseSBsaW5rZWQgZXhlY3V0 YWJsZS4gIEhtbS4gICovCi0rICAgICAgaWYgKCEgaW5mby0+ZGVidWdfYmFzZSkKLSsgICAgICAg IHsKLSsgICAgICAgICAgaWYgKGRlYnVnX3NvbGliKQotKyAgICAgICAgICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz dnI0X3ByaW50X2xpbmttYXA6IG5vIERUX0RFQlVHIGZvdW5kIGluICVzIC0tIHJldHVybiBub3dc biIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2JmZC0+ZmlsZW5hbWUp OwotKyAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAotKyAgLyogV2FsayB0aGUgaW5mZXJpb3IncyBsaW5rIG1hcCBsaXN0LCBhbmQg cHJpbnQgdGhlIGluZm8uICAqLwotKyAKLSsgIGxtID0gc29saWJfc3ZyNF9yX21hcCAoaW5mbyk7 Ci0rICB3aGlsZSAobG0pCi0rICAgIHsKLSsgICAgICBpbnQgZXJyY29kZTsKLSsgICAgICBjaGFy ICpidWZmZXI7Ci0rICAgICAgQ09SRV9BRERSIGxvYWRfYWRkcjsKLSsKLSsgICAgICBzdHJ1Y3Qg bGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICgpOwot KyAgICAgIHN0cnVjdCBzb19saXN0ICpuZXcKLSsgICAgICAgID0gKHN0cnVjdCBzb19saXN0ICop IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHNvX2xpc3QpKTsKLSsgICAgICBzdHJ1Y3QgY2xlYW51 cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3KTsKLSsKLSsgICAgICBtZW1z ZXQgKG5ldywgMCwgc2l6ZW9mICgqbmV3KSk7Ci0rCi0rICAgICAgbmV3LT5sbV9pbmZvID0geG1h bGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG1faW5mbykpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIG5ldy0+bG1faW5mbyk7Ci0rCi0rICAgICAgbmV3LT5sbV9pbmZvLT5sbSA9IHhtYWxsb2Mg KGxtby0+bGlua19tYXBfc2l6ZSk7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3LT5s bV9pbmZvLT5sbSk7Ci0rICAgICAgbWVtc2V0IChuZXctPmxtX2luZm8tPmxtLCAwLCBsbW8tPmxp bmtfbWFwX3NpemUpOwotKwotKyAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsgICAgICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg InN2cjRfcHJpbnRfbGlua21hcDogcmVhZCBsbSBhdCAlc1xuIiwgcGFkZHJlc3MgKHRhcmdldF9n ZGJhcmNoLCBsbSkpOwotKyAgICAgIHJlYWRfbWVtb3J5IChsbSwgbmV3LT5sbV9pbmZvLT5sbSwg bG1vLT5saW5rX21hcF9zaXplKTsKLSsKLSsgICAgICBsbSA9IExNX05FWFQgKG5ldyk7Ci0rCi0r ICAgICAgLyogTG9hZCBhZGRyZXNzLiAgKi8KLSsgICAgICBsb2FkX2FkZHIgPSBMTV9BRERSX0NI RUNLIChuZXcsIE5VTEwpOwotKyAgICAgIC8qIFNoYXJlZCBvYmplY3QncyBuYW1lLiAgKi8KLSsg ICAgICB0YXJnZXRfcmVhZF9zdHJpbmcgKExNX05BTUUgKG5ldyksICZidWZmZXIsCi0rCQkJICBT T19OQU1FX01BWF9QQVRIX1NJWkUgLSAxLCAmZXJyY29kZSk7Ci0rICAgICAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgYnVmZmVyKTsKLSsgICAgICBpZiAoZXJyY29kZSAhPSAwKQotKwl7Ci0rCSAgd2Fy bmluZyAoInN2cjRfcHJpbnRfbGlua21hcDogQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBt YXA6ICVzXG4iLAotKwkJICAgc2FmZV9zdHJlcnJvciAoZXJyY29kZSkpOwotKwl9Ci0rICAgICAg ZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZG91dCwgIiUtOHMgJS0zMHNcbiIsIHBhZGRyZXNzICh0 YXJnZXRfZ2RiYXJjaCwgbG9hZF9hZGRyKSwgYnVmZmVyKTsKLSsgICAgICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKLSsgICAgfQotK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKwotIAwKLSAK LSBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyBzdnI0X3NvX29wczsKLUBAIC0xOTg1LDQgKzIzMjcsNyBA QCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQotICAgc3ZyNF9zb19vcHMuc2FtZSA9IHN2 cjRfc2FtZTsKLSAKLSAgIG9ic2VydmVyX2F0dGFjaF9pbmZlcmlvcl9leGl0IChzb2xpYl9zdnI0 X2luZmVyaW9yX2V4aXQpOwotKwotKyAgYWRkX2luZm8gKCJsaW5rbWFwIiwgaW5mb19saW5rbWFw X2NvbW1hbmQsCi0rCSAgICAiRGlzcGxheSB0aGUgaW5mZXJpb3IncyBsaW5rbWFwLiIpOwotIH0K LUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zb2xpYi5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zb2xpYi5jCTIwMDktMDktMjUgMTA6MjU6Mzgu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc29saWIuYwkyMDA5 LTA5LTI1IDEwOjI1OjQ1LjAwMDAwMDAwMCArMDIwMAotQEAgLTgyLDYgKzgyLDggQEAgc2V0X3Nv bGliX29wcyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIAotIAotIC8qIGV4dGVybmFsIGRhdGEg ZGVjbGFyYXRpb25zICovCi0gCi0raW50IGRlYnVnX3NvbGliOwotKwotIC8qIEZJWE1FOiBnZGJh cmNoIG5lZWRzIHRvIGNvbnRyb2wgdGhpcyB2YXJpYWJsZSwgb3IgZWxzZSBldmVyeQotICAgIGNv bmZpZ3VyYXRpb24gbmVlZHMgdG8gY2FsbCBzZXRfc29saWJfb3BzLiAgKi8KLSBzdHJ1Y3QgdGFy Z2V0X3NvX29wcyAqY3VycmVudF90YXJnZXRfc29fb3BzOwotQEAgLTEwNSw2ICsxMDcsOCBAQCBU aGUgc2VhcmNoIHBhdGggZm9yIGxvYWRpbmcgbm9uLWFic29sdXRlCi0gCQkgICAgdmFsdWUpOwot IH0KLSAKLSt2b2lkIGFkZF90b190YXJnZXRfc2VjdGlvbnMgKGludCwgc3RydWN0IHRhcmdldF9v cHMgKiwgc3RydWN0IHNvX2xpc3QgKik7Ci0rCi0gLyoKLSAKLSAgICBHTE9CQUwgRlVOQ1RJT04K LUBAIC00NDksMTQgKzQ1MywzOCBAQCBzeW1ib2xfYWRkX3N0dWIgKHN0cnVjdCBzb19saXN0ICpz bywgaW50Ci0gICAvKiBIYXZlIHdlIGFscmVhZHkgbG9hZGVkIHRoaXMgc2hhcmVkIG9iamVjdD8g ICovCi0gICBBTExfT0JKRklMRVMgKHNvLT5vYmpmaWxlKQotICAgICB7Ci0tICAgICAgaWYgKHN0 cmNtcCAoc28tPm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1lKSA9PSAwKQotKyAgICAgIC8qIEZv dW5kIGFuIGFscmVhZHkgbG9hZGVkIHNoYXJlZCBsaWJyYXJ5LiAgKi8KLSsgICAgICBpZiAoc3Ry Y21wIChzby0+b2JqZmlsZS0+bmFtZSwgc28tPnNvX25hbWUpID09IDAKLSsJICAmJiAhc28tPm1h aW4pCi0rCXJldHVybjsKLSsgICAgICAvKiBGb3VuZCBhbiBhbHJlYWR5IGxvYWRlZCBtYWluIGV4 ZWN1dGFibGUuICBUaGlzIGNvdWxkIGhhcHBlbiBpbgotKwkgdHdvIGNpcmN1bXN0YW5jZXMuCi0r CSBGaXJzdCBjYXNlOiB0aGUgbWFpbiBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gcmVhZCBpbgotKwkg YXMgdGhlIGZpcnN0IHRoaW5nIHRoYXQgZ2RiIGRvZXMgYXQgc3RhcnR1cCwgYW5kIHRoZSBmaWxl Ci0rCSBoYXNuJ3QgYmVlbiByZWxvY2F0ZWQgcHJvcGVybHkgeWV0LiBUaGVyZWZvciB3ZSBuZWVk IHRvIHJlYWQKLSsJIGl0IGluIHdpdGggdGhlIHByb3BlciBzZWN0aW9uIGluZm8uCi0rCSBTZWNv bmQgY2FzZTogaXQgaGFzIGJlZW4gcmVhZCBpbiB3aXRoIHRoZSBjb3JyZWN0IHJlbG9jYXRpb24s Ci0rCSBhbmQgdGhlcmVmb3JlIHdlIG5lZWQgdG8gc2tpcCBpdC4gICovCi0rICAgICAgaWYgKHN0 cmNtcCAoc28tPm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1lKSA9PSAwCi0rCSAgJiYgc28tPm1h aW4KLSsJICAmJiBzby0+bWFpbl9yZWxvY2F0ZWQpCi0gCXJldHVybjsKLSAgICAgfQotIAotICAg c2FwID0gYnVpbGRfc2VjdGlvbl9hZGRyX2luZm9fZnJvbV9zZWN0aW9uX3RhYmxlIChzby0+c2Vj dGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNvLT5zZWN0aW9uc19lbmQpOwotIAotLSAgc28tPm9iamZpbGUgPSBzeW1ib2xfZmlsZV9h ZGRfZnJvbV9iZmQgKHNvLT5hYmZkLCBmbGFncywgc2FwLCBPQkpGX1NIQVJFRCk7Ci0rICBpZiAo c28tPm1haW4pCi0rICAgIHsKLSsgICAgICBpZiAoZGVidWdfc29saWIpCi0rICAgICAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJICAgICJzeW1ib2xfYWRkX3N0dWI6IGFk ZGluZyBzeW1ib2xzIGZvciBtYWluXG4iKTsKLSsgICAgICBzby0+b2JqZmlsZSA9IHN5bWJvbF9m aWxlX2FkZF9mcm9tX2JmZCAoc28tPmFiZmQsIChmbGFncyAmIH5TWU1GSUxFX1ZFUkJPU0UpIHwg U1lNRklMRV9NQUlOTElORSwgc2FwLCAwKTsKLSsgICAgICBzby0+bWFpbl9yZWxvY2F0ZWQgPSAx OwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHNvLT5vYmpmaWxlID0gc3ltYm9sX2ZpbGVfYWRkX2Zy b21fYmZkIChzby0+YWJmZCwgZmxhZ3MsIHNhcCwgT0JKRl9TSEFSRUQpOwotKwotICAgZnJlZV9z ZWN0aW9uX2FkZHJfaW5mbyAoc2FwKTsKLSAKLSAgIHJldHVybjsKLUBAIC01OTYsNiArNjI0LDEw IEBAIHVwZGF0ZV9zb2xpYl9saXN0IChpbnQgZnJvbV90dHksIHN0cnVjdCAKLSAJICAgIH0KLSAJ ICBlbHNlCi0gCSAgICB7Ci0rCSAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJCWZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJICAgICJ1cGRhdGVfc29saWJfbGlzdDogY29tcGFy ZSBnZGI6JXMgYW5kIGluZmVyaW9yOiVzXG4iLAotKwkJCQkgICAgZ2RiLT5zb19vcmlnaW5hbF9u YW1lLCBpLT5zb19vcmlnaW5hbF9uYW1lKTsKLSAJICAgICAgaWYgKCEgc3RyY21wIChnZGItPnNv X29yaWdpbmFsX25hbWUsIGktPnNvX29yaWdpbmFsX25hbWUpKQotIAkJYnJlYWs7CSAgICAgIAot IAkgICAgfQotQEAgLTY1MCwxOCArNjgyLDcgQEAgdXBkYXRlX3NvbGliX2xpc3QgKGludCBmcm9t X3R0eSwgc3RydWN0IAotICAgICAgIC8qIEZpbGwgaW4gdGhlIHJlc3Qgb2YgZWFjaCBvZiB0aGUg YHN0cnVjdCBzb19saXN0JyBub2Rlcy4gICovCi0gICAgICAgZm9yIChpID0gaW5mZXJpb3I7IGk7 IGkgPSBpLT5uZXh0KQotIAl7Ci0tCSAgaS0+ZnJvbV90dHkgPSBmcm9tX3R0eTsKLS0KLS0JICAv KiBGaWxsIGluIHRoZSByZXN0IG9mIHRoZSBgc3RydWN0IHNvX2xpc3QnIG5vZGUuICAqLwotLQkg IGNhdGNoX2Vycm9ycyAoc29saWJfbWFwX3NlY3Rpb25zLCBpLAotLQkJCSJFcnJvciB3aGlsZSBt YXBwaW5nIHNoYXJlZCBsaWJyYXJ5IHNlY3Rpb25zOlxuIiwKLS0JCQlSRVRVUk5fTUFTS19BTEwp OwotLQotLQkgIC8qIEFkZCB0aGUgc2hhcmVkIG9iamVjdCdzIHNlY3Rpb25zIHRvIHRoZSBjdXJy ZW50IHNldCBvZgotLQkgICAgIGZpbGUgc2VjdGlvbiB0YWJsZXMuICBEbyB0aGlzIGltbWVkaWF0 ZWx5IGFmdGVyIG1hcHBpbmcKLS0JICAgICB0aGUgb2JqZWN0IHNvIHRoYXQgbGF0ZXIgbm9kZXMg aW4gdGhlIGxpc3QgY2FuIHF1ZXJ5IHRoaXMKLS0JICAgICBvYmplY3QsIGFzIGlzIG5lZWRlZCBp biBzb2xpYi1vc2YuYy4gICovCi0tCSAgYWRkX3RhcmdldF9zZWN0aW9ucyAoaS0+c2VjdGlvbnMs IGktPnNlY3Rpb25zX2VuZCk7Ci0rCSAgYWRkX3RvX3RhcmdldF9zZWN0aW9ucyAoZnJvbV90dHks IHRhcmdldCwgaSk7Ci0gCi0gCSAgLyogTm90aWZ5IGFueSBvYnNlcnZlciB0aGF0IHRoZSBzaGFy ZWQgb2JqZWN0IGhhcyBiZWVuCi0gICAgICAgICAgICAgIGxvYWRlZCBub3cgdGhhdCB3ZSd2ZSBh ZGRlZCBpdCB0byBHREIncyB0YWJsZXMuICAqLwotQEAgLTc3MSw2ICs3OTIsMzIgQEAgc29saWJf YWRkIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksIAotICAgfQotIH0KLSAKLSt2b2lkCi0r YWRkX3RvX3RhcmdldF9zZWN0aW9ucyAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgdGFyZ2V0X29wcyAq dGFyZ2V0LCBzdHJ1Y3Qgc29fbGlzdCAqc29saWIpCi0rewotKyAgLyogSWYgdGhpcyBpcyBzZXQs IHRoZW4gdGhlIHNlY3Rpb25zIGhhdmUgYmVlbiBhbHJlYWR5IGFkZGVkIHRvIHRoZQotKyAgICAg dGFyZ2V0IGxpc3QuICAqLwotKyAgaWYgKHNvbGliLT5tYWluKQotKyAgICByZXR1cm47Ci0rCi0r ICBzb2xpYi0+ZnJvbV90dHkgPSBmcm9tX3R0eTsKLSsKLSsgIC8qIEZpbGwgaW4gdGhlIHJlc3Qg b2YgdGhlIGBzdHJ1Y3Qgc29fbGlzdCcgbm9kZS4gICovCi0rICBjYXRjaF9lcnJvcnMgKHNvbGli X21hcF9zZWN0aW9ucywgc29saWIsCi0rCSAgICAgICAiRXJyb3Igd2hpbGUgbWFwcGluZyBzaGFy ZWQgbGlicmFyeSBzZWN0aW9uczpcbiIsCi0rCSAgICAgICBSRVRVUk5fTUFTS19BTEwpOwotKwot KyAgaWYgKGRlYnVnX3NvbGliKQotKyAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAotKwkJCSAiYWRkX3RvX3RhcmdldF9zZWN0aW9uczogYWRkICVzIHRvIHRvX3NlY3Rpb25zXG4i LAotKwkJCSBzb2xpYi0+c29fb3JpZ2luYWxfbmFtZSk7Ci0rCi0rICAvKiBBZGQgdGhlIHNoYXJl ZCBvYmplY3QncyBzZWN0aW9ucyB0byB0aGUgY3VycmVudCBzZXQgb2YKLSsgICAgIGZpbGUgc2Vj dGlvbiB0YWJsZXMuICBEbyB0aGlzIGltbWVkaWF0ZWx5IGFmdGVyIG1hcHBpbmcKLSsgICAgIHRo ZSBvYmplY3Qgc28gdGhhdCBsYXRlciBub2RlcyBpbiB0aGUgbGlzdCBjYW4gcXVlcnkgdGhpcwot KyAgICAgb2JqZWN0LCBhcyBpcyBuZWVkZWQgaW4gc29saWItb3NmLmMuICAqLwotKyAgYWRkX3Rh cmdldF9zZWN0aW9ucyAoc29saWItPnNlY3Rpb25zLCBzb2xpYi0+c2VjdGlvbnNfZW5kKTsKLSt9 Ci0gCi0gLyoKLSAKLUBAIC0xMTg5LDQgKzEyMzYsMTIgQEAgVGhpcyB0YWtlcyBwcmVjZWRlbmNl IG92ZXIgdGhlIGVudmlyb25tZQotIAkJCQkgICAgIHJlbG9hZF9zaGFyZWRfbGlicmFyaWVzLAot IAkJCQkgICAgIHNob3dfc29saWJfc2VhcmNoX3BhdGgsCi0gCQkJCSAgICAgJnNldGxpc3QsICZz aG93bGlzdCk7Ci0rCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInNvbGliIiwgbm9fY2xh c3MsICZkZWJ1Z19zb2xpYiwKLSsJCQkgICBfKCJcCi0rU2V0IGRlYnVnZ2luZyBvZiBHTlUvTGlu dXggc2hsaWIgbW9kdWxlLlxuIiksIF8oIlwKLStTaG93IGRlYnVnZ2luZyBzdGF0dXMgb2YgR05V L0xpbnV4IHNobGliIG1vZHVsZS5cbiIpLCBfKCJcCi0rRW5hYmxlcyBwcmludGYgZGVidWdnaW5n IG91dHB1dCBvZiBHTlUvTGludXggc2hsaWIgbW9kdWxlLlxuIiksCi0rCQkJICAgTlVMTCwgTlVM TCwKLSsJCQkgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0gfQotSW5kZXg6IGdk Yi02LjguOTEuMjAwOTA5MjUvZ2RiL3NvbGlzdC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45 MS4yMDA5MDkyNS5vcmlnL2dkYi9zb2xpc3QuaAkyMDA5LTA5LTI1IDEwOjI1OjM4LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3NvbGlzdC5oCTIwMDktMDktMjUg MTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtNjEsNiArNjEsOCBAQCBzdHJ1Y3Qgc29fbGlz dAotICAgICBiZmQgKmFiZmQ7Ci0gICAgIGNoYXIgc3ltYm9sc19sb2FkZWQ7CS8qIGZsYWc6IHN5 bWJvbHMgcmVhZCBpbiB5ZXQ/ICovCi0gICAgIGNoYXIgZnJvbV90dHk7CQkvKiBmbGFnOiBwcmlu dCBtc2dzPyAqLwotKyAgICBjaGFyIG1haW47ICAgICAgICAgICAgICAgICAgLyogZmxhZzogaXMg dGhpcyB0aGUgbWFpbiBleGVjdXRhYmxlPyAqLwotKyAgICBjaGFyIG1haW5fcmVsb2NhdGVkOyAg ICAgICAgLyogZmxhZzogaGFzIGl0IGJlZW4gcmVsb2NhdGVkIHlldD8gKi8KLSAgICAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGU7CS8qIG9iamZpbGUgZm9yIGxvYWRlZCBsaWIgKi8KLSAgICAgc3Ry dWN0IHRhcmdldF9zZWN0aW9uICpzZWN0aW9uczsKLSAgICAgc3RydWN0IHRhcmdldF9zZWN0aW9u ICpzZWN0aW9uc19lbmQ7Ci1AQCAtMTQ3LDQgKzE0OSwxMCBAQCBzdHJ1Y3Qgc3ltYm9sICpzb2xp Yl9nbG9iYWxfbG9va3VwIChjb25zCi0gCQkJCSAgICBjb25zdCBjaGFyICpuYW1lLAotIAkJCQkg ICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSAKLSsvKiBBZGQgdGhlIGxpc3Qgb2Ygc2Vj dGlvbnMgaW4gc29fbGlzdCB0byB0aGUgdGFyZ2V0IHRvX3NlY3Rpb25zLiAgKi8KLStleHRlcm4g dm9pZCBhZGRfdG9fdGFyZ2V0X3NlY3Rpb25zIChpbnQsIHN0cnVjdCB0YXJnZXRfb3BzICosIHN0 cnVjdCBzb19saXN0ICopOwotKwotKy8qIENvbnRyb2xzIHRoZSBwcmludGluZyBvZiBkZWJ1Z2dp bmcgb3V0cHV0LiAgKi8KLStleHRlcm4gaW50IGRlYnVnX3NvbGliOwotKwotICNlbmRpZgotSW5k ZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3N5bWZpbGUtbWVtLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL3N5bWZpbGUtbWVtLmMJMjAwOS0wOS0yNSAx MDoyNTozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1m aWxlLW1lbS5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE1LDcg KzExNSw3IEBAIHN5bWJvbF9maWxlX2FkZF9mcm9tX21lbW9yeSAoc3RydWN0IGJmZCAKLSAJKytp OwotICAgICAgIH0KLSAKLS0gIG9iamYgPSBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKG5iZmQs IGZyb21fdHR5ID8gU1lNRklMRV9WRVJCT1NFIDogMCwKLSsgIG9iamYgPSBzeW1ib2xfZmlsZV9h ZGRfZnJvbV9iZmQgKG5iZmQsIChmcm9tX3R0eSA/IFNZTUZJTEVfVkVSQk9TRSA6IDApIHwgU1lN RklMRV9NQUlOTElORTJfQk9USCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNhaSwgT0JKRl9TSEFSRUQpOwotIAotICAgLyogVGhpcyBtaWdodCBjaGFuZ2Ugb3VyIGlkZWFz IGFib3V0IGZyYW1lcyBhbHJlYWR5IGxvb2tlZCBhdC4gICovCi1JbmRleDogZ2RiLTYuOC45MS4y MDA5MDkyNS9nZGIvc3ltZmlsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDky NS5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOS0wOS0yNSAxMDoyNTozOS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmMJMjAwOS0wOS0yNSAxMDoyNTo0 NS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00OSw2ICs0OSw3IEBACi0gI2luY2x1ZGUgInJlYWRsaW5l L3JlYWRsaW5lLmgiCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAiYmxvY2su aCIKLSsjaW5jbHVkZSAidmFyb2JqLmgiCi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1 ZGUgImV4ZWMuaCIKLSAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKLUBAIC03NzksNyArNzgwLDcg QEAgc3ltc19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIAotICAgLyogTm93 IGVpdGhlciBhZGRycyBvciBvZmZzZXRzIGlzIG5vbi16ZXJvLiAgKi8KLSAKLS0gIGlmIChtYWlu bGluZSkKLSsgIGlmICgoYWRkX2ZsYWdzICYgU1lNRklMRV9NQUlOTElORSkgJiYgIShhZGRfZmxh Z3MgJiBTWU1GSUxFX01BSU5MSU5FMl9PTkxZKSkKLSAgICAgewotICAgICAgIC8qIFdlIHdpbGwg bW9kaWZ5IHRoZSBtYWluIHN5bWJvbCB0YWJsZSwgbWFrZSBzdXJlIHRoYXQgYWxsIGl0cyB1c2Vy cwotICAgICAgICAgIHdpbGwgYmUgY2xlYW5lZCB1cCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5n IHN5bWJvbCByZWFkaW5nLiAgKi8KLUBAIC04MDcsNyArODA4LDcgQEAgc3ltc19mcm9tX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIAotICAgICAgV2Ugbm8gbG9uZ2VyIHdhcm4gaWYg dGhlIGxvd2VzdCBzZWN0aW9uIGlzIG5vdCBhIHRleHQgc2VnbWVudCAoYXMKLSAgICAgIGhhcHBl bnMgZm9yIHRoZSBQQTY0IHBvcnQuICAqLwotLSAgaWYgKCFtYWlubGluZSAmJiBhZGRycyAmJiBh ZGRycy0+b3RoZXJbMF0ubmFtZSkKLSsgIGlmICgvKiFtYWlubGluZSAmJiovIGFkZHJzICYmIGFk ZHJzLT5vdGhlclswXS5uYW1lKQotICAgICB7Ci0gICAgICAgYXNlY3Rpb24gKmxvd2VyX3NlY3Q7 Ci0gICAgICAgYXNlY3Rpb24gKnNlY3Q7Ci1AQCAtODkwLDcgKzg5MSw3IEBAIHN5bXNfZnJvbV9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAgICAgICBpbml0X29iamZpbGVfc2VjdF9p bmRpY2VzIChvYmpmaWxlKTsKLSAgICAgfQotIAotLSAgKCpvYmpmaWxlLT5zZi0+c3ltX3JlYWQp IChvYmpmaWxlLCBtYWlubGluZSk7Ci0rICAoKm9iamZpbGUtPnNmLT5zeW1fcmVhZCkgKG9iamZp bGUsIGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUyX09OTFkgPyAyIDogKGFkZF9mbGFncyAm IFNZTUZJTEVfTUFJTkxJTkUgPyAxIDogMCkpOwotIAotICAgLyogRGlzY2FyZCBjbGVhbnVwcyBh cyBzeW1ib2wgcmVhZGluZyB3YXMgc3VjY2Vzc2Z1bC4gICovCi0gCi1AQCAtOTA5LDE3ICs5MTAs MjIgQEAgbmV3X3N5bWZpbGVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iagotICAgLyogSWYg dGhpcyBpcyB0aGUgbWFpbiBzeW1ib2wgZmlsZSB3ZSBoYXZlIHRvIGNsZWFuIHVwIGFsbCB1c2Vy cyBvZiB0aGUKLSAgICAgIG9sZCBtYWluIHN5bWJvbCBmaWxlLiBPdGhlcndpc2UgaXQgaXMgc3Vm ZmljaWVudCB0byBmaXh1cCBhbGwgdGhlCi0gICAgICBicmVha3BvaW50cyB0aGF0IG1heSBoYXZl IGJlZW4gcmVkZWZpbmVkIGJ5IHRoaXMgc3ltYm9sIGZpbGUuICAqLwotLSAgaWYgKGFkZF9mbGFn cyAmIFNZTUZJTEVfTUFJTkxJTkUpCi0rICBpZiAoYWRkX2ZsYWdzICYgU1lNRklMRV9NQUlOTElO RSAmJiAhKGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUyX09OTFkpKQotICAgICB7Ci0gICAg ICAgLyogT0ssIG1ha2UgaXQgdGhlICJyZWFsIiBzeW1ib2wgZmlsZS4gICovCi0gICAgICAgc3lt ZmlsZV9vYmpmaWxlID0gb2JqZmlsZTsKLSAKLSAgICAgICBjbGVhcl9zeW10YWJfdXNlcnMgKCk7 Ci0gICAgIH0KLS0gIGVsc2UgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxFX0RFRkVSX0JQX1JFU0VU KSA9PSAwKQotKyAgZWxzZSBpZiAoKGFkZF9mbGFncyAmIFNZTUZJTEVfREVGRVJfQlBfUkVTRVQp ID09IDAKLSsgICAgICAgICAgICYmIChhZGRfZmxhZ3MgJiBTWU1GSUxFX01BSU5MSU5FMl9CT1RI KSA9PSAwKQotICAgICB7Ci0gICAgICAgYnJlYWtwb2ludF9yZV9zZXQgKCk7Ci0gICAgIH0KLSsg IGVsc2UKLSsgICAgewotKyAgICAgIC8qIERvbid0IHJlc2V0IGJyZWFrcG9pbnRzIG9yIGl0IHdp bGwgc2NyZXcgdXAgUElFLiAgKi8KLSsgICAgfQotIAotICAgLyogV2UncmUgZG9uZSByZWFkaW5n IHRoZSBzeW1ib2wgZmlsZTsgZmluaXNoIG9mZiBjb21wbGFpbnRzLiAgKi8KLSAgIGNsZWFyX2Nv bXBsYWludHMgKCZzeW1maWxlX2NvbXBsYWludHMsIDAsIGFkZF9mbGFncyAmIFNZTUZJTEVfVkVS Qk9TRSk7Ci1AQCAtOTczLDcgKzk3OSw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29y X29mZnNldHMgKGIKLSAgIC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byBidXJwIGlmIHdlJ2QgYmUK LSAgICAgIGludGVyYWN0aXZlbHkgd2lwaW5nIG91dCBhbnkgZXhpc3Rpbmcgc3ltYm9scy4gICov Ci0gCi0tICBpZiAoKGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUpCi0rICBpZiAoKGFkZF9m bGFncyAmIFNZTUZJTEVfTUFJTkxJTkUpICYmICEoYWRkX2ZsYWdzICYgU1lNRklMRV9NQUlOTElO RTJfT05MWSkKLSAgICAgICAmJiAoaGF2ZV9mdWxsX3N5bWJvbHMgKCkgfHwgaGF2ZV9wYXJ0aWFs X3N5bWJvbHMgKCkpCi0gICAgICAgJiYgZnJvbV90dHkKLSAgICAgICAmJiAoaGF2ZV9mdWxsX3N5 bWJvbHMgKCkgfHwgaGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpCi1AQCAtMTE2Myw2ICsxMTY5LDkg QEAgc3ltYm9sX2ZpbGVfY2xlYXIgKGludCBmcm9tX3R0eSkKLSAJCSAgICBzeW1maWxlX29iamZp bGUtPm5hbWUpCi0gCSAgOiAhcXVlcnkgKF8oIkRpc2NhcmQgc3ltYm9sIHRhYmxlPyAiKSkpKQot ICAgICBlcnJvciAoXygiTm90IGNvbmZpcm1lZC4iKSk7Ci0rI2lmZGVmIENMRUFSX1NPTElCCi0r ICAgICAgQ0xFQVJfU09MSUIgKCk7Ci0rI2VuZGlmCi0gCi0gICBmcmVlX2FsbF9vYmpmaWxlcyAo KTsKLSAKLUBAIC0zMzY3LDYgKzMzNzYsOCBAQCByZXJlYWRfc3ltYm9scyAodm9pZCkKLSAJICAg ICAgLyogRGlzY2FyZCBjbGVhbnVwcyBhcyBzeW1ib2wgcmVhZGluZyB3YXMgc3VjY2Vzc2Z1bC4g ICovCi0gCSAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7Ci0gCi0rCSAgICAg IGluaXRfZW50cnlfcG9pbnRfaW5mbyAob2JqZmlsZSk7Ci0rCi0gCSAgICAgIC8qIElmIHRoZSBt dGltZSBoYXMgY2hhbmdlZCBiZXR3ZWVuIHRoZSB0aW1lIHdlIHNldCBuZXdfbW9kdGltZQotIAkg ICAgICAgICBhbmQgbm93LCB3ZSAqd2FudCogdGhpcyB0byBiZSBvdXQgb2YgZGF0ZSwgc28gZG9u J3QgY2FsbCBzdGF0Ci0gCSAgICAgICAgIGFnYWluIG5vdy4gICovCi1JbmRleDogZ2RiLTYuOC45 MS4yMDA5MDkyNS9nZGIvdGFyZ2V0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkw OTI1Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMDktMDktMjUgMTA6MjU6MzguMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvdGFyZ2V0LmgJMjAwOS0wOS0yNSAxMDoyNTo0 NS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NDUsNyArNTQ1LDcgQEAgc3RydWN0IHRhcmdldF9vcHMK LSAgICAgICAgUmV0dXJuIC0xIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBidWZmZXIgZm9yIGEg d2hvbGUgZW50cnkuCi0gICAgICAgIFJldHVybiAxIGlmIGFuIGVudHJ5IHdhcyByZWFkIGludG8g KlRZUEVQIGFuZCAqVkFMUC4gICovCi0gICAgIGludCAoKnRvX2F1eHZfcGFyc2UpIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzLCBnZGJfYnl0ZSAqKnJlYWRwdHIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgIGdkYl9ieXRlICplbmRwdHIsIENPUkVfQUREUiAqdHlwZXAsIENPUkVfQUREUiAqdmFs cCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9ieXRlICplbmRwdHIsIFVMT05HRVNU ICp0eXBlcCwgQ09SRV9BRERSICp2YWxwKTsKLSAKLSAgICAgLyogU2VhcmNoIFNFQVJDSF9TUEFD RV9MRU4gYnl0ZXMgYmVnaW5uaW5nIGF0IFNUQVJUX0FERFIgZm9yIHRoZQotICAgICAgICBzZXF1 ZW5jZSBvZiBieXRlcyBpbiBQQVRURVJOIHdpdGggbGVuZ3RoIFBBVFRFUk5fTEVOLgotSW5kZXg6 IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3N5bWZpbGUuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02 LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvc3ltZmlsZS5oCTIwMDktMDktMjUgMTA6MjU6MzkuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmlsZS5oCTIwMDkt MDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMjI5LDcgKzIyOSwxMyBAQCBlbnVt IHN5bWZpbGVfYWRkX2ZsYWdzCi0gICAgIFNZTUZJTEVfTUFJTkxJTkUgPSAxIDw8IDIsCi0gCi0g ICAgIC8qIERvIG5vdCBjYWxsIGJyZWFrcG9pbnRfcmVfc2V0IHdoZW4gYWRkaW5nIHRoaXMgc3lt Ym9sIGZpbGUuICAqLwotLSAgICBTWU1GSUxFX0RFRkVSX0JQX1JFU0VUID0gMSA8PCAzCi0rICAg IFNZTUZJTEVfREVGRVJfQlBfUkVTRVQgPSAxIDw8IDMsCi0rCi0rICAgIC8qIFJlZCBIYXQgUElF IHBhdGNoOiBMaWtlIFNZTUZJTEVfTUFJTkxJTkUgYnV0IGZvciBtYWlubGluZSA9PSAyLgotKyAg ICAgICBGb3JtZXIgY29kZSB3YXMgY2hlY2tpbmcgYGlmIChtYWlubGluZSknIGJlaW5nIHNhdGlz ZmllZCBib3RoIGJ5Ci0rICAgICAgIHN0YW5kYXJkIDEgYW5kIHJhcmUgMiwgc2ltdWxhdGUgaXQg aGVyZS4gICovCi0rICAgIFNZTUZJTEVfTUFJTkxJTkUyX09OTFkgPSAxIDw8IDQsCi0rICAgIFNZ TUZJTEVfTUFJTkxJTkUyX0JPVEggPSBTWU1GSUxFX01BSU5MSU5FMl9PTkxZIHwgU1lNRklMRV9N QUlOTElORQotICAgfTsKLSAKLSBleHRlcm4gdm9pZCBzeW1zX2Zyb21fb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKiwKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9pbmZjbWQuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvaW5mY21kLmMJMjAwOS0w OS0yNSAxMDoyNTozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dk Yi9pbmZjbWQuYwkyMDA5LTA5LTI1IDEwOjI1OjQ1LjAwMDAwMDAwMCArMDIwMAotQEAgLTIzMDgs NiArMjMwOCw5IEBAIGF0dGFjaF9jb21tYW5kX3Bvc3Rfd2FpdCAoY2hhciAqYXJncywgaW4KLSAK LSAgIHBvc3RfY3JlYXRlX2luZmVyaW9yICgmY3VycmVudF90YXJnZXQsIGZyb21fdHR5KTsKLSAK LSsgIC8qIFVuZG8gdGhlIGRpc2FibGUgZnJvbSBwb3N0X2NyZWF0ZV9pbmZlcmlvci4gICovCi0r ICBlbmFibGVfYnJlYWtwb2ludHNfYWZ0ZXJfc3RhcnR1cCAoKTsKLSsKLSAgIC8qIEluc3RhbGwg aW5mZXJpb3IncyB0ZXJtaW5hbCBtb2Rlcy4gICovCi0gICB0YXJnZXRfdGVybWluYWxfaW5mZXJp b3IgKCk7Ci0gCi1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvbGludXgtdGRlcC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9saW51eC10ZGVwLmMJ MjAwOS0wOC0wNCAyMjo0MToxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkw OTI1L2dkYi9saW51eC10ZGVwLmMJMjAwOS0wOS0yNSAxMDoyNTo0NS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xNjMsNSArMTYzLDcgQEAgaW4gdGhpcyBzZXNzaW9uLlxuIikpOwotIHZvaWQKLSBfaW5p dGlhbGl6ZV9saW51eF90ZGVwICh2b2lkKQotIHsKLSsjaWYgMCAvKiBnZGItNi4zLXBpZS0yMDA1 MDExMC5wYXRjaCAqLwotICAgb2JzZXJ2ZXJfYXR0YWNoX2V4ZWN1dGFibGVfY2hhbmdlZCAoY2hl Y2tfaXNfcGllX2JpbmFyeSk7Ci0rI2VuZGlmCi0gfQoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmgt dGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2ggYi9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQx MjAyLnBhdGNoCmluZGV4IGNmMjViY2QuLjI1YTEzNTcgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtcmgt dGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKKysrIGIvZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0y MDA0MTIwMi5wYXRjaApAQCAtMTEsOCArMTEsOCBAQCBJbmRleDogZ2RiLTYuOC9nZGIvdGVzdHN1 aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiAgCS1yZSAiLlxbMC05XF0rID0gKy4rICsweC4qXFsw LTkuXF0rLiokZ2RiX3Byb21wdCAkIiB7CiAgCSAgICBwYXNzICJwcmludGVkIHZlcnNpb24gd2l0 aCBjYXN0IgogIAl9Ci0rCS1yZSAiLlxbMC05XF0rID0gLkZlZG9yYSBcW1xcKFxcKTAtOS5hLXpc XC1cXSsuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgInByaW50ZWQgdmVyc2lvbiBGZWRv cmEgb25seSIKKysJLXJlICIuXFswLTlcXSsgPSAuKEZlZG9yYXxSZWQgSGF0IEVudGVycHJpc2Ug TGludXgpIFxbXFwoXFwpMC05LmEtelxcLVxdKy4qJGdkYl9wcm9tcHQgJCIgeworKwkgICAgcGFz cyAicHJpbnRlZCB2ZXJzaW9uIEZlZG9yYSBvciBSZWQgSGF0IEVudGVycHJpc2UgTGludXggb25s eSIKICsJfQogIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJwcmludGVkIHZlcnNpb24i IH0KICAJdGltZW91dAkJeyBmYWlsICIodGltZW91dCkgcHJpbnRlZCB2ZXJzaW9uIiB9CgpkaWZm IC0tZ2l0IGEvZ2RiLTYuMy1zZXBjcmMtMjAwNTA0MDIucGF0Y2ggYi9nZGItNi4zLXNlcGNyYy0y MDA1MDQwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMwYTczOS4uMDAw MDAwMAotLS0gYS9nZGItNi4zLXNlcGNyYy0yMDA1MDQwMi5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDgyICswLDAgQEAKLTIwMDUtMDQtMDIgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAZ251Lm9y Zz4KLQotCSogc3ltZmlsZS5jIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyk6IFdoZW4gdGhl IENSQ3MgbWlzbWF0Y2gKLQlwcmludCBhIHdhcm5pbmcuCi0JKGZpbmRfc2VwYXJhdGVfZGVidWdf ZmlsZSk6IFBhc3MgaW4gdGhlIG9iamZpbGUncyBuYW1lLgotCi1JbmRleDogZ2RiLTYuOC41MC4y MDA4MTEyOC9nZGIvc3ltZmlsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA4MTEy OC5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOC0xMC0wMyAxODozNjoxMC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9zeW1maWxlLmMJMjAwOC0xMi0wMSAxNjozNDoz Ni4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjk2LDcgKzEyOTYsOCBAQCBnZXRfZGVidWdfbGlua19p bmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCi0gfQotIAotIHN0YXRpYyBpbnQKLS1zZXBhcmF0ZV9k ZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbG9uZyBjcmMpCi0r c2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxv bmcgY3JjLAotKwkJCSAgICBjb25zdCBjaGFyICpwYXJlbnRfbmFtZSkKLSB7Ci0gICB1bnNpZ25l ZCBsb25nIGZpbGVfY3JjID0gMDsKLSAgIGJmZCAqYWJmZDsKLUBAIC0xMzE2LDcgKzEzMTcsMTUg QEAgc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKgotIAotICAgYmZkX2Ns b3NlIChhYmZkKTsKLSAKLS0gIHJldHVybiBjcmMgPT0gZmlsZV9jcmM7Ci0rICBpZiAoY3JjICE9 IGZpbGVfY3JjKQotKyAgICB7Ci0rICAgICAgd2FybmluZyAoXygidGhlIGRlYnVnIGluZm9ybWF0 aW9uIGZvdW5kIGluIFwiJXNcIiIKLSsJCSAiIGRvZXMgbm90IG1hdGNoIFwiJXNcIiAoQ1JDIG1p c21hdGNoKS5cbiIpLAotKwkgICAgICAgbmFtZSwgcGFyZW50X25hbWUpOwotKyAgICAgIHJldHVy biAwOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMTsKLSB9Ci0gCi0gY2hhciAqZGVidWdfZmlsZV9k aXJlY3RvcnkgPSBOVUxMOwotQEAgLTEzNjgsNiArMTM3Nyw4IEBAIGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZSAoc3RydWN0IG9iamZpbGUKLSAgIGJhc2VuYW1lID0gZ2V0X2RlYnVnX2xpbmtfaW5m byAob2JqZmlsZSwgJmNyYzMyKTsKLSAKLSAgIGlmIChiYXNlbmFtZSA9PSBOVUxMKQotKyAgICAv KiBUaGVyZSdzIG5vIHNlcGFyYXRlIGRlYnVnIGluZm8sIGhlbmNlIHRoZXJlJ3Mgbm8gd2F5IHdl IGNvdWxkCi0rICAgICAgIGxvYWQgaXQgPT4gbm8gd2FybmluZy4gICovCi0gICAgIHJldHVybiBO VUxMOwotIAotICAgZGlyID0geHN0cmR1cCAob2JqZmlsZS0+bmFtZSk7Ci1AQCAtMTM5NSw3ICsx NDA2LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQotICAgc3Ry Y3B5IChkZWJ1Z2ZpbGUsIGRpcik7Ci0gICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOwot IAotLSAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkK LSsgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2Jq ZmlsZS0+bmFtZSkpCi0gICAgIHsKLSAgICAgICB4ZnJlZSAoYmFzZW5hbWUpOwotICAgICAgIHhm cmVlIChkaXIpOwotQEAgLTE0MDgsNyArMTQxOSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZSAoc3RydWN0IG9iamZpbGUKLSAgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIpOwotICAgc3RyY2F0 IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLS0gIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4 aXN0cyAoZGVidWdmaWxlLCBjcmMzMikpCi0rICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlz dHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQotICAgICB7Ci0gICAgICAgeGZy ZWUgKGJhc2VuYW1lKTsKLSAgICAgICB4ZnJlZSAoZGlyKTsKLUBAIC0xNDIxLDcgKzE0MzIsNyBA QCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlCi0gICBzdHJjYXQgKGRl YnVnZmlsZSwgZGlyKTsKLSAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0gCi0tICBp ZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIpKQotKyAgaWYg KHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxlLT5u YW1lKSkKLSAgICAgewotICAgICAgIHhmcmVlIChiYXNlbmFtZSk7Ci0gICAgICAgeGZyZWUgKGRp cik7Ci1AQCAtMTQ0MCw3ICsxNDUxLDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1 Y3Qgb2JqZmlsZQotICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIpOwotICAgICAgIHN0cmNh dCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0gCi0tICAgICAgaWYgKHNlcGFyYXRlX2RlYnVnX2Zp bGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkKLSsgICAgICBpZiAoc2VwYXJhdGVfZGVidWdf ZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQotIAl7Ci0gCSAg eGZyZWUgKGNhbm9uX25hbWUpOwotIAkgIHhmcmVlIChiYXNlbmFtZSk7CgpkaWZmIC0tZ2l0IGEv Z2RiLTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2ggYi9nZGItNi4zLXRlc3QtZHRvcmZp eC0yMDA1MDEyMS5wYXRjaAppbmRleCBkZjQ2ODU5Li5iY2M0NTY1IDEwMDY0NAotLS0gYS9nZGIt Ni4zLXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaAorKysgYi9nZGItNi4zLXRlc3QtZHRvcmZp eC0yMDA1MDEyMS5wYXRjaApAQCAtMTI5LDcgKzEyOSw3IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwogK30KIC0tLSBnZGItNi4zL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnN0cnVj dG9ydGVzdC5leHAuZml4CUZyaSBKYW4gMjEgMTc6MDc6MDIgMjAwNQogKysrIGdkYi02LjMvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmV4cAlGcmkgSmFuIDIxIDE3OjA1OjI5 IDIwMDUKLUBAIC0wLDAgKzEsMTMxIEBACitAQCAtMCwwICsxLDEzNyBAQAogKyMgVGhpcyB0ZXN0 Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKICsjIENvcHlyaWdodCAy MDA1LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTc5LDggKzE3OSw5 IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogKyAgICBnZGJfc3VwcHJlc3NfdGVz dHMKICt9CiArCi0rIyBCcmVhayBvbiB0aGUgdmFyaW91cyBmb3JtcyBvZiB0aGUgQTo6QSBjb25z dHJ1Y3RvcgotK2dkYl90ZXN0ICJicmVhayBBXDpcOkEiICJCcmVha3BvaW50IDIgYXQgLiogXFwo MiBsb2NhdGlvbnNcXCkiICJicmVha2luZyBvbiBBOjpBIgorKyMgQnJlYWsgb24gdGhlIHZhcmlv dXMgZm9ybXMgb2YgdGhlIEE6OkEgY29uc3RydWN0b3IuCisrIyAiICgyIGxvY2F0aW9ucykiIGlz IGRpc3BsYXllZCBkZXBlbmRpbmcgb24gRysrIHZlcnNpb24uCisrZ2RiX3Rlc3QgImJyZWFrIEFc Olw6QSIgIkJyZWFrcG9pbnQgMiBhdCAuKiIgImJyZWFraW5nIG9uIEE6OkEiCiArICAgICAgICAK ICsjIFZlcmlmeSB0aGF0IHdlIGJyZWFrIGZvciB0aGUgQSBjb25zdHJ1Y3RvciB0d28gdGltZXMK ICsjIE9uY2UgZm9yIG5ldyBBIGFuZCBvbmNlIGZvciBuZXcgQgpAQCAtMjA2LDcgKzIwNyw4IEBA IEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogK2dkYl90ZXN0ICJicmVhayAnQTo6QSgp JyIgIiIgImJyZWFrIGluIGNvbnN0cnVjdG9yIEEgMiIKICtnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiRmlyc3QgbGluZSBBIgogK3NldCBzZWNvbmRfbGluZSBbZ2RiX2dldF9saW5lX251bWJl ciAiU2Vjb25kIGxpbmUgQSJdCi0rZ2RiX3Rlc3QgImJyZWFrICRzZWNvbmRfbGluZSIgIkJyZWFr cG9pbnQgLiosIGxpbmUgJHNlY29uZF9saW5lLiBcXCgyIGxvY2F0aW9uc1xcKSIgImJyZWFrIGJ5 IGxpbmUgaW4gY29uc3RydWN0b3IiCisrIyAiICgyIGxvY2F0aW9ucykiIGlzIGRpc3BsYXllZCBk ZXBlbmRpbmcgb24gRysrIHZlcnNpb24uCisrZ2RiX3Rlc3QgImJyZWFrICRzZWNvbmRfbGluZSIg IkJyZWFrcG9pbnQgLiosIGxpbmUgJHNlY29uZF9saW5lXFwuLioiICJicmVhayBieSBsaW5lIGlu IGNvbnN0cnVjdG9yIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJTZWNvbmQgbGluZSBB IgogK2dkYl90ZXN0ICJidCIgIiMwLipBLiojMS4qbWFpbi4qIiAiVmVyaWZ5IGluIGluLWNoYXJn ZSBBOjpBIHNlY29uZCBsaW5lIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJTZWNvbmQg bGluZSBBIgpAQCAtMjE3LDcgKzIxOSw4IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwogK2dkYl90ZXN0ICJicmVhayAnQTo6fkEoKSciICIiICJicmVhayBpbiBjb25zdHJ1Y3RvciB+ QSAyIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJGaXJzdCBsaW5lIH5BIgogK3NldCBz ZWNvbmRfbGluZV9kdG9yIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJTZWNvbmQgbGluZSB+QSJdCi0r Z2RiX3Rlc3QgImJyZWFrICRzZWNvbmRfbGluZV9kdG9yIiAiQnJlYWtwb2ludCAuKiwgbGluZSAk c2Vjb25kX2xpbmVfZHRvci4gXFwoMiBsb2NhdGlvbnNcXCkiICJicmVhayBieSBsaW5lIGluIGRl c3RydWN0b3IiCisrIyAiICgyIGxvY2F0aW9ucykiIGlzIGRpc3BsYXllZCBkZXBlbmRpbmcgb24g RysrIHZlcnNpb24uCisrZ2RiX3Rlc3QgImJyZWFrICRzZWNvbmRfbGluZV9kdG9yIiAiQnJlYWtw b2ludCAuKiwgbGluZSAkc2Vjb25kX2xpbmVfZHRvclxcLi4qIiAiYnJlYWsgYnkgbGluZSBpbiBk ZXN0cnVjdG9yIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJTZWNvbmQgbGluZSB+QSIK ICtnZGJfdGVzdCAiYnQiICIjMC4qQS4qIzEuKm1haW4uKiIgIlZlcmlmeSBpbiBpbi1jaGFyZ2Ug QTo6fkEgc2Vjb25kIGxpbmUiCiArIyBGSVhNRTogQW5hbHlzZSB0aGlzIGNhc2UgYmV0dGVyLgpA QCAtMjMyLDggKzIzNSwxMSBAQCBJbmRleDogZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKICtnZGJf bG9hZCAke2JpbmZpbGV9CiArcnVudG9fbWFpbgogKworK3NldCBmaXJzdF9saW5lX2R0b3IgW2dk Yl9nZXRfbGluZV9udW1iZXIgIkZpcnN0IGxpbmUgfkMiXQorK3NldCBkZWZpbmVfbGluZV9kdG9y IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEZXN0cnVjdG9yIEMiXQogKyMgQnJlYWsgb24gdGhlIHZh cmlvdXMgZm9ybXMgb2YgdGhlIEM6On5DIGRlc3RydWN0b3IKLStnZGJfdGVzdCAiYnJlYWsgQ1w6 XDp+QyIgIkJyZWFrcG9pbnQgLiogXFwoMyBsb2NhdGlvbnNcXCkiICJicmVha2luZyBvbiBDOjp+ QyIKKysjICIgKFsyM10gbG9jYXRpb25zKSIgaXMgZGlzcGxheWVkIGRlcGVuZGluZyBvbiBHKysg dmVyc2lvbi4KKytnZGJfdGVzdCAiYnJlYWsgQ1w6XDp+QyIgIkJyZWFrcG9pbnQgLiosIGxpbmUg KCRkZWZpbmVfbGluZV9kdG9yfCRkZWZpbmVfbGluZV9kdG9yKVxcLi4qIiAiYnJlYWtpbmcgb24g Qzo6fkMiCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkZpcnN0IGxpbmUgfkMiCiArCiAr IyBWZXJpZnkgdGhhdCB3ZSBjYW4gYnJlYWsgYnkgbGluZSBudW1iZXIgaW4gYSBkZXN0cnVjdG9y IGFuZCBmaW5kCkBAIC0yNDIsOCArMjQ4LDggQEAgSW5kZXg6IGdkYi90ZXN0c3VpdGUvQ2hhbmdl TG9nCiArZ2RiX2xvYWQgJHtiaW5maWxlfQogK2RlbGV0ZV9icmVha3BvaW50cwogKwotK3NldCBm aXJzdF9saW5lX2R0b3IgW2dkYl9nZXRfbGluZV9udW1iZXIgIkZpcnN0IGxpbmUgfkMiXQotK2dk Yl90ZXN0ICJicmVhayAkZmlyc3RfbGluZV9kdG9yIiAiQnJlYWtwb2ludCAuKiwgbGluZSAkZmly c3RfbGluZV9kdG9yLiBcXCgzIGxvY2F0aW9uc1xcKSIgImJyZWFrIGJ5IGxpbmUgaW4gZGVzdHJ1 Y3RvciIKKysjICIgKDMgbG9jYXRpb25zKSIgaXMgZGlzcGxheWVkIGRlcGVuZGluZyBvbiBHKysg dmVyc2lvbi4KKytnZGJfdGVzdCAiYnJlYWsgJGZpcnN0X2xpbmVfZHRvciIgIkJyZWFrcG9pbnQg LiosIGxpbmUgJGZpcnN0X2xpbmVfZHRvclxcLi4qIiAiYnJlYWsgYnkgbGluZSBpbiBkZXN0cnVj dG9yIgogKwogKyMgUnVuIHRvIGBtYWluJyB3aGVyZSB3ZSBiZWdpbiBvdXIgdGVzdHMuCiArIyBT ZXQgdGhlIGJyZWFrcG9pbnRzIGZpcnN0IHRvIHRlc3QgUElFIG11bHRpcGxlLVBDIEJSRUFLUE9J TlRfUkVfU0VULgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gg Yi9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4IDZiYTI0YTAuLjkyMDg5ODEg MTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKysrIGIvZ2RiLTYu My10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtNDM2LDcgKzQzNiw3IEBAIEluZGV4OiBnZGIt Ni44LjUwLjIwMDkwOTA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCiAr KysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAky MDA5LTA5LTA5IDE5OjA2OjAxLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw0MzIgQEAKK0BA IC0wLDAgKzEsNDMzIEBACiArIyAgIENvcHlyaWdodCAxOTk3LCAxOTk5LCAyMDAyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTgxNyw3ICs4MTcs OCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0 YWNoLmV4cAogKyAgICAgIC1yZSAiLip3YXJuaW5nOiByZWFkaW5nIHJlZ2lzdGVyLipJLipPIGVy cm9yLiokZ2RiX3Byb21wdCAkIiB7CiArICAgICAgICAgZmFpbCAiYXR0YWNoIGNhbGwsIHJlYWQg cmVnaXN0ZXIgMyBlcnJvciIKICsgICAgIH0KLSsgICAgIC1yZSAiQXR0YWNoaW5nIHRvLipwcm9j ZXNzICR0ZXN0cGlkLipsaWJjLiokZ2RiX3Byb21wdCAkIiB7CisrICAgICAtcmUgIkF0dGFjaGlu ZyB0by4qcHJvY2VzcyAkdGVzdHBpZC4qJGdkYl9wcm9tcHQgJCIgeworKyAgICAgICAgICMgbGli YyBpcyByZWxvY2F0ZWQsIG5vdCByZWxvY2F0ZWQsIHRoZXJlZm9yZSBub3QgcHJpbnRlZC4KICsg ICAgICAgICBwYXNzICJhdHRhY2ggY2FsbCIKICsgICAgIH0KICsgICAgICAtcmUgIiRnZGJfcHJv bXB0ICQiIHtmYWlsICJhdHRhY2ggY2FsbCJ9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10ZXN0LXNl cGNyYy0yMDA1MDQwMi5wYXRjaCBiL2dkYi02LjMtdGVzdC1zZXBjcmMtMjAwNTA0MDIucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZTA4NmYuLjAwMDAwMDAKLS0tIGEvZ2Ri LTYuMy10ZXN0LXNlcGNyYy0yMDA1MDQwMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICsw LDAgQEAKLUluZGV4OiBnZGItNi44L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VwZGVidWcuZXhw Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2Vw ZGVidWcuZXhwCTIwMDgtMDItMjYgMDk6MTQ6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYu OC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NlcGRlYnVnLmV4cAkyMDA4LTA3LTE0IDEwOjI2OjE5 LjAwMDAwMDAwMCArMDIwMAotQEAgLTk4MSwzICs5ODEsNDAgQEAgaWYgIVtzdHJpbmcgY29tcGFy ZSAkYnVpbGRfaWRfZGVidWdfZmlsZQotICAgICAjIFNwYXJlIGRlYnVnIGZpbGVzIG1heSBjb25m dXNlIHRlc3RzdWl0ZSBydW5zIGluIHRoZSBmdXR1cmUuCi0gICAgIHJlbW90ZV9leGVjIGJ1aWxk ICJybSAtZiAke29iamRpcn0vJHtzdWJkaXJ9LyR7YnVpbGRfaWRfZGVidWdfZmlsZW5hbWV9Igot IH0KLSsKLSsKLSsjIENvbXBpbGUgdXAgYSBzZWNvbmQsIGRpZmZlcmVudCwgb2JqZWN0IGZpbGUu ICBDb3B5IGl0cyBkZWJ1ZyBpbmZvCi0rIyBvdmVyIHRoZSB0b3Agb2YgdGhlIG5ldyBkZWJ1ZyBp bmZvLiAgTm90ZSB0aGF0IHNvbWV3aGVyZSBpbiB0aGUKLSsjIGFib3ZlIHRoZSAic2V0IGRlYnVn LWZpbGUtZGlyZWN0b3J5IiB2YXJpYWJsZSBpcyBzZXQgdG8KLSsjICR7b2JqZGlyfS8ke3N1YmRp cn0gc28gbmVlZCB0byBtb3ZlIHRoaW5ncyB0aGVyZS4KLSsKLStzZXQgZXhpc3RpbmdfYmluZmls ZSAkYmluZmlsZQotK3NldCB0ZXN0ZmlsZSAic2VwZGVidWcyIgotK3NldCBzcmNmaWxlICR7dGVz dGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0r c2V0IGNvcnJ1cHRfZGVidWdfZmlsZSBbc2VwYXJhdGVfZGVidWdfZmlsZW5hbWUgJGJpbmZpbGVd Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS13fV0gIT0gIiIg fSB7Ci0rICAgIHJldHVybiAtMQotK30KLStpZiBbZ2RiX2dudV9zdHJpcF9kZWJ1ZyAkYmluZmls ZV0gewotKyAgICAjIGNoZWNrIHRoYXQgeW91IGhhdmUgYSByZWNlbnQgdmVyc2lvbiBvZiBzdHJp cCBhbmQgb2JqY29weSBpbnN0YWxsZWQKLSsgICAgdW5zdXBwb3J0ZWQgImNhbm5vdCBwcm9kdWNl IHNlcGFyYXRlIGRlYnVnIGluZm8gZmlsZXMiCi0rICAgIHJldHVybiAtMQotK30KLStyZW1vdGVf ZXhlYyBidWlsZCAiY3AgJGNvcnJ1cHRfZGVidWdfZmlsZSAke2V4aXN0aW5nX2JpbmZpbGV9LmRl YnVnIgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK3NldCB0ZXN0ICAiQSBjb3Jy dXB0IGRlYnVnIGZpbGUgZ2V0cyBhIHdhcm5pbmciCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImZpbGUg JGV4aXN0aW5nX2JpbmZpbGUiICIkdGVzdCIgewotKyAgICAtcmUgIndhcm5pbmc6LiptaXNtYXRj aC4qIiB7Ci0rCXBhc3MgIiR0ZXN0IgotKyAgICB9Ci0rICAgIC1yZSAiLnkgb3Igbi4gIiB7Ci0r CXNlbmRfZ2RiICJ5XG4iCi0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0rfQotSW5kZXg6IGdkYi02 LjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1ZzIuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02Ljgv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1ZzIuYwkyMDA4LTA3LTE0IDEwOjI2OjE5LjAw MDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1IEBACi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSwgY2hhciAqZW52cFtdKQotK3sKLSsgIHJldHVybiAwOwotK30KCmRpZmYgLS1n aXQgYS9nZGItNi4zLXdhdGNocG9pbnQtY29uZC1nb25lLXRlc3QucGF0Y2ggYi9nZGItNi4zLXdh dGNocG9pbnQtY29uZC1nb25lLXRlc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGNkOGEyMzcuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuMy13YXRjaHBvaW50LWNvbmQtZ29uZS10 ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS0tLSAvZGV2L251bGwJ MjAwOC0wNC0wMyAwMDozOTozMC43MTQwMjE2MDQgKzAyMDAKLSsrKyBnZGItNi4zL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1jb25kLWdvbmUtc3RyaXBwZWQuYwkyMDA4LTA0LTA1 IDIwOjI2OjI5LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwyMyBAQAotKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0 IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAKLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gKi8KLSsKLSt2b2lkCi0ranVtcGVy ICh2b2lkICgqanVtcHRvKSAodm9pZCkpCi0rewotKyAgKCpqdW1wdG8pICgpOwotK30KLS0tLSAv ZGV2L251bGwJMjAwOC0wNC0wMyAwMDozOTozMC43MTQwMjE2MDQgKzAyMDAKLSsrKyBnZGItNi4z L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1jb25kLWdvbmUuYwkyMDA4LTA0LTA1 IDIwOjI2OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwzNyBAQAotKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0 IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAKLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gKi8KLSsKLStleHRlcm4gdm9pZCBq dW1wZXIgKHZvaWQgKCpqdW1wdG8pICh2b2lkKSk7Ci0rCi0rdm9pZAotK2Z1bmMgKCkKLSt7Ci0r CWludCBhLCBiLCBjOwotKwotKwlhID0gYiA9IGMgPSA1OwotKwlhID0gYiA9IGMgPSAxMDsJLyog d2F0Y2hwb2ludC1oZXJlICovCi0rCWMgPSBhICsgYjsKLSt9Ci0rCi0raW50Ci0rbWFpbiAoKQot K3sKLSsJanVtcGVyIChmdW5jKTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotLS0tIC9kZXYvbnVsbAky MDA4LTA0LTAzIDAwOjM5OjMwLjcxNDAyMTYwNCArMDIwMAotKysrIGdkYi02LjMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS5leHAJMjAwOC0wNC0wNSAyMDozMzox OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNTkgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNl ICR0cmFjZWxldmVsCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAid2F0Y2hwb2ludC1jb25kLWdvbmUi Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBzcmNmaWxlc3RyaXBwZWQgJHt0ZXN0 ZmlsZX0tc3RyaXBwZWQuYwotK3NldCBvYmpmaWxlc3RyaXBwZWQgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfS1zdHJpcHBlZC5vCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQotKwotKyMgV2UgbmVlZCB0byBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHdpdGhv dXQgRFdBUkYgdG8gY3Jhc2ggb2xkZXIgR0RCLgotKyMgU3RlcHBpbmcgaW50byBhIGR5bmFtaWMg ZnVuY3Rpb24gdHJhbXBvbGluZSBvciBzdGVwcGluZyBvdXQgb2YgTUFJTiBtYXkgd29yawotKyMg YnV0IGl0IGlzIG5vdCBhIHJlbGlhYmxlIEZBSUwgY2FzZS4KLSsKLStpZiAgeyBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlc3RyaXBwZWR9IiAiJHtvYmpmaWxlc3Ry aXBwZWR9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2Zp bGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdp bGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtvYmpmaWxlc3RyaXBwZWR9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgZ2RiX3N1cHByZXNzX2VudGly ZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmls ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0 Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5m aWxlfQotKwotKyMgUHJvYmxlbSBkb2VzIG5vdCBvY2N1ciBvdGhlcndpc2UuCi0rZ2RiX3Rlc3Qg InNldCBjYW4tdXNlLWh3LXdhdGNocG9pbnRzIDAiCi0rCi0rcnVudG9fbWFpbgotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ3YXRjaHBvaW50LWhlcmUiXQotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJQbGFjZSB0byBzZXQgdGhlIHdhdGNocG9pbnQiCi0rCi0rIyBU aGUgY29uZGl0aW9uIGBjID09IDMwJyBpcyB0aGUgdGVzdGVkIGN1bHByaXQuCi0rZ2RiX3Rlc3Qg IndhdGNoIGMgaWYgYyA9PSAzMCIgIiIgIlBsYWNlIHRoZSB3YXRjaHBvaW50IgotKwotKyMgTm8g ZnVuY3Rpb25hbGl0eSwganVzdCB0byBjaGVjayB0aGUgc3RhdGUuCi0rZ2RiX3Rlc3QgImJhY2t0 cmFjZSIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAgICAgICAgIldhdGNocG9pbnQgLiog ZGVsZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9jayBpbi4qd2hpY2gg aXRzIGV4cHJlc3Npb24gaXMgdmFsaWQuLippbiAoanVtcGVyfGZ1bmMpLioiIFwKLSsgICAgICAg ICAiQ2F0Y2ggdGhlIG5vIGxvbmdlciB2YWxpZCB3YXRjaHBvaW50IgoKZGlmZiAtLWdpdCBhL2dk Yi02LjUtYnoyMTY3MTEtY2xvbmUtaXMtb3V0ZXJtb3N0LnBhdGNoIGIvZ2RiLTYuNS1iejIxNjcx MS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2gKaW5kZXggYjJkYzQ1MS4uYWIwYzkwMiAxMDA2NDQK LS0tIGEvZ2RiLTYuNS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2gKKysrIGIvZ2Ri LTYuNS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2gKQEAgLTE2Miw2ICsxNjIsMTU0 IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9hbWQ2NC10ZGVwLmMKICB9OwogIAog IC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCistLS0gYS9nZGIvaWE2NC10ZGVwLmMK KysrKyBiL2dkYi9pYTY0LXRkZXAuYworQEAgLTIxMjIsNiArMjEyMiwxMzcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBmcmFtZV91bndpbmQgaWE2NF9mcmFtZV91bndpbmQgPQorICAgZGVmYXVsdF9m cmFtZV9zbmlmZmVyCisgfTsKKyAKKysvKiBEZXRlY3QgdGhlIG91dGVybW9zdCBmcmFtZTsgZHVy aW5nIHVud2luZCBvZgorKyAgIAkjNiAgMHgyMDAwMDAwMDAwMzQ3MTAwIGluIF9fY2xvbmUyICgp IGZyb20gL2xpYi9saWJjLnNvLjYuMQorKyAgIGF2b2lkIHRoZSBhZGRpdGlvbmFsIGJvZ3VzIGZy YW1lCisrICAgCSM3ICAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkgICovCisrCisrc3RhdGlj IGNoYXIgbGludXhfY2xvbmUyX2NvZGVbXSA9CisreworKy8qIGxpYmMvc3lzZGVwcy91bml4L3N5 c3YvbGludXgvaWE2NC9jbG9uZTIuUyAqLworKyAgMHgwOSwgMHgwMCwgMHgyMCwgMHgxMiwgMHg5 MCwgMHgxMSwgMHgwMCwgMHg0MCwKKysgIDB4MjgsIDB4MjAsIDB4MjMsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDQsIDB4MDAsCisrLyogICAgICAgICBzdDQgW3I5XT1yOCAqLworKy8qICAgICAgICAg c3Q0IFtyMTBdPXI4ICovCisrLyogICAgICAgICA7OyAqLworKy8qICNlbmRpZiAqLworKyAgMHgw MiwgMHg1MCwgMHgyMSwgMHg0MCwgMHgxOCwgMHgxNCwgMHg5MCwgMHgwMiwKKysgIDB4OTAsIDB4 MDAsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsCisrLyogMTogICAgICBsZDgg b3V0MT1baW4wXSw4ICAgICAgICB8KiBSZXRyaWV2ZSBjb2RlIHBvaW50ZXIuICAgICAgICp8ICov CisrLyogICAgICAgICBtb3Ygb3V0MD1pbjQgICAgICAgICAgICB8KiBQYXNzIHByb3BlciBhcmd1 bWVudCB0byBmbiAqfCAqLworKy8qICAgICAgICAgOzsgKi8KKysgIDB4MTEsIDB4MDgsIDB4MDAs IDB4NDAsIDB4MTgsIDB4MTAsIDB4NjAsIDB4NTAsCisrICAweDA1LCAweDgwLCAweDAzLCAweDAw LCAweDY4LCAweDAwLCAweDgwLCAweDEyLAorKy8qICAgICAgICAgbGQ4IGdwPVtpbjBdICAgICAg ICAgICAgfCogTG9hZCBmdW5jdGlvbiBncC4gICAgICAgICAgICAqfCAqLworKy8qICAgICAgICAg bW92IGI2PW91dDEgKi8KKysvKiAgICAgICAgIGJyLmNhbGwuZHB0ay5tYW55IHJwPWI2IHwqIENh bGwgZm4oYXJnKSBpbiB0aGUgY2hpbGQgICAgKnwgKi8KKysvKiAgICAgICAgIDs7ICovCisrICAw eDEwLCAweDQ4LCAweDAxLCAweDEwLCAweDAwLCAweDIxLCAweDEwLCAweDAwLAorKyAgMHhhMCwg MHgwMCwgMHg0MiwgMHgwMCwgMHg5OCwgMHhkZiwgMHhmNywgMHg1YiwKKysvKiAgICAgICAgIG1v diBvdXQwPXI4ICAgICAgICAgICAgIHwqIEFyZ3VtZW50IHRvIF9leGl0ICAgICAgICAgICAgKnwg Ki8KKysvKiAgICAgICAgIG1vdiBncD1sb2MwICovCisrLyogICAgICAgICAuZ2xvYmwgSElEREVO X0pVTVBUQVJHRVQoX2V4aXQpICovCisrLyogICAgICAgICBici5jYWxsLmRwbnQubWFueSBycD1I SURERU5fSlVNUFRBUkdFVChfZXhpdCkgKi8KKysvKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwqIGNhbGwgX2V4aXQgd2l0aCByZXN1bHQgZnJvbSBmbi4gICAgICAqfCAqLworKyAg MHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwKKysgIDB4MDAs IDB4MDIsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODQsIDB4MDAKKysvKiAgICAgICAgIHJl dCAgICAgICAgICAgICAgICAgICAgIHwqIE5vdCByZWFjaGVkLiAgICAgICAgICp8ICovCisrfTsK KysKKysjZGVmaW5lIExJTlVYX0NMT05FX1BSRV9TTE9UUyAzCS8qIE51bWJlciBvZiBzbG90cyBi ZWZvcmUgUEMuICAqLworKyNkZWZpbmUgTElOVVhfQ0xPTkVfTEVOIChzaXplb2YgbGludXhfY2xv bmUyX2NvZGUpCisrCisrc3RhdGljIGludAorK2lhNjRfbGludXhfY2xvbmUyX3J1bm5pbmcgKHN0 cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9m cmFtZV9wYyAodGhpc19mcmFtZSk7CisrICBjaGFyIGJ1ZltMSU5VWF9DTE9ORV9MRU5dOworKyAg c3RydWN0IG1pbmltYWxfc3ltYm9sICptaW5zeW07CisrICBsb25nIGxvbmcgaW5zdHI7CisrCisr ICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAodGhpc19mcmFtZSwgcGMgLSBMSU5VWF9D TE9ORV9QUkVfU0xPVFMgKiAxNiwKKysJCQkJIGJ1ZiwgTElOVVhfQ0xPTkVfTEVOKSkKKysgICAg cmV0dXJuIDA7CisrCisrICBpZiAobWVtY21wIChidWYsIGxpbnV4X2Nsb25lMl9jb2RlLCBMSU5V WF9DTE9ORV9QUkVfU0xPVFMgKiAxNikgIT0gMCkKKysgICAgcmV0dXJuIDA7CisrCisrICAvKiBB ZGp1c3QgdGhlIGV4cGVjdGVkICJfZXhpdCIgYWRkcmVzcy4gICovCisrICBtaW5zeW0gPSBsb29r dXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoIl9leGl0IiwgTlVMTCk7CisrICBpZiAobWluc3ltID09 IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgaW5zdHIgPSBzbG90Tl9jb250ZW50cyAoJmJ1 ZltMSU5VWF9DTE9ORV9QUkVfU0xPVFMgKiAxNl0sIDIpOworKyAgaW5zdHIgJj0gfigoKDFMIDw8 IDIwKSAtIDEpIDw8IDEzKTsKKysgIC8qIEFkZHJlc3MgaXMgcmVsYXRpdmUgdG8gdGhlIGp1bXAg aW5zdHJ1Y3Rpb24gc2xvdCwgbm90IHRoZSBuZXh0IG9uZS4gICovCisrICBpbnN0ciB8PSAoKChT WU1CT0xfVkFMVUVfQUREUkVTUyAobWluc3ltKSAtIChwYyAmIH4weGZMKSkgPj4gNCkKKysJICAg ICYgKCgxTCA8PCAyMCkgLSAxKSkgPDwgMTM7CisrICByZXBsYWNlX3Nsb3ROX2NvbnRlbnRzICgm YnVmW0xJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2XSwgaW5zdHIsIDIpOworKworKyAgaWYgKG1l bWNtcCAoJmJ1ZltMSU5VWF9DTE9ORV9QUkVfU0xPVFMgKiAxNl0sCisrICAgICAgICAgICAgICAm bGludXhfY2xvbmUyX2NvZGVbTElOVVhfQ0xPTkVfUFJFX1NMT1RTICogMTZdLAorKwkgICAgICBM SU5VWF9DTE9ORV9MRU4gLSAoTElOVVhfQ0xPTkVfUFJFX1NMT1RTICogMTYpKSAhPSAwKQorKyAg ICByZXR1cm4gMDsKKysKKysgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50CisraWE2NF9v dXRlcm1vc3RfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQorK3sKKysgIENP UkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7CisrICBjaGFyICpuYW1lOwor KworKyAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsIE5VTEwsIE5VTEwpOwor KworKyAgLyogSWYgd2UgaGF2ZSBOQU1FLCB3ZSBjYW4gb3B0aW1pemUgdGhlIHNlYXJjaC4KKysg ICAgIGBjbG9uZScgTkFNRSBzdGlsbCBuZWVkcyB0byBoYXZlIHRoZSBjb2RlIGNoZWNrZWQgYXMg aXRzIG5hbWUgbWF5IGJlCisrICAgICBwcmVzZW50IGluIHRoZSB1c2VyIGNvZGUuCisrICAgICBg X19jbG9uZScgTkFNRSBzaG91bGQgbm90IGJlIHByZXNlbnQgaW4gdGhlIHVzZXIgY29kZSBidXQg aW4gdGhlIGluaXRpYWwKKysgICAgIHBhcnRzIG9mIHRoZSBgX19jbG9uZScgaW1wbGVtZW50YXRp b24gdGhlIHVud2luZCBzdGlsbCBtYWtlcyBzZW5zZS4KKysgICAgIE1vcmUgZGV0YWlsZWQgdW53 aW5kaW5nIGRlY2lzaW9uIHdvdWxkIGJlIHRvbyBtdWNoIHNlbnNpdGl2ZSB0byBwb3NzaWJsZQor KyAgICAgc3VidGxlIGNoYW5nZXMgaW4gc3BlY2lmaWMgZ2xpYmMgcmV2aXNpb25zLiAgKi8KKysg IGlmIChuYW1lID09IE5VTEwgfHwgc3RyY21wIChuYW1lLCAiY2xvbmUyIikgPT0gMAorKyAgICAg IHx8IHN0cmNtcCAoIl9fY2xvbmUyIiwgbmFtZSkgPT0gMCkKKysgICAgcmV0dXJuIChpYTY0X2xp bnV4X2Nsb25lMl9ydW5uaW5nICh0aGlzX2ZyYW1lKSAhPSAwKTsKKysKKysgIHJldHVybiAwOwor K30KKysKKytzdGF0aWMgdm9pZAorK2lhNjRfY2xvbmUyX2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBm cmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKKysJCQkgICBzdHJ1Y3Qg ZnJhbWVfaWQgKnRoaXNfaWQpCisreworKyAgLyogTGVhdmUgdGhlIGRlZmF1bHQgb3V0ZXJtb3N0 IGZyYW1lIGF0ICpUSElTX0lELiAgKi8KKyt9CisrCisrc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisr aWE2NF9jbG9uZTJfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNf ZnJhbWUsCisrCQkJCSB2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKKyt7CisrICByZXR1 cm4gZnJhbWVfdW53aW5kX2dvdF9yZWdpc3RlciAodGhpc19mcmFtZSwgcmVnbnVtLCByZWdudW0p OworK30KKysKKytzdGF0aWMgaW50CisraWE2NF9jbG9uZTJfZnJhbWVfc25pZmZlciAoY29uc3Qg c3RydWN0IGZyYW1lX3Vud2luZCAqc2VsZiwKKysJCQkgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhp c19mcmFtZSwKKysJCQkgICB2b2lkICoqdGhpc19wcm9sb2d1ZV9jYWNoZSkKKyt7CisrICBpZiAo aWE2NF9vdXRlcm1vc3RfZnJhbWUgKHRoaXNfZnJhbWUpKQorKyAgICByZXR1cm4gMTsKKysKKysg IHJldHVybiAwOworK30KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCBpYTY0 X2Nsb25lMl9mcmFtZV91bndpbmQgPQorK3sKKysgIE5PUk1BTF9GUkFNRSwKKysgICZpYTY0X2Ns b25lMl9mcmFtZV90aGlzX2lkLAorKyAgJmlhNjRfY2xvbmUyX2ZyYW1lX3ByZXZfcmVnaXN0ZXIs CisrICBOVUxMLAorKyAgJmlhNjRfY2xvbmUyX2ZyYW1lX3NuaWZmZXIKKyt9OworKworIC8qIFNp Z25hbCB0cmFtcG9saW5lcy4gICovCisgCisgc3RhdGljIHZvaWQKK0BAIC0zODI0LDYgKzM5NTUs NyBAQCBpYTY0X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3Qg Z2RiYXJjaF9saXN0ICphcmNoZXMpCisgICBzZXRfZ2RiYXJjaF9kdW1teV9pZCAoZ2RiYXJjaCwg aWE2NF9kdW1teV9pZCk7CisgCisgICBzZXRfZ2RiYXJjaF91bndpbmRfcGMgKGdkYmFyY2gsIGlh NjRfdW53aW5kX3BjKTsKKysgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gs ICZpYTY0X2Nsb25lMl9mcmFtZV91bndpbmQpOworICNpZmRlZiBIQVZFX0xJQlVOV0lORF9JQTY0 X0gKKyAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmaWE2NF9saWJ1bndpbmRfc2lndHJhbXBfZnJhbWVfdW53 aW5kKTsKIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvYnQtY2xvbmUtc3RvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAppbmRleCAz MmNiY2EzLi5mMDdmN2VjIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5w YXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaApAQCAtNDgsNyArNDgs NyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS5jCiAgCiAgCiAgaW50 ICgqZGVwcmVjYXRlZF91aV9sb2FkX3Byb2dyZXNzX2hvb2spIChjb25zdCBjaGFyICpzZWN0aW9u LCB1bnNpZ25lZCBsb25nIG51bSk7Ci1AQCAtMTY3Myw4ICsxNjc1LDM1MiBAQCBidWlsZF9pZF90 b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCitAQCAtMTY3Myw4ICsxNjc1LDM1MyBAQCBi dWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCiAgICByZXR1cm4gcmV0dmFs OwogIH0KICAKQEAgLTI1OCw3ICsyNTgsOCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9n ZGIvc3ltZmlsZS5jCiArCiArCSAgLyogQmFzZSBwYWNrYWdlIG5hbWUgZm9yIGBkZWJ1Z2luZm8t aW5zdGFsbCcuICBXZSBkbyBub3QgdXNlIHRoZQogKwkgICAgIGB5dW0nIGNvbW1hbmQgZGlyZWN0 bHkgYXMgdGhlIGxpbmUKLSsJCSB5dW0gLS1lbmFibGVyZXBvPScqLWRlYnVnaW5mbycgaW5zdGFs bCBOQU1FLWRlYnVnaW5mby5BUkNICisrCQkgeXVtIC0tZGlzYWJsZXJlcG89JyonIC0tZW5hYmxl cmVwbz0nKi1kZWJ1Z2luZm8nIFwKKysJCSAgICAgaW5zdGFsbCBOQU1FLWRlYnVnaW5mby5BUkNI CiArCSAgICAgd291bGQgYmUgbW9yZSBjb21wbGljYXRlZCB0aGFuIGp1c3Q6CiArCQkgZGVidWdp bmZvLWluc3RhbGwgTkFNRS1WRVJTSU9OLVJFTEVBU0UuQVJDSAogKwkgICAgIERvIG5vdCBzdXBw bHkgdGhlIHJwbSBiYXNlIG5hbWUgKGRlcml2ZWQgZnJvbSAuc3JjLnJwbSBuYW1lKSBhcwpAQCAt Mzk4LDcgKzM5OSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9zeW1maWxlLmMK ICsKICAvKiBUaGlzIE1JU1NJTkdfRklMRVBBSVJfSEFTSCB0cmFja2VyIGlzIHVzZWQgb25seSBm b3IgdGhlIGR1cGxpY2l0ZSBtZXNzYWdlcwogLSAgICAgVHJ5IHRvIGluc3RhbGwgdGhlIGhhc2gg ZmlsZSAuLi4KLSsgICAgIHl1bSAtLWVuYWJsZXJlcG89JyotZGVidWdpbmZvJyBpbnN0YWxsIC4u LgorKyAgICAgeXVtIC0tZGlzYWJsZXJlcG89JyonIC0tZW5hYmxlcmVwbz0nKi1kZWJ1Z2luZm8n IGluc3RhbGwgLi4uCiAgICAgYXZvaWRhbmNlLiAgKi8KICAKICBzdHJ1Y3QgbWlzc2luZ19maWxl cGFpcgpAQCAtNDIwLDcgKzQyMSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9z eW1maWxlLmMKICAgIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOwogIH0KICAKLUBAIC0xNzk5 LDE0ICsyMTUxLDMzIEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwK K0BAIC0xNzk5LDE0ICsyMTUxLDM0IEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIg KmJpbmFyeSwKICAKICAgICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsKICAKQEAgLTQ1Niw3ICs0 NTcsOCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS5jCiArCQkJICAg IF8oIk1pc3Npbmcgc2VwYXJhdGUgZGVidWdpbmZvIGZvciAlc1xuIiksIGJpbmFyeSk7CiArICAg ICAgICBpZiAoZGVidWcgIT0gTlVMTCkKICsJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csIF8oIlRyeTogJXMgJXNcbiIpLAotKwkJCSAgICAgICJ5dW0gLS1lbmFibGVyZXBvPScqLWRl YnVnaW5mbycgaW5zdGFsbCIsIGRlYnVnKTsKKysJCQkgICAgICAieXVtIC0tZGlzYWJsZXJlcG89 JyonIC0tZW5hYmxlcmVwbz0nKi1kZWJ1Z2luZm8nIgorKwkJCSAgICAgICIgaW5zdGFsbCIsIGRl YnVnKTsKICsgICAgICB9CiAgfQogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2Nh dGUucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IGVkYzUyYmQuLjVm MjY3OWMgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNi44 LjkxLjIwMDkwOTI1L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy4wL2dkYi9jb3JlbG93LmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL2NvcmVsb3cuYwky MDA5LTA3LTMxIDE3OjI1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5 MjUvZ2RiL2NvcmVsb3cuYwkyMDA5LTA5LTI1IDA5OjM5OjA5LjAwMDAwMDAwMCArMDIwMAorLS0t IGdkYi03LjAub3JpZy9nZGIvY29yZWxvdy5jCTIwMDktMDctMzEgMTc6MjU6MjEuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMC9nZGIvY29yZWxvdy5jCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAw MDAwMDAwICswMjAwCiBAQCAtNDUsNiArNDUsMTAgQEAKICAjaW5jbHVkZSAiZXhjZXB0aW9ucy5o IgogICNpbmNsdWRlICJzb2xpYi5oIgpAQCAtOTEsMTEgKzkxLDExIEBAIEluZGV4OiBnZGItNi44 LjkxLjIwMDkwOTI1L2dkYi9jb3JlbG93LmMKICsJCQkgICBOVUxMLCBOVUxMLCBOVUxMLAogKwkJ CSAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwogIH0KLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1 L2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy4wL2dkYi9kb2MvZ2RiLnRleGluZm8K ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDA5LTA5LTI1IDA5OjI5OjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEu MjAwOTA5MjUvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5LTA5LTI1IDA5OjI5OjU4LjAwMDAwMDAw MCArMDIwMAotQEAgLTEzODk1LDYgKzEzODk1LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgorLS0t IGdkYi03LjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMTAtMjMgMDA6MTI6MzkuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMTAtMjMg MDA6MTc6MjkuMDAwMDAwMDAwICswMjAwCitAQCAtMTM4OTYsNiArMTM4OTYsMjcgQEAgaW5mb3Jt YXRpb24gZmlsZXMuCiAgCiAgQGVuZCB0YWJsZQogIApAQCAtMTIzLDEwICsxMjMsMTAgQEAgSW5k ZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2RvYy9nZGIudGV4aW5mbwogIEBjaW5kZXggQGNv ZGV7LmdudV9kZWJ1Z2xpbmt9IHNlY3Rpb25zCiAgQGNpbmRleCBkZWJ1ZyBsaW5rIHNlY3Rpb25z CiAgQSBkZWJ1ZyBsaW5rIGlzIGEgc3BlY2lhbCBzZWN0aW9uIG9mIHRoZSBleGVjdXRhYmxlIGZp bGUgbmFtZWQKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zb2xpYi1zdnI0LmMKK0lu ZGV4OiBnZGItNy4wL2dkYi9zb2xpYi1zdnI0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44Ljkx LjIwMDkwOTI1Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDA5LTA5LTI1IDA5OjI5OjU3LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3NvbGliLXN2cjQuYwkyMDA5 LTA5LTI1IDA5OjQzOjE0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAub3JpZy9nZGIvc29s aWItc3ZyNC5jCTIwMDktMTAtMjMgMDA6MTI6MzguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu MC9nZGIvc29saWItc3ZyNC5jCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICswMjAwCiBA QCAtMTEwMSw5ICsxMTAxLDQ5IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCiAgCQkgICAgIHNh ZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsKICAJICBlbHNlCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBJ bmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc29saWItc3ZyNC5jCiAgCSAgICB9CiAgCSAg eGZyZWUgKGJ1ZmZlcik7CiAgCi1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmls ZS5jCitJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYu OC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOS0wOS0yNSAwOToyOTo1Ny4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmMJMjAwOS0w OS0yNSAwOToyOTo1OC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLm9yaWcvZ2RiL3N5bWZp bGUuYwkyMDA5LTEwLTIzIDAwOjEyOjM4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjAvZ2Ri L3N5bWZpbGUuYwkyMDA5LTEwLTIzIDAwOjQzOjI4LjAwMDAwMDAwMCArMDIwMAogQEAgLTU2LDYg KzU2LDcgQEAKICAjaW5jbHVkZSAiZWxmLWJmZC5oIgogICNpbmNsdWRlICJzb2xpYi5oIgpAQCAt NjE4LDcgKzYxOCw3IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmMK ICAKICAgIGlmIChmb3VuZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChfKCJGaWxlIFwiJXNcIiBo YXMgbm8gYnVpbGQtaWQsIGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7Ci1AQCAtMTIzNCw4ICsx NjI2LDkgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwgcworQEAgLTEy MzQsMTQgKzE2MjYsMTYgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwg cwogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC02MjgsNDggKzYyOCw3NyBAQCBJbmRleDog Z2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmlsZS5jCiArYnVpbGRfaWRfdG9fZmlsZW5hbWUg KHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQsIGNoYXIgKipsaW5rX3JldHVybiwKICsJCSAgICAg IGludCBhZGRfZGVidWdfc3VmZml4KQogIHsKLSAgIGNoYXIgKmxpbmssICpzLCAqcmV0dmFsID0g TlVMTDsKLSAgIGdkYl9ieXRlICpkYXRhID0gYnVpbGRfaWQtPmRhdGE7Ci1AQCAtMTI0Myw3ICsx NjM2LDkgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAorICAgY2hh ciAqbGluaywgKmRlYnVnZGlyLCAqcmV0dmFsID0gTlVMTDsKKysgIGNoYXIgKmxpbmtfYWxsID0g TlVMTDsKICAKICAgIC8qIERFQlVHX0ZJTEVfRElSRUNUT1JZLy5idWlsZC1pZC9hYi9jZGVmICov Ci0gICBsaW5rID0geG1hbGxvYyAoc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAoc2l6 ZW9mICIvLmJ1aWxkLWlkLyIgLSAxKSArIDEKLS0JCSAgKyAyICogc2l6ZSArIChzaXplb2YgIi5k ZWJ1ZyIgLSAxKSArIDEpOwotKwkJICArIDIgKiBzaXplCi0rCQkgICsgKGFkZF9kZWJ1Z19zdWZm aXggPyBzaXplb2YgIi5kZWJ1ZyIgLSAxIDogMCkKLSsJCSAgKyAxKTsKLSAgIHMgPSBsaW5rICsg c3ByaW50ZiAobGluaywgIiVzLy5idWlsZC1pZC8iLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0g ICBpZiAoc2l6ZSA+IDApCi0gICAgIHsKLUBAIC0xMjU0LDEyICsxNjQ5LDE0IEBAIGJ1aWxkX2lk X3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKLSAgICAgKnMrKyA9ICcvJzsKLSAgIHdo aWxlIChzaXplLS0gPiAwKQotICAgICBzICs9IHNwcmludGYgKHMsICIlMDJ4IiwgKHVuc2lnbmVk KSAqZGF0YSsrKTsKLS0gIHN0cmNweSAocywgIi5kZWJ1ZyIpOwotKyAgaWYgKGFkZF9kZWJ1Z19z dWZmaXgpCi0rICAgIHN0cmNweSAocywgIi5kZWJ1ZyIpOwotKyAgZWxzZQotKyAgICAqcyA9IDA7 CistICBsaW5rID0gYWxsb2NhIChzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIChzaXpl b2YgIi8uYnVpbGQtaWQvIiAtIDEpICsgMQorLQkJICsgMiAqIGJ1aWxkX2lkLT5zaXplICsgKHNp emVvZiAiLmRlYnVnIiAtIDEpICsgMSk7CisrICBsaW5rID0geG1hbGxvYyAoc3RybGVuIChkZWJ1 Z19maWxlX2RpcmVjdG9yeSkgKyAoc2l6ZW9mICIvLmJ1aWxkLWlkLyIgLSAxKSArIDEKKysJCSAg KyAyICogYnVpbGRfaWQtPnNpemUgKyAoc2l6ZW9mICIuZGVidWciIC0gMSkgKyAxKTsKKyAKKyAg IC8qIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNU T1JZIGJlaW5nICIiIHdpbGwKKyAgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4g ICovCitAQCAtMTI3Miw3ICsxNjY2LDEwIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChz dHJ1Y3QgYnVpbGQKKyAJKnMrKyA9ICcvJzsKKyAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKKyAJ cyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CistICAgICAgc3Ry Y3B5IChzLCAiLmRlYnVnIik7CisrICAgICAgaWYgKGFkZF9kZWJ1Z19zdWZmaXgpCisrCXN0cmNw eSAocywgIi5kZWJ1ZyIpOworKyAgICAgIGVsc2UKKysJKnMgPSAwOworIAorICAgICAgIC8qIGxy ZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxseSBub24tZXhpc3RlbnQg ZmlsZXMuICAqLworICAgICAgIGlmIChhY2Nlc3MgKGxpbmssIEZfT0spID09IDApCitAQCAtMTI4 NSwxNSArMTY4MiwxODUgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWls ZAorIAl9CiAgCi0gICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZlbiBmb3IgdGhlIHVz dWFsbHkgbm9uLWV4aXN0ZW50IGZpbGVzLiAgKi8KLSAgIGlmIChhY2Nlc3MgKGxpbmssIEZfT0sp ID09IDApCi0gICAgIHJldHZhbCA9IGxyZWFscGF0aCAobGluayk7Ci0tICB4ZnJlZSAobGluayk7 CisgICAgICAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQlicmVhazsKKysJeworKwkgIC8qIExJTktf QUxMIGlzIG5vdCB1c2VkIGJlbG93IGluIHRoaXMgbm9uLU5VTEwgUkVUVkFMIGNhc2UuICAqLwor KwkgIGJyZWFrOworKwl9CisrCisrCWlmIChsaW5rX2FsbCA9PSBOVUxMKQorKwkgIGxpbmtfYWxs ID0geHN0cmR1cCAobGluayk7CisrCWVsc2UKKysJICB7CisrCSAgICBzaXplX3QgbGVuX29yaWcg PSBzdHJsZW4gKGxpbmtfYWxsKTsKKysKKysJICAgIGxpbmtfYWxsID0geHJlYWxsb2MgKGxpbmtf YWxsLCBsZW5fb3JpZyArIDEgKyBzdHJsZW4gKGxpbmspICsgMSk7CisrCisrCSAgICAvKiBVc2Ug d2hpdGVzcGFjZSBpbnN0ZWFkIG9mIERJUk5BTUVfU0VQQVJBVE9SIHRvIGJlIGNvbXBhdGlibGUg d2l0aAorKwkgICAgICAgaXRzIHBvc3NpYmxlIHVzZSBhcyBhbiBhcmd1bWVudCBmb3IgaW5zdGFs bGF0aW9uIGNvbW1hbmQuICAqLworKwkgICAgbGlua19hbGxbbGVuX29yaWddID0gJyAnOworKwor KwkgICAgc3RyY3B5ICgmbGlua19hbGxbbGVuX29yaWcgKyAxXSwgbGluayk7CisrCSAgfQogIAot ICAgaWYgKHJldHZhbCAhPSBOVUxMICYmICFidWlsZF9pZF92ZXJpZnkgKHJldHZhbCwgYnVpbGRf aWQpKQotICAgICB7Ci1AQCAtMTI2Nyw5ICsxNjY0LDE1MCBAQCBidWlsZF9pZF90b19kZWJ1Z19m aWxlbmFtZSAoc3RydWN0IGJ1aWxkCi0gICAgICAgcmV0dmFsID0gTlVMTDsKKyAgICAgICBkZWJ1 Z2RpciA9IGRlYnVnZGlyX2VuZDsKICAgICAgfQorICAgd2hpbGUgKCpkZWJ1Z2RpciAhPSAwKTsK ICAKICsgIGlmIChsaW5rX3JldHVybiAhPSBOVUxMKQotKyAgICAqbGlua19yZXR1cm4gPSBsaW5r OwotKyAgZWxzZQotKyAgICB4ZnJlZSAobGluayk7CisrICAgIHsKKysgICAgICBpZiAocmV0dmFs ICE9IE5VTEwpCisrICAgICAgIHsKKysgICAgICAgICAqbGlua19yZXR1cm4gPSBsaW5rOworKyAg ICAgICAgIGxpbmsgPSBOVUxMOworKyAgICAgICB9CisrICAgICAgZWxzZQorKyAgICAgICB7Cisr ICAgICAgICAgKmxpbmtfcmV0dXJuID0gbGlua19hbGw7CisrICAgICAgICAgbGlua19hbGwgPSBO VUxMOworKyAgICAgICB9CisrICAgIH0KKysgIHhmcmVlIChsaW5rKTsKKysgIHhmcmVlIChsaW5r X2FsbCk7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KICsKLSAgIHJldHVybiByZXR2YWw7Ci0g fQotIAogKy8qIFRoaXMgTUlTU0lOR19GSUxFUEFJUl9IQVNIIHRyYWNrZXIgaXMgdXNlZCBvbmx5 IGZvciB0aGUgZHVwbGljaXRlIG1lc3NhZ2VzCiArICAgICBUcnkgdG8gaW5zdGFsbCB0aGUgaGFz aCBmaWxlIC4uLgogKyAgIGF2b2lkYW5jZS4gICovCkBAIC02OTIsOSArNzIxLDkgQEAgSW5kZXg6 IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3N5bWZpbGUuYwogKwogKyAgcmV0dmFsID0gb2JzdGFj a19hbGxvYyAoJm1pc3NpbmdfZmlsZXBhaXJfb2JzdGFjaywgc2l6ZSk7CiArICBtZW1zZXQgKHJl dHZhbCwgMCwgc2l6ZSk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKKyAgIHJldHVybiByZXR2 YWw7CisgfQorIAogK3N0YXRpYyBoYXNodmFsX3QKICttaXNzaW5nX2ZpbGVwYWlyX2hhc2hfZnVu YyAoY29uc3Qgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIgKmVsZW0pCiArewpAQCAtODA5LDIwICs4 MzgsNyBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmlsZS5jCiAgc3RhdGlj IGNoYXIgKgogIGdldF9kZWJ1Z19saW5rX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB1 bnNpZ25lZCBsb25nICpjcmMzMl9vdXQpCiAgewotQEAgLTEzNTIsMzIgKzE4OTAsMzYgQEAgc3Rh dGljIGNoYXIgKgotIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gewotICAgYXNlY3Rpb24gKnNlY3Q7Ci0tICBjaGFyICpiYXNlbmFtZTsKLS0gIGNo YXIgKmRpcjsKLS0gIGNoYXIgKmRlYnVnZmlsZTsKLSsgIGNoYXIgKmJhc2VuYW1lID0gTlVMTDsK LSsgIGNoYXIgKmRpciA9IE5VTEw7Ci0rICBjaGFyICpkZWJ1Z2ZpbGUgPSBOVUxMOwotICAgY2hh ciAqbmFtZV9jb3B5OwotLSAgY2hhciAqY2Fub25fbmFtZTsKLSsgIGNoYXIgKmNhbm9uX25hbWUg PSBOVUxMOwotICAgYmZkX3NpemVfdHlwZSBkZWJ1Z2xpbmtfc2l6ZTsKK0BAIC0xMzg0LDEzICsx OTUxLDE0IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUKICAgIHVu c2lnbmVkIGxvbmcgY3JjMzI7CiAgICBpbnQgaTsKICAgIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRf aWQ7CkBAIC04MzksMTIzICs4NTUsMzQgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2Ri L3N5bWZpbGUuYwogICAgICAgIHhmcmVlIChidWlsZF9pZCk7CiAgICAgICAgLyogUHJldmVudCBs b29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVnIGZpbGUuICAqLwogICAgICAgIGlmIChidWlsZF9p ZF9uYW1lICE9IE5VTEwgJiYgc3RyY21wIChidWlsZF9pZF9uYW1lLCBvYmpmaWxlLT5uYW1lKSA9 PSAwKQotICAgICAgICAgewotLQkgIHdhcm5pbmcgKF8oIlwiJXNcIjogc2VwYXJhdGUgZGVidWcg aW5mbyBmaWxlIGhhcyBubyBkZWJ1ZyBpbmZvIiksCi0rCSAgd2FybmluZyAoXygiXCIlc1wiOiBU aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlIGhhcyBubyBkZWJ1ZyBpbmZvIiksCi0gCQkgICBi dWlsZF9pZF9uYW1lKTsKK0BAIC0xNDAwLDcgKzE5NjgsMTAgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQogIAkgIHhmcmVlIChidWlsZF9pZF9uYW1lKTsKICAJfQog ICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCkKIC0gICAgICAgIHJldHVybiBi dWlsZF9pZF9uYW1lOwotKyAgICAgICAgeworKwl7CiArCSAgeGZyZWUgKGJ1aWxkX2lkX2ZpbGVu YW1lKTsKICsJICByZXR1cm4gYnVpbGRfaWRfbmFtZTsKICsJfQogICAgICB9CiAgCiAgICBiYXNl bmFtZSA9IGdldF9kZWJ1Z19saW5rX2luZm8gKG9iamZpbGUsICZjcmMzMik7Ci1AQCAtMTM4NSw3 ICsxOTI3LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQotICAg aWYgKGJhc2VuYW1lID09IE5VTEwpCi0gICAgIC8qIFRoZXJlJ3Mgbm8gc2VwYXJhdGUgZGVidWcg aW5mbywgaGVuY2UgdGhlcmUncyBubyB3YXkgd2UgY291bGQKLSAgICAgICAgbG9hZCBpdCA9PiBu byB3YXJuaW5nLiAgKi8KLS0gICAgcmV0dXJuIE5VTEw7Ci0rICAgIGdvdG8gY2xlYW51cF9yZXR1 cm5fZGVidWdmaWxlOwotIAotICAgZGlyID0geHN0cmR1cCAob2JqZmlsZS0+bmFtZSk7Ci0gCi1A QCAtMTQwNywyNCArMTk0OSwxOSBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBv YmpmaWxlCi0gICBpZiAoY2Fub25fbmFtZSAmJiBzdHJsZW4gKGNhbm9uX25hbWUpID4gaSkKLSAg ICAgaSA9IHN0cmxlbiAoY2Fub25fbmFtZSk7Ci0gCi0tICBkZWJ1Z2ZpbGUgPSBhbGxvY2EgKHN0 cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsgMQotLSAgICAgICAgICAgICAgICAgICAgICAr IGkKLS0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKERFQlVHX1NVQkRJUkVDVE9SWSkK LS0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKCIvIikKLS0gICAgICAgICAgICAgICAg ICAgICAgKyBzdHJsZW4gKGJhc2VuYW1lKQotLSAgICAgICAgICAgICAgICAgICAgICArIDEpOwot KyAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAx Ci0rCQkgICAgICAgKyBpCi0rCQkgICAgICAgKyBzdHJsZW4gKERFQlVHX1NVQkRJUkVDVE9SWSkK LSsJCSAgICAgICArIHN0cmxlbiAoIi8iKQotKwkJICAgICAgICsgc3RybGVuIChiYXNlbmFtZSkK LSsJCSAgICAgICArIDEpOwotIAotICAgLyogRmlyc3QgdHJ5IGluIHRoZSBzYW1lIGRpcmVjdG9y eSBhcyB0aGUgb3JpZ2luYWwgZmlsZS4gICovCi0gICBzdHJjcHkgKGRlYnVnZmlsZSwgZGlyKTsK LSAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0gCi0gICBpZiAoc2VwYXJhdGVfZGVi dWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQotLSAgICB7 Ci0tICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKLS0gICAgICB4ZnJlZSAoZGlyKTsKLS0gICAgICB4 ZnJlZSAoY2Fub25fbmFtZSk7Ci0tICAgICAgcmV0dXJuIHhzdHJkdXAgKGRlYnVnZmlsZSk7Ci0t ICAgIH0KLSsgICAgZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7Ci0gCi0gICAvKiBUaGVu IHRyeSBpbiB0aGUgc3ViZGlyZWN0b3J5IG5hbWVkIERFQlVHX1NVQkRJUkVDVE9SWS4gICovCi0g ICBzdHJjcHkgKGRlYnVnZmlsZSwgZGlyKTsKLUBAIC0xNDMzLDEyICsxOTcwLDcgQEAgZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQotICAgc3RyY2F0IChkZWJ1Z2ZpbGUs IGJhc2VuYW1lKTsKLSAKLSAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdm aWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0tICAgIHsKLS0gICAgICB4ZnJlZSAoYmFzZW5h bWUpOwotLSAgICAgIHhmcmVlIChkaXIpOwotLSAgICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLS0g ICAgICByZXR1cm4geHN0cmR1cCAoZGVidWdmaWxlKTsKLS0gICAgfQotKyAgICBnb3RvIGNsZWFu dXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAKLSAgIC8qIFRoZW4gdHJ5IGluIHRoZSBnbG9iYWwgZGVi dWdmaWxlIGRpcmVjdG9yeS4gICovCi0gICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9k aXJlY3RvcnkpOwotQEAgLTE0NDcsMTIgKzE5NzksNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGUgKHN0cnVjdCBvYmpmaWxlCi0gICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOwotIAot ICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpm aWxlLT5uYW1lKSkKLS0gICAgewotLSAgICAgIHhmcmVlIChiYXNlbmFtZSk7Ci0tICAgICAgeGZy ZWUgKGRpcik7Ci0tICAgICAgeGZyZWUgKGNhbm9uX25hbWUpOwotLSAgICAgIHJldHVybiB4c3Ry ZHVwIChkZWJ1Z2ZpbGUpOwotLSAgICB9Ci0rICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdm aWxlOwotIAotICAgLyogSWYgdGhlIGZpbGUgaXMgaW4gdGhlIHN5c3Jvb3QsIHRyeSB1c2luZyBp dHMgYmFzZSBwYXRoIGluIHRoZQotICAgICAgZ2xvYmFsIGRlYnVnZmlsZSBkaXJlY3RvcnkuICAq LwotQEAgLTE0NjYsMjAgKzE5OTMsMTggQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1 Y3Qgb2JqZmlsZQotICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0gCi0gICAg ICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpm aWxlLT5uYW1lKSkKLS0JewotLQkgIHhmcmVlIChjYW5vbl9uYW1lKTsKLS0JICB4ZnJlZSAoYmFz ZW5hbWUpOwotLQkgIHhmcmVlIChkaXIpOwotLQkgIHJldHVybiB4c3RyZHVwIChkZWJ1Z2ZpbGUp OwotLQl9Ci0rCWdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOwotICAgICB9CitAQCAtMTUw MSw4ICsyMDcyLDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUK ICAgIAotLSAgaWYgKGNhbm9uX25hbWUpCi0tICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLSsgIGRl YnVnZmlsZSA9IE5VTEw7CisgICB4ZnJlZSAoZGVidWdmaWxlKTsKKyAgIGRlYnVnZmlsZSA9IE5V TEw7CiArICBkZWJ1Z19wcmludF9taXNzaW5nIChvYmpmaWxlLT5uYW1lLCBidWlsZF9pZF9maWxl bmFtZSk7CiAgCi0rY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOgorIGNsZWFudXBfcmV0dXJuX2Rl YnVnZmlsZToKICsgIHhmcmVlIChidWlsZF9pZF9maWxlbmFtZSk7Ci0rICB4ZnJlZSAoY2Fub25f bmFtZSk7CisgICB4ZnJlZSAoY2Fub25fbmFtZSk7CiAgICB4ZnJlZSAoYmFzZW5hbWUpOwogICAg eGZyZWUgKGRpcik7Ci0tICByZXR1cm4gTlVMTDsKLSsgIHJldHVybiBkZWJ1Z2ZpbGU7Ci0gfQot IAotIAotQEAgLTQyMjksNCArNDc1NCwxNiBAQCB0aGUgZ2xvYmFsIGRlYnVnLWZpbGUgZGlyZWN0 b3J5IHByZXBlbmRlCitAQCAtNDI1Niw0ICs0ODI5LDE2IEBAIGVhY2ggZ2xvYmFsIGRlYnVnLWZp bGUtZGlyZWN0b3J5IGNvbXBvbmUKICAJCQkJICAgICBOVUxMLAogIAkJCQkgICAgIHNob3dfZGVi dWdfZmlsZV9kaXJlY3RvcnksCiAgCQkJCSAgICAgJnNldGxpc3QsICZzaG93bGlzdCk7Ci0rIAor KwogKyAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoImJ1aWxkLWlkLXZlcmJvc2UiLCBub19j bGFzcywgJmJ1aWxkX2lkX3ZlcmJvc2UsCiArIAkJCSAgICBfKCJcCiArIFNldCBkZWJ1Z2dpbmcg bGV2ZWwgb2YgdGhlIGJ1aWxkLWlkIGxvY2F0b3IuIiksIF8oIlwKQEAgLTk2NSwxMyArODkyLDEz IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmMKICsgCQkJICAgIE5V TEwsCiArIAkJCSAgICBzaG93X2J1aWxkX2lkX3ZlcmJvc2UsCiArIAkJCSAgICAmc2V0bGlzdCwg JnNob3dsaXN0KTsKLSsgCisrCiArICAgb2JzZXJ2ZXJfYXR0YWNoX2V4ZWN1dGFibGVfY2hhbmdl ZCAoZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkKTsKICB9Ci1JbmRleDogZ2RiLTYuOC45 MS4yMDA5MDkyNS9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zeW1maWxlLmgJMjAw OS0wOS0yNSAwOToyOTo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1 L2dkYi9zeW1maWxlLmgJMjAwOS0wOS0yNSAwOToyOTo1OC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBn ZGItNy4wLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDA5LTEwLTIzIDAwOjEyOjM4LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjAvZ2RiL3N5bWZpbGUuaAkyMDA5LTEwLTIzIDAwOjE3OjI5LjAwMDAw MDAwMCArMDIwMAogQEAgLTM4MSw2ICszODEsMTMgQEAgZXh0ZXJuIGludCBzeW1maWxlX21hcF9v ZmZzZXRzX3RvX3NlZ21lbgogIHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqZ2V0X3N5bWZp bGVfc2VnbWVudF9kYXRhIChiZmQgKmFiZmQpOwogIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRf ZGF0YSAoc3RydWN0IHN5bWZpbGVfc2VnbWVudF9kYXRhICpkYXRhKTsKQEAgLTk4NiwxMCArOTEz LDEwIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmgKICAvKiBGcm9t IGR3YXJmMnJlYWQuYyAqLwogIAogIGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qg b2JqZmlsZSAqKTsKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKK0luZGV4OiBnZGItNy4wL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAkyMDA5LTA5LTI1IDA5OjI5OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEu MjAwOTA5MjUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTA5LTI1IDA5OjI5OjU4LjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw CTIwMDktMTAtMjMgMDA6MTI6MzguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMC9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICswMjAwCiBA QCAtMTI0OCw2ICsxMjQ4LDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAg IHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KQEAgLTEwMDcsMTAg KzkzNCwxMCBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvdGVzdHN1aXRlL2xpYi9n ZGIuZXhwCiAgICAgIHJldHVybiAwOwogIH0KICAKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1 L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuMC9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAw OTA5MjUub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDA5LTA5LTE1IDIw OjUxOjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAwOS0wOS0yNSAwOToyOTo1OC4wMDAwMDAwMDAgKzAy MDAKKy0tLSBnZGItNy4wLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAw OS0wOS0xNSAyMDo1MToyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4wL2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICswMjAw CiBAQCAtMjIxLDYgKzIyMSwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9 IHsKICAJICAgIH0KICAgICAgCX0KQEAgLTEwMjgsMTAgKzk1NSwxMCBAQCBJbmRleDogZ2RiLTYu OC45MS4yMDA5MDkyNS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogIAogICAgICBk ZXRlY3RfYXN5bmMKICAKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9vYmpmaWxlcy5o CitJbmRleDogZ2RiLTcuMC9nZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02Ljgu OTEuMjAwOTA5MjUub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDA5LTA5LTI1IDA5OjI5OjU3LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL29iamZpbGVzLmgJMjAwOS0w OS0yNSAwOTozODoyNy4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLm9yaWcvZ2RiL29iamZp bGVzLmgJMjAwOS0xMC0yMyAwMDoxMjozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4wL2dk Yi9vYmpmaWxlcy5oCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICswMjAwCiBAQCAtNDI4 LDYgKzQyOCwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQogIAogICNkZWZpbmUgT0JKRl9NQUlOICgxIDw8 IDcpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2gg Yi9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAppbmRleCA3NWY2OGIzLi44 MWUwYzAyIDEwMDY0NAotLS0gYS9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRj aAorKysgYi9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaApAQCAtMTAyLDMg KzEwMiwxNTQgQEAgZnJhbWVzLWludmFsaWQgY2FuIGhhcHBlbiBhc3luY2hyb25vdXNseS4KICAK ICBzZXQgdGltZW91dCAkb2xkdGltZW91dAogIHJldHVybiAwCisKKworCitodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMi9tc2cwMDIzNC5odG1sCitTdWJqZWN0OiBb cGF0Y2hdIHRlc3RzdWl0ZTogRml4IGEgcmFjZSBieSBtZSAtIHdhdGNodGhyZWFkcy1yZW9yZGVy LmV4cAorCitIaSwKKwordGhlcmUgaXMgYSBidWcgZXhwbGFpbmFibGUgYnkgbWFuIHB0aHJlYWRf Y29uZF9zaWduYWw6CisJVGhlIFsuLi5dIHB0aHJlYWRfY29uZF9zaWduYWwoKSBmdW5jdGlvbnMg c2hhbGwgaGF2ZSBubyBlZmZlY3QgaWYKKwl0aGVyZSBhcmUgbm8gdGhyZWFkcyBjdXJyZW50bHkg YmxvY2tlZCBvbiBjb25kLgorCittZWFuaW5nIGEgcmFjZSBmb3IgdGhlIHRlc3RjYXNlLgorCStG QUlMOiBnZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5leHA6IHJlb3JkZXIxOiBjb250 aW51ZSBhICh0aW1lb3V0KQorCitPbmUgY2FuIHJlcHJvZHVjZSB0aGUgcmFjZSBvbiBDVlMgSEVB RCBieToKKyMJLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVv cmRlci5jCisjCSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJl b3JkZXIuYworIwlAQCAtODksNiArODksNyBAQCB0aHJlYWQxX2Z1bmMgKHZvaWQgKnVudXNlZCkK KyMJICAgaW50IGk7CisjCSAgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7CisjCSAKKyMJK3Ns ZWVwKDEpOworIwkgICB0aHJlYWQxX3RpZCA9IGdldHRpZCAoKTsKKyMJICAgaSA9IHB0aHJlYWRf Y29uZF9zaWduYWwgKCZ0aHJlYWQxX3RpZF9jb25kKTsKKyMJICAgYXNzZXJ0IChpID09IDApOwor IwlAQCAtMzE3LDYgKzMxOCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyMJIAor IwkgICBpZiAodGhyZWFkMV90aWQgPT0gMCkKKyMJICAgICB7CisjCStzbGVlcCgyKTsKKyMJICAg ICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3Rp ZF9tdXRleCk7CisjCSAgICAgICBhc3NlcnQgKGkgPT0gMCk7CisjCSAKKworRml4ZWQ7IGdkYnN0 b3BfbXV0ZXggZ290IHJlbW92ZWQgYXMgaXQgYmVjYW1lIHJlZHVuZGFudCB0aGVyZS4KKworR29p bmcgdG8gY2hlY2sgaXQgaW4gYXMgb2J2aW91cyBpbiBzZXZlcmFsIGRheXMgKGNvZGUgaXMgYnkg bWUgKyBpdCBpcyBqdXN0CithIHRlc3RjYXNlKS4KKworCitTb3JyeSwKK0phbgorCisKK2dkYi90 ZXN0c3VpdGUvCisyMDA5LTEyLTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisKKwkqIGdkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmMgKGdkYnN0 b3BfbXV0ZXgpOiBSZW1vdmUuCisJKHRocmVhZDFfZnVuYyk6IFByb3RlY3QgdGhyZWFkMV90aWRf Y29uZCBieSB0aHJlYWQxX3RpZF9tdXRleC4gIFJlbW92ZQorCWdkYnN0b3BfbXV0ZXggaGFuZGxp bmcuCisJKHRocmVhZDJfZnVuYyk6IFByb3RlY3QgdGhyZWFkMl90aWRfY29uZCBieSB0aHJlYWQy X3RpZF9tdXRleC4gIFJlbW92ZQorCWdkYnN0b3BfbXV0ZXggaGFuZGxpbmcuCisJKG1haW4pOiBN b3ZlIHRocmVhZDFfdGlkX211dGV4IGFuZCB0aHJlYWQyX3RpZF9tdXRleCBsb2NrcyBiZWZvcmUK KwlwdGhyZWFkX2NyZWF0ZS4gIFJlbW92ZSBnZGJzdG9wX211dGV4IGhhbmRsaW5nLiAgTmV3IGNv bW1lbnQuICBSZW1vdmUKKwlwdGhyZWFkX2NvbmRfd2FpdCBjb25kaXRpb25hbGl6YXRpb25zLgor CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmMK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYwor QEAgLTM0LDggKzM0LDYgQEAKKyAgICBvdGhlcndpc2UuICAqLworICNkZWZpbmUgVElNRU9VVCAo Z2V0dGlkICgpID09IGdldHBpZCgpID8gMTAgOiAxNSkKKyAKKy1zdGF0aWMgcHRocmVhZF9tdXRl eF90IGdkYnN0b3BfbXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJf TlA7CistCisgc3RhdGljIHBpZF90IHRocmVhZDFfdGlkOworIHN0YXRpYyBwdGhyZWFkX2NvbmRf dCB0aHJlYWQxX3RpZF9jb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOworIHN0YXRpYyBw dGhyZWFkX211dGV4X3QgdGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVU RVhfSU5JVElBTElaRVJfTlA7CitAQCAtOTAsMTIgKzg4LDExIEBAIHRocmVhZDFfZnVuYyAodm9p ZCAqdW51c2VkKQorICAgdm9sYXRpbGUgaW50IHJ3YXRjaF9zdG9yZTsKKyAKKyAgIHRocmVhZDFf dGlkID0gZ2V0dGlkICgpOworKworKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211 dGV4KTsKKyAgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMV90aWRfY29uZCk7Cisg ICBhc3NlcnQgKGkgPT0gMCk7CistCistICAvKiBCZSBzdXJlIEdEQiBpcyBhbHJlYWR5IHN0b3Bw ZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLworLSAgdGltZWRfbXV0ZXhfbG9jayAoJmdkYnN0b3Bf bXV0ZXgpOworLSAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7Cisr ICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7CisgICBhc3Nl cnQgKGkgPT0gMCk7CisgCisgICByd2F0Y2hfc3RvcmUgPSB0aHJlYWQxX3J3YXRjaDsKK0BAIC0x MTUsMTIgKzExMiwxMSBAQCB0aHJlYWQyX2Z1bmMgKHZvaWQgKnVudXNlZCkKKyAgIHZvbGF0aWxl IGludCByd2F0Y2hfc3RvcmU7CisgCisgICB0aHJlYWQyX3RpZCA9IGdldHRpZCAoKTsKKysKKysg IHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7CisgICBpID0gcHRocmVhZF9j b25kX3NpZ25hbCAoJnRocmVhZDJfdGlkX2NvbmQpOworICAgYXNzZXJ0IChpID09IDApOworLQor LSAgLyogQmUgc3VyZSBHREIgaXMgYWxyZWFkeSBzdG9wcGVkIGJlZm9yZSBjb250aW51aW5nLiAg Ki8KKy0gIHRpbWVkX211dGV4X2xvY2sgKCZnZGJzdG9wX211dGV4KTsKKy0gIGkgPSBwdGhyZWFk X211dGV4X3VubG9jayAoJmdkYnN0b3BfbXV0ZXgpOworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5s b2NrICgmdGhyZWFkMl90aWRfbXV0ZXgpOworICAgYXNzZXJ0IChpID09IDApOworIAorICAgcndh dGNoX3N0b3JlID0gdGhyZWFkMl9yd2F0Y2g7CitAQCAtMjY3LDcgKzI2Myw4IEBAIG1haW4gKGlu dCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKKyAKKy0g IHRpbWVkX211dGV4X2xvY2sgKCZnZGJzdG9wX211dGV4KTsKKysgIHRpbWVkX211dGV4X2xvY2sg KCZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICB0aW1lZF9tdXRleF9sb2NrICgmdGhyZWFkMl90aWRf bXV0ZXgpOworIAorICAgdGltZWRfbXV0ZXhfbG9jayAoJnRlcm1pbmF0ZV9tdXRleCk7CisgCitA QCAtMzA2LDMwICszMDMsMjEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAg IHN0YXRlX3dhaXQgKHRyYWNlciwgIlQgKHN0b3BwZWQpIik7CisgICAgIH0KKyAKKy0gIHRpbWVk X211dGV4X2xvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7CistICB0aW1lZF9tdXRleF9sb2NrICgm dGhyZWFkMl90aWRfbXV0ZXgpOworLQorLSAgLyogTGV0IHRoZSB0aHJlYWRzIHN0YXJ0LiAgKi8K Ky0gIGkgPSBwdGhyZWFkX211dGV4X3VubG9jayAoJmdkYnN0b3BfbXV0ZXgpOworLSAgYXNzZXJ0 IChpID09IDApOworKyAgLyogVGhyZWFkcyBhcmUgbm93IHdhaXRpbmcgYXQgdGltZWRfbXV0ZXhf bG9jayAodGhyZWFkMV90aWRfbXV0ZXgpIGFuZCBzbworKyAgICAgdGhleSBjb3VsZCBub3QgdHJp Z2dlciB0aGUgd2F0Y2hwb2ludHMgYmVmb3JlIEdEQiBnZXRzIHVuc3RvcHBlZCBsYXRlci4KKysg ICAgIFRocmVhZHMgZ2V0IHJlc3VtZWQgYXQgcHRocmVhZF9jb25kX3dhaXQgYmVsb3cuICAqLwor IAorICAgcHJpbnRmICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGluaXRpYWxpemUgdGhlaXIg VElEcy5cbiIpOworIAorLSAgaWYgKHRocmVhZDFfdGlkID09IDApCistICAgIHsKKy0gICAgICBp ID0gcHRocmVhZF9jb25kX3dhaXQgKCZ0aHJlYWQxX3RpZF9jb25kLCAmdGhyZWFkMV90aWRfbXV0 ZXgpOworLSAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAo JnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICBhc3NlcnQgKGkgPT0g MCk7CisgCistICAgICAgYXNzZXJ0ICh0aHJlYWQxX3RpZCA+IDApOworLSAgICB9CisrICBhc3Nl cnQgKHRocmVhZDFfdGlkID4gMCk7CisgCistICBpZiAodGhyZWFkMl90aWQgPT0gMCkKKy0gICAg eworLSAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDJfdGlkX2NvbmQsICZ0aHJl YWQyX3RpZF9tdXRleCk7CistICAgICAgYXNzZXJ0IChpID09IDApOworKyAgaSA9IHB0aHJlYWRf Y29uZF93YWl0ICgmdGhyZWFkMl90aWRfY29uZCwgJnRocmVhZDJfdGlkX211dGV4KTsKKysgIGFz c2VydCAoaSA9PSAwKTsKKyAKKy0gICAgICBhc3NlcnQgKHRocmVhZDJfdGlkID4gMCk7CistICAg IH0KKysgIGFzc2VydCAodGhyZWFkMl90aWQgPiAwKTsKKyAKKyAgIHByaW50ZiAoIlRocmVhZCAx IFRJRCA9ICVsdSwgdGhyZWFkIDIgVElEID0gJWx1LCBQSUQgPSAlbHUuXG4iLAorIAkgICh1bnNp Z25lZCBsb25nKSB0aHJlYWQxX3RpZCwgKHVuc2lnbmVkIGxvbmcpIHRocmVhZDJfdGlkLAorCgpk aWZmIC0tZ2l0IGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaCBiL2dkYi02LjgtaW5saW5p bmctYWRkb24ucGF0Y2gKaW5kZXggNGVkY2QxYS4uN2U4OTljYSAxMDA2NDQKLS0tIGEvZ2RiLTYu OC1pbmxpbmluZy1hZGRvbi5wYXRjaAorKysgYi9nZGItNi44LWlubGluaW5nLWFkZG9uLnBhdGNo CkBAIC0yMzYsMTkgKzIzNiwxOSBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvYnJl YWtwb2ludC5jCiAgICAgIHsKICAgICAgICBpbnQgdmFsdWVfaXNfemVybyA9IDA7CiAgICAgICAg Ci1AQCAtMzM4Myw2ICszMzk4LDEyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoQ09SRV9BRERSIGJw X2FkZHIsIHAKLSAJICAgIGJzLT5wcmludCA9IDA7Ci0gCSAgfQotIAlicy0+Y29tbWFuZHMgPSBj b3B5X2NvbW1hbmRfbGluZXMgKGJzLT5jb21tYW5kcyk7CitAQCAtMzM5OSw2ICszMzk5LDEyIEBA IGJwc3RhdF9zdG9wX3N0YXR1cyAoQ09SRV9BRERSIGJwX2FkZHIsIHAKKyAJCSAgYnMtPnByaW50 ID0gMDsKKyAJCX0KKyAJICAgICAgYnMtPmNvbW1hbmRzID0gY29weV9jb21tYW5kX2xpbmVzIChi cy0+Y29tbWFuZHMpOwogKwotKwkvKiBEaXNwbGF5IHRoZSBpbm5lcm1vc3QgaW5saW5lZCBmcmFt ZSBhdCBhIGJyZWFrcG9udCBhcyBpdCBnaXZlcyB0bwotKwkgICBtb3N0IG9mIHRoZSBhdmFpbGFi bGUgaW5mb3JtYXRpb24uICAqLwotKwlpZiAoYi0+dHlwZSAhPSBicF91bnRpbCAmJiBiLT50eXBl ICE9IGJwX2ZpbmlzaCkKLSsJICB3aGlsZSAoaW5saW5lX3NraXBwZWRfZnJhbWVzIChwdGlkKSkK LSsJICAgIHN0ZXBfaW50b19pbmxpbmVfZnJhbWUgKHB0aWQpOwotICAgICAgIH0KLSAKLSAgICAg LyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250IHN0b3Agb3IgaWYgd2Ug ZG9udCBwcmludC4gICovCisrCSAgICAgIC8qIERpc3BsYXkgdGhlIGlubmVybW9zdCBpbmxpbmVk IGZyYW1lIGF0IGEgYnJlYWtwb250IGFzIGl0IGdpdmVzIHRvCisrCQkgbW9zdCBvZiB0aGUgYXZh aWxhYmxlIGluZm9ybWF0aW9uLiAgKi8KKysJICAgICAgaWYgKGItPnR5cGUgIT0gYnBfdW50aWwg JiYgYi0+dHlwZSAhPSBicF9maW5pc2gpCisrCQl3aGlsZSAoaW5saW5lX3NraXBwZWRfZnJhbWVz IChwdGlkKSkKKysJCSAgc3RlcF9pbnRvX2lubGluZV9mcmFtZSAocHRpZCk7CisgCSAgICB9Cisg CisgCSAgLyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250IHN0b3Agb3Ig aWYgd2UgZG9udCBwcmludC4gICovCiBAQCAtNTU3Miw5ICs1NTkzLDkgQEAgc2V0X21vbWVudGFy eV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaAogIHsKICAgIHN0cnVjdCBicmVha3BvaW50ICpi OwoKZGlmZiAtLWdpdCBhL2dkYi03LjAtdXBzdHJlYW0ucGF0Y2ggYi9nZGItNy4wLXVwc3RyZWFt LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZGQwOGUKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGItNy4wLXVwc3RyZWFtLnBhdGNoCkBAIC0wLDAgKzEsMjI5IEBACisK KworCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMS9tc2cwMDM4 OC5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTExL21zZzAwMTU2 Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IGNyYXNoIG9uIHJlYWRpbmcgc3RhYnMKKworSGks CisKK3RoZXJlIGlzIGEgY3Jhc2ggb24gcmVhZGluZyBzdGFicyBmcGMgYmluYXJ5OgorCWh0dHBz Oi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTM3ODM3CisKK1Byb2dyYW0g cmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4KKzB4MDAwMDAwMDAw MDY5ZGIzZCBpbiByZWFkX2RieF9zeW10YWIgKG9iamZpbGU9MHgxZGFmNWYwKSBhdCBkYnhyZWFk LmM6MTM2OQorMTM2OSAgICAgICAgICAgICAgaWYgKChuYW1lc3RyaW5nWzBdID09ICctJyAmJiBu YW1lc3RyaW5nWzFdID09ICdsJykKKworKGdkYikgcC94IG5saXN0Lm5fc3RyeAorJDcgPSAweGZm ZmZmZmY4CisoZ2RiKSBwIHNpemVvZihubGlzdC5uX3N0cngpCiskMTAgPSA4CisKK0JlbG93IHRo ZSBwYXRjaCBjb250ZXh0IGlzOgorICAgIG5hbWVzdHJpbmcgPSAobmxpc3QtPm5fc3RyeCArIGZp bGVfc3RyaW5nX3RhYmxlX29mZnNldAorICAgICAgICAgICAgICAgICAgKyBEQlhfU1RSSU5HVEFC IChvYmpmaWxlKSk7CisKK3NvIElNTyB0aGUgYCh1bnNpZ25lZCknIGNhc3QgaXMgZXhjZXNzaXZl IGFzIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBleHByZXNzaW9uCitiZWxvdy4gIFN1Y2ggY2FzdCBp cyB0aGVyZSBzaW5jZSB0aGUgR0RCICJJbml0aWFsIHJldmlzaW9uIiAoMTk5OSkuCisKK2BuX3N0 cngnIHR5cGU6CitzdHJ1Y3QgaW50ZXJuYWxfbmxpc3QKK3sKKyAgdW5zaWduZWQgbG9uZyBuX3N0 cng7ICAgICAgICAgICAgICAgICAvKiBJbmRleCBpbnRvIHN0cmluZyB0YWJsZSBvZiBuYW1lLiAg Ki8KKy4uLgorfTsKKworUmVncmVzc2lvbiB0ZXN0ZWQgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2 ODZ9LWZlZG9yYTEyLWxpbnV4LWdudSB3aGljaCBkb2VzIG5vdAorbWVhbiBhbnl0aGluZyB3aXRo IHRoZSBkZWZhdWx0IERXQVJGIGRlYnVnIGluZm8uICBJdCB3YXMgaGFuZ2luZyBmb3Igc3RhYnMg c28KK3RyaWVkIGp1c3QgYSBsYXJnZSBwYXJ0IG9mIGdkYi5iYXNlLyouZXhwIG9uIHg4Nl82NC1t MzIgLSBgdW5peC8tZ3N0YWJzKy8tbTMyJy4KKworSWYgaXQgaXNuJ3Qgb2J2aW91c2x5IGFwcHJv dmVkIHBsZWFzZSBmZWVsIGZyZWUgdG8gZHJvcCBpdCBhcyBvbmUgc2hvdWxkIG5vdAordXNlIFNU QUJTIGluIHRoZSBmaXJzdCBwbGFjZS4KKworCitSZWdhcmRzLAorSmFuCisKKworZ2RiLworMjAw OS0xMS0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJ KiBkYnhyZWFkLmMgKHNldF9uYW1lc3RyaW5nKTogUmVtb3ZlIGNhc3QgdG8gdW5zaWduZWQuICBD aGVjayBOX1NUUlgKKwlvdmVyZmxvdy4KKworLS0tIGEvZ2RiL2RieHJlYWQuYworKysrIGIvZ2Ri L2RieHJlYWQuYworQEAgLTk2NSw4ICs5NjUsOSBAQCBzZXRfbmFtZXN0cmluZyAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIGNvbnN0IHN0cnVjdCBpbnRlcm5hbF9ubGlzdCAqbmxpc3QpCisgewor ICAgY2hhciAqbmFtZXN0cmluZzsKKyAKKy0gIGlmICgoKHVuc2lnbmVkKSBubGlzdC0+bl9zdHJ4 ICsgZmlsZV9zdHJpbmdfdGFibGVfb2Zmc2V0KQorLSAgICAgID49IERCWF9TVFJJTkdUQUJfU0la RSAob2JqZmlsZSkpCisrICBpZiAobmxpc3QtPm5fc3RyeCArIGZpbGVfc3RyaW5nX3RhYmxlX29m ZnNldAorKyAgICAgID49IERCWF9TVFJJTkdUQUJfU0laRSAob2JqZmlsZSkKKysgICAgICB8fCBu bGlzdC0+bl9zdHJ4ICsgZmlsZV9zdHJpbmdfdGFibGVfb2Zmc2V0IDwgbmxpc3QtPm5fc3RyeCkK KyAgICAgeworICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiYmFkIHN0 cmluZyB0YWJsZSBvZmZzZXQgaW4gc3ltYm9sICVkIiksCisgCQkgc3ltbnVtKTsKKworCisKK1Jl OiBbUkZBXSBGaXggInNob3cgY29udmVuaWVuY2UiIHRlc3QKK2h0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDA5LTA5L21zZzAwNTY1Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMDktMDkvbXNnMDAwOTkuaHRtbAorCisjIyMgc3JjL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCTIwMDkvMDkvMTUgMTg6NTE6MjUJMS4xOTYwCisjIyMgc3JjL2dkYi90 ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMDkvMDkvMTcgMTc6NDk6NDYJMS4xOTYxCisjIyAtMSwzICsx LDcgQEAKKysyMDA5LTA5LTE3ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUu Y29tPgorKworKwkqIGdkYi5iYXNlL2RlZmF1bHQuZXhwOiBGaXggInNob3cgY29udmVuaWVuY2Ui LgorKworIDIwMDktMDktMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KKyAKKyAJ KiBsaWIvbWktc3VwcG9ydC5leHAgKG1pX2NyZWF0ZV92YXJvYmopOiBVcGRhdGUuCistLS0gc3Jj L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAJMjAwOS8wOC8xMyAxNDo1ODoyNwkx LjMxCisrKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAJMjAwOS8wOS8x NyAxNzo0OTo0NgkxLjMyCitAQCAtNTk4LDcgKzU5OCw3IEBACisgI3Rlc3Qgc2hvdyBjb25maXJt CisgZ2RiX3Rlc3QgInNob3cgY29uZmlybSIgIldoZXRoZXIgdG8gY29uZmlybSBwb3RlbnRpYWxs eSBkYW5nZXJvdXMgb3BlcmF0aW9ucyBpcyBvXFthLXpcXSouIiAic2hvdyBjb25maXJtIgorICN0 ZXN0IHNob3cgY29udmVuaWVuY2UKKy1nZGJfdGVzdCAic2hvdyBjb252ZW5pZW5jZSIgIk5vIGRl YnVnZ2VyIGNvbnZlbmllbmNlIHZhcmlhYmxlcyBub3cgZGVmaW5lZC4oXFteXHJcblxdKlxbXHJc blxdKStDb252ZW5pZW5jZSB2YXJpYWJsZXMgaGF2ZSBuYW1lcyBzdGFydGluZyB3aXRoIFwiLlwi OyhcW15cclxuXF0qXFtcclxuXF0pK3VzZSBcInNldFwiIGFzIGluIFwic2V0IC5mb28gPSA1XCIg dG8gZGVmaW5lIHRoZW0uIiAic2hvdyBjb252ZW5pZW5jZSIKKytnZGJfdGVzdCAic2hvdyBjb252 ZW5pZW5jZSIgIlxcXCRfc2lnaW5mbyA9IHZvaWQiICJzaG93IGNvbnZlbmllbmNlIgorICN0ZXN0 IHNob3cgZGlyZWN0b3JpZXMKKyBnZGJfdGVzdCAic2hvdyBkaXJlY3RvcmllcyIgIlNvdXJjZSBk aXJlY3RvcmllcyBzZWFyY2hlZDogLmNkaXJcWzo7XF0uY3dkIiAic2hvdyBkaXJlY3RvcmllcyIK KyAjdGVzdCBzaG93IGVkaXRpbmcKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAwOS8wOS8x NSAxODo1MToyNAkxLjk1MworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDA5LzA5LzE3IDE3 OjQ5OjQ2CTEuOTU0CisjIyAtMSwzICsxLDggQEAKKysyMDA5LTA5LTE3ICBQYXVsIFBsdXpobmlr b3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgorKworKwkqIGdkYi50ZXhpbmZvIChjb252ZW5p bmNlIHZhcmlhYmxlcyk6IE1lbnRpb24KKysJJF9zaWdpbmZvIGNvdWxkIGJlIGVtcHR5LgorKwkK KyAyMDA5LTA5LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgCisgCSogZ2Ri LnRleGluZm8gKEdEQi9NSSBWYXJpYWJsZSBPYmplY3RzKTogRG9jdW1lbnQKKy0tLSBzcmMvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDA5LzA5LzE1IDE4OjUxOjI1CTEuNjI0CisrKysgc3JjL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAwOS8wOS8xNyAxNzo0OTo0NgkxLjYyNQorQEAgLTc4MTksOCArNzgx OSwxMCBAQAorIAorIEBpdGVtICRfc2lnaW5mbworIEB2aW5kZXggJF9zaWdpbmZvQHJ7LCBjb252 ZW5pZW5jZSB2YXJpYWJsZX0KKy1UaGUgdmFyaWFibGUgQGNvZGV7JF9zaWdpbmZvfSBpcyBib3Vu ZCB0byBleHRyYSBzaWduYWwgaW5mb3JtYXRpb24KKy1pbnNwZWN0aW9uIChAcHhyZWZ7ZXh0cmEg c2lnbmFsIGluZm9ybWF0aW9ufSkuCisrVGhlIHZhcmlhYmxlIEBjb2RleyRfc2lnaW5mb30gY29u dGFpbnMgZXh0cmEgc2lnbmFsIGluZm9ybWF0aW9uCisrKEBweHJlZntleHRyYSBzaWduYWwgaW5m b3JtYXRpb259KS4gIE5vdGUgdGhhdCBAY29kZXskX3NpZ2luZm99CisrY291bGQgYmUgZW1wdHks IGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgbm90IHlldCByZWNlaXZlZCBhbnkgc2lnbmFscy4KKytG b3IgZXhhbXBsZSwgaXQgd2lsbCBiZSBlbXB0eSBiZWZvcmUgeW91IGV4ZWN1dGUgdGhlIEBjb2Rl e3J1bn0gY29tbWFuZC4KKyBAZW5kIHRhYmxlCisgCisgT24gSFAtVVggc3lzdGVtcywgaWYgeW91 IHJlZmVyIHRvIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgbmFtZSB0aGF0CisKKworCitodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTEyL21zZzAwMTI4Lmh0bWwKKworIyMjIHNy Yy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDA5LzEyLzIzIDIzOjE4OjA4CTEuMjA1NAorIyMj IHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDA5LzEyLzI0IDIxOjU3OjA2CTEuMjA1NQor IyMgLTEsMyArMSwxMCBAQAorKzIwMDktMTItMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKysKKysJRml4IGNvbXBhdGliaWxpdHkgd2l0aCBHKystNC41Lgor KwkqIGdkYi5jcC9leHBhbmQtc2Fscy5jYyAobWFpbik6IFJlbW92ZSB0aGUgImV4aXQtbGluZSIg Y29tbWVudC4KKysJKiBnZGIuY3AvZXhwYW5kLXNhbHMuZXhwOiBSZW1vdmUgYnJlYWtwb2ludCBv biAiZXhpdC1saW5lIi4KKysJKHVuY2F1Z2h0IHJldHVybik6IFJlbW92ZS4KKysKKyAyMDA5LTEy LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCSAgICBQ aGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgorIAorLS0tIHNyYy9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5jYwkyMDA5LzA1LzExIDE1OjA1OjU2CTEuMQorKysrIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5jYwkyMDA5LzEyLzI0IDIxOjU3OjA2 CTEuMgorQEAgLTQ5LDUgKzQ5LDUgQEAKKyAgIEEgYTsKKyAgIEIgYjsKKyAKKy0gIHJldHVybiAw OwkvKiBleGl0LWxpbmUgKi8KKysgIHJldHVybiAwOworIH0KKy0tLSBzcmMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvZXhwYW5kLXNhbHMuZXhwCTIwMDkvMDUvMTEgMTU6MDU6NTYJMS4xCisrKysgc3Jj L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4cGFuZC1zYWxzLmV4cAkyMDA5LzEyLzI0IDIxOjU3OjA2 CTEuMgorQEAgLTIzLDggKzIzLDYgQEAKKyAgICAgcmV0dXJuIC0xCisgfQorIAorLWdkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJleGl0LWxpbmUiXQorLQorIGdkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jLWxpbmUiXQorIGdkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJmdW5jIiAiLipmdW5jLWxpbmUuKiIKKyAKK0BAIC01Miw3ICs1MCwzIEBACisg CSAiYnQgZnJvbSBBIgorIAorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJuZXh0IGNhbGxl ciBmdW5jIiAiLipmdW5jLWxpbmUuKiIKKy0KKy0jIFZlcmlmeSBHREIgcmVhbGx5IGNvdWxkIG5v dCBjYXRjaCBhbnkgb3RoZXIgYnJlYWtwb2ludCBsb2NhdGlvbi4KKy0KKy1nZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAidW5jYXVnaHQgcmV0dXJuIiAiLipleGl0LWxpbmUuKiIKKworCisKK2h0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMTEvbXNnMDAyMTMuaHRtbAorCitb IGN1dCBdCisKKy0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb25kYnJlYWsuZXhwCTIw MDkvMDEvMDMgMDU6NTg6MDMJMS4xMworKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Nv bmRicmVhay5leHAJMjAwOS8xMS8yNSAyMDo0MzoyOQkxLjE0CitAQCAtMjA3LDEwICsyMDcsMTAg QEAKKyBzZXR1cF94ZmFpbCBocHBhMi4wdy0qLSogMTE1MTJDTExicworIHNlbmRfZ2RiICJjb250 aW51ZVxuIgorIGdkYl9leHBlY3QgeworLSAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFrcG9p bnQgXFswLTlcXSssIG1hcmtlcjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0 aW9uOHwkYnBfbG9jYXRpb245KS4qKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcW1x0IFxd Ky4qIiB7CisrICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgbWFy a2VyMiBcXChhPTQzXFwpIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb244fCRicF9sb2NhdGlv bjkpLiooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAk IiB7CisgCXBhc3MgInJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjIiCisgICAgIH0KKy0g ICAgLXJlICJDb250aW51aW5nXFwuLipCcmVha3BvaW50IFxbMC05XF0rLCAkaGV4IGluIG1hcmtl cjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245 KS4qKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcW1x0IFxdKy4qIiB7CisrICAgIC1yZSAi Q29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgJGhleCBpbiBtYXJrZXIyIFxcKGE9 NDNcXCkgYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSkuKigkYnBf bG9jYXRpb244fCRicF9sb2NhdGlvbjkpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsKKyAJeGZh aWwgInJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjIiCisgICAgIH0KKyAgICAgLXJlICIk Z2RiX3Byb21wdCAkIiB7CisKKworCitGaXggZm9yIGdmb3J0cmFuLTQuMToKKyAgLVBBU1M6IGdk Yi5taS9taS12YXItY2hpbGQtZi5leHA6IG1pIHJ1bnRvIE1BSU5fXworICArRkFJTDogZ2RiLm1p L21pLXZhci1jaGlsZC1mLmV4cDogbWkgcnVudG8gTUFJTl9fICh1bmtub3duIG91dHB1dCBhZnRl ciBydW5uaW5nKQorCitSRkM6IE1vdmUgbGFuZ3VhZ2UtY2hhbmdlZCBtZXNzYWdlIHRvIHZlcmJv c2UKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTExL21zZzAwMDMx Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMTEvbXNnMDAwMzQu aHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAwOS8xMS8wNSAxOTo1MzowMwkxLjExMDMw CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAwOS8xMS8wNSAyMDo0Mzo1MgkxLjExMDMxCisjIyAt MSwzICsxLDggQEAKKysyMDA5LTExLTA1ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291 cmNlcnkuY29tPgorKworKwkqIHRvcC5jIChleGVjdXRlX2NvbW1hbmQpOiBTZWxlY3QgYSBmcmFt ZSBiZWZvcmUgY2hlY2tpbmcgdGhlIGN1cnJlbnQKKysJbGFuZ3VhZ2UuICBPbmx5IG91dHB1dCBh IG1lc3NhZ2UgaWYgdmVyYm9zZS4KKysKKyAyMDA5LTExLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5 QHJlZGhhdC5jb20+CisgCisgCSogc3ltdGFiLmggKFNZTUJPTF9TRVRfTElOS0FHRV9OQU1FKTog VXBkYXRlIGNvbW1lbnQuCistLS0gc3JjL2dkYi90b3AuYwkyMDA5LzEwLzE5IDA5OjUxOjQyCTEu MTcyCisrKysgc3JjL2dkYi90b3AuYwkyMDA5LzExLzA1IDIwOjQzOjUyCTEuMTczCitAQCAtNDU3 LDEwICs0NTcsMTMgQEAKKyAKKyAgICAgfQorIAorLSAgLyogVGVsbCB0aGUgdXNlciBpZiB0aGUg bGFuZ3VhZ2UgaGFzIGNoYW5nZWQgKGV4Y2VwdCBmaXJzdCB0aW1lKS4gICovCisrICAvKiBUZWxs IHRoZSB1c2VyIGlmIHRoZSBsYW5ndWFnZSBoYXMgY2hhbmdlZCAoZXhjZXB0IGZpcnN0IHRpbWUp LgorKyAgICAgRmlyc3QgbWFrZSBzdXJlIHRoYXQgYSBuZXcgZnJhbWUgaGFzIGJlZW4gc2VsZWN0 ZWQsIGluIGNhc2UgdGhpcworKyAgICAgY29tbWFuZCBvciB0aGUgaG9va3MgY2hhbmdlZCB0aGUg cHJvZ3JhbSBzdGF0ZS4gICovCisrICBkZXByZWNhdGVkX3NhZmVfZ2V0X3NlbGVjdGVkX2ZyYW1l ICgpOworICAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UgIT0gZXhwZWN0ZWRfbGFuZ3VhZ2UpCisgICAg IHsKKy0gICAgICBpZiAobGFuZ3VhZ2VfbW9kZSA9PSBsYW5ndWFnZV9tb2RlX2F1dG8pCisrICAg ICAgaWYgKGxhbmd1YWdlX21vZGUgPT0gbGFuZ3VhZ2VfbW9kZV9hdXRvICYmIGluZm9fdmVyYm9z ZSkKKyAJeworIAkgIGxhbmd1YWdlX2luZm8gKDEpOwkvKiBQcmludCB3aGF0IGNoYW5nZWQuICAq LworIAl9CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQu cGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzdhODg4Ci0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKQEAgLTAsMCArMSwxMjIg QEAKKy0tLSAuL2dkYi9icmVha3BvaW50LmMJMjAwOS0xMi0xOCAwMDoxMzo0OS4wMDAwMDAwMDAg KzAxMDAKKysrKyAuL2dkYi9icmVha3BvaW50LmMJMjAwOS0xMi0xOCAwMDoxMzoxNi4wMDAwMDAw MDAgKzAxMDAKK0BAIC04NTYzLDYgKzg1NjMsNDkgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRp b25zIChzdHJ1Y3QgYnJlYQorICAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0ICgxKTsKKyB9 CisgCisrdm9pZAorK2JyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpCisreworKyAgc3RydWN0IGJwX2xvY2F0 aW9uICpibCwgKipibHBfdG1wOworKyAgaW50IGNoYW5nZWQgPSAwOworKworKyAgZ2RiX2Fzc2Vy dCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKTsKKysK KysgIEFMTF9CUF9MT0NBVElPTlMgKGJsLCBibHBfdG1wKQorKyAgICB7CisrICAgICAgc3RydWN0 IG9ial9zZWN0aW9uICpvc2VjdDsKKysKKysgICAgICAvKiBCTC0+U0VDVElPTiBjYW4gYmUgY29y cmVjdGx5IE5VTEwgZm9yIGJyZWFrcG9pbnRzIHdpdGggbXVsdGlwbGUKKysgICAgICAgICBsb2Nh dGlvbnMgZXhwYW5kZWQgdGhyb3VnaCBzeW10YWIuICAqLworKworKyAgICAgIEFMTF9PQkpGSUxF X09TRUNUSU9OUyAob2JqZmlsZSwgb3NlY3QpCisrCXsKKysJICBDT1JFX0FERFIgcmVsb2NhdGVk X2FkZHJlc3M7CisrCSAgQ09SRV9BRERSIGRlbHRhX29mZnNldDsKKysKKysJICBkZWx0YV9vZmZz ZXQgPSBBTk9GRlNFVCAoZGVsdGEsIG9zZWN0LT50aGVfYmZkX3NlY3Rpb24tPmluZGV4KTsKKysJ ICBpZiAoZGVsdGFfb2Zmc2V0ID09IDApCisrCSAgICBjb250aW51ZTsKKysJICByZWxvY2F0ZWRf YWRkcmVzcyA9IGJsLT5hZGRyZXNzICsgZGVsdGFfb2Zmc2V0OworKworKwkgIGlmIChvYmpfc2Vj dGlvbl9hZGRyIChvc2VjdCkgPD0gcmVsb2NhdGVkX2FkZHJlc3MKKysJICAgICAgJiYgcmVsb2Nh dGVkX2FkZHJlc3MgPCBvYmpfc2VjdGlvbl9lbmRhZGRyIChvc2VjdCkpCisrCSAgICB7CisrCSAg ICAgIGlmIChibC0+aW5zZXJ0ZWQpCisrCQlyZW1vdmVfYnJlYWtwb2ludCAoYmwsIG1hcmtfdW5p bnNlcnRlZCk7CisrCisrCSAgICAgIGJsLT5hZGRyZXNzICs9IGRlbHRhX29mZnNldDsKKysJICAg ICAgYmwtPnJlcXVlc3RlZF9hZGRyZXNzICs9IGRlbHRhX29mZnNldDsKKysKKysJICAgICAgY2hh bmdlZCA9IDE7CisrCSAgICB9CisrCX0KKysgICAgfQorKworKyAgaWYgKGNoYW5nZWQpCisrICAg IHFzb3J0IChicF9sb2NhdGlvbiwgYnBfbG9jYXRpb25fY291bnQsIHNpemVvZiAoKmJwX2xvY2F0 aW9uKSwKKysJICAgYnBfbG9jYXRpb25fY29tcGFyZV9mb3JfcXNvcnQpOworK30KKyAKKyAvKiBS ZXNldCBhIGJyZWFrcG9pbnQgZ2l2ZW4gaXQncyBzdHJ1Y3QgYnJlYWtwb2ludCAqIEJJTlQuCisg ICAgVGhlIHZhbHVlIHdlIHJldHVybiBlbmRzIHVwIGJlaW5nIHRoZSByZXR1cm4gdmFsdWUgZnJv bSBjYXRjaF9lcnJvcnMuCistLS0gLi9nZGIvYnJlYWtwb2ludC5oCTIwMDktMTItMTggMDA6MTM6 NDguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvYnJlYWtwb2ludC5oCTIwMDktMTItMTcgMjI6 MTE6MTAuMDAwMDAwMDAwICswMTAwCitAQCAtOTcwLDQgKzk3MCw3IEBAIGV4dGVybiBzdHJ1Y3Qg YnJlYWtwb2ludCAqZ2V0X3RyYWNlcG9pbnQKKyAgICBpcyBuZXdseSBhbGxvY2F0ZWQ7IHRoZSBj YWxsZXIgc2hvdWxkIGZyZWUgd2hlbiBkb25lIHdpdGggaXQuICAqLworIGV4dGVybiBWRUMoYnJl YWtwb2ludF9wKSAqYWxsX3RyYWNlcG9pbnRzICh2b2lkKTsKKyAKKytleHRlcm4gdm9pZCBicmVh a3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCSAgc3RydWN0 IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOworKworICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQ T0lOVF9IKSAqLworLS0tIC4vZ2RiL29iamZpbGVzLmMJMjAwOS0xMi0xOCAwMDoxMzo0OC4wMDAw MDAwMDAgKzAxMDAKKysrKyAuL2dkYi9vYmpmaWxlcy5jCTIwMDktMTItMTcgMjM6MTk6MjIuMDAw MDAwMDAwICswMTAwCitAQCAtNTQ2LDcgKzU0Niw3IEBAIGZyZWVfYWxsX29iamZpbGVzICh2b2lk KQorIC8qIFJlbG9jYXRlIE9CSkZJTEUgdG8gTkVXX09GRlNFVFMuICBUaGVyZSBzaG91bGQgYmUg T0JKRklMRS0+TlVNX1NFQ1RJT05TCisgICAgZW50cmllcyBpbiBuZXdfb2Zmc2V0cy4gIFNFUEFS QVRFX0RFQlVHX09CSkZJTEUgaXMgbm90IHRvdWNoZWQgaGVyZS4gICovCisgCistc3RhdGljIHZv aWQKKytzdGF0aWMgaW50Cisgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKKyB7CisgICBzdHJ1Y3Qg b2JqX3NlY3Rpb24gKnM7CitAQCAtNTY1LDcgKzU2NSw3IEBAIG9iamZpbGVfcmVsb2NhdGUxIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAJICBzb21ldGhpbmdfY2hhbmdlZCA9IDE7CisgICAgICAg fQorICAgICBpZiAoIXNvbWV0aGluZ19jaGFuZ2VkKQorLSAgICAgIHJldHVybjsKKysgICAgICBy ZXR1cm4gMDsKKyAgIH0KKyAKKyAgIC8qIE9LLCBnZXQgYWxsIHRoZSBzeW10YWJzLiAgKi8KK0BA IC03MDYsNiArNzA2LDEzIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmkKKyAgICAgICBleGVjX3NldF9zZWN0aW9uX2FkZHJlc3MgKGJmZF9nZXRfZmlsZW5hbWUgKG9i amZpbGUtPm9iZmQpLCBpZHgsCisgCQkJCW9ial9zZWN0aW9uX2FkZHIgKHMpKTsKKyAgICAgfQor KworKyAgLyogRmluYWwgY2FsbCBvZiBicmVha3BvaW50X3JlX3NldCBjYW4ga2VlcCBicmVha3Bv aW50IGxvY2F0aW9ucyBkaXNhYmxlZCBpZgorKyAgICAgdGhlaXIgYWRkcmVzc2VzIG1hdGNoLiAg Ki8KKysgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5V TEwpCisrICAgIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChvYmpmaWxlLCBkZWx0YSk7CisrCisrICBy ZXR1cm4gMTsKKyB9CisgCisgLyogUmVsb2NhdGUgT0JKRklMRSB0byBORVdfT0ZGU0VUUy4gIFRo ZXJlIHNob3VsZCBiZSBPQkpGSUxFLT5OVU1fU0VDVElPTlMKK0BAIC03MjAsNyArNzI3LDkgQEAg b2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQorIHZvaWQKKyBvYmpmaWxl X3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0 cyAqbmV3X29mZnNldHMpCisgeworLSAgb2JqZmlsZV9yZWxvY2F0ZTEgKG9iamZpbGUsIG5ld19v ZmZzZXRzKTsKKysgIGludCBjaGFuZ2VkID0gMDsKKysKKysgIGNoYW5nZWQgfD0gb2JqZmlsZV9y ZWxvY2F0ZTEgKG9iamZpbGUsIG5ld19vZmZzZXRzKTsKKyAKKyAgIGlmIChvYmpmaWxlLT5zZXBh cmF0ZV9kZWJ1Z19vYmpmaWxlICE9IE5VTEwpCisgICAgIHsKK0BAIC03NDcsMTEgKzc1NiwxMiBA QCBvYmpmaWxlX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCisgCQkJCQkgICAgIG9i amZpbGVfYWRkcnMpOworICAgICAgIGRvX2NsZWFudXBzIChteV9jbGVhbnVwcyk7CisgCistICAg ICAgb2JqZmlsZV9yZWxvY2F0ZTEgKGRlYnVnX29iamZpbGUsIG5ld19kZWJ1Z19vZmZzZXRzKTsK KysgICAgICBjaGFuZ2VkIHw9IG9iamZpbGVfcmVsb2NhdGUxIChkZWJ1Z19vYmpmaWxlLCBuZXdf ZGVidWdfb2Zmc2V0cyk7CisgICAgIH0KKyAKKyAgIC8qIFJlbG9jYXRlIGJyZWFrcG9pbnRzIGFz IG5lY2Vzc2FyeSwgYWZ0ZXIgdGhpbmdzIGFyZSByZWxvY2F0ZWQuICovCistICBicmVha3BvaW50 X3JlX3NldCAoKTsKKysgIGlmIChjaGFuZ2VkKQorKyAgICBicmVha3BvaW50X3JlX3NldCAoKTsK KyB9CisgDAorIC8qIFJldHVybiBub24temVybyBpZiBPQkpGSUxFIGhhcyBwYXJ0aWFsIHN5bWJv bHMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaCBiL2dkYi1h cmNoZXItcGllLWFkZG9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zMzA2Yzc3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNo CkBAIC0wLDAgKzEsMzEyIEBACistLS0gYS9nZGIvZHdhcmYycmVhZC5jCisrKysgYi9nZGIvZHdh cmYycmVhZC5jCitAQCAtNTc1NCw3ICs1NzU0LDEyIEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgeworICAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cjsKKyAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKy0gIENPUkVfQUREUiBiYXNl ID0gKENPUkVfQUREUikgMDsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZp bGU7CisrICBDT1JFX0FERFIgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9v ZmZzZXRzLAorKwkJCQkgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOworKyAgLyogVGhpcyBpcyB1 c2VkIG9ubHkgZm9yIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uIGVudHJpZXMuICAqLworKyAg Q09SRV9BRERSIGJhc2UgPSAwOworKyAgaW50IGJhc2VfcCA9IDA7CisgCisgICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKKyAgIGlmIChhdHRyKQorQEAgLTU3 NjMsNiArNTc2OCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0 cikpCisgCXsKKyAJICBiYXNlID0gZGVjb2RlX2xvY2Rlc2MgKERXX0JMT0NLIChhdHRyKSwgY3Up OworKwkgIGJhc2VfcCA9IDE7CisgCX0KKyAgICAgICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfc2Vj dGlvbl9vZmZzZXQgKGF0dHIpKQorIAl7CitAQCAtNTgyNCwxMiArNTgzMCwxNSBAQCByZWFkX2Nv bW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor IAkgICAgICBlbHNlCisgCQlkd2FyZjJfY29tcGxleF9sb2NhdGlvbl9leHByX2NvbXBsYWludCAo KTsKKyAKKy0JICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkgPSBiYXNlICsgYnl0ZV9v ZmZzZXQ7CisrCSAgICAgIGlmICghYmFzZV9wKQorKwkJZHdhcmYyX2ludmFsaWRfYXR0cmliX2Ns YXNzX2NvbXBsYWludAorKwkJICAoIkRXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uIiwgImNvbW1v biBibG9jayBtZW1iZXIiKTsKKysJICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkgPSBi YXNlICsgYnl0ZV9vZmZzZXQgKyBiYXNlYWRkcjsKKyAJICAgICAgYWRkX3N5bWJvbF90b19saXN0 IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CisgCSAgICB9CisgCisgCSAgaWYgKFNZTUJPTF9DTEFT UyAoc3ltKSA9PSBMT0NfU1RBVElDKQorLQkgICAgU0VUX0ZJRUxEX1BIWVNBRERSICgqZmllbGQs IFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pKTsKKysJICAgIFNFVF9GSUVMRF9QSFlTQUREUiAo KmZpZWxkLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSAtIGJhc2VhZGRyKTsKKyAJICBlbHNl CisgCSAgICBTRVRfRklFTERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJTktBR0VfTkFNRSAo c3ltKSk7CisgCSAgRklFTERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBFIChzeW0pOworQEAg LTU4NDMsNyArNTg1Miw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCisgICAgICAgc3ltID0gbmV3X3N5bWJvbCAoZGll LCB0eXBlLCBjdSk7CisgICAgICAgLyogU1lNQk9MX1ZBTFVFX0FERFJFU1MgbmV2ZXIgZ2V0cyB1 c2VkIGFzIGFsbCBpdHMgZmllbGRzIGFyZSBzdGF0aWMuICAqLworLSAgICAgIFNZTUJPTF9WQUxV RV9BRERSRVNTIChzeW0pID0gYmFzZTsKKysgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3lt KSA9IGJhc2UgKyBiYXNlYWRkcjsKKyAKKyAgICAgICBzZXRfZGllX3R5cGUgKGRpZSwgdHlwZSwg Y3UpOworICAgICB9CistLS0gYS9nZGIvZXhlYy5jCisrKysgYi9nZGIvZXhlYy5jCitAQCAtMzIs NiArMzIsNyBAQAorICNpbmNsdWRlICJleGVjLmgiCisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCisg I2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAic29saWIuaCIKKyAKKyAjaW5jbHVk ZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKK0BAIC0yMjAsNiAr MjIxLDEwIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkp CisgICAgICAgY2hhciAqc2NyYXRjaF9wYXRobmFtZTsKKyAgICAgICBpbnQgc2NyYXRjaF9jaGFu OworICAgICAgIHN0cnVjdCB0YXJnZXRfc2VjdGlvbiAqc2VjdGlvbnMgPSBOVUxMLCAqc2VjdGlv bnNfZW5kID0gTlVMTDsKKysgICAgICBzdHJ1Y3QgdGFyZ2V0X3NlY3Rpb24gKnA7CisrICAgICAg aW50IGFkZHJfYml0OworKyAgICAgIENPUkVfQUREUiBtYXNrID0gQ09SRV9BRERSX01BWDsKKysg ICAgICBDT1JFX0FERFIgZGlzcGxhY2VtZW50OworIAorICAgICAgIHNjcmF0Y2hfY2hhbiA9IG9w ZW5wIChnZXRlbnYgKCJQQVRIIiksIE9QRl9UUllfQ1dEX0ZJUlNULCBmaWxlbmFtZSwKKyAJCSAg IHdyaXRlX2ZpbGVzID8gT19SRFdSIHwgT19CSU5BUlkgOiBPX1JET05MWSB8IE9fQklOQVJZLAor QEAgLTI4OCwxMiArMjkzLDIzIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBp bnQgZnJvbV90dHkpCisgCQkgc2NyYXRjaF9wYXRobmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9l cnJvciAoKSkpOworIAl9CisgCisrICAgICAgc2V0X2dkYmFyY2hfZnJvbV9maWxlIChleGVjX2Jm ZCk7CisrCisrICAgICAgYWRkcl9iaXQgPSBnZGJhcmNoX2FkZHJfYml0ICh0YXJnZXRfZ2RiYXJj aCk7CisrICAgICAgaWYgKGFkZHJfYml0IDwgKHNpemVvZiAoQ09SRV9BRERSKSAqIEhPU1RfQ0hB Ul9CSVQpKQorKwltYXNrID0gKChDT1JFX0FERFIpIDEgPDwgYWRkcl9iaXQpIC0gMTsKKysKKysg ICAgICBkaXNwbGFjZW1lbnQgPSBzb2xpYl9leGVjX2Rpc3BsYWNlbWVudCAoKTsKKysgICAgICBm b3IgKHAgPSBzZWN0aW9uczsgcCA8IHNlY3Rpb25zX2VuZDsgcCsrKQorKwl7CisrCSAgcC0+YWRk ciA9IChwLT5hZGRyICsgZGlzcGxhY2VtZW50KSAmIG1hc2s7CisrCSAgcC0+ZW5kYWRkciA9IChw LT5lbmRhZGRyICsgZGlzcGxhY2VtZW50KSAmIG1hc2s7CisrCX0KKysKKyAgICAgICBleGVjX2Jm ZF9tdGltZSA9IGJmZF9nZXRfbXRpbWUgKGV4ZWNfYmZkKTsKKyAKKyAgICAgICB2YWxpZGF0ZV9m aWxlcyAoKTsKKyAKKy0gICAgICBzZXRfZ2RiYXJjaF9mcm9tX2ZpbGUgKGV4ZWNfYmZkKTsKKy0K KyAgICAgICAvKiBBZGQgdGhlIGV4ZWN1dGFibGUncyBzZWN0aW9ucyB0byB0aGUgY3VycmVudCBh ZGRyZXNzIHNwYWNlcycKKyAJIGxpc3Qgb2Ygc2VjdGlvbnMuICAqLworICAgICAgIGFkZF90YXJn ZXRfc2VjdGlvbnMgKHNlY3Rpb25zLCBzZWN0aW9uc19lbmQpOworLS0tIGEvZ2RiL2dkYnR5cGVz LmgKKysrKyBiL2dkYi9nZGJ0eXBlcy5oCitAQCAtOTY2LDYgKzk2Niw3IEBAIGV4dGVybiB2b2lk IGFsbG9jYXRlX2NwbHVzX3N0cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAjZGVmaW5lIEZJ RUxEX0xPQ19LSU5EKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jX2tpbmQpCisgI2RlZmluZSBGSUVM RF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuYml0cG9zKQorICNkZWZpbmUgRklFTERf U1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNuYW1lKQorKy8qIFRo aXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0aGUgb2JqZmlsZSdzIEFOT0ZGU0VULiAgKi8K KyAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5w aHlzYWRkcikKKyAjZGVmaW5lIEZJRUxEX0RXQVJGX0JMT0NLKHRoaXNmbGQpICgodGhpc2ZsZCku bG9jLmR3YXJmX2Jsb2NrKQorICNkZWZpbmUgU0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxkLCBiaXRw b3MpCQkJXAorQEAgLTk3NCw2ICs5NzUsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9jcGx1c19z dHJ1Y3RfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2RlZmluZSBTRVRfRklFTERfUEhZU05BTUUo dGhpc2ZsZCwgbmFtZSkJCQlcCisgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklFTERf TE9DX0tJTkRfUEhZU05BTUUsCQlcCisgICAgRklFTERfU1RBVElDX1BIWVNOQU1FICh0aGlzZmxk KSA9IChuYW1lKSkKKysvKiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZp bGUncyBBTk9GRlNFVC4gICovCisgI2RlZmluZSBTRVRfRklFTERfUEhZU0FERFIodGhpc2ZsZCwg YWRkcikJCQlcCisgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklFTERfTE9DX0tJTkRf UEhZU0FERFIsCQlcCisgICAgRklFTERfU1RBVElDX1BIWVNBRERSICh0aGlzZmxkKSA9IChhZGRy KSkKK0BAIC05ODksNiArOTkxLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfY3BsdXNfc3RydWN0 X3R5cGUgKHN0cnVjdCB0eXBlICopOworICNkZWZpbmUgVFlQRV9GSUVMRF9MT0NfS0lORCh0aGlz dHlwZSwgbikgRklFTERfTE9DX0tJTkQgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKKyAjZGVm aW5lIFRZUEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZUEVfRklF TEQgKHRoaXN0eXBlLCBuKSkKKyAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FKHRo aXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBu KSkKKysvKiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9G RlNFVC4gICovCisgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzdHlwZSwg bikgRklFTERfU1RBVElDX1BIWVNBRERSIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCisgI2Rl ZmluZSBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLKHRoaXN0eXBlLCBuKSBGSUVMRF9EV0FSRl9CTE9D SyAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQorICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklD SUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikp CistLS0gYS9nZGIvanYtbGFuZy5jCisrKysgYi9nZGIvanYtbGFuZy5jCitAQCAtNDE2LDcgKzQx Niw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAK KyAgIGZpZWxkcyA9IE5VTEw7CisgICBuZmllbGRzLS07CQkJLyogRmlyc3Qgc2V0IHVwIGR1bW15 ICJjbGFzcyIgZmllbGQuICovCistICBTRVRfRklFTERfUEhZU0FERFIgKFRZUEVfRklFTEQgKHR5 cGUsIG5maWVsZHMpLCB2YWx1ZV9hZGRyZXNzIChjbGFzKSk7CisrICBTRVRfRklFTERfUEhZU0FE RFIgKFRZUEVfRklFTEQgKHR5cGUsIG5maWVsZHMpLCB2YWx1ZV9hZGRyZXNzIChjbGFzKQorKyAg ICAtIChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwgPyAwIDogQU5PRkZTRVQgKFRZUEVfT0JK RklMRSAodHlwZSktPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAoVFlQRV9PQkpGSUxF ICh0eXBlKSkpKSk7CisgICBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIG5maWVsZHMpID0gImNsYXNz IjsKKyAgIFRZUEVfRklFTERfVFlQRSAodHlwZSwgbmZpZWxkcykgPSB2YWx1ZV90eXBlIChjbGFz KTsKKyAgIFNFVF9UWVBFX0ZJRUxEX1BSSVZBVEUgKHR5cGUsIG5maWVsZHMpOworQEAgLTQ2Miw3 ICs0NjMsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CisgCSAgU0VUX1RZUEVfRklFTERfUFJPVEVDVEVEICh0eXBlLCBpKTsKKyAJfQorICAgICAgIGlm IChhY2NmbGFncyAmIDB4MDAwOCkJLyogQUNDX1NUQVRJQyAqLworLQlTRVRfRklFTERfUEhZU0FE RFIgKFRZUEVfRklFTEQgKHR5cGUsIGkpLCBib2Zmc2V0KTsKKysJU0VUX0ZJRUxEX1BIWVNBRERS IChUWVBFX0ZJRUxEICh0eXBlLCBpKSwgYm9mZnNldAorKwkgIC0gKFRZUEVfT0JKRklMRSAodHlw ZSkgPT0gTlVMTCA/IDAgOiBBTk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBlKS0+c2VjdGlvbl9v ZmZzZXRzLCBTRUNUX09GRl9URVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkpKTsKKyAgICAgICBl bHNlCisgCVRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSA9IDggKiBib2Zmc2V0OworICAgICAg IGlmIChhY2NmbGFncyAmIDB4ODAwMCkJLyogRklFTERfVU5SRVNPTFZFRF9GTEFHICovCistLS0g YS9nZGIvc29saWItc3ZyNC5jCisrKysgYi9nZGIvc29saWItc3ZyNC5jCitAQCAtMTY3MiwxNSAr MTY3MiwyMCBAQCBzdGF0aWMgQ09SRV9BRERSCisgc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAodm9p ZCkKKyB7CisgICBpbnQgZm91bmQ7CisrICAvKiBFTlRSWV9QT0lOVCBpcyBhIHBvc3NpYmxlIGZ1 bmN0aW9uIGRlc2NyaXB0b3IgLSBiZWZvcmUKKysgICAgIGEgY2FsbCB0byBnZGJhcmNoX2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyLiAgKi8KKyAgIENPUkVfQUREUiBlbnRyeV9wb2ludDsKKyAK KyAgIGlmIChleGVjX2JmZCA9PSBOVUxMKQorICAgICByZXR1cm4gMDsKKyAKKyAgIGlmICh0YXJn ZXRfYXV4dl9zZWFyY2ggKCZjdXJyZW50X3RhcmdldCwgQVRfRU5UUlksICZlbnRyeV9wb2ludCkg PT0gMSkKKy0gICAgcmV0dXJuIGVudHJ5X3BvaW50IC0gZXhlY19lbnRyeV9wb2ludCAoZXhlY19i ZmQsICZjdXJyZW50X3RhcmdldCk7CisrICAgIHJldHVybiBlbnRyeV9wb2ludCAtIGJmZF9nZXRf c3RhcnRfYWRkcmVzcyAoZXhlY19iZmQpOworIAorLSAgcmV0dXJuIHN2cjRfc3RhdGljX2V4ZWNf ZGlzcGxhY2VtZW50ICgpOworKyAgaWYgKCFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxs X3B0aWQpKQorKyAgICByZXR1cm4gc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQgKCk7Cisr CisrICByZXR1cm4gMDsKKyB9CisgCisgLyogUmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZS4g IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1cG9uCitAQCAtMTYzMiw3ICsxNjM1LDcg QEAgc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAodm9pZCkKKyBzdGF0aWMgdm9pZAorIHN2cjRfcmVs b2NhdGVfbWFpbl9leGVjdXRhYmxlICh2b2lkKQorIHsKKy0gIENPUkVfQUREUiBkaXNwbGFjZW1l bnQgPSBzdnI0X2V4ZWNfZGlzcGxhY2VtZW50ICgpOworKyAgQ09SRV9BRERSIGRpc3BsYWNlbWVu dCA9IHNvbGliX2V4ZWNfZGlzcGxhY2VtZW50ICgpOworIAorICAgLyogRXZlbiBpZiBESVNQTEFD RU1FTlQgaXMgMCBzdGlsbCB0cnkgdG8gcmVsb2NhdGUgaXQgYXMgdGhpcyBpcyBhIG5ldworICAg ICAgZGlmZmVyZW5jZSBvZiBpbi1tZW1vcnkgdnMuIGluLWZpbGUgYWRkcmVzc2VzIGFuZCB3ZSBj b3VsZCBhbHJlYWR5CitAQCAtMTk3NSw2ICsxOTc4LDcgQEAgX2luaXRpYWxpemVfc3ZyNF9zb2xp YiAodm9pZCkKKyAgIHN2cjRfc29fb3BzLmZyZWVfc28gPSBzdnI0X2ZyZWVfc287CisgICBzdnI0 X3NvX29wcy5jbGVhcl9zb2xpYiA9IHN2cjRfY2xlYXJfc29saWI7CisgICBzdnI0X3NvX29wcy5z b2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayA9IHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hv b2s7CisrICBzdnI0X3NvX29wcy5leGVjX2Rpc3BsYWNlbWVudCA9IHN2cjRfZXhlY19kaXNwbGFj ZW1lbnQ7CisgICBzdnI0X3NvX29wcy5zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyA9IHN2cjRfc3Bl Y2lhbF9zeW1ib2xfaGFuZGxpbmc7CisgICBzdnI0X3NvX29wcy5jdXJyZW50X3NvcyA9IHN2cjRf Y3VycmVudF9zb3M7CisgICBzdnI0X3NvX29wcy5vcGVuX3N5bWJvbF9maWxlX29iamVjdCA9IG9w ZW5fc3ltYm9sX2ZpbGVfb2JqZWN0OworLS0tIGEvZ2RiL3NvbGliLmMKKysrKyBiL2dkYi9zb2xp Yi5jCitAQCAtMTAxNCw2ICsxMDE0LDE5IEBAIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChp bnQgZnJvbV90dHkpCisgICBvcHMtPnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9tX3R0 eSk7CisgfQorIAorKy8qIFF1ZXJ5IHRoZSBkaWZmZXJlbmNlIG9mIGluLW1lbW9yeSBWTUEgYWRk cmVzc2VzIHZzLiBleGVjX2JmZCBWTUFzLiAgKi8KKysKKytDT1JFX0FERFIKKytzb2xpYl9leGVj X2Rpc3BsYWNlbWVudCAodm9pZCkKKyt7CisrICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0g c29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CisrCisrICBpZiAob3BzLT5leGVjX2Rpc3BsYWNl bWVudCAhPSBOVUxMKQorKyAgICByZXR1cm4gKCpvcHMtPmV4ZWNfZGlzcGxhY2VtZW50KSAoKTsK KysgIGVsc2UKKysgICAgcmV0dXJuIDA7CisrfQorKworIC8qIEdMT0JBTCBGVU5DVElPTgorIAor ICAgIGluX3NvbGliX2R5bnN5bV9yZXNvbHZlX2NvZGUgLS0gY2hlY2sgdG8gc2VlIGlmIGFuIGFk ZHJlc3MgaXMgaW4KKy0tLSBhL2dkYi9zb2xpYi5oCisrKysgYi9nZGIvc29saWIuaAorQEAgLTQz LDYgKzQzLDggQEAgZXh0ZXJuIGludCBzb2xpYl9yZWFkX3N5bWJvbHMgKHN0cnVjdCBzb19saXN0 ICosIGludCk7CisgCisgZXh0ZXJuIHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGlu dCBmcm9tX3R0eSk7CisgCisrZXh0ZXJuIENPUkVfQUREUiBzb2xpYl9leGVjX2Rpc3BsYWNlbWVu dCAodm9pZCk7CisrCisgLyogSWYgQUREUiBsaWVzIGluIGEgc2hhcmVkIGxpYnJhcnksIHJldHVy biBpdHMgbmFtZS4gICovCisgCisgZXh0ZXJuIGNoYXIgKnNvbGliX25hbWVfZnJvbV9hZGRyZXNz IChDT1JFX0FERFIpOworLS0tIGEvZ2RiL3NvbGlzdC5oCisrKysgYi9nZGIvc29saXN0LmgKK0BA IC04OSw2ICs4OSw5IEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCisgICAgIC8qIFRhcmdldCBkZXBl bmRlbnQgY29kZSB0byBydW4gYWZ0ZXIgY2hpbGQgcHJvY2VzcyBmb3JrLiAgKi8KKyAgICAgdm9p ZCAoKnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKSAoaW50IGZyb21fdHR5KTsKKyAKKysgICAg LyogUXVlcnkgdGhlIGRpZmZlcmVuY2Ugb2YgaW4tbWVtb3J5IFZNQSBhZGRyZXNzZXMgdnMuIGV4 ZWNfYmZkIFZNQXMuICAqLworKyAgICBDT1JFX0FERFIgKCpleGVjX2Rpc3BsYWNlbWVudCkgKHZv aWQpOworKworICAgICAvKiBEbyBhZGRpdGlvbmFsIHN5bWJvbCBoYW5kbGluZywgbG9va3VwLCBl dGMuIGFmdGVyIHN5bWJvbHMKKyAgICAgICAgZm9yIGEgc2hhcmVkIG9iamVjdCBoYXZlIGJlZW4g bG9hZGVkLiAgKi8KKyAgICAgdm9pZCAoKnNwZWNpYWxfc3ltYm9sX2hhbmRsaW5nKSAodm9pZCk7 CistLS0gYS9nZGIvc3ltZmlsZS5jCisrKysgYi9nZGIvc3ltZmlsZS5jCitAQCAtODczLDE1ICs4 NzMsMzYgQEAgc3ltc19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorICAg ICAgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBzeW1ib2wgcmVhZGluZy4gICovCisgICBvbGRf Y2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9vYmpmaWxlIChvYmpmaWxlKTsKKyAKKy0gIC8qIElm IEFERFJTIGFuZCBPRkZTRVRTIGFyZSBib3RoIE5VTEwsIHB1dCB0b2dldGhlciBhIGR1bW15IGFk ZHJlc3MKKy0gICAgIGxpc3QuICBXZSBub3cgZXN0YWJsaXNoIHRoZSBjb252ZW50aW9uIHRoYXQg YW4gYWRkciBvZiB6ZXJvIG1lYW5zCistICAgICBubyBsb2FkIGFkZHJlc3Mgd2FzIHNwZWNpZmll ZC4gKi8KKysgIC8qIElmIEFERFJTIGFuZCBPRkZTRVRTIGFyZSBib3RoIE5VTEwsIHB1dCB0b2dl dGhlciBhIGR1bW15IG9mZnNldCBsaXN0LiAgKi8KKysKKyAgIGlmICghIGFkZHJzICYmICEgb2Zm c2V0cykKKyAgICAgeworLSAgICAgIGxvY2FsX2FkZHIKKy0JPSBhbGxvY19zZWN0aW9uX2FkZHJf aW5mbyAoYmZkX2NvdW50X3NlY3Rpb25zIChvYmpmaWxlLT5vYmZkKSk7CistICAgICAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgbG9jYWxfYWRkcik7CistICAgICAgYWRkcnMgPSBsb2NhbF9hZGRyOwor KyAgICAgIC8qIFJlbG9jYXRlYmxlIGZpbGVzIGhhdmUgYW4gZXhjZXB0aW9uIGluIGRlZmF1bHRf c3ltZmlsZV9vZmZzZXRzIHdoaWNoCisrCSBhcHBsaWVzIG9ubHkgZm9yIEFERFJTLiAgQnV0IGNh bGxpbmcgc29saWJfZXhlY19kaXNwbGFjZW1lbnQgaXMgbW9yZQorKwkgc3VpdGFibGUgZm9yIE9G RlNFVFMuICBGb3J0dW5hdGVseSB3ZSBuZXZlciBuZWVkIHRoZSBib3RoCisrCSBmdW5jdGlvbmFs aXRpZXMgc2ltdWx0YW5lb3VzbHkgYW5kIGluIG90aGVyIGNhc2VzIHplcm9lZCBBRERSUyBhbmQK KysJIHplcm9lZCBPRkZTRVRTIGFyZSBlcXVpdmFsZW50LiAgKi8KKysKKysgICAgICBpZiAoKGJm ZF9nZXRfZmlsZV9mbGFncyAob2JqZmlsZS0+b2JmZCkgJiAoRVhFQ19QIHwgRFlOQU1JQykpID09 IDApCisrCXsKKysJICBsb2NhbF9hZGRyCisrCQkgPSBhbGxvY19zZWN0aW9uX2FkZHJfaW5mbyAo YmZkX2NvdW50X3NlY3Rpb25zIChvYmpmaWxlLT5vYmZkKSk7CisrCSAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgbG9jYWxfYWRkcik7CisrCSAgYWRkcnMgPSBsb2NhbF9hZGRyOworKwl9CisrICAgICAg ZWxzZQorKwl7CisrCSAgQ09SRV9BRERSIGRpc3BsYWNlbWVudCA9IDA7CisrCSAgaW50IGk7Cisr CisrCSAgaWYgKG1haW5saW5lKQorKwkgICAgZGlzcGxhY2VtZW50ID0gc29saWJfZXhlY19kaXNw bGFjZW1lbnQgKCk7CisrCisrCSAgbnVtX29mZnNldHMgPSBiZmRfY291bnRfc2VjdGlvbnMgKG9i amZpbGUtPm9iZmQpOworKwkgIG9mZnNldHMgPSBhbGxvY2EgKFNJWkVPRl9OX1NFQ1RJT05fT0ZG U0VUUyAobnVtX29mZnNldHMpKTsKKysJICBmb3IgKGkgPSAwOyBpIDwgbnVtX29mZnNldHM7IGkr KykKKysJICAgIG9mZnNldHMtPm9mZnNldHNbaV0gPSBkaXNwbGFjZW1lbnQ7CisrCX0KKyAgICAg fQorIAorICAgLyogTm93IGVpdGhlciBhZGRycyBvciBvZmZzZXRzIGlzIG5vbi16ZXJvLiAgKi8K Ky0tLSBhL2dkYi92YWx1ZS5jCisrKysgYi9nZGIvdmFsdWUuYworQEAgLTE4OTAsNyArMTg5MCw4 IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVsZG5vKQor ICAgaWYgKFRZUEVfRklFTERfTE9DX0tJTkQgKHR5cGUsIGZpZWxkbm8pID09IEZJRUxEX0xPQ19L SU5EX1BIWVNBRERSKQorICAgICB7CisgICAgICAgcmV0dmFsID0gdmFsdWVfYXQgKFRZUEVfRklF TERfVFlQRSAodHlwZSwgZmllbGRubyksCistCQkJIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERS ICh0eXBlLCBmaWVsZG5vKSk7CisrCQkJIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSICh0eXBl LCBmaWVsZG5vKQorKwkJCSAgICsgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCA/IDAgOiBB Tk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBlKS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9U RVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkpKTsKKyAgICAgfQorICAgZWxzZQorICAgICB7CitA QCAtMTkyMCw3ICsxOTIxLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgaW50IGZpZWxkbm8pCisgIAl9CisgICAgICAgaWYgKHJldHZhbCAmJiBWQUxVRV9MVkFMIChy ZXR2YWwpID09IGx2YWxfbWVtb3J5KQorIAlTRVRfRklFTERfUEhZU0FERFIgKFRZUEVfRklFTEQg KHR5cGUsIGZpZWxkbm8pLAorLQkJCSAgICB2YWx1ZV9hZGRyZXNzIChyZXR2YWwpKTsKKysJCQkg ICAgdmFsdWVfYWRkcmVzcyAocmV0dmFsKQorKwkJCSAgICAgIC0gKFRZUEVfT0JKRklMRSAodHlw ZSkgPT0gTlVMTCA/IDAgOiBBTk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBlKS0+c2VjdGlvbl9v ZmZzZXRzLCBTRUNUX09GRl9URVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkpKTsKKyAgICAgfQor ICAgcmV0dXJuIHJldHZhbDsKKyB9CistLS0gZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZhbGdyaW5kLWRiLWF0dGFjaC5leHAtb3JpZwkyMDA5LTEyLTIxIDE2OjUwOjQyLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1h dHRhY2guZXhwCTIwMDktMTItMjEgMTY6NTE6MjQuMDAwMDAwMDAwICswMTAwCitAQCAtNjcsNiAr NjcsOCBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7CisgICAgIH0KKyB9CisgCisrZ2Ri X3Rlc3QgIiIgIiIgImVhdCBmaXJzdCBwcm9tcHQiCisrCisgIyBJbml0aWFsaXphdGlvbiBmcm9t IGRlZmF1bHRfZ2RiX3N0YXJ0LgorIGdkYl90ZXN0ICJzZXQgaGVpZ2h0IDAiCisgZ2RiX3Rlc3Qg InNldCB3aWR0aCAwIgoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGllLnBhdGNoIGIvZ2RiLWFy Y2hlci1waWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM4YWFi YgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hcmNoZXItcGllLnBhdGNoCkBAIC0wLDAgKzEsMjY0 NyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CisKK2FyY2hl ci1qYW5rcmF0b2NodmlsLXBpZS1mZWRvcmExMgorR0lUIHNuYXBzaG90OgorY29tbWl0IDJhZTYw YjUxNTZkNDNhYWJmZTU3NTc5NDBlYWY3YjQzNzBmYjA1ZDIKKworCitkaWZmIC0tZ2l0IGEvZ2Ri L2F1eHYuYyBiL2dkYi9hdXh2LmMKK2luZGV4IDdiNGVjYmUuLjdkZjhlYjUgMTAwNjQ0CistLS0g YS9nZGIvYXV4di5jCisrKysgYi9nZGIvYXV4di5jCitAQCAtMjUsNiArMjUsNyBAQAorICNpbmNs dWRlICJpbmZlcmlvci5oIgorICNpbmNsdWRlICJ2YWxwcmludC5oIgorICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCisrI2luY2x1ZGUgImdkYmNvcmUuaCIKKyAKKyAjaW5jbHVkZSAiYXV4di5oIgor ICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCitAQCAtMzMsMTUgKzM0LDExIEBACisgI2luY2x1ZGUg PGZjbnRsLmg+CisgCisgCistLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgbGlrZSBhIHRvX3hm ZXJfcGFydGlhbCBob29rLCBidXQgbXVzdCBiZQorLSAgIGNhbGxlZCB3aXRoIFRBUkdFVF9PQkpF Q1RfQVVYVi4gIEl0IGhhbmRsZXMgYWNjZXNzIHZpYQorLSAgIC9wcm9jL1BJRC9hdXh2LCB3aGlj aCBpcyBhIGNvbW1vbiBtZXRob2QgZm9yIG5hdGl2ZSB0YXJnZXRzLiAgKi8KKysvKiBUaGlzIGZ1 bmN0aW9uIGhhbmRsZXMgYWNjZXNzIHZpYSAvcHJvYy9QSUQvYXV4diwgd2hpY2ggaXMgYSBjb21t b24gbWV0aG9kCisrICAgZm9yIG5hdGl2ZSB0YXJnZXRzLiAgKi8KKyAKKy1MT05HRVNUCistcHJv Y2ZzX3hmZXJfYXV4diAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKy0JCSAgZW51bSB0YXJnZXRf b2JqZWN0IG9iamVjdCwKKy0JCSAgY29uc3QgY2hhciAqYW5uZXgsCistCQkgIGdkYl9ieXRlICpy ZWFkYnVmLAorK3N0YXRpYyBMT05HRVNUCisrcHJvY2ZzX3hmZXJfYXV4diAoZ2RiX2J5dGUgKnJl YWRidWYsCisgCQkgIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZiwKKyAJCSAgVUxPTkdFU1Qgb2Zm c2V0LAorIAkJICBMT05HRVNUIGxlbikKK0BAIC01MCw5ICs0Nyw2IEBAIHByb2Nmc194ZmVyX2F1 eHYgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgICBpbnQgZmQ7CisgICBMT05HRVNUIG47Cisg CistICBnZGJfYXNzZXJ0IChvYmplY3QgPT0gVEFSR0VUX09CSkVDVF9BVVhWKTsKKy0gIGdkYl9h c3NlcnQgKHJlYWRidWYgfHwgd3JpdGVidWYpOworLQorICAgcGF0aG5hbWUgPSB4c3RycHJpbnRm ICgiL3Byb2MvJWQvYXV4diIsIFBJREdFVCAoaW5mZXJpb3JfcHRpZCkpOworICAgZmQgPSBvcGVu IChwYXRobmFtZSwgd3JpdGVidWYgIT0gTlVMTCA/IE9fV1JPTkxZIDogT19SRE9OTFkpOworICAg eGZyZWUgKHBhdGhuYW1lKTsKK0BAIC03Miw2ICs2NiwxNTIgQEAgcHJvY2ZzX3hmZXJfYXV4diAo c3RydWN0IHRhcmdldF9vcHMgKm9wcywKKyAgIHJldHVybiBuOworIH0KKyAKKysvKiBUaGlzIGZ1 bmN0aW9uIGhhbmRsZXMgYWNjZXNzIHZpYSBsZC5zbydzIHN5bWJvbCBgX2RsX2F1eHYnLiAgKi8K KysKKytzdGF0aWMgTE9OR0VTVAorK2xkX3NvX3hmZXJfYXV4diAoZ2RiX2J5dGUgKnJlYWRidWYs CisrCQkgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmLAorKwkJIFVMT05HRVNUIG9mZnNldCwKKysJ CSBMT05HRVNUIGxlbikKKyt7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisrICBD T1JFX0FERFIgZGF0YV9hZGRyZXNzLCBwb2ludGVyX2FkZHJlc3M7CisrICBzdHJ1Y3QgdHlwZSAq cHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKHRhcmdldF9nZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0 cjsKKysgIHNpemVfdCBwdHJfc2l6ZSA9IFRZUEVfTEVOR1RIIChwdHJfdHlwZSk7CisrICBzaXpl X3QgYXV4dl9wYWlyX3NpemUgPSAyICogcHRyX3NpemU7CisrICBnZGJfYnl0ZSAqcHRyX2J1ZiA9 IGFsbG9jYSAocHRyX3NpemUpOworKyAgTE9OR0VTVCByZXR2YWw7CisrICBzaXplX3QgYmxvY2s7 CisrCisrICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sICgiX2RsX2F1eHYiLCBOVUxMLCBO VUxMKTsKKysgIGlmIChtc3ltID09IE5VTEwpCisrICAgIHJldHVybiAtMTsKKysKKysgIGlmIChN U1lNQk9MX1NJWkUgKG1zeW0pICE9IHB0cl9zaXplKQorKyAgICByZXR1cm4gLTE7CisrCisrICAv KiBQT0lOVEVSX0FERFJFU1MgaXMgYSBsb2NhdGlvbiB3aGVyZSB0aGUgYF9kbF9hdXh2JyB2YXJp YWJsZSByZXNpZGVzLgorKyAgICAgREFUQV9BRERSRVNTIGlzIHRoZSBpbmZlcmlvciB2YWx1ZSBw cmVzZW50IGluIGBfZGxfYXV4dicsIHRoZXJlZm9yZSB0aGUKKysgICAgIHJlYWwgaW5mZXJpb3Ig QVVYViBhZGRyZXNzLiAgKi8KKysKKysgIHBvaW50ZXJfYWRkcmVzcyA9IFNZTUJPTF9WQUxVRV9B RERSRVNTIChtc3ltKTsKKysKKysgIGRhdGFfYWRkcmVzcyA9IHJlYWRfbWVtb3J5X3R5cGVkX2Fk ZHJlc3MgKHBvaW50ZXJfYWRkcmVzcywgcHRyX3R5cGUpOworKworKyAgLyogUG9zc2libHkgc3Rp bGwgbm90IGluaXRpYWxpemVkIHN1Y2ggYXMgZHVyaW5nIGFuIGluZmVyaW9yIHN0YXJ0dXAuICAq LworKyAgaWYgKGRhdGFfYWRkcmVzcyA9PSAwKQorKyAgICByZXR1cm4gLTE7CisrCisrICBkYXRh X2FkZHJlc3MgKz0gb2Zmc2V0OworKworKyAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCisrICAgIHsK KysgICAgICBpZiAodGFyZ2V0X3dyaXRlX21lbW9yeSAoZGF0YV9hZGRyZXNzLCB3cml0ZWJ1Ziwg bGVuKSA9PSAwKQorKwlyZXR1cm4gbGVuOworKyAgICAgIGVsc2UKKysJcmV0dXJuIC0xOworKyAg ICB9CisrCisrICAvKiBTdG9wIGlmIHRyeWluZyB0byByZWFkIHBhc3QgdGhlIGV4aXN0aW5nIEFV WFYgYmxvY2suICBUaGUgZmluYWwgQVRfTlVMTAorKyAgICAgd2FzIGFscmVhZHkgcmV0dXJuZWQg YmVmb3JlLiAgKi8KKysKKysgIGlmIChvZmZzZXQgPj0gYXV4dl9wYWlyX3NpemUpCisrICAgIHsK KysgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChkYXRhX2FkZHJlc3MgLSBhdXh2X3BhaXJf c2l6ZSwgcHRyX2J1ZiwKKysJCQkgICAgICBwdHJfc2l6ZSkgIT0gMCkKKysJcmV0dXJuIC0xOwor KworKyAgICAgIGlmIChleHRyYWN0X3R5cGVkX2FkZHJlc3MgKHB0cl9idWYsIHB0cl90eXBlKSA9 PSBBVF9OVUxMKQorKwlyZXR1cm4gMDsKKysgICAgfQorKworKyAgcmV0dmFsID0gMDsKKysgIGJs b2NrID0gMHg0MDA7CisrICBnZGJfYXNzZXJ0IChibG9jayAlIGF1eHZfcGFpcl9zaXplID09IDAp OworKworKyAgd2hpbGUgKGxlbiA+IDApCisrICAgIHsKKysgICAgICBpZiAoYmxvY2sgPiBsZW4p CisrCWJsb2NrID0gbGVuOworKworKyAgICAgIC8qIFJlYWRpbmcgc2l6ZXMgc21hbGxlciB0aGFu IEFVWFZfUEFJUl9TSVpFIGlzIG5vdCBzdXBwb3J0ZWQuICBUYWlscworKwkgdW5hbGlnbmVkIHRv IEFVWFZfUEFJUl9TSVpFIHdpbGwgbm90IGJlIHJlYWQgZHVyaW5nIGEgY2FsbCAodGhleQorKwkg c2hvdWxkIGJlIGNvbXBsZXRlZCBkdXJpbmcgbmV4dCByZWFkIHdpdGggbmV3L2V4dGVuZGVkIGJ1 ZmZlcikuICAqLworKworKyAgICAgIGJsb2NrICY9IC1hdXh2X3BhaXJfc2l6ZTsKKysgICAgICBp ZiAoYmxvY2sgPT0gMCkKKysJcmV0dXJuIHJldHZhbDsKKysKKysgICAgICBpZiAodGFyZ2V0X3Jl YWRfbWVtb3J5IChkYXRhX2FkZHJlc3MsIHJlYWRidWYsIGJsb2NrKSAhPSAwKQorKwl7CisrCSAg aWYgKGJsb2NrIDw9IGF1eHZfcGFpcl9zaXplKQorKwkgICAgcmV0dXJuIHJldHZhbDsKKysKKysJ ICBibG9jayA9IGF1eHZfcGFpcl9zaXplOworKwkgIGNvbnRpbnVlOworKwl9CisrCisrICAgICAg ZGF0YV9hZGRyZXNzICs9IGJsb2NrOworKyAgICAgIGxlbiAtPSBibG9jazsKKysKKysgICAgICAv KiBDaGVjayB0ZXJtaW5hbCBBVF9OVUxMLiAgVGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQg aW5kZWZpbml0ZWx5CisrICAgICAgICAgYmVpbmcgZXh0ZW5kZWQgaXRzIFJFQURCVUYgdW50aWwg aXQgcmV0dXJucyBFT0YgKDApLiAgKi8KKysKKysgICAgICB3aGlsZSAoYmxvY2sgPj0gYXV4dl9w YWlyX3NpemUpCisrCXsKKysJICByZXR2YWwgKz0gYXV4dl9wYWlyX3NpemU7CisrCisrCSAgaWYg KGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAocmVhZGJ1ZiwgcHRyX3R5cGUpID09IEFUX05VTEwpCisr CSAgICByZXR1cm4gcmV0dmFsOworKworKwkgIHJlYWRidWYgKz0gYXV4dl9wYWlyX3NpemU7Cisr CSAgYmxvY2sgLT0gYXV4dl9wYWlyX3NpemU7CisrCX0KKysgICAgfQorKworKyAgcmV0dXJuIHJl dHZhbDsKKyt9CisrCisrLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgbGlrZSBhIHRvX3hmZXJf cGFydGlhbCBob29rLCBidXQgbXVzdCBiZQorKyAgIGNhbGxlZCB3aXRoIFRBUkdFVF9PQkpFQ1Rf QVVYVi4gIEl0IGhhbmRsZXMgYWNjZXNzIHRvIEFVWFYuICAqLworKworK0xPTkdFU1QKKyttZW1v cnlfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorKwkJICBlbnVtIHRhcmdldF9v YmplY3Qgb2JqZWN0LAorKwkJICBjb25zdCBjaGFyICphbm5leCwKKysJCSAgZ2RiX2J5dGUgKnJl YWRidWYsCisrCQkgIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZiwKKysJCSAgVUxPTkdFU1Qgb2Zm c2V0LAorKwkJICBMT05HRVNUIGxlbikKKyt7CisrICAvKiBXb3JrYXJvdW5kIGdkYi03LjAgYnVn IHdoZXJlIGxpbnV4X25hdF94ZmVyX3BhcnRpYWwoKSBkb2VzCisrICAgICAgIGluZmVyaW9yX3B0 aWQgPSBwaWRfdG9fcHRpZCAoR0VUX0xXUCAoaW5mZXJpb3JfcHRpZCkpOworKyAgICAgYW5kIGN1 cnJlbnRfaW5mZXJpb3IoKSBhc3NlcnRpb24gZmFpbHMgbm90IGZpbmRpbmcgdGhlIExXUC0+UElE LgorKyAgICAgSXQgZ290IGZpeGVkIHBvc3QtZ2RiLTcuMCBieToKKysgICAgICAgQWRkIGJhc2Ug bXVsdGktZXhlY3V0YWJsZS9wcm9jZXNzIHN1cHBvcnQgdG8gR0RCLgorKyAgICAgICA0MGZmMGEy ODllNjE2NWFhOTMwYWYyODRkZjVjNTIxNjJjYjBjZDVmCisrICAgICBieSBpbnRyb2R1Y2luZyBg Y3VycmVudF9pbmZlcmlvcl8nLiAgKi8KKysgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gZmluZF9p bmZlcmlvcl9waWQgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOworKworKyAgZ2RiX2Fz c2VydCAob2JqZWN0ID09IFRBUkdFVF9PQkpFQ1RfQVVYVik7CisrICBnZGJfYXNzZXJ0IChyZWFk YnVmIHx8IHdyaXRlYnVmKTsKKysKKysgICAvKiBsZF9zb194ZmVyX2F1eHYgaXMgdGhlIG9ubHkg ZnVuY3Rpb24gc2FmZSBmb3IgdmlydHVhbCBleGVjdXRhYmxlcyBiZWluZworKyAgICAgIGV4ZWN1 dGVkIGJ5IHZhbGdyaW5kJ3MgbWVtY2hlY2suICBBcyB1c2luZyBsZF9zb194ZmVyX2F1eHYgaXMg cHJvYmxlbWF0aWMKKysgICAgICBkdXJpbmcgaW5mZXJpb3Igc3RhcnR1cCBHREIgZG9lcyBjYWxs IGl0IG9ubHkgZm9yIGF0dGFjaGVkIHByb2Nlc3Nlcy4gICovCisrCisrICBpZiAoaW5mID09IE5V TEwgfHwgaW5mLT5hdHRhY2hfZmxhZyAhPSAwKQorKyAgICB7CisrICAgICAgTE9OR0VTVCByZXR2 YWw7CisrCisrICAgICAgcmV0dmFsID0gbGRfc29feGZlcl9hdXh2IChyZWFkYnVmLCB3cml0ZWJ1 Ziwgb2Zmc2V0LCBsZW4pOworKyAgICAgIGlmIChyZXR2YWwgIT0gLTEpCisrCXJldHVybiByZXR2 YWw7CisrICAgIH0KKysKKysgIHJldHVybiBwcm9jZnNfeGZlcl9hdXh2IChyZWFkYnVmLCB3cml0 ZWJ1Ziwgb2Zmc2V0LCBsZW4pOworK30KKysKKyAvKiBSZWFkIG9uZSBhdXh2IGVudHJ5IGZyb20g KlJFQURQVFIsIG5vdCByZWFkaW5nIGxvY2F0aW9ucyA+PSBFTkRQVFIuCisgICAgUmV0dXJuIDAg aWYgKlJFQURQVFIgaXMgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuCisgICAgUmV0 dXJuIC0xIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBidWZmZXIgZm9yIGEgd2hvbGUgZW50cnku CitkaWZmIC0tZ2l0IGEvZ2RiL2F1eHYuaCBiL2dkYi9hdXh2LmgKK2luZGV4IDcxZTY1NjIuLjg3 YzI0YWUgMTAwNjQ0CistLS0gYS9nZGIvYXV4di5oCisrKysgYi9nZGIvYXV4di5oCitAQCAtNDMs MTEgKzQzLDcgQEAgZXh0ZXJuIGludCB0YXJnZXRfYXV4dl9zZWFyY2ggKHN0cnVjdCB0YXJnZXRf b3BzICpvcHMsCisgLyogUHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YXJnZXQncyBBVVhWIG9u IHRoZSBzcGVjaWZpZWQgZmlsZS4gKi8KKyBleHRlcm4gaW50IGZwcmludF90YXJnZXRfYXV4diAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0cnVjdCB0YXJnZXRfb3BzICpvcHMpOworIAorLS8qIFRo aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGxpa2UgYSB0b194ZmVyX3BhcnRpYWwgaG9vaywgYnV0IG11 c3QgYmUKKy0gICBjYWxsZWQgd2l0aCBUQVJHRVRfT0JKRUNUX0FVWFYuICBJdCBoYW5kbGVzIGFj Y2VzcyB2aWEKKy0gICAvcHJvYy9QSUQvYXV4diwgd2hpY2ggaXMgYSBjb21tb24gbWV0aG9kIGZv ciBuYXRpdmUgdGFyZ2V0cy4gICovCistCistZXh0ZXJuIExPTkdFU1QgcHJvY2ZzX3hmZXJfYXV4 diAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKytleHRlcm4gTE9OR0VTVCBtZW1vcnlfeGZlcl9h dXh2IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorIAkJCQkgZW51bSB0YXJnZXRfb2JqZWN0IG9i amVjdCwKKyAJCQkJIGNvbnN0IGNoYXIgKmFubmV4LAorIAkJCQkgZ2RiX2J5dGUgKnJlYWRidWYs CitkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3BvaW50LmMKK2luZGV4 IDBmMzUxMDEuLmJmZmM1YTYgMTAwNjQ0CistLS0gYS9nZGIvYnJlYWtwb2ludC5jCisrKysgYi9n ZGIvYnJlYWtwb2ludC5jCitAQCAtNDgwNSw3ICs0ODA1LDggQEAgZGlzYWJsZV9icmVha3BvaW50 c19pbl9zaGxpYnMgKHZvaWQpCisgICAgICAgIHRvIGluc2VydCB0aG9zZSBicmVha3BvaW50cyBh bmQgZmFpbC4gICovCisgICAgIGlmICgoKGItPnR5cGUgPT0gYnBfYnJlYWtwb2ludCkKKyAJIHx8 IChiLT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQpCistCSB8fCAoYi0+dHlwZSA9PSBi cF90cmFjZXBvaW50KSkKKysJIHx8IChiLT50eXBlID09IGJwX3RyYWNlcG9pbnQpCisrCSB8fCBi LT50eXBlID09IGJwX3NobGliX2V2ZW50KQorIAkmJiAhbG9jLT5zaGxpYl9kaXNhYmxlZAorICNp ZmRlZiBQQ19TT0xJQgorIAkmJiBQQ19TT0xJQiAobG9jLT5hZGRyZXNzKQorZGlmZiAtLWdpdCBh L2dkYi9kZWZzLmggYi9nZGIvZGVmcy5oCitpbmRleCA5NDY3NGRjLi41N2FhYWUyIDEwMDY0NAor LS0tIGEvZ2RiL2RlZnMuaAorKysrIGIvZ2RiL2RlZnMuaAorQEAgLTk4LDcgKzk4LDIwIEBACisg LyogQSBieXRlIGZyb20gdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuICAqLworIHR5cGVkZWYg YmZkX2J5dGUgZ2RiX2J5dGU7CisgCistLyogQW4gYWRkcmVzcyBpbiB0aGUgcHJvZ3JhbSBiZWlu ZyBkZWJ1Z2dlZC4gIEhvc3QgYnl0ZSBvcmRlci4gICovCisrLyogQW4gYWRkcmVzcyBpbiB0aGUg cHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4gIEhvc3QgYnl0ZSBvcmRlci4KKysKKysgICBJdHMgd2lk dGggaXMgdGhlIG1heGltdW0gd2lkdGggb2YgYWxsIHRoZSBzdXBwb3J0ZWQgdGFyZ2V0cy4gIFRo YXQgbWVhbnMKKysgICAzMi1iaXQgdGFyZ2V0IHdpbGwgcnVuIG9uIHN1Y2ggR0RCIHVzaW5nIDY0 LWJpdCBDT1JFX0FERFIgY2x1dHRlcmluZyB0aGUKKysgICBiaXRzIDMyLi4uNjMgd2l0aCByYW5k b20gZGF0YSBmcm9tIGludGVybmFsIEdEQiBjYWxjdWxhdGlvbnMuICBHREIgY3VycmVudGx5Cisr ICAgaW4gZ2VuZXJhbCB0cnVuY2F0ZXMgdGhlIGFkZHJlc3Mgd2lkdGggb25seSB3aGVuIGl0IGlz IGJlaW5nIHByZXNlbnRlZC91c2VkCisrICAgZXh0ZXJuYWxseSAoc3VjaCBhcyBieSB0aGUgcGFk ZHJlc3MgZnVuY3Rpb24pLgorKworKyAgIEZJWE1FOiBUaGlzIGlzIHN0aWxsIG5vdCByaWdodCBh cyBhbnkgR0RCIGludGVybmFsIGNvbXBhcmlzb25zIChzdWNoIGFzID49KQorKyAgIG9mIENPUkVf QUREUiBkbyBub3QgdXNlIHRoZSBwcm9wZXJseSB0cnVuY2F0ZWQgd2lkdGguICBBcyBjb252ZXJ0 aW5nIGFsbCB0aGUKKysgICBDT1JFX0FERFIgb3BlcmF0aW9ucyB0byB3aWR0aC1hd2FyZSBmdW5j dGlvbnMgaXMgbm90IGZlYXNpYmxlIHRoZSB3YXkgb3V0CisrICAgY291bGQgYmUgYSB3aWR0aC1h d2FyZSBDKysgY2xhc3MgQ09SRV9BRERSIHJlZmVyZW5jaW5nIGdkYmFyY2ggYXMgaXRzCisrICAg Y29uc3RydWN0b3IgcGFyYW1ldGVyLiAgKi8KKysKKyB0eXBlZGVmIGJmZF92bWEgQ09SRV9BRERS OworIAorIC8qIFRoZSBsYXJnZXN0IENPUkVfQUREUiB2YWx1ZS4gICovCitkaWZmIC0tZ2l0IGEv Z2RiL2V4ZWMuYyBiL2dkYi9leGVjLmMKK2luZGV4IDQ1NTE1MWUuLjY3ZjQwZDkgMTAwNjQ0Cist LS0gYS9nZGIvZXhlYy5jCisrKysgYi9nZGIvZXhlYy5jCitAQCAtNjU2LDggKzY1NiwzMyBAQCBw cmludF9zZWN0aW9uX2luZm8gKHN0cnVjdCB0YXJnZXRfc2VjdGlvbl90YWJsZSAqdCwgYmZkICph YmZkKQorICAgd3JhcF9oZXJlICgiICAgICAgICAiKTsKKyAgIHByaW50Zl9maWx0ZXJlZCAoXygi ZmlsZSB0eXBlICVzLlxuIiksIGJmZF9nZXRfdGFyZ2V0IChhYmZkKSk7CisgICBpZiAoYWJmZCA9 PSBleGVjX2JmZCkKKy0gICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJcdEVudHJ5IHBvaW50OiAlc1xu IiksCistICAgICAgICAgICAgICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGJmZF9nZXRfc3Rh cnRfYWRkcmVzcyAoYWJmZCkpKTsKKysgICAgeworKyAgICAgIGJmZF92bWEgZGlzcGxhY2VtZW50 ID0gMDsKKysKKysgICAgICBmb3IgKHAgPSB0LT5zZWN0aW9uczsgcCA8IHQtPnNlY3Rpb25zX2Vu ZDsgcCsrKQorKwl7CisrCSAgYXNlY3Rpb24gKmFzZWN0ID0gcC0+dGhlX2JmZF9zZWN0aW9uOwor KworKwkgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChhYmZkLCBhc2VjdCkgJiAoU0VDX0FM TE9DIHwgU0VDX0xPQUQpKQorKwkgICAgICAhPSAoU0VDX0FMTE9DIHwgU0VDX0xPQUQpKQorKwkg ICAgY29udGludWU7CisrCisrCSAgaWYgKGJmZF9nZXRfc2VjdGlvbl92bWEgKGFiZmQsIGFzZWN0 KSA8PSBhYmZkLT5zdGFydF9hZGRyZXNzCisrCSAgICAgICYmIGFiZmQtPnN0YXJ0X2FkZHJlc3Mg PCBiZmRfZ2V0X3NlY3Rpb25fdm1hIChhYmZkLCBhc2VjdCkKKysJCQkJICAgICAgICsgYmZkX2dl dF9zZWN0aW9uX3NpemUgKGFzZWN0KSkKKysJICAgIHsKKysJICAgICAgZGlzcGxhY2VtZW50ID0g cC0+YWRkciAtIGJmZF9nZXRfc2VjdGlvbl92bWEgKGFiZmQsIGFzZWN0KTsKKysJICAgICAgYnJl YWs7CisrCSAgICB9CisrCX0KKysgICAgICBpZiAocCA9PSB0LT5zZWN0aW9uc19lbmQpCisrCXdh cm5pbmcgKF8oIkNhbm5vdCBmaW5kIHNlY3Rpb24gZm9yIHRoZSBlbnRyeSBwb2ludCBvZiAlcy5c biIpLAorKwkJIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKKysKKysgICAgICBwcmludGZfZmls dGVyZWQgKF8oIlx0RW50cnkgcG9pbnQ6ICVzXG4iKSwKKysJCSAgICAgICBwYWRkcmVzcyAoZ2Ri YXJjaCwgYmZkX2dldF9zdGFydF9hZGRyZXNzIChhYmZkKQorKwkJCQkJICArIGRpc3BsYWNlbWVu dCkpOworKyAgICB9CisgICBmb3IgKHAgPSB0LT5zZWN0aW9uczsgcCA8IHQtPnNlY3Rpb25zX2Vu ZDsgcCsrKQorICAgICB7CisgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXHQlcyIsIGhleF9zdHJp bmdfY3VzdG9tIChwLT5hZGRyLCB3aWQpKTsKK2RpZmYgLS1naXQgYS9nZGIvaW5mY21kLmMgYi9n ZGIvaW5mY21kLmMKK2luZGV4IGZhYjE4OTIuLmZjMGYwNWQgMTAwNjQ0CistLS0gYS9nZGIvaW5m Y21kLmMKKysrKyBiL2dkYi9pbmZjbWQuYworQEAgLTM5NSwyMiArMzk1LDYgQEAgcG9zdF9jcmVh dGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsIGludCBmcm9tX3R0eSkKKyAg IC8qIE5vdyB0aGF0IHdlIGtub3cgdGhlIHJlZ2lzdGVyIGxheW91dCwgcmV0cmlldmUgY3VycmVu dCBQQy4gICovCisgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X2N1cnJlbnRfcmVn Y2FjaGUgKCkpOworIAorLSAgLyogSWYgdGhlIHNvbGlzdCBpcyBnbG9iYWwgYWNyb3NzIHByb2Nl c3NlcywgdGhlcmUncyBubyBuZWVkIHRvCistICAgICByZWZldGNoIGl0IGhlcmUuICAqLworLSAg aWYgKGV4ZWNfYmZkICYmICFnZGJhcmNoX2hhc19nbG9iYWxfc29saXN0ICh0YXJnZXRfZ2RiYXJj aCkpCistICAgIHsKKy0gICAgICAvKiBTb21ldGltZXMgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGhv b2sgbG9hZHMgaW5pdGlhbCBzaGFyZWQKKy0JIGxpYnJhcmllcywgYW5kIHNvbWV0aW1lcyBpdCBk b2Vzbid0LiAgVHJ5IHRvIGRvIHNvIGZpcnN0LCBzbworLQkgdGhhdCB3ZSBjYW4gYWRkIHRoZW0g d2l0aCB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgRlJPTV9UVFkuCistCSBJZiB3ZSBtYWRlIGFsbCB0 aGUgaW5mZXJpb3IgaG9vayBtZXRob2RzIGNvbnNpc3RlbnQsCistCSB0aGlzIGNhbGwgY291bGQg YmUgcmVtb3ZlZC4gICovCistI2lmZGVmIFNPTElCX0FERAorLSAgICAgIFNPTElCX0FERCAoTlVM TCwgZnJvbV90dHksIHRhcmdldCwgYXV0b19zb2xpYl9hZGQpOworLSNlbHNlCistICAgICAgc29s aWJfYWRkIChOVUxMLCBmcm9tX3R0eSwgdGFyZ2V0LCBhdXRvX3NvbGliX2FkZCk7CistI2VuZGlm CistICAgIH0KKy0KKyAgIGlmIChleGVjX2JmZCkKKyAgICAgeworICAgICAgIC8qIENyZWF0ZSB0 aGUgaG9va3MgdG8gaGFuZGxlIHNoYXJlZCBsaWJyYXJ5IGxvYWQgYW5kIHVubG9hZAorQEAgLTQx OCw3ICs0MDIsMjUgQEAgcG9zdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfb3BzICp0 YXJnZXQsIGludCBmcm9tX3R0eSkKKyAjaWZkZWYgU09MSUJfQ1JFQVRFX0lORkVSSU9SX0hPT0sK KyAgICAgICBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSyAoUElER0VUIChpbmZlcmlvcl9wdGlk KSk7CisgI2Vsc2UKKy0gICAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoKTsKKysgICAg ICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoZnJvbV90dHkpOworKyNlbmRpZgorKyAgICB9 CisrCisrICAvKiBJZiB0aGUgc29saXN0IGlzIGdsb2JhbCBhY3Jvc3MgcHJvY2Vzc2VzLCB0aGVy ZSdzIG5vIG5lZWQgdG8KKysgICAgIHJlZmV0Y2ggaXQgaGVyZS4gICovCisrICBpZiAoZXhlY19i ZmQgJiYgIWdkYmFyY2hfaGFzX2dsb2JhbF9zb2xpc3QgKHRhcmdldF9nZGJhcmNoKSkKKysgICAg eworKyAgICAgIC8qIFNvbWV0aW1lcyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgaG9vayBsb2FkcyBp bml0aWFsIHNoYXJlZAorKwkgbGlicmFyaWVzLCBhbmQgc29tZXRpbWVzIGl0IGRvZXNuJ3QuICBJ ZiBpdCBkb2Vzbid0IEZST01fVFRZIHdpbGwgYmUKKysJIGluY29ycmVjdGx5IDAgYnV0IHN1Y2gg c29saWIgdGFyZ2V0cyBzaG91bGQgYmUgZml4ZWQgYW55d2F5LiAgSWYgd2UKKysJIG1hZGUgYWxs IHRoZSBpbmZlcmlvciBob29rIG1ldGhvZHMgY29uc2lzdGVudCwgdGhpcyBjYWxsIGNvdWxkIGJl CisrCSByZW1vdmVkLiAgQ2FsbCBpdCBvbmx5IGFmdGVyIHRoZSBzb2xpYiB0YXJnZXQgaGFzIGJl ZW4gaW5pdGlhbGl6ZWQgYnkKKysJIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rLiAgKi8KKysK KysjaWZkZWYgU09MSUJfQURECisrICAgICAgU09MSUJfQUREIChOVUxMLCAwLCB0YXJnZXQsIGF1 dG9fc29saWJfYWRkKTsKKysjZWxzZQorKyAgICAgIHNvbGliX2FkZCAoTlVMTCwgMCwgdGFyZ2V0 LCBhdXRvX3NvbGliX2FkZCk7CisgI2VuZGlmCisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIv aW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKK2luZGV4IDlkMjliMTUuLmVkNDUxZDUgMTAwNjQ0Cist LS0gYS9nZGIvaW5mcnVuLmMKKysrKyBiL2dkYi9pbmZydW4uYworQEAgLTU0NCw3ICs1NDQsNyBA QCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0aG5hbWUpCisgI2lmZGVm IFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09LCisgICBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9P SyAoUElER0VUIChpbmZlcmlvcl9wdGlkKSk7CisgI2Vsc2UKKy0gIHNvbGliX2NyZWF0ZV9pbmZl cmlvcl9ob29rICgpOworKyAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKDApOworICNlbmRp ZgorIAorICAgaml0X2luZmVyaW9yX2NyZWF0ZWRfaG9vayAoKTsKK2RpZmYgLS1naXQgYS9nZGIv bGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKK2luZGV4IDA5MDdmMDMuLjFjMTg3ODIgMTAw NjQ0CistLS0gYS9nZGIvbGludXgtbmF0LmMKKysrKyBiL2dkYi9saW51eC1uYXQuYworQEAgLTQ2 NzQsNyArNDY3NCw3IEBAIGxpbnV4X3hmZXJfcGFydGlhbCAoc3RydWN0IHRhcmdldF9vcHMgKm9w cywgZW51bSB0YXJnZXRfb2JqZWN0IG9iamVjdCwKKyAgIExPTkdFU1QgeGZlcjsKKyAKKyAgIGlm IChvYmplY3QgPT0gVEFSR0VUX09CSkVDVF9BVVhWKQorLSAgICByZXR1cm4gcHJvY2ZzX3hmZXJf YXV4diAob3BzLCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKKysgICAgcmV0dXJu IG1lbW9yeV94ZmVyX2F1eHYgKG9wcywgb2JqZWN0LCBhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYs CisgCQkJICAgICBvZmZzZXQsIGxlbik7CisgCisgICBpZiAob2JqZWN0ID09IFRBUkdFVF9PQkpF Q1RfT1NEQVRBKQorZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmMgYi9nZGIvbGludXgtdGRl cC5jCitpbmRleCA2NjM0NzAzLi4zNzc3MGY1IDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4LXRkZXAu YworKysrIGIvZ2RiL2xpbnV4LXRkZXAuYworQEAgLTE4LDEyICsxOCw4IEBACisgICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworIAorICNpbmNsdWRlICJkZWZzLmgiCistI2luY2x1ZGUgImdkYmNvcmUuaCIK KyAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKKyAjaW5jbHVkZSAibGludXgtdGRlcC5oIgorLSNpbmNs dWRlICJvYnNlcnZlci5oIgorLQorLSNpbmNsdWRlICJlbGYtYmZkLmgiCisgCisgLyogVGhpcyBm dW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0CisgICAgZXh0 ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVjdHVyZS4gICovCitAQCAtMTM4 LDMwICsxMzQsMyBAQCBsaW51eF9nZXRfc2lnaW5mb190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCkKKyAKKyAgIHJldHVybiBzaWdpbmZvX3R5cGU7CisgfQorLQorLS8qIE9ic2VydmVyIGZv ciB0aGUgZXhlY3V0YWJsZV9jaGFuZ2VkIGV2ZW50LCB0byBjaGVjayB3aGV0aGVyIHRoZSBuZXcK Ky0gICBleGVjIGJpbmFyeSBpcyBhIFBJRSAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJs ZSkgc3BlY2ltZW4sIHdoaWNoCistICAgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLiAgKi8KKy0K Ky1zdGF0aWMgdm9pZAorLWNoZWNrX2lzX3BpZV9iaW5hcnkgKHZvaWQpCisteworLSAgRWxmX0lu dGVybmFsX0VoZHIgKmVsZl9oZHI7CistCistICBpZiAoIWV4ZWNfYmZkKQorLSAgICByZXR1cm47 CistICBlbHNlIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGV4ZWNfYmZkKSAhPSBiZmRfdGFyZ2V0X2Vs Zl9mbGF2b3VyKQorLSAgICByZXR1cm47CistCistICBpZiAoZWxmX3RkYXRhIChleGVjX2JmZCkt PmVsZl9oZWFkZXItPmVfdHlwZSA9PSBFVF9EWU4pCistICAgIHdhcm5pbmcgKF8oIlwKKy1UaGUg Y3VycmVudCBiaW5hcnkgaXMgYSBQSUUgKFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGUp LCB3aGljaFxuXAorLUdEQiBkb2VzIE5PVCBjdXJyZW50bHkgc3VwcG9ydC4gIE1vc3QgZGVidWdn ZXIgZmVhdHVyZXMgd2lsbCBmYWlsIGlmIHVzZWRcblwKKy1pbiB0aGlzIHNlc3Npb24uXG4iKSk7 CistfQorLQorLXZvaWQKKy1faW5pdGlhbGl6ZV9saW51eF90ZGVwICh2b2lkKQorLXsKKy0gIG9i c2VydmVyX2F0dGFjaF9leGVjdXRhYmxlX2NoYW5nZWQgKGNoZWNrX2lzX3BpZV9iaW5hcnkpOwor LX0KK2RpZmYgLS1naXQgYS9nZGIvbnRvLXByb2Nmcy5jIGIvZ2RiL250by1wcm9jZnMuYworaW5k ZXggMGFkYjA0NS4uZWE4OTMzMSAxMDA2NDQKKy0tLSBhL2dkYi9udG8tcHJvY2ZzLmMKKysrKyBi L2dkYi9udG8tcHJvY2ZzLmMKK0BAIC02NTIsNyArNjUyLDcgQEAgc3RhdGljIHZvaWQKKyBwcm9j ZnNfcG9zdF9hdHRhY2ggKHBpZF90IHBpZCkKKyB7CisgICBpZiAoZXhlY19iZmQpCistICAgIHNv bGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgpOworKyAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3Jf aG9vayAoMCk7CisgfQorIAorIHN0YXRpYyBwdGlkX3QKK0BAIC0xMjEyLDcgKzEyMTIsNyBAQCBw cm9jZnNfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBjaGFyICpleGVj X2ZpbGUsCisgCisgICBpZiAoZXhlY19iZmQgIT0gTlVMTAorICAgICAgIHx8IChzeW1maWxlX29i amZpbGUgIT0gTlVMTCAmJiBzeW1maWxlX29iamZpbGUtPm9iZmQgIT0gTlVMTCkpCistICAgIHNv bGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgpOworKyAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3Jf aG9vayAoMCk7CisgfQorIAorIHN0YXRpYyB2b2lkCitkaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVz LmMgYi9nZGIvb2JqZmlsZXMuYworaW5kZXggZTU0NDJjYS4uZmIwY2VhOSAxMDA2NDQKKy0tLSBh L2dkYi9vYmpmaWxlcy5jCisrKysgYi9nZGIvb2JqZmlsZXMuYworQEAgLTU0NCw5ICs1NDQsMTAg QEAgZnJlZV9hbGxfb2JqZmlsZXMgKHZvaWQpCisgfQorIAwKKyAvKiBSZWxvY2F0ZSBPQkpGSUxF IHRvIE5FV19PRkZTRVRTLiAgVGhlcmUgc2hvdWxkIGJlIE9CSkZJTEUtPk5VTV9TRUNUSU9OUwor LSAgIGVudHJpZXMgaW4gbmV3X29mZnNldHMuICAqLworLXZvaWQKKy1vYmpmaWxlX3JlbG9jYXRl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29m ZnNldHMpCisrICAgZW50cmllcyBpbiBuZXdfb2Zmc2V0cy4gIFNFUEFSQVRFX0RFQlVHX09CSkZJ TEUgaXMgbm90IHRvdWNoZWQgaGVyZS4gICovCisrCisrc3RhdGljIHZvaWQKKytvYmpmaWxlX3Jl bG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMg Km5ld19vZmZzZXRzKQorIHsKKyAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqczsKKyAgIHN0cnVjdCBz ZWN0aW9uX29mZnNldHMgKmRlbHRhID0KK0BAIC02MjQsNiArNjI1LDEwIEBAIG9iamZpbGVfcmVs b2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpu ZXdfb2Zmc2V0cykKKyAgICAgfQorICAgfQorIAorKyAgaWYgKG9iamZpbGUtPnBzeW10YWJzX2Fk ZHJtYXApCisrICAgIGFkZHJtYXBfcmVsb2NhdGUgKG9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXAs CisrCQkgICAgICBBTk9GRlNFVCAoZGVsdGEsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKSk7Cisr CisgICB7CisgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcDsKKyAKK0BAIC03MDEsNiArNzA2 LDQ5IEBAIG9iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qg c2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKKyAgICAgICBleGVjX3NldF9zZWN0aW9uX2Fk ZHJlc3MgKGJmZF9nZXRfZmlsZW5hbWUgKG9iamZpbGUtPm9iZmQpLCBpZHgsCisgCQkJCW9ial9z ZWN0aW9uX2FkZHIgKHMpKTsKKyAgICAgfQorK30KKysKKysvKiBSZWxvY2F0ZSBPQkpGSUxFIHRv IE5FV19PRkZTRVRTLiAgVGhlcmUgc2hvdWxkIGJlIE9CSkZJTEUtPk5VTV9TRUNUSU9OUworKyAg IGVudHJpZXMgaW4gbmV3X29mZnNldHMuICBQcm9jZXNzIGFsc28gT0JKRklMRSdzIFNFUEFSQVRF X0RFQlVHX09CSkZJTEUuCisrCisrICAgVGhlIG51bWJlciBhbmQgb3JkZXJpbmcgb2Ygc2VjdGlv bnMgZG9lcyBkaWZmZXIgYmV0d2VlbiB0aGUgdHdvIG9iamZpbGVzLgorKyAgIE9ubHkgdGhlaXIg bmFtZXMgbWF0Y2guICBBbHNvIHRoZSBmaWxlIG9mZnNldHMgd2lsbCBkaWZmZXIgKG9iamZpbGUg YmVpbmcKKysgICBwb3NzaWJseSBwcmVsaW5rZWQgYnV0IHNlcGFyYXRlX2RlYnVnX29iamZpbGUg aXMgcHJvYmFibHkgbm90IHByZWxpbmtlZCkgYnV0CisrICAgdGhlIGluLW1lbW9yeSBhYnNvbHV0 ZSBhZGRyZXNzIGFzIHNwZWNpZmllZCBieSBORVdfT0ZGU0VUUyBtdXN0IG1hdGNoIGJvdGgKKysg ICBmaWxlcy4gICovCisrCisrdm9pZAorK29iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKKyt7CisrICBv YmpmaWxlX3JlbG9jYXRlMSAob2JqZmlsZSwgbmV3X29mZnNldHMpOworKworKyAgaWYgKG9iamZp bGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgIT0gTlVMTCkKKysgICAgeworKyAgICAgIHN0cnVj dCBvYmpmaWxlICpkZWJ1Z19vYmpmaWxlID0gb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmls ZTsKKysgICAgICBzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKm9iamZpbGVfYWRkcnM7CisrICAg ICAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X2RlYnVnX29mZnNldHM7CisrICAgICAgaW50 IG5ld19kZWJ1Z19udW1fc2VjdGlvbnM7CisrICAgICAgc3RydWN0IGNsZWFudXAgKm15X2NsZWFu dXBzOworKworKyAgICAgIG9iamZpbGVfYWRkcnMgPSBidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19m cm9tX29iamZpbGUgKG9iamZpbGUpOworKyAgICAgIG15X2NsZWFudXBzID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgb2JqZmlsZV9hZGRycyk7CisrCisrICAgICAgLyogSGVyZSBPQkpGSUxFX0FERFJT IGNvbnRhaW4gdGhlIGNvcnJlY3QgYWJzb2x1dGUgYWRkcmVzc2VzLCB0aGUKKysJIHJlbGF0aXZl IG9uZXMgbXVzdCBiZSBhbHJlYWR5IGNyZWF0ZWQgYWNjb3JkaW5nIHRvIGRlYnVnX29iamZpbGUu ICAqLworKworKyAgICAgIGFkZHJfaW5mb19tYWtlX3JlbGF0aXZlIChvYmpmaWxlX2FkZHJzLCBk ZWJ1Z19vYmpmaWxlLT5vYmZkKTsKKysKKysgICAgICBnZGJfYXNzZXJ0IChkZWJ1Z19vYmpmaWxl LT5udW1fc2VjdGlvbnMKKysJCSAgPT0gYmZkX2NvdW50X3NlY3Rpb25zIChkZWJ1Z19vYmpmaWxl LT5vYmZkKSk7CisrICAgICAgbmV3X2RlYnVnX29mZnNldHMgPSBhbGxvY2EgKFNJWkVPRl9OX1NF Q1RJT05fT0ZGU0VUUworKwkJCQkJCSAoZGVidWdfb2JqZmlsZS0+bnVtX3NlY3Rpb25zKSk7Cisr ICAgICAgcmVsYXRpdmVfYWRkcl9pbmZvX3RvX3NlY3Rpb25fb2Zmc2V0cyAobmV3X2RlYnVnX29m ZnNldHMsCisrCQkJCQkgICAgIGRlYnVnX29iamZpbGUtPm51bV9zZWN0aW9ucywKKysJCQkJCSAg ICAgb2JqZmlsZV9hZGRycyk7CisrICAgICAgZG9fY2xlYW51cHMgKG15X2NsZWFudXBzKTsKKysK KysgICAgICBvYmpmaWxlX3JlbG9jYXRlMSAoZGVidWdfb2JqZmlsZSwgbmV3X2RlYnVnX29mZnNl dHMpOworKyAgICB9CisgCisgICAvKiBSZWxvY2F0ZSBicmVha3BvaW50cyBhcyBuZWNlc3Nhcnks IGFmdGVyIHRoaW5ncyBhcmUgcmVsb2NhdGVkLiAqLworICAgYnJlYWtwb2ludF9yZV9zZXQgKCk7 CitkaWZmIC0tZ2l0IGEvZ2RiL3Byb2Nmcy5jIGIvZ2RiL3Byb2Nmcy5jCitpbmRleCBiNTY5YmFj Li4xNTgyOWMyIDEwMDY0NAorLS0tIGEvZ2RiL3Byb2Nmcy5jCisrKysgYi9nZGIvcHJvY2ZzLmMK K0BAIC00Mzc2LDcgKzQzNzYsNyBAQCBwcm9jZnNfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzLCBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAorIAorICNpZmRlZiBORVdfUFJP Q19BUEkKKyAgICAgY2FzZSBUQVJHRVRfT0JKRUNUX0FVWFY6CistICAgICAgcmV0dXJuIHByb2Nm c194ZmVyX2F1eHYgKG9wcywgb2JqZWN0LCBhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYsCisrICAg ICAgcmV0dXJuIG1lbW9yeV94ZmVyX2F1eHYgKG9wcywgb2JqZWN0LCBhbm5leCwgcmVhZGJ1Ziwg d3JpdGVidWYsCisgCQkJICAgICAgIG9mZnNldCwgbGVuKTsKKyAjZW5kaWYKKyAKK2RpZmYgLS1n aXQgYS9nZGIvc29saWItZGFyd2luLmMgYi9nZGIvc29saWItZGFyd2luLmMKK2luZGV4IDk0Mjhk OTIuLjM1OTExNjggMTAwNjQ0CistLS0gYS9nZGIvc29saWItZGFyd2luLmMKKysrKyBiL2dkYi9z b2xpYi1kYXJ3aW4uYworQEAgLTI3Nyw3ICsyNzcsNyBAQCBkYXJ3aW5fc3BlY2lhbF9zeW1ib2xf aGFuZGxpbmcgKHZvaWQpCisgCisgLyogU2hhcmVkIGxpYnJhcnkgc3RhcnR1cCBzdXBwb3J0LiAg U2VlIGRvY3VtZW50YXRpb24gaW4gc29saWItc3ZyNC5jICAqLworIHN0YXRpYyB2b2lkCistZGFy d2luX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK2Rhcndpbl9zb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIHN0cnVjdCBtaW5pbWFsX3N5 bWJvbCAqbXN5bWJvbDsKKyAgIGNoYXIgKipia3B0X25hbWVwOworZGlmZiAtLWdpdCBhL2dkYi9z b2xpYi1mcnYuYyBiL2dkYi9zb2xpYi1mcnYuYworaW5kZXggYjhkNTUyOC4uMDAyYzU4OSAxMDA2 NDQKKy0tLSBhL2dkYi9zb2xpYi1mcnYuYworKysrIGIvZ2RiL3NvbGliLWZydi5jCitAQCAtOTcx LDcgKzk3MSw3IEBAIGZydl9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpCisgICovCisg Cisgc3RhdGljIHZvaWQKKy1mcnZfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCisr ZnJ2X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkpCisgeworICAgLyog UmVsb2NhdGUgbWFpbiBleGVjdXRhYmxlLiAgKi8KKyAgIGZydl9yZWxvY2F0ZV9tYWluX2V4ZWN1 dGFibGUgKCk7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWlyaXguYyBiL2dkYi9zb2xpYi1pcml4 LmMKK2luZGV4IGEwYzFjZDIuLmY5NGY3ZGMgMTAwNjQ0CistLS0gYS9nZGIvc29saWItaXJpeC5j CisrKysgYi9nZGIvc29saWItaXJpeC5jCitAQCAtMzg2LDcgKzM4Niw3IEBAIGVuYWJsZV9icmVh ayAodm9pZCkKKyAKKyAgICBTWU5PUFNJUworIAorLSAgIHZvaWQgc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKCkKKysgICB2b2lkIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJv bV90dHkpCisgCisgICAgREVTQ1JJUFRJT04KKyAKK0BAIC00MzEsNyArNDMxLDcgQEAgZW5hYmxl X2JyZWFrICh2b2lkKQorICAqLworIAorIHN0YXRpYyB2b2lkCistaXJpeF9zb2xpYl9jcmVhdGVf aW5mZXJpb3JfaG9vayAodm9pZCkKKytpcml4X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChp bnQgZnJvbV90dHkpCisgeworICAgc3RydWN0IGluZmVyaW9yICppbmY7CisgICBzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwOworZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1udWxsLmMgYi9nZGIvc29saWIt bnVsbC5jCitpbmRleCBiMzljY2RiLi44N2Y3ODQ4IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLW51 bGwuYworKysrIGIvZ2RiL3NvbGliLW51bGwuYworQEAgLTMyLDcgKzMyLDcgQEAgbnVsbF9zcGVj aWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkKKyB9CisgCisgc3RhdGljIHZvaWQKKy1udWxsX3Nv bGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK251bGxfc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKGludCBmcm9tX3R0eSkKKyB7CisgfQorIAorZGlmZiAtLWdpdCBhL2dkYi9zb2xp Yi1vc2YuYyBiL2dkYi9zb2xpYi1vc2YuYworaW5kZXggYzI5NTMzNS4uMGFjYzdmYiAxMDA2NDQK Ky0tLSBhL2dkYi9zb2xpYi1vc2YuYworKysrIGIvZ2RiL3NvbGliLW9zZi5jCitAQCAtMzA2LDcg KzMwNiw3IEBAIG9zZl9jbGVhcl9zb2xpYiAodm9pZCkKKyAgICBBbHNvLCB3aGF0IGlmIGNoaWxk IGhhcyBleGl0KCllZD8gIE11c3QgZXhpdCBsb29wIHNvbWVob3cuICAqLworIAorIHN0YXRpYyB2 b2lkCistb3NmX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK29zZl9zb2xpYl9j cmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIHN0cnVjdCBpbmZlcmlv ciAqaW5mOworICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKK2RpZmYgLS1naXQgYS9nZGIvc29s aWItcGE2NC5jIGIvZ2RiL3NvbGliLXBhNjQuYworaW5kZXggNjM3ZmMxYS4uMTZkNDAxMCAxMDA2 NDQKKy0tLSBhL2dkYi9zb2xpYi1wYTY0LmMKKysrKyBiL2dkYi9zb2xpYi1wYTY0LmMKK0BAIC0z MjksNyArMzI5LDcgQEAgYmZkX2xvb2t1cF9zeW1ib2wgKGJmZCAqYWJmZCwgY2hhciAqc3ltbmFt ZSkKKyAgICB3aXRoIHNoYXJlZCBsaWJyYXJpZXMgbWFwcGVkIHNoYXJlYWJsZS4gICovCisgCisg c3RhdGljIHZvaWQKKy1wYTY0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK3Bh NjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKKyB7CisgICBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7CisgICB1bnNpZ25lZCBpbnQgZGxkX2ZsYWdzLCBz dGF0dXM7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXNvbS5jIGIvZ2RiL3NvbGliLXNvbS5jCitp bmRleCAxNmYwMGEzLi4zN2FjOGNkIDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLXNvbS5jCisrKysg Yi9nZGIvc29saWItc29tLmMKK0BAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0IHsKKyAgICBtZWFu cyBydW5uaW5nIHVudGlsIHRoZSAiX3N0YXJ0IiBpcyBjYWxsZWQuICAqLworIAorIHN0YXRpYyB2 b2lkCistc29tX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK3NvbV9zb2xpYl9j cmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIGVudW0gYmZkX2VuZGlh biBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyICh0YXJnZXRfZ2RiYXJjaCk7CisgICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXNw dS5jIGIvZ2RiL3NvbGliLXNwdS5jCitpbmRleCA5ZjA2ZmE5Li40NWU3ZTY5IDEwMDY0NAorLS0t IGEvZ2RiL3NvbGliLXNwdS5jCisrKysgYi9nZGIvc29saWItc3B1LmMKK0BAIC01MiwyNSArNTIs MTkgQEAKKyBzdGF0aWMgdm9pZAorIHNwdV9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKGludCBz cHVmc19mZCkKKyB7CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKy0gIHN0cnVjdCBjbGVh bnVwICpvbGRfY2hhaW47CisgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0czsK KyAgIGludCBpOworIAorLSAgZm9yIChvYmpmaWxlID0gc3ltZmlsZV9vYmpmaWxlOworLSAgICAg ICBvYmpmaWxlOworLSAgICAgICBvYmpmaWxlID0gb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2Jq ZmlsZSkKKy0gICAgeworLSAgICAgIG5ld19vZmZzZXRzID0geGNhbGxvYyAob2JqZmlsZS0+bnVt X3NlY3Rpb25zLAorLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzKSk7Cist ICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3X29mZnNldHMpOworKyAg aWYgKHN5bWZpbGVfb2JqZmlsZSA9PSBOVUxMKQorKyAgICByZXR1cm47CisgCistICAgICAgZm9y IChpID0gMDsgaSA8IG9iamZpbGUtPm51bV9zZWN0aW9uczsgaSsrKQorLSAgICAgICAgbmV3X29m ZnNldHMtPm9mZnNldHNbaV0gPSBTUFVBRERSIChzcHVmc19mZCwgMCk7CisrICBuZXdfb2Zmc2V0 cyA9IGFsbG9jYSAoc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnMKKysJCQkqIHNpemVvZiAo c3RydWN0IHNlY3Rpb25fb2Zmc2V0cykpOworIAorLSAgICAgIG9iamZpbGVfcmVsb2NhdGUgKG9i amZpbGUsIG5ld19vZmZzZXRzKTsKKy0gICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKy0g ICAgfQorKyAgZm9yIChpID0gMDsgaSA8IHN5bWZpbGVfb2JqZmlsZS0+bnVtX3NlY3Rpb25zOyBp KyspCisrICAgIG5ld19vZmZzZXRzLT5vZmZzZXRzW2ldID0gU1BVQUREUiAoc3B1ZnNfZmQsIDAp OworKworKyAgb2JqZmlsZV9yZWxvY2F0ZSAoc3ltZmlsZV9vYmpmaWxlLCBuZXdfb2Zmc2V0cyk7 CisgfQorIAorIC8qIFdoZW4gcnVubmluZyBhIHN0YW5kLWFsb25lIFNQRSBleGVjdXRhYmxlLCB3 ZSBtYXkgbmVlZCB0byBza2lwIG9uZSBtb3JlCitAQCAtMzcwLDcgKzM2NCw3IEBAIHNwdV9lbmFi bGVfYnJlYWsgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIAorIC8qIENyZWF0ZSBpbmZlcmlv ciBob29rLiAgKi8KKyBzdGF0aWMgdm9pZAorLXNwdV9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9v ayAodm9pZCkKKytzcHVfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkK KyB7CisgICAvKiBSZW1vdmUgYWxsIHByZXZpb3VzbHkgaW5zdGFsbGVkIHNvbGliIGJyZWFrcG9p bnRzLiAgQm90aCB0aGUgU1ZSNAorICAgICAgY29kZSBhbmQgdXMgd2lsbCByZS1pbnN0YWxsIGFs bCByZXF1aXJlZCBicmVha3BvaW50cy4gICovCitAQCAtNDAxLDcgKzM5NSw3IEBAIHNwdV9zb2xp Yl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKKyAgICAgfQorIAorICAgLyogQ2FsbCBTVlI0 IGhvb2sgLS0gdGhpcyB3aWxsIHJlLWluc2VydCB0aGUgU1ZSNCBzb2xpYiBicmVha3BvaW50cy4g ICovCistICBzdnI0X3NvX29wcy5zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoKTsKKysgIHN2 cjRfc29fb3BzLnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9tX3R0eSk7CisgCisgICAv KiBJZiB0aGUgaW5mZXJpb3IgaXMgc3RhdGljYWxseSBsaW5rZWQgYWdhaW5zdCBsaWJzcGUsIHdl IG5lZWQgdG8gaW5zdGFsbAorICAgICAgb3VyIG93biBzb2xpYiBicmVha3BvaW50IHJpZ2h0IG5v dy4gIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBpbnN0YWxsZWQgYnkKK2RpZmYgLS1naXQgYS9nZGIv c29saWItc3Vub3MuYyBiL2dkYi9zb2xpYi1zdW5vcy5jCitpbmRleCA5YjJhNDcwLi5iMmExNDdk IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLXN1bm9zLmMKKysrKyBiL2dkYi9zb2xpYi1zdW5vcy5j CitAQCAtNzQwLDcgKzc0MCw3IEBAIHN1bm9zX3NwZWNpYWxfc3ltYm9sX2hhbmRsaW5nICh2b2lk KQorICAqLworIAorIHN0YXRpYyB2b2lkCistc3Vub3Nfc29saWJfY3JlYXRlX2luZmVyaW9yX2hv b2sgKHZvaWQpCisrc3Vub3Nfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0 eSkKKyB7CisgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOworICAgc3RydWN0IGluZmVyaW9yICpp bmY7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKK2lu ZGV4IDY4YWFkYzAuLmVmYmU3MTcgMTAwNjQ0CistLS0gYS9nZGIvc29saWItc3ZyNC5jCisrKysg Yi9nZGIvc29saWItc3ZyNC5jCitAQCAtNTAsNiArNTAsNyBAQAorIAorIHN0YXRpYyBzdHJ1Y3Qg bGlua19tYXBfb2Zmc2V0cyAqc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKKyBz dGF0aWMgaW50IHN2cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKKytzdGF0aWMgdm9p ZCBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCk7CisgCisgLyogTGluayBtYXAg aW5mbyB0byBpbmNsdWRlIGluIGFuIGFsbG9jYXRlZCBzb19saXN0IGVudHJ5ICovCisgCitAQCAt NTk5LDExICs2MDAsMTIgQEAgc2Nhbl9keW50YWcgKGludCBkeW50YWcsIGJmZCAqYWJmZCwgQ09S RV9BRERSICpwdHIpCisgeworICAgaW50IGFyY2hfc2l6ZSwgc3RlcCwgc2VjdF9zaXplOworICAg bG9uZyBkeW5fdGFnOworLSAgQ09SRV9BRERSIGR5bl9wdHIsIGR5bl9hZGRyOworKyAgQ09SRV9B RERSIGR5bl9wdHI7CisgICBnZGJfYnl0ZSAqYnVmZW5kLCAqYnVmc3RhcnQsICpidWY7CisgICBF bGYzMl9FeHRlcm5hbF9EeW4gKnhfZHlucF8zMjsKKyAgIEVsZjY0X0V4dGVybmFsX0R5biAqeF9k eW5wXzY0OworICAgc3RydWN0IGJmZF9zZWN0aW9uICpzZWN0OworKyAgc3RydWN0IHRhcmdldF9z ZWN0aW9uICp0YXJnZXRfc2VjdGlvbjsKKyAKKyAgIGlmIChhYmZkID09IE5VTEwpCisgICAgIHJl dHVybiAwOworQEAgLTYxOSw3ICs2MjEsMTMgQEAgc2Nhbl9keW50YWcgKGludCBkeW50YWcsIGJm ZCAqYWJmZCwgQ09SRV9BRERSICpwdHIpCisgICBzZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25h bWUgKGFiZmQsICIuZHluYW1pYyIpOworICAgaWYgKHNlY3QgPT0gTlVMTCkKKyAgICAgcmV0dXJu IDA7CistICBkeW5fYWRkciA9IGJmZF9zZWN0aW9uX3ZtYSAoYWJmZCwgc2VjdCk7CisrCisrICBm b3IgKHRhcmdldF9zZWN0aW9uID0gdGFyZ2V0X2dldF9zZWN0aW9uX3RhYmxlICgmZXhlY19vcHMp LT5zZWN0aW9uczsKKysgICAgICAgdGFyZ2V0X3NlY3Rpb24gPCB0YXJnZXRfZ2V0X3NlY3Rpb25f dGFibGUgKCZleGVjX29wcyktPnNlY3Rpb25zX2VuZDsKKysgICAgICAgdGFyZ2V0X3NlY3Rpb24r KykKKysgICAgaWYgKHNlY3QgPT0gdGFyZ2V0X3NlY3Rpb24tPnRoZV9iZmRfc2VjdGlvbikKKysg ICAgICBicmVhazsKKysgIGdkYl9hc3NlcnQgKHRhcmdldF9zZWN0aW9uIDwgdGFyZ2V0X2dldF9z ZWN0aW9uX3RhYmxlICgmZXhlY19vcHMpLT5zZWN0aW9uc19lbmQpOworIAorICAgLyogUmVhZCBp biAuZHluYW1pYyBmcm9tIHRoZSBCRkQuICBXZSB3aWxsIGdldCB0aGUgYWN0dWFsIHZhbHVlCisg ICAgICBmcm9tIG1lbW9yeSBsYXRlci4gICovCitAQCAtNjYxLDcgKzY2OSw3IEBAIHNjYW5fZHlu dGFnIChpbnQgZHludGFnLCBiZmQgKmFiZmQsIENPUkVfQUREUiAqcHRyKQorIAkgICAgIENPUkVf QUREUiBwdHJfYWRkcjsKKyAKKyAJICAgICBwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAodGFyZ2V0 X2dkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOworLQkgICAgIHB0cl9hZGRyID0gZHluX2FkZHIg KyAoYnVmIC0gYnVmc3RhcnQpICsgYXJjaF9zaXplIC8gODsKKysJICAgICBwdHJfYWRkciA9IHRh cmdldF9zZWN0aW9uLT5hZGRyICsgKGJ1ZiAtIGJ1ZnN0YXJ0KSArIGFyY2hfc2l6ZSAvIDg7Cisg CSAgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAocHRyX2FkZHIsIHB0cl9idWYsIGFyY2hfc2l6 ZSAvIDgpID09IDApCisgCSAgICAgICBkeW5fcHRyID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzIChw dHJfYnVmLCBwdHJfdHlwZSk7CisgCSAgICAgKnB0ciA9IGR5bl9wdHI7CitAQCAtMTI1OCw3ICsx MjY2LDcgQEAgZXhlY19lbnRyeV9wb2ludCAoc3RydWN0IGJmZCAqYWJmZCwgc3RydWN0IHRhcmdl dF9vcHMgKnRhcmcpCisgICovCisgCisgc3RhdGljIGludAorLWVuYWJsZV9icmVhayAoc3RydWN0 IHN2cjRfaW5mbyAqaW5mbykKKytlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8s IGludCBmcm9tX3R0eSkKKyB7CisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7Cisg ICBjaGFyICoqYmtwdF9uYW1lcDsKK0BAIC0xMjc5LDcgKzEyODcsNyBAQCBlbmFibGVfYnJlYWsg KHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisgICAgICBtZWFuIHJfYnJrIGhhcyBhbHJlYWR5IGJl ZW4gcmVsb2NhdGVkLiAgQXNzdW1lIHRoZSBkeW5hbWljIGxpbmtlcgorICAgICAgaXMgdGhlIG9i amVjdCBjb250YWluaW5nIHJfYnJrLiAgKi8KKyAKKy0gIHNvbGliX2FkZCAoTlVMTCwgMCwgJmN1 cnJlbnRfdGFyZ2V0LCBhdXRvX3NvbGliX2FkZCk7CisrICBzb2xpYl9hZGQgKE5VTEwsIGZyb21f dHR5LCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKyAgIHN5bV9hZGRyID0gMDsK KyAgIGlmIChpbmZvLT5kZWJ1Z19iYXNlICYmIHNvbGliX3N2cjRfcl9tYXAgKGluZm8pICE9IDAp CisgICAgIHN5bV9hZGRyID0gc29saWJfc3ZyNF9yX2JyayAoaW5mbyk7CitAQCAtMTMzOSw2ICsx MzQ3LDExIEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKyAgICAgICBi ZmQgKnRtcF9iZmQgPSBOVUxMOworICAgICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0bXBfYmZkX3Rh cmdldDsKKyAgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKKysgICAgICBp bnQgYWRkcl9iaXQgPSBnZGJhcmNoX2FkZHJfYml0ICh0YXJnZXRfZ2RiYXJjaCk7CisrICAgICAg Q09SRV9BRERSIG1hc2sgPSBDT1JFX0FERFJfTUFYOworKworKyAgICAgIGlmIChhZGRyX2JpdCA8 IChzaXplb2YgKENPUkVfQUREUikgKiBIT1NUX0NIQVJfQklUKSkKKysJbWFzayA9ICgoQ09SRV9B RERSKSAxIDw8IGFkZHJfYml0KSAtIDE7CisgCisgICAgICAgc3ltX2FkZHIgPSAwOworIAorQEAg LTE0MDQsNyArMTQxNyw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykK KyAJICBpbmZvLT5kZWJ1Z19sb2FkZXJfbmFtZSA9IHhzdHJkdXAgKGludGVycF9uYW1lKTsKKyAJ ICBpbmZvLT5kZWJ1Z19sb2FkZXJfb2Zmc2V0X3AgPSAxOworIAkgIGluZm8tPmRlYnVnX2xvYWRl cl9vZmZzZXQgPSBsb2FkX2FkZHI7CistCSAgc29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90 YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKysJICBzb2xpYl9hZGQgKE5VTEwsIGZyb21fdHR5LCAm Y3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKyAJfQorIAorICAgICAgIC8qIFJlY29y ZCB0aGUgcmVsb2NhdGVkIHN0YXJ0IGFuZCBlbmQgYWRkcmVzcyBvZiB0aGUgZHluYW1pYyBsaW5r ZXIKK0BAIC0xNDE0LDE2ICsxNDI3LDIwIEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5m byAqaW5mbykKKyAJeworIAkgIGludGVycF90ZXh0X3NlY3RfbG93ID0KKyAJICAgIGJmZF9zZWN0 aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpICsgbG9hZF9hZGRyOworKwkgIGludGVycF90 ZXh0X3NlY3RfbG93ICY9IG1hc2s7CisgCSAgaW50ZXJwX3RleHRfc2VjdF9oaWdoID0KKyAJICAg IGludGVycF90ZXh0X3NlY3RfbG93ICsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJw X3NlY3QpOworKwkgIGludGVycF90ZXh0X3NlY3RfaGlnaCAmPSBtYXNrOworIAl9CisgICAgICAg aW50ZXJwX3NlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAodG1wX2JmZCwgIi5wbHQiKTsK KyAgICAgICBpZiAoaW50ZXJwX3NlY3QpCisgCXsKKyAJICBpbnRlcnBfcGx0X3NlY3RfbG93ID0K KyAJICAgIGJmZF9zZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpICsgbG9hZF9hZGRy OworKwkgIGludGVycF90ZXh0X3NlY3RfbG93ICY9IG1hc2s7CisgCSAgaW50ZXJwX3BsdF9zZWN0 X2hpZ2ggPQorIAkgICAgaW50ZXJwX3BsdF9zZWN0X2xvdyArIGJmZF9zZWN0aW9uX3NpemUgKHRt cF9iZmQsIGludGVycF9zZWN0KTsKKysJICBpbnRlcnBfdGV4dF9zZWN0X2hpZ2ggJj0gbWFzazsK KyAJfQorIAorICAgICAgIC8qIE5vdyB0cnkgdG8gc2V0IGEgYnJlYWtwb2ludCBpbiB0aGUgZHlu YW1pYyBsaW5rZXIuICAqLworQEAgLTE0NDgsNyArMTQ2NSw3IEBAIGVuYWJsZV9icmVhayAoc3Ry dWN0IHN2cjRfaW5mbyAqaW5mbykKKyAKKyAgICAgICBpZiAoc3ltX2FkZHIgIT0gMCkKKyAJewor LQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCwgbG9hZF9h ZGRyICsgc3ltX2FkZHIpOworKwkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJn ZXRfZ2RiYXJjaCwgKGxvYWRfYWRkciArIHN5bV9hZGRyKSAmIG1hc2spOworIAkgIHhmcmVlIChp bnRlcnBfbmFtZSk7CisgCSAgcmV0dXJuIDE7CisgCX0KK0BAIC0xNTE3LDExMyArMTUzNCwxMzEg QEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQorIHN0YXRpYyB2b2lkCisg c3ZyNF9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkKKyB7CisrICBzdnI0X3JlbG9jYXRl X21haW5fZXhlY3V0YWJsZSAoKTsKKyB9CisgCistLyogUmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0 YWJsZS4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1cG9uCistICAgc3RvcHBpbmcg dGhlIGluZmVyaW9yIHByb2Nlc3MgYXQgdGhlIGVudHJ5IHBvaW50IHRvIHRoZSBwcm9ncmFtLiAK Ky0gICBUaGUgZW50cnkgcG9pbnQgZnJvbSBCRkQgaXMgY29tcGFyZWQgdG8gdGhlIFBDIGFuZCBp ZiB0aGV5IGFyZQorLSAgIGRpZmZlcmVudCwgdGhlIG1haW4gZXhlY3V0YWJsZSBpcyByZWxvY2F0 ZWQgYnkgdGhlIHByb3BlciBhbW91bnQuIAorKy8qIERlY2lkZSBpZiB0aGUgb2JqZmlsZSBuZWVk cyB0byBiZSByZWxvY2F0ZWQuICBBcyBpbmRpY2F0ZWQgYWJvdmUsCisrICAgd2Ugd2lsbCBvbmx5 IGJlIGhlcmUgd2hlbiBleGVjdXRpb24gaXMgc3RvcHBlZCBhdCB0aGUgYmVnaW5uaW5nCisrICAg b2YgdGhlIHByb2dyYW0uICBSZWxvY2F0aW9uIGlzIG5lY2Vzc2FyeSBpZiB0aGUgYWRkcmVzcyBh dCB3aGljaAorKyAgIHdlIGFyZSBwcmVzZW50bHkgc3RvcHBlZCBkaWZmZXJzIGZyb20gdGhlIHN0 YXJ0IGFkZHJlc3Mgc3RvcmVkIGluCisrICAgdGhlIGV4ZWN1dGFibGUgQU5EIHRoZXJlJ3Mgbm8g aW50ZXJwcmV0ZXIgc2VjdGlvbi4gIFRoZSBjb25kaXRpb24KKysgICByZWdhcmRpbmcgdGhlIGlu dGVycHJldGVyIHNlY3Rpb24gaXMgdmVyeSBpbXBvcnRhbnQgYmVjYXVzZSBpZgorKyAgIHRoZXJl ICppcyogYW4gaW50ZXJwcmV0ZXIgc2VjdGlvbiwgZXhlY3V0aW9uIHdpbGwgYmVnaW4gdGhlcmUK KysgICBpbnN0ZWFkLiAgV2hlbiB0aGVyZSBpcyBhbiBpbnRlcnByZXRlciBzZWN0aW9uLCB0aGUg c3RhcnQgYWRkcmVzcworKyAgIGlzIChwcmVzdW1hYmx5KSB1c2VkIGJ5IHRoZSBpbnRlcnByZXRl ciBhdCBzb21lIHBvaW50IHRvIHN0YXJ0CisrICAgZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLgor KworKyAgIElmIHRoZXJlIGlzIGFuIGludGVycHJldGVyLCBpdCBpcyBub3JtYWwgZm9yIGl0IHRv IGJlIHNldCB0byBhbgorKyAgIGFyYml0cmFyeSBhZGRyZXNzIGF0IHRoZSBvdXRzZXQuICBUaGUg am9iIG9mIGZpbmRpbmcgaXQgaXMKKysgICBoYW5kbGVkIGluIGVuYWJsZV9icmVhaygpLgorKwor KyAgIFNvLCB0byBzdW1tYXJpemUsIHJlbG9jYXRpb25zIGFyZSBuZWNlc3Nhcnkgd2hlbiB0aGVy ZSBpcyBubworKyAgIGludGVycHJldGVyIHNlY3Rpb24gYW5kIHRoZSBzdGFydCBhZGRyZXNzIG9i dGFpbmVkIGZyb20gdGhlCisrICAgZXhlY3V0YWJsZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYWRk cmVzcyBhdCB3aGljaCBHREIgaXMKKysgICBjdXJyZW50bHkgc3RvcHBlZC4KKyAgICAKKy0gICBB cyB3cml0dGVuIGl0IHdpbGwgb25seSBhdHRlbXB0IHRvIHJlbG9jYXRlIGV4ZWN1dGFibGVzIHdo aWNoCistICAgbGFjayBpbnRlcnByZXRlciBzZWN0aW9ucy4gIEl0IHNlZW1zIGxpa2VseSB0aGF0 IG9ubHkgZHluYW1pYworLSAgIGxpbmtlciBleGVjdXRhYmxlcyB3aWxsIGdldCByZWxvY2F0ZWQs IHRob3VnaCBpdCBzaG91bGQgd29yaworLSAgIHByb3Blcmx5IGZvciBhIHBvc2l0aW9uLWluZGVw ZW5kZW50IHN0YXRpYyBleGVjdXRhYmxlIGFzIHdlbGwuICAqLworKyAgIFsgVGhlIGFzdHV0ZSBy ZWFkZXIgd2lsbCBub3RlIHRoYXQgd2UgYWxzbyB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0CisrICAg ICB0aGUgZXhlY3V0YWJsZSBpbiBxdWVzdGlvbiBoYXMgdGhlIERZTkFNSUMgZmxhZyBzZXQuICBJ dCBpcyBteQorKyAgICAgb3BpbmlvbiB0aGF0IHRoaXMgdGVzdCBpcyB1bm5lY2Vzc2FyeSAodW5k ZXNpcmFibGUgZXZlbikuICBJdAorKyAgICAgd2FzIGFkZGVkIHRvIGF2b2lkIGluYWR2ZXJ0ZW50 IHJlbG9jYXRpb24gb2YgYW4gZXhlY3V0YWJsZQorKyAgICAgd2hvc2UgZV90eXBlIG1lbWJlciBp biB0aGUgRUxGIGhlYWRlciBpcyBub3QgRVRfRFlOLiAgVGhlcmUgbWF5CisrICAgICBiZSBhIHRp bWUgaW4gdGhlIGZ1dHVyZSB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byBkbyByZWxvY2F0aW9ucwor KyAgICAgb24gb3RoZXIgdHlwZXMgb2YgZmlsZXMgYXMgd2VsbCBpbiB3aGljaCBjYXNlIHRoaXMg Y29uZGl0aW9uCisrICAgICBzaG91bGQgZWl0aGVyIGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQgdG8g YWNjb21vZGF0ZSB0aGUgbmV3IGZpbGUKKysgICAgIHR5cGUuICAoRS5nLCBhbiBFVF9FWEVDIGV4 ZWN1dGFibGUgd2hpY2ggaGFzIGJlZW4gYnVpbHQgdG8gYmUKKysgICAgIHBvc2l0aW9uLWluZGVw ZW5kZW50IGNvdWxkIHNhZmVseSBiZSByZWxvY2F0ZWQgYnkgdGhlIE9TIGlmCisrICAgICBkZXNp cmVkLiAgSXQgaXMgdHJ1ZSB0aGF0IHRoaXMgdmlvbGF0ZXMgdGhlIEFCSSwgYnV0IHRoZSBBQkkK KysgICAgIGhhcyBiZWVuIGtub3duIHRvIGJlIGJlbnQgZnJvbSB0aW1lIHRvIHRpbWUuKSAgLSBL ZXZpbiwgTm92IDIwMDAuIF0KKysgICAqLworIAorLXN0YXRpYyB2b2lkCistc3ZyNF9yZWxvY2F0 ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpCisrc3RhdGljIENPUkVfQUREUgorK3N2cjRfc3RhdGlj X2V4ZWNfZGlzcGxhY2VtZW50ICh2b2lkKQorIHsKKyAgIGFzZWN0aW9uICppbnRlcnBfc2VjdDsK KyAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUKKyAgICAgPSBnZXRfdGhyZWFkX2FyY2hfcmVn Y2FjaGUgKGluZmVyaW9yX3B0aWQsIHRhcmdldF9nZGJhcmNoKTsKKyAgIENPUkVfQUREUiBwYyA9 IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hlKTsKKyAKKy0gIC8qIERlY2lkZSBpZiB0aGUgb2Jq ZmlsZSBuZWVkcyB0byBiZSByZWxvY2F0ZWQuICBBcyBpbmRpY2F0ZWQgYWJvdmUsCistICAgICB3 ZSB3aWxsIG9ubHkgYmUgaGVyZSB3aGVuIGV4ZWN1dGlvbiBpcyBzdG9wcGVkIGF0IHRoZSBiZWdp bm5pbmcKKy0gICAgIG9mIHRoZSBwcm9ncmFtLiAgUmVsb2NhdGlvbiBpcyBuZWNlc3NhcnkgaWYg dGhlIGFkZHJlc3MgYXQgd2hpY2gKKy0gICAgIHdlIGFyZSBwcmVzZW50bHkgc3RvcHBlZCBkaWZm ZXJzIGZyb20gdGhlIHN0YXJ0IGFkZHJlc3Mgc3RvcmVkIGluCistICAgICB0aGUgZXhlY3V0YWJs ZSBBTkQgdGhlcmUncyBubyBpbnRlcnByZXRlciBzZWN0aW9uLiAgVGhlIGNvbmRpdGlvbgorLSAg ICAgcmVnYXJkaW5nIHRoZSBpbnRlcnByZXRlciBzZWN0aW9uIGlzIHZlcnkgaW1wb3J0YW50IGJl Y2F1c2UgaWYKKy0gICAgIHRoZXJlICppcyogYW4gaW50ZXJwcmV0ZXIgc2VjdGlvbiwgZXhlY3V0 aW9uIHdpbGwgYmVnaW4gdGhlcmUKKy0gICAgIGluc3RlYWQuICBXaGVuIHRoZXJlIGlzIGFuIGlu dGVycHJldGVyIHNlY3Rpb24sIHRoZSBzdGFydCBhZGRyZXNzCistICAgICBpcyAocHJlc3VtYWJs eSkgdXNlZCBieSB0aGUgaW50ZXJwcmV0ZXIgYXQgc29tZSBwb2ludCB0byBzdGFydAorLSAgICAg ZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLgorLQorLSAgICAgSWYgdGhlcmUgaXMgYW4gaW50ZXJw cmV0ZXIsIGl0IGlzIG5vcm1hbCBmb3IgaXQgdG8gYmUgc2V0IHRvIGFuCistICAgICBhcmJpdHJh cnkgYWRkcmVzcyBhdCB0aGUgb3V0c2V0LiAgVGhlIGpvYiBvZiBmaW5kaW5nIGl0IGlzCistICAg ICBoYW5kbGVkIGluIGVuYWJsZV9icmVhaygpLgorLQorLSAgICAgU28sIHRvIHN1bW1hcml6ZSwg cmVsb2NhdGlvbnMgYXJlIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGlzIG5vCistICAgICBpbnRlcnBy ZXRlciBzZWN0aW9uIGFuZCB0aGUgc3RhcnQgYWRkcmVzcyBvYnRhaW5lZCBmcm9tIHRoZQorLSAg ICAgZXhlY3V0YWJsZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYWRkcmVzcyBhdCB3aGljaCBHREIg aXMKKy0gICAgIGN1cnJlbnRseSBzdG9wcGVkLgorLSAgICAgCistICAgICBbIFRoZSBhc3R1dGUg cmVhZGVyIHdpbGwgbm90ZSB0aGF0IHdlIGFsc28gdGVzdCB0byBtYWtlIHN1cmUgdGhhdAorLSAg ICAgICB0aGUgZXhlY3V0YWJsZSBpbiBxdWVzdGlvbiBoYXMgdGhlIERZTkFNSUMgZmxhZyBzZXQu ICBJdCBpcyBteQorLSAgICAgICBvcGluaW9uIHRoYXQgdGhpcyB0ZXN0IGlzIHVubmVjZXNzYXJ5 ICh1bmRlc2lyYWJsZSBldmVuKS4gIEl0CistICAgICAgIHdhcyBhZGRlZCB0byBhdm9pZCBpbmFk dmVydGVudCByZWxvY2F0aW9uIG9mIGFuIGV4ZWN1dGFibGUKKy0gICAgICAgd2hvc2UgZV90eXBl IG1lbWJlciBpbiB0aGUgRUxGIGhlYWRlciBpcyBub3QgRVRfRFlOLiAgVGhlcmUgbWF5CistICAg ICAgIGJlIGEgdGltZSBpbiB0aGUgZnV0dXJlIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIGRvIHJl bG9jYXRpb25zCistICAgICAgIG9uIG90aGVyIHR5cGVzIG9mIGZpbGVzIGFzIHdlbGwgaW4gd2hp Y2ggY2FzZSB0aGlzIGNvbmRpdGlvbgorLSAgICAgICBzaG91bGQgZWl0aGVyIGJlIHJlbW92ZWQg b3IgbW9kaWZpZWQgdG8gYWNjb21vZGF0ZSB0aGUgbmV3IGZpbGUKKy0gICAgICAgdHlwZS4gIChF LmcsIGFuIEVUX0VYRUMgZXhlY3V0YWJsZSB3aGljaCBoYXMgYmVlbiBidWlsdCB0byBiZQorLSAg ICAgICBwb3NpdGlvbi1pbmRlcGVuZGVudCBjb3VsZCBzYWZlbHkgYmUgcmVsb2NhdGVkIGJ5IHRo ZSBPUyBpZgorLSAgICAgICBkZXNpcmVkLiAgSXQgaXMgdHJ1ZSB0aGF0IHRoaXMgdmlvbGF0ZXMg dGhlIEFCSSwgYnV0IHRoZSBBQkkKKy0gICAgICAgaGFzIGJlZW4ga25vd24gdG8gYmUgYmVudCBm cm9tIHRpbWUgdG8gdGltZS4pICAtIEtldmluLCBOb3YgMjAwMC4gXQorLSAgICAgKi8KKy0KKyAg IGludGVycF9zZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGV4ZWNfYmZkLCAiLmludGVy cCIpOworICAgaWYgKGludGVycF9zZWN0ID09IE5VTEwgCisgICAgICAgJiYgKGJmZF9nZXRfZmls ZV9mbGFncyAoZXhlY19iZmQpICYgRFlOQU1JQykgIT0gMAorICAgICAgICYmIChleGVjX2VudHJ5 X3BvaW50IChleGVjX2JmZCwgJmV4ZWNfb3BzKSAhPSBwYykpCisrICAgIHJldHVybiBwYyAtIGV4 ZWNfZW50cnlfcG9pbnQgKGV4ZWNfYmZkLCAmZXhlY19vcHMpOworKworKyAgcmV0dXJuIDA7Cisr fQorKworKy8qIFdlIHJlbG9jYXRlIGFsbCBvZiB0aGUgc2VjdGlvbnMgYnkgdGhlIHNhbWUgYW1v dW50LiAgVGhpcworKyAgIGJlaGF2aW9yIGlzIG1hbmRhdGVkIGJ5IHJlY2VudCBlZGl0aW9ucyBv ZiB0aGUgU3lzdGVtIFYgQUJJLiAKKysgICBBY2NvcmRpbmcgdG8gdGhlIFN5c3RlbSBWIEFwcGxp Y2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UsCisrICAgRWRpdGlvbiA0LjEsIHBhZ2UgNS01OgorKwor KyAgICAgLi4uICBUaG91Z2ggdGhlIHN5c3RlbSBjaG9vc2VzIHZpcnR1YWwgYWRkcmVzc2VzIGZv cgorKyAgICAgaW5kaXZpZHVhbCBwcm9jZXNzZXMsIGl0IG1haW50YWlucyB0aGUgc2VnbWVudHMn IHJlbGF0aXZlCisrICAgICBwb3NpdGlvbnMuICBCZWNhdXNlIHBvc2l0aW9uLWluZGVwZW5kZW50 IGNvZGUgdXNlcyByZWxhdGl2ZQorKyAgICAgYWRkcmVzc2VzaW5nIGJldHdlZW4gc2VnbWVudHMs IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKysgICAgIHZpcnR1YWwgYWRkcmVzc2VzIGluIG1lbW9y eSBtdXN0IG1hdGNoIHRoZSBkaWZmZXJlbmNlCisrICAgICBiZXR3ZWVuIHZpcnR1YWwgYWRkcmVz c2VzIGluIHRoZSBmaWxlLiAgVGhlIGRpZmZlcmVuY2UKKysgICAgIGJldHdlZW4gdGhlIHZpcnR1 YWwgYWRkcmVzcyBvZiBhbnkgc2VnbWVudCBpbiBtZW1vcnkgYW5kCisrICAgICB0aGUgY29ycmVz cG9uZGluZyB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIGZpbGUgaXMgdGh1cyBhCisrICAgICBzaW5n bGUgY29uc3RhbnQgdmFsdWUgZm9yIGFueSBvbmUgZXhlY3V0YWJsZSBvciBzaGFyZWQKKysgICAg IG9iamVjdCBpbiBhIGdpdmVuIHByb2Nlc3MuICBUaGlzIGRpZmZlcmVuY2UgaXMgdGhlIGJhc2UK KysgICAgIGFkZHJlc3MuICBPbmUgdXNlIG9mIHRoZSBiYXNlIGFkZHJlc3MgaXMgdG8gcmVsb2Nh dGUgdGhlCisrICAgICBtZW1vcnkgaW1hZ2Ugb2YgdGhlIHByb2dyYW0gZHVyaW5nIGR5bmFtaWMg bGlua2luZy4KKysKKysgICBUaGUgc2FtZSBsYW5ndWFnZSBhbHNvIGFwcGVhcnMgaW4gRWRpdGlv biA0LjAgb2YgdGhlIFN5c3RlbSBWCisrICAgQUJJIGFuZCBpcyBsZWZ0IHVuc3BlY2lmaWVkIGlu IHNvbWUgb2YgdGhlIGVhcmxpZXIgZWRpdGlvbnMuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIK KytzdnI0X2V4ZWNfZGlzcGxhY2VtZW50ICh2b2lkKQorK3sKKysgIGludCBmb3VuZDsKKysgIENP UkVfQUREUiBlbnRyeV9wb2ludDsKKysKKysgIGlmIChleGVjX2JmZCA9PSBOVUxMKQorKyAgICBy ZXR1cm4gMDsKKysKKysgIGlmICh0YXJnZXRfYXV4dl9zZWFyY2ggKCZjdXJyZW50X3RhcmdldCwg QVRfRU5UUlksICZlbnRyeV9wb2ludCkgPT0gMSkKKysgICAgcmV0dXJuIGVudHJ5X3BvaW50IC0g ZXhlY19lbnRyeV9wb2ludCAoZXhlY19iZmQsICZjdXJyZW50X3RhcmdldCk7CisrCisrICByZXR1 cm4gc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQgKCk7CisrfQorKworKy8qIFJlbG9jYXRl IHRoZSBtYWluIGV4ZWN1dGFibGUuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgdXBv bgorKyAgIHN0b3BwaW5nIHRoZSBpbmZlcmlvciBwcm9jZXNzIGF0IHRoZSBlbnRyeSBwb2ludCB0 byB0aGUgcHJvZ3JhbS4gCisrICAgVGhlIGVudHJ5IHBvaW50IGZyb20gQkZEIGlzIGNvbXBhcmVk IHRvIHRoZSBBVF9FTlRSWSBvZiBBVVhWIGFuZCBpZiB0aGV5IGFyZQorKyAgIGRpZmZlcmVudCwg dGhlIG1haW4gZXhlY3V0YWJsZSBpcyByZWxvY2F0ZWQgYnkgdGhlIHByb3BlciBhbW91bnQuICAq LworKworK3N0YXRpYyB2b2lkCisrc3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQp CisreworKyAgQ09SRV9BRERSIGRpc3BsYWNlbWVudCA9IHN2cjRfZXhlY19kaXNwbGFjZW1lbnQg KCk7CisrCisrICAvKiBFdmVuIGlmIERJU1BMQUNFTUVOVCBpcyAwIHN0aWxsIHRyeSB0byByZWxv Y2F0ZSBpdCBhcyB0aGlzIGlzIGEgbmV3CisrICAgICBkaWZmZXJlbmNlIG9mIGluLW1lbW9yeSB2 cy4gaW4tZmlsZSBhZGRyZXNzZXMgYW5kIHdlIGNvdWxkIGFscmVhZHkKKysgICAgIHJlbG9jYXRl IHRoZSBleGVjdXRhYmxlIGF0IHRoaXMgZnVuY3Rpb24gdG8gaW1wcm9wZXIgYWRkcmVzcyBiZWZv cmUuICAqLworKworKyAgaWYgKHN5bWZpbGVfb2JqZmlsZSkKKyAgICAgeworLSAgICAgIHN0cnVj dCBjbGVhbnVwICpvbGRfY2hhaW47CisgICAgICAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3 X29mZnNldHM7CistICAgICAgaW50IGksIGNoYW5nZWQ7CistICAgICAgQ09SRV9BRERSIGRpc3Bs YWNlbWVudDsKKy0gICAgICAKKy0gICAgICAvKiBJdCBpcyBuZWNlc3NhcnkgdG8gcmVsb2NhdGUg dGhlIG9iamZpbGUuICBUaGUgYW1vdW50IHRvCistCSByZWxvY2F0ZSBieSBpcyBzaW1wbHkgdGhl IGFkZHJlc3MgYXQgd2hpY2ggd2UgYXJlIHN0b3BwZWQKKy0JIG1pbnVzIHRoZSBzdGFydGluZyBh ZGRyZXNzIGZyb20gdGhlIGV4ZWN1dGFibGUuCistCistCSBXZSByZWxvY2F0ZSBhbGwgb2YgdGhl IHNlY3Rpb25zIGJ5IHRoZSBzYW1lIGFtb3VudC4gIFRoaXMKKy0JIGJlaGF2aW9yIGlzIG1hbmRh dGVkIGJ5IHJlY2VudCBlZGl0aW9ucyBvZiB0aGUgU3lzdGVtIFYgQUJJLiAKKy0JIEFjY29yZGlu ZyB0byB0aGUgU3lzdGVtIFYgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSwKKy0JIEVkaXRp b24gNC4xLCBwYWdlIDUtNToKKy0KKy0JICAgLi4uICBUaG91Z2ggdGhlIHN5c3RlbSBjaG9vc2Vz IHZpcnR1YWwgYWRkcmVzc2VzIGZvcgorLQkgICBpbmRpdmlkdWFsIHByb2Nlc3NlcywgaXQgbWFp bnRhaW5zIHRoZSBzZWdtZW50cycgcmVsYXRpdmUKKy0JICAgcG9zaXRpb25zLiAgQmVjYXVzZSBw b3NpdGlvbi1pbmRlcGVuZGVudCBjb2RlIHVzZXMgcmVsYXRpdmUKKy0JICAgYWRkcmVzc2VzaW5n IGJldHdlZW4gc2VnbWVudHMsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKy0JICAgdmlydHVhbCBh ZGRyZXNzZXMgaW4gbWVtb3J5IG11c3QgbWF0Y2ggdGhlIGRpZmZlcmVuY2UKKy0JICAgYmV0d2Vl biB2aXJ0dWFsIGFkZHJlc3NlcyBpbiB0aGUgZmlsZS4gIFRoZSBkaWZmZXJlbmNlCistCSAgIGJl dHdlZW4gdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiBhbnkgc2VnbWVudCBpbiBtZW1vcnkgYW5kCist CSAgIHRoZSBjb3JyZXNwb25kaW5nIHZpcnR1YWwgYWRkcmVzcyBpbiB0aGUgZmlsZSBpcyB0aHVz IGEKKy0JICAgc2luZ2xlIGNvbnN0YW50IHZhbHVlIGZvciBhbnkgb25lIGV4ZWN1dGFibGUgb3Ig c2hhcmVkCistCSAgIG9iamVjdCBpbiBhIGdpdmVuIHByb2Nlc3MuICBUaGlzIGRpZmZlcmVuY2Ug aXMgdGhlIGJhc2UKKy0JICAgYWRkcmVzcy4gIE9uZSB1c2Ugb2YgdGhlIGJhc2UgYWRkcmVzcyBp cyB0byByZWxvY2F0ZSB0aGUKKy0JICAgbWVtb3J5IGltYWdlIG9mIHRoZSBwcm9ncmFtIGR1cmlu ZyBkeW5hbWljIGxpbmtpbmcuCistCistCSBUaGUgc2FtZSBsYW5ndWFnZSBhbHNvIGFwcGVhcnMg aW4gRWRpdGlvbiA0LjAgb2YgdGhlIFN5c3RlbSBWCistCSBBQkkgYW5kIGlzIGxlZnQgdW5zcGVj aWZpZWQgaW4gc29tZSBvZiB0aGUgZWFybGllciBlZGl0aW9ucy4gICovCistCistICAgICAgZGlz cGxhY2VtZW50ID0gcGMgLSBleGVjX2VudHJ5X3BvaW50IChleGVjX2JmZCwgJmV4ZWNfb3BzKTsK Ky0gICAgICBjaGFuZ2VkID0gMDsKKy0KKy0gICAgICBuZXdfb2Zmc2V0cyA9IHhjYWxsb2MgKHN5 bWZpbGVfb2JqZmlsZS0+bnVtX3NlY3Rpb25zLAorLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3Qgc2Vj dGlvbl9vZmZzZXRzKSk7CistICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwg bmV3X29mZnNldHMpOworKyAgICAgIGludCBpOworKworKyAgICAgIG5ld19vZmZzZXRzID0gYWxs b2NhIChzeW1maWxlX29iamZpbGUtPm51bV9zZWN0aW9ucworKwkJCSAgICAqIHNpemVvZiAoKm5l d19vZmZzZXRzKSk7CisgCisgICAgICAgZm9yIChpID0gMDsgaSA8IHN5bWZpbGVfb2JqZmlsZS0+ bnVtX3NlY3Rpb25zOyBpKyspCistCXsKKy0JICBpZiAoZGlzcGxhY2VtZW50ICE9IEFOT0ZGU0VU IChzeW1maWxlX29iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgaSkpCistCSAgICBjaGFuZ2VkID0g MTsKKy0JICBuZXdfb2Zmc2V0cy0+b2Zmc2V0c1tpXSA9IGRpc3BsYWNlbWVudDsKKy0JfQorKwlu ZXdfb2Zmc2V0cy0+b2Zmc2V0c1tpXSA9IGRpc3BsYWNlbWVudDsKKyAKKy0gICAgICBpZiAoY2hh bmdlZCkKKy0Jb2JqZmlsZV9yZWxvY2F0ZSAoc3ltZmlsZV9vYmpmaWxlLCBuZXdfb2Zmc2V0cyk7 CisrICAgICAgb2JqZmlsZV9yZWxvY2F0ZSAoc3ltZmlsZV9vYmpmaWxlLCBuZXdfb2Zmc2V0cyk7 CisrICAgIH0KKysgIGVsc2UgaWYgKGV4ZWNfYmZkKQorKyAgICB7CisrICAgICAgYXNlY3Rpb24g KmFzZWN0OworIAorLSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIGZvciAo YXNlY3QgPSBleGVjX2JmZC0+c2VjdGlvbnM7IGFzZWN0ICE9IE5VTEw7IGFzZWN0ID0gYXNlY3Qt Pm5leHQpCisrCWV4ZWNfc2V0X3NlY3Rpb25fYWRkcmVzcyAoYmZkX2dldF9maWxlbmFtZSAoZXhl Y19iZmQpLCBhc2VjdC0+aW5kZXgsCisrCQkJCSAgYmZkX3NlY3Rpb25fdm1hIChleGVjX2JmZCwg YXNlY3QpCisrCQkJCSAgKyBkaXNwbGFjZW1lbnQpOworICAgICB9CisgfQorIAorQEAgLTE2MzUs NyArMTY3MCw3IEBAIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICh2b2lkKQorIAorICAg IFNZTk9QU0lTCisgCistICAgdm9pZCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgp CisrICAgdm9pZCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkp CisgCisgICAgREVTQ1JJUFRJT04KKyAKK0BAIC0xNjgwLDcgKzE3MTUsNyBAQCBzdnI0X3JlbG9j YXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCkKKyAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLXN2cjRf c29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCisrc3ZyNF9zb2xpYl9jcmVhdGVfaW5m ZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIHN0cnVjdCBpbmZlcmlvciAqaW5mOwor ICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKK0BAIC0xNjg5LDEyICsxNzI0LDEzIEBAIHN2cjRf c29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCisgICBpbmZvID0gZ2V0X3N2cjRfaW5m byAoUElER0VUIChpbmZlcmlvcl9wdGlkKSk7CisgCisgICAvKiBSZWxvY2F0ZSB0aGUgbWFpbiBl eGVjdXRhYmxlIGlmIG5lY2Vzc2FyeS4gICovCistICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0 YWJsZSAoKTsKKysgIGlmIChjdXJyZW50X2luZmVyaW9yICgpLT5hdHRhY2hfZmxhZyA9PSAwKQor KyAgICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKKyAKKyAgIGlmICghc3ZyNF9o YXZlX2xpbmtfbWFwX29mZnNldHMgKCkpCisgICAgIHJldHVybjsKKyAKKy0gIGlmICghZW5hYmxl X2JyZWFrIChpbmZvKSkKKysgIGlmICghZW5hYmxlX2JyZWFrIChpbmZvLCBmcm9tX3R0eSkpCisg ICAgIHJldHVybjsKKyAKKyAjaWYgZGVmaW5lZChfU0NPX0RTKQorQEAgLTE5MTAsOCArMTk0Niwx OSBAQCBlbGZfbG9va3VwX2xpYl9zeW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorIAkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgCQkgICAgICAgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluKQorIHsKKy0gIGlmIChvYmpmaWxlLT5vYmZkID09IE5VTEwKKy0gICAgIHx8IHNj YW5fZHludGFnIChEVF9TWU1CT0xJQywgb2JqZmlsZS0+b2JmZCwgTlVMTCkgIT0gMSkKKysgIGJm ZCAqYWJmZDsKKysKKysgIGlmIChvYmpmaWxlID09IHN5bWZpbGVfb2JqZmlsZSkKKysgICAgYWJm ZCA9IGV4ZWNfYmZkOworKyAgZWxzZQorKyAgICB7CisrICAgICAgLyogT0JKRklMRSBzaG91bGQg aGF2ZSBiZWVuIHBhc3NlZCBhcyB0aGUgbm9uLWRlYnVnIG9uZS4gICovCisrICAgICAgZ2RiX2Fz c2VydCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKTsK KysKKysgICAgICBhYmZkID0gb2JqZmlsZS0+b2JmZDsKKysgICAgfQorKworKyAgaWYgKGFiZmQg PT0gTlVMTCB8fCBzY2FuX2R5bnRhZyAoRFRfU1lNQk9MSUMsIGFiZmQsIE5VTEwpICE9IDEpCisg ICAgIHJldHVybiBOVUxMOworIAorICAgcmV0dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21f b2JqZmlsZSAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKK2RpZmYgLS1naXQgYS9nZGIvc29saWIt dGFyZ2V0LmMgYi9nZGIvc29saWItdGFyZ2V0LmMKK2luZGV4IDA3NDE1ZTQuLmQxNjBhNzAgMTAw NjQ0CistLS0gYS9nZGIvc29saWItdGFyZ2V0LmMKKysrKyBiL2dkYi9zb2xpYi10YXJnZXQuYwor QEAgLTMwNiw3ICszMDYsNyBAQCBzb2xpYl90YXJnZXRfc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcg KHZvaWQpCisgfQorIAorIHN0YXRpYyB2b2lkCistc29saWJfdGFyZ2V0X3NvbGliX2NyZWF0ZV9p bmZlcmlvcl9ob29rICh2b2lkKQorK3NvbGliX3RhcmdldF9zb2xpYl9jcmVhdGVfaW5mZXJpb3Jf aG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIC8qIE5vdGhpbmcgbmVlZGVkLiAgKi8KKyB9Citk aWZmIC0tZ2l0IGEvZ2RiL3NvbGliLmMgYi9nZGIvc29saWIuYworaW5kZXggMzU3NGU2Mi4uN2Vh MzY2MyAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi5jCisrKysgYi9nZGIvc29saWIuYworQEAgLTk5 OCw3ICs5OTgsNyBAQCBjbGVhcl9zb2xpYiAodm9pZCkKKyAKKyAgICBTWU5PUFNJUworIAorLSAg IHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCkKKysgICB2b2lkIHNvbGliX2NyZWF0 ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkpCisgCisgICAgREVTQ1JJUFRJT04KKyAKK0BA IC0xMDA4LDEwICsxMDA4LDEwIEBAIGNsZWFyX3NvbGliICh2b2lkKQorICAgIFNPTElCX0NSRUFU RV9JTkZFUklPUl9IT09LLiAgKi8KKyAKKyB2b2lkCistc29saWJfY3JlYXRlX2luZmVyaW9yX2hv b2sgKHZvaWQpCisrc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKKyB7 CisgICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJj aCk7CistICBvcHMtPnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKCk7CisrICBvcHMtPnNvbGli X2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9tX3R0eSk7CisgfQorIAorIC8qIEdMT0JBTCBGVU5D VElPTgorQEAgLTEwODcsNyArMTA4Nyw2IEBAIHJlbG9hZF9zaGFyZWRfbGlicmFyaWVzIChjaGFy ICppZ25vcmVkLCBpbnQgZnJvbV90dHksCisgCQkJIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpl KQorIHsKKyAgIG5vX3NoYXJlZF9saWJyYXJpZXMgKE5VTEwsIGZyb21fdHR5KTsKKy0gIHNvbGli X2FkZCAoTlVMTCwgZnJvbV90dHksIE5VTEwsIGF1dG9fc29saWJfYWRkKTsKKyAgIC8qIENyZWF0 aW5nIGluZmVyaW9yIGhvb2tzIGhlcmUgaGFzIHR3byBwdXJwb3Nlcy4gRmlyc3QsIGlmIHdlIHJl bG9hZCAKKyAgICAgIHNoYXJlZCBsaWJyYXJpZXMgdGhlbiB0aGUgYWRkcmVzcyBvZiBzb2xpYiBi cmVha3BvaW50IHdlJ3ZlIGNvbXB1dGVkCisgICAgICBwcmV2aW91c2x5IG1pZ2h0IGJlIG5vIGxv bmdlciB2YWxpZC4gIEZvciBleGFtcGxlLCBpZiB3ZSBmb3Jnb3QgdG8gc2V0CitAQCAtMTEwMiw5 ICsxMTAxLDE5IEBAIHJlbG9hZF9zaGFyZWRfbGlicmFyaWVzIChjaGFyICppZ25vcmVkLCBpbnQg ZnJvbV90dHksCisgI2lmZGVmIFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09LCisgICAgICAgU09M SUJfQ1JFQVRFX0lORkVSSU9SX0hPT0sgKFBJREdFVCAoaW5mZXJpb3JfcHRpZCkpOworICNlbHNl CistICAgICAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCk7CisrICAgICAgc29saWJfY3Jl YXRlX2luZmVyaW9yX2hvb2sgKGZyb21fdHR5KTsKKyAjZW5kaWYKKyAgICAgfQorKworKyAgLyog U29tZXRpbWVzIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBob29rIGxvYWRzIGluaXRpYWwgc2hhcmVk CisrICAgICBsaWJyYXJpZXMsIGFuZCBzb21ldGltZXMgaXQgZG9lc24ndC4gIElmIGl0IGRvZXNu J3QgRlJPTV9UVFkgd2lsbCBiZQorKyAgICAgaW5jb3JyZWN0bHkgMCBidXQgc3VjaCBzb2xpYiB0 YXJnZXRzIHNob3VsZCBiZSBmaXhlZCBhbnl3YXkuICBJZiB3ZQorKyAgICAgbWFkZSBhbGwgdGhl IGluZmVyaW9yIGhvb2sgbWV0aG9kcyBjb25zaXN0ZW50LCB0aGlzIGNhbGwgY291bGQgYmUKKysg ICAgIHJlbW92ZWQuICBDYWxsIGl0IG9ubHkgYWZ0ZXIgdGhlIHNvbGliIHRhcmdldCBoYXMgYmVl biBpbml0aWFsaXplZCBieQorKyAgICAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2suICAqLwor KworKyAgc29saWJfYWRkIChOVUxMLCAwLCBOVUxMLCBhdXRvX3NvbGliX2FkZCk7CisrCisgICAv KiBXZSBoYXZlIHVubG9hZGVkIGFuZCB0aGVuIHJlbG9hZGVkIGRlYnVnIGluZm8gZm9yIGFsbCBz aGFyZWQgbGlicmFyaWVzLgorICAgICAgSG93ZXZlciwgZnJhbWVzIG1heSBzdGlsbCByZWZlcmVu Y2UgdGhlbSwgZm9yIGV4YW1wbGUgYSBmcmFtZSdzIAorICAgICAgdW53aW5kZXIgbWlnaHQgc3Rp bGwgcG9pbnQgb2YgRFdBUkYgRkRFIHN0cnVjdHVyZXMgdGhhdCBhcmUgbm93IGZyZWVkLgorZGlm ZiAtLWdpdCBhL2dkYi9zb2xpYi5oIGIvZ2RiL3NvbGliLmgKK2luZGV4IGNjYzViNjMuLmFiZTVl MTkgMTAwNjQ0CistLS0gYS9nZGIvc29saWIuaAorKysrIGIvZ2RiL3NvbGliLmgKK0BAIC00MSw3 ICs0MSw3IEBAIGV4dGVybiBpbnQgc29saWJfcmVhZF9zeW1ib2xzIChzdHJ1Y3Qgc29fbGlzdCAq LCBpbnQpOworICAgIGFkZHJlc3NlcyB0byB3aGljaCB0aGV5IGFyZSBsaW5rZWQsIGFuZCBzdWZm aWNpZW50IGluZm9ybWF0aW9uIHRvCisgICAgcmVhZCBpbiB0aGVpciBzeW1ib2xzIGF0IGEgbGF0 ZXIgdGltZS4gICovCisgCistZXh0ZXJuIHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sg KHZvaWQpOworK2V4dGVybiB2b2lkIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJv bV90dHkpOworIAorIC8qIElmIEFERFIgbGllcyBpbiBhIHNoYXJlZCBsaWJyYXJ5LCByZXR1cm4g aXRzIG5hbWUuICAqLworIAorZGlmZiAtLWdpdCBhL2dkYi9zb2xpc3QuaCBiL2dkYi9zb2xpc3Qu aAoraW5kZXggMDA1ZThmNy4uOTcyNGZlNyAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpc3QuaAorKysr IGIvZ2RiL3NvbGlzdC5oCitAQCAtODcsNyArODcsNyBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcwor ICAgICB2b2lkICgqY2xlYXJfc29saWIpICh2b2lkKTsKKyAKKyAgICAgLyogVGFyZ2V0IGRlcGVu ZGVudCBjb2RlIHRvIHJ1biBhZnRlciBjaGlsZCBwcm9jZXNzIGZvcmsuICAqLworLSAgICB2b2lk ICgqc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2spICh2b2lkKTsKKysgICAgdm9pZCAoKnNvbGli X2NyZWF0ZV9pbmZlcmlvcl9ob29rKSAoaW50IGZyb21fdHR5KTsKKyAKKyAgICAgLyogRG8gYWRk aXRpb25hbCBzeW1ib2wgaGFuZGxpbmcsIGxvb2t1cCwgZXRjLiBhZnRlciBzeW1ib2xzCisgICAg ICAgIGZvciBhIHNoYXJlZCBvYmplY3QgaGF2ZSBiZWVuIGxvYWRlZC4gICovCitkaWZmIC0tZ2l0 IGEvZ2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1maWxlLmMKK2luZGV4IGMzMWI3MmEuLjZkN2ZhMTAg MTAwNjQ0CistLS0gYS9nZGIvc3ltZmlsZS5jCisrKysgYi9nZGIvc3ltZmlsZS5jCitAQCAtNTM2 LDQwICs1MzYsMTUxIEBAIHBsYWNlX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3Qs IHZvaWQgKm9iaikKKyAgIGFyZy0+bG93ZXN0ID0gc3RhcnRfYWRkciArIGJmZF9nZXRfc2VjdGlv bl9zaXplIChzZWN0KTsKKyB9CisgCistLyogUGFyc2UgdGhlIHVzZXIncyBpZGVhIG9mIGFuIG9m ZnNldCBmb3IgZHluYW1pYyBsaW5raW5nLCBpbnRvIG91ciBpZGVhCistICAgb2YgaG93IHRvIHJl cHJlc2VudCBpdCBmb3IgZmFzdCBzeW1ib2wgcmVhZGluZy4gIFRoaXMgaXMgdGhlIGRlZmF1bHQK Ky0gICB2ZXJzaW9uIG9mIHRoZSBzeW1fZm5zLnN5bV9vZmZzZXRzIGZ1bmN0aW9uIGZvciBzeW1i b2wgcmVhZGVycyB0aGF0CistICAgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsLiAg SXQgYWxsb2NhdGVzIGEgc2VjdGlvbl9vZmZzZXRzIHRhYmxlCistICAgZm9yIHRoZSBvYmplY3Rm aWxlIE9CSkZJTEUgYW5kIHN0dWZmcyBBRERSIGludG8gYWxsIG9mIHRoZSBvZmZzZXRzLiAgKi8K KysvKiBCdWlsZCAoYWxsb2NhdGUgYW5kIHBvcHVsYXRlKSBzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2lu Zm8gd2l0aCBhYnNvbHV0ZQorKyAgIGFkZHJlc3NlcyBmcm9tIE9CSkZJTEUtPk9CRkQgYW5kIE9C SkZJTEUtPlNFQ1RJT05fT0ZGU0VUUy4gICovCisrCisrc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZv ICoKKytidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQorK3sKKysgIHN0cnVjdCB0YXJnZXRfc2VjdGlvbiAqc2VjdGlvbnMgPSBOVUxM LCAqc2VjdGlvbnNfZW5kOworKyAgc3RydWN0IHRhcmdldF9zZWN0aW9uICpwOworKyAgaW50IGFk ZHJfYml0ID0gZ2RiYXJjaF9hZGRyX2JpdCAob2JqZmlsZS0+Z2RiYXJjaCk7CisrICBDT1JFX0FE RFIgbWFzayA9IENPUkVfQUREUl9NQVg7CisrICBzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKnJl dHZhbDsKKysgIHN0cnVjdCBjbGVhbnVwICpteV9jbGVhbnVwczsKKysKKysgIGlmIChidWlsZF9z ZWN0aW9uX3RhYmxlIChvYmpmaWxlLT5vYmZkLCAmc2VjdGlvbnMsICZzZWN0aW9uc19lbmQpKQor KyAgICBlcnJvciAoXygiQ2FuJ3QgZmluZCB0aGUgZmlsZSBzZWN0aW9ucyBpbiBgJXMnOiAlcyIp LAorKwkgICBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkKSwgYmZkX2Vycm1zZyAoYmZk X2dldF9lcnJvciAoKSkpOworKyAgbXlfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBz ZWN0aW9ucyk7CisrCisrICBpZiAoYWRkcl9iaXQgPCAoc2l6ZW9mIChDT1JFX0FERFIpICogSE9T VF9DSEFSX0JJVCkpCisrICAgIG1hc2sgPSAoKENPUkVfQUREUikgMSA8PCBhZGRyX2JpdCkgLSAx OworKworKyAgZm9yIChwID0gc2VjdGlvbnM7IHAgPCBzZWN0aW9uc19lbmQ7IHArKykKKysgICAg eworKyAgICAgIENPUkVfQUREUiBiYXNlYWRkcjsKKysKKysgICAgICBnZGJfYXNzZXJ0IChwLT50 aGVfYmZkX3NlY3Rpb24tPmluZGV4IDwgb2JqZmlsZS0+bnVtX3NlY3Rpb25zKTsKKysgICAgICBi YXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsCisrCQkJICAgcC0+ dGhlX2JmZF9zZWN0aW9uLT5pbmRleCk7CisrCisrICAgICAgcC0+YWRkciA9IChwLT5hZGRyICsg YmFzZWFkZHIpICYgbWFzazsKKysgICAgICBwLT5lbmRhZGRyID0gKHAtPmVuZGFkZHIgKyBiYXNl YWRkcikgJiBtYXNrOworKyAgICB9CisrCisrICByZXR2YWwgPSBidWlsZF9zZWN0aW9uX2FkZHJf aW5mb19mcm9tX3NlY3Rpb25fdGFibGUgKHNlY3Rpb25zLCBzZWN0aW9uc19lbmQpOworKworKyAg ZG9fY2xlYW51cHMgKG15X2NsZWFudXBzKTsKKysKKysgIHJldHVybiByZXR2YWw7CisrfQorKwor Ky8qIFN0b3JlIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyBhcyBwcmVwYXJlZCAobWFkZSByZWxh dGl2ZSBhbmQgd2l0aCBTRUNUSU5ERVgKKysgICBmaWxsZWQtaW4pIGJ5IGFkZHJfaW5mb19tYWtl X3JlbGF0aXZlIGludG8gU0VDVElPTl9PRkZTRVRTIG9mIE5VTV9TRUNUSU9OUworKyAgIGVudHJp ZXMuICAqLworIAorIHZvaWQKKy1kZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCistCQkJIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMpCisrcmVs YXRpdmVfYWRkcl9pbmZvX3RvX3NlY3Rpb25fb2Zmc2V0cyAoc3RydWN0IHNlY3Rpb25fb2Zmc2V0 cyAqc2VjdGlvbl9vZmZzZXRzLAorKwkJCQkgICAgICAgaW50IG51bV9zZWN0aW9ucywKKysJCQkJ ICAgICAgIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMpCisgeworICAgaW50IGk7Cisg CistICBvYmpmaWxlLT5udW1fc2VjdGlvbnMgPSBiZmRfY291bnRfc2VjdGlvbnMgKG9iamZpbGUt Pm9iZmQpOworLSAgb2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzID0gKHN0cnVjdCBzZWN0aW9uX29m ZnNldHMgKikKKy0gICAgb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywK Ky0JCSAgIFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUyAob2JqZmlsZS0+bnVtX3NlY3Rpb25zKSk7 CistICBtZW1zZXQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgMCwKKy0JICBTSVpFT0ZfTl9T RUNUSU9OX09GRlNFVFMgKG9iamZpbGUtPm51bV9zZWN0aW9ucykpOworKyAgbWVtc2V0IChzZWN0 aW9uX29mZnNldHMsIDAsIFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUyAobnVtX3NlY3Rpb25zKSk7 CisgCistICAvKiBOb3cgY2FsY3VsYXRlIG9mZnNldHMgZm9yIHNlY3Rpb24gdGhhdCB3ZXJlIHNw ZWNpZmllZCBieSB0aGUKKy0gICAgIGNhbGxlci4gKi8KKysgIC8qIE5vdyBjYWxjdWxhdGUgb2Zm c2V0cyBmb3Igc2VjdGlvbiB0aGF0IHdlcmUgc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIuICovCisg ICBmb3IgKGkgPSAwOyBpIDwgYWRkcnMtPm51bV9zZWN0aW9ucyAmJiBhZGRycy0+b3RoZXJbaV0u bmFtZTsgaSsrKQorICAgICB7CistICAgICAgc3RydWN0IG90aGVyX3NlY3Rpb25zICpvc3AgOwor KyAgICAgIHN0cnVjdCBvdGhlcl9zZWN0aW9ucyAqb3NwOworIAorLSAgICAgIG9zcCA9ICZhZGRy cy0+b3RoZXJbaV0gOworKyAgICAgIG9zcCA9ICZhZGRycy0+b3RoZXJbaV07CisgICAgICAgaWYg KG9zcC0+YWRkciA9PSAwKQorICAgCWNvbnRpbnVlOworIAorICAgICAgIC8qIFJlY29yZCBhbGwg c2VjdGlvbnMgaW4gb2Zmc2V0cyAqLworICAgICAgIC8qIFRoZSBzZWN0aW9uX29mZnNldHMgaW4g dGhlIG9iamZpbGUgYXJlIGhlcmUgZmlsbGVkIGluIHVzaW5nCisgICAgICAgICAgdGhlIEJGRCBp bmRleC4gKi8KKy0gICAgICAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzKS0+b2Zmc2V0c1tvc3At PnNlY3RpbmRleF0gPSBvc3AtPmFkZHI7CisrICAgICAgc2VjdGlvbl9vZmZzZXRzLT5vZmZzZXRz W29zcC0+c2VjdGluZGV4XSA9IG9zcC0+YWRkcjsKKysgICAgfQorK30KKysKKysvKiBSZWxhdGl2 aXplIGFic29sdXRlIGFkZHJlc3NlcyBpbiBBRERSUyBpbnRvIG9mZnNldHMgYmFzZWQgb24gQUJG RC4gIEZpbGwtaW4KKysgICBhbHNvIFNFQ1RJTkRFWGVzIHRoZXJlLiAgKi8KKysKKyt2b2lkCisr YWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgKHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMs IGJmZCAqYWJmZCkKKyt7CisrICBhc2VjdGlvbiAqbG93ZXJfc2VjdDsKKysgIGFzZWN0aW9uICpz ZWN0OworKyAgQ09SRV9BRERSIGxvd2VyX29mZnNldDsKKysgIGludCBpOworKworKyAgLyogRmlu ZCBsb3dlc3QgbG9hZGFibGUgc2VjdGlvbiB0byBiZSB1c2VkIGFzIHN0YXJ0aW5nIHBvaW50IGZv cgorKyAgICAgY29udGluZ3VvdXMgc2VjdGlvbnMuIEZJWE1FISEgd29uJ3Qgd29yayB3aXRob3V0 IGNhbGwgdG8gZmluZAorKyAgICAgLnRleHQgZmlyc3QsIGJ1dCB0aGlzIGFzc3VtZXMgdGV4dCBp cyBsb3dlc3Qgc2VjdGlvbi4gKi8KKysgIGxvd2VyX3NlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlf bmFtZSAoYWJmZCwgIi50ZXh0Iik7CisrICBpZiAobG93ZXJfc2VjdCA9PSBOVUxMKQorKyAgICBi ZmRfbWFwX292ZXJfc2VjdGlvbnMgKGFiZmQsIGZpbmRfbG93ZXN0X3NlY3Rpb24sICZsb3dlcl9z ZWN0KTsKKysgIGlmIChsb3dlcl9zZWN0ID09IE5VTEwpCisrICAgIHsKKysgICAgICB3YXJuaW5n IChfKCJubyBsb2FkYWJsZSBzZWN0aW9ucyBmb3VuZCBpbiBhZGRlZCBzeW1ib2wtZmlsZSAlcyIp LAorKwkgICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOworKyAgICAgIGxvd2VyX29mZnNl dCA9IDA7CisrICAgIH0KKysgIGVsc2UKKysgICAgbG93ZXJfb2Zmc2V0ID0gYmZkX3NlY3Rpb25f dm1hIChiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwgbG93ZXJfc2VjdCk7CisrCisrICAvKiBDYWxj dWxhdGUgb2Zmc2V0cyBmb3IgdGhlIGxvYWRhYmxlIHNlY3Rpb25zLgorKyAgICAgRklYTUUhIFNl Y3Rpb25zIG11c3QgYmUgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBsb2FkYWJsZSBzZWN0aW9uCisr ICAgICBzbyB0aGF0IGNvbnRpZ3VvdXMgc2VjdGlvbnMgY2FuIHVzZSB0aGUgbG93ZXItb2Zmc2V0 ISEhCisrCisrICAgICBBZGp1c3Qgb2Zmc2V0cyBpZiB0aGUgc2VnbWVudHMgYXJlIG5vdCBjb250 aWd1b3VzLgorKyAgICAgSWYgdGhlIHNlY3Rpb24gaXMgY29udGlndW91cywgaXRzIG9mZnNldCBz aG91bGQgYmUgc2V0IHRvCisrICAgICB0aGUgb2Zmc2V0IG9mIHRoZSBoaWdoZXN0IGxvYWRhYmxl IHNlY3Rpb24gbG93ZXIgdGhhbiBpdAorKyAgICAgKHRoZSBsb2FkYWJsZSBzZWN0aW9uIGRpcmVj dGx5IGJlbG93IGl0IGluIG1lbW9yeSkuCisrICAgICB0aGlzX29mZnNldCA9IGxvd2VyX29mZnNl dCA9IGxvd2VyX2FkZHIgLSBsb3dlcl9vcmlnX2FkZHIgKi8KKysKKysgIGZvciAoaSA9IDA7IGkg PCBhZGRycy0+bnVtX3NlY3Rpb25zICYmIGFkZHJzLT5vdGhlcltpXS5uYW1lOyBpKyspCisrICAg IHsKKysgICAgICBpZiAoYWRkcnMtPm90aGVyW2ldLmFkZHIgIT0gMCkKKysJeworKwkgIHNlY3Qg PSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgYWRkcnMtPm90aGVyW2ldLm5hbWUpOwor KwkgIGlmIChzZWN0KQorKwkgICAgeworKwkgICAgICBhZGRycy0+b3RoZXJbaV0uYWRkciAtPSBi ZmRfc2VjdGlvbl92bWEgKGFiZmQsIHNlY3QpOworKwkgICAgICBsb3dlcl9vZmZzZXQgPSBhZGRy cy0+b3RoZXJbaV0uYWRkcjsKKysJICAgICAgLyogVGhpcyBpcyB0aGUgaW5kZXggdXNlZCBieSBC RkQuICovCisrCSAgICAgIGFkZHJzLT5vdGhlcltpXS5zZWN0aW5kZXggPSBzZWN0LT5pbmRleDsK KysJICAgIH0KKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIHdhcm5pbmcgKF8oInNlY3Rpb24g JXMgbm90IGZvdW5kIGluICVzIiksIGFkZHJzLT5vdGhlcltpXS5uYW1lLAorKwkJICAgICAgIGJm ZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKKysJICAgICAgYWRkcnMtPm90aGVyW2ldLmFkZHIgPSAw OworKwkgICAgfQorKwl9CisrICAgICAgZWxzZQorKwlhZGRycy0+b3RoZXJbaV0uYWRkciA9IGxv d2VyX29mZnNldDsKKyAgICAgfQorK30KKysKKysvKiBQYXJzZSB0aGUgdXNlcidzIGlkZWEgb2Yg YW4gb2Zmc2V0IGZvciBkeW5hbWljIGxpbmtpbmcsIGludG8gb3VyIGlkZWEKKysgICBvZiBob3cg dG8gcmVwcmVzZW50IGl0IGZvciBmYXN0IHN5bWJvbCByZWFkaW5nLiAgVGhpcyBpcyB0aGUgZGVm YXVsdAorKyAgIHZlcnNpb24gb2YgdGhlIHN5bV9mbnMuc3ltX29mZnNldHMgZnVuY3Rpb24gZm9y IHN5bWJvbCByZWFkZXJzIHRoYXQKKysgICBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIHNwZWNp YWwuICBJdCBhbGxvY2F0ZXMgYSBzZWN0aW9uX29mZnNldHMgdGFibGUKKysgICBmb3IgdGhlIG9i amVjdGZpbGUgT0JKRklMRSBhbmQgc3R1ZmZzIEFERFIgaW50byBhbGwgb2YgdGhlIG9mZnNldHMu ICAqLworKworK3ZvaWQKKytkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cyAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisrCQkJIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMpCisreworKyAg b2JqZmlsZS0+bnVtX3NlY3Rpb25zID0gYmZkX2NvdW50X3NlY3Rpb25zIChvYmpmaWxlLT5vYmZk KTsKKysgIG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cyA9IChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRz ICopCisrICAgIG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrCQkg ICBTSVpFT0ZfTl9TRUNUSU9OX09GRlNFVFMgKG9iamZpbGUtPm51bV9zZWN0aW9ucykpOworKyAg cmVsYXRpdmVfYWRkcl9pbmZvX3RvX3NlY3Rpb25fb2Zmc2V0cyAob2JqZmlsZS0+c2VjdGlvbl9v ZmZzZXRzLAorKwkJCQkJIG9iamZpbGUtPm51bV9zZWN0aW9ucywgYWRkcnMpOworIAorICAgLyog Rm9yIHJlbG9jYXRhYmxlIGZpbGVzLCBhbGwgbG9hZGFibGUgc2VjdGlvbnMgd2lsbCBzdGFydCBh dCB6ZXJvLgorICAgICAgVGhlIHplcm8gaXMgbWVhbmluZ2xlc3MsIHNvIHRyeSB0byBwaWNrIGFy Yml0cmFyeSBhZGRyZXNzZXMgc3VjaAorQEAgLTgwMyw2NSArOTE0LDggQEAgc3ltc19mcm9tX29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAorICAgICAgV2Ugbm8gbG9uZ2VyIHdh cm4gaWYgdGhlIGxvd2VzdCBzZWN0aW9uIGlzIG5vdCBhIHRleHQgc2VnbWVudCAoYXMKKyAgICAg IGhhcHBlbnMgZm9yIHRoZSBQQTY0IHBvcnQuICAqLworLSAgaWYgKCFtYWlubGluZSAmJiBhZGRy cyAmJiBhZGRycy0+b3RoZXJbMF0ubmFtZSkKKy0gICAgeworLSAgICAgIGFzZWN0aW9uICpsb3dl cl9zZWN0OworLSAgICAgIGFzZWN0aW9uICpzZWN0OworLSAgICAgIENPUkVfQUREUiBsb3dlcl9v ZmZzZXQ7CistICAgICAgaW50IGk7CistCistICAgICAgLyogRmluZCBsb3dlc3QgbG9hZGFibGUg c2VjdGlvbiB0byBiZSB1c2VkIGFzIHN0YXJ0aW5nIHBvaW50IGZvcgorLSAgICAgICAgIGNvbnRp bmd1b3VzIHNlY3Rpb25zLiBGSVhNRSEhIHdvbid0IHdvcmsgd2l0aG91dCBjYWxsIHRvIGZpbmQK Ky0JIC50ZXh0IGZpcnN0LCBidXQgdGhpcyBhc3N1bWVzIHRleHQgaXMgbG93ZXN0IHNlY3Rpb24u ICovCistICAgICAgbG93ZXJfc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxl LT5vYmZkLCAiLnRleHQiKTsKKy0gICAgICBpZiAobG93ZXJfc2VjdCA9PSBOVUxMKQorLQliZmRf bWFwX292ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGZpbmRfbG93ZXN0X3NlY3Rpb24sCist CQkJICAgICAgICZsb3dlcl9zZWN0KTsKKy0gICAgICBpZiAobG93ZXJfc2VjdCA9PSBOVUxMKQor LQl7CistCSAgd2FybmluZyAoXygibm8gbG9hZGFibGUgc2VjdGlvbnMgZm91bmQgaW4gYWRkZWQg c3ltYm9sLWZpbGUgJXMiKSwKKy0JCSAgIG9iamZpbGUtPm5hbWUpOworLQkgIGxvd2VyX29mZnNl dCA9IDA7CistCX0KKy0gICAgICBlbHNlCistCWxvd2VyX29mZnNldCA9IGJmZF9zZWN0aW9uX3Zt YSAob2JqZmlsZS0+b2JmZCwgbG93ZXJfc2VjdCk7CistCistICAgICAgLyogQ2FsY3VsYXRlIG9m ZnNldHMgZm9yIHRoZSBsb2FkYWJsZSBzZWN0aW9ucy4KKy0gCSBGSVhNRSEgU2VjdGlvbnMgbXVz dCBiZSBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIGxvYWRhYmxlIHNlY3Rpb24KKy0gCSBzbyB0aGF0 IGNvbnRpZ3VvdXMgc2VjdGlvbnMgY2FuIHVzZSB0aGUgbG93ZXItb2Zmc2V0ISEhCistCistICAg ICAgICAgQWRqdXN0IG9mZnNldHMgaWYgdGhlIHNlZ21lbnRzIGFyZSBub3QgY29udGlndW91cy4K Ky0gICAgICAgICBJZiB0aGUgc2VjdGlvbiBpcyBjb250aWd1b3VzLCBpdHMgb2Zmc2V0IHNob3Vs ZCBiZSBzZXQgdG8KKy0gCSB0aGUgb2Zmc2V0IG9mIHRoZSBoaWdoZXN0IGxvYWRhYmxlIHNlY3Rp b24gbG93ZXIgdGhhbiBpdAorLSAJICh0aGUgbG9hZGFibGUgc2VjdGlvbiBkaXJlY3RseSBiZWxv dyBpdCBpbiBtZW1vcnkpLgorLSAJIHRoaXNfb2Zmc2V0ID0gbG93ZXJfb2Zmc2V0ID0gbG93ZXJf YWRkciAtIGxvd2VyX29yaWdfYWRkciAqLworLQorLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGFk ZHJzLT5udW1fc2VjdGlvbnMgJiYgYWRkcnMtPm90aGVyW2ldLm5hbWU7IGkrKykKKy0gICAgICAg ICAgeworLSAgICAgICAgICAgIGlmIChhZGRycy0+b3RoZXJbaV0uYWRkciAhPSAwKQorLSAgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICBzZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25h bWUgKG9iamZpbGUtPm9iZmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWRkcnMtPm90aGVyW2ldLm5hbWUpOworLSAgICAgICAgICAgICAgICBpZiAo c2VjdCkKKy0gICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBhZGRycy0+ b3RoZXJbaV0uYWRkcgorLSAgICAgICAgICAgICAgICAgICAgICAtPSBiZmRfc2VjdGlvbl92bWEg KG9iamZpbGUtPm9iZmQsIHNlY3QpOworLSAgICAgICAgICAgICAgICAgICAgbG93ZXJfb2Zmc2V0 ID0gYWRkcnMtPm90aGVyW2ldLmFkZHI7CistICAgICAgICAgICAgICAgICAgICAvKiBUaGlzIGlz IHRoZSBpbmRleCB1c2VkIGJ5IEJGRC4gKi8KKy0gICAgICAgICAgICAgICAgICAgIGFkZHJzLT5v dGhlcltpXS5zZWN0aW5kZXggPSBzZWN0LT5pbmRleCA7CistICAgICAgICAgICAgICAgICAgfQor LSAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAg ICAgICAgICAgd2FybmluZyAoXygic2VjdGlvbiAlcyBub3QgZm91bmQgaW4gJXMiKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJzLT5vdGhlcltpXS5uYW1lLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2JqZmlsZS0+bmFtZSk7CistICAgICAgICAgICAgICAgICAg ICBhZGRycy0+b3RoZXJbaV0uYWRkciA9IDA7CistICAgICAgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgIGFkZHJzLT5vdGhl cltpXS5hZGRyID0gbG93ZXJfb2Zmc2V0OworLSAgICAgICAgICB9CistICAgIH0KKysgIGlmIChh ZGRycyAmJiBhZGRycy0+b3RoZXJbMF0ubmFtZSkKKysgICAgYWRkcl9pbmZvX21ha2VfcmVsYXRp dmUgKGFkZHJzLCBvYmpmaWxlLT5vYmZkKTsKKyAKKyAgIC8qIEluaXRpYWxpemUgc3ltYm9sIHJl YWRpbmcgcm91dGluZXMgZm9yIHRoaXMgb2JqZmlsZSwgYWxsb3cgY29tcGxhaW50cyB0bworICAg ICAgYXBwZWFyIGZvciB0aGlzIG5ldyBmaWxlLCBhbmQgcmVjb3JkIGhvdyB2ZXJib3NlIHRvIGJl LCB0aGVuIGRvIHRoZQorQEAgLTk1OSw3ICsxMDEzLDYgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhf YWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAorICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7 CisgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10YWI7CisgICBjaGFyICpkZWJ1Z2ZpbGUg PSBOVUxMOworLSAgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICpvcmlnX2FkZHJzID0gTlVMTDsK KyAgIHN0cnVjdCBjbGVhbnVwICpteV9jbGVhbnVwczsKKyAgIGNvbnN0IGNoYXIgKm5hbWUgPSBi ZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKKyAgIGNvbnN0IGludCBmcm9tX3R0eSA9IGFkZF9mbGFn cyAmIFNZTUZJTEVfVkVSQk9TRTsKK0BAIC05ODEsMTIgKzEwMzQsNiBAQCBzeW1ib2xfZmlsZV9h ZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFiZmQsCisgICAgIG9iamZpbGUtPmZsYWdz IHw9IE9CSkZfTUFJTjsKKyAgIGRpc2NhcmRfY2xlYW51cHMgKG15X2NsZWFudXBzKTsKKyAKKy0g IGlmIChhZGRycykKKy0gICAgeworLSAgICAgIG9yaWdfYWRkcnMgPSBjb3B5X3NlY3Rpb25fYWRk cl9pbmZvIChhZGRycyk7CistICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfc2VjdGlvbl9hZGRyX2lu Zm8gKG9yaWdfYWRkcnMpOworLSAgICB9CistCisgICAvKiBXZSBlaXRoZXIgY3JlYXRlZCBhIG5l dyBtYXBwZWQgc3ltYm9sIHRhYmxlLCBtYXBwZWQgYW4gZXhpc3RpbmcKKyAgICAgIHN5bWJvbCB0 YWJsZSBmaWxlIHdoaWNoIGhhcyBub3QgaGFkIGluaXRpYWwgc3ltYm9sIHJlYWRpbmcKKyAgICAg IHBlcmZvcm1lZCwgb3IgbmVlZCB0byByZWFkIGFuIHVubWFwcGVkIHN5bWJvbCB0YWJsZS4gKi8K K0BAIC0xMDMzLDE4ICsxMDgwLDE3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29m ZnNldHMgKGJmZCAqYWJmZCwKKyAgICAgIGAuZ251X2RlYnVnbGluaycgbWF5IG5vIGxvbmdlciBi ZSBwcmVzZW50IHdpdGggYC5ub3RlLmdudS5idWlsZC1pZCcuICAqLworICAgaWYgKCFoYXNfYW55 X2RlYnVnX3N5bWJvbHMgKG9iamZpbGUpKQorICAgICBkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGUgKG9iamZpbGUpOworKworICAgaWYgKGRlYnVnZmlsZSkKKyAgICAgeworLSAg ICAgIGlmIChhZGRycyAhPSBOVUxMKQorLQl7CistCSAgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdf b2JqZmlsZQorLSAgICAgICAgICAgID0gc3ltYm9sX2ZpbGVfYWRkIChkZWJ1Z2ZpbGUsIGFkZF9m bGFncywgb3JpZ19hZGRycywgZmxhZ3MpOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAgb2Jq ZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZQorLSAgICAgICAgICAgID0gc3ltYm9sX2ZpbGVf YWRkIChkZWJ1Z2ZpbGUsIGFkZF9mbGFncywgTlVMTCwgZmxhZ3MpOworLQl9CisrICAgICAgc3Ry dWN0IHNlY3Rpb25fYWRkcl9pbmZvICpvYmpmaWxlX2FkZHJzOworKworKyAgICAgIG9iamZpbGVf YWRkcnMgPSBidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX29iamZpbGUgKG9iamZpbGUpOwor KyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG9iamZpbGVfYWRkcnMpOworKworKyAgICAgIG9i amZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgPSBzeW1ib2xfZmlsZV9hZGQgKGRlYnVnZmls ZSwgYWRkX2ZsYWdzLAorKwkJCQkJCQkgb2JqZmlsZV9hZGRycywgZmxhZ3MpOworKworICAgICAg IG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVf YmFja2xpbmsKKyAgICAgICAgID0gb2JqZmlsZTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvc3ltZmls ZS5oIGIvZ2RiL3N5bWZpbGUuaAoraW5kZXggYmY5ZDllNy4uYmZmNmJkOCAxMDA2NDQKKy0tLSBh L2dkYi9zeW1maWxlLmgKKysrKyBiL2dkYi9zeW1maWxlLmgKK0BAIC0xODEsNiArMTgxLDE2IEBA IHN0cnVjdCBzeW1fZm5zCisgCisgfTsKKyAKKytleHRlcm4gc3RydWN0IHNlY3Rpb25fYWRkcl9p bmZvICoKKysJCSBidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKTsKKysKKytleHRlcm4gdm9pZCByZWxhdGl2ZV9hZGRyX2luZm9fdG9f c2VjdGlvbl9vZmZzZXRzCisrICAoc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqc2VjdGlvbl9vZmZz ZXRzLCBpbnQgbnVtX3NlY3Rpb25zLAorKyAgIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRk cnMpOworKworK2V4dGVybiB2b2lkIGFkZHJfaW5mb19tYWtlX3JlbGF0aXZlIChzdHJ1Y3Qgc2Vj dGlvbl9hZGRyX2luZm8gKmFkZHJzLAorKwkJCQkgICAgIGJmZCAqYWJmZCk7CisrCisgLyogVGhl IGRlZmF1bHQgdmVyc2lvbiBvZiBzeW1fZm5zLnN5bV9vZmZzZXRzIGZvciByZWFkZXJzIHRoYXQg ZG9uJ3QKKyAgICBkbyBhbnl0aGluZyBzcGVjaWFsLiAgKi8KKyAKK2RpZmYgLS1naXQgYS9nZGIv c3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKK2luZGV4IDgyZTAxNjMuLjAxMTE3ZTMgMTAwNjQ0Cist LS0gYS9nZGIvc3ltdGFiLmMKKysrKyBiL2dkYi9zeW10YWIuYworQEAgLTE0NDksNyArMTQ0OSwx MiBAQCBsb29rdXBfb2JqZmlsZV9mcm9tX2Jsb2NrIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2Nr KQorICAgLyogR28gdGhyb3VnaCBTWU1UQUJTLiAgKi8KKyAgIEFMTF9TWU1UQUJTIChvYmosIHMp CisgICAgIGlmIChibG9jayA9PSBCTE9DS1ZFQ1RPUl9CTE9DSyAoQkxPQ0tWRUNUT1IgKHMpLCBH TE9CQUxfQkxPQ0spKQorLSAgICAgIHJldHVybiBvYmo7CisrICAgICAgeworKwlpZiAob2JqLT5z ZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rKQorKwkgIG9iaiA9IG9iai0+c2VwYXJhdGVf ZGVidWdfb2JqZmlsZV9iYWNrbGluazsKKysKKysJcmV0dXJuIG9iajsKKysgICAgICB9CisgCisg ICByZXR1cm4gTlVMTDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i cmVhay1pbnRlcnAtbGliLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC1s aWIuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjljYTk0M2UKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLWxpYi5j CitAQCAtMCwwICsxLDQwIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisrCisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVk ZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisrdm9pZAorK2xpYmZ1bmMgKGNv bnN0IGNoYXIgKmFjdGlvbikKKyt7CisrICBhc3NlcnQgKGFjdGlvbiAhPSBOVUxMKTsKKysKKysg IGlmIChzdHJjbXAgKGFjdGlvbiwgInNlZ3YiKSA9PSAwKQorKyAgICByYWlzZSAoU0lHU0VHVik7 CisrCisrICBpZiAoc3RyY21wIChhY3Rpb24sICJzbGVlcCIpID09IDApCisrICAgIHsKKysgICAg ICBwdXRzICgic2xlZXBpbmciKTsKKysgICAgICBmZmx1c2ggKHN0ZG91dCk7CisrCisrICAgICAg c2xlZXAgKDYwKTsKKysgICAgfQorKworKyAgYXNzZXJ0ICgwKTsKKyt9CitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbWFpbi5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbWFpbi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uZTEyZWMyYgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9icmVhay1pbnRlcnAtbWFpbi5jCitAQCAtMCwwICsxLDMwIEBACisrLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKwor K2V4dGVybiB2b2lkIGxpYmZ1bmMgKGNvbnN0IGNoYXIgKmFjdGlvbik7CisrCisraW50CisrbWFp biAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgIGFzc2VydCAoYXJnYyA9PSAyKTsKKysK KysgIGxpYmZ1bmMgKGFyZ3ZbMV0pOworKworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjUyZjQ2MGMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYnJlYWstaW50ZXJwLmV4cAorQEAgLTAsMCArMSw1NDUgQEAKKysjIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysKKysjIFRoaXMgdGVzdCBvbmx5IHdvcmtzIG9uIEdOVS9MaW51eC4KKytpZiB7 ICFbaXNuYXRpdmVdIHx8IFtpc19yZW1vdGUgaG9zdF0gfHwgIVtpc3RhcmdldCAqLWxpbnV4Kl0g fHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7CisrICAgIGNvbnRpbnVlCisrfQorKworK3NldCB0ZXN0 ICJicmVhay1pbnRlcnAiCisrc2V0IGJpbnByZWZpeCAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dH0KKysjIE9ubHkgdG8gZ2V0IHRoZSAkaW50ZXJwX3N5c3RlbSBuYW1lLgorK3NldCBzcmNmaWxl X3Rlc3QgInN0YXJ0LmMiCisrc2V0IGJpbmZpbGVfdGVzdCAke3Rlc3R9LXRlc3QKKytzZXQgYmlu ZmlsZV9saWIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9LnNvCisrc2V0IHNyY2ZpbGUgIiR7 dGVzdH0tbWFpbi5jIgorK3NldCBzcmNmaWxlX2xpYiAiJHt0ZXN0fS1saWIuYyIKKysKKytpZiBb Z2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlX2xpYn1dIHsKKysgICAgcmV0dXJuIC0xCisrfQor KworKyMgVXNlIC1zb25hbWUgc28gdGhhdCBpdCBpcyBsaXN0ZWQgd2l0aCAiID0+ICIgYnkgbGRk IGFuZCB0aGlzIHRlc3RjYXNlIG1ha2VzCisrIyBhIGNvcHkgb2YgJHtiaW5maWxlX2xpYn0gZm9y IGVhY2ggcHJlbGluayB2YXJpYW50LgorKworK2lmIHtbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBh ZGRpdGlvbmFsX2ZsYWdzPS1XbCwtc29uYW1lLCR7dGVzdH0uc29dXSAhPSAiIn0geworKyAgICBy ZXR1cm4gLTEKKyt9CisrCisraWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdH0uZXhwICRiaW5m aWxlX3Rlc3QgJHtzcmNmaWxlX3Rlc3R9IHt9XSA9PSAtMX0geworKyAgICByZXR1cm4gLTEKKyt9 CisrCisrIyBSZXR1cm4gdGhlIGludGVycHJldGVyIGZpbGVuYW1lIHN0cmluZy4KKysjIFJldHVy biAiIiBpZiBubyBpbnRlcnByZXRlciB3YXMgZm91bmQuCisrcHJvYyBzZWN0aW9uX2dldCB7ZXhl YyBzZWN0aW9ufSB7CisrICAgIGdsb2JhbCBvYmpkaXIKKysgICAgZ2xvYmFsIHN1YmRpcgorKyAg ICBzZXQgdG1wICIke29iamRpcn0vJHtzdWJkaXJ9L2JyZWFrLWludGVycC5pbnRlcnAiCisrICAg IHNldCBvYmpjb3B5X3Byb2dyYW0gW3RyYW5zZm9ybSBvYmpjb3B5XQorKworKyAgICBzZXQgY29t bWFuZCAiZXhlYyAkb2JqY29weV9wcm9ncmFtIC1PIGJpbmFyeSAtLXNldC1zZWN0aW9uLWZsYWdz ICRzZWN0aW9uPUEgLS1jaGFuZ2Utc2VjdGlvbi1hZGRyZXNzICRzZWN0aW9uPTAgLWogJHNlY3Rp b24gJGV4ZWMgJHRtcCIKKysgICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgor KyAgICBzZXQgcmVzdWx0IFtjYXRjaCAkY29tbWFuZCBvdXRwdXRdCisrICAgIHZlcmJvc2UgLWxv ZyAicmVzdWx0IGlzICRyZXN1bHQiCisrICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRw dXQiCisrICAgIGlmIHskcmVzdWx0ID09IDF9IHsKKysJcmV0dXJuICIiCisrICAgIH0KKysgICAg c2V0IGZpIFtvcGVuICR0bXBdCisrICAgIGZjb25maWd1cmUgJGZpIC10cmFuc2xhdGlvbiBiaW5h cnkKKysgICAgc2V0IGRhdGEgW3JlYWQgJGZpXQorKyAgICBjbG9zZSAkZmkKKysgICAgI2ZpbGUg ZGVsZXRlICR0bXAKKysgICAgIyAuaW50ZXJwIGhhcyBzaXplICRsZW4gKyAxIGJ1dCAuZ251X2Rl YnVnbGluayBjb250YWlucyBnYXJiYWdlIGFmdGVyIFwwMDAuCisrICAgIHNldCBsZW4gW3N0cmlu ZyBmaXJzdCBcMDAwICRkYXRhXQorKyAgICBpZiB7JGxlbiA8IDB9IHsKKysJdmVyYm9zZSAtbG9n ICJzZWN0aW9uICRzZWN0aW9uIG5vdCBmb3VuZCIKKysJcmV0dXJuICIiCisrICAgIH0KKysgICAg c2V0IHJldHZhbCBbc3RyaW5nIHJhbmdlICRkYXRhIDAgW2V4cHIgJGxlbiAtIDFdXQorKyAgICB2 ZXJib3NlIC1sb2cgInNlY3Rpb24gJHNlY3Rpb24gaXMgPCRyZXR2YWw+IgorKyAgICByZXR1cm4g JHJldHZhbAorK30KKysKKysjIE5vdGU6IFRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGUgY29u dGVudCBidWlsZC1pZC9jcmMzMiBhcmUgbm90IHZlcmlmaWVkCisrIyBjb250cmFyeSB0byB0aGUg R0RCIHNlYXJjaCBhbGdvcml0aG0gc2tpcHBpbmcgbm9uLW1hdGNoaW5nIG9uZXMuCisrcHJvYyBz eXN0ZW1fZGVidWdfZ2V0IHtleGVjfSB7CisrICAgIGdsb2JhbCBkZWJ1Z19yb290CisrCisrICAg IHNldCBleGVjX2J1aWxkX2lkX2RlYnVnIFtidWlsZF9pZF9kZWJ1Z19maWxlbmFtZV9nZXQgJGV4 ZWNdCisrICAgIHNldCBkZWJ1Z19iYXNlICJbZmlsZSB0YWlsICRleGVjXS5kZWJ1ZyIKKysgICAg c2V0IGV4ZWNfZGlyIFtmaWxlIGRpcm5hbWUgJGV4ZWNdCisrCisrICAgICMgaXNmaWxlIHJldHVy bnMgMSBldmVuIGZvciBzeW1saW5rcyB0byBmaWxlcy4KKysgICAgc2V0IHJldHZhbCAkZGVidWdf cm9vdC8kZXhlY19idWlsZF9pZF9kZWJ1ZworKyAgICBpZiBbZmlsZSBpc2ZpbGUgJHJldHZhbF0g eworKwlyZXR1cm4gJHJldHZhbAorKyAgICB9CisrICAgIHNldCByZXR2YWwgJGV4ZWNfZGlyLyRk ZWJ1Z19iYXNlCisrICAgIGlmIFtmaWxlIGlzZmlsZSAkcmV0dmFsXSB7CisrCXJldHVybiAkcmV0 dmFsCisrICAgIH0KKysgICAgc2V0IHJldHZhbCAkZXhlY19kaXIvLmRlYnVnLyRkZWJ1Z19iYXNl CisrICAgIGlmIFtmaWxlIGlzZmlsZSAkcmV0dmFsXSB7CisrCXJldHVybiAkcmV0dmFsCisrICAg IH0KKysgICAgc2V0IHJldHZhbCAkZGVidWdfcm9vdC8kZXhlY19kaXIvJGRlYnVnX2Jhc2UKKysg ICAgaWYgW2ZpbGUgaXNmaWxlICRyZXR2YWxdIHsKKysJcmV0dXJuICRyZXR2YWwKKysgICAgfQor KyAgICByZXR1cm4gIiIKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytzZXQgZGVidWdf cm9vdCAiIgorK3NldCB0ZXN0ICJzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5IgorK2dkYl90ZXN0 X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJUaGUgZGlyZWN0b3J5IHdoZXJlIHNl cGFyYXRlIGRlYnVnIHN5bWJvbHMgYXJlIHNlYXJjaGVkIGZvciBpcyBcIiguKilcIi5cclxuJGdk Yl9wcm9tcHQgJCIgeworKwlzZXQgZGVidWdfcm9vdCAkZXhwZWN0X291dCgxLHN0cmluZykKKysg ICAgfQorK30KKysKKytzZXQgaW50ZXJwX3N5c3RlbSBbc2VjdGlvbl9nZXQgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8kYmluZmlsZV90ZXN0IC5pbnRlcnBdCisrc2V0IGludGVycF9zeXN0ZW1fZGVidWcg W3N5c3RlbV9kZWJ1Z19nZXQgJGludGVycF9zeXN0ZW1dCisrdmVyYm9zZSAtbG9nICIkaW50ZXJw X3N5c3RlbSBoYXMgZGVidWcgJGludGVycF9zeXN0ZW1fZGVidWciCisrCisrcHJvYyBwcmVsaW5r Tk9fcnVuIHthcmd9IHsKKysgICAgc2V0IGNvbW1hbmQgImV4ZWMgL3Vzci9zYmluL3ByZWxpbmsg LXVOICRhcmciCisrICAgIHZlcmJvc2UgLWxvZyAiY29tbWFuZCBpcyAkY29tbWFuZCIKKysgICAg c2V0IHJlc3VsdCBbY2F0Y2ggJGNvbW1hbmQgb3V0cHV0XQorKyAgICB2ZXJib3NlIC1sb2cgInJl c3VsdCBpcyAkcmVzdWx0IgorKyAgICB2ZXJib3NlIC1sb2cgIm91dHB1dCBpcyAkb3V0cHV0Igor KyAgICByZXR1cm4gW2xpc3QgJHJlc3VsdCAkb3V0cHV0XQorK30KKysKKytwcm9jIHByZWxpbmtO TyB7YXJnIHtuYW1lIHt9fX0geworKyAgICBpZiB7JG5hbWUgPT0gIiJ9IHsKKysJc2V0IG5hbWUg W2ZpbGUgdGFpbCAkYXJnXQorKyAgICB9CisrICAgIHNldCB0ZXN0ICJ1bnByZWxpbmsgJG5hbWUi CisrICAgIHNldCBydW4gW3ByZWxpbmtOT19ydW4gJGFyZ10KKysgICAgc2V0IHJlc3VsdCBbbGlu ZGV4ICRydW4gMF0KKysgICAgc2V0IG91dHB1dCBbbGluZGV4ICRydW4gMV0KKysgICAgaWYgeyRy ZXN1bHQgPT0gMCAmJiAkb3V0cHV0ID09ICIifSB7CisrCXZlcmJvc2UgLWxvZyAiJG5hbWUgaGFz IGJlZW4gbm93IHVucHJlbGlua2VkIgorKwlzZXQgcnVuIFtwcmVsaW5rTk9fcnVuICRhcmddCisr CXNldCByZXN1bHQgW2xpbmRleCAkcnVuIDBdCisrCXNldCBvdXRwdXQgW2xpbmRleCAkcnVuIDFd CisrICAgIH0KKysgICAgIyBMYXN0IGxpbmUgZG9lcyBtaXNzIHRoZSB0cmFpbGluZyBcbi4KKysg ICAgaWYgeyRyZXN1bHQgPT0gMSAmJiBbcmVnZXhwIHteKC91c3Ivc2Jpbi9wcmVsaW5rOiBbXiBd KiBkb2VzIG5vdCBoYXZlIC5nbnUucHJlbGlua191bmRvIHNlY3Rpb25cbj8pKiR9ICRvdXRwdXRd fSB7CisrCXBhc3MgJHRlc3QKKysJcmV0dXJuIDEKKysgICAgfSBlbHNlIHsKKysJZmFpbCAkdGVz dAorKwlyZXR1cm4gMAorKyAgICB9CisrfQorKworK3Byb2MgcHJlbGlua1lFUyB7YXJnIHtuYW1l ICIifX0geworKyAgICBpZiB7JG5hbWUgPT0gIiJ9IHsKKysJc2V0IG5hbWUgW2ZpbGUgdGFpbCAk YXJnXQorKyAgICB9CisrICAgIHNldCB0ZXN0ICJwcmVsaW5rICRuYW1lIgorKyAgICBzZXQgY29t bWFuZCAiZXhlYyAvdXNyL3NiaW4vcHJlbGluayAtcU5SIC0tbm8tZXhlYy1zaGllbGQgJGFyZyIK KysgICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgorKyAgICBzZXQgcmVzdWx0 IFtjYXRjaCAkY29tbWFuZCBvdXRwdXRdCisrICAgIHZlcmJvc2UgLWxvZyAicmVzdWx0IGlzICRy ZXN1bHQiCisrICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCisrICAgIGlmIHsk cmVzdWx0ID09IDAgJiYgJG91dHB1dCA9PSAiIn0geworKwlwYXNzICR0ZXN0CisrCXJldHVybiAx CisrICAgIH0gZWxzZSB7CisrCWZhaWwgJHRlc3QKKysJcmV0dXJuIDAKKysgICAgfQorK30KKysK KysjIFJlc29sdmUgc3ltbGlua3MuCisrcHJvYyBzeW1saW5rX3Jlc29sdmUge2ZpbGV9IHsKKysg ICAgc2V0IGxvb3AgMAorKyAgICB3aGlsZSB7W2ZpbGUgdHlwZSAkZmlsZV0gPT0gImxpbmsifSB7 CisrCXNldCB0YXJnZXQgW2ZpbGUgcmVhZGxpbmsgJGZpbGVdCisrCWlmIHtbZmlsZSBwYXRodHlw ZSAkdGFyZ2V0XSA9PSAicmVsYXRpdmUifSB7CisrCSAgICBzZXQgc3JjMiBbZmlsZSBkaXJuYW1l ICRmaWxlXS8kdGFyZ2V0CisrCX0gZWxzZSB7CisrCSAgICBzZXQgc3JjMiAkdGFyZ2V0CisrCX0K KysJdmVyYm9zZSAtbG9nICJSZXNvbHZlZCBzeW1saW5rICRmaWxlIHRhcmdldHRpbmcgJHRhcmdl dCBhcyAkc3JjMiIKKysJc2V0IGZpbGUgJHNyYzIKKysKKysJc2V0IGxvb3AgW2V4cHIgJGxvb3Ag KyAxXQorKwlpZiB7JGxvb3AgPiAzMH0geworKwkgICAgZmFpbCAiTG9vcGluZyBzeW1saW5rIHJl c29sdXRpb24gZm9yICRmaWxlIgorKwkgICAgcmV0dXJuICIiCisrCX0KKysgICAgfQorKyAgICBy ZXR1cm4gJGZpbGUKKyt9CisrCisrcHJvYyBjb3B5IHtzcmMgZGVzdH0geworKyAgICBzZXQgc3Jj IFtzeW1saW5rX3Jlc29sdmUgJHNyY10KKysgICAgIyBUZXN0IG5hbWUgd291bGQgY29udGFpbiBi dWlsZC1pZCBoYXNoIGZvciBzeW1saW5rLXVucmVzb2x2ZWQgJHNyYy4KKysgICAgc2V0IHRlc3Qg ImNvcHkgW2ZpbGUgdGFpbCAkc3JjXSB0byBbZmlsZSB0YWlsICRkZXN0XSIKKysgICAgc2V0IGNv bW1hbmQgImZpbGUgY29weSAtZm9yY2UgJHNyYyAkZGVzdCIKKysgICAgdmVyYm9zZSAtbG9nICJj b21tYW5kIGlzICRjb21tYW5kIgorKyAgICBpZiBbY2F0Y2ggJGNvbW1hbmRdIHsKKysJZmFpbCAk dGVzdAorKwlyZXR1cm4gMAorKyAgICB9IGVsc2UgeworKyAgICAJcGFzcyAkdGVzdAorKwlyZXR1 cm4gMQorKyAgICB9CisrfQorKworK3Byb2Mgc3RyaXBfZGVidWcge2Rlc3R9IHsKKysgICAgc2V0 IHRlc3QgInN0cmlwIFtmaWxlIHRhaWwgJGRlc3RdIgorKyAgICBzZXQgc3RyaXBfcHJvZ3JhbSBb dHJhbnNmb3JtIHN0cmlwXQorKyAgICBzZXQgY29tbWFuZCAiZXhlYyAkc3RyaXBfcHJvZ3JhbSAt LXN0cmlwLWRlYnVnICRkZXN0IgorKyAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQgaXMgJGNvbW1h bmQiCisrICAgIGlmIFtjYXRjaCAkY29tbWFuZF0geworKwlmYWlsICR0ZXN0CisrCXJldHVybiAw CisrICAgIH0gZWxzZSB7CisrICAgIAlwYXNzICR0ZXN0CisrCXJldHVybiAxCisrICAgIH0KKyt9 CisrCisrIyBgcnVudG8nIGRvZXMgbm90IGNoZWNrIHdlIHN0b3BwZWQgcmVhbGx5IGF0IHRoZSBm dW5jdGlvbiB3ZSBzcGVjaWZpZWQuCisrcHJvYyByZWFjaCB7ZnVuYyBjb21tYW5kfSB7CisrICAg IGdsb2JhbCBnZGJfcHJvbXB0CisrCisrICAgIGlmIFtnZGJfYnJlYWtwb2ludCAkZnVuYyBhbGxv dy1wZW5kaW5nXSB7CisrCXNldCB0ZXN0ICJyZWFjaCAkZnVuYyIKKysJZ2RiX3Rlc3RfbXVsdGlw bGUgJGNvbW1hbmQgJHRlc3QgeworKwkgICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCAkZnVu YyBcXCguKlxcKSBhdCAuKjpcWzAtOVxdK1xyXG4uKiRnZGJfcHJvbXB0ICQiIHsKKysJCXBhc3Mg JHRlc3QKKysJICAgIH0KKysJICAgIC1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFswLTl4YS1m XF0rIGluICRmdW5jIFxcKFxcKSggZnJvbSAuKik/XHJcbiRnZGJfcHJvbXB0ICQiIHsgCisrCQlw YXNzICR0ZXN0CisrCSAgICB9CisrCX0KKysgICAgfQorK30KKysKKytwcm9jIHRlc3RfY29yZSB7 ZmlsZX0geworKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBnZGJfcHJvbXB0CisrCisrICAgIHNl dCBjb3JlZmlsZSBbY29yZV9maW5kICRmaWxlIHt9ICJzZWd2Il0KKysgICAgaWYgeyRjb3JlZmls ZSA9PSAiIn0geworKwlyZXR1cm4KKysgICAgfQorKworKyAgICBnZGJfZXhpdAorKyAgICBnZGJf c3RhcnQKKysgICAgIyBDbGVhciBpdCB0byBuZXZlciBmaW5kIGFueSBzZXBhcmF0ZSBkZWJ1ZyBp bmZvcyBpbiAkZGVidWdfcm9vdC4KKysgICAgZ2RiX3Rlc3QgInNldCBkZWJ1Zy1maWxlLWRpcmVj dG9yeSIgIiIgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSBmb3IgY29yZSIKKysgICAgZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrICAgIGdkYl9sb2FkICRmaWxlCisrCisr ICAgICMgRG8gbm90IGNoZWNrIHRoZSBiaW5hcnkgZmlsZW5hbWUgYXMgaXQgbWF5IGJlIHRydW5j YXRlZC4KKysgICAgZ2RiX3Rlc3QgImNvcmUtZmlsZSAkY29yZWZpbGUiICJDb3JlIHdhcyBnZW5l cmF0ZWQgYnkgLipcclxuIzAgLioiICJjb3JlIGxvYWRlZCIKKysKKysgICAgIyBDaGVjayB0aGVy ZSBpcyBubyAiYXJnYz1jYW4ndCBjb21wdXRlIENGQSBmb3IgdGhpcyBmcmFtZSIuCisrICAgIGdk Yl90ZXN0ICJidCIgIiNcWzAtOVxdKyArXFteXHJcblxdKlxcbWxpYmZ1bmNcXE1cW15cclxuXF0q XHJcbiNcWzAtOVxdKyArXFteXHJcblxdKlxcbW1haW4gXFwoKGFyZ2M9MiwuKik/XFwpLioiICJj b3JlIG1haW4gYnQiCisrfQorKworK3Byb2MgdGVzdF9hdHRhY2gge2ZpbGV9IHsKKysgICAgZ2xv YmFsIGJvYXJkX2luZm8KKysKKysgICAgZ2RiX2V4aXQKKysKKysgICAgc2V0IHRlc3QgInNsZWVw IGZ1bmN0aW9uIHN0YXJ0ZWQiCisrCisrICAgIHNldCBjb21tYW5kICIke2ZpbGV9IHNsZWVwIgor KyAgICBzZXQgcmVzIFtyZW1vdGVfc3Bhd24gaG9zdCAkY29tbWFuZF07CisrICAgIGlmIHsgJHJl cyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsKKysJcGVycm9yICJTcGF3bmluZyAkY29tbWFuZCBmYWls ZWQuIgorKwlmYWlsICR0ZXN0CisrCXJldHVybgorKyAgICB9CisrICAgIHNldCBwaWQgW2V4cF9w aWQgLWkgJHJlc10KKysgICAgZ2RiX2V4cGVjdCB7CisrCS1yZSAic2xlZXBpbmdcclxuIiB7Cisr CSAgICBwYXNzICR0ZXN0CisrCX0KKysJZW9mIHsKKysJICAgIGZhaWwgIiR0ZXN0IChlb2YpIgor KwkgICAgcmV0dXJuCisrCX0KKysJdGltZW91dCB7CisrCSAgICBmYWlsICIkdGVzdCAodGltZW91 dCkiCisrCSAgICByZXR1cm4KKysJfQorKyAgICB9CisrCisrICAgIGdkYl9leGl0CisrICAgIGdk Yl9zdGFydAorKyAgICBnZGJfdGVzdCAiYXR0YWNoICRwaWQiICJBdHRhY2hpbmcgdG8gcHJvY2Vz cyAkcGlkXHJcbi4qIiAiYXR0YWNoIgorKyAgICAjIENoZWNrIHRoZXJlIGlzIG5vICJhcmdjPWNh bid0IGNvbXB1dGUgQ0ZBIGZvciB0aGlzIGZyYW1lIi4KKysgICAgZ2RiX3Rlc3QgImJ0IiAiI1xb MC05XF0rICtcW15cclxuXF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxuI1xbMC05XF0rICtc W15cclxuXF0qXFxtbWFpbiBcXCgoYXJnYz0yLC4qKT9cXCkuKiIgImF0dGFjaCBtYWluIGJ0Igor KyAgICBnZGJfZXhpdAorKworKyAgICByZW1vdGVfZXhlYyBob3N0ICJraWxsIC05ICRwaWQiCisr fQorKworK3Byb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW19IHsKKysgICAgZ2xvYmFs IHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdAorKworKyAgICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBm aWxlJy1jb21tYW5kIGxvYWRlZCAkRklMRSB3aXRoIHN5bWJvbHMuCisrCisrICAgIGdkYl9leGl0 CisrICAgIGdkYl9zdGFydAorKyAgICAjIENsZWFyIGl0IHRvIG5ldmVyIGZpbmQgYW55IHNlcGFy YXRlIGRlYnVnIGluZm9zIGluICRkZWJ1Z19yb290LgorKyAgICBnZGJfdGVzdCAic2V0IGRlYnVn LWZpbGUtZGlyZWN0b3J5IgorKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKKysgICAgZ2RiX2xvYWQgJGZpbGUKKysKKysgICAgcmVhY2ggImRsX21haW4iICJydW4gc2Vn diIKKysKKysgICAgZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG1kbF9tYWluXFxNLioi ICJkbCBidCIKKysKKysgICAgaWYgJGlmbWFpbiB7CisrCXJlYWNoICJtYWluIiBjb250aW51ZQor KworKwlyZWFjaCAibGliZnVuYyIgY29udGludWUKKysKKysJIyBDaGVjayB0aGVyZSBpcyBubyAi YXJnYz1jYW4ndCBjb21wdXRlIENGQSBmb3IgdGhpcyBmcmFtZSIuCisrCWdkYl90ZXN0ICJidCIg IiMwICtcW15cclxuXF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxuIzEgK1xbXlxyXG5cXSpc XG1tYWluIFxcKChhcmdjPTIsLiopP1xcKS4qIiAibWFpbiBidCIKKysKKysJdGVzdF9jb3JlICRm aWxlCisrCisrCXRlc3RfYXR0YWNoICRmaWxlCisrICAgIH0KKysKKysgICAgaWYgISR0cnlub3N5 bSB7CisrCXJldHVybgorKyAgICB9CisrCisrICAgIGdsb2JhbCBwZl9wcmVmaXgKKysgICAgc2V0 IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4CisrICAgIGxhcHBlbmQgcGZfcHJlZml4ICJzeW1ib2wt bGVzczoiCisrCisrICAgICMgVGVzdCBhbHNvIGBleGVjLWZpbGUnLWNvbW1hbmQgbG9hZGVkICRG SUxFIC0gdGhlcmVmb3JlIHdpdGhvdXQgc3ltYm9scy4KKysgICAgIyBTWU1CT0xfT0JKRklMRSBp cyBub3QgYXZhaWxhYmxlIGFuZCBvbmx5IEVYRUNfQkZEIG11c3QgYmUgdXNlZC4KKysKKysgICAg Z2RiX2V4aXQKKysgICAgZ2RiX3N0YXJ0CisrICAgICMgQ2xlYXIgaXQgdG8gbmV2ZXIgZmluZCBh bnkgc2VwYXJhdGUgZGVidWcgaW5mb3MgaW4gJGRlYnVnX3Jvb3QuCisrICAgIGdkYl90ZXN0ICJz ZXQgZGVidWctZmlsZS1kaXJlY3RvcnkiCisrICAgIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNk aXIvJHN1YmRpcgorKworKyAgICAjIFRlc3Qgbm8gKGVycm9yKSBtZXNzYWdlIGhhcyBiZWVuIHBy aW50ZWQgYnkgYGV4ZWMtZmlsZScuCisrICAgIHNldCBlc2NhcGVkZmlsZSBbc3RyaW5nX3RvX3Jl Z2V4cCAkZmlsZV0KKysgICAgZ2RiX3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAk ZXNjYXBlZGZpbGUiICJsb2FkIgorKworKyAgICBpZiAkaWZtYWluIHsKKysJcmVhY2ggImRsX21h aW4iIHJ1bgorKworKwlzZXQgdGVzdCAiaW5mbyBmaWxlcyIKKysJc2V0IGVudHJ5bm9oZXggIiIK KysJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwkgICAgLXJlICJcclxuXFtcdCBc XSpFbnRyeSBwb2ludDpcW1x0IFxdKjB4KFxbMC05YS1mXF0rKVxyXG4uKiRnZGJfcHJvbXB0ICQi IHsKKysJCXNldCBlbnRyeW5vaGV4ICRleHBlY3Rfb3V0KDEsc3RyaW5nKSAKKysJCXBhc3MgJHRl c3QKKysJICAgIH0KKysJfQorKwlpZiB7JGVudHJ5bm9oZXggIT0gIiJ9IHsKKysJICAgIGdkYl90 ZXN0ICJicmVhayAqMHgkZW50cnlub2hleCIgIiIgImJyZWFrIGF0IGVudHJ5IHBvaW50IgorKwkg ICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiXHJcbkJyZWFrcG9pbnQgXFswLTlcXSssIDB4MCokZW50 cnlub2hleCBpbiAuKiIgImVudHJ5IHBvaW50IHJlYWNoZWQiCisrCX0KKysgICAgfSBlbHNlIHsK KysJIyBUaGVyZSBpcyBubyBzeW1ib2wgdG8gYnJlYWsgYXQgbGQuc28uICBNb3Jlb3ZlciBpdCBj YW4gZXhpdCB3aXRoIGFuCisrCSMgZXJyb3IgY29kZS4KKysJZ2RiX3Rlc3QgInJ1biIgIlByb2dy YW0gZXhpdGVkIChub3JtYWxseXx3aXRoIGNvZGUgXFswLTlcXSspXFwuIiAibGQuc28gZXhpdCIK KysgICAgfQorKworKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKKyt9CisrCisrIyBD cmVhdGUgc2VwYXJhdGUgYmluYXJpZXMgZm9yIGVhY2ggdGVzdGNhc2UgLSB0byBtYWtlIHRoZSBw b3NzaWJsZSByZXBvcnRlZAorKyMgcHJvYmxlbSByZXByb2R1Y2libGUgYWZ0ZXIgdGhlIHdob2xl IHRlc3QgcnVuIGZpbmlzaGVzLgorKworK3NldCBvbGRfbGRwcmVmaXggJHBmX3ByZWZpeAorK2Zv cmVhY2ggbGRwcmVsaW5rIHtOTyBZRVN9IHsKKysgICAgZm9yZWFjaCBsZHNlcGRlYnVnIHtOTyBJ TiBTRVB9IHsKKysJIyBTa2lwIHJ1bm5pbmcgdGhlIGxkc2VwZGVidWcgdGVzdCBpZiB3ZSBkbyBu b3QgaGF2ZSBzeXN0ZW0gc2VwYXJhdGUKKysJIyBkZWJ1ZyBpbmZvIGF2YWlsYWJsZS4KKysJaWYg eyRpbnRlcnBfc3lzdGVtX2RlYnVnID09ICIiICYmICRsZHNlcGRlYnVnID09ICJTRVAifSB7Cisr CSAgICBjb250aW51ZQorKwl9CisrCisrCXNldCBsZG5hbWUgIkxEcHJlbGluayR7bGRwcmVsaW5r fWRlYnVnJHtsZHNlcGRlYnVnfSIKKysJc2V0IGludGVycCAkYmlucHJlZml4LSRsZG5hbWUKKysK KysJIyBwcmVsaW5rIG5lZWRzIHRvIGFsd2F5cyBwcmVsaW5rIGFsbCB0aGUgZGVwZW5kZW5jaWVz IHRvIGRvIGFueSBmaWxlCisrCSMgbW9kaWZpY2F0aW9ucyBvZiBpdHMgZmlsZXMuICBsZC5zbyBh bHNvIG5lZWRzIGFsbCB0aGUgZGVwZW5kZW5jaWVzIHRvCisrCSMgYmUgcHJlbGlua2VkIHRvIG9t aXQgdGhlIHJlbG9jYXRpb24gcHJvY2Vzcy4gIEluLW1lbW9yeSBmaWxlIG9mZnNldHMKKysJIyBh cmUgbm90IGRlcGVuZGVudCB3aGV0aGVyIGxkLnNvIHdlbnQgdGhlIHByZWxpbmsgd2F5IG9yIHRo cm91Z2ggdGhlCisrCSMgcmVsb2NhdGlvbiBwcm9jZXNzLgorKwkjCisrCSMgRm9yIEdEQiB3ZSBh cmUgbm90IGludGVyZXN0ZWQgd2hldGhlciBwcmVsaW5rIHN1Y2NlZWRzIGFzIGl0IGlzCisrCSMg dHJhbnNwYXJlbnQgdG8gR0RCLiAgR0RCIGlzIGJlaW5nIHRlc3RlZCBmb3IgZGlmZmVyZW5jZXMg b2YgZmlsZQorKwkjIG9mZnNldHMgdnMuIGluLW1lbW9yeSBvZmZzZXRzLiAgU28gd2UgaGF2ZSB0 byBwcmVsaW5rIGV2ZW4gbGQuc28gZm9yCisrCSMgdGhlIEJJTiBtb2RpZmljYXRpb24gdG8gaGFw cGVuIGJ1dCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsCisrCSMgcG9zc2libHkgdW5w cmVsaW5rZWQgbGQuc28gdG8gdGVzdCBhbGwgdGhlIGNvbWJpbmF0aW9ucyBmb3IgR0RCLgorKwlz ZXQgaW50ZXJwX3NhdmVkICR7aW50ZXJwfS1zYXZlZAorKworKwlzZXQgcGZfcHJlZml4ICRvbGRf bGRwcmVmaXgKKysJbGFwcGVuZCBwZl9wcmVmaXggIiRsZG5hbWU6IgorKworKwlpZiB7JGxkc2Vw ZGVidWcgPT0gIk5PIn0geworKwkgICAgY29weSAkaW50ZXJwX3N5c3RlbSAkaW50ZXJwCisrCSAg ICAjIE5ldmVyIGNhbGwgc3RyaXAtZGVidWcgYmVmb3JlIHVucHJlbGluazoKKysJICAgICMgcHJl bGluazogLi4uOiBTZWN0aW9uIC5ub3RlLmdudS5idWlsZC1pZCBjcmVhdGVkIGFmdGVyIHByZWxp bmtpbmcKKysJICAgIGlmICFbcHJlbGlua05PICRpbnRlcnBdIHsKKysJCWNvbnRpbnVlCisrCSAg ICB9CisrCSAgICBzdHJpcF9kZWJ1ZyAkaW50ZXJwCisrCX0gZWxzZWlmIHskbGRzZXBkZWJ1ZyA9 PSAiSU4iICYmICRpbnRlcnBfc3lzdGVtX2RlYnVnID09ICIifSB7CisrCSAgICBjb3B5ICRpbnRl cnBfc3lzdGVtICRpbnRlcnAKKysJfSBlbHNlaWYgeyRsZHNlcGRlYnVnID09ICJJTiIgJiYgJGlu dGVycF9zeXN0ZW1fZGVidWcgIT0gIiJ9IHsKKysJICAgIGNvcHkgJGludGVycF9zeXN0ZW0gJGlu dGVycAorKwkgICAgY29weSAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyAiJHtpbnRlcnB9LmRlYnVnIgor KwkgICAgIyBldS11bnN0cmlwOiBEV0FSRiBkYXRhIGluICcuLi4nIG5vdCBhZGp1c3RlZCBmb3Ig cHJlbGlua2luZyBiaWFzOyBjb25zaWRlciBwcmVsaW5rIC11CisrCSAgICBpZiB7IVtwcmVsaW5r Tk8gJGludGVycF0gfHwgIVtwcmVsaW5rTk8gIiR7aW50ZXJwfS5kZWJ1ZyJdfSB7CisrCQljb250 aW51ZQorKwkgICAgfQorKwkgICAgc2V0IHRlc3QgImV1LXVuc3RyaXAgdW5wcmVsaW5rZWQ6W2Zp bGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0gKyBbZmlsZSB0YWlsICRpbnRlcnBfc3lzdGVtX2RlYnVn XSB0byBbZmlsZSB0YWlsICRpbnRlcnBdIgorKwkgICAgc2V0IGNvbW1hbmQgImV4ZWMgZXUtdW5z dHJpcCAtbyAkaW50ZXJwICRpbnRlcnAgJHtpbnRlcnB9LmRlYnVnIgorKwkgICAgdmVyYm9zZSAt bG9nICJjb21tYW5kIGlzICRjb21tYW5kIgorKwkgICAgaWYgW2NhdGNoICRjb21tYW5kXSB7Cisr CQlzZXR1cF94ZmFpbCAqLSotKgorKwkJZmFpbCAkdGVzdAorKwkJY29udGludWUKKysJICAgIH0g ZWxzZSB7CisrCQlwYXNzICR0ZXN0CisrCSAgICB9CisrCX0gZWxzZWlmIHskbGRzZXBkZWJ1ZyA9 PSAiU0VQIiAmJiAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyA9PSAiIn0geworKwkgICAgY29weSAkaW50 ZXJwX3N5c3RlbSAkaW50ZXJwCisrCSAgICAjIGV1LXVuc3RyaXA6IERXQVJGIGRhdGEgaW4gJy4u Licgbm90IGFkanVzdGVkIGZvciBwcmVsaW5raW5nIGJpYXM7IGNvbnNpZGVyIHByZWxpbmsgLXUK KysJICAgIGlmICFbcHJlbGlua05PICRpbnRlcnBdIHsKKysJCWNvbnRpbnVlCisrCSAgICB9Cisr CSAgICBnZGJfZ251X3N0cmlwX2RlYnVnICRpbnRlcnAKKysJfSBlbHNlaWYgeyRsZHNlcGRlYnVn ID09ICJTRVAiICYmICRpbnRlcnBfc3lzdGVtX2RlYnVnICE9ICIifSB7CisrCSAgICBjb3B5ICRp bnRlcnBfc3lzdGVtICRpbnRlcnAKKysJICAgIGNvcHkgJGludGVycF9zeXN0ZW1fZGVidWcgIiR7 aW50ZXJwfS5kZWJ1ZyIKKysJfQorKworKwlpZiB7JGxkc2VwZGVidWcgPT0gIlNFUCJ9IHsKKysJ ICAgIGlmICFbcHJlbGlua05PICIke2ludGVycH0uZGVidWciXSB7CisrCQljb250aW51ZQorKwkg ICAgfQorKwl9IGVsc2UgeworKwkgICAgZmlsZSBkZWxldGUgIiR7aW50ZXJwfS5kZWJ1ZyIKKysJ fQorKworKwlpZiAhW3ByZWxpbmskbGRwcmVsaW5rICRpbnRlcnBdIHsKKysJICAgIGNvbnRpbnVl CisrCX0KKysJdGVzdF9sZCAkaW50ZXJwIDAgW2V4cHIgeyRsZHNlcGRlYnVnID09ICJOTyJ9XQor KworKwlpZiAhW2NvcHkgJGludGVycCAkaW50ZXJwX3NhdmVkXSB7CisrCSAgICBjb250aW51ZQor Kwl9CisrCXNldCBvbGRfYmlucHJlZml4ICRwZl9wcmVmaXgKKysJZm9yZWFjaCBiaW5wcmVsaW5r IHtOTyBZRVN9IHsKKysJICAgIGZvcmVhY2ggYmluc2VwZGVidWcge05PIElOIFNFUH0geworKwkJ Zm9yZWFjaCBiaW5waWUge05PIFlFU30geworKwkJICAgICMgVGhpcyBjb21iaW5hdGlvbiBpcyBu b3QgcG9zc2libGUsIG5vbi1QSUUgKGZpeGVkIGFkZHJlc3MpCisrCQkgICAgIyBiaW5hcnkgY2Fu bm90IGJlIHByZWxpbmtlZCB0byBhbnkgKG90aGVyKSBhZGRyZXNzLgorKwkJICAgIGlmIHskYmlu cHJlbGluayA9PSAiWUVTIiAmJiAkYmlucGllID09ICJOTyJ9IHsKKysJCQljb250aW51ZQorKwkJ ICAgIH0KKysKKysJCSAgICBzZXQgYmlubmFtZSAiQklOcHJlbGluayR7YmlucHJlbGlua31kZWJ1 ZyR7Ymluc2VwZGVidWd9cGllJHtiaW5waWV9IgorKwkJICAgIHNldCBleGVjICRiaW5wcmVmaXgt JGJpbm5hbWUKKysJCSAgICBzZXQgZGlyICR7ZXhlY30uZAorKworKwkJICAgIHNldCBwZl9wcmVm aXggJG9sZF9iaW5wcmVmaXgKKysJCSAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJGJpbm5hbWU6Igor KworKwkJICAgIHNldCBvcHRzICJhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtLWR5bmFtaWMtbGlua2Vy LCRpbnRlcnAsLXJwYXRoLCRkaXIiCisrCQkgICAgbGFwcGVuZCBvcHRzICJhZGRpdGlvbmFsX2Zs YWdzPS1XbCwkYmluZmlsZV9saWIsLXJwYXRoLFtmaWxlIGRpcm5hbWUgJGJpbmZpbGVfbGliXSIK KysJCSAgICBpZiB7JGJpbnNlcGRlYnVnICE9ICJOTyJ9IHsKKysJCQlsYXBwZW5kIG9wdHMge2Rl YnVnfQorKwkJICAgIH0KKysJCSAgICBpZiB7JGJpbnBpZSA9PSAiWUVTIn0geworKwkJCWxhcHBl bmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllfQorKwkJICAgIH0KKysJCSAgICBp ZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgW2ZpbGUgdGFpbCAkZXhlY10gJHNyY2Zp bGUgJG9wdHNdID09IC0xfSB7CisrCQkJY29udGludWU7CisrCQkgICAgfQorKwkJICAgIGlmIHsk Ymluc2VwZGVidWcgPT0gIlNFUCJ9IHsKKysJCQlnZGJfZ251X3N0cmlwX2RlYnVnICRleGVjCisr CQkJIyBKdXN0IGEgc2FuaXR5IGNoZWNrLiAgQXMgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB1c2VzIHRo ZQorKwkJCSMgIltmaWxlIGRpcm5hbWUgJGV4ZWNdLy5kZWJ1Zy9bZmlsZSB0YWlsICRleGVjXS5k ZWJ1ZyIKKysJCQkjIHZhcmlhbnQgZGVsZXRlIHRoZSBoaWdoZXItcHJpb3JpdHkgZXhlYy5kZWJ1 ZyBmaWxlLgorKwkJCWZpbGUgZGVsZXRlICIkZXhlYy5kZWJ1ZyIKKysJCSAgICB9CisrCisrCQkg ICAgIyBTdXBwbHkgYSBzZWxmLXN1ZmZpY2VudCBkaXJlY3RvcnkgJGRpciB3aXRoIHRoZSByZXF1 aXJlZAorKwkJICAgICMgbGlicmFyaWVzLiAgVG8gbWFrZSBhbiBleGVjdXRhYmxlIHByb3Blcmx5 IHByZWxpbmtlZCBhbGwKKysJCSAgICAjIGl0cyBkZXBlbmRlbmNpZXMgb24gbGlicmFyaWVzIG11 c3QgYmUgYWxzbyBwcmVsaW5rZWQuICBJZgorKwkJICAgICMgc29tZSBvZiB0aGUgc3lzdGVtIGxp YnJhcmllcyBpcyBjdXJyZW50bHkgbm90IHByZWxpbmtlZAorKwkJICAgICMgd2UgaGF2ZSBubyBy aWdodCB0byBwcmVsaW5rIChtb2RpZnkgaXQpIGF0IGl0cyBjdXJyZW50CisrCQkgICAgIyBzeXN0 ZW0gcGxhY2UuCisrCisrCQkgICAgZmlsZSBkZWxldGUgLWZvcmNlICRkaXIKKysJCSAgICBmaWxl IG1rZGlyICRkaXIKKysKKysJCSAgICBzZXQgY29tbWFuZCAibGRkICRleGVjIgorKwkJICAgIHNl dCByZXN1bHQgW2NhdGNoICJleGVjICRjb21tYW5kIiBvdXRwdXRdCisrCQkgICAgdmVyYm9zZSAt bG9nICJyZXN1bHQgb2YgJGNvbW1hbmQgaXMgJHJlc3VsdCIKKysJCSAgICB2ZXJib3NlIC1sb2cg Im91dHB1dCBvZiAkY29tbWFuZCBpcyAkb3V0cHV0IgorKwkJICAgIGlmIHskcmVzdWx0ICE9IDAg fHwgJG91dHB1dCA9PSAiIn0geworKwkJCWZhaWwgJGNvbW1hbmQKKysJCSAgICB9IGVsc2Ugewor KwkJCXBhc3MgJGNvbW1hbmQKKysJCSAgICB9CisrCisrCQkgICAgIyBnZGIgdGVzdHN1aXRlIHdp bGwgcHV0IHRoZXJlIGFsc28gbmVlZGxlc3MgLWxtLgorKwkJICAgIHNldCB0ZXN0ICIkY29tbWFu ZCBvdXRwdXQgY29udGFpbnMgbGliYyIKKysJCSAgICBzZXQgbGliYyBbcmVnZXhwIC1hbGwgLWlu bGluZSAtbGluZSB7Xi4qID0+ICgvW14gXSspLiokfSAkb3V0cHV0XQorKwkJICAgIGlmIHtbbGxl bmd0aCAkbGliY10gPT0gMH0geworKwkJCWZhaWwgJHRlc3QKKysJCSAgICB9IGVsc2UgeworKwkJ CXBhc3MgJHRlc3QKKysJCSAgICB9CisrCisrCQkgICAgc2V0IGRlc3RzIHt9CisrCQkgICAgZm9y IHtzZXQgaSAxfSB7JGkgPCBbbGxlbmd0aCAkbGliY119IHtpbmNyIGkgMn0geworKwkJCXNldCBh YnNwYXRoIFtsaW5kZXggJGxpYmMgJGldCisrCQkJc2V0IGRlc3QgIiRkaXIvW2ZpbGUgdGFpbCAk YWJzcGF0aF0iCisrCQkJY29weSAkYWJzcGF0aCAkZGVzdAorKwkJCWxhcHBlbmQgZGVzdHMgJGRl c3QKKysJCSAgICB9CisrCisrCQkgICAgaWYge1twcmVsaW5rJGJpbnByZWxpbmsgIi0tZHluYW1p Yy1saW5rZXI9JGludGVycCAtLWxkLWxpYnJhcnktcGF0aD0kZGlyICRleGVjICRpbnRlcnAgW2Nv bmNhdCAkZGVzdHNdIiAkZXhlY10KKysJCSAgICAgICAgJiYgW2NvcHkgJGludGVycF9zYXZlZCAk aW50ZXJwXX0geworKwkJCXRlc3RfbGQgJGV4ZWMgMSBbZXhwciB7JGJpbnNlcGRlYnVnID09ICJO TyJ9XQorKwkJICAgIH0KKysJCX0KKysJICAgIH0KKysJfQorKworKwlmaWxlIGRlbGV0ZSAkaW50 ZXJwX3NhdmVkCisrICAgIH0KKyt9Cisrc2V0IHBmX3ByZWZpeCAkb2xkX2xkcHJlZml4CitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAoraW5kZXggYTEwMDNlMS4uNTQ3YTg5OCAxMDA2NDQK Ky0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorQEAgLTQyLDY1ICs0MiwxMiBAQCBpZiBbZ2V0 X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworICAgICByZXR1cm4gLTE7CisgfQorIAorLSMg Q3JlYXRlIGEgY29yZSBmaWxlIG5hbWVkICJjb3JlZmlsZSIgcmF0aGVyIHRoYW4ganVzdCAiY29y ZSIsIHRvCistIyBhdm9pZCBwcm9ibGVtcyB3aXRoIHN5cyBhZG1pbiB0eXBlcyB0aGF0IGxpa2Ug dG8gcmVndWxhcmx5IHBydW5lIGFsbAorLSMgZmlsZXMgbmFtZWQgImNvcmUiIGZyb20gdGhlIHN5 c3RlbS4KKy0jCistIyBBcmJpdHJhcmlseSB0cnkgc2V0dGluZyB0aGUgY29yZSBzaXplIGxpbWl0 IHRvICJ1bmxpbWl0ZWQiIHNpbmNlCistIyB0aGlzIGRvZXMgbm90IGh1cnQgb24gc3lzdGVtcyB3 aGVyZSB0aGUgY29tbWFuZCBkb2VzIG5vdCB3b3JrIGFuZAorLSMgYWxsb3dzIHVzIHRvIGdlbmVy YXRlIGEgY29yZSBvbiBzeXN0ZW1zIHdoZXJlIGl0IGRvZXMuCistIworLSMgU29tZSBzeXN0ZW1z IGFwcGVuZCAiY29yZSIgdG8gdGhlIG5hbWUgb2YgdGhlIHByb2dyYW07IG90aGVycyBhcHBlbmQK Ky0jIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvICJjb3JlIjsgc3RpbGwgb3RoZXJzIChsaWtl IExpbnV4LCBhcyBvZgorLSMgTWF5IDIwMDMpIGNyZWF0ZSBjb3JlcyBuYW1lZCAiY29yZS5QSUQi LiAgSW4gdGhlIGxhdHRlciBjYXNlLCB3ZQorLSMgY291bGQgaGF2ZSBtYW55IGNvcmUgZmlsZXMg bHlpbmcgYXJvdW5kLCBhbmQgaXQgbWF5IGJlIGRpZmZpY3VsdCB0bworLSMgdGVsbCB3aGljaCBv bmUgaXMgb3Vycywgc28gbGV0J3MgcnVuIHRoZSBwcm9ncmFtIGluIGEgc3ViZGlyZWN0b3J5Lgor LXNldCBmb3VuZCAwCistc2V0IGNvcmVkaXIgIiR7b2JqZGlyfS8ke3N1YmRpcn0vY29yZWRpci5b Z2V0cGlkXSIKKy1maWxlIG1rZGlyICRjb3JlZGlyCistY2F0Y2ggInN5c3RlbSBcIihjZCAke2Nv cmVkaXJ9OyB1bGltaXQgLWMgdW5saW1pdGVkOyAke2JpbmZpbGV9OyB0cnVlKSA+L2Rldi9udWxs IDI+JjFcIiIKKy0jICAgICAgcmVtb3RlX2V4ZWMgaG9zdCAiJHtiaW5maWxlfSIKKy1mb3JlYWNo IGkgIiR7Y29yZWRpcn0vY29yZSAke2NvcmVkaXJ9L2NvcmUuY29yZW1ha2VyLmMgJHtiaW5maWxl fS5jb3JlIiB7CistICAgIGlmIFtyZW1vdGVfZmlsZSBidWlsZCBleGlzdHMgJGldIHsKKy0JcmVt b3RlX2V4ZWMgYnVpbGQgIm12ICRpICR7b2JqZGlyfS8ke3N1YmRpcn0vY29yZWZpbGUiCistCXNl dCBmb3VuZCAxCistICAgIH0KKy19CistIyBDaGVjayBmb3IgImNvcmUuUElEIi4KKy1pZiB7ICRm b3VuZCA9PSAwIH0geworLSAgICBzZXQgbmFtZXMgW2dsb2IgLW5vY29tcGxhaW4gLWRpcmVjdG9y eSAkY29yZWRpciBjb3JlLipdCistICAgIGlmIHtbbGxlbmd0aCAkbmFtZXNdID09IDF9IHsKKy0g ICAgICAgIHNldCBjb3JlZmlsZSBbZmlsZSBqb2luICRjb3JlZGlyIFtsaW5kZXggJG5hbWVzIDBd XQorLSAgICAgICAgcmVtb3RlX2V4ZWMgYnVpbGQgIm12ICRjb3JlZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9L2NvcmVmaWxlIgorLSAgICAgICAgc2V0IGZvdW5kIDEKKy0gICAgfQorLX0KKy1pZiB7 ICRmb3VuZCA9PSAwIH0geworLSAgICAjIFRoZSBicmFpbmRhbWFnZWQgSFBVWCBzaGVsbCBxdWl0 cyBhZnRlciB0aGUgdWxpbWl0IC1jIGFib3ZlCistICAgICMgd2l0aG91dCBleGVjdXRpbmcgJHti aW5maWxlfS4gIFNvIHdlIHRyeSBhZ2FpbiB3aXRob3V0IHRoZQorLSAgICAjIHVsaW1pdCBoZXJl IGlmIHdlIGRpZG4ndCBmaW5kIGEgY29yZSBmaWxlIGFib3ZlLgorLSAgICAjIE9oLCBJIHNob3Vs ZCBtZW50aW9uIHRoYXQgYW55ICJicmFpbmRhbWFnZWQiIG5vbi1Vbml4IHN5c3RlbSBoYXMKKy0g ICAgIyB0aGUgc2FtZSBwcm9ibGVtLiBJIGxpa2UgdGhlIGNkIGJpdCB0b28sIGl0J3MgcmVhbGx5 IG5lYXQnbiBzdHVmZi4KKy0gICAgY2F0Y2ggInN5c3RlbSBcIihjZCAke29iamRpcn0vJHtzdWJk aXJ9OyAke2JpbmZpbGV9OyB0cnVlKSA+L2Rldi9udWxsIDI+JjFcIiIKKy0gICAgZm9yZWFjaCBp ICIke29iamRpcn0vJHtzdWJkaXJ9L2NvcmUgJHtvYmpkaXJ9LyR7c3ViZGlyfS9jb3JlLmNvcmVt YWtlci5jICR7YmluZmlsZX0uY29yZSIgeworLQlpZiBbcmVtb3RlX2ZpbGUgYnVpbGQgZXhpc3Rz ICRpXSB7CistCSAgICByZW1vdGVfZXhlYyBidWlsZCAibXYgJGkgJHtvYmpkaXJ9LyR7c3ViZGly fS9jb3JlZmlsZSIKKy0JICAgIHNldCBmb3VuZCAxCistCX0KKy0gICAgfQorK3NldCBjb3JlZmls ZSBbY29yZV9maW5kICRiaW5maWxlIHtjb3JlbW1hcC5kYXRhfV0KKytpZiB7JGNvcmVmaWxlID09 ICIifSB7CisrICAgIHJldHVybiAwOworIH0KKyAKKy0jIFRyeSB0byBjbGVhbiB1cCBhZnRlciBv dXJzZWx2ZXMuIAorLXJlbW90ZV9maWxlIGJ1aWxkIGRlbGV0ZSBbZmlsZSBqb2luICRjb3JlZGly IGNvcmVtbWFwLmRhdGFdCistcmVtb3RlX2V4ZWMgYnVpbGQgInJtZGlyICRjb3JlZGlyIgorLSAg ICAKKy1pZiB7ICRmb3VuZCA9PSAwICB9IHsKKy0gICAgd2FybmluZyAiY2FuJ3QgZ2VuZXJhdGUg YSBjb3JlIGZpbGUgLSBjb3JlIHRlc3RzIHN1cHByZXNzZWQgLSBjaGVjayB1bGltaXQgLWMiCist ICAgIHJldHVybiAwCistfQorLQorLSMKKy0jIFRlc3QgdGhhdCB3ZSBjYW4gc2ltcGx5IHN0YXJ0 dXAgd2l0aCBhICItY29yZT1jb3JlZmlsZSIgY29tbWFuZCBsaW5lIGFyZworKyMgVGVzdCB0aGF0 IHdlIGNhbiBzaW1wbHkgc3RhcnR1cCB3aXRoIGEgIi1jb3JlPSRjb3JlZmlsZSIgY29tbWFuZCBs aW5lIGFyZworICMgYW5kIHJlY29nbml6ZSB0aGF0IHRoZSBjb3JlIGZpbGUgaXMgYSB2YWxpZCwg dXNhYmxlIGNvcmUgZmlsZS4KKyAjIFRvIGRvIHRoaXMsIHdlIG11c3Qgc2h1dGRvd24gdGhlIGN1 cnJlbnRseSBydW5uaW5nIGdkYiBhbmQgcmVzdGFydAorICMgd2l0aCB0aGUgLWNvcmUgYXJncy4g IFdlIGNhbid0IHVzZSBnZGJfc3RhcnQgYmVjYXVzZSBpdCBsb29rcyBmb3IKK0BAIC0xMTQsMjcg KzYxLDI3IEBAIGlmIHsgJGZvdW5kID09IDAgIH0geworIAorIGdkYl9leGl0CisgaWYgJHZlcmJv c2U+MSB0aGVuIHsKKy0gICAgc2VuZF91c2VyICJTcGF3bmluZyAkR0RCICRJTlRFUk5BTF9HREJG TEFHUyAkR0RCRkxBR1MgLWNvcmU9JG9iamRpci8kc3ViZGlyL2NvcmVmaWxlXG4iCisrICAgIHNl bmRfdXNlciAiU3Bhd25pbmcgJEdEQiAkSU5URVJOQUxfR0RCRkxBR1MgJEdEQkZMQUdTIC1jb3Jl PSRjb3JlZmlsZVxuIgorIH0KKyAKKyBzZXQgb2xkdGltZW91dCAkdGltZW91dAorIHNldCB0aW1l b3V0IFtleHByICIkdGltZW91dCArIDYwIl0KKyB2ZXJib3NlICJUaW1lb3V0IGlzIG5vdyAkdGlt ZW91dCBzZWNvbmRzIiAyCistZXZhbCAic3Bhd24gJEdEQiAkSU5URVJOQUxfR0RCRkxBR1MgJEdE QkZMQUdTIC1jb3JlPSRvYmpkaXIvJHN1YmRpci9jb3JlZmlsZSIKKytldmFsICJzcGF3biAkR0RC ICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgLWNvcmU9JGNvcmVmaWxlIgorIGV4cGVjdCB7 CisgICAgIC1yZSAiQ291bGRuJ3QgZmluZCAuKiByZWdpc3RlcnMgaW4gY29yZSBmaWxlLiokZ2Ri X3Byb21wdCAkIiB7CistICAgICAgICBmYWlsICJhcmdzOiAtY29yZT1jb3JlZmlsZSAoY291bGRu J3QgZmluZCByZWdzKSIKKysgICAgICAgIGZhaWwgImFyZ3M6IC1jb3JlPVtmaWxlIHRhaWwgJGNv cmVmaWxlXSAoY291bGRuJ3QgZmluZCByZWdzKSIKKyAgICAgfQorICAgICAtcmUgIkNvcmUgd2Fz IGdlbmVyYXRlZCBieSAuKmNvcmVtYWtlci4qXHJcblwjMCAgLipcKFwpLipcclxuJGdkYl9wcm9t cHQgJCIgeworLQlwYXNzICJhcmdzOiAtY29yZT1jb3JlZmlsZSIKKysJcGFzcyAiYXJnczogLWNv cmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIgorICAgICB9CisgICAgIC1yZSAiQ29yZSB3YXMgZ2Vu ZXJhdGVkIGJ5IC4qXHJcblwjMCAgLipcKFwpLipcclxuJGdkYl9wcm9tcHQgJCIgeworLQlwYXNz ICJhcmdzOiAtY29yZT1jb3JlZmlsZSAod2l0aCBiYWQgcHJvZ3JhbSBuYW1lKSIKKysJcGFzcyAi YXJnczogLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdICh3aXRoIGJhZCBwcm9ncmFtIG5hbWUp IgorICAgICB9CisgICAgIC1yZSAiLipyZWdpc3RlcnMgZnJvbSBjb3JlIGZpbGU6IEZpbGUgaW4g d3JvbmcgZm9ybWF0LiogJCIgeworLQlmYWlsICJhcmdzOiAtY29yZT1jb3JlZmlsZSAoY291bGQg bm90IHJlYWQgcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlKSIKKysJZmFpbCAiYXJnczogLWNvcmU9 W2ZpbGUgdGFpbCAkY29yZWZpbGVdIChjb3VsZCBub3QgcmVhZCByZWdpc3RlcnMgZnJvbSBjb3Jl IGZpbGUpIgorICAgICB9CistICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIgl7IGZhaWwgImFyZ3M6 IC1jb3JlPWNvcmVmaWxlIiB9CisrICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIgl7IGZhaWwgImFy Z3M6IC1jb3JlPVtmaWxlIHRhaWwgJGNvcmVmaWxlXSIgfQorICAgICB0aW1lb3V0IAkJeyBmYWls ICIodGltZW91dCkgc3RhcnRpbmcgd2l0aCAtY29yZSIgfQorIH0KKyAKK0BAIC0xNDcsMjIgKzk0 LDIyIEBAIGV4cGVjdCB7CisgY2xvc2U7CisgCisgaWYgJHZlcmJvc2U+MSB0aGVuIHsKKy0gICAg c2VuZF91c2VyICJTcGF3bmluZyAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgJGJp bmZpbGUgLWNvcmU9JG9iamRpci8kc3ViZGlyL2NvcmVmaWxlXG4iCisrICAgIHNlbmRfdXNlciAi U3Bhd25pbmcgJEdEQiAkSU5URVJOQUxfR0RCRkxBR1MgJEdEQkZMQUdTICRiaW5maWxlIC1jb3Jl PSRjb3JlZmlsZVxuIgorIH0KKyAKKyAKKy1ldmFsICJzcGF3biAkR0RCICRJTlRFUk5BTF9HREJG TEFHUyAkR0RCRkxBR1MgJGJpbmZpbGUgLWNvcmU9JG9iamRpci8kc3ViZGlyL2NvcmVmaWxlIjsK KytldmFsICJzcGF3biAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgJGJpbmZpbGUg LWNvcmU9JGNvcmVmaWxlIjsKKyBleHBlY3QgeworICAgICAtcmUgIkNvcmUgd2FzIGdlbmVyYXRl ZCBieSAuKmNvcmVtYWtlci4qXHJcblwjMCAgLipcKFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewor LQlwYXNzICJhcmdzOiBleGVjZmlsZSAtY29yZT1jb3JlZmlsZSIKKysJcGFzcyAiYXJnczogZXhl Y2ZpbGUgLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIgorICAgICB9CisgICAgIC1yZSAiQ29y ZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qXHJcblwjMCAgLipcKFwpLipcclxuJGdkYl9wcm9tcHQgJCIJ IHsKKy0JcGFzcyAiYXJnczogZXhlY2ZpbGUgLWNvcmU9Y29yZWZpbGUgKHdpdGggYmFkIHByb2dy YW0gbmFtZSkiCisrCXBhc3MgImFyZ3M6IGV4ZWNmaWxlIC1jb3JlPVtmaWxlIHRhaWwgJGNvcmVm aWxlXSAod2l0aCBiYWQgcHJvZ3JhbSBuYW1lKSIKKyAgICAgfQorICAgICAtcmUgIi4qcmVnaXN0 ZXJzIGZyb20gY29yZSBmaWxlOiBGaWxlIGluIHdyb25nIGZvcm1hdC4qICQiIHsKKy0JZmFpbCAi YXJnczogZXhlY2ZpbGUgLWNvcmU9Y29yZWZpbGUgKGNvdWxkIG5vdCByZWFkIHJlZ2lzdGVycyBm cm9tIGNvcmUgZmlsZSkiCisrCWZhaWwgImFyZ3M6IGV4ZWNmaWxlIC1jb3JlPVtmaWxlIHRhaWwg JGNvcmVmaWxlXSAoY291bGQgbm90IHJlYWQgcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlKSIKKyAg ICAgfQorLSAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJhcmdzOiBleGVjZmlsZSAt Y29yZT1jb3JlZmlsZSIgfQorKyAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJhcmdz OiBleGVjZmlsZSAtY29yZT1bZmlsZSB0YWlsICRjb3JlZmlsZV0iIH0KKyAgICAgdGltZW91dCAJ CXsgZmFpbCAiKHRpbWVvdXQpIHN0YXJ0aW5nIHdpdGggLWNvcmUiIH0KKyB9Cisgc2V0IHRpbWVv dXQgJG9sZHRpbWVvdXQKK0BAIC0xNzgsNyArMTI1LDcgQEAgZ2RiX2xvYWQgJHtiaW5maWxlfQor IAorICMgVGVzdCBiYXNpYyBjb3JlZmlsZSByZWNvZ25pdGlvbiB2aWEgY29yZS1maWxlIGNvbW1h bmQuCisgCistc2VuZF9nZGIgImNvcmUtZmlsZSAkb2JqZGlyLyRzdWJkaXIvY29yZWZpbGVcbiIK KytzZW5kX2dkYiAiY29yZS1maWxlICRjb3JlZmlsZVxuIgorIGdkYl9leHBlY3QgeworICAgICAt cmUgIi4qIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFkeS4qeSBvciBuLiAkIiB7Cisg CSMgZ2RiX2xvYWQgbWF5IGNvbm5lY3QgdXMgdG8gYSBnZGJzZXJ2ZXIuCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9waWUtc3VwcG9ydC5jCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDYzNzY4 YjkuLjAwMDAwMDAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGllLXN1cHBvcnQuYwor KysrIC9kZXYvbnVsbAorQEAgLTEsMzQgKzAsMCBAQAorLS8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCistCistICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCistICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCistCistKi8KKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0KKy12b2lkCistZjEg KGludCBhKQorLXsKKy0gIHByaW50ZiAoImEgPSAlZFxuIiwgYSk7CistfQorLQorLWludAorLW1h aW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisteworLSAgZjEgKDEpOworLQorLSAgcmV0dXJu IDA7CistfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGllLXN1cHBvcnQu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5leHAKK2RlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggN2QxMThjMC4uMDAwMDAwMAorLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5leHAKKysrKyAvZGV2L251bGwKK0BAIC0xLDU4ICswLDAg QEAKKy0jIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQor LSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorLSMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSMK Ky0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0KKy1zZXQgdGVzdGZpbGUgcGllLXN1cHBv cnQKKy1zZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCistc2V0IG9iamZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfS5vCistc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfQorLQorLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGV9IiAiJHtvYmpmaWxlfSIgb2JqZWN0IHtxdWlldCBkZWJ1ZyBhZGRpdGlvbmFsX2Zs YWdzPS1mcGllfV0gIT0gIiIgfSB7CistICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRl c3QgUElFIG9iamVjdCBmaWxlLiIKKy0gICAgcmV0dXJuIC0xCistfQorLWlmICB7IFtnZGJfY29t cGlsZSAiJHtvYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge3F1aWV0IGRlYnVnIGFk ZGl0aW9uYWxfZmxhZ3M9LXBpZX1dICE9ICIiIH0geworLSAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSB0ZXN0IFBJRSBiaW5hcnkuIgorLSAgICByZXR1cm4gLTEKKy19CistCistIyBHZXQg dGhpbmdzIHN0YXJ0ZWQuCistCistZ2RiX2V4aXQKKy1nZGJfc3RhcnQKKy1nZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKy0KKy1pZiBbaXNfcmVtb3RlIGhvc3RdIHsKKy0gIHNl dCBiaW5maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAkYmluZmlsZV0KKy0gICAgaWYgeyAkYmlu ZmlsZSA9PSAiIiB9IHsKKy0gICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgZG93bmxvYWQgcmVtb3Rl IHRlc3QgYmluYXJ5LiIKKy0gICAgICByZXR1cm4gLTEKKy0gICAgfQorLX0KKy0KKy0jIFRoZSBm aWxlIGNvbW1hbmQgdXNlZCB0byBraWxsIHRoZSByZW1vdGUgdGFyZ2V0LiAgRm9yIHRoZSBiZW5l Zml0CistIyBvZiB0aGUgdGVzdHN1aXRlLCBwcmVzZXJ2ZSB0aGlzIGJlaGF2aW9yLgorLXNlbmRf Z2RiICJraWxsXG4iCistZ2RiX2V4cGVjdCAxMjAgeworLSAgICAtcmUgIktpbGwgdGhlIHByb2dy YW0gYmVpbmcgZGVidWdnZWQuIC55IG9yIG4uICQiIHsKKy0Jc2VuZF9nZGIgInlcbiIKKy0JdmVy Ym9zZSAiXHRcdEtpbGxpbmcgcHJldmlvdXMgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCIKKy0JZXhw X2NvbnRpbnVlCistICAgIH0KKy0gICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7CistCSMgT0suCist ICAgIH0KKy19CistCistZ2RiX3Rlc3QgImZpbGUgJGJpbmZpbGUiICJjdXJyZW50IGJpbmFyeSBp cyBhIFBJRS4qIiAiY29ycmVjdGx5IGRldGVjdGVkIFBJRSBiaW5hcnkiCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmFsZ3JpbmQtZGItYXR0YWNoLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi41ZmFhYWFjCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFjaC5jCitAQCAtMCwwICsxLDMwIEBACisrLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5 cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgor KworK2ludCBtYWluKCkKKyt7CisrICB2b2lkICpwOworKworKyAgcCA9IG1hbGxvYyAoMSk7Cisr ICBpZiAocCA9PSBOVUxMKQorKyAgICByZXR1cm4gMTsKKysgIGZyZWUgKHApOworKyAgZnJlZSAo cCk7CS8qIGRvdWJsZS1mcmVlICovCisrICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uYWMwNmZkMworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guZXhwCitAQCAtMCwwICsxLDc0IEBACisrIyBD b3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc2V0IHRlc3QgdmFsZ3JpbmQtZGItYXR0YWNoCisr c2V0IHNyY2ZpbGUgJHRlc3QuYworK3NldCBleGVjdXRhYmxlICR0ZXN0Cisrc2V0IGJpbmZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9CisraWYge1tidWlsZF9leGVjdXRhYmxl ICR0ZXN0LmV4cCAkZXhlY3V0YWJsZSAkc3JjZmlsZSB7ZGVidWd9XSA9PSAtMX0geworKyAgICBy ZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKysKKysjIHJlbW90ZV9zcGF3biBicmVha3MgdGhl IGNvbW1hbmQgb24gZWFjaCB3aGl0ZXNwYWNlIGRlc3BpdGUgcG9zc2libGUgcXVvdGluZy4KKysj IFVzZSBiYWNrc2xhc2gtZXNjYXBlZCB3aGl0ZXNwYWNlIHRoZXJlIGluc3RlYWQ6CisrCisrc2V0 IGRiX2NvbW1hbmQgIi0tZGItY29tbWFuZD0kR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxB R1MgW2hvc3RfaW5mbyBnZGJfb3B0c10gJWYgJXAiCisrcmVnc3ViIC1hbGwgIiAiICRkYl9jb21t YW5kICJcXCAiIGRiX2NvbW1hbmQKKysKKytzZXQgdGVzdCAic3Bhd24gdmFsZ3JpbmQiCisrc2V0 IGNtZCAidmFsZ3JpbmQgLS1kYi1hdHRhY2g9eWVzICRkYl9jb21tYW5kICRiaW5maWxlIgorK3Nl dCByZXMgW3JlbW90ZV9zcGF3biBob3N0ICRjbWRdOworK2lmIHsgJHJlcyA8IDAgfHwgJHJlcyA9 PSAiIiB9IHsKKysgICAgdmVyYm9zZSAtbG9nICJTcGF3bmluZyAkY21kIGZhaWxlZC4iCisrICAg IHNldHVwX3hmYWlsICotKi0qCisrICAgIGZhaWwgJHRlc3QKKysgICAgcmV0dXJuIC0xCisrfQor K3Bhc3MgJHRlc3QKKysjIERlY2xhcmUgR0RCIG5vdyBhcyBydW5uaW5nLgorK3NldCBnZGJfc3Bh d25faWQgLTEKKysKKytzZXQgdGVzdCAidmFsZ3JpbmQgc3RhcnRlZCIKKysjIFRoZSB0cmFpbGlu ZyAnLicgZGlmZmVycyBmb3IgZGlmZmVyZW50IG1lbWNoZWNrIHZlcnNpb25zLgorK2dkYl90ZXN0 X211bHRpcGxlICIiICR0ZXN0IHsKKysgICAgLXJlICJNZW1jaGVjaywgYSBtZW1vcnkgZXJyb3Ig ZGV0ZWN0b3JcXC4/XHJcbiIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJ2YWxn cmluZDogZmFpbGVkIHRvIHN0YXJ0IHRvb2wgJ21lbWNoZWNrJyBmb3IgcGxhdGZvcm0gJy4qJzog Tm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIgeworKwlzZXR1cF94ZmFpbCAqLSotKgorKwlmYWls ICR0ZXN0CisrCXJldHVybiAtMQorKyAgICB9CisrfQorKworK3NldCBkb3VibGVfZnJlZSBbZ2Ri X2dldF9saW5lX251bWJlciAiZG91YmxlLWZyZWUiXQorKworK2dkYl90ZXN0X211bHRpcGxlICIi ICR0ZXN0IHsKKysgICAgLXJlICJJbnZhbGlkIGZyZWVcXChcXCkgLyBkZWxldGUgLyBkZWxldGVc XFxbXFxcXVxyXG4uKjogbWFpbiBcXCgke3NyY2ZpbGV9OiRkb3VibGVfZnJlZVxcKVxyXG4uKi0t LS0gQXR0YWNoIHRvIGRlYnVnZ2VyIFxcPyAtLS0gXFteXHJcblxdKiAtLS0tICIgeworKwlzZW5k X2dkYiAieVxyIgorKyAgICB9CisrICAgIC1yZSAiLS0tLSBBdHRhY2ggdG8gZGVidWdnZXIgXFw/ IC0tLSBcW15cclxuXF0qIC0tLS0gIiB7CisrCXNlbmRfZ2RiICJuXHIiCisrCWV4cF9jb250aW51 ZQorKyAgICB9CisrfQorKworKyMgSW5pdGlhbGl6YXRpb24gZnJvbSBkZWZhdWx0X2dkYl9zdGFy dC4KKytnZGJfdGVzdCAic2V0IGhlaWdodCAwIgorK2dkYl90ZXN0ICJzZXQgd2lkdGggMCIKKysK KytnZGJfdGVzdCAiYnQiICJpbiBtYWluIFxcKC4qXFwpIGF0IC4qJHtzcmNmaWxlfTokZG91Ymxl X2ZyZWUiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1yYW5nZXMu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1yYW5nZXMuZXhwCitpbmRleCA2MWUx ZmU0Li45MTA5MDMwIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1y YW5nZXMuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXJhbmdlcy5leHAK K0BAIC01NSw2ICs1NSwxMiBAQCBnZGJfc3RhcnQKKyBnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisrIyBUZXN0IGFsc28gb2JqZmls ZS0+cHN5bXRhYnNfYWRkcm1hcCByZWxvY2F0aW9ucyBmb3IgLWZQSUUgLXBpZSBidWlsZHMgYmVs b3cuCisrIyBPbiBzb21lIHRhcmdldHMgaXQgbWF5IHBvc3NpYmx5IGZhaWwgYnV0IHRoZSBwcm9n cmFtIGlzIGJlaW5nIHN0YXJ0ZWQgb25seQorKyMgZm9yIHRoZSBQSUUgYnVpbGQgc28gdHJ5IGl0 IGFueXdheS4KKysKKytydW50b19tYWluCisrCisgIyBDb3JyZWN0IG91dHB1dDoKKyAjIAlMaW5l IDM5IG9mICIuLi8uLi8uL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLlMiIHN0 YXJ0cyBhdCBhZGRyZXNzIDB4NCBhbmQgZW5kcyBhdCAweDguCisgIyBXcm9uZyBvdXRwdXQ6Citk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKK2luZGV4IGQwYzM0OTMuLmZiZjkxMjQgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitAQCAtMjc3 OCw2ICsyNzc4LDExIEBAIHByb2MgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB7IGRlc3QgYXJncyB9IHsK KyAgICAgICByZXR1cm4gMQorICAgICB9CisgCisrICAgICMgV29ya2Fyb3VuZCBQUiBiaW51dGls cy8xMDgwMjoKKysgICAgIyBQcmVzZXJ2ZSB0aGUgJ3gnIGJpdCBhbHNvIGZvciBQSUVzIChQb3Np dGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlcykuCisrICAgIHNldCBwZXJtIFtmaWxlIGF0dHJp YnV0ZXMgJHtkZXN0fSAtcGVybWlzc2lvbnNdCisrICAgIGZpbGUgYXR0cmlidXRlcyAke3N0cmlw cGVkX2ZpbGV9IC1wZXJtaXNzaW9ucyAkcGVybQorKworICAgICAjIEdldCByaWQgb2YgZXZlcnl0 aGluZyBidXQgdGhlIGRlYnVnIGluZm8sIGFuZCBzdG9yZSByZXN1bHQgaW4gZGVidWdfZmlsZQor ICAgICAjIFRoaXMgd2lsbCBiZSBpbiB0aGUgLmRlYnVnIHN1YmRpcmVjdG9yeSwgc2VlIGFib3Zl LgorICAgICBzZXQgcmVzdWx0IFtjYXRjaCAiZXhlYyAkc3RyaXBfdG9fZmlsZV9wcm9ncmFtIC0t b25seS1rZWVwLWRlYnVnICR7ZGVzdH0gLW8gJHtkZWJ1Z19maWxlfSIgb3V0cHV0XQorQEAgLTI4 MTQsNyArMjgxOSwxMiBAQCBwcm9jIGdkYl9nbnVfc3RyaXBfZGVidWcgeyBkZXN0IGFyZ3MgfSB7 CisgICAgICAgcmV0dXJuIDEKKyAgICAgfQorIAorLSAgIHJldHVybiAwCisrICAgICMgV29ya2Fy b3VuZCBQUiBiaW51dGlscy8xMDgwMjoKKysgICAgIyBQcmVzZXJ2ZSB0aGUgJ3gnIGJpdCBhbHNv IGZvciBQSUVzIChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlcykuCisrICAgIHNldCBw ZXJtIFtmaWxlIGF0dHJpYnV0ZXMgJHtzdHJpcHBlZF9maWxlfSAtcGVybWlzc2lvbnNdCisrICAg IGZpbGUgYXR0cmlidXRlcyAke2Rlc3R9IC1wZXJtaXNzaW9ucyAkcGVybQorKworKyAgICByZXR1 cm4gMAorIH0KKyAKKyAjIFRlc3QgdGhlIG91dHB1dCBvZiBHREJfQ09NTUFORCBtYXRjaGVzIHRo ZSBwYXR0ZXJuIG9idGFpbmVkCitAQCAtMzA0MywzICszMDUzLDcwIEBAIGlmIHtbaW5mbyBleGlz dHMgVFJBTlNDUklQVF19IHsKKyAgICAgcmV0dXJuIFt1cGxldmVsIHJlYWxfc2VuZF9nZGIgJGFy Z3NdCisgICB9CisgfQorKworK3Byb2MgY29yZV9maW5kIHtiaW5maWxlIHtkZWxldGVmaWxlcyB7 fX0ge2FyZyAiIn19IHsKKysgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIKKysKKysgICAgc2V0IGRl c3Rjb3JlICIkYmluZmlsZS5jb3JlIgorKyAgICBmaWxlIGRlbGV0ZSAkZGVzdGNvcmUKKysKKysg ICAgIyBDcmVhdGUgYSBjb3JlIGZpbGUgbmFtZWQgIiRkZXN0Y29yZSIgcmF0aGVyIHRoYW4ganVz dCAiY29yZSIsIHRvCisrICAgICMgYXZvaWQgcHJvYmxlbXMgd2l0aCBzeXMgYWRtaW4gdHlwZXMg dGhhdCBsaWtlIHRvIHJlZ3VsYXJseSBwcnVuZSBhbGwKKysgICAgIyBmaWxlcyBuYW1lZCAiY29y ZSIgZnJvbSB0aGUgc3lzdGVtLgorKyAgICAjCisrICAgICMgQXJiaXRyYXJpbHkgdHJ5IHNldHRp bmcgdGhlIGNvcmUgc2l6ZSBsaW1pdCB0byAidW5saW1pdGVkIiBzaW5jZQorKyAgICAjIHRoaXMg ZG9lcyBub3QgaHVydCBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBjb21tYW5kIGRvZXMgbm90IHdvcmsg YW5kCisrICAgICMgYWxsb3dzIHVzIHRvIGdlbmVyYXRlIGEgY29yZSBvbiBzeXN0ZW1zIHdoZXJl IGl0IGRvZXMuCisrICAgICMKKysgICAgIyBTb21lIHN5c3RlbXMgYXBwZW5kICJjb3JlIiB0byB0 aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbTsgb3RoZXJzIGFwcGVuZAorKyAgICAjIHRoZSBuYW1lIG9m IHRoZSBwcm9ncmFtIHRvICJjb3JlIjsgc3RpbGwgb3RoZXJzIChsaWtlIExpbnV4LCBhcyBvZgor KyAgICAjIE1heSAyMDAzKSBjcmVhdGUgY29yZXMgbmFtZWQgImNvcmUuUElEIi4gIEluIHRoZSBs YXR0ZXIgY2FzZSwgd2UKKysgICAgIyBjb3VsZCBoYXZlIG1hbnkgY29yZSBmaWxlcyBseWluZyBh cm91bmQsIGFuZCBpdCBtYXkgYmUgZGlmZmljdWx0IHRvCisrICAgICMgdGVsbCB3aGljaCBvbmUg aXMgb3Vycywgc28gbGV0J3MgcnVuIHRoZSBwcm9ncmFtIGluIGEgc3ViZGlyZWN0b3J5LgorKyAg ICBzZXQgZm91bmQgMAorKyAgICBzZXQgY29yZWRpciAiJHtvYmpkaXJ9LyR7c3ViZGlyfS9jb3Jl ZGlyLltnZXRwaWRdIgorKyAgICBmaWxlIG1rZGlyICRjb3JlZGlyCisrICAgIGNhdGNoICJzeXN0 ZW0gXCIoY2QgJHtjb3JlZGlyfTsgdWxpbWl0IC1jIHVubGltaXRlZDsgJHtiaW5maWxlfSAke2Fy Z307IHRydWUpID4vZGV2L251bGwgMj4mMVwiIgorKyAgICAjICAgICAgcmVtb3RlX2V4ZWMgaG9z dCAiJHtiaW5maWxlfSIKKysgICAgZm9yZWFjaCBpICIke2NvcmVkaXJ9L2NvcmUgJHtjb3JlZGly fS9jb3JlLmNvcmVtYWtlci5jICR7YmluZmlsZX0uY29yZSIgeworKwlpZiBbcmVtb3RlX2ZpbGUg YnVpbGQgZXhpc3RzICRpXSB7CisrCSAgICByZW1vdGVfZXhlYyBidWlsZCAibXYgJGkgJGRlc3Rj b3JlIgorKwkgICAgc2V0IGZvdW5kIDEKKysJfQorKyAgICB9CisrICAgICMgQ2hlY2sgZm9yICJj b3JlLlBJRCIuCisrICAgIGlmIHsgJGZvdW5kID09IDAgfSB7CisrCXNldCBuYW1lcyBbZ2xvYiAt bm9jb21wbGFpbiAtZGlyZWN0b3J5ICRjb3JlZGlyIGNvcmUuKl0KKysJaWYge1tsbGVuZ3RoICRu YW1lc10gPT0gMX0geworKwkgICAgc2V0IGNvcmVmaWxlIFtmaWxlIGpvaW4gJGNvcmVkaXIgW2xp bmRleCAkbmFtZXMgMF1dCisrCSAgICByZW1vdGVfZXhlYyBidWlsZCAibXYgJGNvcmVmaWxlICRk ZXN0Y29yZSIKKysJICAgIHNldCBmb3VuZCAxCisrCX0KKysgICAgfQorKyAgICBpZiB7ICRmb3Vu ZCA9PSAwIH0geworKwkjIFRoZSBicmFpbmRhbWFnZWQgSFBVWCBzaGVsbCBxdWl0cyBhZnRlciB0 aGUgdWxpbWl0IC1jIGFib3ZlCisrCSMgd2l0aG91dCBleGVjdXRpbmcgJHtiaW5maWxlfS4gIFNv IHdlIHRyeSBhZ2FpbiB3aXRob3V0IHRoZQorKwkjIHVsaW1pdCBoZXJlIGlmIHdlIGRpZG4ndCBm aW5kIGEgY29yZSBmaWxlIGFib3ZlLgorKwkjIE9oLCBJIHNob3VsZCBtZW50aW9uIHRoYXQgYW55 ICJicmFpbmRhbWFnZWQiIG5vbi1Vbml4IHN5c3RlbSBoYXMKKysJIyB0aGUgc2FtZSBwcm9ibGVt LiBJIGxpa2UgdGhlIGNkIGJpdCB0b28sIGl0J3MgcmVhbGx5IG5lYXQnbiBzdHVmZi4KKysJY2F0 Y2ggInN5c3RlbSBcIihjZCAke29iamRpcn0vJHtzdWJkaXJ9OyAke2JpbmZpbGV9OyB0cnVlKSA+ L2Rldi9udWxsIDI+JjFcIiIKKysJZm9yZWFjaCBpICIke29iamRpcn0vJHtzdWJkaXJ9L2NvcmUg JHtvYmpkaXJ9LyR7c3ViZGlyfS9jb3JlLmNvcmVtYWtlci5jICR7YmluZmlsZX0uY29yZSIgewor KwkgICAgaWYgW3JlbW90ZV9maWxlIGJ1aWxkIGV4aXN0cyAkaV0geworKwkJcmVtb3RlX2V4ZWMg YnVpbGQgIm12ICRpICRkZXN0Y29yZSIKKysJCXNldCBmb3VuZCAxCisrCSAgICB9CisrCX0KKysg ICAgfQorKworKyAgICAjIFRyeSB0byBjbGVhbiB1cCBhZnRlciBvdXJzZWx2ZXMuIAorKyAgICBm b3JlYWNoIGRlbGV0ZWZpbGUgJGRlbGV0ZWZpbGVzIHsKKysJcmVtb3RlX2ZpbGUgYnVpbGQgZGVs ZXRlIFtmaWxlIGpvaW4gJGNvcmVkaXIgJGRlbGV0ZWZpbGVdCisrICAgIH0KKysgICAgcmVtb3Rl X2V4ZWMgYnVpbGQgInJtZGlyICRjb3JlZGlyIgorKwkKKysgICAgaWYgeyAkZm91bmQgPT0gMCAg fSB7CisrCXdhcm5pbmcgImNhbid0IGdlbmVyYXRlIGEgY29yZSBmaWxlIC0gY29yZSB0ZXN0cyBz dXBwcmVzc2VkIC0gY2hlY2sgdWxpbWl0IC1jIgorKwlyZXR1cm4gIiIKKysgICAgfQorKyAgICBy ZXR1cm4gJGRlc3Rjb3JlCisrfQoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGIt YXJjaGVyLnBhdGNoCmluZGV4IGMzMzAyMTIuLmMyNTg0NGIgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNo ZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiw3ICsyLDcgQEAgaHR0cDovL3Nv dXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoKLWNvbW1p dCA3Y2I4NjBmMDNlMjQzN2M5NzIzOTMzNGViZTI0MGQwNmY0NTcyM2UwCitjb21taXQgNmU3Mzk4 OGY2NTNiYTk4NmU4NzQyZjIwOGYxN2VjMDg0MjkyY2JkNQogCiBicmFuY2ggYGFyY2hlcicgLSB0 aGUgbWVyZ2Ugb2YgYnJhbmNoZXM6CiBhcmNoZXItdHJvbWV5LWNhbGwtZnJhbWUtY2ZhCkBAIC0x OSwxMiArMTksMTIgQEAgYXJjaGVyLXBtdWxkb29uLW5leHQtb3Zlci10aHJvdwogCiAKIGRpZmYg LS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IGY1ZTFkZGUu LjczZWU1NWMgMTAwNjQ0CitpbmRleCA3ZDUzMjA1Li4zMTlmYWM0IDEwMDY0NAogLS0tIGEvZ2Ri L01ha2VmaWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KIEBAIC0xNjksNiArMTY5LDEwIEBA IFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAK ICAjIERpZCB0aGUgdXNlciBnaXZlIHVzIGEgLS13aXRoLWdkYi1kYXRhZGlyIG9wdGlvbj8KLSBH REJfREFUQURJUl9QQVRIID0gQEdEQl9EQVRBRElSX1BBVEhACisgR0RCX0RBVEFESVIgPSBAR0RC X0RBVEFESVJACiAgCiArIyBUaGUgYXJndW1lbnQgdG8gLS13aXRoLXB5dGhvbmRpci4gIElmIG5v dCBnaXZlbiwgdGhpcyBpcwogKyMgR0RCX0RBVEFESVJfUEFUSC9weXRob24uCkBAIC0xOTQsMTAg KzE5NCwxMCBAQCBpbmRleCBmNWUxZGRlLi43M2VlNTVjIDEwMDY0NAogICMgRGVwZW5kZW5jeSB0 cmFja2luZy4gIE1vc3Qgb2YgdGhpcyBpcyBjb25kaXRpb25hbCBvbiBHTlUgTWFrZSBiZWluZwog ICMgZm91bmQgYnkgY29uZmlndXJlOyBpZiBHTlUgTWFrZSBpcyBub3QgZm91bmQsIHdlIGZhbGwg YmFjayB0byBhCiBkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwotaW5kZXggNGZjNmRj ZC4uNjc0NGIyMyAxMDA2NDQKK2luZGV4IDhkMzJjMzQuLmY3ZWEyMWIgMTAwNjQ0CiAtLS0gYS9n ZGIvTkVXUwogKysrIGIvZ2RiL05FV1MKLUBAIC00NjIsNiArNDYyLDEzIEBAIHg4Ni94ODZfNjQg RGFyd2luCQlpWzM0NTY3XTg2LSotZGFyd2luKgorQEAgLTQ3Niw2ICs0NzYsMTMgQEAgeDg2L3g4 Nl82NCBEYXJ3aW4JCWlbMzQ1NjddODYtKi1kYXJ3aW4qCiAgCiAgeDg2XzY0IE1pbkdXCQkJeDg2 XzY0LSotbWluZ3cqCiAgCkBAIC0yOTAsNyArMjkwLDcgQEAgaW5kZXggOWI1ZDJjNi4uNjE2NzZh OSAxMDA2NDQKICAgIGFkYV9kdW1wX3N1YmV4cF9ib2R5LAogICAgYWRhX2V2YWx1YXRlX3N1YmV4 cAogZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYyBiL2dkYi9hbWQ2NC1saW51eC1u YXQuYwotaW5kZXggN2Q4NDYxYy4uYTZkMzVkNyAxMDA2NDQKK2luZGV4IDdkODQ2MWMuLmZjNGIz ZTAgMTAwNjQ0CiAtLS0gYS9nZGIvYW1kNjQtbGludXgtbmF0LmMKICsrKyBiL2dkYi9hbWQ2NC1s aW51eC1uYXQuYwogQEAgLTI3MCw2ICsyNzAsOCBAQCBhbWQ2NF9saW51eF9kcl9nZXQgKHB0aWRf dCBwdGlkLCBpbnQgcmVnbnVtKQpAQCAtMzQwLDcgKzM0MCw3IEBAIGluZGV4IDdkODQ2MWMuLmE2 ZDM1ZDcgMTAwNjQ0CiAgICByZXR1cm4gYW1kNjRfbGludXhfZHJfZ2V0IChpbmZlcmlvcl9wdGlk LCBEUl9TVEFUVVMpOwogIH0KICAKLSsvKiBVbnNldCBWQUxVRSBiaXRzIGluIERSX1NUQVRVUyBp biBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCisrLyogVW5zZXQgTUFTSyBiaXRzIGluIERSX1NU QVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCiArCiArc3RhdGljIHZvaWQKICthbWQ2 NF9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykKQEAgLTQ2Myw3ICs0 NjMsNyBAQCBpbmRleCA1M2U3MzcxLi5kMzczZjhhIDEwMDY0NAogKwogICNlbmRpZiAvKiBCTE9D S19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3BvaW50LmMK LWluZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CitpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEw MDY0NAogLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwogQEAg LTYxLDYgKzYxLDcgQEAKQEAgLTY4NCwxNCArNjg0LDE0IEBAIGluZGV4IDgxMWNkZmIuLmIwYmYz MTQgMTAwNjQ0CiArCiArICAvKiBGaW5kIEJDX0wgd2hpY2ggaXMgYSBsZWZ0bW9zdCBlbGVtZW50 IHdoaWNoIG1heSBhZmZlY3QgQlVGIGNvbnRlbnQuICBJdCBpcwogKyAgICAgc2FmZSB0byByZXBv cnQgbG93ZXIgdmFsdWUgYnV0IGEgZmFpbHVyZSB0byByZXBvcnQgaGlnaGVyIG9uZS4gICovCi0r CisgCistICBBTExfQlBfTE9DQVRJT05TIChiKQogKyAgYmNfbCA9IDA7CiArICBiY19yID0gYnBf bG9jYXRpb25fY291bnQ7CiArICB3aGlsZSAoYmNfbCArIDEgPCBiY19yKQogKyAgICB7CiArICAg ICAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotIAotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYikKKysK ICsgICAgICBiYyA9IChiY19sICsgYmNfcikgLyAyOwogKyAgICAgIGIgPSBicF9sb2NhdGlvblti Y107CiArCkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBpbmRleCA4MTFjZGZiLi5iMGJmMzE0IDEwMDY0 NAogIC8qIElmIFNIT1VMRF9JTlNFUlQgaXMgZmFsc2UsIGRvIG5vdCBpbnNlcnQgYW55IGJyZWFr cG9pbnQgbG9jYXRpb25zCiAgICAgaW50byB0aGUgaW5mZXJpb3IsIG9ubHkgcmVtb3ZlIGFscmVh ZHktaW5zZXJ0ZWQgbG9jYXRpb25zIHRoYXQgbm8KICAgICBsb25nZXIgc2hvdWxkIGJlIGluc2Vy dGVkLiAgRnVuY3Rpb25zIHRoYXQgZGVsZXRlIGEgYnJlYWtwb2ludCBvcgotQEAgLTc3NzcsNDkg Kzc5NTEsNjYgQEAgc3RhdGljIHZvaWQKK0BAIC03Nzc3LDQ5ICs3OTUxLDc4IEBAIHN0YXRpYyB2 b2lkCiAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICB7 CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKQEAgLTE2MjUsMTEgKzE2MjUsMTEgQEAgaW5kZXgg ODExY2RmYi4uYjBiZjMxNCAxMDA2NDQKICAgICAgewogLSAgICAgIC8qIFRlbGxzIGlmICdsb2Mn IGlzIGZvdW5kIGFtb3VuZyB0aGUgbmV3IGxvY2F0aW9ucy4gIElmIG5vdCwgd2UKICsgICAgICBz dHJ1Y3QgYnBfbG9jYXRpb24gKm9sZF9sb2MgPSAqb2xkX2xvY3A7CisrICAgICAgc3RydWN0IGJw X2xvY2F0aW9uICoqbG9jMnA7CiArCiArICAgICAgLyogVGVsbHMgaWYgJ29sZF9sb2MnIGlzIGZv dW5kIGFtb3VuZyB0aGUgbmV3IGxvY2F0aW9ucy4gIElmIG5vdCwgd2UKICAJIGhhdmUgdG8gZnJl ZSBpdC4gICovCi0tICAgICAgaW50IGZvdW5kX29iamVjdCA9IDA7Ci0rICAgICAgaW50IGZvdW5k X29iamVjdDsKKyAgICAgICBpbnQgZm91bmRfb2JqZWN0ID0gMDsKICAgICAgICAvKiBUZWxscyBp ZiB0aGUgbG9jYXRpb24gc2hvdWxkIHJlbWFpbiBpbnNlcnRlZCBpbiB0aGUgdGFyZ2V0LiAgKi8K ICAgICAgICBpbnQga2VlcF9pbl90YXJnZXQgPSAwOwogICAgICAgIGludCByZW1vdmVkID0gMDsK QEAgLTE2NDMsMTMgKzE2NDMsMjQgQEAgaW5kZXggODExY2RmYi4uYjBiZjMxNCAxMDA2NDQKICsg ICAgICAvKiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIgYmUg bmVlZGVkLiAgU3RvcCBlaXRoZXIKICsJIGF0IG9yIGJlaW5nIHRoZSBvbmUgbWF0Y2hpbmcgT0xE X0xPQy4gICovCiArICAgICAgd2hpbGUgKGxvY3AgPCBicF9sb2NhdGlvbiArIGJwX2xvY2F0aW9u X2NvdW50Ci0rCSAgICAgJiYgYnBfbG9jYXRpb25fY29tcGFyZSAoKmxvY3AsIG9sZF9sb2MpIDwg MCkKKysJICAgICAmJiAoKmxvY3ApLT5hZGRyZXNzIDwgb2xkX2xvYy0+YWRkcmVzcykKICsJbG9j cCsrOwotKyAgICAgIGZvdW5kX29iamVjdCA9IGxvY3AgPCBicF9sb2NhdGlvbiArIGJwX2xvY2F0 aW9uX2NvdW50ICYmICpsb2NwID09IG9sZF9sb2M7CisrCisrICAgICAgZm9yIChsb2MycCA9IGxv Y3A7CisrCSAgIChsb2MycCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQKKysJICAg ICYmICgqbG9jMnApLT5hZGRyZXNzID09IG9sZF9sb2MtPmFkZHJlc3MpOworKwkgICBsb2MycCsr KQorKwl7CisrCSAgaWYgKCpsb2MycCA9PSBvbGRfbG9jKQorKwkgICAgeworKwkgICAgICBmb3Vu ZF9vYmplY3QgPSAxOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQogIAogICAgICAgIC8q IElmIHRoaXMgbG9jYXRpb24gaXMgbm8gbG9uZ2VyIHByZXNlbnQsIGFuZCBpbnNlcnRlZCwgbG9v ayBpZiB0aGVyZSdzCiAgCSBtYXliZSBhIG5ldyBsb2NhdGlvbiBhdCB0aGUgc2FtZSBhZGRyZXNz LiAgSWYgc28sIG1hcmsgdGhhdCBvbmUgCi1AQCAtNzgyNywxMSArODAxOCwxMSBAQCB1cGRhdGVf Z2xvYmFsX2xvY2F0aW9uX2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQorQEAgLTc4MjcsMTEgKzgw MzAsMTEgQEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkK ICAJIGRvbid0IGhhdmUgYSB0aW1lIHdpbmRvdyB3aGVyZSBhIGJyZWFrcG9pbnQgYXQgY2VydGFp biBsb2NhdGlvbiBpcyBub3QKICAJIGluc2VydGVkLiAgKi8KICAKQEAgLTE2NjMsNyArMTY3NCw3 IEBAIGluZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CiAgCSAgICB7CiAgCSAgICAgIC8qIFRo ZSBsb2NhdGlvbiBpcyBzdGlsbCBwcmVzZW50IGluIHRoZSBsb2NhdGlvbiBsaXN0LCBhbmQgc3Rp bGwKICAJCSBzaG91bGQgYmUgaW5zZXJ0ZWQuICBEb24ndCBkbyBhbnl0aGluZy4gICovCi1AQCAt Nzg0MiwzNyArODAzMyw0NiBAQCB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKGludCBzaG91 bGRfaW5zZXJ0KQorQEAgLTc4NDIsMzcgKzgwNDUsNDYgQEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlv bl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAJICAgICAgLyogVGhlIGxvY2F0aW9uIGlzIGVp dGhlciBubyBsb25nZXIgcHJlc2VudCwgb3IgZ290IGRpc2FibGVkLgogIAkJIFNlZSBpZiB0aGVy ZSdzIGFub3RoZXIgbG9jYXRpb24gYXQgdGhlIHNhbWUgYWRkcmVzcywgaW4gd2hpY2ggCiAgCQkg Y2FzZSB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSB0aGlzIG9uZSBmcm9tIHRoZSB0YXJnZXQuICAq LwpAQCAtMTY4NSwyNCArMTY5NiwyNCBAQCBpbmRleCA4MTFjZGZiLi5iMGJmMzE0IDEwMDY0NAog KwogKwkgICAgICBpZiAoYnJlYWtwb2ludF9hZGRyZXNzX2lzX21lYW5pbmdmdWwgKG9sZF9sb2Mt Pm93bmVyKSkKICsJCXsKLSsJCSAgc3RydWN0IGJwX2xvY2F0aW9uICoqbG9jMnA7Ci0rCiArCQkg IGZvciAobG9jMnAgPSBsb2NwOwotKwkJICAgICAgIGxvYzJwIDwgYnBfbG9jYXRpb24gKyBicF9s b2NhdGlvbl9jb3VudAotKwkJICAgICAgICYmICgqbG9jMnApLT5hZGRyZXNzID09IG9sZF9sb2Mt PmFkZHJlc3M7CisrCQkgICAgICAgKGxvYzJwIDwgYnBfbG9jYXRpb24gKyBicF9sb2NhdGlvbl9j b3VudAorKwkJCSYmICgqbG9jMnApLT5hZGRyZXNzID09IG9sZF9sb2MtPmFkZHJlc3MpOwogKwkJ ICAgICAgIGxvYzJwKyspCiArCQkgICAgewogKwkJICAgICAgc3RydWN0IGJwX2xvY2F0aW9uICps b2MyID0gKmxvYzJwOwogKwotKwkJICAgICAgLyogRm9yIHRoZSBzYWtlIG9mIHNob3VsZF9iZV9p bnNlcnRlZC4KLSsJCQkgRHVwbGljYXRlcyBjaGVjayBiZWxvdyB3aWxsIGZpeCB1cCB0aGlzIGxh dGVyLiAgKi8KLSsJCSAgICAgIGxvYzItPmR1cGxpY2F0ZSA9IDA7Ci0rCQkgICAgICBpZiAobG9j MiAhPSBvbGRfbG9jICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jMikpCi0rCQkJewkJICAKLSsJ CQkgIGxvYzItPmluc2VydGVkID0gMTsKLSsJCQkgIGxvYzItPnRhcmdldF9pbmZvID0gb2xkX2xv Yy0+dGFyZ2V0X2luZm87Ci0rCQkJICBrZWVwX2luX3RhcmdldCA9IDE7Ci0rCQkJICBicmVhazsK KysJCQl7CisrCQkJICAvKiBGb3IgdGhlIHNha2Ugb2Ygc2hvdWxkX2JlX2luc2VydGVkLgorKwkJ CSAgICAgRHVwbGljYXRlcyBjaGVjayBiZWxvdyB3aWxsIGZpeCB1cCB0aGlzIGxhdGVyLiAgKi8K KysJCQkgIGxvYzItPmR1cGxpY2F0ZSA9IDA7CisrCQkJICBpZiAobG9jMiAhPSBvbGRfbG9jICYm IHNob3VsZF9iZV9pbnNlcnRlZCAobG9jMikpCisrCQkJICAgIHsKKysJCQkgICAgICBsb2MyLT5p bnNlcnRlZCA9IDE7CisrCQkJICAgICAgbG9jMi0+dGFyZ2V0X2luZm8gPSBvbGRfbG9jLT50YXJn ZXRfaW5mbzsKKysJCQkgICAgICBrZWVwX2luX3RhcmdldCA9IDE7CisrCQkJICAgICAgYnJlYWs7 CisrCQkJICAgIH0KICsJCQl9CiArCQkgICAgfQogKwkJfQpAQCAtMTcyOCw3ICsxNzM5LDcgQEAg aW5kZXggODExY2RmYi4uYjBiZjMxNCAxMDA2NDQKICAJCX0KICAJICAgICAgcmVtb3ZlZCA9IDE7 CiAgCSAgICB9Ci1AQCAtNzg5NCwxOSArODA5NCw1OSBAQCB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9u X2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQorQEAgLTc4OTQsMTkgKzgxMDYsNTkgQEAgdXBkYXRl X2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAJCSBsb25nZXIgbmVl ZCB0byBrZWVwIHRoaXMgYnJlYWtwb2ludC4gIFRoaXMgaXMganVzdCBhCiAgCQkgaGV1cmlzdGlj LCBidXQgaWYgaXQncyB3cm9uZywgd2UnbGwgcmVwb3J0IHVuZXhwZWN0ZWQgU0lHVFJBUCwKICAJ CSB3aGljaCBpcyB1c2FiaWxpdHkgaXNzdWUsIGJ1dCBub3QgYSBjb3JyZWN0bmVzcyBwcm9ibGVt LiAgKi8KQEAgLTE3OTQsNyArMTgwNSw3IEBAIGluZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0 CiAgICAgIH0KICAKICAgIGlmIChicmVha3BvaW50c19hbHdheXNfaW5zZXJ0ZWRfbW9kZSAoKSAm JiBzaG91bGRfaW5zZXJ0Ci1AQCAtODA4Myw2ICs4MzIzLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5KQorQEAgLTgwODMsNiArODMzNSw3IEBAIGRlbGV0ZV9jb21t YW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICAJICAgICYmIGItPnR5cGUgIT0gYnBfdGhy ZWFkX2V2ZW50CiAgCSAgICAmJiBiLT50eXBlICE9IGJwX292ZXJsYXlfZXZlbnQKICAJICAgICYm IGItPnR5cGUgIT0gYnBfbG9uZ2ptcF9tYXN0ZXIKQEAgLTE4MDIsNyArMTgxMyw3IEBAIGluZGV4 IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CiAgCSAgICAmJiBiLT5udW1iZXIgPj0gMCkKICAJICB7 CiAgCSAgICBicmVha3NfdG9fZGVsZXRlID0gMTsKLUBAIC04MTAyLDYgKzgzNDMsNyBAQCBkZWxl dGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCitAQCAtODEwMiw2ICs4MzU1LDcg QEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkJJiYgYi0+dHlw ZSAhPSBicF9qaXRfZXZlbnQKICAJCSYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAogIAkJ JiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpAQCAtMTgxMCw3ICsxODIxLDcgQEAgaW5k ZXggODExY2RmYi4uYjBiZjMxNCAxMDA2NDQKICAJCSYmIGItPm51bWJlciA+PSAwKQogIAkgICAg ICBkZWxldGVfYnJlYWtwb2ludCAoYik7CiAgCSAgfQotQEAgLTg0MDQsNiArODY0Niw3IEBAIGJy ZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKK0BAIC04NDA0LDYgKzg2NTgsNyBAQCBi cmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCiAgCSByZXNldCBsYXRlciBieSBicmVh a3BvaW50X3JlX3NldC4gICovCiAgICAgIGNhc2UgYnBfb3ZlcmxheV9ldmVudDoKICAgICAgY2Fz ZSBicF9sb25nam1wX21hc3RlcjoKQEAgLTE4MTgsNyArMTgyOSw3IEBAIGluZGV4IDgxMWNkZmIu LmIwYmYzMTQgMTAwNjQ0CiAgICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogICAgICAgIGJy ZWFrOwogIAotQEAgLTg0MjcsNiArODY3MCw4IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9p ZCAqYmludCkKK0BAIC04NDI3LDYgKzg2ODIsOCBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZv aWQgKmJpbnQpCiAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1wX3Jl c3VtZToKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CkBAIC0xODI3LDcgKzE4MzgsNyBAQCBpbmRl eCA4MTFjZGZiLi5iMGJmMzE0IDEwMDY0NAogICAgICAgIGJyZWFrOwogICAgICB9CiAgCi1AQCAt ODQ2Miw2ICs4NzA3LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCitAQCAtODQ2Miw2ICs4 NzE5LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0 ZXJfYnJlYWtwb2ludCAoIl9sb25nam1wIik7CiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJl YWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3Bv aW50ICgiX3NpZ2xvbmdqbXAiKTsKQEAgLTE4MzUsNyArMTg0Niw3IEBAIGluZGV4IDgxMWNkZmIu LmIwYmYzMTQgMTAwNjQ0CiAgfQogIAwKICAvKiBSZXNldCB0aGUgdGhyZWFkIG51bWJlciBvZiB0 aGlzIGJyZWFrcG9pbnQ6Ci1AQCAtOTMyNyw2ICs5NTczLDIyIEBAIGFsbF90cmFjZXBvaW50cyAo KQorQEAgLTkzMjcsNiArOTU4NSwyMiBAQCBhbGxfdHJhY2Vwb2ludHMgKCkKICAgIHJldHVybiB0 cF92ZWM7CiAgfQogIApAQCAtMTg1OCw3ICsxODY5LDcgQEAgaW5kZXggODExY2RmYi4uYjBiZjMx NCAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWss IGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQg YXMgYSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTk4NTAsNCArMTAxMTIsNSBA QCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5z ZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCitAQCAtOTg1MCw0ICsxMDEyNCw1IEBAIGluZmVyaW9yIGlu IGFsbC1zdG9wIG1vZGUsIGdkYiBiZWhhdmVzIGFzIGlmIGFsd2F5cy1pbnNlcnRlZCBtb2RlIGlz IG9mZi4iKSwKICAgIGF1dG9tYXRpY19oYXJkd2FyZV9icmVha3BvaW50cyA9IDE7CiAgCiAgICBv YnNlcnZlcl9hdHRhY2hfYWJvdXRfdG9fcHJvY2VlZCAoYnJlYWtwb2ludF9hYm91dF90b19wcm9j ZWVkKTsKQEAgLTI5MDAsNyArMjkxMSw3IEBAIGluZGV4IDAwMDAwMDAuLjQ5YWM0MjAKICsjZGVm aW5lIFRBUkdFVF9SRUdJT05fU0laRV9PS19GT1JfSFdfV0FUQ0hQT0lOVChTSVpFKSAxCiArCiBk aWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKLWluZGV4IDk5YWNjMmYu LmEyZWExYWUgMTAwNzU1CitpbmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1NQogLS0tIGEvZ2Ri L2NvbmZpZ3VyZQogKysrIGIvZ2RiL2NvbmZpZ3VyZQogQEAgLTY3Niw2ICs2NzYsOCBAQCBSRVBP UlRfQlVHU19UTwpAQCAtMzAxNSw3ICszMDI2LDcgQEAgaW5kZXggOTlhY2MyZi4uYTJlYTFhZSAx MDA3NTUKICAKICAgICMgRmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2Vu IGZyb20gcHl0aG9uLWNvbmZpZyAtLWNmbGFncykuCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3Vy ZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKLWluZGV4IGIzMWQ5YjcuLmExOTY5YmMgMTAwNjQ0Citp bmRleCAwZTQyMTgyLi5lN2Y5N2NmIDEwMDY0NAogLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwogKysr IGIvZ2RiL2NvbmZpZ3VyZS5hYwogQEAgLTEwNyw2ICsxMDcsNTEgQEAgQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRIXSwgW2F1dG9tYXRpY2FsbHkgcmVsb2NhdGUg dGhpcyBwYXQKQEAgLTMxMDIsNyArMzExMyw3IEBAIGluZGV4IDYyODAwYjguLjk3ZDU4N2IgMTAw NjQ0CiAgCQkJeyAkJCA9ICQxLmNvbXA7CiAgCQkJICBpZiAoJDIpICQkID0gZmlsbF9jb21wIChE RU1BTkdMRV9DT01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQyKTsgfQogZGlmZiAtLWdpdCBhL2dk Yi9jcC1uYW1lc3BhY2UuYyBiL2dkYi9jcC1uYW1lc3BhY2UuYwotaW5kZXggZDJkOGYyZS4uYWYw YmEyOCAxMDA2NDQKK2luZGV4IGQyZDhmMmUuLmRiMjZhMDEgMTAwNjQ0CiAtLS0gYS9nZGIvY3At bmFtZXNwYWNlLmMKICsrKyBiL2dkYi9jcC1uYW1lc3BhY2UuYwogQEAgLTM2LDE0ICszNiwxNyBA QCBzdGF0aWMgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3BfY29weV91c2luZ3MgKHN0cnVjdCB1c2lu Z19kaXJlY3QgKnVzaW5nLApAQCAtMzI4Miw3ICszMjkzLDcgQEAgaW5kZXggZDJkOGYyZS4uYWYw YmEyOCAxMDA2NDQKICAgICAgICBpZiAoc3ltICE9IE5VTEwpCiAgCXJldHVybiBzeW07CiAgICAg IH0KLUBAIC0zMjAsMjUgKzM3Nyw4NyBAQCBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBj aGFyICpuYW1lLAorQEAgLTMyMCwyNSArMzc3LDk4IEBAIGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUg KGNvbnN0IGNoYXIgKm5hbWUsCiAgICBuYW1lc3BhY2UgPSBhbGxvY2EgKHNjb3BlX2xlbiArIDEp OwogICAgc3RybmNweSAobmFtZXNwYWNlLCBzY29wZSwgc2NvcGVfbGVuKTsKICAgIG5hbWVzcGFj ZVtzY29wZV9sZW5dID0gJ1wwJzsKQEAgLTMzMTksNiArMzMzMCwxNiBAQCBpbmRleCBkMmQ4ZjJl Li5hZjBiYTI4IDEwMDY0NAogKyAgICB9CiArfQogKworKy8qIFVzZWQgZm9yIGNsZWFudXBzIHRv IHJlc2V0IHRoZSAic2VhcmNoZWQiIGZsYWcgaW5jYXNlCisrICAgb2YgYW4gZXJyb3IuICAqLwor KworK3N0YXRpYyB2b2lkCisrcmVzZXRfZGlyZWN0aXZlX3NlYXJjaGVkICh2b2lkICpkYXRhKQor K3sKKysgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmRpcmVjdCA9IGRhdGE7CisrICBkaXJlY3QtPnNl YXJjaGVkID0gMDsKKyt9CisrCiArLyogU2VhcmNoIGZvciBOQU1FIGJ5IGFwcGx5aW5nIGFsbCBp bXBvcnQgc3RhdGVtZW50cyBiZWxvbmdpbmcKICsgICB0byBCTE9DSyB3aGljaCBhcmUgYXBwbGlj YWJsZSBpbiBTQ09QRS4gSWYgREVDTEFSQVRJT05fT05MWSB0aGUgc2VhcmNoCiArICAgaXMgcmVz dHJpY3RlZCB0byB1c2luZyBkZWNsYXJhdGlvbnMuCkBAIC0zMzUxLDExICszMzcyLDExIEBAIGlu ZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAtCQkJICAgIGNvbnN0IHN0cnVjdCBibG9jayAq YmxvY2ssCiAtCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKICtjcF9sb29rdXBfc3lt Ym9sX2ltcG9ydHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBkb21haW5fZW51bSBkb21haW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBk ZWNsYXJhdGlvbl9vbmx5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VhcmNo X3BhcmVudHMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBkZWNsYXJhdGlvbl9vbmx5LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHNlYXJjaF9wYXJlbnRzKQogIHsKIC0gIGNvbnN0IHN0cnVjdCB1 c2luZ19kaXJlY3QgKmN1cnJlbnQ7CiAtICBzdHJ1Y3Qgc3ltYm9sICpzeW07CkBAIC0zMzYzLDYg KzMzODQsNyBAQCBpbmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogKyAgc3RydWN0IHN5bWJv bCAqc3ltID0gTlVMTDsKICsgIGludCBkaXJlY3RpdmVfbWF0Y2g7CiArICBpbnQgY3VycmVudF9s aW5lOworKyAgc3RydWN0IGNsZWFudXAgKnNlYXJjaGVkX2NsZWFudXA7CiArCiArICBpZighZGVj bGFyYXRpb25fb25seSkKICsgICAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBzeW1ib2wgaW4g dGhlIGdpdmVuIG5hbWVzcGFjZS4gICovCkBAIC0zMzgyLDcgKzM0MDQsNyBAQCBpbmRleCBkMmQ4 ZjJlLi5hZjBiYTI4IDEwMDY0NAogICAgICAgbmFtZXMgdG8gdGhlIG5hbWVzcGFjZSB3ZSdyZSBz ZWFyY2hpbmcgaW4sIHNlZSBpZiB3ZSBjYW4gZmluZCBhCiAgICAgICBtYXRjaCBieSBhcHBseWlu ZyB0aGVtLiAgKi8KICAKLUBAIC0zNDYsMzkgKzQ2NSw3NCBAQCBjcF9sb29rdXBfc3ltYm9sX25h bWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorQEAgLTM0NiwzOSArNDc2LDc4IEBAIGNw X2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCiAgICAgICAg IGN1cnJlbnQgIT0gTlVMTDsKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpCiAgICAg IHsKQEAgLTM0MDUsNiArMzQyNyw4IEBAIGluZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAt CQkJCQkgICAgYmxvY2ssCiAtCQkJCQkgICAgZG9tYWluKTsKICsJICBjdXJyZW50LT5zZWFyY2hl ZCA9IDE7CisrCSAgc2VhcmNoZWRfY2xlYW51cCA9IG1ha2VfY2xlYW51cCAocmVzZXRfZGlyZWN0 aXZlX3NlYXJjaGVkLCBjdXJyZW50KTsKKysKICsJICAvKiBJZiB0aGVyZSBpcyBhbiBpbXBvcnQg b2YgYSBzaW5nbGUgZGVjbGFyYXRpb24sIGNvbXBhcmUgdGhlIGltcG9ydGVkCiArCSAgICAgZGVj bGFyYXRpb24gd2l0aCB0aGUgc291Z2h0IG91dCBuYW1lLiBJZiB0aGVyZSBpcyBhIG1hdGNoIHBh c3MKICsJICAgICBjdXJyZW50LT5pbXBvcnRfc3JjIGFzIE5BTUVTUEFDRSB0byBkaXJlY3QgdGhl IHNlYXJjaCB0b3dhcmRzIHRoZQpAQCAtMzQxMywyMyArMzQzNywyNSBAQCBpbmRleCBkMmQ4ZjJl Li5hZjBiYTI4IDEwMDY0NAogKwkgICAgewogKwkgICAgaWYgKHN0cmNtcCAobmFtZSwgY3VycmVu dC0+ZGVjbGFyYXRpb24pID09IDApCiArCSAgICAgIHsKLSsJICAgICAgICBzeW0gPSBjcF9sb29r dXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY3VycmVudC0+aW1wb3J0X3NyYywKLSsJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSsJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssCi0rCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7CisrCSAgICAgIHN5bSA9IGNwX2xvb2t1cF9z eW1ib2xfaW5fbmFtZXNwYWNlIChjdXJyZW50LT5pbXBvcnRfc3JjLAorKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKysJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorKwkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKICsJICAgICAgfQorKworKwkgICAgY3VycmVu dC0+c2VhcmNoZWQgPSAwOworKwkgICAgaWYgKHN5bSkKKysJICAgICAgcmV0dXJuIHN5bTsKKysK KysJICAgIGNvbnRpbnVlOwogKwkgICAgfQogKwkgICAKICsJICBpZiAoZGVjbGFyYXRpb25fb25s eSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBjdXJyZW50LT5zZWFyY2hlZCA9IDA7 Ci0rICAgICAgICAgICAgICBpZiAoc3ltKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAg ICAgICAgICAgcmV0dXJuIHN5bTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0K KysJICAgIHsKKysJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKKysJICAgIGRpc2NhcmRfY2xl YW51cHMgKHNlYXJjaGVkX2NsZWFudXApOworKwkgICAgY29udGludWU7CisrCSAgICB9CiArCiAr CSAgaWYgKHN0cmNtcCAobmFtZSwgY3VycmVudC0+YWxpYXMpID09IDApCiArCSAgICAvKiBJZiB0 aGUgaW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxpYXMgbWF0Y2hlcyB0aGUK QEAgLTM0MzcsMjYgKzM0NjMsMjUgQEAgaW5kZXggZDJkOGYyZS4uYWYwYmEyOCAxMDA2NDQKICsJ ICAgICAgIHNlYXJjaCB0b3dhcmRzIHRoZSBhbGlhc2VkIG5hbWVzcGFjZSAqLwogKwkgICAgewog KwkgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLAotKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPmltcG9ydF9zcmMsCi0r CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssCi0rCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKKysJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LT5pbXBvcnRfc3JjLAorKwkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7CiArCSAgICB9IGVsc2UgaWYgKHN0 cmNtcCAoIiIsIGN1cnJlbnQtPmFsaWFzKSA9PSAwKXsKICsJICAgIC8qIElmIHRoaXMgaW1wb3J0 IHN0YXRlbWVudCBjcmVhdGVzIG5vIGFsaWFzLCBwYXNzIGN1cnJlbnQtPmlubmVyIGFzCiArCSAg ICAgICBOQU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0aGUgaW1wb3J0ZWQg bmFtZXNwYWNlLiAqLwogKwkgICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGN1 cnJlbnQtPmltcG9ydF9zcmMsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWUsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sCi0rCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwor KwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisrCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssCisrCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9tYWluLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MCk7CiArCSAgICB9CiArCiArCSAgY3VycmVudC0+c2VhcmNoZWQgPSAwOworKwkgIGRpc2NhcmRf Y2xlYW51cHMgKHNlYXJjaGVkX2NsZWFudXApOworKwogIAkgIGlmIChzeW0gIT0gTlVMTCkKLS0J ICAgIHJldHVybiBzeW07Ci0rCSAgICB7Ci0rCSAgICAgIHJldHVybiBzeW07Ci0rCSAgICB9Cisg CSAgICByZXR1cm4gc3ltOwogIAl9CiAgICAgIH0KICAKQEAgLTM0ODUsNyArMzUxMCw3IEBAIGlu ZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAgfQogIAogIC8qIExvb2sgdXAgTkFNRSBpbiBC TE9DSydzIHN0YXRpYyBibG9jayBhbmQgaW4gZ2xvYmFsIGJsb2Nrcy4gIElmCi1AQCAtMzg4LDE3 ICs1NDIsMTUgQEAgY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKm5hbWVz cGFjZSwKK0BAIC0zODgsMTcgKzU1NywxNSBAQCBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAo Y29uc3QgY2hhciAqbmFtZXNwYWNlLAogIAogIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKICBsb29r dXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0zNTA0LDcgKzM1MjksNyBAQCBp bmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogICAgaWYgKGFub255bW91c19uYW1lc3BhY2Up CiAgICAgIHsKICAgICAgICAvKiBTeW1ib2xzIGRlZmluZWQgaW4gYW5vbnltb3VzIG5hbWVzcGFj ZXMgaGF2ZSBleHRlcm5hbCBsaW5rYWdlCi1AQCAtNDA4LDEyICs1NjAsMTEgQEAgbG9va3VwX3N5 bWJvbF9maWxlIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTQwOCwxMiArNTc1LDExIEBAIGxvb2t1 cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmdsb2JhbF9ibG9jayA9IGJsb2NrX2dsb2JhbF9ibG9jayAoYmxvY2spOwogICAgICAgIAog ICAgICAgIGlmIChnbG9iYWxfYmxvY2sgIT0gTlVMTCkKQEAgLTM1MTksNyArMzU0NCw3IEBAIGlu ZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAgICAgIH0KICAKICAgIGlmIChzeW0gIT0gTlVM TCkKLUBAIC00MzQsNiArNTg1LDcgQEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpu YW1lLAorQEAgLTQzNCw2ICs2MDAsNyBAQCBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIg Km5hbWUsCiAgICAgICAgc3ltID0gbG9va3VwX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKG5h bWUpOwogICAgICAgIGlmIChzeW0gIT0gTlVMTCkKICAJcmV0dXJuIHN5bTsKQEAgLTM1MjcsNyAr MzU1Miw3IEBAIGluZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAgICAgIH0KICAKICAgIHJl dHVybiBOVUxMOwotQEAgLTQ2MSw5ICs2MTMsOCBAQCBjcF9sb29rdXBfbmVzdGVkX3R5cGUgKHN0 cnVjdCB0eXBlICpwYXJlbnRfdHlwZSwKK0BAIC00NjEsOSArNjI4LDggQEAgY3BfbG9va3VwX25l c3RlZF90eXBlIChzdHJ1Y3QgdHlwZSAqcGFyZW50X3R5cGUsCiAgCSAgIGxvb2t1cF9zeW1ib2xf bmFtZXNwYWNlIHdvcmtzIHdoZW4gbG9va2luZyB0aGVtIHVwLiAgKi8KICAKICAJY29uc3QgY2hh ciAqcGFyZW50X25hbWUgPSBUWVBFX1RBR19OQU1FIChwYXJlbnRfdHlwZSk7CkBAIC0zNTM4LDcg KzM1NjMsNyBAQCBpbmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogIAkJCQkJCQkgYmxvY2ss CiAgCQkJCQkJCSBWQVJfRE9NQUlOKTsKICAJaWYgKHN5bSA9PSBOVUxMIHx8IFNZTUJPTF9DTEFT UyAoc3ltKSAhPSBMT0NfVFlQRURFRikKLUBAIC03MDksNyArODYwLDcgQEAgY2hlY2tfb25lX3Bv c3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sCitAQCAt NzA5LDcgKzg3NSw3IEBAIGNoZWNrX29uZV9wb3NzaWJsZV9uYW1lc3BhY2Vfc3ltYm9sIChjb25z dCBjaGFyICpuYW1lLCBpbnQgbGVuLAogIAogICAgbWVtY3B5IChuYW1lX2NvcHksIG5hbWUsIGxl bik7CiAgICBuYW1lX2NvcHlbbGVuXSA9ICdcMCc7CkBAIC0zNTQ3LDcgKzM1NzIsNyBAQCBpbmRl eCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogIAogICAgaWYgKHN5bSA9PSBOVUxMKQogICAgICB7 Ci1AQCAtNzQ5LDcgKzkwMCw3IEBAIGxvb2t1cF9wb3NzaWJsZV9uYW1lc3BhY2Vfc3ltYm9sIChj b25zdCBjaGFyICpuYW1lKQorQEAgLTc0OSw3ICs5MTUsNyBAQCBsb29rdXBfcG9zc2libGVfbmFt ZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSkKICAgICAgICBzdHJ1Y3Qgc3ltYm9sICpz eW07CiAgCiAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoZ2V0X3Bvc3NpYmxlX25h bWVzcGFjZV9ibG9jayAob2JqZmlsZSksCkBAIC0zODMyLDcgKzM4NTcsNyBAQCBpbmRleCA3Y2Iw MTZkLi5iYjllMzVhIDEwMDY0NAogICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsIC8qIHN5bV9v ZmZzZXRzOiBwYXJzZSB1c2VyJ3Mgb2Zmc2V0cyB0bwogIAkJCSAgICAgIGludGVybmFsIGZvcm0g Ki8KIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwotaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKK2luZGV4IDFmOThmYTUuLjllMjQ0ODIg MTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCiArKysgYi9nZGIvZG9jL2dkYi50ZXhp bmZvCiBAQCAtOTU5LDggKzk1OSwxMCBAQCBDb25uZWN0IHRvIHByb2Nlc3MgSUQgQHZhcntudW1i ZXJ9LCBhcyB3aXRoIHRoZSBAY29kZXthdHRhY2h9IGNvbW1hbmQuCkBAIC0zODY1LDcgKzM4OTAs NyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0NAogIEBjIHJlc29sdmUgdGhlIHNpdHVh dGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5kZXggQGNvZGV7LS10 dWl9Ci1AQCAtMTg2NTAsNyArMTg2NjIsNyBAQCBjb21tYW5kOgorQEAgLTE4NjYwLDcgKzE4Njcy LDcgQEAgY29tbWFuZDoKICBAdGFibGUgQGNvZGUKICBAa2luZGV4IHNvdXJjZQogIEBjaW5kZXgg ZXhlY3V0ZSBjb21tYW5kcyBmcm9tIGEgZmlsZQpAQCAtMzg3NCw3ICszODk5LDcgQEAgaW5kZXgg ZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKICBFeGVjdXRlIHRoZSBjb21tYW5kIGZpbGUgQHZhcntm aWxlbmFtZX0uCiAgQGVuZCB0YWJsZQogIAotQEAgLTE4NjY3LDYgKzE4Njc5LDExIEBAIElmIEBj b2Rley12fSwgZm9yIHZlcmJvc2UgbW9kZSwgaXMgZ2l2ZW4gdGhlbiBAdmFsdWV7R0RCTn0gZGlz cGxheXMKK0BAIC0xODY3Nyw2ICsxODY4OSwxMSBAQCBJZiBAY29kZXstdn0sIGZvciB2ZXJib3Nl IG1vZGUsIGlzIGdpdmVuIHRoZW4gQHZhbHVle0dEQk59IGRpc3BsYXlzCiAgZWFjaCBjb21tYW5k IGFzIGl0IGlzIGV4ZWN1dGVkLiAgVGhlIG9wdGlvbiBtdXN0IGJlIGdpdmVuIGJlZm9yZQogIEB2 YXJ7ZmlsZW5hbWV9LCBhbmQgaXMgaW50ZXJwcmV0ZWQgYXMgcGFydCBvZiB0aGUgZmlsZW5hbWUg YW55d2hlcmUgZWxzZS4KICAKQEAgLTM4ODYsNyArMzkxMSw3IEBAIGluZGV4IGYxNmI2ZTIuLmZl MzI4YzcgMTAwNjQ0CiAgQ29tbWFuZHMgdGhhdCB3b3VsZCBhc2sgZm9yIGNvbmZpcm1hdGlvbiBp ZiB1c2VkIGludGVyYWN0aXZlbHkgcHJvY2VlZAogIHdpdGhvdXQgYXNraW5nIHdoZW4gdXNlZCBp biBhIGNvbW1hbmQgZmlsZS4gIE1hbnkgQHZhbHVle0dEQk59IGNvbW1hbmRzIHRoYXQKICBub3Jt YWxseSBwcmludCBtZXNzYWdlcyB0byBzYXkgd2hhdCB0aGV5IGFyZSBkb2luZyBvbWl0IHRoZSBt ZXNzYWdlcwotQEAgLTE4OTI4LDggKzE4OTQ1LDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAg Rm9yIGV4YW1wbGU6CitAQCAtMTg5MzgsOCArMTg5NTUsNiBAQCBjb250YWluaW5nIEBjb2Rle2Vu ZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtHREJQfSkgcHl0 aG9uCkBAIC0zODk1LDcgKzM5MjAsNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0NAog ID5wcmludCAyMwogID5lbmQKICAyMwotQEAgLTE4OTQyLDYgKzE4OTU3LDE0IEBAIGluIGEgUHl0 aG9uIHNjcmlwdC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcgQGNvZGV7bWFpbnQgc2V0 CitAQCAtMTg5NTIsNiArMTg5NjcsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4g YmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKICBweXRob24gcHJpbnQtc3RhY2t9 OiBpZiBAY29kZXtvbn0sIHRoZSBkZWZhdWx0LCB0aGVuIFB5dGhvbiBzdGFjawogIHByaW50aW5n IGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uIHN0YWNrIHByaW50aW5nIGlz CiAgZGlzYWJsZWQuCkBAIC0zOTEwLDcgKzM5MzUsNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3 IDEwMDY0NAogIEBlbmQgdGFibGUKICAKICBAbm9kZSBQeXRob24gQVBJCi1AQCAtMTg5NDksNiAr MTg5NzIsMTQgQEAgZGlzYWJsZWQuCitAQCAtMTg5NTksNiArMTg5ODIsMTQgQEAgZGlzYWJsZWQu CiAgQGNpbmRleCBweXRob24gYXBpCiAgQGNpbmRleCBwcm9ncmFtbWluZyBpbiBweXRob24KICAK QEAgLTM5MjUsNyArMzk1MCw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgQGNp bmRleCBweXRob24gc3Rkb3V0CiAgQGNpbmRleCBweXRob24gcGFnaW5hdGlvbgogIEF0IHN0YXJ0 dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3MgQGNvZGV7c3lzLnN0ZG91dH0gYW5k Ci1AQCAtMTg5NjEsMTMgKzE4OTkyLDE3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5 Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCitAQCAtMTg5NzEsMTMgKzE5MDAy LDE3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5Ym9hcmRJbnRlcnJ1cHR9IGV4Y2Vw dGlvbiBpcyB0aHJvd24uCiAgKiBCYXNpYyBQeXRob246OiAgICAgICAgICAgICAgICBCYXNpYyBQ eXRob24gRnVuY3Rpb25zLgogICogRXhjZXB0aW9uIEhhbmRsaW5nOjoKICAqIEF1dG8tbG9hZGlu Zzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQeXRob24gY29kZS4KQEAg LTM5NDQsNyArMzk2OSw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgKiBGcmFt ZXMgSW4gUHl0aG9uOjogICAgICAgICAgICBBY2Vzc2luZyBpbmZlcmlvciBzdGFjayBmcmFtZXMg ZnJvbSBQeXRob24uCiAgQGVuZCBtZW51CiAgCi1AQCAtMTg5OTQsNiArMTkwMjksMTIgQEAgY29t bWFuZCBhcyBoYXZpbmcgb3JpZ2luYXRlZCBmcm9tIHRoZSB1c2VyIGludm9raW5nIGl0IGludGVy YWN0aXZlbHkuCitAQCAtMTkwMDQsNiArMTkwMzksMTIgQEAgY29tbWFuZCBhcyBoYXZpbmcgb3Jp Z2luYXRlZCBmcm9tIHRoZSB1c2VyIGludm9raW5nIGl0IGludGVyYWN0aXZlbHkuCiAgSXQgbXVz dCBiZSBhIGJvb2xlYW4gdmFsdWUuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBAY29kZXtG YWxzZX0uCiAgQGVuZCBkZWZ1bgogIApAQCAtMzk1Nyw3ICszOTgyLDcgQEAgaW5kZXggZjE2YjZl Mi4uZmUzMjhjNyAxMDA2NDQKICBAZmluZGV4IGdkYi5wYXJhbWV0ZXIKICBAZGVmdW4gcGFyYW1l dGVyIHBhcmFtZXRlcgogIFJldHVybiB0aGUgdmFsdWUgb2YgYSBAdmFsdWV7R0RCTn0gcGFyYW1l dGVyLiAgQHZhcntwYXJhbWV0ZXJ9IGlzIGEKLUBAIC0xOTAxMCw2ICsxOTA1MSw3IEBAIGEgUHl0 aG9uIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLCBhbmQgcmV0dXJuZWQuCitAQCAtMTkw MjAsNiArMTkwNjEsNyBAQCBhIFB5dGhvbiB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSwg YW5kIHJldHVybmVkLgogIEBkZWZ1biBoaXN0b3J5IG51bWJlcgogIFJldHVybiBhIHZhbHVlIGZy b20gQHZhbHVle0dEQk59J3MgdmFsdWUgaGlzdG9yeSAoQHB4cmVme1ZhbHVlCiAgSGlzdG9yeX0p LiAgQHZhcntudW1iZXJ9IGluZGljYXRlcyB3aGljaCBoaXN0b3J5IGVsZW1lbnQgdG8gcmV0dXJu LgpAQCAtMzk2NSw3ICszOTkwLDcgQEAgaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKICBJ ZiBAdmFye251bWJlcn0gaXMgbmVnYXRpdmUsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgdGFrZSBp dHMgYWJzb2x1dGUgdmFsdWUKICBhbmQgY291bnQgYmFja3dhcmQgZnJvbSB0aGUgbGFzdCBlbGVt ZW50IChpLmUuLCB0aGUgbW9zdCByZWNlbnQgZWxlbWVudCkgdG8KICBmaW5kIHRoZSB2YWx1ZSB0 byByZXR1cm4uICBJZiBAdmFye251bWJlcn0gaXMgemVybywgdGhlbiBAdmFsdWV7R0RCTn0gd2ls bAotQEAgLTE5MDIxLDYgKzE5MDYzLDI4IEBAIElmIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHRo ZSByZXR1cm4gdmFsdWUgaXMgYWx3YXlzIGFuIGluc3RhbmNlIG9mCitAQCAtMTkwMzEsNiArMTkw NzMsMjggQEAgSWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgdGhlIHJldHVybiB2YWx1ZSBpcyBh bHdheXMgYW4gaW5zdGFuY2Ugb2YKICBAY29kZXtnZGIuVmFsdWV9IChAcHhyZWZ7VmFsdWVzIEZy b20gSW5mZXJpb3J9KS4KICBAZW5kIGRlZnVuCiAgCkBAIC0zOTk0LDcgKzQwMTksNyBAQCBpbmRl eCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0NAogIEBmaW5kZXggZ2RiLndyaXRlCiAgQGRlZnVuIHdy aXRlIHN0cmluZwogIFByaW50IGEgc3RyaW5nIHRvIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBz dGFuZGFyZCBvdXRwdXQgc3RyZWFtLgotQEAgLTE5MDM1LDYgKzE5MDk5LDExIEBAIEZsdXNoIEB2 YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLiAgRmx1c2hpbmcK K0BAIC0xOTA0NSw2ICsxOTEwOSwxMSBAQCBGbHVzaCBAdmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQg c3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4gIEZsdXNoaW5nCiAgZnVuY3Rpb24uCiAgQGVuZCBkZWZ1 bgogIApAQCAtNDAwNiw3ICs0MDMxLDcgQEAgaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQK ICBAbm9kZSBFeGNlcHRpb24gSGFuZGxpbmcKICBAc3Vic3Vic2VjdGlvbiBFeGNlcHRpb24gSGFu ZGxpbmcKICBAY2luZGV4IHB5dGhvbiBleGNlcHRpb25zCi1AQCAtMTkxNzEsNiArMTkyNDAsMTMg QEAgVGhlIHR5cGUgb2YgdGhpcyBAY29kZXtnZGIuVmFsdWV9LiAgVGhlIHZhbHVlIG9mIHRoaXMg YXR0cmlidXRlIGlzIGEKK0BAIC0xOTE4MSw2ICsxOTI1MCwxMyBAQCBUaGUgdHlwZSBvZiB0aGlz IEBjb2Rle2dkYi5WYWx1ZX0uICBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgYQogIFRo ZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgcHJvdmlkZWQ6CiAgCiAgQHRhYmxlIEBjb2RlCkBAIC00 MDIwLDcgKzQwNDUsNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0NAogIEBkZWZtZXRo b2QgVmFsdWUgZGVyZWZlcmVuY2UKICBGb3IgcG9pbnRlciBkYXRhIHR5cGVzLCB0aGlzIG1ldGhv ZCByZXR1cm5zIGEgbmV3IEBjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0CiAgd2hvc2UgY29udGVudHMg aXMgdGhlIG9iamVjdCBwb2ludGVkIHRvIGJ5IHRoZSBwb2ludGVyLiAgRm9yIGV4YW1wbGUsIGlm Ci1AQCAtMTkyNDIsNiArMTkzMTgsOSBAQCBtb2R1bGU6CitAQCAtMTkyNTIsNiArMTkzMjgsOSBA QCBtb2R1bGU6CiAgVGhpcyBmdW5jdGlvbiBsb29rcyB1cCBhIHR5cGUgYnkgbmFtZS4gIEB2YXJ7 bmFtZX0gaXMgdGhlIG5hbWUgb2YgdGhlCiAgdHlwZSB0byBsb29rIHVwLiAgSXQgbXVzdCBiZSBh IHN0cmluZy4KICAKQEAgLTQwMzAsNyArNDA1NSw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4Yzcg MTAwNjQ0CiAgT3JkaW5hcmlseSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBpbnN0YW5j ZSBvZiBAY29kZXtnZGIuVHlwZX0uCiAgSWYgdGhlIG5hbWVkIHR5cGUgY2Fubm90IGJlIGZvdW5k LCBpdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4KICBAZW5kIGRlZnVuCi1AQCAtMTkyOTQsNiAr MTkzNzMsMTIgQEAgVGhpcyBpcyBAY29kZXtUcnVlfSBpZiB0aGUgZmllbGQgaXMgYXJ0aWZpY2lh bCwgdXN1YWxseSBtZWFuaW5nIHRoYXQKK0BAIC0xOTMwNCw2ICsxOTM4MywxMiBAQCBUaGlzIGlz IEBjb2Rle1RydWV9IGlmIHRoZSBmaWVsZCBpcyBhcnRpZmljaWFsLCB1c3VhbGx5IG1lYW5pbmcg dGhhdAogIGl0IHdhcyBwcm92aWRlZCBieSB0aGUgY29tcGlsZXIgYW5kIG5vdCB0aGUgdXNlci4g IFRoaXMgYXR0cmlidXRlIGlzCiAgYWx3YXlzIHByb3ZpZGVkLCBhbmQgaXMgQGNvZGV7RmFsc2V9 IGlmIHRoZSBmaWVsZCBpcyBub3QgYXJ0aWZpY2lhbC4KICAKQEAgLTQwNDMsNyArNDA2OCw3IEBA IGluZGV4IGYxNmI2ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgQGl0ZW0gYml0c2l6ZQogIElmIHRoZSBm aWVsZCBpcyBwYWNrZWQsIG9yIGlzIGEgYml0ZmllbGQsIHRoZW4gdGhpcyB3aWxsIGhhdmUgYQog IG5vbi16ZXJvIHZhbHVlLCB3aGljaCBpcyB0aGUgc2l6ZSBvZiB0aGUgZmllbGQgaW4gYml0cy4g IE90aGVyd2lzZSwKLUBAIC0xOTM0Niw3ICsxOTQzMSw3IEBAIElmIHRoZSB0eXBlIGRvZXMgbm90 IGhhdmUgYSB0YXJnZXQsIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4KK0BAIC0xOTM1Niw3ICsx OTQ0MSw3IEBAIElmIHRoZSB0eXBlIGRvZXMgbm90IGhhdmUgYSB0YXJnZXQsIHRoaXMgbWV0aG9k IHdpbGwgdGhyb3cgYW4KICBleGNlcHRpb24uCiAgQGVuZCBkZWZtZXRob2QKICAKQEAgLTQwNTIs NyArNDA3Nyw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgSWYgdGhpcyBAY29k ZXtnZGIuVHlwZX0gaXMgYW4gaW5zdGFudGlhdGlvbiBvZiBhIHRlbXBsYXRlLCB0aGlzIHdpbGwK ICByZXR1cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2VudHMgdGhlIHR5cGUg b2YgdGhlCiAgQHZhcntufXRoIHRlbXBsYXRlIGFyZ3VtZW50LgotQEAgLTE5MzU0LDcgKzE5NDM5 LDggQEAgcmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0 eXBlIG9mIHRoZQorQEAgLTE5MzY0LDcgKzE5NDQ5LDggQEAgcmV0dXJuIGEgbmV3IEBjb2Rle2dk Yi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZQogIElmIHRoaXMgQGNvZGV7 Z2RiLlR5cGV9IGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUsIHRoaXMgd2lsbCB0aHJvdyBhbgogIGV4 Y2VwdGlvbi4gIE9yZGluYXJpbHksIG9ubHkgQ0B0eysrfSBjb2RlIHdpbGwgaGF2ZSB0ZW1wbGF0 ZSB0eXBlcy4KICAKQEAgLTQwNjIsNyArNDA4Nyw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4Yzcg MTAwNjQ0CiAgQGVuZCBkZWZtZXRob2QKICBAZW5kIHRhYmxlCiAgCi1AQCAtMTk3MDgsNiArMTk3 OTQsMTIxIEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CitAQCAtMTk3MTgsNiArMTk4MDQsMTIx IEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CiAgZ2RiLmxpYnN0ZGN4eC52Ni5yZWdpc3Rlcl9w cmludGVycyAoZ2RiLmN1cnJlbnRfb2JqZmlsZSAoKSkKICBAZW5kIHNtYWxsZXhhbXBsZQogIApA QCAtNDE4NCw3ICs0MjA5LDcgQEAgaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKICBAbm9k ZSBDb21tYW5kcyBJbiBQeXRob24KICBAc3Vic3Vic2VjdGlvbiBDb21tYW5kcyBJbiBQeXRob24K ICAKLUBAIC0xOTk2MCw2ICsyMDE2MSwxMzUgQEAgcmVnaXN0cmF0aW9uIG9mIHRoZSBjb21tYW5k IHdpdGggQHZhbHVle0dEQk59LiAgRGVwZW5kaW5nIG9uIGhvdyB0aGUKK0BAIC0xOTk3MCw2ICsy MDE3MSwxMzUgQEAgcmVnaXN0cmF0aW9uIG9mIHRoZSBjb21tYW5kIHdpdGggQHZhbHVle0dEQk59 LiAgRGVwZW5kaW5nIG9uIGhvdyB0aGUKICBQeXRob24gY29kZSBpcyByZWFkIGludG8gQHZhbHVl e0dEQk59LCB5b3UgbWF5IG5lZWQgdG8gaW1wb3J0IHRoZQogIEBjb2Rle2dkYn0gbW9kdWxlIGV4 cGxpY2l0bHkuCiAgCkBAIC00MzIwLDcgKzQzNDUsNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3 IDEwMDY0NAogIEBub2RlIEZ1bmN0aW9ucyBJbiBQeXRob24KICBAc3Vic3Vic2VjdGlvbiBXcml0 aW5nIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbnMKICAKLUBAIC0yMDA2NCw2ICsyMDM5NCw4MiBA QCB3aGljaCBpcyB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWUuICBAeHJlZntQcmV0dHkgUHJpbnRp bmd9LCBmb3IgbW9yZQorQEAgLTIwMDc0LDYgKzIwNDA0LDgyIEBAIHdoaWNoIGlzIHVzZWQgdG8g Zm9ybWF0IHRoZSB2YWx1ZS4gIEB4cmVme1ByZXR0eSBQcmludGluZ30sIGZvciBtb3JlCiAgaW5m b3JtYXRpb24uCiAgQGVuZCBkZWZpdmFyCiAgCkBAIC00NDAzLDcgKzQ0MjgsNyBAQCBpbmRleCBm MTZiNmUyLi5mZTMyOGM3IDEwMDY0NAogIEBub2RlIEZyYW1lcyBJbiBQeXRob24KICBAc3Vic3Vi c2VjdGlvbiBBY2Vzc2luZyBpbmZlcmlvciBzdGFjayBmcmFtZXMgZnJvbSBQeXRob24uCiAgCi1A QCAtMjAxMjgsNiArMjA1MzQsMTQgQEAgZnVuY3Rpb24gdG8gYSBzdHJpbmcuCitAQCAtMjAxMzgs NiArMjA1NDQsMTQgQEAgZnVuY3Rpb24gdG8gYSBzdHJpbmcuCiAgUmV0dXJucyB0aGUgZnJhbWUn cyByZXN1bWUgYWRkcmVzcy4KICBAZW5kIGRlZm1ldGhvZAogIApAQCAtNDQxOCw3ICs0NDQzLDcg QEAgaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKICBAZGVmbWV0aG9kIEZyYW1lIG9sZGVy CiAgUmV0dXJuIHRoZSBmcmFtZSB0aGF0IGNhbGxlZCB0aGlzIGZyYW1lLgogIEBlbmQgZGVmbWV0 aG9kCi1AQCAtMjAxMzYsMTAgKzIwNTUwLDE4IEBAIFJldHVybiB0aGUgZnJhbWUgdGhhdCBjYWxs ZWQgdGhpcyBmcmFtZS4KK0BAIC0yMDE0NiwxMCArMjA1NjAsMTggQEAgUmV0dXJuIHRoZSBmcmFt ZSB0aGF0IGNhbGxlZCB0aGlzIGZyYW1lLgogIFJldHVybiB0aGUgZnJhbWUgY2FsbGVkIGJ5IHRo aXMgZnJhbWUuCiAgQGVuZCBkZWZtZXRob2QKICAKQEAgLTQ5NjMsNyArNDk4OCw3IEBAIGluZGV4 IDBiZmNmY2EuLjAxMDE4ZDYgMTAwNjQ0CiAgCiAgI2VuZGlmIC8qIGR3YXJmMmxvYy5oICovCiBk aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDRj Y2UzNmIuLmMyZjVmMjMgMTAwNjQ0CitpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogLS0t IGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwogQEAgLTQ4LDYgKzQ4 LDEyIEBACkBAIC01NzAxLDcgKzU3MjYsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0 NAogICAgICAgIGlmIChkaWUtPmNoaWxkICE9IE5VTEwgJiYgKGRpZS0+dGFnID09IERXX1RBR19p bXBvcnRlZF9kZWNsYXJhdGlvbgogIAkJCQkgfHwgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2Zv cnRyYW4pKQogIAljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIlRhZyAnJXMnIGhh cyB1bmV4cGVjdGVkIGNoaWxkcmVuIiksCi1AQCAtMzMxMCw0MSArMzU4Myw2OCBAQCBwcm9jZXNz X2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTMz MTAsNDEgKzM1ODMsNzEgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKICAvKiBSZXR1cm4gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9m IERJRSwgYmFzZWQgb24gaXRzIERXX0FUX25hbWUuCiAgICAgSWYgc2NvcGUgcXVhbGlmaWVycyBh cmUgYXBwcm9wcmlhdGUgdGhleSB3aWxsIGJlIGFkZGVkLiAgVGhlIHJlc3VsdAogICAgIHdpbGwg YmUgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlX29ic3RhY2ssIG9yIE5VTEwgaWYgdGhlIERJRSBk b2VzCkBAIC01Nzc2LDE0ICs1ODAxLDE3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0 CiAgICByZXR1cm4gbmFtZTsKICB9CiAgCi0rLyogcmVhZCB0aGUgZ2l2ZW4gZGllJ3MgZGVjbF9s aW5lIG51bWJlci4gUmV0dXJuIC0xIGlmIGluIGNhc2Ugb2YgYW4gZXJyb3IgKi8KLStzdGF0aWMg Y29uc3QgaW50IGR3YXJmMl9yZWFkX2RlY2xfbGluZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KXsKKysvKiBSZWFkIHRoZSBnaXZlbiBESUUncyBEV19BVF9kZWNs X2xpbmUgbnVtYmVyLiAgUmV0dXJuIC0xIGlmIGluIGNhc2Ugb2YgYW4KKysgICBlcnJvci4gICov CisrCisrc3RhdGljIGludAorK2R3YXJmMl9yZWFkX2RlY2xfbGluZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK3sKICsgIHN0cnVjdCBhdHRyaWJ1dGUgKmxp bmVfYXR0cjsKICsKICsgIGxpbmVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2RlY2xf bGluZSwgY3UpOwotKyAgaWYgKGxpbmVfYXR0cil7Ci0rICAgIHJldHVybiAgRFdfVU5TTkQgKGxp bmVfYXR0cik7Ci0rICB9CisrICBpZiAobGluZV9hdHRyKQorKyAgICByZXR1cm4gRFdfVU5TTkQg KGxpbmVfYXR0cik7CiArCiArICByZXR1cm4gLTE7CiArfQpAQCAtNTc5MSw3ICs1ODE5LDcgQEAg aW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAvKiBSZWFkIHRoZSBpbXBvcnQgc3RhdGVt ZW50IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gZGllIGFuZCByZWNvcmQgaXQuICAqLwogIAogIHN0 YXRpYyB2b2lkCi1AQCAtMzM1NCw5ICszNjU0LDE1IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTMzNTQsOSAr MzY1NywxNSBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBkaWVfaW5mbyAqaW1wb3J0ZWRfZGllOwog ICAgY29uc3QgY2hhciAqaW1wb3J0ZWRfbmFtZTsKICAgIGNvbnN0IGNoYXIgKmltcG9ydGVkX25h bWVfcHJlZml4OwpAQCAtNTgwOSw3ICs1ODM3LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAx MDA2NDQKICAgIGltcG9ydF9hdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfaW1wb3J0LCBj dSk7CiAgICBpZiAoaW1wb3J0X2F0dHIgPT0gTlVMTCkKICAgICAgewotQEAgLTM0MDQsMTcgKzM3 MTAsMjcgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzQwNCwxNyArMzcxMywyNyBAQCByZWFkX2ltcG9ydF9z dGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAg ICAgICByZXR1cm47CiAgICAgIH0KICAKQEAgLTU4NDMsNyArNTg3MSw3IEBAIGluZGV4IDRjY2Uz NmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgICAgY2Fub25pY2FsX25hbWUgPSBhbGxvY2EgKHN0cmxl biAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiArIHN0cmxlbiAoaW1wb3J0ZWRfbmFtZSkgKyAx KTsKICAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9uYW1lLCBpbXBvcnRlZF9uYW1lX3ByZWZpeCk7 CiAgICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgIjo6Iik7Ci1AQCAtMzQyNSw4ICszNzQx LDE0IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTM0MjUsOCArMzc0NCwxNCBAQCByZWFkX2ltcG9ydF9zdGF0 ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAg ICBjYW5vbmljYWxfbmFtZSA9IGFsbG9jYSAoc3RybGVuIChpbXBvcnRlZF9uYW1lKSArIDEpOwog ICAgICAgIHN0cmNweSAoY2Fub25pY2FsX25hbWUsIGltcG9ydGVkX25hbWUpOwogICAgICB9CkBA IC01ODYwLDcgKzU4ODgsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIH0KICAK ICBzdGF0aWMgdm9pZAotQEAgLTM2OTUsNiArNDAxNywxNCBAQCBpbmhlcml0X2Fic3RyYWN0X2Rp ZXMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zNjk1 LDYgKzQwMjAsMTQgQEAgaW5oZXJpdF9hYnN0cmFjdF9kaWVzIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogIAog ICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Fic3RyYWN0X29yaWdpbiwgY3UpOwpA QCAtNTg3NSw3ICs1OTAzLDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAgIGlm ICghYXR0cikKICAgICAgcmV0dXJuOwogIAotQEAgLTM3OTMsNiArNDEyMyw3IEBAIHJlYWRfZnVu Y19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAg LTM3OTMsNiArNDEyNiw3IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgY2hhciAqbmFtZTsKICAgIENPUkVfQUREUiBiYXNl YWRkcjsKICAgIHN0cnVjdCBibG9jayAqYmxvY2s7CkBAIC01ODgzLDcgKzU5MTEsNyBAQCBpbmRl eCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgaW50IGlubGluZWRfZnVuYyA9IChkaWUtPnRh ZyA9PSBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKTsKICAKICAgIGlmIChpbmxpbmVkX2Z1bmMp Ci1AQCAtMzgxMSwxMyArNDE0MiwyMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zODExLDEzICs0MTQ1LDIzIEBAIHJl YWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQogIAogICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCBT RUNUX09GRl9URVhUIChvYmpmaWxlKSk7CiAgCkBAIC01OTEwLDcgKzU5MzgsNyBAQCBpbmRleCA0 Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgbG93cGMgKz0gYmFzZWFkZHI7CiAgICBoaWdocGMg Kz0gYmFzZWFkZHI7CiAgCi1AQCAtMzg0NCwxNCArNDE4NSwxOSBAQCByZWFkX2Z1bmNfc2NvcGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zODQ0LDE0 ICs0MTg4LDE5IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogIAogICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmbG9jYWxfc3ltYm9s czsKICAKQEAgLTU5MzcsNyArNTk2NSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0 CiAgICAgIH0KICAKICAgIGluaGVyaXRfYWJzdHJhY3RfZGllcyAoZGllLCBjdSk7Ci1AQCAtMzg2 Nyw2ICs0MjEzLDEzIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM4NjcsNiArNDIxNiwxMyBAQCByZWFkX2Z1bmNfc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJCQlkZXRl cm1pbmVfcHJlZml4IChkaWUsIGN1KSwKICAJCQlwcm9jZXNzaW5nX2hhc19uYW1lc3BhY2VfaW5m byk7CiAgCkBAIC01OTUxLDcgKzU5NzksNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0 NAogICAgLyogSWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywgcmVjb3JkIHRoZW0uICAqLwogICAg ZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxvY2ssIGJhc2VhZGRyLCBjdSk7CiAg ICAKLUBAIC0zOTAzLDcgKzQyNTYsNyBAQCByZWFkX2xleGljYWxfYmxvY2tfc2NvcGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zOTAzLDcgKzQyNTks NyBAQCByZWFkX2xleGljYWxfYmxvY2tfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgIGFzIG11bHRpcGxlIGxleGljYWwgYmxvY2tzPyAgSGFu ZGxpbmcgY2hpbGRyZW4gaW4gYSBzYW5lIHdheSB3b3VsZAogICAgICAgYmUgbmFzdHkuICBNaWdo dCBiZSBlYXNpZXIgdG8gcHJvcGVybHkgZXh0ZW5kIGdlbmVyaWMgYmxvY2tzIHRvIAogICAgICAg ZGVzY3JpYmUgcmFuZ2VzLiAgKi8KQEAgLTU5NjAsNyArNTk4OCw3IEBAIGluZGV4IDRjY2UzNmIu LmMyZjVmMjMgMTAwNjQ0CiAgICAgIHJldHVybjsKICAgIGxvd3BjICs9IGJhc2VhZGRyOwogICAg aGlnaHBjICs9IGJhc2VhZGRyOwotQEAgLTM5MjAsNyArNDI3Myw3IEBAIHJlYWRfbGV4aWNhbF9i bG9ja19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor QEAgLTM5MjAsNyArNDI3Niw3IEBAIHJlYWRfbGV4aWNhbF9ibG9ja19zY29wZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICB9CiAgICBuZXcgPSBwb3Bf Y29udGV4dCAoKTsKICAKQEAgLTU5NjksNyArNTk5Nyw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVm MjMgMTAwNjQ0CiAgICAgIHsKICAgICAgICBzdHJ1Y3QgYmxvY2sgKmJsb2NrCiAgICAgICAgICA9 IGZpbmlzaF9ibG9jayAoMCwgJmxvY2FsX3N5bWJvbHMsIG5ldy0+b2xkX2Jsb2NrcywgbmV3LT5z dGFydF9hZGRyLAotQEAgLTQwNzUsNyArNDQyOCw4IEBAIGR3YXJmMl9yYW5nZXNfcmVhZCAodW5z aWduZWQgb2Zmc2V0LCBDT1JFX0FERFIgKmxvd19yZXR1cm4sCitAQCAtNDA3NSw3ICs0NDMxLDgg QEAgZHdhcmYyX3Jhbmdlc19yZWFkICh1bnNpZ25lZCBvZmZzZXQsIENPUkVfQUREUiAqbG93X3Jl dHVybiwKICAgICBkaXNjb250aW51b3VzLCBpLmUuIGRlcml2ZWQgZnJvbSBEV19BVF9yYW5nZXMg aW5mb3JtYXRpb24uICAqLwogIHN0YXRpYyBpbnQKICBkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIENPUkVfQUREUiAqbG93cGMsCkBAIC01OTc5LDcgKzYwMDcsNyBA QCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIHsKICAgIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHI7CiAgICBDT1JFX0FERFIgbG93ID0gMDsKLUBAIC00MTAzLDcgKzQ0NTcsNyBAQCBkd2Fy ZjJfZ2V0X3BjX2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIENPUkVfQUREUiAqbG93cGMs CitAQCAtNDEwMyw3ICs0NDYwLDcgQEAgZHdhcmYyX2dldF9wY19ib3VuZHMgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBDT1JFX0FERFIgKmxvd3BjLAogIAl7CiAgCSAgLyogVmFsdWUgb2YgdGhlIERX X0FUX3JhbmdlcyBhdHRyaWJ1dGUgaXMgdGhlIG9mZnNldCBpbiB0aGUKICAJICAgICAuZGVidWdf cmFuZ2VzIHNlY3Rpb24uICAqLwpAQCAtNTk4OCw3ICs2MDE2LDcgQEAgaW5kZXggNGNjZTM2Yi4u YzJmNWYyMyAxMDA2NDQKICAJICAgIHJldHVybiAwOwogIAkgIC8qIEZvdW5kIGRpc2NvbnRpbnVv dXMgcmFuZ2Ugb2YgYWRkcmVzc2VzLiAgKi8KICAJICByZXQgPSAtMTsKLUBAIC00MTQyLDcgKzQ0 OTYsNyBAQCBkd2FyZjJfZ2V0X3N1YnByb2dyYW1fcGNfYm91bmRzIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwKK0BAIC00MTQyLDcgKzQ0OTksNyBAQCBkd2FyZjJfZ2V0X3N1YnByb2dyYW1fcGNfYm91 bmRzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgIENPUkVfQUREUiBsb3csIGhpZ2g7CiAgICBz dHJ1Y3QgZGllX2luZm8gKmNoaWxkID0gZGllLT5jaGlsZDsKICAKQEAgLTU5OTcsNyArNjAyNSw3 IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgIHsKICAgICAgICAqbG93cGMg PSBtaW4gKCpsb3dwYywgbG93KTsKICAgICAgICAqaGlnaHBjID0gbWF4ICgqaGlnaHBjLCBoaWdo KTsKLUBAIC00MTc5LDcgKzQ1MzMsNyBAQCBnZXRfc2NvcGVfcGNfYm91bmRzIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwKK0BAIC00MTc5LDcgKzQ1MzYsNyBAQCBnZXRfc2NvcGVfcGNfYm91bmRzIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgIENPUkVfQUREUiBiZXN0X2hpZ2ggPSAoQ09SRV9BRERS KSAwOwogICAgQ09SRV9BRERSIGN1cnJlbnRfbG93LCBjdXJyZW50X2hpZ2g7CiAgCkBAIC02MDA2 LDcgKzYwMzQsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgICB7CiAgICAg ICAgYmVzdF9sb3cgPSBjdXJyZW50X2xvdzsKICAgICAgICBiZXN0X2hpZ2ggPSBjdXJyZW50X2hp Z2g7Ci1AQCAtNDQ3NCw3ICs0ODI4LDcgQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxk X2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtNDQ3NCw3ICs0ODMxLDcgQEAg ZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZv ICpkaWUsCiAgCXJldHVybjsKICAKICAgICAgICAvKiBHZXQgcGh5c2ljYWwgbmFtZS4gICovCkBA IC02MDE1LDcgKzYwNDMsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAogICAg ICAgIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpm aWxlLCBzbyB3ZSBkb24ndAogIAkgbmVlZCB0byBkdXBsaWNhdGUgaXQgZm9yIHRoZSB0eXBlLiAg Ki8KLUBAIC00NjE3LDcgKzQ5NzEsNyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZp ZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtNDYxNyw3ICs0OTc0LDcg QEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBk aWVfaW5mbyAqZGllLAogICAgICByZXR1cm47CiAgCiAgICAvKiBHZXQgdGhlIG1hbmdsZWQgbmFt ZS4gICovCkBAIC02MDI0LDcgKzYwNTIsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0 NAogIAogICAgLyogTG9vayB1cCBtZW1iZXIgZnVuY3Rpb24gbmFtZSBpbiBmaWVsZGxpc3QuICAq LwogICAgZm9yIChpID0gMDsgaSA8IGZpcC0+bmZuZmllbGRzOyBpKyspCi1AQCAtNDY2MSw3ICs1 MDE1LDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0 cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTQ2NjEsNyArNTAxOCw3IEBAIGR3YXJmMl9hZGRfbWVt YmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAg IC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpmaWxl LCBzbyB3ZSBkb24ndAogICAgICAgbmVlZCB0byBkdXBsaWNhdGUgaXQgZm9yIHRoZSB0eXBlLiAg Ki8KICAgIGZucC0+cGh5c25hbWUgPSBwaHlzbmFtZSA/IHBoeXNuYW1lIDogIiI7CkBAIC02MDMz LDcgKzYwNjEsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgdGhpc190eXBl ID0gcmVhZF90eXBlX2RpZSAoZGllLCBjdSk7CiAgICBpZiAodGhpc190eXBlICYmIFRZUEVfQ09E RSAodGhpc190eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewotQEAgLTQ3MjEsMTggKzUw NzUsMTggQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0 cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTQ3MjEsMTggKzUwNzgsMTggQEAgZHdhcmYyX2FkZF9t ZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAog ICAgICB7CiAgICAgICAgLyogU3VwcG9ydCB0aGUgLmRlYnVnX2xvYyBvZmZzZXRzICovCiAgICAg ICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCkBAIC02MDU5LDcgKzYwODcsNyBAQCBp bmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgIH0KICB9CiAgCi1AQCAtNDg0NSw3ICs1 MTk5LDcgQEAgcXVpcmtfZ2NjX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNDg0NSw3ICs1MjAyLDcgQEAgcXVp cmtfZ2NjX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIHJldHVybiBOVUxMOwogIAogICAgZG9tYWluX3R5cGUg PSBUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZJRUxEX1RZUEUgKHBmbl90eXBlLCAwKSk7CkBAIC02 MDY4LDcgKzYwOTYsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgc21hc2hf dG9fbWV0aG9kX3R5cGUgKHR5cGUsIGRvbWFpbl90eXBlLCBUWVBFX1RBUkdFVF9UWVBFIChwZm5f dHlwZSksCiAgCQkJVFlQRV9GSUVMRFMgKHBmbl90eXBlKSwgVFlQRV9ORklFTERTIChwZm5fdHlw ZSksCiAgCQkJVFlQRV9WQVJBUkdTIChwZm5fdHlwZSkpOwotQEAgLTQ4OTgsNyArNTI1Miw3IEBA IHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC00ODk4LDcgKzUyNTUsNyBAQCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgcmV0dXJuIHNl dF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7CiAgICAgIH0KICAKQEAgLTYwNzcsNyArNjEwNSw3 IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICBJTklUX0NQTFVTX1NQRUNJRklD ICh0eXBlKTsKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci1AQCAtNDkwNywx NCArNTI2MSwxOCBAQCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNDkwNywxNCArNTI2NCwxOCBAQCByZWFkX3N0cnVj dHVyZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAg ICAgICAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwogIAkgIHx8IGN1LT5sYW5n dWFnZSA9PSBsYW5ndWFnZV9qYXZhKQogIAl7CkBAIC02MDk5LDcgKzYxMjcsNyBAQCBpbmRleCA0 Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAl9CiAgICAgIH0KICAKLUBAIC01MTI0LDcgKzU0ODIs NyBAQCByZWFkX2VudW1lcmF0aW9uX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC01MTI0LDcgKzU0ODUsNyBAQCByZWFkX2VudW1lcmF0aW9uX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgICBy ZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKICAgICAgfQogIApAQCAtNjEwOCw3 ICs2MTM2LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAKICAgIFRZUEVfQ09E RSAodHlwZSkgPSBUWVBFX0NPREVfRU5VTTsKICAgIG5hbWUgPSBkd2FyZjJfZnVsbF9uYW1lIChk aWUsIGN1KTsKLUBAIC01MTUyLDUxICs1NTEwLDYgQEAgcmVhZF9lbnVtZXJhdGlvbl90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTE1Miw1MSAr NTUxMyw2IEBAIHJlYWRfZW51bWVyYXRpb25fdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBj dSk7CiAgfQogIApAQCAtNjE2MCw3ICs2MTg4LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAx MDA2NDQKICAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBkaWUgd2hpY2ggYmVnaW5zIGFuIGVudW1l cmF0aW9uLCBwcm9jZXNzIGFsbAogICAgIHRoZSBkaWVzIHRoYXQgZGVmaW5lIHRoZSBtZW1iZXJz IG9mIHRoZSBlbnVtZXJhdGlvbiwgYW5kIGNyZWF0ZSB0aGUKICAgICBzeW1ib2wgZm9yIHRoZSBl bnVtZXJhdGlvbiB0eXBlLgotQEAgLTUyNzQsNiArNTU4NywyOSBAQCBwcm9jZXNzX2VudW1lcmF0 aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitA QCAtNTI3NCw2ICs1NTkwLDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19zeW1ib2wgKGRpZSwg dGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtNjE5MCw3ICs2MjE4LDcgQEAgaW5kZXggNGNjZTM2 Yi4uYzJmNWYyMyAxMDA2NDQKICAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGEgRFdf VEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0aGUgRElFJ3MgdHlwZSBmaWVs ZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25hbAogICAgIGFycmF5 cy4gICovCi1AQCAtNTI4Nyw3ICs1NjIzLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTI4Nyw3ICs1NjI2LDcgQEAg cmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5 cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKICAgIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHI7CkBAIC02MTk5LDcgKzYyMjcsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIz IDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFyICpuYW1lOwogIAot QEAgLTUzMzQsMTYgKzU2NzAsMTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTMzNCwxNiArNTY3MywxMSBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK ICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCiAgICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGll LCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKQEAgLTYyMjEsNyArNjI0OSw3IEBAIGluZGV4IDRj Y2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCiAgICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0 IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgogICAgICAgdGhlIFBvd2VyUEMg dy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAg LTU0MTAsMTIgKzU3NDEsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU0MTAsMTIgKzU3NDQsMTQgQEAgcmVhZF9zZXRf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgcmV0 dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOwogIH0KICAKQEAgLTYyMzgsNyAr NjI2Niw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOwogICAgc3RydWN0IHN5bWJvbCAqc3ltOwogICAgQ09SRV9BRERSIGJhc2UgPSAo Q09SRV9BRERSKSAwOwotQEAgLTU0MjUsMjUgKzU3NTgsNTUgQEAgcmVhZF9jb21tb25fYmxvY2sg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NDI1LDI1 ICs1NzYxLDU1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIHsKICAgICAgICAvKiBTdXBwb3J0IHRoZSAuZGVidWdf bG9jIG9mZnNldHMgKi8KICAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKQEAg LTYzMDEsNyArNjMyOSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCSAgYXR0 ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uLCBj dSk7CiAgCSAgaWYgKGF0dHIpCiAgCSAgICB7Ci1AQCAtNTQ2MSw4ICs1ODI0LDI1IEBAIHJlYWRf Y29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CitAQCAtNTQ2MSw4ICs1ODI3LDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgICAgIFNZTUJPTF9WQUxVRV9BRERS RVNTIChzeW0pID0gYmFzZSArIGJ5dGVfb2Zmc2V0OwogIAkgICAgICBhZGRfc3ltYm9sX3RvX2xp c3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKICAJICAgIH0KQEAgLTYzMjcsNyArNjM1NSw3IEBA IGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgIH0KICB9CiAgCi1AQCAtNTUzMCw3 ICs1OTEwLDcgQEAgcmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC01NTMwLDcgKzU5MTMsNyBAQCByZWFkX25hbWVzcGFjZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIGlmIChpc19h bm9ueW1vdXMpCiAgCXsKICAJICBjb25zdCBjaGFyICpwcmV2aW91c19wcmVmaXggPSBkZXRlcm1p bmVfcHJlZml4IChkaWUsIGN1KTsKQEAgLTYzMzYsNyArNjM2NCw3IEBAIGluZGV4IDRjY2UzNmIu LmMyZjVmMjMgMTAwNjQ0CiAgCX0KICAgICAgfQogIAotQEAgLTU1NDYsMjAgKzU5MjYsMTU1IEBA IHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCitAQCAtNTU0NiwyMCArNTkyOSwxNTUgQEAgcmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgfQogIH0KICAKQEAgLTYzNzYs MTggKzY0MDQsMTggQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICsKICsgIGlmIChk aWVfaXNfZGVjbGFyYXRpb24gKGRpZSwgY3UpKQogKyAgICByZXR1cm4gTlVMTDsKLSAKLS0gIC8q IEZJWE1FOiBTdXBwb3J0IHRoZSBzZXBhcmF0ZSBGb3J0cmFuIG1vZHVsZSBuYW1lc3BhY2VzLiAg Ki8KKysKICsgIG1vZHVsZV9uYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogKyAgaWYgKCFt b2R1bGVfbmFtZSkKICsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJEV19U QUdfbW9kdWxlIGhhcyBubyBuYW1lLCBvZmZzZXQgMHgleCIpLAogKyAgICAgICAgICAgICAgIGRp ZS0+b2Zmc2V0KTsKICsgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9NT0RVTEUsIDAsIDAs IG1vZHVsZV9uYW1lLCBvYmpmaWxlKTsKLSAKLSsgIC8qIENyZWF0ZSBhIGNvbnRleHQgZm9yIHJl YWRpbmcgdGhlIG1vZHVsZSB2YXJpYWJsZXMuICAqLwogKworKyAgLyogQ3JlYXRlIGEgY29udGV4 dCBmb3IgcmVhZGluZyB0aGUgbW9kdWxlIHZhcmlhYmxlcy4gICovCisgCistICAvKiBGSVhNRTog U3VwcG9ydCB0aGUgc2VwYXJhdGUgRm9ydHJhbiBtb2R1bGUgbmFtZXNwYWNlcy4gICovCiArICBu ZXcgPSBwdXNoX2NvbnRleHQgKDAsIDApOwotKworIAogKyAgc2F2ZV9maWxlX3N5bWJvbHMgPSBm aWxlX3N5bWJvbHM7CiArICBmaWxlX3N5bWJvbHMgPSBOVUxMOwogKyAgc2F2ZV9nbG9iYWxfc3lt Ym9scyA9IGdsb2JhbF9zeW1ib2xzOwpAQCAtNjQ5NSw3ICs2NTIzLDcgQEAgaW5kZXggNGNjZTM2 Yi4uYzJmNWYyMyAxMDA2NDQKICB9CiAgCiAgLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBuYW1l c3BhY2UgcmVwcmVzZW50ZWQgYnkgRElFLiAgU2V0Ci1AQCAtNTcyNCwyOSArNjIzOSwxMTMgQEAg cmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC01NzI0LDI5ICs2MjQyLDExMyBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVjdCB0 eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNjYyMyw3ICs2NjUxLDcgQEAgaW5kZXggNGNjZTM2Yi4u YzJmNWYyMyAxMDA2NDQKICAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUg KGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5 cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtNTg0MSw3ICs2NDQwLDYg QEAgc3RhdGljIHN0cnVjdCB0eXBlICoKK0BAIC01ODQxLDcgKzY0NDMsNiBAQCBzdGF0aWMgc3Ry dWN0IHR5cGUgKgogIHJlYWRfdHlwZWRlZiAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogIHsKICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZp bGU7CkBAIC02NjMxLDcgKzY2NTksNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAog ICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7CiAgICBzdHJ1Y3QgdHlwZSAqdGhpc190eXBlOwog IAotQEAgLTU5NDksOCArNjU0Nyw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU5NDksOCArNjU1MCw3IEBAIHJl YWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0cnVjdCB0eXBlICpyYW5nZV90 eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTY2NDEsNyArNjY2OSw3IEBAIGlu ZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICBjaGFyICpuYW1lOwogICAgCiAgICBiYXNl X3R5cGUgPSBkaWVfdHlwZSAoZGllLCBjdSk7Ci1AQCAtNTk2Myw0MiArNjU2MCw4OSBAQCByZWFk X3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC01OTYzLDQyICs2NTYzLDg5IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJICAgICAwLCBOVUxMLCBjdS0+ b2JqZmlsZSk7CiAgICAgIH0KICAKQEAgLTY3NjAsNyArNjc4OCw3IEBAIGluZGV4IDRjY2UzNmIu LmMyZjVmMjMgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogICAg aWYgKG5hbWUpCi1AQCAtNjQ2OSw2ICs3MTEzLDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAq YWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAorQEAgLTY0NjksNiAr NzExNiw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICpidWZmZXIs IGdkYl9ieXRlICppbmZvX3B0ciwKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbGV4aWNh bF9ibG9jawogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR192YXJpYWJsZQogIAkgICYmIGFi YnJldi0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UKQEAgLTY3NjgsNyArNjc5Niw3IEBAIGluZGV4 IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX21l bWJlcikKICAJewogIAkgIC8qIE90aGVyd2lzZSB3ZSBza2lwIHRvIHRoZSBuZXh0IHNpYmxpbmcs IGlmIGFueS4gICovCi1AQCAtNjY4OSw5ICs3MzM0LDYgQEAgcmVhZF9wYXJ0aWFsX2RpZSAoc3Ry dWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAorQEAgLTY2ODksOSArNzMzNyw2IEBAIHJl YWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKICAJICBp ZiAocGFydF9kaWUtPmRpcm5hbWUgPT0gTlVMTCkKICAJICAgIHBhcnRfZGllLT5kaXJuYW1lID0g RFdfU1RSSU5HICgmYXR0cik7CiAgCSAgYnJlYWs7CkBAIC02Nzc4LDcgKzY4MDYsNyBAQCBpbmRl eCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAljYXNlIERXX0FUX2xvd19wYzoKICAJICBoYXNf bG93X3BjX2F0dHIgPSAxOwogIAkgIHBhcnRfZGllLT5sb3dwYyA9IERXX0FERFIgKCZhdHRyKTsK LUBAIC02OTIzLDcgKzc1NjUsOCBAQCBmaXh1cF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxf ZGllX2luZm8gKnBhcnRfZGllLAorQEAgLTY5MjMsNyArNzU2OCw4IEBAIGZpeHVwX3BhcnRpYWxf ZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFydF9kaWUsCiAgICAvKiBJZiB3ZSBmb3Vu ZCBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUgYW5kIHRoZSBESUUgaGFzIG5vIG5hbWUsIHRyeQogICAg ICAgdG8gZmluZCBhIG5hbWUgaW4gdGhlIHJlZmVycmVkIHRvIERJRS4gICovCiAgCkBAIC02Nzg4 LDcgKzY4MTYsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgICB7CiAgICAg ICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnNwZWNfZGllOwogIAotQEAgLTgyNjUsMTAgKzg5 MDgsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3Ry dWN0IHN5bWJvbCAqc3ltLAorQEAgLTgyNjUsMTAgKzg5MTEsMTIgQEAgdmFyX2RlY29kZV9sb2Nh dGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogICAgICAg KGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkgbG9jYXRpb24gaXMK ICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBldGMuKS4gIFRoZW4g YWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEknbSBhc3N1bWluZyB0 aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtNjgwMyw3ICs2ODMxLDcgQEAgaW5k ZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4gYSBwb2ludGVyIHRv IGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQgaWYgd2UgbmVlZAotQEAgLTgy OTAsMjEgKzg5MzUsMzAgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04MjkwLDIxICs4OTM4LDMw IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxl LT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKICAKQEAgLTY4NDEs NyArNjg2OSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCiAgICAgICAgLyog RGVmYXVsdCBhc3N1bXB0aW9ucy4KICAgICAgICAgICBVc2UgdGhlIHBhc3NlZCB0eXBlIG9yIGRl Y29kZSBpdCBmcm9tIHRoZSBkaWUuICAqLwotQEAgLTg0MDIsOSArOTA1NiwyOCBAQCBuZXdfc3lt Ym9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorQEAgLTg0MDIsOSArOTA1OSwyOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkg IGlmIChhdHRyKQogIAkgICAgewogIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBz eW0sIGN1KTsKQEAgLTY4NzEsNyArNjg5OSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAw NjQ0CiAgCSAgICAgIGVsc2UKICAJCWFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9p bl9zY29wZSk7CiAgCSAgICB9Ci1AQCAtODUzNCw3ICs5MjA3LDcgQEAgbmV3X3N5bWJvbCAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC04NTM0LDcgKzkyMTAsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkgIGFkZF9zeW1i b2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7CiAgCSAgYnJlYWs7CiAgCWNhc2Ug RFdfVEFHX2VudW1lcmF0b3I6CkBAIC02ODgwLDcgKzY5MDgsNyBAQCBpbmRleCA0Y2NlMzZiLi5j MmY1ZjIzIDEwMDY0NAogIAkgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb25zdF92 YWx1ZSwgY3UpOwogIAkgIGlmIChhdHRyKQogIAkgICAgewotQEAgLTg1NTgsNiArOTIzMSwxNiBA QCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTg1NTgsNiArOTIzNCwxNiBAQCBuZXdfc3ltYm9sIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogIAkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19UWVBFREVGOwogIAkgIGFkZF9zeW1i b2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOwogIAkgIGJyZWFrOwpAQCAtNjg5Nyw3 ICs2OTI1LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAJZGVmYXVsdDoKICAJ ICAvKiBOb3QgYSB0YWcgd2UgcmVjb2duaXplLiAgSG9wZWZ1bGx5IHdlIGFyZW4ndCBwcm9jZXNz aW5nCiAgCSAgICAgdHJhc2ggZGF0YSwgYnV0IHNpbmNlIHdlIG11c3Qgc3BlY2lmaWNhbGx5IGln bm9yZSB0aGluZ3MKLUBAIC04NTcxLDggKzkyNTQsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAg LTg1NzEsOCArOTI1Nyw3IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgLyogRm9yIHRoZSBi ZW5lZml0IG9mIG9sZCB2ZXJzaW9ucyBvZiBHQ0MsIGNoZWNrIGZvciBhbm9ueW1vdXMKICAJIG5h bWVzcGFjZXMgYmFzZWQgb24gdGhlIGRlbWFuZ2xlZCBuYW1lLiAgKi8KICAgICAgICBpZiAoIXBy b2Nlc3NpbmdfaGFzX25hbWVzcGFjZV9pbmZvCkBAIC02OTA3LDcgKzY5MzUsNyBAQCBpbmRleCA0 Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNl cyAoc3ltKTsKICAgICAgfQogICAgcmV0dXJuIChzeW0pOwotQEAgLTg4MjMsMTIgKzk1MDUsMTgg QEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorQEAgLTg4MjMsMTIgKzk1MDgsMTggQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICBjYXNlIERXX1RBR19uYW1lc3Bh Y2U6CiAgICAgICAgdGhpc190eXBlID0gcmVhZF9uYW1lc3BhY2VfdHlwZSAoZGllLCBjdSk7CiAg ICAgICAgYnJlYWs7CkBAIC02OTI2LDcgKzY5NTQsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIz IDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAtODkxMCwxMCArOTU5OCwx MDAgQEAgZGV0ZXJtaW5lX3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorQEAgLTg5MTAsMTAgKzk2MDEsMTAwIEBAIGRldGVybWluZV9wcmVmaXggKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJICAgICBTbyBpdCBk b2VzIG5vdCBuZWVkIGEgcHJlZml4LiAgKi8KICAJICByZXR1cm4gIiI7CiAgICAgICAgZGVmYXVs dDoKQEAgLTcwMjgsNyArNzA1Niw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAg LyogUmV0dXJuIGEgbmV3bHktYWxsb2NhdGVkIHN0cmluZyBmb3JtZWQgYnkgY29uY2F0ZW5hdGlu ZyBQUkVGSVggYW5kCiAgICAgU1VGRklYIHdpdGggYXBwcm9wcmlhdGUgc2VwYXJhdG9yLiAgSWYg UFJFRklYIG9yIFNVRkZJWCBpcyBOVUxMIG9yIGVtcHR5LCB0aGVuCiAgICAgc2ltcGx5IGNvcHkg dGhlIFNVRkZJWCBvciBQUkVGSVgsIHJlc3BlY3RpdmVseS4gIElmIE9CUyBpcyBub24tbnVsbCwK LUBAIC04OTYzLDE3ICs5NzQxLDExMSBAQCBzaWJsaW5nX2RpZSAoc3RydWN0IGRpZV9pbmZvICpk aWUpCitAQCAtODk2MywxNyArOTc0NCwxMTEgQEAgc2libGluZ19kaWUgKHN0cnVjdCBkaWVfaW5m byAqZGllKQogICAgcmV0dXJuIGRpZS0+c2libGluZzsKICB9CiAgCkBAIC03MTQ2LDcgKzcxNzQs NyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIH0KICAKICAvKiBHZXQgbmFtZSBv ZiBhIGRpZSwgcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLUBAIC0xMDIwMCwxMSArMTEw NzIsMTEgQEAgZHdhcmYyX2dldF9yZWZfZGllX29mZnNldCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cikKK0BAIC0xMDIwMCwxMSArMTEwNzUsMTEgQEAgZHdhcmYyX2dldF9yZWZfZGllX29mZnNldCAo c3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKICAgIHJldHVybiAwOwogIH0KICAKQEAgLTcxNjEsNyAr NzE4OSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgewogICAgaWYgKGF0dHIt PmZvcm0gPT0gRFdfRk9STV9zZGF0YSkKICAgICAgcmV0dXJuIERXX1NORCAoYXR0cik7Ci1AQCAt MTEwMDksOCArMTE4ODEsNiBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFk ZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorQEAgLTExMDA5LDggKzExODg0LDYgQEAgZHdh cmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9m ZnNldCwKICB7CiAgICBnZGJfYnl0ZSAqbWFjX3B0ciwgKm1hY19lbmQ7CiAgICBzdHJ1Y3QgbWFj cm9fc291cmNlX2ZpbGUgKmN1cnJlbnRfZmlsZSA9IDA7CkBAIC03MTcwLDcgKzcxOTgsNyBAQCBp bmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAogICAgaWYgKGR3YXJmMl9wZXJfb2JqZmls ZS0+bWFjaW5mby5idWZmZXIgPT0gTlVMTCkKICAgICAgewotQEAgLTExMDE4LDI5ICsxMTg4OCwx OSBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25l ZCBpbnQgb2Zmc2V0LAorQEAgLTExMDE4LDI5ICsxMTg5MSwxOSBAQCBkd2FyZl9kZWNvZGVfbWFj cm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAogICAgICAg IHJldHVybjsKICAgICAgfQogIApAQCAtNzIwNSw3ICs3MjMzLDcgQEAgaW5kZXggNGNjZTM2Yi4u YzJmNWYyMyAxMDA2NDQKICAgICAgICAgIH0KICAKICAgICAgICBtYWNpbmZvX3R5cGUgPSByZWFk XzFfYnl0ZSAoYWJmZCwgbWFjX3B0cik7Ci1AQCAtMTEwNTEsOTIgKzExOTExLDcgQEAgZHdhcmZf ZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9mZnNl dCwKK0BAIC0xMTA1MSw5MiArMTE5MTQsNyBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3Qg bGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAogICAgICAgICAgICAvKiBBIHpl cm8gbWFjaW5mbyB0eXBlIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBtYWNybwogICAgICAgICAg ICAgICBpbmZvcm1hdGlvbi4gICovCiAgICAgICAgICBjYXNlIDA6CkBAIC03Mjk5LDcgKzczMjcs NyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAogICAgICAgICAgY2FzZSBEV19N QUNJTkZPX2RlZmluZToKICAgICAgICAgIGNhc2UgRFdfTUFDSU5GT191bmRlZjoKLUBAIC0xMTE1 MSwzMSArMTE5MjYsMTkgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVy ICpsaCwgdW5zaWduZWQgaW50IG9mZnNldCwKK0BAIC0xMTE1MSwzMSArMTE5MjksMTkgQEAgZHdh cmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9m ZnNldCwKICAgICAgICAgICAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7CiAgCiAgICAgICAgICAg ICAgaWYgKCEgY3VycmVudF9maWxlKQpAQCAtNzM0Miw3ICs3MzcwLDcgQEAgaW5kZXggNGNjZTM2 Yi4uYzJmNWYyMyAxMDA2NDQKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAKLUBA IC0xMTE4OSwyMiArMTE5NTIsOSBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9o ZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorQEAgLTExMTg5LDIyICsxMTk1NSw5IEBA IGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGlu dCBvZmZzZXQsCiAgICAgICAgICAgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZk LCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7CiAgICAgICAgICAgICAgbWFjX3B0ciArPSBieXRlc19y ZWFkOwogIApAQCAtNzM2OCw3ICs3Mzk2LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2 NDQKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAKLUBAIC0xMTI1OCw3ICsxMjAw OCw3IEBAIGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2ln bmVkIGludCBvZmZzZXQsCitAQCAtMTEyNTgsNyArMTIwMTEsNyBAQCBkd2FyZl9kZWNvZGVfbWFj cm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAogICAgICAg ICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQpAQCAtNzM3Nyw3ICs3NDA1LDcg QEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICB9CiAgCiAgLyogQ2hlY2sgaWYgdGhl IGF0dHJpYnV0ZSdzIGZvcm0gaXMgYSBEV19GT1JNX2Jsb2NrKgotQEAgLTExMzE4LDYgKzEyMDY4 LDM0IEBAIGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKK0BA IC0xMTMxOCw2ICsxMjA3MSwzNCBAQCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIpCiAgICAgIH0KICB9CiAgCkBAIC03NDEyLDcgKzc0NDAsNyBAQCBpbmRleCA0 Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIHN0YXRpYyB2b2lkCiAgZHdhcmYyX3N5bWJvbF9tYXJr X2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAg CQkJICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLUBAIC0xMTM0NywzNSArMTIxMjUsMjUgQEAg ZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1 Y3Qgc3ltYm9sICpzeW0sCitAQCAtMTEzNDcsMzUgKzEyMTI4LDI1IEBAIGR3YXJmMl9zeW1ib2xf bWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3lt LAogICAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX2xvY2xpc3RfZnVu Y3M7CiAgICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gYmF0b247CiAgICAgIH0K QEAgLTc0NjMsNyArNzQ5MSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAg IH0KICB9CiAgCi1AQCAtMTE2NjMsNiArMTI0MzEsMzEgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChj b25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitAQCAtMTE2NjMsNiAr MTI0MzQsMzEgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29u c3Qgdm9pZCAqaXRlbV9yaHMpCiAgICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0ID09IG9mc19yaHMt Pm9mZnNldDsKICB9CiAgCkBAIC03NDk1LDcgKzc1MjMsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1 ZjIzIDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUu ICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252 ZW5pZW5jZSwgcmV0dXJuIFRZUEUuICAqLwogIAotQEAgLTExNjcxLDYgKzEyNDY0LDggQEAgc2V0 X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTExNjcxLDYgKzEyNDY3LDggQEAgc2V0X2RpZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogIHsKICAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqc2xvdCwgb2ZzOwog IApAQCAtNzUwNCw3ICs3NTMyLDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAg IGlmIChjdS0+dHlwZV9oYXNoID09IE5VTEwpCiAgICAgIHsKICAgICAgICBnZGJfYXNzZXJ0IChj dS0+cGVyX2N1ICE9IE5VTEwpOwotQEAgLTExODEzLDIzICsxMjYwOCwxMyBAQCBzaG93X2R3YXJm Ml9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xMTgxMywyMyArMTI2MTEsMTMg QEAgc2hvd19kd2FyZjJfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBjbWRfc2hv d19saXN0IChzaG93X2R3YXJmMl9jbWRsaXN0LCBmcm9tX3R0eSwgIiIpOwogIH0KICAKQEAgLTc1 MzIsNyArNzU2MCw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgfQogIAogIC8q IG11bm1hcCBkZWJ1ZyBzZWN0aW9ucyBmb3IgT0JKRklMRSwgaWYgbmVjZXNzYXJ5LiAgKi8KLUBA IC0xMTgzOCwxNSArMTI2MjMsMTUgQEAgc3RhdGljIHZvaWQKK0BAIC0xMTgzOCwxNSArMTI2MjYs MTUgQEAgc3RhdGljIHZvaWQKICBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHZvaWQgKmQpCiAgewogICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAq ZGF0YSA9IGQ7CkBAIC03NTU3LDcgKzc1ODUsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEw MDY0NAogIH0KICAKICB2b2lkIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKTsKLUBAIC0x MTg1NCw2ICsxMjYzOSw3IEBAIHZvaWQgX2luaXRpYWxpemVfZHdhcmYyX3JlYWQgKHZvaWQpOwor QEAgLTExODU0LDYgKzEyNjQyLDcgQEAgdm9pZCBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9p ZCk7CiAgdm9pZAogIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKQogIHsKQEAgLTc1OTgs NyArNzYyNiw3IEBAIGluZGV4IDZlNzlkNGEuLjE5OGJhZTMgMTAwNjQ0CiAgICBkZWZhdWx0X3N5 bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJl bG9jYXRpb24gKi8KICAgIGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJLyogc3ltX3NlZ21lbnRzOiBH ZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dk Yi9ldmFsLmMKLWluZGV4IDI5MjY0NjUuLjRjNmRlNzggMTAwNjQ0CitpbmRleCAyOTI2NDY1Li5i NTNmODk1IDEwMDY0NAogLS0tIGEvZ2RiL2V2YWwuYwogKysrIGIvZ2RiL2V2YWwuYwogQEAgLTM5 LDggKzM5LDEyIEBACkBAIC03NzM5LDE3ICs3NzY3LDIzIEBAIGluZGV4IDI5MjY0NjUuLjRjNmRl NzggMTAwNjQ0CiAgCX0KICAgICAgICBlbHNlIGlmIChvcCA9PSBPUF9WQVJfVkFMVUUpCiAgCXsK LUBAIC0xNTQ5LDcgKzE2MDEsMTAgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg dHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTU0OSw2ICsxNjAxLDggQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCiAgICAgICAgLyogRmlyc3Qg ZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcgd2l0aC4gICovCiAgICAgICAg YXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKTsKICsg ICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7CiArICAgICAg b2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOwogICAgICAgIHR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0rICAgICAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CiAgICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCi0gICAg ICAgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BUUikKK0BAIC0xNTY5LDYgKzE2MjMsNyBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAJICAgICAg Y29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCSAgICB9CisgCX0gCisrICAgICAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CisgCisgICAgICAgc3dpdGNoIChjb2RlKQorIAl7CiBAQCAtMTcxNiw2 ICsxNzcxLDM3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVj dF90eXBlLAogIAkgIGVycm9yIChfKCJub24tcG9pbnRlci10by1tZW1iZXIgdmFsdWUgdXNlZCBp biBwb2ludGVyLXRvLW1lbWJlciBjb25zdHJ1Y3QiKSk7CiAgCX0KQEAgLTc4MzAsNyArNzg2NCwx MCBAQCBpbmRleCAyOTI2NDY1Li40YzZkZTc4IDEwMDY0NAogLQlvZmZzZXRfaXRlbSA9IHN1YnNj cmlwdF9hcnJheVtuZGltZW5zaW9ucyAtIDFdOwogKwlvZmZzZXRfaXRlbSA9IDA7CiArCW9mZnNl dF9ieXRlID0gMDsKLSsKKyAKKy0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAxOyBpID4gMDsgLS1p KQorLQkgIG9mZnNldF9pdGVtID0KKy0JICAgIGFycmF5X3NpemVfYXJyYXlbaSAtIDFdICogb2Zm c2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwogKwlmb3IgKGkgPSBuZGltZW5zaW9u cyAtIDE7IGkgPj0gMDsgLS1pKQogKwkgIHsKICsJICAgIG9mZnNldF9pdGVtICo9IGFycmF5X3Np emVfYXJyYXlbaV07CkBAIC03ODM5LDEwICs3ODc2LDcgQEAgaW5kZXggMjkyNjQ2NS4uNGM2ZGU3 OCAxMDA2NDQKICsJICAgIGVsc2UKICsJICAgICAgb2Zmc2V0X2J5dGUgKz0gc3Vic2NyaXB0X2Fy cmF5W2ldICogYnl0ZV9zdHJpZGVfYXJyYXlbaV07CiArCSAgfQotIAotLQlmb3IgKGkgPSBuZGlt ZW5zaW9ucyAtIDE7IGkgPiAwOyAtLWkpCi0tCSAgb2Zmc2V0X2l0ZW0gPQotLQkgICAgYXJyYXlf c2l6ZV9hcnJheVtpIC0gMV0gKiBvZmZzZXRfaXRlbSArIHN1YnNjcmlwdF9hcnJheVtpIC0gMV07 CisrCiArCWVsZW1lbnRfc2l6ZSA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0bXBf dHlwZSkpOwogKwlvZmZzZXRfYnl0ZSArPSBvZmZzZXRfaXRlbSAqIGVsZW1lbnRfc2l6ZTsKICAK QEAgLTc4NTcsNyArNzg5MSw3NCBAQCBpbmRleCAyOTI2NDY1Li40YzZkZTc4IDEwMDY0NAogICAg ICAgIH0KICAKICAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLUBAIC0yNTk4LDcgKzI3MDUs NyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX2FkZHJlc3MgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IGludCAqcG9zLAorQEAgLTIyOTEsMTQgKzIzOTgsMjIgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgICAgICAgaWYgKGV4cGVjdF90eXBlICYm IFRZUEVfQ09ERSAoZXhwZWN0X3R5cGUpID09IFRZUEVfQ09ERV9QVFIpCisgCWV4cGVjdF90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAoZXhwZWN0X3R5cGUpKTsKKyAgICAg ICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChleHBlY3RfdHlwZSwgZXhwLCBwb3MsIG5vc2lkZSk7 CisrICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKyAg ICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKyAgICAg ICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworICAgICAgIGlmIChU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0RQVFIKKyAJICB8fCBUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9NRU1CRVJQVFIpCisgCWVycm9yIChfKCJBdHRlbXB0IHRvIGRl cmVmZXJlbmNlIHBvaW50ZXIgdG8gbWVtYmVyIHdpdGhvdXQgYW4gb2JqZWN0IikpOworICAgICAg IGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQorLQlnb3RvIG5vc2lkZXJldDsKKysJeworKwkgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOworKwkgIGdvdG8gbm9zaWRlcmV0OworKwl9CisgICAgICAg aWYgKHVub3BfdXNlcl9kZWZpbmVkX3AgKG9wLCBhcmcxKSkKKy0JcmV0dXJuIHZhbHVlX3hfdW5v cCAoYXJnMSwgb3AsIG5vc2lkZSk7CisrCXsKKysJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsK KysJICByZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsKKysJfQorICAgICAg IGVsc2UgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKKyAJeworIAkgIHR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CitAQCAtMjMwNywxMiArMjQy MiwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKKyAJICAvKiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRoZSAx c3QgZWx0LiAgKi8KKyAJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJS QVkKKyAJICAgICkKKy0JICAgIHJldHVybiB2YWx1ZV96ZXJvIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSwKKy0JCQkgICAgICAgbHZhbF9tZW1vcnkpOworKwkgICAgeworKwkgICAgICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKKysJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpLAorKwkJCQkgbHZhbF9tZW1vcnkpOworKwkgICAgfQorIAkgIGVsc2UgaWYg KFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKKy0JICAgIC8qIEdEQiBhbGxvd3Mg ZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLworLQkgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0 aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCistCQkJICAgICAgIGx2YWxfbWVt b3J5KTsKKysJICAgIHsKKysJICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgICAg IC8qIEdEQiBhbGxvd3MgZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLworKwkgICAgICByZXR1cm4g dmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJ CQkJIGx2YWxfbWVtb3J5KTsKKysJICAgIH0KKyAJICBlbHNlCisgCSAgICBlcnJvciAoXygiQXR0 ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIikpOworIAl9CitA QCAtMjMyMiw5ICsyNDQzLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAorIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJsZXMgYXJlIHJhcmUg ZW5vdWdoIHRoYXQKKyAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNlZW0gdG8gYmUgYSBt aXN0YWtlLiAgKi8KKyAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5U KQorLQlyZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5i dWlsdGluX2ludCwKKy0JCQkgICAgICAoQ09SRV9BRERSKSB2YWx1ZV9hc19hZGRyZXNzIChhcmcx KSk7CistICAgICAgcmV0dXJuIHZhbHVlX2luZCAoYXJnMSk7CisrCXsKKysJICBkb19jbGVhbnVw cyAob2xkX2NoYWluKTsKKysJICByZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChl eHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJKENPUkVfQUREUikgdmFsdWVfYXNfYWRk cmVzcyAoYXJnMSkpOworKwl9CisrICAgICAgYXJnMSA9IHZhbHVlX2luZCAoYXJnMSk7CisrICAg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAgICAgcmV0dXJuIGFyZzE7CisgCisgICAg IGNhc2UgVU5PUF9BRERSOgorICAgICAgIC8qIEMrKzogY2hlY2sgZm9yIGFuZCBoYW5kbGUgcG9p bnRlciB0byBtZW1iZXJzLiAgKi8KK0BAIC0yNTk4LDcgKzI3MjQsNyBAQCBldmFsdWF0ZV9zdWJl eHBfZm9yX2FkZHJlc3MgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAogICAgICAg ICgqcG9zKSArPSA1ICsgQllURVNfVE9fRVhQX0VMRU0gKHRlbSArIDEpOwogICAgICAgIHggPSB2 YWx1ZV9hZ2dyZWdhdGVfZWx0IChleHAtPmVsdHNbcGMgKyAxXS50eXBlLAogIAkJCSAgICAgICAm ZXhwLT5lbHRzW3BjICsgM10uc3RyaW5nLApAQCAtNzg2Niw3ICs3OTY3LDcgQEAgaW5kZXggMjky NjQ2NS4uNGM2ZGU3OCAxMDA2NDQKICAgICAgICBpZiAoeCA9PSBOVUxMKQogIAllcnJvciAoXygi VGhlcmUgaXMgbm8gZmllbGQgbmFtZWQgJXMiKSwgJmV4cC0+ZWx0c1twYyArIDNdLnN0cmluZyk7 CiAgICAgICAgcmV0dXJuIHg7Ci1AQCAtMjY0Myw3ICsyNzUwLDcgQEAgZXZhbHVhdGVfc3ViZXhw X3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjY0Myw3ICsyNzY5 LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpl eHAsCiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtNzg3NSw3ICs3 OTc2LDcgQEAgaW5kZXggMjkyNjQ2NS4uNGM2ZGU3OCAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wg KnZhcjsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogIAotQEAgLTI2NTQsMTIgKzI3NjEsMTcgQEAg ZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitA QCAtMjY1NCwxMiArMjc4MCwxNyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAg ICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CkBAIC03ODk0LDcgKzc5OTUsNyBA QCBpbmRleCAyOTI2NDY1Li40YzZkZTc4IDEwMDY0NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChs b29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2 YWwpOwogIAl9Ci1AQCAtMjcxMSw5ICsyODIzLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6 ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKK0BAIC0yNzExLDkgKzI4NDIs MTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IGludCAqcG9zKQogIAogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0g NDsKQEAgLTEwOTk1LDcgKzExMDk2LDcgQEAgaW5kZXggMGY5ZDQ0ZS4uYzkxMGU4OCAxMDA2NDQK ICAgIC8qIFdlIGRpZG4ndCBmaW5kIGl0OyBwcmludCB0aGUgcmF3IGRhdGEuICAqLwogICAgaWYg KHZiaXQpCiBkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51 eC1uYXQuYwotaW5kZXggZmU4NDhmZi4uMTcwZTZjZCAxMDA2NDQKK2luZGV4IGZlODQ4ZmYuLjkw NWRjYzMgMTAwNjQ0CiAtLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYwogKysrIGIvZ2RiL2kzODYt bGludXgtbmF0LmMKIEBAIC01ODYsNiArNTg2LDggQEAgaTM4Nl9saW51eF9zdG9yZV9pbmZlcmlv cl9yZWdpc3RlcnMgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCkBAIC0xMTA1NCw3ICsxMTE1NSw3 IEBAIGluZGV4IGZlODQ4ZmYuLjE3MGU2Y2QgMTAwNjQ0CiAgICByZXR1cm4gaTM4Nl9saW51eF9k cl9nZXQgKGluZmVyaW9yX3B0aWQsIERSX1NUQVRVUyk7CiAgfQogIAotKy8qIFVuc2V0IFZBTFVF IGJpdHMgaW4gRFJfU1RBVFVTIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KKysvKiBVbnNl dCBNQVNLIGJpdHMgaW4gRFJfU1RBVFVTIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KICsK ICtzdGF0aWMgdm9pZAogK2kzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25n IG1hc2spCkBAIC0xMTEwMCw3ICsxMTIwMSw3IEBAIGluZGV4IGZlODQ4ZmYuLjE3MGU2Y2QgMTAw NjQ0CiAgCiAgICAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJhY2UgcmVzdW1lIG1ldGhvZC4g ICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmMgYi9nZGIvaTM4Ni1uYXQuYwotaW5kZXgg YWIxYmQ4YS4uZWUzMzBiOCAxMDA2NDQKK2luZGV4IDMyNWI0ZGYuLjYzMWNjZDYgMTAwNjQ0CiAt LS0gYS9nZGIvaTM4Ni1uYXQuYwogKysrIGIvZ2RiL2kzODYtbmF0LmMKIEBAIC0xMzcsOCArMTM3 LDExIEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlIGkzODZfZHJfbG93OwpAQCAtMTExNTcsNyAr MTEyNTgsNyBAQCBpbmRleCBhYjFiZDhhLi5lZTMzMGI4IDEwMDY0NAogIC8qIFJldHVybiBub24t emVybyBpZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRzIGF0CiAgICAg YWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8KICAKLUBAIC01 NzUsMjggKzU5OCw3IEBAIHN0YXRpYyBpbnQKK0BAIC01NzgsMjggKzYwMSw3IEBAIHN0YXRpYyBp bnQKICBpMzg2X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKICB7CiAgICBDT1JFX0FERFIg YWRkciA9IDA7CkBAIC0xMTE4Nyw3ICsxMTI4OCw3IEBAIGluZGV4IGFiMWJkOGEuLmVlMzMwYjgg MTAwNjQ0CiAgfQogIAogIC8qIEluc2VydCBhIGhhcmR3YXJlLWFzc2lzdGVkIGJyZWFrcG9pbnQg YXQgQlBfVEdULT5wbGFjZWRfYWRkcmVzcy4KLUBAIC02OTAsNiArNjkyLDcgQEAgaTM4Nl91c2Vf d2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorQEAgLTY5Myw2ICs2OTUsNyBAQCBp Mzg2X3VzZV93YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKnQpCiAgICB0LT50b19zdG9w cGVkX2RhdGFfYWRkcmVzcyA9IGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3M7CiAgICB0LT50b19p bnNlcnRfd2F0Y2hwb2ludCA9IGkzODZfaW5zZXJ0X3dhdGNocG9pbnQ7CiAgICB0LT50b19yZW1v dmVfd2F0Y2hwb2ludCA9IGkzODZfcmVtb3ZlX3dhdGNocG9pbnQ7CkBAIC0xMTIzNiw2ICsxMTMz NywzOSBAQCBpbmRleCBmNDliOWY2Li5jZDMxOTU4IDEwMDY0NAogICAgICBpbnQgZGVidWdfcmVn aXN0ZXJfbGVuZ3RoOwogICAgfTsKICAKK2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2Ri L2luZmNhbGwuYworaW5kZXggYzlkOThjZi4uMjc3Mzk5YSAxMDA2NDQKKy0tLSBhL2dkYi9pbmZj YWxsLmMKKysrKyBiL2dkYi9pbmZjYWxsLmMKK0BAIC00NDEsNiArNDQxLDcgQEAgY2FsbF9mdW5j dGlvbl9ieV9oYW5kIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBpbnQgbmFyZ3MsIHN0cnVjdCB2 YWx1ZSAqKmFyZ3MpCisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAgIHN0cnVjdCBicmVh a3BvaW50ICp0ZXJtaW5hdGVfYnAgPSBOVUxMOworICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICp0 bTsKKysgIHN0cnVjdCBjbGVhbnVwICp0ZXJtaW5hdGVfYnBfY2xlYW51cCA9IE5VTEw7CisgICBw dGlkX3QgY2FsbF90aHJlYWRfcHRpZDsKKyAgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisgICBj b25zdCBjaGFyICpuYW1lOworQEAgLTc3Miw3ICs3NzMsNyBAQCBjYWxsX2Z1bmN0aW9uX2J5X2hh bmQgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIGludCBuYXJncywgc3RydWN0IHZhbHVlICoqYXJn cykKKyAKKyAgIC8qIFJlZ2lzdGVyIGEgY2xlYW4tdXAgZm9yIHVud2luZF9vbl90ZXJtaW5hdGlu Z19leGNlcHRpb25fYnJlYWtwb2ludC4gICovCisgICBpZiAodGVybWluYXRlX2JwKQorLSAgICBt YWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKHRlcm1pbmF0ZV9icCk7CisrICAgIHRlcm1p bmF0ZV9icF9jbGVhbnVwID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50ICh0ZXJtaW5h dGVfYnApOworIAorICAgLyogLSBTTklQIC0gU05JUCAtIFNOSVAgLSBTTklQIC0gU05JUCAtIFNO SVAgLSBTTklQIC0gU05JUCAtIFNOSVAgLQorICAgICAgSWYgeW91J3JlIGxvb2tpbmcgdG8gaW1w bGVtZW50IGFzeW5jaHJvbm91cyBkdW1teS1mcmFtZXMsIHRoZW4KK0BAIC05ODcsNiArOTg4LDEx IEBAIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRvbmUgZXhlY3V0aW5nLCBHREIgd2lsbCBzaWxlbnRs eSBzdG9wLiIpLAorICAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8o Ii4uLiBzaG91bGQgbm90IGJlIGhlcmUiKSk7CisgICAgIH0KKyAKKysgIC8qIElmIHdlIGdldCBo ZXJlIGFuZCB0aGUgc3RkOjp0ZXJtaW5hdGUoKSBicmVha3BvaW50IGhhcyBiZWVuIHNldCwKKysg ICAgIGl0IGhhcyB0byBiZSBjbGVhbmVkIG1hbnVhbGx5LiAgKi8KKysgIGlmICh0ZXJtaW5hdGVf YnApCisrICAgIGRvX2NsZWFudXBzICh0ZXJtaW5hdGVfYnBfY2xlYW51cCk7CisrCisgICAvKiBJ ZiB3ZSBnZXQgaGVyZSB0aGUgY2FsbGVkIEZVTkNUSU9OIHJhbiB0byBjb21wbGV0aW9uLAorICAg ICAgYW5kIHRoZSBkdW1teSBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIHBvcHBlZC4gICovCisgCiBk aWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCiBpbmRleCA5ZTk4MjkwLi5m YWIxODkyIDEwMDY0NAogLS0tIGEvZ2RiL2luZmNtZC5jCkBAIC0xMTM0OSw3ICsxMTQ4Myw3IEBA IGluZGV4IGYxYjVkMTcuLjMxYWRkN2QgMTAwNjQ0CiAgCiAgZXh0ZXJuIHZvaWQgbm90aWNlX25l d19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5j IGIvZ2RiL2luZnJ1bi5jCi1pbmRleCAxYTgzYTI1Li4yZWUyMTY0IDEwMDY0NAoraW5kZXggZmY3 YzZiOS4uOWQyOWIxNSAxMDA2NDQKIC0tLSBhL2dkYi9pbmZydW4uYwogKysrIGIvZ2RiL2luZnJ1 bi5jCiBAQCAtNDUsNiArNDUsOCBAQApAQCAtMTEzOTIsNyArMTE1MjYsMjYgQEAgaW5kZXggMWE4 M2EyNS4uMmVlMjE2NCAxMDA2NDQKICAgICAgICAvKiBUaGlzIGNhdXNlcyB0aGUgZXZlbnRwb2lu dHMgYW5kIHN5bWJvbCB0YWJsZSB0byBiZSByZXNldC4KICAgICAgICAgICBNdXN0IGRvIHRoaXMg bm93LCBiZWZvcmUgdHJ5aW5nIHRvIGRldGVybWluZSB3aGV0aGVyIHRvCiAgICAgICAgICAgc3Rv cC4gICovCi1AQCAtMzQ2OCwyMyArMzQ4MCwzMyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoK K0BAIC0yODQ1LDYgKzI4NTcsOSBAQCB0YXJnZXRzIHNob3VsZCBhZGQgbmV3IHRocmVhZHMgdG8g dGhlIHRocmVhZCBsaXN0IHRoZW1zZWx2ZXMgaW4gbm9uLXN0b3AgbW9kZS4iKQorICAgICB7Cisg ICAgICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGVj cy0+cHRpZCk7CisgICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVf YXJjaCAocmVnY2FjaGUpOworKyAgICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBzYXZl X2luZmVyaW9yX3B0aWQgKCk7CisrCisrICAgICAgaW5mZXJpb3JfcHRpZCA9IGVjcy0+cHRpZDsK KyAKKyAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJpbmZydW46IHN0b3Bf cGMgPSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyZXNzIChnZGJhcmNo LCBzdG9wX3BjKSk7CitAQCAtMjg2MSw2ICsyODc2LDggQEAgdGFyZ2V0cyBzaG91bGQgYWRkIG5l dyB0aHJlYWRzIHRvIHRoZSB0aHJlYWQgbGlzdCB0aGVtc2VsdmVzIGluIG5vbi1zdG9wIG1vZGUu IikKKyAgICAgICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mcnVuOiAobm8gZGF0YSBhZGRyZXNzIGF2YWls YWJsZSlcbiIpOworIAl9CisrCisrICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisgICAg IH0KKyAKKyAgIGlmIChzdGVwcGluZ19wYXN0X3NpbmdsZXN0ZXBfYnJlYWtwb2ludCkKK0BAIC0z NDY4LDIzICszNDg1LDMzIEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogIAogIAllY3MtPmV2 ZW50X3RocmVhZC0+c3RlcHBpbmdfb3Zlcl9icmVha3BvaW50ID0gMTsKICAKQEAgLTExNDM4LDcg KzExNTkxLDcgQEAgaW5kZXggMWE4M2EyNS4uMmVlMjE2NCAxMDA2NDQKICAJa2VlcF9nb2luZyAo ZWNzKTsKICAJcmV0dXJuOwogIAotQEAgLTM0OTYsNiArMzUxOCw1MyBAQCBpbmZydW46IEJQU1RB VF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxu Iik7CitAQCAtMzQ5Niw2ICszNTIzLDUzIEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdK TVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKICAJZ2RiX2Fzc2Vy dCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7CiAg CWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CiAgCkBA IC0xMTQ5Miw3ICsxMTY0NSw3IEBAIGluZGV4IDFhODNhMjUuLjJlZTIxNjQgMTAwNjQ0CiAgCWVj cy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAxOwogIAlwcmludF9zdG9wX3JlYXNvbiAoRU5E X1NURVBQSU5HX1JBTkdFLCAwKTsKICAJc3RvcF9zdGVwcGluZyAoZWNzKTsKLUBAIC00NTAwLDYg KzQ1NjksOTYgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCitAQCAtNDUwMCw2ICs0NTc0LDk2IEBAIGluc2Vy dF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09S RV9BRERSIHBjKQogICAgICBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMgKGdkYmFyY2gs IHBjLCBicF9sb25nam1wX3Jlc3VtZSk7CiAgfQogIApAQCAtMTE1ODksNyArMTE3NDIsNyBAQCBp bmRleCAxYTgzYTI1Li4yZWUyMTY0IDEwMDY0NAogIHN0YXRpYyB2b2lkCiAgc3RvcF9zdGVwcGlu ZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCiAgewotQEAgLTQ1NjgsNiAr NDcyNyw4IEBAIGtlZXBfZ29pbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNz KQorQEAgLTQ1NjgsNiArNDczMiw4IEBAIGtlZXBfZ29pbmcgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKQogIAkgICAgfQogIAkgIGlmIChlLnJlYXNvbiA8IDApCiAgCSAgICB7 CkBAIC0xMjE2NSwxMCArMTIzMTgsMjIgQEAgaW5kZXggYTg0MDAzZi4uOTI0YzFjNSAxMDA2NDQK ICAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzLAkvKiBzeW1fb2Zmc2V0czogZHVtbXkgRklYTUUg dGlsIGltcGxlbSBzeW0gcmVsb2MgKi8KICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyog c3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0IGEv Z2RiL29iamZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYwotaW5kZXggOGRjY2E3MC4uNGIyNWE1YSAx MDA2NDQKK2luZGV4IDhkY2NhNzAuLmU1NDQyY2EgMTAwNjQ0CiAtLS0gYS9nZGIvb2JqZmlsZXMu YwogKysrIGIvZ2RiL29iamZpbGVzLmMKLUBAIC03MzEsNiArNzMxLDIwIEBAIGhhdmVfcGFydGlh bF9zeW1ib2xzICh2b2lkKQorQEAgLTYzNCw2ICs2MzQsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZz ZXRzKQorICAgICB9CisgICB9CisgCisrICAvKiBBbHJlYWQgUVVJQ0tfQUREUk1BUCB0aXNlbGYg YXNzdW1lcyBhbGwgc2VjdGlvbnMgaGF2ZSB0aGUgc2FtZSBvZmZzZXQuICAqLworKyAgaWYgKG9i amZpbGUtPnF1aWNrX2FkZHJtYXApCisrICAgIGFkZHJtYXBfcmVsb2NhdGUgKG9iamZpbGUtPnF1 aWNrX2FkZHJtYXAsCisrCQkgICAgICBBTk9GRlNFVCAoZGVsdGEsIFNFQ1RfT0ZGX1RFWFQgKG9i amZpbGUpKSk7CisrCisgICB7CisgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW07Cisg CitAQCAtNzMxLDYgKzczNiwyMCBAQCBoYXZlX3BhcnRpYWxfc3ltYm9scyAodm9pZCkKICAgICAg aWYgKG9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2ZwKSkKICAgICAgICByZXR1cm4gMTsK ICAgIH0KQEAgLTE4MDE0LDcgKzE4MTc5LDcgQEAgaW5kZXggNDljMDQzNy4uODRhNDc2ZSAxMDA2 NDQKICsgIHJldHVybiAxOwogK30KIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMg Yi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLWluZGV4IDU4YmNlZTMuLmIyZTdiN2QgMTAwNjQ0Citp bmRleCAwMTQ2NTkzLi5iODJmY2I2IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5j CiArKysgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKIEBAIC0yNSw2ICsyNSw3IEBACkBAIC0yMDA3 MCw3ICsyMDIzNSw3IEBAIGluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAgICBjdXJyZW50 X3RhcmdldC50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9h ZGRyZXNzOwogICAgY3VycmVudF90YXJnZXQudG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5n ZSA9IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2U7CiBkaWZmIC0tZ2l0IGEv Z2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCi1pbmRleCBiMWNiODUyLi5hZGZmOTQ2IDEwMDY0 NAoraW5kZXggYjFjYjg1Mi4uM2MwNmViYSAxMDA2NDQKIC0tLSBhL2dkYi90YXJnZXQuaAogKysr IGIvZ2RiL3RhcmdldC5oCiBAQCAtMzk1LDYgKzM5NSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCkBA IC0yMDA4MSw3ICsyMDI0NiwxNiBAQCBpbmRleCBiMWNiODUyLi5hZGZmOTQ2IDEwMDY0NAogICAg ICBpbnQgKCp0b19zdG9wcGVkX2J5X3dhdGNocG9pbnQpICh2b2lkKTsKICAgICAgaW50IHRvX2hh dmVfc3RlcHBhYmxlX3dhdGNocG9pbnQ7CiAgICAgIGludCB0b19oYXZlX2NvbnRpbnVhYmxlX3dh dGNocG9pbnQ7Ci1AQCAtMTE2Niw2ICsxMTY3LDE1IEBAIGV4dGVybiBjaGFyICpub3JtYWxfcGlk X3RvX3N0ciAocHRpZF90IHB0aWQpOworQEAgLTExMjQsNyArMTEyNSw3IEBAIGV4dGVybiBjaGFy ICpub3JtYWxfcGlkX3RvX3N0ciAocHRpZF90IHB0aWQpOworIC8qIEhhcmR3YXJlIHdhdGNocG9p bnQgaW50ZXJmYWNlcy4gICovCisgCisgLyogUmV0dXJucyBub24temVybyBpZiB3ZSB3ZXJlIHN0 b3BwZWQgYnkgYSBoYXJkd2FyZSB3YXRjaHBvaW50IChtZW1vcnkgcmVhZCBvcgorLSAgIHdyaXRl KS4gICovCisrICAgd3JpdGUpLiAgT25seSB0aGUgSU5GRVJJT1JfUFRJRCB0YXNrIGlzIGJlaW5n IHF1ZXJpZWQuICAqLworIAorICNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCBc CisgICAgKCpjdXJyZW50X3RhcmdldC50b19zdG9wcGVkX2J5X3dhdGNocG9pbnQpCitAQCAtMTE2 NiwxNCArMTE2NywyNiBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19zdHIgKHB0aWRfdCBw dGlkKTsKICAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludChhZGRyLCBsZW4sIHR5cGUp CVwKICAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dhdGNocG9pbnQpIChhZGRyLCBs ZW4sIHR5cGUpCiAgCkBAIC0yMDA5Nyw3ICsyMDI3MSwyMCBAQCBpbmRleCBiMWNiODUyLi5hZGZm OTQ2IDEwMDY0NAogICNkZWZpbmUgdGFyZ2V0X2luc2VydF9od19icmVha3BvaW50KGdkYmFyY2gs IGJwX3RndCkgXAogICAgICAgKCpjdXJyZW50X3RhcmdldC50b19pbnNlcnRfaHdfYnJlYWtwb2lu dCkgKGdkYmFyY2gsIGJwX3RndCkKICAKLUBAIC0xMjAzLDYgKzEyMTMsMjAgQEAgZXh0ZXJuIGlu dCB0YXJnZXRfc2VhcmNoX21lbW9yeSAoQ09SRV9BRERSIHN0YXJ0X2FkZHIsCisgI2RlZmluZSB0 YXJnZXRfcmVtb3ZlX2h3X2JyZWFrcG9pbnQoZ2RiYXJjaCwgYnBfdGd0KSBcCisgICAgICAoKmN1 cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV9od19icmVha3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQor IAorLSNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfZGF0YV9hZGRyZXNzKHRhcmdldCwgeCkgXAorLSAg ICAoKnRhcmdldC50b19zdG9wcGVkX2RhdGFfYWRkcmVzcykgKHRhcmdldCwgeCkKKysvKiBSZXR1 cm4gbm9uLXplcm8gaWYgdGFyZ2V0IGtub3dzIHRoZSBkYXRhIGFkZHJlc3Mgd2hpY2ggdHJpZ2dl cmVkIHRoaXMKKysgICB0YXJnZXRfc3RvcHBlZF9ieV93YXRjaHBvaW50LCBpbiBzdWNoIGNhc2Ug cGxhY2UgaXQgdG8gKkFERFJfUC4gIE9ubHkgdGhlCisrICAgSU5GRVJJT1JfUFRJRCB0YXNrIGlz IGJlaW5nIHF1ZXJpZWQuICAqLworKyNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfZGF0YV9hZGRyZXNz KHRhcmdldCwgYWRkcl9wKSBcCisrICAgICgqdGFyZ2V0LnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNz KSAodGFyZ2V0LCBhZGRyX3ApCisgCisgI2RlZmluZSB0YXJnZXRfd2F0Y2hwb2ludF9hZGRyX3dp dGhpbl9yYW5nZSh0YXJnZXQsIGFkZHIsIHN0YXJ0LCBsZW5ndGgpIFwKKyAgICgqdGFyZ2V0LnRv X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UpICh0YXJnZXQsIGFkZHIsIHN0YXJ0LCBsZW5n dGgpCitAQCAtMTIwMyw2ICsxMjE2LDIwIEBAIGV4dGVybiBpbnQgdGFyZ2V0X3NlYXJjaF9tZW1v cnkgKENPUkVfQUREUiBzdGFydF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFVMT05HRVNUIHBhdHRlcm5fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENPUkVfQUREUiAqZm91bmRfYWRkcnApOwogIApAQCAtMjAxMTgsNyArMjAzMDUsNyBAQCBp bmRleCBiMWNiODUyLi5hZGZmOTQ2IDEwMDY0NAogIC8qIENvbW1hbmQgbG9nZ2luZyBmYWNpbGl0 eS4gICovCiAgCiAgI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQocCkJCQkJCQlcCi1AQCAtMTMy Miw2ICsxMzQ2LDE0IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X29wcyAqZmluZF90YXJnZXRfYmVu ZWF0aCAoc3RydWN0IHRhcmdldF9vcHMgKik7CitAQCAtMTMyMiw2ICsxMzQ5LDE0IEBAIGV4dGVy biBzdHJ1Y3QgdGFyZ2V0X29wcyAqZmluZF90YXJnZXRfYmVuZWF0aCAoc3RydWN0IHRhcmdldF9v cHMgKik7CiAgCiAgZXh0ZXJuIGNoYXIgKnRhcmdldF9nZXRfb3NkYXRhIChjb25zdCBjaGFyICp0 eXBlKTsKICAKQEAgLTIwNDI3LDEzICsyMDYxNCwxMyBAQCBpbmRleCAwMDAwMDAwLi45OGIyZTc5 CiArCS5sb25nCTB4ZWRjMDc4MzQJLyogMTk0OiBmcnNxcnRlcyBmMTQsZjE1ICAgICAgICAgICov CiArCS5sb25nCTB4ZWRjMDc4MzUJLyogMTk4OiBmcnNxcnRlcy4gZjE0LGYxNSAgICAgICAgICov CiArCS5sb25nCTB4N2M0MzI3MWUJLyogMTljOiBpc2VsICAgIHIyLHIzLHI0LDI4ICAgICAgICov Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYt Zm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZv by5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKIG5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NmY3YTM5CitpbmRleCAwMDAwMDAw Li44M2ZhYWY2CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtdHlwZWRlZi1mb28uUwotQEAgLTAsMCArMSw0NTUgQEAKLSsJLmZpbGUJIng4Nl82 NC12bGEtdHlwZWRlZi5jIgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXBvaW50ZXItZm9vLlMKK0BAIC0wLDAgKzEsNDU3IEBACisrCS5maWxlCSJ4ODZfNjQtdmxhLXBv aW50ZXIuYyIKICsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJvZ2JpdHMKICsuTGRlYnVn X2FiYnJldjA6CiArCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwpAQCAtMjA0NDYs NyArMjA2MzMsNyBAQCBpbmRleCAwMDAwMDAwLi42NmY3YTM5CiArCS50eXBlCWZvbywgQGZ1bmN0 aW9uCiArZm9vOgogKy5MRkIyOgotKwkuZmlsZSAxICJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIKKysJ LmZpbGUgMSAieDg2XzY0LXZsYS1wb2ludGVyLmMiCiArCS5sb2MgMSAyMiAwCiArCXB1c2hxCSVy YnAKICsuTENGSTA6CkBAIC0yMDYwMiw2ICsyMDc4OSw3IEBAIGluZGV4IDAwMDAwMDAuLjY2Zjdh MzkKICsJLnF1YWQJMHgwCiArCS5xdWFkCTB4MAogKwkuc2VjdGlvbgkuZGVidWdfaW5mbworKy5M ZGVidWdfcmVsYXRpdmU6CiArCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAogKy5M ZGVidWdfc3RhcnQ6CiArCS52YWx1ZQkweDIKQEAgLTIwNjI0LDI3ICsyMDgxMiwyNSBAQCBpbmRl eCAwMDAwMDAwLi42NmY3YTM5CiArCS5xdWFkCS5MRkIyCiArCS5xdWFkCS5MRkUyCiArCS5sb25n CS5MTFNUMAotKwkubG9uZwkweDgzCisrCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0 aXZlCiArCS51bGViMTI4IDB4MwogKwkubG9uZwkuTEFTRjUKICsJLmJ5dGUJMHgxCiArCS5ieXRl CTB4MTUKLSsJLmxvbmcJMHg4MworKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2 ZQogKwkuYnl0ZQkweDIKICsJLmJ5dGUJMHg5MQogKwkuc2xlYjEyOCAtNTIKLSsuTHRhZ190eXBl ZGVmOgorKy5MdGFnX3BvaW50ZXI6CiArCS51bGViMTI4IDB4NAotKwkubG9uZwkuTEFTRjYKLSsJ LmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTcKLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1 Z19pbmZvCisrCS5ieXRlCTB4OAkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmxvbmcJLkx0YWdf YXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCS8qIERXX0FUX3R5cGUgKi8KICsJLnVsZWIxMjggMHg1 CS8qIEFiYnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KICsJLmxvbmcJLkxBU0Yw CiArCS5ieXRlCTB4MQogKwkuYnl0ZQkweDE4CiArI2lmIDEKLSsJLmxvbmcJLkx0YWdfdHlwZWRl ZiAtIC5kZWJ1Z19pbmZvCisrCS5sb25nCS5MdGFnX3BvaW50ZXIgLSAuZGVidWdfaW5mbwogKyNl bHNlCiArCS8qIERlYnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAg Ki8KICsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCkBAIC0yMDY2MywzNSAr MjA4NDksNDIgQEAgaW5kZXggMDAwMDAwMC4uNjZmN2EzOQogKwkuc3RyaW5nCSJpIgogKwkuYnl0 ZQkweDEKICsJLmJ5dGUJMHgxOQotKwkubG9uZwkweDgzCisrCS5sb25nCS5MdHlwZV9pbnQgLSAu TGRlYnVnX3JlbGF0aXZlCiArCS5ieXRlCTB4MgogKwkuYnl0ZQkweDkxCiArCS5zbGViMTI4IC0y MAogKwkuYnl0ZQkweDAKKysuTHR5cGVfaW50OgogKwkudWxlYjEyOCAweDcKICsJLmJ5dGUJMHg0 CiArCS5ieXRlCTB4NQogKwkuc3RyaW5nCSJpbnQiCiArLkx0YWdfYXJyYXlfdHlwZToKICsJLnVs ZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLwotKwku bG9uZwkweGEwICsgKDJmIC0gMWYpCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLwotKwku bG9uZwkweDlkICsgKDJmIC0gMWYpCS8qIERXX0FUX3NpYmxpbmc6IERXX0ZPUk1fcmVmNCAqLwor KwkubG9uZwkuTHR5cGVfY2hhciAtIC5MZGVidWdfcmVsYXRpdmUKKysJLmxvbmcJLkx0eXBlX3Vs b25nIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3JlZjQgKi8K ICsxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KICsJ LmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KICszOgogKwkuYnl0ZQkweDk3CS8qIERXX09QX3B1 c2hfb2JqZWN0X2FkZHJlc3MgKi8KKysjaWYgMQogKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYg Ki8KKysjZWxzZQorKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLworKyNlbmRpZgogKzI6CS8q IERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KICsJLnVsZWIxMjgg MHg5Ci0rCS5sb25nCTB4OWQgKyAoMmIgLSAxYikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0 ICovCisrCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF90eXBl OiBEV19GT1JNX3JlZjQgKi8KICsJLmJ5dGUJMHgzCiArCS5ieXRlCTB4OTEKICsJLnNsZWIxMjgg LTQwCiArCS5ieXRlCTB4NgogKwkuYnl0ZQkweDAKKysuTHR5cGVfdWxvbmc6CiArCS51bGViMTI4 IDB4YQogKwkuYnl0ZQkweDgKICsJLmJ5dGUJMHg3CisrLkx0eXBlX2NoYXI6CiArCS51bGViMTI4 IDB4YgogKwkuYnl0ZQkweDEKICsJLmJ5dGUJMHg2CkBAIC0yMDc1NiwxNCArMjA5NDksMTAgQEAg aW5kZXggMDAwMDAwMC4uNjZmN2EzOQogKwkudWxlYjEyOCAweGEKICsJLmJ5dGUJMHgwCiArCS5i eXRlCTB4MAotKwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMHgxNgorKwkudWxlYjEyOCAweDQJ LyogLkx0YWdfcG9pbnRlciBhYmJyZXYgKi8KKysJLnVsZWIxMjggMHgwZgkvKiBEV19UQUdfcG9p bnRlcl90eXBlICovCiArCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhl Ci0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKKysJLnVs ZWIxMjggMHgwYgogKwkudWxlYjEyOCAweGIKICsJLnVsZWIxMjggMHg0OQogKwkudWxlYjEyOCAw eDEzCkBAIC0yMDg3Nyw3ICsyMTA2Niw3IEBAIGluZGV4IDAwMDAwMDAuLjY2ZjdhMzkKICsuTEFT RjU6CiArCS5zdHJpbmcJInNpemUiCiArLkxBU0YzOgotKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXR5 cGVkZWYuYyIKKysJLnN0cmluZwkieDg2XzY0LXZsYS1wb2ludGVyLmMiCiArLkxBU0Y2OgogKwku c3RyaW5nCSJhcnJheV90IgogKy5MQVNGMToKQEAgLTIwODg4LDE1ICsyMTA3NywxNSBAQCBpbmRl eCAwMDAwMDAwLi42NmY3YTM5CiArCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQg SGF0IDQuMy4yLTcpIgogKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBI YXQgNC4zLjItNykiCiArCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYworZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMgYi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uYjgwOWM0ZQoraW5kZXggMDAwMDAwMC4uZmUyYzhmNwogLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwogQEAgLTAs MCArMSw0MyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCiArCi0rICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAr CiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjA5MzcsMTIgKzIxMTI2LDEy IEBAIGluZGV4IDAwMDAwMDAuLmI4MDljNGUKICt9CiArCiArI2VuZGlmCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uYjA1NDExZQoraW5kZXggMDAwMDAwMC4uZDI0M2NmMQogLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCi1A QCAtMCwwICsxLDY0IEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEt cG9pbnRlci5leHAKK0BAIC0wLDAgKzEsNjYgQEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTIwOTU4LDE0ICsy MTE0NywxMiBAQCBpbmRleCAwMDAwMDAwLi5iMDU0MTFlCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCiArCi0rIyBUZXN0IERXX0FUX2RhdGFfbG9jYXRpb24gYWNjZXNzZWQgdGhyb3VnaCBE V19UQUdfdHlwZWRlZiBpbnRlcm1lZGlhdGUuCi0rCiAraWYgIVtpc3RhcmdldCAieDg2XzY0LSot KiJdIHRoZW4gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5hcmNoL3g4Nl82NC12 bGEtdHlwZWRlZi5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCisrICAgIHZlcmJvc2Ug IlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cCB0ZXN0IG1hZGUg b25seSBmb3IgeDg2XzY0LiIKICsgICAgcmV0dXJuCiArfQogKwotK3NldCB0ZXN0ZmlsZSB4ODZf NjQtdmxhLXR5cGVkZWYKKytzZXQgdGVzdGZpbGUgeDg2XzY0LXZsYS1wb2ludGVyCiArc2V0IHNy Y2FzbWZpbGUgJHt0ZXN0ZmlsZX0tZm9vLlMKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiAr c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMjA5ODUsNyAr MjExNzIsNyBAQCBpbmRleCAwMDAwMDAwLi5iMDU0MTFlCiArZ2RiX2xvYWQgJHtiaW5maWxlfQog KwogK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB4ODZfNjQtdmxhLXR5cGVkZWYK KysgICAgdW50ZXN0ZWQgeDg2XzY0LXZsYS1wb2ludGVyCiArICAgIHJldHVybiAtMQogK30KICsK QEAgLTIwOTkzLDExMCArMjExODAsNzUyIEBAIGluZGV4IDAwMDAwMDAuLmIwNTQxMWUKICsKICtn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtfaGVyZSIKICsKLStnZGJfdGVzdCAid2hh dGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3QiICJmaXJzdDogd2hhdGlzIGFycmF5IgorK2dkYl90 ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxd IiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0g Y2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgogKwotK2dkYl90 ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUg YXJyYXkiCisrZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxd IiAiZmlyc3Q6IHdoYXRpcyAqYXJyYXkiCisrZ2RiX3Rlc3QgInB0eXBlICphcnJheSIgInR5cGUg PSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgKmFycmF5IgogKwotK2dkYl90ZXN0ICJw IGFycmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgYXJy YXlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCBhcnJheVxb M1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0i ICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCisrZ2RiX3Rlc3QgInAgKCphcnJheSlcWzFcXSIg IlxcJFxbMC05XF0gPSAxICdcXFxcMDAxJyIKKytnZGJfdGVzdCAicCAoKmFycmF5KVxbMlxdIiAi XFwkXFswLTlcXSA9IDIgJ1xcXFwwMDInIgorK2dkYl90ZXN0ICJwICgqYXJyYXkpXFszXF0iICJc XCRcWzAtOVxdID0gMyAnXFxcXDAwMyciCisrZ2RiX3Rlc3QgInAgKCphcnJheSlcWzRcXSIgIlxc JFxbMC05XF0gPSA0ICdcXFxcMDA0JyIKICsKICtnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi YnJlYWtfaGVyZSIKICsKLStnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3Qi ICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBl ID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2FycmF5aWR4LmMKLWluZGV4IDk4ZDRkMzUuLmY5OGE2NTYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YXJyYXlpZHguYwotQEAgLTE3LDYgKzE3LDEzIEBACi0gCi0gaW50IGFycmF5W10gPSB7MSwgMiwg MywgNH07Ci0gCi0rI2lmZGVmIF9fR05VQ19fCi0rc3RydWN0Ci0rICB7Ci0rICAgIGludCBhWzBd OwotKyAgfSB1bmJvdW5kOwotKyNlbmRpZgotKwotIGludAotIG1haW4gKHZvaWQpCi0gewotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLWluZGV4IDcxY2U0YWEuLmFmMGU1ZjggMTAwNjQ0 Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLUBAIC01OSw0ICs1OSwxMiBAQCBnZGJfdGVz dCAicHJpbnQgYXJyYXkiIFwKLSAgICAgICAgICAiXFx7XFxcWzBcXFxdID0gMSwgXFxcWzFcXFxd ID0gMiwgXFxcWzJcXFxdID0gMywgXFxcWzNcXFxdID0gNFxcfSIgXAotICAgICAgICAgICJQcmlu dCBhcnJheSB3aXRoIGFycmF5LWluZGV4ZXMgb24iCi0gCi0tCi0rc2V0IHRlc3QgInAgdW5ib3Vu ZC5hID09ICZ1bmJvdW5kLmFcWzBcXSIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7 Ci0rICAgIC1yZSAiID0gMVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAg fQotKyAgICAtcmUgIk5vIHN5bWJvbCBcInVuYm91bmRcIiBpbiBjdXJyZW50IGNvbnRleHQuXHJc biRnZGJfcHJvbXB0ICQiIHsKLSsJdW5zdXBwb3J0ZWQgIiR0ZXN0IChubyBHQ0MpIgotKyAgICB9 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCi1pbmRleCBkNzZjYzM2Li40OTZmZjE4IDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotQEAgLTYwNiw3ICs2MDYsNyBAQCBnZGJfdGVzdCAiaGVs cCBzdGVwaSIgIlN0ZXAgb25lIGluc3RydWN0aW9uIGV4YWN0bHlcLlxbXHJcblxdK0FyZ3VtZW50 IE4gbWVhbnMgZAotIGdkYl90ZXN0ICJoZWxwIHNpZ25hbCIgIkNvbnRpbnVlIHByb2dyYW0gZ2l2 aW5nIGl0IHNpZ25hbC4qIiAiaGVscCBzaWduYWwiCi0gIyB0ZXN0IGhlbHAgc291cmNlCi0gIyB2 eGdkYiByZWFkcyAudnhnZGJpbml0Ci0tZ2RiX3Rlc3QgImhlbHAgc291cmNlIiAiUmVhZCBjb21t YW5kcyBmcm9tIGEgZmlsZSBuYW1lZCBGSUxFXC5cW1xyXG5cXStPcHRpb25hbCAtdiBzd2l0Y2gg XFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxcKSBjYXVzZXMgZWFjaCBjb21tYW5kIGluXFtcclxuXF0r RklMRSB0byBiZSBlY2hvZWQgYXMgaXQgaXMgZXhlY3V0ZWRcLlxbXHJcblxdK05vdGUgdGhhdCB0 aGUgZmlsZSBcIlxbXlwiXF0qXCIgaXMgcmVhZCBhdXRvbWF0aWNhbGx5IGluIHRoaXMgd2F5XFtc clxuXF0rd2hlbiBHREIgaXMgc3RhcnRlZFwuIiAiaGVscCBzb3VyY2UiCi0rZ2RiX3Rlc3QgImhl bHAgc291cmNlIiAiUmVhZCBjb21tYW5kcyBmcm9tIGEgZmlsZSBuYW1lZCBGSUxFXC5cW1xyXG5c XStPcHRpb25hbCAtdiBzd2l0Y2ggXFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxcKSBjYXVzZXMgZWFj aCBjb21tYW5kIGluXFtcclxuXF0rRklMRSB0byBiZSBlY2hvZWQgYXMgaXQgaXMgZXhlY3V0ZWRc LlxbXHJcblxdK05vdGUgdGhhdCB0aGUgZmlsZSBcIlxbXlwiXF0qXCIgaXMgcmVhZCBhdXRvbWF0 aWNhbGx5IGluIHRoaXMgd2F5XFtcclxuXF0rd2hlbiBHREIgaXMgc3RhcnRlZFwuXFtcclxuXF0r T3B0aW9uYWwgLXAgc3dpdGNoIFxcKGJlZm9yZSB0aGUgZmlsZW5hbWVcXCkgY2F1c2VzIEZJTEUg dG8gYmUgZXZhbHVhdGVkXFtcclxuXF0rYXMgUHl0aG9uIGNvZGVcLiIgImhlbHAgc291cmNlIgot ICMgdGVzdCBoZWxwIHN0YWNrCi0gdGVzdF9jbGFzc19oZWxwICJzdGFjayIgewotICAgICAiRXhh bWluaW5nIHRoZSBzdGFja1wuLipcW1xyXG5cXSsiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLWZ1bmMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv bGluZW5vLW1ha2V1cC1mdW5jLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li4xYTAyMjBlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xp bmVuby1tYWtldXAtZnVuYy5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBjaGFy IFxcKFxcKlxcKVxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKKytnZGJf dGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbNzhcXFxdIiAic2Vj b25kOiBwdHlwZSBhcnJheSIKICsKLSt2b2lkCi0rZnVuYyAodm9pZCkKLSt7Ci0rfQotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmMKKytnZGJfdGVzdCAid2hhdGlzICphcnJheSIg InR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyAqYXJyYXkiCisrZ2RiX3Rl c3QgInB0eXBlICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBl ICphcnJheSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEt dHlwZWRlZi1mb28uUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVm LWZvby5TCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmIyMGU5OAoraW5k ZXggMDAwMDAwMC4uNjZmN2EzOQogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9saW5lbm8tbWFrZXVwLmMKLUBAIC0wLDAgKzEsMzUgQEAKLSsvKiBUaGlzIHRlc3Rj YXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlw ZWRlZi1mb28uUworQEAgLTAsMCArMSw0NTUgQEAKKysJLmZpbGUJIng4Nl82NC12bGEtdHlwZWRl Zi5jIgorKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cworKy5MZGVidWdfYWJi cmV2MDoKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCisrLkxkZWJ1Z19pbmZv MDoKKysJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCisrLkxkZWJ1Z19saW5lMDoK KysJLnRleHQKKysuTHRleHQwOgorKy5nbG9ibCBmb28KKysJLnR5cGUJZm9vLCBAZnVuY3Rpb24K Kytmb286CisrLkxGQjI6CisrCS5maWxlIDEgIng4Nl82NC12bGEtdHlwZWRlZi5jIgorKwkubG9j IDEgMjIgMAorKwlwdXNocQklcmJwCisrLkxDRkkwOgorKwltb3ZxCSVyc3AsICVyYnAKKysuTENG STE6CisrCXN1YnEJJDY0LCAlcnNwCisrLkxDRkkyOgorKwltb3ZsCSVlZGksIC0zNiglcmJwKQor KwkubG9jIDEgMjIgMAorKwltb3ZxCSVyc3AsICVyYXgKKysJbW92cQklcmF4LCAtNDgoJXJicCkK KysJLmxvYyAxIDIzIDAKKysJbW92bAktMzYoJXJicCksICVlZHgKKysJbW92c2xxCSVlZHgsJXJh eAorKwlzdWJxCSQxLCAlcmF4CisrCW1vdnEJJXJheCwgLTI0KCVyYnApCisrCS5sb2MgMSAyNCAw CisrCW1vdnNscQklZWR4LCVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJYWRkcQkkMTUsICVyYXgK KysJc2hycQkkNCwgJXJheAorKwlzYWxxCSQ0LCAlcmF4CisrCXN1YnEJJXJheCwgJXJzcAorKwlt b3ZxCSVyc3AsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwlhZGRxCSQxNSwg JXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJbW92cQklcmF4LCAtNTYo JXJicCkKKysJbW92cQktNTYoJXJicCksICVyYXgKKysJbW92cQklcmF4LCAtMTYoJXJicCkKKysJ LmxvYyAxIDI3IDAKKysJbW92bAkkMCwgLTQoJXJicCkKKysJam1wCS5MMgorKy5MMzoKKysJLmxv YyAxIDI4IDAKKysJbW92bAktNCglcmJwKSwgJWVzaQorKwltb3ZsCS00KCVyYnApLCAlZWF4Cisr CW1vdmwJJWVheCwgJWVjeAorKwltb3ZxCS0xNiglcmJwKSwgJXJkeAorKwltb3ZzbHEJJWVzaSwl cmF4CisrCW1vdmIJJWNsLCAoJXJkeCwlcmF4KQorKwkubG9jIDEgMjcgMAorKwlhZGRsCSQxLCAt NCglcmJwKQorKy5MMjoKKysJbW92bAktNCglcmJwKSwgJWVheAorKwljbXBsCS0zNiglcmJwKSwg JWVheAorKwlqbAkuTDMKKysJLmxvYyAxIDMwIDAKKysJLmdsb2JsCWJyZWFrX2hlcmUKKyticmVh a19oZXJlOgorKwltb3ZxCS0xNiglcmJwKSwgJXJheAorKwltb3ZiCSQwLCAoJXJheCkKKysJbW92 cQktNDgoJXJicCksICVyc3AKKysJLmxvYyAxIDMxIDAKKysJbGVhdmUKKysJcmV0CisrLkxGRTI6 CisrCS5zaXplCWZvbywgLi1mb28KKysJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBwcm9nYml0 cworKy5MZnJhbWUwOgorKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKKysuTFNDSUUwOgorKwkubG9u ZwkweGZmZmZmZmZmCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSIiCisrCS51bGViMTI4IDB4MQor Kwkuc2xlYjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS5ieXRlCTB4YworKwkudWxlYjEyOCAweDcK KysJLnVsZWIxMjggMHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5hbGlnbiA4 CisrLkxFQ0lFMDoKKysuTFNGREUwOgorKwkubG9uZwkuTEVGREUwLS5MQVNGREUwCisrLkxBU0ZE RTA6CisrCS5sb25nCS5MZnJhbWUwCisrCS5xdWFkCS5MRkIyCisrCS5xdWFkCS5MRkUyLS5MRkIy CisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGVi MTI4IDB4MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5s b25nCS5MQ0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24g OAorKy5MRUZERTA6CisrCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCisrLkxmcmFt ZTE6CisrCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQorKy5MU0NJRTE6CisrCS5sb25nCTB4MAorKwku Ynl0ZQkweDEKKysJLnN0cmluZwkielIiCisrCS51bGViMTI4IDB4MQorKwkuc2xlYjEyOCAtOAor KwkuYnl0ZQkweDEwCisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHhjCisr CS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxlYjEyOCAw eDEKKysJLmFsaWduIDgKKysuTEVDSUUxOgorKy5MU0ZERTE6CisrCS5sb25nCS5MRUZERTEtLkxB U0ZERTEKKysuTEFTRkRFMToKKysJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKKysJLmxvbmcJLkxG QjIKKysJLmxvbmcJLkxGRTItLkxGQjIKKysJLnVsZWIxMjggMHgwCisrCS5ieXRlCTB4NAorKwku bG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGViMTI4IDB4MTAKKysJLmJ5dGUJ MHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMS0uTENGSTAK KysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24gOAorKy5MRUZERTE6CisrCS50 ZXh0CisrLkxldGV4dDA6CisrCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2diaXRzCisrLkxk ZWJ1Z19sb2MwOgorKy5MTFNUMDoKKysJLnF1YWQJLkxGQjItLkx0ZXh0MAorKwkucXVhZAkuTENG STAtLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjggOAorKwku cXVhZAkuTENGSTAtLkx0ZXh0MAorKwkucXVhZAkuTENGSTEtLkx0ZXh0MAorKwkudmFsdWUJMHgy CisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJLkxDRkkxLS5MdGV4dDAKKysJ LnF1YWQJLkxGRTItLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzYKKysJLnNsZWIx MjggMTYKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfaW5mbwor KwkubG9uZwkuTGRlYnVnX2VuZCAtIC5MZGVidWdfc3RhcnQKKysuTGRlYnVnX3N0YXJ0OgorKwku dmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdfYWJicmV2MAorKwkuYnl0ZQkweDgKKysJLnVsZWIx MjggMHgxCisrCS5sb25nCS5MQVNGMgorKwkuYnl0ZQkweDEKKysJLmxvbmcJLkxBU0YzCisrCS5s b25nCS5MQVNGNAorKwkucXVhZAkuTHRleHQwCisrCS5xdWFkCS5MZXRleHQwCisrCS5sb25nCS5M ZGVidWdfbGluZTAKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJmb28i CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE2CisrCS5ieXRlCTB4MQorKwkucXVhZAkuTEZCMgor KwkucXVhZAkuTEZFMgorKwkubG9uZwkuTExTVDAKKysJLmxvbmcJMHg4MworKwkudWxlYjEyOCAw eDMKKysJLmxvbmcJLkxBU0Y1CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE1CisrCS5sb25nCTB4 ODMKKysJLmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTUyCisrLkx0YWdfdHlw ZWRlZjoKKysJLnVsZWIxMjggMHg0CisrCS5sb25nCS5MQVNGNgorKwkuYnl0ZQkweDEKKysJLmJ5 dGUJMHgxNworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KKysJLnVsZWIx MjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KKysJLmxvbmcJ LkxBU0YwCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE4CisrI2lmIDEKKysJLmxvbmcJLkx0YWdf dHlwZWRlZiAtIC5kZWJ1Z19pbmZvCisrI2Vsc2UKKysJLyogRGVidWdnaW5nIG9ubHk6IFNraXAg dGhlIHR5cGVkZWYgaW5kaXJlY3Rpb24uICAqLworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0g LmRlYnVnX2luZm8KKysjZW5kaWYKKysJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sx OiBzdGFydCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtMzIKKysj aWYgMAorKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KKysjZWxzZQorKwkuYnl0ZQkweDk2 CS8qIERXX09QX25vcCAqLworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9i bG9jazE6IGVuZCAqLworKwkudWxlYjEyOCAweDYKKysJLnN0cmluZwkiaSIKKysJLmJ5dGUJMHgx CisrCS5ieXRlCTB4MTkKKysJLmxvbmcJMHg4MworKwkuYnl0ZQkweDIKKysJLmJ5dGUJMHg5MQor Kwkuc2xlYjEyOCAtMjAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NworKwkuYnl0ZQkweDQK KysJLmJ5dGUJMHg1CisrCS5zdHJpbmcJImludCIKKysuTHRhZ19hcnJheV90eXBlOgorKwkudWxl YjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCisrCS5s b25nCTB4YTAgKyAoMmYgLSAxZikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICovCisrCS5s b25nCTB4OWQgKyAoMmYgLSAxZikJLyogRFdfQVRfc2libGluZzogRFdfRk9STV9yZWY0ICovCisr MToJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCisrCS5i eXRlCTJmIC0gM2YJLyogbGVuZ3RoICovCisrMzoKKysJLmJ5dGUJMHg5NwkvKiBEV19PUF9wdXNo X29iamVjdF9hZGRyZXNzICovCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKzI6CS8q IERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJLnVsZWIxMjgg MHg5CisrCS5sb25nCTB4OWQgKyAoMmIgLSAxYikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0 ICovCisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC00MAorKwkuYnl0ZQkw eDYKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDgKKysJLmJ5dGUJMHg3 CisrCS51bGViMTI4IDB4YgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHg2CisrCS5sb25nCS5MQVNG MQorKwkuYnl0ZQkweDAKKysuTGRlYnVnX2VuZDoKKysJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgor KwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjgg MHgyNQorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweGIKKysJ LnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDFiCisrCS51bGViMTI4 IDB4ZQorKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEyCisr CS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEwCisrCS51bGViMTI4IDB4NgorKwkuYnl0ZQkw eDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweDJlCisrCS5ieXRl CTB4MQorKwkudWxlYjEyOCAweDNmCisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAweDMKKysJ LnVsZWIxMjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4 IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjcKKysJLnVsZWIxMjggMHhjCisr CS51bGViMTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTIKKysJLnVsZWIx MjggMHgxCisrCS51bGViMTI4IDB4NDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4IDB4MQor KwkudWxlYjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgz CisrCS51bGViMTI4IDB4NQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4 IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisr CS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLnVsZWIx MjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGVi MTI4IDB4NAorKwkudWxlYjEyOCAweDE2CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJ LnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4 IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMwor KwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NQorKwkudWxlYjEyOCAweDM0 CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4 IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisr CS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIx MjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg2CisrCS51bGVi MTI4IDB4MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJ LnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEy OCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4Mgor KwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDcK KysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4 IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJ LnVsZWIxMjggMHg4CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg4CS8q IEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLworKwkudWxlYjEyOCAweDEK KysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEy OCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGlu ZyAqLworKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDUw CS8qIERXX0FUX2RhdGFfbG9jYXRpb24gKi8KKysJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxv Y2sxICovCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg5CisrCS51bGVi MTI4IDB4MjEKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwor KwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDJmCisrCS51 bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwku dWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhi CisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkw eDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGVi MTI4IDB4YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIK KysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgw CisrCS5ieXRlCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCisr CS5sb25nCTB4MTYKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisrCS5sb25n CTB4YTgKKysJLmxvbmcJMHgyZAorKwkuc3RyaW5nCSJmb28iCisrCS5sb25nCTB4MAorKwkuc2Vj dGlvbgkuZGVidWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgyYworKwkudmFsdWUJ MHgyCisrCS5sb25nCS5MZGVidWdfaW5mbzAKKysJLmJ5dGUJMHg4CisrCS5ieXRlCTB4MAorKwku dmFsdWUJMHgwCisrCS52YWx1ZQkweDAKKysJLnF1YWQJLkx0ZXh0MAorKwkucXVhZAkuTGV0ZXh0 MC0uTHRleHQwCisrCS5xdWFkCTB4MAorKwkucXVhZAkweDAKKysJLnNlY3Rpb24JLmRlYnVnX3N0 ciwiTVMiLEBwcm9nYml0cywxCisrLkxBU0YwOgorKwkuc3RyaW5nCSJhcnJheSIKKysuTEFTRjU6 CisrCS5zdHJpbmcJInNpemUiCisrLkxBU0YzOgorKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXR5cGVk ZWYuYyIKKysuTEFTRjY6CisrCS5zdHJpbmcJImFycmF5X3QiCisrLkxBU0YxOgorKwkuc3RyaW5n CSJjaGFyIgorKy5MQVNGNDoKKysJLnN0cmluZwkiZ2RiLmFyY2giCisrLkxBU0YyOgorKwkuc3Ry aW5nCSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKKysJLmlkZW50CSJH Q0M6IChHTlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgorKwkuc2VjdGlvbgku bm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2 XzY0LXZsYS10eXBlZGVmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5i ODA5YzRlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtdHlwZWRlZi5jCitAQCAtMCwwICsxLDQzIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisrCisrI2lmIDAKKysKKyt2b2lkCisrZm9vIChpbnQgc2l6ZSkKKyt7 CisrICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKKysgIGFycmF5X3QgYXJyYXk7CisrICBp bnQgaTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCisrICAgIGFycmF5W2ldID0g aTsKKysKKysgIGFycmF5WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLworK30KKysKKysjZWxzZQor KworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZm9vICgyNik7CisrICBmb28gKDc4KTsKKysg IHJldHVybiAwOworK30KKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtdHlwZWRlZi5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li5iMDU0MTFlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtdHlwZWRlZi5leHAKK0BAIC0wLDAgKzEsNjQgQEAKKysjIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysKKysjIFRlc3QgRFdfQVRfZGF0YV9sb2NhdGlvbiBhY2Nlc3NlZCB0aHJvdWdo IERXX1RBR190eXBlZGVmIGludGVybWVkaWF0ZS4KKysKKytpZiAhW2lzdGFyZ2V0ICJ4ODZfNjQt Ki0qIl0gdGhlbiB7CisrICAgIHZlcmJvc2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0 LXZsYS10eXBlZGVmLmV4cCB0ZXN0IG1hZGUgb25seSBmb3IgeDg2XzY0LiIKKysgICAgcmV0dXJu CisrfQorKworK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXR5cGVkZWYKKytzZXQgc3JjYXNtZmls ZSAke3Rlc3RmaWxlfS1mb28uUworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Cisrc2V0IGJpbm9iamZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28ubworK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxlfSIgb2JqZWN0 IHt9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9n cmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRl c3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0 CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5m aWxlfQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICB1bnRlc3RlZCB4ODZfNjQtdmxhLXR5 cGVkZWYKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50ICJicmVha19oZXJl IgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJlIgorKworK2dkYl90 ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gYXJyYXlfdCIgImZpcnN0OiB3aGF0aXMgYXJyYXki CisrCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZp cnN0OiBwdHlwZSBhcnJheSIKKysKKytnZGJfdGVzdCAicCBhcnJheVxbMVxdIiAiXFwkXFswLTlc XSA9IDEgJ1xcXFwwMDEnIgorK2dkYl90ZXN0ICJwIGFycmF5XFsyXF0iICJcXCRcWzAtOVxdID0g MiAnXFxcXDAwMiciCisrZ2RiX3Rlc3QgInAgYXJyYXlcWzNcXSIgIlxcJFxbMC05XF0gPSAzICdc XFxcMDAzJyIKKytnZGJfdGVzdCAicCBhcnJheVxbNFxdIiAiXFwkXFswLTlcXSA9IDQgJ1xcXFww MDQnIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJlIgorKworK2dk Yl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gYXJyYXlfdCIgInNlY29uZDogd2hhdGlzIGFy cmF5IgorKworK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0i ICJzZWNvbmQ6IHB0eXBlIGFycmF5IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYXJyYXlpZHguYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYworaW5kZXgg OThkNGQzNS4uZjk4YTY1NiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJy YXlpZHguYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCitAQCAtMTcs NiArMTcsMTMgQEAKKyAKKyBpbnQgYXJyYXlbXSA9IHsxLCAyLCAzLCA0fTsKKyAKKysjaWZkZWYg X19HTlVDX18KKytzdHJ1Y3QKKysgIHsKKysgICAgaW50IGFbMF07CisrICB9IHVuYm91bmQ7Cisr I2VuZGlmCisrCisgaW50CisgbWFpbiAodm9pZCkKKyB7CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmV4cAoraW5kZXggNzFjZTRhYS4uYWYwZTVmOCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fy cmF5aWR4LmV4cAorQEAgLTU5LDQgKzU5LDEyIEBAIGdkYl90ZXN0ICJwcmludCBhcnJheSIgXAor ICAgICAgICAgICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBcXFxbMlxcXF0gPSAz LCBcXFxbM1xcXF0gPSA0XFx9IiBcCisgICAgICAgICAgIlByaW50IGFycmF5IHdpdGggYXJyYXkt aW5kZXhlcyBvbiIKKyAKKy0KKytzZXQgdGVzdCAicCB1bmJvdW5kLmEgPT0gJnVuYm91bmQuYVxb MFxdIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICIgPSAxXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiTm8gc3lt Ym9sIFwidW5ib3VuZFwiIGluIGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgewor Kwl1bnN1cHBvcnRlZCAiJHRlc3QgKG5vIEdDQykiCisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv aGVscC5leHAKK2luZGV4IGQ3NmNjMzYuLjQ5NmZmMTggMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2hlbHAuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAu ZXhwCitAQCAtNjA2LDcgKzYwNiw3IEBAIGdkYl90ZXN0ICJoZWxwIHN0ZXBpIiAiU3RlcCBvbmUg aW5zdHJ1Y3Rpb24gZXhhY3RseVwuXFtcclxuXF0rQXJndW1lbnQgTiBtZWFucyBkCisgZ2RiX3Rl c3QgImhlbHAgc2lnbmFsIiAiQ29udGludWUgcHJvZ3JhbSBnaXZpbmcgaXQgc2lnbmFsLioiICJo ZWxwIHNpZ25hbCIKKyAjIHRlc3QgaGVscCBzb3VyY2UKKyAjIHZ4Z2RiIHJlYWRzIC52eGdkYmlu aXQKKy1nZGJfdGVzdCAiaGVscCBzb3VyY2UiICJSZWFkIGNvbW1hbmRzIGZyb20gYSBmaWxlIG5h bWVkIEZJTEVcLlxbXHJcblxdK09wdGlvbmFsIC12IHN3aXRjaCBcXChiZWZvcmUgdGhlIGZpbGVu YW1lXFwpIGNhdXNlcyBlYWNoIGNvbW1hbmQgaW5cW1xyXG5cXStGSUxFIHRvIGJlIGVjaG9lZCBh cyBpdCBpcyBleGVjdXRlZFwuXFtcclxuXF0rTm90ZSB0aGF0IHRoZSBmaWxlIFwiXFteXCJcXSpc IiBpcyByZWFkIGF1dG9tYXRpY2FsbHkgaW4gdGhpcyB3YXlcW1xyXG5cXSt3aGVuIEdEQiBpcyBz dGFydGVkXC4iICJoZWxwIHNvdXJjZSIKKytnZGJfdGVzdCAiaGVscCBzb3VyY2UiICJSZWFkIGNv bW1hbmRzIGZyb20gYSBmaWxlIG5hbWVkIEZJTEVcLlxbXHJcblxdK09wdGlvbmFsIC12IHN3aXRj aCBcXChiZWZvcmUgdGhlIGZpbGVuYW1lXFwpIGNhdXNlcyBlYWNoIGNvbW1hbmQgaW5cW1xyXG5c XStGSUxFIHRvIGJlIGVjaG9lZCBhcyBpdCBpcyBleGVjdXRlZFwuXFtcclxuXF0rTm90ZSB0aGF0 IHRoZSBmaWxlIFwiXFteXCJcXSpcIiBpcyByZWFkIGF1dG9tYXRpY2FsbHkgaW4gdGhpcyB3YXlc W1xyXG5cXSt3aGVuIEdEQiBpcyBzdGFydGVkXC5cW1xyXG5cXStPcHRpb25hbCAtcCBzd2l0Y2gg XFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxcKSBjYXVzZXMgRklMRSB0byBiZSBldmFsdWF0ZWRcW1xy XG5cXSthcyBQeXRob24gY29kZVwuIiAiaGVscCBzb3VyY2UiCisgIyB0ZXN0IGhlbHAgc3RhY2sK KyB0ZXN0X2NsYXNzX2hlbHAgInN0YWNrIiB7CisgICAgICJFeGFtaW5pbmcgdGhlIHN0YWNrXC4u KlxbXHJcblxdKyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFs LXZhci1maWVsZC1hZGRyZXNzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZh ci1maWVsZC1hZGRyZXNzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5l ZWI3Yjg1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVy bmFsLXZhci1maWVsZC1hZGRyZXNzLmMKK0BAIC0wLDAgKzEsMjAgQEAKKysvKiBUaGlzIHRlc3Rj YXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytzdHJ1Y3QgeworKyAgaW50IGZpZWxkOworK30g c3RhdGljc3RydWN0ID0geyAxIH07CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjZkODJlNzMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCitAQCAtMCwwICsxLDI2IEBA CisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisr IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc2V0IHRlc3QgaW50ZXJuYWwtdmFyLWZp ZWxkLWFkZHJlc3MKKytzZXQgYmluZmlsZSAke3Rlc3R9LngKKytpZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS5jIiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2Jp bmZpbGV9IiBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2NsZWFuX3Jl c3RhcnQgJGJpbmZpbGUKKysKKytnZGJfdGVzdCB7c2V0ICR2YXJzdHJ1Y3QgPSBzdGF0aWNzdHJ1 Y3R9CisrZ2RiX3Rlc3Qge3AgJHZhcnN0cnVjdC5maWVsZH0gIiA9IDEiCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLWZ1bmMuYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC1mdW5jLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi4xYTAyMjBlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2xpbmVuby1tYWtldXAtZnVuYy5jCitAQCAtMCwwICsxLDIxIEBACisrLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5 cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrdm9pZAorK2Z1bmMgKHZvaWQpCisr eworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xpbmVuby1tYWtldXAu YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC5jCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYmIyMGU5OAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmMKK0BAIC0wLDAgKzEsMzUgQEAKKysv KiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAg IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKQEAgLTIz MTc0LDYgKzI0MDAzLDE2MiBAQCBpbmRleCAwMDAwMDAwLi41NTQzNzU3CiArCiArc2V0dXBfa2Zh aWwgImdkYi8xMDU0MSIgIiotKi0qIgogK2dkYl90ZXN0ICJwcmludCBHOjpHRjo6RkU6OmV4IiAi PSA5OTk5IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJl c3MtZGVjbGFyYXRpb25zLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVz cy1kZWNsYXJhdGlvbnMuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4x NzNlNDliCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3Bh Y2Utc3RyZXNzLWRlY2xhcmF0aW9ucy5jYworQEAgLTAsMCArMSw5MyBAQAorK2ludCBhOworK2lu dCBiOworK2ludCBjOworK2ludCBkOworK2ludCBlOworK2ludCBmOworK2ludCBnOworK2ludCBo OworK2ludCBpOworK2ludCBqOworK2ludCBrOworK2ludCBsOworK2ludCBtOworK2ludCBuOwor K2ludCBvOworK2ludCBwOworK2ludCBxOworK2ludCByOworK2ludCBzOworK2ludCB0OworK2lu dCB1OworK2ludCB2OworK2ludCB3OworK2ludCB4OworK2ludCB5OworK2ludCB6OworKworK25h bWVzcGFjZSBBCisreworKyAgaW50IHh5ejsKKysKKysgIHVzaW5nIDo6YTsKKysgIHVzaW5nIDo6 YjsKKysgIHVzaW5nIDo6YzsKKysgIHVzaW5nIDo6ZDsKKysgIHVzaW5nIDo6ZTsKKysgIHVzaW5n IDo6ZjsKKysgIHVzaW5nIDo6ZzsKKysgIHVzaW5nIDo6aDsKKysgIHVzaW5nIDo6aTsKKysgIHVz aW5nIDo6ajsKKysgIHVzaW5nIDo6azsKKysgIHVzaW5nIDo6bDsKKysgIHVzaW5nIDo6bTsKKysg IHVzaW5nIDo6bjsKKysgIHVzaW5nIDo6bzsKKysgIHVzaW5nIDo6cDsKKysgIHVzaW5nIDo6cTsK KysgIHVzaW5nIDo6cjsKKysgIHVzaW5nIDo6czsKKysgIHVzaW5nIDo6dDsKKysgIHVzaW5nIDo6 dTsKKysgIHVzaW5nIDo6djsKKysgIHVzaW5nIDo6dzsKKysgIHVzaW5nIDo6eDsKKysgIHVzaW5n IDo6eTsKKysgIHVzaW5nIDo6ejsKKysKKyt9CisrCisrdXNpbmcgQTo6YTsKKyt1c2luZyBBOjpi OworK3VzaW5nIEE6OmM7CisrdXNpbmcgQTo6ZDsKKyt1c2luZyBBOjplOworK3VzaW5nIEE6OmY7 CisrdXNpbmcgQTo6ZzsKKyt1c2luZyBBOjpoOworK3VzaW5nIEE6Omk7CisrdXNpbmcgQTo6ajsK Kyt1c2luZyBBOjprOworK3VzaW5nIEE6Omw7CisrdXNpbmcgQTo6bTsKKyt1c2luZyBBOjpuOwor K3VzaW5nIEE6Om87CisrdXNpbmcgQTo6cDsKKyt1c2luZyBBOjpxOworK3VzaW5nIEE6OnI7Cisr dXNpbmcgQTo6czsKKyt1c2luZyBBOjp0OworK3VzaW5nIEE6OnU7CisrdXNpbmcgQTo6djsKKyt1 c2luZyBBOjp3OworK3VzaW5nIEE6Ong7CisrdXNpbmcgQTo6eTsKKyt1c2luZyBBOjp6OworKwor K3VzaW5nIG5hbWVzcGFjZSBBOworKworK2ludCBtYWluICgpCisreworKyAgcmV0dXJuIDA7Cisr fQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjIyYTE0ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwCitAQCAt MCwwICsxLDUwIEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgJHRyYWNlbGV2 ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytzZXQgcHJtc19pZCAw Cisrc2V0IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1zdHJlc3MtZGVjbGFy YXRpb25zCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKKytzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9 XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFt IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmls ZX1dIHsKKysgICAgcmV0dXJuIC0xOworK30KKysKKysjIEdldCB0aGluZ3Mgc3RhcnRlZC4KKysK KytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0KKysKKytpZiAhW3J1bnRvX21haW5dIHRoZW4gewor KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4iCisrICAgIGNvbnRp bnVlCisrfQorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisrIyBUZXN0IHRoYXQgdGhlIHNlYXJjaCBjYW4gZmFpbCBlZmZpY2llbnRseSAKKysKKytnZGJf dGVzdCAicHJpbnQgZmFrZXgiICJObyBzeW1ib2wgXCJmYWtleFwiIGluIGN1cnJlbnQgY29udGV4 dC4iCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy5j YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuY2MKIG5ldyBmaWxlIG1v ZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5mMzQwODNlCkBAIC0yNTM2OSwxMCArMjYzNTQsMTAg QEAgaW5kZXggNDk1YWU0NS4uZDA4ZDdhNCAxMDA2NDQKICAJCXNldCBjb21tYW5kICJuZXh0Igog ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5qYXZhL2pucGUuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uNzRkNGQ1OAoraW5kZXggMDAwMDAwMC4uZTcxMzkxZQogLS0tIC9kZXYvbnVsbAogKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAotQEAgLTAsMCArMSw3MiBAQAorQEAgLTAs MCArMSw3NyBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjUzOTUsMTAgKzI2MzgwLDEwIEBAIGluZGV4IDAw MDAwMDAuLjc0ZDRkNTgKICtsb2FkX2xpYiAiamF2YS5leHAiCiArCiArc2V0IHRlc3RmaWxlICJq bnBlIgotK3NldCBzcmNmaWxlICR7c3JjZGlyfS8kc3ViZGlyLyR7dGVzdGZpbGV9LmphdmEKKytz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5qYXZhCiArc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtjb21waWxlX2phdmFfZnJvbV9zb3VyY2UgJHtzcmNm aWxlfSAke2JpbmZpbGV9ICItZyJdICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSAke3NyY2ZpbGV9IgorK2lmICB7IFtjb21waWxlX2phdmFfZnJvbV9zb3VyY2UgJHtz cmNkaXJ9LyRzdWJkaXIvJHtzcmNmaWxlfSAke2JpbmZpbGV9ICItZyJdICE9ICIiIH0geworKyAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Rpcn0vJHN1YmRpci8ke3NyY2ZpbGV9 IgogKyAgICByZXR1cm4gLTEKICt9CiArCkBAIC0yNTQxNiw3ICsyNjQwMSw3IEBAIGluZGV4IDAw MDAwMDAuLjc0ZDRkNTgKICtnZGJfdGVzdCAiYnJlYWsgJHRlc3RmaWxlLmphdmE6JGxpbmUiICIi CiArCiArZ2RiX3Rlc3QgInJ1biIgXAotKyAgIkN1cnJlbnQgbGFuZ3VhZ2UuKmphdmEiIFwKKysg ICIvLyBicmVhayBoZXJlLioiIFwKICsgICJydW4gamF2YSBuZXh0LW92ZXItdGhyb3ciCiArCiAr IyBTZWUgd2hldGhlciB3ZSBoYXZlIHRoZSBuZWVkZWQgdW53aW5kZXIgaG9va3MuCkBAIC0yNTQy NSw5ICsyNjQxMCwxMCBAQCBpbmRleCAwMDAwMDAwLi43NGQ0ZDU4CiArICAgIC1yZSAiPSAuKl9V bndpbmRfRGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewogKwlwYXNzICJjaGVjayBmb3Ig dW53aW5kZXIgaG9vayBpbiBqYXZhIgogKyAgICB9Ci0rICAgIC1yZSAiTm8gc3ltYm9sIC4qIGlu IGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICAtcmUgIk5vIHN5bWJv bCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4kZ2RiX3Byb21wdCAkIiB7CiArCSMgUGFzcyB0 aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMgZmFpbHMgaW4gdGhlIHJlc3VsdHMuCi0rCXBh c3MgImNoZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEiCisrCXNldHVwX3hmYWlsICotKi0q CisrCWZhaWwgImNoZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEiCiArCXNldCBvayAwCiAr ICAgIH0KICt9CkBAIC0yNTQ0MCwxNCArMjY0MjYsMTggQEAgaW5kZXggMDAwMDAwMC4uNzRkNGQ1 OAogKyAgIlNJR1NFR1YuKmZhdWx0IiBcCiArICAiZGlzYWJsZSBTSUdTRUdWIGZvciBuZXh0LW92 ZXItTlBFIgogKwotKyMgV2Ugc29tZXRpbWVzIHN0b3AgYXQgbGluZSAzNywgbm90IGxpbmUgMzUu ICBUaGlzIHNlZW1zIHRvIGJlIGEgZ2NqCi0rIyBvZGRpdHkgLS0gYW5vdGhlciBuZXh0IHdpbGwg c29sdmUgaXQuCisrIyBUaGUgbGluZSB3aGVyZSB3ZSBzdG9wIGRpZmZlciBhY2NvcmRpbmcgdG8g Z2NqOyBjaGVjayBqdXN0IHdlIGRpZCBub3QgYWxyZWFkeQorKyMgZXhlY3V0ZSB0aGUgY2F0Y2gg cG9pbnQuCisrCiArZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIzXFs1N1xdLioiIFwKKysgICIiIFwK ICsgICJuZXh0IG92ZXIgTlBFIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJjYXRjaCBwb2ludCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNhdGNoIHBv aW50IiAiLiovLyBjYXRjaCBwb2ludC4qIgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmphdmEvam5wZS5qYXZhIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmphdmEKIG5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mZmNhM2FiCitpbmRleCAwMDAwMDAwLi4z NTI0ODMwCiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUu amF2YQogQEAgLTAsMCArMSwzOCBAQApAQCAtMjU0ODUsNyArMjY0NzUsNyBAQCBpbmRleCAwMDAw MDAwLi5mZmNhM2FiCiArICAgICAgfQogKyAgICBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24g bikKICsgICAgICB7Ci0rCVN5c3RlbS5vdXQucHJpbnRsbiAoInN1Y2Nlc3MiKTsKKysJU3lzdGVt Lm91dC5wcmludGxuICgic3VjY2VzcyIpOyAvLyBjYXRjaCBwb2ludAogKyAgICAgIH0KICsgIH0K ICt9CkBAIC0yNzI5MiwxMCArMjgyODIsMTAgQEAgaW5kZXggMDAwMDAwMC4uMTRmNDJkNgogK30K IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9y ZGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIu ZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGY2NTM2NAoraW5kZXgg MDAwMDAwMC4uNWFkMWE0ZQogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5leHAKLUBAIC0wLDAgKzEsMTAxIEBACitAQCAt MCwwICsxLDEwNSBAQAogKyMgVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KICsKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgpAQCAtMjczOTMsNiArMjgzODMsMTAgQEAgaW5kZXggMDAwMDAwMC4uOGY2NTM2NAogKwkg ICAgICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6IHRocmVhZFxbMTJcXV9yd2F0 Y2hcclxuXHJcblZhbHVlID0gMFxyXG4weFxbMC05YS1mXF0rIGluIHRocmVhZFxbMTJcXV9mdW5j IC4qIiBcCiArCSAgICAgImNvbnRpbnVlIGIiCiArCisrICAgICMgV2hpbGUgdGhlIGRlYnVnIG91 dHB1dCBpdHNlbGYgaXMgbm90IGNoZWNrZWQgaW4gdGhpcyB0ZXN0Y2FzZSBvbmUgYnVnIHdhcwor KyAgICAjIGZvdW5kIGluIHRoZSBERUJVR19JTkZSVU4gY29kZSBwYXRoLgorKyAgICBnZGJfdGVz dCAic2V0IGRlYnVnIGluZnJ1biAxIgorKwogKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiYnJlYWstYXQtZXhpdCIgIi4qYnJlYWstYXQtZXhpdC4qIgogKwogKyAgICBzZXQgcGZfcHJl Zml4ICRwcmVmaXhfdGVzdApAQCAtMjc4MDMsNyArMjg3OTcsNyBAQCBpbmRleCBhOWM4NzVkLi4x MmY2ZjA3IDEwMDY0NAogIH0KICAKIGRpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFs b3BzLmMKLWluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CitpbmRleCAwMTJlYTZhLi45YjRk MmE4IDEwMDY0NAogLS0tIGEvZ2RiL3ZhbG9wcy5jCiArKysgYi9nZGIvdmFsb3BzLmMKIEBAIC0z OCw2ICszOCw3IEBACkBAIC0yNzkxNyw3ICsyODkxMSw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMx Y2MgMTAwNjQ0CiAgCX0KICAgICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBs dmFsX3JlZ2lzdGVyKQotQEAgLTEwNzAsNyArMTEzMywxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxl IChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKK0BAIC0xMDcyLDcgKzExMzUs MTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgYmxv Y2sgKmIpCiAgICBpZiAoKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVf bGF6eSAodmFsKSkKICAgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9GVU5D KQogICAgICB7CkBAIC0yNzkzNyw3ICsyODkzMSw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMxY2Mg MTAwNjQ0CiAgICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJf dHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9CiAgCi1AQCAtMTE3Niw2ICsxMjUwLDcgQEAgc3Ry dWN0IHZhbHVlICoKK0BAIC0xMTc4LDYgKzEyNTIsNyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVl X2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwpAQCAtMjc5NDUsNyArMjg5 MzksNyBAQCBpbmRleCBiNjRjYjIxLi5iN2QzMWNjIDEwMDY0NAogIAogICAgLyogSWYgdGhlIHVz ZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAg ICAgYXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVu IHRoaXMgd291bGQKLUBAIC0xMTg1LDggKzEyNjAsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChz dHJ1Y3QgdmFsdWUgKmFyZzEpCitAQCAtMTE4Nyw4ICsxMjYyLDEyIEBAIHZhbHVlX2NvZXJjZV9h cnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2 YWxfbWVtb3J5KQogICAgICBlcnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFs dWUgbm90IGxvY2F0ZWQgaW4gbWVtb3J5LiIpKTsKICAKQEAgLTI3OTU5LDcgKzI4OTUzLDcgQEAg aW5kZXggYjY0Y2IyMS4uYjdkMzFjYyAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4gYSB2YWx1ZSB3 aGljaCBpcyBhIGZ1bmN0aW9uLCByZXR1cm4gYSB2YWx1ZSB3aGljaCBpcyBhIHBvaW50ZXIKLUBA IC0yMDY5LDEyICsyMTQ4LDI1IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB0eXBlICoq YXJnX3R5cGVzLCBpbnQgbmFyZ3MsCitAQCAtMjA3MSwxMiArMjE1MCwyNSBAQCBmaW5kX292ZXJs b2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5hcmdzLAogICAgaWYgKG1l dGhvZCkKICAgICAgewogICAgICAgIGdkYl9hc3NlcnQgKG9iaik7CkBAIC0yNzk5MCw3ICsyODk4 NCw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CiAgCiAgICAgICAgZm5zX3B0ciA9 IHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKCZ0ZW1wLCBuYW1lLCAKICAJCQkJCSAgICAg IDAsICZudW1fZm5zLCAKLUBAIC0yMDk0LDE2ICsyMTg2LDI5IEBAIGZpbmRfb3ZlcmxvYWRfbWF0 Y2ggKHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCitAQCAtMjA5NiwxNiArMjE4 OCwyOSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50 IG5hcmdzLAogICAgICB9CiAgICBlbHNlCiAgICAgIHsKQEAgLTI4MDI4LDcgKzI5MDIyLDcgQEAg aW5kZXggYjY0Y2IyMS4uYjdkMzFjYyAxMDA2NDQKICAgICAgICBpZiAoZnVuY19uYW1lID09IE5V TEwpCiAgICAgICAgICB7CiAgCSAgKnN5bXAgPSBmc3ltOwotQEAgLTI1MzQsOCArMjYzOSw4IEBA IGNoZWNrX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkKK0BAIC0y NTM2LDggKzI2NDEsOCBAQCBjaGVja19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNo YXIgKm5hbWUpCiAgICAgdGhlIGNvbW1lbnQgYmVmb3JlIHZhbHVlX3N0cnVjdF9lbHRfZm9yX3Jl ZmVyZW5jZS4gICovCiAgCiAgc3RydWN0IHZhbHVlICoKQEAgLTI4MDM5LDcgKzI5MDMzLDcgQEAg aW5kZXggYjY0Y2IyMS4uYjdkMzFjYyAxMDA2NDQKICAJCSAgICAgZW51bSBub3NpZGUgbm9zaWRl KQogIHsKICAgIHN3aXRjaCAoVFlQRV9DT0RFIChjdXJ0eXBlKSkKLUBAIC0yNTQzLDcgKzI2NDgs NyBAQCB2YWx1ZV9hZ2dyZWdhdGVfZWx0IChzdHJ1Y3QgdHlwZSAqY3VydHlwZSwKK0BAIC0yNTQ1 LDcgKzI2NTAsNyBAQCB2YWx1ZV9hZ2dyZWdhdGVfZWx0IChzdHJ1Y3QgdHlwZSAqY3VydHlwZSwK ICAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoK ICAgICAgICByZXR1cm4gdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChjdXJ0eXBlLCAw LCBjdXJ0eXBlLCAKQEAgLTI4MDQ4LDcgKzI5MDQyLDcgQEAgaW5kZXggYjY0Y2IyMS4uYjdkMzFj YyAxMDA2NDQKICAJCQkJCSAgICAgd2FudF9hZGRyZXNzLCBub3NpZGUpOwogICAgICBjYXNlIFRZ UEVfQ09ERV9OQU1FU1BBQ0U6CiAgICAgICAgcmV0dXJuIHZhbHVlX25hbWVzcGFjZV9lbHQgKGN1 cnR5cGUsIG5hbWUsIAotQEAgLTI1NTQsNiArMjY1OSw1NiBAQCB2YWx1ZV9hZ2dyZWdhdGVfZWx0 IChzdHJ1Y3QgdHlwZSAqY3VydHlwZSwKK0BAIC0yNTU2LDYgKzI2NjEsNTYgQEAgdmFsdWVfYWdn cmVnYXRlX2VsdCAoc3RydWN0IHR5cGUgKmN1cnR5cGUsCiAgICAgIH0KICB9CiAgCkBAIC0yODEw NSw3ICsyOTA5OSw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CiAgLyogQysrOiBH aXZlbiBhbiBhZ2dyZWdhdGUgdHlwZSBDVVJUWVBFLCBhbmQgYSBtZW1iZXIgbmFtZSBOQU1FLAog ICAgIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGlzIG1lbWJlciBhcyBhICJwb2ludGVyIHRvIG1l bWJlciIgdHlwZS4KICAgICBJZiBJTlRZUEUgaXMgbm9uLW51bGwsIHRoZW4gaXQgd2lsbCBiZSB0 aGUgdHlwZSBvZiB0aGUgbWVtYmVyIHdlCi1AQCAtMjYzMSwyMyArMjc4Niw0NiBAQCB2YWx1ZV9z dHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICpkb21haW4sIGludCBvZmZzZXQs CitAQCAtMjYzMywyMyArMjc4OCw0NiBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2Ug KHN0cnVjdCB0eXBlICpkb21haW4sIGludCBvZmZzZXQsCiAgCX0KICAgICAgICBpZiAodF9maWVs ZF9uYW1lICYmIHN0cmNtcCAodF9maWVsZF9uYW1lLCBuYW1lKSA9PSAwKQogIAl7CkBAIC0yODE2 Miw3ICsyOTE1Niw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CiAgCiAgCSAgaWYg KFRZUEVfRk5fRklFTERfU1RBVElDX1AgKGYsIGopKQogIAkgICAgewotQEAgLTI3NjEsNyArMjkz OSw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdCB0eXBlICpjdXJ0 eXBlLAorQEAgLTI3NjMsNyArMjk0MSw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNv bnN0IHN0cnVjdCB0eXBlICpjdXJ0eXBlLAogICAgc3RydWN0IHN5bWJvbCAqc3ltOwogICAgc3Ry dWN0IHZhbHVlICpyZXN1bHQ7CiAgCkBAIC0yODE3MSw3ICsyOTE2NSw3IEBAIGluZGV4IGI2NGNi MjEuLmI3ZDMxY2MgMTAwNjQ0CiAgCQkJCSAgICBnZXRfc2VsZWN0ZWRfYmxvY2sgKDApLCAKICAJ CQkJICAgIFZBUl9ET01BSU4pOwogIAotQEAgLTI5MDUsNyArMzA4Myw3IEBAIHZhbHVlX29mX2xv Y2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29tcGxhaW4pCitAQCAtMjkwNyw3ICszMDg1LDcg QEAgdmFsdWVfb2ZfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBjb21wbGFpbikKICAKICAg IC8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJvbCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBM T0NfUkVHSVNURVIKICAgICAgIHN5bWJvbCBpbnN0ZWFkIG9mIHRoZSBMT0NfQVJHIG9uZSAoaWYg Ym90aCBleGlzdCkuICAqLwpAQCAtMjgxODAsNyArMjkxNzQsNyBAQCBpbmRleCBiNjRjYjIxLi5i N2QzMWNjIDEwMDY0NAogICAgaWYgKHN5bSA9PSBOVUxMKQogICAgICB7CiAgICAgICAgaWYgKGNv bXBsYWluKQotQEAgLTI5NTksOCArMzEzNyw2IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUg KmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMjk2MSw4ICszMTM5LDYgQEAg dmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0 aCkKICAgICAgICB8fCBsb3dib3VuZCArIGxlbmd0aCAtIDEgPiB1cHBlcmJvdW5kKQogICAgICBl cnJvciAoXygic2xpY2Ugb3V0IG9mIHJhbmdlIikpOwogIApAQCAtMjgyMTksNyArMjkyMTMsNyBA QCBpbmRleCBjYmI1ZDk0Li5mOTYzNGVhIDEwMDY0NAogIAkgICsrcmVwczsKICAJICArK3JlcDE7 CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwotaW5kZXggNTg5ZTAzYi4u NjYwMTNiNyAxMDA2NDQKK2luZGV4IDU4OWUwM2IuLjYyMDAzZmEgMTAwNjQ0CiAtLS0gYS9nZGIv dmFsdWUuYwogKysrIGIvZ2RiL3ZhbHVlLmMKIEBAIC0zNyw4ICszNywxMCBAQApAQCAtMjgzMDMs MTggKzI5Mjk3LDIwIEBAIGluZGV4IDU4OWUwM2IuLjY2MDEzYjcgMTAwNjQ0CiAgICBpZiAoVkFM VUVfTFZBTCAod2hvbGUpID09IGx2YWxfY29tcHV0ZWQpCiAgICAgIHsKICAgICAgICBzdHJ1Y3Qg bHZhbF9mdW5jcyAqZnVuY3MgPSB3aG9sZS0+bG9jYXRpb24uY29tcHV0ZWQuZnVuY3M7Ci1AQCAt Nzc2LDYgKzc5OSwxMCBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFs dWUgKmNvbXBvbmVudCwgc3RydWN0IHZhbHVlICp3aG9sZSkKK0BAIC03NzYsNiArNzk5LDEyIEBA IHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LCBz dHJ1Y3QgdmFsdWUgKndob2xlKQogICAgICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQogICAg ICAgICAgY29tcG9uZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlf Y2xvc3VyZSAod2hvbGUpOwogICAgICB9CiArCiArICBhZGRyID0gdmFsdWVfcmF3X2FkZHJlc3Mg KGNvbXBvbmVudCk7CiArICBvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAodmFsdWVfdHlwZSAod2hv bGUpLCAmYWRkcik7Ci0rICBzZXRfdmFsdWVfYWRkcmVzcyAoY29tcG9uZW50LCBhZGRyKTsKKysg IGlmIChjb21wb25lbnQtPmx2YWwgIT0gbHZhbF9pbnRlcm5hbHZhcgorKyAgICAgICYmIGNvbXBv bmVudC0+bHZhbCAhPSBsdmFsX2ludGVybmFsdmFyX2NvbXBvbmVudCkKKysgICAgc2V0X3ZhbHVl X2FkZHJlc3MgKGNvbXBvbmVudCwgYWRkcik7CiAgfQogIAogIAwKLUBAIC05MDYsNiArOTMzLDI5 IEBAIHNob3dfdmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtOTA2LDYg KzkzNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50IGZyb21fdHR5KQogICAg ICAgIG51bV9leHBbMV0gPSAnXDAnOwogICAgICB9CiAgfQpAQCAtMjgzNDQsNyArMjkzNDAsNyBA QCBpbmRleCA1ODllMDNiLi42NjAxM2I3IDEwMDY0NAogIAwKICAvKiBJbnRlcm5hbCB2YXJpYWJs ZXMuICBUaGVzZSBhcmUgdmFyaWFibGVzIHdpdGhpbiB0aGUgZGVidWdnZXIKICAgICB0aGF0IGhv bGQgdmFsdWVzIGFzc2lnbmVkIGJ5IGRlYnVnZ2VyIGNvbW1hbmRzLgotQEAgLTEzODEsNiArMTQz MSw0MCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK K0BAIC0xMzgxLDYgKzE0MzMsNDAgQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCiAgICByZXR1cm4gKCppZm4tPmhhbmRsZXIpIChnZGJhcmNoLCBsYW5n dWFnZSwgaWZuLT5jb29raWUsIGFyZ2MsIGFyZ3YpOwogIH0KICAKQEAgLTI4Mzg1LDcgKzI5Mzgx LDcgQEAgaW5kZXggNTg5ZTAzYi4uNjYwMTNiNyAxMDA2NDQKICAvKiBUaGUgJ2Z1bmN0aW9uJyBj b21tYW5kLiAgVGhpcyBkb2VzIG5vdGhpbmcgLS0gaXQgaXMganVzdCBhCiAgICAgcGxhY2Vob2xk ZXIgdG8gbGV0ICJoZWxwIGZ1bmN0aW9uIE5BTUUiIHdvcmsuICBUaGlzIGlzIGFsc28gdXNlZCBh cwogICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3ViLWNvbW1hbmQgdGhhdCBpcyBjcmVh dGVkIHdoZW4KLUBAIC0xNDI4LDExICsxNTEyLDEwIEBAIHByZXNlcnZlX29uZV92YWx1ZSAoc3Ry dWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTQyOCwxMSAr MTUxNCwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAogIAkJICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCiAgewogICAg aWYgKFRZUEVfT0JKRklMRSAodmFsdWUtPnR5cGUpID09IG9iamZpbGUpCkBAIC0yODM5OSw3ICsy OTM5NSw3IEBAIGluZGV4IDU4OWUwM2IuLjY2MDEzYjcgMTAwNjQ0CiAgCQkJCQkJIGNvcGllZF90 eXBlcyk7CiAgfQogIAotQEAgLTE0NDcsMTMgKzE1MzAsMTMgQEAgcHJlc2VydmVfb25lX2ludGVy bmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CitAQCAtMTQ0NywxMyArMTUzMiwxMyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVj dCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJ TlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAgIGlmICh2YXItPnUuaW50ZWdlci50eXBlICYmIFRZ UEVfT0JKRklMRSAodmFyLT51LmludGVnZXIudHlwZSkgPT0gb2JqZmlsZSkKICAJdmFyLT51Lmlu dGVnZXIudHlwZQpAQCAtMjg0MTUsNyArMjk0MTEsNyBAQCBpbmRleCA1ODllMDNiLi42NjAxM2I3 IDEwMDY0NAogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIElOVEVSTkFMVkFSX1ZBTFVFOgot QEAgLTE4NTUsNiArMTkzOCw4IEBAIHZhbHVlX2NoYW5nZV9lbmNsb3NpbmdfdHlwZSAoc3RydWN0 IHZhbHVlICp2YWwsIHN0cnVjdCB0eXBlICpuZXdfZW5jbF90eXBlKQorQEAgLTE4NTUsNiArMTk0 MCw4IEBAIHZhbHVlX2NoYW5nZV9lbmNsb3NpbmdfdHlwZSAoc3RydWN0IHZhbHVlICp2YWwsIHN0 cnVjdCB0eXBlICpuZXdfZW5jbF90eXBlKQogICAgICB2YWwtPmNvbnRlbnRzID0KICAgICAgICAo Z2RiX2J5dGUgKikgeHJlYWxsb2MgKHZhbC0+Y29udGVudHMsIFRZUEVfTEVOR1RIIChuZXdfZW5j bF90eXBlKSk7CiAgCkBAIC0yODQyNCw3ICsyOTQyMCw3IEBAIGluZGV4IDU4OWUwM2IuLjY2MDEz YjcgMTAwNjQ0CiAgICB2YWwtPmVuY2xvc2luZ190eXBlID0gbmV3X2VuY2xfdHlwZTsKICAgIHJl dHVybiB2YWw7CiAgfQotQEAgLTE5MTksNiArMjAwNCw4IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVs ZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAorQEAgLTE5MTksNiArMjAwNiw4IEBA IHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAog IAkgIG1lbWNweSAodmFsdWVfY29udGVudHNfYWxsX3JhdyAodiksIHZhbHVlX2NvbnRlbnRzX2Fs bF9yYXcgKGFyZzEpLAogIAkJICBUWVBFX0xFTkdUSCAodmFsdWVfZW5jbG9zaW5nX3R5cGUgKGFy ZzEpKSk7CiAgCX0KQEAgLTI4NDMzLDcgKzI5NDI5LDcgQEAgaW5kZXggNTg5ZTAzYi4uNjYwMTNi NyAxMDA2NDQKICAgICAgICB2LT50eXBlID0gdHlwZTsKICAgICAgICB2LT5vZmZzZXQgPSB2YWx1 ZV9vZmZzZXQgKGFyZzEpOwogICAgICAgIHYtPmVtYmVkZGVkX29mZnNldCA9IChvZmZzZXQgKyB2 YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGFyZzEpCi1AQCAtMjE3Nyw2ICsyMjY0LDQyIEBAIHBhY2tf bG9uZyAoZ2RiX2J5dGUgKmJ1Ziwgc3RydWN0IHR5cGUgKnR5cGUsIExPTkdFU1QgbnVtKQorQEAg LTIxNzcsNiArMjI2Niw0MiBAQCBwYWNrX2xvbmcgKGdkYl9ieXRlICpidWYsIHN0cnVjdCB0eXBl ICp0eXBlLCBMT05HRVNUIG51bSkKICB9CiAgCiAgCkBAIC0yODQ3Niw3ICsyOTQ3Miw3IEBAIGlu ZGV4IDU4OWUwM2IuLjY2MDEzYjcgMTAwNjQ0CiAgLyogQ29udmVydCBDIG51bWJlcnMgaW50byBu ZXdseSBhbGxvY2F0ZWQgdmFsdWVzLiAgKi8KICAKICBzdHJ1Y3QgdmFsdWUgKgotQEAgLTIxOTAs NiArMjMxMywxOSBAQCB2YWx1ZV9mcm9tX2xvbmdlc3QgKHN0cnVjdCB0eXBlICp0eXBlLCBMT05H RVNUIG51bSkKK0BAIC0yMTkwLDYgKzIzMTUsMTkgQEAgdmFsdWVfZnJvbV9sb25nZXN0IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pCiAgfQogIAogIApAQCAtMjg0OTYsNyArMjk0OTIs NyBAQCBpbmRleCA1ODllMDNiLi42NjAxM2I3IDEwMDY0NAogIC8qIENyZWF0ZSBhIHZhbHVlIHJl cHJlc2VudGluZyBhIHBvaW50ZXIgb2YgdHlwZSBUWVBFIHRvIHRoZSBhZGRyZXNzCiAgICAgQURE Ui4gICovCiAgc3RydWN0IHZhbHVlICoKLUBAIC0yMzQ4LDQgKzI0ODQsOCBAQCBWQVJJQUJMRSBp cyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKK0BAIC0yMzQ4LDQgKzI0ODYsOCBAQCBWQVJJQUJM RSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKICAgIGFkZF9wcmVmaXhfY21kICgiZnVuY3Rp b24iLCBub19jbGFzcywgZnVuY3Rpb25fY29tbWFuZCwgXygiXAogIFBsYWNlaG9sZGVyIGNvbW1h bmQgZm9yIHNob3dpbmcgaGVscCBvbiBjb252ZW5pZW5jZSBmdW5jdGlvbnMuIiksCiAgCQkgICZm dW5jdGlvbmxpc3QsICJmdW5jdGlvbiAiLCAwLCAmY21kbGlzdCk7CgpkaWZmIC0tZ2l0IGEvZ2Ri LWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0Y2ggYi9nZGItYml0ZmllbGQtY2hlY2tfdHlwZWRl Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTg3YmZiCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0Y2gKQEAgLTAsMCAr MSwxMDEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21z ZzAwMDMwLmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gUmU6IFJlZ3Jlc3Npb246IGZpZWxkIHR5cGUg cHJlc2VydmF0aW9uOiA3LjAgLT4gNy4wLjErSEVBRAorCitPbiBGcmlkYXkgMDEgSmFudWFyeSAy MDEwIDIxOjQ1OjA1IEphbiBLcmF0b2NodmlsIHdyb3RlOgorPiAtUEFTUzogZ2RiLm1pL21pLXZh ci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25zLnMyLnUyLnUx czEKKz4gK0ZBSUw6IGdkYi5taS9taS12YXItY2hpbGQuZXhwOiBnZXQgY2hpbGRyZW4gb2Ygc3Ry dWN0X2RlY2xhcmF0aW9ucy5zMi51Mi51MXMxCis+IC1QQVNTOiBnZGIubWkvbWkyLXZhci1jaGls ZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25zLnMyLnUyLnUxczEKKz4g K0ZBSUw6IGdkYi5taS9taTItdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVuIG9mIHN0cnVjdF9k ZWNsYXJhdGlvbnMuczIudTIudTFzMQorPiAtUEFTUzogZ2RiLnB5dGhvbi9weS1taS5leHA6IGV4 YW1pbmUgY29udGFpbmVyIGNoaWxkcmVuPTAsIG5vIHByZXR0eS1wcmludGluZworPiArRkFJTDog Z2RiLnB5dGhvbi9weS1taS5leHA6IGV4YW1pbmUgY29udGFpbmVyIGNoaWxkcmVuPTAsIG5vIHBy ZXR0eS1wcmludGluZworPiAKKz4gZHVlIHRvOgorPiBSZTogUkZBOiB1bmJyZWFrIHR5cGVkZWZl ZCBiaXRmaWVsZAorPiBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0x Mi9tc2cwMDI5NS5odG1sCis+IGNvbW1pdCBmYzg1ZGE0ZWUyYTdjMzJhZmM1M2IxYjMzNGE0Zjg0 ZTJlOWJkODRlCis+IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMTIvbXNn MDAxMDAuaHRtbAorCithdHRhY2hlZCBhIGZpeCBvbiB0b3Agb2YgZXhpc3RpbmcgSEVBRC4KKwor T3JpZ2luYWwgUFIgZ2RiLzEwODg0IHdhcyBhIHJlZ3Jlc3Npb24gNi44IC0+IDcuMCBkdWUgdG86 CitSRkM6IExhenkgYml0ZmllbGRzCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAwOS0wNy9tc2cwMDQzNy5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2 cy8yMDA5LTA3L21zZzAwMTQzLmh0bWwKKzA3NDkxYjM0MDlmNmFjZTBiN2E5YTcwNzc3NWE1NmNl MTBmZWNlMWMKKworTm8gcmVncmVzc2lvbnMgZm9yIEhFQUQgb24ge3g4Nl82NCx4ODZfNjQtbTMy LGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4gIFBsdXM6CistRkFJTDogZ2RiLm1pL21pLXZhci1j aGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25zLnMyLnUyLnUxczEK KytQQVNTOiBnZGIubWkvbWktdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVuIG9mIHN0cnVjdF9k ZWNsYXJhdGlvbnMuczIudTIudTFzMQorLUZBSUw6IGdkYi5taS9taTItdmFyLWNoaWxkLmV4cDog Z2V0IGNoaWxkcmVuIG9mIHN0cnVjdF9kZWNsYXJhdGlvbnMuczIudTIudTFzMQorK1BBU1M6IGdk Yi5taS9taTItdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVuIG9mIHN0cnVjdF9kZWNsYXJhdGlv bnMuczIudTIudTFzMQorLUZBSUw6IGdkYi5weXRob24vcHktbWkuZXhwOiBleGFtaW5lIGNvbnRh aW5lciBjaGlsZHJlbj0wLCBubyBwcmV0dHktcHJpbnRpbmcKKytQQVNTOiBnZGIucHl0aG9uL3B5 LW1pLmV4cDogZXhhbWluZSBjb250YWluZXIgY2hpbGRyZW49MCwgbm8gcHJldHR5LXByaW50aW5n CisKK0dvaW5nIHRvIGNoZWNrIGl0IGluIGFsc28gZm9yIGdkYl83XzAtYnJhbmNoIGFmdGVyIGFu IGFwcHJvdmFsLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMDEtMDIgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogdmFsdWUuYyAodmFs dWVfcHJpbWl0aXZlX2ZpZWxkKTogUmVtb3ZlIG9uZSBjaGVja190eXBlZGVmIGNhbGwuCisJTW92 ZSBiaXRwb3MgYW5kIGNvbnRhaW5lcl9iaXRzaXplIGluaXRpYWxpemF0aW9uIGFmdGVyCisJYWxs b2NhdGVfdmFsdWVfbGF6eS4gIE5ldyBjb21tZW50IGJlZm9yZSBhY2Nlc3NpbmcgVFlQRV9MRU5H VEguCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTAxLTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi5taS92YXItY21kLmMgKGRvX2JpdGZpZWxk X3Rlc3RzKTogQ2hhbmdlICJWLnNoYXJhYmxlIiB0eXBlIHRvCisJInVpbnRfZm9yX21pX3Rlc3Rp bmciLgorCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5taS92YXItY21kLmMKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLm1pL3Zhci1jbWQuYworQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIGRvX2Jp dGZpZWxkX3Rlc3RzICgpCisgICAgIG1pX2NyZWF0ZV92YXJvYmogViBkICJjcmVhdGUgdmFyb2Jq IGZvciBEYXRhIgorICAgICBtaV9saXN0X3Zhcm9ial9jaGlsZHJlbiAiViIgeworICAgICAgICAg eyJWLmFsbG9jIiAiYWxsb2MiICIwIiAiaW50In0KKy0gICAgICAgIHsiVi5zaGFyYWJsZSIgInNo YXJhYmxlIiAiMCIgInVuc2lnbmVkIGludCJ9CisrICAgICAgICB7IlYuc2hhcmFibGUiICJzaGFy YWJsZSIgIjAiICJ1aW50X2Zvcl9taV90ZXN0aW5nIn0KKyAgICAgfSAibGlzdCBjaGlsZHJlbiBv ZiBEYXRhIgorICAgICBtaV9jaGVja192YXJvYmpfdmFsdWUgVi5zaGFyYWJsZSAzICJhY2Nlc3Mg Yml0ZmllbGQiCisgICAgIDoqLworLS0tIGEvZ2RiL3ZhbHVlLmMKKysrKyBiL2dkYi92YWx1ZS5j CitAQCAtMTg3Myw3ICsxODczLDYgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFs dWUgKmFyZzEsIGludCBvZmZzZXQsCisgCisgICBDSEVDS19UWVBFREVGIChhcmdfdHlwZSk7Cisg ICB0eXBlID0gVFlQRV9GSUVMRF9UWVBFIChhcmdfdHlwZSwgZmllbGRubyk7CistICB0eXBlID0g Y2hlY2tfdHlwZWRlZiAodHlwZSk7CisgCisgICAvKiBIYW5kbGUgcGFja2VkIGZpZWxkcyAqLwor IAorQEAgLTE4ODUsMTAgKzE4ODQsMTQgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3Qg dmFsdWUgKmFyZzEsIGludCBvZmZzZXQsCisgCSBPdGhlcndpc2UsIGFkanVzdCBvZmZzZXQgdG8g dGhlIGJ5dGUgY29udGFpbmluZyB0aGUgZmlyc3QKKyAJIGJpdC4gIEFzc3VtZSB0aGF0IHRoZSBh ZGRyZXNzLCBvZmZzZXQsIGFuZCBlbWJlZGRlZCBvZmZzZXQKKyAJIGFyZSBzdWZmaWNpZW50bHkg YWxpZ25lZC4gICovCistICAgICAgaW50IGJpdHBvcyA9IFRZUEVfRklFTERfQklUUE9TIChhcmdf dHlwZSwgZmllbGRubyk7CistICAgICAgaW50IGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5H VEggKHR5cGUpICogODsKKysgICAgICBpbnQgYml0cG9zLCBjb250YWluZXJfYml0c2l6ZTsKKyAK KyAgICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CisrCisrICAgICAgLyogVFlQ RV9MRU5HVEggb2YgVFlQRSBnZXRzIGluaXRpYWxpemVkIGJ5IGFsbG9jYXRlX3ZhbHVlX2xhenku ICAqLworKyAgICAgIGJpdHBvcyA9IFRZUEVfRklFTERfQklUUE9TIChhcmdfdHlwZSwgZmllbGRu byk7CisrICAgICAgY29udGFpbmVyX2JpdHNpemUgPSBUWVBFX0xFTkdUSCAodHlwZSkgKiA4Owor KworICAgICAgIHYtPmJpdHNpemUgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKGFyZ190eXBlLCBmaWVs ZG5vKTsKKyAgICAgICBpZiAoKGJpdHBvcyAlIGNvbnRhaW5lcl9iaXRzaXplKSArIHYtPmJpdHNp emUgPD0gY29udGFpbmVyX2JpdHNpemUKKyAJICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPD0gKGlu dCkgc2l6ZW9mIChMT05HRVNUKSkKK0BAIC0xOTM5LDYgKzE5NDIsOCBAQCB2YWx1ZV9wcmltaXRp dmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IG9mZnNldCwKKyAgICAgICBlbHNlCisg CXsKKyAJICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKworKwkgIC8qIFRZUEVfTEVOR1RI IG9mIFRZUEUgZ2V0cyBpbml0aWFsaXplZCBieSBhbGxvY2F0ZV92YWx1ZS4gICovCisgCSAgbWVt Y3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLAorIAkJICB2YWx1ZV9jb250ZW50c19yYXcgKGFy ZzEpICsgb2Zmc2V0LAorIAkJICBUWVBFX0xFTkdUSCAodHlwZSkpOworCgpkaWZmIC0tZ2l0IGEv Z2RiLWJ6NTI4NjY4LXN5bWZpbGUtY2xlYW51cC5wYXRjaCBiL2dkYi1iejUyODY2OC1zeW1maWxl LWNsZWFudXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE4NDNm YQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejUyODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2gK QEAgLTAsMCArMSwxMzcgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDA5LTEwL21zZzAwNTA5Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaCAyLzNdIGZpbmRfc2VwYXJhdGVf ZGVidWdfZmlsZSBjbGVhbnVwCisKK0hpLAorCitjdXJyZW50IGNvZGUgd2FzOgorKiBkaWZmaWN1 bHQgdG8gbWFpbnRhaW4gYXMgYSBuZXcgdmFyaWFibGUgcmVxdWlyZWQgeGZyZWUgb24gbWFueSBw bGFjZXMKKyogd2FzIGNhdXNpbmcgbWVtb3J5IGNvcnJ1cHRpb25zIGR1ZSB0byBzaWxlbnRseSBt aXNhcHBsaWVkIDNyZCBwYXJ0eSBwYXRjaGVzCisgIGFzIHRoZSBjbG9zZSBjb2RlIGZyYWdtZW50 cyB1bmZvcnR1bmF0ZWx5IG1hdGNoIHBhdGNoIGNvbnRleHQKKworCitUaGFua3MsCitKYW4KKwor CitnZGIvCisyMDA5LTEwLTIxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+CisKKwkqIHN5bWZpbGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogSW5pdGlh bGl6ZSBkaXIsIGRlYnVnZmlsZSBhbmQKKwljYW5vbl9uYW1lIHRvIE5VTEwuICBDaGFuZ2UgYWxs b2NhIHRvIHhtYWxsb2MsIG5ld2x5IGNhbGwgeGZyZWUgZm9yIGl0LgorCU5ldyBsYWJlbCBjbGVh bnVwX3JldHVybl9kZWJ1Z2ZpbGUsIGp1bXAgdG8gaXQgZnJvbSB0aGUgZmFpbHVyZSBwYXRocy4K KworLS0tIGEvZ2RiL3N5bWZpbGUuYworKysrIGIvZ2RiL3N5bWZpbGUuYworQEAgLTEzMzMsMTEg KzEzMzMsMTAgQEAgc3RhdGljIGNoYXIgKgorIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCisgeworICAgYXNlY3Rpb24gKnNlY3Q7CistICBjaGFyICpi YXNlbmFtZTsKKy0gIGNoYXIgKmRpcjsKKy0gIGNoYXIgKmRlYnVnZmlsZTsKKy0gIGNoYXIgKm5h bWVfY29weTsKKy0gIGNoYXIgKmNhbm9uX25hbWU7CisrICBjaGFyICpiYXNlbmFtZSwgKm5hbWVf Y29weTsKKysgIGNoYXIgKmRpciA9IE5VTEw7CisrICBjaGFyICpkZWJ1Z2ZpbGUgPSBOVUxMOwor KyAgY2hhciAqY2Fub25fbmFtZSA9IE5VTEw7CisgICBiZmRfc2l6ZV90eXBlIGRlYnVnbGlua19z aXplOworICAgdW5zaWduZWQgbG9uZyBjcmMzMjsKKyAgIGludCBpOworQEAgLTEzNjYsNyArMTM2 NSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp CisgICBpZiAoYmFzZW5hbWUgPT0gTlVMTCkKKyAgICAgLyogVGhlcmUncyBubyBzZXBhcmF0ZSBk ZWJ1ZyBpbmZvLCBoZW5jZSB0aGVyZSdzIG5vIHdheSB3ZSBjb3VsZAorICAgICAgICBsb2FkIGl0 ID0+IG5vIHdhcm5pbmcuICAqLworLSAgICByZXR1cm4gTlVMTDsKKysgICAgZ290byBjbGVhbnVw X3JldHVybl9kZWJ1Z2ZpbGU7CisgCisgICBkaXIgPSB4c3RyZHVwIChvYmpmaWxlLT5uYW1lKTsK KyAKK0BAIC0xMzg4LDI0ICsxMzg3LDE5IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCisgICBpZiAoY2Fub25fbmFtZSAmJiBzdHJsZW4gKGNhbm9u X25hbWUpID4gaSkKKyAgICAgaSA9IHN0cmxlbiAoY2Fub25fbmFtZSk7CisgCistICBkZWJ1Z2Zp bGUgPSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsgMQorLSAgICAgICAg ICAgICAgICAgICAgICArIGkKKy0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKERFQlVH X1NVQkRJUkVDVE9SWSkKKy0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKCIvIikKKy0g ICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKGJhc2VuYW1lKQorLSAgICAgICAgICAgICAg ICAgICAgICArIDEpOworKyAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChkZWJ1Z19maWxl X2RpcmVjdG9yeSkgKyAxCisrCQkgICAgICAgKyBpCisrCQkgICAgICAgKyBzdHJsZW4gKERFQlVH X1NVQkRJUkVDVE9SWSkKKysJCSAgICAgICArIHN0cmxlbiAoIi8iKQorKwkJICAgICAgICsgc3Ry bGVuIChiYXNlbmFtZSkKKysJCSAgICAgICArIDEpOworIAorICAgLyogRmlyc3QgdHJ5IGluIHRo ZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgb3JpZ2luYWwgZmlsZS4gICovCisgICBzdHJjcHkgKGRl YnVnZmlsZSwgZGlyKTsKKyAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCisgICBp ZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUt Pm5hbWUpKQorLSAgICB7CistICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKKy0gICAgICB4ZnJlZSAo ZGlyKTsKKy0gICAgICB4ZnJlZSAoY2Fub25fbmFtZSk7CistICAgICAgcmV0dXJuIHhzdHJkdXAg KGRlYnVnZmlsZSk7CistICAgIH0KKysgICAgZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7 CisgCisgICAvKiBUaGVuIHRyeSBpbiB0aGUgc3ViZGlyZWN0b3J5IG5hbWVkIERFQlVHX1NVQkRJ UkVDVE9SWS4gICovCisgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGlyKTsKK0BAIC0xNDE0LDEyICsx NDA4LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKKyAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCisgICBpZiAoc2VwYXJhdGVf ZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQorLSAg ICB7CistICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKKy0gICAgICB4ZnJlZSAoZGlyKTsKKy0gICAg ICB4ZnJlZSAoY2Fub25fbmFtZSk7CistICAgICAgcmV0dXJuIHhzdHJkdXAgKGRlYnVnZmlsZSk7 CistICAgIH0KKysgICAgZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7CisgCisgICAvKiBU aGVuIHRyeSBpbiB0aGUgZ2xvYmFsIGRlYnVnZmlsZSBkaXJlY3RvcnkuICAqLworICAgc3RyY3B5 IChkZWJ1Z2ZpbGUsIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKK0BAIC0xNDI4LDEyICsxNDE3LDcg QEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAg IHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCisgICBpZiAoc2VwYXJhdGVfZGVidWdf ZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQorLSAgICB7Cist ICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKKy0gICAgICB4ZnJlZSAoZGlyKTsKKy0gICAgICB4ZnJl ZSAoY2Fub25fbmFtZSk7CistICAgICAgcmV0dXJuIHhzdHJkdXAgKGRlYnVnZmlsZSk7CistICAg IH0KKysgICAgZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7CisgCisgICAvKiBJZiB0aGUg ZmlsZSBpcyBpbiB0aGUgc3lzcm9vdCwgdHJ5IHVzaW5nIGl0cyBiYXNlIHBhdGggaW4gdGhlCisg ICAgICBnbG9iYWwgZGVidWdmaWxlIGRpcmVjdG9yeS4gICovCitAQCAtMTQ0NywyMCArMTQzMSwx NyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor ICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCisgICAgICAgaWYgKHNlcGFy YXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkK Ky0JeworLQkgIHhmcmVlIChjYW5vbl9uYW1lKTsKKy0JICB4ZnJlZSAoYmFzZW5hbWUpOworLQkg IHhmcmVlIChkaXIpOworLQkgIHJldHVybiB4c3RyZHVwIChkZWJ1Z2ZpbGUpOworLQl9CisrCWdv dG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOworICAgICB9CisgICAKKy0gIGlmIChjYW5vbl9u YW1lKQorLSAgICB4ZnJlZSAoY2Fub25fbmFtZSk7CisrICB4ZnJlZSAoZGVidWdmaWxlKTsKKysg IGRlYnVnZmlsZSA9IE5VTEw7CisgCisrY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOgorKyAgeGZy ZWUgKGNhbm9uX25hbWUpOworICAgeGZyZWUgKGJhc2VuYW1lKTsKKyAgIHhmcmVlIChkaXIpOwor LSAgcmV0dXJuIE5VTEw7CisrICByZXR1cm4gZGVidWdmaWxlOworIH0KKyAKKyAKKwoKZGlmZiAt LWdpdCBhL2dkYi1iejUyODY2OC1zeW1maWxlLW11bHRpLnBhdGNoIGIvZ2RiLWJ6NTI4NjY4LXN5 bWZpbGUtbXVsdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3 M2YyZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejUyODY2OC1zeW1maWxlLW11bHRpLnBhdGNo CkBAIC0wLDAgKzEsMjcxIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAwOS0xMC9tc2cwMDUwOC5odG1sCitTdWJqZWN0OiBbcGF0Y2ggMy8zXSBkZWJ1Zy1maWxlLWRp cmVjdG9yeSB3aXRoIG11bHRpcGxlIGNvbXBvbmVudHMKKworSGksCisKK2ZvciB2YXJpb3VzIHJl YXNvbnMgYGRlYnVnLWZpbGUtZGlyZWN0b3J5JyB3b3VsZCBiZSBzb21ldGltZXMgdXNlZnVsIHRv IGhhdmUKK211bHRpcGxlIGNvbXBvbmVudHMgc3VjaCBhcyBgc29saWItc2VhcmNoLXBhdGgnIGhh cy4KKworSSBmb3VuZCBpdCB1c2VmdWwgbXlzZWxmIGR1cmluZyB2YXJpb3VzIHNlcGFyYXRlIGRl YnVnaW5mbyB0ZXN0cy9zY3JpcHRzLgorCitJdCB3YXMgcmVxdWVzdGVkIGZvciB0aGUgQUJSVCBi dWdyZXBvcnRpbmcgcHJvamVjdCBhdCB0aGUgcHJlY2VkaW5nIG1haWwgb2Y6CisJaHR0cHM6Ly9m ZWRvcmFob3N0ZWQub3JnL3BpcGVybWFpbC9jcmFzaC1jYXRjaGVyLzIwMDktT2N0b2Jlci8wMDAw NTQuaHRtbAorCitJdCBzaG91bGQgYmUgYSBiYWNrd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbiBh cyBESVJOQU1FX1NFUEFSQVRPUiBzaG91bGQgbmV2ZXIKK2JlIGEgdmFsaWQgcGFydCBvZiBhIHNp bmdsZSBERUJVR19GSUxFX0RJUkVDVE9SWSBjb21wb25lbnQuCisKKworVGhhbmtzLAorSmFuCisK KworZ2RiL2RvYy8KKzIwMDktMTAtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KKworCSogZ2RiLnRleGluZm8gKHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSwg c2hvdyBkZWJ1Zy1maWxlLWRpcmVjdG9yeSkKKwkoQXV0by1sb2FkaW5nKTogVXNlIHBsdXJhbCBh bmQgbm90ZSBvbmUgY2FuIHVzZSBtdWx0aXBsZSBjb21wb25lbnRzIG5vdy4KKworZ2RiLworMjAw OS0xMC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJ KiBzeW1maWxlLmMgKGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlIGRl YnVnZGlyLiAgTW92ZQorCXZhcmlhYmxlcyBzaXplLCBzIGFuZCBkYXRhIGludG8gYSBuZXcgaW5u ZXIgYmxvY2suICBDaGFuZ2UgeG1hbGxvYyBmb3IKKwlhbGxvY2EsIHVzZSBkaXJlY3QgQlVJTERJ RC0+U0laRSB0aGVyZSBub3cuICBMb29wIGZvciB0aGUKKwlERUJVR19GSUxFX0RJUkVDVE9SWSBj b21wb25lbnRzLgorCShmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUpOiBOZXcgdmFyaWFibGUgZGVi dWdkaXIgYW5kIGRlYnVnZGlyX2VuZC4KKwlMb29wIGZvciB0aGUgREVCVUdfRklMRV9ESVJFQ1RP UlkgY29tcG9uZW50cy4KKwkoX2luaXRpYWxpemVfc3ltZmlsZSk6IEZvciAiZGVidWctZmlsZS1k aXJlY3RvcnkiIHVzZSBwbHVyYWwgYW5kIG5vdGUKKwlvbmUgY2FuIHVzZSBtdWx0aXBsZSBjb21w b25lbnRzIG5vdy4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMDktMTAtMjIgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2RiLmJhc2Uvc2VwZGVidWcuZXhw OiBOZXcgdGVzdF9kaWZmZXJlbnRfZGlyIGNhbGwgZm9yIG11bHRpcGxlLWRpcnMuCisKKy0tLSBh L2dkYi9kb2MvZ2RiLnRleGluZm8KKysrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KK0BAIC0xNDA2 NiwxMyArMTQwNjYsMTQgQEAgbmFtZSBAdmFsdWV7R0RCTn0gaXMgY3VycmVudGx5IHVzaW5nLgor IEB0YWJsZSBAY29kZQorIAorIEBraW5kZXggc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5CistQGl0 ZW0gc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQorLVNldCB0aGUgZGly ZWN0b3J5IHdoaWNoIEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3Igc2VwYXJhdGUgZGVidWdnaW5n CistaW5mb3JtYXRpb24gZmlsZXMgdG8gQHZhcntkaXJlY3Rvcnl9LgorK0BpdGVtIHNldCBkZWJ1 Zy1maWxlLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yaWVzfQorK1NldCB0aGUgZGlyZWN0b3JpZXMg d2hpY2ggQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1Z2dpbmcKKytpbmZv cm1hdGlvbiBmaWxlcyB0byBAdmFye2RpcmVjdG9yeX0uICBNdWx0aXBsZSBkaXJlY3RvcnkgY29t cG9uZW50cyBjYW4gYmUgc2V0CisrY29uY2F0ZW5hdGluZyB0aGVtIGJ5IGEgZGlyZWN0b3J5IHNl cGFyYXRvci4KKyAKKyBAa2luZGV4IHNob3cgZGVidWctZmlsZS1kaXJlY3RvcnkKKyBAaXRlbSBz aG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5CistU2hvdyB0aGUgZGlyZWN0b3J5IEB2YWx1ZXtHREJO fSBzZWFyY2hlcyBmb3Igc2VwYXJhdGUgZGVidWdnaW5nCisrU2hvdyB0aGUgZGlyZWN0b3JpZXMg QHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1Z2dpbmcKKyBpbmZvcm1hdGlv biBmaWxlcy4KKyAKKyBAZW5kIHRhYmxlCitAQCAtMTkzMzYsOCArMTkzMzcsOCBAQCByZWFkYWJs ZSwgQHZhbHVle0dEQk59IHdpbGwgZXZhbHVhdGUgaXQgYXMgYSBQeXRob24gc2NyaXB0LgorIAor IElmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5kIGlmIHRoZSBwYXJhbWV0ZXIKKyBAY29k ZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0gaXMgc2V0IChAcHhyZWZ7U2VwYXJhdGUgRGVidWcgRmls ZXN9KSwKKy10aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSB0aGUgZmlsZSBuYW1lZAorLUBmaWxl e0B2YXJ7ZGVidWctZmlsZS1kaXJlY3Rvcnl9L0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCisrdGhl biBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgZm9yIGl0cyBlYWNoIHNlcGFyYXRlZCBkaXJlY3Rvcnkg Y29tcG9uZW50CisrQGNvZGV7Y29tcG9uZW50fSB0aGUgZmlsZSBuYW1lZCBAZmlsZXtAY29kZXtj b21wb25lbnR9L0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCisgQHZhcntyZWFsLW5hbWV9IGlzIHRo ZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFtZSwgYXMgZGVzY3JpYmVkIGFib3ZlLgorIAorIEZpbmFs bHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBs b29rIGZvcgorLS0tIGEvZ2RiL3N5bWZpbGUuYworKysrIGIvZ2RiL3N5bWZpbGUuYworQEAgLTEy MTgsMzUgKzEyMTgsNTkgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwg c3RydWN0IGJ1aWxkX2lkICpjaGVjaykKKyBzdGF0aWMgY2hhciAqCisgYnVpbGRfaWRfdG9fZGVi dWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQpCisgeworLSAgY2hhciAqbGlu aywgKnMsICpyZXR2YWwgPSBOVUxMOworLSAgZ2RiX2J5dGUgKmRhdGEgPSBidWlsZF9pZC0+ZGF0 YTsKKy0gIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7CisrICBjaGFyICpsaW5rLCAqZGVi dWdkaXIsICpyZXR2YWwgPSBOVUxMOworIAorICAgLyogREVCVUdfRklMRV9ESVJFQ1RPUlkvLmJ1 aWxkLWlkL2FiL2NkZWYgKi8KKy0gIGxpbmsgPSB4bWFsbG9jIChzdHJsZW4gKGRlYnVnX2ZpbGVf ZGlyZWN0b3J5KSArIChzaXplb2YgIi8uYnVpbGQtaWQvIiAtIDEpICsgMQorLQkJICArIDIgKiBz aXplICsgKHNpemVvZiAiLmRlYnVnIiAtIDEpICsgMSk7CistICBzID0gbGluayArIHNwcmludGYg KGxpbmssICIlcy8uYnVpbGQtaWQvIiwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworLSAgaWYgKHNp emUgPiAwKQorLSAgICB7CistICAgICAgc2l6ZS0tOworLSAgICAgIHMgKz0gc3ByaW50ZiAocywg IiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOworLSAgICB9CistICBpZiAoc2l6ZSA+IDApCist ICAgICpzKysgPSAnLyc7CistICB3aGlsZSAoc2l6ZS0tID4gMCkKKy0gICAgcyArPSBzcHJpbnRm IChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CistICBzdHJjcHkgKHMsICIuZGVidWci KTsKKy0KKy0gIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxs eSBub24tZXhpc3RlbnQgZmlsZXMuICAqLworLSAgaWYgKGFjY2VzcyAobGluaywgRl9PSykgPT0g MCkKKy0gICAgcmV0dmFsID0gbHJlYWxwYXRoIChsaW5rKTsKKy0gIHhmcmVlIChsaW5rKTsKKy0K Ky0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChyZXR2YWwsIGJ1aWxk X2lkKSkKKysgIGxpbmsgPSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsg KHNpemVvZiAiLy5idWlsZC1pZC8iIC0gMSkgKyAxCisrCQkgKyAyICogYnVpbGRfaWQtPnNpemUg KyAoc2l6ZW9mICIuZGVidWciIC0gMSkgKyAxKTsKKysKKysgIC8qIEtlZXAgYmFja3dhcmQgY29t cGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNUT1JZIGJlaW5nICIiIHdpbGwKKysg ICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4gICovCisrCisrICBkZWJ1Z2RpciA9 IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OworKyAgZG8KKyAgICAgeworLSAgICAgIHhmcmVlIChyZXR2 YWwpOworLSAgICAgIHJldHZhbCA9IE5VTEw7CisrICAgICAgY2hhciAqcywgKmRlYnVnZGlyX2Vu ZDsKKysgICAgICBnZGJfYnl0ZSAqZGF0YSA9IGJ1aWxkX2lkLT5kYXRhOworKyAgICAgIHNpemVf dCBzaXplID0gYnVpbGRfaWQtPnNpemU7CisrCisrICAgICAgd2hpbGUgKCpkZWJ1Z2RpciA9PSBE SVJOQU1FX1NFUEFSQVRPUikKKysJZGVidWdkaXIrKzsKKysKKysgICAgICBkZWJ1Z2Rpcl9lbmQg PSBzdHJjaHIgKGRlYnVnZGlyLCBESVJOQU1FX1NFUEFSQVRPUik7CisrICAgICAgaWYgKGRlYnVn ZGlyX2VuZCA9PSBOVUxMKQorKwlkZWJ1Z2Rpcl9lbmQgPSAmZGVidWdkaXJbc3RybGVuIChkZWJ1 Z2RpcildOworKworKyAgICAgIG1lbWNweSAobGluaywgZGVidWdkaXIsIGRlYnVnZGlyX2VuZCAt IGRlYnVnZGlyKTsKKysgICAgICBzID0gJmxpbmtbZGVidWdkaXJfZW5kIC0gZGVidWdkaXJdOwor KyAgICAgIHMgKz0gc3ByaW50ZiAocywgIi8uYnVpbGQtaWQvIik7CisrICAgICAgaWYgKHNpemUg PiAwKQorKwl7CisrCSAgc2l6ZS0tOworKwkgIHMgKz0gc3ByaW50ZiAocywgIiUwMngiLCAodW5z aWduZWQpICpkYXRhKyspOworKwl9CisrICAgICAgaWYgKHNpemUgPiAwKQorKwkqcysrID0gJy8n OworKyAgICAgIHdoaWxlIChzaXplLS0gPiAwKQorKwlzICs9IHNwcmludGYgKHMsICIlMDJ4Iiwg KHVuc2lnbmVkKSAqZGF0YSsrKTsKKysgICAgICBzdHJjcHkgKHMsICIuZGVidWciKTsKKysKKysg ICAgICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZlbiBmb3IgdGhlIHVzdWFsbHkgbm9u LWV4aXN0ZW50IGZpbGVzLiAgKi8KKysgICAgICBpZiAoYWNjZXNzIChsaW5rLCBGX09LKSA9PSAw KQorKwlyZXR2YWwgPSBscmVhbHBhdGggKGxpbmspOworKworKyAgICAgIGlmIChyZXR2YWwgIT0g TlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChyZXR2YWwsIGJ1aWxkX2lkKSkKKysJeworKwkgIHhm cmVlIChyZXR2YWwpOworKwkgIHJldHZhbCA9IE5VTEw7CisrCX0KKysKKysgICAgICBpZiAocmV0 dmFsICE9IE5VTEwpCisrCWJyZWFrOworKworKyAgICAgIGRlYnVnZGlyID0gZGVidWdkaXJfZW5k OworICAgICB9CisrICB3aGlsZSAoKmRlYnVnZGlyICE9IDApOworIAorICAgcmV0dXJuIHJldHZh bDsKKyB9CitAQCAtMTMzMyw3ICsxMzU3LDcgQEAgc3RhdGljIGNoYXIgKgorIGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgeworICAgYXNlY3Rpb24g KnNlY3Q7CistICBjaGFyICpiYXNlbmFtZSwgKm5hbWVfY29weTsKKysgIGNoYXIgKmJhc2VuYW1l LCAqbmFtZV9jb3B5LCAqZGVidWdkaXI7CisgICBjaGFyICpkaXIgPSBOVUxMOworICAgY2hhciAq ZGVidWdmaWxlID0gTlVMTDsKKyAgIGNoYXIgKmNhbm9uX25hbWUgPSBOVUxMOworQEAgLTE0MTAs MjkgKzE0MzQsNTEgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKKyAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBj cmMzMiwgb2JqZmlsZS0+bmFtZSkpCisgICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxl OworIAorLSAgLyogVGhlbiB0cnkgaW4gdGhlIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAg Ki8KKy0gIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistICBzdHJj YXQgKGRlYnVnZmlsZSwgIi8iKTsKKy0gIHN0cmNhdCAoZGVidWdmaWxlLCBkaXIpOworLSAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKKy0KKy0gIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxl X2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCistICAgIGdvdG8gY2xl YW51cF9yZXR1cm5fZGVidWdmaWxlOworKyAgLyogVGhlbiB0cnkgaW4gdGhlIGdsb2JhbCBkZWJ1 Z2ZpbGUgZGlyZWN0b3JpZXMuCisrIAorKyAgICAgS2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5 IHNvIHRoYXQgREVCVUdfRklMRV9ESVJFQ1RPUlkgYmVpbmcgIiIgd2lsbAorKyAgICAgY2F1c2Ug Ii8uLi4iIGxvb2t1cHMuICAqLworIAorLSAgLyogSWYgdGhlIGZpbGUgaXMgaW4gdGhlIHN5c3Jv b3QsIHRyeSB1c2luZyBpdHMgYmFzZSBwYXRoIGluIHRoZQorLSAgICAgZ2xvYmFsIGRlYnVnZmls ZSBkaXJlY3RvcnkuICAqLworLSAgaWYgKGNhbm9uX25hbWUKKy0gICAgICAmJiBzdHJuY21wIChj YW5vbl9uYW1lLCBnZGJfc3lzcm9vdCwgc3RybGVuIChnZGJfc3lzcm9vdCkpID09IDAKKy0gICAg ICAmJiBJU19ESVJfU0VQQVJBVE9SIChjYW5vbl9uYW1lW3N0cmxlbiAoZ2RiX3N5c3Jvb3QpXSkp CisrICBkZWJ1Z2RpciA9IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OworKyAgZG8KKyAgICAgeworLSAg ICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistICAgICAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsIGNhbm9uX25hbWUgKyBzdHJsZW4gKGdkYl9zeXNyb290KSk7CisrICAg ICAgY2hhciAqZGVidWdkaXJfZW5kOworKworKyAgICAgIHdoaWxlICgqZGVidWdkaXIgPT0gRElS TkFNRV9TRVBBUkFUT1IpCisrCWRlYnVnZGlyKys7CisrCisrICAgICAgZGVidWdkaXJfZW5kID0g c3RyY2hyIChkZWJ1Z2RpciwgRElSTkFNRV9TRVBBUkFUT1IpOworKyAgICAgIGlmIChkZWJ1Z2Rp cl9lbmQgPT0gTlVMTCkKKysJZGVidWdkaXJfZW5kID0gJmRlYnVnZGlyW3N0cmxlbiAoZGVidWdk aXIpXTsKKysKKysgICAgICBtZW1jcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIsIGRlYnVnZGlyX2Vu ZCAtIGRlYnVnZGlyKTsKKysgICAgICBkZWJ1Z2ZpbGVbZGVidWdkaXJfZW5kIC0gZGVidWdkaXJd ID0gMDsKKyAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKKysgICAgICBzdHJjYXQgKGRl YnVnZmlsZSwgZGlyKTsKKyAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOworIAor ICAgICAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwg b2JqZmlsZS0+bmFtZSkpCisgCWdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOworKworKyAg ICAgIC8qIElmIHRoZSBmaWxlIGlzIGluIHRoZSBzeXNyb290LCB0cnkgdXNpbmcgaXRzIGJhc2Ug cGF0aCBpbiB0aGUKKysJIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAgKi8KKysgICAgICBp ZiAoY2Fub25fbmFtZQorKwkgICYmIHN0cm5jbXAgKGNhbm9uX25hbWUsIGdkYl9zeXNyb290LCBz dHJsZW4gKGdkYl9zeXNyb290KSkgPT0gMAorKwkgICYmIElTX0RJUl9TRVBBUkFUT1IgKGNhbm9u X25hbWVbc3RybGVuIChnZGJfc3lzcm9vdCldKSkKKysJeworKwkgIG1lbWNweSAoZGVidWdmaWxl LCBkZWJ1Z2RpciwgZGVidWdkaXJfZW5kIC0gZGVidWdkaXIpOworKwkgIGRlYnVnZmlsZVtkZWJ1 Z2Rpcl9lbmQgLSBkZWJ1Z2Rpcl0gPSAwOworKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBjYW5vbl9u YW1lICsgc3RybGVuIChnZGJfc3lzcm9vdCkpOworKwkgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIp OworKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisrCisrCSAgaWYgKHNlcGFyYXRl X2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkKKysJ ICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOworKwl9CisrCisrICAgICAgZGVidWdk aXIgPSBkZWJ1Z2Rpcl9lbmQ7CisgICAgIH0KKysgIHdoaWxlICgqZGVidWdkaXIgIT0gMCk7Cisg ICAKKyAgIHhmcmVlIChkZWJ1Z2ZpbGUpOworICAgZGVidWdmaWxlID0gTlVMTDsKK0BAIC00MTcz LDEyICs0MjE5LDEyIEBAIFVzYWdlOiBzZXQgZXh0ZW5zaW9uLWxhbmd1YWdlIC5mb28gYmFyIiks CisgCisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJkZWJ1Zy1maWxlLWRp cmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCisgCQkJCSAgICAgJmRlYnVnX2ZpbGVfZGlyZWN0b3J5 LCBfKCJcCistU2V0IHRoZSBkaXJlY3Rvcnkgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9scyBh cmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCistU2hvdyB0aGUgZGlyZWN0b3J5IHdoZXJlIHNlcGFy YXRlIGRlYnVnIHN5bWJvbHMgYXJlIHNlYXJjaGVkIGZvci4iKSwgXygiXAorK1NldCB0aGUgZGly ZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9scyBhcmUgc2VhcmNoZWQgZm9yLiIp LCBfKCJcCisrU2hvdyB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9s cyBhcmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCisgU2VwYXJhdGUgZGVidWcgc3ltYm9scyBhcmUg Zmlyc3Qgc2VhcmNoZWQgZm9yIGluIHRoZSBzYW1lXG5cCisgZGlyZWN0b3J5IGFzIHRoZSBiaW5h cnksIHRoZW4gaW4gdGhlIGAiIERFQlVHX1NVQkRJUkVDVE9SWSAiJyBzdWJkaXJlY3RvcnksXG5c CisgYW5kIGxhc3RseSBhdCB0aGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IG9mIHRoZSBiaW5hcnkg d2l0aFxuXAorLXRoZSBnbG9iYWwgZGVidWctZmlsZSBkaXJlY3RvcnkgcHJlcGVuZGVkLiIpLAor K2VhY2ggZ2xvYmFsIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGNvbXBvbmVudCBwcmVwZW5kZWQuIiks CisgCQkJCSAgICAgTlVMTCwKKyAJCQkJICAgICBzaG93X2RlYnVnX2ZpbGVfZGlyZWN0b3J5LAor IAkJCQkgICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOworLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9zZXBkZWJ1Zy5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VwZGVidWcu ZXhwCitAQCAtOTk1LDYgKzk5NSwxMiBAQCBpZiAhW3N0cmluZyBjb21wYXJlICRidWlsZF9pZF9k ZWJ1Z19maWxlbmFtZSAiIl0gdGhlbiB7CisgCisgICAgIHRlc3RfZGlmZmVyZW50X2RpciBidWls ZC1pZCAiJHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCisgCisrICAgICMgVGVzdCBhbHNvIG11 bHRpcGxlIGRpcmVjdG9yaWVzIGNhbiBiZSBzcGVjaWZpZWQuICBXaXRob3V0IHRoZSBidWlsZC1p ZAorKyAgICAjIHJlZmVyZW5jZSBHREIgd291bGQgZmluZCB0aGUgc2VwYXJhdGUgZGVidWcgaW5m byBqdXN0IGF0IHRoZSBzYW1lCisrICAgICMgbG9jYXRpb24gYXMgdGhlIGV4ZWN1dGFibGUgZmls ZS4KKysKKysgICAgdGVzdF9kaWZmZXJlbnRfZGlyIG11bHRpcGxlLWRpcnMgIi9kb2Vzbm90ZXhp c3Q6JHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCisrCisgICAgICMgU3BhcmUgZGVidWcgZmls ZXMgbWF5IGNvbmZ1c2UgdGVzdHN1aXRlIHJ1bnMgaW4gdGhlIGZ1dHVyZS4KKyAgICAgcmVtb3Rl X2V4ZWMgYnVpbGQgInJtIC1mICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtidWlsZF9pZF9kZWJ1Z19m aWxlbmFtZX0iCisgfQorCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtc2VwY3Jj LnBhdGNoIGIvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtc2VwY3JjLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4N2U0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno1 Mjg2Njgtc3ltZmlsZS1zZXBjcmMucGF0Y2gKQEAgLTAsMCArMSwxNTEgQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTEwL21zZzAwNTA3Lmh0bWwKK1N1YmplY3Q6 IFtwYXRjaCAxLzNdIHByaW50IHRoZSAuZGVidWcgZmlsZSBuYW1lIGhhdmluZyBDUkMgbWlzbWF0 Y2gKKworSGksCisKK3RoaXMgcGF0Y2ggaXMgbGVmdCBhcyBpcyBmcm9tIEFuZHJldyBDYWduZXku CisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAwNS0wNC0wMiAgQW5kcmV3IENhZ25leSAg PGNhZ25leUBnbnUub3JnPgorCisJKiBzeW1maWxlLmMgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhp c3RzKTogV2hlbiB0aGUgQ1JDcyBtaXNtYXRjaAorCXByaW50IGEgd2FybmluZy4KKwkoZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlKTogUGFzcyBpbiB0aGUgb2JqZmlsZSdzIG5hbWUuCisKK2dkYi90 ZXN0c3VpdGUvCisyMDA5LTEwLTIxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisKKwkqIGdkYi5iYXNlL3NlcGRlYnVnLmV4cCAoQ1JDIG1pc21hdGNoIGlzIHJl cG9ydGVkKTogTmV3IHRlc3QuCisJKiBnZGIuYmFzZS9zZXBkZWJ1ZzIuYzogTmV3IGZpbGUuCisK Ky0tLSBhL2dkYi9zeW1maWxlLmMKKysrKyBiL2dkYi9zeW1maWxlLmMKK0BAIC0xMjgzLDcgKzEy ODMsOCBAQCBnZXRfZGVidWdfbGlua19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5z aWduZWQgbG9uZyAqY3JjMzJfb3V0KQorIH0KKyAKKyBzdGF0aWMgaW50Cistc2VwYXJhdGVfZGVi dWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgY3JjKQorK3Nl cGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25n IGNyYywKKysJCQkgICAgY29uc3QgY2hhciAqcGFyZW50X25hbWUpCisgeworICAgdW5zaWduZWQg bG9uZyBmaWxlX2NyYyA9IDA7CisgICBiZmQgKmFiZmQ7CitAQCAtMTMwMyw3ICsxMzA0LDE1IEBA IHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBs b25nIGNyYykKKyAKKyAgIGJmZF9jbG9zZSAoYWJmZCk7CisgCistICByZXR1cm4gY3JjID09IGZp bGVfY3JjOworKyAgaWYgKGNyYyAhPSBmaWxlX2NyYykKKysgICAgeworKyAgICAgIHdhcm5pbmcg KF8oInRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3VuZCBpbiBcIiVzXCIiCisrCQkgIiBkb2VzIG5v dCBtYXRjaCBcIiVzXCIgKENSQyBtaXNtYXRjaCkuXG4iKSwKKysJICAgICAgIG5hbWUsIHBhcmVu dF9uYW1lKTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgcmV0dXJuIDE7CisgfQor IAorIGNoYXIgKmRlYnVnX2ZpbGVfZGlyZWN0b3J5ID0gTlVMTDsKK0BAIC0xMzU1LDYgKzEzNjQs OCBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor ICAgYmFzZW5hbWUgPSBnZXRfZGVidWdfbGlua19pbmZvIChvYmpmaWxlLCAmY3JjMzIpOworIAor ICAgaWYgKGJhc2VuYW1lID09IE5VTEwpCisrICAgIC8qIFRoZXJlJ3Mgbm8gc2VwYXJhdGUgZGVi dWcgaW5mbywgaGVuY2UgdGhlcmUncyBubyB3YXkgd2UgY291bGQKKysgICAgICAgbG9hZCBpdCA9 PiBubyB3YXJuaW5nLiAgKi8KKyAgICAgcmV0dXJuIE5VTEw7CisgCisgICBkaXIgPSB4c3RyZHVw IChvYmpmaWxlLT5uYW1lKTsKK0BAIC0xMzg4LDcgKzEzOTksNyBAQCBmaW5kX3NlcGFyYXRlX2Rl YnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgc3RyY3B5IChkZWJ1Z2ZpbGUs IGRpcik7CisgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOworIAorLSAgaWYgKHNlcGFy YXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkKKysgIGlmIChzZXBhcmF0 ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCisg ICAgIHsKKyAgICAgICB4ZnJlZSAoYmFzZW5hbWUpOworICAgICAgIHhmcmVlIChkaXIpOworQEAg LTE0MDIsNyArMTQxMyw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCisgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKKyAgIHN0cmNhdCAoZGVi dWdmaWxlLCBiYXNlbmFtZSk7CisgCistICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMg KGRlYnVnZmlsZSwgY3JjMzIpKQorKyAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChk ZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkKKyAgICAgeworICAgICAgIHhmcmVlIChi YXNlbmFtZSk7CisgICAgICAgeGZyZWUgKGRpcik7CitAQCAtMTQxNiw3ICsxNDI3LDcgQEAgZmlu ZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIHN0cmNh dCAoZGVidWdmaWxlLCBkaXIpOworICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKKyAK Ky0gIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMikpCisr ICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZp bGUtPm5hbWUpKQorICAgICB7CisgICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKKyAgICAgICB4ZnJl ZSAoZGlyKTsKK0BAIC0xNDM1LDcgKzE0NDYsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIp OworICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCistICAgICAgaWYgKHNl cGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkKKysgICAgICBpZiAo c2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5h bWUpKQorIAl7CisgCSAgeGZyZWUgKGNhbm9uX25hbWUpOworIAkgIHhmcmVlIChiYXNlbmFtZSk7 CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NlcGRlYnVnLmV4cAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1Zy5leHAKK0BAIC05NTIsNiArOTUyLDIzIEBAIHNldCBk ZWJ1Z2ZpbGUgIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0uZGVidWciCisgdGVzdF9k aWZmZXJlbnRfZGlyIGRlYnVnbGluayAiJHtvYmpkaXJ9LyR7c3ViZGlyfSIgMAorIAorIAorKyMg VGVzdCBDUkMgbWlzbWF0Y2ggaXMgcmVwb3J0ZWQuCisrCisraWYge1tidWlsZF9leGVjdXRhYmxl IHNlcGRlYnVnLmV4cCBzZXBkZWJ1ZzIgc2VwZGVidWcyLmMgZGVidWddICE9IC0xCisrICAgICYm ICFbZ2RiX2dudV9zdHJpcF9kZWJ1ZyAke29iamRpcn0vJHtzdWJkaXJ9L3NlcGRlYnVnMl19IHsK KysKKysgICAgcmVtb3RlX2V4ZWMgYnVpbGQgImNwICR7ZGVidWdmaWxlfSAke29iamRpcn0vJHtz dWJkaXJ9Ly5kZWJ1Zy9zZXBkZWJ1ZzIuZGVidWciCisrCisrICAgIGdkYl9leGl0CisrICAgIGdk Yl9zdGFydAorKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKysKKysg ICAgc2V0IGVzY2FwZWRvYmpkaXJzdWJkaXIgW3N0cmluZ190b19yZWdleHAgJHtvYmpkaXJ9LyR7 c3ViZGlyfV0KKysKKysgICAgZ2RiX3Rlc3QgImZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS9zZXBk ZWJ1ZzIiICJ3YXJuaW5nOiB0aGUgZGVidWcgaW5mb3JtYXRpb24gZm91bmQgaW4gXCIke2VzY2Fw ZWRvYmpkaXJzdWJkaXJ9L1xcLmRlYnVnL3NlcGRlYnVnMlxcLmRlYnVnXCIgZG9lcyBub3QgbWF0 Y2ggXCIke2VzY2FwZWRvYmpkaXJzdWJkaXJ9L3NlcGRlYnVnMlwiIFxcKENSQyBtaXNtYXRjaFxc KVxcLi4qXFwobm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmRcXCkuKiIgIkNSQyBtaXNtYXRjaCBp cyByZXBvcnRlZCIKKyt9CisrCisrCisgIyBOVF9HTlVfQlVJTERfSUQgLyAubm90ZS5nbnUuYnVp bGQtaWQgdGVzdDoKKyAKKyBzZXQgYnVpbGRfaWRfZGVidWdfZmlsZW5hbWUgW2J1aWxkX2lkX2Rl YnVnX2ZpbGVuYW1lX2dldCAkYmluZmlsZV0KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvc2VwZGVidWcyLmMKK0BAIC0wLDAgKzEsMjIgQEAKKysvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdo dCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysg IHJldHVybiAwOworK30KKwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1z dGVwLnBhdGNoIGIvZ2RiLWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0ZXAucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzljYWMwZAotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitodHRw czovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTUzMzE3NiNjNAorCitJIGZp bmQgaXQgYSBidWcgaW4gRFdBUkYgYW5kIGdkYiBiZWhhdmVzIGNvcnJlY3RseSBhY2NvcmRpbmcg dG8gaXQuICBGcm9tIHRoZQorY3VycmVudCBEV0FSRidzIHBvaW50IG9mIHZpZXcgdGhlIGlzIGEg ZnVuY3Rpb24gY2FsbCB3aGljaCB5b3Ugc2tpcCBieSAibmV4dCIuCisKK0lmIHlvdSBoaWRlIGFu eSAvdXNyL2xpYi9kZWJ1ZyBzdWNoIGFzIHVzaW5nOgorZ2RiIC1ueCAtZXggJ3NldCBkZWJ1Zy1m aWxlLWRpcmVjdG9yeSAvcXdlJyAtZXggJ2ZpbGUgLi90cGNvbW1vbl9nZm9ydHJhbjQ0JworYW5k IHVzZSAic3RlcCIgY29tbWFuZCBpbnN0ZWFkIG9mICJuZXh0IiB0aGVyZSBpdCB3aWxsIHdvcmsu CisoWW91IG5lZWQgdG8gaGlkZSBkZWJ1Z2luZm8gZnJvbSBsaWJnb21wIGFzIHlvdSB3b3VsZCBz dGVwIGludG8gbGliZ29tcCBzb3VyY2VzCit0byBtYWludGFpbiB0aGUgdGhyZWFkcyBmb3IgZXhl Y3V0aW9uLikKKworVGhlcmUgc2hvdWxkIGJlIHNvbWUgRFdBUkYgZXh0ZW5zaW9uIGZvciBpdCwg Y3VycmVudGx5IHRyaWVkIHRvIGRldGVjdAorc3Vic3RyaW5nICIub21wX2ZuLiIgYXMgdGhpcyBm dW5jdGlvbiBpcyBjYWxsZWQgIk1BSU5fXy5vbXBfZm4uMCIgYW5kIGRvIG5vdAorY29uc2lkZXIg c3VjaCBzdWItZnVuY3Rpb24gYXMgYSBza2lwcGFibGUgYnkgIm5leHQiLgorCitBbm90aGVyIHBy b2JsZW0gaXMgdGhhdCB3aXRoICJzZXQgc2NoZWR1bGVyLWxvY2tpbmciIGJlaW5nICJvZmYiIChk ZWZhdWx0Cit1cHN0cmVhbSkgb3IgInN0ZXAiIChkZWZhdWx0IGluIEYvUkhFTCkgdGhlIHNpbXVs dGFuZW91cyBleGVjdXRpb24gb2YgdGhlCit0aHJlYWRzIGlzIGluY29udmVuaWVudC4gIFNldHRp bmcgaXQgdG8gIm9uIiB3aWxsIGxvY2t1cCB0aGUgZGVidWdnaW5nIGFzIHRoZQordGhyZWFkcyBu ZWVkIHRvIGdldCBzeW5jaHJvbml6ZWQgYXQgc29tZSBwb2ludC4gIFRoaXMgaXMgYSBtb3JlIGdl bmVyYWwKK2RlYnVnZ2luZyBwcm9ibGVtIG9mIEdPTVAgb3V0c2lkZSBvZiB0aGUgc2NvcGUgb2Yg dGhpcyBCdWcuCisKKworCistLS0gLi9nZGIvaW5mcnVuLmMJMjAwOS0xMi0wOSAyMjowMzozMy4w MDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9pbmZydW4uYwkyMDA5LTEyLTA5IDIyOjI5OjU2LjAw MDAwMDAwMCArMDEwMAorQEAgLTM5OTQsNiArMzk5NCwxMiBAQCBpbmZydW46IG5vdCBzd2l0Y2hp bmcgYmFjayB0byBzdGVwcGVkIHRoCisgCisgICAgICAgaWYgKGVjcy0+ZXZlbnRfdGhyZWFkLT5z dGVwX292ZXJfY2FsbHMgPT0gU1RFUF9PVkVSX0FMTCkKKyAJeworKwkgIHN0cnVjdCBzeW1ib2wg KnN0b3BfZm4gPSBmaW5kX3BjX2Z1bmN0aW9uIChzdG9wX3BjKTsKKysKKysJICBpZiAoc3RvcF9m biA9PSBOVUxMCisrCSAgICAgIHx8IHN0cnN0ciAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3RvcF9m biksICIub21wX2ZuLiIpID09IE5VTEwpCisrewkvKiAiLm9tcF9mbi4iICovCisrCisgCSAgLyog V2UncmUgZG9pbmcgYSAibmV4dCIuCisgCisgCSAgICAgTm9ybWFsIChmb3J3YXJkKSBleGVjdXRp b246IHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlCitAQCAtNDAyMCw2ICs0MDI2LDcgQEAgaW5mcnVu OiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAorIAorIAkgIGtlZXBfZ29pbmcgKGVj cyk7CisgCSAgcmV0dXJuOworK30JLyogIi5vbXBfZm4uIiAqLworIAl9CisgCisgICAgICAgLyog SWYgd2UgYXJlIGluIGEgZnVuY3Rpb24gY2FsbCB0cmFtcG9saW5lIChhIHN0dWIgYmV0d2VlbiB0 aGUKKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTE5NzAtMDEt MDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL29tcC1zdGVwLmV4cAkyMDA5LTEyLTA5IDIyOjMxOjA0LjAwMDAwMDAwMCArMDEwMAorQEAg LTAsMCArMSwzMSBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3NldCB0ZXN0Zmls ZSAib21wLXN0ZXAiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisraWYgeyBbcHJlcGFy ZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjc3 IGFkZGl0aW9uYWxfZmxhZ3M9LWZvcGVubXB9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKwor K2lmICFbcnVudG8gW2dkYl9nZXRfbGluZV9udW1iZXIgInN0YXJ0LWhlcmUiXV0geworKyAgICBw ZXJyb3IgIkNvdWxkbid0IHJ1biB0byBzdGFydC1oZXJlIgorKyAgICByZXR1cm4gMAorK30KKysK KytnZGJfdGVzdCAibmV4dCIgeyFcJG9tcCBwYXJhbGxlbH0gInN0ZXAgY2xvc2VyIgorK2dkYl90 ZXN0ICJuZXh0IiB7YVwob21wX2dldF90aHJlYWRfbnVtXChcKSBcKyAxXCkgPSAxfSAic3RlcCBp bnRvIG9tcCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAic3VjY2Vz cyJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN1Y2Nlc3MiICIuKnN1Y2Nlc3MuKiIK Ky0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZjkwCTE5NzAtMDEtMDEg MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L29tcC1zdGVwLmY5MAkyMDA5LTEyLTA5IDIyOjI1OjM1LjAwMDAwMDAwMCArMDEwMAorQEAgLTAs MCArMSwzMiBAQAorKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyAgICAgIHVzZSBvbXBf bGliCisrICAgICAgaW50ZWdlciBudGhyZWFkcywgaSwgYSgxMDAwKQorKyAgICAgIG50aHJlYWRz ID0gb21wX2dldF9udW1fdGhyZWFkcygpCisrICAgICAgaWYgKG50aHJlYWRzIC5ndC4gMTAwMCkg Y2FsbCBhYm9ydAorKworKyAgICAgIGRvIGkgPSAxLCBudGhyZWFkcworKyAgICAgICAgICBhKGkp ID0gMAorKyAgICAgIGVuZCBkbworKyAgICAgIHByaW50ICosICJzdGFydC1oZXJlIgorKyEkb21w IHBhcmFsbGVsCisrICAgICAgYShvbXBfZ2V0X3RocmVhZF9udW0oKSArIDEpID0gMQorKyEkb21w IGVuZCBwYXJhbGxlbAorKyAgICAgIGRvIGkgPSAxLCBudGhyZWFkcworKyAgICAgICAgICBpZiAo YShpKSAubmUuIDEpIGNhbGwgYWJvcnQKKysgICAgICBlbmQgZG8KKysgICAgICBwcmludCAqLCAi c3VjY2VzcyIKKysgICAgICBlbmQKCmRpZmYgLS1naXQgYS9nZGItYno1Mzg2MjYtYnBfbG9jYXRp b24tYWNjZWwtYnAtY29uZC5wYXRjaCBiL2dkYi1iejUzODYyNi1icF9sb2NhdGlvbi1hY2NlbC1i cC1jb25kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1M2JmM2MK LS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno1Mzg2MjYtYnBfbG9jYXRpb24tYWNjZWwtYnAtY29u ZC5wYXRjaApAQCAtMCwwICsxLDMxNyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMDktMTIvbXNnMDAxODAuaHRtbAorU3ViamVjdDogW3BhdGNoXSBGaXggYSByZWdy ZXNzaW9uIGJ5IG1lIG9uIGJyZWFrcG9pbnQtY29uZC1pbmZjYWxsCisKK0hpLAorCitHREIgaGFz IG5vdyBhIHJlZ3Jlc3Npb24gc2luY2U6CisJUmU6IFtwYXRjaF0gUGVyZm9ybWFuY2Ugb3B0aW1p emUgbGFyZ2UgYnBfbG9jYXRpb24gY291bnQKKwlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAwOS0xMC9tc2cwMDYzMi5odG1sCisJPQorCTIwMDktMTAtMjUgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwlQZXJmb3JtYW5jZSBvcHRpbWl6 ZSBsYXJnZSBicF9sb2NhdGlvbiBjb3VudC4KKworb24gYnJlYWtwb2ludHMgd2l0aCBjb25kaXRp b25zIGNhbGxpbmcgaW5mZXJpb3IuCisKK0JyaW5naW5nIHRoZSBjb2RlIGJhY2sgdG8gdGhlIHN0 YXRlIGJlZm9yZSBteSBhY2NlbGVyYXRpb24gcGF0Y2guCisKK1RoZSBjb2RlIGJlZm9yZSBhbHJl YWR5IGFzc3VtZWQgbm8gYnJlYWtwb2ludHMgb3IgdGhlaXIgYnBfbG9jYXRpb25zIGNhbgorY2hh bmdlIGFjcm9zcyB0aGUgaW5mZXJpb3IgY2FsbCB3aGljaCBzaG91bGQgYmUgdHJ1ZSAtIHRyeWlu ZyB0byBkbyBzb21lOgorCWJyZWFrIGEgaWYgYigpCisJYnJlYWsgYgorCWNvbW1hbmQgMQorCWRl bGV0ZSAyCisJZW5kCitvciBzaW1pbGFyIGNhbm5vdCB3b3JrIGFzIGluc2lkZSAiaWYgYigpIiBl dmFsdWF0aW9uIG5vIGJyZWFrcG9pbnRzIGNhbiBiZQorYWRkZWQgb3IgcmVtb3ZlZC4KKwordXBk YXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IGFsc28gZG9lcyBub3QgcmVtb3ZlZC9hZGQgYHN0cnVj dCBicF9sb2NhdGlvbidzCit0aGVtc2VsdmVzIGJ1dCBvbmx5IHBvaW50ZXJzIHRvIHRoZW0gaW4g dGhlIGJwX2xvY2F0aW9uIGFycmF5LiAgQXMgdGhlIG5ldworaXRlcmF0aW9uIG5vIGxvbmdlciB1 c2VzIHRoZSBicF9sb2NhdGlvbiBhcnJheSBpdCBpcyBubyBsb25nZXIgYSBwcm9ibGVtLgorCitP cmlnaW5hbCBwcm9ibGVtIHdhcyBmb3VuZCBieSBhbmQgZml4ZWQgZGlmZmVyZW50bHkgYnkgUGhp bCBNdWxkb29uLgorCitObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0t ZmVkb3JhMTItbGludXgtZ251LgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMDktMTIt MTMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogYnJl YWtwb2ludC5jIChicHN0YXRfc3RvcF9zdGF0dXMpOiBJdGVyYXRlIHVzaW5nIEFMTF9CUkVBS1BP SU5UUyBhbmQKKwl0aGUgQi0+TE9DIGxpc3QuICBSZW1vdmUgZ2RiX2Fzc2VydCBvbiBCLiAgQ2hh bmdlIGJwX2hhcmR3YXJlX3dhdGNocG9pbnQKKwljb250aW51ZSB0byBicmVhay4gIFJlbW92ZSB2 YXJpYWJsZSB1cGRhdGVfbG9jYXRpb25zLiAgUmVtb3ZlIEhJVF9DT1VOVAorCWluY3JlbWVudCBw cm90ZWN0aW9uIGJ5IGFuIEVOQUJMRV9TVEFURSBjaGVjay4gIElubGluZSB0aGUgZGVsYXllZAor CXVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCBjYWxsLgorCitnZGIvdGVzdHN1aXRlLworMjAw OS0xMi0xMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCSAg ICBQaGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgorCisJKiBnZGIuYmFzZS9jb25k YnJlYWsuZXhwOiBQdXQgYnJlYWtwb2ludCBvbiBtYXJrZXIzIGFuZCBtYXJrZXI0LgorCShicF9s b2NhdGlvbjEzLCBicF9sb2NhdGlvbjE0LCBicF9sb2NhdGlvbjE3LCBicF9sb2NhdGlvbjE4KQor CShtYXJrZXIzX3Byb3RvLCBtYXJrZXI0X3Byb3RvKTogTmV3IHZhcmlhYmxlcy4KKwkoYnJlYWtw b2ludCBpbmZvKTogVXBkYXRlIG91dHB1dC4KKwkocnVuIHVudGlsIGJyZWFrcG9pbnQgYXQgbWFy a2VyMywgcnVuIHVudGlsIGJyZWFrcG9pbnQgYXQgbWFya2VyNCk6IE5ldworCXRlc3RzLgorCitb IEJhY2twb3J0ZWQgZm9yIEYtMTIuICBdCisKKy0tLSAuL2dkYi9icmVha3BvaW50LmMJMjAwOS0x Mi0xNCAwMDoyNTo1NS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9icmVha3BvaW50LmMJMjAw OS0xMi0xNCAwMDozMjozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMjk4LDkzICszMjk4LDkzIEBA IGJwc3RhdF9zdG9wX3N0YXR1cyAoQ09SRV9BRERSIGJwX2FkZHIsIHAKKyAgIC8qIFBvaW50ZXIg dG8gdGhlIGxhc3QgdGhpbmcgaW4gdGhlIGNoYWluIGN1cnJlbnRseS4gICovCisgICBicHN0YXQg YnMgPSByb290X2JzOworICAgaW50IGl4OworLSAgaW50IG5lZWRfcmVtb3ZlX2luc2VydCwgdXBk YXRlX2xvY2F0aW9ucyA9IDA7CisrICBpbnQgbmVlZF9yZW1vdmVfaW5zZXJ0OworIAorLSAgQUxM X0JQX0xPQ0FUSU9OUyAoYmwsIGJscF90bXApCistICB7CistICAgIGJwc3RhdCBic19wcmV2ID0g YnM7CisrICAvKiBBTExfQlBfTE9DQVRJT05TIGl0ZXJhdGlvbiB3b3VsZCBicmVhayBhY3Jvc3MK KysgICAgIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCBwb3NzaWJseSBleGVjdXRlZCBieQor KyAgICAgYnBzdGF0X2NoZWNrX2JyZWFrcG9pbnRfY29uZGl0aW9ucydzIGluZmVyaW9yIGNhbGwu ICAqLworIAorLSAgICBiID0gYmwtPm93bmVyOworLSAgICBnZGJfYXNzZXJ0IChiKTsKKy0gICAg aWYgKCFicmVha3BvaW50X2VuYWJsZWQgKGIpICYmIGItPmVuYWJsZV9zdGF0ZSAhPSBicF9wZXJt YW5lbnQpCistICAgICAgY29udGludWU7CistCistICAgIC8qIEZvciBoYXJkd2FyZSB3YXRjaHBv aW50cywgd2UgbG9vayBvbmx5IGF0IHRoZSBmaXJzdCBsb2NhdGlvbi4KKy0gICAgICAgVGhlIHdh dGNocG9pbnRfY2hlY2sgZnVuY3Rpb24gd2lsbCB3b3JrIG9uIGVudGlyZSBleHByZXNzaW9uLAor LSAgICAgICBub3QgdGhlIGluZGl2aWR1YWwgbG9jYXRpb25zLiAgRm9yIHJlYWQgd2F0Y2hvcGlu dHMsIHRoZQorLSAgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgZnVuY3Rpb24gaGF2ZSBjaGVj a2VkIGFsbCBsb2NhdGlvbnMKKy0gICAgICAgYWxyZWEKKy0gICAgICovCistICAgIGlmIChiLT50 eXBlID09IGJwX2hhcmR3YXJlX3dhdGNocG9pbnQgJiYgYmwgIT0gYi0+bG9jKQorLSAgICAgIGNv bnRpbnVlOworLQorLSAgICBpZiAoIWJwc3RhdF9jaGVja19sb2NhdGlvbiAoYmwsIGJwX2FkZHIp KQorLSAgICAgIGNvbnRpbnVlOworLQorLSAgICAvKiBDb21lIGhlcmUgaWYgaXQncyBhIHdhdGNo cG9pbnQsIG9yIGlmIHRoZSBicmVhayBhZGRyZXNzIG1hdGNoZXMgKi8KKy0KKy0gICAgYnMgPSBi cHN0YXRfYWxsb2MgKGJsLCBicyk7CS8qIEFsbG9jIGEgYnBzdGF0IHRvIGV4cGxhaW4gc3RvcCAq LworLSAgICBnZGJfYXNzZXJ0IChic19wcmV2LT5uZXh0ID09IGJzKTsKKy0KKy0gICAgLyogQXNz dW1lIHdlIHN0b3AuICBTaG91bGQgd2UgZmluZCB3YXRjaHBvaW50IHRoYXQgaXMgbm90IGFjdHVh bGx5CistICAgICAgIHRyaWdnZXJlZCwgb3IgaWYgY29uZGl0aW9uIG9mIGJyZWFrcG9pbnQgaXMg ZmFsc2UsIHdlJ2xsIHJlc2V0CistICAgICAgICdzdG9wJyB0byAwLiAgKi8KKy0gICAgYnMtPnN0 b3AgPSAxOworLSAgICBicy0+cHJpbnQgPSAxOworKyAgQUxMX0JSRUFLUE9JTlRTIChiKQorKyAg ICB7CisrICAgICAgaWYgKCFicmVha3BvaW50X2VuYWJsZWQgKGIpICYmIGItPmVuYWJsZV9zdGF0 ZSAhPSBicF9wZXJtYW5lbnQpCisrCWNvbnRpbnVlOworIAorLSAgICBpZiAoIWJwc3RhdF9jaGVj a193YXRjaHBvaW50IChicykpCistICAgICAgeworLQkvKiBFbnN1cmUgYnBzdGF0X2V4cGxhaW5z X3NpZ25hbCBzdGF5cyBmYWxzZSBpZiB0aGlzIEJMIGNvdWxkIG5vdCBiZQorLQkgICB0aGUgY2F1 c2Ugb2YgdGhpcyB0cmFwLiAgKi8KKysgICAgICBmb3IgKGJsID0gYi0+bG9jOyBibCAhPSBOVUxM OyBibCA9IGJsLT5uZXh0KQorKwl7CisrCSAgYnBzdGF0IGJzX3ByZXYgPSBiczsKKysKKysJICAv KiBGb3IgaGFyZHdhcmUgd2F0Y2hwb2ludHMsIHdlIGxvb2sgb25seSBhdCB0aGUgZmlyc3QgbG9j YXRpb24uCisrCSAgICAgVGhlIHdhdGNocG9pbnRfY2hlY2sgZnVuY3Rpb24gd2lsbCB3b3JrIG9u IGVudGlyZSBleHByZXNzaW9uLAorKwkgICAgIG5vdCB0aGUgaW5kaXZpZHVhbCBsb2NhdGlvbnMu ICBGb3IgcmVhZCB3YXRjaG9waW50cywgdGhlCisrCSAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVk IGZ1bmN0aW9uIGhhdmUgY2hlY2tlZCBhbGwgbG9jYXRpb25zCisrCSAgICAgYWxyZWEKKysJICAg Ki8KKysJICBpZiAoYi0+dHlwZSA9PSBicF9oYXJkd2FyZV93YXRjaHBvaW50ICYmIGJsICE9IGIt PmxvYykKKysJICAgIGJyZWFrOworIAorLQlnZGJfYXNzZXJ0IChicy0+cHJpbnRfaXQgPT0gcHJp bnRfaXRfbm9vcCk7CistCWdkYl9hc3NlcnQgKCFicy0+c3RvcCk7CistCXhmcmVlIChicyk7Cist CWJzID0gYnNfcHJldjsKKy0JYnMtPm5leHQgPSBOVUxMOworLQljb250aW51ZTsKKy0gICAgICB9 CisrCSAgaWYgKCFicHN0YXRfY2hlY2tfbG9jYXRpb24gKGJsLCBicF9hZGRyKSkKKysJICAgIGNv bnRpbnVlOworIAorLSAgICBpZiAoYi0+dHlwZSA9PSBicF90aHJlYWRfZXZlbnQgfHwgYi0+dHlw ZSA9PSBicF9vdmVybGF5X2V2ZW50CistCXx8IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIg fHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFzdGVyKQorLSAgICAgIC8qIFdlIGRvIG5vdCBz dG9wIGZvciB0aGVzZS4gICovCistICAgICAgYnMtPnN0b3AgPSAwOworLSAgICBlbHNlCistICAg ICAgYnBzdGF0X2NoZWNrX2JyZWFrcG9pbnRfY29uZGl0aW9ucyAoYnMsIHB0aWQpOworLSAgCist ICAgIGlmIChicy0+c3RvcCkKKy0gICAgICB7CistCWlmIChiLT5lbmFibGVfc3RhdGUgIT0gYnBf ZGlzYWJsZWQpCistCSAgKysoYi0+aGl0X2NvdW50KTsKKysJICAvKiBDb21lIGhlcmUgaWYgaXQn cyBhIHdhdGNocG9pbnQsIG9yIGlmIHRoZSBicmVhayBhZGRyZXNzIG1hdGNoZXMgKi8KKyAKKy0J LyogV2Ugd2lsbCBzdG9wIGhlcmUgKi8KKy0JaWYgKGItPmRpc3Bvc2l0aW9uID09IGRpc3BfZGlz YWJsZSkKKy0JICB7CistCSAgICBpZiAoYi0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1hbmVudCkK Ky0JICAgICAgYi0+ZW5hYmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7CistCSAgICB1cGRhdGVfbG9j YXRpb25zID0gMTsKKy0JICB9CistCWlmIChiLT5zaWxlbnQpCistCSAgYnMtPnByaW50ID0gMDsK Ky0JYnMtPmNvbW1hbmRzID0gYi0+Y29tbWFuZHM7CistCWlmIChicy0+Y29tbWFuZHMKKy0JICAg ICYmIChzdHJjbXAgKCJzaWxlbnQiLCBicy0+Y29tbWFuZHMtPmxpbmUpID09IDAKKy0JCXx8ICh4 ZGJfY29tbWFuZHMgJiYgc3RyY21wICgiUSIsIGJzLT5jb21tYW5kcy0+bGluZSkgPT0gMCkpKQor LQkgIHsKKy0JICAgIGJzLT5jb21tYW5kcyA9IGJzLT5jb21tYW5kcy0+bmV4dDsKKy0JICAgIGJz LT5wcmludCA9IDA7CistCSAgfQorLQlicy0+Y29tbWFuZHMgPSBjb3B5X2NvbW1hbmRfbGluZXMg KGJzLT5jb21tYW5kcyk7CistICAgICAgfQorKwkgIGJzID0gYnBzdGF0X2FsbG9jIChibCwgYnMp OwkvKiBBbGxvYyBhIGJwc3RhdCB0byBleHBsYWluIHN0b3AgKi8KKysJICBnZGJfYXNzZXJ0IChi c19wcmV2LT5uZXh0ID09IGJzKTsKKyAKKy0gICAgLyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBl bnRyeSBpZiB3ZSBkb250IHN0b3Agb3IgaWYgd2UgZG9udCBwcmludC4gICovCistICAgIGlmIChi cy0+c3RvcCA9PSAwIHx8IGJzLT5wcmludCA9PSAwKQorLSAgICAgIGJzLT5wcmludF9pdCA9IHBy aW50X2l0X25vb3A7CistICB9CisrCSAgLyogQXNzdW1lIHdlIHN0b3AuICBTaG91bGQgd2UgZmlu ZCB3YXRjaHBvaW50IHRoYXQgaXMgbm90IGFjdHVhbGx5CisrCSAgICAgdHJpZ2dlcmVkLCBvciBp ZiBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBpcyBmYWxzZSwgd2UnbGwgcmVzZXQKKysJICAgICAn c3RvcCcgdG8gMC4gICovCisrCSAgYnMtPnN0b3AgPSAxOworKwkgIGJzLT5wcmludCA9IDE7Cisg CistICAvKiBEZWxheSB0aGlzIGNhbGwgd2hpY2ggd291bGQgYnJlYWsgdGhlIEFMTF9CUF9MT0NB VElPTlMgaXRlcmF0aW9uIGFib3ZlLiAgKi8KKy0gIGlmICh1cGRhdGVfbG9jYXRpb25zKQorLSAg ICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDApOworKwkgIGlmICghYnBzdGF0X2NoZWNr X3dhdGNocG9pbnQgKGJzKSkKKysJICAgIHsKKysJICAgICAgLyogRW5zdXJlIGJwc3RhdF9leHBs YWluc19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKKysJCSB0aGUg Y2F1c2Ugb2YgdGhpcyB0cmFwLiAgKi8KKysKKysJICAgICAgZ2RiX2Fzc2VydCAoYnMtPnByaW50 X2l0ID09IHByaW50X2l0X25vb3ApOworKwkgICAgICBnZGJfYXNzZXJ0ICghYnMtPnN0b3ApOwor KwkgICAgICB4ZnJlZSAoYnMpOworKwkgICAgICBicyA9IGJzX3ByZXY7CisrCSAgICAgIGJzLT5u ZXh0ID0gTlVMTDsKKysJICAgICAgY29udGludWU7CisrCSAgICB9CisrCisrCSAgaWYgKGItPnR5 cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAorKwkg ICAgICB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBfZXhj ZXB0aW9uX21hc3RlcikKKysJICAgIC8qIFdlIGRvIG5vdCBzdG9wIGZvciB0aGVzZS4gICovCisr CSAgICBicy0+c3RvcCA9IDA7CisrCSAgZWxzZQorKwkgICAgYnBzdGF0X2NoZWNrX2JyZWFrcG9p bnRfY29uZGl0aW9ucyAoYnMsIHB0aWQpOworKwkKKysJICBpZiAoYnMtPnN0b3ApCisrCSAgICB7 CisrCSAgICAgICsrKGItPmhpdF9jb3VudCk7CisrCisrCSAgICAgIC8qIFdlIHdpbGwgc3RvcCBo ZXJlICovCisrCSAgICAgIGlmIChiLT5kaXNwb3NpdGlvbiA9PSBkaXNwX2Rpc2FibGUpCisrCQl7 CisrCQkgIGlmIChiLT5lbmFibGVfc3RhdGUgIT0gYnBfcGVybWFuZW50KQorKwkJICAgIGItPmVu YWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOworKwkJICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xp c3QgKDApOworKwkJfQorKwkgICAgICBpZiAoYi0+c2lsZW50KQorKwkJYnMtPnByaW50ID0gMDsK KysJICAgICAgYnMtPmNvbW1hbmRzID0gYi0+Y29tbWFuZHM7CisrCSAgICAgIGlmIChicy0+Y29t bWFuZHMKKysJCSAgJiYgKHN0cmNtcCAoInNpbGVudCIsIGJzLT5jb21tYW5kcy0+bGluZSkgPT0g MAorKwkJICAgICAgfHwgKHhkYl9jb21tYW5kcyAmJiBzdHJjbXAgKCJRIiwgYnMtPmNvbW1hbmRz LT5saW5lKSA9PSAwKSkpCisrCQl7CisrCQkgIGJzLT5jb21tYW5kcyA9IGJzLT5jb21tYW5kcy0+ bmV4dDsKKysJCSAgYnMtPnByaW50ID0gMDsKKysJCX0KKysJICAgICAgYnMtPmNvbW1hbmRzID0g Y29weV9jb21tYW5kX2xpbmVzIChicy0+Y29tbWFuZHMpOworKwkgICAgfQorKworKwkgIC8qIFBy aW50IG5vdGhpbmcgZm9yIHRoaXMgZW50cnkgaWYgd2UgZG9udCBzdG9wIG9yIGlmIHdlIGRvbnQg cHJpbnQuICAqLworKwkgIGlmIChicy0+c3RvcCA9PSAwIHx8IGJzLT5wcmludCA9PSAwKQorKwkg ICAgYnMtPnByaW50X2l0ID0gcHJpbnRfaXRfbm9vcDsKKysJfQorKyAgICB9CisgCisgICBmb3Ig KGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGJwX2xvY2F0aW9uX3AsIG1vcmlidW5kX2xvY2F0aW9ucywg aXgsIGxvYyk7ICsraXgpCisgICAgIHsKKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29u ZGJyZWFrLmV4cAkyMDA5LTAxLTAzIDA2OjU4OjAzLjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb25kYnJlYWsuZXhwCTIwMDktMTItMTQgMDA6Mjc6MjEuMDAw MDAwMDAwICswMTAwCitAQCAtNjgsOCArNjgsMTIgQEAgc2V0IGJwX2xvY2F0aW9uMSAgW2dkYl9n ZXRfbGluZV9udW1iZXIgIgorIHNldCBicF9sb2NhdGlvbjYgIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJzZXQgYnJlYWtwb2ludCA2IGhlcmUiXQorIHNldCBicF9sb2NhdGlvbjggIFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCA4IGhlcmUiICRzcmNmaWxlMV0KKyBzZXQgYnBfbG9j YXRpb245ICBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgOSBoZXJlIiAkc3Jj ZmlsZTFdCisrc2V0IGJwX2xvY2F0aW9uMTMgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVh a3BvaW50IDEzIGhlcmUiICRzcmNmaWxlMV0KKytzZXQgYnBfbG9jYXRpb24xNCBbZ2RiX2dldF9s aW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTQgaGVyZSIgJHNyY2ZpbGUxXQorIHNldCBicF9s b2NhdGlvbjE1IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAxNSBoZXJlIiAk c3JjZmlsZTFdCisgc2V0IGJwX2xvY2F0aW9uMTYgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBi cmVha3BvaW50IDE2IGhlcmUiICRzcmNmaWxlMV0KKytzZXQgYnBfbG9jYXRpb24xNyBbZ2RiX2dl dF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTcgaGVyZSIgJHNyY2ZpbGUxXQorK3NldCBi cF9sb2NhdGlvbjE4IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAxOCBoZXJl IiAkc3JjZmlsZTFdCisgCisgIworICMgdGVzdCBicmVhayBhdCBmdW5jdGlvbgorQEAgLTExMCwx NSArMTE0LDI5IEBAIGdkYl90ZXN0ICJicmVhayBtYXJrZXIyIGlmIChhPT00MykiIFwKKyAgICAg IkJyZWFrcG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxlMSwgbGluZS4qIgorIAorICMKKysjIENo ZWNrIGJyZWFrIGludm9sdmluZyBpbmZlcmlvciBmdW5jdGlvbiBjYWxsLgorKyMgRW5zdXJlIHRo ZXJlIGlzIGF0IGxlYXN0IG9uZSBhZGRpdGlvbmFsIGJyZWFrcG9pbnQgd2l0aCBoaWdoZXIgVk1B LgorKyMKKytnZGJfdGVzdCAiYnJlYWsgbWFya2VyMyBpZiAobXVsdGlfbGluZV9pZl9jb25kaXRp b25hbCgxLDEsMSk9PTApIiBcCisrICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmls ZTEsIGxpbmUuKiIKKytnZGJfdGVzdCAiYnJlYWsgbWFya2VyNCIgXAorKyAgICAiQnJlYWtwb2lu dC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUxLCBsaW5lLioiCisrCisrIworICMgY2hlY2sgdG8gc2Vl IHdoYXQgYnJlYWtwb2ludHMgYXJlIHNldAorICMKKyAKKyBpZiB7JGhwX2FDQ19jb21waWxlcn0g eworICAgICBzZXQgbWFya2VyMV9wcm90byAiXFwodm9pZFxcKSIKKyAgICAgc2V0IG1hcmtlcjJf cHJvdG8gIlxcKGludFxcKSIKKysgICAgIyBOb3QgY2hlY2tlZC4KKysgICAgc2V0IG1hcmtlcjNf cHJvdG8gIlxcKGNoYXIgXFwqLCBjaGFyIFxcKlxcKSIKKysgICAgc2V0IG1hcmtlcjRfcHJvdG8g IlxcKGxvbmdcXCkiCisgfSBlbHNlIHsKKyAgICAgc2V0IG1hcmtlcjFfcHJvdG8gIiIKKyAgICAg c2V0IG1hcmtlcjJfcHJvdG8gIiIKKysgICAgc2V0IG1hcmtlcjNfcHJvdG8gIiIKKysgICAgc2V0 IG1hcmtlcjRfcHJvdG8gIiIKKyB9CisgCisgZ2RiX3Rlc3QgImluZm8gYnJlYWsiIFwKK0BAIC0x MjksNyArMTQ3LDEwIEBAIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCisgXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1haW4gYXQgLiokc3JjZmlsZTokYnBfbG9jYXRp b24xLioKKyBcW1x0IFxdK3N0b3Agb25seSBpZiBcXCgxPT0xXFwpLioKKyBcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5LiogaW4gbWFya2VyMiRtYXJrZXIyX3Byb3RvIGF0IC4q JHNyY2ZpbGUxOigkYnBfbG9jYXRpb244fCRicF9sb2NhdGlvbjkpLioKKy1cW1x0IFxdK3N0b3Ag b25seSBpZiBcXChhPT00M1xcKS4qIiBcCisrXFtcdCBcXStzdG9wIG9ubHkgaWYgXFwoYT09NDNc XCkuKgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHkuKiBpbiBtYXJrZXIz JG1hcmtlcjNfcHJvdG8gYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjE3fCRicF9sb2NhdGlv bjE4KS4qCisrXFtcdCBcXStzdG9wIG9ubHkgaWYgXFwobXVsdGlfbGluZV9pZl9jb25kaXRpb25h bFxcKDEsMSwxXFwpPT0wXFwpLioKKytcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2Vl cCB5LiogaW4gbWFya2VyNCRtYXJrZXI0X3Byb3RvIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRp b24xM3wkYnBfbG9jYXRpb24xNCkuKiIgXAorICAgICAiYnJlYWtwb2ludCBpbmZvIgorIAorIAor QEAgLTIyMCwzICsyNDEsMjMgQEAgZ2RiX2V4cGVjdCB7CisgCWZhaWwgIih0aW1lb3V0KSBydW4g dW50aWwgYnJlYWtwb2ludCBhdCBtYXJrZXIyIgorICAgICB9CisgfQorKworK3NldCB0ZXN0ICJy dW4gdW50aWwgYnJlYWtwb2ludCBhdCBtYXJrZXIzIgorK2dkYl90ZXN0X211bHRpcGxlICJjb250 aW51ZSIgJHRlc3QgeworKyAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFrcG9pbnQgXFswLTlc XSssIG1hcmtlcjMgXFwoYT0kaGV4IFwic3RhY2tcIiwgYj0kaGV4IFwidHJhY2VcIlxcKSBhdCAu KiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uMTd8JGJwX2xvY2F0aW9uMTgpLiooJGJwX2xvY2F0aW9u MTd8JGJwX2xvY2F0aW9uMTgpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVz dAorKyAgICB9CisrICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywg JGhleCBpbiBtYXJrZXIzIFxcKGE9JGhleCBcInN0YWNrXCIsIGI9JGhleCBcInRyYWNlXCJcXCkg YXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjE3fCRicF9sb2NhdGlvbjE4KS4qKCRicF9sb2Nh dGlvbjE3fCRicF9sb2NhdGlvbjE4KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAkIiB7CisrCXhmYWls ICR0ZXN0CisrICAgIH0KKyt9CisrCisrc2V0IHRlc3QgInJ1biB1bnRpbCBicmVha3BvaW50IGF0 IG1hcmtlcjQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkdGVzdCB7CisrICAgIC1y ZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyNCBcXChkPTE3NzYw MTk3NlxcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpLioo JGJwX2xvY2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsK KysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2lu dCBcWzAtOVxdKywgJGhleCBpbiBtYXJrZXI0IFxcKGQ9MTc3NjAxOTc2XFwpIGF0IC4qJHNyY2Zp bGUxOigkYnBfbG9jYXRpb24xM3wkYnBfbG9jYXRpb24xNCkuKigkYnBfbG9jYXRpb24xM3wkYnBf bG9jYXRpb24xNClcW1x0IFxdKy4qJGdkYl9wcm9tcHQgJCIgeworKwl4ZmFpbCAkdGVzdAorKyAg ICB9CisrfQoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2ggYi9nZGIt Yno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjJmMWI4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBh dGNoCkBAIC0wLDAgKzEsNTExIEBACitnZGIvCisyMDA5LTExLTI0ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlUcmFuc3BhcmVudCBHTlUtSUZVTkNzIHN1 cHBvcnQuCisJKiBlbGZyZWFkLmMgKHJlY29yZF9taW5pbWFsX3N5bWJvbCk6IEFwcGx5IGFsc28g Zm9yIG1zdF90ZXh0X2dudV9pZnVuYy4KKwkoZWxmX3N5bXRhYl9yZWFkKTogU2V0IGFsc28gbXN0 X3RleHRfZ251X2lmdW5jLgorCSogZ2RidHlwZXMuYyAoaW5pdF90eXBlKTogU3VwcG9ydCBUWVBF X0ZMQUdfR05VX0lGVU5DLgorCShnZGJ0eXBlc19wb3N0X2luaXQpOiBJbml0aWFsaXplIGJ1aWx0 aW5fZnVuY19mdW5jX3B0ci4KKwkob2JqZmlsZV90eXBlKTogSW5pdGlhbGl6ZSBub2RlYnVnX3Rl eHRfZ251X2lmdW5jX3N5bWJvbC4KKwkqIGdkYnR5cGVzLmggKGVudW0gdHlwZV9mbGFnX3ZhbHVl IDxUWVBFX0ZMQUdfR05VX0lGVU5DPikKKwkoVFlQRV9HTlVfSUZVTkMsIHN0cnVjdCBtYWluX3R5 cGUgPGZsYWdfZ251X2lmdW5jPikKKwkoc3RydWN0IGJ1aWx0aW5fdHlwZSA8YnVpbHRpbl9mdW5j X2Z1bmNfcHRyPikKKwkoc3RydWN0IG9iamZpbGVfdHlwZSA8bm9kZWJ1Z190ZXh0X2dudV9pZnVu Y19zeW1ib2w+KTogTmV3LgorCSogaW5mY2FsbC5jIChmaW5kX2Z1bmN0aW9uX2FkZHIgPFRZUEVf R05VX0lGVU5DIChmdHlwZSk+KTogTmV3LgorCSogbWluc3ltcy5jIChsb29rdXBfbWluaW1hbF9z eW1ib2xfdGV4dCwgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wpCisJKGZpbmRfc29saWJfdHJh bXBvbGluZV90YXJnZXQpOiBTdXBwb3J0IGFsc28gbXN0X3RleHRfZ251X2lmdW5jLgorCShpbl9n bnVfaWZ1bmNfc3R1Yik6IE5ldy4KKwkqIHBhcnNlLmMgKHdyaXRlX2V4cF9tc3ltYm9sIDxtc3Rf dGV4dF9nbnVfaWZ1bmM+KTogTmV3LgorCSogc29saWItc3ZyNC5jIChzdnI0X2luX2R5bnN5bV9y ZXNvbHZlX2NvZGUpOiBDYWxsIGFsc28KKwlpbl9nbnVfaWZ1bmNfc3R1Yi4KKwkqIHN5bW1pc2Mu YyAoZHVtcF9tc3ltYm9scyA8bXN0X3RleHRfZ251X2lmdW5jPik6IE5ldy4KKwkqIHN5bXRhYi5j IChzZWFyY2hfc3ltYm9scyk6IFN1cHBvcnQgYWxzbyBtc3RfdGV4dF9nbnVfaWZ1bmMuCisJKiBz eW10YWIuaCAoZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIDxtc3RfdGV4dF9nbnVfaWZ1bmM+KQor CShpbl9nbnVfaWZ1bmNfc3R1Yik6IE5ldy4KKwkqIGxpbmVzcGVjLmM6IEluY2x1ZGUgaW5mY2Fs bC5oLgorCShtaW5zeW1fZm91bmQgPE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRf Z251X2lmdW5jPik6IE5ldy4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMDktMTEtMjQgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCVRyYW5zcGFyZW50IEdOVS1J RlVOQ3Mgc3VwcG9ydC4KKwkqIGdkYi5iYXNlL2dudS1pZnVuYy1saWIuYywgZ2RiLmJhc2UvZ251 LWlmdW5jLmMsCisJZ2RiLmJhc2UvZ251LWlmdW5jLmV4cDogTmV3LgorCitJbmRleDogZ2RiLTcu MC9nZGIvZWxmcmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmlnL2dkYi9lbGZyZWFk LmMJMjAwOS0xMS0yNSAxMDoyNDo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wL2dkYi9l bGZyZWFkLmMJMjAwOS0xMS0yNSAxMDoyNTo1MC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjgsNyAr MTY4LDggQEAgcmVjb3JkX21pbmltYWxfc3ltYm9sIChjaGFyICpuYW1lLCBDT1JFXworIHsKKyAg IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Cisg CistICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQp CisrICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQK KysgICAgICB8fCBtc190eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKKyAgICAgYWRkcmVzcyA9 IGdkYmFyY2hfc21hc2hfdGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKKyAKKyAgIHJl dHVybiBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9hbmRfaW5mbworQEAgLTM3Myw3ICszNzQs MTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorIAkgICAgewor IAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dFQUspKQorIAkJewor LQkJICBtc190eXBlID0gbXN0X3RleHQ7CisrCQkgIGlmIChzeW0tPmZsYWdzICYgQlNGX0dOVV9J TkRJUkVDVF9GVU5DVElPTikKKysJCSAgICBtc190eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOwor KwkJICBlbHNlCisrCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OworIAkJfQorIAkgICAgICBlbHNl IGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQorIAkJICAg ICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKK0luZGV4OiBnZGItNy4wL2dkYi9nZGJ0 eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMDkt MTEtMjUgMTA6MjQ6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIvZ2RidHlwZXMu YwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTE5MDQsNiArMTkwNCw4 IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmcKKyAgICAgVFlQRV9O T1RURVhUICh0eXBlKSA9IDE7CisgICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfRklYRURfSU5TVEFO Q0UpCisgICAgIFRZUEVfRklYRURfSU5TVEFOQ0UgKHR5cGUpID0gMTsKKysgIGlmIChmbGFncyAm IFRZUEVfRkxBR19HTlVfSUZVTkMpCisrICAgIFRZUEVfR05VX0lGVU5DICh0eXBlKSA9IDE7Cisg CisgICBpZiAobmFtZSkKKyAgICAgVFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFt ZSwgc3RybGVuIChuYW1lKSwKK0BAIC0zNzYyLDYgKzM3NjQsOCBAQCBnZGJ0eXBlc19wb3N0X2lu aXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhCisgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVp bHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOworICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNf cHRyCisgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1 aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7CisrICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVu Y19mdW5jX3B0cgorKyAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGxvb2t1cF9mdW5jdGlvbl90 eXBlIChidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19wdHIpKTsKKyAKKyAgIC8qIFRoaXMgdHlw ZSByZXByZXNlbnRzIGEgR0RCIGludGVybmFsIGZ1bmN0aW9uLiAgKi8KKyAgIGJ1aWx0aW5fdHlw ZS0+aW50ZXJuYWxfZm4KK0BAIC0zODc4LDYgKzM4ODIsMTEgQEAgb2JqZmlsZV90eXBlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAJCSAiPHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+ Iiwgb2JqZmlsZSk7CisgICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdf dGV4dF9zeW1ib2wpCisgICAgID0gb2JqZmlsZV90eXBlLT5idWlsdGluX2ludDsKKysgIG9iamZp bGVfdHlwZS0+bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2wKKysgICAgPSBpbml0X3R5cGUg KFRZUEVfQ09ERV9GVU5DLCAxLCBUWVBFX0ZMQUdfR05VX0lGVU5DLAorKwkJICI8dGV4dCBnbnUt aWZ1bmMgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+Iiwgb2JqZmlsZSk7CisrICBUWVBFX1RBUkdF VF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKQorKyAg ICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKKyAgIG9iamZpbGVfdHlwZS0+ bm9kZWJ1Z19kYXRhX3N5bWJvbAorICAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwKKyAJ CSBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKK0luZGV4OiBn ZGItNy4wL2dkYi9nZGJ0eXBlcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmlnL2dkYi9n ZGJ0eXBlcy5oCTIwMDktMTEtMjUgMTA6MjQ6NDguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC9nZGIvZ2RidHlwZXMuaAkyMDA5LTExLTI1IDEwOjI1OjE3LjAwMDAwMDAwMCArMDEwMAorQEAg LTE4Nyw2ICsxODcsNyBAQCBlbnVtIHR5cGVfZmxhZ192YWx1ZQorICAgVFlQRV9GTEFHX0ZJWEVE X0lOU1RBTkNFID0gKDEgPDwgMTUpLAorICAgVFlQRV9GTEFHX1NUVUJfU1VQUE9SVEVEID0gKDEg PDwgMTYpLAorICAgVFlQRV9GTEFHX05PVFRFWFQgPSAoMSA8PCAxNyksCisrICBUWVBFX0ZMQUdf R05VX0lGVU5DID0gKDEgPDwgMTgpLAorIAorICAgLyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcu ICAqLworICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAorQEAgLTI5Miw2ICsy OTMsMTIgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKKyAKKyAjZGVmaW5lIFRZUEVf Tk9UVEVYVCh0KQkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3R0ZXh0KQorIAorKy8qIEN1 cnJlbnRseSB1c2VkIG9ubHkgZm9yIFRZUEVfQ09ERV9GVU5DIHdoZXJlIHNwZWNpZmllcyB0aGUg cmVhbCBmdW5jdGlvbgorKyAgIGFkZHJlc3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBj YWxsLiAgVFlQRV9UQVJHRVRfVFlQRSBkZXRlcm1pbmVzIHRoZQorKyAgIGZpbmFsIHJldHVybmVk IGZ1bmN0aW9uIHR5cGUgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuICAqLworKworKyNkZWZpbmUg VFlQRV9HTlVfSUZVTkModCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMpCisr CisgLyogVHlwZSBvd25lci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUgdHlw ZSBpcyBvd25lZCBieQorICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJTEUu ICBPdGhlcndlaXNlLCB0aGUgdHlwZSBpcworICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZTsg VFlQRV9PQkpGSUxFIGlzIE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KK0BAIC00MjcsNiArNDM0LDcg QEAgc3RydWN0IG1haW5fdHlwZQorICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsKKyAg IHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKKyAgIHVuc2lnbmVkIGludCBm bGFnX25vdHRleHQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lmdW5jIDogMTsKKyAg IHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKKyAgIHVuc2lnbmVkIGludCBm bGFnX29iamZpbGVfb3duZWQgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGUg OiAxOworQEAgLTExNDQsNiArMTE1MiwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCisgICAgICAo KikgKCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4gICovCisgICBz dHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKKyAKKysgIC8qIGBwb2ludGVyIHRvIGZ1bmN0 aW9uIHJldHVybmluZyBwb2ludGVyIHRvIGZ1bmN0aW9uIChyZXR1cm5pbmcgdm9pZCknIHR5cGUu CisrICAgICBUaGUgZmluYWwgdm9pZCByZXR1cm4gdHlwZSBpcyBub3Qgc2lnbmlmaWNhbnQgZm9y IGl0LiAgKi8KKysgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfZnVuY19wdHI7CisrCisgCisg ICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlwZXMuICAqLworIAorQEAgLTExODYsNiArMTE5OCw3IEBA IHN0cnVjdCBvYmpmaWxlX3R5cGUKKyAKKyAgIC8qIFR5cGVzIHVzZWQgZm9yIHN5bWJvbHMgd2l0 aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0 X3N5bWJvbDsKKysgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbDsK KyAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOworICAgc3RydWN0IHR5cGUgKm5v ZGVidWdfdW5rbm93bl9zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9s OworSW5kZXg6IGdkYi03LjAvZ2RiL2luZmNhbGwuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAu b3JpZy9nZGIvaW5mY2FsbC5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMC9nZGIvaW5mY2FsbC5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICsw MTAwCitAQCAtMjg2LDYgKzI4NiwyNyBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1 ZSAqZnVuY3RpCisgICBlbHNlCisgICAgIGVycm9yIChfKCJJbnZhbGlkIGRhdGEgdHlwZSBmb3Ig ZnVuY3Rpb24gdG8gYmUgY2FsbGVkLiIpKTsKKyAKKysgIGlmIChUWVBFX0dOVV9JRlVOQyAoZnR5 cGUpKQorKyAgICB7CisrICAgICAgc3RydWN0IHR5cGUgKmZ1bmNfZnVuY19wdHI7CisrCisrICAg ICAgZnVuYWRkciArPSBnZGJhcmNoX2RlcHJlY2F0ZWRfZnVuY3Rpb25fc3RhcnRfb2Zmc2V0IChn ZGJhcmNoKTsKKysKKysgICAgICAvKiBDYXN0IEZVTkFERFIgdG8gZHJvcCBUWVBFX0dOVV9JRlVO QyBhbmQgYmVpbmcgYWJsZSB0byBjYWxsIGdudS1pZnVuYworKwkgRlVOQUREUiB3aXRob3V0IGNh dXNpbmcgZGVhZGxvY2sgYnkgdGhpcyBibG9jayBvZiBjb2RlLiAgKi8KKysKKysgICAgICBmdW5j X2Z1bmNfcHRyID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1bmNfcHRy OworKyAgICAgIGZ1bmN0aW9uID0gdmFsdWVfZnJvbV9wb2ludGVyIChmdW5jX2Z1bmNfcHRyLCBm dW5hZGRyKTsKKysKKysgICAgICAvKiBnbnUtaWZ1bmNzIGhhdmUgbm8gYXJndW1lbnRzLiAgKi8K KysgICAgICBmdW5jdGlvbiA9IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5V TEwpOworKworKyAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChmdW5jdGlvbik7Cisr CisrICAgICAgLyogVGhpcyBpcyBgaW50JyBhcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZpbmFs IGZ1bmN0aW9uLiAgKi8KKysgICAgICB2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodmFs dWVfdHlwZSk7CisrICAgIH0KKysKKyAgIGlmIChyZXR2YWxfdHlwZSAhPSBOVUxMKQorICAgICAq cmV0dmFsX3R5cGUgPSB2YWx1ZV90eXBlOworICAgcmV0dXJuIGZ1bmFkZHIgKyBnZGJhcmNoX2Rl cHJlY2F0ZWRfZnVuY3Rpb25fc3RhcnRfb2Zmc2V0IChnZGJhcmNoKTsKK0luZGV4OiBnZGItNy4w L2dkYi9saW5lc3BlYy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmlnL2dkYi9saW5lc3Bl Yy5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIv bGluZXNwZWMuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTQwLDYg KzQwLDcgQEAKKyAjaW5jbHVkZSAiaW50ZXJwcy5oIgorICNpbmNsdWRlICJtaS9taS1jbWRzLmgi CisgI2luY2x1ZGUgInRhcmdldC5oIgorKyNpbmNsdWRlICJpbmZjYWxsLmgiCisgCisgLyogV2Ug c2hhcmUgdGhpcyBvbmUgd2l0aCBzeW10YWIuYywgYnV0IGl0IGlzIG5vdCBleHBvcnRlZCB3aWRl bHkuICovCisgCitAQCAtMTg3NSw2ICsxODc2LDIyIEBAIG1pbnN5bV9mb3VuZCAoaW50IGZ1bmZp cnN0bGluZSwgc3RydWN0IG0KKyAgIHBjID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmFsdWVzLnNhbHNbMF0ucGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZjdXJyZW50X3RhcmdldCk7CisrCisrICAvKiBDYWxsIGdudS1pZnVuYyB0byBy ZXNvbHZlIGJyZWFrcG9pbnQgYXQgaXRzIHJldHVybmVkIGZ1bmN0aW9uLiAgKi8KKysgIGlmIChN U1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYykKKysgICAgeworKyAg ICAgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfcHRyOworKyAgICAgIHN0cnVjdCB2YWx1ZSAqZnVu Y3Rpb247CisrCisrICAgICAgZnVuY19mdW5jX3B0ciA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCkt PmJ1aWx0aW5fZnVuY19mdW5jX3B0cjsKKysgICAgICBmdW5jdGlvbiA9IHZhbHVlX2Zyb21fcG9p bnRlciAoZnVuY19mdW5jX3B0ciwgcGMpOworKworKyAgICAgIC8qIGdudS1pZnVuY3MgaGF2ZSBu byBhcmd1bWVudHMuICAqLworKyAgICAgIGZ1bmN0aW9uID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5k IChmdW5jdGlvbiwgMCwgTlVMTCk7CisrCisrICAgICAgcGMgPSB2YWx1ZV9hc19hZGRyZXNzIChm dW5jdGlvbik7CisrICAgIH0KKysKKyAgIGlmIChwYyAhPSB2YWx1ZXMuc2Fsc1swXS5wYykKKyAg ICAgdmFsdWVzLnNhbHNbMF0gPSBmaW5kX3BjX3NlY3RfbGluZSAocGMsIE5VTEwsIDApOworIAor SW5kZXg6IGdkYi03LjAvZ2RiL21pbnN5bXMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAub3Jp Zy9nZGIvbWluc3ltcy5jCTIwMDktMTEtMjUgMTA6MjQ6NDcuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC9nZGIvbWluc3ltcy5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAw CitAQCAtMzMxLDggKzMzMSw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBj aGFyICoKKyAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNoX25leHQpCisgCSAgICB7Cisg CSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLCBuYW1lKSA9 PSAwICYmCistCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0IHx8CistCQkg ICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQorKwkJICAoTVNZTUJP TF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwkJICAgfHwgTVNZTUJPTF9UWVBFIChtc3lt Ym9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJCSAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJv bCkgPT0gbXN0X2ZpbGVfdGV4dCkpCisgCQl7CisgCQkgIHN3aXRjaCAoTVNZTUJPTF9UWVBFICht c3ltYm9sKSkKKyAJCSAgICB7CitAQCAtNjk5LDYgKzcwMCwxNiBAQCBsb29rdXBfbWluaW1hbF9z eW1ib2xfYnlfcGMgKENPUkVfQUREUiBwCisgeworICAgcmV0dXJuIGxvb2t1cF9taW5pbWFsX3N5 bWJvbF9ieV9wY19zZWN0aW9uIChwYywgTlVMTCk7CisgfQorKworKy8qIFJldHVybiBub24temVy byBpZmYgUEMgaXMgaW4gZnVuY3Rpb24gaW1wbGVtZW50aW5nIGdudS1pZnVuYyBzZWxlY3Rpb24u ICAqLworKworK2ludAorK2luX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpCisreworKyAg c3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5 X3BjIChwYyk7CisrCisrICByZXR1cm4gbXN5bWJvbCAmJiBNU1lNQk9MX1RZUEUgKG1zeW1ib2wp ID09IG1zdF90ZXh0X2dudV9pZnVuYzsKKyt9CisgDAorIAorIC8qIFJldHVybiBsZWFkaW5nIHN5 bWJvbCBjaGFyYWN0ZXIgZm9yIGEgQkZELiBJZiBCRkQgaXMgTlVMTCwKK0BAIC03MzgsNiArNzQ5 LDcgQEAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKgorICAgc3dpdGNo IChtc190eXBlKQorICAgICB7CisgICAgIGNhc2UgbXN0X3RleHQ6CisrICAgIGNhc2UgbXN0X3Rl eHRfZ251X2lmdW5jOgorICAgICBjYXNlIG1zdF9maWxlX3RleHQ6CisgICAgIGNhc2UgbXN0X3Nv bGliX3RyYW1wb2xpbmU6CisgICAgICAgc2VjdGlvbiA9IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUp OworQEAgLTExODQsNyArMTE5Niw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQgKHN0 cnVjdCBmcmEKKyAgICAgeworICAgICAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5bWJvbCkK KyAgICAgICB7CistCWlmIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0CisrCWlm ICgoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwkgICAgfHwgTVNZTUJPTF9U WVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCisgCSAgICAmJiBzdHJjbXAgKFNZ TUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAorIAkJICAgICAgIFNZTUJPTF9MSU5LQUdFX05B TUUgKHRzeW1ib2wpKSA9PSAwKQorIAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5 bWJvbCk7CitJbmRleDogZ2RiLTcuMC9nZGIvcGFyc2UuYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjAub3JpZy9nZGIvcGFyc2UuYwkyMDA5LTExLTI1IDEwOjI0OjQ3LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAvZ2RiL3BhcnNlLmMJMjAwOS0xMS0yNSAxMDoyNjoxNi4wMDAwMDAwMDAgKzAx MDAKK0BAIC01MTcsNiArNTE3LDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1h bF9zeW1ib2wKKyAJd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5u b2RlYnVnX3RleHRfc3ltYm9sKTsKKyAgICAgICBicmVhazsKKyAKKysgICAgY2FzZSBtc3RfdGV4 dF9nbnVfaWZ1bmM6CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9i amZpbGUpCisrCQkJCQkgICAgICAgLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCk7Cisr ICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgbXN0X2RhdGE6CisgICAgIGNhc2UgbXN0X2ZpbGVf ZGF0YToKKyAgICAgY2FzZSBtc3RfYnNzOgorSW5kZXg6IGdkYi03LjAvZ2RiL3NvbGliLXN2cjQu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjAub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMDktMTEt MjUgMTA6MjQ6NDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIvc29saWItc3ZyNC5j CTIwMDktMTEtMjUgMTA6MjY6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMTI0Miw3ICsxMjQyLDgg QEAgc3ZyNF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcAorIHsKKyAgIHJldHVy biAoKHBjID49IGludGVycF90ZXh0X3NlY3RfbG93ICYmIHBjIDwgaW50ZXJwX3RleHRfc2VjdF9o aWdoKQorIAkgIHx8IChwYyA+PSBpbnRlcnBfcGx0X3NlY3RfbG93ICYmIHBjIDwgaW50ZXJwX3Bs dF9zZWN0X2hpZ2gpCistCSAgfHwgaW5fcGx0X3NlY3Rpb24gKHBjLCBOVUxMKSk7CisrCSAgfHwg aW5fcGx0X3NlY3Rpb24gKHBjLCBOVUxMKQorKwkgIHx8IGluX2dudV9pZnVuY19zdHViIChwYykp OworIH0KKyAKKyAvKiBHaXZlbiBhbiBleGVjdXRhYmxlJ3MgQUJGRCBhbmQgdGFyZ2V0LCBjb21w dXRlIHRoZSBlbnRyeS1wb2ludAorSW5kZXg6IGdkYi03LjAvZ2RiL3N5bW1pc2MuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjAub3JpZy9nZGIvc3ltbWlzYy5jCTIwMDktMTEtMjUgMTA6MjQ6NDcu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIvc3ltbWlzYy5jCTIwMDktMTEtMjUgMTA6 MjQ6NTYuMDAwMDAwMDAwICswMTAwCitAQCAtMjg3LDYgKzI4Nyw5IEBAIGR1bXBfbXN5bWJvbHMg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKKyAJY2FzZSBtc3RfdGV4dDoKKyAJICBtc190eXBl ID0gJ1QnOworIAkgIGJyZWFrOworKwljYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKKysJICBtc190 eXBlID0gJ2knOworKwkgIGJyZWFrOworIAljYXNlIG1zdF9zb2xpYl90cmFtcG9saW5lOgorIAkg IG1zX3R5cGUgPSAnUyc7CisgCSAgYnJlYWs7CitJbmRleDogZ2RiLTcuMC9nZGIvc3ltdGFiLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy4wLm9yaWcvZ2RiL3N5bXRhYi5jCTIwMDktMTEtMjUgMTA6 MjQ6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIvc3ltdGFiLmMJMjAwOS0xMS0y NSAxMDoyNDo1Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMTU1LDcgKzMxNTUsNyBAQCBzZWFyY2hf c3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51CisgICB7bXN0X2ZpbGVfZGF0YSwgbXN0 X3NvbGliX3RyYW1wb2xpbmUsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKKyAgIHN0YXRpYyBlbnVt IG1pbmltYWxfc3ltYm9sX3R5cGUgdHlwZXM0W10KKyAgID0KKy0gIHttc3RfZmlsZV9ic3MsIG1z dF90ZXh0LCBtc3RfYWJzLCBtc3RfdW5rbm93bn07CisrICB7bXN0X2ZpbGVfYnNzLCBtc3RfdGV4 dF9nbnVfaWZ1bmMsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKKyAgIGVudW0gbWluaW1hbF9zeW1i b2xfdHlwZSBvdXJ0eXBlOworICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUyOwor ICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUzOworSW5kZXg6IGdkYi03LjAvZ2Ri L3N5bXRhYi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmlnL2dkYi9zeW10YWIuaAkyMDA5 LTExLTI1IDEwOjI0OjQ1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAvZ2RiL3N5bXRhYi5o CTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCitAQCAtMjc1LDYgKzI3NSw4IEBA IGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZQorIHsKKyAgIG1zdF91bmtub3duID0gMCwJCS8qIFVu a25vd24gdHlwZSwgdGhlIGRlZmF1bHQgKi8KKyAgIG1zdF90ZXh0LAkJCS8qIEdlbmVyYWxseSBl eGVjdXRhYmxlIGluc3RydWN0aW9ucyAqLworKyAgbXN0X3RleHRfZ251X2lmdW5jLAkJLyogRXhl Y3V0YWJsZSBjb2RlIHJldHVybmluZyBhZGRyZXNzCisrCQkJCSAgIG9mIGV4ZWN1dGFibGUgY29k ZSAqLworICAgbXN0X2RhdGEsCQkJLyogR2VuZXJhbGx5IGluaXRpYWxpemVkIGRhdGEgKi8KKyAg IG1zdF9ic3MsCQkJLyogR2VuZXJhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YSAqLworICAgbXN0X2Fi cywJCQkvKiBHZW5lcmFsbHkgYWJzb2x1dGUgKG5vbnJlbG9jYXRhYmxlKSAqLworQEAgLTExNDks NiArMTE1MSw4IEBAIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvb2t1cF9taW4KKyAK KyBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlf cGMgKENPUkVfQUREUik7CisgCisrZXh0ZXJuIGludCBpbl9nbnVfaWZ1bmNfc3R1YiAoQ09SRV9B RERSIHBjKTsKKysKKyBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sCisgICAqbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKENPUkVfQUREUiwgc3RydWN0IG9ial9zZWN0aW9u ICopOworIAorSW5kZXg6IGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMt bGliLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKKysrKyBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5j LWxpYi5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDQ1 IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KysKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUg PGFzc2VydC5oPgorKworK3R5cGVkZWYgaW50ICgqZmluYWxfdCkgKGludCBhcmcpOworKworK3N0 YXRpYyBpbnQKKytmaW5hbCAoaW50IGFyZykKKyt7CisrICByZXR1cm4gYXJnICsgMTsKKyt9Cisr Cisrc3RhdGljIHZvbGF0aWxlIGludCBnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQ7CisrCisrdm9pZAor K2dudV9pZnVuY19wcmUgKHZvaWQpCisreworKyAgYXNzZXJ0ICghZ251X2lmdW5jX2luaXRpYWxp emVkKTsKKyt9CisrCisrZmluYWxfdCBnbnVfaWZ1bmNYICh2b2lkKSBhc20gKCJnbnVfaWZ1bmMi KTsKKythc20gKCIudHlwZSBnbnVfaWZ1bmMsIEBnbnVfaW5kaXJlY3RfZnVuY3Rpb24iKTsKKysK KytmaW5hbF90CisrZ251X2lmdW5jWCAodm9pZCkKKyt7CisrICBnbnVfaWZ1bmNfaW5pdGlhbGl6 ZWQgPSAxOworKworKyAgcmV0dXJuIGZpbmFsOworK30KK0luZGV4OiBnZGItNy4wL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4wL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMJMjAwOS0xMS0yNSAxMDoyNDo1Ni4wMDAwMDAwMDAgKzAx MDAKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrZXh0ZXJuIGludCBnbnVfaWZ1bmMgKGlu dCBhcmcpOworK2V4dGVybiB2b2lkIGdudV9pZnVuY19wcmUgKHZvaWQpOworKworK2ludAorK21h aW4gKHZvaWQpCisreworKyAgaW50IGk7CisrCisrICBnbnVfaWZ1bmNfcHJlICgpOworKyAgCisr ICBpID0gZ251X2lmdW5jICgxKTsJLyogYnJlYWstYXQtY2FsbCAqLworKyAgYXNzZXJ0IChpID09 IDIpOworKworKyAgZ251X2lmdW5jICgyKTsJLyogYnJlYWstYXQtbmV4dGNhbGwgKi8KKysKKysg IHJldHVybiAwOwkvKiBicmVhay1hdC1leGl0ICovCisrfQorSW5kZXg6IGdkYi03LjAvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAJMjAwOS0xMS0yNSAxMDoyNDo1Ni4wMDAwMDAw MDAgKzAxMDAKK0BAIC0wLDAgKzEsNzIgQEAKKysjIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr IworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrCisraWYge1tza2lwX3NobGliX3Rlc3RzXX0geworKyAgICByZXR1cm4gMAorK30KKysKKytz ZXQgdGVzdGZpbGUgImdudS1pZnVuYyIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorKworK3NldCBsaWJmaWxl ICIke3Rlc3RmaWxlfS1saWIiCisrc2V0IGxpYnNyYyAke2xpYmZpbGV9LmMKKytzZXQgbGliX3Nv ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJmaWxlfS5zbworKworK3NldCBsaWJfb3B0cyBbbGlz dCBkZWJ1Z10KKytzZXQgZXhlY19vcHRzIFtsaXN0IGRlYnVnIHNobGliPSRsaWJfc29dCisrCisr aWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKKysgICAgcmV0dXJuIC0xCisrfQor KworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJGxpYnNyYyAk bGliX3NvICRsaWJfb3B0c10gIT0gIiIKKysgICAgIHx8IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0v JHtzdWJkaXJ9LyRzcmNmaWxlICRiaW5maWxlIGV4ZWN1dGFibGUgJGV4ZWNfb3B0c10gIT0gIiJ9 IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGVpdGhlciAkbGlic3JjIG9yICRz cmNmaWxlLiIKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdk Yi4KKysKKytjbGVhbl9yZXN0YXJ0ICR0ZXN0ZmlsZQorK2dkYl9sb2FkX3NobGlicyAke2xpYl9z b30KKysKKytpZiAhW3J1bnRvX21haW5dIHRoZW4geworKyAgICBmYWlsICJDYW4ndCBydW4gdG8g bWFpbiIKKysgICAgcmV0dXJuIDE7CisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2FsbCJdCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LWNhbGwiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJicmVhay1hdC1jYWxsIiAiLipicmVhay1hdC1jYWxsLioiCisrCisrIyBUZXN0IEdEQiB3 aWxsIGF1dG9tYXRpY2FsbHkgaW5kaXJlY3QgdGhlIGNhbGwuCisrCisrZ2RiX3Rlc3QgInAgZ251 X2lmdW5jICgzKSIgIiA9IDQiCisrCisrIyBUZXN0IEdEQiB3aWxsIHNraXAgdGhlIGdudV9pZnVu YyByZXNvbHZlciBvbiBmaXJzdCBjYWxsLgorKworK2dkYl90ZXN0ICJzdGVwIiAiXHJcbmZpbmFs IC4qIgorKworKyMgVGVzdCBHREIgd2lsbCBub3QgYnJlYWsgYmVmb3JlIHRoZSBmaW5hbCBjaG9z ZW4gaW1wbGVtZW50YXRpb24uCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFr LWF0LW5leHRjYWxsIiAiLipicmVhay1hdC1uZXh0Y2FsbC4qIgorKworK2dkYl9icmVha3BvaW50 ICJnbnVfaWZ1bmMiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5leHRjYWxsIGdu dV9pZnVuYyIKKysKKytnZGJfdGVzdCAiZnJhbWUiICIjMCArZmluYWwgXFwoLioiICJuZXh0Y2Fs bCBnbnVfaWZ1bmMgc2tpcHBlZCIKCmRpZmYgLS1naXQgYS9nZGItY29yZS1vcGVuLXZkc28td2Fy bmluZy5wYXRjaCBiL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNWU3MmIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt Y29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaApAQCAtMCwwICsxLDgyIEBACitodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMC9tc2cwMDE0Mi5odG1sCitTdWJqZWN0 OiBbcGF0Y2hdIEZpeCBHTlUvTGludXggY29yZSBvcGVuOiBDYW4ndCByZWFkIHBhdGhuYW1lIGZv ciBsb2FkIG1hcDogIElucHV0L291dHB1dCBlcnJvci4KKworSGksCisKK0dEQiBjdXJyZW50bHkg YWx3YXlzIHByaW50cyBvbiBsb2FkaW5nIGEgY29yZSBmaWxlOgorCXdhcm5pbmc6IENhbid0IHJl YWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRwdXQgZXJyb3IuCisKK1RoZSBwYXRj aCBpcyBub3QgbmljZSBidXQgaXQgd2FzIFdPTlRGSVhlZCBvbiB0aGUgZ2xpYmMgc2lkZSBpbjoK KwlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDA5LTEwL21zZzAwMDAxLmh0 bWwKKworVGhlIHNhbWUgbWVzc2FnZSBpbiBHREIgUFIgODg4MiBhbmQgZ2xpYmMgUFIgMzg3IHdh cyBmb3IgbGQtbGludXguc28uMiBsX25hbWUKK2J1dCB0aGF0IG9uZSBpcyBub3cgaWdub3JlZCB0 aGFua3MgdG8gSUdOT1JFX0ZJUlNUX0xJTktfTUFQX0VOVFJZLgorCitUaGlzIGZpeCBpcyBpbnRl bmRlZCBmb3IgTGludXggc3lzdGVtIHZEU08gbF9uYW1lIHdoaWNoIGlzIGEgc2Vjb25kIGVudHJ5 IGluCit0aGUgRFNPIGxpc3QuCisKK1JlZ3Jlc3Npb24gdGVzdGVkIG9uIHt4ODZfODYseDg2XzY0 LW0zMixpNjg2fS1mZWRvcmExMS1saW51eC1nbnUuCisKKworVGhhbmtzLAorSmFuCisKKworZ2Ri LworMjAwOS0xMC0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorCisJRG8gbm90IHByaW50IGZhbHNlIHdhcm5pbmcgb24gcmVhZGluZyBjb3JlIGZpbGUgd2l0 aCB2RFNPIG9uIEdOVS9MaW51eC4KKwkqIHNvbGliLXN2cjQuYyAoc3ZyNF9jdXJyZW50X3Nvcyk6 IFN1cHByZXNzIHRoZSB3YXJuaW5nIGlmCisJTUFTVEVSX1NPX0xJU1QgaXMgc3RpbGwgTlVMTC4K KwkqIHNvbGliLmMgKHVwZGF0ZV9zb2xpYl9saXN0KTogTmV3IHZhcmlhYmxlIHNhdmVkX3NvX2xp c3RfaGVhZC4KKwlDb25kaXRpb25hbGx5IHJlc3RhcnQgdGhlIGZ1bmN0aW9uLgorCitbIENvbnRl eHQgYmFja3BvcnQuICBdCisKKy0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKKysrKyBiL2dkYi9zb2xp Yi1zdnI0LmMKK0BAIC0xMDk3LDggKzEwOTcsMTggQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkK KyAJICB0YXJnZXRfcmVhZF9zdHJpbmcgKExNX05BTUUgKG5ldyksICZidWZmZXIsCisgCQkJICAg ICAgU09fTkFNRV9NQVhfUEFUSF9TSVpFIC0gMSwgJmVycmNvZGUpOworIAkgIGlmIChlcnJjb2Rl ICE9IDApCistCSAgICB3YXJuaW5nIChfKCJDYW4ndCByZWFkIHBhdGhuYW1lIGZvciBsb2FkIG1h cDogJXMuIiksCistCQkgICAgIHNhZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsKKysJICAgIHsKKysJ ICAgICAgLyogRHVyaW5nIHRoZSBmaXJzdCBldmVyIERTTyBsaXN0IHJlYWRpbmcgc29tZSBzdHJp bmdzIG1heSBiZQorKwkJIHVucmVhZGFibGUgYXMgcmVzaWRpbmcgaW4gdGhlIGxkLnNvIHJlYWRv bmx5IG1lbW9yeSBub3QgYmVpbmcKKysJCSBwcmVzZW50IGluIGEgZHVtcGVkIGNvcmUgZmlsZS4g IERlbGF5IHRoZSBlcnJvciBjaGVjayBhZnRlcgorKwkJIHRoZSBmaXJzdCBwYXNzIG9mIERTTyBs aXN0IHNjYW5uaW5nIHdoZW4gbGQuc28gc2hvdWxkIGJlCisrCQkgYWxyZWFkeSBtYXBwZWQgaW4g YW5kIGFsbCB0aGUgRFNPIGxpc3QgbF9uYW1lIG1lbW9yeSBnZXRzCisrCQkgcmVhZGFibGUuICAq LworKworKwkgICAgICBpZiAobWFzdGVyX3NvX2xpc3QgKCkgIT0gTlVMTCkKKysJCXdhcm5pbmcg KF8oIkNhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiAlcy4iKSwKKysJCQkgc2FmZV9z dHJlcnJvciAoZXJyY29kZSkpOworKwkgICAgfQorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAg c3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZDsKKy0tLSBhL2dkYi9zb2xpYi5jCisrKysgYi9nZGIv c29saWIuYworQEAgLTUzOCw2ICs1MzgsNyBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21f dHR5LCBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0KQorICAgc3RydWN0IHRhcmdldF9zb19vcHMg Km9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2gpOworICAgc3RydWN0IHNvX2xpc3QgKmlu ZmVyaW9yID0gb3BzLT5jdXJyZW50X3NvcygpOworICAgc3RydWN0IHNvX2xpc3QgKmdkYiwgKipn ZGJfbGluazsKKysgIHN0cnVjdCBzb19saXN0ICpzYXZlZF9zb19saXN0X2hlYWQgPSBzb19saXN0 X2hlYWQ7CisgCisgICAvKiBXZSBjYW4gcmVhY2ggaGVyZSBkdWUgdG8gY2hhbmdpbmcgc29saWIt c2VhcmNoLXBhdGggb3IgdGhlCisgICAgICBzeXNyb290LCBiZWZvcmUgaGF2aW5nIGFueSBpbmZl cmlvci4gICovCitAQCAtNjY4LDYgKzY2OSwxMiBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZy b21fdHR5LCBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0KQorIAkgIG9ic2VydmVyX25vdGlmeV9z b2xpYl9sb2FkZWQgKGkpOworIAl9CisgICAgIH0KKysKKysgIC8qIElmIHRoaXMgd2FzIHRoZSB2 ZXJ5IGZpcnN0IERTTyBsaXN0IHNjYW4gYW5kIHdlIHBvc3NpYmx5IHJlYWQgaW4gbGQuc28KKysg ICAgIHJlY2hlY2sgYWxsIHRoZSBmb3JtZXJseSB1bnJlYWRhYmxlIERTTyBuYW1lcyBzdHJpbmdz LiAgKi8KKysKKysgIGlmIChzYXZlZF9zb19saXN0X2hlYWQgPT0gTlVMTCAmJiBzb19saXN0X2hl YWQgIT0gTlVMTCkKKysgICAgdXBkYXRlX3NvbGliX2xpc3QgKGZyb21fdHR5LCB0YXJnZXQpOwor IH0KKyAKKyAKKwoKZGlmZiAtLWdpdCBhL2dkYi1lbXB0eS1uYW1lc3BhY2UucGF0Y2ggYi9nZGIt ZW1wdHktbmFtZXNwYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmE4YmFmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoCkBA IC0wLDAgKzEsMjA0IEBACitnZGIvCisyMDA5LTEyLTIwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlGaXggY29tcGF0aWJpbGl0eSB3aXRoIEcrKy00LjEu CisJKiBkd2FyZjJyZWFkLmMgKHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSk6IE5ldyB2YXJpYWJs ZSBQQVJFTlRfTkFNRS4KKwlJZ25vcmUgcGFyZW50IG5hbWVzcGFjZXMgd2l0aCBuYW1lICI6OiIu CisJKHBoeXNuYW1lX3ByZWZpeF8xKTogSWdub3JlIG5hbWVzcGFjZXMgd2l0aCBuYW1lICI6OiIu CisKK2dkYi90ZXN0c3VpdGUvCisyMDA5LTEyLTIwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5l eHAsIGdkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5TOgorCU5ldy4KKworLS0tIGEvZ2Ri L2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQuYworQEAgLTIzNTUsMTEgKzIzNTUs MTggQEAgcGFydGlhbF9kaWVfcGFyZW50X3Njb3BlIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAq cGRpLAorICAgICAgIHx8IHBhcmVudC0+dGFnID09IERXX1RBR19pbnRlcmZhY2VfdHlwZQorICAg ICAgIHx8IHBhcmVudC0+dGFnID09IERXX1RBR191bmlvbl90eXBlKQorICAgICB7CisrICAgICAg Y2hhciAqcGFyZW50X25hbWUgPSBwYXJlbnQtPm5hbWU7CisrCisrICAgICAgLyogRysrIDQuMSBw cm9kdWNlZCBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAiOjoiLiAgKi8KKysgICAg ICBpZiAocGFyZW50LT50YWcgPT0gRFdfVEFHX25hbWVzcGFjZSAmJiBwYXJlbnRfbmFtZSAhPSBO VUxMCisrICAgICAgICAgICYmIHN0cmNtcCAocGFyZW50X25hbWUsICI6OiIpID09IDApCisrCXBh cmVudF9uYW1lID0gTlVMTDsKKysKKyAgICAgICBpZiAoZ3JhbmRwYXJlbnRfc2NvcGUgPT0gTlVM TCkKKy0JcGFyZW50LT5zY29wZSA9IHBhcmVudC0+bmFtZTsKKysJcGFyZW50LT5zY29wZSA9IHBh cmVudF9uYW1lOworICAgICAgIGVsc2UKKyAJcGFyZW50LT5zY29wZSA9IHR5cGVuYW1lX2NvbmNh dCAoJmN1LT5jb21wX3VuaXRfb2JzdGFjaywgZ3JhbmRwYXJlbnRfc2NvcGUsCistCQkJCQkgcGFy ZW50LT5uYW1lLCBjdSk7CisrCQkJCQkgcGFyZW50X25hbWUsIGN1KTsKKyAgICAgfQorICAgZWxz ZSBpZiAocGFyZW50LT50YWcgPT0gRFdfVEFHX2VudW1lcmF0aW9uX3R5cGUpCisgICAgIC8qIEVu dW1lcmF0b3JzIHNob3VsZCBub3QgZ2V0IHRoZSBuYW1lIG9mIHRoZSBlbnVtZXJhdGlvbiBhcyBh IHByZWZpeC4gICovCitAQCAtOTAwOCw2ICs5MDE1LDkgQEAgcGh5c25hbWVfcHJlZml4XzEgKHN0 cnVjdCB1aV9maWxlICpidWYsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorIAkgIG5hbWUgPSBkd2Fy ZjJfbmFtZSAoZGllLCBjdSk7CisgCSAgaWYgKG5hbWUgPT0gTlVMTCkKKyAJICAgIG5hbWUgPSAi KGFub255bW91cyBuYW1lc3BhY2UpIjsKKysJICAvKiBHKysgNC4xIHByb2R1Y2VkIERXX1RBR19u YW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLworKwkgIGVsc2UgaWYgKHN0cmNtcCAo bmFtZSwgIjo6IikgPT0gMCkKKysJICAgIG5hbWUgPSBOVUxMOworIAkgIGJyZWFrOworIAorIAlj YXNlIERXX1RBR19jbGFzc190eXBlOgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuUworQEAgLTAsMCArMSwxMDggQEAKKysv KiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAg IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBUZXN0IEcrKyA0LjEg cHJvZHVjaW5nIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLworKwor KwkuZGF0YQorK3ZhcjoJLjRieXRlCTEKKysKKysJLnNlY3Rpb24gLmRlYnVnX2luZm8KKysuTGN1 MV9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9z dGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1MV9zdGFydDoKKysJ LjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2lu CQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJLmJ5dGUJNAkJCQkvKiBQb2lu dGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGViMTI4IDEJCQkJLyogQWJicmV2 OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdf QVRfbmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIg Ki8KKysJLmJ5dGUJNAkJCQkvKiBEV19MQU5HX0NfcGx1c19wbHVzIChDKyspICovCisrCisrLkx0 eXBlX2ludDoKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLwor KwkuYXNjaWkJCSJpbnRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5ieXRlCQk0CQkJLyogRFdf QVRfYnl0ZV9zaXplICovCisrCS5ieXRlCQk1CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysKKysJ LnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX25hbWVzcGFjZSAqLworKwkuYXNjaWkJCSI6 OlwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysKKysJLnVsZWIxMjgJNwkJCS8qIEFiYnJldjogRFdf VEFHX3ZhcmlhYmxlIChsb2NhdGlvbikgKi8KKysJLmFzY2lpCQkidmFyXDAiCQkJLyogRFdfQVRf bmFtZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJLmJ5 dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXIJCQkvKiAgIDxhZGRyPiAq LworKzI6CS40Ynl0ZQkJLkx0eXBlX2ludC0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisr CisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIERXX1RBR19uYW1lc3BhY2UgKi8K KysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KKysKKysuTGN1MV9l bmQ6CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKKysu TGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxl YjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJMQkJCS8qIGhh c19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGVi MTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19B VF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwku dWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNv ZGUgKi8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJ CTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAq LworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweGIJ CQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRh MSAqLworKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyog QWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgzOQkJCS8qIERXX1RBR19uYW1lc3BhY2UgKi8K KysJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdf QVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKworKwkudWxlYjEyOAk3CQkJLyogQWJicmV2IGNvZGUgKGxvY2F0aW9uKSAqLworKwkudWxl YjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCisrCS5ieXRlCQkwCQkJLyogaGFzX2No aWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJ MHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9j YXRpb24gKi8KKysJLnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KKysJLnVsZWIx MjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1f cmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuZXhwCitAQCAtMCwwICsxLDQz IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysj CisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IEcrKyA0LjEgcHJvZHVj aW5nIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuCisrCisrIyBUaGlzIHRl c3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1 c2UgZ2FzLgorKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCisr aWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0K KysgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotb3Bl bmJzZCpdCisrICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCisrICAgICYmICFbaXN0YXJn ZXQgcG93ZXJwYy0qLWVhYmkqXX0geworKyAgICByZXR1cm4gMCAgCisrfQorKworK3NldCB0ZXN0 ZmlsZSAiZHcyLWVtcHR5LW5hbWVzcGFjZSIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCisr c2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAorKworK2lmICB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1 dGFibGV9IiBvYmplY3Qge25vZGVidWd9XSAhPSAiIiB9IHsKKysgICAgcmV0dXJuIC0xCisrfQor KworK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKKysKKysjIGBwIHZhcicgYmVsb3cgY2FuIHdv cmsgd2l0aG91dCBpZGVudGlmaWVkIERXQVJGIERJRSBqdXN0IGJhc2VkIG9uIGl0cyBFTEYgc3lt Ym9sLgorKyMgQ2F0Y2ggaXQgaGVyZSBhcyBgdHlwZSA9IDxkYXRhIHZhcmlhYmxlLCBubyBkZWJ1 ZyBpbmZvPicuCisrZ2RiX3Rlc3QgInB0eXBlIHZhciIgInR5cGUgPSBpbnQiCisrCisrZ2RiX3Rl c3QgInAgdmFyIiAiID0gMSIKCmRpZmYgLS1naXQgYS9nZGItZm9sbG93LWNoaWxkLXN0YWxlLXBh cmVudC5wYXRjaCBiL2dkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNjc5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItZm9sbG93LWNoaWxkLXN0YWxlLXBhcmVudC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitQcm9i bGVtIG9jY3VycyB3aXRoIHB5dGhvbiBhbmQgaXRzIGdldF9jdXJyZW50X2FyY2ggKCkgYXMgaXQg c2VsZWN0cworc2VsZWN0ZWRfZnJhbWUgYW5kIGN1cnJlbnRfZnJhbWUgd2hpbGUgc3RpbGwgaW5m ZXJpb3JfcHRpZCBpcyB2YWxpZCBmb3IgdGhlCitvcmlnaW5hbCBwYXJlbnQuICBCdXQgc2luY2Ug dGhpcyBwbGFjZSBpdCBpcyBhbHJlYWR5IGF0dGFjaGVkIGFuZCBsYXRlcgordW53aW5kZXJzIHRy eSB0byBhY2Nlc3MgaXQsIGJyZWFraW5nOgorICAtUEFTUzogZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLmV4cDogY2hpbGQ6IHNpbmdsZXRocmVhZGVkOiBicmVha3BvaW50IGFmdGVyIHRoZSBm aXJzdCBmb3JrCisgIC1QQVNTOiBnZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuZXhwOiBjaGls ZDogc2luZ2xldGhyZWFkZWQ6IHdhdGNocG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsKKyAgLVBB U1M6IGdkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHA6IGNoaWxkOiBzaW5nbGV0aHJlYWRl ZDogYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsKKyAgLVBBU1M6IGdkYi50aHJlYWRz L3dhdGNocG9pbnQtZm9yay5leHA6IGNoaWxkOiBzaW5nbGV0aHJlYWRlZDogd2F0Y2hwb2ludCBh ZnRlciB0aGUgc2Vjb25kIGZvcmsKKyAgLVBBU1M6IGdkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9y ay5leHA6IGNoaWxkOiBzaW5nbGV0aHJlYWRlZDogZmluaXNoCisgICtGQUlMOiBnZGIudGhyZWFk cy93YXRjaHBvaW50LWZvcmsuZXhwOiBjaGlsZDogc2luZ2xldGhyZWFkZWQ6IGJyZWFrcG9pbnQg YWZ0ZXIgdGhlIGZpcnN0IGZvcmsKKyAgK0ZBSUw6IGdkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9y ay5leHA6IGNoaWxkOiBzaW5nbGV0aHJlYWRlZDogd2F0Y2hwb2ludCBhZnRlciB0aGUgZmlyc3Qg Zm9yaworICArRkFJTDogZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cDogY2hpbGQ6IHNp bmdsZXRocmVhZGVkOiBicmVha3BvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yaworICArRkFJTDog Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cDogY2hpbGQ6IHNpbmdsZXRocmVhZGVkOiB3 YXRjaHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yaworICArRkFJTDogZ2RiLnRocmVhZHMvd2F0 Y2hwb2ludC1mb3JrLmV4cDogY2hpbGQ6IHNpbmdsZXRocmVhZGVkOiBmaW5pc2gKKworLS0tIC4v Z2RiL2luZnJ1bi5jCTIwMDktMTItMjEgMjA6MjY6MzAuMDAwMDAwMDAwICswMTAwCisrKysgLi9n ZGIvaW5mcnVuLmMJMjAwOS0xMi0yMSAyMDoyNjoxMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNzUs NiArMzc1LDkgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCSAgfQorIAllbHNlCisgCSAgeworKwkg ICAgLyogUG9zc2libHkgcmVmZXJlbmNlZCBQQVJFTlQgaXMgbm8gbG9uZ2VyIHZhbGlkLiAgKi8K KysJICAgIHJlaW5pdF9mcmFtZV9jYWNoZSAoKTsKKysKKyAJICAgIC8qIFRoaXMgcGVuZGluZyBm b2xsb3cgZm9yayBldmVudCBpcyBub3cgaGFuZGxlZCwgb25lIHdheQorIAkgICAgICAgb3IgYW5v dGhlci4gIFRoZSBwcmV2aW91cyBzZWxlY3RlZCB0aHJlYWQgbWF5IGJlIGdvbmUKKyAJICAgICAg IGZyb20gdGhlIGxpc3RzIGJ5IG5vdywgYnV0IGlmIGl0IGlzIHN0aWxsIGFyb3VuZCwgbmVlZAoK ZGlmZiAtLWdpdCBhL2dkYi1vcnBoYW5yaXBwZXIuYyBiL2dkYi1vcnBoYW5yaXBwZXIuYwppbmRl eCAxMTg5ZGY2Li40ODkzZThmIDEwMDY0NAotLS0gYS9nZGItb3JwaGFucmlwcGVyLmMKKysrIGIv Z2RiLW9ycGhhbnJpcHBlci5jCkBAIC0yNzYsMTIgKzI3NiwxNiBAQCBzdGF0aWMgaW50IHNwYXdu IChjaGFyICoqYXJndiwgaW50IHRpbWVvdXQpCiAKICAgYXNzZXJ0IChzaWduYWxfY2hsZF9oaXQg IT0gMCk7CiAKKyAgLyogRG8gbm90IHVuc2V0IE9fTk9OQkxPQ0sgYXMgYSBzdGFsZSBjaGlsZCAo dGhlIHdob2xlIHB1cnBvc2Ugb2YgdGhpcworICAgICBwcm9ncmFtKSBoYXZpbmcgb3BlbiBpdHMg b3V0cHV0IHB0eSB3b3VsZCBibG9jayB1cyBpbiByZWFkX291dC4gICovCisjaWYgMAogICBpID0g ZmNudGwgKGFtYXN0ZXIsIEZfU0VURkwsIE9fUkRPTkxZIC8qICFPX05PTkJMT0NLICovKTsKICAg aWYgKGkgIT0gMCkKICAgICB7CiAgICAgICBwZXJyb3IgKCJmY250bCAoYW1hc3RlciwgRl9TRVRG TCwgT19SRE9OTFkgLyogIU9fTk9OQkxPQ0sgKi8pIik7CiAgICAgICBleGl0IChFWElUX0ZBSUxV UkUpOwogICAgIH0KKyNlbmRpZgogCiAgIHdoaWxlIChyZWFkX291dCAoYW1hc3RlcikpOwogCgpk aWZmIC0tZ2l0IGEvZ2RiLXBwYy1ody13YXRjaHBvaW50LXR3aWNlLnBhdGNoIGIvZ2RiLXBwYy1o dy13YXRjaHBvaW50LXR3aWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmUzNjMxNTgKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcHBjLWh3LXdhdGNocG9pbnQtdHdp Y2UucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorcGNjIHJlZ3Jlc3Npb24gZnJvbToKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA4LTEyL21zZzAwMTQzLmh0bWwKKworZ2Ri LworMjAwOS0xMi0yMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorCisJKiBicmVha3BvaW50LmMgKHVwZGF0ZV93YXRjaHBvaW50KTogU2V0IEItPlRZUEUgdG8g YnBfd2F0Y2hwb2ludCBiZWZvcmUKKwljYWxsaW5nIGh3X3dhdGNocG9pbnRfdXNlZF9jb3VudC4K KworLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysrIGIvZ2RiL2JyZWFrcG9pbnQuYworQEAgLTEx NTIsNiArMTE1Miw5IEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwg aW50IHJlcGFyc2UpCisgCSAgeworIAkgICAgaW50IGksIG1lbV9jbnQsIG90aGVyX3R5cGVfdXNl ZDsKKyAKKysJICAgIC8qIERvIG5vdCBjb3VudCB3aXRoIEIgdHdpY2UgYmVsb3cuICAqLworKwkg ICAgYi0+dHlwZSA9IGJwX3dhdGNocG9pbnQ7CisrCisgCSAgICBpID0gaHdfd2F0Y2hwb2ludF91 c2VkX2NvdW50IChicF9oYXJkd2FyZV93YXRjaHBvaW50LAorIAkJCQkJICAmb3RoZXJfdHlwZV91 c2VkKTsKKyAJICAgIG1lbV9jbnQgPSBjYW5fdXNlX2hhcmR3YXJlX3dhdGNocG9pbnQgKHZhbF9j aGFpbik7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJlYWRsaW5lLTYuMC1zaWduYWwucGF0Y2ggYi9nZGIt cmVhZGxpbmUtNi4wLXNpZ25hbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4wODczYmVhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJlYWRsaW5lLTYuMC1zaWduYWwu cGF0Y2gKQEAgLTAsMCArMSwzMTIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDA5LTExL21zZzAwNTk2Lmh0bWwKK1N1YmplY3Q6IFtnZGIgRllJLXBhdGNoXSBjYWxs YmFjay1tb2RlIHJlYWRsaW5lLTYuMCByZWdyZXNzaW9uCisKK0hpIENoZXQsCisKK0ZTRiBHREIg Y3VycmVudGx5IHNoaXBzIGJ1bmRsZWQgd2l0aCByZWFkbGluZS01LjIgd2hpY2ggd29ya3MgZmlu ZS4KK0J1dCB1c2luZyAtLXdpdGgtc3lzdGVtLXJlYWRsaW5lIGFuZCByZWFkbGluZS02LjAtcGF0 Y2hsZXZlbDQgaGFzCithIHJlZ3Jlc3Npb246CisKK3JlYWRsaW5lLTUuMjogUnVuIGBnZGIgLW54 IC1xJyBhbmQgdHlwZSBDVFJMLUM6CisoZ2RiKSBRdWl0CisoZ2RiKSBfCisKK3JlYWRsaW5lLTYu MDogUnVuIGBnZGIgLW54IC1xJyBhbmQgdHlwZSBDVFJMLUM6CisoZ2RiKSBfCisgPSBub3RoaW5n IGhhcHBlbnMgKGl0IGdldHMgYnVmZmVyZWQgYW5kIGV4ZWN1dGVkIGxhdGVyKQorCShJdCBkb2Vz IGFsc28gRkFJTCBvbiBnZGIuZ2RiL3NlbGZ0ZXN0LmV4cC4pCisKK0l0IGlzIGJlY2F1c2UgR0RC IHdhaXRzIGluIGl0cyBvd24gcG9sbCgpIG1haW5sb29wIGFuZCByZWFkbGluZSB1c2VzIHZpYQor cmxfY2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsIGFuZCBybF9jYWxsYmFja19oYW5kbGVyX3JlbW92 ZS4gIFRoaXMgd2F5IHRoZQorcmVhZGxpbmUgaW50ZXJuYWwgdmFyaWFibGUgX3JsX2ludGVycnVw dF9pbW1lZGlhdGVseSByZW1haW5zIDAgYW5kIENUUkwtQyBnZXRzCitvbmx5IHN0b3JlZCB0byBf cmxfY2F1Z2h0X3NpZ25hbCBidXQgbm90IGV4ZWN1dGVkLgorCitTZWVuIGluIHJsX3NpZ25hbF9o YW5kbGVyIGV2ZW4gaWYgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSBpcyBzZXQgYW5kCitfcmxf aGFuZGxlX3NpZ25hbCBpcyBjYWxsZWQgdGhlbiB0aGUgc2lnbmFsIGlzIHN0aWxsIHN0b3JlZCB0 bworX3JsX2NhdWdodF9zaWduYWwuICBJbiB0aGUgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSBj YXNlIGl0IHNob3VsZCBub3QgYmUKK3N0b3JlZCB3aGVuIGl0IHdhcyBhbHJlYWR5IHByb2Nlc3Nl ZC4KKworcmxfc2lnbmFsX2hhbmRsZXIgZG9lcyBgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSA9 IDA7JyAtIHdoaWxlIEkgYW0gbm90IGF3YXJlCitvZiBpdHMgbWVhbmluZyBpdCBicmVha3MgdGhl IG5lc3QtY291bnRpbmcgb2Ygb3RoZXIgcm91dGluZXMgd2hpY2ggZG8KK2BfcmxfaW50ZXJydXB0 X2ltbWVkaWF0ZWx5Kys7JyBhbmQgYF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHktLTsnIHBvc3Np Ymx5CitjcmVhdGluZyBwcm9ibGVtYXRpYyBgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSA9PSAt MScuCisKK2BfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5JyBpcyBhbiBpbnRlcm5hbCB2YXJpYWJs ZSwgaG93IGl0IGNvdWxkIGJlIGFjY2Vzc2VkCitieSBhIHJlYWRsaW5lIGFwcGxpY2F0aW9uPyAo T0ssIG1heWJlIGl0IHNob3VsZCBub3QgYmUgdXNlZC4pCisKK0F0dGFjaGluZyBhIGN1cnJlbnQg R0RCLXNpZGUgcGF0Y2ggYnV0IGl0IG11c3QgYWNjZXNzIHJlYWRsaW5lIGludGVybmFsCit2YXJp YWJsZSBfcmxfY2F1Z2h0X3NpZ25hbCBhbmQgaXQgaXMgZ2VuZXJhbGx5IGp1c3QgYSB3b3JrYXJv dW5kLiAgQ291bGQgeW91CitwbGVhc2UgaW5jbHVkZSBzdXBwb3J0IGZvciBzaWduYWxzIGluIHRo aXMgYXN5bmNocm9ub3VzIG1vZGUgaW4gcmVhZGxpbmUtNi4xPworSSBmaW5kIGl0IHdvdWxkIGJl IGVub3VnaCB0byBtYWtlIFJMX0NIRUNLX1NJR05BTFMgcHVibGljPworCisKK0dEQjogTm8gcmVn cmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4K K0J1dCB0aGlzIGlzIG5vdCBhIHBhdGNoIGludGVuZGVkIHRvIGJlIGFjY2VwdGVkLgorCisKK1Ro YW5rcywKK0phbgorCisKK2dkYi8KKzIwMDktMTEtMjkgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJh dGUuCisJKiBjb25maWd1cmUuYWMgKGZvciByZWFkbGluZV9lY2hvaW5nX3ApOiBNb3ZlIGluc2lk ZSAkTElCUyBjaGFuZ2UuCisJKGZvciBfcmxfY2F1Z2h0X3NpZ25hbCk6IE5ldy4KKwkqIGV2ZW50 LWxvb3AuYzogSW5jbHVkZSByZWFkbGluZS9yZWFkbGluZS5oLgorCShnZGJfZG9fb25lX2V2ZW50 KSBbSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMXTogTmV3LgorCitnZGIvdGVzdHN1aXRlLwor MjAwOS0xMS0yOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgor CisJKiBnZGIuZ2RiL3NlbGZ0ZXN0LmV4cCAoYmFja3RyYWNlIHRocm91Z2ggc2lnbmFsIGhhbmRs ZXIpOiBNb3ZlIGJlZm9yZQorCVNJR0lOVCBwYXNzLCBkcm9wIHRoZSB0aW1lb3V0IGNhc2UuCisJ KHNlbmQgU0lHSU5UIHNpZ25hbCB0byBjaGlsZCBwcm9jZXNzKTogVXNlIGdkYl90ZXN0LgorCShi YWNrdHJhY2UgdGhyb3VnaCByZWFkbGluZSBoYW5kbGVyKTogTmV3LgorCistLS0gYS9nZGIvY29u ZmlnLmluCisrKysgYi9nZGIvY29uZmlnLmluCitAQCAtMzUxLDYgKzM1MSw5IEBACisgLyogRGVm aW5lIGlmIFB5dGhvbiBpbnRlcnByZXRlciBpcyBiZWluZyBsaW5rZWQgaW4uICovCisgI3VuZGVm IEhBVkVfUFlUSE9OCisgCisrLyogcmVhZGxpbmUtNi4wIHdvcmthcm91bmQgb2YgYmxvY2tlZCBz aWduYWxzLiAqLworKyN1bmRlZiBIQVZFX1JFQURMSU5FX0NBVUdIVF9TSUdOQUwKKysKKyAvKiBE ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWxwYXRoJyBmdW5jdGlvbi4gKi8KKyAjdW5k ZWYgSEFWRV9SRUFMUEFUSAorIAorLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYworKysrIGIvZ2RiL2Nv bmZpZ3VyZS5hYworQEAgLTUzOSwxNyArNTM5LDI1IEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9y ZWFkbGluZSIgPSB5ZXM7IHRoZW4KKyAgICMgcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIHRo ZSBuYW1lIGBfcmxfZWNob2luZ19wJy4KKyAgICMgYCQoUkVBRExJTkVfRElSKS8nIG9mIGJ1bmRs ZWQgcmVhZGxpbmUgd291bGQgbm90IHJlc29sdmUgaW4gY29uZmlndXJlLgorIAorLSAgQUNfTVNH X0NIRUNLSU5HKFtmb3IgcmVhZGxpbmVfZWNob2luZ19wXSkKKyAgIHNhdmVfTElCUz0kTElCUwor ICAgTElCUz0iJExJQlMgJFJFQURMSU5FIgorKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcmVhZGxp bmVfZWNob2luZ19wXSkKKyAgIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSgsW1tleHRl cm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKKyAJCQkJICAgIHJldHVybiByZWFkbGluZV9lY2hv aW5nX3A7XV0pLAorIAkJIFtSRUFETElORV9FQ0hPSU5HX1A9eWVzXSwKKyAJCSBbUkVBRExJTkVf RUNIT0lOR19QPW5vCisgCQkgIEFDX0RFRklORShbcmVhZGxpbmVfZWNob2luZ19wXSwgW19ybF9l Y2hvaW5nX3BdLAorIAkJCSAgICBbcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIGRpZmZlcmVu dCBuYW1lLl0pXSkKKy0gIExJQlM9IiRzYXZlX0xJQlMiCisgICBBQ19NU0dfUkVTVUxUKFskUkVB RExJTkVfRUNIT0lOR19QXSkKKysgIEFDX01TR19DSEVDS0lORyhbZm9yIF9ybF9jYXVnaHRfc2ln bmFsXSkKKysgIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSgsW1tleHRlcm4gaW50IHZv bGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFsOworKwkJCQkgICAgcmV0dXJuIF9ybF9jYXVnaHRfc2ln bmFsO11dKSwKKysJCSBbUkVBRExJTkVfQ0FVR0hUX1NJR05BTD15ZXMKKysJCSAgQUNfREVGSU5F KFtIQVZFX1JFQURMSU5FX0NBVUdIVF9TSUdOQUxdLCwKKysJCQkgICAgW3JlYWRsaW5lLTYuMCB3 b3JrYXJvdW5kIG9mIGJsb2NrZWQgc2lnbmFscy5dKV0sCisrCQkgW1JFQURMSU5FX0NBVUdIVF9T SUdOQUw9bm9dKQorKyAgQUNfTVNHX1JFU1VMVChbJFJFQURMSU5FX0NBVUdIVF9TSUdOQUxdKQor KyAgTElCUz0iJHNhdmVfTElCUyIKKyBlbHNlCisgICBSRUFETElORT0nJChSRUFETElORV9ESVIp L2xpYnJlYWRsaW5lLmEnCisgICBSRUFETElORV9ERVBTPSckKFJFQURMSU5FKScKKy0tLSBhL2dk Yi9ldmVudC1sb29wLmMKKysrKyBiL2dkYi9ldmVudC1sb29wLmMKK0BAIC0zNyw2ICszNyw3IEBA CisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorICNp bmNsdWRlICJnZGJfc2VsZWN0LmgiCisrI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCisg CisgLyogRGF0YSBwb2ludCB0byBwYXNzIHRvIHRoZSBldmVudCBoYW5kbGVyLiAgKi8KKyB0eXBl ZGVmIHVuaW9uIGV2ZW50X2RhdGEKK0BAIC00MTEsNiArNDEyLDkgQEAgZ2RiX2RvX29uZV9ldmVu dCAodm9pZCAqZGF0YSkKKyAgIHN0YXRpYyBpbnQgZXZlbnRfc291cmNlX2hlYWQgPSAwOworICAg Y29uc3QgaW50IG51bWJlcl9vZl9zb3VyY2VzID0gMzsKKyAgIGludCBjdXJyZW50ID0gMDsKKysj aWZkZWYgSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMCisrICBleHRlcm4gaW50IHZvbGF0aWxl IF9ybF9jYXVnaHRfc2lnbmFsOworKyNlbmRpZgorIAorICAgLyogQW55IGV2ZW50cyBhbHJlYWR5 IHdhaXRpbmcgaW4gdGhlIHF1ZXVlPyAgKi8KKyAgIGlmIChwcm9jZXNzX2V2ZW50ICgpKQorQEAg LTQ1NSw2ICs0NTksMTYgQEAgZ2RiX2RvX29uZV9ldmVudCAodm9pZCAqZGF0YSkKKyAgIGlmIChn ZGJfd2FpdF9mb3JfZXZlbnQgKDEpIDwgMCkKKyAgICAgcmV0dXJuIC0xOworIAorKyNpZmRlZiBI QVZFX1JFQURMSU5FX0NBVUdIVF9TSUdOQUwKKysgIGlmIChhc3luY19jb21tYW5kX2VkaXRpbmdf cCAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9DQUxMQkFDSykKKysgICAgICAmJiBfcmxfY2F1Z2h0 X3NpZ25hbCkKKysgICAgeworKyAgICAgIC8qIENhbGwgUkxfQ0hFQ0tfU0lHTkFMUyB0aGlzIHdh eS4gICovCisrICAgICAgcmxfY2FsbGJhY2tfaGFuZGxlcl9yZW1vdmUgKCk7CisrICAgICAgcmxf Y2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsIChOVUxMLCBpbnB1dF9oYW5kbGVyKTsKKysgICAgfQor KyNlbmRpZgorKworICAgLyogSGFuZGxlIGFueSBuZXcgZXZlbnRzIG9jY3VycmVkIHdoaWxlIHdh aXRpbmcuICAqLworICAgaWYgKHByb2Nlc3NfZXZlbnQgKCkpCisgICAgIHJldHVybiAxOworLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorQEAgLTQ2NCwzMSArNDY0LDQyIEBAIEdEQi4qQ29weXJp Z2h0IFxbMC05XF0rIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLi4qJGdkYl9wcm9tcHQg JCJcCisgCSAgICBmYWlsICIkZGVzY3JpcHRpb24gKHRpbWVvdXQpIgorIAl9CisgICAgIH0KKy0g ICAgCistICAgIHNldCBkZXNjcmlwdGlvbiAic2VuZCBTSUdJTlQgc2lnbmFsIHRvIGNoaWxkIHBy b2Nlc3MiCistICAgIHNlbmRfZ2RiICJzaWduYWwgU0lHSU5UXG4iCistICAgIGdkYl9leHBlY3Qg eworLQktcmUgIkNvbnRpbnVpbmcgd2l0aCBzaWduYWwgU0lHSU5ULiokZ2RiX3Byb21wdCAkIiB7 CisrCisrICAgICMgZ2V0IGEgc3RhY2sgdHJhY2Ugd2l0aCB0aGUgcG9sbCBmdW5jdGlvbgorKyAg ICAjCisrICAgICMgVGhpcyBmYWlscyBvbiBzb21lIGxpbnV4IHN5c3RlbXMgZm9yIHVua25vd24g cmVhc29ucy4gIE9uIHRoZQorKyAgICAjIHN5c3RlbXMgd2hlcmUgaXQgZmFpbHMsIHNvbWV0aW1l cyBpdCB3b3JrcyBmaW5lIHdoZW4gcnVuIG1hbnVhbGx5LgorKyAgICAjIFRoZSB0ZXN0c3VpdGUg ZmFpbHVyZXMgbWF5IG5vdCBiZSBsaW1pdGVkIHRvIGp1c3QgYW91dCBzeXN0ZW1zLgorKyAgICBz ZXR1cF94ZmFpbCAiaSo4Ni1wYy1saW51eGFvdXQtZ251IgorKyAgICBzZXQgZGVzY3JpcHRpb24g ImJhY2t0cmFjZSB0aHJvdWdoIHNpZ25hbCBoYW5kbGVyIgorKyAgICBnZGJfdGVzdF9tdWx0aXBs ZSAiYmFja3RyYWNlIiAkZGVzY3JpcHRpb24geworKwktcmUgIiMwLioocmVhZHxwb2xsKS4qaW4g bWFpbiBcXCguKlxcKSBhdCAuKmdkYlxcLmMuKiRnZGJfcHJvbXB0ICQiIHsKKyAJICAgIHBhc3Mg IiRkZXNjcmlwdGlvbiIKKyAJfQorIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIgeworKwkgICAgIyBP biB0aGUgYWxwaGEsIHdlIGhpdCB0aGUgaW5mYW1vdXMgcHJvYmxlbSBhYm91dCBnZGIKKysJICAg ICMgYmVpbmcgdW5hYmxlIHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciAobWVudGlvbmVkIGluCisr CSAgICAjIGdkYi9SRUFETUUpLiAgQXMgaXQgaXMgaW50ZXJtaXR0ZW50LCB0aGVyZSBpcyBubyB3 YXkgdG8KKysJICAgICMgWEZBSUwgaXQgd2hpY2ggd2lsbCBnaXZlIHVzIGFuIFhQQVNTIGlmIHRo ZSBwcm9ibGVtIGdvZXMKKysJICAgICMgYXdheS4KKysJICAgIHNldHVwX3hmYWlsICJhbHBoYSot Ki1vc2YqIgorIAkgICAgZmFpbCAiJGRlc2NyaXB0aW9uIgorIAl9CistCXRpbWVvdXQgeworLQkg ICAgZmFpbCAiJGRlc2NyaXB0aW9uICh0aW1lb3V0KSIKKy0JfQorICAgICB9CisgICAgIAorLSAg ICAjIGdldCBhIHN0YWNrIHRyYWNlCisrICAgIGdkYl90ZXN0ICJzaWduYWwgU0lHSU5UIiAiQ29u dGludWluZyB3aXRoIHNpZ25hbCBTSUdJTlQuKiIgXAorKwkgICAgICJzZW5kIFNJR0lOVCBzaWdu YWwgdG8gY2hpbGQgcHJvY2VzcyIKKysgICAgCisrICAgICMgZ2V0IGEgc3RhY2sgdHJhY2UgYmVp bmcgcmVkZWxpdmVyZWQgYnkgcmVhZGxpbmUKKyAgICAgIworICAgICAjIFRoaXMgZmFpbHMgb24g c29tZSBsaW51eCBzeXN0ZW1zIGZvciB1bmtub3duIHJlYXNvbnMuICBPbiB0aGUKKyAgICAgIyBz eXN0ZW1zIHdoZXJlIGl0IGZhaWxzLCBzb21ldGltZXMgaXQgd29ya3MgZmluZSB3aGVuIHJ1biBt YW51YWxseS4KKyAgICAgIyBUaGUgdGVzdHN1aXRlIGZhaWx1cmVzIG1heSBub3QgYmUgbGltaXRl ZCB0byBqdXN0IGFvdXQgc3lzdGVtcy4KKysgICAgIyBPcHRpb25hbCBzeXN0ZW0gcmVhZGxpbmUg bWF5IG5vdCBoYXZlIHN5bWJvbHMgdG8gYmUgc2hvd24uCisgICAgIHNldHVwX3hmYWlsICJpKjg2 LXBjLWxpbnV4YW91dC1nbnUiCistICAgIHNldCBkZXNjcmlwdGlvbiAiYmFja3RyYWNlIHRocm91 Z2ggc2lnbmFsIGhhbmRsZXIiCistICAgIHNlbmRfZ2RiICJiYWNrdHJhY2VcbiIKKy0gICAgZ2Ri X2V4cGVjdCB7CistCS1yZSAiIzAuKihyZWFkfHBvbGwpLippbiBtYWluIFxcKC4qXFwpIGF0IC4q Z2RiXFwuYy4qJGdkYl9wcm9tcHQgJCIgeworKyAgICBzZXQgZGVzY3JpcHRpb24gImJhY2t0cmFj ZSB0aHJvdWdoIHJlYWRsaW5lIGhhbmRsZXIiCisrICAgIGdkYl90ZXN0X211bHRpcGxlICJiYWNr dHJhY2UiICRkZXNjcmlwdGlvbiB7CisrCS1yZSAiIzAuKmdkYl9kb19vbmVfZXZlbnQuKmluIG1h aW4gXFwoLipcXCkgYXQgLipnZGJcXC5jLiokZ2RiX3Byb21wdCAkIiB7CisgCSAgICBwYXNzICIk ZGVzY3JpcHRpb24iCisgCX0KKyAJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKK0BAIC01MDAsOSAr NTEwLDYgQEAgR0RCLipDb3B5cmlnaHQgXFswLTlcXSsgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuLiokZ2RiX3Byb21wdCAkIlwKKyAJICAgIHNldHVwX3hmYWlsICJhbHBoYSotKi1vc2Yq IgorIAkgICAgZmFpbCAiJGRlc2NyaXB0aW9uIgorIAl9CistCXRpbWVvdXQgeworLQkgICAgZmFp bCAiJGRlc2NyaXB0aW9uICh0aW1lb3V0KSIKKy0JfQorICAgICB9CisgCisgCistLS0gZ2RiLTcu MC9nZGIvY29uZmlndXJlCTIwMDktMTItMDcgMTg6NTM6MzAuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC14L2dkYi9jb25maWd1cmUJMjAwOS0xMi0wNyAxODo1MzoxNC4wMDAwMDAwMDAgKzAx MDAKK0BAIC05MjAxLDE1ICs5MjAxLDExIEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGlu ZSIgPSB5ZXM7IHQKKyAgICMgcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIHRoZSBuYW1lIGBf cmxfZWNob2luZ19wJy4KKyAgICMgYCQoUkVBRExJTkVfRElSKS8nIG9mIGJ1bmRsZWQgcmVhZGxp bmUgd291bGQgbm90IHJlc29sdmUgaW4gY29uZmlndXJlLgorIAorLSAgZWNobyAiJGFzX21lOiRM SU5FTk86IGNoZWNraW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3AiID4mNQorLWVjaG8gJEVDSE9f TiAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcC4uLiAkRUNIT19DIiA+JjYKKyAgIHNh dmVfTElCUz0kTElCUworICAgTElCUz0iJExJQlMgJFJFQURMSU5FIgorLSAgY2F0ID5jb25mdGVz dC4kYWNfZXh0IDw8X0FDRU9GCistLyogY29uZmRlZnMuaC4gICovCistX0FDRU9GCistY2F0IGNv bmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CistY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgcmVhZGxpbmVfZWNob2luZ19wIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Ig cmVhZGxpbmVfZWNob2luZ19wLi4uICIgPiY2OyB9CisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAor QEAgLTkyMjEsNDUgKzkyMTcsNDUgQEAgZXh0ZXJuIGludCByZWFkbGluZV9lY2hvaW5nX3A7Cisg ICByZXR1cm4gMDsKKyB9CisgX0FDRU9GCistcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdCRhY19leGVleHQKKy1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19s aW5rXCIiKSA+JjUKKy0gIChldmFsICRhY19saW5rKSAyPmNvbmZ0ZXN0LmVyMQorLSAgYWNfc3Rh dHVzPSQ/CistICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorLSAg cm0gLWYgY29uZnRlc3QuZXIxCistICBjYXQgY29uZnRlc3QuZXJyID4mNQorLSAgZWNobyAiJGFz X21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorLSAgKGV4aXQgJGFjX3N0YXR1cyk7 IH0gJiYKKy0JIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKy0JCQkgfHwg dGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKy0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwiJGFjX3RyeVwiIikgPiY1CistICAoZXZhbCAkYWNfdHJ5KSAyPiY1CistICBhY19zdGF0dXM9 JD8KKy0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKy0gIChl eGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCistCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRh Y19leGVleHQnCistICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIp ID4mNQorLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQorLSAgYWNfc3RhdHVzPSQ/CistICBlY2hvICIk YXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CistICAoZXhpdCAkYWNfc3RhdHVz KTsgfTsgfTsgdGhlbgorK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAg IFJFQURMSU5FX0VDSE9JTkdfUD15ZXMKKyBlbHNlCistICBlY2hvICIkYXNfbWU6IGZhaWxlZCBw cm9ncmFtIHdhczoiID4mNQorLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKysg IFJFQURMSU5FX0VDSE9JTkdfUD1ubworIAorLVJFQURMSU5FX0VDSE9JTkdfUD1ubworKyRhc19l Y2hvICIjZGVmaW5lIHJlYWRsaW5lX2VjaG9pbmdfcCBfcmxfZWNob2luZ19wIiA+PmNvbmZkZWZz LmgKKysKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg XAorKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5H X1AiID4mNQorKyRhc19lY2hvICIkUkVBRExJTkVfRUNIT0lOR19QIiA+JjY7IH0KKysgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9ybF9jYXVn aHRfc2lnbmFsIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgX3JsX2NhdWdodF9zaWdu YWwuLi4gIiA+JjY7IH0KKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCistY2F0ID4+Y29uZmRlZnMuaCA8PFxf QUNFT0YKKy0jZGVmaW5lIHJlYWRsaW5lX2VjaG9pbmdfcCBfcmxfZWNob2luZ19wCisraW50Cisr bWFpbiAoKQorK3sKKytleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFsOworKwkJ CQkgICAgcmV0dXJuIF9ybF9jYXVnaHRfc2lnbmFsOworKyAgOworKyAgcmV0dXJuIDA7CisrfQor IF9BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKysgIFJFQURM SU5FX0NBVUdIVF9TSUdOQUw9eWVzCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9SRUFETElO RV9DQVVHSFRfU0lHTkFMIC8qKi8iID4+Y29uZmRlZnMuaAorIAorK2Vsc2UKKysgIFJFQURMSU5F X0NBVUdIVF9TSUdOQUw9bm8KKyBmaQorLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IFwKKy0gICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorK3Jt IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorKyAgICBjb25mdGVz dCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9DQVVHSFRfU0lHTkFMIiA+JjUKKysk YXNfZWNobyAiJFJFQURMSU5FX0NBVUdIVF9TSUdOQUwiID4mNjsgfQorICAgTElCUz0iJHNhdmVf TElCUyIKKy0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5H X1AiID4mNQorLWVjaG8gIiR7RUNIT19UfSRSRUFETElORV9FQ0hPSU5HX1AiID4mNgorIGVsc2UK KyAgIFJFQURMSU5FPSckKFJFQURMSU5FX0RJUikvbGlicmVhZGxpbmUuYScKKyAgIFJFQURMSU5F X0RFUFM9JyQoUkVBRExJTkUpJwoKZGlmZiAtLWdpdCBhL2dkYi1yaGVsNS1jb21wYXQucGF0Y2gg Yi9nZGItcmhlbDUtY29tcGF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjk3YjI3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmhlbDUtY29tcGF0LnBhdGNoCkBA IC0wLDAgKzEsNjUgQEAKK2dkYi9saW51eC1uYXQuYzoKKy0gV29ya2Fyb3VuZCBSSEVMLTUga2Vy bmVscyBmb3IgZGV0YWNoaW5nIFNJR1NUT1BwZWQgcHJvY2Vzc2VzIChCWiA0OTg1OTUpLgorCist LS0gZ2RiLTYuOC9nZGItb3JpZy9zeW1maWxlLmMJMjAwOC0wOC0yMSAwMDowNjo1MC4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNi44L2dkYi9zeW1maWxlLmMJMjAwOC0wOC0yMSAyMjozMTowMC4w MDAwMDAwMDAgKzAyMDAKK0BAIC0xNDU2LDggKzE0NTYsMTAgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQorICAgICAgIC8qIFByZXZlbnQgbG9vcGluZyBvbiBhIHN0 cmlwcGVkIC5kZWJ1ZyBmaWxlLiAgKi8KKyAgICAgICBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxM ICYmIHN0cmNtcCAoYnVpbGRfaWRfbmFtZSwgb2JqZmlsZS0+bmFtZSkgPT0gMCkKKyAgICAgICAg IHsKKysjaWYgMCAvKiBSSEVMLTUgYmFja3dhcmQgYmVoYXZpb3IgY29tcGF0aWJpbGl0eS4gICov CisgCSAgd2FybmluZyAoXygiXCIlc1wiOiBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGUgaGFzIG5v IGRlYnVnIGluZm8iKSwKKyAJCSAgIGJ1aWxkX2lkX25hbWUpOworKyNlbmRpZgorIAkgIHhmcmVl IChidWlsZF9pZF9uYW1lKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0g TlVMTCkKKy0tLSAuL2dkYi9jb3JlbG93LmMJMjAxMC0wMS0wMSAxNjowNDozNC4wMDAwMDAwMDAg KzAxMDAKKysrKyAuL2dkYi9jb3JlbG93LmMJMjAxMC0wMS0wMSAxNjowNjoyNi4wMDAwMDAwMDAg KzAxMDAKK0BAIC0yNzcsNyArMjc3LDcgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQs IGFzZWN0aW9uIAorICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZDsJCQkgLyogWWVzLCBtYWtlIGl0 IGN1cnJlbnQgKi8KKyB9CisgCistc3RhdGljIGludCBidWlsZF9pZF9jb3JlX2xvYWRzID0gMTsK KytzdGF0aWMgaW50IGJ1aWxkX2lkX2NvcmVfbG9hZHMgPSAwOworIAorIHN0YXRpYyB2b2lkCisg YnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKKy0tLSAuL2dkYi9zeW1maWxlLmMJ MjAxMC0wMS0wMSAxNjowNDozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9zeW1maWxlLmMJ MjAxMC0wMS0wMSAxNjowNjoxMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjQ5LDcgKzEyNDksNyBA QCBzeW1ib2xfZmlsZV9jbGVhciAoaW50IGZyb21fdHR5KQorICNkZWZpbmUgQlVJTERfSURfVkVS Qk9TRV9OT05FIDAKKyAjZGVmaW5lIEJVSUxEX0lEX1ZFUkJPU0VfRklMRU5BTUVTIDEKKyAjZGVm aW5lIEJVSUxEX0lEX1ZFUkJPU0VfQklOQVJZX1BBUlNFIDIKKy1zdGF0aWMgaW50IGJ1aWxkX2lk X3ZlcmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX0ZJTEVOQU1FUzsKKytzdGF0aWMgaW50IGJ1aWxk X2lkX3ZlcmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX05PTkU7Cisgc3RhdGljIHZvaWQKKyBzaG93 X2J1aWxkX2lkX3ZlcmJvc2UgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisg CQkgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQor LS0tIGdkYi03LjAtb3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOS0xMi0xOSAyMDo1Mzo0Ni4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wL2dkYi9saW51eC1uYXQuYwkyMDA5LTEyLTE5IDIwOjU1 OjAyLjAwMDAwMDAwMCArMDEwMAorQEAgLTE2MDQsOCArMTYwNCwyMiBAQCBHUFQ6IGx3cCAlcyBo YWQgc2lnbmFsICVzLCBidXQgaXQgaXMgaW4gCisgCSpzdGF0dXMgPSBscC0+c3RhdHVzOworICAg ICB9CisgCistICBpZiAoKnN0YXR1cyA9PSAwICYmIEdFVF9QSUQgKGxwLT5wdGlkKSA9PSBwaWRf d2FzX3N0b3BwZWQpCistICAgICpzdGF0dXMgPSBXX1NUT1BDT0RFIChTSUdTVE9QKTsKKysgIC8q IFdvcmthcm91bmQgUkhFTC01IGtlcm5lbCB3aGljaCBoYXMgdW5yZWxpYWJsZSBQVFJBQ0VfREVU QUNILCBTSUdTVE9QICh0aGF0CisrICAgICBtYW55IFRJRHMgYXJlIGxlZnQgdW5zdG9wcGVkKS4g IFNlZSBSSCBCdWcgNDk2NzMyLiAgKi8KKysgIGlmIChHRVRfUElEIChscC0+cHRpZCkgPT0gcGlk X3dhc19zdG9wcGVkKQorKyAgICB7CisrICAgICAgaW50IGVycjsKKysKKysgICAgICBlcnJubyA9 IDA7CisrICAgICAgZXJyID0ga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgU0lHU1RPUCk7 CisrICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKysJeworKwkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKysJCQkgICAgICAiU0M6ICBsd3Aga2lsbCAlZCAlc1xuIiwKKysJCQkg ICAgICBlcnIsCisrCQkJICAgICAgZXJybm8gPyBzYWZlX3N0cmVycm9yIChlcnJubykgOiAiRVJS Tk8tT0siKTsKKysJfQorKyAgICB9CisgCisgICByZXR1cm4gMDsKKyB9CgpkaWZmIC0tZ2l0IGEv Z2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZmE4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt cmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTAsMCArMSw0MDUgQEAKK1NvbWUgZnVuY3Rpb25hbGl0eSBp cyBhdmFpbGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBnY2M0NCBhbmQgZ2ZvcnRyYW40NCBh cwordGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4x LgorCistLS0gZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAtb3JpZwkyMDA5 LTEyLTIwIDAwOjM4OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEuZXhwCTIwMDktMTItMjAgMDA6NTQ6MTkuMDAwMDAwMDAwICswMTAwCitA QCAtMTYsNyArMTYsMjUgQEAKKyBzZXQgdGVzdGZpbGUgdmxhCisgc2V0IHNyY2ZpbGUgJHt0ZXN0 ZmlsZX0uYworIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKy1p ZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7Ymlu ZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrIyBUZW1wb3JhcmlseSBwcm92 aWRlIGNvbXBpbGVyPWdjYzQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorKwor K3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KKytpZiBbYm9hcmRfaW5mbyAkYm9hcmQgZXhp c3RzIGNvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfY29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJk IGNvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZvIGNvbXBpbGVyCisrfSBlbHNlaWYgW2lu Zm8gZXhpc3RzIG9sZF9jb21waWxlcl0geworKyAgICB1bnNldCBvbGRfY29tcGlsZXIKKyt9Cisr c2V0X2JvYXJkX2luZm8gY29tcGlsZXIgZ2NjNDQKKysKKytzZXQgZXJyIFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgcXVpZXR9XQorKworK3Vuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKKytpZiBbaW5mbyBl eGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGNvbXBpbGVyICRvbGRf Y29tcGlsZXIKKyt9CisrCisraWYgIHsgJGVyciAhPSAiIiB9IHsKKyAgICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorICAgICByZXR1cm4gLTEKKyB9CistLS0gZ2Ri LTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAtb3JpZwkyMDA5LTEy LTIwIDAwOjM4OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMDktMTItMjAgMDE6MTE6NDcuMDAwMDAwMDAwICsw MTAwCitAQCAtMzEsMTAgKzMxLDMwIEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGVf bGlifV0geworICAgICByZXR1cm4gLTEKKyB9CisgCisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGNv bXBpbGVyPWdjYzQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorKyMgUkhFTC01 IHdvcmthcm91bmQgb2YgaXRzOgorKyMgICBnY2M6IC1zb25hbWU6IGxpbmtlciBpbnB1dCBmaWxl IHVudXNlZCBiZWNhdXNlIGxpbmtpbmcgbm90IGRvbmUKKysKKytzZXQgYm9hcmQgW3RhcmdldF9p bmZvIG5hbWVdCisraWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBjb21waWxlcl0geworKyAg ICBzZXQgb2xkX2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBjb21waWxlcl0KKysgICAgdW5z ZXRfYm9hcmRfaW5mbyBjb21waWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfY29tcGls ZXJdIHsKKysgICAgdW5zZXQgb2xkX2NvbXBpbGVyCisrfQorK3NldF9ib2FyZF9pbmZvIGNvbXBp bGVyIGdjYzQ0CisrCisgIyBVc2UgLXNvbmFtZSBzbyB0aGF0IGl0IGlzIGxpc3RlZCB3aXRoICIg PT4gIiBieSBsZGQgYW5kIHRoaXMgdGVzdGNhc2UgbWFrZXMKKyAjIGEgY29weSBvZiAke2JpbmZp bGVfbGlifSBmb3IgZWFjaCBwcmVsaW5rIHZhcmlhbnQuCisgCistaWYge1tnZGJfY29tcGlsZV9z aGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9IFts aXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC1zb25hbWUsJHt0ZXN0fS5zb11dICE9ICIi fSB7Cisrc2V0IGVyciBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1X bCwtc29uYW1lLCR7dGVzdH0uc29dXQorKworK3Vuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKKytp ZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGNvbXBp bGVyICRvbGRfY29tcGlsZXIKKyt9CisrCisraWYgeyAkZXJyICE9ICIiIH0geworICAgICByZXR1 cm4gLTEKKyB9CisgCitAQCAtNDgzLDkgKzUwMywzMyBAQCBmb3JlYWNoIGxkcHJlbGluayB7Tk8g WUVTfSB7CisgCQkgICAgaWYgeyRiaW5waWUgPT0gIllFUyJ9IHsKKyAJCQlsYXBwZW5kIG9wdHMg e2FkZGl0aW9uYWxfZmxhZ3M9LWZQSUUgLXBpZX0KKyAJCSAgICB9CistCQkgICAgaWYge1tidWls ZF9leGVjdXRhYmxlICR7dGVzdH0uZXhwIFtmaWxlIHRhaWwgJGV4ZWNdICRzcmNmaWxlICRvcHRz XSA9PSAtMX0geworLQkJCWNvbnRpbnVlOworKworKworKwkJICAgICMgVGVtcG9yYXJpbHkgcHJv dmlkZSBjb21waWxlcj1nY2M0NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KKysJ CSAgICAjIFJIRUwtNSB3b3JrYXJvdW5kIG9mIGl0czoKKysJCSAgICAjICAgZ2NjOiAtcnBhdGg6 IGxpbmtlciBpbnB1dCBmaWxlIHVudXNlZCBiZWNhdXNlIGxpbmtpbmcgbm90IGRvbmUKKysJCSAg ICAjICAgZ2NjOiAtLWR5bmFtaWMtbGlua2VyOiBsaW5rZXIgaW5wdXQgZmlsZSB1bnVzZWQgYmVj YXVzZSBsaW5raW5nIG5vdCBkb25lCisrCisrCQkgICAgc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBu YW1lXQorKwkJICAgIGlmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgY29tcGlsZXJdIHsKKysJ CQlzZXQgb2xkX2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBjb21waWxlcl0KKysJCQl1bnNl dF9ib2FyZF9pbmZvIGNvbXBpbGVyCisrCQkgICAgfSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9j b21waWxlcl0geworKwkJCXVuc2V0IG9sZF9jb21waWxlcgorKwkJICAgIH0KKysJCSAgICBzZXRf Ym9hcmRfaW5mbyBjb21waWxlciBnY2M0NAorKworKwkJICAgIHNldCBlcnIgW2J1aWxkX2V4ZWN1 dGFibGUgJHt0ZXN0fS5leHAgW2ZpbGUgdGFpbCAkZXhlY10gJHNyY2ZpbGUgJG9wdHNdCisrCisr CQkgICAgdW5zZXRfYm9hcmRfaW5mbyBjb21waWxlcgorKwkJICAgIGlmIFtpbmZvIGV4aXN0cyBv bGRfY29tcGlsZXJdIHsKKysJCQlzZXRfYm9hcmRfaW5mbyBjb21waWxlciAkb2xkX2NvbXBpbGVy CisgCQkgICAgfQorKworKwkJICAgIGlmIHsgJGVyciA9PSAtMSB9IHsKKysJCQljb250aW51ZQor KwkJICAgIH0KKysKKyAJCSAgICBpZiB7JGJpbnNlcGRlYnVnID09ICJTRVAifSB7CisgCQkJZ2Ri X2dudV9zdHJpcF9kZWJ1ZyAkZXhlYworIAkJCSMgSnVzdCBhIHNhbml0eSBjaGVjay4gIEFzIGdk Yl9nbnVfc3RyaXBfZGVidWcgdXNlcyB0aGUKKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vY29tbW9uLWJsb2NrLmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAor KysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMDktMTIt MTUgMDU6MjE6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMjAsNyArMjAsMjUgQEAgc2V0IHRlc3Rm aWxlICJjb21tb24tYmxvY2siCisgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisgc2V0IGJp bmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorIAorLWlmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRl IGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQu CisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFtib2FyZF9pbmZvICRib2Fy ZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRf aW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGls ZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7CisrICAgIHVuc2V0 IG9sZF9mNzdjb21waWxlcgorK30KKytzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJh bjQ0CisrCisrc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dCisrCisrdW5z ZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgorK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGls ZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgor K30KKysKKytpZiAgeyAkZXJyICE9ICIiIH0geworICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSAke3NyY2ZpbGV9IgorICAgICByZXR1cm4gLTEKKyB9CistLS0gLi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAwOS0xMi0xNSAwNToxMzo1Ni4wMDAwMDAw MDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4 cAkyMDA5LTEyLTE1IDA1OjIwOjA3LjAwMDAwMDAwMCArMDEwMAorQEAgLTI3LDcgKzI3LDI1IEBA Cisgc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQorIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5 MAorIAorLWlmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZp bGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3N31dIH0geworKyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBm Nzdjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgor KworK3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KKytpZiBbYm9hcmRfaW5mbyAkYm9hcmQg ZXhpc3RzIGY3N2NvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfZjc3Y29tcGlsZXIgW2JvYXJkX2lu Zm8gJGJvYXJkIGY3N2NvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVy IAorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgdW5zZXQg b2xkX2Y3N2NvbXBpbGVyCisrfSAKKytzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJh bjQ0CisrCisrc2V0IGVyciBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjc3fV0KKysKKyt1bnNldF9ib2FyZF9pbmZvIGY3 N2NvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0geworKyAgICBzZXRf Ym9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVyCisrfQorKworK2lmICRlcnIg eworICAgICByZXR1cm4gLTEKKyB9CisgCistLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMuZXhwCTIwMDktMTItMTUgMDU6MTM6NTYuMDAwMDAwMDAwICswMTAwCisrKysgLi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMDktMTItMTUgMDU6MTc6MjEu MDAwMDAwMDAwICswMTAwCitAQCAtMjUsNyArMjUsMjUgQEAgc2V0IHRlc3RmaWxlICJkeW5hbWlj IgorIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorIHNldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKyAKKy1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBx dWlldH1dICE9ICIiIH0geworKyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmNzdjb21waWxlcj1nZm9y dHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorKworK3NldCBib2FyZCBb dGFyZ2V0X2luZm8gbmFtZV0KKytpZiBbYm9hcmRfaW5mbyAkYm9hcmQgZXhpc3RzIGY3N2NvbXBp bGVyXSB7CisrICAgIHNldCBvbGRfZjc3Y29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJkIGY3N2Nv bXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCisrfSBlbHNlaWYgW2lu Zm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0geworKyAgICB1bnNldCBvbGRfZjc3Y29tcGlsZXIK Kyt9Cisrc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgZ2ZvcnRyYW40NAorKworK3NldCBlcnIg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XQorKworK3Vuc2V0X2JvYXJkX2luZm8gZjc3 Y29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7CisrICAgIHNldF9i b2FyZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIKKyt9CisrCisraWYgIHsgJGVy ciAhPSAiIiB9IHsKKyAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIK KyAgICAgcmV0dXJuIC0xCisgfQorLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJy YXJ5LW1vZHVsZS5leHAJMjAwOS0xMi0xNSAwNToxMzo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyAu L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCTIwMDktMTItMTUg MDU6MjI6MzcuMDAwMDAwMDAwICswMTAwCitAQCAtMjUsMTYgKzI1LDM0IEBAIGlmIFtnZXRfY29t cGlsZXJfaW5mbyBub3QtdXNlZF0geworICAgIHJldHVybiAtMQorIH0KKyAKKy1pZiAgeyBbZ2Ri X2NvbXBpbGVfc2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJG9iamRp ci8kc3ViZGlyLyRsaWJmaWxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKy0gICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgJHtzcmNsaWJmaWxlfSIKKy0gICAgcmV0dXJuIC0xCisrIyBUZW1w b3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5h bCB2YWx1ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFti b2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mNzdj b21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJk X2luZm8gZjc3Y29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVy XSB7CisrICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorIH0KKytzZXRfYm9hcmRfaW5mbyBmNzdj b21waWxlciBnZm9ydHJhbjQ0CisgCisgIyBwcmVwYXJlX2Zvcl90ZXN0aW5nIGNhbm5vdCBiZSB1 c2VkIGFzIGxpbmtpbmcgd2l0aCAkbGliZmlsZSBjYW5ub3QgYmUgcGFzc2VkCisgIyBqdXN0IGZv ciB0aGUgbGlua2luZyBwaGFzZSAoYW5kIG5vdCB0aGUgc291cmNlIGNvbXBpbGF0aW9uIHBoYXNl KS4gIEFuZCBhbnkKKyAjIHdhcm5pbmdzIG9uIGlnbm9yZWQgJGxpYmZpbGUgYWJvcnQgdGhlIHBy b2Nlc3MuCisgCistaWYgIHsgW2dkYl9jb21waWxlIFtsaXN0ICRzcmNkaXIvJHN1YmRpci8kc3Jj ZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBl eGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKytzZXQgZXJyMSBbZ2RiX2NvbXBpbGVf c2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJG9iamRpci8kc3ViZGly LyRsaWJmaWxlIHtkZWJ1ZyBmNzd9XQorK3NldCBlcnIyIFtnZGJfY29tcGlsZSBbbGlzdCAkc3Jj ZGlyLyRzdWJkaXIvJHNyY2ZpbGUgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxlXSAkb2JqZGlyLyRz dWJkaXIvJGJpbmZpbGUgZXhlY3V0YWJsZSB7ZGVidWcgZjc3fV0KKysKKyt1bnNldF9ib2FyZF9p bmZvIGY3N2NvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0geworKyAg ICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVyCisrfQorKworK2lm ICB7ICRlcnIxICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3Ny Y2xpYmZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CisraWYgIHsgJGVycjIgIT0gIiIgfSB7Cisg ICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisgICAgIHJldHVybiAt MQorIH0KKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDA5LTEy LTE1IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9tb2R1bGUuZXhwCTIwMDktMTItMTUgMDU6Mjg6NDkuMDAwMDAwMDAwICswMTAwCitAQCAt MTYsNyArMTYsMjUgQEAKKyBzZXQgdGVzdGZpbGUgIm1vZHVsZSIKKyBzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5mOTAKKyAKKy1pZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAg JHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9XSB9IHsKKysjIFRlbXBvcmFyaWx5IHByb3Zp ZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3Vu ZC4KKysKKytzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCisraWYgW2JvYXJkX2luZm8gJGJv YXJkIGV4aXN0cyBmNzdjb21waWxlcl0geworKyAgICBzZXQgb2xkX2Y3N2NvbXBpbGVyIFtib2Fy ZF9pbmZvICRib2FyZCBmNzdjb21waWxlcl0KKysgICAgdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21w aWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgdW5z ZXQgb2xkX2Y3N2NvbXBpbGVyCisrfQorK3NldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0 cmFuNDQKKysKKytzZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRl c3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9XQorKworK3Vuc2V0X2JvYXJkX2luZm8gZjc3Y29t cGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7CisrICAgIHNldF9ib2Fy ZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIKKyt9CisrCisraWYgJGVyciB7Cisg ICAgIHJldHVybiAtMQorIH0KKyAKKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMDktMTItMTUgMDU6MTg6MTMuMDAwMDAw MDAwICswMTAwCitAQCAtMjMsNyArMjMsMjUgQEAgc2V0IHRlc3RmaWxlICJzdHJpbmciCisgc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQorIAorLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0g IT0gIiIgfSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQg c2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRf aW5mbyBuYW1lXQorK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsK KysgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJd CisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlz dHMgb2xkX2Y3N2NvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK30KKytz ZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0CisrCisrc2V0IGVyciBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1 dGFibGUge2RlYnVnIGY3NyBxdWlldH1dCisrCisrdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxl cgorK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2lu Zm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgorK30KKysKKytpZiB7ICRlcnIgIT0gIiIg fSB7CisgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisgICAgIHJl dHVybiAtMQorIH0KKy0tLSBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0 ZXAuZXhwLW9yaWcJMjAwOS0xMi0yMCAwOTo0NzowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIwMDktMTItMjAgMDk6 NTA6MDYuMDAwMDAwMDAwICswMTAwCitAQCAtMTUsNyArMTUsMjYgQEAKKyAKKyBzZXQgdGVzdGZp bGUgIm9tcC1zdGVwIgorIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorLWlmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGY3 NyBhZGRpdGlvbmFsX2ZsYWdzPS1mb3Blbm1wfV0gfSB7CisrCisrIyBUZW1wb3JhcmlseSBwcm92 aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91 bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFtib2FyZF9pbmZvICRi b2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9h cmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29t cGlsZXIgCisrfSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0geworKyAgICB1 bnNldCBvbGRfZjc3Y29tcGlsZXIKKyt9IAorK3NldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdm b3J0cmFuNDQKKysKKytzZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmNzcgYWRkaXRpb25hbF9mbGFncz0tZm9w ZW5tcH1dCisrCisrdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgorK2lmIFtpbmZvIGV4aXN0 cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9s ZF9mNzdjb21waWxlcgorK30KKysKKytpZiAkZXJyIHsKKyAgICAgcmV0dXJuIC0xCisgfQorIAor LS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMDktMDEt MDcgMTM6Mzk6MTMuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAwOS0xMi0yMCAxMjozNzoxMi4wMDAwMDAwMDAgKzAxMDAK K0BAIC0yNiw3ICsyNiwyNSBAQCBzZXQgdGVzdGZpbGUgImRlcml2ZWQtdHlwZSIKKyBzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5mOTAKKyBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9CisgCistaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAi IiB9IHsKKysjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZp bmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KKysKKytzZXQgYm9hcmQgW3RhcmdldF9pbmZv IG5hbWVdCisraWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmNzdjb21waWxlcl0geworKyAg ICBzZXQgb2xkX2Y3N2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmNzdjb21waWxlcl0KKysg ICAgdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBv bGRfZjc3Y29tcGlsZXJdIHsKKysgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVyCisrfQorK3NldF9i b2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0cmFuNDQKKysKKytzZXQgZXJyIFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJs ZSB7ZGVidWcgZjc3IHF1aWV0fV0KKysKKyt1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCisr aWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0geworKyAgICBzZXRfYm9hcmRfaW5mbyBm Nzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVyCisrfQorKworK2lmIHsgJGVyciAhPSAiIiB9IHsK KyAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKKyAgICAgcmV0dXJu IC0xCisgfQorLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAw OS0wMS0wNyAxMzozOToxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMDktMTItMjAgMTI6Mzg6MDAuMDAwMDAwMDAwICswMTAw CitAQCAtMjYsNyArMjYsMjUgQEAgc2V0IHRlc3RmaWxlICJzdWJhcnJheSIKKyBzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5mCisgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfQorIAorLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Zp bGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7 CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRo ZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1l XQorK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0 IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCisrICAgIHVu c2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3 N2NvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK30KKytzZXRfYm9hcmRf aW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0CisrCisrc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2Rl YnVnIGY3NyBxdWlldH1dCisrCisrdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgorK2lmIFtp bmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29t cGlsZXIgJG9sZF9mNzdjb21waWxlcgorK30KKysKKytpZiB7ICRlcnIgIT0gIiIgfSB7CisgICAg IHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisgICAgIHJldHVybiAtMQor IH0KKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDA5 LTEyLTIwIDEyOjIyOjE4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCTIwMDktMTItMjAgMTI6Mzk6NTMuMDAwMDAwMDAwICsw MTAwCitAQCAtMzIsNyArMzIsMjUgQEAgc2V0IGJpbnNoYXJlZGRlYnVnZmlsZSAke29iamRpcn0v JHtzdWJkaQorIAorICMgRklYTUU6IGdjYyBkZXBlbmRlbmN5ICgtV2wsLXNvbmFtZSkuCisgCist aWYgIHsgW2dkYl9jb21waWxlX3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jjc2hhcmVk ZmlsZX0iICIke2JpbnNoYXJlZGZpbGV9IiBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1X bCwtc29uYW1lPSR7Ymluc2hhcmVkYmFzZX1dXSAhPSAiIiB9IHsKKysjIFRlbXBvcmFyaWx5IHBy b3ZpZGUgY29tcGlsZXI9Z2NjNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCisr Cisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFtib2FyZF9pbmZvICRib2FyZCBl eGlzdHMgY29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9jb21waWxlciBbYm9hcmRfaW5mbyAkYm9h cmQgY29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKKyt9IGVsc2VpZiBb aW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9jb21waWxlcgorK30K KytzZXRfYm9hcmRfaW5mbyBjb21waWxlciBnY2M0NAorKworK3NldCBlcnIgW2dkYl9jb21waWxl X3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jjc2hhcmVkZmlsZX0iICIke2JpbnNoYXJl ZGZpbGV9IiBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtc29uYW1lPSR7Ymluc2hh cmVkYmFzZX1dXQorKworK3Vuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKKytpZiBbaW5mbyBleGlz dHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGNvbXBpbGVyICRvbGRfY29t cGlsZXIKKyt9CisrCisraWYgeyAkZXJyICE9ICIiIH0geworICAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IGxpYnJhcnkiCisgICAgIHJldHVybiAtMQorIH0KCmRpZmYgLS1naXQg YS9nZGItc3RhYnMtcmVhZF9hcmdzLnBhdGNoIGIvZ2RiLXN0YWJzLXJlYWRfYXJncy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTE2OTI0Ci0tLSAvZGV2L251bGwK KysrIGIvZ2RiLXN0YWJzLXJlYWRfYXJncy5wYXRjaApAQCAtMCwwICsxLDcwIEBACitodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDE0Mi5odG1sCitTdWJq ZWN0OiBbcGF0Y2hdIEZpeCBjcmFzaCByZWFkaW5nIGJyb2tlbiBzdGFicworCitIaSwKKworc2Vl biB0aGlzIHN0YWJzIGZyb20gdW5rbm93biB2YXJpYW50IG9mIGdjYy00LjEuMjoKKworMTE3NjU4 NiBMU1lNICAgMCAgICAgIDE1NCAgICAwMDAwMDAwMCAxNjY4MjA3NiBiYXNpY19zdHJpbmc8Y2hh cixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID46Ol9SZXA6VHQo MCwzNCk9czEyITEsMDIwLCgwLDM1KT14c19SZXBfYmFzZTo7X1NfbWF4X3NpemU6LzIoMCwzNik9 aygwLDMwKTpfWk5TczRfUmVwMTFfU19tYXhfc2l6ZUU7X1NfdGVybWluYWw6LzIoMCwyMik6X1pO U3M0X1JlcDExX1NfdGVybWluYWxFO19TX2VtcHR5X3JlcF9zdG9yYWdlOi8yKDAsMzcpPWFyKDAs MzgpPXIoMCwzOCk7MDswMzc3Nzc3Nzc3Nzc7OzA7MzsoMCwzMCk6X1pOU3M0X1JlcDIwX1NfZW1w dHlfcmVwX3N0b3JhZ2VFO19TX2VtcHR5X3JlcDo6KDAsMzkpPWYoMCw0MCk9JigwLDM0KTpfWk5T czRfUmVwMTJfU19lbXB0eV9yZXBFdjsyQT87X01faXNfbGVha2VkOjooMCw0MSk9IygwLDM0KSwo MCw0Mik9QHM4Oy0xNjssKDAsNDMpPSooMCw0NCk9aygwLDM0KSwoMCwxKTs6X1pOS1NzNF9SZXAx Ml9NX2lzX2xlYWtlZEV2OzJCLjtfTV9pc19zaGFyZWQ6OigwLDQxKTpfWk5LU3M0X1JlcDEyX01f aXNfc2hhcmVkRXY7MkIuO19NX3NldF9sZWFrZWQ6OigwLDQ1KT0jKDAsMzQpLCgwLDEpLCgwLDMz KSwoMCwxKTs6X1pOU3M0X1JlcDEzX01fc2V0X2xlYWtlZEV2OzJBLjtfTV9zZXRfc2hhcmFibGU6 OigwLDQ1KTpfWk5TczRfUmVwMTVfTV9zZXRfc2hhcmFibGVFdjsyQS47X01fc2V0X2xlbmd0aF9h bmRfc2hhcmFibGU6OigwLDQ2KT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwoMCwyNSksKDAsMSk7Ol9a TlNzNF9SZXAyNl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlRWo7MkEuO19NX3JlZmRhdGE6Oigw LDQ3KT0jKDAsMzQpLCgwLDMpLCgwLDMzKSwoMCwxKTs6X1pOU3M0X1JlcDEwX01fcmVmZGF0YUV2 OzJBLjtfTV9ncmFiOjooMCw0OCk9IygwLDM0KSwoMCwzKSwoMCwzMyksKDAsNSksKDAsNSksKDAs MSk7Ol9aTlNzNF9SZXA3X01fZ3JhYkVSS1NhSWNFUzJfOzJBLjtfU19jcmVhdGU6OigwLDQ5KT1m KDAsMzMpOl9aTlNzNF9SZXA5X1NfY3JlYXRlRWpqUktTYUljRTsyQT87X01fZGlzcG9zZTo6KDAs NTApPSMoMCwzNCksKDAsMSksKDAsMzMpLCgwLDUpLCgwLDEpOzpfWk5TczRfUmVwMTBfTV9kaXNw b3NlRVJLU2FJY0U7MkEuO19NX2Rlc3Ryb3k6OigwLDUxKT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwo MCw1KSwoMCwxKTs6X1pOU3M0X1JlcDEwX01fZGVzdHJveUVSS1NhSWNFOzJBLjtfTV9yZWZjb3B5 OjooMCw0Nyk6X1pOU3M0X1JlcDEwX01fcmVmY29weUV2OzJBLjtfTV9jbG9uZTo6KDAsNTIpPSMo MCwzNCksKDAsMyksKDAsMzMpLCgwLDUpLCgwLDI1KSwoMCwxKTs6X1pOU3M0X1JlcDhfTV9jbG9u ZUVSS1NhSWNFajsyQS47OworCitUaGVyZSBpcyBhIEdEQiBjcmFzaCBhdDoKK19NX2lzX2xlYWtl ZDo6KDAsNDEpPSMoMCwzNCksKDAsNDIpPUBzODstMTY7LCgwLDQzKT0qKDAsNDQpPWsoMCwzNCks KDAsMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl4KKysg Wy4uLl0gU29tZSBicm9rZW4gc3RhYnMKKysJIG91dHB1dCBjb250YWluZWQgYCgwLDQxKSwoMCw0 Mik9QHM4Oy0xNjssKDAsNDMpLCgwLDEpOycgd2hlcmUgc2hvdWxkCisrCSBoYXZlIGJlZW4gcHJl c2VudCAiOy0xNiwoMCw0MykiIHJlZmVyZW5jZSBpbnN0ZWFkLiAgVGhpcyB3YXkgdGhlCisrCSBl eGNlc3NpdmUgIjsiIG1hcmtlciBwcmVtYXR1cmVseSBzdG9wcyB0aGUgcGFyYW1ldGVycyBwYXJz aW5nLiAgKi8KKworU3RpbGwgSSB3YXMgdW5hYmxlIHRvIHJlcHJvZHVjZSBwcm9kdWNpbmcgc3Vj aCBTVEFCUyBvdXRwdXQuCisKK1NvIHRoaXMgcGF0Y2ggZG9lcyBub3QgdHJ5IHRvIGNvbXBlbnNh dGUgdGhlIC0gcHJlc3VtYWJseSAtIGJ1Z2d5IFNUQUJTIG91dHB1dAorYW5kIHBhcnNlcyBzdWNo IHJlY29yZCBpbmNvcnJlY3RseS4gIEJ1dCBpdCBubyBsb25nZXIgY3Jhc2hlcy4KKworTm8gcmVn cmVzc2lvbnMgb24ge3g4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251Cit1c2luZyAt LXRhcmdldF9ib2FyZCB1bml4Ly1nc3RhYnMrLy1tMzIuCisKKworVGhhbmtzLAorSmFuCisKKwor Z2RiLworMjAxMC0wMS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgorCisJKiBzdGFic3JlYWQuYyAocmVhZF9hcmdzKTogSGFuZGxlIHplcm8gYXJndW1lbnRz LgorCitnZGIvdGVzdHN1aXRlLworMjAxMC0wMS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBnZGIuc3RhYnMvd2VpcmQuZGVmIChhcmdzOTMpOiBO ZXcuCisKKy0tLSBhL2dkYi9zdGFic3JlYWQuYworKysrIGIvZ2RiL3N0YWJzcmVhZC5jCitAQCAt NDExMSw3ICs0MTExLDE3IEBAIHJlYWRfYXJncyAoY2hhciAqKnBwLCBpbnQgZW5kLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgaW50ICpuYXJnc3AsCisgICAgIH0KKyAgICgqcHApKys7CQkJLyog Z2V0IHBhc3QgYGVuZCcgKHRoZSAnOicgY2hhcmFjdGVyKSAqLworIAorLSAgaWYgKFRZUEVfQ09E RSAodHlwZXNbbiAtIDFdKSAhPSBUWVBFX0NPREVfVk9JRCkKKysgIGlmIChuID09IDApCisrICAg IHsKKysgICAgICAvKiBXZSBzaG91bGQgcmVhZCBhdCBsZWFzdCB0aGUgVEhJUyBwYXJhbWV0ZXIg aGVyZS4gIFNvbWUgYnJva2VuIHN0YWJzCisrCSBvdXRwdXQgY29udGFpbmVkIGAoMCw0MSksKDAs NDIpPUBzODstMTY7LCgwLDQzKSwoMCwxKTsnIHdoZXJlIHNob3VsZAorKwkgaGF2ZSBiZWVuIHBy ZXNlbnQgIjstMTYsKDAsNDMpIiByZWZlcmVuY2UgaW5zdGVhZC4gIFRoaXMgd2F5IHRoZQorKwkg ZXhjZXNzaXZlICI7IiBtYXJrZXIgcHJlbWF0dXJlbHkgc3RvcHMgdGhlIHBhcmFtZXRlcnMgcGFy c2luZy4gICovCisrCisrICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJJ bnZhbGlkIChlbXB0eSkgbWV0aG9kIGFyZ3VtZW50cyIpKTsKKysgICAgICAqdmFyYXJnc3AgPSAw OworKyAgICB9CisrICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGVzW24gLSAxXSkgIT0gVFlQRV9D T0RFX1ZPSUQpCisgICAgICp2YXJhcmdzcCA9IDE7CisgICBlbHNlCisgICAgIHsKKy0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnN0YWJzL3dlaXJkLmRlZgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu c3RhYnMvd2VpcmQuZGVmCitAQCAtODgwLDMgKzg4MCw2IEBAIHZhcjM6CisgLnN0YWJzICJzeW05 MjpcICEjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVW V1hZWltdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+IixOX0xTWU0sMCwwLDAKKyAu c3RhYnMgInR5cGU5Mjp0OTI9XCAhIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG R0hJSktMTU5PUFFSU1RVVldYWVpbXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiIs Tl9MU1lNLDAsMCwwCisgLnN0YWJzICJhdHRyOTI6RzM5Mj1AXCAhIyQlJicoKSorLC0uLzAxMjM0 NTY3ODk6PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltdXl9gYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXp7fH1+OzEiLE5fR1NZTSwwLDAsIDAKKysKKysjIFNlZSByZWFkX2FyZ3MgIklu dmFsaWQgKGVtcHR5KSBtZXRob2QgYXJndW1lbnRzIiBlcnJvci4KKysuc3RhYnMgImFyZ3M5MzpH OTM9IygwLDkzKSwoMCw5Myk9QHM4Oy0xNjssKDAsOTMpLCgwLDkzKTsiLE5fR1NZTSwwLDAsMAoK ZGlmZiAtLWdpdCBhL2dkYi1zdGFsZS1yZWxhdGVkX2JyZWFrcG9pbnQucGF0Y2ggYi9nZGItc3Rh bGUtcmVsYXRlZF9icmVha3BvaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjY1Yjk0YzQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItc3RhbGUtcmVsYXRlZF9icmVh a3BvaW50LnBhdGNoCkBAIC0wLDAgKzEsMTU0IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAwOS0xMi9tc2cwMDM2NC5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIHJlbGF0 ZWRfYnJlYWtwb2ludCBzdGFsZSByZWYgY3Jhc2ggZml4CisKK0hpLAorCitnZXR0aW5nIG9jY2Fz aW9uYWwgcmFuZG9tOgorIFBBU1M6IGdkYi50aHJlYWRzL2xvY2FsLXdhdGNoLXdyb25nLXRocmVh ZC5leHA6IGxvY2FsIHdhdGNocG9pbnQgc3RpbGwgdHJpZ2dlcnMKKyBQQVNTOiBnZGIudGhyZWFk cy9sb2NhbC13YXRjaC13cm9uZy10aHJlYWQuZXhwOiBsZXQgdGhyZWFkX2Z1bmN0aW9uMCByZXR1 cm4KKyBQQVNTOiBnZGIudGhyZWFkcy9sb2NhbC13YXRjaC13cm9uZy10aHJlYWQuZXhwOiBicmVh a3BvaW50IG9uIHRocmVhZF9mdW5jdGlvbjAncyBjYWxsZXIKKy1QQVNTOiBnZGIudGhyZWFkcy9s b2NhbC13YXRjaC13cm9uZy10aHJlYWQuZXhwOiBsb2NhbCB3YXRjaHBvaW50IGF1dG9tYXRpY2Fs bHkgZGVsZXRlZAorK0VSUk9SOiBQcm9jZXNzIG5vIGxvbmdlciBleGlzdHMKKytVTlJFU09MVkVE OiBnZGIudGhyZWFkcy9sb2NhbC13YXRjaC13cm9uZy10aHJlYWQuZXhwOiBsb2NhbCB3YXRjaHBv aW50IGF1dG9tYXRpY2FsbHkgZGVsZXRlZAorCitJdCBpcyBldmVuIHJlcHJvZHVjaWJsZSBvbiBI RUFEIHVzaW5nICJpbnB1dCIgZmlsZSBiZWxvdyBhbmQ6CisJdmFsZ3JpbmQgLi4vZ2RiIC1ueCA8 aW5wdXQKKworKGdkYikgKGdkYikgQnJlYWtwb2ludCA2IGF0IDB4NDAwNjg1OiBmaWxlIC4vZ2Ri LnRocmVhZHMvbG9jYWwtd2F0Y2gtd3JvbmctdGhyZWFkLmMsIGxpbmUgNDcuCisoZ2RiKSA9PTMx NzU5PT0gSW52YWxpZCB3cml0ZSBvZiBzaXplIDQKKz09MzE3NTk9PSAgICBhdCAweDYwMUExMTog YnBzdGF0X2NoZWNrX2JyZWFrcG9pbnRfY29uZGl0aW9ucyAoYnJlYWtwb2ludC5jOjM0ODIpCis9 PTMxNzU5PT0gICAgYnkgMHg2MDFDNzA6IGJwc3RhdF9zdG9wX3N0YXR1cyAoYnJlYWtwb2ludC5j OjM1OTYpCis9PTMxNzU5PT0gICAgYnkgMHg2NUQyMjg6IGhhbmRsZV9pbmZlcmlvcl9ldmVudCAo aW5mcnVuLmM6MzU4OSkKKz09MzE3NTk9PSAgICBieSAweDY1QTU2Mzogd2FpdF9mb3JfaW5mZXJp b3IgKGluZnJ1bi5jOjIyODEpCis9PTMxNzU5PT0gICAgYnkgMHg2NTlBQTA6IHByb2NlZWQgKGlu ZnJ1bi5jOjE4ODMpCis9PTMxNzU5PT0gICAgYnkgMHg2NTMwMEI6IGNvbnRpbnVlXzEgKGluZmNt ZC5jOjY2OCkKKz09MzE3NTk9PSAgICBieSAweDY1MzI4MjogY29udGludWVfY29tbWFuZCAoaW5m Y21kLmM6NzYwKQorPT0zMTc1OT09ICAgIGJ5IDB4NUM1MUQ4OiBkb19jZnVuYyAoY2xpLWRlY29k ZS5jOjY3KQorPT0zMTc1OT09ICAgIGJ5IDB4NUM4MjRGOiBjbWRfZnVuYyAoY2xpLWRlY29kZS5j OjE3MzgpCis9PTMxNzU5PT0gICAgYnkgMHg0ODMzNUE6IGV4ZWN1dGVfY29tbWFuZCAodG9wLmM6 NDUwKQorPT0zMTc1OT09ICAgIGJ5IDB4NjcyNzNFOiBjb21tYW5kX2hhbmRsZXIgKGV2ZW50LXRv cC5jOjUxMSkKKz09MzE3NTk9PSAgICBieSAweDY3MkU1MzogY29tbWFuZF9saW5lX2hhbmRsZXIg KGV2ZW50LXRvcC5jOjczNikKKz09MzE3NTk9PSAgQWRkcmVzcyAweGJiZGM5NTAgaXMgMjQwIGJ5 dGVzIGluc2lkZSBhIGJsb2NrIG9mIHNpemUgMzM2IGZyZWUnZAorPT0zMTc1OT09ICAgIGF0IDB4 NEEwNEQ3MjogZnJlZSAodmdfcmVwbGFjZV9tYWxsb2MuYzozMjUpCis9PTMxNzU5PT0gICAgYnkg MHg0ODZFNEI6IHhmcmVlICh1dGlscy5jOjEyODYpCis9PTMxNzU5PT0gICAgYnkgMHg2MEJDMzU6 IGRlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50LmM6ODcwOCkKKz09MzE3NTk9PSAgICBieSAw eDYwQkRBRjogZGVsZXRlX2NvbW1hbmQgKGJyZWFrcG9pbnQuYzo4NzY1KQorPT0zMTc1OT09ICAg IGJ5IDB4NUM1MUQ4OiBkb19jZnVuYyAoY2xpLWRlY29kZS5jOjY3KQorPT0zMTc1OT09ICAgIGJ5 IDB4NUM4MjRGOiBjbWRfZnVuYyAoY2xpLWRlY29kZS5jOjE3MzgpCis9PTMxNzU5PT0gICAgYnkg MHg0ODMzNUE6IGV4ZWN1dGVfY29tbWFuZCAodG9wLmM6NDUwKQorPT0zMTc1OT09ICAgIGJ5IDB4 NjcyNzNFOiBjb21tYW5kX2hhbmRsZXIgKGV2ZW50LXRvcC5jOjUxMSkKKz09MzE3NTk9PSAgICBi eSAweDY3MkU1MzogY29tbWFuZF9saW5lX2hhbmRsZXIgKGV2ZW50LXRvcC5jOjczNikKKz09MzE3 NTk9PSAgICBieSAweDY3MkZDRjogZ2RiX3JlYWRsaW5lMiAoZXZlbnQtdG9wLmM6ODE3KQorPT0z MTc1OT09ICAgIGJ5IDB4NjcyNUY3OiBzdGRpbl9ldmVudF9oYW5kbGVyIChldmVudC10b3AuYzo0 MzMpCis9PTMxNzU5PT0gICAgYnkgMHg2NzBDREU6IGhhbmRsZV9maWxlX2V2ZW50IChldmVudC1s b29wLmM6ODEyKQorPT0zMTc1OT09IAorCitXYXRjaHBvaW50IDQgZGVsZXRlZCBiZWNhdXNlIHRo ZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9jayBpbgord2hpY2ggaXRzIGV4cHJlc3Npb24gaXMg dmFsaWQuCisKKworVGhlcmUgaXMgYWxyZWFkeSBhdXRvbWF0aWMgZGVsZXRpb24gb2YgUkVMQVRF RF9CUkVBS1BPSU5UIGluCittYXBfYnJlYWtwb2ludF9udW1iZXJzIGJ1dCAiZGVsZXRlIGJyZWFr cG9pbnRzIiAoZm9yIGFsbCB0aGUgYnJlYWtwb2ludHMpCitjYWxscyBkZWxldGVfYnJlYWtwb2lu dCBmcm9tIGRlbGV0ZV9jb21tYW5kIGRpcmVjdGx5IHdpdGhvdXQgY2FsbGluZworbWFwX2JyZWFr cG9pbnRfbnVtYmVycyBhbmQgaXQgZG9lcyBub3QgZGVsZXRlIHRoZSBhc3NvY2lhdGVkCiticF93 YXRjaHBvaW50X3Njb3BlLgorCitJIGZpbmQgdGhlIGF0dGFjaGVkIHBhdGNoIGlzIHJpZ2h0IGZv ciBkZWxldGVfYnJlYWtwb2ludCBpdHNlbGYgYXMgc3VjaAorZnVuY3Rpb24gc2hvdWxkIG5vdCBs ZWF2ZSBzdGFsZSByZWZlcmVuY2VzIGluIHRoZSBsZWZ0b3ZlciBkYXRhIHN0cnVjdHVyZXMuCitI b3cgd2VsbCBjb3VsZCBiZSBvdGhlciBjb2RlIGNsZWFuZWQgdXAgd2l0aCB0aGlzIHBhdGNoIGlu IHBsYWNlIEkgaGF2ZSBub3QKK3RhcmdldGVkIGJ5IHRoaXMgcGF0Y2guCisKKworVGhlIGV4aXN0 aW5nIGNvZGUgZXhwZWN0cyBhY2Nlc3NpYmlsaXR5IG9mIGZyZWVkIG1lbW9yeSBhbmQgZGlzY3Vz c2VzIHRoZQorY3VycmVudCBzdGFsZSByZWZlcmVuY2VzIHByb2JsZW06CisKK3ZvaWQKK2RlbGV0 ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorWy4uLl0KKyAgLyogSGFzIHRo aXMgYnAgYWxyZWFkeSBiZWVuIGRlbGV0ZWQ/ICBUaGlzIGNhbiBoYXBwZW4gYmVjYXVzZSBtdWx0 aXBsZQorICAgICBsaXN0cyBjYW4gaG9sZCBwb2ludGVycyB0byBicCdzLiAgYnBzdGF0IGxpc3Rz IGFyZSBlc3BlY2lhbCBjdWxwcml0cy4KKworICAgICBPbmUgZXhhbXBsZSBvZiB0aGlzIGhhcHBl bmluZyBpcyBhIHdhdGNocG9pbnQncyBzY29wZSBicC4gIFdoZW4gdGhlCisgICAgIHNjb3BlIGJw IHRyaWdnZXJzLCB3ZSBub3RpY2UgdGhhdCB0aGUgd2F0Y2hwb2ludCBpcyBvdXQgb2Ygc2NvcGUs IGFuZAorICAgICBkZWxldGUgaXQuICBXZSBhbHNvIGRlbGV0ZSBpdHMgc2NvcGUgYnAuICBCdXQg dGhlIHNjb3BlIGJwIGlzIG1hcmtlZAorICAgICAiYXV0by1kZWxldGluZyIsIGFuZCBpcyBhbHJl YWR5IG9uIGEgYnBzdGF0LiAgVGhhdCBicHN0YXQgaXMgdGhlbgorICAgICBjaGVja2VkIGZvciBh dXRvLWRlbGV0aW5nIGJwJ3MsIHdoaWNoIGFyZSBkZWxldGVkLgorCisgICAgIEEgcmVhbCBzb2x1 dGlvbiB0byB0aGlzIHByb2JsZW0gbWlnaHQgaW52b2x2ZSByZWZlcmVuY2UgY291bnRzIGluIGJw J3MsCisgICAgIGFuZC9vciBnaXZpbmcgdGhlbSBwb2ludGVycyBiYWNrIHRvIHRoZWlyIHJlZmVy ZW5jaW5nIGJwc3RhdCdzLCBhbmQKKyAgICAgdGVhY2hpbmcgZGVsZXRlX2JyZWFrcG9pbnQgdG8g b25seSBmcmVlIGEgYnAncyBzdG9yYWdlIHdoZW4gbm8gbW9yZQorICAgICByZWZlcmVuY2VzIHdl cmUgZXh0ZW50LiAgQSBjaGVhcGVyIGJhbmRhaWQgd2FzIGNob3Nlbi4gICovCisgIGlmIChicHQt PnR5cGUgPT0gYnBfbm9uZSkKKyAgICByZXR1cm47CitbLi4uXQorICBicHQtPnR5cGUgPSBicF9u b25lOworCisgIHhmcmVlIChicHQpOworfQorCisKK1doaWxlIGZpeGluZyB0aGlzIHBhcnQgbWF5 IGJlIGRpZmZpY3VsdCBJIGZpbmQgdGhlIGF0dGFjaGVkIHBhdGNoIGVhc3kgZW5vdWdoCitmaXhp bmcgdGhlIElNTyBjdXJyZW50bHkgbW9zdCBjb21tb24gY3Jhc2ggZHVlIHRvIGl0LgorCitObyBy ZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251 LgorCisKK1RoYW5rcywKK0phbgorCisKKyJpbnB1dCI6CitzZXQgaGVpZ2h0IDAKK3NldCB3aWR0 aCAwCitzZXQgY29uZmlybSBubworZmlsZSAuLi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvbG9jYWwt d2F0Y2gtd3JvbmctdGhyZWFkCitzZXQgY2FuLXVzZS1ody13YXRjaHBvaW50cyAxCiticmVhayBt YWluCitydW4KK2JyZWFrIGxvY2FsLXdhdGNoLXdyb25nLXRocmVhZC5jOjM2Citjb250aW51ZQor ZGVsZXRlIGJyZWFrcG9pbnRzCit3YXRjaCAqbXlwCitjb250aW51ZQorZGVsZXRlIGJyZWFrcG9p bnRzCitlY2hvIE1BS0Ugd2F0Y2hcbgord2F0Y2ggKm15cCBpZiB0cmlnZ2VyICE9IDAKK2VjaG8g TUFLRSBicmVha1xuCiticmVhayBsb2NhbC13YXRjaC13cm9uZy10aHJlYWQuYzo2MAoraW5mbyBi cmVhaworY29udGludWUKK2VjaG8gREVMRVRFIGZpdmVcbgorZGVsZXRlIDUKK3NldCB0cmlnZ2Vy PTEKK2NvbnRpbnVlCitzZXQgKm15cD0wCiticmVhayBsb2NhbC13YXRjaC13cm9uZy10aHJlYWQu Yzo0NworY29udGludWUKKworCisKKzIwMDktMTItMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogYnJlYWtwb2ludC5jIChkZWxldGVfYnJlYWtwb2lu dCA8YnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gTlVMTD4pOgorCU5ldy4KKworLS0tIGEvZ2Ri L2JyZWFrcG9pbnQuYworKysrIGIvZ2RiL2JyZWFrcG9pbnQuYworQEAgLTg2NDksNiArODY0OSwx NiBAQCBkZWxldGVfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKKyAgIGlmIChi cHQtPnR5cGUgPT0gYnBfbm9uZSkKKyAgICAgcmV0dXJuOworIAorKyAgLyogQXQgbGVhc3QgYXZv aWQgdGhpcyBzdGFsZSByZWZlcmVuY2UgdW50aWwgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBvZgor KyAgICAgYnJlYWtwb2ludHMgZ2V0cyByZXNvbHZlZC4gICovCisrICBpZiAoYnB0LT5yZWxhdGVk X2JyZWFrcG9pbnQgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGdkYl9hc3NlcnQgKGJwdC0+cmVs YXRlZF9icmVha3BvaW50LT5yZWxhdGVkX2JyZWFrcG9pbnQgPT0gYnB0KTsKKysgICAgICBicHQt PnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7 CisrICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJlYWtwb2ludCA9IE5V TEw7CisrICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBOVUxMOworKyAgICB9CisrCisg ICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9kZWxldGVkIChicHQtPm51bWJlcik7CisgCisg ICBpZiAoYnJlYWtwb2ludF9jaGFpbiA9PSBicHQpCisKCmRpZmYgLS1naXQgYS9nZGItdGVzdHN1 aXRlLXVua25vd24tb3V0cHV0LnBhdGNoIGIvZ2RiLXRlc3RzdWl0ZS11bmtub3duLW91dHB1dC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWRlY2FjCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLXRlc3RzdWl0ZS11bmtub3duLW91dHB1dC5wYXRjaApAQCAtMCwwICsx LDY5IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMi9tc2cw MDQ3My5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0ZTogZmFsc2UgTUkgInVua25vd24g b3V0cHV0IGFmdGVyIHJ1bm5pbmciIHJlZ3Jlc3Npb24KKworSGksCisKK3RoZSBhdHRhY2hlZCBw YXRjaCB3aWxsIHR1cm4gdGhlIHJlc3VsdHMgdGhpcyB3YXk6CistS0ZBSUw6IGdkYi5taS9taS11 bnRpbC5leHA6IHVudGlsIGFmdGVyIHdoaWxlIGxvb3AgKHVua25vd24gb3V0cHV0IGFmdGVyIHJ1 bm5pbmcpIChQUk1TOiBnZGIvMjEwNCkKKytLRkFJTDogZ2RiLm1pL21pLXVudGlsLmV4cDogdW50 aWwgYWZ0ZXIgd2hpbGUgbG9vcCAoc3RvcHBlZCBhdCB3cm9uZyBwbGFjZSkgKFBSTVM6IGdkYi8y MTA0KQorLVhGQUlMOiBnZGIubWkvbWktd2F0Y2guZXhwOiBzdzogd2F0Y2hwb2ludCB0cmlnZ2Vy ICh1bmtub3duIG91dHB1dCBhZnRlciBydW5uaW5nKQorK1hGQUlMOiBnZGIubWkvbWktd2F0Y2gu ZXhwOiBzdzogd2F0Y2hwb2ludCB0cmlnZ2VyIChzdG9wcGVkIGF0IHdyb25nIHBsYWNlKQorLUtG QUlMOiBnZGIubWkvbWkyLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUgbG9vcCAodW5rbm93 biBvdXRwdXQgYWZ0ZXIgcnVubmluZykgKFBSTVM6IGdkYi8yMTA0KQorK0tGQUlMOiBnZGIubWkv bWkyLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUgbG9vcCAoc3RvcHBlZCBhdCB3cm9uZyBw bGFjZSkgKFBSTVM6IGdkYi8yMTA0KQorLVhGQUlMOiBnZGIubWkvbWkyLXdhdGNoLmV4cDogc3c6 IHdhdGNocG9pbnQgdHJpZ2dlciAodW5rbm93biBvdXRwdXQgYWZ0ZXIgcnVubmluZykKKytYRkFJ TDogZ2RiLm1pL21pMi13YXRjaC5leHA6IHN3OiB3YXRjaHBvaW50IHRyaWdnZXIgKHN0b3BwZWQg YXQgd3JvbmcgcGxhY2UpCisKK1RoaXMgaXMgYSBmaXggb2YgS0ZBSUwta2luZCByZWdyZXNzaW9u IGR1ZSB0bzoKK2NvbW1pdCAyNmQwODZkNzQxZmIxYmIwZWVlOWQ1MGUwYmFmYTdjNWUzODgwMjNm CitSZTogW1JGQV0gZml4ICpzdG9wcGVkIGZvciBDTEkgY29tbWFuZHMKK2h0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTAyL21zZzAwMjc4Lmh0bWwKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMDIvbXNnMDAwODQuaHRtbAorcGFydDoKK2dkYi90 ZXN0c3VpdGUvCisyMDA5LTAyLTE0ICBWbGFkaW1pciBQcnVzICA8dmxhZGltaXJAY29kZXNvdXJj ZXJ5LmNvbT4KKwkqIGxpYi9taS1zdXBwb3J0LmV4cCAobWlfZXhwZWN0X3N0b3ApOiBBZGp1c3Qg dGhlIG9yZGVyIG9mIGZpZWxkcy4KKwkobWlfZXhwZWN0X2ludGVycnVwdCk6IExpa2V3aXNlLgor CSogZ2RiLm1pL21pLWNsaS5leHA6IENoZWNrIHRoYXQgInN0ZXAiIHJlc3VsdHMgaW4gcHJvcGVy ICpzdG9wcGVkCisJcmVzcG9uc2UuCisKK3JlLXdkaWZmLWVkIGZvciB5b3VyIGNvbnZlbmllbmNl IGFzOgorICAgIHZlcmJvc2UgLWxvZyAibWlfZXhwZWN0X3N0b3A6IGV4cGVjdGluZzogXFwqc3Rv cHBlZCwke3J9JHthfSR7Ym59Wy10aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFk cz0kYW55LC1dZnJhbWU9XHthZGRyPVwiJGhleFwiLGZ1bmM9XCIkZnVuY1wiLGFyZ3M9JGFyZ3Ms ZmlsZT1cIiRhbnkkZmlsZVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGZpbGVcIixs aW5lPVwiJGxpbmVcIlx9JGFmdGVyX3N0b3BwZWR7Kyx0aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0 b3BwZWQtdGhyZWFkcz0kYW55K31cclxuKCR0aHJlYWRfc2VsZWN0ZWRfcmUpPyRwcm9tcHRfcmUi CisJLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1bLXRocmVhZC1pZD1cIiRkZWNpbWFsXCIs c3RvcHBlZC10aHJlYWRzPSRhbnksLV1mcmFtZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1cIiRmdW5j XCIsYXJncz0kYXJncyxmaWxlPVwiJGFueSRmaWxlXCIsZnVsbG5hbWU9XCIke2Z1bGxuYW1lX3N5 bnRheH0kZmlsZVwiLGxpbmU9XCIoJGxpbmUpXCJcfSRhZnRlcl9zdG9wcGVkeyssdGhyZWFkLWlk PVwiJGRlY2ltYWxcIixzdG9wcGVkLXRocmVhZHM9JGFueSt9XHJcbigkdGhyZWFkX3NlbGVjdGVk X3JlKT8kcHJvbXB0X3JlIiB7CisJLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1bLXRocmVh ZC1pZD1cIiRkZWNpbWFsXCIsc3RvcHBlZC10aHJlYWRzPSRhbnksLV1mcmFtZT1ce2FkZHI9XCIk aGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxdXH1cXSxmaWxlPVwi JGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxpbmU9XCJcWzAtOVxd KlwiXH1bLSRhbnktXXsrdGhyZWFkLWlkPVwiJGRlY2ltYWxcIixzdG9wcGVkLXRocmVhZHM9JGFu eSt9XHJcbiRwcm9tcHRfcmUiIHsKKworRllJIHRoZXJlIGlzOiBzZXQgYW55ICJcW15cblxdKiIK KworInN0b3BwZWQgYXQgd3JvbmcgcGxhY2UiIGlzIHRoZSByaWdodCBraW5kIG9mIEtGQUlML1hG QUlMICh0ZXN0ZWQKK2djYy00LjEuMi00Ni5lbDVfNC4xLng4Nl82NCBhbmQgZ2NjLTQuNC4yLTIw LmZjMTIueDg2XzY0KSBhcyBkaXNjdXNzZWQKK2luIFBSIGdkYi8yMTA0LgorCitJbiB0aGUgbGFz dCBjYXNlIHRoZXJlIGlzIG1pc3NpbmcgY29tbWEgKCwpIGFmdGVyIHRoZSBmb3JtZXIgcGF0Y2gg YWJvdmUuCisKKyRhZnRlcl9zdG9wcGVkIHdhcyBJTU8gbWlzc2luZyB0aGVyZSBldmVuIGJlZm9y ZS4gIEl0IGlzIGluIHVzZSBvbmx5IGJ5CitnZGIubWkvbWktc2ltcGxlcnVuLmV4cCBhbmQgZ2Ri Lm1pL21pMi1zaW1wbGVydW4uZXhwLiAgQWxzbyBmaXhlZCBiZWxvdy4KKworTm8gcmVncmVzc2lv bnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4KKworCitU aGFua3MsCitKYW4KKworCitnZGIvdGVzdHN1aXRlLworMjAwOS0xMi0zMSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBsaWIvbWktc3VwcG9ydC5leHAg KG1pX2V4cGVjdF9zdG9wIDxzdG9wcGVkIGF0IHdyb25nIHBsYWNlPik6IEluc2VydAorCW1pc3Np bmcgJGFmdGVyX3N0b3BwZWQgYW5kIGNvbW1hICgsKSBleHBlY3RhdGlvbi4KKworLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvbGliL21p LXN1cHBvcnQuZXhwCitAQCAtMTAzOCw3ICsxMDM4LDcgQEAgcHJvYyBtaV9leHBlY3Rfc3RvcCB7 IHJlYXNvbiBmdW5jIGFyZ3MgZmlsZSBsaW5lIGV4dHJhIHRlc3QgfSB7CisgCSAgICBwYXNzICIk dGVzdCIKKyAgICAgICAgICAgICByZXR1cm4gJGV4cGVjdF9vdXQoMixzdHJpbmcpCisgCX0KKy0J LXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1mcmFtZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1c IiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxdXH1cXSxmaWxlPVwiJGFueVwiLGZ1bGxu YW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxpbmU9XCJcWzAtOVxdKlwiXH10aHJlYWQt aWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55XHJcbiRwcm9tcHRfcmUiIHsKKysJ LXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1mcmFtZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1c IiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxdXH1cXSxmaWxlPVwiJGFueVwiLGZ1bGxu YW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxpbmU9XCJcWzAtOVxdKlwiXH0kYWZ0ZXJf c3RvcHBlZCx0aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55XHJcbiRw cm9tcHRfcmUiIHsKKyAgICAgICAgICAgICB2ZXJib3NlIC1sb2cgImdvdCAkZXhwZWN0X291dChi dWZmZXIpIgorIAkgICAgZmFpbCAiJHRlc3QgKHN0b3BwZWQgYXQgd3JvbmcgcGxhY2UpIgorIAkg ICAgcmV0dXJuIC0xCisKCmRpZmYgLS1naXQgYS9nZGItd2F0Y2hwb2ludC1jb25kLWdvbmUucGF0 Y2ggYi9nZGItd2F0Y2hwb2ludC1jb25kLWdvbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMTJhNGM3NgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi13YXRjaHBvaW50 LWNvbmQtZ29uZS5wYXRjaApAQCAtMCwwICsxLDIzMSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMDktMTIvbXNnMDAzOTQuaHRtbAorU3ViamVjdDogW3BhdGNoXSBG aXggd2F0Y2hwb2ludC1hdC1lcGlsb2d1ZSA3LjAgcmVncmVzc2lvbiAoczM5MHgpCisKK0hpLAor CithdHRhY2hlZCB0ZXN0Y2FzZSByZWdyZXNzZWQgNi44LT43LjAgb24gc29tZSBzMzkweCBzeXN0 ZW1zLgorCitBdCB0aGUgbW9tZW50IFBDIGlzIGF0IGVwaWxvZ3VlIChhZnRlciBmcmFtZSBwb2lu dGVyIGdvdCBkZXN0cm95ZWQgYW5kIFBDIGlzCitzdGlsbCBpbiB0aGUgY2FsbGVlZCBmdW5jdGlv bikgd2UgbXVzdCBub3QgdHJ5IGFueSB1bndpbmRpbmcgYXMgaXQgY2FuIHRyeSB0bwordW53aW5k IGEgZ2FyYmFnZS4KKworQ29ycmVjdCB3YXkgd291bGQgYmUgdG8gaW1wbGVtZW50IGVwaWxvZ3Vl IHVud2luZGVyIChzdWNoIGFzCithbWQ2NF9lcGlsb2d1ZV9mcmFtZV91bndpbmQgb3IgaTM4Nl9l cGlsb2d1ZV9mcmFtZV91bndpbmQgb25lcykgYnV0IGl0IHdvdWxkCitub3QgYmUgc28gZWFzeSBv biBzMzkweCBhcyBpdCB3b3VsZCBuZWVkIGZ1bGwgcHJvbG9ndWUtYW5hbHl6ZXI6IEFmdGVyIFNQ IGdldHMKK3Jlc3RvcmVkIHRoZXJlIGNhbiBiZSB2YXJpb3VzIGluc3RydWN0aW9ucyBiZWZvcmUg dGhlIGxhc3QganVtcCAtIEdEQiBuZWVkcyB0bworaW50ZXJwcmV0IHRoZSBqdW1wIHRvIGZpbmQg dGhlIHJlZ2lzdGVyIHZhbHVlIHdoZXJlIGl0IGlzIGdvaW5nIHRvIGp1bXAgdG8uCiswMDAwMDA0 ODI3OWFhMDljIDxyb3VuZF9hbmRfcmV0dXJuPjoKK1suLi5dCisgIDQ4Mjc5YWExYjg6IGViIDZm IGYwIGQwIDAwIDA0IGxtZyAgJXI2LCVyMTUsMjA4KCVyMTUpCisgIDQ4Mjc5YWExYmU6IDUwIDMy IDEwIDAwICAgICAgIHN0ICAgJXIzLDAoJXIyLCVyMSkJIyBTUCAoJXIxNSkgaXMgZ29uZSBob25l CisgIDQ4Mjc5YWExYzI6IGIzIDc0IDAwIDAwICAgICAgIGx6ZXIgJXIwCisgIDQ4Mjc5YWExYzY6 IDA3IGY0ICAgICAgICAgICAgIGJyICAgJXI0CQkjICVyNCBpcyB0aGUgdGFyZ2V0CitbLi4uXQor CitKdXN0IGFuIGVhc3kgZml4IGlzIHRvIGJlIG1vcmUgY2FyZWZ1bCBhbmQgZG8gbm90IHRyeSBh bnkgdW53aW5kaW5nIGlmIHdlIGZpbmQKK1BDIGlzIGluIHRoZSBlcGlsb2d1ZSAocHJldmlvdXMg aW5zdHJ1Y3Rpb24gbW9kaWZpZXMgU1A9JXIxNSkuCisKK0l0IGlzIGV2ZW4gYSBwZXJmb3JtYW5j ZSBvcHRpbWl6YXRpb24gYW5kIEkgc2VlIG5vIHJlZ3Jlc3Npb24gcmlzayB0aGVyZS4KKworVGhl IHNwZWNpZmljIHMzOTB4IGVycm9yIGlzOgorIzAgIHRocm93X2Vycm9yIChlcnJvcj1NRU1PUllf RVJST1IsIGZtdD0weDgwNDI2NzZhICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzICVz IikgYXQgZXhjZXB0aW9ucy5jOjQxNQorIzEgIGluIG1lbW9yeV9lcnJvciAoc3RhdHVzPTUsIG1l bWFkZHI9MCkgYXQgY29yZWZpbGUuYzoyMjAKKyMyICBpbiByZWFkX21lbW9yeSAobWVtYWRkcj0w LCBteWFkZHI9MHgzZmZmZmM3ZjdmMCAiIiwgbGVuPTgpIGF0IGNvcmVmaWxlLmM6MjM4CisjMyAg aW4gcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAobWVtYWRkcj0wLCBsZW49OCwgYnl0ZV9v cmRlcj1CRkRfRU5ESUFOX0JJRykgYXQgY29yZWZpbGUuYzozMjEKKyM0ICBpbiBzMzkwX2JhY2tj aGFpbl9mcmFtZV91bndpbmRfY2FjaGUgKHRoaXNfZnJhbWU9MHg4MDYwODk1OCwgaW5mbz0weDgw NjA4YTA4KSBhdCBzMzkwLXRkZXAuYzoxNTI1CisjNSAgaW4gczM5MF9mcmFtZV91bndpbmRfY2Fj aGUgKHRoaXNfZnJhbWU9MHg4MDYwODk1OCwgdGhpc19wcm9sb2d1ZV9jYWNoZT0weDgwNjA4OTcw KSBhdCBzMzkwLXRkZXAuYzoxNTcyCisjNiAgaW4gczM5MF9mcmFtZV90aGlzX2lkICh0aGlzX2Zy YW1lPTB4ODA2MDg5NTgsIHRoaXNfcHJvbG9ndWVfY2FjaGU9MHg4MDYwODk3MCwgdGhpc19pZD0w eDgwNjA4OWI4KSBhdCBzMzkwLXRkZXAuYzoxNTgzCisjNyAgaW4gZ2V0X2ZyYW1lX2lkIChmaT0w eDgwNjA4OTU4KSBhdCBmcmFtZS5jOjMzNQorIzggIGluIGZyYW1lX2ZpbmRfYnlfaWQgKGlkPXtz dGFja19hZGRyID0gNDM5ODA0NDgyNDk1MiwgY29kZV9hZGRyID0gMjE0NzQ4NDk1Miwgc3BlY2lh bF9hZGRyID0gMCwgc3RhY2tfYWRkcl9wID0gMSwgY29kZV9hZGRyX3AgPSAxLCBzcGVjaWFsX2Fk ZHJfcCA9IDAsIGlubGluZV9kZXB0aCA9IDB9KSBhdCBmcmFtZS5jOjU4NyAKKyM5ICBpbiB3YXRj aHBvaW50X2NoZWNrIChwPTB4ODA5NWJiYzApIGF0IGJyZWFrcG9pbnQuYzozMjAzCisjMTAgaW4g Y2F0Y2hfZXJyb3JzIChmdW5jPTB4ODAxMjYyYzAgPHdhdGNocG9pbnRfY2hlY2s+LCBmdW5jX2Fy Z3M9MHg4MDk1YmJjMCwgZXJyc3RyaW5nPTB4ODBhMjY0MTAgIkVycm9yIGV2YWx1YXRpbmcgZXhw cmVzc2lvbiBmb3Igd2F0Y2hwb2ludCAzXG4iLCBtYXNrPTYpIGF0IGV4Y2VwdGlvbnMuYzo1MTAK KyMxMSBpbiBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnM9MHg4MDk1YmJjMCkgYXQgYnJlYWtw b2ludC5jOjM0MDQKKyMxMiBpbiBicHN0YXRfc3RvcF9zdGF0dXMgKGFzcGFjZT0weDgwNjFmY2Iw LCBicF9hZGRyPTIxNDc0ODUwNDAsIHB0aWQ9e3BpZCA9IDE3MzcyLCBsd3AgPSAxNzM3MiwgdGlk ID0gMH0pIGF0IGJyZWFrcG9pbnQuYzozNTk0CisjMTMgaW4gaGFuZGxlX2luZmVyaW9yX2V2ZW50 IChlY3M9MHgzZmZmZmM4MDUyMCkgYXQgaW5mcnVuLmM6MzU4OAorCitJIGRpZCBub3QgYW5hbHl6 ZSB3aHkgNi44IGRpZCBub3QgZXJyb3Igb3V0LCB0aGUgR0RCIGNvZGUgaXMgc2ltaWxhciB0aGVy ZS4KKworTm8gcmVncmVzc2lvbnMgb246Cit7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3Jh MTItbGludXgtZ251IChDVlMgSEVBRCBHREIpCitzMzkweC1yaGVsNDgtbGludXgtZ251IChDVlMg SEVBRCBHREIpCitzMzkwLXJoZWw0OC1saW51eC1nbnUgKENWUyBIRUFEIEdEQikKK3MzOTB4LXJo ZWw1NC1saW51eC1nbnUgKEZlZG9yYSAxMiBHREIpCitzMzkwLXJoZWw1NC1saW51eC1nbnUgKEZl ZG9yYSAxMiBHREIpCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAwOS0xMi0yNSAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBicmVha3BvaW50 LmMgKHdhdGNocG9pbnRfY2hlY2spOiBDaGVjayB0aGUgY2FsbAorCWdkYmFyY2hfaW5fZnVuY3Rp b25fZXBpbG9ndWVfcCBiZWZvcmUgY2FsbGluZyBmcmFtZV9maW5kX2J5X2lkLgorCUV4dGVuZCB0 aGUgY29tbWVudC4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMDktMTItMjUgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2RiLmJhc2Uvd2F0Y2hwb2ludC1j b25kLWdvbmUuZXhwLCBnZGIuYmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS5jLAorCWdkYi5iYXNl L3dhdGNocG9pbnQtY29uZC1nb25lLXN0cmlwcGVkLmM6IE5ldy4KKworLS0tIGEvZ2RiL2JyZWFr cG9pbnQuYworKysrIGIvZ2RiL2JyZWFrcG9pbnQuYworQEAgLTMyMDAsNiArMzIwMCwxNyBAQCB3 YXRjaHBvaW50X2NoZWNrICh2b2lkICpwKQorICAgICAgIHN0cnVjdCBnZGJhcmNoICpmcmFtZV9h cmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKKyAgICAgICBDT1JFX0FERFIgZnJhbWVfcGMg PSBnZXRfZnJhbWVfcGMgKGZyYW1lKTsKKyAKKysgICAgICAvKiBpbl9mdW5jdGlvbl9lcGlsb2d1 ZV9wKCkgcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlIGlmIHdlJ3JlIHN0aWxsCisrCSBpbiB0aGUg ZnVuY3Rpb24gYnV0IHRoZSBzdGFjayBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIGludmFsaWRhdGVk LgorKwkgU2luY2Ugd2UgY2FuJ3QgcmVseSBvbiB0aGUgdmFsdWVzIG9mIGxvY2FsIHZhcmlhYmxl cyBhZnRlciB0aGUKKysJIHN0YWNrIGhhcyBiZWVuIGRlc3Ryb3llZCwgd2UgYXJlIHRyZWF0aW5n IHRoZSB3YXRjaHBvaW50IGluIHRoYXQKKysJIHN0YXRlIGFzIGBub3QgY2hhbmdlZCcgd2l0aG91 dCBmdXJ0aGVyIGNoZWNraW5nLiAgRG9uJ3QgbWFyaworKwkgd2F0Y2hwb2ludHMgYXMgY2hhbmdl ZCBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbiBhbiBlcGlsb2d1ZSAtCisrCSBldmVuIGlmIHRo ZXkgYXJlIGluIHNvbWUgb3RoZXIgZnJhbWUsIG91ciB2aWV3IG9mIHRoZSBzdGFjaworKwkgaXMg bGlrZWx5IHRvIGJlIHdyb25nIGFuZCBmcmFtZV9maW5kX2J5X2lkIGNvdWxkIGVycm9yIG91dC4g ICovCisrICAgICAgaWYgKGdkYmFyY2hfaW5fZnVuY3Rpb25fZXBpbG9ndWVfcCAoZnJhbWVfYXJj aCwgZnJhbWVfcGMpKQorKwlyZXR1cm4gV1BfVkFMVUVfTk9UX0NIQU5HRUQ7CisrCisgICAgICAg ZnIgPSBmcmFtZV9maW5kX2J5X2lkIChiLT53YXRjaHBvaW50X2ZyYW1lKTsKKyAgICAgICB3aXRo aW5fY3VycmVudF9zY29wZSA9IChmciAhPSBOVUxMKTsKKyAKK0BAIC0zMjE2LDE3ICszMjI3LDYg QEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKKyAJICAgIHdpdGhpbl9jdXJyZW50X3Njb3Bl ID0gMDsKKyAJfQorIAorLSAgICAgIC8qIGluX2Z1bmN0aW9uX2VwaWxvZ3VlX3AoKSByZXR1cm5z IGEgbm9uLXplcm8gdmFsdWUgaWYgd2UncmUgc3RpbGwKKy0JIGluIHRoZSBmdW5jdGlvbiBidXQg dGhlIHN0YWNrIGZyYW1lIGhhcyBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQuCistCSBTaW5jZSB3 ZSBjYW4ndCByZWx5IG9uIHRoZSB2YWx1ZXMgb2YgbG9jYWwgdmFyaWFibGVzIGFmdGVyIHRoZQor LQkgc3RhY2sgaGFzIGJlZW4gZGVzdHJveWVkLCB3ZSBhcmUgdHJlYXRpbmcgdGhlIHdhdGNocG9p bnQgaW4gdGhhdAorLQkgc3RhdGUgYXMgYG5vdCBjaGFuZ2VkJyB3aXRob3V0IGZ1cnRoZXIgY2hl Y2tpbmcuICBEb24ndCBtYXJrCistCSB3YXRjaHBvaW50cyBhcyBjaGFuZ2VkIGlmIHRoZSBjdXJy ZW50IGZyYW1lIGlzIGluIGFuIGVwaWxvZ3VlIC0KKy0JIGV2ZW4gaWYgdGhleSBhcmUgaW4gc29t ZSBvdGhlciBmcmFtZSwgb3VyIHZpZXcgb2YgdGhlIHN0YWNrCistCSBpcyBsaWtlbHkgdG8gYmUg d3JvbmcuICAqLworLSAgICAgIGlmIChnZGJhcmNoX2luX2Z1bmN0aW9uX2VwaWxvZ3VlX3AgKGZy YW1lX2FyY2gsIGZyYW1lX3BjKSkKKy0JcmV0dXJuIFdQX1ZBTFVFX05PVF9DSEFOR0VEOworLQor ICAgICAgIGlmICh3aXRoaW5fY3VycmVudF9zY29wZSkKKyAJLyogSWYgd2UgZW5kIHVwIHN0b3Bw aW5nLCB0aGUgY3VycmVudCBmcmFtZSB3aWxsIGdldCBzZWxlY3RlZAorIAkgICBpbiBub3JtYWxf c3RvcC4gIFNvIHRoaXMgY2FsbCB0byBzZWxlY3RfZnJhbWUgd29uJ3QgYWZmZWN0CistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtY29uZC1nb25l LXN0cmlwcGVkLmMKK0BAIC0wLDAgKzEsMjMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor KyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuICovCisrCisrdm9pZAorK2p1bXBlciAodm9pZCAoKmp1bXB0 bykgKHZvaWQpKQorK3sKKysgICgqanVtcHRvKSAoKTsKKyt9CistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtY29uZC1nb25lLmMKK0BAIC0wLDAg KzEsMzcgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysgCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAgIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICovCisrCisrZXh0ZXJuIHZvaWQganVtcGVyICh2b2lkICgqanVtcHRvKSAodm9pZCkpOworKwor K3N0YXRpYyB2b2lkCisrZnVuYyAodm9pZCkKKyt7CisrICB2b2xhdGlsZSBpbnQgYzsKKysKKysg IGMgPSA1OworKyAgYyA9IDEwOwkvKiB3YXRjaHBvaW50LWhlcmUgKi8KKysgIGMgPSAyMDsKKyt9 CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBqdW1wZXIgKGZ1bmMpOworKworKyAgcmV0 dXJuIDA7CisrfQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LWNvbmQtZ29uZS5leHAKK0BAIC0wLDAgKzEsNTEgQEAKKysjIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysKKytzZXQgdGVzdGZpbGUgIndhdGNocG9pbnQtY29u ZC1nb25lIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgc3JjZmlsZXN0cmlwcGVk ICR7dGVzdGZpbGV9LXN0cmlwcGVkLmMKKytzZXQgb2JqZmlsZXN0cmlwcGVkICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0tc3RyaXBwZWQubworK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKysjIFdlIG5lZWQgdG8gZ2VuZXJhdGUgYSBmdW5jdGlv biB3aXRob3V0IERXQVJGIHRvIGNyYXNoIG9sZGVyIEdEQi4KKysjIFN0ZXBwaW5nIGludG8gYSBk eW5hbWljIGZ1bmN0aW9uIHRyYW1wb2xpbmUgb3Igc3RlcHBpbmcgb3V0IG9mIE1BSU4gbWF5IHdv cmsKKysjIGJ1dCBpdCBpcyBub3QgYSByZWxpYWJsZSBGQUlMIGNhc2UuCisrCisraWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZXN0cmlwcGVkfSIgIiR7b2Jq ZmlsZXN0cmlwcGVkfSIgb2JqZWN0IHt9XSAhPSAiIgorKyAgICAgIHx8IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9ICR7b2JqZmlsZXN0cmlwcGVkfSIgIiR7Ymlu ZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIGdkYl9zdXBwcmVzc19l bnRpcmVfZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0ZXN0cyBpbiB0aGlz IGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGZhaWwuIgorK30KKysKKytjbGVhbl9yZXN0YXJ0ICR7 dGVzdGZpbGV9CisrCisrIyBQcm9ibGVtIGRvZXMgbm90IG9jY3VyIG90aGVyd2lzZS4KKytnZGJf dGVzdCAic2V0IGNhbi11c2UtaHctd2F0Y2hwb2ludHMgMCIKKysKKytpZiAhW3J1bnRvX21haW5d IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ3YXRjaHBvaW50LWhlcmUiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJQ bGFjZSB0byBzZXQgdGhlIHdhdGNocG9pbnQiCisrCisrIyBUaGUgY29uZGl0aW9uIGBjID09IDMw JyBpcyB0aGUgc3ViamVjdCBiZWluZyB0ZXN0ZWQuCisrZ2RiX3Rlc3QgIndhdGNoIGMgaWYgYyA9 PSAzMCIgIiIgIlBsYWNlIHRoZSB3YXRjaHBvaW50IgorKworKyMgV2UgbWF5IHN0YXkgZWl0aGVy IGluIHRoZSBmdW5jdGlvbiBpdHNlbGYgb3Igb25seSBhdCB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24g b2YKKysjIGl0cyBjYWxsZXIgZGVwZW5kaW5nIG9uIHRoZSBlcGlsb2d1ZSB1bndpbmRlciAob3Ig dmFsaWQgZXBpbG9ndWUgQ0ZJKSBwcmVzZW5jZS4KKytnZGJfdGVzdCAiZmluaXNoIiBcCisrCSAi V2F0Y2hwb2ludCAuKiBkZWxldGVkIGJlY2F1c2UgdGhlIHByb2dyYW0gaGFzIGxlZnQgdGhlIGJs b2NrIGluLip3aGljaCBpdHMgZXhwcmVzc2lvbiBpcyB2YWxpZC4uKmluIChqdW1wZXJ8ZnVuYyku KiIgXAorKwkgIkNhdGNoIHRoZSBubyBsb25nZXIgdmFsaWQgd2F0Y2hwb2ludCIKKwoKZGlmZiAt LWdpdCBhL2dkYi14ODZfNjQtaTM4Ni1zeXNjYWxsLXJlc3RhcnQucGF0Y2ggYi9nZGIteDg2XzY0 LWkzODYtc3lzY2FsbC1yZXN0YXJ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQ1ZDZiMTAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIteDg2XzY0LWkzODYtc3lzY2Fs bC1yZXN0YXJ0LnBhdGNoCkBAIC0wLDAgKzEsMTIxIEBACitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAwOS0xMS9tc2cwMDU5Mi5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIEZp eCBzeXNjYWxsIHJlc3RhcnRzIGZvciBhbWQ2NC0+aTM4NiBiaWFyY2gKKworSGksCisKK3Rlc3Rl ZCBvbmx5IG9uIHJlY2VudCBMaW51eCBrZXJuZWxzLCBpdCBzaG91bGQgYXBwbHkgYWxzbyBvbiB2 YW5pbGxhIG9uZXMuCitUaGVyZSB3ZXJlIHZhcmlvdXMgY2hhbmdlcyBvZiB0aGUga2VybmVscyBi ZWhhdmlvciBpbiB0aGUgcGFzdC4KKworRlNGIEdEQiBIRUFEIHN0YXRlOgora2VybmVsIGRlYnVn Z2VyIGluZmVyaW9yIHN0YXRlCit4ODZfNjQgeDg2XzY0ICAgeDg2XzY0ICAgUEFTUworeDg2XzY0 IHg4Nl82NCAgIGkzODYgICAgIEZBSUwgd2l0aG91dCB0aGlzIHBhdGNoLCBQQVNTIHdpdGggdGhp cyBwYXRjaAoreDg2XzY0IGkzODYgICAgIGkzODYgICAgIFBBU1Mgb24gcmVjZW50IGtlcm5lbHMK KyAgICAgICAgICAgICAgICAgICAgICAgICAoRkFJTDoga2VybmVsLTIuNi4zMS41LTEyNy5mYzEy Lng4Nl82NCAtIEZlZG9yYSAxMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoUEFTUzoga2Vy bmVsLTIuNi4zMi0wLjU1LnJjOC5naXQxLmZjMTMueDg2XzY0KQoraTM4NiAgIGkzODYgICAgIGkz ODYgICAgIFBBU1MKKworCitDdXJyZW50bHkgZ2RiLmJhc2UvaW50ZXJydXB0LmV4cCBmYWlscyBv biBhbWQ2NCBob3N0IHJ1bm5pbmcgdW5kZXIKKy0tdGFyZ2V0X2JvYXJkIHVuaXgvLW0zMiB3aXRo OgorCWNvbnRpbnVlCisJQ29udGludWluZy4KKwlVbmtub3duIGVycm9yIDUxMgorCis8bGludXgv ZXJybm8uaD46CisvKgorICogVGhlc2Ugc2hvdWxkIG5ldmVyIGJlIHNlZW4gYnkgdXNlciBwcm9n cmFtcy4gIFRvIHJldHVybiBvbmUgb2YgRVJFU1RBUlQqCisgKiBjb2Rlcywgc2lnbmFsX3BlbmRp bmcoKSBNVVNUIGJlIHNldC4gIE5vdGUgdGhhdCBwdHJhY2UgY2FuIG9ic2VydmUgdGhlc2UKKyAq IGF0IHN5c2NhbGwgZXhpdCB0cmFjaW5nLCBidXQgdGhleSB3aWxsIG5ldmVyIGJlIGxlZnQgZm9y IHRoZSBkZWJ1Z2dlZCB1c2VyCisgKiBwcm9jZXNzIHRvIHNlZS4KKyAqLworI2RlZmluZSBFUkVT VEFSVFNZUyAgICAgNTEyCisKKyJVbmtub3duIGVycm9yIDUxMiIgcHJpbnRlZCBhYm92ZSBpcyBw cmludGVkIGJ5IHRoZSBpbmZlcmlvciBpdHNlbGYsIG5vdCBieSBHREIuCisKK0l0IGlzIGJlY2F1 c2UgR0RCIHJlYWRzIGl0IGFzIDB4ZmZmZmZmZmZmZmZmZmUwMCBidXQgd3JpdGVzIGl0IGJhY2sg YXMKKzB4ZmZmZmZlMDAuCisrICAgICAgLyogU2lnbi1leHRlbmQgJWVheCBhcyBkdXJpbmcgcmV0 dXJuIGZyb20gYSBzeXNjYWxsIGl0IGlzIGJlaW5nIGNoZWNrZWQKKysJIGZvciAtRVJFU1RBUlQq IHZhbHVlcyAtNTEyIGJlaW5nIGFib3ZlIDB4ZmZmZmZmZmZmZmZmZmUwMDsgdGVzdGVkIGJ5Cisr CSBpbnRlcnJ1cHQuZXhwLiAgKi8KKworCitRdW90ZSBvZiBSb2xhbmQgTWNHcmF0aCBmcm9tIElS QzoKKworcm9sYW5kOiBpbiB0aGUgdXNlcl9yZWdzZXQgbW9kZWwsIHRoZXJlIGFyZSA2NC1iaXQg dXNlcl9yZWdzZXQgZmxhdm9ycyBhbmQKKzMyLWJpdCB1c2VyX3JlZ3NldCBmbGF2b3JzLCBzbyBh dCB0aGUga2FiaSBsZXZlbCB0aGUgKGtlcm5lbCkgY2FsbGVyIGNhbiBzYXkKK3doYXQgaXQgbWVh bnM6IGNhbGxzIG9uIHRoZSAzMi1iaXQgdXNlcl9yZWdzZXQgZmxhdm9yIHdpbGwgYmVoYXZlIGFz IGlmIG9uCithIDMyLWJpdCBrZXJuZWwvdXNlcmxhbmQuICBpbiBwdHJhY2UsIHRoZXJlIGlzIG5v IHdheSBmb3IgeDg2XzY0IHB0cmFjZSBjYWxscwordG8gc2F5ICJpIHRoaW5rIG9mIHRoZSBpbmZl cmlvciBhcyBiZWluZyAzMiBiaXRzLCBzbyBhY3QgYWNjb3JkaW5nbHkiICh0aG8gcHBjCithbmQv b3Igc3BhcmMgaGF2ZSBwdHIKK3JvbGFuZDogYWNlIHJlcXVlc3RzIHRoYXQgZG8gdGhhdCBpaXJj KQorcm9sYW5kOiBlcmdvIDY0LWJpdCBwdHJhY2UgY2FsbGVycyBtdXN0IGVpdGhlciBzYXZlL3Jl c3RvcmUgZnVsbCA2NC1iaXRzIHNvCit0aGUga2VybmVsJ3Mgc2lnbi1leHRlbnNpb24gY2hvaWNl cyBhcmUgcHJlc2VydmVkLCBvciBlbHNlIGdyb2sgbWFnaWMgd2F5cyB0bworZXhwYW5kIHN0b3Jl ZCAzMi1iaXQgcmVnaXN0ZXIgY29udGVudHMgdG8gNjQtYml0IHZhbHVlcyB0byBzdHVmZiB2aWEg NjQtYml0CitwdHJhY2UKK1suLi5dCityb2xhbmQ6IHRoZXJlIGlzIGEgIjMyLWJpdC1mbGF2b3Jl ZCB0YXNrIiwgYnV0IGl0J3Mgbm90IHJlYWxseSB0cnVlIHRoYXQgaXQKK2hhcyAzMi1iaXQgcmVn aXN0ZXJzLiAgdGhlcmUgaXMgbm8gMzItYml0LW9ubHkgdXNlcmxhbmQgY29uZGl0aW9uLiAgYW55 IHRhc2sKK2NhbiBhbHdheXMgbGptcCB0byB0aGUgNjQtYml0IGNvZGUgc2VnbWVudCBhbmQgcnVu IDY0LWJpdCBpbnNucyBpbmNsdWRpbmcKK2EgNjQtYml0IHN5c2NhbGwKK3JvbGFuZDogc28gYSA2 NC1iaXQgZGVidWdnZXIgc2hvdWxkIHNlZSBhbmQgYmUgYWJsZSB0byBmaWRkbGUgdGhlIGZ1bGwK K3JlZ2lzdGVycy4gIGl0IGNhbiBldmVuIGNoYW5nZSBjcyB2aWEgcHRyYWNlIHRvIGZvcmNlIHRo ZSBpbmZlcmlvciBpbnRvCitydW5uaW5nIDMyIG9yIDY0IGJpdCBjb2RlLgorCisKK1NhdmluZyB3 aG9sZSA2NGJpdHMgZm9yIGkzODYgdGFyZ2V0cyBvbiB4ODZfNjQgaG9zdHMgZG9lcyBub3QgbXVj aCBtYXRjaCB0aGUKK0dEQiBhcmNoaXRlY3R1cmUgYXMgYHN0cnVjdCB0eXBlJyBmb3IgdGhlc2Ug cmVnaXN0ZXJzIHN0aWxsIHNob3VsZCBiZSAzMmJpdAorZXRjLiAgIFRoZXJlZm9yZSBwcm92aWRl ZCBqdXN0IHRoaXMgZXhjZXB0aW9uLgorCitUaGUgcHJvYmxlbSBpcyByZXByb2R1Y2libGUgb25s eSBpZiBvbmUgZG9lcyBhbiBpbmZlcmlvciBjYWxsIGR1cmluZyB0aGUKK2ludGVycnVwdGlvbiB0 byBkbyBmdWxsIGluZmVyaW9yIHNhdmUvcmVzdG9yZSBmcm9tIEdEQiByZWdjYWNoZS4KKworUmVn cmVzc2lvbiB0ZXN0ZWQgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4 LWdudS4KKworCitUaGFua3MsCitKYW4KKworCitnZGIvCisyMDA5LTExLTI5ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGFtZDY0LW5hdC5jIChhbWQ2 NF9jb2xsZWN0X25hdGl2ZV9ncmVnc2V0KTogRG8gbm90IHByZS1jbGVhciAlZWF4LgorCVNpZ24g ZXh0ZW5kIGl0IGFmdGVyd2FyZHMuCisKKy0tLSBhL2dkYi9hbWQ2NC1uYXQuYworKysrIGIvZ2Ri L2FtZDY0LW5hdC5jCitAQCAtMTMxLDkgKzEzMSw5IEBAIGFtZDY0X2NvbGxlY3RfbmF0aXZlX2dy ZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgICAgIHsKKyAgICAgICBu dW1fcmVncyA9IGFtZDY0X25hdGl2ZV9ncmVnc2V0MzJfbnVtX3JlZ3M7CisgCistICAgICAgLyog TWFrZSBzdXJlICVlYXgsICVlYngsICVlY3gsICVlZHgsICVlc2ksICVlZGksICVlYnAsICVlc3Ag YW5kCisrICAgICAgLyogTWFrZSBzdXJlICVlYngsICVlY3gsICVlZHgsICVlc2ksICVlZGksICVl YnAsICVlc3AgYW5kCisgICAgICAgICAgJWVpcCBnZXQgemVyby1leHRlbmRlZCB0byA2NCBiaXRz LiAgKi8KKy0gICAgICBmb3IgKGkgPSAwOyBpIDw9IEkzODZfRUlQX1JFR05VTTsgaSsrKQorKyAg ICAgIGZvciAoaSA9IEkzODZfRUNYX1JFR05VTTsgaSA8PSBJMzg2X0VJUF9SRUdOVU07IGkrKykK KyAJeworIAkgIGlmIChyZWdudW0gPT0gLTEgfHwgcmVnbnVtID09IGkpCisgCSAgICBtZW1zZXQg KHJlZ3MgKyBhbWQ2NF9uYXRpdmVfZ3JlZ3NldF9yZWdfb2Zmc2V0IChnZGJhcmNoLCBpKSwgMCwg OCk7CitAQCAtMTU5LDQgKzE1OSwyMCBAQCBhbWQ2NF9jb2xsZWN0X25hdGl2ZV9ncmVnc2V0IChj b25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorIAkgICAgcmVnY2FjaGVfcmF3X2NvbGxl Y3QgKHJlZ2NhY2hlLCBpLCByZWdzICsgb2Zmc2V0KTsKKyAJfQorICAgICB9CisrCisrICBpZiAo Z2RiYXJjaF9wdHJfYml0IChnZGJhcmNoKSA9PSAzMikKKysgICAgeworKyAgICAgIC8qIFNpZ24t ZXh0ZW5kICVlYXggYXMgZHVyaW5nIHJldHVybiBmcm9tIGEgc3lzY2FsbCBpdCBpcyBiZWluZyBj aGVja2VkCisrCSBmb3IgLUVSRVNUQVJUKiB2YWx1ZXMgLTUxMiBiZWluZyBhYm92ZSAweGZmZmZm ZmZmZmZmZmZlMDA7IHRlc3RlZCBieQorKwkgaW50ZXJydXB0LmV4cC4gICovCisrCisrICAgICAg aW50IGkgPSBJMzg2X0VBWF9SRUdOVU07CisrCisrICAgICAgaWYgKHJlZ251bSA9PSAtMSB8fCBy ZWdudW0gPT0gaSkKKysJeworKwkgIHZvaWQgKnB0ciA9IHJlZ3MgKyBhbWQ2NF9uYXRpdmVfZ3Jl Z3NldF9yZWdfb2Zmc2V0IChnZGJhcmNoLCBpKTsKKysKKysJICAqKGludDY0X3QgKikgcHRyID0g KihpbnQzMl90ICopIHB0cjsKKysJfQorKyAgICB9CisgfQorCgpkaWZmIC0tZ2l0IGEvZ2RiLnNw ZWMgYi9nZGIuc3BlYwppbmRleCBkNzMxZDljLi40ZTUxM2U5IDEwMDY0NAotLS0gYS9nZGIuc3Bl YworKysgYi9nZGIuc3BlYwpAQCAtNCwyMSArNCw0NSBAQAogIyAtLXdpdGggdXBzdHJlYW06IE5v IEZlZG9yYSBzcGVjaWZpYyBwYXRjaGVzIGdldCBhcHBsaWVkLgogIyAtLXdpdGhvdXQgcHl0aG9u OiBObyBweXRob24gc3VwcG9ydC4KIAorIyBSSEVMLTUgd2FzIHRoZSBsYXN0IG5vdCBwcm92aWRp bmcgYC9ldGMvcnBtL21hY3Jvcy5kaXN0Jy4KKyVpZiAwJXshP2Rpc3Q6MX0KKyVkZWZpbmUgcmhl bCA1CislZGVmaW5lIGRpc3QgLmVsNQorJWRlZmluZSBlbDUgMQorJWVuZGlmCisjIFJIRUwtNSBC cmV3IGRvZXMgbm90IHNldCAle2VsNX0uCislaWYgIiV7ZGlzdH0iID09ICIuZWw1IgorIyBSSEVM LTUgcHBjKiBweXRob24gLnNvIGZpbGVzIGFyZSBzaGlwcGVkIG9ubHkgYXMgcHBjIGJ1dCBnZGIg aXMgcHBjNjQgdGhlcmUuCisjIEJyZXcgYnVpbGRzIGl0IGZpbmUgYXMgaXRzIHBwYzY0IGJ1aWxk cm9vdCBoYXMgZnVsbCBwcGM2NCBwYWNrYWdlIHNldC4KKyMgTWFrZSB0aGlzIGNvbmRpdGlvbmFs IHNvIHRoYXQgQnJldy1idWlsdCBHREIgaGFzIG5vIHB5dGhvbiBvbiBhbnkgYXJjaCBidXQKKyMg R0RCIHJlYnVpbHQgb24gbmF0aXZlIG5vbi1wcGM2NCBob3N0IGRvZXMgaGF2ZSBpdC4KKyVpZiAw JXshP2VsNToxfQorJWRlZmluZSBfd2l0aG91dF9weXRob24gMQorJWVsc2UKKyVpZmFyY2ggcHBj NjQKKyVkZWZpbmUgX3dpdGhvdXRfcHl0aG9uIDEKKyVlbmRpZgorJWVuZGlmCislZGVmaW5lIGVs NSAxCislZW5kaWYKKwogU3VtbWFyeTogQSBHTlUgc291cmNlLWxldmVsIGRlYnVnZ2VyIGZvciBD LCBDKyssIEphdmEgYW5kIG90aGVyIGxhbmd1YWdlcwogTmFtZTogZ2RiJXs/X3dpdGhfZGVidWc6 LWRlYnVnfQogCiAjIFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92ZXJzaW9uLmluLgot IyBOT1RFOiB0aGUgRlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5NIGZvciBvZmZpY2lh bCByZWxlYXNlcywgbGlrZSA2LjMgCisjIE5PVEU6IHRoZSBGU0YgZ2RiIHZlcnNpb25zIGFyZSBu dW1iZXJlZCBOLk0gZm9yIG9mZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMwogIyBhbmQsIHNpbmNl IEphbnVhcnkgMjAwNSwgWC5ZLlouZGF0ZSBmb3IgZGFpbHkgc25hcHNob3RzLCBsaWtlIDYuMy41 MC4yMDA1MDExMiAjIChkYWlseSBzbmFwc2hvdCBmcm9tIG1haWxpbmUpLCBvciA2LjMuMC4yMDA0 MDExMiAoaGVhZCBvZiB0aGUgcmVsZWFzZSBicmFuY2gpLgotVmVyc2lvbjogNi44LjkxLjIwMDkw OTMwCitWZXJzaW9uOiA3LjAuMQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxl YWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5v dCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRp YmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDElez9fd2l0aF91cHN0cmVhbToudXBzdHJl YW19JXs/ZGlzdH0KK1JlbGVhc2U6IDI1JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7ZGlz dH0KIAogTGljZW5zZTogR1BMdjMrCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCi1Tb3Vy Y2U6IGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvc25hcHNob3RzL2JyYW5jaC9nZGItJXt2 ZXJzaW9ufS50YXIuYnoyCisjIGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvc25hcHNob3Rz L2JyYW5jaC9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCisjIGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1 Yi9nZGIvcmVsZWFzZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgorU291cmNlOiBmdHA6Ly9zb3Vy Y2V3YXJlLm9yZy9wdWIvZ2RiL3JlbGVhc2VzL2dkYi0le3ZlcnNpb259LnRhci5iejIKIEJ1aWxk cm9vdDogJShta3RlbXAgLXVkICV7X3RtcHBhdGh9LyV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVh c2V9LVhYWFhYWCkKIFVSTDogaHR0cDovL2dudS5vcmcvc29mdHdhcmUvZ2RiLwogCkBAIC0zOSwx MSArNjMsMTMgQEAgVVJMOiBodHRwOi8vZ251Lm9yZy9zb2Z0d2FyZS9nZGIvCiBPYnNvbGV0ZXM6 IGdkYjY0IDwgNS4zLjkxCiAlZW5kaWYKIAorJWlmIDAleyE/ZWw1OjF9CiAlaWYgMCV7IT9fd2l0 aF91cHN0cmVhbToxfQogIyBUaGUgbGFzdCBSYXdoaWRlIHJlbGVhc2Ugd2FzIChubyBkaXN0IHRh ZykgcHN0YWNrLTEuMi03LjIuMgogT2Jzb2xldGVzOiBwc3RhY2sgPCAxLjItNy4yLjIuMQogUHJv dmlkZXM6IHBzdGFjayA9IDEuMi03LjIuMi4xCi0lZW5kaWYJIyAwJXshP193aXRoX3Vwc3RyZWFt OjF9CislZW5kaWYgIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CislZW5kaWYgIyAwJXshP2VsNTox fQogCiAjIEdEQiBwYXRjaGVzIGhhdmUgdGhlIGZvcm1hdCBgZ2RiLTx2ZXJzaW9uPi1iejxyZWQt aGF0LWJ6LSM+LTxkZXNjPi5wYXRjaCcuCiAjIFRoZXkgc2hvdWxkIGJlIGNyZWF0ZWQgdXNpbmcg cGF0Y2ggbGV2ZWwgMTogZGlmZiAtdXAgLi9nZGIgKG9yIGdkYi02LjMvZ2RiKS4KQEAgLTU2LDcg KzgyLDcgQEAgU291cmNlMzogZ2RiLWdzdGFjay5tYW4KIAogIyBsaWJzdGRjKysgcHJldHR5IHBy aW50ZXJzIGZyb20gR0NDIFNWTiBIRUFEICg0LjUgZXhwZXJpbWVudGFsKS4KICVkZWZpbmUgbGli c3RkY3h4cHl0aG9uIGxpYnN0ZGMrKy12My1weXRob24tcjE1MTc5OAotU291cmNlNDogJXtsaWJz dGRjeHhweXRob259LnRhci54egorU291cmNlNDogJXtsaWJzdGRjeHhweXRob259LnRhci5iejIK IAogIyBXb3JrIGFyb3VuZCBvdXQtb2YtZGF0ZSBkZWphZ251IHRoYXQgZG9lcyBub3QgaGF2ZSBL RkFJTAogUGF0Y2gxOiBnZGItNi4zLXJoLWR1bW15a2ZhaWwtMjAwNDEyMDIucGF0Y2gKQEAgLTky LDE0ICsxMTgsMTMgQEAgUGF0Y2gxMTg6IGdkYi02LjMtZ3N0YWNrLTIwMDUwNDExLnBhdGNoCiAK ICMgVlNZU0NBTEwgYW5kIFBJRQogUGF0Y2gxMjI6IGdkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcu cGF0Y2gKLVBhdGNoMTI0OiBnZGItNi4zLXBpZS0yMDA1MDExMC5wYXRjaAorUGF0Y2gxMjQ6IGdk Yi1hcmNoZXItcGllLnBhdGNoCitQYXRjaDM4OTogZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNo CitQYXRjaDM5NDogZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKIAog IyBHZXQgc2VsZnRlc3Qgd29ya2luZyB3aXRoIHNlcC1kZWJ1Zy1pbmZvCiBQYXRjaDEyNTogZ2Ri LTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKIAotIyBGaXggZm9yIG5vbi10aHJlYWRlZCB3 YXRjaHBvaW50cy4KLVBhdGNoMTI4OiBnZGItNi4zLW5vbnRocmVhZGVkLXdwLTIwMDUwMTE3LnBh dGNoCi0KICMgVGVzdCBzdXBwb3J0IG9mIG11bHRpcGxlIGRlc3RydWN0b3JzIGp1c3QgbGlrZSBt dWx0aXBsZSBjb25zdHJ1Y3RvcnMKIFBhdGNoMTMzOiBnZGItNi4zLXRlc3QtZHRvcmZpeC0yMDA1 MDEyMS5wYXRjaAogCkBAIC0xMjUsMTAgKzE1MCw2IEBAIFBhdGNoMTQ1OiBnZGItNi4zLXRocmVh ZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaAogIyBGaXggcHJpbnRpbmcgb2YgaW5oZXJp dGVkIG1lbWJlcnMKIFBhdGNoMTQ4OiBnZGItNi4zLWluaGVyaXRhbmNlLTIwMDUwMzI0LnBhdGNo CiAKLSMgUHJpbnQgYSB3YXJuaW5nIHdoZW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8ncyBDUkMg ZG9lc24ndCBtYXRjaC4KLVBhdGNoMTUwOiBnZGItNi4zLXRlc3Qtc2VwY3JjLTIwMDUwNDAyLnBh dGNoCi1QYXRjaDE1MTogZ2RiLTYuMy1zZXBjcmMtMjAwNTA0MDIucGF0Y2gKLQogIyBEbyBub3Qg aXNzdWUgd2FybmluZyBtZXNzYWdlIGFib3V0IGZpcnN0IHBhZ2Ugb2Ygc3RvcmFnZSBmb3IgaWE2 NCBnY29yZQogUGF0Y2gxNTM6IGdkYi02LjMtaWE2NC1nY29yZS1wYWdlMC0yMDA1MDQyMS5wYXRj aAogCkBAIC0yMTksOCArMjQwLDggQEAgUGF0Y2gyMjk6IGdkYi02LjMtYnoxNDA1MzItcHBjLXVu d2luZGluZy10ZXN0LnBhdGNoCiAjIFRlc3RjYXNlIGZvciBleGVjKCkgZnJvbSB0aHJlYWRlZCBw cm9ncmFtIChCWiAyMDI2ODkpLgogUGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2ODktZXhlYy1mcm9t LXB0aHJlYWQtdGVzdC5wYXRjaAogCi0jIEJhY2twb3J0ZWQgcG9zdCBnZGItNi44LjUwLjIwMDkw OTkxIHNuYXBzaG90IGZpeHVwcy4KLSNQYXRjaDIzMjogZ2RiLTYuOC41MC4yMDA5MDkyMS11cHN0 cmVhbS5wYXRjaAorIyBCYWNrcG9ydGVkIHBvc3QgZ2RiLTcuMCBmaXh1cHMuCitQYXRjaDIzMjog Z2RiLTcuMC11cHN0cmVhbS5wYXRjaAogCiAjIFRlc3RjYXNlIGZvciBQUEMgUG93ZXI2L0RGUCBp bnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJaIDIzMDAwMCkuCiBQYXRjaDIzNDogZ2RiLTYuNi1i ejIzMDAwMC1wb3dlcjYtZGlzYXNzZW1ibHktdGVzdC5wYXRjaApAQCAtMzAxLDggKzMyMiw4IEBA IFBhdGNoMzA5OiBnZGItNi4zLW1hcHBpbmctemVyby1pbm9kZS10ZXN0LnBhdGNoCiAjIFRlc3Qg YSBjcmFzaCBvbiBgZm9jdXMgY21kJywgYGZvY3VzIHByZXYnIGNvbW1hbmRzLgogUGF0Y2gzMTE6 IGdkYi02LjMtZm9jdXMtY21kLXByZXYtdGVzdC5wYXRjaAogCi0jIFRlc3QgY3Jhc2ggb24gYSBz dyB3YXRjaHBvaW50IGNvbmRpdGlvbiBnZXR0aW5nIG91dCBvZiB0aGUgc2NvcGUuCi1QYXRjaDMx NDogZ2RiLTYuMy13YXRjaHBvaW50LWNvbmQtZ29uZS10ZXN0LnBhdGNoCisjIEZpeCBlcnJvciBv biBhIHN3IHdhdGNocG9pbnQgYWN0aXZlIGF0IGZ1bmN0aW9uIGVwaWxvZ3VlIChoaXQgb24gczM5 MHgpLgorUGF0Y2gzMTQ6IGdkYi13YXRjaHBvaW50LWNvbmQtZ29uZS5wYXRjaAogCiAjIFRlc3Qg dmFyaW91cyBmb3JtcyBvZiB0aHJlYWRzIHRyYWNraW5nIGFjcm9zcyBleGVjKCkgKEJaIDQ0Mjc2 NSkuCiBQYXRjaDMxNTogZ2RiLTYuOC1iejQ0Mjc2NS10aHJlYWRlZC1leGVjLXRlc3QucGF0Y2gK QEAgLTM2Nyw1NCArMzg4LDE0NCBAQCBQYXRjaDM3NjogbGlic3RkYysrLXYzLXB5dGhvbi1jb21t b24tcHJlZml4LnBhdGNoCiAjIE5ldyB0ZXN0IGZvciBzdGVwLXJlc3VtZSBicmVha3BvaW50IHBs YWNlZCBpbiBtdWx0aXBsZSB0aHJlYWRzIGF0IG9uY2UuCiBQYXRjaDM4MTogZ2RiLXNpbXVsdGFu ZW91cy1zdGVwLXJlc3VtZS1icmVha3BvaW50LXRlc3QucGF0Y2gKIAotQnVpbGRSZXF1aXJlczog bmN1cnNlcy1kZXZlbCB0ZXhpbmZvIGdldHRleHQgZmxleCBiaXNvbiBleHBhdC1kZXZlbAotUmVx dWlyZXM6IHJlYWRsaW5lCi1CdWlsZFJlcXVpcmVzOiByZWFkbGluZS1kZXZlbAorIyBGaXggR05V L0xpbnV4IGNvcmUgb3BlbjogQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6IElucHV0 L291dHB1dCBlcnJvci4KK1BhdGNoMzgyOiBnZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRj aAorCisjIFN1cHBvcnQgbXVsdGlwbGUgZGlyZWN0b3JpZXMgZm9yIGBzZXQgZGVidWctZmlsZS1k aXJlY3RvcnknIChCWiA1Mjg2NjgpLgorUGF0Y2gzODM6IGdkYi1iejUyODY2OC1zeW1maWxlLXNl cGNyYy5wYXRjaAorUGF0Y2gzODQ6IGdkYi1iejUyODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2gK K1BhdGNoMzg1OiBnZGItYno1Mjg2Njgtc3ltZmlsZS1tdWx0aS5wYXRjaAorCisjIFN1cHBvcnQg R05VIElGVU5DcyAtIGluZGlyZWN0IGZ1bmN0aW9ucyAoQlogNTM5NTkwKS4KK1BhdGNoMzg3OiBn ZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCisKKyMgRml4IGJwIGNvbmRpdGlvbmFscyBbYnBf bG9jYXRpb24tYWNjZWxdIHJlZ3Jlc3Npb24gKEJaIDUzODYyNikuCitQYXRjaDM4ODogZ2RiLWJ6 NTM4NjI2LWJwX2xvY2F0aW9uLWFjY2VsLWJwLWNvbmQucGF0Y2gKKworIyBGaXggY2FsbGJhY2st bW9kZSByZWFkbGluZS02LjAgcmVncmVzc2lvbiBmb3IgQ1RSTC1DLgorUGF0Y2gzOTA6IGdkYi1y ZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoCisKKyMgRml4IHN5c2NhbGwgcmVzdGFydHMgZm9yIGFt ZDY0LT5pMzg2IGJpYXJjaC4KK1BhdGNoMzkxOiBnZGIteDg2XzY0LWkzODYtc3lzY2FsbC1yZXN0 YXJ0LnBhdGNoCisKKyMgRml4IHN0ZXBwaW5nIHdpdGggT01QIHBhcmFsbGVsIEZvcnRyYW4gc2Vj dGlvbnMgKEJaIDUzMzE3NikuCitQYXRjaDM5MjogZ2RiLWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0 ZXAucGF0Y2gKKworIyBVc2UgZ2ZvcnRyYW40NCB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSBv biBSSEVMLTUuCitQYXRjaDM5MzogZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCisKKyMgRGlzYWJsZSB3 YXJuaW5nIG1lc3NhZ2VzIG5ldyBmb3IgZ2RiLTYuOCsgZm9yIFJIRUwtNSBiYWNrd2FyZCBjb21w YXRpYmlsaXR5LgorIyBXb3JrYXJvdW5kIFJIRUwtNSBrZXJuZWxzIGZvciBkZXRhY2hpbmcgU0lH U1RPUHBlZCBwcm9jZXNzZXMgKEJaIDQ5ODU5NSkuCitQYXRjaDMzNTogZ2RiLXJoZWw1LWNvbXBh dC5wYXRjaAorCisjIEZpeCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggRysrIDQuMSBuYW1l c3BhY2VzICI6OiIuCitQYXRjaDM5NTogZ2RiLWVtcHR5LW5hbWVzcGFjZS5wYXRjaAorCisjIEZp eCByZWdyZXNzaW9uIG9uIHJlLXNldHRpbmcgdGhlIHNpbmdsZSBwcGMgd2F0Y2hwb2ludCBzbG90 LgorUGF0Y2gzOTY6IGdkYi1wcGMtaHctd2F0Y2hwb2ludC10d2ljZS5wYXRjaAorCisjIEZpeCBy ZWdyZXNzaW9uIGJ5IHB5dGhvbiBvbiBpYTY0IGR1ZSB0byBzdGFsZSBjdXJyZW50IGZyYW1lLgor UGF0Y2gzOTc6IGdkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBhdGNoCisKKyMgdGVzdHN1 aXRlOiBGaXggZmFsc2UgTUkgInVua25vd24gb3V0cHV0IGFmdGVyIHJ1bm5pbmciIHJlZ3Jlc3Np b24uCitQYXRjaDM5ODogZ2RiLXRlc3RzdWl0ZS11bmtub3duLW91dHB1dC5wYXRjaAorCisjIEZp eCByZWdyZXNzaW9uIG9mIGdkYi03LjAuMSBub3QgcHJlc2VydmluZyB0eXBlZGVmIG9mIGEgZmll bGQuCitQYXRjaDM5OTogZ2RiLWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0Y2gKKworIyBGaXgg cmVsYXRlZF9icmVha3BvaW50IHN0YWxlIHJlZiBjcmFzaC4KK1BhdGNoNDAwOiBnZGItc3RhbGUt cmVsYXRlZF9icmVha3BvaW50LnBhdGNoCisKKyMgRml4IGNyYXNoIHJlYWRpbmcgYnJva2VuIHN0 YWJzIChpdDM3NzY3MSkuCitQYXRjaDQwMTogZ2RiLXN0YWJzLXJlYWRfYXJncy5wYXRjaAorCitC dWlsZFJlcXVpcmVzOiBuY3Vyc2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXgg Ymlzb24gZXhwYXQtZGV2ZWwlez9faXNhfQorUmVxdWlyZXM6IHJlYWRsaW5lJXs/X2lzYX0KK0J1 aWxkUmVxdWlyZXM6IHJlYWRsaW5lLWRldmVsJXs/X2lzYX0KKyVpZiAwJXshP2VsNToxfQogIyBk bG9wZW4oKSBubyBsb25nZXIgbWFrZXMgcnBtLWxpYnMgYSBtYW5kYXRvcnkgZGVwZW5kZW5jeS4K LSNSZXF1aXJlczogcnBtLWxpYnMKLUJ1aWxkUmVxdWlyZXM6IHJwbS1kZXZlbAorI1JlcXVpcmVz OiBycG0tbGlicyV7P19pc2F9CitCdWlsZFJlcXVpcmVzOiBycG0tZGV2ZWwlez9faXNhfQorJWVu ZGlmICMgMCV7IT9lbDU6MX0KK1JlcXVpcmVzOiB6bGliJXs/X2lzYX0KK0J1aWxkUmVxdWlyZXM6 IHpsaWItZGV2ZWwlez9faXNhfQogJWlmIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9Ci1SZXF1aXJl czogcHl0aG9uLWxpYnMKLUJ1aWxkUmVxdWlyZXM6IHB5dGhvbi1kZXZlbAotIyBUZW1wb3Jhcmls eSBiZWZvcmUgaXQgZ2V0cyBtb3ZlZCB0byBsaWJzdGRjKysucnBtCi1CdWlsZFJlcXVpcmVzOiBs aWJzdGRjKysKLSVlbmRpZgkjIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9CislaWYgMCV7IT9lbDU6 MX0KK1JlcXVpcmVzOiBweXRob24tbGlicyV7P19pc2F9CislZWxzZQorUmVxdWlyZXM6IHB5dGhv biV7P19pc2F9CislZW5kaWYKK0J1aWxkUmVxdWlyZXM6IHB5dGhvbi1kZXZlbCV7P19pc2F9Cisj IFRlbXBvcmFyaWx5IGJlZm9yZSBweXRob24gZmlsZXMgZ2V0IG1vdmVkIHRvIGxpYnN0ZGMrKy5y cG0KKyMgbGlic3RkYysrJXtiaXRzX290aGVyfSBpcyBub3QgcHJlc2VudCBpbiBLb2ppLCB0aGUg LnNwZWMgc2NyaXB0IGdlbmVyYXRpbmcKKyMgZ2RiL3B5dGhvbi9saWJzdGRjeHgvIGFsc28gZG9l cyBub3QgZGVwZW5kIG9uIHRoZSAle2JpdHNfb3RoZXJ9IGZpbGVzLgorQnVpbGRSZXF1aXJlczog bGlic3RkYysrJXs/X2lzYX0KKyVlbmRpZiAjIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9CiAKICVp ZiAwJXs/X3dpdGhfdGVzdHN1aXRlOjF9CisKKyMgRW5zdXJlIHRoZSBkZXZlbCBsaWJyYXJpZXMg YXJlIGluc3RhbGxlZCBmb3IgYm90aCBtdWx0aWxpYiBhcmNoZXMuCislZGVmaW5lIGJpdHNfbG9j YWwgJXs/X2lzYX0KKyVkZWZpbmUgYml0c19vdGhlciAlez9faXNhfQorJWlmYXJjaCBzMzkweAor JWRlZmluZSBiaXRzX290aGVyICgle19faXNhX25hbWV9LTMxKQorJWVsc2UgIyFzMzkweAorJWlm YXJjaCBwcGMKKyVkZWZpbmUgYml0c19vdGhlciAoJXtfX2lzYV9uYW1lfS02NCkKKyVlbHNlICMh cHBjCislaWZhcmNoIHNwYXJjNjQgcHBjNjQgczM5MHggeDg2XzY0CislZGVmaW5lIGJpdHNfb3Ro ZXIgKCV7X19pc2FfbmFtZX0tMzIpCislZW5kaWYgI3NwYXJjNjQgcHBjNjQgczM5MHggeDg2XzY0 CislZW5kaWYgIyFwcGMKKyVlbmRpZiAjIXMzOTB4CisKIEJ1aWxkUmVxdWlyZXM6IHNoYXJ1dGls cyBkZWphZ251CiAjIGdjYy1vYmpjKysgaXMgbm90IGNvdmVyZWQgYnkgdGhlIEdEQiB0ZXN0c3Vp dGUuCi1CdWlsZFJlcXVpcmVzOiBnY2MgZ2NjLWMrKyBnY2MtZ2ZvcnRyYW4gZ2NjLWphdmEgZ2Nj LW9iamMgZnBjIGdsaWJjLXN0YXRpYwotIyBFbnN1cmUgdGhlIGRldmVsIGxpYnJhcmllcyBhcmUg aW5zdGFsbGVkIGZvciBib3RoIG11bHRpbGliIGFyY2hlcy4KLSVkZWZpbmUgbXVsdGlsaWJfNjRf YXJjaHMgc3BhcmM2NCBwcGM2NCBzMzkweCB4ODZfNjQKLSMgQ29waWVkIGZyb20gZ2NjLTQuMS4y LTMyCitCdWlsZFJlcXVpcmVzOiBnY2MgZ2NjLWMrKyBnY2MtZ2ZvcnRyYW4gZ2NjLWphdmEgZ2Nj LW9iamMKKyMgQ29waWVkIGZyb20gcHJlbGluay0wLjQuMi0zLmZjMTMuCislaWZhcmNoICV7aXg4 Nn0gYWxwaGEgc3BhcmMgc3BhcmN2OSBzcGFyYzY0IHMzOTAgczM5MHggeDg2XzY0IHBwYyBwcGM2 NAorIyBQcmVsaW5rIGlzIGJyb2tlbiBvbiBzcGFyY3Y5L3NwYXJjNjQuCislaWZuYXJjaCBzcGFy Y3Y5IHNwYXJjNjQKK0J1aWxkUmVxdWlyZXM6IHByZWxpbmsKKyVlbmRpZgorJWVuZGlmCislaWYg MCV7IT9yaGVsOjF9CitCdWlsZFJlcXVpcmVzOiBmcGMKKyVlbmRpZgorJWlmIDAlez9lbDU6MX0K K0J1aWxkUmVxdWlyZXM6IGdjYzQ0IGdjYzQ0LWdmb3J0cmFuCislZW5kaWYKKyMgQ29waWVkIGZy b20gZ2NjLTQuMS4yLTMyLgogJWlmYXJjaCAle2l4ODZ9IHg4Nl82NCBpYTY0IHBwYyBhbHBoYQog QnVpbGRSZXF1aXJlczogZ2NjLWduYXQKLSVpZmFyY2ggJXttdWx0aWxpYl82NF9hcmNoc30gcHBj Ci1CdWlsZFJlcXVpcmVzOiAle19leGVjX3ByZWZpeH0vbGliNjQvbGliZ25hdC00LjQuc28gJXtf ZXhlY19wcmVmaXh9L2xpYi9saWJnbmF0LTQuNC5zbwotJWVuZGlmCitCdWlsZFJlcXVpcmVzOiBs aWJnbmF0JXtiaXRzX2xvY2FsfSBsaWJnbmF0JXtiaXRzX290aGVyfQogJWVuZGlmCi0laWZhcmNo ICV7bXVsdGlsaWJfNjRfYXJjaHN9IHNwYXJjIHNwYXJjdjkgcHBjCi1CdWlsZFJlcXVpcmVzOiAv bGliL2xpYmMuc28uNiAle19leGVjX3ByZWZpeH0vbGliL2xpYmMuc28gL2xpYjY0L2xpYmMuc28u NiAle19leGVjX3ByZWZpeH0vbGliNjQvbGliYy5zbwotQnVpbGRSZXF1aXJlczogL2xpYi9saWJn Y2Nfcy5zby4xIC9saWI2NC9saWJnY2Nfcy5zby4xCi1CdWlsZFJlcXVpcmVzOiAle19leGVjX3By ZWZpeH0vbGliL2xpYnN0ZGMrKy5zby42ICV7X2V4ZWNfcHJlZml4fS9saWI2NC9saWJzdGRjKysu c28uNgotQnVpbGRSZXF1aXJlczogJXtfZXhlY19wcmVmaXh9L2xpYjY0L2xpYmdjai5zby4xMCAl e19leGVjX3ByZWZpeH0vbGliL2xpYmdjai5zby4xMAorQnVpbGRSZXF1aXJlczogZ2xpYmMtZGV2 ZWwle2JpdHNfbG9jYWx9IGdsaWJjLWRldmVsJXtiaXRzX290aGVyfQorQnVpbGRSZXF1aXJlczog bGliZ2NjJXtiaXRzX2xvY2FsfSBsaWJnY2Mle2JpdHNfb3RoZXJ9CisjIGxpYnN0ZGMrKy1kZXZl bCBvZiBtYXRjaGluZyBiaXRzIGlzIHJlcXVpcmVkIG9ubHkgZm9yIGcrKyAtc3RhdGljLgorQnVp bGRSZXF1aXJlczogbGlic3RkYysrJXtiaXRzX2xvY2FsfSBsaWJzdGRjKysle2JpdHNfb3RoZXJ9 CitCdWlsZFJlcXVpcmVzOiBsaWJnY2ole2JpdHNfbG9jYWx9IGxpYmdjaiV7Yml0c19vdGhlcn0K K0J1aWxkUmVxdWlyZXM6IGdsaWJjLXN0YXRpYyV7Yml0c19sb2NhbH0KICMgbXVsdGlsaWIgZ2xp YmMtc3RhdGljIGlzIG9wZW4gQnVnIDQ4ODQ3MjoKLSNCdWlsZFJlcXVpcmVzOiAle19leGVjX3By ZWZpeH0vbGliNjQvbGliYy5hICV7X2V4ZWNfcHJlZml4fS9saWIvbGliYy5hCi0jIGZvciBnY2Mt amF2YToKLUJ1aWxkUmVxdWlyZXM6ICV7X2V4ZWNfcHJlZml4fS9saWI2NC9saWJ6LnNvICV7X2V4 ZWNfcHJlZml4fS9saWIvbGliei5zbwotJWVuZGlmCislaWYgMCV7P2VsNToxfQorQnVpbGRSZXF1 aXJlczogZ2xpYmMtc3RhdGljJXtiaXRzX290aGVyfQogJWVuZGlmCisjIGZvciBnY2MtamF2YSBs aW5rYWdlOgorQnVpbGRSZXF1aXJlczogemxpYi1kZXZlbCV7Yml0c19sb2NhbH0gemxpYi1kZXZl bCV7Yml0c19vdGhlcn0KK0J1aWxkUmVxdWlyZXM6IHZhbGdyaW5kJXtiaXRzX2xvY2FsfSB2YWxn cmluZCV7Yml0c19vdGhlcn0KKworJWVuZGlmICMgMCV7P193aXRoX3Rlc3RzdWl0ZToxfQogCiAl aWZhcmNoIGlhNjQKKyVpZiAwJXshP2VsNToxfQogQnVpbGRSZXF1aXJlczogbGlidW53aW5kLWRl dmVsID49IDAuOTktMC4xLmZyeXNrMjAwNzA0MDVjdnMKIFJlcXVpcmVzOiBsaWJ1bndpbmQgPj0g MC45OS0wLjEuZnJ5c2syMDA3MDQwNWN2cwogJWVsc2UKLSMgUHJlbGluayBpcyBicm9rZW4gb24g c3BhcmN2OS9zcGFyYzY0Ci0laWZuYXJjaCBzcGFyY3Y5IHNwYXJjNjQKLUJ1aWxkUmVxdWlyZXM6 IHByZWxpbmsKK0J1aWxkUmVxdWlyZXM6IGxpYnVud2luZCA+PSAwLjk2LTMKK1JlcXVpcmVzOiBs aWJ1bndpbmQgPj0gMC45Ni0zCiAlZW5kaWYKICVlbmRpZgotIAorCiBSZXF1aXJlcyhwb3N0KTog L3NiaW4vaW5zdGFsbC1pbmZvCiBSZXF1aXJlcyhwcmV1bik6IC9zYmluL2luc3RhbGwtaW5mbwog CkBAIC00MjMsNiArNTM0LDcgQEAgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLCBhbGxvd3MgeW91IHRv IGRlYnVnIHByb2dyYW1zIHdyaXR0ZW4gaW4gQywgQysrLAogSmF2YSwgYW5kIG90aGVyIGxhbmd1 YWdlcywgYnkgZXhlY3V0aW5nIHRoZW0gaW4gYSBjb250cm9sbGVkIGZhc2hpb24KIGFuZCBwcmlu dGluZyB0aGVpciBkYXRhLgogCislaWYgMCV7IT9lbDU6MX0KICVwYWNrYWdlIGdkYnNlcnZlcgog U3VtbWFyeTogQSBzdGFuZGFsb25lIHNlcnZlciBmb3IgR0RCICh0aGUgR05VIHNvdXJjZS1sZXZl bCBkZWJ1Z2dlcikKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTQzMyw2ICs1NDUs NyBAQCBKYXZhLCBhbmQgb3RoZXIgbGFuZ3VhZ2VzLCBieSBleGVjdXRpbmcgdGhlbSBpbiBhIGNv bnRyb2xsZWQgZmFzaGlvbgogYW5kIHByaW50aW5nIHRoZWlyIGRhdGEuCiAKIFRoaXMgcGFja2Fn ZSBwcm92aWRlcyBhIHByb2dyYW0gdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBHREIgb24gYSBkaWZm ZXJlbnQgbWFjaGluZSB0aGFuIHRoZSBvbmUgd2hpY2ggaXMgcnVubmluZyB0aGUgcHJvZ3JhbSBi ZWluZyBkZWJ1Z2dlZC4KKyVlbmRpZiAjIDAleyE/ZWw1OjF9CiAKICVwcmVwCiAKQEAgLTQ0Miw3 ICs1NTUsNyBAQCBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBwcm9ncmFtIHRoYXQgYWxsb3dzIHlv dSB0byBydW4gR0RCIG9uIGEgZGlmZmVyZW50IG1hY2hpbgogJXNldHVwIC1xIC1uICV7Z2RiX3Ny Y30KIAogIyBsaWJzdGRjKysgcHJldHR5IHByaW50ZXJzLgoteHogLWRjICV7U09VUkNFNH0gfCB0 YXIgeGYgLQordGFyIHhqZiAle1NPVVJDRTR9CiAKICMgRmlsZXMgaGF2ZSBgIyA8bnVtYmVyPiA8 ZmlsZT4nIHN0YXRlbWVudHMgYnJlYWtpbmcgVlBBVEggLyBmaW5kLWRlYnVnaW5mby5zaCAuCiBy bSAtZiBnZGIvYWRhLWV4cC5jIGdkYi9hZGEtbGV4LmMgZ2RiL2MtZXhwLmMgZ2RiL2NwLW5hbWUt cGFyc2VyLmMgZ2RiL2YtZXhwLmMKQEAgLTQ1NSw4ICs1NjgsMTMgQEAgcm0gLWYgZ2RiL2p2LWV4 cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogCiAlaWYgMCV7IT9f d2l0aF91cHN0cmVhbToxfQogCi0jcGF0Y2gyMzIgLXAxCislcGF0Y2gyMzIgLXAxCiAlcGF0Y2gz NDkgLXAxCislcGF0Y2gzODMgLXAxCislcGF0Y2gzODQgLXAxCislcGF0Y2gzODUgLXAxCislcGF0 Y2gzODggLXAxCislcGF0Y2gxMjQgLXAxCiAlcGF0Y2gxIC1wMQogJXBhdGNoMyAtcDEKIApAQCAt NDY4LDcgKzU4Niw2IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMt ZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDExOCAtcDEKICVwYXRjaDEyMiAtcDEKICVwYXRjaDEy NSAtcDEKLSVwYXRjaDEyOCAtcDEKICVwYXRjaDEzMyAtcDEKICVwYXRjaDEzNiAtcDEKICVwYXRj aDE0MCAtcDEKQEAgLTQ3Nyw4ICs1OTQsNiBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4 cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gxNDIgLXAxCiAlcGF0Y2gxNDUg LXAxCiAlcGF0Y2gxNDggLXAxCi0lcGF0Y2gxNTAgLXAxCi0lcGF0Y2gxNTEgLXAxCiAlcGF0Y2gx NTMgLXAxCiAlcGF0Y2gxNTcgLXAxCiAlcGF0Y2gxNTggLXAxCkBAIC01NjAsMTUgKzY3NSwzNyBA QCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4 cC5jCiAlcGF0Y2gzNzUgLXAxCiAlcGF0Y2gzNzYgLXAxCiAlcGF0Y2gzODEgLXAxCi0lcGF0Y2gx MjQgLXAxCislcGF0Y2gzODIgLXAxCislcGF0Y2gzODcgLXAxCislcGF0Y2gzODkgLXAxCislcGF0 Y2gzOTAgLXAxCislcGF0Y2gzOTEgLXAxCislcGF0Y2gzOTIgLXAxCisjIEFsd2F5cyB2ZXJpZnkg aXRzIGFwcGxpY2FiaWxpdHkuCislcGF0Y2gzOTMgLXAxCislcGF0Y2gzMzUgLXAxCislaWYgMCV7 IT9lbDU6MX0KKyVwYXRjaDM5MyAtcDEgLVIKKyVwYXRjaDMzNSAtcDEgLVIKKyVlbmRpZgorJXBh dGNoMzk0IC1wMQorJXBhdGNoMzk1IC1wMQorJXBhdGNoMzk2IC1wMQorJXBhdGNoMzk3IC1wMQor JXBhdGNoMzk4IC1wMQorJXBhdGNoMzk5IC1wMQorJXBhdGNoNDAwIC1wMQorJXBhdGNoNDAxIC1w MQogCiBmaW5kIC1uYW1lICIqLm9yaWciIHwgeGFyZ3Mgcm0gLWYKLSEgZmluZCAtbmFtZSAiKi5y ZWoiCSMgU2hvdWxkIG5vdCBoYXBwZW4uCishIGZpbmQgLW5hbWUgIioucmVqIiAjIFNob3VsZCBu b3QgaGFwcGVuLgogCi0lZW5kaWYJIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CislZW5kaWYgIyAw JXshP193aXRoX3Vwc3RyZWFtOjF9CiAKICMgQ2hhbmdlIHRoZSB2ZXJzaW9uIHRoYXQgZ2V0cyBw cmludGVkIGF0IEdEQiBzdGFydHVwLCBzbyBpdCBpcyBGZWRvcmEKICMgc3BlY2lmaWMuCisjIEZl ZG9yYSAoJXt2ZXJzaW9ufS0le3JlbGVhc2V9KQorIyBSZWQgSGF0IEVudGVycHJpc2UgTGludXgg KCV7dmVyc2lvbn0tJXtyZWxlYXNlfSkKIGNhdCA+IGdkYi92ZXJzaW9uLmluIDw8IF9GT08KIEZl ZG9yYSAoJXt2ZXJzaW9ufS0le3JlbGVhc2V9KQogX0ZPTwpAQCAtNjA0LDQ0ICs3NDEsNTIgQEAg ZXhwb3J0IENGTEFHUz0iJFJQTV9PUFRfRkxBR1MiCiBDRkxBR1M9IiRDRkxBR1MgLU8wIC1nZ2Ri MiIKICVlbmRpZgogCi0uLi9jb25maWd1cmUJCQkJCQlcCi0JLS1wcmVmaXg9JXtfcHJlZml4fQkJ CQlcCi0JLS1saWJkaXI9JXtfbGliZGlyfQkJCQlcCi0JLS1zeXNjb25mZGlyPSV7X3N5c2NvbmZk aXJ9CQkJXAotCS0tbWFuZGlyPSV7X21hbmRpcn0JCQkJXAotCS0taW5mb2Rpcj0le19pbmZvZGly fQkJCQlcCi0JLS13aXRoLWdkYi1kYXRhZGlyPSV7X2RhdGFkaXJ9L2dkYgkJXAotCS0td2l0aC1w eXRob25kaXI9JXtfZGF0YWRpcn0vZ2RiL3B5dGhvbgkJXAotCS0tZW5hYmxlLWdkYi1idWlsZC13 YXJuaW5ncz0sLVduby11bnVzZWQJXAorLi4vY29uZmlndXJlCQkJCQkJCVwKKwktLXByZWZpeD0l e19wcmVmaXh9CQkJCQlcCisJLS1saWJkaXI9JXtfbGliZGlyfQkJCQkJXAorCS0tc3lzY29uZmRp cj0le19zeXNjb25mZGlyfQkJCQlcCisJLS1tYW5kaXI9JXtfbWFuZGlyfQkJCQkJXAorCS0taW5m b2Rpcj0le19pbmZvZGlyfQkJCQkJXAorCS0td2l0aC1nZGItZGF0YWRpcj0le19kYXRhZGlyfS9n ZGIJCQlcCisJLS13aXRoLXB5dGhvbmRpcj0le19kYXRhZGlyfS9nZGIvcHl0aG9uCQkJXAorCS0t ZW5hYmxlLWdkYi1idWlsZC13YXJuaW5ncz0sLVduby11bnVzZWQJCVwKICVpZm5hcmNoICV7aXg4 Nn0gYWxwaGEgaWE2NCBwcGMgczM5MCBzMzkweCB4ODZfNjQgcHBjNjQgc3BhcmN2OSBzcGFyYzY0 Ci0JLS1kaXNhYmxlLXdlcnJvcgkJCQlcCi0lZWxzZSAKKwktLWRpc2FibGUtd2Vycm9yCQkJCQlc CislZWxzZQogJWlmIDAlez9fd2l0aF91cHN0cmVhbToxfQotCS0tZGlzYWJsZS13ZXJyb3IJCQkJ XAorCS0tZGlzYWJsZS13ZXJyb3IJCQkJCVwKICVlbHNlCi0JLS1lbmFibGUtd2Vycm9yCQkJCQlc CisJLS1lbmFibGUtd2Vycm9yCQkJCQkJXAogJWVuZGlmCiAlZW5kaWYKLQktLXdpdGgtc2VwYXJh dGUtZGVidWctZGlyPS91c3IvbGliL2RlYnVnCVwKLQktLWRpc2FibGUtc2ltCQkJCQlcCi0JLS1k aXNhYmxlLXJwYXRoCQkJCQlcCi0JLS13aXRoLXN5c3RlbS1yZWFkbGluZQkJCQlcCi0JLS13aXRo LWV4cGF0CQkJCQlcCi0JLS1lbmFibGUtdHVpCQkJCQlcCisJLS13aXRoLXNlcGFyYXRlLWRlYnVn LWRpcj0vdXNyL2xpYi9kZWJ1ZwkJXAorCS0tZGlzYWJsZS1zaW0JCQkJCQlcCisJLS1kaXNhYmxl LXJwYXRoCQkJCQkJXAorCS0td2l0aC1zeXN0ZW0tcmVhZGxpbmUJCQkJCVwKKwktLXdpdGgtZXhw YXQJCQkJCQlcCiskKDogcHBjNjQgaG9zdCBidWlsZCBjcmFzaGVzIG9uIHBwYyB2YXJpYW50IG9m IGxpYmV4cGF0LnNvICkJXAorCS0td2l0aG91dC1saWJleHBhdC1wcmVmaXgJCQkJXAorCS0tZW5h YmxlLXR1aQkJCQkJCVwKICVpZiAwJXshP193aXRob3V0X3B5dGhvbjoxfQotCS0td2l0aC1weXRo b24JCQkJCVwKKwktLXdpdGgtcHl0aG9uCQkJCQkJXAogJWVsc2UKLQktLXdpdGhvdXQtcHl0aG9u CQkJCVwKKwktLXdpdGhvdXQtcHl0aG9uCQkJCQlcCislZW5kaWYKKyQoOiBXb3JrYXJvdW5kIHJw bS5vcmcjNzYsIEJaIDUwODE5MyBvbiByZWNlbnQgT1Nlcy4gKQkJXAorJCg6IFJIRUwtNSBsaWJy cG0gaGFzIGluY29tcGF0aWJsZSBBUEkuICkJCQlcCislaWYgMCV7P2VsNToxfQorCS0td2l0aG91 dC1ycG0JCQkJCQlcCislZWxzZQorCS0td2l0aC1ycG09bGlicnBtLnNvLjAJCQkJCVwKICVlbmRp ZgotCS0td2l0aC1ycG09bGlicnBtLnNvLjAJCQkJXAogJWlmYXJjaCBpYTY0Ci0JLS13aXRoLWxp YnVud2luZAkJCQlcCisJLS13aXRoLWxpYnVud2luZAkJCQkJXAogJWVsc2UKLQktLXdpdGhvdXQt bGlidW53aW5kCQkJCVwKKwktLXdpdGhvdXQtbGlidW53aW5kCQkJCQlcCiAlZW5kaWYKLQktLWVu YWJsZS02NC1iaXQtYmZkCQkJCVwKKwktLWVuYWJsZS02NC1iaXQtYmZkCQkJCQlcCiAlaWYgMCV7 P193aXRoX2RlYnVnOjF9Ci0JLS1lbmFibGUtc3RhdGljIC0tZGlzYWJsZS1zaGFyZWQgLS1lbmFi bGUtZGVidWcJXAorCS0tZW5hYmxlLXN0YXRpYyAtLWRpc2FibGUtc2hhcmVkIC0tZW5hYmxlLWRl YnVnCQlcCiAlZW5kaWYKICVpZmFyY2ggc3BhcmN2OQogCXNwYXJjLSV7X3ZlbmRvcn0tJXtfdGFy Z2V0X29zfSV7P19nbnV9CkBAIC02NTIsNiArNzk3LDggQEAgQ0ZMQUdTPSIkQ0ZMQUdTIC1PMCAt Z2dkYjIiCiBtYWtlICV7P19zbXBfbWZsYWdzfQogbWFrZSAlez9fc21wX21mbGFnc30gaW5mbwog CitncmVwICcjZGVmaW5lIEhBVkVfWkxJQl9IIDEnIGdkYi9jb25maWcuaAorCiAjIENvcHkgdGhl IDxzb3VyY2V0cmVlPi9nZGIvTkVXUyBmaWxlIHRvIHRoZSBkaXJlY3RvcnkgYWJvdmUgaXQuCiBj cCAkUlBNX0JVSUxEX0RJUi8le2dkYl9zcmN9L2dkYi9ORVdTICRSUE1fQlVJTERfRElSLyV7Z2Ri X3NyY30KIApAQCAtNjY0LDcgKzgxMSw3IEBAIGVjaG8gPT09PT09PT09PT09PT09PT09PT1URVNU U1VJVEUgRElTQUJMRUQ9PT09PT09PT09PT09PT09PT09PT09PT09CiAlZWxzZQogZWNobyA9PT09 PT09PT09PT09PT09PT09PVRFU1RJTkc9PT09PT09PT09PT09PT09PT09PT09PT09CiBjZCBnZGIK LWdjYyAtbyAuL29ycGhhbnJpcHBlciAle1NPVVJDRTJ9IC1XYWxsIC1sdXRpbAorZ2NjIC1vIC4v b3JwaGFucmlwcGVyICV7U09VUkNFMn0gLVdhbGwgLWx1dGlsIC1nZ2RiMgogIyBOZWVkIHRvIHVz ZSBhIHNpbmdsZSAtLWlnbm9yZSBvcHRpb24sIHNlY29uZCB1c2Ugb3ZlcnJpZGVzIGZpcnN0Lgog IyBObyBgJXs/X3NtcF9tZmxhZ3N9JyBoZXJlIGFzIGl0IG1heSByYWNlLgogIyBXQVJOSU5HOiBj YW4ndCBnZW5lcmF0ZSBhIGNvcmUgZmlsZSAtIGNvcmUgdGVzdHMgc3VwcHJlc3NlZCAtIGNoZWNr IHVsaW1pdApAQCAtNzE5LDEwICs4NjYsMTQgQEAgZ2NjIC1vIC4vb3JwaGFucmlwcGVyICV7U09V UkNFMn0gLVdhbGwgLWx1dGlsCiAgICMgUnVuIGFsbCB0aGUgc2NoZWR1bGVkIHRlc3RzdWl0ZSBy dW5zIGFsc28gaW4gdGhlIFBJRSBtb2RlLgogICAjIFVwc3RyZWFtIEdEQiB3b3VsZCBsb2NrIHVw IHRoZSB0ZXN0c3VpdGUgcnVuIGZvciB0b28gbG9uZyBvbiBpdHMgZmFpbHVyZXMuCiAgIENIRUNL PSIkKGVjaG8gJENIRUNLfHNlZCAncyNjaGVjay8vdW5peC9bXiBdKiMmICYvLWZQSUUvLXBpZSNn JykiCi0lZW5kaWYJIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CislZW5kaWYgIyAwJXshP193aXRo X3Vwc3RyZWFtOjF9CiAKLSAgIyBGSVhNRTogVGVtcG9yYXJ5IEYxMiBkaXNhYmxlOiAuL29ycGhh bnJpcHBlcgotICBtYWtlICV7P19zbXBfbWZsYWdzfSAtayAkQ0hFQ0sgfHwgOgorICAuL29ycGhh bnJpcHBlciBtYWtlICV7P19zbXBfbWZsYWdzfSAtayAkQ0hFQ0sgXAorJCg6IFNlcmlhbGl6ZSB0 aGUgb3V0cHV0IHRvIGtlZXAgdGhlIG9yZGVyIGZvciByZWdyZXNzaW9uIGNoZWNrcy4gKSBcCisl aWYgMCV7P2VsNToxfQorICAgIFJVTlRFU1RGTEFHUz0iLS10b29sIGdkYiIgXAorJWVuZGlmCisg ICAgfHwgOgogKQogZm9yIHQgaW4gc3VtIGxvZwogZG8KQEAgLTc3MSw3ICs5MjIsNyBAQCBkb25l CiB0ZXN0ICEgLWUgJFJQTV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZ2RiL3B5dGhvbi9saWJzdGRj eHgKIGNwIC1hICRSUE1fQlVJTERfRElSLyV7Z2RiX3NyY30vJXtsaWJzdGRjeHhweXRob259L2xp YnN0ZGN4eAlcCiAgICAgICAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9nZGIvcHl0aG9uL2xp YnN0ZGN4eAotJWVuZGlmCSMgMCV7IT9fd2l0aG91dF9weXRob246MX0KKyVlbmRpZiAjIDAleyE/ X3dpdGhvdXRfcHl0aG9uOjF9CiAKICMgUmVtb3ZlIHRoZSBmaWxlcyB0aGF0IGFyZSBwYXJ0IG9m IGEgZ2RiIGJ1aWxkIGJ1dCB0aGF0IGFyZSBvd25lZCBhbmQKICMgcHJvdmlkZWQgYnkgb3RoZXIg cGFja2FnZXMuCkBAIC03OTQsOSArOTQ1LDExIEBAIHJtIC1mICRSUE1fQlVJTERfUk9PVCV7X2lu Zm9kaXJ9L2RpcgogIyBwc3RhY2sgb2Jzb2xldGlvbgogCiBjcCAtcCAle1NPVVJDRTN9ICRSUE1f QlVJTERfUk9PVCV7X21hbmRpcn0vbWFuMS9nc3RhY2suMQorJWlmIDAleyE/ZWw1OjF9CiBsbiAt cyBnc3RhY2suMS5neiAkUlBNX0JVSUxEX1JPT1Qle19tYW5kaXJ9L21hbjEvcHN0YWNrLjEuZ3oK IGxuIC1zIGdzdGFjayAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9L3BzdGFjawotJWVuZGlmCSMg MCV7IT9fd2l0aF91cHN0cmVhbToxfQorJWVuZGlmICMgMCV7IT9lbDU6MX0KKyVlbmRpZiAjIDAl eyE/X3dpdGhfdXBzdHJlYW06MX0KIAogJWNsZWFuCiBybSAtcmYgJFJQTV9CVUlMRF9ST09UCkBA IC04MDUsMTcgKzk1OCwyNiBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiAjIFRoaXMgc3RlcCBp cyBwYXJ0IG9mIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIFJQTS4gTm90IHRvIGJlIGNvbmZ1c2Vk CiAjIHdpdGggdGhlICdtYWtlIGluc3RhbGwgJyBvZiB0aGUgYnVpbGQgKHJwbWJ1aWxkKSBwcm9j ZXNzLgogCi0vc2Jpbi9pbnN0YWxsLWluZm8gLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZv ZGlyfS9hbm5vdGF0ZS5pbmZvLmd6IHx8IDoKLS9zYmluL2luc3RhbGwtaW5mbyAtLWluZm8tZGly PSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2dkYi5pbmZvLmd6IHx8IDoKLS9zYmluL2luc3RhbGwt aW5mbyAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2dkYmludC5pbmZvLmd6IHx8 IDoKLS9zYmluL2luc3RhbGwtaW5mbyAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9 L3N0YWJzLmluZm8uZ3ogfHwgOgorIyBGb3IgLS1leGNsdWRlZG9jczoKK2lmIFsgLWUgJXtfaW5m b2Rpcn0vZ2RiLmluZm8uZ3ogXQordGhlbgorICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1pbmZvLWRp cj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9hbm5vdGF0ZS5pbmZvLmd6IHx8IDoKKyAgL3NiaW4v aW5zdGFsbC1pbmZvIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ2RiLmluZm8u Z3ogfHwgOgorICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19p bmZvZGlyfS9nZGJpbnQuaW5mby5neiB8fCA6CisgIC9zYmluL2luc3RhbGwtaW5mbyAtLWluZm8t ZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L3N0YWJzLmluZm8uZ3ogfHwgOgorZmkKIAogJXBy ZXVuCi1pZiBbICQxID0gMCBdOyB0aGVuCi0JL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIC0t aW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vYW5ub3RhdGUuaW5mby5neiB8fCA6Ci0J L3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5m b2Rpcn0vZ2RiLmluZm8uZ3ogfHwgOgotCS9zYmluL2luc3RhbGwtaW5mbyAtLWRlbGV0ZSAtLWlu Zm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2dkYmludC5pbmZvLmd6IHx8IDoKLQkvc2Jp bi9pbnN0YWxsLWluZm8gLS1kZWxldGUgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGly fS9zdGFicy5pbmZvLmd6IHx8IDoKK2lmIFsgJDEgPSAwIF0KK3RoZW4KKyAgIyBGb3IgLS1leGNs dWRlZG9jczoKKyAgaWYgWyAtZSAle19pbmZvZGlyfS9nZGIuaW5mby5neiBdCisgIHRoZW4KKyAg ICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19p bmZvZGlyfS9hbm5vdGF0ZS5pbmZvLmd6IHx8IDoKKyAgICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1k ZWxldGUgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nZGIuaW5mby5neiB8fCA6 CisgICAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0g JXtfaW5mb2Rpcn0vZ2RiaW50LmluZm8uZ3ogfHwgOgorICAgIC9zYmluL2luc3RhbGwtaW5mbyAt LWRlbGV0ZSAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L3N0YWJzLmluZm8uZ3og fHwgOgorICBmaQogZmkKIAogJWZpbGVzCkBAIC04MjgsMTAgKzk5MCwxMiBAQCBmaQogJXtfbWFu ZGlyfS8qL2dkYnR1aS4xKgogJWlmIDAleyE/X3dpdGhfdXBzdHJlYW06MX0KICV7X2JpbmRpcn0v Z3N0YWNrCi0le19iaW5kaXJ9L3BzdGFjawogJXtfbWFuZGlyfS8qL2dzdGFjay4xKgorJWlmIDAl eyE/ZWw1OjF9Cisle19iaW5kaXJ9L3BzdGFjawogJXtfbWFuZGlyfS8qL3BzdGFjay4xKgotJWVu ZGlmCSMgMCV7IT9fd2l0aF91cHN0cmVhbToxfQorJWVuZGlmICMgMCV7IT9lbDU6MX0KKyVlbmRp ZiAjIDAleyE/X3dpdGhfdXBzdHJlYW06MX0KICV7X2RhdGFkaXJ9L2dkYgogJXtfaW5mb2Rpcn0v YW5ub3RhdGUuaW5mbyoKICV7X2luZm9kaXJ9L2dkYi5pbmZvKgpAQCAtODQwLDEzICsxMDA0LDE0 OCBAQCBmaQogCiAjIGRvbid0IGluY2x1ZGUgdGhlIGZpbGVzIGluIGluY2x1ZGUsIHRoZXkgYXJl IHBhcnQgb2YgYmludXRpbHMKIAotJWlmbmFyY2ggc3BhcmN2OSAKKyVpZm5hcmNoIHNwYXJjdjkK KyVpZiAwJXshP2VsNToxfQogJWZpbGVzIGdkYnNlcnZlcgorJWRlZmF0dHIoLSxyb290LHJvb3Qp CislZW5kaWYKICV7X2JpbmRpcn0vZ2Ric2VydmVyCiAle19tYW5kaXJ9LyovZ2Ric2VydmVyLjEq CiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBUdWUgSmFuIDEyIDIwMTAgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjEtMjUuZmMxMgorLSBub24tbGlicnBt IG1pc3NpbmcgZGVidWdpbmZvIHl1bWNvbW1hbmQgbm93IHByaW50cyBhbHNvIC0tZGlzYWJsZXJl cG89JyonCisgIHRvIHNhdmUgc29tZSBiYW5kd2lkdGggYnkgeXVtIChSb2JpbiBHcmVlbiwgQlog NTU0MTUyKS4KKworKiBTdW4gSmFuIDEwIDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IC0gNy4wLjEtMjQuZmMxMgorLSB0ZXN0c3VpdGU6IEJ1aWxkUmVxdWly ZXMgYWxzbyB2YWxncmluZC4KKworKiBGcmkgSmFuICA4IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjEtMjMuZmMxMgorLSBXb3JrYXJvdW5kIG1p c3NpbmcgbGlic3RkYysrJSV7Yml0c19vdGhlcn0gaW4gS29qaS4KKworKiBGcmkgSmFuICA4IDIw MTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjEtMjIu ZmMxMgorLSBDb21wbHkgd2l0aCBuZXcgcGFja2FnZSByZXZpZXc6CisgIC0gRml4IC5zcGVjIFNv dXJjZSBhcyB0aGlzIGlzIG5vdCBhIHNuYXBzaG90IG5vdy4KKyAgLSBDb252ZXJ0IGFsbCBzcGFj ZXMgdG8gdGFicy4KKyAgLSBGaXggbWlzc2luZyAlJWRlZmF0dHIgYXQgJSVmaWxlcyBmb3IgZ2Ri c2VydmVyLgorICAtIFJlcGxhY2UgYWxsIGhhcmRjb2RlZC1saWJyYXJ5LXBhdGggYnkgdmFyaWFu dHMgb2YgJSV7X2lzYX0uCistIEluY2x1ZGUgJSV7X2lzYX0gZm9yIGFwcHJvcHJpYXRlIFJlcXVp cmVzIGFuZCBCdWlsZFJlcXVpcmVzLgorCisqIFRodSBKYW4gIDcgMjAxMCBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAuMS0yMS5mYzEyCistIFt2bGFdIEZp eCByZWdyZXNzaW9uIG9uIGZpZWxkcyBvZiBzdHJ1Y3RzIGluIGludGVybmFsIHZhcnMgKEJaIDU1 MzMzOCkuCistIGFyY2hlci1qYW5rcmF0b2NodmlsLWZlZG9yYTEyIGNvbW1pdDogNmU3Mzk4OGY2 NTNiYTk4NmU4NzQyZjIwOGYxN2VjMDg0MjkyY2JkNQorCisqIFRodSBKYW4gIDcgMjAxMCBKYW4g S3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAuMS0yMC5mYzEyCist IEZpeCBjcmFzaCByZWFkaW5nIGJyb2tlbiBzdGFicyAoaXQzNzc2NzEpLgorCisqIFN1biBKYW4g IDMgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAu MS0xOS5mYzEyCistIHRlc3RzdWl0ZTogRml4dXAgZmFsc2UgRkFJTHMgZm9yIGdkYi5jcC9jb25z dHJ1Y3RvcnRlc3QuZXhwLgorCisqIFNhdCBKYW4gIDIgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAuMS0xOC5mYzEyCistIEZpeCByZWdyZXNzaW9u IG9mIGdkYi03LjAgKGZyb20gNi44KSBjcmFzaGluZyBvbiB0eXBlZGVmZWQgYml0ZmllbGRzLgor LSBGaXggcmVsYXRlZF9icmVha3BvaW50IHN0YWxlIHJlZiBjcmFzaC4KKworKiBGcmkgSmFuICAx IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjEt MTcuZmMxMgorLSBGb3JtYWwgdXBncmFkZSB0byB0aGUgRlNGIEdEQiByZWxlYXNlIGdkYi03LjAu MS4KKyAgLSBGaXggcmVncmVzc2lvbiBvZiBnZGItNy4wLjEgbm90IHByZXNlcnZpbmcgdHlwZWRl ZiBvZiBhIGZpZWxkLgorCisqIEZyaSBKYW4gIDEgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtMTYuZmMxMgorLSBNb3JlIFJIRUwtNSBjb21wYXRp YmlsaXR5IHVwZGF0ZXMuCisgIC0gRGlzYWJsZSB0aGUgYnVpbGQtaWQgc3VwcG9ydCBieSBkZWZh dWx0LgorICAtIEJ1bmRsZSBiYWNrIGdkYnNlcnZlciB0byB0aGUgYmFzZSBnZGIgcGFja2FnZS4K KyAgLSBSZW1vdmUgYnVuZGxlZCBwc3RhY2suCisgIC0gRHJvcCB0aGUgQnVpbGRSZXF1aXJlcyBv ZiBycG0tZGV2ZWwuCisKKyogRnJpIEphbiAgMSAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMC0xNS5mYzEyCistIEZpeCBlcnJvciBvbiBhIHN3IHdh dGNocG9pbnQgYWN0aXZlIGF0IGZ1bmN0aW9uIGVwaWxvZ3VlIChoaXQgb24gczM5MHgpLgorLSB0 ZXN0c3VpdGU6IEZpeCBmYWxzZSBNSSAidW5rbm93biBvdXRwdXQgYWZ0ZXIgcnVubmluZyIgcmVn cmVzc2lvbi4KKy0gdGVzdHN1aXRlOiBVcGRhdGUgaWE2NC1zaWd0cmFtcC5leHAgZm9yIHJlY2Vu dCBHREIuCistIEltcGxlbWVudCBidC1jbG9uZS1zdG9wLmV4cCBmaXggYWxzbyBmb3IgaWE2NC4K Ky0gdGVzdHN1aXRlOiBVcHN0cmVhbSBjb25kYnJlYWsuZXhwIHJlc3VsdHMgc3RhYmlsaXR5IGZp eCAoRGFuaWVsIEphY29ib3dpdHopLgorCisqIFRodSBEZWMgMjQgMjAwOSBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtMTQuZmMxMgorLSB0ZXN0c3VpdGU6 IEZpeCBjb25zdHJ1Y3RvcnRlc3QuZXhwIGFuZCBleHBhbmQtc2Fscy5leHAgZm9yIGdjYy00LjQu Mi0yMC5mYzEyLgorCisqIE1vbiBEZWMgMjEgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtMTMuZmMxMgorLSBbcGllXSBGaXggYSByYWNlIGluIHRl c3RjYXNlIGdkYi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFjaC5leHAuCistIEZpeCByZWdyZXNzaW9u IGJ5IHB5dGhvbiBvbiBpYTY0IGR1ZSB0byBzdGFsZSBjdXJyZW50IGZyYW1lLgorLSBEaXNhYmxl IHB5dGhvbiBpZmYgUkhFTC01ICYmIChCcmV3IHx8IHBwYzY0KS4KKworKiBNb24gRGVjIDIxIDIw MDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLTEyLmZj MTIKKy0gV29ya2Fyb3VuZCBidWlsZCBvbiBuYXRpdmUgcHBjNjQgaG9zdC4KKy0gTW9yZSBSSEVM LTUgY29tcGF0aWJpbGl0eSB1cGRhdGVzLgorICAtIERpc2FibGUgd2FybmluZyBtZXNzYWdlcyBu ZXcgZm9yIGdkYi02LjgrIGZvciBSSEVMLTUgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyAgLSBX b3JrYXJvdW5kIFJIRUwtNSBrZXJuZWxzIGZvciBkZXRhY2hpbmcgU0lHU1RPUHBlZCBwcm9jZXNz ZXMgKEJaIDQ5ODU5NSkuCisgIC0gU2VyaWFsaXplIHRoZSB0ZXN0c3VpdGUgb3V0cHV0IHRvIGtl ZXAgdGhlIG9yZGVyIGZvciByZWdyZXNzaW9uIGNoZWNrcy4KKyAgLSBSZS1lbmFibGUgcHl0aG9u IGZvciBhbGwgbm9uLXBwYyogYXJjaGVzLgorICAtIE1vcmUgZ2NjNDQgc3RhY2sgZXhjZXB0aW9u cyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSBvbiBSSEVMLTUuCistIEZpeCBiYWNrd2FyZCBj b21wYXRpYmlsaXR5IHdpdGggRysrIDQuMSBuYW1lc3BhY2VzICI6OiIuCistIEZpeCByZWdyZXNz aW9uIG9uIHJlLXNldHRpbmcgdGhlIHNpbmdsZSBwcGMgd2F0Y2hwb2ludCBzbG90LgorLSBVcGRh dGUgc25hcHNob3Qgb2YgRlNGIGdkYi03LjAueCBicmFuY2guCisgIC0gQmFja3BvcnQgZml4IG9m IGRjYWNoZSBpbnZhbGlkYXRpb24gbG9ja2luZyB1cCBHREIgb24gcHBjNjQgdGFyZ2V0cy4KKwor KiBGcmkgRGVjIDE4IDIwMDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNy4wLTExLmZjMTIKKy0gW3BpZV0gRml4IGdlbmVyYWwgcHBjNjQgcmVncmVzc2lvbiBk dWUgdG8gYSBmdW5jdGlvbiBkZXNjcmlwdG9ycyBidWcuCistIFtwaWVdIEZpeCBhbHNvIGtlZXBp bmcgYnJlYWtwb2ludHMgZGlzYWJsZWQgaW4gUElFIG1vZGUuCistIEltcG9ydCB1cHN0cmVhbSA8 dGFiPi1jb21wbGV0aW9uIGNyYXNoIGZpeC4KKy0gRHJvcCBzb21lIHVudXNlZCBwYXRjaGVzIGZy b20gdGhlIHJlcG9zaXRvcnkuCistIE1vcmUgUkhFTC01IGJ1aWxkIGNvbXBhdGliaWxpdHkgdXBk YXRlcy4KKyAgLSBVc2UgZ2ZvcnRyYW40NCB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSBvbiBS SEVMLTUuCisgIC0gRGlzYWJsZSBweXRob24gdGhlcmUgZHVlIHRvIGluc3VmZmljaWVudCBwcGMg bXVsdGlsaWIuCistIEZpeCBvcnBoYW5yaXBwZXIgaGFuZ3MgYW5kIHRodXMgZW5hYmxlIGl0IGFn YWluLgorCisqIE1vbiBEZWMgMTQgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4gLSA3LjAtMTAuZmMxMgorLSBNYWtlIGdkYi02LjMtcmgtdGVzdHZlcnNpb24t MjAwNDEyMDIucGF0Y2ggdG8gYWNjZXB0IGJvdGggUkhFTCBhbmQgRmVkb3JhIEdEQi4KKy0gQWRq dXN0IEJ1aWxkUmVxdWlyZXMgZm9yIEZlZG9yYS0xMiwgUkhFTC02IGFuZCBSSEVMLTUgYnVpbGRz LgorLSBbdmxhXSBGaXggY29tcGF0aWJpbGl0eSBvZiBkeW5hbWljIGFycmF5cyB3aXRoIGlGb3J0 IChCWiA1MTQyODcpLgorLSBGaXggc3RlcHBpbmcgdGhyb3VnaCBPTVAgcGFyYWxsZWwgRm9ydHJh biBzZWN0aW9ucyAoQlogNTMzMTc2KS4KKy0gTmV3IGZpeCBvZiBicCBjb25kaXRpb25hbHMgW2Jw X2xvY2F0aW9uLWFjY2VsXSByZWdyZXNzaW9uIChCWiA1Mzg2MjYpLgorCisqIE1vbiBEZWMgIDcg MjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtOS5m YzEyCistIFJlcGxhY2UgdGhlIFBJRSAoUG9zaXRpb24gSW5kZXBkZW50IEV4ZWN1dGFibGUpIHN1 cHBvcnQgcGF0Y2ggYnkgYSBuZXcgb25lLgorLSBEcm9wIGdkYi02LjMtbm9udGhyZWFkZWQtd3At MjAwNTAxMTcucGF0Y2ggYXMgZnV6enkgKyByZWR1bmRhbnQuCistIEZpeCBjYWxsYmFjay1tb2Rl IHJlYWRsaW5lLTYuMCByZWdyZXNzaW9uIGZvciBDVFJMLUMuCistIEZpeCBzeXNjYWxsIHJlc3Rh cnRzIGZvciBhbWQ2NC0+aTM4NiBiaWFyY2guCistIFZhcmlvdXMgdGVzdHN1aXRlIHJlc3VsdHMg c3RhYmlsaXR5IGZpeGVzLgorLSBGaXggY3Jhc2ggb24gcmVhZGluZyBzdGFicyBvbiA2NGJpdCAo QlogNTM3ODM3KS4KKy0gYXJjaGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTIgY29tbWl0OiAxNjI3 NmMxYWFkMTM2NmI5MmU2ODdjNzJjYWIzMDE5MjI4MGUxOTA2CistIGFyY2hlci1qYW5rcmF0b2No dmlsLXBpZS1mZWRvcmExMiBjdDogMmFlNjBiNTE1NmQ0M2FhYmZlNTc1Nzk0MGVhZjdiNDM3MGZi MDVkMgorCisqIFRodSBEZWMgIDMgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4gLSA3LjAtOC5mYzEyCistIEZpeCBzbG93bmVzcy9oYW5nIHdoZW4gcHJpbnRp bmcgc29tZSB2YXJpYWJsZXMgKFNhbWkgV2FnaWFhbGxhLCBCWiA1NDEwOTMpLgorLSBhcmNoZXIt amFua3JhdG9jaHZpbC1mZWRvcmExMiBjb21taXQ6IDY4MTdhODFjZDQxMWFjYzk1NzlmMDRkY2Mx MDVlOWJjZTcyODU5ZmYKKworKiBXZWQgTm92IDI1IDIwMDkgSmFuIEtyYXRvY2h2aWwgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLTcuZmMxMgorLSBTdXBwb3J0IEdOVSBJRlVOQ3Mg LSBpbmRpcmVjdCBmdW5jdGlvbnMgKEJaIDUzOTU5MCkuCistIEZpeCBicCBjb25kaXRpb25hbHMg W2JwX2xvY2F0aW9uLWFjY2VsXSByZWdyZXNzaW9uIChQaGlsIE11bGRvb24sIEJaIDUzODYyNiku CistIEZpeCBtaXNzZWQgYnJlYWtwb2ludCBsb2NhdGlvbiBbYnBfbG9jYXRpb24tYWNjZWxdIHJl Z3Jlc3Npb24gKHVwc3RyZWFtKS4KKworKiBGcmkgT2N0IDMwIDIwMDkgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLTYKKy0gRml4IG1pc3NpbmcgemxpYi1k ZXZlbCBCdWlsZFJlcXVpcmVzIHRvIHN1cHBvcnQgY29tcHJlc3NlZCBEV0FSRiBzZWN0aW9ucy4K Ky0gSW5jbHVkZSBwb3N0LTcuMCBGU0YgR0RCIGZpeGVzLgorCisqIEZyaSBPY3QgMjMgMjAwOSBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtNQorLSBNYWtl IHRoZSBwYWNrYWdlIGJ1aWxkYWJsZSBvbiBSSEVMLTUvQ2VudE9TLTUgKHdpdGhvdXQgbGlicnBt IHRoZXJlKS4KKy0gYXJjaGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTIgY29tbWl0OiA1YjczZWE2 YTBmNzRlNjNkYjNiNTA0NzkyZmMxZDM3ZjU0OGJkZjVjCisKKyogRnJpIE9jdCAyMyAyMDA5IEph biBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMC00CistIEZpeCBy cG0gLS1leGNsdWRlZG9jcyAoQlogNTE1OTk4KS4KKworKiBUaHUgT2N0IDIyIDIwMDkgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLTMKKy0gU3VwcG9ydCBt dWx0aXBsZSBkaXJlY3RvcmllcyBmb3IgYHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeScgKEJaIDUy ODY2OCkuCisKKyogTW9uIE9jdCAxOSAyMDA5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDcuMC0yCistIFN5bmMgdGhlIC5zcGVjIHdpdGggUkhFTC9DZW50T1Mg d2l0aG91dCBFUEVMLCBkbyBub3QgQnVpbGRSZXF1aXJlczogZnBjIHRoZXJlLgorCisqIFdlZCBP Y3QgIDcgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3 LjAtMQorLSBGb3JtYWwgdXBncmFkZSB0byB0aGUgZmluYWwgRlNGIEdEQiByZWxlYXNlIGdkYi03 LjAuCistIEZpeCBHTlUvTGludXggY29yZSBvcGVuOiBDYW4ndCByZWFkIHBhdGhuYW1lIGZvciBs b2FkIG1hcDogSW5wdXQvb3V0cHV0IGVycm9yLgorLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRv cmExMiBjb21taXQ6IGNlNGVhZDM1NjY1NGI5NTFhNDljYTc4ZDgxZWJmZmY5NWU3NThiZjUKKwor KiBXZWQgU2VwIDMwIDIwMDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNi44LjkxLjIwMDkwOTMwLTIKKy0gQnVtcCByZWxlYXNlLgorCiAqIFdlZCBTZXAgMzAg MjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjguOTEu MjAwOTA5MzAtMQogLSBGaXggYnJva2VuIHB5dGhvbiAiaGVscCgpIiBjb21tYW5kICJtb2R1bGVz IiAoQlogNTI2NTUyKS4KIC0gVXBncmFkZSB0byB0aGUgRlNGIEdEQiBnZGItNy4wIHNuYXBzaG90 OiA2LjguOTEuMjAwOTA5MzAKQEAgLTEwMDYsNyArMTMwNSw3IEBAIGZpCiAtIEFyY2hlciBiYWNr cG9ydDogYzJkNWM0YTM5YjEwOTk0ZDg2ZDhmMmY5MGRmZWQ3NjllOGYyMTZmMwogICAtIEZpeCBw YXJzaW5nIERXX0FUX2NvbnN0X3ZhbHVlIHVzaW5nIERXX0ZPUk1fc3RyaW5nCiAtIEFyY2hlciBi YWNrcG9ydDogOGQ5YWI2OGZjMDk1NWM5ZGU2MzIwYmVjMjgyMWEyMWUzMjQ0NjAwZAotICAgICAg ICAgICAgICAgICArIGRiNDFlMTFhZTBhM2FlYzcxMjBhZDZjZTg2NDUwZDgzOGFmNzRkZDYKKwkJ ICsgZGI0MWUxMWFlMGEzYWVjNzEyMGFkNmNlODY0NTBkODM4YWY3NGRkNgogICAtIEZpeCBGb3J0 cmFuIG1vZHVsZXMvbmFtZXNwYWNlcyBwYXJzaW5nIChidXQgbm8gY2hhbmdlIHdhcyB2aXNpYmxl IGluIEYxMSkuCiAtIEFyY2hlciBiYWNrcG9ydDogMDAwZGI4YjdiZmVmODU4MWVmMDk5Y2NjYTg2 ODljZmRkZmVhMWJlOAogICAtIEZpeCAic29tZSBQeXRob24gZXJyb3Igd2hlbiBkaXNwbGF5aW5n IHNvbWUgQysrIG9iamVjdHMiIChCWiA1MDQzNTYpLgpAQCAtMTAxNCw3ICsxMzEzLDcgQEAgZmkK IC0gdGVzdHN1aXRlOiBnZGItb3JwaGFucmlwcGVyLmM6IEZpeCB1bmluaXRpYWxpemVkIGB0ZXJt aW9zLmNfbGluZScuCiAtIEZpeCBjcmFzaGVzIGR1ZSB0byAobWlzc2luZykgdmFyb2JqIHJldmFs aWRhdGlvbiwgZm9yIFZMQSAoZm9yIEJaIDM3NzU0MSkuCiAtIEFyY2hlciBiYWNrcG9ydDogNThk Y2RhOTRhYzVkNjM5OGY0NzM4MjUwNWU5ZDNkOWQ4NjZkNzliZgotICAgICAgICAgICAgICAgICAr IGYzZGU3YmJkNjU1MzM3ZmU2NzA1YWVhYWZjYzk3MGRlZmYzZGQ1ZDUKKwkJICsgZjNkZTdiYmQ2 NTUzMzdmZTY3MDVhZWFhZmNjOTcwZGVmZjNkZDVkNQogICAtIEltcGxlbWVudCBGb3J0cmFuIG1v ZHVsZXMgbmFtZXNwYWNlcyAoQlogNDY2MTE4KS4KIC0gRml4IGNyYXNoIGluIHRoZSBjaGFyc2V0 IHN1cHBvcnQuCiAKQEAgLTEwNTUsNyArMTM1NCw3IEBAIGZpCiAtIEFyY2hlciBiYWNrcG9ydDog YzE0ZDlhYjdlZWY0MzI4MWIyMDUyYzg4NWY4OWQyZGI5NmZiNWY4ZQogICAtIFJldmVydCBhIGNo YW5nZSByZWdyZXNzaW5nOiBnZGIub2JqYy9iYXNpY2NsYXNzLmV4cAogLSBBcmNoZXIgYmFja3Bv cnQ6IGViZDY0OWI5NmU2MWExZmI0ODE4MDFiNjVkODI3YmNhOTk4YzY2MzMKLSAgICAgICAgICAg ICAgICAgKyAxZjA4MGU4OTc5OTZkNjBhYjdmZGUyMDQyM2UyOTQ3NTEyMTE1NjY3CisJCSArIDFm MDgwZTg5Nzk5NmQ2MGFiN2ZkZTIwNDIzZTI5NDc1MTIxMTU2NjcKIAkJICsgMTk0ODE5ODcwMmI1 MWIzMWQ3OTc5M2ZjNDk0MzRiNTI5YjRlMjQ1ZgogCQkgKyBlMTA3ZmI5Njg3YmIxZTdmNzQxNzBh YTNkMTljNGE4ZjZlZGJiMTBmCiAJCSArIDFlMDEyYzk5NmUxMjFjYjM1MDUzZDIzOWE0NmJkNWRj NjViMGNlNjAKQEAgLTE3ODQsODUgKzIwODMsODUgQEAgcHJlbGluayBiYXNlIGFkZHJlc3Nlcy4g IEZpeGVzIEJaIDE3NTA3NSwgQlogMTkwNTQ1LgogKiBGcmkgRGVjIDE2IDIwMDUgSmVzc2UgS2Vh dGluZyA8amtlYXRpbmdAcmVkaGF0LmNvbT4KIC0gcmVidWlsdCBmb3IgbmV3IGdjagogCi0qIFRo dSBEZWMgMDEgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4w LjAtMS45MworKiBUaHUgRGVjIDAxIDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0 LmNvbT4gLSA2LjMuMC4wLTEuOTMKIC0gQnVtcCB1cCByZWxlYXNlIG51bWJlci4KIAotKiBUaHUg RGVjIDAxIDIwMDUgSmVmZiBKb2huc3Rvbgk8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4w LTEuOTAKKyogVGh1IERlYyAwMSAyMDA1IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5j b20+IC0gNi4zLjAuMC0xLjkwCiAtIEFkZCBvcHRpb24gdG8gYWxsb3cgYmFja3RyYWNpbmcgcGFz dCB6ZXJvIHBjIHZhbHVlLgogLSBCdWd6aWxsYSAxNzAyNzUKIAotKiBUdWUgTm92IDE1IDIwMDUg SmVmZiBKb2huc3Rvbgk8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuODkKKyogVHVl IE5vdiAxNSAyMDA1IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAu MC0xLjg5CiAtIEJ1bXAgdXAgcmVsZWFzZSBudW1iZXIuCiAKLSogVHVlIE5vdiAxNSAyMDA1IEpl ZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjg2CisqIFR1ZSBO b3YgMTUgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAt MS44NgogLSBGaXggaWE2NCB1c2VyLXNwZWNpZmllZCBTSUdJTEwgaGFuZGxpbmcgZXJyb3IuCiAt IEJ1Z3ppbGxhIDE2NTAzOC4KIAotKiBUdWUgT2N0IDE4IDIwMDUgSmVmZiBKb2huc3Rvbgk8ampv aG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuODUKKyogVHVlIE9jdCAxOCAyMDA1IEplZmYg Sm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjg1CiAtIEJ1bXAgdXAg cmVsZWFzZSBudW1iZXIuCiAKLSogVHVlIE9jdCAxOCAyMDA1IEplZmYgSm9obnN0b24JPGpqb2hu c3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjgyCisqIFR1ZSBPY3QgMTggMjAwNSBKZWZmIEpv aG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS44MgogLSBNb2RpZnkgYXR0 YWNoIHBhdGNoIHRvIGFkZCBtaXNzaW5nIGZjbG9zZS4KIC0gQnVnemlsbGEgMTY2NzEyCiAKLSog VHVlIE9jdCAxMSAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4z LjAuMC0xLjgxCisqIFR1ZSBPY3QgMTEgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRo YXQuY29tPiAtIDYuMy4wLjAtMS44MQogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgogCi0qIFR1 ZSBPY3QgMTEgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4w LjAtMS43OAorKiBUdWUgT2N0IDExIDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0 LmNvbT4gLSA2LjMuMC4wLTEuNzgKIC0gU3VwcG9ydCBnZGIgYXR0YWNoaW5nIHRvIGEgc3RvcHBl ZCBwcm9jZXNzLgogCi0qIFRodSBTZXAgMjkgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkBy ZWRoYXQuY29tPiAtIDYuMy4wLjAtMS43NworKiBUaHUgU2VwIDI5IDIwMDUgSmVmZiBKb2huc3Rv biA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNzcKIC0gQnVtcCB1cCByZWxlYXNl IG51bWJlci4KIAotKiBUaHUgU2VwIDI5IDIwMDUgSmVmZiBKb2huc3Rvbgk8ampvaG5zdG5AcmVk aGF0LmNvbT4gLSA2LjMuMC4wLTEuNzQKKyogVGh1IFNlcCAyOSAyMDA1IEplZmYgSm9obnN0b24g PGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjc0CiAtIEZpeCB1cCBEU08gcmVhZCBs b2dpYyB3aGVuIHByb2Nlc3MgaXMgYXR0YWNoZWQuCiAKLSogTW9uIFNlcCAyNiAyMDA1IEplZmYg Sm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjczCisqIE1vbiBTZXAg MjYgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS43 MwogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgogCi0qIE1vbiBTZXAgMjYgMjAwNSBKZWZmIEpv aG5zdG9uCTxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS43MAorKiBNb24gU2VwIDI2 IDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNzAK IC0gRml4IGZyYW1lIHBvaW50ZXIgY2FsY3VsYXRpb24gZm9yIGlhNjQgc2lndHJhbXAgZnJhbWUu CiAKLSogVGh1IFNlcCAyMiAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+ IC0gNi4zLjAuMC0xLjY5CisqIFRodSBTZXAgMjIgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0 bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS42OQogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgog Ci0qIFRodSBTZXAgMjIgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRoYXQuY29tPiAt IDYuMy4wLjAtMS42NgorKiBUaHUgU2VwIDIyIDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5A cmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNjYKIC0gUmVtb3ZlIGV4dHJhbmVvdXMgeGZyZWUuCiAK LSogV2VkIFNlcCAwNyAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+IC0g Ni4zLjAuMC0xLjY1CisqIFdlZCBTZXAgMDcgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkBy ZWRoYXQuY29tPiAtIDYuMy4wLjAtMS42NQogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgogCi0q IFdlZCBTZXAgMDcgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRoYXQuY29tPiAtIDYu My4wLjAtMS42MgorKiBXZWQgU2VwIDA3IDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVk aGF0LmNvbT4gLSA2LjMuMC4wLTEuNjIKIC0gUmVhZGQgcmVhZG5ldmVyIG9wdGlvbgogCiAqIFdl ZCBKdWwgMjcgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4w LjAtMS42MQogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKwogKiBUdWUgSnVsIDI2IDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNv bT4gLSA2LjMuMC4wLTEuNTcKIC0gQnVtcCB1cCByZWxlYXNlIG51bWJlci4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisKICogVHVlIEp1bCAyNiAyMDA1IEplZmYgSm9obnN0b24gPGpqb2huc3Ru QHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjU0CiAtIEFkZCB0ZXN0Y2FzZSB0byB2ZXJpZnkgcHJp bnRpbmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMKIC0gQnVnemlsbGEgMTQ2ODM1Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorCiAqIE1vbiBKdWwgMjUgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0 bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS41MwogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKwogKiBNb24gSnVsIDI1IDIwMDUgSmVmZiBKb2huc3Rv biA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNTAKIC0gRml4IGJ1ZyB3aXRoIGlu Zm8gZnJhbWUgYW5kIGN1cnNvciBhZGRyZXNzIG9uIGlhNjQuCiAtIEFkZCB0ZXN0Y2FzZSB0byB2 ZXJpZnkgcHNldWRvLXJlZ2lzdGVycyBjYWxjdWxhdGVkIGZvciBpYTY0IHNpZ3RyYW1wLgogLSBC dWd6aWxsYSAxNjAzMzkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKICogRnJpIEp1bCAyMiAy MDA1IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjQ5CiAt IEJ1bXAgdXAgcmVsZWFzZSBudW1iZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCiAqIEZy aSBKdWwgMjIgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4w LjAtMS40NgogLSBGaXggYXR0YWNoaW5nIHRvIDMyLWJpdCBwcm9jZXNzZXMgb24gNjQtYml0IHN5 c3RlbXMuCiAtIEJ1Z3ppbGxhIDE2MDI1NAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwogKiBU aHUgSnVsIDE0IDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMu MC4wLTEuNDUKIC0gQnVtcCB1cCByZWxlYXNlIG51bWJlci4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisKICogVGh1IEp1bCAxNCAyMDA1IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5j b20+IC0gNi4zLjAuMC0xLjQyCiAtIEFkZCB3b3JrLWFyb3VuZCB0byBtYWtlIGlhNjQgZ2NvcmUg d29yayBmYXN0ZXIuCiAtIEJ1Z3ppbGxhIDE0NzQzNgpAQCAtMTg5Myw3ICsyMTkyLDcgQEAgcHJl bGluayBiYXNlIGFkZHJlc3Nlcy4gIEZpeGVzIEJaIDE3NTA3NSwgQlogMTkwNTQ1LgogCiAqIEZy aSBKdW4gMTAgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4w LjAtMS4yOAogLSBTZWN1cml0eSBlcnJhdGEgZm9yIGJmZCBhbmQgLmdkYmluaXQgZmlsZSB1c2Fn ZQotLSBCdWd6aWxsYSAxNTg2ODAgCistIEJ1Z3ppbGxhIDE1ODY4MAogCiAqIFdlZCBNYXkgMTgg MjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS4yNAog LSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgpAQCAtMjA4OCw4ICsyMzg3LDggQEAgcHJlbGluayBi YXNlIGFkZHJlc3Nlcy4gIEZpeGVzIEJaIDE3NTA3NSwgQlogMTkwNTQ1LgogLSBFbmFibGUgUFBD IENGSSwgcmVtb3ZlIG1lcmdlZCBwcGMgcGF0Y2hlcy4KIAogKiBXZWQgSmFuIDEyIDIwMDUgRWxl bmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTAuMQotCQkgIEFuZHJl dyBDYWduZXkgPGNhZ25leUByZWRoYXQuY29tPgkKLQkJICBKZWZmIEpvaG5zdG9uIDxqam9obnN0 bkByZWRoYXQuY29tPgkKKwkJICBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNvbT4KKwkJ ICBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPgogLSBWYXJpb3VzIGZpeGVzIHRv IGNvbXBsZXRlIHRoZSBpbXBvcnQgYW5kIG1lcmdlLgogCiAqIFdlZCBEZWMgMDEgMjAwNCBBbmRy ZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNvbT4gLSA2LjMuMC4wCkBAIC0yMTQyLDcgKzI0NDEs NyBAQCBwcmVsaW5rIGJhc2UgYWRkcmVzc2VzLiAgRml4ZXMgQlogMTc1MDc1LCBCWiAxOTA1NDUu CiAtIEJ1bXAgdXAgcmVsZWFzZSBudW1iZXIKIAogKiBUaHUgTm92IDExIDIwMDQgRWxlbmEgWmFu bm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAxLjIwMDQwMDYwNy41MQotLSBNb2RpZnkgY29u ZmlndXJlIGxpbmUgdG8gbm90IHVzZSBhYnNvbHV0ZSBwYXRocy4gVGhpcyB3YXMgCistIE1vZGlm eSBjb25maWd1cmUgbGluZSB0byBub3QgdXNlIGFic29sdXRlIHBhdGhzLiBUaGlzIHdhcwogICBj cmVhdGluZyBwcm9ibGVtcyB3aXRoIG1ha2VpbmZvL3RleGluZm8uCiAtIEdldCByaWQgb2YgbWFr ZWluZm8gaGFjay4KIEJ1Z3ppbGxhIDEzNTYzMwpAQCAtMjE4Nyw3ICsyNDg2LDcgQEAgQnVnemls bGEgMTM1NjMzCiAqIE1vbiBPY3QgMTAgMjAwNCBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0 LmNvbT4gLSAxLjIwMDQwMDYwNy4zOQogLSBGaXggY29tbWVudCBidWcgaW4gc2lnc3RlcC5leHAu CiAKLSogVGh1IE9jdCAwNyAyMDA0IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+ IC0gMS4yMDA0MDA2MDcuMzgKKyogVGh1IE9jdCAwNyAyMDA0IEplZmYgSm9obnN0b24gPGpqb2hu c3RuQHJlZGhhdC5jb20+IC0gMS4yMDA0MDA2MDcuMzgKIC0gRG8gbm90IGludmFsaWRhdGUgY2Fj aGVkIHRocmVhZCBpbmZvIHdoZW4gcmVzdW1pbmcgdGhyZWFkcy4KIC0gQnVtcCB1cCByZWxlYXNl IG51bWJlci4KIApAQCAtMjQzOCw3ICsyNzM3LDcgQEAgQnVnemlsbGEgMTM1NjMzCiAKICogVHVl IE5vdiAxOCAyMDAzIEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDAz MTExNy4xCiAtIEltcG9ydCBuZXcgZ2RiIHNuYXBzaG90IGZyb20gbWFpbmxpbmUgRlNGLgotLSBG aXggc29tZSB0ZXN0ZmlsZXMuIAorLSBGaXggc29tZSB0ZXN0ZmlsZXMuCiAtIEFkZCBmaXhlcyBm b3IgZ2NvcmUsIGFuZCBwYXRjaCBmb3IgbGlidW53aW5kIHN1cHBvcnQgb24gaWE2NC4KIC0gQWRk IHRlc3RzIHRvIHNlZSB3aGF0IHZlcnNpb25zIG9mIGdjYywgYmludXRpbHMsIGdsaWJjIGFuZCBr ZXJuZWwgd2UKICAgYXJlIHJ1bm5pbmcgd2l0aC4KQEAgLTI1MDQsNyArMjgwMyw3IEBAIHRvIHBv aW50ZXJzIHdoZW4gdGhlIGFkZHJlc3MgaXMgaW4gdGhlICIub3BkIiBzZWN0aW9uLgogCiAqIFR1 ZSBBdWcgMjYgMjAwMyBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNvbT4gLSAwLjIwMDMw NzEwLjI0CiAtIHNraXAgdGhlIHBwYzY0IGFuZCB4ODYtNjQgZnJhbWUgcmVkem9uZS4KLSAKKwog KiBGcmkgQXVnIDIyIDIwMDMgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAw LjIwMDMwNzEwLjIzCiAtIFJlbGF4IG9uZSB0ZXN0Y2FzZSBpbiBzZWxmdGVzdC5leHAgYSBiaXQu CiAtIEFjY2VwdCBkaWZmZXJlbnQgb3V0cHV0IGFzIHdlbGwgaW4gdGhyZWFkIGJ0IChwbGF0Zm9y bSBkZXBlbmRlbnQpLgpAQCAtMjUyOSwxMCArMjgyOCwxMCBAQCB0byBwb2ludGVycyB3aGVuIHRo ZSBhZGRyZXNzIGlzIGluIHRoZSAiLm9wZCIgc2VjdGlvbi4KIAogKiBUdWUgQXVnIDE5IDIwMDMg SmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSAwLjIwMDMwNzEwLjE4CiAtIEZp eCBpYTY0IHBjIHVud2luZGluZyB0byBpbmNsdWRlIHBzciBzbG90LgotIAorCiAqIE1vbiBBdWcg MTggMjAwMyBFbGVuYSBaYW5ub25pIDxlemFubm9uaUByZWRoYXQuY29tPiAtIDAuMjAwMzA3MTAu MTcKIC0gRml4IGluZm8gaW5zdGFsbGF0aW9uIGZvciBhbm5vdGF0ZS50ZXhpLiAoQnVnemlsbGEg MTAyNTIxKQotIAorCiAqIEZyaSBBdWcgMTUgMjAwMyBFbGVuYSBaYW5ub25pIDxlemFubm9uaUBy ZWRoYXQuY29tPiAtIDAuMjAwMzA3MTAuMTYKIC0gcmV2YW1wIHRscyB0ZXN0cyBhIGJpdC4KIC0g SGFuZGxlIG5ldyBvdXRwdXQgZnJvbSBnZGIgaW4gcmVsb2NhdGUuZXhwCkBAIC0yNzQzLDcgKzMw NDIsNyBAQCB0byBwb2ludGVycyB3aGVuIHRoZSBhZGRyZXNzIGlzIGluIHRoZSAiLm9wZCIgc2Vj dGlvbi4KIC0gQWRkIHBhdGNoIGZvciAtLWFyZ3Mgd2l0aCB6ZXJvLWxlbmd0aCBhcmd1bWVudHMu IEZpeCBmb3IgYnVnIDc5ODMzLgogCiAqIFR1ZSBEZWMgMTcgMjAwMiBFbGxpb3QgTGVlIDxzb3B3 aXRoQHJlZGhhdC5jb20+IC0gMC4yMDAyMTEyOS40Ci0tIFRoZSBkZWZpbmUgZGlyZWN0aXZlIHRv IHJwbSBpcyBzaWduaWZpY2FudCBldmVuIGlmIHRoZSBsaW5lIGl0IGlzIAorLSBUaGUgZGVmaW5l IGRpcmVjdGl2ZSB0byBycG0gaXMgc2lnbmlmaWNhbnQgZXZlbiBpZiB0aGUgbGluZSBpdCBpcwog ICBpbiBoYXBwZW5zIHRvIHN0YXJ0IHdpdGggYSAnIycgY2hhcmFjdGVyLiBGaXhlZC4KIAogKiBG cmkgRGVjIDEzIDIwMDIgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAwLjIw MDIxMTI5LjMKQEAgLTI3ODUsNyArMzA4NCw3IEBAIHRvIHBvaW50ZXJzIHdoZW4gdGhlIGFkZHJl c3MgaXMgaW4gdGhlICIub3BkIiBzZWN0aW9uLgogLSBVcGdyYWRlIHBhdGNoZXMuCiAtIEJ1aWxk IGdkYi9nZGJzZXJ2ZXIgYXMgd2VsbC4KIC0gRGVmaW5lIGFuZCB1c2UgJ2N2c2RhdGUnLgotLSBE byAlJXNldHVwIHNwZWNpZnlpbmcgdGhlIHNvdXJjZSBkaXJlY3RvcnkgbmFtZS4gCistIERvICUl c2V0dXAgc3BlY2lmeWluZyB0aGUgc291cmNlIGRpcmVjdG9yeSBuYW1lLgogLSBEb24ndCBjZCB1 cCBvbmUgZGlyIGJlZm9yZSByZW1vdmluZyB0Y2wgYW5kIGZyaWVuZHMuCiAtIENoYW5nZSB0aGUg Y29uZmlndXJlIGNvbW1hbmQgdG8gYWxsb3cgZm9yIHRoZSBuZXcgc291cmNlIHRyZWUgbmFtZS4K IC0gRGl0dG8gZm9yIHRoZSBjb3B5IG9mIE5FV1MuCkBAIC0yODU3LDcgKzMxNTYsNyBAQCBHZW5l cmFsIHJldmFtcC4KIC0gVXBkYXRlIHRvIGN1cnJlbnQKIAogKiBXZWQgTWFyIDEzIDIwMDIgVHJv bmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4gNS4xLjkwQ1ZTLTEKLS0gVXBkYXRl IHRvIGN1cnJlbnQgNS4yIGJyYW5jaCAKKy0gVXBkYXRlIHRvIGN1cnJlbnQgNS4yIGJyYW5jaAog CiAqIFRodSBKYW4gMjQgMjAwMiBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29t PiA1LjEuMS0xCiAtIDUuMS4xCkBAIC0yODc5LDcgKzMxNzgsNyBAQCBHZW5lcmFsIHJldmFtcC4K IC0gQWRkIHBhdGNoIGZyb20gamFrdWJAcmVkaGF0LmNvbSB0byBpbXByb3ZlIGhhbmRsaW5nIG9m IERXQVJGCiAKICogTW9uIE5vdiAxMiAyMDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJl ZGhhdC5jb20+IDUuMC45My0xCi0tIDUuMC45MyAKKy0gNS4wLjkzCiAtIGhhbmRsZSBtaXNzaW5n IGluZm8gcGFnZXMgaW4gcG9zdC9wcmUgc2NyaXB0cwogCiAqIFdlZCBPY3QgMzEgMjAwMSBUcm9u ZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPiA1LjAuOTItMQpAQCAtMjg5MiwxMSAr MzE5MSwxMSBAQCBHZW5lcmFsIHJldmFtcC4KICogV2VkIE9jdCAxNyAyMDAxIFRyb25kIEVpdmlu ZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+IDUuMHJoLTE3CiAtIE5ldyBzbmFwc2hvdAogCi0q IFRodSBTZXAgMjcgMjAwMSBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPiAK KyogVGh1IFNlcCAyNyAyMDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+ CiAtIE5ldyBzbmFwc2hvdAogCiAqIFdlZCBTZXAgMTIgMjAwMSBUcm9uZCBFaXZpbmQgR2xvbXNy b2QgPHRlZ0ByZWRoYXQuY29tPiA1LjByaC0xNgotLSBOZXcgc25hcHNob3QgCistIE5ldyBzbmFw c2hvdAogCiAqIE1vbiBBdWcgMTMgMjAwMSBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRo YXQuY29tPiA1LjByaC0xNQogLSBEb24ndCBidWlsZHJlcXVpcmUgY29tcGF0LWdsaWJjICgjNTE2 OTApCkBAIC0yOTE0LDcgKzMyMTMsNyBAQCBHZW5lcmFsIHJldmFtcC4KICogRnJpIEp1biAxNSAy MDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIE5ldyBzbmFwc2hv dAogLSBBZGQgbmN1cnNlcy1kZXZlbCB0byBidWlsZHByZXJlcQotLSBSZW1vdmUgcGVybCBmcm9t IGJ1aWxkcHJlcmVxLCBhcyBnZGIgY2hhbmdlZCB0aGUgd2F5IAorLSBSZW1vdmUgcGVybCBmcm9t IGJ1aWxkcHJlcmVxLCBhcyBnZGIgY2hhbmdlZCB0aGUgd2F5CiAgIHZlcnNpb24gc3RyaW5ncyBh cmUgZ2VuZXJhdGVkCiAKICogVGh1IEp1biAxNCAyMDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8 dGVnQHJlZGhhdC5jb20+CkBAIC0yOTI5LDcgKzMyMjgsNyBAQCBHZW5lcmFsIHJldmFtcC4KIC0g S2V2aW4ncyBwYXRjaCBpcyBub3cgcGFydCBvZiBnZGIKIAogKiBNb24gQXByICA5IDIwMDEgVHJv bmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KLS0gQWRkIHBhdGNoIGZyb20ga2V2 aW5iQHJlZGhhdC5jb20gdG8gZml4IGZsb2F0aW5nIHBvaW50ICsgdGhyZWFkIAorLSBBZGQgcGF0 Y2ggZnJvbSBrZXZpbmJAcmVkaGF0LmNvbSB0byBmaXggZmxvYXRpbmcgcG9pbnQgKyB0aHJlYWQK ICAgcHJvYmxlbSAoIzI0MzEwKQogLSByZW1vdmUgb2xkIHdvcmthcm91bmRzCiAtIG5ldyBzbmFw c2hvdApAQCAtMzA1Miw3ICszMzUxLDcgQEAgZnJvbSBjb2RlIGZ1c2lvbiBDRC1ST00pLgogKiBU aHUgQXByICAxIDE5OTkgSmVmZiBKb2huc29uIDxqYmpAcmVkaGF0LmNvbT4KIC0gc3BhcmMgd2l0 aCAyLjIga2VybmVscyBubyBsb25nZXIgdXNlcyBzdW5vcyBwdHJhY2UgKGRhdmVtKQogCi0qIFN1 biBNYXIgMjEgMTk5OSBDcmlzdGlhbiBHYWZ0b24gPGdhZnRvbkByZWRoYXQuY29tPiAKKyogU3Vu IE1hciAyMSAxOTk5IENyaXN0aWFuIEdhZnRvbiA8Z2FmdG9uQHJlZGhhdC5jb20+CiAtIGF1dG8g cmVidWlsZCBpbiB0aGUgbmV3IGJ1aWxkIGVudmlyb25tZW50IChyZWxlYXNlIDMpCiAKICogTW9u IE1hciAgOCAxOTk5IEplZmYgSm9obnNvbiA8amJqQHJlZGhhdC5jb20+CgpkaWZmIC0tZ2l0IGEv Z2RiY29tcGFyZSBiL2dkYmNvbXBhcmUKaW5kZXggZmNjNWFlNS4uYWJhNDQ5MyAxMDA3NTUKLS0t IGEvZ2RiY29tcGFyZQorKysgYi9nZGJjb21wYXJlCkBAIC0xLDUgKzEsNSBAQAogIyEgL3Vzci9i aW4vcGVybAotIyAkSWQ6IGdkYmNvbXBhcmUsdiAxLjQgMjAwNy8wNC8yMiAwODo1MjowOSBqa3Jh dG9jaCBFeHAgJAorIyAkSWQ6IGdkYmNvbXBhcmUsdiAxLjUgMjAwOC8wMy8wMSAwODowMTo1NyBq a3JhdG9jaCBFeHAgJAogCiAKIHVzZSBzdHJpY3Q7CgpkaWZmIC0tZ2l0IGEvZ2RicGF0Y2hubyBi L2dkYnBhdGNobm8KaW5kZXggNjZhZmUwMi4uYjM1NTYxOCAxMDA3NTUKLS0tIGEvZ2RicGF0Y2hu bworKysgYi9nZGJwYXRjaG5vCkBAIC0xLDUgKzEsNSBAQAogIyEgL2Jpbi9zaAotIyAkSWQkCisj ICRJZDogZ2RicGF0Y2hubyx2IDEuMSAyMDA2LzEyLzI5IDIwOjM1OjQzIGprcmF0b2NoIEV4cCAk CiAjIFByaW50IHRoZSBmaXJzdCB1bnVzZWQgcGF0Y2ggbnVtYmVyIGFjcm9zcyBhbGwgdGhlIGN1 cnJlbnQgcGFja2FnZSdzIGJyYW5jaGVzLgogCiBlY2hvICRbMSskKGNhdCAuLi8qLyouc3BlY3xz ZWQgLW4gJ3MvXlsjICVdKnBhdGNoXChbMC05XSpcKS4qJC9cMS9wJ3xzb3J0IC1ybnV8aGVhZCAt bjEpXQoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGUxYTE1ZWQuLjM2Nzhk M2MgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKLTFl M2EyNjA0MGRjZGQzNTc5ZDc1OTY3MDg1ZWI5MmI5ICBsaWJzdGRjKystdjMtcHl0aG9uLXIxNTE3 OTgudGFyLnh6Ci03Mjk1MTdjYzhlNmNhNmUyNWNmNGJlMzQzZmZjNGMzZCAgZ2RiLTYuOC45MS4y MDA5MDkzMC50YXIuYnoyCis1M2ViYWRlMzliZmRjMWQwNjc0NGU1MTg4YjY0MzhiMSAgZ2RiLTcu MC4xLnRhci5iejIKKzc1MDc1NDBjNTBhMWVkZWIyZmMyMmEzN2JjNGEwOGI4ICBsaWJzdGRjKyst djMtcHl0aG9uLXIxNTE3OTgudGFyLmJ6Mgo=