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] gdb-17.2-rebase-f44: Add GDB support to access/display POWER8 registers (IBM, RH BZ 1187581). Date: Sat, 27 Jun 2026 23:59:14 GMT Message-ID: <178260475467.1.17583777480504987350.rpms-gdb-22998d94f750@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 22998d94f750fbba57ca3ddf5648ae2b772366ee QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMjI5OThkOTRmNzUwZmJiYTU3Y2EzZGRmNTY0 OGFlMmI3NzIzNjZlZQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxOC0wOC0wOVQxODozNzo1NSswMjowMApTdGF0cyAgOiArMTM4 Ny8tMSBpbiAxMSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3Jn L3JwbXMvZ2RiL2MvMjI5OThkOTRmNzUwZmJiYTU3Y2EzZGRmNTY0OGFlMmI3NzIzNjZlZT9icmFu Y2g9Z2RiLTE3LjItcmViYXNlLWY0NAoKTG9nOgpBZGQgR0RCIHN1cHBvcnQgdG8gYWNjZXNzL2Rp c3BsYXkgUE9XRVI4IHJlZ2lzdGVycyAoSUJNLCBSSCBCWiAxMTg3NTgxKS4KCi0tLQpkaWZmIC0t Z2l0IGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpp bmRleCA5NDZjNGFmLi5iM2M1NjMzIDEwMDY0NAotLS0gYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVk ZQorKysgYi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAtNTEzLDMgKzUxMywyNCBAQCBQYXRj aDEyMzogZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2YzLnBhdGNoCiAKIFBhdGNoMTI0OiBnZGItcmhi ejg4MTg0OS1pcHY2LTNvZjMucGF0Y2gKIAorIyBBZGQgR0RCIHN1cHBvcnQgdG8gYWNjZXNzL2Rp c3BsYXkgUE9XRVI4IHJlZ2lzdGVycyAoSUJNLCBSSCBCWiAxMTg3NTgxKS4KK1BhdGNoMTI1OiBn ZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtMW9mNy5wYXRjaAorCisjIEFkZCBHREIgc3VwcG9y dCB0byBhY2Nlc3MvZGlzcGxheSBQT1dFUjggcmVnaXN0ZXJzIChJQk0sIFJIIEJaIDExODc1ODEp LgorUGF0Y2gxMjY6IGdkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy0yb2Y3LnBhdGNoCisKKyMg QWRkIEdEQiBzdXBwb3J0IHRvIGFjY2Vzcy9kaXNwbGF5IFBPV0VSOCByZWdpc3RlcnMgKElCTSwg UkggQlogMTE4NzU4MSkuCitQYXRjaDEyNzogZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTNv ZjcucGF0Y2gKKworIyBBZGQgR0RCIHN1cHBvcnQgdG8gYWNjZXNzL2Rpc3BsYXkgUE9XRVI4IHJl Z2lzdGVycyAoSUJNLCBSSCBCWiAxMTg3NTgxKS4KK1BhdGNoMTI4OiBnZGItcmhiejExODc1ODEt cG93ZXI4LXJlZ3MtNG9mNy5wYXRjaAorCisjIEFkZCBHREIgc3VwcG9ydCB0byBhY2Nlc3MvZGlz cGxheSBQT1dFUjggcmVnaXN0ZXJzIChJQk0sIFJIIEJaIDExODc1ODEpLgorUGF0Y2gxMjk6IGdk Yi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy01b2Y3LnBhdGNoCisKKyMgQWRkIEdEQiBzdXBwb3J0 IHRvIGFjY2Vzcy9kaXNwbGF5IFBPV0VSOCByZWdpc3RlcnMgKElCTSwgUkggQlogMTE4NzU4MSku CitQYXRjaDEzMDogZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTZvZjcucGF0Y2gKKworIyBB ZGQgR0RCIHN1cHBvcnQgdG8gYWNjZXNzL2Rpc3BsYXkgUE9XRVI4IHJlZ2lzdGVycyAoSUJNLCBS SCBCWiAxMTg3NTgxKS4KK1BhdGNoMTMxOiBnZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtN29m Ny5wYXRjaAorCgpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNw ZWMucGF0Y2guaW5jbHVkZQppbmRleCA5N2YxMmM0Li5jYTM5MGI3IDEwMDY0NAotLS0gYS9fZ2Ri LnNwZWMucGF0Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQpAQCAtMTIy LDMgKzEyMiwxMCBAQAogJXBhdGNoMTIyIC1wMQogJXBhdGNoMTIzIC1wMQogJXBhdGNoMTI0IC1w MQorJXBhdGNoMTI1IC1wMQorJXBhdGNoMTI2IC1wMQorJXBhdGNoMTI3IC1wMQorJXBhdGNoMTI4 IC1wMQorJXBhdGNoMTI5IC1wMQorJXBhdGNoMTMwIC1wMQorJXBhdGNoMTMxIC1wMQoKZGlmZiAt LWdpdCBhL19wYXRjaF9vcmRlciBiL19wYXRjaF9vcmRlcgppbmRleCBiMTA1MzZjLi5lYzJmODZm IDEwMDY0NAotLS0gYS9fcGF0Y2hfb3JkZXIKKysrIGIvX3BhdGNoX29yZGVyCkBAIC0xMjIsMyAr MTIyLDEwIEBAIGdkYi1yaGJ6MTU1MzEwNC1zMzkweC1hcmNoMTItdGVzdC5wYXRjaAogZ2RiLXJo Yno4ODE4NDktaXB2Ni0xb2YzLnBhdGNoCiBnZGItcmhiejg4MTg0OS1pcHY2LTJvZjMucGF0Y2gK IGdkYi1yaGJ6ODgxODQ5LWlwdjYtM29mMy5wYXRjaAorZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1y ZWdzLTFvZjcucGF0Y2gKK2dkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy0yb2Y3LnBhdGNoCitn ZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtM29mNy5wYXRjaAorZ2RiLXJoYnoxMTg3NTgxLXBv d2VyOC1yZWdzLTRvZjcucGF0Y2gKK2dkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy01b2Y3LnBh dGNoCitnZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtNm9mNy5wYXRjaAorZ2RiLXJoYnoxMTg3 NTgxLXBvd2VyOC1yZWdzLTdvZjcucGF0Y2gKCmRpZmYgLS1naXQgYS9nZGItcmhiejExODc1ODEt cG93ZXI4LXJlZ3MtMW9mNy5wYXRjaCBiL2dkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy0xb2Y3 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YmQ3OTgKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtMW9mNy5wYXRjaApAQCAt MCwwICsxLDY1IEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CitEYXRl OiBUaHUsIDkgQXVnIDIwMTggMTc6MDk6NDggKzAyMDAKK1N1YmplY3Q6IGdkYi1yaGJ6MTE4NzU4 MS1wb3dlcjgtcmVncy0xb2Y3LnBhdGNoCisKKzs7IEFkZCBHREIgc3VwcG9ydCB0byBhY2Nlc3Mv ZGlzcGxheSBQT1dFUjggcmVnaXN0ZXJzIChJQk0sIFJIIEJaIDExODc1ODEpLgorCitjb21taXQg MDVhYmZjMzljNzE5ZTc0MDUzMDAwMDA1OWJiOTYzYWQzMzQ2MjQ3OQorQXV0aG9yOiBQZWRybyBG cmFuY28gZGUgQ2FydmFsaG8gPHBlZHJvbWZjQGxpbnV4LmlibS5jb20+CitEYXRlOiAgIE1vbiBB dWcgNiAxNjoyNDo1NSAyMDE4IC0wMzAwCisKKyAgICBGaXggaW5kZW50YXRpb24gaW4gcmVtb3Rl X3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludAorCisgICAgZ2RiL0NoYW5nZUxvZzoKKyAgICAy MDE4LTA4LTA2ICBQZWRybyBGcmFuY28gZGUgQ2FydmFsaG8gIDxwZWRyb21mY0BsaW51eC5pYm0u Y29tPgorCisgICAgICAgICAgICAqIHJlbW90ZS5jIChyZW1vdGVfdGFyZ2V0Ojpkb3dubG9hZF90 cmFjZXBvaW50KTogRml4IGluZGVudGF0aW9uCisgICAgICAgICAgICBpbiBmb3IgYmxvY2suCisK K2RpZmYgLS1naXQgYS9nZGIvcmVtb3RlLmMgYi9nZGIvcmVtb3RlLmMKKy0tLSBhL2dkYi9yZW1v dGUuYworKysrIGIvZ2RiL3JlbW90ZS5jCitAQCAtMTI5MTIsMjQgKzEyOTEyLDI0IEBAIHJlbW90 ZV90YXJnZXQ6OmRvd25sb2FkX3RyYWNlcG9pbnQgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQor IAllcnJvciAoXygiRXJyb3Igb24gdGFyZ2V0IHdoaWxlIHNldHRpbmcgdHJhY2Vwb2ludHMuIikp OworICAgICB9CisgCistICAgIGZvciAoYXV0byBhY3Rpb25faXQgPSBzdGVwcGluZ19hY3Rpb25z LmJlZ2luICgpOworLQkgYWN0aW9uX2l0ICE9IHN0ZXBwaW5nX2FjdGlvbnMuZW5kICgpOyBhY3Rp b25faXQrKykKKy0gICAgICB7CistCVFVSVQ7CS8qIEFsbG93IHVzZXIgdG8gYmFpbCBvdXQgd2l0 aCBeQy4gICovCistCistCWJvb2wgaXNfZmlyc3QgPSBhY3Rpb25faXQgPT0gc3RlcHBpbmdfYWN0 aW9ucy5iZWdpbiAoKTsKKy0JYm9vbCBoYXNfbW9yZSA9IGFjdGlvbl9pdCAhPSBzdGVwcGluZ19h Y3Rpb25zLmVuZCAoKTsKKy0KKy0JeHNucHJpbnRmIChidWYsIEJVRl9TSVpFLCAiUVREUDotJXg6 JXM6JXMlcyVzIiwKKy0JCSAgIGItPm51bWJlciwgYWRkcmJ1ZiwgLyogYWRkcmVzcyAqLworLQkJ ICAgaXNfZmlyc3QgPyAiUyIgOiAiIiwKKy0JCSAgIGFjdGlvbl9pdC0+Y19zdHIgKCksCistCQkg ICBoYXNfbW9yZSA/ICItIiA6ICIiKTsKKy0JcHV0cGt0IChidWYpOworLQlyZW1vdGVfZ2V0X25v aXN5X3JlcGx5ICgpOworLQlpZiAoc3RyY21wIChycy0+YnVmLCAiT0siKSkKKy0JICBlcnJvciAo XygiRXJyb3Igb24gdGFyZ2V0IHdoaWxlIHNldHRpbmcgdHJhY2Vwb2ludHMuIikpOworLSAgICAg IH0KKysgIGZvciAoYXV0byBhY3Rpb25faXQgPSBzdGVwcGluZ19hY3Rpb25zLmJlZ2luICgpOwor KyAgICAgICBhY3Rpb25faXQgIT0gc3RlcHBpbmdfYWN0aW9ucy5lbmQgKCk7IGFjdGlvbl9pdCsr KQorKyAgICB7CisrICAgICAgUVVJVDsJLyogQWxsb3cgdXNlciB0byBiYWlsIG91dCB3aXRoIF5D LiAgKi8KKysKKysgICAgICBib29sIGlzX2ZpcnN0ID0gYWN0aW9uX2l0ID09IHN0ZXBwaW5nX2Fj dGlvbnMuYmVnaW4gKCk7CisrICAgICAgYm9vbCBoYXNfbW9yZSA9IGFjdGlvbl9pdCAhPSBzdGVw cGluZ19hY3Rpb25zLmVuZCAoKTsKKysKKysgICAgICB4c25wcmludGYgKGJ1ZiwgQlVGX1NJWkUs ICJRVERQOi0leDolczolcyVzJXMiLAorKwkJIGItPm51bWJlciwgYWRkcmJ1ZiwgLyogYWRkcmVz cyAqLworKwkJIGlzX2ZpcnN0ID8gIlMiIDogIiIsCisrCQkgYWN0aW9uX2l0LT5jX3N0ciAoKSwK KysJCSBoYXNfbW9yZSA/ICItIiA6ICIiKTsKKysgICAgICBwdXRwa3QgKGJ1Zik7CisrICAgICAg cmVtb3RlX2dldF9ub2lzeV9yZXBseSAoKTsKKysgICAgICBpZiAoc3RyY21wIChycy0+YnVmLCAi T0siKSkKKysJZXJyb3IgKF8oIkVycm9yIG9uIHRhcmdldCB3aGlsZSBzZXR0aW5nIHRyYWNlcG9p bnRzLiIpKTsKKysgICAgfQorIAorICAgaWYgKHBhY2tldF9zdXBwb3J0IChQQUNLRVRfVHJhY2Vw b2ludFNvdXJjZSkgPT0gUEFDS0VUX0VOQUJMRSkKKyAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi1y aGJ6MTE4NzU4MS1wb3dlcjgtcmVncy0yb2Y3LnBhdGNoIGIvZ2RiLXJoYnoxMTg3NTgxLXBvd2Vy OC1yZWdzLTJvZjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBk NDJjZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy0yb2Y3 LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KK0RhdGU6IFRodSwgOSBBdWcgMjAxOCAxNzoxMDo0NiArMDIwMAorU3ViamVjdDogZ2Ri LXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTJvZjcucGF0Y2gKKworOzsgQWRkIEdEQiBzdXBwb3J0 IHRvIGFjY2Vzcy9kaXNwbGF5IFBPV0VSOCByZWdpc3RlcnMgKElCTSwgUkggQlogMTE4NzU4MSku CisKK2NvbW1pdCBhYTZmMzY5NGNlODY3ODg0ZTQzZDFjMDQwNmM2NGRmMDhlYTI0YmQzCitBdXRo b3I6IFBlZHJvIEZyYW5jbyBkZSBDYXJ2YWxobyA8cGVkcm9tZmNAbGludXguaWJtLmNvbT4KK0Rh dGU6ICAgTW9uIEF1ZyA2IDE2OjI0OjU1IDIwMTggLTAzMDAKKworICAgIFJlbW92ZSB0cmFpbGlu ZyAnLScgZnJvbSB0aGUgbGFzdCBRVERQIGFjdGlvbiBwYWNrZXQKKworICAgIFRoZSBoYXNfbW9y ZSBwcmVkaWNhdGUgaW4gcmVtb3RlX3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCBhbHdheXMK KyAgICBldmFsdWF0ZXMgdG8gdHJ1ZSwgc28gdGhlIGxhc3QgYWN0aW9uIHBhY2tldCB3aWxsIGJl IHNlbnQgd2l0aCBhCisgICAgdHJhaWxpbmcgJy0nLiAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBw cmVkaWNhdGUgdG8gcmVtb3ZlIHRoZSBsYXN0CisgICAgdHJhaWxpbmcgJy0nLgorCisgICAgZ2Ri L0NoYW5nZUxvZzoKKyAgICAyMDE4LTA4LTA2ICBQZWRybyBGcmFuY28gZGUgQ2FydmFsaG8gIDxw ZWRyb21mY0BsaW51eC5pYm0uY29tPgorCisgICAgICAgICAgICAqIHJlbW90ZS5jIChyZW1vdGVf dGFyZ2V0Ojpkb3dubG9hZF90cmFjZXBvaW50KTogRml4IHRoZSBoYXNfbW9yZQorICAgICAgICAg ICAgcHJlZGljYXRlIGluIHRoZSBRVERQIGFjdGlvbiBsaXN0IGl0ZXJhdGlvbi4KKworZGlmZiAt LWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYworLS0tIGEvZ2RiL3JlbW90ZS5jCisr KysgYi9nZGIvcmVtb3RlLmMKK0BAIC0xMjg5OSw3ICsxMjg5OSw3IEBAIHJlbW90ZV90YXJnZXQ6 OmRvd25sb2FkX3RyYWNlcG9pbnQgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQorICAgICB7Cisg ICAgICAgUVVJVDsJLyogQWxsb3cgdXNlciB0byBiYWlsIG91dCB3aXRoIF5DLiAgKi8KKyAKKy0g ICAgICBib29sIGhhc19tb3JlID0gKGFjdGlvbl9pdCAhPSB0ZHBfYWN0aW9ucy5lbmQgKCkKKysg ICAgICBib29sIGhhc19tb3JlID0gKChhY3Rpb25faXQgKyAxKSAhPSB0ZHBfYWN0aW9ucy5lbmQg KCkKKyAJCSAgICAgICB8fCAhc3RlcHBpbmdfYWN0aW9ucy5lbXB0eSAoKSk7CisgCisgICAgICAg eHNucHJpbnRmIChidWYsIEJVRl9TSVpFLCAiUVREUDotJXg6JXM6JXMlYyIsCitAQCAtMTI5MTgs NyArMTI5MTgsNyBAQCByZW1vdGVfdGFyZ2V0Ojpkb3dubG9hZF90cmFjZXBvaW50IChzdHJ1Y3Qg YnBfbG9jYXRpb24gKmxvYykKKyAgICAgICBRVUlUOwkvKiBBbGxvdyB1c2VyIHRvIGJhaWwgb3V0 IHdpdGggXkMuICAqLworIAorICAgICAgIGJvb2wgaXNfZmlyc3QgPSBhY3Rpb25faXQgPT0gc3Rl cHBpbmdfYWN0aW9ucy5iZWdpbiAoKTsKKy0gICAgICBib29sIGhhc19tb3JlID0gYWN0aW9uX2l0 ICE9IHN0ZXBwaW5nX2FjdGlvbnMuZW5kICgpOworKyAgICAgIGJvb2wgaGFzX21vcmUgPSAoYWN0 aW9uX2l0ICsgMSkgIT0gc3RlcHBpbmdfYWN0aW9ucy5lbmQgKCk7CisgCisgICAgICAgeHNucHJp bnRmIChidWYsIEJVRl9TSVpFLCAiUVREUDotJXg6JXM6JXMlcyVzIiwKKyAJCSBiLT5udW1iZXIs IGFkZHJidWYsIC8qIGFkZHJlc3MgKi8KCmRpZmYgLS1naXQgYS9nZGItcmhiejExODc1ODEtcG93 ZXI4LXJlZ3MtM29mNy5wYXRjaCBiL2dkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy0zb2Y3LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NDZmMmIKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtM29mNy5wYXRjaApAQCAtMCww ICsxLDI1OCBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorRGF0ZTog VGh1LCA5IEF1ZyAyMDE4IDE3OjExOjA5ICswMjAwCitTdWJqZWN0OiBnZGItcmhiejExODc1ODEt cG93ZXI4LXJlZ3MtM29mNy5wYXRjaAorCis7OyBBZGQgR0RCIHN1cHBvcnQgdG8gYWNjZXNzL2Rp c3BsYXkgUE9XRVI4IHJlZ2lzdGVycyAoSUJNLCBSSCBCWiAxMTg3NTgxKS4KKworY29tbWl0IDNk ZjNhOTg1YTQ3NWRiMDA0NzA2ZDY0ZjgzZDkwODVmOTkwNTM2MTEKK0F1dGhvcjogUGVkcm8gRnJh bmNvIGRlIENhcnZhbGhvIDxwZWRyb21mY0BsaW51eC5pYm0uY29tPgorRGF0ZTogICBNb24gQXVn IDYgMTY6MjQ6NTUgMjAxOCAtMDMwMAorCisgICAgVXNlIGdldF9yZW1vdGVfcGFja2V0X3NpemUg aW4gZG93bmxvYWRfdHJhY2Vwb2ludAorCisgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSByZW1v dGUgdGFyZ2V0IHRvIHVzZSB0aGUgcmVtb3RlIHBhY2tldCBzaXplIHRvCisgICAgYnVpbGQgUVRE UCBwYWNrZXRzLCBhbmQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgZW5vdWdoIHJvb20gZm9yIHRoZQor ICAgIHBhY2tldC4KKworICAgIEkgY2hhbmdlZCB0aGUgZnVuY3Rpb24gdG8gcmFpc2UgYW4gZXJy b3IgaWYgdGhlIHBhY2tldCBpcyB0b28gc21hbGwsCisgICAgaW5zdGVhZCBvZiBhYm9ydGluZyBn ZGIgKHRocm91Z2ggeHNucHJpbnRmKS4gIEl0IGlzbid0IGNsZWFyIGlmIGdkYgorICAgIHdpbGwg YmUgaW4gYSBjb25zaXN0ZW50IHN0YXRlIHdpdGggcmVzcGVjdCB0byB0aGUgc3R1YiBhZnRlciB0 aGlzLAorICAgIHNpbmNlIGl0J3MgcG9zc2libGUgdGhhdCBzb21lIHBhY2tldHMgd2lsbCBiZSBz ZW50IGJ1dCBub3Qgb3RoZXJzLCBhbmQKKyAgICB0aGVyZSBjb3VsZCBiZSBhbiBpbmNvbXBsZXRl IHRyYWNlcG9pbnQgb24gdGhlIHN0dWIuCisKKyAgICBUaGUgY2hhciBhcnJheSB1c2VkIHRvIGJ1 aWxkIHRoZSBwYWNrZXRzIGlzIGNoYW5nZWQgdG8gYQorICAgIGdkYjo6Y2hhcl92ZWN0b3IgYW5k IHNpemVkIHdpdGggdGhlIHJlc3VsdCBmcm9tCisgICAgZ2V0X3JlbW90ZV9wYWNrZXRfc2l6ZS4K KworICAgIFdoZW4gY2hlY2tpbmcgaWYgdGhlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2ggdG8gaG9s ZCB0aGUgdHJhY2Vwb2ludAorICAgIGNvbmRpdGlvbiBhZ2VudCBleHByZXNzaW9uLCB0aGUgbGVu Z3RoIG9mIHRoZSBleHByZXNzaW9uIGlzIG11bHRpcGxpZWQKKyAgICBieSB0d28sIHNpbmNlIGl0 IGlzIGVuY29kZWQgd2l0aCB0d28gaGV4IGRpZ2l0cyBwZXIgZXhwcmVzc2lvbgorICAgIGJ5dGUu ICBGb3Igc2ltcGxpY2l0eSwgSSBhc3N1bWUgdGhhdCB0aGUgcmVzdWx0IHdvbid0IG92ZXJmbG93 LCB3aGljaAorICAgIGNhbiBoYXBwZW4gZm9yIHZlcnkgbG9uZyBjb25kaXRpb24gZXhwcmVzc2lv bnMuCisKKyAgICBnZGIvQ2hhbmdlTG9nOgorICAgIDIwMTgtMDgtMDYgIFBlZHJvIEZyYW5jbyBk ZSBDYXJ2YWxobyAgPHBlZHJvbWZjQGxpbnV4LmlibS5jb20+CisKKyAgICAgICAgICAgICogcmVt b3RlLmMgKHJlbW90ZV90YXJnZXQ6OmRvd25sb2FkX3RyYWNlcG9pbnQpOiBSZW1vdmUgQlVGX1NJ WkUuCisgICAgICAgICAgICBSZXBsYWNlIGFycmF5IGJ1ZiB3aXRoIGdkYjo6Y2hhcl92ZWN0b3Ig YnVmLCBvZiBzaXplCisgICAgICAgICAgICBnZXRfcmVtb3RlX3BhY2tldF9zaXplICgpLiAgUmVw bGFjZSByZWZlcmVuY2VzIHRvIGJ1ZiBhbmQKKyAgICAgICAgICAgIEJVRl9TSVpFIHRvIGJ1Zi5k YXRhICgpIGFuZCBidWYuc2l6ZSAoKS4gIFJlcGxhY2Ugc3RyY3B5LCBzdHJjYXQKKyAgICAgICAg ICAgIGFuZCB4c25wcmludGYgd2l0aCBzbnByaW50Zi4gIFJhaXNlIGVycm9ycyBpZiB0aGUgYnVm ZmVyIGlzIHRvbworICAgICAgICAgICAgc21hbGwuCisKK2RpZmYgLS1naXQgYS9nZGIvcmVtb3Rl LmMgYi9nZGIvcmVtb3RlLmMKKy0tLSBhL2dkYi9yZW1vdGUuYworKysrIGIvZ2RiL3JlbW90ZS5j CitAQCAtMTI3OTksMjYgKzEyNzk5LDM1IEBAIHJlbW90ZV90YXJnZXQ6OnJlbW90ZV9kb3dubG9h ZF9jb21tYW5kX3NvdXJjZSAoaW50IG51bSwgVUxPTkdFU1QgYWRkciwKKyB2b2lkCisgcmVtb3Rl X3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCisg eworLSNkZWZpbmUgQlVGX1NJWkUgMjA0OAorLQorICAgQ09SRV9BRERSIHRwYWRkcjsKKyAgIGNo YXIgYWRkcmJ1Zls0MF07CistICBjaGFyIGJ1ZltCVUZfU0laRV07CisgICBzdGQ6OnZlY3Rvcjxz dGQ6OnN0cmluZz4gdGRwX2FjdGlvbnM7CisgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc3Rl cHBpbmdfYWN0aW9uczsKKyAgIGNoYXIgKnBrdDsKKyAgIHN0cnVjdCBicmVha3BvaW50ICpiID0g bG9jLT5vd25lcjsKKyAgIHN0cnVjdCB0cmFjZXBvaW50ICp0ID0gKHN0cnVjdCB0cmFjZXBvaW50 ICopIGI7CisgICBzdHJ1Y3QgcmVtb3RlX3N0YXRlICpycyA9IGdldF9yZW1vdGVfc3RhdGUgKCk7 CisrICBpbnQgcmV0OworKyAgY2hhciAqZXJyX21zZyA9IF8oIlRyYWNlcG9pbnQgcGFja2V0IHRv byBsYXJnZSBmb3IgdGFyZ2V0LiIpOworKyAgc2l6ZV90IHNpemVfbGVmdDsKKysKKysgIC8qIFdl IHVzZSBhIGJ1ZmZlciBvdGhlciB0aGFuIHJzLT5idWYgYmVjYXVzZSB3ZSdsbCBidWlsZCBzdHJp bmdzCisrICAgICBhY3Jvc3MgbXVsdGlwbGUgc3RhdGVtZW50cywgYW5kIG90aGVyIHN0YXRlbWVu dHMgaW4gYmV0d2VlbiBjb3VsZAorKyAgICAgbW9kaWZ5IHJzLT5idWYuICAqLworKyAgZ2RiOjpj aGFyX3ZlY3RvciBidWYgKGdldF9yZW1vdGVfcGFja2V0X3NpemUgKCkpOworIAorICAgZW5jb2Rl X2FjdGlvbnNfcnNwIChsb2MsICZ0ZHBfYWN0aW9ucywgJnN0ZXBwaW5nX2FjdGlvbnMpOworIAor ICAgdHBhZGRyID0gbG9jLT5hZGRyZXNzOworICAgc3ByaW50Zl92bWEgKGFkZHJidWYsIHRwYWRk cik7CistICB4c25wcmludGYgKGJ1ZiwgQlVGX1NJWkUsICJRVERQOiV4OiVzOiVjOiVseDoleCIs IGItPm51bWJlciwKKy0JICAgICBhZGRyYnVmLCAvKiBhZGRyZXNzICovCistCSAgICAgKGItPmVu YWJsZV9zdGF0ZSA9PSBicF9lbmFibGVkID8gJ0UnIDogJ0QnKSwKKy0JICAgICB0LT5zdGVwX2Nv dW50LCB0LT5wYXNzX2NvdW50KTsKKysgIHJldCA9IHNucHJpbnRmIChidWYuZGF0YSAoKSwgYnVm LnNpemUgKCksICJRVERQOiV4OiVzOiVjOiVseDoleCIsCisrCQkgIGItPm51bWJlciwgYWRkcmJ1 ZiwgLyogYWRkcmVzcyAqLworKwkJICAoYi0+ZW5hYmxlX3N0YXRlID09IGJwX2VuYWJsZWQgPyAn RScgOiAnRCcpLAorKwkJICB0LT5zdGVwX2NvdW50LCB0LT5wYXNzX2NvdW50KTsKKysKKysgIGlm IChyZXQgPCAwIHx8IHJldCA+PSBidWYuc2l6ZSAoKSkKKysgICAgZXJyb3IgKGVycl9tc2cpOwor KworICAgLyogRmFzdCB0cmFjZXBvaW50cyBhcmUgbW9zdGx5IGhhbmRsZWQgYnkgdGhlIHRhcmdl dCwgYnV0IHdlIGNhbgorICAgICAgdGVsbCB0aGUgdGFyZ2V0IGhvdyBiaWcgb2YgYW4gaW5zdHJ1 Y3Rpb24gYmxvY2sgc2hvdWxkIGJlIG1vdmVkCisgICAgICBhcm91bmQuICAqLworQEAgLTEyODMw LDggKzEyODM5LDE1IEBAIHJlbW90ZV90YXJnZXQ6OmRvd25sb2FkX3RyYWNlcG9pbnQgKHN0cnVj dCBicF9sb2NhdGlvbiAqbG9jKQorIAl7CisgCSAgaWYgKGdkYmFyY2hfZmFzdF90cmFjZXBvaW50 X3ZhbGlkX2F0IChsb2MtPmdkYmFyY2gsIHRwYWRkciwKKyAJCQkJCQlOVUxMKSkKKy0JICAgIHhz bnByaW50ZiAoYnVmICsgc3RybGVuIChidWYpLCBCVUZfU0laRSAtIHN0cmxlbiAoYnVmKSwgIjpG JXgiLAorLQkJICAgICAgIGdkYl9pbnNuX2xlbmd0aCAobG9jLT5nZGJhcmNoLCB0cGFkZHIpKTsK KysJICAgIHsKKysJICAgICAgc2l6ZV9sZWZ0ID0gYnVmLnNpemUgKCkgLSBzdHJsZW4gKGJ1Zi5k YXRhICgpKTsKKysJICAgICAgcmV0ID0gc25wcmludGYgKGJ1Zi5kYXRhICgpICsgc3RybGVuIChi dWYuZGF0YSAoKSksCisrCQkJICAgICAgc2l6ZV9sZWZ0LCAiOkYleCIsCisrCQkJICAgICAgZ2Ri X2luc25fbGVuZ3RoIChsb2MtPmdkYmFyY2gsIHRwYWRkcikpOworKworKwkgICAgICBpZiAocmV0 IDwgMCB8fCByZXQgPj0gc2l6ZV9sZWZ0KQorKwkJZXJyb3IgKGVycl9tc2cpOworKwkgICAgfQor IAkgIGVsc2UKKyAJICAgIC8qIElmIGl0IHBhc3NlZCB2YWxpZGF0aW9uIGF0IGRlZmluaXRpb24g YnV0IGZhaWxzIG5vdywKKyAJICAgICAgIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nLiAgKi8KK0BA IC0xMjg1NSw3ICsxMjg3MSwxNCBAQCByZW1vdGVfdGFyZ2V0Ojpkb3dubG9hZF90cmFjZXBvaW50 IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKKyAJICBzdHJ1Y3Qgc3RhdGljX3RyYWNlcG9pbnRf bWFya2VyIG1hcmtlcjsKKyAKKyAJICBpZiAodGFyZ2V0X3N0YXRpY190cmFjZXBvaW50X21hcmtl cl9hdCAodHBhZGRyLCAmbWFya2VyKSkKKy0JICAgIHN0cmNhdCAoYnVmLCAiOlMiKTsKKysJICAg IHsKKysJICAgICAgc2l6ZV9sZWZ0ID0gYnVmLnNpemUgKCkgLSBzdHJsZW4gKGJ1Zi5kYXRhICgp KTsKKysJICAgICAgcmV0ID0gc25wcmludGYgKGJ1Zi5kYXRhICgpICsgc3RybGVuIChidWYuZGF0 YSAoKSksCisrCQkJICAgICAgc2l6ZV9sZWZ0LCAiOlMiKTsKKysKKysJICAgICAgaWYgKHJldCA8 IDAgfHwgcmV0ID49IHNpemVfbGVmdCkKKysJCWVycm9yIChlcnJfbXNnKTsKKysJICAgIH0KKyAJ ICBlbHNlCisgCSAgICBlcnJvciAoXygiU3RhdGljIHRyYWNlcG9pbnQgbm90IHZhbGlkIGR1cmlu ZyBkb3dubG9hZCIpKTsKKyAJfQorQEAgLTEyODczLDEwICsxMjg5NiwyNiBAQCByZW1vdGVfdGFy Z2V0Ojpkb3dubG9hZF90cmFjZXBvaW50IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKKyAJIGNh cGFiaWxpdGllcyBhdCBkZWZpbml0aW9uIHRpbWUuICAqLworICAgICAgIGlmIChyZW1vdGVfc3Vw cG9ydHNfY29uZF90cmFjZXBvaW50cyAoKSkKKyAJeworLQkgIGFnZW50X2V4cHJfdXAgYWV4cHIg PSBnZW5fZXZhbF9mb3JfZXhwciAodHBhZGRyLCBsb2MtPmNvbmQuZ2V0ICgpKTsKKy0JICB4c25w cmludGYgKGJ1ZiArIHN0cmxlbiAoYnVmKSwgQlVGX1NJWkUgLSBzdHJsZW4gKGJ1ZiksICI6WCV4 LCIsCistCQkgICAgIGFleHByLT5sZW4pOworLQkgIHBrdCA9IGJ1ZiArIHN0cmxlbiAoYnVmKTsK KysJICBhZ2VudF9leHByX3VwIGFleHByID0gZ2VuX2V2YWxfZm9yX2V4cHIgKHRwYWRkciwKKysJ CQkJCQkgICBsb2MtPmNvbmQuZ2V0ICgpKTsKKysKKysJICBzaXplX2xlZnQgPSBidWYuc2l6ZSAo KSAtIHN0cmxlbiAoYnVmLmRhdGEgKCkpOworKworKwkgIHJldCA9IHNucHJpbnRmIChidWYuZGF0 YSAoKSArIHN0cmxlbiAoYnVmLmRhdGEgKCkpLAorKwkJCSAgc2l6ZV9sZWZ0LCAiOlgleCwiLCBh ZXhwci0+bGVuKTsKKysKKysJICBpZiAocmV0IDwgMCB8fCByZXQgPj0gc2l6ZV9sZWZ0KQorKwkg ICAgZXJyb3IgKGVycl9tc2cpOworKworKwkgIHNpemVfbGVmdCA9IGJ1Zi5zaXplICgpIC0gc3Ry bGVuIChidWYuZGF0YSAoKSk7CisrCisrCSAgLyogVHdvIGJ5dGVzIHRvIGVuY29kZSBlYWNoIGFl eHByIGJ5dGUsIHBsdXMgdGhlIHRlcm1pbmF0aW5nCisrCSAgICAgbnVsbCBieXRlLiAgKi8KKysJ ICBpZiAoYWV4cHItPmxlbiAqIDIgKyAxID4gc2l6ZV9sZWZ0KQorKwkgICAgZXJyb3IgKGVycl9t c2cpOworKworKwkgIHBrdCA9IGJ1Zi5kYXRhICgpICsgc3RybGVuIChidWYuZGF0YSAoKSk7Cisr CisgCSAgZm9yIChpbnQgbmR4ID0gMDsgbmR4IDwgYWV4cHItPmxlbjsgKytuZHgpCisgCSAgICBw a3QgPSBwYWNrX2hleF9ieXRlIChwa3QsIGFleHByLT5idWZbbmR4XSk7CisgCSAgKnBrdCA9ICdc MCc7CitAQCAtMTI4ODcsOCArMTI5MjYsMTcgQEAgcmVtb3RlX3RhcmdldDo6ZG93bmxvYWRfdHJh Y2Vwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCisgICAgIH0KKyAKKyAgIGlmIChiLT5j b21tYW5kcyB8fCAqZGVmYXVsdF9jb2xsZWN0KQorLSAgICBzdHJjYXQgKGJ1ZiwgIi0iKTsKKy0g IHB1dHBrdCAoYnVmKTsKKysgICAgeworKyAgICAgIHNpemVfbGVmdCA9IGJ1Zi5zaXplICgpIC0g c3RybGVuIChidWYuZGF0YSAoKSk7CisrCisrICAgICAgcmV0ID0gc25wcmludGYgKGJ1Zi5kYXRh ICgpICsgc3RybGVuIChidWYuZGF0YSAoKSksCisrCQkgICAgICBzaXplX2xlZnQsICItIik7Cisr CisrICAgICAgaWYgKHJldCA8IDAgfHwgcmV0ID49IHNpemVfbGVmdCkKKysJZXJyb3IgKGVycl9t c2cpOworKyAgICB9CisrCisrICBwdXRwa3QgKGJ1Zi5kYXRhICgpKTsKKyAgIHJlbW90ZV9nZXRf bm9pc3lfcmVwbHkgKCk7CisgICBpZiAoc3RyY21wIChycy0+YnVmLCAiT0siKSkKKyAgICAgZXJy b3IgKF8oIlRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRyYWNlcG9pbnRzLiIpKTsKK0BAIC0xMjkw MiwxMSArMTI5NTAsMTUgQEAgcmVtb3RlX3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCAoc3Ry dWN0IGJwX2xvY2F0aW9uICpsb2MpCisgICAgICAgYm9vbCBoYXNfbW9yZSA9ICgoYWN0aW9uX2l0 ICsgMSkgIT0gdGRwX2FjdGlvbnMuZW5kICgpCisgCQkgICAgICAgfHwgIXN0ZXBwaW5nX2FjdGlv bnMuZW1wdHkgKCkpOworIAorLSAgICAgIHhzbnByaW50ZiAoYnVmLCBCVUZfU0laRSwgIlFURFA6 LSV4OiVzOiVzJWMiLAorLQkJIGItPm51bWJlciwgYWRkcmJ1ZiwgLyogYWRkcmVzcyAqLworLQkJ IGFjdGlvbl9pdC0+Y19zdHIgKCksCistCQkgaGFzX21vcmUgPyAnLScgOiAwKTsKKy0gICAgICBw dXRwa3QgKGJ1Zik7CisrICAgICAgcmV0ID0gc25wcmludGYgKGJ1Zi5kYXRhICgpLCBidWYuc2l6 ZSAoKSwgIlFURFA6LSV4OiVzOiVzJWMiLAorKwkJICAgICAgYi0+bnVtYmVyLCBhZGRyYnVmLCAv KiBhZGRyZXNzICovCisrCQkgICAgICBhY3Rpb25faXQtPmNfc3RyICgpLAorKwkJICAgICAgaGFz X21vcmUgPyAnLScgOiAwKTsKKysKKysgICAgICBpZiAocmV0IDwgMCB8fCByZXQgPj0gYnVmLnNp emUgKCkpCisrCWVycm9yIChlcnJfbXNnKTsKKysKKysgICAgICBwdXRwa3QgKGJ1Zi5kYXRhICgp KTsKKyAgICAgICByZW1vdGVfZ2V0X25vaXN5X3JlcGx5ICgpOworICAgICAgIGlmIChzdHJjbXAg KHJzLT5idWYsICJPSyIpKQorIAllcnJvciAoXygiRXJyb3Igb24gdGFyZ2V0IHdoaWxlIHNldHRp bmcgdHJhY2Vwb2ludHMuIikpOworQEAgLTEyOTIwLDEyICsxMjk3MiwxNiBAQCByZW1vdGVfdGFy Z2V0Ojpkb3dubG9hZF90cmFjZXBvaW50IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKKyAgICAg ICBib29sIGlzX2ZpcnN0ID0gYWN0aW9uX2l0ID09IHN0ZXBwaW5nX2FjdGlvbnMuYmVnaW4gKCk7 CisgICAgICAgYm9vbCBoYXNfbW9yZSA9IChhY3Rpb25faXQgKyAxKSAhPSBzdGVwcGluZ19hY3Rp b25zLmVuZCAoKTsKKyAKKy0gICAgICB4c25wcmludGYgKGJ1ZiwgQlVGX1NJWkUsICJRVERQOi0l eDolczolcyVzJXMiLAorLQkJIGItPm51bWJlciwgYWRkcmJ1ZiwgLyogYWRkcmVzcyAqLworLQkJ IGlzX2ZpcnN0ID8gIlMiIDogIiIsCistCQkgYWN0aW9uX2l0LT5jX3N0ciAoKSwKKy0JCSBoYXNf bW9yZSA/ICItIiA6ICIiKTsKKy0gICAgICBwdXRwa3QgKGJ1Zik7CisrICAgICAgcmV0ID0gc25w cmludGYgKGJ1Zi5kYXRhICgpLCBidWYuc2l6ZSAoKSwgIlFURFA6LSV4OiVzOiVzJXMlcyIsCisr CQkgICAgICBiLT5udW1iZXIsIGFkZHJidWYsIC8qIGFkZHJlc3MgKi8KKysJCSAgICAgIGlzX2Zp cnN0ID8gIlMiIDogIiIsCisrCQkgICAgICBhY3Rpb25faXQtPmNfc3RyICgpLAorKwkJICAgICAg aGFzX21vcmUgPyAiLSIgOiAiIik7CisrCisrICAgICAgaWYgKHJldCA8IDAgfHwgcmV0ID49IGJ1 Zi5zaXplICgpKQorKwllcnJvciAoZXJyX21zZyk7CisrCisrICAgICAgcHV0cGt0IChidWYuZGF0 YSAoKSk7CisgICAgICAgcmVtb3RlX2dldF9ub2lzeV9yZXBseSAoKTsKKyAgICAgICBpZiAoc3Ry Y21wIChycy0+YnVmLCAiT0siKSkKKyAJZXJyb3IgKF8oIkVycm9yIG9uIHRhcmdldCB3aGlsZSBz ZXR0aW5nIHRyYWNlcG9pbnRzLiIpKTsKK0BAIC0xMjkzNSwyMiArMTI5OTEsMzIgQEAgcmVtb3Rl X3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCisg ICAgIHsKKyAgICAgICBpZiAoYi0+bG9jYXRpb24gIT0gTlVMTCkKKyAJeworLQkgIHN0cmNweSAo YnVmLCAiUVREUHNyYzoiKTsKKysJICByZXQgPSBzbnByaW50ZiAoYnVmLmRhdGEgKCksIGJ1Zi5z aXplICgpLCAiUVREUHNyYzoiKTsKKysKKysJICBpZiAocmV0IDwgMCB8fCByZXQgPj0gYnVmLnNp emUgKCkpCisrCSAgICBlcnJvciAoZXJyX21zZyk7CisrCisgCSAgZW5jb2RlX3NvdXJjZV9zdHJp bmcgKGItPm51bWJlciwgbG9jLT5hZGRyZXNzLCAiYXQiLAorIAkJCQlldmVudF9sb2NhdGlvbl90 b19zdHJpbmcgKGItPmxvY2F0aW9uLmdldCAoKSksCistCQkJCWJ1ZiArIHN0cmxlbiAoYnVmKSwg MjA0OCAtIHN0cmxlbiAoYnVmKSk7CistCSAgcHV0cGt0IChidWYpOworKwkJCQlidWYuZGF0YSAo KSArIHN0cmxlbiAoYnVmLmRhdGEgKCkpLAorKwkJCQlidWYuc2l6ZSAoKSAtIHN0cmxlbiAoYnVm LmRhdGEgKCkpKTsKKysJICBwdXRwa3QgKGJ1Zi5kYXRhICgpKTsKKyAJICByZW1vdGVfZ2V0X25v aXN5X3JlcGx5ICgpOworIAkgIGlmIChzdHJjbXAgKHJzLT5idWYsICJPSyIpKQorIAkgICAgd2Fy bmluZyAoXygiVGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQgc291cmNlIGRvd25sb2FkLiIpKTsKKyAJ fQorICAgICAgIGlmIChiLT5jb25kX3N0cmluZykKKyAJeworLQkgIHN0cmNweSAoYnVmLCAiUVRE UHNyYzoiKTsKKysJICByZXQgPSBzbnByaW50ZiAoYnVmLmRhdGEgKCksIGJ1Zi5zaXplICgpLCAi UVREUHNyYzoiKTsKKysKKysJICBpZiAocmV0IDwgMCB8fCByZXQgPj0gYnVmLnNpemUgKCkpCisr CSAgICBlcnJvciAoZXJyX21zZyk7CisrCisgCSAgZW5jb2RlX3NvdXJjZV9zdHJpbmcgKGItPm51 bWJlciwgbG9jLT5hZGRyZXNzLAorLQkJCQkiY29uZCIsIGItPmNvbmRfc3RyaW5nLCBidWYgKyBz dHJsZW4gKGJ1ZiksCistCQkJCTIwNDggLSBzdHJsZW4gKGJ1ZikpOworLQkgIHB1dHBrdCAoYnVm KTsKKysJCQkJImNvbmQiLCBiLT5jb25kX3N0cmluZywKKysJCQkJYnVmLmRhdGEgKCkgKyBzdHJs ZW4gKGJ1Zi5kYXRhICgpKSwKKysJCQkJYnVmLnNpemUgKCkgLSBzdHJsZW4gKGJ1Zi5kYXRhICgp KSk7CisrCSAgcHV0cGt0IChidWYuZGF0YSAoKSk7CisgCSAgcmVtb3RlX2dldF9ub2lzeV9yZXBs eSAoKTsKKyAJICBpZiAoc3RyY21wIChycy0+YnVmLCAiT0siKSkKKyAJICAgIHdhcm5pbmcgKF8o IlRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHNvdXJjZSBkb3dubG9hZC4iKSk7CgpkaWZmIC0tZ2l0 IGEvZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTRvZjcucGF0Y2ggYi9nZGItcmhiejExODc1 ODEtcG93ZXI4LXJlZ3MtNG9mNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi44YzU1M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1y ZWdzLTRvZjcucGF0Y2gKQEAgLTAsMCArMSw0NDkgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgOSBBdWcgMjAxOCAxNzoxNzoxNiArMDIwMAorU3Vi amVjdDogZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTRvZjcucGF0Y2gKKworOzsgQWRkIEdE QiBzdXBwb3J0IHRvIGFjY2Vzcy9kaXNwbGF5IFBPV0VSOCByZWdpc3RlcnMgKElCTSwgUkggQlog MTE4NzU4MSkuCisKK2NvbW1pdCA0Mjc3YzRiODdhZGRiNTM1NGNjNDdiOThkN2E3M2U0NGNmYWYy MmMyCitBdXRob3I6IFBlZHJvIEZyYW5jbyBkZSBDYXJ2YWxobyA8cGVkcm9tZmNAbGludXguaWJt LmNvbT4KK0RhdGU6ICAgTW9uIEF1ZyA2IDE2OjI0OjU1IDIwMTggLTAzMDAKKworICAgIFVzZSBy ZW1vdGUgcmVnaXN0ZXIgbnVtYmVycyBpbiB0cmFjZXBvaW50IG1hc2sKKworICAgIEN1cnJlbnRs eSwgdHJhY2Vwb2ludCByZWdpc3RlciBtYXNrcyBpbiB0aGUgUVREUCBwYWNrZXRzIGluY2x1ZGUg Ym90aAorICAgIGludGVybmFsIGFuZCByZW1vdGUgcmVnaXN0ZXIgbnVtYmVycywgYXMgd2VsbCBh cyBwc2V1ZG8tcmVnaXN0ZXIKKyAgICBudW1iZXJzLgorCisgICAgVGhpcyBwYXRjaCBjaGFuZ2Vz IHRoaXMgc28gdGhhdCB0aGUgbWFzayBvbmx5IGluY2x1ZGVzIHJlbW90ZSByZWdpc3RlcgorICAg IG51bWJlcnMuCisKKyAgICBSZWdpc3RlciBudW1iZXJzIGZyb20gYWdlbnQgZXhwcmVzc2lvbnMg YXJlIGFscmVhZHkgc2V0IGluIHRoZSBtYXNrCisgICAgdXNpbmcgcmVtb3RlIG51bWJlcnMuICBP dGhlciB0cmFjZXBvaW50IGFjdGlvbnMgdXNlZCBpbnRlcm5hbCBudW1iZXJzLAorICAgIGUuZy4g ImNvbGxlY3QgJHJlZ3MiIG9yICJjb2xsZWN0ICQ8cHNldWRvcmVnPiIuICBUbyBoYW5kbGUgcHNl dWRvcmVnCisgICAgbnVtYmVycywgYW4gZW1wdHkgYWdlbnQgZXhwcmVzc2lvbiBpcyBjcmVhdGVk IGFuZCBheF9yZWdfbWFzayBpcworICAgIGNhbGxlZCBmb3IgdGhpcyBleHByZXNzaW9uIGFuZCB0 aGUgcHNldWRvcmVnLiAgVGhpcyB3aWxsIGNhdXNlIHRoZSBheAorICAgIHRvIHNldCBpdHMgbWFz ayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHJlbW90ZSByYXcgcmVnaXN0ZXIKKyAgICBudW1iZXJz ICh1c2luZyBheF9yZWdzX21hc2ssIHdoaWNoIGNhbGxzCisgICAgZ2RiYXJjaF9heF9wc2V1ZG9f cmVnaXN0ZXJfY29sbGVjdCkuCisKKyAgICBJZiBheF9yZWdzX21hc2sgYW5kIGdkYmFyY2hfYXhf cHNldWRvX3JlZ2lzdGVyX2NvbGxlY3QgYWxzbyBnZW5lcmF0ZQorICAgIG1vcmUgYXggYnl0ZWNv ZGUsIHRoZSBheCBpcyBhbHNvIGFwcGVuZGVkIHRvIHRoZSBjb2xsZWN0aW9uIGxpc3QuICBJdAor ICAgIGlzbid0IGNsZWFyIHRoYXQgdGhpcyB3YXMgdGhlIG9yaWdpbmFsIGludGVudCBmb3IKKyAg ICBnZGJhcmNoX2F4X3BzZXVkb19yZWdpc3Rlcl9jb2xsZWN0LCBhbmQgbm9uZSBvZiB0aGUgYXJj aGVzIHNlZW0gdG8gZG8KKyAgICB0aGlzLCBidXQgaWYgdGhpcyBjaGFuZ2VzIGluIHRoZSBmdXR1 cmUsIGl0IHNob3VsZCB3b3JrLgorCisgICAgVGhlIHBhdGNoIGFsc28gcmVmYWN0b3JzIHRoZSBj b2RlIHVzZWQgYnkgdmFsaWRhdGVfYWN0aW9uIGxpbmUgdG8KKyAgICB2YWxpZGF0ZSBheHMgaW50 byBhIGZ1bmN0aW9uIHRoYXQgaXMgbm93IGNhbGxlZCBmcm9tIGV2ZXJ5IHBsYWNlIHRoYXQKKyAg ICBnZW5lcmF0ZXMgYXhzLiAgUHJldmlvdXNseSwgc29tZSBwYXJ0cyBvZiB0cmFjZXBvaW50LmMg dGhhdCBnZW5lcmF0ZWQKKyAgICBheHMgZGlkbid0IGNoZWNrIGlmIHRoZSBheCBsZW5ndGggd2Fz IGdyZWF0ZXIgdGhhbiBNQVhfQUdFTlRfRVhQUl9MRU4uCisKKyAgICBnZGIvQ2hhbmdlTG9nOgor ICAgIDIwMTgtMDgtMDYgIFBlZHJvIEZyYW5jbyBkZSBDYXJ2YWxobyAgPHBlZHJvbWZjQGxpbnV4 LmlibS5jb20+CisKKyAgICAgICAgICAgICogdHJhY2Vwb2ludC5oIChjbGFzcyBjb2xsZWN0aW9u X2xpc3QpIDxhZGRfcmVnaXN0ZXI+OiBSZW1vdmUuCisgICAgICAgICAgICA8YWRkX3JlbW90ZV9y ZWdpc3RlciwgYWRkX2F4X3JlZ2lzdGVycywgYWRkX2xvY2FsX3JlZ2lzdGVyPjoKKyAgICAgICAg ICAgIERlY2xhcmUuCisgICAgICAgICAgICA8YWRkX21lbXJhbmdlPjogQWRkIHNjb3BlIHBhcmFt ZXRlci4KKyAgICAgICAgICAgICogdHJhY2Vwb2ludC5jIChlbmNvZGVfYWN0aW9uc18xKTogTGlr ZXdpc2UuCisgICAgICAgICAgICAoY29sbGVjdGlvbl9saXN0OjphZGRfcmVnaXN0ZXIpOiBSZW5h bWUgdG8gLi4uCisgICAgICAgICAgICAoY29sbGVjdGlvbl9saXN0OjphZGRfcmVtb3RlX3JlZ2lz dGVyKTogLi4uIHRoaXMuICBVcGRhdGUKKyAgICAgICAgICAgIGNvbW1lbnQuCisgICAgICAgICAg ICAoY29sbGVjdGlvbl9saXN0OjphZGRfYXhfcmVnaXN0ZXJzLCBhZGRfbG9jYWxfcmVnaXN0ZXIp OiBOZXcKKyAgICAgICAgICAgIG1ldGhvZHMuCisgICAgICAgICAgICAoY29sbGVjdGlvbl9saXN0 OjphZGRfbWVtcmFuZ2UpOiBBZGQgc2NvcGUgcGFyYW1ldGVyLiAgQ2FsbAorICAgICAgICAgICAg YWRkX2xvY2FsX3JlZ2lzdGVyIGluc3RlYWQgb2YgYWRkX3JlZ2lzdGVyLgorICAgICAgICAgICAg KGZpbmFsaXplX3RyYWNlcG9pbnRfYWV4cHIpOiBOZXcgZnVuY3Rpb24uCisgICAgICAgICAgICAo Y29sbGVjdGlvbl9saXN0Ojpjb2xsZWN0X3N5bWJvbCk6IFVwZGF0ZSBjYWxscyB0byBhZGRfbWVt cmFuZ2UuCisgICAgICAgICAgICBDYWxsIGFkZF9sb2NhbF9yZWdpc3RlciBpbnN0ZWFkIG9mIGFk ZF9yZWdpc3Rlci4gIENhbGwKKyAgICAgICAgICAgIGFkZF9heF9yZWdpc3RlcnMuICBDYWxsIGZp bmFsaXplX3RyYWNlcG9pbnRfYWV4cHIuCisgICAgICAgICAgICAoZW5jb2RlX2FjdGlvbnNfMSk6 IEdldCByZW1vdGUgcmVnbm9zIGZvciAkcmVnIGFjdGlvbi4gIENhbGwKKyAgICAgICAgICAgIGFk ZF9yZW1vdGVfcmVnaXN0ZXIsIGFkZF9heF9yZWdpc3RlcnMsIGFuZCBhZGRfbG9jYWxfcmVnaXN0 ZXIuCisgICAgICAgICAgICBVcGRhdGUgY2FsbCB0byBhZGRfbWVtcmFuZ2UuICBDYWxsIGZpbmFs aXplX3RyYWNlcG9pbnRfYWV4cHIuCisgICAgICAgICAgICAodmFsaWRhdGVfYWN0aW9ubGluZSk6 IENhbGwgZmluYWxpemVfdHJhY2Vwb2ludF9hZXhwci4KKworKzIwMTgtMDgtMDYgIFBlZHJvIEZy YW5jbyBkZSBDYXJ2YWxobyAgPHBlZHJvbWZjQGxpbnV4LmlibS5jb20+CisrCisrCSogdHJhY2Vw b2ludC5oIChjbGFzcyBjb2xsZWN0aW9uX2xpc3QpIDxhZGRfcmVnaXN0ZXI+OiBSZW1vdmUuCisr CTxhZGRfcmVtb3RlX3JlZ2lzdGVyLCBhZGRfYXhfcmVnaXN0ZXJzLCBhZGRfbG9jYWxfcmVnaXN0 ZXI+OgorKwlEZWNsYXJlLgorKwk8YWRkX21lbXJhbmdlPjogQWRkIHNjb3BlIHBhcmFtZXRlci4K KysJKiB0cmFjZXBvaW50LmMgKGVuY29kZV9hY3Rpb25zXzEpOiBMaWtld2lzZS4KKysJKGNvbGxl Y3Rpb25fbGlzdDo6YWRkX3JlZ2lzdGVyKTogUmVuYW1lIHRvIC4uLgorKwkoY29sbGVjdGlvbl9s aXN0OjphZGRfcmVtb3RlX3JlZ2lzdGVyKTogLi4uIHRoaXMuICBVcGRhdGUKKysJY29tbWVudC4K KysJKGNvbGxlY3Rpb25fbGlzdDo6YWRkX2F4X3JlZ2lzdGVycywgYWRkX2xvY2FsX3JlZ2lzdGVy KTogTmV3CisrCW1ldGhvZHMuCisrCShjb2xsZWN0aW9uX2xpc3Q6OmFkZF9tZW1yYW5nZSk6IEFk ZCBzY29wZSBwYXJhbWV0ZXIuICBDYWxsCisrCWFkZF9sb2NhbF9yZWdpc3RlciBpbnN0ZWFkIG9m IGFkZF9yZWdpc3Rlci4KKysJKGZpbmFsaXplX3RyYWNlcG9pbnRfYWV4cHIpOiBOZXcgZnVuY3Rp b24uCisrCShjb2xsZWN0aW9uX2xpc3Q6OmNvbGxlY3Rfc3ltYm9sKTogVXBkYXRlIGNhbGxzIHRv IGFkZF9tZW1yYW5nZS4KKysJQ2FsbCBhZGRfbG9jYWxfcmVnaXN0ZXIgaW5zdGVhZCBvZiBhZGRf cmVnaXN0ZXIuICBDYWxsCisrCWFkZF9heF9yZWdpc3RlcnMuICBDYWxsIGZpbmFsaXplX3RyYWNl cG9pbnRfYWV4cHIuCisrCShlbmNvZGVfYWN0aW9uc18xKTogR2V0IHJlbW90ZSByZWdub3MgZm9y ICRyZWcgYWN0aW9uLiAgQ2FsbAorKwlhZGRfcmVtb3RlX3JlZ2lzdGVyLCBhZGRfYXhfcmVnaXN0 ZXJzLCBhbmQgYWRkX2xvY2FsX3JlZ2lzdGVyLgorKwlVcGRhdGUgY2FsbCB0byBhZGRfbWVtcmFu Z2UuICBDYWxsIGZpbmFsaXplX3RyYWNlcG9pbnRfYWV4cHIuCisrCSh2YWxpZGF0ZV9hY3Rpb25s aW5lKTogQ2FsbCBmaW5hbGl6ZV90cmFjZXBvaW50X2FleHByLgorKworIDIwMTgtMDgtMDYgIFBl ZHJvIEZyYW5jbyBkZSBDYXJ2YWxobyAgPHBlZHJvbWZjQGxpbnV4LmlibS5jb20+CisKKyAJKiBy ZW1vdGUuYyAocmVtb3RlX3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCk6IFJlbW92ZSBCVUZf U0laRS4KKworZGlmZiAtLWdpdCBhL2dkYi90cmFjZXBvaW50LmMgYi9nZGIvdHJhY2Vwb2ludC5j CistLS0gYS9nZGIvdHJhY2Vwb2ludC5jCisrKysgYi9nZGIvdHJhY2Vwb2ludC5jCitAQCAtNjE1 LDYgKzYxNSwxOSBAQCByZXBvcnRfYWdlbnRfcmVxc19lcnJvcnMgKHN0cnVjdCBhZ2VudF9leHBy ICphZXhwcikKKyAgICAgZXJyb3IgKF8oIkV4cHJlc3Npb24gaXMgdG9vIGNvbXBsaWNhdGVkLiIp KTsKKyB9CisgCisrLyogQ2FsbCBheF9yZXFzIG9uIEFFWFBSIGFuZCByYWlzZSBhbiBlcnJvciBp ZiBzb21ldGhpbmcgaXMgd3JvbmcuICAqLworKworK3N0YXRpYyB2b2lkCisrZmluYWxpemVfdHJh Y2Vwb2ludF9hZXhwciAoc3RydWN0IGFnZW50X2V4cHIgKmFleHByKQorK3sKKysgIGF4X3JlcXMg KGFleHByKTsKKysKKysgIGlmIChhZXhwci0+bGVuID4gTUFYX0FHRU5UX0VYUFJfTEVOKQorKyAg ICBlcnJvciAoXygiRXhwcmVzc2lvbiBpcyB0b28gY29tcGxpY2F0ZWQuIikpOworKworKyAgcmVw b3J0X2FnZW50X3JlcXNfZXJyb3JzIChhZXhwcik7CisrfQorKworIC8qIHdvcmtlciBmdW5jdGlv biAqLworIHZvaWQKKyB2YWxpZGF0ZV9hY3Rpb25saW5lIChjb25zdCBjaGFyICpsaW5lLCBzdHJ1 Y3QgYnJlYWtwb2ludCAqYikKK0BAIC02OTksMTIgKzcxMiw3IEBAIHZhbGlkYXRlX2FjdGlvbmxp bmUgKGNvbnN0IGNoYXIgKmxpbmUsIHN0cnVjdCBicmVha3BvaW50ICpiKQorIAkJCQkJCQlleHAu Z2V0ICgpLAorIAkJCQkJCQl0cmFjZV9zdHJpbmcpOworIAorLQkgICAgICBpZiAoYWV4cHItPmxl biA+IE1BWF9BR0VOVF9FWFBSX0xFTikKKy0JCWVycm9yIChfKCJFeHByZXNzaW9uIGlzIHRvbyBj b21wbGljYXRlZC4iKSk7CistCistCSAgICAgIGF4X3JlcXMgKGFleHByLmdldCAoKSk7CistCist CSAgICAgIHJlcG9ydF9hZ2VudF9yZXFzX2Vycm9ycyAoYWV4cHIuZ2V0ICgpKTsKKysJICAgICAg ZmluYWxpemVfdHJhY2Vwb2ludF9hZXhwciAoYWV4cHIuZ2V0ICgpKTsKKyAJICAgIH0KKyAJfQor ICAgICAgIHdoaWxlIChwICYmICpwKysgPT0gJywnKTsKK0BAIC03MzEsMTEgKzczOSw3IEBAIHZh bGlkYXRlX2FjdGlvbmxpbmUgKGNvbnN0IGNoYXIgKmxpbmUsIHN0cnVjdCBicmVha3BvaW50ICpi KQorIAkJIGxvbmcuICAqLworIAkgICAgICBhZ2VudF9leHByX3VwIGFleHByID0gZ2VuX2V2YWxf Zm9yX2V4cHIgKGxvYy0+YWRkcmVzcywgZXhwLmdldCAoKSk7CisgCistCSAgICAgIGlmIChhZXhw ci0+bGVuID4gTUFYX0FHRU5UX0VYUFJfTEVOKQorLQkJZXJyb3IgKF8oIkV4cHJlc3Npb24gaXMg dG9vIGNvbXBsaWNhdGVkLiIpKTsKKy0KKy0JICAgICAgYXhfcmVxcyAoYWV4cHIuZ2V0ICgpKTsK Ky0JICAgICAgcmVwb3J0X2FnZW50X3JlcXNfZXJyb3JzIChhZXhwci5nZXQgKCkpOworKwkgICAg ICBmaW5hbGl6ZV90cmFjZXBvaW50X2FleHByIChhZXhwci5nZXQgKCkpOworIAkgICAgfQorIAl9 CisgICAgICAgd2hpbGUgKHAgJiYgKnArKyA9PSAnLCcpOworQEAgLTgxMSwxMCArODE1LDEwIEBA IG1lbXJhbmdlX3NvcnRtZXJnZSAoc3RkOjp2ZWN0b3I8bWVtcmFuZ2U+ICZtZW1yYW5nZXMpCisg ICAgIH0KKyB9CisgCistLyogQWRkIGEgcmVnaXN0ZXIgdG8gYSBjb2xsZWN0aW9uIGxpc3QuICAq LworKy8qIEFkZCByZW1vdGUgcmVnaXN0ZXIgbnVtYmVyIFJFR05PIHRvIHRoZSBjb2xsZWN0aW9u IGxpc3QgbWFzay4gICovCisgCisgdm9pZAorLWNvbGxlY3Rpb25fbGlzdDo6YWRkX3JlZ2lzdGVy ICh1bnNpZ25lZCBpbnQgcmVnbm8pCisrY29sbGVjdGlvbl9saXN0OjphZGRfcmVtb3RlX3JlZ2lz dGVyICh1bnNpZ25lZCBpbnQgcmVnbm8pCisgeworICAgaWYgKGluZm9fdmVyYm9zZSkKKyAgICAg cHJpbnRmX2ZpbHRlcmVkICgiY29sbGVjdCByZWdpc3RlciAlZFxuIiwgcmVnbm8pOworQEAgLTgy NCwxMiArODI4LDc0IEBAIGNvbGxlY3Rpb25fbGlzdDo6YWRkX3JlZ2lzdGVyICh1bnNpZ25lZCBp bnQgcmVnbm8pCisgICBtX3JlZ3NfbWFza1tyZWdubyAvIDhdIHw9IDEgPDwgKHJlZ25vICUgOCk7 CisgfQorIAorKy8qIEFkZCBhbGwgdGhlIHJlZ2lzdGVycyBmcm9tIHRoZSBtYXNrIGluIEFFWFBS IHRvIHRoZSBtYXNrIGluIHRoZQorKyAgIGNvbGxlY3Rpb24gbGlzdC4gIFJlZ2lzdGVycyBpbiB0 aGUgQUVYUFIgbWFzayBhcmUgYWxyZWFkeSByZW1vdGUKKysgICByZWdpc3RlciBudW1iZXJzLiAg Ki8KKysKKyt2b2lkCisrY29sbGVjdGlvbl9saXN0OjphZGRfYXhfcmVnaXN0ZXJzIChzdHJ1Y3Qg YWdlbnRfZXhwciAqYWV4cHIpCisreworKyAgaWYgKGFleHByLT5yZWdfbWFza19sZW4gPiAwKQor KyAgICB7CisrICAgICAgZm9yIChpbnQgbmR4MSA9IDA7IG5keDEgPCBhZXhwci0+cmVnX21hc2tf bGVuOyBuZHgxKyspCisrCXsKKysJICBRVUlUOwkvKiBBbGxvdyB1c2VyIHRvIGJhaWwgb3V0IHdp dGggXkMuICAqLworKwkgIGlmIChhZXhwci0+cmVnX21hc2tbbmR4MV0gIT0gMCkKKysJICAgIHsK KysJICAgICAgLyogQXNzdW1lIGNoYXJzIGhhdmUgOCBiaXRzLiAgKi8KKysJICAgICAgZm9yIChp bnQgbmR4MiA9IDA7IG5keDIgPCA4OyBuZHgyKyspCisrCQlpZiAoYWV4cHItPnJlZ19tYXNrW25k eDFdICYgKDEgPDwgbmR4MikpCisrCQkgIC8qIEl0J3MgdXNlZCAtLSByZWNvcmQgaXQuICAqLwor KwkJICBhZGRfcmVtb3RlX3JlZ2lzdGVyIChuZHgxICogOCArIG5keDIpOworKwkgICAgfQorKwl9 CisrICAgIH0KKyt9CisrCisrLyogSWYgUkVHTk8gaXMgcmF3LCBhZGQgaXRzIGNvcnJlc3BvbmRp bmcgcmVtb3RlIHJlZ2lzdGVyIG51bWJlciB0bworKyAgIHRoZSBtYXNrLiAgSWYgUkVHTk8gaXMg YSBwc2V1ZG8tcmVnaXN0ZXIsIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeQorKyAgIHJlZ2lzdGVy cyB1c2luZyBhIHRlbXBvcmFyeSBhZ2VudCBleHByZXNzaW9uLCBhbmQgYWRkIGl0IHRvIHRoZQor KyAgIGxpc3QgaWYgaXQgbmVlZHMgbW9yZSB0aGFuIGp1c3QgYSBtYXNrLiAgKi8KKysKKyt2b2lk CisrY29sbGVjdGlvbl9saXN0OjphZGRfbG9jYWxfcmVnaXN0ZXIgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAorKwkJCQkgICAgIHVuc2lnbmVkIGludCByZWdubywKKysJCQkJICAgICBDT1JFX0FE RFIgc2NvcGUpCisreworKyAgaWYgKHJlZ25vIDwgZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCkp CisrICAgIHsKKysgICAgICBpbnQgcmVtb3RlX3JlZ25vID0gZ2RiYXJjaF9yZW1vdGVfcmVnaXN0 ZXJfbnVtYmVyIChnZGJhcmNoLCByZWdubyk7CisrCisrICAgICAgaWYgKHJlbW90ZV9yZWdubyA8 IDApCisrCWVycm9yIChfKCJDYW4ndCBjb2xsZWN0IHJlZ2lzdGVyICVkIiksIHJlZ25vKTsKKysK KysgICAgICBhZGRfcmVtb3RlX3JlZ2lzdGVyIChyZW1vdGVfcmVnbm8pOworKyAgICB9CisrICBl bHNlCisrICAgIHsKKysgICAgICBhZ2VudF9leHByX3VwIGFleHByIChuZXcgYWdlbnRfZXhwciAo Z2RiYXJjaCwgc2NvcGUpKTsKKysKKysgICAgICBheF9yZWdfbWFzayAoYWV4cHIuZ2V0ICgpLCBy ZWdubyk7CisrCisrICAgICAgZmluYWxpemVfdHJhY2Vwb2ludF9hZXhwciAoYWV4cHIuZ2V0ICgp KTsKKysKKysgICAgICBhZGRfYXhfcmVnaXN0ZXJzIChhZXhwci5nZXQgKCkpOworKworKyAgICAg IC8qIFVzdWFsbHkgYXhfcmVnX21hc2sgZm9yIGEgcHNldWRvLXJlZ2lzZXIgb25seSBzZXRzIHRo ZQorKwkgY29ycmVzcG9uZGluZyByYXcgcmVnaXN0ZXJzIGluIHRoZSBheCBtYXNrLCBidXQgaWYg dGhpcyBpc24ndAorKwkgdGhlIGNhc2UgYWRkIHRoZSBleHByZXNzaW9uIHRoYXQgaXMgZ2VuZXJh dGVkIHRvIHRoZQorKwkgY29sbGVjdGlvbiBsaXN0LiAgKi8KKysgICAgICBpZiAoYWV4cHItPmxl biA+IDApCisrCWFkZF9hZXhwciAoc3RkOjptb3ZlIChhZXhwcikpOworKyAgICB9CisrfQorKwor IC8qIEFkZCBhIG1lbXJhbmdlIHRvIGEgY29sbGVjdGlvbiBsaXN0LiAgKi8KKyAKKyB2b2lkCisg Y29sbGVjdGlvbl9saXN0OjphZGRfbWVtcmFuZ2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor IAkJCSAgICAgICBpbnQgdHlwZSwgYmZkX3NpZ25lZF92bWEgYmFzZSwKKy0JCQkgICAgICAgVUxP TkdFU1QgbGVuKQorKwkJCSAgICAgICBVTE9OR0VTVCBsZW4sIENPUkVfQUREUiBzY29wZSkKKyB7 CisgICBpZiAoaW5mb192ZXJib3NlKQorICAgICBwcmludGZfZmlsdGVyZWQgKCIoJWQsJXMsJXMp XG4iLCB0eXBlLCBwYWRkcmVzcyAoZ2RiYXJjaCwgYmFzZSksIHB1bG9uZ2VzdCAobGVuKSk7CitA QCAtODQwLDcgKzkwNiw3IEBAIGNvbGxlY3Rpb25fbGlzdDo6YWRkX21lbXJhbmdlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKKyAgIG1fbWVtcmFuZ2VzLmVtcGxhY2VfYmFjayAodHlwZSwgYmFz ZSwgYmFzZSArIGxlbik7CisgCisgICBpZiAodHlwZSAhPSBtZW1yYW5nZV9hYnNvbHV0ZSkgICAg LyogQmV0dGVyIGNvbGxlY3QgdGhlIGJhc2UgcmVnaXN0ZXIhICAqLworLSAgICBhZGRfcmVnaXN0 ZXIgKHR5cGUpOworKyAgICBhZGRfbG9jYWxfcmVnaXN0ZXIgKGdkYmFyY2gsIHR5cGUsIHNjb3Bl KTsKKyB9CisgCisgLyogQWRkIGEgc3ltYm9sIHRvIGEgY29sbGVjdGlvbiBsaXN0LiAgKi8KK0BA IC04ODIsMTkgKzk0OCwxOSBAQCBjb2xsZWN0aW9uX2xpc3Q6OmNvbGxlY3Rfc3ltYm9sIChzdHJ1 Y3Qgc3ltYm9sICpzeW0sCisgICAgICAgaWYgKFRZUEVfQ09ERSAoU1lNQk9MX1RZUEUgKHN5bSkp ID09IFRZUEVfQ09ERV9TVFJVQ1QpCisgCXRyZWF0X2FzX2V4cHIgPSAxOworICAgICAgIGVsc2UK Ky0JYWRkX21lbXJhbmdlIChnZGJhcmNoLCBtZW1yYW5nZV9hYnNvbHV0ZSwgb2Zmc2V0LCBsZW4p OworKwlhZGRfbWVtcmFuZ2UgKGdkYmFyY2gsIG1lbXJhbmdlX2Fic29sdXRlLCBvZmZzZXQsIGxl biwgc2NvcGUpOworICAgICAgIGJyZWFrOworICAgICBjYXNlIExPQ19SRUdJU1RFUjoKKyAgICAg ICByZWcgPSBTWU1CT0xfUkVHSVNURVJfT1BTIChzeW0pLT5yZWdpc3Rlcl9udW1iZXIgKHN5bSwg Z2RiYXJjaCk7CisgICAgICAgaWYgKGluZm9fdmVyYm9zZSkKKyAJcHJpbnRmX2ZpbHRlcmVkICgi TE9DX1JFR1twYXJtXSAlczogIiwgCisgCQkJIFNZTUJPTF9QUklOVF9OQU1FIChzeW0pKTsKKy0g ICAgICBhZGRfcmVnaXN0ZXIgKHJlZyk7CisrICAgICAgYWRkX2xvY2FsX3JlZ2lzdGVyIChnZGJh cmNoLCByZWcsIHNjb3BlKTsKKyAgICAgICAvKiBDaGVjayBmb3IgZG91YmxlcyBzdG9yZWQgaW4g dHdvIHJlZ2lzdGVycy4gICovCisgICAgICAgLyogRklYTUU6IGhvdyBhYm91dCBsYXJnZXIgdHlw ZXMgc3RvcmVkIGluIDMgb3IgbW9yZSByZWdzPyAgKi8KKyAgICAgICBpZiAoVFlQRV9DT0RFIChT WU1CT0xfVFlQRSAoc3ltKSkgPT0gVFlQRV9DT0RFX0ZMVCAmJgorIAkgIGxlbiA+IHJlZ2lzdGVy X3NpemUgKGdkYmFyY2gsIHJlZykpCistCWFkZF9yZWdpc3RlciAocmVnICsgMSk7CisrCWFkZF9s b2NhbF9yZWdpc3RlciAoZ2RiYXJjaCwgcmVnICsgMSwgc2NvcGUpOworICAgICAgIGJyZWFrOwor ICAgICBjYXNlIExPQ19SRUZfQVJHOgorICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIlNvcnJ5LCBk b24ndCBrbm93IGhvdyB0byBkbyBMT0NfUkVGX0FSRyB5ZXQuXG4iKTsKK0BAIC05MTEsNyArOTc3 LDcgQEAgY29sbGVjdGlvbl9saXN0Ojpjb2xsZWN0X3N5bWJvbCAoc3RydWN0IHN5bWJvbCAqc3lt LAorIAkJCSAgIFNZTUJPTF9QUklOVF9OQU1FIChzeW0pLCBwdWxvbmdlc3QgKGxlbiksCisgCQkJ ICAgcGFkZHJlc3MgKGdkYmFyY2gsIG9mZnNldCksIHJlZyk7CisgCX0KKy0gICAgICBhZGRfbWVt cmFuZ2UgKGdkYmFyY2gsIHJlZywgb2Zmc2V0LCBsZW4pOworKyAgICAgIGFkZF9tZW1yYW5nZSAo Z2RiYXJjaCwgcmVnLCBvZmZzZXQsIGxlbiwgc2NvcGUpOworICAgICAgIGJyZWFrOworICAgICBj YXNlIExPQ19SRUdQQVJNX0FERFI6CisgICAgICAgcmVnID0gU1lNQk9MX1ZBTFVFIChzeW0pOwor QEAgLTkyMyw3ICs5ODksNyBAQCBjb2xsZWN0aW9uX2xpc3Q6OmNvbGxlY3Rfc3ltYm9sIChzdHJ1 Y3Qgc3ltYm9sICpzeW0sCisgCQkJICAgU1lNQk9MX1BSSU5UX05BTUUgKHN5bSksIHB1bG9uZ2Vz dCAobGVuKSwKKyAJCQkgICBwYWRkcmVzcyAoZ2RiYXJjaCwgb2Zmc2V0KSwgcmVnKTsKKyAJfQor LSAgICAgIGFkZF9tZW1yYW5nZSAoZ2RiYXJjaCwgcmVnLCBvZmZzZXQsIGxlbik7CisrICAgICAg YWRkX21lbXJhbmdlIChnZGJhcmNoLCByZWcsIG9mZnNldCwgbGVuLCBzY29wZSk7CisgICAgICAg YnJlYWs7CisgICAgIGNhc2UgTE9DX0xPQ0FMOgorICAgICAgIHJlZyA9IGZyYW1lX3JlZ25vOwor QEAgLTkzNSw3ICsxMDAxLDcgQEAgY29sbGVjdGlvbl9saXN0Ojpjb2xsZWN0X3N5bWJvbCAoc3Ry dWN0IHN5bWJvbCAqc3ltLAorIAkJCSAgIFNZTUJPTF9QUklOVF9OQU1FIChzeW0pLCBwdWxvbmdl c3QgKGxlbiksCisgCQkJICAgcGFkZHJlc3MgKGdkYmFyY2gsIG9mZnNldCksIHJlZyk7CisgCX0K Ky0gICAgICBhZGRfbWVtcmFuZ2UgKGdkYmFyY2gsIHJlZywgb2Zmc2V0LCBsZW4pOworKyAgICAg IGFkZF9tZW1yYW5nZSAoZ2RiYXJjaCwgcmVnLCBvZmZzZXQsIGxlbiwgc2NvcGUpOworICAgICAg IGJyZWFrOworIAorICAgICBjYXNlIExPQ19VTlJFU09MVkVEOgorQEAgLTk2OCwyNiArMTAzNCwx MCBAQCBjb2xsZWN0aW9uX2xpc3Q6OmNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3Qgc3ltYm9sICpzeW0s CisgCSAgcmV0dXJuOworIAl9CisgCistICAgICAgYXhfcmVxcyAoYWV4cHIuZ2V0ICgpKTsKKy0K Ky0gICAgICByZXBvcnRfYWdlbnRfcmVxc19lcnJvcnMgKGFleHByLmdldCAoKSk7CisrICAgICAg ZmluYWxpemVfdHJhY2Vwb2ludF9hZXhwciAoYWV4cHIuZ2V0ICgpKTsKKyAKKyAgICAgICAvKiBU YWtlIGNhcmUgb2YgdGhlIHJlZ2lzdGVycy4gICovCistICAgICAgaWYgKGFleHByLT5yZWdfbWFz a19sZW4gPiAwKQorLQl7CistCSAgZm9yIChpbnQgbmR4MSA9IDA7IG5keDEgPCBhZXhwci0+cmVn X21hc2tfbGVuOyBuZHgxKyspCistCSAgICB7CistCSAgICAgIFFVSVQ7CS8qIEFsbG93IHVzZXIg dG8gYmFpbCBvdXQgd2l0aCBeQy4gICovCistCSAgICAgIGlmIChhZXhwci0+cmVnX21hc2tbbmR4 MV0gIT0gMCkKKy0JCXsKKy0JCSAgLyogQXNzdW1lIGNoYXJzIGhhdmUgOCBiaXRzLiAgKi8KKy0J CSAgZm9yIChpbnQgbmR4MiA9IDA7IG5keDIgPCA4OyBuZHgyKyspCistCQkgICAgaWYgKGFleHBy LT5yZWdfbWFza1tuZHgxXSAmICgxIDw8IG5keDIpKQorLQkJICAgICAgLyogSXQncyB1c2VkIC0t IHJlY29yZCBpdC4gICovCistCQkgICAgICBhZGRfcmVnaXN0ZXIgKG5keDEgKiA4ICsgbmR4Mik7 CistCQl9CistCSAgICB9CistCX0KKysgICAgICBhZGRfYXhfcmVnaXN0ZXJzIChhZXhwci5nZXQg KCkpOworIAorICAgICAgIGFkZF9hZXhwciAoc3RkOjptb3ZlIChhZXhwcikpOworICAgICB9CitA QCAtMTI1Nyw4ICsxMzA3LDE4IEBAIGVuY29kZV9hY3Rpb25zXzEgKHN0cnVjdCBjb21tYW5kX2xp bmUgKmFjdGlvbiwKKyAKKyAJICAgICAgaWYgKDAgPT0gc3RybmNhc2VjbXAgKCIkcmVnIiwgYWN0 aW9uX2V4cCwgNCkpCisgCQl7CistCQkgIGZvciAoaSA9IDA7IGkgPCBnZGJhcmNoX251bV9yZWdz ICh0YXJnZXRfZ2RiYXJjaCAoKSk7IGkrKykKKy0JCSAgICBjb2xsZWN0LT5hZGRfcmVnaXN0ZXIg KGkpOworKwkJICBmb3IgKGkgPSAwOyBpIDwgZ2RiYXJjaF9udW1fcmVncyAodGFyZ2V0X2dkYmFy Y2ggKCkpOworKwkJICAgICAgIGkrKykKKysJCSAgICB7CisrCQkgICAgICBpbnQgcmVtb3RlX3Jl Z25vID0gKGdkYmFyY2hfcmVtb3RlX3JlZ2lzdGVyX251bWJlcgorKwkJCQkJICAodGFyZ2V0X2dk YmFyY2ggKCksIGkpKTsKKysKKysJCSAgICAgIC8qIElnbm9yZSBhcmNoIHJlZ25vcyB3aXRob3V0 IGEgY29ycmVzcG9uZGluZworKwkJCSByZW1vdGUgcmVnbm8uICBUaGlzIGNhbiBoYXBwZW4gZm9y IHJlZ25vcyBub3QKKysJCQkgaW4gdGhlIHRkZXNjLiAgKi8KKysJCSAgICAgIGlmIChyZW1vdGVf cmVnbm8gPj0gMCkKKysJCQljb2xsZWN0LT5hZGRfcmVtb3RlX3JlZ2lzdGVyIChyZW1vdGVfcmVn bm8pOworKwkJICAgIH0KKyAJCSAgYWN0aW9uX2V4cCA9IHN0cmNociAoYWN0aW9uX2V4cCwgJywn KTsJLyogbW9yZT8gKi8KKyAJCX0KKyAJICAgICAgZWxzZSBpZiAoMCA9PSBzdHJuY2FzZWNtcCAo IiRhcmciLCBhY3Rpb25fZXhwLCA0KSkKK0BAIC0xMjg4LDI3ICsxMzQ4LDEwIEBAIGVuY29kZV9h Y3Rpb25zXzEgKHN0cnVjdCBjb21tYW5kX2xpbmUgKmFjdGlvbiwKKyAJCQkJCQkgICAgdGFyZ2V0 X2dkYmFyY2ggKCksCisgCQkJCQkJICAgIHRyYWNlX3N0cmluZyk7CisgCistCQkgIGF4X3JlcXMg KGFleHByLmdldCAoKSk7CistCQkgIHJlcG9ydF9hZ2VudF9yZXFzX2Vycm9ycyAoYWV4cHIuZ2V0 ICgpKTsKKysJCSAgZmluYWxpemVfdHJhY2Vwb2ludF9hZXhwciAoYWV4cHIuZ2V0ICgpKTsKKyAK KyAJCSAgLyogdGFrZSBjYXJlIG9mIHRoZSByZWdpc3RlcnMgKi8KKy0JCSAgaWYgKGFleHByLT5y ZWdfbWFza19sZW4gPiAwKQorLQkJICAgIHsKKy0JCSAgICAgIGZvciAoaW50IG5keDEgPSAwOyBu ZHgxIDwgYWV4cHItPnJlZ19tYXNrX2xlbjsgbmR4MSsrKQorLQkJCXsKKy0JCQkgIFFVSVQ7CS8q IGFsbG93IHVzZXIgdG8gYmFpbCBvdXQgd2l0aCBeQyAqLworLQkJCSAgaWYgKGFleHByLT5yZWdf bWFza1tuZHgxXSAhPSAwKQorLQkJCSAgICB7CistCQkJICAgICAgLyogYXNzdW1lIGNoYXJzIGhh dmUgOCBiaXRzICovCistCQkJICAgICAgZm9yIChpbnQgbmR4MiA9IDA7IG5keDIgPCA4OyBuZHgy KyspCistCQkJCWlmIChhZXhwci0+cmVnX21hc2tbbmR4MV0gJiAoMSA8PCBuZHgyKSkKKy0JCQkJ ICB7CistCQkJCSAgICAvKiBJdCdzIHVzZWQgLS0gcmVjb3JkIGl0LiAgKi8KKy0JCQkJICAgIGNv bGxlY3QtPmFkZF9yZWdpc3RlciAobmR4MSAqIDggKyBuZHgyKTsKKy0JCQkJICB9CistCQkJICAg IH0KKy0JCQl9CistCQkgICAgfQorKwkJICBjb2xsZWN0LT5hZGRfYXhfcmVnaXN0ZXJzIChhZXhw ci5nZXQgKCkpOworIAorIAkJICBjb2xsZWN0LT5hZGRfYWV4cHIgKHN0ZDo6bW92ZSAoYWV4cHIp KTsKKyAJCSAgYWN0aW9uX2V4cCA9IHN0cmNociAoYWN0aW9uX2V4cCwgJywnKTsJLyogbW9yZT8g Ki8KK0BAIC0xMzQwLDcgKzEzODMsOCBAQCBlbmNvZGVfYWN0aW9uc18xIChzdHJ1Y3QgY29tbWFu ZF9saW5lICphY3Rpb24sCisgCQkJCQkgIG5hbWUpOworIAkJCWlmIChpbmZvX3ZlcmJvc2UpCisg CQkJICBwcmludGZfZmlsdGVyZWQgKCJPUF9SRUdJU1RFUjogIik7CistCQkJY29sbGVjdC0+YWRk X3JlZ2lzdGVyIChpKTsKKysJCQljb2xsZWN0LT5hZGRfbG9jYWxfcmVnaXN0ZXIgKHRhcmdldF9n ZGJhcmNoICgpLAorKwkJCQkJCSAgICAgaSwgdGxvYy0+YWRkcmVzcyk7CisgCQkJYnJlYWs7Cisg CQkgICAgICB9CisgCitAQCAtMTM1Miw3ICsxMzk2LDggQEAgZW5jb2RlX2FjdGlvbnNfMSAoc3Ry dWN0IGNvbW1hbmRfbGluZSAqYWN0aW9uLAorIAkJICAgICAgY2hlY2tfdHlwZWRlZiAoZXhwLT5l bHRzWzFdLnR5cGUpOworIAkJICAgICAgY29sbGVjdC0+YWRkX21lbXJhbmdlICh0YXJnZXRfZ2Ri YXJjaCAoKSwKKyAJCQkJCSAgICAgbWVtcmFuZ2VfYWJzb2x1dGUsIGFkZHIsCistCQkJCQkgICAg IFRZUEVfTEVOR1RIIChleHAtPmVsdHNbMV0udHlwZSkpOworKwkJCQkJICAgICBUWVBFX0xFTkdU SCAoZXhwLT5lbHRzWzFdLnR5cGUpLAorKwkJCQkJICAgICB0bG9jLT5hZGRyZXNzKTsKKyAJCSAg ICAgIGNvbGxlY3QtPmFwcGVuZF9leHAgKGV4cC5nZXQgKCkpOworIAkJICAgICAgYnJlYWs7Cisg CitAQCAtMTM3NiwyOCArMTQyMSwxMCBAQCBlbmNvZGVfYWN0aW9uc18xIChzdHJ1Y3QgY29tbWFu ZF9saW5lICphY3Rpb24sCisgCQkJCQkJCQlleHAuZ2V0ICgpLAorIAkJCQkJCQkJdHJhY2Vfc3Ry aW5nKTsKKyAKKy0JCSAgICAgIGF4X3JlcXMgKGFleHByLmdldCAoKSk7CistCistCQkgICAgICBy ZXBvcnRfYWdlbnRfcmVxc19lcnJvcnMgKGFleHByLmdldCAoKSk7CisrCQkgICAgICBmaW5hbGl6 ZV90cmFjZXBvaW50X2FleHByIChhZXhwci5nZXQgKCkpOworIAorIAkJICAgICAgLyogVGFrZSBj YXJlIG9mIHRoZSByZWdpc3RlcnMuICAqLworLQkJICAgICAgaWYgKGFleHByLT5yZWdfbWFza19s ZW4gPiAwKQorLQkJCXsKKy0JCQkgIGZvciAoaW50IG5keDEgPSAwOyBuZHgxIDwgYWV4cHItPnJl Z19tYXNrX2xlbjsgbmR4MSsrKQorLQkJCSAgICB7CistCQkJICAgICAgUVVJVDsJLyogQWxsb3cg dXNlciB0byBiYWlsIG91dCB3aXRoIF5DLiAgKi8KKy0JCQkgICAgICBpZiAoYWV4cHItPnJlZ19t YXNrW25keDFdICE9IDApCistCQkJCXsKKy0JCQkJICAvKiBBc3N1bWUgY2hhcnMgaGF2ZSA4IGJp dHMuICAqLworLQkJCQkgIGZvciAoaW50IG5keDIgPSAwOyBuZHgyIDwgODsgbmR4MisrKQorLQkJ CQkgICAgaWYgKGFleHByLT5yZWdfbWFza1tuZHgxXSAmICgxIDw8IG5keDIpKQorLQkJCQkgICAg ICB7CistCQkJCQkvKiBJdCdzIHVzZWQgLS0gcmVjb3JkIGl0LiAgKi8KKy0JCQkJCWNvbGxlY3Qt PmFkZF9yZWdpc3RlciAobmR4MSAqIDggKyBuZHgyKTsKKy0JCQkJICAgICAgfQorLQkJCQl9Cist CQkJICAgIH0KKy0JCQl9CisrCQkgICAgICBjb2xsZWN0LT5hZGRfYXhfcmVnaXN0ZXJzIChhZXhw ci5nZXQgKCkpOworIAorIAkJICAgICAgY29sbGVjdC0+YWRkX2FleHByIChzdGQ6Om1vdmUgKGFl eHByKSk7CisgCQkgICAgICBjb2xsZWN0LT5hcHBlbmRfZXhwIChleHAuZ2V0ICgpKTsKK0BAIC0x NDIyLDggKzE0NDksNyBAQCBlbmNvZGVfYWN0aW9uc18xIChzdHJ1Y3QgY29tbWFuZF9saW5lICph Y3Rpb24sCisgCQkgIGFnZW50X2V4cHJfdXAgYWV4cHIgPSBnZW5fZXZhbF9mb3JfZXhwciAodGxv Yy0+YWRkcmVzcywKKyAJCQkJCQkJICAgZXhwLmdldCAoKSk7CisgCistCQkgIGF4X3JlcXMgKGFl eHByLmdldCAoKSk7CistCQkgIHJlcG9ydF9hZ2VudF9yZXFzX2Vycm9ycyAoYWV4cHIuZ2V0ICgp KTsKKysJCSAgZmluYWxpemVfdHJhY2Vwb2ludF9hZXhwciAoYWV4cHIuZ2V0ICgpKTsKKyAKKyAJ CSAgLyogRXZlbiB0aG91Z2ggd2UncmUgbm90IG9mZmljaWFsbHkgY29sbGVjdGluZywgYWRkCisg CQkgICAgIHRvIHRoZSBjb2xsZWN0IGxpc3QgYW55d2F5LiAgKi8KK2RpZmYgLS1naXQgYS9nZGIv dHJhY2Vwb2ludC5oIGIvZ2RiL3RyYWNlcG9pbnQuaAorLS0tIGEvZ2RiL3RyYWNlcG9pbnQuaAor KysrIGIvZ2RiL3RyYWNlcG9pbnQuaAorQEAgLTI2Myw5ICsyNjMsMTQgQEAgcHVibGljOgorICAg dm9pZCBhZGRfYWV4cHIgKGFnZW50X2V4cHJfdXAgYWV4cHIpOworIAorICAgdm9pZCBhZGRfcmVn aXN0ZXIgKHVuc2lnbmVkIGludCByZWdubyk7CisrICB2b2lkIGFkZF9yZW1vdGVfcmVnaXN0ZXIg KHVuc2lnbmVkIGludCByZWdubyk7CisrICB2b2lkIGFkZF9heF9yZWdpc3RlcnMgKHN0cnVjdCBh Z2VudF9leHByICphZXhwcik7CisrICB2b2lkIGFkZF9sb2NhbF9yZWdpc3RlciAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCisrCQkJICAgdW5zaWduZWQgaW50IHJlZ25vLAorKwkJCSAgIENPUkVf QUREUiBzY29wZSk7CisgICB2b2lkIGFkZF9tZW1yYW5nZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCisgCQkgICAgIGludCB0eXBlLCBiZmRfc2lnbmVkX3ZtYSBiYXNlLAorLQkJICAgICBVTE9O R0VTVCBsZW4pOworKwkJICAgICBVTE9OR0VTVCBsZW4sIENPUkVfQUREUiBzY29wZSk7CisgICB2 b2lkIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3Qgc3ltYm9sICpzeW0sCisgCQkgICAgICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkgICAgICAgbG9uZyBmcmFtZV9yZWdubywgbG9uZyBmcmFt ZV9vZmZzZXQsCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTVvZjcu cGF0Y2ggYi9nZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtNW9mNy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWNhNTJmCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTVvZjcucGF0Y2gKQEAgLTAsMCArMSwyMTUgQEAKK0Zy b20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgOSBBdWcgMjAx OCAxNzoxNzo0NiArMDIwMAorU3ViamVjdDogZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTVv ZjcucGF0Y2gKKworOzsgQWRkIEdEQiBzdXBwb3J0IHRvIGFjY2Vzcy9kaXNwbGF5IFBPV0VSOCBy ZWdpc3RlcnMgKElCTSwgUkggQlogMTE4NzU4MSkuCisKK2NvbW1pdCBhMDRiOWQ2MmEyMzQ5MjM4 MjZlNDMxYTIwOWQzOTZhNjI4NjYxNTQ4CitBdXRob3I6IFBlZHJvIEZyYW5jbyBkZSBDYXJ2YWxo byA8cGVkcm9tZmNAbGludXguaWJtLmNvbT4KK0RhdGU6ICAgTW9uIEF1ZyA2IDE2OjI0OjU1IDIw MTggLTAzMDAKKworICAgIFZhcmlhYmxlIHNpemUgZm9yIHJlZ3MgbWFzayBpbiBjb2xsZWN0aW9u IGxpc3QKKworICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBjb2xsZWN0aW9uX2xpc3QgdG8gYWxsb3cg bGFyZ2VyIHJlZ2lzdGVyIG1hc2tzLgorCisgICAgVGhlIG1hc2sgaXMgY2hhbmdlZCBmcm9tIGFu IGFycmF5IHRvIGEgdmVjdG9yIGFuZCBpcyBpbml0aWFsaXplZCB0bworICAgIGhvbGQgdGhlIG1h eGltdW0gcG9zc2libGUgcmVtb3RlIHJlZ2lzdGVyIG51bWJlci4gIFRoZSBzdHJpbmdpZnkKKyAg ICBtZXRob2QgaXMgdXBkYXRlZCB0byByZXNpemUgdGVtcF9idWYgaWYgbmVlZGVkLgorCisgICAg Z2RiL0NoYW5nZUxvZzoKKyAgICAyMDE4LTA4LTA2ICBQZWRybyBGcmFuY28gZGUgQ2FydmFsaG8g IDxwZWRyb21mY0BsaW51eC5pYm0uY29tPgorCisgICAgICAgICAgICAqIHRyYWNlcG9pbnQuaCAo Y29sbGVjdGlvbl9saXN0KSA8bV9yZWdzX21hc2s+OiBDaGFuZ2UgdHlwZSB0bworICAgICAgICAg ICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgY2hhcj4uCisgICAgICAgICAgICAqIHRyYWNlcG9pbnQu YyAoY29sbGVjdGlvbl9saXN0Ojpjb2xsZWN0aW9uX2xpc3QpOiBSZW1vdmUKKyAgICAgICAgICAg IG1fcmVnc19tYXNrIGluaXRpYWxpemVyIGZyb20gaW5pdGlhbGl6ZXIgbGlzdC4gIFJlc2l6ZQor ICAgICAgICAgICAgbV9yZWdzX21hc2sgdXNpbmcgdGhlIGxhcmdlc3QgcmVtb3RlIHJlZ2lzdGVy IG51bWJlci4KKyAgICAgICAgICAgIChjb2xsZWN0aW9uX2xpc3Q6OmFkZF9yZW1vdGVfcmVnaXN0 ZXIpOiBSZW1vdmUgc2l6ZSBjaGVjayBvbgorICAgICAgICAgICAgbV9yZWdzX21hc2suICBVc2Ug YXQgdG8gYWNjZXNzIGVsZW1lbnQuCisgICAgICAgICAgICAoY29sbGVjdGlvbl9saXN0OjpzdHJp bmdpZnkpOiBDaGFuZ2UgdHlwZSBvZiB0ZW1wX2J1ZiB0bworICAgICAgICAgICAgZ2RiOjpjaGFy X3ZlY3Rvci4gIFVwZGF0ZSB1c2VzIG9mIHRlbXBfYnVmLiAgUmVzaXplIGlmIG5lZWRlZCB0bwor ICAgICAgICAgICAgc3RyaW5naWZ5IHRoZSByZWdpc3RlciBtYXNrLiAgVXNlIHBhY2tfaGV4X2J5 dGUgZm9yIHRoZSByZWdpc3RlcgorICAgICAgICAgICAgbWFzay4KKworKzIwMTgtMDgtMDYgIFBl ZHJvIEZyYW5jbyBkZSBDYXJ2YWxobyAgPHBlZHJvbWZjQGxpbnV4LmlibS5jb20+CisrCisrCSog dHJhY2Vwb2ludC5oIChjb2xsZWN0aW9uX2xpc3QpIDxtX3JlZ3NfbWFzaz46IENoYW5nZSB0eXBl IHRvCisrCXN0ZDo6dmVjdG9yPHVuc2lnbmVkIGNoYXI+LgorKwkqIHRyYWNlcG9pbnQuYyAoY29s bGVjdGlvbl9saXN0Ojpjb2xsZWN0aW9uX2xpc3QpOiBSZW1vdmUKKysJbV9yZWdzX21hc2sgaW5p dGlhbGl6ZXIgZnJvbSBpbml0aWFsaXplciBsaXN0LiAgUmVzaXplCisrCW1fcmVnc19tYXNrIHVz aW5nIHRoZSBsYXJnZXN0IHJlbW90ZSByZWdpc3RlciBudW1iZXIuCisrCShjb2xsZWN0aW9uX2xp c3Q6OmFkZF9yZW1vdGVfcmVnaXN0ZXIpOiBSZW1vdmUgc2l6ZSBjaGVjayBvbgorKwltX3JlZ3Nf bWFzay4gIFVzZSBhdCB0byBhY2Nlc3MgZWxlbWVudC4KKysJKGNvbGxlY3Rpb25fbGlzdDo6c3Ry aW5naWZ5KTogQ2hhbmdlIHR5cGUgb2YgdGVtcF9idWYgdG8KKysJZ2RiOjpjaGFyX3ZlY3Rvci4g IFVwZGF0ZSB1c2VzIG9mIHRlbXBfYnVmLiAgUmVzaXplIGlmIG5lZWRlZCB0bworKwlzdHJpbmdp ZnkgdGhlIHJlZ2lzdGVyIG1hc2suICBVc2UgcGFja19oZXhfYnl0ZSBmb3IgdGhlIHJlZ2lzdGVy CisrCW1hc2suCisrCisgMjAxOC0wOC0wNiAgUGVkcm8gRnJhbmNvIGRlIENhcnZhbGhvICA8cGVk cm9tZmNAbGludXguaWJtLmNvbT4KKworIAkqIHRyYWNlcG9pbnQuaCAoY2xhc3MgY29sbGVjdGlv bl9saXN0KSA8YWRkX3JlZ2lzdGVyPjogUmVtb3ZlLgorCitkaWZmIC0tZ2l0IGEvZ2RiL3RyYWNl cG9pbnQuYyBiL2dkYi90cmFjZXBvaW50LmMKKy0tLSBhL2dkYi90cmFjZXBvaW50LmMKKysrKyBi L2dkYi90cmFjZXBvaW50LmMKK0BAIC04MjIsMTAgKzgyMiw4IEBAIGNvbGxlY3Rpb25fbGlzdDo6 YWRkX3JlbW90ZV9yZWdpc3RlciAodW5zaWduZWQgaW50IHJlZ25vKQorIHsKKyAgIGlmIChpbmZv X3ZlcmJvc2UpCisgICAgIHByaW50Zl9maWx0ZXJlZCAoImNvbGxlY3QgcmVnaXN0ZXIgJWRcbiIs IHJlZ25vKTsKKy0gIGlmIChyZWdubyA+PSAoOCAqIHNpemVvZiAobV9yZWdzX21hc2spKSkKKy0g ICAgZXJyb3IgKF8oIkludGVybmFsOiByZWdpc3RlciBudW1iZXIgJWQgdG9vIGxhcmdlIGZvciB0 cmFjZXBvaW50IiksCistCSAgIHJlZ25vKTsKKy0gIG1fcmVnc19tYXNrW3JlZ25vIC8gOF0gfD0g MSA8PCAocmVnbm8gJSA4KTsKKysKKysgIG1fcmVnc19tYXNrLmF0IChyZWdubyAvIDgpIHw9IDEg PDwgKHJlZ25vICUgOCk7CisgfQorIAorIC8qIEFkZCBhbGwgdGhlIHJlZ2lzdGVycyBmcm9tIHRo ZSBtYXNrIGluIEFFWFBSIHRvIHRoZSBtYXNrIGluIHRoZQorQEAgLTExMzYsOSArMTEzNCwyMCBA QCBjb2xsZWN0aW9uX2xpc3Q6OmFkZF9zdGF0aWNfdHJhY2VfZGF0YSAoKQorIH0KKyAKKyBjb2xs ZWN0aW9uX2xpc3Q6OmNvbGxlY3Rpb25fbGlzdCAoKQorLSAgOiBtX3JlZ3NfbWFzayAoKSwKKy0g ICAgbV9zdHJhY2VfZGF0YSAoZmFsc2UpCisrICA6IG1fc3RyYWNlX2RhdGEgKGZhbHNlKQorIHsK KysgIGludCBtYXhfcmVtb3RlX3JlZ25vID0gMDsKKysgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2Ri YXJjaF9udW1fcmVncyAodGFyZ2V0X2dkYmFyY2ggKCkpOyBpKyspCisrICAgIHsKKysgICAgICBp bnQgcmVtb3RlX3JlZ25vID0gKGdkYmFyY2hfcmVtb3RlX3JlZ2lzdGVyX251bWJlcgorKwkJCSAg KHRhcmdldF9nZGJhcmNoICgpLCBpKSk7CisrCisrICAgICAgaWYgKHJlbW90ZV9yZWdubyA+PSAw ICYmIHJlbW90ZV9yZWdubyA+IG1heF9yZW1vdGVfcmVnbm8pCisrCW1heF9yZW1vdGVfcmVnbm8g PSByZW1vdGVfcmVnbm87CisrICAgIH0KKysKKysgIG1fcmVnc19tYXNrLnJlc2l6ZSAoKG1heF9y ZW1vdGVfcmVnbm8gLyA4KSArIDEpOworKworICAgbV9tZW1yYW5nZXMucmVzZXJ2ZSAoMTI4KTsK KyAgIG1fYWV4cHJzLnJlc2VydmUgKDEyOCk7CisgfQorQEAgLTExNDgsNyArMTE1Nyw4IEBAIGNv bGxlY3Rpb25fbGlzdDo6Y29sbGVjdGlvbl9saXN0ICgpCisgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp bmc+CisgY29sbGVjdGlvbl9saXN0OjpzdHJpbmdpZnkgKCkKKyB7CistICBjaGFyIHRlbXBfYnVm WzIwNDhdOworKyAgZ2RiOjpjaGFyX3ZlY3RvciB0ZW1wX2J1ZiAoMjA0OCk7CisrCisgICBpbnQg Y291bnQ7CisgICBjaGFyICplbmQ7CisgICBsb25nIGk7CitAQCAtMTE1OCwzNSArMTE2OCw0NSBA QCBjb2xsZWN0aW9uX2xpc3Q6OnN0cmluZ2lmeSAoKQorICAgICB7CisgICAgICAgaWYgKGluZm9f dmVyYm9zZSkKKyAJcHJpbnRmX2ZpbHRlcmVkICgiXG5Db2xsZWN0aW5nIHN0YXRpYyB0cmFjZSBk YXRhXG4iKTsKKy0gICAgICBlbmQgPSB0ZW1wX2J1ZjsKKysgICAgICBlbmQgPSB0ZW1wX2J1Zi5k YXRhICgpOworICAgICAgICplbmQrKyA9ICdMJzsKKy0gICAgICBzdHJfbGlzdC5lbXBsYWNlX2Jh Y2sgKHRlbXBfYnVmLCBlbmQgLSB0ZW1wX2J1Zik7CisrICAgICAgc3RyX2xpc3QuZW1wbGFjZV9i YWNrICh0ZW1wX2J1Zi5kYXRhICgpLCBlbmQgLSB0ZW1wX2J1Zi5kYXRhICgpKTsKKyAgICAgfQor IAorLSAgZm9yIChpID0gc2l6ZW9mIChtX3JlZ3NfbWFzaykgLSAxOyBpID4gMDsgaS0tKQorKyAg Zm9yIChpID0gbV9yZWdzX21hc2suc2l6ZSAoKSAtIDE7IGkgPiAwOyBpLS0pCisgICAgIGlmICht X3JlZ3NfbWFza1tpXSAhPSAwKSAgICAvKiBTa2lwIGxlYWRpbmcgemVyb2VzIGluIHJlZ3NfbWFz ay4gICovCisgICAgICAgYnJlYWs7CisgICBpZiAobV9yZWdzX21hc2tbaV0gIT0gMCkJLyogUHJl cGFyZSB0byBzZW5kIHJlZ3NfbWFzayB0byB0aGUgc3R1Yi4gICovCisgICAgIHsKKyAgICAgICBp ZiAoaW5mb192ZXJib3NlKQorIAlwcmludGZfZmlsdGVyZWQgKCJcbkNvbGxlY3RpbmcgcmVnaXN0 ZXJzIChtYXNrKTogMHgiKTsKKy0gICAgICBlbmQgPSB0ZW1wX2J1ZjsKKysKKysgICAgICAvKiBP bmUgY2hhciBmb3IgJ1InLCBvbmUgZm9yIHRoZSBudWxsIHRlcm1pbmF0b3IgYW5kIHR3byBwZXIK KysJIG1hc2sgYnl0ZS4gICovCisrICAgICAgc3RkOjpzaXplX3QgbmV3X3NpemUgPSAoaSArIDEp ICogMiArIDI7CisrICAgICAgaWYgKG5ld19zaXplID4gdGVtcF9idWYuc2l6ZSAoKSkKKysJdGVt cF9idWYucmVzaXplIChuZXdfc2l6ZSk7CisrCisrICAgICAgZW5kID0gdGVtcF9idWYuZGF0YSAo KTsKKyAgICAgICAqZW5kKysgPSAnUic7CisgICAgICAgZm9yICg7IGkgPj0gMDsgaS0tKQorIAl7 CisgCSAgUVVJVDsJCQkvKiBBbGxvdyB1c2VyIHRvIGJhaWwgb3V0IHdpdGggXkMuICAqLworIAkg IGlmIChpbmZvX3ZlcmJvc2UpCisgCSAgICBwcmludGZfZmlsdGVyZWQgKCIlMDJYIiwgbV9yZWdz X21hc2tbaV0pOworLQkgIHNwcmludGYgKGVuZCwgIiUwMlgiLCBtX3JlZ3NfbWFza1tpXSk7Cist CSAgZW5kICs9IDI7CisrCisrCSAgZW5kID0gcGFja19oZXhfYnl0ZSAoZW5kLCBtX3JlZ3NfbWFz a1tpXSk7CisgCX0KKy0gICAgICBzdHJfbGlzdC5lbXBsYWNlX2JhY2sgKHRlbXBfYnVmKTsKKysg ICAgICAqZW5kID0gJ1wwJzsKKysKKysgICAgICBzdHJfbGlzdC5lbXBsYWNlX2JhY2sgKHRlbXBf YnVmLmRhdGEgKCkpOworICAgICB9CisgICBpZiAoaW5mb192ZXJib3NlKQorICAgICBwcmludGZf ZmlsdGVyZWQgKCJcbiIpOworICAgaWYgKCFtX21lbXJhbmdlcy5lbXB0eSAoKSAmJiBpbmZvX3Zl cmJvc2UpCisgICAgIHByaW50Zl9maWx0ZXJlZCAoIkNvbGxlY3RpbmcgbWVtcmFuZ2VzOiBcbiIp OworLSAgZm9yIChpID0gMCwgY291bnQgPSAwLCBlbmQgPSB0ZW1wX2J1ZjsgaSA8IG1fbWVtcmFu Z2VzLnNpemUgKCk7IGkrKykKKysgIGZvciAoaSA9IDAsIGNvdW50ID0gMCwgZW5kID0gdGVtcF9i dWYuZGF0YSAoKTsKKysgICAgICAgaSA8IG1fbWVtcmFuZ2VzLnNpemUgKCk7IGkrKykKKyAgICAg eworICAgICAgIFFVSVQ7CQkJLyogQWxsb3cgdXNlciB0byBiYWlsIG91dCB3aXRoIF5DLiAgKi8K KyAgICAgICBpZiAoaW5mb192ZXJib3NlKQorQEAgLTEyMDAsOSArMTIyMCw5IEBAIGNvbGxlY3Rp b25fbGlzdDo6c3RyaW5naWZ5ICgpCisgCX0KKyAgICAgICBpZiAoY291bnQgKyAyNyA+IE1BWF9B R0VOVF9FWFBSX0xFTikKKyAJeworLQkgIHN0cl9saXN0LmVtcGxhY2VfYmFjayAodGVtcF9idWYs IGNvdW50KTsKKysJICBzdHJfbGlzdC5lbXBsYWNlX2JhY2sgKHRlbXBfYnVmLmRhdGEgKCksIGNv dW50KTsKKyAJICBjb3VudCA9IDA7CistCSAgZW5kID0gdGVtcF9idWY7CisrCSAgZW5kID0gdGVt cF9idWYuZGF0YSAoKTsKKyAJfQorIAorICAgICAgIHsKK0BAIC0xMjIyLDcgKzEyNDIsNyBAQCBj b2xsZWN0aW9uX2xpc3Q6OnN0cmluZ2lmeSAoKQorICAgICAgIH0KKyAKKyAgICAgICBjb3VudCAr PSBzdHJsZW4gKGVuZCk7CistICAgICAgZW5kID0gdGVtcF9idWYgKyBjb3VudDsKKysgICAgICBl bmQgPSB0ZW1wX2J1Zi5kYXRhICgpICsgY291bnQ7CisgICAgIH0KKyAKKyAgIGZvciAoaSA9IDA7 IGkgPCBtX2FleHBycy5zaXplICgpOyBpKyspCitAQCAtMTIzMCw5ICsxMjUwLDkgQEAgY29sbGVj dGlvbl9saXN0OjpzdHJpbmdpZnkgKCkKKyAgICAgICBRVUlUOwkJCS8qIEFsbG93IHVzZXIgdG8g YmFpbCBvdXQgd2l0aCBeQy4gICovCisgICAgICAgaWYgKChjb3VudCArIDEwICsgMiAqIG1fYWV4 cHJzW2ldLT5sZW4pID4gTUFYX0FHRU5UX0VYUFJfTEVOKQorIAl7CistCSAgc3RyX2xpc3QuZW1w bGFjZV9iYWNrICh0ZW1wX2J1ZiwgY291bnQpOworKwkgIHN0cl9saXN0LmVtcGxhY2VfYmFjayAo dGVtcF9idWYuZGF0YSAoKSwgY291bnQpOworIAkgIGNvdW50ID0gMDsKKy0JICBlbmQgPSB0ZW1w X2J1ZjsKKysJICBlbmQgPSB0ZW1wX2J1Zi5kYXRhICgpOworIAl9CisgICAgICAgc3ByaW50ZiAo ZW5kLCAiWCUwOFgsIiwgbV9hZXhwcnNbaV0tPmxlbik7CisgICAgICAgZW5kICs9IDEwOwkJLyog J1gnICsgOCBoZXggZGlnaXRzICsgJywnICovCitAQCAtMTI0NCw5ICsxMjY0LDkgQEAgY29sbGVj dGlvbl9saXN0OjpzdHJpbmdpZnkgKCkKKyAKKyAgIGlmIChjb3VudCAhPSAwKQorICAgICB7Cist ICAgICAgc3RyX2xpc3QuZW1wbGFjZV9iYWNrICh0ZW1wX2J1ZiwgY291bnQpOworKyAgICAgIHN0 cl9saXN0LmVtcGxhY2VfYmFjayAodGVtcF9idWYuZGF0YSAoKSwgY291bnQpOworICAgICAgIGNv dW50ID0gMDsKKy0gICAgICBlbmQgPSB0ZW1wX2J1ZjsKKysgICAgICBlbmQgPSB0ZW1wX2J1Zi5k YXRhICgpOworICAgICB9CisgCisgICByZXR1cm4gc3RyX2xpc3Q7CitkaWZmIC0tZ2l0IGEvZ2Ri L3RyYWNlcG9pbnQuaCBiL2dkYi90cmFjZXBvaW50LmgKKy0tLSBhL2dkYi90cmFjZXBvaW50LmgK KysrKyBiL2dkYi90cmFjZXBvaW50LmgKK0BAIC0yOTMsOCArMjkzLDkgQEAgcHVibGljOgorICAg eyByZXR1cm4gbV9jb21wdXRlZDsgfQorIAorIHByaXZhdGU6CistICAvKiByb29tIGZvciB1cCB0 byAyNTYgcmVncyAqLworLSAgdW5zaWduZWQgY2hhciBtX3JlZ3NfbWFza1szMl07CisrICAvKiBX ZSBuZWVkIHRoZSBhbGxvY2F0b3IgemVyby1pbml0aWFsaXplIHRoZSBtYXNrLCBzbyB3ZSBkb24n dCB1c2UKKysgICAgIGdkYjo6Ynl0ZV92ZWN0b3IuICAqLworKyAgc3RkOjp2ZWN0b3I8dW5zaWdu ZWQgY2hhcj4gbV9yZWdzX21hc2s7CisgCisgICBzdGQ6OnZlY3RvcjxtZW1yYW5nZT4gbV9tZW1y YW5nZXM7CisgCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTZvZjcu cGF0Y2ggYi9nZGItcmhiejExODc1ODEtcG93ZXI4LXJlZ3MtNm9mNy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGE1ZTFmCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTZvZjcucGF0Y2gKQEAgLTAsMCArMSwxODcgQEAKK0Zy b20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgOSBBdWcgMjAx OCAxNzoxODoxNSArMDIwMAorU3ViamVjdDogZ2RiLXJoYnoxMTg3NTgxLXBvd2VyOC1yZWdzLTZv ZjcucGF0Y2gKKworOzsgQWRkIEdEQiBzdXBwb3J0IHRvIGFjY2Vzcy9kaXNwbGF5IFBPV0VSOCBy ZWdpc3RlcnMgKElCTSwgUkggQlogMTE4NzU4MSkuCisKK2NvbW1pdCAyOTY5NTZiZWZlZjM3MTFl ZDQ1OGM3Y2JhODA0MWZkZTBkYWI5YzUwCitBdXRob3I6IFBlZHJvIEZyYW5jbyBkZSBDYXJ2YWxo byA8cGVkcm9tZmNAbGludXguaWJtLmNvbT4KK0RhdGU6ICAgTW9uIEF1ZyA2IDE2OjI0OjU1IDIw MTggLTAzMDAKKworICAgIEFsbG93IGxhcmdlciByZWdibG9jayBzaXplcyB3aGVuIHNhdmluZyB0 cmFjZWZpbGVzCisKKyAgICBUaGUgdHJhY2VmaWxlLmM6dHJhY2Vfc2F2ZSBmdW5jdGlvbiBhc3N1 bWVzIHRyYWNlX3JlZ2Jsb2NrX3NpemUgd29uJ3QKKyAgICBiZSBsYXJnZXIgdGhhbiB0aGUgTUFY X1RSQUNFX1VQTE9BRCBjb25zdGFudCwgdXNlZCB0byBzaXplIHRoZSBidWZmZXIKKyAgICB3aGlj aCBob2xkcyB0cmFjZSBkYXRhLiAgVGhpcyBjYW4gY2F1c2UgYnVmZmVyIG92ZXJydW5zIHdoZW4g dGhpcyBpcworICAgIG5vdCB0aGUgY2FzZS4gIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGlzIGZ1bmN0 aW9uIHNvIHRoYXQgdGhlIGxhcmdlcgorICAgIHNpemUgaXMgdXNlZCB0byBzaXplIHRoZSBidWZm ZXIuCisKKyAgICBnZGIvQ2hhbmdlTG9nOgorICAgIDIwMTgtMDgtMDYgIFBlZHJvIEZyYW5jbyBk ZSBDYXJ2YWxobyAgPHBlZHJvbWZjQGxpbnV4LmlibS5jb20+CisKKyAgICAgICAgICAgICogdHJh Y2VmaWxlLmM6IEluY2x1ZGUgY29tbW9uL2J5dGUtdmVjdG9yLmguCisgICAgICAgICAgICAodHJh Y2Vfc2F2ZSk6IENoYW5nZSB0eXBlIG9mIGJ1ZiB0byBnZGI6OmJ5dGVfdmVjdG9yLiAgSW5pdGlh bGl6ZQorICAgICAgICAgICAgd2l0aCB0cmFjZV9yZWdibG9ja19zaXplIGlmIG5lZWRlZC4gIFVw ZGF0ZSB1c2VzIG9mIGJ1Zi4KKworKzIwMTgtMDgtMDYgIFBlZHJvIEZyYW5jbyBkZSBDYXJ2YWxo byAgPHBlZHJvbWZjQGxpbnV4LmlibS5jb20+CisrCisrCSogdHJhY2VmaWxlLmM6IEluY2x1ZGUg Y29tbW9uL2J5dGUtdmVjdG9yLmguCisrCSh0cmFjZV9zYXZlKTogQ2hhbmdlIHR5cGUgb2YgYnVm IHRvIGdkYjo6Ynl0ZV92ZWN0b3IuICBJbml0aWFsaXplCisrCXdpdGggdHJhY2VfcmVnYmxvY2tf c2l6ZSBpZiBuZWVkZWQuICBVcGRhdGUgdXNlcyBvZiBidWYuCisrCisgMjAxOC0wOC0wNiAgUGVk cm8gRnJhbmNvIGRlIENhcnZhbGhvICA8cGVkcm9tZmNAbGludXguaWJtLmNvbT4KKworIAkqIHRy YWNlcG9pbnQuaCAoY29sbGVjdGlvbl9saXN0KSA8bV9yZWdzX21hc2s+OiBDaGFuZ2UgdHlwZSB0 bworCitkaWZmIC0tZ2l0IGEvZ2RiL3RyYWNlZmlsZS5jIGIvZ2RiL3RyYWNlZmlsZS5jCistLS0g YS9nZGIvdHJhY2VmaWxlLmMKKysrKyBiL2dkYi90cmFjZWZpbGUuYworQEAgLTIyLDYgKzIyLDcg QEAKKyAjaW5jbHVkZSAiY3RmLmgiCisgI2luY2x1ZGUgImV4ZWMuaCIKKyAjaW5jbHVkZSAicmVn Y2FjaGUuaCIKKysjaW5jbHVkZSAiY29tbW9uL2J5dGUtdmVjdG9yLmgiCisgCisgLyogSGVscGVy IG1hY3Jvcy4gICovCisgCitAQCAtNjcsNyArNjgsNyBAQCB0cmFjZV9zYXZlIChjb25zdCBjaGFy ICpmaWxlbmFtZSwgc3RydWN0IHRyYWNlX2ZpbGVfd3JpdGVyICp3cml0ZXIsCisgCisgICBVTE9O R0VTVCBvZmZzZXQgPSAwOworICNkZWZpbmUgTUFYX1RSQUNFX1VQTE9BRCAyMDAwCistICBnZGJf Ynl0ZSBidWZbTUFYX1RSQUNFX1VQTE9BRF07CisrICBnZGI6OmJ5dGVfdmVjdG9yIGJ1ZiAoc3Rk OjptYXggKE1BWF9UUkFDRV9VUExPQUQsIHRyYWNlX3JlZ2Jsb2NrX3NpemUpKTsKKyAgIGVudW0g YmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyICh0YXJnZXRfZ2RiYXJj aCAoKSk7CisgCisgICAvKiBJZiB0aGUgdGFyZ2V0IGlzIHRvIHNhdmUgdGhlIGRhdGEgdG8gYSBm aWxlIG9uIGl0cyBvd24sIHRoZW4ganVzdAorQEAgLTE0NCw3ICsxNDUsNyBAQCB0cmFjZV9zYXZl IChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IHRyYWNlX2ZpbGVfd3JpdGVyICp3cml0ZXIs CisgCSAgLyogV2UgYXNrIGZvciBiaWcgYmxvY2tzLCBpbiB0aGUgaG9wZXMgb2YgZWZmaWNpZW5j eSwgYnV0CisgCSAgICAgd2lsbCB0YWtlIGxlc3MgaWYgdGhlIHRhcmdldCBoYXMgcGFja2V0IHNp emUgbGltaXRhdGlvbnMKKyAJICAgICBvciBzb21lIHN1Y2guICAqLworLQkgIGdvdHRlbiA9IHRh cmdldF9nZXRfcmF3X3RyYWNlX2RhdGEgKGJ1Ziwgb2Zmc2V0LAorKwkgIGdvdHRlbiA9IHRhcmdl dF9nZXRfcmF3X3RyYWNlX2RhdGEgKGJ1Zi5kYXRhICgpLCBvZmZzZXQsCisgCQkJCQkgICAgICBN QVhfVFJBQ0VfVVBMT0FEKTsKKyAJICBpZiAoZ290dGVuIDwgMCkKKyAJICAgIGVycm9yIChfKCJG YWlsdXJlIHRvIGdldCByZXF1ZXN0ZWQgdHJhY2UgYnVmZmVyIGRhdGEiKSk7CitAQCAtMTUyLDcg KzE1Myw3IEBAIHRyYWNlX3NhdmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgdHJhY2Vf ZmlsZV93cml0ZXIgKndyaXRlciwKKyAJICBpZiAoZ290dGVuID09IDApCisgCSAgICBicmVhazsK KyAKKy0JICB3cml0ZXItPm9wcy0+d3JpdGVfdHJhY2VfYnVmZmVyICh3cml0ZXIsIGJ1ZiwgZ290 dGVuKTsKKysJICB3cml0ZXItPm9wcy0+d3JpdGVfdHJhY2VfYnVmZmVyICh3cml0ZXIsIGJ1Zi5k YXRhICgpLCBnb3R0ZW4pOworIAorIAkgIG9mZnNldCArPSBnb3R0ZW47CisgCX0KK0BAIC0xNjMs NyArMTY0LDcgQEAgdHJhY2Vfc2F2ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCB0cmFj ZV9maWxlX3dyaXRlciAqd3JpdGVyLAorIAkgIC8qIFBhcnNlIHRoZSB0cmFjZSBidWZmZXJzIGFj Y29yZGluZyB0byBob3cgZGF0YSBhcmUgc3RvcmVkCisgCSAgICAgaW4gdHJhY2UgYnVmZmVyIGlu IEdEQnNlcnZlci4gICovCisgCistCSAgZ290dGVuID0gdGFyZ2V0X2dldF9yYXdfdHJhY2VfZGF0 YSAoYnVmLCBvZmZzZXQsIDYpOworKwkgIGdvdHRlbiA9IHRhcmdldF9nZXRfcmF3X3RyYWNlX2Rh dGEgKGJ1Zi5kYXRhICgpLCBvZmZzZXQsIDYpOworIAorIAkgIGlmIChnb3R0ZW4gPT0gMCkKKyAJ ICAgIGJyZWFrOworQEAgLTE3MSwxMCArMTcyLDEwIEBAIHRyYWNlX3NhdmUgKGNvbnN0IGNoYXIg KmZpbGVuYW1lLCBzdHJ1Y3QgdHJhY2VfZmlsZV93cml0ZXIgKndyaXRlciwKKyAJICAvKiBSZWFk IHRoZSBmaXJzdCBzaXggYnl0ZXMgaW4sIHdoaWNoIGlzIHRoZSB0cmFjZXBvaW50CisgCSAgICAg bnVtYmVyIGFuZCB0cmFjZSBmcmFtZSBzaXplLiAgKi8KKyAJICB0cF9udW0gPSAodWludDE2X3Qp CistCSAgICBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKCZidWZbMF0sIDIsIGJ5dGVfb3JkZXIp OworKwkgICAgZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyICgmKChidWYuZGF0YSAoKSlbMF0pLCAy LCBieXRlX29yZGVyKTsKKyAKKyAJICB0Zl9zaXplID0gKHVpbnQzMl90KQorLQkgICAgZXh0cmFj dF91bnNpZ25lZF9pbnRlZ2VyICgmYnVmWzJdLCA0LCBieXRlX29yZGVyKTsKKysJICAgIGV4dHJh Y3RfdW5zaWduZWRfaW50ZWdlciAoJigoYnVmLmRhdGEgKCkpWzJdKSwgNCwgYnl0ZV9vcmRlcik7 CisgCisgCSAgd3JpdGVyLT5vcHMtPmZyYW1lX29wcy0+c3RhcnQgKHdyaXRlciwgdHBfbnVtKTsK KyAJICBnb3R0ZW4gPSA2OworQEAgLTE5Miw3ICsxOTMsOCBAQCB0cmFjZV9zYXZlIChjb25zdCBj aGFyICpmaWxlbmFtZSwgc3RydWN0IHRyYWNlX2ZpbGVfd3JpdGVyICp3cml0ZXIsCisgCQkgIC8q IFdlJ2xsIGZldGNoIG9uZSBibG9jayBlYWNoIHRpbWUsIGluIG9yZGVyIHRvCisgCQkgICAgIGhh bmRsZSB0aGUgZXh0cmVtZWx5IGxhcmdlICdNJyBibG9jay4gIFdlIGZpcnN0CisgCQkgICAgIGZl dGNoIG9uZSBieXRlIHRvIGdldCB0aGUgdHlwZSBvZiB0aGUgYmxvY2suICAqLworLQkJICBnb3R0 ZW4gPSB0YXJnZXRfZ2V0X3Jhd190cmFjZV9kYXRhIChidWYsIG9mZnNldCwgMSk7CisrCQkgIGdv dHRlbiA9IHRhcmdldF9nZXRfcmF3X3RyYWNlX2RhdGEgKGJ1Zi5kYXRhICgpLAorKwkJCQkJCSAg ICAgIG9mZnNldCwgMSk7CisgCQkgIGlmIChnb3R0ZW4gPCAxKQorIAkJICAgIGVycm9yIChfKCJG YWlsdXJlIHRvIGdldCByZXF1ZXN0ZWQgdHJhY2UgYnVmZmVyIGRhdGEiKSk7CisgCitAQCAtMjA1 LDEzICsyMDcsMTMgQEAgdHJhY2Vfc2F2ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCB0 cmFjZV9maWxlX3dyaXRlciAqd3JpdGVyLAorIAkJICAgIHsKKyAJCSAgICBjYXNlICdSJzoKKyAJ CSAgICAgIGdvdHRlbgorLQkJCT0gdGFyZ2V0X2dldF9yYXdfdHJhY2VfZGF0YSAoYnVmLCBvZmZz ZXQsCisrCQkJPSB0YXJnZXRfZ2V0X3Jhd190cmFjZV9kYXRhIChidWYuZGF0YSAoKSwgb2Zmc2V0 LAorIAkJCQkJCSAgICAgdHJhY2VfcmVnYmxvY2tfc2l6ZSk7CisgCQkgICAgICBpZiAoZ290dGVu IDwgdHJhY2VfcmVnYmxvY2tfc2l6ZSkKKyAJCQllcnJvciAoXygiRmFpbHVyZSB0byBnZXQgcmVx dWVzdGVkIHRyYWNlIgorIAkJCQkgIiBidWZmZXIgZGF0YSIpKTsKKyAKKy0JCSAgICAgIFRSQUNF X1dSSVRFX1JfQkxPQ0sgKHdyaXRlciwgYnVmLAorKwkJICAgICAgVFJBQ0VfV1JJVEVfUl9CTE9D SyAod3JpdGVyLCBidWYuZGF0YSAoKSwKKyAJCQkJCSAgIHRyYWNlX3JlZ2Jsb2NrX3NpemUpOwor IAkJICAgICAgYnJlYWs7CisgCQkgICAgY2FzZSAnTSc6CitAQCAtMjIxLDcgKzIyMyw4IEBAIHRy YWNlX3NhdmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgdHJhY2VfZmlsZV93cml0ZXIg KndyaXRlciwKKyAJCQlMT05HRVNUIHQ7CisgCQkJaW50IGo7CisgCistCQkJdCA9IHRhcmdldF9n ZXRfcmF3X3RyYWNlX2RhdGEgKGJ1ZixvZmZzZXQsIDEwKTsKKysJCQl0ID0gdGFyZ2V0X2dldF9y YXdfdHJhY2VfZGF0YSAoYnVmLmRhdGEgKCksCisrCQkJCQkJICAgICAgIG9mZnNldCwgMTApOwor IAkJCWlmICh0IDwgMTApCisgCQkJICBlcnJvciAoXygiRmFpbHVyZSB0byBnZXQgcmVxdWVzdGVk IHRyYWNlIgorIAkJCQkgICAiIGJ1ZmZlciBkYXRhIikpOworQEAgLTIzMSwxMCArMjM0LDEwIEBA IHRyYWNlX3NhdmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgdHJhY2VfZmlsZV93cml0 ZXIgKndyaXRlciwKKyAKKyAJCQlnb3R0ZW4gPSAwOworIAkJCWFkZHIgPSAoVUxPTkdFU1QpCist CQkJICBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgOCwKKysJCQkgIGV4dHJhY3RfdW5z aWduZWRfaW50ZWdlciAoYnVmLmRhdGEgKCksIDgsCisgCQkJCQkJICAgIGJ5dGVfb3JkZXIpOwor IAkJCW1sZW4gPSAodW5zaWduZWQgc2hvcnQpCistCQkJICBleHRyYWN0X3Vuc2lnbmVkX2ludGVn ZXIgKCZidWZbOF0sIDIsCisrCQkJICBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKCYoKGJ1Zi5k YXRhICgpKVs4XSksIDIsCisgCQkJCQkJICAgIGJ5dGVfb3JkZXIpOworIAorIAkJCVRSQUNFX1dS SVRFX01fQkxPQ0tfSEVBREVSICh3cml0ZXIsIGFkZHIsCitAQCAtMjUyLDE0ICsyNTUsMTUgQEAg dHJhY2Vfc2F2ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCB0cmFjZV9maWxlX3dyaXRl ciAqd3JpdGVyLAorIAkJCSAgICBlbHNlCisgCQkJICAgICAgcmVhZF9sZW5ndGggPSBtbGVuIC0g ajsKKyAKKy0JCQkgICAgdCA9IHRhcmdldF9nZXRfcmF3X3RyYWNlX2RhdGEgKGJ1ZiwKKysJCQkg ICAgdCA9IHRhcmdldF9nZXRfcmF3X3RyYWNlX2RhdGEgKGJ1Zi5kYXRhICgpLAorIAkJCQkJCQkg ICBvZmZzZXQgKyBqLAorIAkJCQkJCQkgICByZWFkX2xlbmd0aCk7CisgCQkJICAgIGlmICh0IDwg cmVhZF9sZW5ndGgpCisgCQkJICAgICAgZXJyb3IgKF8oIkZhaWx1cmUgdG8gZ2V0IHJlcXVlc3Rl ZCIKKyAJCQkJICAgICAgICIgdHJhY2UgYnVmZmVyIGRhdGEiKSk7CisgCistCQkJICAgIFRSQUNF X1dSSVRFX01fQkxPQ0tfTUVNT1JZICh3cml0ZXIsIGJ1ZiwKKysJCQkgICAgVFJBQ0VfV1JJVEVf TV9CTE9DS19NRU1PUlkgKHdyaXRlciwKKysJCQkJCQkJYnVmLmRhdGEgKCksCisgCQkJCQkJCXJl YWRfbGVuZ3RoKTsKKyAKKyAJCQkgICAgaiArPSByZWFkX2xlbmd0aDsKK0BAIC0yNzQsMTggKzI3 OCwxOCBAQCB0cmFjZV9zYXZlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IHRyYWNlX2Zp bGVfd3JpdGVyICp3cml0ZXIsCisgCQkJTE9OR0VTVCB2YWw7CisgCisgCQkJZ290dGVuCistCQkJ ICA9IHRhcmdldF9nZXRfcmF3X3RyYWNlX2RhdGEgKGJ1Ziwgb2Zmc2V0LAorLQkJCQkJCSAgICAg ICAxMik7CisrCQkJICA9IHRhcmdldF9nZXRfcmF3X3RyYWNlX2RhdGEgKGJ1Zi5kYXRhICgpLAor KwkJCQkJCSAgICAgICBvZmZzZXQsIDEyKTsKKyAJCQlpZiAoZ290dGVuIDwgMTIpCisgCQkJICBl cnJvciAoXygiRmFpbHVyZSB0byBnZXQgcmVxdWVzdGVkIgorIAkJCQkgICAiIHRyYWNlIGJ1ZmZl ciBkYXRhIikpOworIAorLQkJCXZudW0gID0gKGludCkgZXh0cmFjdF9zaWduZWRfaW50ZWdlciAo YnVmLAorKwkJCXZudW0gID0gKGludCkgZXh0cmFjdF9zaWduZWRfaW50ZWdlciAoYnVmLmRhdGEg KCksCisgCQkJCQkJCSAgICAgIDQsCisgCQkJCQkJCSAgICAgIGJ5dGVfb3JkZXIpOworIAkJCXZh bAorLQkJCSAgPSBleHRyYWN0X3NpZ25lZF9pbnRlZ2VyICgmYnVmWzRdLCA4LAorLQkJCQkJCSAg ICBieXRlX29yZGVyKTsKKysJCQkgID0gZXh0cmFjdF9zaWduZWRfaW50ZWdlciAoJigoYnVmLmRh dGEgKCkpWzRdKSwKKysJCQkJCQkgICAgOCwgYnl0ZV9vcmRlcik7CisgCisgCQkJVFJBQ0VfV1JJ VEVfVl9CTE9DSyAod3JpdGVyLCB2bnVtLCB2YWwpOworIAkJICAgICAgfQoKZGlmZiAtLWdpdCBh L2dkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy03b2Y3LnBhdGNoIGIvZ2RiLXJoYnoxMTg3NTgx LXBvd2VyOC1yZWdzLTdvZjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZWU4MjY3MwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVn cy03b2Y3LnBhdGNoCkBAIC0wLDAgKzEsMTI5IEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDkgQXVnIDIwMTggMTc6MTg6NDkgKzAyMDAKK1N1Ympl Y3Q6IGdkYi1yaGJ6MTE4NzU4MS1wb3dlcjgtcmVncy03b2Y3LnBhdGNoCisKKzs7IEFkZCBHREIg c3VwcG9ydCB0byBhY2Nlc3MvZGlzcGxheSBQT1dFUjggcmVnaXN0ZXJzIChJQk0sIFJIIEJaIDEx ODc1ODEpLgorCitjb21taXQgYTdmMjVhODRmNGNjMWRmNTI0OGM0NjM0NjMzN2YxOWEyYTY2YWY1 YQorQXV0aG9yOiBTaW1vbiBNYXJjaGkgPHNpbW9uLm1hcmNoaUBlcmljc3Nvbi5jb20+CitEYXRl OiAgIE1vbiBBdWcgNiAxNjo1NDo0NyAyMDE4IC0wNDAwCisKKyAgICBGaXggY29tcGlsYXRpb24g ZmFpbHVyZSBpbiByZW1vdGUuYworCisgICAgQSByZWNlbnQgcGF0Y2ggaW50cm9kdWNlZCBhIGZl dyBvZiB0aGVzZToKKworICAgIC9ob21lL2VtYWlzaW4vc3JjL2JpbnV0aWxzLWdkYi9nZGIvcmVt b3RlLmM6MTI4NjI6MTk6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5v IGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorICAgICAgICAgZXJy b3IgKGVycl9tc2cpOworICAgICAgICAgICAgICAgICAgICAgICBeCisKKyAgICBGaXggdGhlbSBi eSByZXBsYWNpbmcgdGhlIGNhbGwgdG8gZXJyb3Igd2l0aAorCisgICAgICBlcnJvciAoIiVzIiwg ZXJyX21zZyk7CisKKyAgICBnZGIvQ2hhbmdlTG9nOgorCisgICAgICAgICAgICAqIHJlbW90ZS5j IChyZW1vdGVfdGFyZ2V0Ojpkb3dubG9hZF90cmFjZXBvaW50KTogRml4IGZvcm1hdAorICAgICAg ICAgICAgc3RyaW5nIGVycm9ycy4KKworKzIwMTgtMDgtMDYgIFNpbW9uIE1hcmNoaSAgPHNpbW9u Lm1hcmNoaUBlcmljc3Nvbi5jb20+CisrCisrCSogcmVtb3RlLmMgKHJlbW90ZV90YXJnZXQ6OmRv d25sb2FkX3RyYWNlcG9pbnQpOiBGaXggZm9ybWF0CisrCXN0cmluZyBlcnJvcnMuCisrCisgMjAx OC0wOC0wNiAgUGVkcm8gRnJhbmNvIGRlIENhcnZhbGhvICA8cGVkcm9tZmNAbGludXguaWJtLmNv bT4KKworIAkqIHRyYWNlZmlsZS5jOiBJbmNsdWRlIGNvbW1vbi9ieXRlLXZlY3Rvci5oLgorCitk aWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS5jIGIvZ2RiL3JlbW90ZS5jCistLS0gYS9nZGIvcmVtb3Rl LmMKKysrKyBiL2dkYi9yZW1vdGUuYworQEAgLTEyODI2LDcgKzEyODI2LDcgQEAgcmVtb3RlX3Rh cmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCisgCQkg IHQtPnN0ZXBfY291bnQsIHQtPnBhc3NfY291bnQpOworIAorICAgaWYgKHJldCA8IDAgfHwgcmV0 ID49IGJ1Zi5zaXplICgpKQorLSAgICBlcnJvciAoZXJyX21zZyk7CisrICAgIGVycm9yICgiJXMi LCBlcnJfbXNnKTsKKyAKKyAgIC8qIEZhc3QgdHJhY2Vwb2ludHMgYXJlIG1vc3RseSBoYW5kbGVk IGJ5IHRoZSB0YXJnZXQsIGJ1dCB3ZSBjYW4KKyAgICAgIHRlbGwgdGhlIHRhcmdldCBob3cgYmln IG9mIGFuIGluc3RydWN0aW9uIGJsb2NrIHNob3VsZCBiZSBtb3ZlZAorQEAgLTEyODQ2LDcgKzEy ODQ2LDcgQEAgcmVtb3RlX3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCAoc3RydWN0IGJwX2xv Y2F0aW9uICpsb2MpCisgCQkJICAgICAgZ2RiX2luc25fbGVuZ3RoIChsb2MtPmdkYmFyY2gsIHRw YWRkcikpOworIAorIAkgICAgICBpZiAocmV0IDwgMCB8fCByZXQgPj0gc2l6ZV9sZWZ0KQorLQkJ ZXJyb3IgKGVycl9tc2cpOworKwkJZXJyb3IgKCIlcyIsIGVycl9tc2cpOworIAkgICAgfQorIAkg IGVsc2UKKyAJICAgIC8qIElmIGl0IHBhc3NlZCB2YWxpZGF0aW9uIGF0IGRlZmluaXRpb24gYnV0 IGZhaWxzIG5vdywKK0BAIC0xMjg3Nyw3ICsxMjg3Nyw3IEBAIHJlbW90ZV90YXJnZXQ6OmRvd25s b2FkX3RyYWNlcG9pbnQgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQorIAkJCSAgICAgIHNpemVf bGVmdCwgIjpTIik7CisgCisgCSAgICAgIGlmIChyZXQgPCAwIHx8IHJldCA+PSBzaXplX2xlZnQp CistCQllcnJvciAoZXJyX21zZyk7CisrCQllcnJvciAoIiVzIiwgZXJyX21zZyk7CisgCSAgICB9 CisgCSAgZWxzZQorIAkgICAgZXJyb3IgKF8oIlN0YXRpYyB0cmFjZXBvaW50IG5vdCB2YWxpZCBk dXJpbmcgZG93bmxvYWQiKSk7CitAQCAtMTI5MDUsMTQgKzEyOTA1LDE0IEBAIHJlbW90ZV90YXJn ZXQ6OmRvd25sb2FkX3RyYWNlcG9pbnQgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQorIAkJCSAg c2l6ZV9sZWZ0LCAiOlgleCwiLCBhZXhwci0+bGVuKTsKKyAKKyAJICBpZiAocmV0IDwgMCB8fCBy ZXQgPj0gc2l6ZV9sZWZ0KQorLQkgICAgZXJyb3IgKGVycl9tc2cpOworKwkgICAgZXJyb3IgKCIl cyIsIGVycl9tc2cpOworIAorIAkgIHNpemVfbGVmdCA9IGJ1Zi5zaXplICgpIC0gc3RybGVuIChi dWYuZGF0YSAoKSk7CisgCisgCSAgLyogVHdvIGJ5dGVzIHRvIGVuY29kZSBlYWNoIGFleHByIGJ5 dGUsIHBsdXMgdGhlIHRlcm1pbmF0aW5nCisgCSAgICAgbnVsbCBieXRlLiAgKi8KKyAJICBpZiAo YWV4cHItPmxlbiAqIDIgKyAxID4gc2l6ZV9sZWZ0KQorLQkgICAgZXJyb3IgKGVycl9tc2cpOwor KwkgICAgZXJyb3IgKCIlcyIsIGVycl9tc2cpOworIAorIAkgIHBrdCA9IGJ1Zi5kYXRhICgpICsg c3RybGVuIChidWYuZGF0YSAoKSk7CisgCitAQCAtMTI5MzMsNyArMTI5MzMsNyBAQCByZW1vdGVf dGFyZ2V0Ojpkb3dubG9hZF90cmFjZXBvaW50IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKKyAJ CSAgICAgIHNpemVfbGVmdCwgIi0iKTsKKyAKKyAgICAgICBpZiAocmV0IDwgMCB8fCByZXQgPj0g c2l6ZV9sZWZ0KQorLQllcnJvciAoZXJyX21zZyk7CisrCWVycm9yICgiJXMiLCBlcnJfbXNnKTsK KyAgICAgfQorIAorICAgcHV0cGt0IChidWYuZGF0YSAoKSk7CitAQCAtMTI5NTYsNyArMTI5NTYs NyBAQCByZW1vdGVfdGFyZ2V0Ojpkb3dubG9hZF90cmFjZXBvaW50IChzdHJ1Y3QgYnBfbG9jYXRp b24gKmxvYykKKyAJCSAgICAgIGhhc19tb3JlID8gJy0nIDogMCk7CisgCisgICAgICAgaWYgKHJl dCA8IDAgfHwgcmV0ID49IGJ1Zi5zaXplICgpKQorLQllcnJvciAoZXJyX21zZyk7CisrCWVycm9y ICgiJXMiLCBlcnJfbXNnKTsKKyAKKyAgICAgICBwdXRwa3QgKGJ1Zi5kYXRhICgpKTsKKyAgICAg ICByZW1vdGVfZ2V0X25vaXN5X3JlcGx5ICgpOworQEAgLTEyOTc5LDcgKzEyOTc5LDcgQEAgcmVt b3RlX3RhcmdldDo6ZG93bmxvYWRfdHJhY2Vwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2Mp CisgCQkgICAgICBoYXNfbW9yZSA/ICItIiA6ICIiKTsKKyAKKyAgICAgICBpZiAocmV0IDwgMCB8 fCByZXQgPj0gYnVmLnNpemUgKCkpCistCWVycm9yIChlcnJfbXNnKTsKKysJZXJyb3IgKCIlcyIs IGVycl9tc2cpOworIAorICAgICAgIHB1dHBrdCAoYnVmLmRhdGEgKCkpOworICAgICAgIHJlbW90 ZV9nZXRfbm9pc3lfcmVwbHkgKCk7CitAQCAtMTI5OTQsNyArMTI5OTQsNyBAQCByZW1vdGVfdGFy Z2V0Ojpkb3dubG9hZF90cmFjZXBvaW50IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKKyAJICBy ZXQgPSBzbnByaW50ZiAoYnVmLmRhdGEgKCksIGJ1Zi5zaXplICgpLCAiUVREUHNyYzoiKTsKKyAK KyAJICBpZiAocmV0IDwgMCB8fCByZXQgPj0gYnVmLnNpemUgKCkpCistCSAgICBlcnJvciAoZXJy X21zZyk7CisrCSAgICBlcnJvciAoIiVzIiwgZXJyX21zZyk7CisgCisgCSAgZW5jb2RlX3NvdXJj ZV9zdHJpbmcgKGItPm51bWJlciwgbG9jLT5hZGRyZXNzLCAiYXQiLAorIAkJCQlldmVudF9sb2Nh dGlvbl90b19zdHJpbmcgKGItPmxvY2F0aW9uLmdldCAoKSksCitAQCAtMTMwMTAsNyArMTMwMTAs NyBAQCByZW1vdGVfdGFyZ2V0Ojpkb3dubG9hZF90cmFjZXBvaW50IChzdHJ1Y3QgYnBfbG9jYXRp b24gKmxvYykKKyAJICByZXQgPSBzbnByaW50ZiAoYnVmLmRhdGEgKCksIGJ1Zi5zaXplICgpLCAi UVREUHNyYzoiKTsKKyAKKyAJICBpZiAocmV0IDwgMCB8fCByZXQgPj0gYnVmLnNpemUgKCkpCist CSAgICBlcnJvciAoZXJyX21zZyk7CisrCSAgICBlcnJvciAoIiVzIiwgZXJyX21zZyk7CisgCisg CSAgZW5jb2RlX3NvdXJjZV9zdHJpbmcgKGItPm51bWJlciwgbG9jLT5hZGRyZXNzLAorIAkJCQki Y29uZCIsIGItPmNvbmRfc3RyaW5nLAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMK aW5kZXggNDI3MWNmZi4uODA5YWVhZSAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNw ZWMKQEAgLTI2LDcgKzI2LDcgQEAgVmVyc2lvbjogOC4xLjkwLiV7c25hcHNyY30KIAogIyBUaGUg cmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQg aXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1 bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNl OiA0MyV7P2Rpc3R9CitSZWxlYXNlOiA0NCV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQg R1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRp b25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBMR1BMdjMrIGFuZCBCU0QgYW5kIFB1YmxpYyBE b21haW4gYW5kIEdGREwKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTEwMjIsNiAr MTAyMiw5IEBAIGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBUaHUgQXVnICA5IDIwMTggSmFu IEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gOC4xLjkwLjIwMTgwNzI3 LTQ0LmZjMjkKKy0gQWRkIEdEQiBzdXBwb3J0IHRvIGFjY2Vzcy9kaXNwbGF5IFBPV0VSOCByZWdp c3RlcnMgKElCTSwgUkggQlogMTE4NzU4MSkuCisKICogVGh1IEF1ZyAgOSAyMDE4IFNlcmdpbyBE dXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4gLSA4LjEuOTAuMjAxODA3MjctNDMu ZmMyOQogLSBSZWVuYWJsZSBsaWJpcHQuCiAK