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: Fix in "set auto-load" patchset for SCL scripts inheritance (BZ 815910). Date: Thu, 23 Jul 2026 18:30:26 GMT Message-ID: <178483142609.1.15577286803455286373.rpms-gdb-de3a5927681a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: de3a5927681ab559eafc274cbeb0a214a1dd7bfc QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogZGUzYTU5Mjc2ODFhYjU1OWVhZmMyNzRjYmViMGEyMTRh MWRkN2JmYwpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMi0wNS0wOVQyMjozOToyNSswMjowMApTdGF0cyAgOiArNjM3OS8tNTU5 NyBpbiA0MSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvZ2RiL2MvZGUzYTU5Mjc2ODFhYjU1OWVhZmMyNzRjYmViMGEyMTRhMWRkN2JmYz9icmFuY2g9 Zml4LWR1cC1wYXRjaAoKTG9nOgpGaXggaW4gInNldCBhdXRvLWxvYWQiIHBhdGNoc2V0IGZvciBT Q0wgc2NyaXB0cyBpbmhlcml0YW5jZSAoQlogODE1OTEwKS4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTAxb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wMW9mMTgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmIyMWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9s b2FkLTAxb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMDIuaHRtbAotCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAxOToxMjozMQkxLjEzNzcxCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEzNzcyCi0jIyAtMSwzICsxLDEyIEBACi0r MjAxMi0wMS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot KwotKwlDb2RlIGNsZWFudXAuCi0rCSogY2xpL2NsaS1jbWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJv bV9zdHJlYW0pOiBOZXZlciBmY2xvc2UgU1RSRUFNLgotKwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNv bW1lbnQgZm9yIGl0LgotKwkoc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9j bGVhbnVwX2ZjbG9zZSBmb3IgU1RSRUFNLgotKwkqIGNsaS9jbGktc2NyaXB0LmMgKHNjcmlwdF9m cm9tX2ZpbGUpOiBEbyBub3QgY2FsbCBtYWtlX2NsZWFudXBfZmNsb3NlCi0rCWZvciBTVFJFQU0u Ci0rCi0gMjAxMi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLSAJ KiBicmVha3BvaW50LmMgKGJwc3RhdF9zdG9wX3N0YXR1cyk6IE1vdmluZyBjbGVhcmluZyBwcmlu dF9pdAotLS0tIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yMyAxNjozNzowMwkxLjEy MwotKysrIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEyNAot QEAgLTUyNyw4ICs1MjcsNyBAQAotICAgcmV0dXJuIDE7Ci0gfQotIAotLS8qIExvYWQgc2NyaXB0 IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4KLS0gICBTVFJF QU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1cm4uICAqLwotKy8qIExvYWQgc2NyaXB0IEZJTEUs IHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4gICovCi0gCi0gc3RhdGlj IHZvaWQKLSBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sIGNvbnN0IGNo YXIgKmZpbGUpCi1AQCAtNTU2LDEyICs1NTUsOSBAQAotIAkgIGVsc2UKLSAJICAgIHsKLSAJICAg ICAgLyogTm9wZSwganVzdCBwdW50LiAgKi8KLS0JICAgICAgZmNsb3NlIChzdHJlYW0pOwotIAkg ICAgICB0aHJvd19leGNlcHRpb24gKGUpOwotIAkgICAgfQotIAl9Ci0tICAgICAgZWxzZQotLQlm Y2xvc2UgKHN0cmVhbSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgc2NyaXB0X2Zyb21fZmlsZSAo c3RyZWFtLCBmaWxlKTsKLUBAIC01OTUsNiArNTkxLDcgQEAKLSAgICAgfQotIAotICAgb2xkX2Ns ZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsgIG1ha2VfY2xlYW51 cF9mY2xvc2UgKHN0cmVhbSk7Ci0gICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUg ZmlsZSwgc28gd2UgbmVlZCB0byBwYXNzIGZ1bGxfcGF0aCBoZXJlCi0gICAgICBpbiBjYXNlIHRo ZSBmaWxlIHdhcyBmb3VuZCBvbiB0aGUgc2VhcmNoIHBhdGguICBJdCdzIHVzZWZ1bCB0byBkbyB0 aGlzCi0gICAgICBhbnl3YXkgc28gdGhhdCBlcnJvciBtZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwg ZmlsZSB1c2VkLiAgQnV0IG9ubHkgZG8KLS0tLSBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAx Mi8wMS8wNCAwODoxNzoxNwkxLjczCi0rKysgc3JjL2dkYi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIv MDEvMjQgMjA6NTY6MzMJMS43NAotQEAgLTE2MTQsMTEgKzE2MTQsOSBAQAotICAgaWYgKHN0cmVh bSA9PSBOVUxMKQotICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJj YWxsZWQgd2l0aCBOVUxMIGZpbGUgcG9pbnRlciEiKSk7Ci0gCi0tICBvbGRfY2xlYW51cHMgPSBt YWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwotLQotICAgb2xkX2xpbmVzLm9sZF9saW5lID0g c291cmNlX2xpbmVfbnVtYmVyOwotICAgb2xkX2xpbmVzLm9sZF9maWxlID0gc291cmNlX2ZpbGVf bmFtZTsKLS0gIG1ha2VfY2xlYW51cCAoc291cmNlX2NsZWFudXBfbGluZXMsICZvbGRfbGluZXMp OwotKyAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywg Jm9sZF9saW5lcyk7Ci0gICBzb3VyY2VfbGluZV9udW1iZXIgPSAwOwotICAgc291cmNlX2ZpbGVf bmFtZSA9IGZpbGU7Ci0gICAvKiBUaGlzIHdpbGwgZ2V0IHNldCBldmVyeSB0aW1lIHdlIHJlYWQg YSBsaW5lLiAgU28gaXQgd29uJ3Qgc3RheSAiIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0w MW9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDFvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmQzMmIyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xv YWQtMDFvZjIyLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMDIuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wMS8yNCAxOToxMjozMQkxLjEzNzcxCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w MS8yNCAyMDo1NjozMwkxLjEzNzcyCisjIyAtMSwzICsxLDEyIEBACisrMjAxMi0wMS0yNCAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFu dXAuCisrCSogY2xpL2NsaS1jbWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXZl ciBmY2xvc2UgU1RSRUFNLgorKwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0Lgor Kwkoc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9zZSBm b3IgU1RSRUFNLgorKwkqIGNsaS9jbGktc2NyaXB0LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBEbyBu b3QgY2FsbCBtYWtlX2NsZWFudXBfZmNsb3NlCisrCWZvciBTVFJFQU0uCisrCisgMjAxMi0wMS0y NCAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBicmVha3BvaW50LmMg KGJwc3RhdF9zdG9wX3N0YXR1cyk6IE1vdmluZyBjbGVhcmluZyBwcmludF9pdAorLS0tIHNyYy9n ZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yMyAxNjozNzowMwkxLjEyMworKysrIHNyYy9nZGIv Y2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEyNAorQEAgLTUyNyw4ICs1Mjcs NyBAQAorICAgcmV0dXJuIDE7CisgfQorIAorLS8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhh cyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4KKy0gICBTVFJFQU0gaXMgY2xvc2VkIGJl Zm9yZSB3ZSByZXR1cm4uICAqLworKy8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJl YWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4gICovCisgCisgc3RhdGljIHZvaWQKKyBzb3VyY2Vf c2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCitAQCAt NTU2LDEyICs1NTUsOSBAQAorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgLyogTm9wZSwganVz dCBwdW50LiAgKi8KKy0JICAgICAgZmNsb3NlIChzdHJlYW0pOworIAkgICAgICB0aHJvd19leGNl cHRpb24gKGUpOworIAkgICAgfQorIAl9CistICAgICAgZWxzZQorLQlmY2xvc2UgKHN0cmVhbSk7 CisgICAgIH0KKyAgIGVsc2UKKyAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxlKTsK K0BAIC01OTUsNiArNTkxLDcgQEAKKyAgICAgfQorIAorICAgb2xkX2NsZWFudXBzID0gbWFrZV9j bGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVh bSk7CisgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSwgc28gd2UgbmVl ZCB0byBwYXNzIGZ1bGxfcGF0aCBoZXJlCisgICAgICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBmb3Vu ZCBvbiB0aGUgc2VhcmNoIHBhdGguICBJdCdzIHVzZWZ1bCB0byBkbyB0aGlzCisgICAgICBhbnl3 YXkgc28gdGhhdCBlcnJvciBtZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAgQnV0 IG9ubHkgZG8KKy0tLSBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8wNCAwODoxNzox NwkxLjczCisrKysgc3JjL2dkYi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6MzMJ MS43NAorQEAgLTE2MTQsMTEgKzE2MTQsOSBAQAorICAgaWYgKHN0cmVhbSA9PSBOVUxMKQorICAg ICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJjYWxsZWQgd2l0aCBOVUxM IGZpbGUgcG9pbnRlciEiKSk7CisgCistICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfZmNs b3NlIChzdHJlYW0pOworLQorICAgb2xkX2xpbmVzLm9sZF9saW5lID0gc291cmNlX2xpbmVfbnVt YmVyOworICAgb2xkX2xpbmVzLm9sZF9maWxlID0gc291cmNlX2ZpbGVfbmFtZTsKKy0gIG1ha2Vf Y2xlYW51cCAoc291cmNlX2NsZWFudXBfbGluZXMsICZvbGRfbGluZXMpOworKyAgb2xkX2NsZWFu dXBzID0gbWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7Cisg ICBzb3VyY2VfbGluZV9udW1iZXIgPSAwOworICAgc291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7Cisg ICAvKiBUaGlzIHdpbGwgZ2V0IHNldCBldmVyeSB0aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28gaXQg d29uJ3Qgc3RheSAiIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9mMTgucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMDJvZjE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi NDRjOWJiLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wMm9mMTgucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwxMDMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMi0wMS9tc2cwMDIwNS5odG1sCi0KLS0tLSBzcmMvZ2RiL2dkYl92ZWNzLmgKLSsrKyBzcmMv Z2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xNyAyMjowNDoyMy44MTg2NjYwMDAgKzAwMDAKLUBAIC0w LDAgKzEsMjggQEAKLSsvKiBTb21lIGNvbW1vbmx5LXVzZWQgVkVDIHR5cGVzLgotKwotKyAgIENv cHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwotKwotKwotKyNpZm5kZWYgR0RCX1ZFQ1NfSAotKyNkZWZpbmUgR0RCX1ZF Q1NfSAotKwotKyNpbmNsdWRlICJ2ZWMuaCIKLSsKLStERUZfVkVDX1AgKGNoYXJfcHRyKTsKLSsK LSsjZW5kaWYgLyogR0RCX1ZFQ1NfSCAqLwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEv MjQgMjE6MzI6NTYJMS4xMzc3NAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjQgMjE6 MzY6MzcJMS4xMzc3NQotIyMgLTEsMyArMSwxMCBAQAotKzIwMTItMDEtMjQgIFRvbSBUcm9tZXkg IDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBhZGEtbGFuZy5jOiBJbmNsdWRlIGdkYl92ZWNz LmguCi0rCSogY2hhcnNldC5jOiBJbmNsdWRlIGdkYl92ZWNzLmguCi0rCSogdHJhY2Vwb2ludC5o OiBJbmNsdWRlIGdkYl92ZWNzLmguCi0rCSogZ2RiX3ZlY3MuaDogTmV3IGZpbGUuCi0rCi0gMjAx Mi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxwZWRyb0Bjb2Rlc291cmNlcnkuY29tPgotIAotIAkqIGJy ZWFrcG9pbnQuYyAoYnJlYWtwb2ludF9oaXRfY2F0Y2hfZm9yaykKLS0tLSBzcmMvZ2RiL2FkYS1s YW5nLmMJMjAxMi8wMS8wNiAwMzozNDo0NQkxLjMzMAotKysrIHNyYy9nZGIvYWRhLWxhbmcuYwky MDEyLzAxLzI0IDIxOjM2OjM3CTEuMzMxCi1AQCAtNTcsNiArNTcsNyBAQAotICNpbmNsdWRlICJv YnNlcnZlci5oIgotICNpbmNsdWRlICJ2ZWMuaCIKLSAjaW5jbHVkZSAic3RhY2suaCIKLSsjaW5j bHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAjaW5jbHVkZSAicHN5bXRhYi5oIgotICNpbmNsdWRlICJ2 YWx1ZS5oIgotQEAgLTU2MjgsOCArNTYyOSw2IEBACi0gICByZXR1cm4gc3ltX25hbWU7Ci0gfQot IAotLURFRl9WRUNfUCAoY2hhcl9wdHIpOwotLQotIC8qIEEgY29tcGFuaW9uIGZ1bmN0aW9uIHRv IGFkYV9tYWtlX3N5bWJvbF9jb21wbGV0aW9uX2xpc3QoKS4KLSAgICBDaGVjayBpZiBTWU1fTkFN RSByZXByZXNlbnRzIGEgc3ltYm9sIHdoaWNoIG5hbWUgd291bGQgYmUgc3VpdGFibGUKLSAgICB0 byBjb21wbGV0ZSBURVhUIChURVhUX0xFTiBpcyB0aGUgbGVuZ3RoIG9mIFRFWFQpLCBpbiB3aGlj aCBjYXNlCi0tLS0gc3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMS8wNCAwODoxNzowMAkxLjQ2Ci0r Kysgc3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMS8yNCAyMTozNjozNwkxLjQ3Ci1AQCAtMjcsNiAr MjcsNyBAQAotICNpbmNsdWRlICJ2ZWMuaCIKLSAjaW5jbHVkZSAiZW52aXJvbi5oIgotICNpbmNs dWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gI2luY2x1ZGUg PHN0ZGRlZi5oPgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtNzE3LDggKzcxOCw2IEBA Ci0gCi0gZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9jaGFyc2V0OyAv KiAtV21pc3NpbmctcHJvdG90eXBlICovCi0gCi0tREVGX1ZFQ19QIChjaGFyX3B0cik7Ci0tCi0g c3RhdGljIFZFQyAoY2hhcl9wdHIpICpjaGFyc2V0czsKLSAKLSAjaWZkZWYgUEhPTllfSUNPTlYK LS0tLSBzcmMvZ2RiL3RyYWNlcG9pbnQuaAkyMDEyLzAxLzA0IDA4OjI3OjU3CTEuNDYKLSsrKyBz cmMvZ2RiL3RyYWNlcG9pbnQuaAkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKLUBAIC0yMiw2ICsy Miw3IEBACi0gI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0g I2luY2x1ZGUgIm1lbXJhbmdlLmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gLyogQSB0 cmFjZSBzdGF0ZSB2YXJpYWJsZSBpcyBhIHZhbHVlIG1hbmFnZWQgYnkgYSB0YXJnZXQgYmVpbmcK LSAgICB0cmFjZWQuICBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIChvciB0c3YgZm9yIHNob3J0KSBj YW4gYmUgYWNjZXNzZWQKLUBAIC0xNDMsOCArMTQ0LDYgQEAKLSAKLSAvKiBTdHJ1Y3QgdG8gY29s bGVjdCByYW5kb20gaW5mbyBhYm91dCB0cmFjZXBvaW50cyBvbiB0aGUgdGFyZ2V0LiAgKi8KLSAK LS1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKLS0KLSBzdHJ1Y3QgdXBsb2FkZWRfdHAKLSB7Ci0gICBp bnQgbnVtYmVyOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9mMjIucGF0Y2ggYi9nZGIt YXV0b2xvYWQtMDJvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmI0NGM5YmIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDJvZjIyLnBhdGNoCkBA IC0wLDAgKzEsMTAzIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAx L21zZzAwMjA1Lmh0bWwKKworLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAorKysrIHNyYy9nZGIvZ2Ri X3ZlY3MuaAkyMDEyLTA0LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAorQEAgLTAsMCArMSwy OCBAQAorKy8qIFNvbWUgY29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCisrCisrICAgQ29weXJpZ2h0 IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKwor KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisrCisrCisrI2lmbmRlZiBHREJfVkVDU19ICisrI2RlZmluZSBHREJfVkVDU19ICisr CisrI2luY2x1ZGUgInZlYy5oIgorKworK0RFRl9WRUNfUCAoY2hhcl9wdHIpOworKworKyNlbmRp ZiAvKiBHREJfVkVDU19IICovCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMToz Mjo1NgkxLjEzNzc0CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozNjozNwkx LjEzNzc1CisjIyAtMSwzICsxLDEwIEBACisrMjAxMi0wMS0yNCAgVG9tIFRyb21leSAgPHRyb21l eUByZWRoYXQuY29tPgorKworKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJ KiBjaGFyc2V0LmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiB0cmFjZXBvaW50Lmg6IEluY2x1 ZGUgZ2RiX3ZlY3MuaC4KKysJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KKysKKyAyMDEyLTAxLTI0 ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogYnJlYWtwb2lu dC5jIChicmVha3BvaW50X2hpdF9jYXRjaF9mb3JrKQorLS0tIHNyYy9nZGIvYWRhLWxhbmcuYwky MDEyLzAxLzA2IDAzOjM0OjQ1CTEuMzMwCisrKysgc3JjL2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEv MjQgMjE6MzY6MzcJMS4zMzEKK0BAIC01Nyw2ICs1Nyw3IEBACisgI2luY2x1ZGUgIm9ic2VydmVy LmgiCisgI2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJzdGFjay5oIgorKyNpbmNsdWRlICJn ZGJfdmVjcy5oIgorIAorICNpbmNsdWRlICJwc3ltdGFiLmgiCisgI2luY2x1ZGUgInZhbHVlLmgi CitAQCAtNTYyOCw4ICs1NjI5LDYgQEAKKyAgIHJldHVybiBzeW1fbmFtZTsKKyB9CisgCistREVG X1ZFQ19QIChjaGFyX3B0cik7CistCisgLyogQSBjb21wYW5pb24gZnVuY3Rpb24gdG8gYWRhX21h a2Vfc3ltYm9sX2NvbXBsZXRpb25fbGlzdCgpLgorICAgIENoZWNrIGlmIFNZTV9OQU1FIHJlcHJl c2VudHMgYSBzeW1ib2wgd2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQorICAgIHRvIGNvbXBs ZXRlIFRFWFQgKFRFWFRfTEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGluIHdoaWNoIGNhc2UK Ky0tLSBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEuNDYKKysrKyBzcmMv Z2RiL2NoYXJzZXQuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKK0BAIC0yNyw2ICsyNyw3IEBA CisgI2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJlbnZpcm9uLmgiCisgI2luY2x1ZGUgImFy Y2gtdXRpbHMuaCIKKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaW5jbHVkZSA8c3RkZGVm Lmg+CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKK0BAIC03MTcsOCArNzE4LDYgQEAKKyAKKyBl eHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJzZXQ7IC8qIC1XbWlz c2luZy1wcm90b3R5cGUgKi8KKyAKKy1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKKy0KKyBzdGF0aWMg VkVDIChjaGFyX3B0cikgKmNoYXJzZXRzOworIAorICNpZmRlZiBQSE9OWV9JQ09OVgorLS0tIHNy Yy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40NgorKysrIHNyYy9nZGIv dHJhY2Vwb2ludC5oCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NworQEAgLTIyLDYgKzIyLDcgQEAK KyAjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVk ZSAibWVtcmFuZ2UuaCIKKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAvKiBBIHRyYWNlIHN0 YXRlIHZhcmlhYmxlIGlzIGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBiZWluZworICAgIHRy YWNlZC4gIEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hvcnQpIGNhbiBiZSBh Y2Nlc3NlZAorQEAgLTE0Myw4ICsxNDQsNiBAQAorIAorIC8qIFN0cnVjdCB0byBjb2xsZWN0IHJh bmRvbSBpbmZvIGFib3V0IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAqLworIAorLURFRl9W RUNfUCAoY2hhcl9wdHIpOworLQorIHN0cnVjdCB1cGxvYWRlZF90cAorIHsKKyAgIGludCBudW1i ZXI7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAzb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9h ZC0wM29mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwZWZjOGMuLjAw MDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAzb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDIxNSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21z ZzAwMjE5Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMTY6NDQ6MjkJ MS4xMzc4MAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMjE6NTQ6NDIJMS4xMzc4 MQotIyMgLTEsMyArMSwyMiBAQAotKzIwMTItMDEtMjYgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRG8gbm90IG9wZW4gc2NyaXB0IGZpbGVuYW1lcyB0 d2ljZS4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IFBh c3MgdG8KLSsJc291cmNlX3B5dGhvbl9zY3JpcHQgYWxzbyBTVFJFQU0uCi0rCSogcHl0aG9uL3B5 LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUGFzcyB0bwotKwlzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBhbHNvIFNUUkVBTS4KLSsJKGF1dG9fbG9hZF9vYmpm aWxlX3NjcmlwdCk6IFBhc3MgdG8gc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUKLSsJ YWxzbyBJTlBVVC4KLSsJKiBweXRob24vcHl0aG9uLWludGVybmFsLmggKHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3Ci0rCXBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1l dGVyIGZpbGUgdG8gZmlsZW5hbWUuCi0rCSogcHl0aG9uL3B5dGhvbi5jIChweXRob25fcnVuX3Np bXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9TaW1wbGVGaWxlCi0rCWluc3RlYWQgaWYgIV9XSU4zMi4g IFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudC4KLSsJKHNvdXJjZV9weXRob25fc2NyaXB0LCBz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSkKLSsJKHNvdXJjZV9weXRob25fc2NyaXB0 KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8KLSsJZmlsZW5h bWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUuCi0rCSogcHl0aG9u L3B5dGhvbi5oIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIgZmlsZSwgcmVu YW1lCi0rCXBhcmFtZXRlciBmaWxlIHRvIGZpbGVuYW1lLgotKwotIDIwMTItMDEtMjYgIFBlZHJv IEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0gCSogY29yZWxvdy5jIChjb3JlX2hhc19m YWtlX3BpZCk6IERlbGV0ZS4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xp LWNtZHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY2xp L2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAwOToxNzoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5 Njg1NTQzMCArMDIwMAotQEAgLTUyOSw5ICs1MjksNyBAQCBzb3VyY2Vfc2NyaXB0X2Zyb21fc3Ry ZWFtIChGSUxFICpzdHJlYW0sCi0gCi0gICAgICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19F UlJPUikKLSAJewotLSAgICAgICAgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUg ZmlsZSB1c2luZyBweXRob24gZnVuY3Rpb25zLAotLSAgICAgICAgICAgICBzbyB0aGVyZSdzIG5v IHBvaW50IGluIHBhc3NpbmcgU1RSRUFNIGhlcmUuICAqLwotLQkgIHNvdXJjZV9weXRob25fc2Ny aXB0IChmaWxlKTsKLSsJICBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoc3RyZWFtLCBmaWxlKTsKLSAJ fQotICAgICAgIGlmIChlLnJlYXNvbiA8IDApCi0gCXsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTAxLTA0IDA5OjE3 OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9w eS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTMx Miw3ICszMTIsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvCi0g CXsKLSAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQu ICAqLwotIAkgIGlmICghIGluX2hhc2hfdGFibGUpCi0tCSAgICBzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZnVsbF9wYXRoKTsKLSsJICAgIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7Ci0gCSAgZmNs b3NlIChzdHJlYW0pOwotIAkgIHhmcmVlIChmdWxsX3BhdGgpOwotIAl9Ci1AQCAtNDMxLDcgKzQz MSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAJIEl0J3Mg aGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0gCSBhbmQgdGhl c2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQot IAkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgZGVidWdmaWxlKTsKLSsgICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAgICAgZmNsb3NlIChp bnB1dCk7Ci0gICAgIH0KLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24v cHl0aG9uLWludGVybmFsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50 ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTI4OSw4ICsy ODksOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvCi0gCi0gdm9p ZCBnZGJweV9wcmludF9zdGFjayAodm9pZCk7Ci0gCi0tdm9pZCBzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCSAgICAgICBjb25z dCBjaGFyICpmaWxlKTsKLSt2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJICAgICAgIGNvbnN0IGNo YXIgKmZpbGVuYW1lKTsKLSAKLSBQeU9iamVjdCAqcHl0aG9uX3N0cmluZ190b191bmljb2RlIChQ eU9iamVjdCAqb2JqKTsKLSBjaGFyICp1bmljb2RlX3RvX3RhcmdldF9zdHJpbmcgKFB5T2JqZWN0 ICp1bmljb2RlX3N0cik7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5 dGhvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRo b24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTo0Mi42 OTY4NTU0MzAgKzAyMDAKLUBAIC0xNTQsMzQgKzE1NCwzMSBAQCBlbnN1cmVfcHl0aG9uX2VudiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyCi0gICByZXR1cm4gbWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5 dGhvbl9lbnYsIGVudik7Ci0gfQotIAotLS8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxl RmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mCi0tICAgdGhlIFB5dGhvbiBzY3JpcHQgdG8g cnVuLgotKy8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEUgaXMgdGhl IFB5dGhvbiBzY3JpcHQgdG8gcnVuCi0rICAgbmFtZWQgRklMRU5BTUUuCi0gCi0tICAgT25lIG9m IHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVuX1NpbXBsZUZpbGUgaXMgYSBGSUxFICouCi0tICAgVGhl IHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJTEUgaXMgZXh0cmVtZWx5IHN5c3RlbSBhbmQgY29tcGls ZXIKLS0gICBkZXBlbmRlbnQuICBTbywgdW5sZXNzIHRoZSBQeXRob24gbGlicmFyeSBoYXMgYmVl biBjb21waWxlZCB1c2luZwotLSAgIHRoZSBzYW1lIGJ1aWxkIGVudmlyb25tZW50IGFzIEdEQiwg d2UgcnVuIHRoZSByaXNrIG9mIGdldHRpbmcKLS0gICBhIGNyYXNoIGR1ZSB0byBpbmNvbnNpc3Rl bmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IEdEQiwKLS0gICBhbmQgdGhlIGRl ZmluaXRpb24gdXNlZCBieSBQeXRob24uICBBIG1pc21hdGNoIGNhbiB2ZXJ5IGxpa2VseQotLSAg IGxlYWQgdG8gYSBjcmFzaC4KLS0KLS0gICBUaGVyZSBpcyBhbHNvIHRoZSBzaXR1YXRpb24gd2hl cmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCBHREIKLS0gICBhcmUgdXNpbmcgdHdvIGRpZmZlcmVu dCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lIGxpYnJhcnkuCi0tICAgVGhpcyBpcyBwYXJ0aWN1 bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dzLCB3aGVyZSBmZXcgdXNlcnMgd291bGQKLS0gICBidWls ZCBQeXRob24gdGhlbXNlbHZlcyAodGhpcyBpcyBubyB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0 Zm9ybSksCi0tICAgYW5kIHRodXMgdXNlIGJpbmFyaWVzIGJ1aWx0IGJ5IHNvbWVvbmUgZWxzZSBp bnN0ZWFkLiBQeXRob24sCi0tICAgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2 ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwKLS0gICAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1p bkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEgRklMRSAqCi0tICAgZnJvbSBvbmUgcnVudGltZSBkb2Vz IG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotKyAgIE9uIFdpbmRvd3MgaG9z dHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vCi0r ICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMgcGxhdGZvcm0pLCBhbmQgdGh1cyB1c2UgYmluYXJpZXMg YnVpbHQgYnkKLSsgICBzb21lb25lIGVsc2UgaW5zdGVhZC4gIFRoZXJlIG1heSBoYXBwZW4gc2l0 dWF0aW9uIHdoZXJlIHRoZSBQeXRob24KLSsgICBsaWJyYXJ5IGFuZCBHREIgYXJlIHVzaW5nIHR3 byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMgcnVudGltZQotKyAgIGxpYnJhcnkuICBQeXRo b24sIGJlaW5nIGJ1aWx0IHdpdGggVkMsIHdvdWxkIHVzZSBvbmUgdmVyc2lvbiBvZiB0aGUKLSsg ICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEwMC5kbGwpLCB3aGlsZSBNaW5HVyB1c2VzIG1zdmNydC5k bGwuCi0rICAgQSBGSUxFICogZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBv cGVyYXRlIGNvcnJlY3RseSBpbgotICAgIHRoZSBvdGhlciBydW50aW1lLgotIAotLSAgIFRvIHdv cmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgdGhlIEZJTEUgb2JqZWN0 Ci0tICAgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMg Y29tcGF0aWJsZQotLSAgIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KLSsgICBUbyB3b3Jr IGFyb3VuZCB0aGlzIHBvdGVudGlhbCBpc3N1ZSwgd2UgY3JlYXRlIG9uIFdpbmRvd3MgaG9zdHMg dGhlCi0rICAgRklMRSBvYmplY3QgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBz dXJlIHRoYXQgaXQgaXMKLSsgICBjb21wYXRpYmxlIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAg Ki8KLSAKLSBzdGF0aWMgdm9pZAotLXB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIg KmZpbGVuYW1lKQotK3B5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKEZJTEUgKmZpbGUsIGNvbnN0IGNo YXIgKmZpbGVuYW1lKQotIHsKLSsjaWZuZGVmIF9XSU4zMgotKwotKyAgUHlSdW5fU2ltcGxlRmls ZSAoZmlsZSwgZmlsZW5hbWUpOwotKwotKyNlbHNlIC8qIF9XSU4zMiAqLwotKwotICAgY2hhciAq ZnVsbF9wYXRoOwotICAgUHlPYmplY3QgKnB5dGhvbl9maWxlOwotICAgc3RydWN0IGNsZWFudXAg KmNsZWFudXA7Ci1AQCAtMjAxLDYgKzE5OCw4IEBAIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNv bnN0IGNoYXIgKmZpbGUKLSAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5dGhvbl9maWxlKTsK LSAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5RmlsZV9Bc0ZpbGUgKHB5dGhvbl9maWxlKSwgZmlsZW5h bWUpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwotKyNlbmRpZiAvKiBfV0lOMzIgKi8K LSB9Ci0gCi0gLyogR2l2ZW4gYSBjb21tYW5kX2xpbmUsIHJldHVybiBhIGNvbW1hbmQgc3RyaW5n IHN1aXRhYmxlIGZvciBwYXNzaW5nCi1AQCAtNjIzLDE3ICs2MjIsMTcgQEAgZ2RicHlfcGFyc2Vf YW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeQotIH0KLSAKLSAvKiBSZWFkIGEgZmlsZSBhcyBQ eXRob24gY29kZS4KLS0gICBGSUxFIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlLgotKyAgIEZJTEUg aXMgdGhlIGZpbGUgdG8gcnVuLiAgRklMRU5BTUUgaXMgbmFtZSBvZiB0aGUgZmlsZSBGSUxFLgot ICAgIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1 cnMgcHl0aG9uIHdpbGwgcHJpbnQKLSAgICB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJy b3IgaW5kaWNhdG9yLiAgKi8KLSAKLSB2b2lkCi0tc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0 IGNoYXIgKmZpbGUpCi0rc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNo YXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotIAotICAgY2xl YW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xh bmd1YWdlKTsKLS0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOwotKyAgcHl0aG9uX3J1 bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXAp OwotIH0KLSAKLUBAIC0xMDQxLDE5ICsxMDQwLDIwIEBAIGdkYnB5X3Byb2dzcGFjZXMgKFB5T2Jq ZWN0ICp1bnVzZWQxLCBQeU8KLSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsg aXQgaXMgTlVMTCBhdCBvdGhlciB0aW1lcy4gICovCi0gc3RhdGljIHN0cnVjdCBvYmpmaWxlICpn ZGJweV9jdXJyZW50X29iamZpbGU7Ci0gCi0tLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8g T0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgYXMgUHl0aG9uIGNvZGUuCi0tICAgVGhpcyBkb2Vz IG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2ls bCBwcmludAotLSAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3Iu ICAqLwotKy8qIFNldCB0aGUgY3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVh ZCBGSUxFIG5hbWVkIEZJTEVOQU1FCi0rICAgYXMgUHl0aG9uIGNvZGUuICBUaGlzIGRvZXMgbm90 IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24KLSsgICBvY2N1cnMgcHl0aG9uIHdp bGwgcHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICov Ci0gCi0gdm9pZAotLXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZmlsZSkKLStzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAg IHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAKLSAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhv bl9lbnYgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSAg IGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7Ci0gCi0tICBweXRob25fcnVuX3NpbXBs ZV9maWxlIChmaWxlKTsKLSsgIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUsIGZpbGVuYW1l KTsKLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gICBnZGJweV9jdXJyZW50X29iamZp bGUgPSBOVUxMOwotQEAgLTExMjksNyArMTEyOSw3IEBAIGV2YWxfcHl0aG9uX2Zyb21fY29udHJv bF9jb21tYW5kIChzdHJ1Y3QKLSB9Ci0gCi0gdm9pZAotLXNvdXJjZV9weXRob25fc2NyaXB0IChj b25zdCBjaGFyICpmaWxlKQotK3NvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25z dCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0gICB0aHJvd19lcnJvciAoVU5TVVBQT1JURURfRVJST1Is Ci0gCSAgICAgICBfKCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBj b3B5IG9mIEdEQi4iKSk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5 dGhvbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRo b24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTo0Mi42 OTc4NTU0MjcgKzAyMDAKLUBAIC0zMCw3ICszMCw3IEBAIGV4dGVybiB2b2lkIGZpbmlzaF9weXRo b25faW5pdGlhbGl6YXRpb24KLSAKLSB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21t YW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwotIAotLXZvaWQgc291cmNlX3B5dGhvbl9zY3Jp cHQgKGNvbnN0IGNoYXIgKmZpbGUpOwotK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUg KmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSB2b2lkIHJ1bl9weXRob25fc2NyaXB0 IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0w M29mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmMwZWZjOGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xv YWQtMDNvZjIyLnBhdGNoCkBAIC0wLDAgKzEsMjE1IEBACitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjE5Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDEvMjYgMTY6NDQ6MjkJMS4xMzc4MAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDEvMjYgMjE6NTQ6NDIJMS4xMzc4MQorIyMgLTEsMyArMSwyMiBAQAorKzIwMTItMDEtMjYgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJRG8gbm90IG9w ZW4gc2NyaXB0IGZpbGVuYW1lcyB0d2ljZS4KKysJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3Nj cmlwdF9mcm9tX3N0cmVhbSk6IFBhc3MgdG8KKysJc291cmNlX3B5dGhvbl9zY3JpcHQgYWxzbyBT VFJFQU0uCisrCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRz KTogUGFzcyB0bworKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBhbHNvIFNUUkVB TS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFBhc3MgdG8gc291cmNlX3B5dGhvbl9z Y3JpcHRfZm9yX29iamZpbGUKKysJYWxzbyBJTlBVVC4KKysJKiBweXRob24vcHl0aG9uLWludGVy bmFsLmggKHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3CisrCXBhcmFtZXRl ciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCisrCSogcHl0aG9uL3B5 dGhvbi5jIChweXRob25fcnVuX3NpbXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9TaW1wbGVGaWxlCisr CWluc3RlYWQgaWYgIV9XSU4zMi4gIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudC4KKysJKHNv dXJjZV9weXRob25fc2NyaXB0LCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSkKKysJ KHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1l dGVyIGZpbGUgdG8KKysJZmlsZW5hbWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5dGhvbl9ydW5fc2lt cGxlX2ZpbGUuCisrCSogcHl0aG9uL3B5dGhvbi5oIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE5l dyBwYXJhbWV0ZXIgZmlsZSwgcmVuYW1lCisrCXBhcmFtZXRlciBmaWxlIHRvIGZpbGVuYW1lLgor KworIDIwMTItMDEtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisgCisgCSog Y29yZWxvdy5jIChjb3JlX2hhc19mYWtlX3BpZCk6IERlbGV0ZS4KK0luZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAwOToxNzoxNi4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwky MDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTUyOSw5ICs1MjksNyBAQCBz b3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sCisgCisgICAgICAgVFJZX0NB VENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKKyAJeworLSAgICAgICAgICAvKiBUaGUgcHl0aG9u IHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSB1c2luZyBweXRob24gZnVuY3Rpb25zLAorLSAgICAg ICAgICAgICBzbyB0aGVyZSdzIG5vIHBvaW50IGluIHBhc3NpbmcgU1RSRUFNIGhlcmUuICAqLwor LQkgIHNvdXJjZV9weXRob25fc2NyaXB0IChmaWxlKTsKKysJICBzb3VyY2VfcHl0aG9uX3Njcmlw dCAoc3RyZWFtLCBmaWxlKTsKKyAJfQorICAgICAgIGlmIChlLnJlYXNvbiA8IDApCisgCXsKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxv YWQuYwkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5 Njg1NTQzMCArMDIwMAorQEAgLTMxMiw3ICszMTIsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkLXNj cmlwdHMgW1JFR0VYUF0nIHRvCisgCXsKKyAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJl bnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworIAkgIGlmICghIGluX2hhc2hfdGFibGUpCistCSAg ICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZnVsbF9wYXRoKTsK KysJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0s IGZ1bGxfcGF0aCk7CisgCSAgZmNsb3NlIChzdHJlYW0pOworIAkgIHhmcmVlIChmdWxsX3BhdGgp OworIAl9CitAQCAtNDMxLDcgKzQzMSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3Ry dWN0IG9iamZpbGUKKyAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQg aXQgdHdpY2UsCisgCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBv dGVudCB1bmRlciBtdWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZGVidWdmaWxlKTsKKysgICAgICBz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmls ZSk7CisgICAgICAgZmNsb3NlIChpbnB1dCk7CisgICAgIH0KKyAKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEy LTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQz MCArMDIwMAorQEAgLTI4OSw4ICsyODksOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdl X2RlZm4gKnB5dGhvCisgCisgdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9pZCk7CisgCistdm9p ZCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCistCQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlKTsKKyt2b2lkIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwK KysJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyBQeU9iamVjdCAqcHl0aG9u X3N0cmluZ190b191bmljb2RlIChQeU9iamVjdCAqb2JqKTsKKyBjaGFyICp1bmljb2RlX3RvX3Rh cmdldF9zdHJpbmcgKFB5T2JqZWN0ICp1bmljb2RlX3N0cik7CitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMJ MjAxMi0wNC0xOCAwMDo0MTo0Mi42OTY4NTU0MzAgKzAyMDAKK0BAIC0xNTQsMzQgKzE1NCwzMSBA QCBlbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCisgICByZXR1cm4gbWFr ZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7CisgfQorIAorLS8qIEEgd3JhcHBl ciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mCistICAg dGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuLgorKy8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2lt cGxlRmlsZS4gIEZJTEUgaXMgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuCisrICAgbmFtZWQgRklM RU5BTUUuCisgCistICAgT25lIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVuX1NpbXBsZUZpbGUg aXMgYSBGSUxFICouCistICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJTEUgaXMgZXh0cmVt ZWx5IHN5c3RlbSBhbmQgY29tcGlsZXIKKy0gICBkZXBlbmRlbnQuICBTbywgdW5sZXNzIHRoZSBQ eXRob24gbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB1c2luZworLSAgIHRoZSBzYW1lIGJ1aWxk IGVudmlyb25tZW50IGFzIEdEQiwgd2UgcnVuIHRoZSByaXNrIG9mIGdldHRpbmcKKy0gICBhIGNy YXNoIGR1ZSB0byBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5 IEdEQiwKKy0gICBhbmQgdGhlIGRlZmluaXRpb24gdXNlZCBieSBQeXRob24uICBBIG1pc21hdGNo IGNhbiB2ZXJ5IGxpa2VseQorLSAgIGxlYWQgdG8gYSBjcmFzaC4KKy0KKy0gICBUaGVyZSBpcyBh bHNvIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCBHREIKKy0gICBh cmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lIGxpYnJhcnku CistICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dzLCB3aGVyZSBmZXcg dXNlcnMgd291bGQKKy0gICBidWlsZCBQeXRob24gdGhlbXNlbHZlcyAodGhpcyBpcyBubyB0cml2 aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksCistICAgYW5kIHRodXMgdXNlIGJpbmFyaWVzIGJ1 aWx0IGJ5IHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiBQeXRob24sCistICAgYmVpbmcgYnVpbHQgd2l0 aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwKKy0gICAoRWcuIG1z dmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEgRklMRSAqCistICAg ZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBp bgorKyAgIE9uIFdpbmRvd3MgaG9zdHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxkIFB5dGhvbiB0aGVt c2VsdmVzICh0aGlzIGlzIG5vCisrICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMgcGxhdGZvcm0pLCBh bmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkKKysgICBzb21lb25lIGVsc2UgaW5zdGVhZC4g IFRoZXJlIG1heSBoYXBwZW4gc2l0dWF0aW9uIHdoZXJlIHRoZSBQeXRob24KKysgICBsaWJyYXJ5 IGFuZCBHREIgYXJlIHVzaW5nIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMgcnVudGlt ZQorKyAgIGxpYnJhcnkuICBQeXRob24sIGJlaW5nIGJ1aWx0IHdpdGggVkMsIHdvdWxkIHVzZSBv bmUgdmVyc2lvbiBvZiB0aGUKKysgICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEwMC5kbGwpLCB3aGls ZSBNaW5HVyB1c2VzIG1zdmNydC5kbGwuCisrICAgQSBGSUxFICogZnJvbSBvbmUgcnVudGltZSBk b2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgorICAgIHRoZSBvdGhlciBy dW50aW1lLgorIAorLSAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBj cmVhdGUgdGhlIEZJTEUgb2JqZWN0CistICAgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1h a2luZyBzdXJlIHRoYXQgaXQgaXMgY29tcGF0aWJsZQorLSAgIHdpdGggdGhlIFB5dGhvbiBsaWJy YXJ5LiAgKi8KKysgICBUbyB3b3JrIGFyb3VuZCB0aGlzIHBvdGVudGlhbCBpc3N1ZSwgd2UgY3Jl YXRlIG9uIFdpbmRvd3MgaG9zdHMgdGhlCisrICAgRklMRSBvYmplY3QgdXNpbmcgUHl0aG9uIHJv dXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMKKysgICBjb21wYXRpYmxlIHdpdGgg dGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLXB5dGhvbl9ydW5fc2lt cGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3B5dGhvbl9ydW5fc2ltcGxlX2ZpbGUg KEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKysjaWZuZGVmIF9XSU4zMgor KworKyAgUHlSdW5fU2ltcGxlRmlsZSAoZmlsZSwgZmlsZW5hbWUpOworKworKyNlbHNlIC8qIF9X SU4zMiAqLworKworICAgY2hhciAqZnVsbF9wYXRoOworICAgUHlPYmplY3QgKnB5dGhvbl9maWxl OworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CitAQCAtMjAxLDYgKzE5OCw4IEBAIHB5dGhv bl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGUKKyAgIG1ha2VfY2xlYW51cF9weV9k ZWNyZWYgKHB5dGhvbl9maWxlKTsKKyAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5RmlsZV9Bc0ZpbGUg KHB5dGhvbl9maWxlKSwgZmlsZW5hbWUpOworICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworKwor KyNlbmRpZiAvKiBfV0lOMzIgKi8KKyB9CisgCisgLyogR2l2ZW4gYSBjb21tYW5kX2xpbmUsIHJl dHVybiBhIGNvbW1hbmQgc3RyaW5nIHN1aXRhYmxlIGZvciBwYXNzaW5nCitAQCAtNjIzLDE3ICs2 MjIsMTcgQEAgZ2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeQorIH0KKyAK KyAvKiBSZWFkIGEgZmlsZSBhcyBQeXRob24gY29kZS4KKy0gICBGSUxFIGlzIHRoZSBuYW1lIG9m IHRoZSBmaWxlLgorKyAgIEZJTEUgaXMgdGhlIGZpbGUgdG8gcnVuLiAgRklMRU5BTUUgaXMgbmFt ZSBvZiB0aGUgZmlsZSBGSUxFLgorICAgIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4g IElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQKKyAgICB0aGUgdHJhY2Vi YWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KKyAKKyB2b2lkCistc291cmNl X3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCisrc291cmNlX3B5dGhvbl9zY3JpcHQg KEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwOworIAorICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVu dF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKKy0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUg KGZpbGUpOworKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOworICAg ZG9fY2xlYW51cHMgKGNsZWFudXApOworIH0KKyAKK0BAIC0xMDQxLDE5ICsxMDQwLDIwIEBAIGdk YnB5X3Byb2dzcGFjZXMgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU8KKyAgICBzb3VyY2VfcHl0aG9u X3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBhdCBvdGhlciB0aW1lcy4gICovCisgc3Rh dGljIHN0cnVjdCBvYmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7CisgCistLyogU2V0IHRo ZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgYXMgUHl0aG9u IGNvZGUuCistICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0 aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmludAorLSAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFy IHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLworKy8qIFNldCB0aGUgY3VycmVudCBvYmpmaWxlIHRv IE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBGSUxFIG5hbWVkIEZJTEVOQU1FCisrICAgYXMgUHl0aG9u IGNvZGUuICBUaGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24K KysgICBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhl IGVycm9yIGluZGljYXRvci4gICovCisgCisgdm9pZAorLXNvdXJjZV9weXRob25fc2NyaXB0X2Zv cl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZmlsZSkKKytz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IEZJTEUgKmZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKmZpbGVuYW1lKQorIHsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKyAKKyAgIGNs ZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBj dXJyZW50X2xhbmd1YWdlKTsKKyAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7Cisg CistICBweXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxlKTsKKysgIHB5dGhvbl9ydW5fc2ltcGxl X2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Cisg ICBnZGJweV9jdXJyZW50X29iamZpbGUgPSBOVUxMOworQEAgLTExMjksNyArMTEyOSw3IEBAIGV2 YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QKKyB9CisgCisgdm9pZAorLXNv dXJjZV9weXRob25fc2NyaXB0IChjb25zdCBjaGFyICpmaWxlKQorK3NvdXJjZV9weXRob25fc2Ny aXB0IChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyB7CisgICB0aHJvd19lcnJv ciAoVU5TVVBQT1JURURfRVJST1IsCisgCSAgICAgICBfKCJQeXRob24gc2NyaXB0aW5nIGlzIG5v dCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7CitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJ MjAxMi0wNC0xOCAwMDo0MTo0Mi42OTc4NTU0MjcgKzAyMDAKK0BAIC0zMCw3ICszMCw3IEBAIGV4 dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24KKyAKKyB2b2lkIGV2YWxfcHl0 aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworIAorLXZv aWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOworK3ZvaWQgc291cmNl X3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyB2 b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworIAoKZGlmZiAt LWdpdCBhL2dkYi1hdXRvbG9hZC0wNG9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDRvZjE4LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDVhYzg3Li4wMDAwMDAwCi0tLSBh L2dkYi1hdXRvbG9hZC0wNG9mMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBA QAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNC5odG1s Ci0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEuMTQwMjUKLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKLSMjIC0xLDMg KzEsMTQgQEAKLSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xlYW51cC4KLSsJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcp OiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCi0rCShjbWRhcmdf cywgVkVDIChjbWRhcmdfcykpOiBOZXcuCi0rCShtYWluKTogTW92ZSBzdHJ1Y3QgY21kYXJnIGZy b20gaGVyZS4gIE5ldyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKLSsJY21kYXJnX3AuICBSZW1v dmUgdmFyaWFibGVzIGNtZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRpYWxpemF0aW9uLgot KwlJbnN0YWxsIGNsZWFudXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmlsbGluZyBmb3Igb3B0 aW9ucyAneCcgYW5kCi0rCSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3NpbmcgYnkgY21kYXJn X3ZlYyBwcm9jZXNzaW5nLiAgUmVtb3ZlIHhmcmVlCi0rCW9mIENNREFSRy4KLSsKLSAyMDEyLTAz LTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSogZ251LXYzLWFiaS5j IChnbnV2M19wcmludF92dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVjJy4KLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQy OjE1LjM1NDc3MjMzNyArMDIwMAotQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19vcl9jb3JlX2Zp bGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZQotICAgICB9Ci0gfQotIAotKy8qIEFyZ3VtZW50cyBv ZiAtLWNvbW1hbmQgb3B0aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLwotK3R5cGVkZWYgc3Ry dWN0IGNtZGFyZyB7Ci0rICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8KLSsgIGVudW0gewot KyAgICAvKiBPcHRpb24gdHlwZSAteC4gICovCi0rICAgIENNREFSR19GSUxFLAotKwotKyAgICAv KiBPcHRpb24gdHlwZSAtZXguICAqLwotKyAgICBDTURBUkdfQ09NTUFORAotKyAgfSB0eXBlOwot KwotKyAgLyogVmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1h bmQgaXRzZWxmLiAgU3RyaW5nIG1lbW9yeQotKyAgICAgaXMgbm90IG93bmVkIGJ5IHRoaXMgc3Ry dWN0dXJlIGRlc3BpdGUgaXQgaXMgJ2NvbnN0Jy4gICovCi0rICBjaGFyICpzdHJpbmc7Ci0rfSBj bWRhcmdfczsKLSsKLSsvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCi0rREVGX1ZF Q19PIChjbWRhcmdfcyk7Ci0rCi0gc3RhdGljIGludAotIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCi0gewotQEAgLTMwMywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK LSAgIHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKLSAKLSAgIC8qIFBvaW50ZXJzIHRvIGFsbCBh cmd1bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbi4gICovCi0tICBzdHJ1Y3QgY21kYXJnIHsKLS0g ICAgZW51bSB7Ci0tICAgICAgQ01EQVJHX0ZJTEUsCi0tICAgICAgQ01EQVJHX0NPTU1BTkQKLS0g ICAgfSB0eXBlOwotLSAgICBjaGFyICpzdHJpbmc7Ci0tICB9ICpjbWRhcmc7Ci0tICAvKiBBbGxv Y2F0ZWQgc2l6ZSBvZiBjbWRhcmcuICAqLwotLSAgaW50IGNtZHNpemU7Ci0tICAvKiBOdW1iZXIg b2YgZWxlbWVudHMgb2YgY21kYXJnIHVzZWQuICAqLwotLSAgaW50IG5jbWQ7Ci0rICBWRUMgKGNt ZGFyZ19zKSAqY21kYXJnX3ZlYyA9IE5VTEw7Ci0rICBzdHJ1Y3QgY21kYXJnICpjbWRhcmdfcDsK LSAKLSAgIC8qIEluZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9yeSBvcHRpb24u ICAqLwotICAgY2hhciAqKmRpcmFyZzsKLUBAIC0zNDksOSArMzU5LDcgQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKLSAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIpOwot ICAgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0tICBjbWRzaXplID0gMTsKLS0gIGNtZGFyZyA9 IChzdHJ1Y3QgY21kYXJnICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsK LS0gIG5jbWQgPSAwOwotKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY21kYXJnX3MpLCAm Y21kYXJnX3ZlYyk7Ci0gICBkaXJzaXplID0gMTsKLSAgIGRpcmFyZyA9IChjaGFyICoqKSB4bWFs bG9jIChkaXJzaXplICogc2l6ZW9mICgqZGlyYXJnKSk7Ci0gICBuZGlyID0gMDsKLUBAIC01ODIs MjQgKzU5MCwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkgICAgcGlkYXJnID0g b3B0YXJnOwotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAneCc6Ci0tCSAgICBjbWRhcmdbbmNtZF0u dHlwZSA9IENNREFSR19GSUxFOwotLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJn OwotLQkgICAgaWYgKG5jbWQgPj0gY21kc2l6ZSkKLS0JICAgICAgewotLQkJY21kc2l6ZSAqPSAy OwotLQkJY21kYXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKLS0JCQkJICAgY21kc2l6 ZSAqIHNpemVvZiAoKmNtZGFyZykpOwotLQkgICAgICB9Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVj dCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07Ci0rCi0rCSAgICAgIFZF Q19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJICAgIH0KLSAJ ICAgIGJyZWFrOwotIAkgIGNhc2UgJ1gnOgotLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBDTURB UkdfQ09NTUFORDsKLS0JICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKLS0JICAg IGlmIChuY21kID49IGNtZHNpemUpCi0tCSAgICAgIHsKLS0JCWNtZHNpemUgKj0gMjsKLS0JCWNt ZGFyZyA9IHhyZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCi0tCQkJCSAgIGNtZHNpemUgKiBzaXpl b2YgKCpjbWRhcmcpKTsKLS0JICAgICAgfQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgY21kYXJn IGNtZGFyZyA9IHsgQ01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNfc2Fm ZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAgICBi cmVhazsKLSAJICAgIGJyZWFrOwotIAkgIGNhc2UgJ0InOgotIAkgICAgYmF0Y2hfZmxhZyA9IGJh dGNoX3NpbGVudCA9IDE7Ci1AQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKLSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgICAgbG9hZF9hdXRvX3Njcmlw dHNfZm9yX29iamZpbGUgKG9iamZpbGUpOwotIAotLSAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkr KykKLSsgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwg Y21kYXJnX3ApOyBpKyspCi0rICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0gICAgIHsKLS0g ICAgICBpZiAoY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCi0tICAgICAgICBjYXRjaF9j b21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmluZywKLSsgICAgICBj YXNlIENNREFSR19GSUxFOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9z Y3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcsCi0gCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9N QVNLX0FMTCk7Ci0tICAgICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0NPTU1B TkQgKi8KLS0gICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNt ZGFyZ1tpXS5zdHJpbmcsCi0rCWJyZWFrOwotKyAgICAgIGNhc2UgQ01EQVJHX0NPTU1BTkQ6Ci0r ICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+ c3RyaW5nLAotIAkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwlicmVh azsKLSAgICAgfQotLSAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQg aGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCi0gICAgICByZWFk LiAgKi8KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDRvZjIyLnBhdGNoIGIvZ2RiLWF1dG9s b2FkLTA0b2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDVh Yzg3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA0b2YyMi5wYXRjaApAQCAtMCww ICsxLDE0MSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cw MDIzNC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEu MTQwMjUKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYK KyMjIC0xLDMgKzEsMTQgQEAKKysyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUNvZGUgY2xlYW51cC4KKysJKiBtYWluLmMgKHN0cnVj dCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCisr CShjbWRhcmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcuCisrCShtYWluKTogTW92ZSBzdHJ1Y3Qg Y21kYXJnIGZyb20gaGVyZS4gIE5ldyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKKysJY21kYXJn X3AuICBSZW1vdmUgdmFyaWFibGVzIGNtZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRpYWxp emF0aW9uLgorKwlJbnN0YWxsIGNsZWFudXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmlsbGlu ZyBmb3Igb3B0aW9ucyAneCcgYW5kCisrCSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3Npbmcg YnkgY21kYXJnX3ZlYyBwcm9jZXNzaW5nLiAgUmVtb3ZlIHhmcmVlCisrCW9mIENNREFSRy4KKysK KyAyMDEyLTAzLTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgCisgCSogZ251 LXYzLWFiaS5jIChnbnV2M19wcmludF92dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVjJy4K K0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0 LTE4IDAwOjQyOjE1LjM1NDc3MjMzNyArMDIwMAorQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19v cl9jb3JlX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZQorICAgICB9CisgfQorIAorKy8qIEFy Z3VtZW50cyBvZiAtLWNvbW1hbmQgb3B0aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLworK3R5 cGVkZWYgc3RydWN0IGNtZGFyZyB7CisrICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8KKysg IGVudW0geworKyAgICAvKiBPcHRpb24gdHlwZSAteC4gICovCisrICAgIENNREFSR19GSUxFLAor KworKyAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLworKyAgICBDTURBUkdfQ09NTUFORAorKyAg fSB0eXBlOworKworKyAgLyogVmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUg R0RCIGNvbW1hbmQgaXRzZWxmLiAgU3RyaW5nIG1lbW9yeQorKyAgICAgaXMgbm90IG93bmVkIGJ5 IHRoaXMgc3RydWN0dXJlIGRlc3BpdGUgaXQgaXMgJ2NvbnN0Jy4gICovCisrICBjaGFyICpzdHJp bmc7CisrfSBjbWRhcmdfczsKKysKKysvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICov CisrREVGX1ZFQ19PIChjbWRhcmdfcyk7CisrCisgc3RhdGljIGludAorIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCisgeworQEAgLTMwMywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKKyAgIHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKKyAKKyAgIC8qIFBvaW50ZXJz IHRvIGFsbCBhcmd1bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbi4gICovCistICBzdHJ1Y3QgY21k YXJnIHsKKy0gICAgZW51bSB7CistICAgICAgQ01EQVJHX0ZJTEUsCistICAgICAgQ01EQVJHX0NP TU1BTkQKKy0gICAgfSB0eXBlOworLSAgICBjaGFyICpzdHJpbmc7CistICB9ICpjbWRhcmc7Cist ICAvKiBBbGxvY2F0ZWQgc2l6ZSBvZiBjbWRhcmcuICAqLworLSAgaW50IGNtZHNpemU7CistICAv KiBOdW1iZXIgb2YgZWxlbWVudHMgb2YgY21kYXJnIHVzZWQuICAqLworLSAgaW50IG5jbWQ7Cisr ICBWRUMgKGNtZGFyZ19zKSAqY21kYXJnX3ZlYyA9IE5VTEw7CisrICBzdHJ1Y3QgY21kYXJnICpj bWRhcmdfcDsKKyAKKyAgIC8qIEluZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9y eSBvcHRpb24uICAqLworICAgY2hhciAqKmRpcmFyZzsKK0BAIC0zNDksOSArMzU5LDcgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NB TEVESVIpOworICAgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCistICBjbWRzaXplID0gMTsKKy0g IGNtZGFyZyA9IChzdHJ1Y3QgY21kYXJnICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2YgKCpj bWRhcmcpKTsKKy0gIG5jbWQgPSAwOworKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY21k YXJnX3MpLCAmY21kYXJnX3ZlYyk7CisgICBkaXJzaXplID0gMTsKKyAgIGRpcmFyZyA9IChjaGFy ICoqKSB4bWFsbG9jIChkaXJzaXplICogc2l6ZW9mICgqZGlyYXJnKSk7CisgICBuZGlyID0gMDsK K0BAIC01ODIsMjQgKzU5MCwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAkgICAg cGlkYXJnID0gb3B0YXJnOworIAkgICAgYnJlYWs7CisgCSAgY2FzZSAneCc6CistCSAgICBjbWRh cmdbbmNtZF0udHlwZSA9IENNREFSR19GSUxFOworLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5n ID0gb3B0YXJnOworLQkgICAgaWYgKG5jbWQgPj0gY21kc2l6ZSkKKy0JICAgICAgeworLQkJY21k c2l6ZSAqPSAyOworLQkJY21kYXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKKy0JCQkJ ICAgY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOworLQkgICAgICB9CisrCSAgICB7CisrCSAg ICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07CisrCisr CSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJ ICAgIH0KKyAJICAgIGJyZWFrOworIAkgIGNhc2UgJ1gnOgorLQkgICAgY21kYXJnW25jbWRdLnR5 cGUgPSBDTURBUkdfQ09NTUFORDsKKy0JICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9wdGFy ZzsKKy0JICAgIGlmIChuY21kID49IGNtZHNpemUpCistCSAgICAgIHsKKy0JCWNtZHNpemUgKj0g MjsKKy0JCWNtZGFyZyA9IHhyZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCistCQkJCSAgIGNtZHNp emUgKiBzaXplb2YgKCpjbWRhcmcpKTsKKy0JICAgICAgfQorKwkgICAgeworKwkgICAgICBzdHJ1 Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9OworKworKwkgICAg ICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7CisrCSAgICB9 CisrCSAgICBicmVhazsKKyAJICAgIGJyZWFrOworIAkgIGNhc2UgJ0InOgorIAkgICAgYmF0Y2hf ZmxhZyA9IGJhdGNoX3NpbGVudCA9IDE7CitAQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKKyAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICAgbG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworIAorLSAgZm9yIChpID0gMDsgaSA8 IG5jbWQ7IGkrKykKKysgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJn X3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCisrICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCisg ICAgIHsKKy0gICAgICBpZiAoY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCistICAgICAg ICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmluZywK KysgICAgICBjYXNlIENNREFSR19GSUxFOgorKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMg KHNvdXJjZV9zY3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcsCisgCQkJICAgICAgIWJhdGNoX2ZsYWcs IFJFVFVSTl9NQVNLX0FMTCk7CistICAgICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0gQ01E QVJHX0NPTU1BTkQgKi8KKy0gICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2Nv bW1hbmQsIGNtZGFyZ1tpXS5zdHJpbmcsCisrCWJyZWFrOworKyAgICAgIGNhc2UgQ01EQVJHX0NP TU1BTkQ6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBj bWRhcmdfcC0+c3RyaW5nLAorIAkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwp OworKwlicmVhazsKKyAgICAgfQorLSAgeGZyZWUgKGNtZGFyZyk7CisgCisgICAvKiBSZWFkIGlu IHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCisg ICAgICByZWFkLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDVvZjE4LnBhdGNoIGIv Z2RiLWF1dG9sb2FkLTA1b2YxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg OGRkOGNjMy4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDVvZjE4LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMTItMDMvbXNnMDAyMzUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8x OSAxODoxNjoxNwkxLjE0MDI2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODox OToyMwkxLjE0MDI3Ci0jIyAtMSw1ICsxLDE4IEBACi0gMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwkqIE5FV1M6IERlc2NyaWJlIG5l dyBvcHRpb25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKLSsJLS1pbml0LWV2YWwtY29t bWFuZD1DT01NQU5ELCAtaWV4LgotKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVt IGl0ZW1zIENNREFSR19JTklUX0ZJTEUgYW5kCi0rCUNNREFSR19JTklUX0NPTU1BTkQuCi0rCShj YXB0dXJlZF9tYWluKTogTmV3IGVudW0gaXRlbXMgT1BUX0lYIGFuZCBPUFRfSUVYLiAgQWRkCi0r CSJpbml0LWNvbW1hbmQiLCAiaW5pdC1ldmFsLWNvbW1hbmQiLCAiaXgiIGFuZCAiaWV4IiB0byB0 aGUgdmFyaWFibGUKLSsJbG9uZ19vcHRpb25zLiAgSGFuZGxlIE9QVF9JWCBhbmQgT1BUX0lFWC4g IFByb2Nlc3MgdGhlbSBmcm9tIENNREFSR19WRUMuCi0rCU5ldyBjb21tZW50IGZvciBDTURBUkdf RklMRSBhbmQgQ01EQVJHX0NPTU1BTkQgcHJvY2Vzc2luZy4KLSsJKHByaW50X2dkYl9oZWxwKTog RGVzY3JpYmUgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotKwktLWluaXQtZXZhbC1jb21t YW5kPUNPTU1BTkQsIC1pZXguCi0rCi0rMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlDb2RlIGNsZWFudXAuCi0gCSogbWFpbi5jIChz dHJ1Y3QgY21kYXJnKTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBtb3JlIGNvbW1lbnRz LgotIAkoY21kYXJnX3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICsw MjAwCi1AQCAtMjgsNiArMjgsMTMgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxk L2djYy9leHByLmMsIGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcg Y29tbWFuZCBsaW5lIG9wdGlvbnMKLSsKLSstLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAg ICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgotKy0taW5pdC1ldmFsLWNv bW1hbmQ9Q09NTUFORCwgLWlleCBMaWtlIC0tZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1leCBidXQK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBpdCBiZWZvcmUgbG9h ZGluZyBpbmZlcmlvci4KLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgNy40Ci0gCi0gKiBHREIgbm93 IGhhbmRsZXMgYW1iaWd1b3VzIGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRseTsgdGhlIGV4aXN0 aW5nCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Mjox NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAx Mi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLUBAIC0yODUsNyArMjg1LDEzIEBAIHR5 cGVkZWYgc3RydWN0IGNtZGFyZyB7Ci0gICAgIENNREFSR19GSUxFLAotIAotICAgICAvKiBPcHRp b24gdHlwZSAtZXguICAqLwotLSAgICBDTURBUkdfQ09NTUFORAotKyAgICBDTURBUkdfQ09NTUFO RCwKLSsKLSsgICAgLyogT3B0aW9uIHR5cGUgLWl4LiAgKi8KLSsgICAgQ01EQVJHX0lOSVRfRklM RSwKLSsgICAgCi0rICAgIC8qIE9wdGlvbiB0eXBlIC1pZXguICAqLwotKyAgICBDTURBUkdfSU5J VF9DT01NQU5ECi0gICB9IHR5cGU7Ci0gCi0gICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZp bGVuYW1lIG9yIHRoZSBHREIgY29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5Ci1AQCAtNDM0 LDcgKzQ0MCw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgT1BUX1NUQVRJ U1RJQ1MsCi0gICAgICAgT1BUX1RVSSwKLSAgICAgICBPUFRfTk9XSU5ET1dTLAotLSAgICAgIE9Q VF9XSU5ET1dTCi0rICAgICAgT1BUX1dJTkRPV1MsCi0rICAgICAgT1BUX0lYLAotKyAgICAgIE9Q VF9JRVgKLSAgICAgfTsKLSAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10g PQotICAgICB7Ci1AQCAtNDc1LDYgKzQ4MywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQotICAgICAgIHsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCAmcHJpbnRfdmVyc2lvbiwgMX0sCi0g ICAgICAgeyJ4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd4J30sCi0gICAgICAgeyJleCIsIHJl cXVpcmVkX2FyZ3VtZW50LCAwLCAnWCd9LAotKyAgICAgIHsiaW5pdC1jb21tYW5kIiwgcmVxdWly ZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0sCi0rICAgICAgeyJpbml0LWV2YWwtY29tbWFuZCIsIHJl cXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKLSsgICAgICB7Iml4IiwgcmVxdWlyZWRfYXJn dW1lbnQsIDAsIE9QVF9JWH0sCi0rICAgICAgeyJpZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwg T1BUX0lFWH0sCi0gI2lmZGVmIEdEQlRLCi0gICAgICAgeyJ0Y2xjb21tYW5kIiwgcmVxdWlyZWRf YXJndW1lbnQsIDAsICd6J30sCi0gICAgICAgeyJlbmFibGUtZXh0ZXJuYWwtZWRpdG9yIiwgbm9f YXJndW1lbnQsIDAsICd5J30sCi1AQCAtNjAzLDYgKzYxNSwxOSBAQCBjYXB0dXJlZF9tYWluICh2 b2lkICpkYXRhKQotIAkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywg JmNtZGFyZyk7Ci0gCSAgICB9Ci0gCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JWDoKLSsJICAg IHsKLSsJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0ZJTEUsIG9w dGFyZyB9OwotKwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywg JmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JRVg6Ci0rCSAg ICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfSU5JVF9DT01NQU5E LCBvcHRhcmcgfTsKLSsKLSsJICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192 ZWMsICZjbWRhcmcpOwotKwkgICAgfQotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAnQic6Ci0gCSAg ICBiYXRjaF9mbGFnID0gYmF0Y2hfc2lsZW50ID0gMTsKLUBAIC04NzcsNiArOTAyLDIwIEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICBxdWl0X3ByZV9wcmludCA9IGVycm9yX3ByZV9w cmludDsKLSAgIHdhcm5pbmdfcHJlX3ByaW50ID0gXygiXG53YXJuaW5nOiAiKTsKLSAKLSsgIC8q IFByb2Nlc3MgJy1peCcgYW5kICctaWV4JyBvcHRpb25zIGVhcmx5LiAgKi8KLSsgIGZvciAoaSA9 IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKysp Ci0rICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0rICAgIHsKLSsgICAgICBjYXNlIENNREFS R19JTklUX0ZJTEU6Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3Njcmlw dCwgY21kYXJnX3AtPnN0cmluZywKLSsJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tf QUxMKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBDTURBUkdfSU5JVF9DT01NQU5EOgotKyAgICAg ICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21kYXJnX3AtPnN0cmlu ZywKLSsJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0r ICAgIH0KLSsKLSAgIC8qIFJlYWQgYW5kIGV4ZWN1dGUgdGhlIHN5c3RlbS13aWRlIGdkYmluaXQg ZmlsZSwgaWYgaXQgZXhpc3RzLgotICAgICAgVGhpcyBpcyBkb25lICpiZWZvcmUqIGFsbCB0aGUg Y29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhcmUKLSAgICAgIHByb2Nlc3NlZDsgaXQgc2V0cyBnbG9i YWwgcGFyYW1ldGVycywgd2hpY2ggYXJlIGluZGVwZW5kZW50IG9mCi1AQCAtOTkzLDYgKzEwMzIs NyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgQUxMX09CSkZJTEVTIChvYmpmaWxl KQotICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi0rICAv KiBQcm9jZXNzICcteCcgYW5kICctZXgnIG9wdGlvbnMuICAqLwotICAgZm9yIChpID0gMDsgVkVD X2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKLSAgICAg c3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKLSAgICAgewotQEAgLTEwOTMsNiArMTEzMyw4IEBAIE9w dGlvbnM6XG5cblwKLSAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIGEgc2luZ2xlIEdEQiBj b21tYW5kLlxuXAotICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSB1c2VkIG11bHRpcGxlIHRp bWVzIGFuZCBpbiBjb25qdW5jdGlvblxuXAotICAgICAgICAgICAgICAgICAgICAgIHdpdGggLS1j b21tYW5kLlxuXAotKyAgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IExpa2UgLXggYnV0IGV4ZWN1 dGUgaXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCi0rICAtLWluaXQtZXZhbC1jb21tYW5k PUNPTU1BTkQsIC1pZXggTGlrZSAtZXggYnV0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLlxuXAot ICAgLS1jb3JlPUNPUkVGSUxFICAgIEFuYWx5emUgdGhlIGNvcmUgZHVtcCBDT1JFRklMRS5cblwK LSAgIC0tcGlkPVBJRCAgICAgICAgICBBdHRhY2ggdG8gcnVubmluZyBwcm9jZXNzIFBJRC5cblwK LSAiKSwgc3RyZWFtKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRl eGluZm8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIz MjY4MTA1MiArMDIwMAotQEAgLTk4OSw2ICs5ODksMjIgQEAgYWxzbyBiZSBpbnRlcmxlYXZlZCB3 aXRoIEBzYW1wey1jb21tYW5kfQotICAgIC14IHNldGJyZWFrcG9pbnRzIC1leCAncnVuJyBhLm91 dAotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0rQGl0ZW0gLWluaXQtY29tbWFuZCBAdmFye2ZpbGV9 Ci0rQGl0ZW14IC1peCBAdmFye2ZpbGV9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtY29tbWFuZH0K LStAY2luZGV4IEBjb2Rley1peH0KLStFeGVjdXRlIGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2Zp bGV9IGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhy ZWZ7U3RhcnR1cH0uCi0rCi0rQGl0ZW0gLWluaXQtZXZhbC1jb21tYW5kIEB2YXJ7Y29tbWFuZH0K LStAaXRlbXggLWlleCBAdmFye2NvbW1hbmR9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtZXZhbC1j b21tYW5kfQotK0BjaW5kZXggQGNvZGV7LWlleH0KLStFeGVjdXRlIGEgc2luZ2xlIEB2YWx1ZXtH REJOfSBjb21tYW5kIGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJp b3IuCi0rQHhyZWZ7U3RhcnR1cH0uCi0rCi0gQGl0ZW0gLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9y eX0KLSBAaXRlbXggLWQgQHZhcntkaXJlY3Rvcnl9Ci0gQGNpbmRleCBAY29kZXstLWRpcmVjdG9y eX0KLUBAIC0xMjUwLDYgKzEyNjYsMTMgQEAgU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRl ciBhcyBzcGVjaQotIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgotIAotIEBp dGVtCi0rRXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRo ZSBAc2FtcHstaWV4fSBhbmQKLStAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVk IG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKLStAc2FtcHstZXh9IGFuZCBAc2Ft cHsteH0gb3B0aW9ucyBpbnN0ZWFkLCBidXQgdGhpcyB3YXkgeW91IGNhbiBhcHBseQotK3NldHRp bmdzIGJlZm9yZSBAdmFsdWV7R0RCTn0gaW5pdCBmaWxlcyBnZXQgZXhlY3V0ZWQgYW5kIGJlZm9y ZSBpbmZlcmlvcgotK2dldHMgbG9hZGVkLgotKwotK0BpdGVtCi0gQGNpbmRleCBpbml0IGZpbGUK LSBSZWFkcyB0aGUgc3lzdGVtLXdpZGUgQGRmbntpbml0IGZpbGV9IChpZiBAb3B0aW9uey0td2l0 aC1zeXN0ZW0tZ2RiaW5pdH0gd2FzCi0gdXNlZCB3aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsg QHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24sCi1AQCAtMTI4MywxNCArMTMwNiwxMSBA QCBJZiB5b3Ugd2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBkbyBz b21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdkYiAt ZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIC1leCAiZmlsZSBteXByb2dyYW0iCi0rJCBn ZGIgLWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFs bGV4YW1wbGUKLSAKLS1UaGUgZm9sbG93aW5nIGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0 by1sb2FkaW5nIGlzIHR1cm5lZCBvZmYgdG9vIGxhdGU6Ci0tCi0tQHNtYWxsZXhhbXBsZQotLSQg Z2RiIC1leCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0tQGVuZCBzbWFs bGV4YW1wbGUKLStPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1 dG8tbG9hZGluZyBpcyB0aGVuIHR1cm5lZAotK29mZiB0b28gbGF0ZS4KLSAKLSBAaXRlbQotIFJl YWRzIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHsteH0gb3B0aW9uLiAgQHhy ZWZ7Q29tbWFuZAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu Z2RiL3NlbGZ0ZXN0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDE6MzEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dk Yi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCi1A QCAtOTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRl c2NyaXB0aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKLSAJCXNl dCBjb21tYW5kICJzdGVwIgotIAkgICAgfQotKwkgICAgLXJlICIuKmNtZGFyZ192ZWMgPSBOVUxM LiokZ2RiX3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdf dmVjIGluaXRpYWxpemF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAg ICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdk Yl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5k X3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAi bmV4dCIKLUBAIC0xMjgsMTggKzEzMiw2IEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsK LSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNvbmRpdGlvbmFsIHN0YWNrIGFsaWdubWVu dCBhbGxvY2EiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLSAJICAgIH0KLS0JICAgIC1yZSAiLipj bWRzaXplID0gMS4qJGdkYl9wcm9tcHQgJCIgewotLQkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92 ZXIgY21kc2l6ZSBpbml0aWFsaXphdGlvbiIKLS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAg fQotLQkgICAgLXJlICIuKmNtZGFyZyA9IC4qIHhtYWxsb2MuKiRnZGJfcHJvbXB0ICQiIHsKLS0J CXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNtZGFyZyBpbml0aWFsaXphdGlvbiB2aWEgeG1h bGxvYyIKLS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKm5jbWQg PSAwLiokZ2RiX3Byb21wdCAkIiB7Ci0tCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBuY21k IGluaXRpYWxpemF0aW9uIgotLQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0gCSAgICAt cmUgIi4qZGlyc2l6ZSA9IDEuKiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAi bmV4dCBvdmVyIGRpcnNpemUgaW5pdGlhbGl6YXRpb24iCi0gCQlzZXQgY29tbWFuZCAibmV4dCIK LUBAIC0xNjMsNiArMTU1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNl dCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIHRleHRkb21haW4gUEFDS0FHRSIKLSAJCXNldCBjb21t YW5kICJuZXh0IgotIAkgICAgfQotKwkgICAgLXJlICIuKlZFQ19jbGVhbnVwIC5jbWRhcmdfcy4q JGdkYl9wcm9tcHQgJCIgewotKwkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnX3Mg VkVDX2NsZWFudXAiCi0rCQlzZXQgY29tbWFuZCAibmV4dCIKLSsJICAgIH0KLSAJICAgIC1yZSAi XFswLTlcXStcW1x0IFxdK1x7XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlv biAic3RlcCBvdmVyIGluaXRpYWwgYnJhY2UiCi0gCQlzZXQgY29tbWFuZCAic3RlcCIKCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMDVvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA1b2YyMi5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ4Y2MzCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA1b2YyMi5wYXRjaApAQCAtMCwwICsxLDI0NCBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNS5odG1sCisK KyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5OjIzCTEuMTQwMjcKKyMjIC0xLDUgKzEs MTggQEAKKyAyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+CisgCisrCSogTkVXUzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9 RklMRSwgLWl4IGFuZAorKwktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCisrCSog bWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJHX0lOSVRfRklMRSBh bmQKKysJQ01EQVJHX0lOSVRfQ09NTUFORC4KKysJKGNhcHR1cmVkX21haW4pOiBOZXcgZW51bSBp dGVtcyBPUFRfSVggYW5kIE9QVF9JRVguICBBZGQKKysJImluaXQtY29tbWFuZCIsICJpbml0LWV2 YWwtY29tbWFuZCIsICJpeCIgYW5kICJpZXgiIHRvIHRoZSB2YXJpYWJsZQorKwlsb25nX29wdGlv bnMuICBIYW5kbGUgT1BUX0lYIGFuZCBPUFRfSUVYLiAgUHJvY2VzcyB0aGVtIGZyb20gQ01EQVJH X1ZFQy4KKysJTmV3IGNvbW1lbnQgZm9yIENNREFSR19GSUxFIGFuZCBDTURBUkdfQ09NTUFORCBw cm9jZXNzaW5nLgorKwkocHJpbnRfZ2RiX2hlbHApOiBEZXNjcmliZSAtLWluaXQtY29tbWFuZD1G SUxFLCAtaXggYW5kCisrCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKysKKysy MDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Cisr CisgCUNvZGUgY2xlYW51cC4KKyAJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhl cmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCisgCShjbWRhcmdfcywgVkVDIChjbWRh cmdfcykpOiBOZXcuCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAw OjQxOjMwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJ MjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKK0BAIC0yOCw2ICsyOCwxMyBAQAor ICAgbm93IHNldCBhIGJyZWFrcG9pbnQgaW4gYnVpbGQvZ2NjL2V4cHIuYywgYnV0IG5vdAorICAg YnVpbGQvbGliY3BwL2V4cHIuYy4KKyAKKysqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworKwor Ky0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0 IGV4ZWN1dGUgaXQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIGxv YWRpbmcgaW5mZXJpb3IuCisrLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4IExpa2Ug LS1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWV4IGJ1dAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleGVjdXRlIGl0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgorKworICoqKiBD aGFuZ2VzIGluIEdEQiA3LjQKKyAKKyAqIEdEQiBub3cgaGFuZGxlcyBhbWJpZ3VvdXMgbGluZXNw ZWNzIG1vcmUgY29uc2lzdGVudGx5OyB0aGUgZXhpc3RpbmcKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIyNjY4MTA2 OCArMDIwMAorQEAgLTI4NSw3ICsyODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgY21kYXJnIHsKKyAg ICAgQ01EQVJHX0ZJTEUsCisgCisgICAgIC8qIE9wdGlvbiB0eXBlIC1leC4gICovCistICAgIENN REFSR19DT01NQU5ECisrICAgIENNREFSR19DT01NQU5ELAorKworKyAgICAvKiBPcHRpb24gdHlw ZSAtaXguICAqLworKyAgICBDTURBUkdfSU5JVF9GSUxFLAorKyAgICAKKysgICAgLyogT3B0aW9u IHR5cGUgLWlleC4gICovCisrICAgIENNREFSR19JTklUX0NPTU1BTkQKKyAgIH0gdHlwZTsKKyAK KyAgIC8qIFZhbHVlIG9mIHRoaXMgb3B0aW9uIC0gZmlsZW5hbWUgb3IgdGhlIEdEQiBjb21tYW5k IGl0c2VsZi4gIFN0cmluZyBtZW1vcnkKK0BAIC00MzQsNyArNDQwLDkgQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKKyAgICAgICBPUFRfU1RBVElTVElDUywKKyAgICAgICBPUFRfVFVJLAor ICAgICAgIE9QVF9OT1dJTkRPV1MsCistICAgICAgT1BUX1dJTkRPV1MKKysgICAgICBPUFRfV0lO RE9XUywKKysgICAgICBPUFRfSVgsCisrICAgICAgT1BUX0lFWAorICAgICB9OworICAgICBzdGF0 aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9CisgICAgIHsKK0BAIC00NzUsNiArNDgz LDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgICAgeyJ2ZXJzaW9uIiwgbm9f YXJndW1lbnQsICZwcmludF92ZXJzaW9uLCAxfSwKKyAgICAgICB7IngiLCByZXF1aXJlZF9hcmd1 bWVudCwgMCwgJ3gnfSwKKyAgICAgICB7ImV4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdYJ30s CisrICAgICAgeyJpbml0LWNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lYfSwK KysgICAgICB7ImluaXQtZXZhbC1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9J RVh9LAorKyAgICAgIHsiaXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lYfSwKKysgICAg ICB7ImlleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKKyAjaWZkZWYgR0RCVEsK KyAgICAgICB7InRjbGNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3onfSwKKyAgICAg ICB7ImVuYWJsZS1leHRlcm5hbC1lZGl0b3IiLCBub19hcmd1bWVudCwgMCwgJ3knfSwKK0BAIC02 MDMsNiArNjE1LDE5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgCSAgICAgIFZFQ19z YWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKyAJICAgIH0KKyAJICAg IGJyZWFrOworKwkgIGNhc2UgT1BUX0lYOgorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJn IGNtZGFyZyA9IHsgQ01EQVJHX0lOSVRfRklMRSwgb3B0YXJnIH07CisrCisrCSAgICAgIFZFQ19z YWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKysJICAg IGJyZWFrOworKwkgIGNhc2UgT1BUX0lFWDoKKysJICAgIHsKKysJICAgICAgc3RydWN0IGNtZGFy ZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0NPTU1BTkQsIG9wdGFyZyB9OworKworKwkgICAgICBW RUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7CisrCSAgICB9Cisg CSAgICBicmVhazsKKyAJICBjYXNlICdCJzoKKyAJICAgIGJhdGNoX2ZsYWcgPSBiYXRjaF9zaWxl bnQgPSAxOworQEAgLTg3Nyw2ICs5MDIsMjAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK KyAgIHF1aXRfcHJlX3ByaW50ID0gZXJyb3JfcHJlX3ByaW50OworICAgd2FybmluZ19wcmVfcHJp bnQgPSBfKCJcbndhcm5pbmc6ICIpOworIAorKyAgLyogUHJvY2VzcyAnLWl4JyBhbmQgJy1pZXgn IG9wdGlvbnMgZWFybHkuICAqLworKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19z LCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKKysgICAgc3dpdGNoIChjbWRhcmdfcC0+ dHlwZSkKKysgICAgeworKyAgICAgIGNhc2UgQ01EQVJHX0lOSVRfRklMRToKKysgICAgICAgIGNh dGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdfcC0+c3RyaW5nLAorKwkJ CSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworKwlicmVhazsKKysgICAgICBj YXNlIENNREFSR19JTklUX0NPTU1BTkQ6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAo ZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAorKwkJCSAgICAgICFiYXRjaF9mbGFn LCBSRVRVUk5fTUFTS19BTEwpOworKwlicmVhazsKKysgICAgfQorKworICAgLyogUmVhZCBhbmQg ZXhlY3V0ZSB0aGUgc3lzdGVtLXdpZGUgZ2RiaW5pdCBmaWxlLCBpZiBpdCBleGlzdHMuCisgICAg ICBUaGlzIGlzIGRvbmUgKmJlZm9yZSogYWxsIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFy ZQorICAgICAgcHJvY2Vzc2VkOyBpdCBzZXRzIGdsb2JhbCBwYXJhbWV0ZXJzLCB3aGljaCBhcmUg aW5kZXBlbmRlbnQgb2YKK0BAIC05OTMsNiArMTAzMiw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCisgICBBTExfT0JKRklMRVMgKG9iamZpbGUpCisgICAgIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKKyAKKysgIC8qIFByb2Nlc3MgJy14JyBhbmQgJy1leCcg b3B0aW9ucy4gICovCisgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoY21kYXJnX3MsIGNtZGFy Z192ZWMsIGksIGNtZGFyZ19wKTsgaSsrKQorICAgICBzd2l0Y2ggKGNtZGFyZ19wLT50eXBlKQor ICAgICB7CitAQCAtMTA5Myw2ICsxMTMzLDggQEAgT3B0aW9uczpcblxuXAorICAgICAgICAgICAg ICAgICAgICAgIEV4ZWN1dGUgYSBzaW5nbGUgR0RCIGNvbW1hbmQuXG5cCisgICAgICAgICAgICAg ICAgICAgICAgTWF5IGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgYW5kIGluIGNvbmp1bmN0aW9uXG5c CisgICAgICAgICAgICAgICAgICAgICAgd2l0aCAtLWNvbW1hbmQuXG5cCisrICAtLWluaXQtY29t bWFuZD1GSUxFLCAtaXggTGlrZSAteCBidXQgZXhlY3V0ZSBpdCBiZWZvcmUgbG9hZGluZyBpbmZl cmlvci5cblwKKysgIC0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleCBMaWtlIC1leCBi dXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCisgICAtLWNvcmU9Q09SRUZJTEUgICAgQW5h bHl6ZSB0aGUgY29yZSBkdW1wIENPUkVGSUxFLlxuXAorICAgLS1waWQ9UElEICAgICAgICAgIEF0 dGFjaCB0byBydW5uaW5nIHByb2Nlc3MgUElELlxuXAorICIpLCBzdHJlYW0pOworSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6 NDE6MzEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCitAQCAtOTg5LDYg Kzk4OSwyMiBAQCBhbHNvIGJlIGludGVybGVhdmVkIHdpdGggQHNhbXB7LWNvbW1hbmR9CisgICAg LXggc2V0YnJlYWtwb2ludHMgLWV4ICdydW4nIGEub3V0CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAK KytAaXRlbSAtaW5pdC1jb21tYW5kIEB2YXJ7ZmlsZX0KKytAaXRlbXggLWl4IEB2YXJ7ZmlsZX0K KytAY2luZGV4IEBjb2Rley0taW5pdC1jb21tYW5kfQorK0BjaW5kZXggQGNvZGV7LWl4fQorK0V4 ZWN1dGUgY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0gYmVmb3JlIGxvYWRpbmcgZ2RiaW5p dCBmaWxlcyBvciB0aGUKKytpbmZlcmlvci4KKytAeHJlZntTdGFydHVwfS4KKysKKytAaXRlbSAt aW5pdC1ldmFsLWNvbW1hbmQgQHZhcntjb21tYW5kfQorK0BpdGVteCAtaWV4IEB2YXJ7Y29tbWFu ZH0KKytAY2luZGV4IEBjb2Rley0taW5pdC1ldmFsLWNvbW1hbmR9CisrQGNpbmRleCBAY29kZXst aWV4fQorK0V4ZWN1dGUgYSBzaW5nbGUgQHZhbHVle0dEQk59IGNvbW1hbmQgYmVmb3JlIGxvYWRp bmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKKytpbmZlcmlvci4KKytAeHJlZntTdGFydHVwfS4KKysK KyBAaXRlbSAtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQorIEBpdGVteCAtZCBAdmFye2RpcmVj dG9yeX0KKyBAY2luZGV4IEBjb2Rley0tZGlyZWN0b3J5fQorQEAgLTEyNTAsNiArMTI2NiwxMyBA QCBTZXRzIHVwIHRoZSBjb21tYW5kIGludGVycHJldGVyIGFzIHNwZWNpCisgKEBweHJlZntNb2Rl IE9wdGlvbnMsIGludGVycHJldGVyfSkuCisgCisgQGl0ZW0KKytFeGVjdXRlcyBjb21tYW5kcyBh bmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAorK0BzYW1w ey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBzaG91 bGQgdXNlIHRoZQorK0BzYW1wey1leH0gYW5kIEBzYW1wey14fSBvcHRpb25zIGluc3RlYWQsIGJ1 dCB0aGlzIHdheSB5b3UgY2FuIGFwcGx5Cisrc2V0dGluZ3MgYmVmb3JlIEB2YWx1ZXtHREJOfSBp bml0IGZpbGVzIGdldCBleGVjdXRlZCBhbmQgYmVmb3JlIGluZmVyaW9yCisrZ2V0cyBsb2FkZWQu CisrCisrQGl0ZW0KKyBAY2luZGV4IGluaXQgZmlsZQorIFJlYWRzIHRoZSBzeXN0ZW0td2lkZSBA ZGZue2luaXQgZmlsZX0gKGlmIEBvcHRpb257LS13aXRoLXN5c3RlbS1nZGJpbml0fSB3YXMKKyB1 c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVle0dEQk59OyBAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmln dXJhdGlvbiwKK0BAIC0xMjgzLDE0ICsxMzA2LDExIEBAIElmIHlvdSB3aXNoIHRvIGRpc2FibGUg dGhlIGF1dG8tbG9hZGluZworIHlvdSBtdXN0IGRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dp bmc6CisgCisgQHNtYWxsZXhhbXBsZQorLSQgZ2RiIC1leCAic2V0IGF1dG8tbG9hZC1zY3JpcHRz IG9mZiIgLWV4ICJmaWxlIG15cHJvZ3JhbSIKKyskIGdkYiAtaWV4ICJzZXQgYXV0by1sb2FkLXNj cmlwdHMgb2ZmIiBteXByb2dyYW0KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorLVRoZSBmb2xsb3dp bmcgZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdHVybmVkIG9mZiB0 b28gbGF0ZToKKy0KKy1Ac21hbGxleGFtcGxlCistJCBnZGIgLWV4ICJzZXQgYXV0by1sb2FkLXNj cmlwdHMgb2ZmIiBteXByb2dyYW0KKy1AZW5kIHNtYWxsZXhhbXBsZQorK09wdGlvbiBAc2FtcHst ZXh9IGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHRoZW4gdHVybmVk Cisrb2ZmIHRvbyBsYXRlLgorIAorIEBpdGVtCisgUmVhZHMgY29tbWFuZCBmaWxlcyBzcGVjaWZp ZWQgYnkgdGhlIEBzYW1wey14fSBvcHRpb24uICBAeHJlZntDb21tYW5kCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9z ZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAwMDo0MTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMi0w NC0xOCAwMDo0Mjo1MS4yMzI2ODEwNTIgKzAyMDAKK0BAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRv X3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRo b25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgorIAkJc2V0IGNvbW1hbmQgInN0ZXAiCisgCSAgICB9 CisrCSAgICAtcmUgIi4qY21kYXJnX3ZlYyA9IE5VTEwuKiRnZGJfcHJvbXB0ICQiIHsKKysJCXNl dCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRpb24iCisrCQlz ZXQgY29tbWFuZCAic3RlcCIKKysJICAgIH0KKyAJICAgIC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9 IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7CisgCQlzZXQgZGVz Y3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0 aGluZyBpdCBjYWxscyIKKyAJCXNldCBjb21tYW5kICJuZXh0IgorQEAgLTEyOCwxOCArMTMyLDYg QEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30geworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0 IG92ZXIgY29uZGl0aW9uYWwgc3RhY2sgYWxpZ25tZW50IGFsbG9jYSIKKyAJCXNldCBjb21tYW5k ICJuZXh0IgorIAkgICAgfQorLQkgICAgLXJlICIuKmNtZHNpemUgPSAxLiokZ2RiX3Byb21wdCAk IiB7CistCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRzaXplIGluaXRpYWxpemF0aW9u IgorLQkJc2V0IGNvbW1hbmQgIm5leHQiCistCSAgICB9CistCSAgICAtcmUgIi4qY21kYXJnID0g LiogeG1hbGxvYy4qJGdkYl9wcm9tcHQgJCIgeworLQkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92 ZXIgY21kYXJnIGluaXRpYWxpemF0aW9uIHZpYSB4bWFsbG9jIgorLQkJc2V0IGNvbW1hbmQgIm5l eHQiCistCSAgICB9CistCSAgICAtcmUgIi4qbmNtZCA9IDAuKiRnZGJfcHJvbXB0ICQiIHsKKy0J CXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIG5jbWQgaW5pdGlhbGl6YXRpb24iCistCQlzZXQg Y29tbWFuZCAibmV4dCIKKy0JICAgIH0KKyAJICAgIC1yZSAiLipkaXJzaXplID0gMS4qJGdkYl9w cm9tcHQgJCIgeworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgZGlyc2l6ZSBpbml0aWFs aXphdGlvbiIKKyAJCXNldCBjb21tYW5kICJuZXh0IgorQEAgLTE2Myw2ICsxNTUsMTAgQEAgcHJv YyBkb19zdGVwc19hbmRfbmV4dHMge30geworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIg dGV4dGRvbWFpbiBQQUNLQUdFIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCisgCSAgICB9CisrCSAg ICAtcmUgIi4qVkVDX2NsZWFudXAgLmNtZGFyZ19zLiokZ2RiX3Byb21wdCAkIiB7CisrCQlzZXQg ZGVzY3JpcHRpb24gIm5leHQgb3ZlciBjbWRhcmdfcyBWRUNfY2xlYW51cCIKKysJCXNldCBjb21t YW5kICJuZXh0IgorKwkgICAgfQorIAkgICAgLXJlICJcWzAtOVxdK1xbXHQgXF0rXHtcclxuJGdk Yl9wcm9tcHQgJCIgeworIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgaW5pdGlhbCBicmFj ZSIKKyAJCXNldCBjb21tYW5kICJzdGVwIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNm9m MTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDZvZjE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBhZTEyMWVmLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wNm9mMTgucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM2Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDMvMTkgMTg6MTk6MjMJMS4xNDAyNwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDMvMTkgMTg6MjM6NTEJMS4xNDAyOAotIyMgLTEsNSArMSwxMyBAQAotIDIwMTItMDMtMTkgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJQ29kZSBjbGVh bnVwLgotKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6 IE5ldyB2YXJpYWJsZSBiYWNrX3RvLgotKwlUdXJuIGZjbG9zZSBhbmQgeGZyZWUgY2FsbHMgaW50 byBtYWtlX2NsZWFudXBfZmNsb3NlIGFuZCBtYWtlX2NsZWFudXAKLSsJd2l0aCB4ZnJlZS4KLSsJ KGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFR1cm4gZmNsb3NlIGludG8gbWFrZV9jbGVhbnVw X2ZjbG9zZS4KLSsKLSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCi0gCSogTkVXUzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1pbml0LWNv bW1hbmQ9RklMRSwgLWl4IGFuZAotIAktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXgu Ci0gCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJHX0lOSVRf RklMRSBhbmQKLS0tLSBzcmMvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAxLzI2IDIx OjU0OjQ1CTEuMTgKLSsrKyBzcmMvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAzLzE5 IDE4OjIzOjUyCTEuMTkKLUBAIC0yNTQsNiArMjU0LDcgQEAKLSAgICAgICBGSUxFICpzdHJlYW07 Ci0gICAgICAgY2hhciAqZnVsbF9wYXRoOwotICAgICAgIGludCBvcGVuZWQsIGluX2hhc2hfdGFi bGU7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0gCi0gICAgICAgaWYgKCpwICE9 IDEpCi0gCXsKLUBAIC0yODYsNiArMjg3LDEzIEBACi0gICAgICAgb3BlbmVkID0gZmluZF9hbmRf b3Blbl9zY3JpcHQgKGZpbGUsIDEgLypzZWFyY2hfcGF0aCovLAotIAkJCQkgICAgICZzdHJlYW0s ICZmdWxsX3BhdGgpOwotIAotKyAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xl YW51cCwgTlVMTCk7Ci0rICAgICAgaWYgKG9wZW5lZCkKLSsJewotKwkgIG1ha2VfY2xlYW51cF9m Y2xvc2UgKHN0cmVhbSk7Ci0rCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsJ fQotKwotICAgICAgIC8qIElmIG9uZSBzY3JpcHQgaXNuJ3QgZm91bmQgaXQncyBub3QgdW5jb21t b24gZm9yIG1vcmUgdG8gbm90IGJlCi0gCSBmb3VuZCBlaXRoZXIuICBXZSBkb24ndCB3YW50IHRv IHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2gKLSAJIHNjcmlwdCwgdG9vIG11Y2ggbm9p c2UuICBJbnN0ZWFkLCB3ZSBwcmludCB0aGUgd2FybmluZyBvbmNlIGFuZCB0ZWxsCi1AQCAtMzEz LDkgKzMyMSw5IEBACi0gCSAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVk LCBsb2FkIGl0LiAgKi8KLSAJICBpZiAoISBpbl9oYXNoX3RhYmxlKQotIAkgICAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKLS0J ICBmY2xvc2UgKHN0cmVhbSk7Ci0tCSAgeGZyZWUgKGZ1bGxfcGF0aCk7Ci0gCX0KLSsKLSsgICAg ICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDIwLDYgKzQyOCw4 IEBACi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbzsKLSAKLSsgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0rCi0gICAgICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyIKLSAJIGNhbiBwcmludCBpdC4gICovCi0gICAgICAgcHNwYWNlX2luZm8gPQot QEAgLTQzMiw3ICs0NDIsNiBAQAotIAkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRv IGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKLSAJIGxvYWRzIGFueXdheS4gICovCi0gICAg ICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1 Z2ZpbGUpOwotLSAgICAgIGZjbG9zZSAoaW5wdXQpOwotICAgICB9Ci0gCi0gICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNm9mMjIucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMDZvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmFlMTIxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDZvZjIyLnBhdGNo CkBAIC0wLDAgKzEsNzEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDMvbXNnMDAyMzYuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODox OToyMwkxLjE0MDI3CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoyMzo1MQkx LjE0MDI4CisjIyAtMSw1ICsxLDEzIEBACisgMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorKwlDb2RlIGNsZWFudXAuCisrCSogcHl0aG9u L3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTmV3IHZhcmlhYmxlIGJh Y2tfdG8uCisrCVR1cm4gZmNsb3NlIGFuZCB4ZnJlZSBjYWxscyBpbnRvIG1ha2VfY2xlYW51cF9m Y2xvc2UgYW5kIG1ha2VfY2xlYW51cAorKwl3aXRoIHhmcmVlLgorKwkoYXV0b19sb2FkX29iamZp bGVfc2NyaXB0KTogVHVybiBmY2xvc2UgaW50byBtYWtlX2NsZWFudXBfZmNsb3NlLgorKworKzIw MTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysK KyAJKiBORVdTOiBEZXNjcmliZSBuZXcgb3B0aW9ucyAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXgg YW5kCisgCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKyAJKiBtYWluLmMgKHN0 cnVjdCBjbWRhcmcpOiBOZXcgZW51bSBpdGVtcyBDTURBUkdfSU5JVF9GSUxFIGFuZAorLS0tIHNy Yy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDEvMjYgMjE6NTQ6NDUJMS4xOAorKysr IHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDMvMTkgMTg6MjM6NTIJMS4xOQor QEAgLTI1NCw2ICsyNTQsNyBAQAorICAgICAgIEZJTEUgKnN0cmVhbTsKKyAgICAgICBjaGFyICpm dWxsX3BhdGg7CisgICAgICAgaW50IG9wZW5lZCwgaW5faGFzaF90YWJsZTsKKysgICAgICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190bzsKKyAKKyAgICAgICBpZiAoKnAgIT0gMSkKKyAJeworQEAgLTI4 Niw2ICsyODcsMTMgQEAKKyAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoZmls ZSwgMSAvKnNlYXJjaF9wYXRoKi8sCisgCQkJCSAgICAgJnN0cmVhbSwgJmZ1bGxfcGF0aCk7Cisg CisrICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKKysg ICAgICBpZiAob3BlbmVkKQorKwl7CisrCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsK KysJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworKwl9CisrCisgICAgICAgLyog SWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9yZSB0byBu b3QgYmUKKyAJIGZvdW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3Ig bWVzc2FnZSBmb3IgZWFjaAorIAkgc2NyaXB0LCB0b28gbXVjaCBub2lzZS4gIEluc3RlYWQsIHdl IHByaW50IHRoZSB3YXJuaW5nIG9uY2UgYW5kIHRlbGwKK0BAIC0zMTMsOSArMzIxLDkgQEAKKyAJ ICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwor IAkgIGlmICghIGluX2hhc2hfdGFibGUpCisgCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworLQkgIGZjbG9zZSAoc3RyZWFt KTsKKy0JICB4ZnJlZSAoZnVsbF9wYXRoKTsKKyAJfQorKworKyAgICAgIGRvX2NsZWFudXBzIChi YWNrX3RvKTsKKyAgICAgfQorIH0KKyAKK0BAIC00MjAsNiArNDI4LDggQEAKKyAgICAgeworICAg ICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworIAorKyAgICAg IG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKKysKKyAgICAgICAvKiBBZGQgdGhpcyBzY3Jp cHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorIAkg Y2FuIHByaW50IGl0LiAgKi8KKyAgICAgICBwc3BhY2VfaW5mbyA9CitAQCAtNDMyLDcgKzQ0Miw2 IEBACisgCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1 bmRlciBtdWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKyAgICAgICBzb3VyY2VfcHl0aG9u X3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CistICAgICAg ZmNsb3NlIChpbnB1dCk7CisgICAgIH0KKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Cgpk aWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wN29m MTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZDEyOWUuLjAwMDAwMDAK LS0tIGEvZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyOTYu aHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS4x Mjg5Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjcgMjA6MTU6MjAJMS4xMjkw Ci0jIyAtMSwzICsxLDEyIEBACi0rMjAxMi0wMy0yNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBS ZW5hbWUgbm9kZSByZWZlcmVuY2UKLSsJJy5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uJyB0byAn ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbicuCi0rCVR3aWNlLgotKwkoLmRlYnVnX2dkYl9z Y3JpcHRzIHNlY3Rpb24pOiBSZW5hbWUgdGhlIG5vZGUgLi4uCi0rCShkb3RkZWJ1Z19nZGJfc2Ny aXB0cyBzZWN0aW9uKTogLi4uIGhlcmUuCi0rCShNYWludGVuYW5jZSBDb21tYW5kcyk6IEFsc28g cmVuYW1lIHRoaXMgbm9kZSByZWZlcmVuY2UuCi0rCi0gMjAxMi0wMy0yMiAgU2l2YSBDaGFuZHJh IFJlZGR5ICA8c2l2YWNoYW5kcmFAZ29vZ2xlLmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoUHl0 aG9uIEFQSS9WYWx1ZXMgRnJvbSBJbmZlcmlvcik6IEFkZCBkZXNjcmlwdGlvbgotLS0tIHNyYy9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS45MzYKLSsrKyBzcmMvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEuOTM3Ci1AQCAtMjQ3MTcsOCAr MjQ3MTcsOCBAQAotIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBhbmQgQGNvZGV7LmRlYnVn X2dkYl9zY3JpcHRzfSBzZWN0aW9uLgotIAotIEBtZW51Ci0tKiBvYmpmaWxlLWdkYi5weSBmaWxl OjogICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKLS0qIC5kZWJ1 Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjogIFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNl Y3Rpb24KLSsqIG9iamZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgICBUaGUgQGZpbGV7QHZhcntv YmpmaWxlfS1nZGIucHl9IGZpbGUKLSsqIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb246OiBU aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCi0gKiBXaGljaCBmbGF2b3IgdG8g Y2hvb3NlPzo6Ci0gQGVuZCBtZW51Ci0gCi1AQCAtMjQ3NDQsNyArMjQ3NDQsNyBAQAotIAotIEFs c28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4K LSB0aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBmb3Vu ZAotLShAcHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KLSsoQHB4cmVme2RvdGRl YnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KLSBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWly IG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJOfQotIHRyaWVzIHRvIGxvYWQg dGhlbSBhbmQgZmFpbHMuICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcK LSBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KLUBAIC0yNDc5 NSw3ICsyNDc5NSw3IEBACi0gU28geW91ciBAZmlsZXstZ2RiLnB5fSBmaWxlIHNob3VsZCBiZSBj YXJlZnVsIHRvIGF2b2lkIGVycm9ycyBpZiBpdAotIGlzIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25j ZS4KLSAKLS1Abm9kZSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbgotK0Bub2RlIGRvdGRlYnVn X2dkYl9zY3JpcHRzIHNlY3Rpb24KLSBAc3Vic3Vic2VjdGlvbiBUaGUgQGNvZGV7LmRlYnVnX2dk Yl9zY3JpcHRzfSBzZWN0aW9uCi0gQGNpbmRleCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNl Y3Rpb24KLSAKLUBAIC0zMzQ3NSw3ICszMzQ3NSw3IEBACi0gbWF0Y2hpbmcgQHZhcntyZWdleHB9 LgotIEZvciBlYWNoIHNjcmlwdCwgdGhpcyBjb21tYW5kIHByaW50cyBpdHMgbmFtZSBhcyBzcGVj aWZpZWQgaW4gdGhlIG9iamZpbGUsCi0gYW5kIHRoZSBmdWxsIHBhdGggaWYga25vd24uCi0tQHhy ZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgotK0B4cmVme2RvdGRlYnVnX2dkYl9zY3Jp cHRzIHNlY3Rpb259LgotIAotIEBraW5kZXggbWFpbnQgcHJpbnQgc3RhdGlzdGljcwotIEBjaW5k ZXggYmNhY2hlIHN0YXRpc3RpY3MKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDdvZjIyLnBh dGNoIGIvZ2RiLWF1dG9sb2FkLTA3b2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41MWQxMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA3b2Yy Mi5wYXRjaApAQCAtMCwwICsxLDU3IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2 cy8yMDEyLTAzL21zZzAwMjk2Lmh0bWwKKworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEy LzAzLzIyIDA4OjEwOjQxCTEuMTI4OQorIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzAz LzI3IDIwOjE1OjIwCTEuMTI5MAorIyMgLTEsMyArMSwxMiBAQAorKzIwMTItMDMtMjcgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5m byAoQXV0by1sb2FkaW5nKTogUmVuYW1lIG5vZGUgcmVmZXJlbmNlCisrCScuZGVidWdfZ2RiX3Nj cmlwdHMgc2VjdGlvbicgdG8gJ2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24nLgorKwlUd2lj ZS4KKysJKC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uKTogUmVuYW1lIHRoZSBub2RlIC4uLgor KwkoZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbik6IC4uLiBoZXJlLgorKwkoTWFpbnRlbmFu Y2UgQ29tbWFuZHMpOiBBbHNvIHJlbmFtZSB0aGlzIG5vZGUgcmVmZXJlbmNlLgorKworIDIwMTIt MDMtMjIgIFNpdmEgQ2hhbmRyYSBSZWRkeSAgPHNpdmFjaGFuZHJhQGdvb2dsZS5jb20+CisgCisg CSogZ2RiLnRleGluZm8gKFB5dGhvbiBBUEkvVmFsdWVzIEZyb20gSW5mZXJpb3IpOiBBZGQgZGVz Y3JpcHRpb24KKy0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAzLzIyIDA4OjEwOjQx CTEuOTM2CisrKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wMy8yNyAyMDoxNToyMAkx LjkzNworQEAgLTI0NzE3LDggKzI0NzE3LDggQEAKKyBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5w eX0gYW5kIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbi4KKyAKKyBAbWVudQorLSog b2JqZmlsZS1nZGIucHkgZmlsZTo6ICAgICAgICAgVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2Ri LnB5fSBmaWxlCistKiAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbjo6ICBUaGUgQGNvZGV7LmRl YnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisrKiBvYmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAg ICAgVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBmaWxlCisrKiBkb3RkZWJ1Z19nZGJf c2NyaXB0cyBzZWN0aW9uOjogVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgor ICogV2hpY2ggZmxhdm9yIHRvIGNob29zZT86OgorIEBlbmQgbWVudQorIAorQEAgLTI0NzQ0LDcg KzI0NzQ0LDcgQEAKKyAKKyBBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0 IHdlcmUgbWVudGlvbmVkIGluCisgdGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlv biBhbmQgd2VyZSBub3QgZm91bmQKKy0oQHB4cmVmey5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u fSkuCisrKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisgVGhpcyBpcyB1 c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RC Tn0KKyB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2Yg dGhlbSwgYW5kIHByaW50aW5nCisgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJv YmxlbWF0aWMuCitAQCAtMjQ3OTUsNyArMjQ3OTUsNyBAQAorIFNvIHlvdXIgQGZpbGV7LWdkYi5w eX0gZmlsZSBzaG91bGQgYmUgY2FyZWZ1bCB0byBhdm9pZCBlcnJvcnMgaWYgaXQKKyBpcyBldmFs dWF0ZWQgbW9yZSB0aGFuIG9uY2UuCisgCistQG5vZGUgLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rp b24KKytAbm9kZSBkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uCisgQHN1YnN1YnNlY3Rpb24g VGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgorIEBjaW5kZXggQGNvZGV7LmRl YnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisgCitAQCAtMzM0NzUsNyArMzM0NzUsNyBAQAorIG1h dGNoaW5nIEB2YXJ7cmVnZXhwfS4KKyBGb3IgZWFjaCBzY3JpcHQsIHRoaXMgY29tbWFuZCBwcmlu dHMgaXRzIG5hbWUgYXMgc3BlY2lmaWVkIGluIHRoZSBvYmpmaWxlLAorIGFuZCB0aGUgZnVsbCBw YXRoIGlmIGtub3duLgorLUB4cmVmey5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufS4KKytAeHJl Zntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufS4KKyAKKyBAa2luZGV4IG1haW50IHByaW50 IHN0YXRpc3RpY3MKKyBAY2luZGV4IGJjYWNoZSBzdGF0aXN0aWNzCgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTA4b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wOG9mMTgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OGJmYzEuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9s b2FkLTA4b2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi1bcGF0Y2gj NCAyLzhdIENvZGUgY2xlYW51cDogbmV3IHBhdGggdG8gVkVDIGluIHV0aWxzLmMKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg2Lmh0bWwKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTEuaHRtbAotIC0gcmVk dWNlZCBmb3IgdGhlIGJhY2twb3J0Ci0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3 IDE1OjQ1OjA1CTEuMTQxMTAKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ3 OjA4CTEuMTQxMTEKLSMjIC0xLDYgKzEsMzQgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCUNvZGUgY2xlYW51cC4KLSsJKiBj aGFyc2V0LmMgKGZpbmRfY2hhcnNldF9uYW1lcyk6IFJlbW92ZSB2YXJpYWJsZXMgaXggYW5kIGVs dC4KLSsJVXNlIGZyZWVfY2hhcl9wdHJfdmVjLgotKwkqIGVsZnJlYWQuYyAoYnVpbGRfaWRfdG9f ZGVidWdfZmlsZW5hbWUpOiBOZXcgdmFyaWFibGVzIGRlYnVnZGlyX3ZlYywKLSsJYmFja190byBh bmQgaXguICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgUmVtb3ZlIHZhcmlhYmxlCi0r CWRlYnVnZGlyX2VuZC4gIE5ldyB2YXJpYWJsZSBkZWJ1Z2Rpcl9sZW4uCi0rCSogZ2RiX3ZlY3Mu aCAoZnJlZV9jaGFyX3B0cl92ZWMsIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYykKLSsJ KGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQsIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl Yyk6IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogcHJvZ3NwYWNlLmMgKGNsZWFyX3Byb2dyYW1f c3BhY2Vfc29saWJfY2FjaGUpOiBSZW1vdmUgdmFyaWFibGVzIGl4Ci0rCWFuZCBlbHQuICBVc2Ug ZnJlZV9jaGFyX3B0cl92ZWMuCi0rCSogc291cmNlLmMgKGFkZF9wYXRoKTogUmVtb3ZlIHZhcmlh YmxlcyBhcmd2LCBhcmcgYW5kIGFyZ3ZfaW5kZXguCi0rCU5ldyB2YXJpYWJsZXMgZGlyX3ZlYywg YmFja190bywgaXggYW5kIG5hbWUuCi0rCVVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBw ZW5kLiAgVXNlIGZyZWVhcmd2IGluc3RlYWQgb2YKLSsJbWFrZV9jbGVhbnVwX2ZyZWVhcmd2LiAg UmVtb3ZlIHZhcmlhYmxlIHNlcGFyYXRvci4gIFNpbXBsaWZ5IHRoZSBjb2RlCi0rCW5vIGxvbmdl ciBleHBlY3RpbmcgRElSTkFNRV9TRVBBUkFUT1IuCi0rCShvcGVucCk6IFJlbW92ZSB2YXJpYWJs ZSBwLCBwMSBhbmQgbGVuLiAgTmV3IHZhcmlhYmxlcyBkaXJfdmVjLAotKwliYWNrX3RvLCBpeCBh bmQgZGlyLiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFNpbXBsaWZ5IHRoZSBjb2Rl Ci0rCW5vIGxvbmdlciBleHBlY3RpbmcgRElSTkFNRV9TRVBBUkFUT1IuCi0rCSogc3ltZmlsZS5j IChmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUpOiBOZXcgdmFyaWFibGVzIGRlYnVnZGlyX3ZlYywK LSsJYmFja190byBhbmQgaXguICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgUmVtb3Zl IHZhcmlhYmxlCi0rCWRlYnVnZGlyX2VuZC4KLSsJKiB1dGlscy5jIChmcmVlX2NoYXJfcHRyX3Zl YywgZG9fZnJlZV9jaGFyX3B0cl92ZWMpCi0rCShtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92 ZWMsIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQpCi0rCShkaXJuYW1lc190b19jaGFy X3B0cl92ZWMpOiBOZXcgZnVuY3Rpb25zLgotKwotKzIwMTItMDQtMTcgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJQ29kZSBjbGVhbnVwLgotIAkqIHNv dXJjZS5jIChhZGRfcGF0aCk6IFJlbW92ZSBhbHdheXMgdHJ1ZSBjb25kaXRpb25hbCAncCA9PSAw JyBhbmQKLSAJdW5pbmRlbnQgaXRzIGNvZGUgYmxvY2suCi0gCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvZ2RiX3ZlY3MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE4IDAwOjQwOjEyLjA2NzA4NjAxNiArMDIw MAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0 MDoyMy40NzQwNTY5OTMgKzAyMDAKLUBAIC0yNSw0ICsyNSwxNiBAQAotIAotIERFRl9WRUNfUCAo Y2hhcl9wdHIpOwotIAotKy8qIEZyb20gdXRpbHMuYzogKi8KLSsKLStleHRlcm4gdm9pZCBmcmVl X2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyk7Ci0rCi0rZXh0ZXJu IHN0cnVjdCBjbGVhbnVwICoKLSsgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoVkVD IChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyk7Ci0rCi0rZXh0ZXJuIHZvaWQgZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjX2FwcGVuZCAoVkVDIChjaGFyX3B0cikgKip2ZWNwLAotKwkJCQkJICAgICBj b25zdCBjaGFyICpkaXJuYW1lcyk7Ci0rCi0rZXh0ZXJuIFZFQyAoY2hhcl9wdHIpICpkaXJuYW1l c190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpcm5hbWVzKTsKLSsKLSAjZW5kaWYgLyog R0RCX1ZFQ1NfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3V0aWxzLmMJMjAxMi0w NC0xOCAwMDo0MDoxMi4wNjgwODYwMTMgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi91dGlscy5jCTIwMTItMDQtMTggMDA6NDA6NDkuODYyOTg5ODU1ICswMjAwCi1AQCAtMjksNiAr MjksNyBAQAotICNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICi0gI2luY2x1ZGUgPHN5cy9yZXNv dXJjZS5oPgotICNlbmRpZiAvKiBIQVZFX1NZU19SRVNPVVJDRV9IICovCi0rI2luY2x1ZGUgImdk Yl92ZWNzLmgiCi0gCi0gI2lmZGVmIFRVSQotICNpbmNsdWRlICJ0dWkvdHVpLmgiCQkvKiBGb3Ig dHVpX2dldF9jb21tYW5kX2RpbWVuc2lvbi4gICAqLwotQEAgLTM4MzUsNiArMzgzNiw5NSBAQCBw cm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAqcHJvZHVjCi0gICByZXR1cm4gbWlub3I7 Ci0gfQotIAotKy8qIENhbGwgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBvZiBDSEFSX1BUUl9WRUMg YW5kIGZpbmFsIFZFQ19mcmVlIGZvcgotKyAgIENIQVJfUFRSX1ZFQyBpdHNlbGYuCi0rCi0rICAg WW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgaXQgZ290IHJlZ2lzdGVyZWQg d2l0aCB0aGlzIGZ1bmN0aW9uCi0rICAgYnkgbWFrZV9jbGVhbnVwIGFzIHRoZSBDSEFSX1BUUl9W RUMgYmFzZSBhZGRyZXNzIG1heSBjaGFuZ2Ugb24gaXRzIHVwZGF0ZXMuCi0rICAgQ29udHJhcnkg dG8gVkVDX2ZyZWUgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCAoY2Fubm90KSBjbGVhciB0aGUgcG9p bnRlci4gICovCi0rCi0rdm9pZAotK2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAq Y2hhcl9wdHJfdmVjKQotK3sKLSsgIGludCBpeDsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICBmb3Ig KGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBjaGFyX3B0cl92ZWMsIGl4LCBuYW1lKTsg KytpeCkKLSsgICAgeGZyZWUgKG5hbWUpOwotKyAgVkVDX2ZyZWUgKGNoYXJfcHRyLCBjaGFyX3B0 cl92ZWMpOwotK30KLSsKLSsvKiBIZWxwZXIgZm9yIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRy X3ZlYy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkb19mcmVlX2NoYXJfcHRyX3ZlYyAodm9pZCAq YXJnKQotK3sKLSsgIFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMgPSBhcmc7Ci0rCi0rICBm cmVlX2NoYXJfcHRyX3ZlYyAoY2hhcl9wdHJfdmVjKTsKLSt9Ci0rCi0rLyogTWFrZSBjbGVhbnVw IGhhbmRsZXIgY2FsbGluZyB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50IG9mIENIQVJfUFRSX1ZFQyBh bmQKLSsgICBmaW5hbCBWRUNfZnJlZSBmb3IgQ0hBUl9QVFJfVkVDIGl0c2VsZi4KLSsKLSsgICBZ b3UgbXVzdCBub3QgbW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciB0aGlzIGNsZWFudXAgcmVnaXN0 cmF0aW9uIGFzIHRoZQotKyAgIENIQVJfUFRSX1ZFQyBiYXNlIGFkZHJlc3MgbWF5IGNoYW5nZSBv biBpdHMgdXBkYXRlcy4gIENvbnRyYXJ5IHRvIFZFQ19mcmVlCi0rICAgdGhpcyBmdW5jdGlvbiBk b2VzIG5vdCAoY2Fubm90KSBjbGVhciB0aGUgcG9pbnRlci4gICovCi0rCi0rc3RydWN0IGNsZWFu dXAgKgotK21ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0cikgKmNo YXJfcHRyX3ZlYykKLSt7Ci0rICByZXR1cm4gbWFrZV9jbGVhbnVwIChkb19mcmVlX2NoYXJfcHRy X3ZlYywgY2hhcl9wdHJfdmVjKTsKLSt9Ci0rCi0rLyogRXh0ZW5kZWQgdmVyc2lvbiBvZiBkaXJu YW1lc190b19jaGFyX3B0cl92ZWMgLSBhZGRpdGlvbmFsbHkgaWYgKlZFQ1AgaXMKLSsgICBub24t TlVMTCB0aGUgbmV3IGxpc3QgZWxlbWVudHMgZnJvbSBESVJOQU1FUyBhcmUgYXBwZW5kZWQgdG8g dGhlIGV4aXN0aW5nCi0rICAgKlZFQ1AgbGlzdCBvZiBlbnRyaWVzLiAgKlZFQ1AgYWRkcmVzcyB3 aWxsIGJlIHVwZGF0ZWQgYnkgdGhpcyBjYWxsLiAgKi8KLSsKLSt2b2lkCi0rZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjX2FwcGVuZCAoVkVDIChjaGFyX3B0cikgKip2ZWNwLCBjb25zdCBjaGFyICpk aXJuYW1lcykKLSt7Ci0rICBkbwotKyAgICB7Ci0rICAgICAgc2l6ZV90IHRoaXNfbGVuOwotKyAg ICAgIGNoYXIgKm5leHRfZGlyLCAqdGhpc19kaXI7Ci0rCi0rICAgICAgbmV4dF9kaXIgPSBzdHJj aHIgKGRpcm5hbWVzLCBESVJOQU1FX1NFUEFSQVRPUik7Ci0rICAgICAgaWYgKG5leHRfZGlyID09 IE5VTEwpCi0rCXRoaXNfbGVuID0gc3RybGVuIChkaXJuYW1lcyk7Ci0rICAgICAgZWxzZQotKwl7 Ci0rCSAgdGhpc19sZW4gPSBuZXh0X2RpciAtIGRpcm5hbWVzOwotKwkgIG5leHRfZGlyKys7Ci0r CX0KLSsKLSsgICAgICB0aGlzX2RpciA9IHhtYWxsb2MgKHRoaXNfbGVuICsgMSk7Ci0rICAgICAg bWVtY3B5ICh0aGlzX2RpciwgZGlybmFtZXMsIHRoaXNfbGVuKTsKLSsgICAgICB0aGlzX2Rpclt0 aGlzX2xlbl0gPSAnXDAnOwotKyAgICAgIFZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCAqdmVjcCwg dGhpc19kaXIpOwotKwotKyAgICAgIGRpcm5hbWVzID0gbmV4dF9kaXI7Ci0rICAgIH0KLSsgIHdo aWxlIChkaXJuYW1lcyAhPSBOVUxMKTsKLSt9Ci0rCi0rLyogU3BsaXQgRElSTkFNRVMgYnkgRElS TkFNRV9TRVBBUkFUT1IgZGVsaW1pdGVyIGFuZCByZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUKLSsg ICBlbGVtZW50cyBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4gIEZvciBlbXB0eSBzdHJpbmcgKCIi KSBESVJOQU1FUyByZXR1cm4KLSsgICBsaXN0IG9mIG9uZSBlbXB0eSBzdHJpbmcgKCIiKSBlbGVt ZW50LgotKyAgIAotKyAgIFlvdSBtYXkgbW9kaWZ5IHRoZSByZXR1cm5lZCBzdHJpbmdzLgotKyAg IFJlYWQgZnJlZV9jaGFyX3B0cl92ZWMgZm9yIGl0cyBjbGVhbnVwLiAgKi8KLSsKLStWRUMgKGNo YXJfcHRyKSAqCi0rZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1l cykKLSt7Ci0rICBWRUMgKGNoYXJfcHRyKSAqcmV0dmFsID0gTlVMTDsKLSsgIAotKyAgZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCAoJnJldHZhbCwgZGlybmFtZXMpOwotKwotKyAgcmV0 dXJuIHJldHZhbDsKLSt9Ci0rCi0gI2lmZGVmIEhBVkVfV0FJVFBJRAotIAotICNpZmRlZiBTSUdB TFJNCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA4b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9h ZC0wOG9mMjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4YmZj MQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wOG9mMjIucGF0Y2gKQEAgLTAsMCAr MSwxNzEgQEAKK1twYXRjaCM0IDIvOF0gQ29kZSBjbGVhbnVwOiBuZXcgcGF0aCB0byBWRUMgaW4g dXRpbHMuYworaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNn MDAwODYuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cw MDExMS5odG1sCisgLSByZWR1Y2VkIGZvciB0aGUgYmFja3BvcnQKKworIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDQvMTcgMTU6NDU6MDUJMS4xNDExMAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDQvMTcgMTU6NDc6MDgJMS4xNDExMQorIyMgLTEsNiArMSwzNCBAQAorIDIwMTItMDQt MTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJQ29k ZSBjbGVhbnVwLgorKwkqIGNoYXJzZXQuYyAoZmluZF9jaGFyc2V0X25hbWVzKTogUmVtb3ZlIHZh cmlhYmxlcyBpeCBhbmQgZWx0LgorKwlVc2UgZnJlZV9jaGFyX3B0cl92ZWMuCisrCSogZWxmcmVh ZC5jIChidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJf dmVjLAorKwliYWNrX3RvIGFuZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBS ZW1vdmUgdmFyaWFibGUKKysJZGVidWdkaXJfZW5kLiAgTmV3IHZhcmlhYmxlIGRlYnVnZGlyX2xl bi4KKysJKiBnZGJfdmVjcy5oIChmcmVlX2NoYXJfcHRyX3ZlYywgbWFrZV9jbGVhbnVwX2ZyZWVf Y2hhcl9wdHJfdmVjKQorKwkoZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCwgZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3CisrCWRlY2xhcmF0aW9ucy4KKysJKiBwcm9nc3BhY2Uu YyAoY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9jYWNoZSk6IFJlbW92ZSB2YXJpYWJsZXMgaXgK KysJYW5kIGVsdC4gIFVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KKysJKiBzb3VyY2UuYyAoYWRkX3Bh dGgpOiBSZW1vdmUgdmFyaWFibGVzIGFyZ3YsIGFyZyBhbmQgYXJndl9pbmRleC4KKysJTmV3IHZh cmlhYmxlcyBkaXJfdmVjLCBiYWNrX3RvLCBpeCBhbmQgbmFtZS4KKysJVXNlIGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlY19hcHBlbmQuICBVc2UgZnJlZWFyZ3YgaW5zdGVhZCBvZgorKwltYWtlX2Ns ZWFudXBfZnJlZWFyZ3YuICBSZW1vdmUgdmFyaWFibGUgc2VwYXJhdG9yLiAgU2ltcGxpZnkgdGhl IGNvZGUKKysJbm8gbG9uZ2VyIGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRPUi4KKysJKG9wZW5w KTogUmVtb3ZlIHZhcmlhYmxlIHAsIHAxIGFuZCBsZW4uICBOZXcgdmFyaWFibGVzIGRpcl92ZWMs CisrCWJhY2tfdG8sIGl4IGFuZCBkaXIuICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAg U2ltcGxpZnkgdGhlIGNvZGUKKysJbm8gbG9uZ2VyIGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRP Ui4KKysJKiBzeW1maWxlLmMgKGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSk6IE5ldyB2YXJpYWJs ZXMgZGVidWdkaXJfdmVjLAorKwliYWNrX3RvIGFuZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFy X3B0cl92ZWMuICBSZW1vdmUgdmFyaWFibGUKKysJZGVidWdkaXJfZW5kLgorKwkqIHV0aWxzLmMg KGZyZWVfY2hhcl9wdHJfdmVjLCBkb19mcmVlX2NoYXJfcHRyX3ZlYykKKysJKG1ha2VfY2xlYW51 cF9mcmVlX2NoYXJfcHRyX3ZlYywgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCkKKysJ KGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyk6IE5ldyBmdW5jdGlvbnMuCisrCisrMjAxMi0wNC0x NyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2Rl IGNsZWFudXAuCisgCSogc291cmNlLmMgKGFkZF9wYXRoKTogUmVtb3ZlIGFsd2F5cyB0cnVlIGNv bmRpdGlvbmFsICdwID09IDAnIGFuZAorIAl1bmluZGVudCBpdHMgY29kZSBibG9jay4KKyAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5oCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9nZGJfdmVjcy5oCTIwMTItMDQtMTggMDA6NDA6 MTIuMDY3MDg2MDE2ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiX3ZlY3Mu aAkyMDEyLTA0LTE4IDAwOjQwOjIzLjQ3NDA1Njk5MyArMDIwMAorQEAgLTI1LDQgKzI1LDE2IEBA CisgCisgREVGX1ZFQ19QIChjaGFyX3B0cik7CisgCisrLyogRnJvbSB1dGlscy5jOiAqLworKwor K2V4dGVybiB2b2lkIGZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJf dmVjKTsKKysKKytleHRlcm4gc3RydWN0IGNsZWFudXAgKgorKyAgbWFrZV9jbGVhbnVwX2ZyZWVf Y2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsKKysKKytleHRlcm4g dm9pZCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZl Y3AsCisrCQkJCQkgICAgIGNvbnN0IGNoYXIgKmRpcm5hbWVzKTsKKysKKytleHRlcm4gVkVDIChj aGFyX3B0cikgKmRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29uc3QgY2hhciAqZGlybmFtZXMp OworKworICNlbmRpZiAvKiBHREJfVkVDU19IICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdXRpbHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjEyLjA2ODA4NjAxMyArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMJMjAxMi0wNC0xOCAwMDo0MDo0OS44NjI5ODk4NTUg KzAyMDAKK0BAIC0yOSw2ICsyOSw3IEBACisgI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyAj aW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2VuZGlmIC8qIEhBVkVfU1lTX1JFU09VUkNFX0gg Ki8KKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaWZkZWYgVFVJCisgI2luY2x1ZGUgInR1 aS90dWkuaCIJCS8qIEZvciB0dWlfZ2V0X2NvbW1hbmRfZGltZW5zaW9uLiAgICovCitAQCAtMzgz NSw2ICszODM2LDk1IEBAIHByb2R1Y2VyX2lzX2djY19nZV80IChjb25zdCBjaGFyICpwcm9kdWMK KyAgIHJldHVybiBtaW5vcjsKKyB9CisgCisrLyogQ2FsbCB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50 IG9mIENIQVJfUFRSX1ZFQyBhbmQgZmluYWwgVkVDX2ZyZWUgZm9yCisrICAgQ0hBUl9QVFJfVkVD IGl0c2VsZi4KKysKKysgICBZb3UgbXVzdCBub3QgbW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciBp dCBnb3QgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgZnVuY3Rpb24KKysgICBieSBtYWtlX2NsZWFudXAg YXMgdGhlIENIQVJfUFRSX1ZFQyBiYXNlIGFkZHJlc3MgbWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRl cy4KKysgICBDb250cmFyeSB0byBWRUNfZnJlZSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5u b3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8KKysKKyt2b2lkCisrZnJlZV9jaGFyX3B0cl92ZWMg KFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpCisreworKyAgaW50IGl4OworKyAgY2hhciAq bmFtZTsKKysKKysgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGNoYXJfcHRy X3ZlYywgaXgsIG5hbWUpOyArK2l4KQorKyAgICB4ZnJlZSAobmFtZSk7CisrICBWRUNfZnJlZSAo Y2hhcl9wdHIsIGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIEhlbHBlciBmb3IgbWFrZV9jbGVh bnVwX2ZyZWVfY2hhcl9wdHJfdmVjLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2RvX2ZyZWVfY2hh cl9wdHJfdmVjICh2b2lkICphcmcpCisreworKyAgVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3Zl YyA9IGFyZzsKKysKKysgIGZyZWVfY2hhcl9wdHJfdmVjIChjaGFyX3B0cl92ZWMpOworK30KKysK KysvKiBNYWtlIGNsZWFudXAgaGFuZGxlciBjYWxsaW5nIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQg b2YgQ0hBUl9QVFJfVkVDIGFuZAorKyAgIGZpbmFsIFZFQ19mcmVlIGZvciBDSEFSX1BUUl9WRUMg aXRzZWxmLgorKworKyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIHRo aXMgY2xlYW51cCByZWdpc3RyYXRpb24gYXMgdGhlCisrICAgQ0hBUl9QVFJfVkVDIGJhc2UgYWRk cmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVzLiAgQ29udHJhcnkgdG8gVkVDX2ZyZWUKKysg ICB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8K KysKKytzdHJ1Y3QgY2xlYW51cCAqCisrbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChW RUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKQorK3sKKysgIHJldHVybiBtYWtlX2NsZWFudXAg KGRvX2ZyZWVfY2hhcl9wdHJfdmVjLCBjaGFyX3B0cl92ZWMpOworK30KKysKKysvKiBFeHRlbmRl ZCB2ZXJzaW9uIG9mIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAtIGFkZGl0aW9uYWxseSBpZiAq VkVDUCBpcworKyAgIG5vbi1OVUxMIHRoZSBuZXcgbGlzdCBlbGVtZW50cyBmcm9tIERJUk5BTUVT IGFyZSBhcHBlbmRlZCB0byB0aGUgZXhpc3RpbmcKKysgICAqVkVDUCBsaXN0IG9mIGVudHJpZXMu ICAqVkVDUCBhZGRyZXNzIHdpbGwgYmUgdXBkYXRlZCBieSB0aGlzIGNhbGwuICAqLworKworK3Zv aWQKKytkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZl Y3AsIGNvbnN0IGNoYXIgKmRpcm5hbWVzKQorK3sKKysgIGRvCisrICAgIHsKKysgICAgICBzaXpl X3QgdGhpc19sZW47CisrICAgICAgY2hhciAqbmV4dF9kaXIsICp0aGlzX2RpcjsKKysKKysgICAg ICBuZXh0X2RpciA9IHN0cmNociAoZGlybmFtZXMsIERJUk5BTUVfU0VQQVJBVE9SKTsKKysgICAg ICBpZiAobmV4dF9kaXIgPT0gTlVMTCkKKysJdGhpc19sZW4gPSBzdHJsZW4gKGRpcm5hbWVzKTsK KysgICAgICBlbHNlCisrCXsKKysJICB0aGlzX2xlbiA9IG5leHRfZGlyIC0gZGlybmFtZXM7Cisr CSAgbmV4dF9kaXIrKzsKKysJfQorKworKyAgICAgIHRoaXNfZGlyID0geG1hbGxvYyAodGhpc19s ZW4gKyAxKTsKKysgICAgICBtZW1jcHkgKHRoaXNfZGlyLCBkaXJuYW1lcywgdGhpc19sZW4pOwor KyAgICAgIHRoaXNfZGlyW3RoaXNfbGVuXSA9ICdcMCc7CisrICAgICAgVkVDX3NhZmVfcHVzaCAo Y2hhcl9wdHIsICp2ZWNwLCB0aGlzX2Rpcik7CisrCisrICAgICAgZGlybmFtZXMgPSBuZXh0X2Rp cjsKKysgICAgfQorKyAgd2hpbGUgKGRpcm5hbWVzICE9IE5VTEwpOworK30KKysKKysvKiBTcGxp dCBESVJOQU1FUyBieSBESVJOQU1FX1NFUEFSQVRPUiBkZWxpbWl0ZXIgYW5kIHJldHVybiBhIGxp c3Qgb2YgYWxsIHRoZQorKyAgIGVsZW1lbnRzIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLiAgRm9y IGVtcHR5IHN0cmluZyAoIiIpIERJUk5BTUVTIHJldHVybgorKyAgIGxpc3Qgb2Ygb25lIGVtcHR5 IHN0cmluZyAoIiIpIGVsZW1lbnQuCisrICAgCisrICAgWW91IG1heSBtb2RpZnkgdGhlIHJldHVy bmVkIHN0cmluZ3MuCisrICAgUmVhZCBmcmVlX2NoYXJfcHRyX3ZlYyBmb3IgaXRzIGNsZWFudXAu ICAqLworKworK1ZFQyAoY2hhcl9wdHIpICoKKytkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNv bnN0IGNoYXIgKmRpcm5hbWVzKQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpyZXR2YWwgPSBOVUxM OworKyAgCisrICBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kICgmcmV0dmFsLCBkaXJu YW1lcyk7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KKysKKyAjaWZkZWYgSEFWRV9XQUlUUElE CisgCisgI2lmZGVmIFNJR0FMUk0KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDlvZjE4LnBh dGNoIGIvZ2RiLWF1dG9sb2FkLTA5b2YxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMTI0NGNmZi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDlvZjE4LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTE2OCArMCwwIEBACi1bcGF0Y2gjNCAzLzhdIGF1dG8tbG9hZDog cmVzaHVmZmxlIGNvZGUKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEy LTA0L21zZzAwMDg3Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDQvbXNnMDAxMTIuaHRtbAotCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1s b2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEy LTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIxMiArMDIwMAotQEAgLTAsMCArMSw0NzIgQEAKLSsvKiBH REIgcm91dGluZXMgZm9yIHN1cHBvcnRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsKLSsgICBD b3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhdXRvLWxv YWQuaCIKLSsjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCi0rI2luY2x1ZGUgInB5dGhvbi9weXRob24u aCIKLSsjaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCi0rI2luY2x1ZGUgInVpLW91dC5oIgotKyNpbmNs dWRlICJmaWxlbmFtZXMuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJvYnNl cnZlci5oIgotKyNpbmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNsdWRlICJweXRob24vcHl0aG9u LWludGVybmFsLmgiCi0rCi0rLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUg YXV0by1sb2FkaW5nLgotKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5 dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCi0rICAgZmFsc2Ugb3RoZXJ3aXNl LgotKwotKyAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9h ZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0rICAgYXV0by1sb2FkaW5nLgotKwotKyAgIFRoaXMg ZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBz dGFydC11cAotKyAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5 IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcwotKyAgIHVzZWQgdG8gZmluZCB0aGUgc2Ny aXB0cy4gICovCi0raW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOwotKwotKy8qIEZvciBz Y3JpcHRzIHNwZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVz IG1heSBsb2FkCi0rICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2Fk aW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUgdGltZXMsCi0rICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxv dCBvZiBvYmpmaWxlcyBhbmQgc2NyaXB0cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCi0r ICAgbG9hZGVkIHRoaXMgd2F5LiAgKi8KLSsKLStzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv Ci0rewotKyAgLyogRm9yIGVhY2ggcHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRl ZCBzY3JpcHRzLiAgKi8KLSsgIHN0cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0czsKLSsKLSsgIC8q IE5vbi16ZXJvIGlmIHdlJ3ZlIGlzc3VlZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQg c2NyaXB0IG5vdCBiZWluZwotKyAgICAgZm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhp cyB3YXJuaW5nIG9uY2UuICAqLwotKyAgaW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmlu dGVkOwotK307Ci0rCi0rLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUg bG9hZGVkIHNjcmlwdCBoYXNoIHRhYmxlLiAgKi8KLSsKLStzdHJ1Y3QgbG9hZGVkX3NjcmlwdAot K3sKLSsgIC8qIE5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLwotKyAgY29uc3Qg Y2hhciAqbmFtZTsKLSsgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24n dCBmb3VuZCAob3Igd2FzIG90aGVyd2lzZQotKyAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0rICBj b25zdCBjaGFyICpmdWxsX3BhdGg7Ci0rfTsKLSsKLSsvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRh IGtleS4gICovCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9f bG9hZF9wc3BhY2VfZGF0YTsKLSsKLStzdGF0aWMgdm9pZAotK2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCi0rewot KyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGluZm8gPSBwcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKLSsgIGlmIChp bmZvICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMpCi0r CWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0rICAgICAgeGZyZWUgKGluZm8p OwotKyAgICB9Ci0rfQotKwotKy8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9hZCBkYXRhLiAgSWYg bm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCi0rICAgZnVuY3Rpb24gYWx3YXlz IHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICoKLStnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3Jh bV9zcGFjZSAqcHNwYWNlKQotK3sKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmlu Zm87Ci0rCi0rICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9w c3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5mbyA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW5mbyA9 IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOwotKyAgICAgIHNldF9wcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhLCBpbmZvKTsKLSsg ICAgfQotKwotKyAgcmV0dXJuIGluZm87Ci0rfQotKwotKy8qIEhhc2ggZnVuY3Rpb24gZm9yIHRo ZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotKwotK3N0YXRpYyBoYXNodmFsX3QKLStoYXNoX2xv YWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCi0rewotKyAgY29uc3Qgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOwotKwotKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcg KGUtPm5hbWUpOwotK30KLSsKLSsvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBz Y3JpcHQgaGFzaC4gICovCi0rCi0rc3RhdGljIGludAotK2VxX2xvYWRlZF9zY3JpcHRfZW50cnkg KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmVhID0gYTsKLSsgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7 Ci0rCi0rICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09IDA7Ci0rfQotKwot Ky8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgotKyAgIEVh Y2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICovCi0rCi0rc3RhdGlj IHZvaWQKLStpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKnBzcGFjZV9pbmZvKQotK3sKLSsgIC8qIENob29zZSAzMSBhcyB0aGUgc3RhcnRpbmcg c2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHkuCi0rICAgICBTcGFj ZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZy ZWUgdGhlbQotKyAgICAgZWFzaWx5LiAgKi8KLSsKLSsgIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2Ny aXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKLSsJCQkJCSAgICAgaGFzaF9sb2FkZWRfc2NyaXB0X2Vu dHJ5LAotKwkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAotKwkJCQkJICAgICB4ZnJl ZSk7Ci0rCi0rICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQg PSBGQUxTRTsKLSt9Ci0rCi0rLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh IHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUKLSsgICBmb3IgbG9hZGluZyBzY3JpcHRz LiAgKi8KLSsKLStzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLStnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQot K3sKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0g Z2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAocHNwYWNlKTsKLSsgIGlmIChpbmZvLT5sb2FkZWRf c2NyaXB0cyA9PSBOVUxMKQotKyAgICBpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKGluZm8pOwot KwotKyAgcmV0dXJuIGluZm87Ci0rfQotKwotKy8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRh YmxlIG9mIFBTUEFDRV9JTkZPLgotKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQg d2Fzbid0IGZvdW5kLgotKyAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBh bHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSsKLStpbnQKLSttYXliZV9hZGRfc2NyaXB0 IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAq bmFtZSwKLSsJCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQotK3sKLSsgIHN0cnVjdCBodGFiICpo dGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOwotKyAgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKipzbG90LCBlbnRyeTsKLSsgIGludCBpbl9oYXNoX3RhYmxlOwotKwotKyAgZW50cnkubmFt ZSA9IG5hbWU7Ci0rICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0rICBzbG90ID0gKHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNF UlQpOwotKyAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0rCi0rICAvKiBJZiB0aGlz IHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCi0rCi0rICBpZiAo ISBpbl9oYXNoX3RhYmxlKQotKyAgICB7Ci0rICAgICAgY2hhciAqcDsKLSsKLSsgICAgICAvKiBB bGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAq LwotKyAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCi0rCQkgICAgICAgKyBz dHJsZW4gKG5hbWUpICsgMQotKwkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxl biAoZnVsbF9wYXRoKSArIDEpIDogMCkpOwotKyAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBz aXplb2YgKCoqc2xvdCk7Ci0rICAgICAgc3RyY3B5IChwLCBuYW1lKTsKLSsgICAgICAoKnNsb3Qp LT5uYW1lID0gcDsKLSsgICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0rCXsKLSsJICBwICs9 IHN0cmxlbiAocCkgKyAxOwotKwkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKLSsJICAoKnNsb3Qp LT5mdWxsX3BhdGggPSBwOwotKwl9Ci0rICAgICAgZWxzZQotKwkoKnNsb3QpLT5mdWxsX3BhdGgg PSBOVUxMOwotKyAgICB9Ci0rCi0rICByZXR1cm4gaW5faGFzaF90YWJsZTsKLSt9Ci0rCi0rLyog Q2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRlZCBzZWN0aW9uIHNjcmlwdHMuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQotK3sKLSsgIHN0cnVjdCBwcm9n cmFtX3NwYWNlICpwc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Ci0rICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotKwotKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGluZm8gIT0gTlVMTCAm JiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaHRhYl9kZWxl dGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKLSsgICAgICBpbmZvLT5sb2FkZWRfc2NyaXB0cyA9 IE5VTEw7Ci0rICAgICAgaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBG QUxTRTsKLSsgICAgfQotK30KLSsKLSsvKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBh c3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCi0rCi0rdm9pZAotK2F1dG9f bG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIg KnN1ZmZpeCkKLSt7Ci0rICBjaGFyICpyZWFsbmFtZTsKLSsgIGNoYXIgKmZpbGVuYW1lLCAqZGVi dWdmaWxlOwotKyAgaW50IGxlbjsKLSsgIEZJTEUgKmlucHV0OwotKyAgc3RydWN0IGNsZWFudXAg KmNsZWFudXBzOwotKwotKyAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUp OwotKyAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7Ci0rICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxl biArIHN0cmxlbiAoc3VmZml4KSArIDEpOwotKyAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUs IGxlbik7Ci0rICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwotKwotKyAgY2xlYW51 cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Ci0rICBtYWtlX2NsZWFudXAgKHhm cmVlLCByZWFsbmFtZSk7Ci0rCi0rICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKLSsg IGRlYnVnZmlsZSA9IGZpbGVuYW1lOwotKwotKyAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2Rp cmVjdG9yeSkKLSsgICAgewotKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhl IHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KLSsgICAgICBkZWJ1Z2ZpbGUgPSB4 bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQotKwkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2Rp cmVjdG9yeSkgKyAxKTsKLSsgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJl Y3RvcnkpOwotKyAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVk IGEgIi8iIGhlcmUuICAqLwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0r Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsgICAgICBpbnB1dCA9 IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0rICAgIH0KLSsKLSsgIGlmICghaW5wdXQgJiYgZ2Ri X2RhdGFkaXIpCi0rICAgIHsKLSsgICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEg c3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKLSsJIGRpcmVjdG9yeS4gICovCi0rICAgICAgZGVi dWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1l KQotKwkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7Ci0rICAgICAgc3RyY3B5IChk ZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKLSsgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRv LWxvYWQiKTsKLSsgICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVl ZCBhICIvIiBoZXJlLiAgKi8KLSsgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwot KwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0rICAgICAgaW5wdXQg PSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwotKyAgICB9Ci0rCi0rICBpZiAoaW5wdXQpCi0rICAg IHsKLSsgICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsK LSsgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0rCi0rICAgICAgLyogQWRkIHRo aXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0 cyIKLSsJIGNhbiBwcmludCBpdC4gICovCi0rICAgICAgcHNwYWNlX2luZm8gPQotKwlnZXRfYXV0 b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwot KyAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUsIGRlYnVnZmls ZSk7Ci0rCi0rICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0 IGNoZWNrIGZvciB3aGV0aGVyIHRoZQotKwkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJs ZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgotKwkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdk IGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSsJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0 byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0rCSBsb2FkcyBhbnl3YXkuICAqLwotKyAg ICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVi dWdmaWxlKTsKLSsgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSt9Ci0rCi0r LyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBz Y3JpcHRzLgotKwotKyAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1 cHBvcnRlZC4KLSsgICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQotKyAgIDIp IGZyb20gLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCi0rCi0rc3RhdGljIHZvaWQKLSth dXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGlm ICghb2JqZmlsZSkKLSsgICAgewotKyAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRp bmcgYSBuZXcgIm1haW4iIHN5bWJvbC1maWxlLiAgKi8KLSsgICAgICBjbGVhcl9zZWN0aW9uX3Nj cmlwdHMgKCk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0rfQotKwotKy8qIENvbGxlY3Qgc2NyaXB0cyB0byBi ZSBwcmludGVkIGluIGEgdmVjLiAgKi8KLSsKLSt0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0 ICpsb2FkZWRfc2NyaXB0X3B0cjsKLStERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKLSsK LSsvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCi0rICAgQ29sbGVjdCB0 aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0r Y29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKLSt7Ci0r ICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7Ci0rICBWRUMgKGxvYWRlZF9z Y3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKLSsKLSsgIGlmIChyZV9leGVjIChzY3Jp cHQtPm5hbWUpKQotKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlw dHNfcHRyLCBzY3JpcHQpOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIFByaW50IFNDUklQ VC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICpzY3JpcHQpCi0rewotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0 OwotKyAgc3RydWN0IGNsZWFudXAgKmNoYWluOwotKwotKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBf dWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKwotKyAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1p c3NpbmciKTsKLSsgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwgc2NyaXB0 LT5uYW1lKTsKLSsgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0rCi0rICAvKiBJZiB0aGUg bmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLwotKyAgaWYgKHNjcmlw dC0+ZnVsbF9wYXRoICE9IE5VTEwKLSsgICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFtZSwgc2Ny aXB0LT5mdWxsX3BhdGgpICE9IDApCi0rICAgIHsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICJcdGZ1bGwgbmFtZTogIik7Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJm dWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7Ci0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiXG4iKTsKLSsgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGNoYWluKTsKLSt9Ci0rCi0rLyog SGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkg bmFtZS4gICovCi0rCi0rc3RhdGljIGludAotK3NvcnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2 b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsKLSsgIGNvbnN0IHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikg YnA7Ci0rCi0rICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKLSt9Ci0r Ci0rLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0raW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5 KQotK3sKLSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsgIHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKyAgc3RydWN0IGNsZWFudXAg KnNjcmlwdF9jaGFpbjsKLSsgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRzOwotKyAg aW50IG5yX3NjcmlwdHM7Ci0rCi0rICBkb250X3JlcGVhdCAoKTsKLSsKLSsgIHBzcGFjZV9pbmZv ID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsK LSsgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotKyAgICB7Ci0rICAgICAgY2hhciAqcmVfZXJy ID0gcmVfY29tcCAocGF0dGVybik7Ci0rCi0rICAgICAgaWYgKHJlX2VycikKLSsJZXJyb3IgKF8o IkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsK LSsgICAgICByZV9jb21wICgiIik7Ci0rICAgIH0KLSsKLSsgIC8qIFdlIG5lZWQgdG8ga25vdyB0 aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4KLSsgICAgIFBsdXMg d2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCi0rICAgICBTbyBmaXJzdCB0cmF2 ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRzLiAgKi8K LSsKLSsgIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7Ci0rICBz Y3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2NyaXB0X3B0 ciksICZzY3JpcHRzKTsKLSsKLSsgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9p bmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW1tZWRpYXRlX3F1 aXQrKzsKLSsgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1 c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotKyAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUg KHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLSsJCQkgICAgICBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHMsICZzY3JpcHRzKTsKLSsgICAgICBpbW1lZGlhdGVfcXVpdC0tOwotKyAgICB9Ci0r Ci0rICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp OwotKyAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9z Y3JpcHRzLAotKwkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKLSsKLSsgIHVp X291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxvYWRlZCIp OwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2NyaXB0Iiwg IlNjcmlwdCIpOwotKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKLSsKLSsgIGlmIChucl9z Y3JpcHRzID4gMCkKLSsgICAgewotKyAgICAgIGludCBpOwotKyAgICAgIGxvYWRlZF9zY3JpcHRf cHRyIHNjcmlwdDsKLSsKLSsgICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9zY3JpcHRf cHRyLCBzY3JpcHRzKSwKLSsJICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2Ny aXB0cyksCi0rCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2NyaXB0c19i eV9uYW1lKTsKLSsgICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKLSsJcHJpbnRfc2NyaXB0IChzY3JpcHQpOwot KyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKLSsKLSsgIGlmIChucl9z Y3JpcHRzID09IDApCi0rICAgIHsKLSsgICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKLSsJ dWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcg JXMuXG4iLAotKwkJCXBhdHRlcm4pOwotKyAgICAgIGVsc2UKLSsJdWlfb3V0X21lc3NhZ2UgKHVp b3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKLSsgICAgfQotK30KLSsKLSsvKiBS ZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQ QUNFX0lORk8gd2FzIHVuc2V0Ci0rICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFs d2F5cyBzZXQgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQKLSsgICBvZiBQU1BBQ0Vf SU5GTy4gICovCi0rCi0raW50Ci0rc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKLSt7Ci0rICBpbnQgcmV0dmFs ID0gIXBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKLSsKLSsg IHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IDE7Ci0rCi0r ICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSt2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9p ZCk7Ci0rCi0rdm9pZAotK19pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSt7Ci0rICBhdXRv X2xvYWRfcHNwYWNlX2RhdGEKLSsgICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0 aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Ci0rCi0rICBvYnNlcnZl cl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0rCi0rICBhZGRf aW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKLSsJICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMs Ci0rCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRz LlxuXAotK1VzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOwotK30KLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDQ5MTIw MjEyICswMjAwCi1AQCAtMCwwICsxLDM2IEBACi0rLyogR0RCIHJvdXRpbmVzIGZvciBzdXBwb3J0 aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lm bmRlZiBBVVRPX0xPQURfSAotKyNkZWZpbmUgQVVUT19MT0FEX0ggMQotKwotK3N0cnVjdCBwcm9n cmFtX3NwYWNlOwotKwotK2V4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLSsKLStl eHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0rICBnZXRfYXV0b19sb2FkX3Bz cGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKLStl eHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KnBzcGFjZV9pbmZvLAotKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVs bF9wYXRoKTsKLStleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAotKwkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOwotK2V4dGVy biBpbnQKLSsgIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pOwotKwotKyNlbmRpZiAvKiBBVVRPX0xPQURfSCAq LwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4JMjAxMi0wNC0xOCAwMDoy NjoyOS4wNDkxMjAyMTIgKzAyMDAKLUBAIC0wLDAgKzEsMzQgQEAKLStlY2hvIFNldHRpbmcgdXAg dGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCi0rCi0rc2V0IGNvbXBsYWludHMg MQotKwotK2IgaW50ZXJuYWxfZXJyb3IKLSsKLStiIGluZm9fY29tbWFuZAotK2NvbW1hbmRzCi0r CXNpbGVudAotKwlyZXR1cm4KLStlbmQKLSsKLStkaXIgQHNyY2RpckAvLi4vbGliaWJlcnR5Ci0r ZGlyIEBzcmNkaXJALy4uL2JmZAotK2RpciBAc3JjZGlyQAotK2RpciAuCi0rc2V0IHByb21wdCAo dG9wLWdkYikgCi0rCi0rZGVmaW5lIHBkaWUKLSsgIGlmICRhcmdjID09IDEKLSsgICAgY2FsbCBk dW1wX2RpZSAoJGFyZzAsIDEpCi0rICBlbHNlCi0rICAgIGlmICRhcmdjID09IDIKLSsgICAgICBj YWxsIGR1bXBfZGllICgkYXJnMCwgJGFyZzEpCi0rICAgIGVsc2UKLSsgICAgICBwcmludGYgIlN5 bnRheDogcGRpZSBkaWUgW2RlcHRoXVxuIgotKyAgICBlbmQKLSsgIGVuZAotK2VuZAotKwotK2Rv Y3VtZW50IHBkaWUKLStQcmV0dHkgcHJpbnQgYSBEV0FSRiBESUUuCi0rU3ludGF4OiBwZGllIGRp ZSBbZGVwdGhdCi0rZW5kCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUu aW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL01ha2VmaWxl LmluCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wNC0xOCAwMDoyNjo1My40NTUwNTgwMzcgKzAy MDAKLUBAIC02ODAsNyArNjgwLDcgQEAgVEFSR0VUX0ZMQUdTX1RPX1BBU1MgPSBcCi0gIyBTRklM RVMgaXMgdXNlZCBpbiBidWlsZGluZyB0aGUgZGlzdHJpYnV0aW9uIGFyY2hpdmUuCi0gCi0gU0ZJ TEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5j IGFkYS10YXNrcy5jIFwKLS0JYWRkcm1hcC5jIFwKLSsJYWRkcm1hcC5jIGF1dG8tbG9hZC5jIFwK LSAJYXV4di5jIGF4LWdlbmVyYWwuYyBheC1nZGIuYyBcCi0gCWJjYWNoZS5jIFwKLSAJYmZkLXRh cmdldC5jIFwKLUBAIC04MTksNyArODE5LDcgQEAgc29saWItZGFyd2luLmggc29saWItaWE2NC1o cHV4Lmggc29saWItcwotIGdudWxpYi9leHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9j KytkZWZzLmggZ251bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAotIGdudWxpYi9zdGRkZWYuaW4u aCBpbmxpbmUtZnJhbWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKLSBjb21tb24vY29tbW9uLXV0 aWxzLmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwK LS1jb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmgKLStjb21tb24vbGludXgtb3NkYXRh LmggZ2RiLWRsZmNuLmggYXV0by1sb2FkLmgKLSAKLSAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVh ZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KLSAKLUBAIC04 NTEsNyArODUxLDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJAot IAl2ZXJzaW9uLm8gXAotIAlhbm5vdGF0ZS5vIFwKLSAJYWRkcm1hcC5vIFwKLS0JYXV4di5vIFwK LSsJYXV0by1sb2FkLm8gYXV4di5vIFwKLSAJYmZkLXRhcmdldC5vIFwKLSAJYmxvY2tmcmFtZS5v IGJyZWFrcG9pbnQubyBmaW5kdmFyLm8gcmVnY2FjaGUubyBcCi0gCWNoYXJzZXQubyBjb250aW51 YXRpb25zLm8gY29yZWxvdy5vIGRpc2FzbS5vIGR1bW15LWZyYW1lLm8gZGZwLm8gXAotQEAgLTEy NTUsNyArMTI1NSw3IEBAIGRpc3RjbGVhbjogY2xlYW4KLSAJcm0gLWYgZ2Ric2VydmVyL2NvbmZp Zy5zdGF0dXMgZ2Ric2VydmVyL2NvbmZpZy5sb2cKLSAJcm0gLWYgZ2Ric2VydmVyL3RtLmggZ2Ri c2VydmVyL3htLmggZ2Ric2VydmVyL25tLmgKLSAJcm0gLWYgZ2Ric2VydmVyL01ha2VmaWxlIGdk YnNlcnZlci9jb25maWcuY2FjaGUKLS0Jcm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5o IHN0YW1wLWggLmdkYmluaXQgaml0LXJlYWRlci5oCi0rCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1 cyBjb25maWcuaCBzdGFtcC1oIGdkYi1nZGIuZ2RiIGppdC1yZWFkZXIuaAotIAlybSAtZiB5Lm91 dHB1dCB5YWNjLmFjdHMgeWFjYy50bXAgeS50YWIuaAotIAlybSAtZiBjb25maWcubG9nIGNvbmZp Zy5jYWNoZQotIAlybSAtZiBNYWtlZmlsZQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv Y29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAy ICswMjAwCi1AQCAtMTY4MzksNyArMTY4MzksNyBAQCBhY19jb25maWdfbGlua3M9IiRhY19jb25m aWdfbGlua3MgJGFjX2NvCi0gJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9DSEFS U0VUIFwiVVRGLThcIiIgPj5jb25mZGVmcy5oCi0gCi0gCi0tYWNfY29uZmlnX2ZpbGVzPSIkYWNf Y29uZmlnX2ZpbGVzIE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdu dWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKLSthY19jb25maWdfZmlsZXM9 IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxp Yi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKLSAKLSBhY19jb25maWdfY29tbWFu ZHM9IiRhY19jb25maWdfY29tbWFuZHMgZGVmYXVsdCIKLSAKLUBAIC0xNzYwNSw3ICsxNzYwNSw3 IEBAIGRvCi0gICAgICJqaXQtcmVhZGVyLmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg aml0LXJlYWRlci5oOmppdC1yZWFkZXIuaW4iIDs7Ci0gICAgICIkYWNfY29uZmlnX2xpbmtzXzEi KSBDT05GSUdfTElOS1M9IiRDT05GSUdfTElOS1MgJGFjX2NvbmZpZ19saW5rc18xIiA7OwotICAg ICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7Ci0t ICAgICIuZ2RiaW5pdCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAuZ2RiaW5pdDpnZGJp bml0LmluIiA7OwotKyAgICAiZ2RiLWdkYi5nZGIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM RVMgZ2RiLWdkYi5nZGIiIDs7Ci0gICAgICJkb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZG9jL01ha2VmaWxlIiA7OwotICAgICAiZ251bGliL01ha2VmaWxlIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdudWxpYi9NYWtlZmlsZSIgOzsKLSAgICAgImRhdGEt ZGlyZWN0b3J5L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRhdGEtZGly ZWN0b3J5L01ha2VmaWxlIiA7OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZp Z3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29u ZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIw MjAyICswMjAwCi1AQCAtMjQyMiw3ICsyNDIyLDcgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBq dXN0IGFzc3VtZSBpdCdzCi0gQUNfREVGSU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVU Ri04IiwKLSAgICAgICAgICAgW0RlZmluZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1 bHQgaG9zdCBjaGFyYWN0ZXIgc2V0Ll0pCi0gCi0tQUNfT1VUUFVUKE1ha2VmaWxlIC5nZGJpbml0 OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9N YWtlZmlsZSwKLStBQ19PVVRQVVQoTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdu dWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKLSBbCi0gY2FzZSB4JENPTkZJ R19IRUFERVJTIGluCi0geGNvbmZpZy5oOmNvbmZpZy5pbikKLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5 OSArMDIwMAotQEAgLTQyLDYgKzQyLDcgQEAKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0g I2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSsjaW5j bHVkZSAiYXV0by1sb2FkLmgiCi0gCi0gLyogVGhlIHNlbGVjdGVkIGludGVycHJldGVyLiAgVGhp cyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQgY29tbWFuZAotICAgIHZhcmlhYmxlLCBzbyBpdCBzaG91 bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAtIHNpbmNlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjox NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHkt YXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKLUBAIC0xOCwz MCArMTgsMTQgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImRlZnMuaCIK LS0jaW5jbHVkZSAiZmlsZW5hbWVzLmgiCi0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLS0jaW5j bHVkZSAiZ2RiX3JlZ2V4LmgiCi0gI2luY2x1ZGUgInRvcC5oIgotICNpbmNsdWRlICJleGNlcHRp b25zLmgiCi0tI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0tI2lu Y2x1ZGUgIm9ic2VydmVyLmgiCi0tI2luY2x1ZGUgInByb2dzcGFjZS5oIgotICNpbmNsdWRlICJv YmpmaWxlcy5oIgotICNpbmNsdWRlICJweXRob24uaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRz LmgiCi0tCi0tLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2Fk aW5nLgotLSAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2Rl IHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCi0tICAgZmFsc2Ugb3RoZXJ3aXNlLgotLQotLSAg IEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJl IHRydWUgdG8gZW5hYmxlCi0tICAgYXV0by1sb2FkaW5nLgotLQotLSAgIFRoaXMgZmxhZyBleGlz dHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAot LSAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQg dGhlIHNlYXJjaCBkaXJlY3RvcmllcwotLSAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICov Ci0taW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOwotKyNpbmNsdWRlICJhdXRvLWxvYWQu aCIKLSAKLSAjaWZkZWYgSEFWRV9QWVRIT04KLSAKLUBAIC02MCwzMiArNDQsNiBAQCBpbnQgZ2Ri cHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0gICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxv dyB1cHdhcmQgY29tcGF0aWJsZSBleHRlbnNpb25zLiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9f U0VDVElPTl9OQU1FICIuZGVidWdfZ2RiX3NjcmlwdHMiCi0gCi0tLyogRm9yIHNjcmlwdHMgc3Bl Y2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQK LS0gICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNj cmlwdCBtdWx0aXBsZSB0aW1lcywKLS0gICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZp bGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKLS0gICBsb2FkZWQg dGhpcyB3YXkuICAqLwotLQotLXN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KLS17Ci0tICAv KiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMu ICAqLwotLSAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOwotLQotLSAgLyogTm9uLXplcm8g aWYgd2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90 IGJlaW5nCi0tICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcg b25jZS4gICovCi0tICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7Ci0tfTsK LS0KLS0vKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2Ny aXB0IGhhc2ggdGFibGUuICAqLwotLQotLXN0cnVjdCBsb2FkZWRfc2NyaXB0Ci0tewotLSAgLyog TmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCi0tICBjb25zdCBjaGFyICpuYW1l OwotLSAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChv ciB3YXMgb3RoZXJ3aXNlCi0tICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLS0gIGNvbnN0IGNoYXIg KmZ1bGxfcGF0aDsKLS19OwotLQotIC8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9k aXNhYmxlIGF1dG8tbG9hZGluZzoKLSAgICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCi0g ICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRz IHdoZW4gYW4gb2JqZmlsZQotQEAgLTk3LDEzNiArNTUsNiBAQCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dAotICAgIFRoZSBmYWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0 aW9uIGRldGFpbC4gICovCi0gc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7Ci0gCi0t LyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLwotLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg cHJvZ3JhbV9zcGFjZV9kYXRhICphdXRvX2xvYWRfcHNwYWNlX2RhdGE7Ci0tCi0tc3RhdGljIHZv aWQKLS1hdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2Ug KnBzcGFjZSwgdm9pZCAqYXJnKQotLXsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9h ZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaWYg KGluZm8tPmxvYWRlZF9zY3JpcHRzKQotLQlodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3Njcmlw dHMpOwotLSAgICAgIHhmcmVlIChpbmZvKTsKLS0gICAgfQotLX0KLS0KLS0vKiBHZXQgdGhlIGN1 cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAg VGhpcwotLSAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KLS0K LS1zdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0tZ2V0X2F1dG9fbG9hZF9w c3BhY2VfZGF0YSAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKLS17Ci0tICBzdHJ1Y3Qg YXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotLQotLSAgaW5mbyA9IHByb2dyYW1fc3BhY2Vf ZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotLSAgaWYgKGluZm8gPT0gTlVM TCkKLS0gICAgewotLSAgICAgIGluZm8gPSBYWkFMTE9DIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvKTsKLS0gICAgICBzZXRfcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9h ZF9wc3BhY2VfZGF0YSwgaW5mbyk7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBpbmZvOwotLX0KLS0K LS0vKiBIYXNoIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KLS0KLS1z dGF0aWMgaGFzaHZhbF90Ci0taGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpk YXRhKQotLXsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKLS0KLS0g IHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKLS19Ci0tCi0tLyogRXF1YWxpdHkg ZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotLQotLXN0YXRpYyBpbnQK LS1lcV9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQot LXsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7Ci0tICBjb25zdCBzdHJ1 Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOwotLQotLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUs IGViLT5uYW1lKSA9PSAwOwotLX0KLS0KLS0vKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFj ayBsb2FkZWQgc2NyaXB0cy4KLS0gICBFYWNoIGVudHJ5IGlzIGhhc2hlZCBieSB0aGUgZnVsbCBw YXRoIG5hbWUuICAqLwotLQotLXN0YXRpYyB2b2lkCi0taW5pdF9sb2FkZWRfc2NyaXB0c19pbmZv IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKLS17Ci0tICAvKiBD aG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5nIHNpemUgb2YgdGhlIGhhc2ggdGFibGUsIHNvbWV3aGF0 IGFyYml0cmFyaWx5LgotLSAgICAgU3BhY2UgZm9yIGVhY2ggZW50cnkgaXMgb2J0YWluZWQgd2l0 aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBmcmVlIHRoZW0KLS0gICAgIGVhc2lseS4gICovCi0tCi0t ICBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBodGFiX2NyZWF0ZSAoMzEsCi0tCQkJCQkg ICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSwKLS0JCQkJCSAgICAgZXFfbG9hZGVkX3Njcmlw dF9lbnRyeSwKLS0JCQkJCSAgICAgeGZyZWUpOwotLQotLSAgcHNwYWNlX2luZm8tPnNjcmlwdF9u b3RfZm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7Ci0tfQotLQotLS8qIFdyYXBwZXIgb24g Z2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBoYXNoIHRhYmxl Ci0tICAgZm9yIGxvYWRpbmcgc2NyaXB0cy4gICovCi0tCi0tc3RhdGljIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKgotLWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcg KHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0tewotLSAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0gIGluZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh IChwc3BhY2UpOwotLSAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5VTEwpCi0tICAgIGlu aXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7Ci0tCi0tICByZXR1cm4gaW5mbzsKLS19Ci0t Ci0tLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgSFRBQi4KLS0gICBGVUxMX1BBVEgg aXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KLS0gICBUaGUgcmVzdWx0IGlzIHRy dWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCi0tCi0t c3RhdGljIGludAotLW1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBodGFiICpodGFiLCBjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0tewotLSAgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKipzbG90LCBlbnRyeTsKLS0gIGludCBpbl9oYXNoX3RhYmxlOwotLQotLSAgZW50cnku bmFtZSA9IG5hbWU7Ci0tICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0tICBzbG90ID0g KHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJ TlNFUlQpOwotLSAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0tCi0tICAvKiBJZiB0 aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCi0tCi0tICBp ZiAoISBpbl9oYXNoX3RhYmxlKQotLSAgICB7Ci0tICAgICAgY2hhciAqcDsKLS0KLS0gICAgICAv KiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUu ICAqLwotLSAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCi0tCQkgICAgICAg KyBzdHJsZW4gKG5hbWUpICsgMQotLQkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0 cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkpOwotLSAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkg KyBzaXplb2YgKCoqc2xvdCk7Ci0tICAgICAgc3RyY3B5IChwLCBuYW1lKTsKLS0gICAgICAoKnNs b3QpLT5uYW1lID0gcDsKLS0gICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0tCXsKLS0JICBw ICs9IHN0cmxlbiAocCkgKyAxOwotLQkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKLS0JICAoKnNs b3QpLT5mdWxsX3BhdGggPSBwOwotLQl9Ci0tICAgICAgZWxzZQotLQkoKnNsb3QpLT5mdWxsX3Bh dGggPSBOVUxMOwotLSAgICB9Ci0tCi0tICByZXR1cm4gaW5faGFzaF90YWJsZTsKLS19Ci0tCi0g LyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgotICAgIFNUQVJULEVORCBkZWxp bWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCi0gICAgZmls ZSBuYW1lcy4KLUBAIC0zMDEsMjAgKzEyOSwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChz dHJ1Y3Qgb2JqZmlsZSAqCi0gCi0gCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2Vu ZXJhbC1wdXJwb3NlLiAgKi8KLSAKLS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3Nj cmlwdCAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLCBmaWxlLAotKyAgICAgIGluX2hhc2hf dGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwKLSAJCQkJCW9wZW5l ZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOwotIAotICAgICAgIGlmICghIG9wZW5lZCkKLSAJewotIAkg IC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dh YmxlLiAgKi8KLS0JICBpZiAoISBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50ZWQpCi0tCSAgICB7Ci0tCSAgICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2Fk IHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCi0rCSAgaWYgKHNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludCAocHNwYWNlX2luZm8pKQotKwkgICAgd2FybmluZyAoXygiTWlz c2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLSBvZiBm aWxlICVzXG5cCi0gVXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0 IHRoZW0uIiksCi0tCQkgICAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5h bWUpOwotLQkgICAgICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50 ZWQgPSBUUlVFOwotLQkgICAgfQotKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2Jq ZmlsZS0+bmFtZSk7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLUBAIC0zNTYsMTE2ICsxODEsNiBA QCBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCi0gICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOwotIH0KLSAKLS0vKiBDbGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rp b24gc2NyaXB0cy4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1jbGVhcl9zZWN0aW9uX3NjcmlwdHMg KHZvaWQpCi0tewotLSAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJv Z3JhbV9zcGFjZTsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0tCi0t ICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0 YSk7Ci0tICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwp Ci0tICAgIHsKLS0gICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOwotLSAg ICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0gTlVMTDsKLS0gICAgICBpbmZvLT5zY3JpcHRfbm90 X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOwotLSAgICB9Ci0tfQotLQotLS8qIExvb2sg Zm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2Fk IGl0LiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKLS17Ci0tICBjaGFyICpy ZWFsbmFtZTsKLS0gIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwotLSAgaW50IGxlbjsKLS0g IEZJTEUgKmlucHV0OwotLSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotLQotLSAgcmVhbG5h bWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOwotLSAgbGVuID0gc3RybGVuIChyZWFs bmFtZSk7Ci0tICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEp OwotLSAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0tICBzdHJjcHkgKGZpbGVu YW1lICsgbGVuLCBzdWZmaXgpOwotLQotLSAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBmaWxlbmFtZSk7Ci0tICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci0tCi0tICBp bnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKLS0gIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwot LQotLSAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKLS0gICAgewotLSAgICAg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGly ZWN0b3J5LiAgKi8KLS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1l KQotLQkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKLS0gICAgICBz dHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotLSAgICAgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0tCi0tICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 Ci0tICAgIH0KLS0KLS0gIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCi0tICAgIHsKLS0gICAg ICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRh dGEKLS0JIGRpcmVjdG9yeS4gICovCi0tICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVu IChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuICgiL2F1 dG8tbG9hZCIpICsgMSk7Ci0tICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsK LS0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKLS0gICAgICAvKiBGSUxF TkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLS0gICAg ICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotLQotLSAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGRlYnVnZmlsZSk7Ci0tICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIp OwotLSAgICB9Ci0tCi0tICBpZiAoaW5wdXQpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLS0KLS0gICAgICBtYWtlX2NsZWFudXBfZmNs b3NlIChpbnB1dCk7Ci0tCi0tICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRh YmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLS0JIGNhbiBwcmludCBpdC4gICov Ci0tICAgICAgcHNwYWNlX2luZm8gPQotLQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgICAgIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOwotLQot LSAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBm b3Igd2hldGhlciB0aGUKLS0JIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBh bHdheXMgbG9hZCBpdC4KLS0JIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxv YWQgaXQgdHdpY2UsCi0tCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRl bXBvdGVudCB1bmRlciBtdWx0aXBsZQotLQkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3Vy Y2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7 Ci0tICAgIH0KLS0KLS0gIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0tfQotLQotLS8qIFRoaXMg aXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4K LS0KLS0gICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQu Ci0tICAgMSkgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKLS0gICAyKSBmcm9tIC5k ZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uICAqLwotLQotLXN0YXRpYyB2b2lkCi0tYXV0b19sb2Fk X25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLS17Ci0tICBpZiAoIW9iamZp bGUpCi0tICAgIHsKLS0gICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBsb2FkaW5nIGEgbmV3 ICJtYWluIiBzeW1ib2wtZmlsZS4gICovCi0tICAgICAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICgp OwotLSAgICAgIHJldHVybjsKLS0gICAgfQotLQotLSAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKG9iamZpbGUpOwotLX0KLS0KLSAvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRz IGZvciBPQkpGSUxFLiAgKi8KLSAKLSB2b2lkCi1AQCAtNDc4LDE0NiArMTkzLDkgQEAgbG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAgICB9Ci0gfQotIAwKLS0vKiBD b2xsZWN0IHNjcmlwdHMgdG8gYmUgcHJpbnRlZCBpbiBhIHZlYy4gICovCi0tCi0tdHlwZWRlZiBz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7Ci0tREVGX1ZFQ19QIChsb2Fk ZWRfc2NyaXB0X3B0cik7Ci0tCi0tLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZl cnNlLgotLSAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICov Ci0tCi0tc3RhdGljIGludAotLWNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3Qs IHZvaWQgKmluZm8pCi0tewotLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90 OwotLSAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87Ci0tCi0t ICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKLS0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVk X3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKLS0KLS0gIHJldHVybiAxOwotLX0K LS0KLS0vKiBQcmludCBTQ1JJUFQuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tcHJpbnRfc2NyaXB0 IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0KQotLXsKLS0gIHN0cnVjdCB1aV9vdXQgKnVp b3V0ID0gY3VycmVudF91aW91dDsKLS0gIHN0cnVjdCBjbGVhbnVwICpjaGFpbjsKLS0KLS0gIGNo YWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsK LS0KLS0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxs X3BhdGggPyAiWWVzIiA6ICJNaXNzaW5nIik7Ci0tICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91 dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7Ci0tICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIp OwotLQotLSAgLyogSWYgdGhlIG5hbWUgaXNuJ3QgdGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9v LiAgKi8KLS0gIGlmIChzY3JpcHQtPmZ1bGxfcGF0aCAhPSBOVUxMCi0tICAgICAgJiYgc3RyY21w IChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ZnVsbF9wYXRoKSAhPSAwKQotLSAgICB7Ci0tICAgICAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXHRmdWxsIG5hbWU6ICIpOwotLSAgICAgIHVpX291dF9maWVs ZF9zdHJpbmcgKHVpb3V0LCAiZnVsbF9wYXRoIiwgc2NyaXB0LT5mdWxsX3BhdGgpOwotLSAgICAg IHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0tICAgIH0KLS0KLS0gIGRvX2NsZWFudXBzIChj aGFpbik7Ci0tfQotLQotLS8qIEhlbHBlciBmb3IgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBz b3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuICAqLwotLQotLXN0YXRpYyBpbnQKLS1zb3J0X3Njcmlw dHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQotLXsKLS0gIGNvbnN0 IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICphID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq KikgYXA7Ci0tICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKiopIGJwOwotLQotLSAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFt ZSwgYi0+bmFtZSk7Ci0tfQotLQotLS8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5k LiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBh dHRlcm4sIGludCBmcm9tX3R0eSkKLS17Ci0tICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJl bnRfdWlvdXQ7Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsK LS0gIHN0cnVjdCBjbGVhbnVwICpzY3JpcHRfY2hhaW47Ci0tICBWRUMgKGxvYWRlZF9zY3JpcHRf cHRyKSAqc2NyaXB0czsKLS0gIGludCBucl9zY3JpcHRzOwotLQotLSAgZG9udF9yZXBlYXQgKCk7 Ci0tCi0tICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSk7Ci0tCi0tICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKLS0gICAgewot LSAgICAgIGNoYXIgKnJlX2VyciA9IHJlX2NvbXAgKHBhdHRlcm4pOwotLQotLSAgICAgIGlmIChy ZV9lcnIpCi0tCWVycm9yIChfKCJJbnZhbGlkIHJlZ2V4cDogJXMiKSwgcmVfZXJyKTsKLS0gICAg fQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgcmVfY29tcCAoIiIpOwotLSAgICB9Ci0tCi0tICAv KiBXZSBuZWVkIHRvIGtub3cgdGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUg dGFibGUuCi0tICAgICBQbHVzIHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgot LSAgICAgU28gZmlyc3QgdHJhdmVyc2UgdGhlIGhhc2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0 Y2hpbmcgc2NyaXB0cy4gICovCi0tCi0tICBzY3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2Ny aXB0X3B0ciwgMTApOwotLSAgc2NyaXB0X2NoYWluID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51 cCAobG9hZGVkX3NjcmlwdF9wdHIpLCAmc2NyaXB0cyk7Ci0tCi0tICBpZiAocHNwYWNlX2luZm8g IT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKLS0gICAgewot LSAgICAgIGltbWVkaWF0ZV9xdWl0Kys7Ci0tICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2Ny aXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KLS0gICAgICBodGFi X3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCi0tCQkJICAg ICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7Ci0tICAgICAgaW1tZWRpYXRl X3F1aXQtLTsKLS0gICAgfQotLQotLSAgbnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9z Y3JpcHRfcHRyLCBzY3JpcHRzKTsKLS0gIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5f ZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywKLS0JCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0 c1RhYmxlIik7Ci0tCi0tICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwg ImxvYWRlZCIsICJMb2FkZWQiKTsKLS0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwg dWlfbGVmdCwgInNjcmlwdCIsICJTY3JpcHQiKTsKLS0gIHVpX291dF90YWJsZV9ib2R5ICh1aW91 dCk7Ci0tCi0tICBpZiAobnJfc2NyaXB0cyA+IDApCi0tICAgIHsKLS0gICAgICBpbnQgaTsKLS0g ICAgICBsb2FkZWRfc2NyaXB0X3B0ciBzY3JpcHQ7Ci0tCi0tICAgICAgcXNvcnQgKFZFQ19hZGRy ZXNzIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCi0tCSAgICAgVkVDX2xlbmd0aCAobG9h ZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAotLQkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9w dHIpLCBzb3J0X3NjcmlwdHNfYnlfbmFtZSk7Ci0tICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJh dGUgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzLCBpLCBzY3JpcHQpOyArK2kpCi0tCXByaW50 X3NjcmlwdCAoc2NyaXB0KTsKLS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFp bik7Ci0tCi0tICBpZiAobnJfc2NyaXB0cyA9PSAwKQotLSAgICB7Ci0tICAgICAgaWYgKHBhdHRl cm4gJiYgKnBhdHRlcm4pCi0tCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9h ZCBzY3JpcHRzIG1hdGNoaW5nICVzLlxuIiwKLS0JCQlwYXR0ZXJuKTsKLS0gICAgICBlbHNlCi0t CXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7Ci0t ICAgIH0KLS19Ci0tDAotIHZvaWQKLSBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkK LSB7Ci0tICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKLS0gICAgPSByZWdpc3Rlcl9wcm9ncmFtX3Nw YWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Ci0t Ci0tICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7 Ci0tCi0gICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xh c3Nfc3VwcG9ydCwKLSAJCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKLSBTZXQgdGhlIGRl YnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJc Ci1AQCAtNjI3LDExICsyMDUsNiBAQCBhbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIp LAotIAkJCSAgIE5VTEwsIE5VTEwsCi0gCQkJICAgJnNldGxpc3QsCi0gCQkJICAgJnNob3dsaXN0 KTsKLS0KLS0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAotLQkgICAgaW5mb19hdXRv X2xvYWRfc2NyaXB0cywKLS0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkg bG9hZGVkIHNjcmlwdHMuXG5cCi0tVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VY UF0iKSk7Ci0gfQotIAotICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjE0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRo b24uaAkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTI0LDggKzI0LDYg QEAKLSAKLSBzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3Q7Ci0gCi0tZXh0ZXJuIGludCBnZGJweV9n bG9iYWxfYXV0b19sb2FkOwotLQotIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6 YXRpb24gKHZvaWQpOwotIAotIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQg KHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA5b2Yy Mi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wOW9mMjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMTI0NGNmZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0w OW9mMjIucGF0Y2gKQEAgLTAsMCArMSwxMTY4IEBACitbcGF0Y2gjNCAzLzhdIGF1dG8tbG9hZDog cmVzaHVmZmxlIGNvZGUKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEy LTA0L21zZzAwMDg3Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDQvbXNnMDAxMTIuaHRtbAorCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1s b2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEy LTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIxMiArMDIwMAorQEAgLTAsMCArMSw0NzIgQEAKKysvKiBH REIgcm91dGluZXMgZm9yIHN1cHBvcnRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KKysKKysgICBD b3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJhdXRvLWxv YWQuaCIKKysjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisrI2luY2x1ZGUgInB5dGhvbi9weXRob24u aCIKKysjaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCisrI2luY2x1ZGUgInVpLW91dC5oIgorKyNpbmNs dWRlICJmaWxlbmFtZXMuaCIKKysjaW5jbHVkZSAiY29tbWFuZC5oIgorKyNpbmNsdWRlICJvYnNl cnZlci5oIgorKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNsdWRlICJweXRob24vcHl0aG9u LWludGVybmFsLmgiCisrCisrLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUg YXV0by1sb2FkaW5nLgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5 dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCisrICAgZmFsc2Ugb3RoZXJ3aXNl LgorKworKyAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9h ZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCisrICAgYXV0by1sb2FkaW5nLgorKworKyAgIFRoaXMg ZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBz dGFydC11cAorKyAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5 IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcworKyAgIHVzZWQgdG8gZmluZCB0aGUgc2Ny aXB0cy4gICovCisraW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOworKworKy8qIEZvciBz Y3JpcHRzIHNwZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVz IG1heSBsb2FkCisrICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2Fk aW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUgdGltZXMsCisrICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxv dCBvZiBvYmpmaWxlcyBhbmQgc2NyaXB0cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCisr ICAgbG9hZGVkIHRoaXMgd2F5LiAgKi8KKysKKytzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv CisreworKyAgLyogRm9yIGVhY2ggcHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRl ZCBzY3JpcHRzLiAgKi8KKysgIHN0cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0czsKKysKKysgIC8q IE5vbi16ZXJvIGlmIHdlJ3ZlIGlzc3VlZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQg c2NyaXB0IG5vdCBiZWluZworKyAgICAgZm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhp cyB3YXJuaW5nIG9uY2UuICAqLworKyAgaW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmlu dGVkOworK307CisrCisrLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUg bG9hZGVkIHNjcmlwdCBoYXNoIHRhYmxlLiAgKi8KKysKKytzdHJ1Y3QgbG9hZGVkX3NjcmlwdAor K3sKKysgIC8qIE5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLworKyAgY29uc3Qg Y2hhciAqbmFtZTsKKysgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24n dCBmb3VuZCAob3Igd2FzIG90aGVyd2lzZQorKyAgICAgaW5hY2Nlc3NpYmxlKS4gICovCisrICBj b25zdCBjaGFyICpmdWxsX3BhdGg7CisrfTsKKysKKysvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRh IGtleS4gICovCisrc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9f bG9hZF9wc3BhY2VfZGF0YTsKKysKKytzdGF0aWMgdm9pZAorK2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCisrewor KyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKysKKysgIGluZm8gPSBwcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKysgIGlmIChp bmZvICE9IE5VTEwpCisrICAgIHsKKysgICAgICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMpCisr CWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7CisrICAgICAgeGZyZWUgKGluZm8p OworKyAgICB9CisrfQorKworKy8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9hZCBkYXRhLiAgSWYg bm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCisrICAgZnVuY3Rpb24gYWx3YXlz IHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICoKKytnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3Jh bV9zcGFjZSAqcHNwYWNlKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmlu Zm87CisrCisrICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9w c3BhY2VfZGF0YSk7CisrICBpZiAoaW5mbyA9PSBOVUxMKQorKyAgICB7CisrICAgICAgaW5mbyA9 IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOworKyAgICAgIHNldF9wcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhLCBpbmZvKTsKKysg ICAgfQorKworKyAgcmV0dXJuIGluZm87CisrfQorKworKy8qIEhhc2ggZnVuY3Rpb24gZm9yIHRo ZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworKworK3N0YXRpYyBoYXNodmFsX3QKKytoYXNoX2xv YWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCisreworKyAgY29uc3Qgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOworKworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcg KGUtPm5hbWUpOworK30KKysKKysvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBz Y3JpcHQgaGFzaC4gICovCisrCisrc3RhdGljIGludAorK2VxX2xvYWRlZF9zY3JpcHRfZW50cnkg KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisreworKyAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmVhID0gYTsKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7 CisrCisrICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09IDA7CisrfQorKwor Ky8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgorKyAgIEVh Y2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICovCisrCisrc3RhdGlj IHZvaWQKKytpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKnBzcGFjZV9pbmZvKQorK3sKKysgIC8qIENob29zZSAzMSBhcyB0aGUgc3RhcnRpbmcg c2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHkuCisrICAgICBTcGFj ZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZy ZWUgdGhlbQorKyAgICAgZWFzaWx5LiAgKi8KKysKKysgIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2Ny aXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKKysJCQkJCSAgICAgaGFzaF9sb2FkZWRfc2NyaXB0X2Vu dHJ5LAorKwkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAorKwkJCQkJICAgICB4ZnJl ZSk7CisrCisrICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQg PSBGQUxTRTsKKyt9CisrCisrLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh IHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUKKysgICBmb3IgbG9hZGluZyBzY3JpcHRz LiAgKi8KKysKKytzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKytnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQor K3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0g Z2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAocHNwYWNlKTsKKysgIGlmIChpbmZvLT5sb2FkZWRf c2NyaXB0cyA9PSBOVUxMKQorKyAgICBpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKGluZm8pOwor KworKyAgcmV0dXJuIGluZm87CisrfQorKworKy8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRh YmxlIG9mIFBTUEFDRV9JTkZPLgorKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQg d2Fzbid0IGZvdW5kLgorKyAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBh bHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKysKKytpbnQKKyttYXliZV9hZGRfc2NyaXB0 IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAq bmFtZSwKKysJCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQorK3sKKysgIHN0cnVjdCBodGFiICpo dGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOworKyAgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKipzbG90LCBlbnRyeTsKKysgIGludCBpbl9oYXNoX3RhYmxlOworKworKyAgZW50cnkubmFt ZSA9IG5hbWU7CisrICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7CisrICBzbG90ID0gKHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNF UlQpOworKyAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7CisrCisrICAvKiBJZiB0aGlz IHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCisrCisrICBpZiAo ISBpbl9oYXNoX3RhYmxlKQorKyAgICB7CisrICAgICAgY2hhciAqcDsKKysKKysgICAgICAvKiBB bGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAq LworKyAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCisrCQkgICAgICAgKyBz dHJsZW4gKG5hbWUpICsgMQorKwkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxl biAoZnVsbF9wYXRoKSArIDEpIDogMCkpOworKyAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBz aXplb2YgKCoqc2xvdCk7CisrICAgICAgc3RyY3B5IChwLCBuYW1lKTsKKysgICAgICAoKnNsb3Qp LT5uYW1lID0gcDsKKysgICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCisrCXsKKysJICBwICs9 IHN0cmxlbiAocCkgKyAxOworKwkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKKysJICAoKnNsb3Qp LT5mdWxsX3BhdGggPSBwOworKwl9CisrICAgICAgZWxzZQorKwkoKnNsb3QpLT5mdWxsX3BhdGgg PSBOVUxMOworKyAgICB9CisrCisrICByZXR1cm4gaW5faGFzaF90YWJsZTsKKyt9CisrCisrLyog Q2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRlZCBzZWN0aW9uIHNjcmlwdHMuICAqLworKworK3N0YXRp YyB2b2lkCisrY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQorK3sKKysgIHN0cnVjdCBwcm9n cmFtX3NwYWNlICpwc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7CisrICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworKyAgaWYgKGluZm8gIT0gTlVMTCAm JiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaHRhYl9kZWxl dGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKKysgICAgICBpbmZvLT5sb2FkZWRfc2NyaXB0cyA9 IE5VTEw7CisrICAgICAgaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBG QUxTRTsKKysgICAgfQorK30KKysKKysvKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBh c3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCisrCisrdm9pZAorK2F1dG9f bG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIg KnN1ZmZpeCkKKyt7CisrICBjaGFyICpyZWFsbmFtZTsKKysgIGNoYXIgKmZpbGVuYW1lLCAqZGVi dWdmaWxlOworKyAgaW50IGxlbjsKKysgIEZJTEUgKmlucHV0OworKyAgc3RydWN0IGNsZWFudXAg KmNsZWFudXBzOworKworKyAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUp OworKyAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7CisrICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxl biArIHN0cmxlbiAoc3VmZml4KSArIDEpOworKyAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUs IGxlbik7CisrICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOworKworKyAgY2xlYW51 cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CisrICBtYWtlX2NsZWFudXAgKHhm cmVlLCByZWFsbmFtZSk7CisrCisrICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKKysg IGRlYnVnZmlsZSA9IGZpbGVuYW1lOworKworKyAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2Rp cmVjdG9yeSkKKysgICAgeworKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhl IHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KKysgICAgICBkZWJ1Z2ZpbGUgPSB4 bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQorKwkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2Rp cmVjdG9yeSkgKyAxKTsKKysgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJl Y3RvcnkpOworKyAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVk IGEgIi8iIGhlcmUuICAqLworKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Cisr CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKysgICAgICBpbnB1dCA9 IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CisrICAgIH0KKysKKysgIGlmICghaW5wdXQgJiYgZ2Ri X2RhdGFkaXIpCisrICAgIHsKKysgICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEg c3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKKysJIGRpcmVjdG9yeS4gICovCisrICAgICAgZGVi dWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1l KQorKwkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7CisrICAgICAgc3RyY3B5IChk ZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKKysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRv LWxvYWQiKTsKKysgICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVl ZCBhICIvIiBoZXJlLiAgKi8KKysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwor KworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7CisrICAgICAgaW5wdXQg PSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOworKyAgICB9CisrCisrICBpZiAoaW5wdXQpCisrICAg IHsKKysgICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKysK KysgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7CisrCisrICAgICAgLyogQWRkIHRo aXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0 cyIKKysJIGNhbiBwcmludCBpdC4gICovCisrICAgICAgcHNwYWNlX2luZm8gPQorKwlnZXRfYXV0 b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwor KyAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUsIGRlYnVnZmls ZSk7CisrCisrICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0 IGNoZWNrIGZvciB3aGV0aGVyIHRoZQorKwkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJs ZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgorKwkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdk IGV2ZXIgbG9hZCBpdCB0d2ljZSwKKysJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0 byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCisrCSBsb2FkcyBhbnl3YXkuICAqLworKyAg ICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVi dWdmaWxlKTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyt9CisrCisr LyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBz Y3JpcHRzLgorKworKyAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1 cHBvcnRlZC4KKysgICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQorKyAgIDIp IGZyb20gLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCisrCisrc3RhdGljIHZvaWQKKyth dXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGlm ICghb2JqZmlsZSkKKysgICAgeworKyAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRp bmcgYSBuZXcgIm1haW4iIHN5bWJvbC1maWxlLiAgKi8KKysgICAgICBjbGVhcl9zZWN0aW9uX3Nj cmlwdHMgKCk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisrfQorKworKy8qIENvbGxlY3Qgc2NyaXB0cyB0byBi ZSBwcmludGVkIGluIGEgdmVjLiAgKi8KKysKKyt0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0 ICpsb2FkZWRfc2NyaXB0X3B0cjsKKytERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKKysK KysvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCisrICAgQ29sbGVjdCB0 aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KKysKKytzdGF0aWMgaW50Cisr Y29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKKyt7Cisr ICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7CisrICBWRUMgKGxvYWRlZF9z Y3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKKysKKysgIGlmIChyZV9leGVjIChzY3Jp cHQtPm5hbWUpKQorKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlw dHNfcHRyLCBzY3JpcHQpOworKworKyAgcmV0dXJuIDE7CisrfQorKworKy8qIFByaW50IFNDUklQ VC4gICovCisrCisrc3RhdGljIHZvaWQKKytwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICpzY3JpcHQpCisreworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0 OworKyAgc3RydWN0IGNsZWFudXAgKmNoYWluOworKworKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBf dWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworKworKyAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1p c3NpbmciKTsKKysgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwgc2NyaXB0 LT5uYW1lKTsKKysgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisrICAvKiBJZiB0aGUg bmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLworKyAgaWYgKHNjcmlw dC0+ZnVsbF9wYXRoICE9IE5VTEwKKysgICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFtZSwgc2Ny aXB0LT5mdWxsX3BhdGgpICE9IDApCisrICAgIHsKKysgICAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICJcdGZ1bGwgbmFtZTogIik7CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJm dWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiXG4iKTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGNoYWluKTsKKyt9CisrCisrLyog SGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkg bmFtZS4gICovCisrCisrc3RhdGljIGludAorK3NvcnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2 b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCisreworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3Jp cHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsKKysgIGNvbnN0IHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikg YnA7CisrCisrICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKKyt9Cisr CisrLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLworKworK3N0YXRpYyB2 b2lkCisraW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5 KQorK3sKKysgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKysgIHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworKyAgc3RydWN0IGNsZWFudXAg KnNjcmlwdF9jaGFpbjsKKysgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRzOworKyAg aW50IG5yX3NjcmlwdHM7CisrCisrICBkb250X3JlcGVhdCAoKTsKKysKKysgIHBzcGFjZV9pbmZv ID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKysK KysgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQorKyAgICB7CisrICAgICAgY2hhciAqcmVfZXJy ID0gcmVfY29tcCAocGF0dGVybik7CisrCisrICAgICAgaWYgKHJlX2VycikKKysJZXJyb3IgKF8o IkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOworKyAgICB9CisrICBlbHNlCisrICAgIHsK KysgICAgICByZV9jb21wICgiIik7CisrICAgIH0KKysKKysgIC8qIFdlIG5lZWQgdG8ga25vdyB0 aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4KKysgICAgIFBsdXMg d2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCisrICAgICBTbyBmaXJzdCB0cmF2 ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRzLiAgKi8K KysKKysgIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7CisrICBz Y3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2NyaXB0X3B0 ciksICZzY3JpcHRzKTsKKysKKysgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9p bmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaW1tZWRpYXRlX3F1 aXQrKzsKKysgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1 c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLworKyAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUg KHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKKysJCQkgICAgICBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHMsICZzY3JpcHRzKTsKKysgICAgICBpbW1lZGlhdGVfcXVpdC0tOworKyAgICB9Cisr CisrICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp OworKyAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9z Y3JpcHRzLAorKwkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKKysKKysgIHVp X291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxvYWRlZCIp OworKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2NyaXB0Iiwg IlNjcmlwdCIpOworKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIGlmIChucl9z Y3JpcHRzID4gMCkKKysgICAgeworKyAgICAgIGludCBpOworKyAgICAgIGxvYWRlZF9zY3JpcHRf cHRyIHNjcmlwdDsKKysKKysgICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9zY3JpcHRf cHRyLCBzY3JpcHRzKSwKKysJICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2Ny aXB0cyksCisrCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2NyaXB0c19i eV9uYW1lKTsKKysgICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKKysJcHJpbnRfc2NyaXB0IChzY3JpcHQpOwor KyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKKysKKysgIGlmIChucl9z Y3JpcHRzID09IDApCisrICAgIHsKKysgICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKKysJ dWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcg JXMuXG4iLAorKwkJCXBhdHRlcm4pOworKyAgICAgIGVsc2UKKysJdWlfb3V0X21lc3NhZ2UgKHVp b3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKKysgICAgfQorK30KKysKKysvKiBS ZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQ QUNFX0lORk8gd2FzIHVuc2V0CisrICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFs d2F5cyBzZXQgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQKKysgICBvZiBQU1BBQ0Vf SU5GTy4gICovCisrCisraW50Cisrc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKKyt7CisrICBpbnQgcmV0dmFs ID0gIXBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKKysKKysg IHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IDE7CisrCisr ICByZXR1cm4gcmV0dmFsOworK30KKysKKyt2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9p ZCk7CisrCisrdm9pZAorK19pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKKyt7CisrICBhdXRv X2xvYWRfcHNwYWNlX2RhdGEKKysgICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0 aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7CisrCisrICBvYnNlcnZl cl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7CisrCisrICBhZGRf aW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKKysJICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMs CisrCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRz LlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOworK30KK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDQ5MTIw MjEyICswMjAwCitAQCAtMCwwICsxLDM2IEBACisrLyogR0RCIHJvdXRpbmVzIGZvciBzdXBwb3J0 aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2lm bmRlZiBBVVRPX0xPQURfSAorKyNkZWZpbmUgQVVUT19MT0FEX0ggMQorKworK3N0cnVjdCBwcm9n cmFtX3NwYWNlOworKworK2V4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKysKKytl eHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisrICBnZXRfYXV0b19sb2FkX3Bz cGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKytl eHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KnBzcGFjZV9pbmZvLAorKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVs bF9wYXRoKTsKKytleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorKwkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOworK2V4dGVy biBpbnQKKysgIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pOworKworKyNlbmRpZiAvKiBBVVRPX0xPQURfSCAq LworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4JMjAxMi0wNC0xOCAwMDoy NjoyOS4wNDkxMjAyMTIgKzAyMDAKK0BAIC0wLDAgKzEsMzQgQEAKKytlY2hvIFNldHRpbmcgdXAg dGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCisrCisrc2V0IGNvbXBsYWludHMg MQorKworK2IgaW50ZXJuYWxfZXJyb3IKKysKKytiIGluZm9fY29tbWFuZAorK2NvbW1hbmRzCisr CXNpbGVudAorKwlyZXR1cm4KKytlbmQKKysKKytkaXIgQHNyY2RpckAvLi4vbGliaWJlcnR5Cisr ZGlyIEBzcmNkaXJALy4uL2JmZAorK2RpciBAc3JjZGlyQAorK2RpciAuCisrc2V0IHByb21wdCAo dG9wLWdkYikgCisrCisrZGVmaW5lIHBkaWUKKysgIGlmICRhcmdjID09IDEKKysgICAgY2FsbCBk dW1wX2RpZSAoJGFyZzAsIDEpCisrICBlbHNlCisrICAgIGlmICRhcmdjID09IDIKKysgICAgICBj YWxsIGR1bXBfZGllICgkYXJnMCwgJGFyZzEpCisrICAgIGVsc2UKKysgICAgICBwcmludGYgIlN5 bnRheDogcGRpZSBkaWUgW2RlcHRoXVxuIgorKyAgICBlbmQKKysgIGVuZAorK2VuZAorKworK2Rv Y3VtZW50IHBkaWUKKytQcmV0dHkgcHJpbnQgYSBEV0FSRiBESUUuCisrU3ludGF4OiBwZGllIGRp ZSBbZGVwdGhdCisrZW5kCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUu aW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL01ha2VmaWxl LmluCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wNC0xOCAwMDoyNjo1My40NTUwNTgwMzcgKzAy MDAKK0BAIC02ODAsNyArNjgwLDcgQEAgVEFSR0VUX0ZMQUdTX1RPX1BBU1MgPSBcCisgIyBTRklM RVMgaXMgdXNlZCBpbiBidWlsZGluZyB0aGUgZGlzdHJpYnV0aW9uIGFyY2hpdmUuCisgCisgU0ZJ TEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5j IGFkYS10YXNrcy5jIFwKKy0JYWRkcm1hcC5jIFwKKysJYWRkcm1hcC5jIGF1dG8tbG9hZC5jIFwK KyAJYXV4di5jIGF4LWdlbmVyYWwuYyBheC1nZGIuYyBcCisgCWJjYWNoZS5jIFwKKyAJYmZkLXRh cmdldC5jIFwKK0BAIC04MTksNyArODE5LDcgQEAgc29saWItZGFyd2luLmggc29saWItaWE2NC1o cHV4Lmggc29saWItcworIGdudWxpYi9leHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9j KytkZWZzLmggZ251bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAorIGdudWxpYi9zdGRkZWYuaW4u aCBpbmxpbmUtZnJhbWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKKyBjb21tb24vY29tbW9uLXV0 aWxzLmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwK Ky1jb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmgKKytjb21tb24vbGludXgtb3NkYXRh LmggZ2RiLWRsZmNuLmggYXV0by1sb2FkLmgKKyAKKyAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVh ZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KKyAKK0BAIC04 NTEsNyArODUxLDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJAor IAl2ZXJzaW9uLm8gXAorIAlhbm5vdGF0ZS5vIFwKKyAJYWRkcm1hcC5vIFwKKy0JYXV4di5vIFwK KysJYXV0by1sb2FkLm8gYXV4di5vIFwKKyAJYmZkLXRhcmdldC5vIFwKKyAJYmxvY2tmcmFtZS5v IGJyZWFrcG9pbnQubyBmaW5kdmFyLm8gcmVnY2FjaGUubyBcCisgCWNoYXJzZXQubyBjb250aW51 YXRpb25zLm8gY29yZWxvdy5vIGRpc2FzbS5vIGR1bW15LWZyYW1lLm8gZGZwLm8gXAorQEAgLTEy NTUsNyArMTI1NSw3IEBAIGRpc3RjbGVhbjogY2xlYW4KKyAJcm0gLWYgZ2Ric2VydmVyL2NvbmZp Zy5zdGF0dXMgZ2Ric2VydmVyL2NvbmZpZy5sb2cKKyAJcm0gLWYgZ2Ric2VydmVyL3RtLmggZ2Ri c2VydmVyL3htLmggZ2Ric2VydmVyL25tLmgKKyAJcm0gLWYgZ2Ric2VydmVyL01ha2VmaWxlIGdk YnNlcnZlci9jb25maWcuY2FjaGUKKy0Jcm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5o IHN0YW1wLWggLmdkYmluaXQgaml0LXJlYWRlci5oCisrCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1 cyBjb25maWcuaCBzdGFtcC1oIGdkYi1nZGIuZ2RiIGppdC1yZWFkZXIuaAorIAlybSAtZiB5Lm91 dHB1dCB5YWNjLmFjdHMgeWFjYy50bXAgeS50YWIuaAorIAlybSAtZiBjb25maWcubG9nIGNvbmZp Zy5jYWNoZQorIAlybSAtZiBNYWtlZmlsZQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv Y29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAy ICswMjAwCitAQCAtMTY4MzksNyArMTY4MzksNyBAQCBhY19jb25maWdfbGlua3M9IiRhY19jb25m aWdfbGlua3MgJGFjX2NvCisgJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9DSEFS U0VUIFwiVVRGLThcIiIgPj5jb25mZGVmcy5oCisgCisgCistYWNfY29uZmlnX2ZpbGVzPSIkYWNf Y29uZmlnX2ZpbGVzIE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdu dWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKKythY19jb25maWdfZmlsZXM9 IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxp Yi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKKyAKKyBhY19jb25maWdfY29tbWFu ZHM9IiRhY19jb25maWdfY29tbWFuZHMgZGVmYXVsdCIKKyAKK0BAIC0xNzYwNSw3ICsxNzYwNSw3 IEBAIGRvCisgICAgICJqaXQtcmVhZGVyLmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg aml0LXJlYWRlci5oOmppdC1yZWFkZXIuaW4iIDs7CisgICAgICIkYWNfY29uZmlnX2xpbmtzXzEi KSBDT05GSUdfTElOS1M9IiRDT05GSUdfTElOS1MgJGFjX2NvbmZpZ19saW5rc18xIiA7OworICAg ICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7Cist ICAgICIuZ2RiaW5pdCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAuZ2RiaW5pdDpnZGJp bml0LmluIiA7OworKyAgICAiZ2RiLWdkYi5nZGIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM RVMgZ2RiLWdkYi5nZGIiIDs7CisgICAgICJkb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZG9jL01ha2VmaWxlIiA7OworICAgICAiZ251bGliL01ha2VmaWxlIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdudWxpYi9NYWtlZmlsZSIgOzsKKyAgICAgImRhdGEt ZGlyZWN0b3J5L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRhdGEtZGly ZWN0b3J5L01ha2VmaWxlIiA7OworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZp Z3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29u ZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIw MjAyICswMjAwCitAQCAtMjQyMiw3ICsyNDIyLDcgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBq dXN0IGFzc3VtZSBpdCdzCisgQUNfREVGSU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVU Ri04IiwKKyAgICAgICAgICAgW0RlZmluZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1 bHQgaG9zdCBjaGFyYWN0ZXIgc2V0Ll0pCisgCistQUNfT1VUUFVUKE1ha2VmaWxlIC5nZGJpbml0 OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9N YWtlZmlsZSwKKytBQ19PVVRQVVQoTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdu dWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKKyBbCisgY2FzZSB4JENPTkZJ R19IRUFERVJTIGluCisgeGNvbmZpZy5oOmNvbmZpZy5pbikKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5 OSArMDIwMAorQEAgLTQyLDYgKzQyLDcgQEAKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCisg I2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKysjaW5j bHVkZSAiYXV0by1sb2FkLmgiCisgCisgLyogVGhlIHNlbGVjdGVkIGludGVycHJldGVyLiAgVGhp cyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQgY29tbWFuZAorICAgIHZhcmlhYmxlLCBzbyBpdCBzaG91 bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAtIHNpbmNlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjox NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHkt YXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKK0BAIC0xOCwz MCArMTgsMTQgQEAKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisgCisgI2luY2x1ZGUgImRlZnMuaCIK Ky0jaW5jbHVkZSAiZmlsZW5hbWVzLmgiCisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKy0jaW5j bHVkZSAiZ2RiX3JlZ2V4LmgiCisgI2luY2x1ZGUgInRvcC5oIgorICNpbmNsdWRlICJleGNlcHRp b25zLmgiCistI2luY2x1ZGUgImNvbW1hbmQuaCIKKyAjaW5jbHVkZSAiZ2RiY21kLmgiCistI2lu Y2x1ZGUgIm9ic2VydmVyLmgiCistI2luY2x1ZGUgInByb2dzcGFjZS5oIgorICNpbmNsdWRlICJv YmpmaWxlcy5oIgorICNpbmNsdWRlICJweXRob24uaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRz LmgiCistCistLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2Fk aW5nLgorLSAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2Rl IHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCistICAgZmFsc2Ugb3RoZXJ3aXNlLgorLQorLSAg IEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJl IHRydWUgdG8gZW5hYmxlCistICAgYXV0by1sb2FkaW5nLgorLQorLSAgIFRoaXMgZmxhZyBleGlz dHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAor LSAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQg dGhlIHNlYXJjaCBkaXJlY3RvcmllcworLSAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICov CistaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOworKyNpbmNsdWRlICJhdXRvLWxvYWQu aCIKKyAKKyAjaWZkZWYgSEFWRV9QWVRIT04KKyAKK0BAIC02MCwzMiArNDQsNiBAQCBpbnQgZ2Ri cHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisgICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxv dyB1cHdhcmQgY29tcGF0aWJsZSBleHRlbnNpb25zLiAgKi8KKyAjZGVmaW5lIEdEQlBZX0FVVE9f U0VDVElPTl9OQU1FICIuZGVidWdfZ2RiX3NjcmlwdHMiCisgCistLyogRm9yIHNjcmlwdHMgc3Bl Y2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQK Ky0gICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNj cmlwdCBtdWx0aXBsZSB0aW1lcywKKy0gICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZp bGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKKy0gICBsb2FkZWQg dGhpcyB3YXkuICAqLworLQorLXN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KKy17CistICAv KiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMu ICAqLworLSAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOworLQorLSAgLyogTm9uLXplcm8g aWYgd2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90 IGJlaW5nCistICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcg b25jZS4gICovCistICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7CistfTsK Ky0KKy0vKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2Ny aXB0IGhhc2ggdGFibGUuICAqLworLQorLXN0cnVjdCBsb2FkZWRfc2NyaXB0CisteworLSAgLyog TmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCistICBjb25zdCBjaGFyICpuYW1l OworLSAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChv ciB3YXMgb3RoZXJ3aXNlCistICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKy0gIGNvbnN0IGNoYXIg KmZ1bGxfcGF0aDsKKy19OworLQorIC8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9k aXNhYmxlIGF1dG8tbG9hZGluZzoKKyAgICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCisg ICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRz IHdoZW4gYW4gb2JqZmlsZQorQEAgLTk3LDEzNiArNTUsNiBAQCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dAorICAgIFRoZSBmYWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0 aW9uIGRldGFpbC4gICovCisgc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7CisgCist LyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg cHJvZ3JhbV9zcGFjZV9kYXRhICphdXRvX2xvYWRfcHNwYWNlX2RhdGE7CistCistc3RhdGljIHZv aWQKKy1hdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2Ug KnBzcGFjZSwgdm9pZCAqYXJnKQorLXsKKy0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KmluZm87CistCistICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9h ZF9wc3BhY2VfZGF0YSk7CistICBpZiAoaW5mbyAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYg KGluZm8tPmxvYWRlZF9zY3JpcHRzKQorLQlodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3Njcmlw dHMpOworLSAgICAgIHhmcmVlIChpbmZvKTsKKy0gICAgfQorLX0KKy0KKy0vKiBHZXQgdGhlIGN1 cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAg VGhpcworLSAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KKy0K Ky1zdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCistZ2V0X2F1dG9fbG9hZF9w c3BhY2VfZGF0YSAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKKy17CistICBzdHJ1Y3Qg YXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1fc3BhY2Vf ZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworLSAgaWYgKGluZm8gPT0gTlVM TCkKKy0gICAgeworLSAgICAgIGluZm8gPSBYWkFMTE9DIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvKTsKKy0gICAgICBzZXRfcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9h ZF9wc3BhY2VfZGF0YSwgaW5mbyk7CistICAgIH0KKy0KKy0gIHJldHVybiBpbmZvOworLX0KKy0K Ky0vKiBIYXNoIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KKy0KKy1z dGF0aWMgaGFzaHZhbF90CistaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpk YXRhKQorLXsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKKy0KKy0g IHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKKy19CistCistLyogRXF1YWxpdHkg ZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworLQorLXN0YXRpYyBpbnQK Ky1lcV9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQor LXsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7CistICBjb25zdCBzdHJ1 Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOworLQorLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUs IGViLT5uYW1lKSA9PSAwOworLX0KKy0KKy0vKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFj ayBsb2FkZWQgc2NyaXB0cy4KKy0gICBFYWNoIGVudHJ5IGlzIGhhc2hlZCBieSB0aGUgZnVsbCBw YXRoIG5hbWUuICAqLworLQorLXN0YXRpYyB2b2lkCistaW5pdF9sb2FkZWRfc2NyaXB0c19pbmZv IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKKy17CistICAvKiBD aG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5nIHNpemUgb2YgdGhlIGhhc2ggdGFibGUsIHNvbWV3aGF0 IGFyYml0cmFyaWx5LgorLSAgICAgU3BhY2UgZm9yIGVhY2ggZW50cnkgaXMgb2J0YWluZWQgd2l0 aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBmcmVlIHRoZW0KKy0gICAgIGVhc2lseS4gICovCistCist ICBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBodGFiX2NyZWF0ZSAoMzEsCistCQkJCQkg ICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSwKKy0JCQkJCSAgICAgZXFfbG9hZGVkX3Njcmlw dF9lbnRyeSwKKy0JCQkJCSAgICAgeGZyZWUpOworLQorLSAgcHNwYWNlX2luZm8tPnNjcmlwdF9u b3RfZm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7CistfQorLQorLS8qIFdyYXBwZXIgb24g Z2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBoYXNoIHRhYmxl CistICAgZm9yIGxvYWRpbmcgc2NyaXB0cy4gICovCistCistc3RhdGljIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKgorLWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcg KHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisteworLSAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0gIGluZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh IChwc3BhY2UpOworLSAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5VTEwpCistICAgIGlu aXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7CistCistICByZXR1cm4gaW5mbzsKKy19Cist CistLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgSFRBQi4KKy0gICBGVUxMX1BBVEgg aXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KKy0gICBUaGUgcmVzdWx0IGlzIHRy dWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCistCist c3RhdGljIGludAorLW1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBodGFiICpodGFiLCBjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpCisteworLSAgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKipzbG90LCBlbnRyeTsKKy0gIGludCBpbl9oYXNoX3RhYmxlOworLQorLSAgZW50cnku bmFtZSA9IG5hbWU7CistICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7CistICBzbG90ID0g KHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJ TlNFUlQpOworLSAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7CistCistICAvKiBJZiB0 aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICovCistCistICBp ZiAoISBpbl9oYXNoX3RhYmxlKQorLSAgICB7CistICAgICAgY2hhciAqcDsKKy0KKy0gICAgICAv KiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUu ICAqLworLSAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCistCQkgICAgICAg KyBzdHJsZW4gKG5hbWUpICsgMQorLQkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0 cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkpOworLSAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkg KyBzaXplb2YgKCoqc2xvdCk7CistICAgICAgc3RyY3B5IChwLCBuYW1lKTsKKy0gICAgICAoKnNs b3QpLT5uYW1lID0gcDsKKy0gICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCistCXsKKy0JICBw ICs9IHN0cmxlbiAocCkgKyAxOworLQkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsKKy0JICAoKnNs b3QpLT5mdWxsX3BhdGggPSBwOworLQl9CistICAgICAgZWxzZQorLQkoKnNsb3QpLT5mdWxsX3Bh dGggPSBOVUxMOworLSAgICB9CistCistICByZXR1cm4gaW5faGFzaF90YWJsZTsKKy19CistCisg LyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgorICAgIFNUQVJULEVORCBkZWxp bWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCisgICAgZmls ZSBuYW1lcy4KK0BAIC0zMDEsMjAgKzEyOSwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChz dHJ1Y3Qgb2JqZmlsZSAqCisgCisgCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2Vu ZXJhbC1wdXJwb3NlLiAgKi8KKyAKKy0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3Nj cmlwdCAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLCBmaWxlLAorKyAgICAgIGluX2hhc2hf dGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwKKyAJCQkJCW9wZW5l ZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOworIAorICAgICAgIGlmICghIG9wZW5lZCkKKyAJeworIAkg IC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dh YmxlLiAgKi8KKy0JICBpZiAoISBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50ZWQpCistCSAgICB7CistCSAgICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2Fk IHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCisrCSAgaWYgKHNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludCAocHNwYWNlX2luZm8pKQorKwkgICAgd2FybmluZyAoXygiTWlz c2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKyBvZiBm aWxlICVzXG5cCisgVXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0 IHRoZW0uIiksCistCQkgICAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5h bWUpOworLQkgICAgICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50 ZWQgPSBUUlVFOworLQkgICAgfQorKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2Jq ZmlsZS0+bmFtZSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0zNTYsMTE2ICsxODEsNiBA QCBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCisgICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOworIH0KKyAKKy0vKiBDbGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rp b24gc2NyaXB0cy4gICovCistCistc3RhdGljIHZvaWQKKy1jbGVhcl9zZWN0aW9uX3NjcmlwdHMg KHZvaWQpCisteworLSAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJv Z3JhbV9zcGFjZTsKKy0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CistCist ICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0 YSk7CistICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwp CistICAgIHsKKy0gICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworLSAg ICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0gTlVMTDsKKy0gICAgICBpbmZvLT5zY3JpcHRfbm90 X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOworLSAgICB9CistfQorLQorLS8qIExvb2sg Zm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2Fk IGl0LiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKy17CistICBjaGFyICpy ZWFsbmFtZTsKKy0gIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOworLSAgaW50IGxlbjsKKy0g IEZJTEUgKmlucHV0OworLSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworLQorLSAgcmVhbG5h bWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOworLSAgbGVuID0gc3RybGVuIChyZWFs bmFtZSk7CistICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEp OworLSAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7CistICBzdHJjcHkgKGZpbGVu YW1lICsgbGVuLCBzdWZmaXgpOworLQorLSAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBmaWxlbmFtZSk7CistICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CistCistICBp bnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKKy0gIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwor LQorLSAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKKy0gICAgeworLSAgICAg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGly ZWN0b3J5LiAgKi8KKy0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1l KQorLQkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKKy0gICAgICBz dHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworLSAgICAgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworLSAgICAg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CistCistICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKKy0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 CistICAgIH0KKy0KKy0gIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCistICAgIHsKKy0gICAg ICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRh dGEKKy0JIGRpcmVjdG9yeS4gICovCistICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVu IChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQorLQkJCSAgICsgc3RybGVuICgiL2F1 dG8tbG9hZCIpICsgMSk7CistICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsK Ky0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKKy0gICAgICAvKiBGSUxF TkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KKy0gICAg ICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOworLQorLSAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGRlYnVnZmlsZSk7CistICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIp OworLSAgICB9CistCistICBpZiAoaW5wdXQpCistICAgIHsKKy0gICAgICBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKy0KKy0gICAgICBtYWtlX2NsZWFudXBfZmNs b3NlIChpbnB1dCk7CistCistICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRh YmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKKy0JIGNhbiBwcmludCBpdC4gICov CistICAgICAgcHNwYWNlX2luZm8gPQorLQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgICAgIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOworLQor LSAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBm b3Igd2hldGhlciB0aGUKKy0JIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBh bHdheXMgbG9hZCBpdC4KKy0JIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxv YWQgaXQgdHdpY2UsCistCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRl bXBvdGVudCB1bmRlciBtdWx0aXBsZQorLQkgbG9hZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3Vy Y2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7 CistICAgIH0KKy0KKy0gIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CistfQorLQorLS8qIFRoaXMg aXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4K Ky0KKy0gICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQu CistICAgMSkgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKKy0gICAyKSBmcm9tIC5k ZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uICAqLworLQorLXN0YXRpYyB2b2lkCistYXV0b19sb2Fk X25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKy17CistICBpZiAoIW9iamZp bGUpCistICAgIHsKKy0gICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBsb2FkaW5nIGEgbmV3 ICJtYWluIiBzeW1ib2wtZmlsZS4gICovCistICAgICAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICgp OworLSAgICAgIHJldHVybjsKKy0gICAgfQorLQorLSAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKG9iamZpbGUpOworLX0KKy0KKyAvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRz IGZvciBPQkpGSUxFLiAgKi8KKyAKKyB2b2lkCitAQCAtNDc4LDE0NiArMTkzLDkgQEAgbG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYgorICAgICB9CisgfQorIAwKKy0vKiBD b2xsZWN0IHNjcmlwdHMgdG8gYmUgcHJpbnRlZCBpbiBhIHZlYy4gICovCistCistdHlwZWRlZiBz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7CistREVGX1ZFQ19QIChsb2Fk ZWRfc2NyaXB0X3B0cik7CistCistLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZl cnNlLgorLSAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICov CistCistc3RhdGljIGludAorLWNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3Qs IHZvaWQgKmluZm8pCisteworLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90 OworLSAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87CistCist ICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKKy0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVk X3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKKy0KKy0gIHJldHVybiAxOworLX0K Ky0KKy0vKiBQcmludCBTQ1JJUFQuICAqLworLQorLXN0YXRpYyB2b2lkCistcHJpbnRfc2NyaXB0 IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0KQorLXsKKy0gIHN0cnVjdCB1aV9vdXQgKnVp b3V0ID0gY3VycmVudF91aW91dDsKKy0gIHN0cnVjdCBjbGVhbnVwICpjaGFpbjsKKy0KKy0gIGNo YWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsK Ky0KKy0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxs X3BhdGggPyAiWWVzIiA6ICJNaXNzaW5nIik7CistICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91 dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7CistICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIp OworLQorLSAgLyogSWYgdGhlIG5hbWUgaXNuJ3QgdGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9v LiAgKi8KKy0gIGlmIChzY3JpcHQtPmZ1bGxfcGF0aCAhPSBOVUxMCistICAgICAgJiYgc3RyY21w IChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ZnVsbF9wYXRoKSAhPSAwKQorLSAgICB7CistICAgICAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXHRmdWxsIG5hbWU6ICIpOworLSAgICAgIHVpX291dF9maWVs ZF9zdHJpbmcgKHVpb3V0LCAiZnVsbF9wYXRoIiwgc2NyaXB0LT5mdWxsX3BhdGgpOworLSAgICAg IHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CistICAgIH0KKy0KKy0gIGRvX2NsZWFudXBzIChj aGFpbik7CistfQorLQorLS8qIEhlbHBlciBmb3IgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBz b3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuICAqLworLQorLXN0YXRpYyBpbnQKKy1zb3J0X3Njcmlw dHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQorLXsKKy0gIGNvbnN0 IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICphID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq KikgYXA7CistICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKiopIGJwOworLQorLSAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFt ZSwgYi0+bmFtZSk7CistfQorLQorLS8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5k LiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBh dHRlcm4sIGludCBmcm9tX3R0eSkKKy17CistICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJl bnRfdWlvdXQ7CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsK Ky0gIHN0cnVjdCBjbGVhbnVwICpzY3JpcHRfY2hhaW47CistICBWRUMgKGxvYWRlZF9zY3JpcHRf cHRyKSAqc2NyaXB0czsKKy0gIGludCBucl9zY3JpcHRzOworLQorLSAgZG9udF9yZXBlYXQgKCk7 CistCistICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSk7CistCistICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKKy0gICAgewor LSAgICAgIGNoYXIgKnJlX2VyciA9IHJlX2NvbXAgKHBhdHRlcm4pOworLQorLSAgICAgIGlmIChy ZV9lcnIpCistCWVycm9yIChfKCJJbnZhbGlkIHJlZ2V4cDogJXMiKSwgcmVfZXJyKTsKKy0gICAg fQorLSAgZWxzZQorLSAgICB7CistICAgICAgcmVfY29tcCAoIiIpOworLSAgICB9CistCistICAv KiBXZSBuZWVkIHRvIGtub3cgdGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUg dGFibGUuCistICAgICBQbHVzIHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgor LSAgICAgU28gZmlyc3QgdHJhdmVyc2UgdGhlIGhhc2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0 Y2hpbmcgc2NyaXB0cy4gICovCistCistICBzY3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2Ny aXB0X3B0ciwgMTApOworLSAgc2NyaXB0X2NoYWluID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51 cCAobG9hZGVkX3NjcmlwdF9wdHIpLCAmc2NyaXB0cyk7CistCistICBpZiAocHNwYWNlX2luZm8g IT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKKy0gICAgewor LSAgICAgIGltbWVkaWF0ZV9xdWl0Kys7CistICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2Ny aXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KKy0gICAgICBodGFi X3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCistCQkJICAg ICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7CistICAgICAgaW1tZWRpYXRl X3F1aXQtLTsKKy0gICAgfQorLQorLSAgbnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9z Y3JpcHRfcHRyLCBzY3JpcHRzKTsKKy0gIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5f ZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywKKy0JCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0 c1RhYmxlIik7CistCistICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwg ImxvYWRlZCIsICJMb2FkZWQiKTsKKy0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwg dWlfbGVmdCwgInNjcmlwdCIsICJTY3JpcHQiKTsKKy0gIHVpX291dF90YWJsZV9ib2R5ICh1aW91 dCk7CistCistICBpZiAobnJfc2NyaXB0cyA+IDApCistICAgIHsKKy0gICAgICBpbnQgaTsKKy0g ICAgICBsb2FkZWRfc2NyaXB0X3B0ciBzY3JpcHQ7CistCistICAgICAgcXNvcnQgKFZFQ19hZGRy ZXNzIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCistCSAgICAgVkVDX2xlbmd0aCAobG9h ZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAorLQkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9w dHIpLCBzb3J0X3NjcmlwdHNfYnlfbmFtZSk7CistICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJh dGUgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzLCBpLCBzY3JpcHQpOyArK2kpCistCXByaW50 X3NjcmlwdCAoc2NyaXB0KTsKKy0gICAgfQorLQorLSAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFp bik7CistCistICBpZiAobnJfc2NyaXB0cyA9PSAwKQorLSAgICB7CistICAgICAgaWYgKHBhdHRl cm4gJiYgKnBhdHRlcm4pCistCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9h ZCBzY3JpcHRzIG1hdGNoaW5nICVzLlxuIiwKKy0JCQlwYXR0ZXJuKTsKKy0gICAgICBlbHNlCist CXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7Cist ICAgIH0KKy19CistDAorIHZvaWQKKyBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkK KyB7CistICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKKy0gICAgPSByZWdpc3Rlcl9wcm9ncmFtX3Nw YWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Cist CistICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7 CistCisgICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xh c3Nfc3VwcG9ydCwKKyAJCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKKyBTZXQgdGhlIGRl YnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJc CitAQCAtNjI3LDExICsyMDUsNiBAQCBhbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIp LAorIAkJCSAgIE5VTEwsIE5VTEwsCisgCQkJICAgJnNldGxpc3QsCisgCQkJICAgJnNob3dsaXN0 KTsKKy0KKy0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAorLQkgICAgaW5mb19hdXRv X2xvYWRfc2NyaXB0cywKKy0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkg bG9hZGVkIHNjcmlwdHMuXG5cCistVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VY UF0iKSk7CisgfQorIAorICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjE0 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRo b24uaAkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAorQEAgLTI0LDggKzI0LDYg QEAKKyAKKyBzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3Q7CisgCistZXh0ZXJuIGludCBnZGJweV9n bG9iYWxfYXV0b19sb2FkOworLQorIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6 YXRpb24gKHZvaWQpOworIAorIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQg KHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEwb2Yx OC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMG9mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGM1OTY5ODIuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDE3MDQgKzAsMCBAQAotW3BhdGNoIzQgNC84XSBzZXQgYXV0 by1sb2FkICogbWFpbiBwYXJ0Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMi0wNC9tc2cwMDA4OC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTA0L21zZzAwMTEzLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcg MTU6NDk6MTEJMS4xNDExMgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6 NDEJMS4xNDExMwotIyMgLTEsNSArMSwxMDEgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCWF1dG8tbG9hZDogSW1wbGVtZW50 YXRpb24uCi0rCSogTkVXUzogTmV3IGRlc2NyaXB0aW9ucyBmb3IgImluZm8gYXV0by1sb2FkIiwK LSsJImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIiwKLSsJImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiIGFuZCAiaW5mbyBhdXRv LWxvYWQgbGlidGhyZWFkLWRiIi4KLSsJRGVwcmVjYXRlICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IiwgInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYiCi0rCWFuZCAic2hvdyBhdXRvLWxvYWQt c2NyaXB0cyIuICBOZXcgZGVzY3JpcHRpb24gZm9yICJzZXQgYXV0by1sb2FkIiwKLSsJInNob3cg YXV0by1sb2FkIiwgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAotKwkic2hvdyBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCi0rCSJzaG93 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQi LAotKwkic2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIsICJzZXQgYXV0by1sb2FkIGxpYnRo cmVhZC1kYiIgYW5kCi0rCSJzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgotKwkqIGF1dG8t bG9hZC5jOiBSZW1vdmUgaW5jbHVkZSBweXRob24vcHl0aG9uLWludGVybmFsLmguICBBZGQgaW5j bHVkZXMKLSsJZXhjZXB0aW9ucy5oLCBjbGkvY2xpLXNjcmlwdC5oLCBnZGJjbWQuaCwgY2xpL2Ns aS1kZWNvZGUuaCBhbmQKLSsJY2xpL2NsaS1zZXRzaG93LmguCi0rCShHREJfQVVUT19GSUxFX05B TUUsIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKQotKwkoYXV0b19sb2FkX2dkYl9zY3Jp cHRzLCBzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cyk6IE5ldy4KLSsJKGdkYnB5X2dsb2JhbF9h dXRvX2xvYWQpOiBSZW5hbWUgdG8gLi4uCi0rCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUu Ci0rCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0 aG5hbWUpCi0rCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQsIHNob3dfYXV0b19sb2Fk X2xvY2FsX2dkYmluaXQpCi0rCShzY3JpcHRfbGFuZ3VhZ2VfZ2RiLCBzb3VyY2VfZ2RiX3Njcmlw dF9mb3Jfb2JqZmlsZSk6IE5ldy4KLSsJKHN0cnVjdCBsb2FkZWRfc2NyaXB0KTogTmV3IGZpZWxk IGxhbmd1YWdlLgotKwkoaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LCBlcV9sb2FkZWRfc2NyaXB0 X2VudHJ5KTogQ2FsY3VsYXRlIGFsc28KLSsJTEFOR1VBR0UuCi0rCShtYXliZV9hZGRfc2NyaXB0 KTogQWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIERyb3AgcmVkdW5kYW50Ci0rCWVudHJ5LmZ1bGxf cGF0aCBpbml0aWFsaXphdGlvbi4gIEluaXRpYWxpemUgZW50cnkubGFuZ3VhZ2UgYW5kCi0rCSgq c2xvdCktPmxhbmd1YWdlLgotKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBh cmFtZXRlciBzdWZmaXggdG8gbGFuZ3VhZ2UuCi0rCVJlbW92ZSB0aGUgY2FsbCBvZiBtYXliZV9h ZGRfc2NyaXB0LgotKwlDYWxsIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlLgot KwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHNfZGF0YSk6Ci0rCU5ldy4KLSsJKGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyk6IEFk anVzdCBpdCBmb3IKLSsJc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgotKwko YXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sKTogTmV3IHZhcmlhYmxlLgotKwkoaW5m b19hdXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KLSsJKGF1dG9fbG9hZF9pbmZvX3Nj cmlwdHMpOiAuLi4gaGVyZSwgYWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIEFkanVzdCBpdAotKwlm b3Igc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgotKwkoaW5mb19hdXRvX2xv YWRfZ2RiX3NjcmlwdHMsIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCi0rCShzZXRfYXV0 b19sb2FkX2NtZCwgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCwgc2hvd19hdXRvX2xvYWRfY21k KQotKwkoYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQsIGluZm9fYXV0b19sb2FkX2NtZCkKLSsJ KGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0KTogTmV3LgotKwkoX2luaXRpYWxpemVfYXV0b19s b2FkKTogTW92ZSBhZGRfaW5mbyBvZiAiYXV0by1sb2FkLXNjcmlwdHMiIHRvCi0rCXB5dGhvbi9w eS1hdXRvLWxvYWQuYy4gIE5ldyBpbnN0YWxsbWVudCBmb3IgInNldCBhdXRvLWxvYWQgZ2RiLXNj cmlwdHMiLAotKwkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0IiBhbmQKLSsJImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLgotKwkq IGF1dG8tbG9hZC5oIChzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlKTogTmV3LgotKwkoZ2RicHlfZ2xv YmFsX2F1dG9fbG9hZCk6IFJlbmFtZSB0byAuLi4KLSsJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4g aGVyZS4KLSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dF9wYXRobmFtZSkKLSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCk6IE5ldyBkZWNs YXJhdGlvbnMuCi0rCShtYXliZV9hZGRfc2NyaXB0KTogTmV3IHBhcmFtZXRlciBsYW5ndWFnZS4K LSsJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRv IGxhbmd1YWdlLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIGF1dG9fbG9hZF9p bmZvX3NjcmlwdHNfcGF0dGVybl9ubCkKLSsJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMsIGF1dG9f bG9hZF9zZXRfY21kbGlzdF9nZXQpCi0rCShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgYXV0 b19sb2FkX2luZm9fY21kbGlzdF9nZXQpOiBOZXcKLSsJZGVjbGFyYXRpb25zLgotKwkqIGxpbnV4 LXRocmVhZC1kYi5jOiBJbmNsdWRlIGF1dG8tbG9hZC5oIGFuZCBjdHlwZS5oLgotKwkoYXV0b19s b2FkX3RocmVhZF9kYiwgc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiKTogTmV3LgotKwkoc3RydWN0 IHRocmVhZF9kYl9pbmZvKTogTmV3IGZpZWxkIGZpbGVuYW1lLgotKwkoZGVsZXRlX3RocmVhZF9k Yl9pbmZvKTogQ2FsbCB4ZnJlZSBmb3IgRklMRU5BTUUuCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWQp OiBJbml0aWFsaXplIEZJTEVOQU1FLgotKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciwg dHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogUmV0dXJuCi0rCWlmICFBVVRPX0xPQURfVEhS RUFEX0RCLgotKwkoaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUsIGluZm9fYXV0 b19sb2FkX2xpYnRocmVhZF9kYik6IE5ldy4KLSsJKF9pbml0aWFsaXplX3RocmVhZF9kYik6IElu c3RhbGwgYXV0b19sb2FkX3RocmVhZF9kYgotKwlhcyAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIiIGFuZCBpbnN0YWxsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYgotKwlhcyAiaW5mbyBh dXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KLSsJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBSZW5h bWUgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCB0bwotKwlnbG9iYWxfYXV0b19sb2FkLiAgSW5pdGlh bGl6ZSBBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9QQVRITkFNRSBhbmQKLSsJQVVUT19MT0FEX0xP Q0FMX0dEQklOSVRfTE9BREVELgotKwkocHJpbnRfZ2RiX2hlbHApOiBFeHRlbmQgdGhlIGhlbHAg Zm9yICdsb2NhbCBpbml0IGZpbGUnLgotKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYzogUmVtb3Zl IGEgY29tbWVudCBhYm91dCBnZGIgc2NyaXB0cyBleHRlbnNpb24uCi0rCShHREJQWV9BVVRPX1NF Q1RJT05fTkFNRSk6IEV4dGVuZCB0aGUgY29tbWVudCBpdCBpcyBQeXRob24gc3BlY2lmaWMuCi0r CShhdXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KLSsJKGF1dG9fbG9hZF9weXRob25f c2NyaXB0cyk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlIGNvbW1lbnQuCi0rCShnZGJweV9sb2FkX2F1 dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IGRlY2xhcmF0aW9uLgotKwkoc2hvd19hdXRvX2xv YWRfcHl0aG9uX3NjcmlwdHMsIHNjcmlwdF9sYW5ndWFnZV9weXRob24pCi0rCShnZGJweV9sb2Fk X2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3LgotKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0 cyk6IFJlZmFjdG9yIHRoZSBjb2RlLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUp OiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6 IC4uLiBoZXJlLCB1cGRhdGUgdGhlCi0rCWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCBjYWxsZXIs IGRyb3AgR0RCUFlfR0xPQkFMX0FVVE9fTE9BRCBjaGVja2luZy4KLSsJKGluZm9fYXV0b19sb2Fk X3B5dGhvbl9zY3JpcHRzKTogTmV3LgotKwkoZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBO ZXcgdmFyaWFibGVzIGNtZCBhbmQgY21kX25hbWUuCi0rCVJlbmFtZSAic2V0IGF1dG8tbG9hZC1z Y3JpcHRzIiB0byAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuCi0rCVJlZ2lzdGVyICJz ZXQgYXV0by1sb2FkLXNjcmlwdHMiIGFzIGl0cyBkZXByZWNhdGVkIGFsaWFzLiAgUmVnaXN0ZXIK LSsJImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gIFJlZ2lzdGVyICJpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIiBhcwotKwlpdHMgZGVwcmVjYXRlZCBhbGlhcy4KLSsJKGxvYWRfYXV0b19z Y3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgotKwkoZ2RicHlfbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4KLSsJKiBweXRob24vcHl0aG9uLmggKGxvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgotKwkoZ2RicHlfbG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4KLSsKLSsyMDEyLTA0LTE3ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCWF1dG8tbG9hZDog TW92ZSBmaWxlcy4KLSAJKiBNYWtlZmlsZS5pbiAoU0ZJTEVTKTogQWRkIGF1dG8tbG9hZC5jLgot IAkoSEZJTEVTX05PX1NSQ0RJUik6IEFkZCBhdXRvLWxvYWQuaC4KLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAzNTczNzY0NCAr MDIwMAotQEAgLTI4LDYgKzI4LDQ1IEBACi0gICBub3cgc2V0IGEgYnJlYWtwb2ludCBpbiBidWls ZC9nY2MvZXhwci5jLCBidXQgbm90Ci0gICBidWlsZC9saWJjcHAvZXhwci5jLgotIAotKyogTmV3 IGNvbW1hbmRzCi0rCi0rICAqKiAiaW5mbyBhdXRvLWxvYWQiIHNob3dzIHN0YXR1cyBvZiBhbGwg a2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMsCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNj cmlwdHMiIHNob3dzIHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgR0RCIGNhbm5lZAotKyAgICAgc2Vx dWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVzLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMi Ci0rICAgICBzaG93cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHQgZmlsZXMs Ci0rICAgICAiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgc2hvd3Mgc3RhdHVzIG9mIGxv YWRpbmcgaW5pdCBmaWxlCi0rICAgICAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3Rvcnkg YW5kICJpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIHNob3dzCi0rICAgICBzdGF0dXMgb2Yg aW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeSBsb2FkaW5n LgotKwotKyAgKiogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZC1zY3Jp cHRzIG9ufG9mZiIKLSsgICAgIGFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZHMg aGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIHVzZSB0aGVpcgotKyAgICAgImluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmIgotKyAg ICAgYW5kICJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgY291bnRlcnBhcnRzIGluc3Rl YWQuCi0rCi0rKiBOZXcgb3B0aW9ucwotKwotK3NldCBhdXRvLWxvYWQgb2ZmCi0rICBEaXNhYmxl IGF1dG8tbG9hZGluZyBnbG9iYWxseS4KLSsKLStzaG93IGF1dG8tbG9hZAotKyAgU2hvdyBhdXRv LWxvYWRpbmcgc2V0dGluZyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMuCi0rCi0r c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBnZGItc2Ny aXB0cwotKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2Yg Y29tbWFuZHMgZmlsZXMuCi0rCi0rc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYK LStzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cwotKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcg b2YgUHl0aG9uIHNjcmlwdCBmaWxlcy4KLSsKLStzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQg b258b2ZmCi0rc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotKyAgQ29udHJvbCBsb2FkaW5n IG9mIGluaXQgZmlsZSAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkuCi0rCi0rc2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCi0rc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFk LWRiCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQg ZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgotKwotICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25z Ci0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAt eCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9h ZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxv YWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1MDQzNzUyMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICsw MjAwCi1AQCAtMjcsMTkgKzI3LDkyIEBACi0gI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVk ZSAib2JzZXJ2ZXIuaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLS0jaW5jbHVkZSAicHl0aG9u L3B5dGhvbi1pbnRlcm5hbC5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUg ImNsaS9jbGktc2NyaXB0LmgiCi0rI2luY2x1ZGUgImdkYmNtZC5oIgotKyNpbmNsdWRlICJjbGkv Y2xpLWRlY29kZS5oIgotKyNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIKLSsKLSsvKiBUaGUg c3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24g Y29tbWFuZCBmaWxlcy4KLSsgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNv LCBsb29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCi0rI2RlZmluZSBHREJfQVVUT19GSUxFX05B TUUgIi1nZGIuZ2RiIgotKwotK3N0YXRpYyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJCSAgIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKTsKLSsKLSsvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUv ZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RCX0FVVE9fRklMRV9OQU1FCi0rICAgc2NyaXB0czoK LSsgICBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgotKyAgIFRoaXMgaXMgdHJ1ZSBp ZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUK LSsgICBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGludCBhdXRvX2xv YWRfZ2RiX3NjcmlwdHMgPSAxOwotKwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19s b2FkX2dkYl9zY3JpcHRzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rc2hvd19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBp bnQgZnJvbV90dHksCi0rCQkJICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBj aGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRp bmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyAiCi0rCQkJICAgICJzY3JpcHRzIGlz ICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSAKLSAvKiBJbnRlcm5hbC11c2UgZmxhZyB0 byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcuCi0gICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNo b3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLSAg ICBmYWxzZSBvdGhlcndpc2UuCi0gCi0tICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJw eV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKLSsgICBCb3RoIGF1dG9f bG9hZF9zY3JpcHRzICYmIGdsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQot ICAgIGF1dG8tbG9hZGluZy4KLSAKLSAgICBUaGlzIGZsYWcgZXhpc3RzIHRvIGZhY2lsaXRhdGUg ZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQtdXAKLSAgICB1bnRpbCBhZnRlciAu Ly5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50IHRoZSBzZWFyY2ggZGlyZWN0 b3JpZXMKLSAgICB1c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMuICAqLwotLWludCBnZGJweV9nbG9i YWxfYXV0b19sb2FkID0gMTsKLStpbnQgZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rCi0rLyogQXV0 by1sb2FkIC5nZGJpbml0IGZpbGUgZnJvbSB0aGUgY3VycmVudCBkaXJlY3Rvcnk/ICAqLwotK2lu dCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCA9IDE7Ci0rCi0rLyogQWJzb2x1dGUgcGF0aG5hbWUg dG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0LCBpZiBpdCBleGlzdHMuICAqLwotK2No YXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gTlVMTDsKLSsKLSsvKiBCb29s ZWFuIHZhbHVlIGlmIEFVVE9fTE9BRF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGhhcyBiZWVuIGxv YWRlZC4gICovCi0raW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDA7Ci0rCi0r LyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCBjb25maWd1 cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAg ICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsg IGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3Jp cHQgZnJvbSBjdXJyZW50ICIKLSsJCQkgICAgImRpcmVjdG9yeSBpcyAlcy5cbiIpLAotKwkJICAg IHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdE QiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3Ry dWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCi0rICA9IHsgR0RCX0FVVE9f RklMRV9OQU1FLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSB9OwotKwotK3N0YXRpYyB2 b2lkCi0rc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBGSUxFICpmaWxlLAotKwkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0r ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsgIHZvbGF0aWxl IHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0rCi0rICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhl IGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSsgICAgIGNh biBwcmludCBpdC4gICovCi0rICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2Rh dGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICBtYXliZV9hZGRfc2Ny aXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dk Yik7Ci0rCi0rICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAg IHNjcmlwdF9mcm9tX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKLSsgICAgfQotKyAgZXhjZXB0aW9u X3ByaW50IChnZGJfc3RkZXJyLCBlKTsKLSt9Ci0gCi0gLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVk IGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKLSAgICB0 aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBt dWx0aXBsZSB0aW1lcywKLUBAIC02Miw5ICsxMzUsMTIgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQK LSB7Ci0gICAvKiBOYW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KLSAgIGNvbnN0 IGNoYXIgKm5hbWU7Ci0rCi0gICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3 YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhlcndpc2UKLSAgICAgIGluYWNjZXNzaWJsZSkuICAqLwot ICAgY29uc3QgY2hhciAqZnVsbF9wYXRoOwotKwotKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSAqbGFuZ3VhZ2U7Ci0gfTsKLSAKLSAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4g ICovCi1AQCAtMTA5LDcgKzE4NSw3IEBAIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qg dm9pZCAqZGEKLSB7Ci0gICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7Ci0g Ci0tICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7Ci0rICByZXR1cm4gaHRhYl9o YXNoX3N0cmluZyAoZS0+bmFtZSkgXiBodGFiX2hhc2hfcG9pbnRlciAoZS0+bGFuZ3VhZ2UpOwot IH0KLSAKLSAvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4g ICovCi1AQCAtMTIwLDcgKzE5Niw3IEBAIGVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZv aWQgKmEsIGMKLSAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7Ci0gICBjb25z dCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOwotIAotLSAgcmV0dXJuIHN0cmNtcCAoZWEt Pm5hbWUsIGViLT5uYW1lKSA9PSAwOwotKyAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5u YW1lKSA9PSAwICYmIGVhLT5sYW5ndWFnZSA9PSBlYi0+bGFuZ3VhZ2U7Ci0gfQotIAotIC8qIElu aXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgotQEAgLTE1NiwyMCAr MjMyLDIxIEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKLSAgIHJl dHVybiBpbmZvOwotIH0KLSAKLS0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBvZiBQ U1BBQ0VfSU5GTy4KLS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBm b3VuZC4KLS0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBp biB0aGUgaGFzaCB0YWJsZS4gICovCi0rLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRv IGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCi0rICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhl IHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCi0rICAgdHJ1ZSBpZiB0aGUgc2Ny aXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAKLSBpbnQKLS1tYXliZV9h ZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29u c3QgY2hhciAqbmFtZSwKLS0JCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQotK21heWJlX2FkZF9z Y3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotKwkJICBj b25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkgIGNvbnN0IHN0cnVj dCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQotIHsKLSAgIHN0cnVjdCBodGFiICpodGFiID0g cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOwotICAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipz bG90LCBlbnRyeTsKLSAgIGludCBpbl9oYXNoX3RhYmxlOwotIAotICAgZW50cnkubmFtZSA9IG5h bWU7Ci0tICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0rICBlbnRyeS5sYW5ndWFnZSA9 IGxhbmd1YWdlOwotICAgc2xvdCA9IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5k X3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5TRVJUKTsKLSAgIGluX2hhc2hfdGFibGUgPSAqc2xvdCAh PSBOVUxMOwotIAotQEAgLTE5NCw2ICsyNzEsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3Qg YXV0b19sb2FkX3BzcGFjCi0gCX0KLSAgICAgICBlbHNlCi0gCSgqc2xvdCktPmZ1bGxfcGF0aCA9 IE5VTEw7Ci0rICAgICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAgICAgfQotIAot ICAgcmV0dXJuIGluX2hhc2hfdGFibGU7Ci1AQCAtMjE2LDEwICsyOTQsMTIgQEAgY2xlYXJfc2Vj dGlvbl9zY3JpcHRzICh2b2lkKQotICAgICB9Ci0gfQotIAotLS8qIExvb2sgZm9yIHRoZSBhdXRv LWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLSsv KiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBpbiBMQU5HVUFHRSBhc3NvY2lhdGVkIHdp dGggT0JKRklMRSBhbmQgbG9hZAotKyAgIGl0LiAgKi8KLSAKLSB2b2lkCi0tYXV0b19sb2FkX29i amZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4 KQotK2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0r CQkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKLSB7Ci0gICBjaGFy ICpyZWFsbmFtZTsKLSAgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwotQEAgLTIyOSw5ICsz MDksOSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gICBy ZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0gICBsZW4gPSBzdHJsZW4g KHJlYWxuYW1lKTsKLS0gIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgp ICsgMSk7Ci0rICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAobGFuZ3VhZ2UtPnN1 ZmZpeCkgKyAxKTsKLSAgIG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOwotLSAgc3Ry Y3B5IChmaWxlbmFtZSArIGxlbiwgc3VmZml4KTsKLSsgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4s IGxhbmd1YWdlLT5zdWZmaXgpOwotIAotICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBmaWxlbmFtZSk7Ci0gICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci1AQCAtMjY5 LDI3ICszNDksMzMgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQot IAotICAgaWYgKGlucHV0KQotICAgICB7Ci0tICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm87Ci0tCi0gICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQp OwotIAotLSAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28g ImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCi0tCSBjYW4gcHJpbnQgaXQuICAqLwotLSAgICAgIHBz cGFjZV9pbmZvID0KLS0JZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3Vy cmVudF9wcm9ncmFtX3NwYWNlKTsKLS0gICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5m bywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOwotLQotICAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0 aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKLSAJIHNjcmlwdCB3 YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KLSAJIEl0J3MgaGln aGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0gCSBhbmQgdGhlc2Ug c2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQotIAkg bG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0rICAgICAgbGFuZ3VhZ2UtPnNvdXJjZV9z Y3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOwotICAgICB9Ci0g Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotIH0KLSAKLSsvKiBMb2FkIGFueSBhdXRvLWxv YWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KLSsKLSt2b2lkCi0rbG9hZF9hdXRvX3Njcmlw dHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGlmICghZ2xv YmFsX2F1dG9fbG9hZCkKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKGF1dG9fbG9hZF9nZGJfc2Ny aXB0cykKLSsgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xh bmd1YWdlX2dkYik7Ci0rCi0rICBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAo b2JqZmlsZSk7Ci0rfQotKwotIC8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxs YmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KLSAKLSAgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxv YWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCi1AQCAtMzE0LDYgKzQwMCwxMyBAQCBhdXRvX2xv YWRfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvCi0gdHlwZWRlZiBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7Ci0gREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0 cik7Ci0gCi0rc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhCi0rewotKyAgVkVD IChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3A7Ci0rCi0rICBjb25zdCBzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKLSt9OwotKwotIC8qIFRyYXZlcnNhbCBmdW5jdGlvbiBm b3IgaHRhYl90cmF2ZXJzZS4KLSAgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRo ZSByZWdleHAuICAqLwotIAotQEAgLTMyMSwxMCArNDE0LDEwIEBAIHN0YXRpYyBpbnQKLSBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQotIHsKLSAgIHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKLS0gIFZFQyAobG9hZGVkX3Njcmlw dF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOwotKyAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0c19kYXRhICpkYXRhID0gaW5mbzsKLSAKLS0gIGlmIChyZV9leGVjIChzY3JpcHQtPm5h bWUpKQotLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRy LCBzY3JpcHQpOwotKyAgaWYgKHNjcmlwdC0+bGFuZ3VhZ2UgPT0gZGF0YS0+bGFuZ3VhZ2UgJiYg cmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKLSsgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3Njcmlw dF9wdHIsICpkYXRhLT5zY3JpcHRzX3AsIHNjcmlwdCk7Ci0gCi0gICByZXR1cm4gMTsKLSB9Ci1A QCAtMzY2LDEwICs0NTksMTggQEAgc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFw LCBjbwotICAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7Ci0gfQotIAot LS8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KLSsvKiBTcGVjaWFsIGlu dGVybmFsIEdEQiB2YWx1ZSBvZiBhdXRvX2xvYWRfaW5mb19zY3JpcHRzJ3MgUEFUVEVSTiBpZGVu dGlmeQotKyAgIHRoZSAiaW5mbyBhdXRvLWxvYWQgWFhYIiBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1 dGVkIHRocm91Z2ggdGhlIGdlbmVyYWwKLSsgICAiaW5mbyBhdXRvLWxvYWQiIGludm9jYXRpb24u ICBFeHRyYSBuZXdsaW5lIHdpbGwgYmUgcHJpbnRlZCBpZiBuZWVkZWQuICAqLwotK2NoYXIgYXV0 b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW10gPSAiIjsKLSsKLSsvKiBJbXBsZW1lbnRh dGlvbiBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotKyAgIChhbmQgImluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIikuICBMaXN0IHNjcmlwdHMgaW4gTEFOR1VBR0UgbWF0Y2hp bmcKLSsgICBQQVRURVJOLiAgRlJPTV9UVFkgaXMgdGhlIHVzdWFsIEdEQiBib29sZWFuIGZvciB1 c2VyIGludGVyYWN0aXZpdHkuICAqLwotIAotLXN0YXRpYyB2b2lkCi0taW5mb19hdXRvX2xvYWRf c2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3ZvaWQKLSthdXRvX2xvYWRf aW5mb19zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCi0rCQkJY29uc3Qgc3Ry dWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCi0gewotICAgc3RydWN0IHVpX291dCAqdWlv dXQgPSBjdXJyZW50X3Vpb3V0OwotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNw YWNlX2luZm87Ci1AQCAtNDAyLDE0ICs1MDMsMjIgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAo Y2hhciAqcGF0dGVybiwgaQotIAotICAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNl X2luZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QgY29s bGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEgZGF0YSA9IHsgJnNjcmlwdHMsIGxhbmd1YWdlIH07 Ci0rCi0gICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKLSAgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0 byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotICAgICAg IGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLS0J CQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLSsJCQkgICAgICBj b2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZkYXRhKTsKLSAgICAgICBpbW1lZGlhdGVfcXVpdC0t OwotICAgICB9Ci0gCi0gICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpOwotKwotKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJl Y2VkaW5nICJnZGItc2NyaXB0czogICIgd291bGQgbm90IG1hdGNoCi0rICAgICBpdHMgY29sdW1u cy4gICovCi0rICBpZiAobnJfc2NyaXB0cyA+IDAgJiYgcGF0dGVybiA9PSBhdXRvX2xvYWRfaW5m b19zY3JpcHRzX3BhdHRlcm5fbmwpCi0rICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0r Ci0gICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3Nj cmlwdHMsCi0gCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwotIAotQEAgLTQ0 MSw2ICs1NTAsMjkgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQot ICAgICB9Ci0gfQotIAotKy8qIFdyYXBwZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0 cyIuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKGNo YXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKLSt7Ci0rICBhdXRvX2xvYWRfaW5mb19zY3JpcHRz IChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOwotK30KLSsKLSsvKiBJ bXBsZW1lbnQgJ2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQnLiAgKi8KLSsKLStzdGF0aWMg dm9pZAotK2luZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKLSt7Ci0rICBpZiAoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPT0gTlVM TCkKLSsgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIHdhcyBub3Qg Zm91bmQuXG4iKSk7Ci0rICBlbHNlIGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQp Ci0rICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFz IGJlZW4gbG9hZGVkLlxuIiksCi0rCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhu YW1lKTsKLSsgIGVsc2UKLSsgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBm aWxlIFwiJXNcIiBoYXMgbm90IGJlZW4gbG9hZGVkLlxuIiksCi0rCQkgICAgIGF1dG9fbG9hZF9s b2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKLSt9Ci0rCi0gLyogUmV0dXJuIG5vbi16ZXJvIGlmIFND UklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVEIG9mIFBTUEFDRV9JTkZPIHdhcyB1bnNldAot ICAgIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICBBbHdheXMgc2V0IFNDUklQVF9OT1Rf Rk9VTkRfV0FSTklOR19QUklOVEVECi0gICAgb2YgUFNQQUNFX0lORk8uICAqLwotQEAgLTQ1NSw2 ICs1ODcsMTMyIEBAIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGEKLSAg IHJldHVybiByZXR2YWw7Ci0gfQotIAotKy8qIFRoZSBvbmx5IHZhbGlkICJzZXQgYXV0by1sb2Fk IiBhcmd1bWVudCBpcyBvZmZ8MHxub3xkaXNhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nl dF9hdXRvX2xvYWRfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKmxpc3Q7Ci0rICBzaXplX3QgbGVuZ3RoOwotKwotKyAgLyogU2Vl IHBhcnNlX2JpbmFyeV9vcGVyYXRpb24gaW4gdXNlIGJ5IHRoZSBzdWItY29tbWFuZHMuICAqLwot KwotKyAgbGVuZ3RoID0gYXJncyA/IHN0cmxlbiAoYXJncykgOiAwOwotKwotKyAgd2hpbGUgKGxl bmd0aCA+IDAgJiYgKGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJyAnIHx8IGFyZ3NbbGVuZ3RoIC0gMV0g PT0gJ1x0JykpCi0rICAgIGxlbmd0aC0tOwotKwotKyAgaWYgKGxlbmd0aCA9PSAwIHx8IChzdHJu Y21wIChhcmdzLCAib2ZmIiwgbGVuZ3RoKSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdz LCAiMCIsIGxlbmd0aCkgIT0gMAotKwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgIm5vIiwgbGVu Z3RoKSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiZGlzYWJsZSIsIGxlbmd0aCkg IT0gMCkpCi0rICAgIGVycm9yIChfKCJWYWxpZCBpcyBvbmx5IGdsb2JhbCAnc2V0IGF1dG8tbG9h ZCBubyc7ICIKLSsJICAgICAib3RoZXJ3aXNlIGNoZWNrIHRoZSBhdXRvLWxvYWQgc3ViLWNvbW1h bmRzLiIpKTsKLSsKLSsgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgp OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQotKyAgICBpZiAobGlzdC0+dmFyX3R5 cGUgPT0gdmFyX2Jvb2xlYW4pCi0rICAgICAgewotKwlnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09 IHNldF9jbWQpOwotKwlkb19zZXRzaG93X2NvbW1hbmQgKGFyZ3MsIGZyb21fdHR5LCBsaXN0KTsK LSsgICAgICB9Ci0rfQotKwotKy8qIEluaXRpYWxpemUgInNldCBhdXRvLWxvYWQgIiBjb21tYW5k cyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCi0rCi0rc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KioKLSthdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQot KyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzZXRf YXV0b19sb2FkX2NtZCwgXygiXAotK0F1dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwK LStDb25maWd1cmUgdmFyaW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNc blwKLSthdXRvbWF0aWMgbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKLSsJCSAgICAmcmV0 dmFsLCAic2V0IGF1dG8tbG9hZCAiLAotKwkJICAgIDEvKmFsbG93LXVua25vd24qLywgJnNldGxp c3QpOwotKwotKyAgcmV0dXJuICZyZXR2YWw7Ci0rfQotKwotKy8qIENvbW1hbmQgInNob3cgYXV0 by1sb2FkIiBkaXNwbGF5cyBzdW1tYXJ5IG9mIGFsbCB0aGUgY3VycmVudAotKyAgICJzaG93IGF1 dG8tbG9hZCAiIHNldHRpbmdzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2Fk X2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsgIGNtZF9zaG93X2xpc3QgKCph dXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSwgZnJvbV90dHksICIiKTsKLSt9Ci0rCi0rLyog SW5pdGlhbGl6ZSAic2hvdyBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBp dC4gICovCi0rCi0rc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKLSthdXRvX2xvYWRfc2hvd19j bWRsaXN0X2dldCAodm9pZCkKLSt7Ci0rICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KnJldHZhbDsKLSsKLSsgIGlmIChyZXR2YWwgPT0gTlVMTCkKLSsgICAgYWRkX3ByZWZpeF9jbWQg KCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwgc2hvd19hdXRvX2xvYWRfY21kLCBfKCJc Ci0rU2hvdyBhdXRvLWxvYWRpbmcgc3BlY2lmaWMgc2V0dGluZ3MuXG5cCi0rU2hvdyBjb25maWd1 cmF0aW9uIG9mIHZhcmlvdXMgYXV0by1sb2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5c Ci0rYXV0b21hdGljIGxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuIiksCi0rCQkgICAgJnJldHZh bCwgInNob3cgYXV0by1sb2FkICIsCi0rCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmc2hvd2xp c3QpOwotKwotKyAgcmV0dXJuICZyZXR2YWw7Ci0rfQotKwotKy8qIENvbW1hbmQgImluZm8gYXV0 by1sb2FkIiBkaXNwbGF5cyB3aGV0aGVyIHRoZSB2YXJpb3VzIGF1dG8tbG9hZCBmaWxlcyBoYXZl Ci0rICAgYmVlbiBsb2FkZWQuICBUaGlzIGlzIHJlaW1wbGVtZW50YXRpb24gb2YgY21kX3Nob3df bGlzdCB3aGljaCBpbnNlcnRzCi0rICAgbmV3bGluZXMgYXQgcHJvcGVyIHBsYWNlcy4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKLSt7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqbGlzdDsKLSsgIHN0cnVjdCBj bGVhbnVwICppbmZvbGlzdF9jaGFpbjsKLSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVu dF91aW91dDsKLSsKLSsgIGluZm9saXN0X2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBs ZV9iZWdpbl9lbmQgKHVpb3V0LCAiaW5mb2xpc3QiKTsKLSsKLSsgIGZvciAobGlzdCA9ICphdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4 dCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpvcHRpb25fY2hhaW4KLSsJPSBtYWtl X2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJvcHRpb24iKTsKLSsKLSsg ICAgICBnZGJfYXNzZXJ0ICghbGlzdC0+cHJlZml4bGlzdCk7Ci0rICAgICAgZ2RiX2Fzc2VydCAo bGlzdC0+dHlwZSA9PSBub3Rfc2V0X2NtZCk7Ci0rCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmlu ZyAodWlvdXQsICJuYW1lIiwgbGlzdC0+bmFtZSk7Ci0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiOiAgIik7Ci0rICAgICAgY21kX2Z1bmMgKGxpc3QsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNf cGF0dGVybl9ubCwgZnJvbV90dHkpOwotKwotKyAgICAgIC8qIENsb3NlIHRoZSB0dXBsZS4gICov Ci0rICAgICAgZG9fY2xlYW51cHMgKG9wdGlvbl9jaGFpbik7Ci0rICAgIH0KLSsKLSsgIC8qIENs b3NlIHRoZSB0dXBsZS4gICovCi0rICBkb19jbGVhbnVwcyAoaW5mb2xpc3RfY2hhaW4pOwotK30K LSsKLSsvKiBJbml0aWFsaXplICJpbmZvIGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQg cmV0dXJuIGl0LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9h ZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqcmV0dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJl Zml4X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2NtZCwgXygi XAotK1ByaW50IGN1cnJlbnQgc3RhdHVzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLlxuXAotK1ByaW50 IHdoZXRoZXIgdmFyaW91cyBmaWxlcyBsaWtlIFB5dGhvbiBzY3JpcHRzIG9yIC5nZGJpbml0IGZp bGVzIGhhdmUgYmVlblxuXAotK2ZvdW5kIGFuZC9vciBsb2FkZWQuIiksCi0rCQkgICAgJnJldHZh bCwgImluZm8gYXV0by1sb2FkICIsCi0rCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmaW5mb2xp c3QpOwotKwotKyAgcmV0dXJuICZyZXR2YWw7Ci0rfQotKwotIHZvaWQgX2luaXRpYWxpemVfYXV0 b19sb2FkICh2b2lkKTsKLSAKLSB2b2lkCi1AQCAtNDY1LDggKzcyMywzOCBAQCBfaW5pdGlhbGl6 ZV9hdXRvX2xvYWQgKHZvaWQpCi0gCi0gICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1 dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0gCi0tICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRz IiwKLS0JICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCi0tCSAgICBfKCJQcmludCB0aGUgbGlz dCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAotLVVzYWdlOiBpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJn ZGItc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9hZF9nZGJfc2NyaXB0 cywgXygiXAotK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVu Y2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMuIiksIF8oIlwKLStTaG93IHdoZXRoZXIgYXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkLiIp LAotKwkJCSAgIF8oIlwKLStJZiBlbmFibGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz IGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKLSthbiBleGVjdXRhYmxlIG9y IHNoYXJlZCBsaWJyYXJ5LlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRp b25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3dfYXV0b19s b2FkX2dkYl9zY3JpcHRzLAotKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCi0r CQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOwotKwotKyAgYWRkX2NtZCAoImdk Yi1zY3JpcHRzIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsCi0rCSAg IF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNlcXVlbmNlcyBvZiBj b21tYW5kcy5cblwKLStVc2FnZTogaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW1JFR0VYUF0i KSwKLSsJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotKwotKyAgYWRkX3NldHNo b3dfYm9vbGVhbl9jbWQgKCJsb2NhbC1nZGJpbml0IiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAm YXV0b19sb2FkX2xvY2FsX2dkYmluaXQsIF8oIlwKLStFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxv YWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5LiIpLCBfKCJcCi0r U2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJl Y3RvcnkgaXMgZW5hYmxlZC4iKSwKLSsJCQkgICBfKCJcCi0rSWYgZW5hYmxlZCwgY2FubmVkIHNl cXVlbmNlcyBvZiBjb21tYW5kcyBhcmUgbG9hZGVkIHdoZW4gZGVidWdnZXIgc3RhcnRzXG5cCi0r ZnJvbSAuZ2RiaW5pdCBmaWxlIGluIGN1cnJlbnQgZGlyZWN0b3J5LiAgU3VjaCBmaWxlcyBhcmUg ZGVwcmVjYXRlZCxcblwKLSt1c2UgYSBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIGluZmVyaW9yIGV4 ZWN1dGFibGUgZmlsZSBpbnN0ZWFkLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1w bGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3df YXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dl dCAoKSwKLSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRf Y21kICgibG9jYWwtZ2RiaW5pdCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xvY2FsX2dk YmluaXQsCi0rCSAgIF8oIlByaW50IHdoZXRoZXIgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQg ZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdk YmluaXQiKSwKLSsJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotIH0KLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0NDoy Ni45NTE0Mzc1MTcgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQu aAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAotQEAgLTIyLDE1ICsyMiwzNiBA QAotIAotIHN0cnVjdCBwcm9ncmFtX3NwYWNlOwotIAotLWV4dGVybiBpbnQgZ2RicHlfZ2xvYmFs X2F1dG9fbG9hZDsKLStzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlCi0rewotKyAgY29uc3QgY2hhciAq c3VmZml4OwotKwotKyAgdm9pZCAoKnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUpIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJICAgICBjb25zdCBjaGFyICpmaWxl bmFtZSk7Ci0rfTsKLSsKLStleHRlcm4gaW50IGdsb2JhbF9hdXRvX2xvYWQ7Ci0rCi0rZXh0ZXJu IGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdDsKLStleHRlcm4gY2hhciAqYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfcGF0aG5hbWU7Ci0rZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dF9sb2FkZWQ7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotICAg Z2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3Bh Y2UgKnBzcGFjZSk7Ci0gZXh0ZXJuIGludCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKLS0JCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUs IGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCk7Ci0rCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25z dCBjaGFyICpmdWxsX3BhdGgsCi0rCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdl ICpsYW5ndWFnZSk7Ci0gZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKLSsJ CQkJICAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotK2V4dGVy biB2b2lkIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSk7Ci0gZXh0ZXJuIGludAotICAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7Ci0rZXh0ZXJuIGNoYXIg YXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW107Ci0rZXh0ZXJuIHZvaWQgYXV0b19s b2FkX2luZm9fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5LAotKwkJCQkgICAg Y29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotKwotK2V4dGVybiBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpOwot K2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3Rf Z2V0ICh2b2lkKTsKLStleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRf aW5mb19jbWRsaXN0X2dldCAodm9pZCk7Ci0gCi0gI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIw MTItMDEtMDQgMDk6MTc6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAy MDAKLUBAIC00MCw4ICs0MCwxMCBAQAotICNpbmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRl ICJsaW51eC1uYXQuaCIKLSAjaW5jbHVkZSAibGludXgtcHJvY2ZzLmgiCi0rI2luY2x1ZGUgImF1 dG8tbG9hZC5oIgotIAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4K LSAKLSAjaWZkZWYgSEFWRV9HTlVfTElCQ19WRVJTSU9OX0gKLSAjaW5jbHVkZSA8Z251L2xpYmMt dmVyc2lvbi5oPgotQEAgLTc1LDYgKzc3LDIxIEBACi0gCi0gc3RhdGljIGNoYXIgKmxpYnRocmVh ZF9kYl9zZWFyY2hfcGF0aDsKLSAKLSsvKiBTZXQgdG8gbm9uLXplcm8gaWYgdGhyZWFkX2RiIGF1 dG8tbG9hZGluZyBpcyBlbmFibGVkCi0rICAgYnkgdGhlICJzZXQgYXV0by1sb2FkIGxpYnRocmVh ZC1kYiIgY29tbWFuZC4gICovCi0rc3RhdGljIGludCBhdXRvX2xvYWRfdGhyZWFkX2RiID0gMTsK LSsKLSsvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF90aHJlYWRfZGIgY29uZmln dXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2F1dG9fbG9hZF90 aHJlYWRfZGIgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50 Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxp YnRocmVhZF9kYiAiCi0rCQkJICAgICJpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0r Ci0gc3RhdGljIHZvaWQKLSBzZXRfbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoIChjaGFyICppZ25v cmVkLCBpbnQgZnJvbV90dHksCi0gCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMp Ci1AQCAtMTE5LDYgKzEzNiwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8KLSAgIC8qIEhhbmRs ZSBmcm9tIGRsb3BlbiBmb3IgbGlidGhyZWFkX2RiLnNvLiAgKi8KLSAgIHZvaWQgKmhhbmRsZTsK LSAKLSsgIC8qIEFic29sdXRlIHBhdGhuYW1lIGZyb20gZ2RiX3JlYWxwYXRoIHRvIGRpc2sgZmls ZSB1c2VkIGZvciBkbG9wZW4taW5nCi0rICAgICBIQU5ETEUuICBJdCBtYXkgYmUgTlVMTCBmb3Ig c3lzdGVtIGxpYnJhcnkuICAqLwotKyAgY2hhciAqZmlsZW5hbWU7Ci0rCi0gICAvKiBTdHJ1Y3R1 cmUgdGhhdCBpZGVudGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNzIGZvciB0aGUKLSAgICAgIDxwcm9j X3NlcnZpY2UuaD4gaW50ZXJmYWNlLiAgKi8KLSAgIHN0cnVjdCBwc19wcm9jaGFuZGxlIHByb2Nf aGFuZGxlOwotQEAgLTI0OCw2ICsyNjksOCBAQCBkZWxldGVfdGhyZWFkX2RiX2luZm8gKGludCBw aWQpCi0gICBpZiAoaW5mby0+aGFuZGxlICE9IE5VTEwpCi0gICAgIGRsY2xvc2UgKGluZm8tPmhh bmRsZSk7Ci0gCi0rICB4ZnJlZSAoaW5mby0+ZmlsZW5hbWUpOwotKwotICAgaWYgKGluZm9fcHJl dikKLSAgICAgaW5mb19wcmV2LT5uZXh0ID0gaW5mby0+bmV4dDsKLSAgIGVsc2UKLUBAIC04MDcs NiArODMwLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZCAoY29uc3QgY2hhciAqbGlicmFyeSkKLSAK LSAgIGluZm8gPSBhZGRfdGhyZWFkX2RiX2luZm8gKGhhbmRsZSk7Ci0gCi0rICAvKiBEbyBub3Qg c2F2ZSBzeXN0ZW0gbGlicmFyeSBuYW1lLCB0aGF0IG9uZSBpcyBhbHdheXMgdHJ1c3RlZC4gICov Ci0rICBpZiAoc3RyY2hyIChsaWJyYXJ5LCAnLycpICE9IE5VTEwpCi0rICAgIGluZm8tPmZpbGVu YW1lID0gZ2RiX3JlYWxwYXRoIChsaWJyYXJ5KTsKLSsKLSAgIGlmICh0cnlfdGhyZWFkX2RiX2xv YWRfMSAoaW5mbykpCi0gICAgIHJldHVybiAxOwotIAotQEAgLTg1Niw2ICs4ODMsOSBAQCB0cnlf dGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyICh2b2lkKQotIHsKLSAgIHN0cnVjdCBvYmpmaWxlICpv Ymo7Ci0gCi0rICBpZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCi0rICAgIHJldHVybiAwOwotKwot ICAgQUxMX09CSkZJTEVTIChvYmopCi0gICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqLT5u YW1lKSkKLSAgICAgICB7Ci1AQCAtODk1LDYgKzkyNSw5IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9m cm9tX2RpciAoY29uc3QgY2hhcgotICAgY2hhciAqcGF0aDsKLSAgIGludCByZXN1bHQ7Ci0gCi0r ICBpZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCi0rICAgIHJldHVybiAwOwotKwotICAgcGF0aCA9 IHhtYWxsb2MgKGRpcl9sZW4gKyAxICsgc3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSk7Ci0g ICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGF0aCk7Ci0gCi1AQCAtMTgwMiw2ICsx ODM1LDE1MCBAQCB0aHJlYWRfZGJfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICBi ZW5lYXRoLT50b19yZXN1bWUgKGJlbmVhdGgsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKLSB9Ci0gCi0r LyogcXNvcnQgaGVscGVyIGZ1bmN0aW9uIGZvciBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIs IHNvcnQgdGhlCi0rICAgdGhyZWFkX2RiX2luZm8gcG9pbnRlcnMgcHJpbWFyaWx5IGJ5IHRoZWly IEZJTEVOQU1FIGFuZCBzZWNvbmRhcmlseSBieSB0aGVpcgotKyAgIFBJRCwgYm90aCBpbiBhc2Nl bmRpbmcgb3JkZXIuICAqLwotKwotK3N0YXRpYyBpbnQKLStpbmZvX2F1dG9fbG9hZF9saWJ0aHJl YWRfZGJfY29tcGFyZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQotK3sKLSsgIHN0 cnVjdCB0aHJlYWRfZGJfaW5mbyAqYSA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBhcDsK LSsgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYiA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoq KSBicDsKLSsgIGludCByZXR2YWw7Ci0rCi0rICByZXR2YWwgPSBzdHJjbXAgKGEtPmZpbGVuYW1l LCBiLT5maWxlbmFtZSk7Ci0rICBpZiAocmV0dmFsKQotKyAgICByZXR1cm4gcmV0dmFsOwotKwot KyAgcmV0dXJuIChhLT5waWQgPiBiLT5waWQpIC0gKGEtPnBpZCAtIGItPnBpZCk7Ci0rfQotKwot Ky8qIEltcGxlbWVudCAnaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiJy4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0r ICBjb25zdCBjaGFyICpjcyA9IGFyZ3MgPyBhcmdzIDogIiI7Ci0rICBzdHJ1Y3QgdGhyZWFkX2Ri X2luZm8gKmluZm8sICoqYXJyYXk7Ci0rICB1bnNpZ25lZCBpbmZvX2NvdW50LCB1bmlxdWVfZmls ZW5hbWVzOwotKyAgc2l6ZV90IG1heF9maWxlbmFtZV9sZW4sIG1heF9waWRzX2xlbiwgcGlkc19s ZW47Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsgIGNoYXIgKnBpZHM7Ci0rICBpbnQg aTsKLSsKLSsgIHdoaWxlIChpc3NwYWNlICgqY3MpKQotKyAgICBjcysrOwotKyAgaWYgKCpjcykK LSsgICAgZXJyb3IgKF8oIidpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInIGRvZXMgbm90IGFj Y2VwdCBhbnkgcGFyYW1ldGVycyIpKTsKLSsKLSsgIGluZm9fY291bnQgPSAwOwotKyAgZm9yIChp bmZvID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQotKyAgICBpZiAo aW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkKLSsgICAgICBpbmZvX2NvdW50Kys7Ci0rCi0rICBhcnJh eSA9IHhtYWxsb2MgKHNpemVvZiAoKmFycmF5KSAqIGluZm9fY291bnQpOwotKyAgYmFja190byA9 IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFycmF5KTsKLSsKLSsgIGluZm9fY291bnQgPSAwOwotKyAg Zm9yIChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQotKyAg ICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkKLSsgICAgICBhcnJheVtpbmZvX2NvdW50Kytd ID0gaW5mbzsKLSsKLSsgIC8qIFNvcnQgQVJSQVkgYnkgZmlsZW5hbWVzIGFuZCBQSURzLiAgKi8K LSsKLSsgIHFzb3J0IChhcnJheSwgaW5mb19jb3VudCwgc2l6ZW9mICgqYXJyYXkpLAotKwkgaW5m b19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUpOwotKwotKyAgLyogQ2FsY3VsYXRlIHRo ZSBudW1iZXIgb2YgdW5pcXVlIGZpbGVuYW1lcyAocm93cykgYW5kIHRoZSBtYXhpbXVtIHN0cmlu ZwotKyAgICAgbGVuZ3RoIG9mIFBJRHMgbGlzdCBmb3IgdGhlIHVuaXF1ZSBmaWxlbmFtZXMgKGNv bHVtbnMpLiAgKi8KLSsKLSsgIHVuaXF1ZV9maWxlbmFtZXMgPSAwOwotKyAgbWF4X2ZpbGVuYW1l X2xlbiA9IDA7Ci0rICBtYXhfcGlkc19sZW4gPSAwOwotKyAgcGlkc19sZW4gPSAwOwotKyAgZm9y IChpID0gMDsgaSA8IGluZm9fY291bnQ7IGkrKykKLSsgICAgewotKyAgICAgIGludCBwaWQgPSBh cnJheVtpXS0+cGlkOwotKyAgICAgIHNpemVfdCB0aGlzX3BpZF9sZW47Ci0rCi0rICAgICAgZm9y ICh0aGlzX3BpZF9sZW4gPSAwOyBwaWQgIT0gMDsgcGlkIC89IDEwKQotKwl0aGlzX3BpZF9sZW4r KzsKLSsKLSsgICAgICBpZiAoaSA9PSAwIHx8IHN0cmNtcCAoYXJyYXlbaSAtIDFdLT5maWxlbmFt ZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSAhPSAwKQotKwl7Ci0rCSAgdW5pcXVlX2ZpbGVuYW1lcysr OwotKwkgIG1heF9maWxlbmFtZV9sZW4gPSBtYXggKG1heF9maWxlbmFtZV9sZW4sCi0rCQkJCSAg c3RybGVuIChhcnJheVtpXS0+ZmlsZW5hbWUpKTsKLSsKLSsJICBpZiAoaSA+IDApCi0rCSAgICB7 Ci0rCSAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAoIiwgIik7Ci0rCSAgICAgIG1heF9waWRzX2xl biA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7Ci0rCSAgICB9Ci0rCSAgcGlkc19sZW4g PSAwOwotKwl9Ci0rICAgICAgcGlkc19sZW4gKz0gdGhpc19waWRfbGVuICsgc3RybGVuICgiLCAi KTsKLSsgICAgfQotKyAgaWYgKGkpCi0rICAgIHsKLSsgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4g KCIsICIpOwotKyAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xl bik7Ci0rICAgIH0KLSsKLSsgIC8qIFRhYmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNl ZGluZyAibGlidGhyZWFkLWRiOiAgIiB3b3VsZCBub3QgbWF0Y2gKLSsgICAgIGl0cyBjb2x1bW5z LiAgKi8KLSsgIGlmIChpbmZvX2NvdW50ID4gMCAmJiBhcmdzID09IGF1dG9fbG9hZF9pbmZvX3Nj cmlwdHNfcGF0dGVybl9ubCkKLSsgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSsg IG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgdW5pcXVlX2Zp bGVuYW1lcywKLSsJCQkJICAgICAgICJMaW51eFRocmVhZERiVGFibGUiKTsKLSsKLSsgIHVpX291 dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBtYXhfZmlsZW5hbWVfbGVuLCB1aV9sZWZ0LCAiZmlsZW5h bWUiLAotKwkJICAgICAgICJGaWxlbmFtZSIpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlv dXQsIHBpZHNfbGVuLCB1aV9sZWZ0LCAiUElEcyIsICJQaWRzIik7Ci0rICB1aV9vdXRfdGFibGVf Ym9keSAodWlvdXQpOwotKwotKyAgcGlkcyA9IHhtYWxsb2MgKG1heF9waWRzX2xlbiArIDEpOwot KyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGlkcyk7Ci0rCi0rICAvKiBOb3RlIEkgaXMgaW5jcmVt ZW50ZWQgaW5zaWRlIHRoZSBjeWNsZSwgbm90IGF0IGl0cyBlbmQuICAqLwotKyAgZm9yIChpID0g MDsgaSA8IGluZm9fY291bnQ7KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNoYWlu ID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLSsg ICAgICBjaGFyICpwaWRzX2VuZDsKLSsKLSsgICAgICBpbmZvID0gYXJyYXlbaV07Ci0rICAgICAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmaWxlbmFtZSIsIGluZm8tPmZpbGVuYW1lKTsK LSsgICAgICBwaWRzX2VuZCA9IHBpZHM7Ci0rCi0rICAgICAgd2hpbGUgKGkgPCBpbmZvX2NvdW50 ICYmIHN0cmNtcCAoaW5mby0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFtZSkgPT0gMCkKLSsJ ewotKwkgIGlmIChwaWRzX2VuZCAhPSBwaWRzKQotKwkgICAgewotKwkgICAgICAqcGlkc19lbmQr KyA9ICcsJzsKLSsJICAgICAgKnBpZHNfZW5kKysgPSAnICc7Ci0rCSAgICB9Ci0rCSAgcGlkc19l bmQgKz0geHNucHJpbnRmIChwaWRzX2VuZCwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0gLSBwaWRz X2VuZCwKLSsJCQkJICIldSIsIGFycmF5W2ldLT5waWQpOwotKwkgIGdkYl9hc3NlcnQgKHBpZHNf ZW5kIDwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0pOwotKwotKwkgIGkrKzsKLSsJfQotKyAgICAg ICpwaWRzX2VuZCA9ICdcMCc7Ci0rCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQs ICJwaWRzIiwgcGlkcyk7Ci0rCi0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsg ICAgICBkb19jbGVhbnVwcyAoY2hhaW4pOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoYmFj a190byk7Ci0rCi0rICBpZiAoaW5mb19jb3VudCA9PSAwKQotKyAgICB1aV9vdXRfbWVzc2FnZSAo dWlvdXQsIDAsIF8oIk5vIGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi5cbiIpKTsKLSt9Ci0rCi0g c3RhdGljIHZvaWQKLSBpbml0X3RocmVhZF9kYl9vcHMgKHZvaWQpCi0gewotQEAgLTE4NjMsNiAr MjA0MCwyMyBAQCBXaGVuIG5vbi16ZXJvLCBsaWJ0aHJlYWQtZGIgZGVidWdnaW5nIGlzCi0gCQkJ ICAgIHNob3dfbGlidGhyZWFkX2RiX2RlYnVnLAotIAkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hv d2RlYnVnbGlzdCk7Ci0gCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxpYnRocmVhZC1k YiIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9hZF90aHJlYWRfZGIsIF8oIlwKLStF bmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhy ZWFkX2RiLiIpLCBfKCJcCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBpbmZlcmlvciBzcGVj aWZpYyBsaWJ0aHJlYWRfZGIgaXMgZW5hYmxlZC4iKSwgXygiXAotK0lmIGVuYWJsZWQsIGxpYnRo cmVhZF9kYiB3aWxsIGJlIHNlYXJjaGVkIGluICdzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRo J1xuXAotK2xvY2F0aW9ucyB0byBsb2FkIGxpYnRocmVhZF9kYiBjb21wYXRpYmxlIHdpdGggdGhl IGluZmVyaW9yLlxuXAotK1N0YW5kYXJkIHN5c3RlbSBsaWJ0aHJlYWRfZGIgc3RpbGwgZ2V0cyBs b2FkZWQgZXZlbiB3aXRoIHRoaXMgb3B0aW9uIG9mZi5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNl Y3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkgICBO VUxMLCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRs aXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0r ICBhZGRfY21kICgibGlidGhyZWFkLWRiIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbGli dGhyZWFkX2RiLAotKwkgICBfKCJQcmludCB0aGUgbGlzdCBvZiBsb2FkZWQgaW5mZXJpb3Igc3Bl Y2lmaWMgbGlidGhyZWFkX2RiLlxuXAotK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIiKSwKLSsJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotKwotICAgLyogQWRk IG91cnNlbHZlcyB0byBvYmpmaWxlIGV2ZW50IGNoYWluLiAgKi8KLSAgIG9ic2VydmVyX2F0dGFj aF9uZXdfb2JqZmlsZSAodGhyZWFkX2RiX25ld19vYmpmaWxlKTsKLSAKLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1NzQzNzUwMyArMDIwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1 NzA3OTc3NyArMDIwMAotQEAgLTk0NSw4ICs5NDUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQotICAgLyogU2tpcCBhdXRvLWxvYWRpbmcgc2VjdGlvbi1zcGVjaWZpZWQgc2NyaXB0cyB1 bnRpbCB3ZSd2ZSBzb3VyY2VkCi0gICAgICBsb2NhbF9nZGJpbml0ICh3aGljaCBpcyBvZnRlbiB1 c2VkIHRvIGF1Z21lbnQgdGhlIHNvdXJjZSBzZWFyY2gKLSAgICAgIHBhdGgpLiAgKi8KLS0gIHNh dmVfYXV0b19sb2FkID0gZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLS0gIGdkYnB5X2dsb2JhbF9h dXRvX2xvYWQgPSAwOwotKyAgc2F2ZV9hdXRvX2xvYWQgPSBnbG9iYWxfYXV0b19sb2FkOwotKyAg Z2xvYmFsX2F1dG9fbG9hZCA9IDA7Ci0gCi0gICBpZiAoZXhlY2FyZyAhPSBOVUxMCi0gICAgICAg JiYgc3ltYXJnICE9IE5VTEwKLUBAIC0xMDIyLDE0ICsxMDIyLDI0IEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCi0gCi0gICAvKiBSZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJy ZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBpc24ndAotICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01F Ly5nZGJpbml0IGZpbGUgKGl0IHNob3VsZCBleGlzdCwgYWxzbykuICAqLwotLSAgaWYgKGxvY2Fs X2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKLS0gICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMg KHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rICBp ZiAobG9jYWxfZ2RiaW5pdCkKLSsgICAgewotKyAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKLSsKLSsgICAgICBpZiAo IWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsJewotKwkgIGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7Ci0rCi0rCSAgY2F0Y2hfY29tbWFuZF9l cnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsCi0rCQkJCVJFVFVSTl9NQVNL X0FMTCk7Ci0rCX0KLSsgICAgfQotIAotICAgLyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2 ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBvcHRpb25zIGhhdmUgYmVlbgotICAgICAgcHJvY2Vzc2Vk LCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0cyBtZW50aW9uZWQgaW4gU1lNQVJHLgotICAgICAgV2Ug d2FpdCB1bnRpbCBub3cgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ug c2VhcmNoCi0gICAgICBwYXRoIGluIGxvY2FsX2dkYmluaXQuICAqLwotLSAgZ2RicHlfZ2xvYmFs X2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOwotKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVf YXV0b19sb2FkOwotICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9fc2Ny aXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi1AQCAtMTE5Niw3ICsxMjA2LDcgQEAgQXQg c3RhcnR1cCwgR0RCIHJlYWRzIHRoZSBmb2xsb3dpbmcgaW5pdAotICIpLCBob21lX2dkYmluaXQp OwotICAgaWYgKGxvY2FsX2dkYmluaXQpCi0gICAgIGZwcmludGZfdW5maWx0ZXJlZCAoc3RyZWFt LCBfKCJcCi0tICAgKiBsb2NhbCBpbml0IGZpbGU6IC4vJXNcblwKLSsgICAqIGxvY2FsIGluaXQg ZmlsZSAoc2VlIGFsc28gJ3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcpOiAuLyVzXG5cCi0g IiksIGxvY2FsX2dkYmluaXQpOwotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCi0gRm9yIG1v cmUgaW5mb3JtYXRpb24sIHR5cGUgXCJoZWxwXCIgZnJvbSB3aXRoaW4gR0RCLCBvciBjb25zdWx0 IHRoZVxuXAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDQtMTggMDA6NDQ6MjYuOTI4NDM3NTc3ICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0 ICswMjAwCi1AQCAtMTAzNCw2ICsxMDM0LDcgQEAgWW91IGNhbiBydW4gQHZhbHVle0dEQk59IGlu IHZhcmlvdXMgYWx0ZQotIGJhdGNoIG1vZGUgb3IgcXVpZXQgbW9kZS4KLSAKLSBAdGFibGUgQGNv ZGUKLStAYW5jaG9yey1ueH0KLSBAaXRlbSAtbngKLSBAaXRlbXggLW4KLSBAY2luZGV4IEBjb2Rl ey0tbnh9Ci1AQCAtMTI2NSw2ICsxMjY2LDcgQEAgSGVyZSdzIHRoZSBkZXNjcmlwdGlvbiBvZiB3 aGF0IEB2YWx1ZXtHRAotIFNldHMgdXAgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2lm aWVkIGJ5IHRoZSBjb21tYW5kIGxpbmUKLSAoQHB4cmVme01vZGUgT3B0aW9ucywgaW50ZXJwcmV0 ZXJ9KS4KLSAKLStAYW5jaG9ye09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9Ci0gQGl0ZW0KLSBF eGVjdXRlcyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1w ey1pZXh9IGFuZAotIEBzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIu ICBVc3VhbGx5IHlvdSBzaG91bGQgdXNlIHRoZQotQEAgLTEyNzksNiArMTI4MSw3IEBAIHVzZWQg d2hlbiBidWlsZGluZyBAdmFsdWV7R0RCTn07IEBweHJlZnsKLSAgLFN5c3RlbS13aWRlIGNvbmZp Z3VyYXRpb24gYW5kIHNldHRpbmdzfSkgYW5kIGV4ZWN1dGVzIGFsbCB0aGUgY29tbWFuZHMgaW4K LSB0aGF0IGZpbGUuCi0gCi0rQGFuY2hvcntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9Ci0gQGl0 ZW0KLSBSZWFkcyB0aGUgaW5pdCBmaWxlIChpZiBhbnkpIGluIHlvdXIgaG9tZSBkaXJlY3RvcnlA Zm9vdG5vdGV7T24KLSBET1MvV2luZG93cyBzeXN0ZW1zLCB0aGUgaG9tZSBkaXJlY3RvcnkgaXMg dGhlIG9uZSBwb2ludGVkIHRvIGJ5IHRoZQotQEAgLTEyODgsOSArMTI5MSwxMiBAQCB0aGF0IGZp bGUuCi0gQGl0ZW0KLSBQcm9jZXNzZXMgY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIG9wZXJhbmRz LgotIAotK0BhbmNob3J7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcg U3RhcnR1cH0KLSBAaXRlbQotIFJlYWRzIGFuZCBleGVjdXRlcyB0aGUgY29tbWFuZHMgZnJvbSBp bml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQKLS13b3JraW5nIGRpcmVjdG9yeS4gIFRo aXMgaXMgb25seSBkb25lIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcwotK3dvcmtpbmcgZGly ZWN0b3J5IGFzIGxvbmcgYXMgQHNhbXB7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fSBpcyBz ZXQgdG8KLStAc2FtcHtvbn0gKEBweHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0 b3J5fSkuCi0rVGhpcyBpcyBvbmx5IGRvbmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCi0g ZGlmZmVyZW50IGZyb20geW91ciBob21lIGRpcmVjdG9yeS4gIFRodXMsIHlvdSBjYW4gaGF2ZSBt b3JlIHRoYW4gb25lCi0gaW5pdCBmaWxlLCBvbmUgZ2VuZXJpYyBpbiB5b3VyIGhvbWUgZGlyZWN0 b3J5LCBhbmQgYW5vdGhlciwgc3BlY2lmaWMKLSB0byB0aGUgcHJvZ3JhbSB5b3UgYXJlIGRlYnVn Z2luZywgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3UgaW52b2tlCi1AQCAtMTMwNiw3ICsxMzEy LDcgQEAgSWYgeW91IHdpc2ggdG8gZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nCi0geW91IG11c3Qg ZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKLSAKLSBAc21hbGxleGFtcGxlCi0tJCBn ZGIgLWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0rJCBnZGIgLWll eCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvZmYiIG15cHJvZ3JhbQotIEBlbmQgc21h bGxleGFtcGxlCi0gCi0gT3B0aW9uIEBzYW1wey1leH0gZG9lcyBub3Qgd29yayBiZWNhdXNlIHRo ZSBhdXRvLWxvYWRpbmcgaXMgdGhlbiB0dXJuZWQKLUBAIC0yODkxLDYgKzI4OTcsNyBAQCBwcm9n cmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCi0gQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0 aW5nIFdhdGNocG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0Ci0gd2F0Y2hwb2ludHMgaW4g cHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgotIAotK0BhbmNob3J7c2V0IGxpYnRocmVh ZC1kYi1zZWFyY2gtcGF0aH0KLSBAdGFibGUgQGNvZGUKLSBAa2luZGV4IHNldCBsaWJ0aHJlYWQt ZGItc2VhcmNoLXBhdGgKLSBAY2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRf ZGJ9Ci1AQCAtMjkwNSwxMSArMjkxMiwxNSBAQCBtYWNyby4KLSBPbiBAc2N7Z251fS9MaW51eCBh bmQgU29sYXJpcyBzeXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKLSBAY29k ZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcnkgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRocmVh ZHMgaW4gdGhlCi0gaW5mZXJpb3IgcHJvY2Vzcy4gIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSBAc2Ft cHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9Ci0tdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9 LgotK3RvIGZpbmQgQGNvZGV7bGlidGhyZWFkX2RifS4gIEB2YWx1ZXtHREJOfSBhbHNvIGNvbnN1 bHRzIGZpcnN0IGlmIGluZmVyaW9yCi0rc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5 IGxvYWRpbmcgaXMgZW5hYmxlZAotK2J5IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRi fSAoQHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4KLSAKLSBBIHNwZWNpYWwgZW50cnkg QHNhbXB7JHNkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9Ci0gcmVmZXJz IHRvIHRoZSBkZWZhdWx0IHN5c3RlbSBkaXJlY3RvcmllcyB0aGF0IGFyZQotLW5vcm1hbGx5IHNl YXJjaGVkIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMuCi0rbm9ybWFsbHkgc2VhcmNoZWQg Zm9yIGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllcy4gIFRoZSBAc2FtcHskc2Rpcn0gZW50cnkKLStp cyB0aGUgb25seSBraW5kIG5vdCBuZWVkaW5nIHRvIGJlIGVuYWJsZWQgYnkgQHNhbXB7c2V0IGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Ci0rKEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSku Ci0gCi0gQSBzcGVjaWFsIGVudHJ5IEBzYW1weyRwZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRi LXNlYXJjaC1wYXRofQotIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggQGNvZGV7 bGlicHRocmVhZH0KLUBAIC0yMDMyMCw2ICsyMDMzMSw3IEBAIGRlc2NyaWJlZCBoZXJlLgotICog U2NyZWVuIFNpemU6OiAgICAgICAgICAgICAgICAgU2NyZWVuIHNpemUKLSAqIE51bWJlcnM6OiAg ICAgICAgICAgICAgICAgICAgIE51bWJlcnMKLSAqIEFCSTo6ICAgICAgICAgICAgICAgICAgICAg ICAgIENvbmZpZ3VyaW5nIHRoZSBjdXJyZW50IEFCSQotKyogQXV0by1sb2FkaW5nOjogICAgICAg ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKLSAqIE1lc3Nh Z2VzL1dhcm5pbmdzOjogICAgICAgICAgIE9wdGlvbmFsIHdhcm5pbmdzIGFuZCBtZXNzYWdlcwot ICogRGVidWdnaW5nIE91dHB1dDo6ICAgICAgICAgICAgT3B0aW9uYWwgbWVzc2FnZXMgYWJvdXQg aW50ZXJuYWwgaGFwcGVuaW5ncwotICogT3RoZXIgTWlzYyBTZXR0aW5nczo6ICAgICAgICAgT3Ro ZXIgTWlzY2VsbGFuZW91cyBTZXR0aW5ncwotQEAgLTIwNzQ1LDYgKzIwNzU3LDIyNyBAQCBXaXRo IG5vIGFyZ3VtZW50LCBzaG93IHRoZSBsaXN0IG9mIHN1cHBvCi0gU2V0IHRoZSBjdXJyZW50IENA dHsrK30gQUJJIHRvIEB2YXJ7YWJpfSwgb3IgcmV0dXJuIHRvIGF1dG9tYXRpYyBkZXRlY3Rpb24u Ci0gQGVuZCB0YWJsZQotIAotK0Bub2RlIEF1dG8tbG9hZGluZwotK0BzZWN0aW9uIEF1dG9tYXRp Y2FsbHkgbG9hZGluZyBhc3NvY2lhdGVkIGZpbGVzCi0rQGNpbmRleCBhdXRvLWxvYWRpbmcKLSsK LStAdmFsdWV7R0RCTn0gc29tZXRpbWVzIHJlYWRzIGZpbGVzIHdpdGggY29tbWFuZHMgYW5kIHNl dHRpbmdzIGF1dG9tYXRpY2FsbHksCi0rd2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHRvbGQgc28g YnkgdGhlIHVzZXIuICBXZSBjYWxsIHRoaXMgZmVhdHVyZQotK0BkZm57YXV0by1sb2FkaW5nfS4g IFdoaWxlIGF1dG8tbG9hZGluZyBpcyB1c2VmdWwgZm9yIGF1dG9tYXRpY2FsbHkgYWRhcHRpbmcK LStAdmFsdWV7R0RCTn0gdG8gdGhlIG5lZWRzIG9mIHlvdXIgcHJvamVjdCwgaXQgY2FuIHNvbWV0 aW1lcyBwcm9kdWNlIHVuZXhwZWN0ZWQKLStyZXN1bHRzIG9yIGludHJvZHVjZSBzZWN1cml0eSBy aXNrcyAoZS5nLiwgaWYgdGhlIGZpbGUgY29tZXMgZnJvbSB1bnRydXN0ZWQKLStzb3VyY2VzKS4K LSsKLStGb3IgdGhlc2UgcmVhc29ucywgQHZhbHVle0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFu ZCBvcHRpb25zIHRvIGxldCB5b3UKLStjb250cm9sIHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFu ZCB3aGljaCBmaWxlcyBzaG91bGQgYmUgYXV0by1sb2FkZWQuCi0rCi0rQHRhYmxlIEBjb2RlCi0r QGFuY2hvcntzZXQgYXV0by1sb2FkIG9mZn0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgb2ZmCi0r QGl0ZW0gc2V0IGF1dG8tbG9hZCBvZmYKLStHbG9iYWxseSBkaXNhYmxlIGxvYWRpbmcgb2YgYWxs IGF1dG8tbG9hZGVkIGZpbGVzLgotK1lvdSBtYXkgd2FudCB0byB1c2UgdGhpcyBjb21tYW5kIHdp dGggdGhlIEBzYW1wey1pZXh9IG9wdGlvbgotKyhAcHhyZWZ7T3B0aW9uIC1pbml0LWV2YWwtY29t bWFuZH0pIHN1Y2ggYXM6Ci0rQHNtYWxsZXhhbXBsZQotKyQgQGtiZHtnZGIgLWlleCAic2V0IGF1 dG8tbG9hZCBvZmYiIHVudHJ1c3RlZC1leGVjdXRhYmxlIGNvcmVmaWxlfQotK0BlbmQgc21hbGxl eGFtcGxlCi0rCi0rQmUgYXdhcmUgdGhhdCBzeXN0ZW0gaW5pdCBmaWxlIChAcHhyZWZ7U3lzdGVt LXdpZGUgY29uZmlndXJhdGlvbn0pCi0rYW5kIGluaXQgZmlsZXMgZnJvbSB5b3VyIGhvbWUgZGly ZWN0b3J5IChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkKLStzdGlsbCBnZXQgcmVh ZCAoYXMgdGhleSBjb21lIGZyb20gZ2VuZXJhbGx5IHRydXN0ZWQgZGlyZWN0b3JpZXMpLgotK1Rv IHByZXZlbnQgQHZhbHVle0dEQk59IGZyb20gYXV0by1sb2FkaW5nIGV2ZW4gdGhvc2UgaW5pdCBm aWxlcywgdXNlIHRoZQotK0BvcHRpb257LW54fSBvcHRpb24gKEBweHJlZntNb2RlIE9wdGlvbnN9 KSwgaW4gYWRkaXRpb24gdG8KLStAY29kZXtzZXQgYXV0by1sb2FkIG5vfS4KLSsKLStAYW5jaG9y e3Nob3cgYXV0by1sb2FkfQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQKLStAaXRlbSBzaG93IGF1 dG8tbG9hZAotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgZWFjaCBzcGVjaWZpYyBAc2Ft cHthdXRvLWxvYWR9IGZpbGUocykgaXMgZW5hYmxlZAotK29yIGRpc2FibGVkLgotKwotK0BzbWFs bGV4YW1wbGUKLSsoZ2RiKSBzaG93IGF1dG8tbG9hZAotK2dkYi1zY3JpcHRzOiAgQXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KLStsaWJ0 aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2Ri IGlzIG9uLgotK2xvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0 IGZyb20gY3VycmVudCBkaXJlY3RvcnkgaXMgb24uCi0rcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxv YWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStA YW5jaG9ye2luZm8gYXV0by1sb2FkfQotK0BraW5kZXggaW5mbyBhdXRvLWxvYWQKLStAaXRlbSBp bmZvIGF1dG8tbG9hZAotK1ByaW50IHdoZXRoZXIgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxv YWR9IGZpbGUocykgaGF2ZSBiZWVuIGF1dG8tbG9hZGVkIG9yCi0rbm90LgotKwotK0BzbWFsbGV4 YW1wbGUKLSsoZ2RiKSBpbmZvIGF1dG8tbG9hZAotK2dkYi1zY3JpcHRzOgotK0xvYWRlZCAgU2Ny aXB0Ci0rWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYgotK2xpYnRocmVhZC1kYjog IE5vIGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi4KLStsb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdk YmluaXQgZmlsZSAiL2hvbWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KLStw eXRob24tc2NyaXB0czoKLStMb2FkZWQgIFNjcmlwdAotK1llcyAgICAgL2hvbWUvdXNlci9nZGIv Z2RiLWdkYi5weQotK0BlbmQgc21hbGxleGFtcGxlCi0rQGVuZCB0YWJsZQotKwotK1RoZXNlIGFy ZSB2YXJpb3VzIGtpbmRzIG9mIGZpbGVzIEB2YWx1ZXtHREJOfSBjYW4gYXV0b21hdGljYWxseSBs b2FkOgotKwotK0BpdGVtaXplIEBidWxsZXQKLStAaXRlbQotK0B4cmVme29iamZpbGUtZ2RiLnB5 IGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30u Ci0rQGl0ZW0KLStAeHJlZntvYmpmaWxlLWdkYi5nZGIgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJl ZntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAaXRlbQotK0B4cmVme2RvdGRlYnVnX2dk Yl9zY3JpcHRzIHNlY3Rpb259LAotK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzfS4KLStAaXRlbQotK0B4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBE aXJlY3Rvcnl9LAotK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmlu aXR9LgotK0BpdGVtCi0rQHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0sIGNvbnRyb2xsZWQg YnkgQHJlZntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0rQGVuZCBpdGVtaXplCi0rCi0r VGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzIGZvciB0aGUgYXV0by1sb2Fk aW5nOgotKwotK0BtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjUgLjUKLStAaXRlbSBAeHJl ZntzZXQgYXV0by1sb2FkIG9mZn0uCi0rQHRhYiBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxs eS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZH0uCi0rQHRhYiBTaG93IHNldHRpbmcgb2Yg YWxsIGtpbmRzIG9mIGZpbGVzLgotK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkfS4KLStAdGFi IFNob3cgc3RhdGUgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgotK0BpdGVtIEB4cmVme3NldCBhdXRv LWxvYWQgZ2RiLXNjcmlwdHN9LgotK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGNvbW1h bmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCi0r QHRhYiBTaG93IHNldHRpbmcgb2YgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRl bSBAeHJlZntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCi0rQHRhYiBTaG93IHN0YXRlIG9m IEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0c30uCi0rQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gUHl0aG9u IHNjcmlwdHMuCi0rQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Lgot K0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStAaXRl bSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQHRhYiBTaG93IHN0YXRl IG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1s b2FkIGxvY2FsLWdkYmluaXR9LgotK0B0YWIgQ29udHJvbCBmb3IgaW5pdCBmaWxlIGluIHRoZSBj dXJyZW50IGRpcmVjdG9yeS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJp bml0fS4KLStAdGFiIFNob3cgc2V0dGluZyBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGly ZWN0b3J5LgotK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0B0 YWIgU2hvdyBzdGF0ZSBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotK0Bp dGVtIEB4cmVme3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLStAdGFiIENvbnRyb2wgZm9y IHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGJ9LgotK0B0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGli cmFyeS4KLStAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIg U2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCi0rQGVuZCBtdWx0aXRhYmxl Ci0rCi0rQG1lbnUKLSsqIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2Ft cHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotKyogbGlidGhyZWFkX2Ri LnNvLjEgZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxp YnRocmVhZC1kYn0KLSsqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2Ft cHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQotK0B4cmVme1B5dGhvbiBBdXRv LWxvYWRpbmd9LgotK0BlbmQgbWVudQotKwotK0Bub2RlIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVu dCBEaXJlY3RvcnkKLStAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgaW5pdCBmaWxl IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQotK0BjaW5kZXggYXV0by1sb2FkaW5nIGluaXQgZmls ZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKLSsKLStCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0g cmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCi0rZnJv bSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCi0r c2VlIEByZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1 cH0uCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmlu aXR9Ci0rQGtpbmRleCBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStAaXRlbSBzZXQgYXV0 by1sb2FkIGxvY2FsLWdkYmluaXQgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0 by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKLSsoQHB4cmVme1NlcXVl bmNlc30pIGZvdW5kIGluIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rCi0r QGFuY2hvcntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotK0BraW5kZXggc2hvdyBhdXRv LWxvYWQgbG9jYWwtZ2RiaW5pdAotK0BpdGVtIHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQK LStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFu ZHMgZnJvbSBpbml0IGZpbGUgaW4gdGhlCi0rY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZCBv ciBkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0r QGtpbmRleCBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ci0rQGl0ZW0gaW5mbyBhdXRvLWxv YWQgbG9jYWwtZ2RiaW5pdAotK1ByaW50IHdoZXRoZXIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21t YW5kcyBmcm9tIGluaXQgZmlsZSBpbiB0aGUKLStjdXJyZW50IGRpcmVjdG9yeSBoYXZlIGJlZW4g YXV0by1sb2FkZWQuCi0rQGVuZCB0YWJsZQotKwotK0Bub2RlIGxpYnRocmVhZF9kYi5zby4xIGZp bGUKLStAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgdGhyZWFkIGRlYnVnZ2luZyBs aWJyYXJ5Ci0rQGNpbmRleCBhdXRvLWxvYWRpbmcgbGlidGhyZWFkX2RiLnNvLjEKLSsKLStUaGlz IGZlYXR1cmUgaXMgY3VycmVudGx5IHByZXNlbnQgb25seSBvbiBAc2N7Z251fS9MaW51eCBuYXRp dmUgaG9zdHMuCi0rCi0rQHZhbHVle0dEQk59IHJlYWRzIGluIHNvbWUgY2FzZXMgdGhyZWFkIGRl YnVnZ2luZyBsaWJyYXJ5IGZyb20gcGxhY2VzIHNwZWNpZmljCi0rdG8gdGhlIGluZmVyaW9yIChA cHhyZWZ7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0pLgotKwotK1RoZSBzcGVjaWFsIEBz YW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cnkgQHNhbXB7JHNkaXJ9IGlzIHByb2Nl c3NlZAotK3dpdGhvdXQgY2hlY2tpbmcgdGhpcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVh ZC1kYn0gc3dpdGNoIGFzIHN5c3RlbQotK2xpYnJhcmllcyBoYXZlIHRvIGJlIHRydXN0ZWQgaW4g Z2VuZXJhbC4gIEluIGFsbCBvdGhlciBjYXNlcyBvZgotK0BzYW1we2xpYnRocmVhZC1kYi1zZWFy Y2gtcGF0aH0gZW50cmllcyBAdmFsdWV7R0RCTn0gY2hlY2tzIGZpcnN0IGlmIEBzYW1we3NldAot K2F1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IGlzIGVuYWJsZWQgYmVmb3JlIHRyeWluZyB0byBvcGVu IHN1Y2ggdGhyZWFkIGRlYnVnZ2luZwotK2xpYnJhcnkuCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFu Y2hvcntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQg bGlidGhyZWFkLWRiCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgW29ufG9mZl0K LStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmlj IHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1sb2FkIGxp YnRocmVhZC1kYn0KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK0BpdGVt IHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcg b2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGlzCi0rZW5hYmxl ZCBvciBkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0K LStAa2luZGV4IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK0BpdGVtIGluZm8gYXV0by1s b2FkIGxpYnRocmVhZC1kYgotK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBsb2FkZWQgaW5mZXJpb3Ig c3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJpZXMgYW5kCi0rZm9yIGVhY2ggc3VjaCBs aWJyYXJ5IHByaW50IGxpc3Qgb2YgaW5mZXJpb3IgQHZhcntwaWR9cyB1c2luZyBpdC4KLStAZW5k IHRhYmxlCi0rCi0rQG5vZGUgb2JqZmlsZS1nZGIuZ2RiIGZpbGUKLStAc3Vic2VjdGlvbiBUaGUg QGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlCi0rQGNpbmRleCBhdXRvLWxvYWRpbmcg QGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifQotKwotK0B2YWx1ZXtHREJOfSB0cmllcyB0byBs b2FkIGFuIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZSBjb250YWluaW5nCi0rY2Fu bmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyAoQHB4cmVme1NlcXVlbmNlc30pLCBhcyBsb25nIGFz IEBzYW1we3NldAotK2F1dG8tbG9hZCBnZGItc2NyaXB0c30gaXMgc2V0IHRvIEBzYW1we29ufS4K LSsKLStGb3IgbW9yZSBiYWNrZ3JvdW5kIHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3Jp cHRzIGF1dG8tbG9hZGluZwotK2Rlc2NyaXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmls ZX0pLgotKwotK0B0YWJsZSBAY29kZQotK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0 c30KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStAaXRlbSBzZXQgYXV0by1s b2FkIGdkYi1zY3JpcHRzIFtvbnxvZmZdCi0rRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9h ZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMuCi0rCi0rQGFuY2hv cntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIGdk Yi1zY3JpcHRzCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStTaG93IHdoZXRo ZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBp cyBlbmFibGVkIG9yCi0rZGlzYWJsZWQuCi0rCi0rQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBnZGIt c2NyaXB0c30KLStAa2luZGV4IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzCi0rQGNpbmRleCBw cmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2Ny aXB0cwotK0BpdGVtIGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0r UHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0 cyB0aGF0IEB2YWx1ZXtHREJOfQotK2F1dG8tbG9hZGVkLgotK0BlbmQgdGFibGUKLSsKLStJZiBA dmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz IHNjcmlwdHMgd2l0aAotK21hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgotKwotIEBub2RlIE1l c3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2Vz Ci0gCi1AQCAtMjE2MTYsNyArMjE4NDksNyBAQCBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHdoZW4g QHZhbHVle0dEQk59Ci0gQG1lbnUKLSAqIFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFj Y2Vzc2luZyBQeXRob24gZnJvbSBAdmFsdWV7R0RCTn0uCi0gKiBQeXRob24gQVBJOjogICAgICAg ICAgICAgICAgICBBY2Nlc3NpbmcgQHZhbHVle0dEQk59IGZyb20gUHl0aG9uLgotLSogQXV0by1s b2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2Rl LgotKyogUHl0aG9uIEF1dG8tbG9hZGluZzo6ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5n IFB5dGhvbiBjb2RlLgotICogUHl0aG9uIG1vZHVsZXM6OiAgICAgICAgICAgICAgUHl0aG9uIG1v ZHVsZXMgcHJvdmlkZWQgYnkgQHZhbHVle0dEQk59LgotIEBlbmQgbWVudQotIAotQEAgLTIyNzk5 LDcgKzIzMDMyLDcgQEAgVGhpcyBwcmFjdGljZSB3aWxsIGVuYWJsZSBAdmFsdWV7R0RCTn0gdAot IHlvdXIgcHJldHR5LXByaW50ZXJzIGF0IHRoZSBzYW1lIHRpbWUsIGJlY2F1c2UgdGhleSB3aWxs IGhhdmUKLSBkaWZmZXJlbnQgbmFtZXMuCi0gCi0tWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRl ZCBjb2RlIChAcHhyZWZ7QXV0by1sb2FkaW5nfSkgc3VjaCB0aGF0IGl0Ci0rWW91IHNob3VsZCB3 cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pIHN1Y2gg dGhhdCBpdAotIGNhbiBiZSBldmFsdWF0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCBjaGFuZ2lu ZyBpdHMgbWVhbmluZy4gIEFuCi0gaWRlYWwgYXV0by1sb2FkIGZpbGUgd2lsbCBjb25zaXN0IHNv bGVseSBvZiBAY29kZXtpbXBvcnR9cyBvZiB5b3VyCi0gcHJpbnRlciBtb2R1bGVzLCBmb2xsb3dl ZCBieSBhIGNhbGwgdG8gYSByZWdpc3RlciBwcmV0dHktcHJpbnRlcnMgd2l0aAotQEAgLTIzNzYw LDcgKzIzOTkzLDcgQEAgVGhlIGZvbGxvd2luZyBvYmpmaWxlLXJlbGF0ZWQgZnVuY3Rpb25zCi0g Ci0gQGZpbmRleCBnZGIuY3VycmVudF9vYmpmaWxlCi0gQGRlZnVuIGdkYi5jdXJyZW50X29iamZp bGUgKCkKLS1XaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntBdXRvLWxv YWRpbmd9KSwgQHZhbHVle0dEQk59Ci0rV2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0 IChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pLCBAdmFsdWV7R0RCTn0KLSBzZXRzIHRoZSBg YGN1cnJlbnQgb2JqZmlsZScnIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9iamZpbGUuICBUaGlzCi0g ZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VycmVudCBvYmpmaWxlLiAgSWYgdGhlcmUgaXMgbm8gY3Vy cmVudCBvYmpmaWxlLAotIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KLUBAIC0y NDY3MSw5ICsyNDkwNCw5IEBAIHJlc29sdmUgdGhpcyB0byB0aGUgbGF6eSBzdHJpbmcncyBjaGFy YWMKLSB3cml0YWJsZS4KLSBAZW5kIGRlZnZhcgotIAotLUBub2RlIEF1dG8tbG9hZGluZwotLUBz dWJzZWN0aW9uIEF1dG8tbG9hZGluZwotLUBjaW5kZXggYXV0by1sb2FkaW5nLCBQeXRob24KLStA bm9kZSBQeXRob24gQXV0by1sb2FkaW5nCi0rQHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGlu ZwotK0BjaW5kZXggUHl0aG9uIGF1dG8tbG9hZGluZwotIAotIFdoZW4gYSBuZXcgb2JqZWN0IGZp bGUgaXMgcmVhZCAoZm9yIGV4YW1wbGUsIGR1ZSB0byB0aGUgQGNvZGV7ZmlsZX0KLSBjb21tYW5k LCBvciBiZWNhdXNlIHRoZSBpbmZlcmlvciBoYXMgbG9hZGVkIGEgc2hhcmVkIGxpYnJhcnkpLAot QEAgLTI0NjkzLDMyICsyNDkyNiwzNSBAQCBBdXRvLWxvYWRpbmcgY2FuIGJlIGVuYWJsZWQgb3Ig ZGlzYWJsZWQsCi0gYW5kIHRoZSBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgY2FuIGJlIHBy aW50ZWQuCi0gCi0gQHRhYmxlIEBjb2RlCi0tQGtpbmRleCBzZXQgYXV0by1sb2FkLXNjcmlwdHMK LS1AaXRlbSBzZXQgYXV0by1sb2FkLXNjcmlwdHMgW3llc3xub10KLStAYW5jaG9ye3NldCBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0rQGtpbmRleCBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbb258b2ZmXQotIEVuYWJs ZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuCi0gCi0tQGtp bmRleCBzaG93IGF1dG8tbG9hZC1zY3JpcHRzCi0tQGl0ZW0gc2hvdyBhdXRvLWxvYWQtc2NyaXB0 cwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0rQGtpbmRleCBzaG93 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cwotK0BpdGVtIHNob3cgYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzCi0gU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBl bmFibGVkIG9yIGRpc2FibGVkLgotIAotLUBraW5kZXggaW5mbyBhdXRvLWxvYWQtc2NyaXB0cwot LUBjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzCi0tQGl0ZW0gaW5mbyBh dXRvLWxvYWQtc2NyaXB0cyBbQHZhcntyZWdleHB9XQotLVByaW50IHRoZSBsaXN0IG9mIGFsbCBz Y3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgotK0BhbmNob3J7aW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cwotK0BjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cwot K0BpdGVtIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0rUHJp bnQgdGhlIGxpc3Qgb2YgYWxsIFB5dGhvbiBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8t bG9hZGVkLgotIAotLUFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2Vy ZSBtZW50aW9uZWQgaW4KLStBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2YgUHl0aG9uIHNjcmlw dHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBpbgotIHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9 IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCi0gKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0 cyBzZWN0aW9ufSkuCi0gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90 IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RCTn0KLSB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxz LiAgVGhlcmUgbWF5IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHByaW50aW5nCi0gYW4gZXJyb3IgbWVz c2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJvYmxlbWF0aWMuCi0gCi0tSWYgQHZhcntyZWdleHB9IGlz IHN1cHBsaWVkIG9ubHkgc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgot K0lmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IFB5dGhvbiBzY3JpcHRzIHdpdGggbWF0 Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0gCi0gRXhhbXBsZToKLSAKLSBAc21hbGxleGFtcGxl Ci0tKGdkYikgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cwotKyhnZGIpIGluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzCi0gTG9hZGVkICBTY3JpcHQKLSBZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0 LnB5Ci0gICAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQu YwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1ODQzNzUwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3 OTc3NCArMDIwMAotQEAgLTMxLDI5ICszMSw1NiBAQAotIAotICNpbmNsdWRlICJweXRob24taW50 ZXJuYWwuaCIKLSAKLS0vKiBOT1RFOiBJdCdzIHRyaXZpYWwgdG8gYWxzbyBzdXBwb3J0IGF1dG8t bG9hZGluZyBub3JtYWwgZ2RiIHNjcmlwdHMuCi0tICAgVGhlcmUgaGFzIHlldCB0byBiZSBhIG5l ZWQgc28gaXQncyBub3QgaW1wbGVtZW50ZWQuICAqLwotLQotIC8qIFRoZSBzdWZmaXggb2YgcGVy LW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQuCi0gICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFt IGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5weS4gICovCi0gI2RlZmluZSBH REJQWV9BVVRPX0ZJTEVfTkFNRSAiLWdkYi5weSIKLSAKLS0vKiBUaGUgc2VjdGlvbiB0byBsb29r IGZvciBzY3JpcHRzIChpbiBmaWxlIGZvcm1hdHMgdGhhdCBzdXBwb3J0IHNlY3Rpb25zKS4KLSsv KiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyAoaW4g ZmlsZSBmb3JtYXRzIHRoYXQKLSsgICBzdXBwb3J0IHNlY3Rpb25zKS4KLSAgICBFYWNoIGVudHJ5 IGluIHRoaXMgc2VjdGlvbiBpcyBhIGJ5dGUgb2YgdmFsdWUgMSwgYW5kIHRoZW4gdGhlIG51bC10 ZXJtaW5hdGVkCi0gICAgbmFtZSBvZiB0aGUgc2NyaXB0LiAgVGhlIHNjcmlwdCBuYW1lIG1heSBp bmNsdWRlIGEgZGlyZWN0b3J5LgotICAgIFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxsb3cgdXB3 YXJkIGNvbXBhdGlibGUgZXh0ZW5zaW9ucy4gICovCi0gI2RlZmluZSBHREJQWV9BVVRPX1NFQ1RJ T05fTkFNRSAiLmRlYnVnX2dkYl9zY3JpcHRzIgotIAotLS8qIFVzZXItc2V0dGFibGUgb3B0aW9u IHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKLS0gICBzZXQgYXV0by1sb2FkLXNjcmlw dHMgb258b2ZmCi0tICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2Np YXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQotLSAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3 aXNlLgotLSAgIEF0IHRoZSBtb21lbnQsIHRoaXMgb25seSBhZmZlY3RzIHB5dGhvbiBzY3JpcHRz LCBidXQgdGhlcmUncyBubyByZWFzb24KLS0gICBvbmUgY291bGRuJ3QgYWxzbyBoYXZlIG90aGVy IGtpbmRzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMsIGFuZCB0aGVyZSdzCi0tICAgbm8gcmVhc29u IHRvIGhhdmUgdGhlbSBlYWNoIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSBmbGFnLgotLSAgIFNv IHdlIGVsaWRlICJweXRob24iIGZyb20gdGhlIG5hbWUgaGVyZSBhbmQgaW4gdGhlIG9wdGlvbi4K LS0gICBUaGUgZmFjdCB0aGF0IGl0IGxpdmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlv biBkZXRhaWwuICAqLwotLXN0YXRpYyBpbnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOwotKy8qIFVz ZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBQeXRo b24gc2NyaXB0czoKLSsgICBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgotKyAg IFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgUHl0aG9uIHNj cmlwdHMgd2hlbiBhbgotKyAgIG9iamZpbGUgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAq LwotK3N0YXRpYyBpbnQgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzID0gMTsKLSsKLStzdGF0aWMg dm9pZCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLSsJCQkJCQlGSUxFICpmaWxlLAotKwkJCQkJCWNvbnN0IGNoYXIgKmZpbGVuYW1l KTsKLSsKLSsvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9weXRob25fc2NyaXB0 cyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0 b19sb2FkX3B5dGhvbl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5 LAotKwkJCSAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFs dWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIFB5 dGhvbiBzY3JpcHRzIGlzICVzLlxuIiksIHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVmaW5pdGlvbiBv ZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIFB5dGhvbiBzY3JpcHRzLiAgKi8KLSsKLStzdGF0aWMgY29u c3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uCi0rICA9IHsg R0RCUFlfQVVUT19GSUxFX05BTUUsIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUg fTsKLSsKLSsvKiBXcmFwcGVyIG9mIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGZv ciBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2dkYnB5X2xv YWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxF ICpmaWxlLAotKwkJCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0rCi0rICAvKiBBZGQgdGhpcyBzY3Jp cHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIKLSsgICAgIGNhbiBwcmludCBpdC4gICovCi0rICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xv YWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICBt YXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0 X2xhbmd1YWdlX3B5dGhvbik7Ci0rCi0rICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOwotK30KLSAKLSAvKiBMb2FkIHNjcmlwdHMgc3Bl Y2lmaWVkIGluIE9CSkZJTEUuCi0gICAgU1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIgY29udGFp bmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKLUBAIC0xMjEsNiArMTQ4LDE3IEBAIHNvdXJj ZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJICBtYWtlX2NsZWFudXBfZmNs b3NlIChzdHJlYW0pOwotIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7Ci0gCX0K LSsgICAgICBlbHNlCi0rCXsKLSsJICBmdWxsX3BhdGggPSBOVUxMOwotKwotKwkgIC8qIFdlIGRv bid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8K LSsJICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCi0r CSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4g c2VjdGlvbiAlc1xuXAotK29mIGZpbGUgJXNcblwKLStVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhv biBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAotKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05f TkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0rCX0KLSAKLSAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlz bid0IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQotIAkgZm91bmQg ZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNo Ci1AQCAtMTI5LDI0ICsxNjcsMTIgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9i amZpbGUgKgotIAotIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVy cG9zZS4gICovCi0gCi0tICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBz cGFjZV9pbmZvLCBmaWxlLAotLQkJCQkJb3BlbmVkID8gZnVsbF9wYXRoIDogTlVMTCk7Ci0rICAg ICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBm dWxsX3BhdGgsCi0rCQkJCQkmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0gCi0tICAgICAgaWYg KCEgb3BlbmVkKQotLQl7Ci0tCSAgLyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9n cmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwotLQkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dh cm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKLS0JICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0 by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCi0tb2YgZmlsZSAlc1xu XAotLVVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIp LAotLQkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0tCX0K LS0gICAgICBlbHNlCi0tCXsKLS0JICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBs b2FkZWQsIGxvYWQgaXQuICAqLwotLQkgIGlmICghIGluX2hhc2hfdGFibGUpCi0tCSAgICBzb3Vy Y2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgp OwotLQl9Ci0rICAgICAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBs b2FkIGl0LiAgKi8KLSsgICAgICBpZiAob3BlbmVkICYmICFpbl9oYXNoX3RhYmxlKQotKwlzb3Vy Y2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgp OwotIAotICAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgICAgfQotQEAgLTE4MSwzNiAr MjA3LDc1IEBAIGF1dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKLSAgIGRv X2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gfQotIAotLS8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNj cmlwdHMgZm9yIE9CSkZJTEUuICAqLwotKy8qIExvYWQgYW55IFB5dGhvbiBhdXRvLWxvYWRlZCBz Y3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KLSAKLSB2b2lkCi0tbG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK2dkYnB5X2xvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0tICBpZiAoYXV0 b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCkKLSsgIGlmIChhdXRvX2xv YWRfcHl0aG9uX3NjcmlwdHMpCi0gICAgIHsKLS0gICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3Jp cHQgKG9iamZpbGUsIEdEQlBZX0FVVE9fRklMRV9OQU1FKTsKLSsgICAgICBhdXRvX2xvYWRfb2Jq ZmlsZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAgICAgICBh dXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChvYmpmaWxlLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFN RSk7Ci0gICAgIH0KLSB9Ci0rCi0rLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIi4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9weXRob25f c2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3sKLSsgIGF1dG9fbG9hZF9p bmZvX3NjcmlwdHMgKHBhdHRlcm4sIGZyb21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7 Ci0rfQotIAwKLSB2b2lkCi0gZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCi0gewot KyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKLSsgIGNoYXIgKmNtZF9uYW1lOwotKwot KyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX3N1cHBv cnQsCi0rCQkJICAgJmF1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAotK1NldCB0aGUgZGVi dWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIp LCBfKCJcCi0rU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9h ZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCi0rSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgUHl0 aG9uIHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotK2FuIGV4 ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0 eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwg c2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRs aXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0g ICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3Vw cG9ydCwKLS0JCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKLS1TZXQgdGhlIGRlYnVnZ2Vy J3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCi0tU2hv dyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMu IiksIF8oIlwKLS1JZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBsb2FkZWQgd2hl biB0aGUgZGVidWdnZXIgcmVhZHNcblwKLS1hbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5 LiIpLAotLQkJCSAgIE5VTEwsIE5VTEwsCi0tCQkJICAgJnNldGxpc3QsCi0tCQkJICAgJnNob3ds aXN0KTsKLSsJCQkgICAmYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rU2V0IHRoZSBk ZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMs ICIKLSsJCQkJCQkJCSAiZGVwcmVjYXRlZC4iKSwKLSsJCQkgICBfKCJcCi0rU2hvdyB0aGUgZGVi dWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAi Ci0rCQkJCQkJCQkgImRlcHJlY2F0ZWQuIiksCi0rCQkJICAgTlVMTCwgTlVMTCwgc2hvd19hdXRv X2xvYWRfcHl0aG9uX3NjcmlwdHMsCi0rCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7Ci0rICBj bWRfbmFtZSA9ICJhdXRvLWxvYWQtc2NyaXB0cyI7Ci0rICBjbWQgPSBsb29rdXBfY21kICgmY21k X25hbWUsIHNldGxpc3QsICIiLCAtMSwgMSk7Ci0rICBkZXByZWNhdGVfY21kIChjbWQsICJzZXQg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7Ci0rCi0rICAvKiBJdCBpcyBuZWVkZWQgYmVjYXVz ZSBsb29rdXBfY21kIHVwZGF0ZXMgdGhlIENNRF9OQU1FIHBvaW50ZXIuICAqLwotKyAgY21kX25h bWUgPSAiYXV0by1sb2FkLXNjcmlwdHMiOwotKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1l LCBzaG93bGlzdCwgIiIsIC0xLCAxKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNob3cgYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7Ci0rCi0rICBhZGRfY21kICgicHl0aG9uLXNjcmlwdHMi LCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywKLSsJICAgXygiUHJp bnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMuXG5cCi0r VXNhZ2U6IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtSRUdFWFBdIiksCi0rCSAgIGF1 dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGNtZCA9IGFkZF9pbmZvICgiYXV0 by1sb2FkLXNjcmlwdHMiLCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAotK1By aW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCBkZXBy ZWNhdGVkLiIpKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIik7Ci0gfQotIAotICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KLSAKLSB2b2lk Ci0tbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQotK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKLSB7Ci0gfQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhv bi9weXRob24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv cHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6 MjYuOTc5NDM3NDQ2ICswMjAwCi1AQCAtNDEsNyArNDEsNyBAQCBpbnQgYXBwbHlfdmFsX3ByZXR0 eV9wcmludGVyIChzdHJ1Y3QgdHlwCi0gCi0gdm9pZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaHRhYl90IGNvcGllZF90eXBlcyk7Ci0gCi0tdm9pZCBs b2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwot K3ZvaWQgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKTsKLSAKLSBpbnQgZ2RicHlfc2hvdWxkX3N0b3AgKHN0cnVjdCBicmVha3BvaW50 X29iamVjdCAqYnBfb2JqKTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTAxLTA0IDA5OjE3 OjQ1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk4MDQzNzQ0NCArMDIwMAot QEAgLTI0LDcgKzI0LDcgQEAKLSBnZGJfc3RhcnQKLSAKLSAjIGZvcmNlIHRoZSBoZWlnaHQgb2Yg dGhlIGRlYnVnZ2VyIHRvIGJlIHByZXR0eSBsYXJnZSBzbyBubyBwYWdlcnMgZ2V0IHVzZWQKLS1n ZGJfdGVzdF9ub19vdXRwdXQgInNldCBoZWlnaHQgNDAwIiAidGVzdCBzZXQgaGVpZ2h0IgotK2dk Yl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCA1MDAiICJ0ZXN0IHNldCBoZWlnaHQiCi0gCi0g IyB1c2UgYSBsYXJnZXIgZXhwZWN0IGlucHV0IGJ1ZmZlciBmb3IgbG9uZyBoZWxwIG91dHB1dHMu Ci0gIyB0ZXN0IGhlbHAgYWRkLXN5bWJvbC1maWxlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1v YmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKLUBA IC00MCw3ICs0MCw3IEBAIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdk Yl9sb2FkICR7YmluZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0t Z2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIu cHkuKiIKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKi8k e3Rlc3RmaWxlfS1nZGIucHkuKiIKLSAKLSBpZiAhW3J1bnRvX21haW5dIHsKLSAgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNl Y3Rpb24tc2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24t c2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAgLTUyLDEx ICs1MiwxMSBAQCBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSBnZGJfbG9h ZCAke2JpbmZpbGV9Ci0gCi0gIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgotLWdkYl90 ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBu YW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0Zmls ZX0ucHkuKiIKLSAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoaXMgdGltZS4KLS1nZGJfdGVzdCAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHku KmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHMgJHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxs IG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCi0gIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGF0 IG1hdGNoZXMgbm8gc2NyaXB0cy4KLS1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBu by1zY3JpcHQtbWF0Y2hlcy10aGlzIiBcCi0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwKLSAgICJObyBhdXRvLWxvYWQgc2Ny aXB0cyBtYXRjaGluZyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzLiIKLSAKLSBpZiAhW3J1bnRvX21h aW5dIHsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTBvZjIyLnBhdGNoIGIvZ2RiLWF1dG9s b2FkLTEwb2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTk2 OTgyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTEwb2YyMi5wYXRjaApAQCAtMCww ICsxLDE3MDQgQEAKK1twYXRjaCM0IDQvOF0gc2V0IGF1dG8tbG9hZCAqIG1haW4gcGFydAoraHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODguaHRtbAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMy5odG1sCisK KyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ5OjExCTEuMTQxMTIKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIC0xLDUgKzEs MTAxIEBACisgMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorIAorKwlhdXRvLWxvYWQ6IEltcGxlbWVudGF0aW9uLgorKwkqIE5FV1M6IE5ldyBk ZXNjcmlwdGlvbnMgZm9yICJpbmZvIGF1dG8tbG9hZCIsCisrCSJpbmZvIGF1dG8tbG9hZCBnZGIt c2NyaXB0cyIsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCisrCSJpbmZvIGF1dG8t bG9hZCBsb2NhbC1nZGJpbml0IiBhbmQgImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCisr CURlcHJlY2F0ZSAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkLXNjcmlw dHMgb258b2ZmIgorKwlhbmQgInNob3cgYXV0by1sb2FkLXNjcmlwdHMiLiAgTmV3IGRlc2NyaXB0 aW9uIGZvciAic2V0IGF1dG8tbG9hZCIsCisrCSJzaG93IGF1dG8tbG9hZCIsICJzZXQgYXV0by1s b2FkIGdkYi1zY3JpcHRzIiwKKysJInNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgInNldCBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAorKwkic2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMiLCAic2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiwKKysJInNob3cgYXV0by1sb2FkIGxv Y2FsLWdkYmluaXQiLCAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFuZAorKwkic2hvdyBh dXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KKysJKiBhdXRvLWxvYWQuYzogUmVtb3ZlIGluY2x1ZGUg cHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oLiAgQWRkIGluY2x1ZGVzCisrCWV4Y2VwdGlvbnMuaCwg Y2xpL2NsaS1zY3JpcHQuaCwgZ2RiY21kLmgsIGNsaS9jbGktZGVjb2RlLmggYW5kCisrCWNsaS9j bGktc2V0c2hvdy5oLgorKwkoR0RCX0FVVE9fRklMRV9OQU1FLCBzb3VyY2VfZ2RiX3NjcmlwdF9m b3Jfb2JqZmlsZSkKKysJKGF1dG9fbG9hZF9nZGJfc2NyaXB0cywgc2hvd19hdXRvX2xvYWRfZ2Ri X3NjcmlwdHMpOiBOZXcuCisrCShnZGJweV9nbG9iYWxfYXV0b19sb2FkKTogUmVuYW1lIHRvIC4u LgorKwkoZ2xvYmFsX2F1dG9fbG9hZCk6IC4uLiBoZXJlLgorKwkoYXV0b19sb2FkX2xvY2FsX2dk YmluaXQsIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKQorKwkoYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfbG9hZGVkLCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQorKwkoc2Ny aXB0X2xhbmd1YWdlX2dkYiwgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcuCisr CShzdHJ1Y3QgbG9hZGVkX3NjcmlwdCk6IE5ldyBmaWVsZCBsYW5ndWFnZS4KKysJKGhhc2hfbG9h ZGVkX3NjcmlwdF9lbnRyeSwgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSk6IENhbGN1bGF0ZSBhbHNv CisrCUxBTkdVQUdFLgorKwkobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbGFuZ3Vh Z2UuICBEcm9wIHJlZHVuZGFudAorKwllbnRyeS5mdWxsX3BhdGggaW5pdGlhbGl6YXRpb24uICBJ bml0aWFsaXplIGVudHJ5Lmxhbmd1YWdlIGFuZAorKwkoKnNsb3QpLT5sYW5ndWFnZS4KKysJKGF1 dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1 YWdlLgorKwlSZW1vdmUgdGhlIGNhbGwgb2YgbWF5YmVfYWRkX3NjcmlwdC4KKysJQ2FsbCBsYW5n dWFnZS0+c291cmNlX3NjcmlwdF9mb3Jfb2JqZmlsZS4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zv cl9vYmpmaWxlLCBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEpOgorKwlOZXcu CisrCShjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMpOiBBZGp1c3QgaXQgZm9yCisrCXN0cnVjdCBj b2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YS4KKysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNf cGF0dGVybl9ubCk6IE5ldyB2YXJpYWJsZS4KKysJKGluZm9fYXV0b19sb2FkX3NjcmlwdHMpOiBS ZW5hbWUgdG8gLi4uCisrCShhdXRvX2xvYWRfaW5mb19zY3JpcHRzKTogLi4uIGhlcmUsIGFkZCBw YXJhbWV0ZXIgbGFuZ3VhZ2UuICBBZGp1c3QgaXQKKysJZm9yIHN0cnVjdCBjb2xsZWN0X21hdGNo aW5nX3NjcmlwdHNfZGF0YS4KKysJKGluZm9fYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBpbmZvX2F1 dG9fbG9hZF9sb2NhbF9nZGJpbml0KQorKwkoc2V0X2F1dG9fbG9hZF9jbWQsIGF1dG9fbG9hZF9z ZXRfY21kbGlzdF9nZXQsIHNob3dfYXV0b19sb2FkX2NtZCkKKysJKGF1dG9fbG9hZF9zaG93X2Nt ZGxpc3RfZ2V0LCBpbmZvX2F1dG9fbG9hZF9jbWQpCisrCShhdXRvX2xvYWRfaW5mb19jbWRsaXN0 X2dldCk6IE5ldy4KKysJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE1vdmUgYWRkX2luZm8gb2Yg ImF1dG8tbG9hZC1zY3JpcHRzIiB0bworKwlweXRob24vcHktYXV0by1sb2FkLmMuICBOZXcgaW5z dGFsbG1lbnQgZm9yICJzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwKKysJImluZm8gYXV0by1s b2FkIGdkYi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgYW5kCisrCSJp bmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ii4KKysJKiBhdXRvLWxvYWQuaCAoc3RydWN0IHNj cmlwdF9sYW5ndWFnZSk6IE5ldy4KKysJKGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5hbWUg dG8gLi4uCisrCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCisrCShhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpCisrCShhdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQpOiBOZXcgZGVjbGFyYXRpb25zLgorKwkobWF5YmVfYWRk X3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIgbGFuZ3VhZ2UuCisrCShhdXRvX2xvYWRfb2JqZmlsZV9z Y3JpcHQpOiBDaGFuZ2UgcGFyYW1ldGVyIHN1ZmZpeCB0byBsYW5ndWFnZS4KKysJKGxvYWRfYXV0 b19zY3JpcHRzX2Zvcl9vYmpmaWxlLCBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwp CisrCShhdXRvX2xvYWRfaW5mb19zY3JpcHRzLCBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0KQor KwkoYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQsIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0 KTogTmV3CisrCWRlY2xhcmF0aW9ucy4KKysJKiBsaW51eC10aHJlYWQtZGIuYzogSW5jbHVkZSBh dXRvLWxvYWQuaCBhbmQgY3R5cGUuaC4KKysJKGF1dG9fbG9hZF90aHJlYWRfZGIsIHNob3dfYXV0 b19sb2FkX3RocmVhZF9kYik6IE5ldy4KKysJKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyk6IE5ldyBm aWVsZCBmaWxlbmFtZS4KKysJKGRlbGV0ZV90aHJlYWRfZGJfaW5mbyk6IENhbGwgeGZyZWUgZm9y IEZJTEVOQU1FLgorKwkodHJ5X3RocmVhZF9kYl9sb2FkKTogSW5pdGlhbGl6ZSBGSUxFTkFNRS4K KysJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXIsIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9t X2Rpcik6IFJldHVybgorKwlpZiAhQVVUT19MT0FEX1RIUkVBRF9EQi4KKysJKGluZm9fYXV0b19s b2FkX2xpYnRocmVhZF9kYl9jb21wYXJlLCBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIpOiBO ZXcuCisrCShfaW5pdGlhbGl6ZV90aHJlYWRfZGIpOiBJbnN0YWxsIGF1dG9fbG9hZF90aHJlYWRf ZGIKKysJYXMgInNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBhbmQgaW5zdGFsbCBpbmZvX2F1 dG9fbG9hZF9saWJ0aHJlYWRfZGIKKysJYXMgImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIu CisrCSogbWFpbi5jIChjYXB0dXJlZF9tYWluKTogUmVuYW1lIGdkYnB5X2dsb2JhbF9hdXRvX2xv YWQgdG8KKysJZ2xvYmFsX2F1dG9fbG9hZC4gIEluaXRpYWxpemUgQVVUT19MT0FEX0xPQ0FMX0dE QklOSVRfUEFUSE5BTUUgYW5kCisrCUFVVE9fTE9BRF9MT0NBTF9HREJJTklUX0xPQURFRC4KKysJ KHByaW50X2dkYl9oZWxwKTogRXh0ZW5kIHRoZSBoZWxwIGZvciAnbG9jYWwgaW5pdCBmaWxlJy4K KysJKiBweXRob24vcHktYXV0by1sb2FkLmM6IFJlbW92ZSBhIGNvbW1lbnQgYWJvdXQgZ2RiIHNj cmlwdHMgZXh0ZW5zaW9uLgorKwkoR0RCUFlfQVVUT19TRUNUSU9OX05BTUUpOiBFeHRlbmQgdGhl IGNvbW1lbnQgaXQgaXMgUHl0aG9uIHNwZWNpZmljLgorKwkoYXV0b19sb2FkX3NjcmlwdHMpOiBS ZW5hbWUgdG8gLi4uCisrCShhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMpOiAuLi4gaGVyZSwgdXBk YXRlIHRoZSBjb21tZW50LgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6 IE5ldyBkZWNsYXJhdGlvbi4KKysJKHNob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBzY3Jp cHRfbGFuZ3VhZ2VfcHl0aG9uKQorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmls ZSk6IE5ldy4KKysJKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBSZWZhY3RvciB0aGUgY29kZS4K KysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgorKwkoZ2Ri cHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZSwgdXBkYXRlIHRoZQor KwlhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgY2FsbGVyLCBkcm9wIEdEQlBZX0dMT0JBTF9BVVRP X0xPQUQgY2hlY2tpbmcuCisrCShpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IE5ldy4K KysJKGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkKTogTmV3IHZhcmlhYmxlcyBjbWQgYW5kIGNt ZF9uYW1lLgorKwlSZW5hbWUgInNldCBhdXRvLWxvYWQtc2NyaXB0cyIgdG8gInNldCBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHMiLgorKwlSZWdpc3RlciAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiBh cyBpdHMgZGVwcmVjYXRlZCBhbGlhcy4gIFJlZ2lzdGVyCisrCSJpbmZvIGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyIuICBSZWdpc3RlciAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgYXMKKysJaXRz IGRlcHJlY2F0ZWQgYWxpYXMuCisrCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IFJl bmFtZSB0byAuLi4KKysJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogLi4u IGhlcmUuCisrCSogcHl0aG9uL3B5dGhvbi5oIChsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSk6IFJlbmFtZSB0byAuLi4KKysJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl KTogLi4uIGhlcmUuCisrCisrMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorKworIAlhdXRvLWxvYWQ6IE1vdmUgZmlsZXMuCisgCSogTWFrZWZp bGUuaW4gKFNGSUxFUyk6IEFkZCBhdXRvLWxvYWQuYy4KKyAJKEhGSUxFU19OT19TUkNESVIpOiBB ZGQgYXV0by1sb2FkLmguCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4 IDAwOjQyOjUxLjIyNjY4MTA2OCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05F V1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMzU3Mzc2NDQgKzAyMDAKK0BAIC0yOCw2ICsyOCw0NSBA QAorICAgbm93IHNldCBhIGJyZWFrcG9pbnQgaW4gYnVpbGQvZ2NjL2V4cHIuYywgYnV0IG5vdAor ICAgYnVpbGQvbGliY3BwL2V4cHIuYy4KKyAKKysqIE5ldyBjb21tYW5kcworKworKyAgKiogImlu Zm8gYXV0by1sb2FkIiBzaG93cyBzdGF0dXMgb2YgYWxsIGtpbmRzIG9mIGF1dG8tbG9hZGVkIGZp bGVzLAorKyAgICAgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiBzaG93cyBzdGF0dXMgb2Yg YXV0by1sb2FkaW5nIEdEQiBjYW5uZWQKKysgICAgIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmaWxl cywgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgorKyAgICAgc2hvd3Mgc3RhdHVzIG9m IGF1dG8tbG9hZGluZyBQeXRob24gc2NyaXB0IGZpbGVzLAorKyAgICAgImluZm8gYXV0by1sb2Fk IGxvY2FsLWdkYmluaXQiIHNob3dzIHN0YXR1cyBvZiBsb2FkaW5nIGluaXQgZmlsZQorKyAgICAg KC5nZGJpbml0KSBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCAiaW5mbyBhdXRvLWxvYWQgbGli dGhyZWFkLWRiIiBzaG93cworKyAgICAgc3RhdHVzIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVh ZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkgbG9hZGluZy4KKysKKysgICoqICJpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYiCisrICAgICBhbmQg InNob3cgYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmRzIGhhdmUgYmVlbiBkZXByZWNhdGVkLCB1 c2UgdGhlaXIKKysgICAgICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsICJzZXQgYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZiIKKysgICAgIGFuZCAic2hvdyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMiIGNvdW50ZXJwYXJ0cyBpbnN0ZWFkLgorKworKyogTmV3IG9wdGlvbnMK KysKKytzZXQgYXV0by1sb2FkIG9mZgorKyAgRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHku CisrCisrc2hvdyBhdXRvLWxvYWQKKysgIFNob3cgYXV0by1sb2FkaW5nIHNldHRpbmcgb2YgYWxs IGtpbmRzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLgorKworK3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKKysgIENvbnRyb2wgYXV0by1s b2FkaW5nIG9mIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVzLgorKworK3Nl dCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMKKysgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHQgZmlsZXMu CisrCisrc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IG9ufG9mZgorK3Nob3cgYXV0by1sb2Fk IGxvY2FsLWdkYmluaXQKKysgIENvbnRyb2wgbG9hZGluZyBvZiBpbml0IGZpbGUgKC5nZGJpbml0 KSBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5LgorKworK3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRi IG9ufG9mZgorK3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorKyAgQ29udHJvbCBhdXRvLWxv YWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFy eS4KKysKKyAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJ TEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0NDoy Ni45NTA0Mzc1MjAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQu YwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAorQEAgLTI3LDE5ICsyNyw5MiBA QAorICNpbmNsdWRlICJjb21tYW5kLmgiCisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1 ZGUgIm9iamZpbGVzLmgiCistI2luY2x1ZGUgInB5dGhvbi9weXRob24taW50ZXJuYWwuaCIKKysj aW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorKyNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIgorKyNp bmNsdWRlICJnZGJjbWQuaCIKKysjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKKysjaW5jbHVk ZSAiY2xpL2NsaS1zZXRzaG93LmgiCisrCisrLyogVGhlIHN1ZmZpeCBvZiBwZXItb2JqZmlsZSBz Y3JpcHRzIHRvIGF1dG8tbG9hZCBhcyBub24tUHl0aG9uIGNvbW1hbmQgZmlsZXMuCisrICAgRS5n LiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5n ZGIuICAqLworKyNkZWZpbmUgR0RCX0FVVE9fRklMRV9OQU1FICItZ2RiLmdkYiIKKysKKytzdGF0 aWMgdm9pZCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIEZJTEUgKmZpbGUsCisrCQkJCQkgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisr LyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9m IEdEQl9BVVRPX0ZJTEVfTkFNRQorKyAgIHNjcmlwdHM6CisrICAgc2V0IGF1dG8tbG9hZCBnZGIt c2NyaXB0cyBvbnxvZmYKKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBh c3NvY2lhdGVkIHNjcmlwdHMgd2hlbiBhbiBvYmpmaWxlCisrICAgaXMgb3BlbmVkLCBmYWxzZSBv dGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgYXV0b19sb2FkX2dkYl9zY3JpcHRzID0gMTsKKysK KysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9nZGJfc2NyaXB0cyBjb25maWd1 cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2dk Yl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnBy aW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMg b2YgY29tbWFuZHMgIgorKwkJCSAgICAic2NyaXB0cyBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVl KTsKKyt9CisgCisgLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1s b2FkaW5nLgorICAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBj b2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCisgICAgZmFsc2Ugb3RoZXJ3aXNlLgorIAor LSAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0 IGJlIHRydWUgdG8gZW5hYmxlCisrICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnbG9iYWxf YXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKKyAgICBhdXRvLWxvYWRpbmcuCisgCisg ICAgVGhpcyBmbGFnIGV4aXN0cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcg ZHVyaW5nIHN0YXJ0LXVwCisgICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFk OyBpdCBtYXkgYXVnbWVudCB0aGUgc2VhcmNoIGRpcmVjdG9yaWVzCisgICAgdXNlZCB0byBmaW5k IHRoZSBzY3JpcHRzLiAgKi8KKy1pbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisraW50 IGdsb2JhbF9hdXRvX2xvYWQgPSAxOworKworKy8qIEF1dG8tbG9hZCAuZ2RiaW5pdCBmaWxlIGZy b20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5PyAgKi8KKytpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmlu aXQgPSAxOworKworKy8qIEFic29sdXRlIHBhdGhuYW1lIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9y eSAuZ2RiaW5pdCwgaWYgaXQgZXhpc3RzLiAgKi8KKytjaGFyICphdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9wYXRobmFtZSA9IE5VTEw7CisrCisrLyogQm9vbGVhbiB2YWx1ZSBpZiBBVVRPX0xPQURf TE9DQUxfR0RCSU5JVF9QQVRITkFNRSBoYXMgYmVlbiBsb2FkZWQuICAqLworK2ludCBhdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAwOworKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0 aGUgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisr Cisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1Y3QgdWlf ZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxl LCBfKCJBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCAiCisrCQkJ ICAgICJkaXJlY3RvcnkgaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworKy8qIERl ZmluaXRpb24gb2Ygc2NyaXB0IGxhbmd1YWdlIGZvciBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBj b21tYW5kcy4gICovCisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ugc2Ny aXB0X2xhbmd1YWdlX2dkYgorKyAgPSB7IEdEQl9BVVRPX0ZJTEVfTkFNRSwgc291cmNlX2dkYl9z Y3JpcHRfZm9yX29iamZpbGUgfTsKKysKKytzdGF0aWMgdm9pZAorK3NvdXJjZV9nZGJfc2NyaXB0 X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkg ICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqcHNwYWNlX2luZm87CisrICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBl OworKworKyAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisrICAgICBjYW4gcHJpbnQgaXQuICAqLworKyAgcHNw YWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50 X3Byb2dyYW1fc3BhY2UpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVu YW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKworKyAgVFJZX0NBVENIIChl LCBSRVRVUk5fTUFTS19BTEwpCisrICAgIHsKKysgICAgICBzY3JpcHRfZnJvbV9maWxlIChmaWxl LCBmaWxlbmFtZSk7CisrICAgIH0KKysgIGV4Y2VwdGlvbl9wcmludCAoZ2RiX3N0ZGVyciwgZSk7 CisrfQorIAorIC8qIEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMs IG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2FkCisgICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUn cyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUgdGltZXMsCitAQCAtNjIs OSArMTM1LDEyIEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0CisgeworICAgLyogTmFtZSBhcyBwcm92 aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCisgICBjb25zdCBjaGFyICpuYW1lOworKworICAgLyog RnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3YXMgb3Ro ZXJ3aXNlCisgICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0 aDsKKysKKysgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlOworIH07Cisg CisgLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworQEAgLTEwOSw3ICsxODUsNyBA QCBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhCisgeworICAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOworIAorLSAgcmV0dXJuIGh0YWJfaGFzaF9z dHJpbmcgKGUtPm5hbWUpOworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpIF4g aHRhYl9oYXNoX3BvaW50ZXIgKGUtPmxhbmd1YWdlKTsKKyB9CisgCisgLyogRXF1YWxpdHkgZnVu Y3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworQEAgLTEyMCw3ICsxOTYsNyBA QCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjCisgICBjb25zdCBzdHJ1 Y3QgbG9hZGVkX3NjcmlwdCAqZWEgPSBhOworICAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQg KmViID0gYjsKKyAKKy0gIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsK KysgIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMCAmJiBlYS0+bGFuZ3Vh Z2UgPT0gZWItPmxhbmd1YWdlOworIH0KKyAKKyAvKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0 cmFjayBsb2FkZWQgc2NyaXB0cy4KK0BAIC0xNTYsMjAgKzIzMiwyMSBAQCBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzCisgICByZXR1cm4gaW5mbzsKKyB9CisgCistLyog QWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9Q QVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuCistICAgVGhlIHJlc3VsdCBp cyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwor Ky8qIEFkZCBzY3JpcHQgTkFNRSBpbiBMQU5HVUFHRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9J TkZPLgorKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAg VGhlIHJlc3VsdCBpcworKyAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUg aGFzaCB0YWJsZS4gICovCisgCisgaW50CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGNvbnN0IGNoYXIgKm5hbWUsCistCQkgIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCkKKyttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKKysJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqZnVsbF9wYXRoLAorKwkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5n dWFnZSkKKyB7CisgICBzdHJ1Y3QgaHRhYiAqaHRhYiA9IHBzcGFjZV9pbmZvLT5sb2FkZWRfc2Ny aXB0czsKKyAgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqc2xvdCwgZW50cnk7CisgICBpbnQgaW5f aGFzaF90YWJsZTsKKyAKKyAgIGVudHJ5Lm5hbWUgPSBuYW1lOworLSAgZW50cnkuZnVsbF9wYXRo ID0gZnVsbF9wYXRoOworKyAgZW50cnkubGFuZ3VhZ2UgPSBsYW5ndWFnZTsKKyAgIHNsb3QgPSAo c3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElO U0VSVCk7CisgICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKKyAKK0BAIC0xOTQsNiAr MjcxLDcgQEAgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhYworIAl9Cisg ICAgICAgZWxzZQorIAkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOworKyAgICAgICgqc2xvdCkt Pmxhbmd1YWdlID0gbGFuZ3VhZ2U7CisgICAgIH0KKyAKKyAgIHJldHVybiBpbl9oYXNoX3RhYmxl OworQEAgLTIxNiwxMCArMjk0LDEyIEBAIGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKKyAg ICAgfQorIH0KKyAKKy0vKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVk IHdpdGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCisrLyogTG9vayBmb3IgdGhlIGF1dG8tbG9h ZCBzY3JpcHQgaW4gTEFOR1VBR0UgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQKKysg ICBpdC4gICovCisgCisgdm9pZAorLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKythdXRvX2xvYWRfb2JqZmlsZV9z Y3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCSAgY29uc3Qgc3RydWN0IHNjcmlw dF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisgeworICAgY2hhciAqcmVhbG5hbWU7CisgICBjaGFyICpm aWxlbmFtZSwgKmRlYnVnZmlsZTsKK0BAIC0yMjksOSArMzA5LDkgQEAgYXV0b19sb2FkX29iamZp bGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAorICAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGgg KG9iamZpbGUtPm5hbWUpOworICAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7CistICBmaWxlbmFt ZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOworKyAgZmlsZW5hbWUgPSB4 bWFsbG9jIChsZW4gKyBzdHJsZW4gKGxhbmd1YWdlLT5zdWZmaXgpICsgMSk7CisgICBtZW1jcHkg KGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKKy0gIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1 ZmZpeCk7CisrICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBsYW5ndWFnZS0+c3VmZml4KTsKKyAK KyAgIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZmlsZW5hbWUpOworICAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgcmVhbG5hbWUpOworQEAgLTI2OSwyNyArMzQ5LDMzIEBAIGF1dG9fbG9h ZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKKyAKKyAgIGlmIChpbnB1dCkKKyAgICAg eworLSAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworLQor ICAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKKyAKKy0gICAgICAvKiBBZGQgdGhp cyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IgorLQkgY2FuIHByaW50IGl0LiAgKi8KKy0gICAgICBwc3BhY2VfaW5mbyA9CistCWdldF9hdXRv X2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Cist ICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxl KTsKKy0KKyAgICAgICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3Qg Y2hlY2sgZm9yIHdoZXRoZXIgdGhlCisgCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxl LCBhbmQgYWx3YXlzIGxvYWQgaXQuCisgCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2Qg ZXZlciBsb2FkIGl0IHR3aWNlLAorIAkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRv IGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKKyAJIGxvYWRzIGFueXdheS4gICovCistICAg ICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1 Z2ZpbGUpOworKyAgICAgIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpm aWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKyAgICAgfQorIAorICAgZG9fY2xlYW51cHMgKGNsZWFu dXBzKTsKKyB9CisgCisrLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JKRklM RS4gICovCisrCisrdm9pZAorK2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBpZiAoIWdsb2JhbF9hdXRvX2xvYWQpCisrICAgIHJl dHVybjsKKysKKysgIGlmIChhdXRvX2xvYWRfZ2RiX3NjcmlwdHMpCisrICAgIGF1dG9fbG9hZF9v YmpmaWxlX3NjcmlwdCAob2JqZmlsZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKworKyAgZ2Ri cHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworK30KKysKKyAvKiBU aGlzIGlzIGEgbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlw dHMuCisgCisgICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9y dGVkLgorQEAgLTMxNCw2ICs0MDAsMTMgQEAgYXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqbworIHR5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmxvYWRlZF9zY3JpcHRf cHRyOworIERFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOworIAorK3N0cnVjdCBjb2xsZWN0 X21hdGNoaW5nX3NjcmlwdHNfZGF0YQorK3sKKysgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoq c2NyaXB0c19wOworKworKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7 CisrfTsKKysKKyAvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCisgICAg Q29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KKyAKK0BAIC0z MjEsMTAgKzQxNCwxMCBAQCBzdGF0aWMgaW50CisgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2 b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKKyB7CisgICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2Ny aXB0ID0gKnNsb3Q7CistICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0g aW5mbzsKKysgIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSAqZGF0YSA9IGlu Zm87CisgCistICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKKy0gICAgVkVDX3NhZmVfcHVz aCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKKysgIGlmIChzY3Jp cHQtPmxhbmd1YWdlID09IGRhdGEtPmxhbmd1YWdlICYmIHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkp CisrICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqZGF0YS0+c2NyaXB0c19w LCBzY3JpcHQpOworIAorICAgcmV0dXJuIDE7CisgfQorQEAgLTM2NiwxMCArNDU5LDE4IEBAIHNv cnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY28KKyAgIHJldHVybiBGSUxFTkFN RV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOworIH0KKyAKKy0vKiAiaW5mbyBhdXRvLWxvYWQtc2Ny aXB0cyIgY29tbWFuZC4gICovCisrLyogU3BlY2lhbCBpbnRlcm5hbCBHREIgdmFsdWUgb2YgYXV0 b19sb2FkX2luZm9fc2NyaXB0cydzIFBBVFRFUk4gaWRlbnRpZnkKKysgICB0aGUgImluZm8gYXV0 by1sb2FkIFhYWCIgY29tbWFuZCBoYXMgYmVlbiBleGVjdXRlZCB0aHJvdWdoIHRoZSBnZW5lcmFs CisrICAgImluZm8gYXV0by1sb2FkIiBpbnZvY2F0aW9uLiAgRXh0cmEgbmV3bGluZSB3aWxsIGJl IHByaW50ZWQgaWYgbmVlZGVkLiAgKi8KKytjaGFyIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0 dGVybl9ubFtdID0gIiI7CisrCisrLyogSW1wbGVtZW50YXRpb24gZm9yICJpbmZvIGF1dG8tbG9h ZCBnZGItc2NyaXB0cyIKKysgICAoYW5kICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIp LiAgTGlzdCBzY3JpcHRzIGluIExBTkdVQUdFIG1hdGNoaW5nCisrICAgUEFUVEVSTi4gIEZST01f VFRZIGlzIHRoZSB1c3VhbCBHREIgYm9vbGVhbiBmb3IgdXNlciBpbnRlcmFjdGl2aXR5LiAgKi8K KyAKKy1zdGF0aWMgdm9pZAorLWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4s IGludCBmcm9tX3R0eSkKKyt2b2lkCisrYXV0b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAqcGF0 dGVybiwgaW50IGZyb21fdHR5LAorKwkJCWNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxh bmd1YWdlKQorIHsKKyAgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKyAg IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworQEAgLTQwMiwxNCAr NTAzLDIyIEBAIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGkKKyAKKyAg IGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAh PSBOVUxMKQorICAgICB7CisrICAgICAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19k YXRhIGRhdGEgPSB7ICZzY3JpcHRzLCBsYW5ndWFnZSB9OworKworICAgICAgIGltbWVkaWF0ZV9x dWl0Kys7CisgICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9w dXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KKyAgICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXpl IChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCistCQkJICAgICAgY29sbGVjdF9tYXRjaGlu Z19zY3JpcHRzLCAmc2NyaXB0cyk7CisrCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRz LCAmZGF0YSk7CisgICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKyAgICAgfQorIAorICAgbnJfc2Ny aXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKKysKKysgIC8q IFRhYmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAiZ2RiLXNjcmlwdHM6ICAi IHdvdWxkIG5vdCBtYXRjaAorKyAgICAgaXRzIGNvbHVtbnMuICAqLworKyAgaWYgKG5yX3Njcmlw dHMgPiAwICYmIHBhdHRlcm4gPT0gYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sKQor KyAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworKworICAgbWFrZV9jbGVhbnVwX3VpX291 dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAorIAkJCQkgICAgICAgIkF1 dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKKyAKK0BAIC00NDEsNiArNTUwLDI5IEBAIGluZm9fYXV0 b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGkKKyAgICAgfQorIH0KKyAKKysvKiBXcmFw cGVyIGZvciAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLiAgKi8KKysKKytzdGF0aWMgdm9p ZAorK2luZm9fYXV0b19sb2FkX2dkYl9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90 dHkpCisreworKyAgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAocGF0dGVybiwgZnJvbV90dHksICZz Y3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKKyt9CisrCisrLyogSW1wbGVtZW50ICdpbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0Jy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9s b2NhbF9nZGJpbml0IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgaWYgKGF1dG9f bG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID09IE5VTEwpCisrICAgIHByaW50Zl9maWx0ZXJl ZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSB3YXMgbm90IGZvdW5kLlxuIikpOworKyAgZWxzZSBp ZiAoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkKQorKyAgICBwcmludGZfZmlsdGVyZWQg KF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgXCIlc1wiIGhhcyBiZWVuIGxvYWRlZC5cbiIpLAorKwkJ ICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSk7CisrICBlbHNlCisrICAgIHBy aW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIG5vdCBiZWVu IGxvYWRlZC5cbiIpLAorKwkJICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSk7 CisrfQorKworIC8qIFJldHVybiBub24temVybyBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdf UFJJTlRFRCBvZiBQU1BBQ0VfSU5GTyB3YXMgdW5zZXQKKyAgICBiZWZvcmUgY2FsbGluZyB0aGlz IGZ1bmN0aW9uLiAgQWx3YXlzIHNldCBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAor ICAgIG9mIFBTUEFDRV9JTkZPLiAgKi8KK0BAIC00NTUsNiArNTg3LDEzMiBAQCBzY3JpcHRfbm90 X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhCisgICByZXR1cm4gcmV0dmFsOworIH0KKyAK KysvKiBUaGUgb25seSB2YWxpZCAic2V0IGF1dG8tbG9hZCIgYXJndW1lbnQgaXMgb2ZmfDB8bm98 ZGlzYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzZXRfYXV0b19sb2FkX2NtZCAoY2hhciAq YXJncywgaW50IGZyb21fdHR5KQorK3sKKysgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpsaXN0 OworKyAgc2l6ZV90IGxlbmd0aDsKKysKKysgIC8qIFNlZSBwYXJzZV9iaW5hcnlfb3BlcmF0aW9u IGluIHVzZSBieSB0aGUgc3ViLWNvbW1hbmRzLiAgKi8KKysKKysgIGxlbmd0aCA9IGFyZ3MgPyBz dHJsZW4gKGFyZ3MpIDogMDsKKysKKysgIHdoaWxlIChsZW5ndGggPiAwICYmIChhcmdzW2xlbmd0 aCAtIDFdID09ICcgJyB8fCBhcmdzW2xlbmd0aCAtIDFdID09ICdcdCcpKQorKyAgICBsZW5ndGgt LTsKKysKKysgIGlmIChsZW5ndGggPT0gMCB8fCAoc3RybmNtcCAoYXJncywgIm9mZiIsIGxlbmd0 aCkgIT0gMAorKwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgIjAiLCBsZW5ndGgpICE9IDAKKysJ CSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICJubyIsIGxlbmd0aCkgIT0gMAorKwkJICAgICAgJiYg c3RybmNtcCAoYXJncywgImRpc2FibGUiLCBsZW5ndGgpICE9IDApKQorKyAgICBlcnJvciAoXygi VmFsaWQgaXMgb25seSBnbG9iYWwgJ3NldCBhdXRvLWxvYWQgbm8nOyAiCisrCSAgICAgIm90aGVy d2lzZSBjaGVjayB0aGUgYXV0by1sb2FkIHN1Yi1jb21tYW5kcy4iKSk7CisrCisrICBmb3IgKGxp c3QgPSAqYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0g bGlzdC0+bmV4dCkKKysgICAgaWYgKGxpc3QtPnZhcl90eXBlID09IHZhcl9ib29sZWFuKQorKyAg ICAgIHsKKysJZ2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9PSBzZXRfY21kKTsKKysJZG9fc2V0c2hv d19jb21tYW5kIChhcmdzLCBmcm9tX3R0eSwgbGlzdCk7CisrICAgICAgfQorK30KKysKKysvKiBJ bml0aWFsaXplICJzZXQgYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCByZXR1cm4gaXQu ICAqLworKworK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCisrYXV0b19sb2FkX3NldF9jbWRs aXN0X2dldCAodm9pZCkKKyt7CisrICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJl dHZhbDsKKysKKysgIGlmIChyZXR2YWwgPT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJh dXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwgc2V0X2F1dG9fbG9hZF9jbWQsIF8oIlwKKytB dXRvLWxvYWRpbmcgc3BlY2lmaWMgc2V0dGluZ3MuXG5cCisrQ29uZmlndXJlIHZhcmlvdXMgYXV0 by1sb2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCisrYXV0b21hdGljIGxvYWRpbmcg b2YgUHl0aG9uIHNjcmlwdHMuIiksCisrCQkgICAgJnJldHZhbCwgInNldCBhdXRvLWxvYWQgIiwK KysJCSAgICAxLyphbGxvdy11bmtub3duKi8sICZzZXRsaXN0KTsKKysKKysgIHJldHVybiAmcmV0 dmFsOworK30KKysKKysvKiBDb21tYW5kICJzaG93IGF1dG8tbG9hZCIgZGlzcGxheXMgc3VtbWFy eSBvZiBhbGwgdGhlIGN1cnJlbnQKKysgICAic2hvdyBhdXRvLWxvYWQgIiBzZXR0aW5ncy4gICov CisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSkKKyt7CisrICBjbWRfc2hvd19saXN0ICgqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9n ZXQgKCksIGZyb21fdHR5LCAiIik7CisrfQorKworKy8qIEluaXRpYWxpemUgInNob3cgYXV0by1s b2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCByZXR1cm4gaXQuICAqLworKworK3N0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICoqCisrYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpCisrewor KyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpyZXR2YWw7CisrCisrICBpZiAocmV0 dmFsID09IE5VTEwpCisrICAgIGFkZF9wcmVmaXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFp bnRlbmFuY2UsIHNob3dfYXV0b19sb2FkX2NtZCwgXygiXAorK1Nob3cgYXV0by1sb2FkaW5nIHNw ZWNpZmljIHNldHRpbmdzLlxuXAorK1Nob3cgY29uZmlndXJhdGlvbiBvZiB2YXJpb3VzIGF1dG8t bG9hZC1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhc1xuXAorK2F1dG9tYXRpYyBsb2FkaW5nIG9m IFB5dGhvbiBzY3JpcHRzLiIpLAorKwkJICAgICZyZXR2YWwsICJzaG93IGF1dG8tbG9hZCAiLAor KwkJICAgIDAvKmFsbG93LXVua25vd24qLywgJnNob3dsaXN0KTsKKysKKysgIHJldHVybiAmcmV0 dmFsOworK30KKysKKysvKiBDb21tYW5kICJpbmZvIGF1dG8tbG9hZCIgZGlzcGxheXMgd2hldGhl ciB0aGUgdmFyaW91cyBhdXRvLWxvYWQgZmlsZXMgaGF2ZQorKyAgIGJlZW4gbG9hZGVkLiAgVGhp cyBpcyByZWltcGxlbWVudGF0aW9uIG9mIGNtZF9zaG93X2xpc3Qgd2hpY2ggaW5zZXJ0cworKyAg IG5ld2xpbmVzIGF0IHByb3BlciBwbGFjZXMuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19h dXRvX2xvYWRfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmxpc3Q7CisrICBzdHJ1Y3QgY2xlYW51cCAqaW5mb2xpc3RfY2hhaW47 CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrCisrICBpbmZvbGlz dF9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgImlu Zm9saXN0Iik7CisrCisrICBmb3IgKGxpc3QgPSAqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQg KCk7IGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpCisrICAgIHsKKysgICAgICBzdHJ1 Y3QgY2xlYW51cCAqb3B0aW9uX2NoYWluCisrCT0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9i ZWdpbl9lbmQgKHVpb3V0LCAib3B0aW9uIik7CisrCisrICAgICAgZ2RiX2Fzc2VydCAoIWxpc3Qt PnByZWZpeGxpc3QpOworKyAgICAgIGdkYl9hc3NlcnQgKGxpc3QtPnR5cGUgPT0gbm90X3NldF9j bWQpOworKworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibmFtZSIsIGxpc3Qt Pm5hbWUpOworKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIjogICIpOworKyAgICAgIGNtZF9m dW5jIChsaXN0LCBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwsIGZyb21fdHR5KTsK KysKKysgICAgICAvKiBDbG9zZSB0aGUgdHVwbGUuICAqLworKyAgICAgIGRvX2NsZWFudXBzIChv cHRpb25fY2hhaW4pOworKyAgICB9CisrCisrICAvKiBDbG9zZSB0aGUgdHVwbGUuICAqLworKyAg ZG9fY2xlYW51cHMgKGluZm9saXN0X2NoYWluKTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSAiaW5m byBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9p ZCkKKyt7CisrICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysg IGlmIChyZXR2YWwgPT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBj bGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9jbWQsIF8oIlwKKytQcmludCBjdXJyZW50IHN0YXR1 cyBvZiBhdXRvLWxvYWRlZCBmaWxlcy5cblwKKytQcmludCB3aGV0aGVyIHZhcmlvdXMgZmlsZXMg bGlrZSBQeXRob24gc2NyaXB0cyBvciAuZ2RiaW5pdCBmaWxlcyBoYXZlIGJlZW5cblwKKytmb3Vu ZCBhbmQvb3IgbG9hZGVkLiIpLAorKwkJICAgICZyZXR2YWwsICJpbmZvIGF1dG8tbG9hZCAiLAor KwkJICAgIDAvKmFsbG93LXVua25vd24qLywgJmluZm9saXN0KTsKKysKKysgIHJldHVybiAmcmV0 dmFsOworK30KKysKKyB2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7CisgCisgdm9p ZAorQEAgLTQ2NSw4ICs3MjMsMzggQEAgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorIAor ICAgb2JzZXJ2ZXJfYXR0YWNoX25ld19vYmpmaWxlIChhdXRvX2xvYWRfbmV3X29iamZpbGUpOwor IAorLSAgYWRkX2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCistCSAgICBpbmZvX2F1dG9fbG9h ZF9zY3JpcHRzLAorLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2Fk ZWQgc2NyaXB0cy5cblwKKy1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIp KTsKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiZ2RiLXNjcmlwdHMiLCBjbGFzc19zdXBw b3J0LAorKwkJCSAgICZhdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIF8oIlwKKytFbmFibGUgb3IgZGlz YWJsZSBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRz LiIpLCBfKCJcCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgZW5hYmxlZC4iKSwKKysJCQkgICBfKCJcCisrSWYgZW5h YmxlZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRl YnVnZ2VyIHJlYWRzXG5cCisrYW4gZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS5cblwKKytU aGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVy aW9ycy4iKSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cywKKysJCQkg ICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAorKwkJCSAgIGF1dG9fbG9hZF9zaG93X2Nt ZGxpc3RfZ2V0ICgpKTsKKysKKysgIGFkZF9jbWQgKCJnZGItc2NyaXB0cyIsIGNsYXNzX2luZm8s IGluZm9fYXV0b19sb2FkX2dkYl9zY3JpcHRzLAorKwkgICBfKCJQcmludCB0aGUgbGlzdCBvZiBh dXRvbWF0aWNhbGx5IGxvYWRlZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuXG5cCisrVXNhZ2U6IGlu Zm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtSRUdFWFBdIiksCisrCSAgIGF1dG9fbG9hZF9pbmZv X2NtZGxpc3RfZ2V0ICgpKTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibG9jYWwt Z2RiaW5pdCIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 LCBfKCJcCisrRW5hYmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlw dCBpbiBjdXJyZW50IGRpcmVjdG9yeS4iKSwgXygiXAorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRp bmcgLmdkYmluaXQgc2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGVuYWJsZWQuIiksCisr CQkJICAgXygiXAorK0lmIGVuYWJsZWQsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgYXJl IGxvYWRlZCB3aGVuIGRlYnVnZ2VyIHN0YXJ0c1xuXAorK2Zyb20gLmdkYmluaXQgZmlsZSBpbiBj dXJyZW50IGRpcmVjdG9yeS4gIFN1Y2ggZmlsZXMgYXJlIGRlcHJlY2F0ZWQsXG5cCisrdXNlIGEg c2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBpbmZlcmlvciBleGVjdXRhYmxlIGZpbGUgaW5zdGVhZC5c blwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVk IGluZmVyaW9ycy4iKSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0 LAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2Fk X3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImxvY2FsLWdkYmluaXQiLCBj bGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0LAorKwkgICBfKCJQcmludCB3 aGV0aGVyIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxu XAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCisrCSAgIGF1dG9fbG9h ZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTUxNDM3NTE3ICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny41 NTYwNzk3ODAgKzAyMDAKK0BAIC0yMiwxNSArMjIsMzYgQEAKKyAKKyBzdHJ1Y3QgcHJvZ3JhbV9z cGFjZTsKKyAKKy1leHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQ7Cisrc3RydWN0IHNj cmlwdF9sYW5ndWFnZQorK3sKKysgIGNvbnN0IGNoYXIgKnN1ZmZpeDsKKysKKysgIHZvaWQgKCpz b3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUg KmZpbGUsCisrCQkJCSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOworK307CisrCisrZXh0ZXJu IGludCBnbG9iYWxfYXV0b19sb2FkOworKworK2V4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dk YmluaXQ7CisrZXh0ZXJuIGNoYXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lOwor K2V4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkOworIAorIGV4dGVybiBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKyAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2Rh dGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOworIGV4dGVybiBp bnQgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8sCistCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgp OworKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJ CSAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworIGV4dGVybiB2 b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCist CQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CisrCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBz Y3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKKytleHRlcm4gdm9pZCBsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIGV4dGVybiBpbnQKKyAg IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8pOworK2V4dGVybiBjaGFyIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNf cGF0dGVybl9ubFtdOworK2V4dGVybiB2b2lkIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKGNoYXIg KnBhdHRlcm4sIGludCBmcm9tX3R0eSwKKysJCQkJICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFu Z3VhZ2UgKmxhbmd1YWdlKTsKKysKKytleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiph dXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKytleHRlcm4gc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7CisrZXh0ZXJuIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQp OworIAorICNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTAxLTA0IDA5OjE3OjA1LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5j CTIwMTItMDQtMTggMDA6NDY6NDcuNTU3MDc5Nzc3ICswMjAwCitAQCAtNDAsOCArNDAsMTAgQEAK KyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAjaW5jbHVkZSAibGludXgtbmF0LmgiCisgI2luY2x1 ZGUgImxpbnV4LXByb2Nmcy5oIgorKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKKyAKKyAjaW5jbHVk ZSA8c2lnbmFsLmg+CisrI2luY2x1ZGUgPGN0eXBlLmg+CisgCisgI2lmZGVmIEhBVkVfR05VX0xJ QkNfVkVSU0lPTl9ICisgI2luY2x1ZGUgPGdudS9saWJjLXZlcnNpb24uaD4KK0BAIC03NSw2ICs3 NywyMSBAQAorIAorIHN0YXRpYyBjaGFyICpsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGg7CisgCisr LyogU2V0IHRvIG5vbi16ZXJvIGlmIHRocmVhZF9kYiBhdXRvLWxvYWRpbmcgaXMgZW5hYmxlZAor KyAgIGJ5IHRoZSAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGNvbW1hbmQuICAqLworK3N0 YXRpYyBpbnQgYXV0b19sb2FkX3RocmVhZF9kYiA9IDE7CisrCisrLyogInNob3ciIGNvbW1hbmQg Zm9yIHRoZSBhdXRvX2xvYWRfdGhyZWFkX2RiIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwor KworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiIChzdHJ1Y3QgdWlfZmls ZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMs IGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1 dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgIgorKwkJCSAgICAi aXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworIHN0YXRpYyB2b2lkCisgc2V0X2xp YnRocmVhZF9kYl9zZWFyY2hfcGF0aCAoY2hhciAqaWdub3JlZCwgaW50IGZyb21fdHR5LAorIAkJ CSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQorQEAgLTExOSw2ICsxMzYsMTAgQEAg c3RydWN0IHRocmVhZF9kYl9pbmZvCisgICAvKiBIYW5kbGUgZnJvbSBkbG9wZW4gZm9yIGxpYnRo cmVhZF9kYi5zby4gICovCisgICB2b2lkICpoYW5kbGU7CisgCisrICAvKiBBYnNvbHV0ZSBwYXRo bmFtZSBmcm9tIGdkYl9yZWFscGF0aCB0byBkaXNrIGZpbGUgdXNlZCBmb3IgZGxvcGVuLWluZwor KyAgICAgSEFORExFLiAgSXQgbWF5IGJlIE5VTEwgZm9yIHN5c3RlbSBsaWJyYXJ5LiAgKi8KKysg IGNoYXIgKmZpbGVuYW1lOworKworICAgLyogU3RydWN0dXJlIHRoYXQgaWRlbnRpZmllcyB0aGUg Y2hpbGQgcHJvY2VzcyBmb3IgdGhlCisgICAgICA8cHJvY19zZXJ2aWNlLmg+IGludGVyZmFjZS4g ICovCisgICBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSBwcm9jX2hhbmRsZTsKK0BAIC0yNDgsNiArMjY5 LDggQEAgZGVsZXRlX3RocmVhZF9kYl9pbmZvIChpbnQgcGlkKQorICAgaWYgKGluZm8tPmhhbmRs ZSAhPSBOVUxMKQorICAgICBkbGNsb3NlIChpbmZvLT5oYW5kbGUpOworIAorKyAgeGZyZWUgKGlu Zm8tPmZpbGVuYW1lKTsKKysKKyAgIGlmIChpbmZvX3ByZXYpCisgICAgIGluZm9fcHJldi0+bmV4 dCA9IGluZm8tPm5leHQ7CisgICBlbHNlCitAQCAtODA3LDYgKzgzMCwxMCBAQCB0cnlfdGhyZWFk X2RiX2xvYWQgKGNvbnN0IGNoYXIgKmxpYnJhcnkpCisgCisgICBpbmZvID0gYWRkX3RocmVhZF9k Yl9pbmZvIChoYW5kbGUpOworIAorKyAgLyogRG8gbm90IHNhdmUgc3lzdGVtIGxpYnJhcnkgbmFt ZSwgdGhhdCBvbmUgaXMgYWx3YXlzIHRydXN0ZWQuICAqLworKyAgaWYgKHN0cmNociAobGlicmFy eSwgJy8nKSAhPSBOVUxMKQorKyAgICBpbmZvLT5maWxlbmFtZSA9IGdkYl9yZWFscGF0aCAobGli cmFyeSk7CisrCisgICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkXzEgKGluZm8pKQorICAgICByZXR1 cm4gMTsKKyAKK0BAIC04NTYsNiArODgzLDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRp ciAodm9pZCkKKyB7CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqOworIAorKyAgaWYgKCFhdXRvX2xv YWRfdGhyZWFkX2RiKQorKyAgICByZXR1cm4gMDsKKysKKyAgIEFMTF9PQkpGSUxFUyAob2JqKQor ICAgICBpZiAobGlicHRocmVhZF9uYW1lX3AgKG9iai0+bmFtZSkpCisgICAgICAgeworQEAgLTg5 NSw2ICs5MjUsOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAg IGNoYXIgKnBhdGg7CisgICBpbnQgcmVzdWx0OworIAorKyAgaWYgKCFhdXRvX2xvYWRfdGhyZWFk X2RiKQorKyAgICByZXR1cm4gMDsKKysKKyAgIHBhdGggPSB4bWFsbG9jIChkaXJfbGVuICsgMSAr IHN0cmxlbiAoTElCVEhSRUFEX0RCX1NPKSArIDEpOworICAgY2xlYW51cCA9IG1ha2VfY2xlYW51 cCAoeGZyZWUsIHBhdGgpOworIAorQEAgLTE4MDIsNiArMTgzNSwxNTAgQEAgdGhyZWFkX2RiX3Jl c3VtZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcworICAgYmVuZWF0aC0+dG9fcmVzdW1lIChiZW5l YXRoLCBwdGlkLCBzdGVwLCBzaWdubyk7CisgfQorIAorKy8qIHFzb3J0IGhlbHBlciBmdW5jdGlv biBmb3IgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiLCBzb3J0IHRoZQorKyAgIHRocmVhZF9k Yl9pbmZvIHBvaW50ZXJzIHByaW1hcmlseSBieSB0aGVpciBGSUxFTkFNRSBhbmQgc2Vjb25kYXJp bHkgYnkgdGhlaXIKKysgICBQSUQsIGJvdGggaW4gYXNjZW5kaW5nIG9yZGVyLiAgKi8KKysKKytz dGF0aWMgaW50CisraW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUgKGNvbnN0IHZv aWQgKmFwLCBjb25zdCB2b2lkICpicCkKKyt7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmEg PSAqKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqKikgYXA7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2lu Zm8gKmIgPSAqKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqKikgYnA7CisrICBpbnQgcmV0dmFsOwor KworKyAgcmV0dmFsID0gc3RyY21wIChhLT5maWxlbmFtZSwgYi0+ZmlsZW5hbWUpOworKyAgaWYg KHJldHZhbCkKKysgICAgcmV0dXJuIHJldHZhbDsKKysKKysgIHJldHVybiAoYS0+cGlkID4gYi0+ cGlkKSAtIChhLT5waWQgLSBiLT5waWQpOworK30KKysKKysvKiBJbXBsZW1lbnQgJ2luZm8gYXV0 by1sb2FkIGxpYnRocmVhZC1kYicuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xv YWRfbGlidGhyZWFkX2RiIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0 IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworKyAgY29uc3QgY2hhciAqY3MgPSBhcmdz ID8gYXJncyA6ICIiOworKyAgc3RydWN0IHRocmVhZF9kYl9pbmZvICppbmZvLCAqKmFycmF5Owor KyAgdW5zaWduZWQgaW5mb19jb3VudCwgdW5pcXVlX2ZpbGVuYW1lczsKKysgIHNpemVfdCBtYXhf ZmlsZW5hbWVfbGVuLCBtYXhfcGlkc19sZW4sIHBpZHNfbGVuOworKyAgc3RydWN0IGNsZWFudXAg KmJhY2tfdG87CisrICBjaGFyICpwaWRzOworKyAgaW50IGk7CisrCisrICB3aGlsZSAoaXNzcGFj ZSAoKmNzKSkKKysgICAgY3MrKzsKKysgIGlmICgqY3MpCisrICAgIGVycm9yIChfKCInaW5mbyBh dXRvLWxvYWQgbGlidGhyZWFkLWRiJyBkb2VzIG5vdCBhY2NlcHQgYW55IHBhcmFtZXRlcnMiKSk7 CisrCisrICBpbmZvX2NvdW50ID0gMDsKKysgIGZvciAoaW5mbyA9IHRocmVhZF9kYl9saXN0OyBp bmZvOyBpbmZvID0gaW5mby0+bmV4dCkKKysgICAgaWYgKGluZm8tPmZpbGVuYW1lICE9IE5VTEwp CisrICAgICAgaW5mb19jb3VudCsrOworKworKyAgYXJyYXkgPSB4bWFsbG9jIChzaXplb2YgKCph cnJheSkgKiBpbmZvX2NvdW50KTsKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBh cnJheSk7CisrCisrICBpbmZvX2NvdW50ID0gMDsKKysgIGZvciAoaW5mbyA9IHRocmVhZF9kYl9s aXN0OyBpbmZvOyBpbmZvID0gaW5mby0+bmV4dCkKKysgICAgaWYgKGluZm8tPmZpbGVuYW1lICE9 IE5VTEwpCisrICAgICAgYXJyYXlbaW5mb19jb3VudCsrXSA9IGluZm87CisrCisrICAvKiBTb3J0 IEFSUkFZIGJ5IGZpbGVuYW1lcyBhbmQgUElEcy4gICovCisrCisrICBxc29ydCAoYXJyYXksIGlu Zm9fY291bnQsIHNpemVvZiAoKmFycmF5KSwKKysJIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9k Yl9jb21wYXJlKTsKKysKKysgIC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBmaWxl bmFtZXMgKHJvd3MpIGFuZCB0aGUgbWF4aW11bSBzdHJpbmcKKysgICAgIGxlbmd0aCBvZiBQSURz IGxpc3QgZm9yIHRoZSB1bmlxdWUgZmlsZW5hbWVzIChjb2x1bW5zKS4gICovCisrCisrICB1bmlx dWVfZmlsZW5hbWVzID0gMDsKKysgIG1heF9maWxlbmFtZV9sZW4gPSAwOworKyAgbWF4X3BpZHNf bGVuID0gMDsKKysgIHBpZHNfbGVuID0gMDsKKysgIGZvciAoaSA9IDA7IGkgPCBpbmZvX2NvdW50 OyBpKyspCisrICAgIHsKKysgICAgICBpbnQgcGlkID0gYXJyYXlbaV0tPnBpZDsKKysgICAgICBz aXplX3QgdGhpc19waWRfbGVuOworKworKyAgICAgIGZvciAodGhpc19waWRfbGVuID0gMDsgcGlk ICE9IDA7IHBpZCAvPSAxMCkKKysJdGhpc19waWRfbGVuKys7CisrCisrICAgICAgaWYgKGkgPT0g MCB8fCBzdHJjbXAgKGFycmF5W2kgLSAxXS0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFtZSkg IT0gMCkKKysJeworKwkgIHVuaXF1ZV9maWxlbmFtZXMrKzsKKysJICBtYXhfZmlsZW5hbWVfbGVu ID0gbWF4IChtYXhfZmlsZW5hbWVfbGVuLAorKwkJCQkgIHN0cmxlbiAoYXJyYXlbaV0tPmZpbGVu YW1lKSk7CisrCisrCSAgaWYgKGkgPiAwKQorKwkgICAgeworKwkgICAgICBwaWRzX2xlbiAtPSBz dHJsZW4gKCIsICIpOworKwkgICAgICBtYXhfcGlkc19sZW4gPSBtYXggKG1heF9waWRzX2xlbiwg cGlkc19sZW4pOworKwkgICAgfQorKwkgIHBpZHNfbGVuID0gMDsKKysJfQorKyAgICAgIHBpZHNf bGVuICs9IHRoaXNfcGlkX2xlbiArIHN0cmxlbiAoIiwgIik7CisrICAgIH0KKysgIGlmIChpKQor KyAgICB7CisrICAgICAgcGlkc19sZW4gLT0gc3RybGVuICgiLCAiKTsKKysgICAgICBtYXhfcGlk c19sZW4gPSBtYXggKG1heF9waWRzX2xlbiwgcGlkc19sZW4pOworKyAgICB9CisrCisrICAvKiBU YWJsZSBoZWFkZXIgc2hpZnRlZCByaWdodCBieSBwcmVjZWRpbmcgImxpYnRocmVhZC1kYjogICIg d291bGQgbm90IG1hdGNoCisrICAgICBpdHMgY29sdW1ucy4gICovCisrICBpZiAoaW5mb19jb3Vu dCA+IDAgJiYgYXJncyA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCisrICAg IHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisrICBtYWtlX2NsZWFudXBfdWlfb3V0X3Rh YmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIHVuaXF1ZV9maWxlbmFtZXMsCisrCQkJCSAgICAgICAi TGludXhUaHJlYWREYlRhYmxlIik7CisrCisrICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwg bWF4X2ZpbGVuYW1lX2xlbiwgdWlfbGVmdCwgImZpbGVuYW1lIiwKKysJCSAgICAgICAiRmlsZW5h bWUiKTsKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBwaWRzX2xlbiwgdWlfbGVmdCwg IlBJRHMiLCAiUGlkcyIpOworKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIHBp ZHMgPSB4bWFsbG9jIChtYXhfcGlkc19sZW4gKyAxKTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUs IHBpZHMpOworKworKyAgLyogTm90ZSBJIGlzIGluY3JlbWVudGVkIGluc2lkZSB0aGUgY3ljbGUs IG5vdCBhdCBpdHMgZW5kLiAgKi8KKysgIGZvciAoaSA9IDA7IGkgPCBpbmZvX2NvdW50OykKKysg ICAgeworKyAgICAgIHN0cnVjdCBjbGVhbnVwICpjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRf dHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CisrICAgICAgY2hhciAqcGlkc19lbmQ7Cisr CisrICAgICAgaW5mbyA9IGFycmF5W2ldOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVp b3V0LCAiZmlsZW5hbWUiLCBpbmZvLT5maWxlbmFtZSk7CisrICAgICAgcGlkc19lbmQgPSBwaWRz OworKworKyAgICAgIHdoaWxlIChpIDwgaW5mb19jb3VudCAmJiBzdHJjbXAgKGluZm8tPmZpbGVu YW1lLCBhcnJheVtpXS0+ZmlsZW5hbWUpID09IDApCisrCXsKKysJICBpZiAocGlkc19lbmQgIT0g cGlkcykKKysJICAgIHsKKysJICAgICAgKnBpZHNfZW5kKysgPSAnLCc7CisrCSAgICAgICpwaWRz X2VuZCsrID0gJyAnOworKwkgICAgfQorKwkgIHBpZHNfZW5kICs9IHhzbnByaW50ZiAocGlkc19l bmQsICZwaWRzW21heF9waWRzX2xlbiArIDFdIC0gcGlkc19lbmQsCisrCQkJCSAiJXUiLCBhcnJh eVtpXS0+cGlkKTsKKysJICBnZGJfYXNzZXJ0IChwaWRzX2VuZCA8ICZwaWRzW21heF9waWRzX2xl biArIDFdKTsKKysKKysJICBpKys7CisrCX0KKysgICAgICAqcGlkc19lbmQgPSAnXDAnOworKwor KyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAicGlkcyIsIHBpZHMpOworKworKyAg ICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrICAgICAgZG9fY2xlYW51cHMgKGNoYWlu KTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKworKyAgaWYgKGluZm9f Y291bnQgPT0gMCkKKysgICAgdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyBhdXRvLWxv YWRlZCBsaWJ0aHJlYWQtZGIuXG4iKSk7CisrfQorKworIHN0YXRpYyB2b2lkCisgaW5pdF90aHJl YWRfZGJfb3BzICh2b2lkKQorIHsKK0BAIC0xODYzLDYgKzIwNDAsMjMgQEAgV2hlbiBub24temVy bywgbGlidGhyZWFkLWRiIGRlYnVnZ2luZyBpcworIAkJCSAgICBzaG93X2xpYnRocmVhZF9kYl9k ZWJ1ZywKKyAJCQkgICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOworIAorKyAgYWRk X3NldHNob3dfYm9vbGVhbl9jbWQgKCJsaWJ0aHJlYWQtZGIiLCBjbGFzc19zdXBwb3J0LAorKwkJ CSAgICZhdXRvX2xvYWRfdGhyZWFkX2RiLCBfKCJcCisrRW5hYmxlIG9yIGRpc2FibGUgYXV0by1s b2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYi4iKSwgXygiXAorK1Nob3cg d2hldGhlciBhdXRvLWxvYWRpbmcgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIGVu YWJsZWQuIiksIF8oIlwKKytJZiBlbmFibGVkLCBsaWJ0aHJlYWRfZGIgd2lsbCBiZSBzZWFyY2hl ZCBpbiAnc2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aCdcblwKKytsb2NhdGlvbnMgdG8gbG9h ZCBsaWJ0aHJlYWRfZGIgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmZlcmlvci5cblwKKytTdGFuZGFy ZCBzeXN0ZW0gbGlidGhyZWFkX2RiIHN0aWxsIGdldHMgbG9hZGVkIGV2ZW4gd2l0aCB0aGlzIG9w dGlvbiBvZmYuXG5cCisrVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9y IHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCisrCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfdGhy ZWFkX2RiLAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0 b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImxpYnRocmVhZC1k YiIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiwKKysJICAgXygiUHJp bnQgdGhlIGxpc3Qgb2YgbG9hZGVkIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYi5cblwK KytVc2FnZTogaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiksCisrCSAgIGF1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysKKyAgIC8qIEFkZCBvdXJzZWx2ZXMgdG8gb2JqZmlsZSBl dmVudCBjaGFpbi4gICovCisgICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKHRocmVhZF9k Yl9uZXdfb2JqZmlsZSk7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAx Mi0wNC0xOCAwMDo0NDoyNi45NTc0Mzc1MDMgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKK0BAIC05NDUs OCArOTQ1LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIC8qIFNraXAgYXV0by1s b2FkaW5nIHNlY3Rpb24tc3BlY2lmaWVkIHNjcmlwdHMgdW50aWwgd2UndmUgc291cmNlZAorICAg ICAgbG9jYWxfZ2RiaW5pdCAod2hpY2ggaXMgb2Z0ZW4gdXNlZCB0byBhdWdtZW50IHRoZSBzb3Vy Y2Ugc2VhcmNoCisgICAgICBwYXRoKS4gICovCistICBzYXZlX2F1dG9fbG9hZCA9IGdkYnB5X2ds b2JhbF9hdXRvX2xvYWQ7CistICBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMDsKKysgIHNhdmVf YXV0b19sb2FkID0gZ2xvYmFsX2F1dG9fbG9hZDsKKysgIGdsb2JhbF9hdXRvX2xvYWQgPSAwOwor IAorICAgaWYgKGV4ZWNhcmcgIT0gTlVMTAorICAgICAgICYmIHN5bWFyZyAhPSBOVUxMCitAQCAt MTAyMiwxNCArMTAyMiwyNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAorICAgLyog UmVhZCB0aGUgLmdkYmluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksICppZiogaXQg aXNuJ3QKKyAgICAgIHRoZSBzYW1lIGFzIHRoZSAkSE9NRS8uZ2RiaW5pdCBmaWxlIChpdCBzaG91 bGQgZXhpc3QsIGFsc28pLiAgKi8KKy0gIGlmIChsb2NhbF9nZGJpbml0ICYmICFpbmhpYml0X2dk YmluaXQpCistICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBsb2NhbF9n ZGJpbml0LCAwLCBSRVRVUk5fTUFTS19BTEwpOworKyAgaWYgKGxvY2FsX2dkYmluaXQpCisrICAg IHsKKysgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0 aCAobG9jYWxfZ2RiaW5pdCk7CisrCisrICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQpCisrCXsKKysJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9s b2FkZWQgPSAxOworKworKwkgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBs b2NhbF9nZGJpbml0LCAwLAorKwkJCQlSRVRVUk5fTUFTS19BTEwpOworKwl9CisrICAgIH0KKyAK KyAgIC8qIE5vdyB0aGF0IGFsbCAuZ2RiaW5pdCdzIGhhdmUgYmVlbiByZWFkIGFuZCBhbGwgLWQg b3B0aW9ucyBoYXZlIGJlZW4KKyAgICAgIHByb2Nlc3NlZCwgd2UgY2FuIHJlYWQgYW55IHNjcmlw dHMgbWVudGlvbmVkIGluIFNZTUFSRy4KKyAgICAgIFdlIHdhaXQgdW50aWwgbm93IGJlY2F1c2Ug aXQgaXMgY29tbW9uIHRvIGFkZCB0byB0aGUgc291cmNlIHNlYXJjaAorICAgICAgcGF0aCBpbiBs b2NhbF9nZGJpbml0LiAgKi8KKy0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSBzYXZlX2F1dG9f bG9hZDsKKysgIGdsb2JhbF9hdXRvX2xvYWQgPSBzYXZlX2F1dG9fbG9hZDsKKyAgIEFMTF9PQkpG SUxFUyAob2JqZmlsZSkKKyAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZp bGUpOworIAorQEAgLTExOTYsNyArMTIwNiw3IEBAIEF0IHN0YXJ0dXAsIEdEQiByZWFkcyB0aGUg Zm9sbG93aW5nIGluaXQKKyAiKSwgaG9tZV9nZGJpbml0KTsKKyAgIGlmIChsb2NhbF9nZGJpbml0 KQorICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKHN0cmVhbSwgXygiXAorLSAgICogbG9jYWwgaW5p dCBmaWxlOiAuLyVzXG5cCisrICAgKiBsb2NhbCBpbml0IGZpbGUgKHNlZSBhbHNvICdzZXQgYXV0 by1sb2FkIGxvY2FsLWdkYmluaXQnKTogLi8lc1xuXAorICIpLCBsb2NhbF9nZGJpbml0KTsKKyAg IGZwdXRzX3VuZmlsdGVyZWQgKF8oIlxuXAorIEZvciBtb3JlIGluZm9ybWF0aW9uLCB0eXBlIFwi aGVscFwiIGZyb20gd2l0aGluIEdEQiwgb3IgY29uc3VsdCB0aGVcblwKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ0OjI2 LjkyODQzNzU3NyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAgLTEwMzQsNiArMTAz NCw3IEBAIFlvdSBjYW4gcnVuIEB2YWx1ZXtHREJOfSBpbiB2YXJpb3VzIGFsdGUKKyBiYXRjaCBt b2RlIG9yIHF1aWV0IG1vZGUuCisgCisgQHRhYmxlIEBjb2RlCisrQGFuY2hvcnstbnh9CisgQGl0 ZW0gLW54CisgQGl0ZW14IC1uCisgQGNpbmRleCBAY29kZXstLW54fQorQEAgLTEyNjUsNiArMTI2 Niw3IEBAIEhlcmUncyB0aGUgZGVzY3JpcHRpb24gb2Ygd2hhdCBAdmFsdWV7R0QKKyBTZXRzIHVw IHRoZSBjb21tYW5kIGludGVycHJldGVyIGFzIHNwZWNpZmllZCBieSB0aGUgY29tbWFuZCBsaW5l CisgKEBweHJlZntNb2RlIE9wdGlvbnMsIGludGVycHJldGVyfSkuCisgCisrQGFuY2hvcntPcHRp b24gLWluaXQtZXZhbC1jb21tYW5kfQorIEBpdGVtCisgRXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNv bW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4fSBhbmQKKyBAc2FtcHstaXh9 IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVz ZSB0aGUKK0BAIC0xMjc5LDYgKzEyODEsNyBAQCB1c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVle0dE Qk59OyBAcHhyZWZ7CisgICxTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGFuZCBzZXR0aW5nc30p IGFuZCBleGVjdXRlcyBhbGwgdGhlIGNvbW1hbmRzIGluCisgdGhhdCBmaWxlLgorIAorK0BhbmNo b3J7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfQorIEBpdGVtCisgUmVhZHMgdGhlIGluaXQgZmls ZSAoaWYgYW55KSBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5QGZvb3Rub3Rle09uCisgRE9TL1dpbmRv d3Mgc3lzdGVtcywgdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHRoZSBvbmUgcG9pbnRlZCB0byBieSB0 aGUKK0BAIC0xMjg4LDkgKzEyOTEsMTIgQEAgdGhhdCBmaWxlLgorIEBpdGVtCisgUHJvY2Vzc2Vz IGNvbW1hbmQgbGluZSBvcHRpb25zIGFuZCBvcGVyYW5kcy4KKyAKKytAYW5jaG9ye0luaXQgRmls ZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9CisgQGl0ZW0KKyBSZWFk cyBhbmQgZXhlY3V0ZXMgdGhlIGNvbW1hbmRzIGZyb20gaW5pdCBmaWxlIChpZiBhbnkpIGluIHRo ZSBjdXJyZW50Cistd29ya2luZyBkaXJlY3RvcnkuICBUaGlzIGlzIG9ubHkgZG9uZSBpZiB0aGUg Y3VycmVudCBkaXJlY3RvcnkgaXMKKyt3b3JraW5nIGRpcmVjdG9yeSBhcyBsb25nIGFzIEBzYW1w e3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0gaXMgc2V0IHRvCisrQHNhbXB7b259IChAcHhy ZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeX0pLgorK1RoaXMgaXMgb25seSBk b25lIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcworIGRpZmZlcmVudCBmcm9tIHlvdXIgaG9t ZSBkaXJlY3RvcnkuICBUaHVzLCB5b3UgY2FuIGhhdmUgbW9yZSB0aGFuIG9uZQorIGluaXQgZmls ZSwgb25lIGdlbmVyaWMgaW4geW91ciBob21lIGRpcmVjdG9yeSwgYW5kIGFub3RoZXIsIHNwZWNp ZmljCisgdG8gdGhlIHByb2dyYW0geW91IGFyZSBkZWJ1Z2dpbmcsIGluIHRoZSBkaXJlY3Rvcnkg d2hlcmUgeW91IGludm9rZQorQEAgLTEzMDYsNyArMTMxMiw3IEBAIElmIHlvdSB3aXNoIHRvIGRp c2FibGUgdGhlIGF1dG8tbG9hZGluZworIHlvdSBtdXN0IGRvIHNvbWV0aGluZyBsaWtlIHRoZSBm b2xsb3dpbmc6CisgCisgQHNtYWxsZXhhbXBsZQorLSQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQt c2NyaXB0cyBvZmYiIG15cHJvZ3JhbQorKyQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIE9wdGlvbiBA c2FtcHstZXh9IGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHRoZW4g dHVybmVkCitAQCAtMjg5MSw2ICsyODk3LDcgQEAgcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0aHJl YWRzLgorIEB4cmVme1NldCBXYXRjaHBvaW50cywsU2V0dGluZyBXYXRjaHBvaW50c30sIGZvciBp bmZvcm1hdGlvbiBhYm91dAorIHdhdGNocG9pbnRzIGluIHByb2dyYW1zIHdpdGggbXVsdGlwbGUg dGhyZWFkcy4KKyAKKytAYW5jaG9ye3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CisgQHRh YmxlIEBjb2RlCisgQGtpbmRleCBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoCisgQGNpbmRl eCBzZWFyY2ggcGF0aCBmb3IgQGNvZGV7bGlidGhyZWFkX2RifQorQEAgLTI5MDUsMTEgKzI5MTIs MTUgQEAgbWFjcm8uCisgT24gQHNje2dudX0vTGludXggYW5kIFNvbGFyaXMgc3lzdGVtcywgQHZh bHVle0dEQk59IHVzZXMgYSBgYGhlbHBlcicnCisgQGNvZGV7bGlidGhyZWFkX2RifSBsaWJyYXJ5 IHRvIG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aHJlYWRzIGluIHRoZQorIGluZmVyaW9yIHBy b2Nlc3MuICBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1w YXRofQorLXRvIGZpbmQgQGNvZGV7bGlidGhyZWFkX2RifS4KKyt0byBmaW5kIEBjb2Rle2xpYnRo cmVhZF9kYn0uICBAdmFsdWV7R0RCTn0gYWxzbyBjb25zdWx0cyBmaXJzdCBpZiBpbmZlcmlvcgor K3NwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBsb2FkaW5nIGlzIGVuYWJsZWQKKyti eSBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0gKEBweHJlZntsaWJ0aHJlYWRfZGIu c28uMSBmaWxlfSkuCisgCisgQSBzcGVjaWFsIGVudHJ5IEBzYW1weyRzZGlyfSBmb3IgQHNhbXB7 bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQorIHJlZmVycyB0byB0aGUgZGVmYXVsdCBzeXN0ZW0g ZGlyZWN0b3JpZXMgdGhhdCBhcmUKKy1ub3JtYWxseSBzZWFyY2hlZCBmb3IgbG9hZGluZyBzaGFy ZWQgbGlicmFyaWVzLgorK25vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJy YXJpZXMuICBUaGUgQHNhbXB7JHNkaXJ9IGVudHJ5CisraXMgdGhlIG9ubHkga2luZCBub3QgbmVl ZGluZyB0byBiZSBlbmFibGVkIGJ5IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQor KyhAcHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0pLgorIAorIEEgc3BlY2lhbCBlbnRyeSBA c2FtcHskcGRpcn0gZm9yIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KKyByZWZlcnMg dG8gdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIEBjb2Rle2xpYnB0aHJlYWR9CitAQCAtMjAzMjAs NiArMjAzMzEsNyBAQCBkZXNjcmliZWQgaGVyZS4KKyAqIFNjcmVlbiBTaXplOjogICAgICAgICAg ICAgICAgIFNjcmVlbiBzaXplCisgKiBOdW1iZXJzOjogICAgICAgICAgICAgICAgICAgICBOdW1i ZXJzCisgKiBBQkk6OiAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgY3Vy cmVudCBBQkkKKysqIEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkg bG9hZGluZyBhc3NvY2lhdGVkIGZpbGVzCisgKiBNZXNzYWdlcy9XYXJuaW5nczo6ICAgICAgICAg ICBPcHRpb25hbCB3YXJuaW5ncyBhbmQgbWVzc2FnZXMKKyAqIERlYnVnZ2luZyBPdXRwdXQ6OiAg ICAgICAgICAgIE9wdGlvbmFsIG1lc3NhZ2VzIGFib3V0IGludGVybmFsIGhhcHBlbmluZ3MKKyAq IE90aGVyIE1pc2MgU2V0dGluZ3M6OiAgICAgICAgIE90aGVyIE1pc2NlbGxhbmVvdXMgU2V0dGlu Z3MKK0BAIC0yMDc0NSw2ICsyMDc1NywyMjcgQEAgV2l0aCBubyBhcmd1bWVudCwgc2hvdyB0aGUg bGlzdCBvZiBzdXBwbworIFNldCB0aGUgY3VycmVudCBDQHR7Kyt9IEFCSSB0byBAdmFye2FiaX0s IG9yIHJldHVybiB0byBhdXRvbWF0aWMgZGV0ZWN0aW9uLgorIEBlbmQgdGFibGUKKyAKKytAbm9k ZSBBdXRvLWxvYWRpbmcKKytAc2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgYXNzb2NpYXRl ZCBmaWxlcworK0BjaW5kZXggYXV0by1sb2FkaW5nCisrCisrQHZhbHVle0dEQk59IHNvbWV0aW1l cyByZWFkcyBmaWxlcyB3aXRoIGNvbW1hbmRzIGFuZCBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5LAor K3dpdGhvdXQgYmVpbmcgZXhwbGljaXRseSB0b2xkIHNvIGJ5IHRoZSB1c2VyLiAgV2UgY2FsbCB0 aGlzIGZlYXR1cmUKKytAZGZue2F1dG8tbG9hZGluZ30uICBXaGlsZSBhdXRvLWxvYWRpbmcgaXMg dXNlZnVsIGZvciBhdXRvbWF0aWNhbGx5IGFkYXB0aW5nCisrQHZhbHVle0dEQk59IHRvIHRoZSBu ZWVkcyBvZiB5b3VyIHByb2plY3QsIGl0IGNhbiBzb21ldGltZXMgcHJvZHVjZSB1bmV4cGVjdGVk CisrcmVzdWx0cyBvciBpbnRyb2R1Y2Ugc2VjdXJpdHkgcmlza3MgKGUuZy4sIGlmIHRoZSBmaWxl IGNvbWVzIGZyb20gdW50cnVzdGVkCisrc291cmNlcykuCisrCisrRm9yIHRoZXNlIHJlYXNvbnMs IEB2YWx1ZXtHREJOfSBpbmNsdWRlcyBjb21tYW5kcyBhbmQgb3B0aW9ucyB0byBsZXQgeW91Cisr Y29udHJvbCB3aGVuIHRvIGF1dG8tbG9hZCBmaWxlcyBhbmQgd2hpY2ggZmlsZXMgc2hvdWxkIGJl IGF1dG8tbG9hZGVkLgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBv ZmZ9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIG9mZgorK0BpdGVtIHNldCBhdXRvLWxvYWQgb2Zm CisrR2xvYmFsbHkgZGlzYWJsZSBsb2FkaW5nIG9mIGFsbCBhdXRvLWxvYWRlZCBmaWxlcy4KKytZ b3UgbWF5IHdhbnQgdG8gdXNlIHRoaXMgY29tbWFuZCB3aXRoIHRoZSBAc2FtcHstaWV4fSBvcHRp b24KKysoQHB4cmVme09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9KSBzdWNoIGFzOgorK0BzbWFs bGV4YW1wbGUKKyskIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgb2ZmIiB1bnRydXN0ZWQt ZXhlY3V0YWJsZSBjb3JlZmlsZX0KKytAZW5kIHNtYWxsZXhhbXBsZQorKworK0JlIGF3YXJlIHRo YXQgc3lzdGVtIGluaXQgZmlsZSAoQHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb259KQor K2FuZCBpbml0IGZpbGVzIGZyb20geW91ciBob21lIGRpcmVjdG9yeSAoQHB4cmVme0hvbWUgRGly ZWN0b3J5IEluaXQgRmlsZX0pCisrc3RpbGwgZ2V0IHJlYWQgKGFzIHRoZXkgY29tZSBmcm9tIGdl bmVyYWxseSB0cnVzdGVkIGRpcmVjdG9yaWVzKS4KKytUbyBwcmV2ZW50IEB2YWx1ZXtHREJOfSBm cm9tIGF1dG8tbG9hZGluZyBldmVuIHRob3NlIGluaXQgZmlsZXMsIHVzZSB0aGUKKytAb3B0aW9u ey1ueH0gb3B0aW9uIChAcHhyZWZ7TW9kZSBPcHRpb25zfSksIGluIGFkZGl0aW9uIHRvCisrQGNv ZGV7c2V0IGF1dG8tbG9hZCBub30uCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZH0KKytAa2lu ZGV4IHNob3cgYXV0by1sb2FkCisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQKKytTaG93IHdoZXRoZXIg YXV0by1sb2FkaW5nIG9mIGVhY2ggc3BlY2lmaWMgQHNhbXB7YXV0by1sb2FkfSBmaWxlKHMpIGlz IGVuYWJsZWQKKytvciBkaXNhYmxlZC4KKysKKytAc21hbGxleGFtcGxlCisrKGdkYikgc2hvdyBh dXRvLWxvYWQKKytnZGItc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgb24uCisrbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5n IG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KKytsb2NhbC1nZGJpbml0 OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5 IGlzIG9uLgorK3B5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRz IGlzIG9uLgorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0K KytAa2luZGV4IGluZm8gYXV0by1sb2FkCisrQGl0ZW0gaW5mbyBhdXRvLWxvYWQKKytQcmludCB3 aGV0aGVyIGVhY2ggc3BlY2lmaWMgQHNhbXB7YXV0by1sb2FkfSBmaWxlKHMpIGhhdmUgYmVlbiBh dXRvLWxvYWRlZCBvcgorK25vdC4KKysKKytAc21hbGxleGFtcGxlCisrKGdkYikgaW5mbyBhdXRv LWxvYWQKKytnZGItc2NyaXB0czoKKytMb2FkZWQgIFNjcmlwdAorK1llcyAgICAgL2hvbWUvdXNl ci9nZGIvZ2RiLWdkYi5nZGIKKytsaWJ0aHJlYWQtZGI6ICBObyBhdXRvLWxvYWRlZCBsaWJ0aHJl YWQtZGIuCisrbG9jYWwtZ2RiaW5pdDogIExvY2FsIC5nZGJpbml0IGZpbGUgIi9ob21lL3VzZXIv Z2RiLy5nZGJpbml0IiBoYXMgYmVlbiBsb2FkZWQuCisrcHl0aG9uLXNjcmlwdHM6CisrTG9hZGVk ICBTY3JpcHQKKytZZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkKKytAZW5kIHNtYWxs ZXhhbXBsZQorK0BlbmQgdGFibGUKKysKKytUaGVzZSBhcmUgdmFyaW91cyBraW5kcyBvZiBmaWxl cyBAdmFsdWV7R0RCTn0gY2FuIGF1dG9tYXRpY2FsbHkgbG9hZDoKKysKKytAaXRlbWl6ZSBAYnVs bGV0CisrQGl0ZW0KKytAeHJlZntvYmpmaWxlLWdkYi5weSBmaWxlfSwgY29udHJvbGxlZCBieSBA cmVme3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0BpdGVtCisrQHhyZWZ7b2JqZmls ZS1nZGIuZ2RiIGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBnZGItc2Ny aXB0c30uCisrQGl0ZW0KKytAeHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSwKKytj b250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQGl0ZW0K KytAeHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSwKKytjb250cm9sbGVk IGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAaXRlbQorK0B4cmVme2xp YnRocmVhZF9kYi5zby4xIGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGJ9LgorK0BlbmQgaXRlbWl6ZQorKworK1RoZXNlIGFyZSBAdmFsdWV7R0RCTn0g Y29udHJvbCBjb21tYW5kcyBmb3IgdGhlIGF1dG8tbG9hZGluZzoKKysKKytAbXVsdGl0YWJsZSBA Y29sdW1uZnJhY3Rpb25zIC41IC41CisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBvZmZ9Lgor K0B0YWIgRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBh dXRvLWxvYWR9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIGFsbCBraW5kcyBvZiBmaWxlcy4KKytA aXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZH0uCisrQHRhYiBTaG93IHN0YXRlIG9mIGFsbCBraW5k cyBvZiBmaWxlcy4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KKytA dGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhy ZWZ7c2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2 YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBAdmFsdWV7R0RCTn0gY29tbWFuZCBz Y3JpcHRzLgorK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0 YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgorK0BpdGVtIEB4cmVm e3Nob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KKytAdGFiIFNob3cgc2V0dGluZyBvZiBA dmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBAdmFsdWV7R0RCTn0gUHl0aG9u IHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytA dGFiIENvbnRyb2wgZm9yIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisrQGl0 ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCisrQHRhYiBTaG93IHNldHRp bmcgb2YgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntp bmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIFNob3cgc3RhdGUgb2YgaW5pdCBm aWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2Fk IGxpYnRocmVhZC1kYn0uCisrQHRhYiBDb250cm9sIGZvciB0aHJlYWQgZGVidWdnaW5nIGxpYnJh cnkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KKytAdGFiIFNo b3cgc2V0dGluZyBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7aW5m byBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KKytAdGFiIFNob3cgc3RhdGUgb2YgdGhyZWFkIGRl YnVnZ2luZyBsaWJyYXJ5LgorK0BlbmQgbXVsdGl0YWJsZQorKworK0BtZW51CisrKiBJbml0IEZp bGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxv YWQgbG9jYWwtZ2RiaW5pdH0KKysqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAg ICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrKiBvYmpmaWxl LWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxv YWQgZ2RiLXNjcmlwdH0KKytAeHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4KKytAZW5kIG1lbnUK KysKKytAbm9kZSBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5CisrQHN1YnNlY3Rp b24gQXV0b21hdGljYWxseSBsb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rv cnkKKytAY2luZGV4IGF1dG8tbG9hZGluZyBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0 b3J5CisrCisrQnkgZGVmYXVsdCwgQHZhbHVle0dEQk59IHJlYWRzIGFuZCBleGVjdXRlcyB0aGUg Y2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcworK2Zyb20gaW5pdCBmaWxlIChpZiBhbnkpIGlu IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAorK3NlZSBAcmVme0luaXQgRmlsZSBpbiB0 aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9LgorKworK0B0YWJsZSBAY29kZQor K0BhbmNob3J7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5kZXggc2V0IGF1dG8t bG9hZCBsb2NhbC1nZGJpbml0CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IFtv bnxvZmZdCisrRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2Vx dWVuY2VzIG9mIGNvbW1hbmRzCisrKEBweHJlZntTZXF1ZW5jZXN9KSBmb3VuZCBpbiBpbml0IGZp bGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdH0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytA aXRlbSBzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0CisrU2hvdyB3aGV0aGVyIGF1dG8tbG9h ZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZyb20gaW5pdCBmaWxlIGluIHRo ZQorK2N1cnJlbnQgZGlyZWN0b3J5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisrCisrQGFuY2hv cntpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5kZXggaW5mbyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdAorK0BpdGVtIGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytQcmlu dCB3aGV0aGVyIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgaW4g dGhlCisrY3VycmVudCBkaXJlY3RvcnkgaGF2ZSBiZWVuIGF1dG8tbG9hZGVkLgorK0BlbmQgdGFi bGUKKysKKytAbm9kZSBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlCisrQHN1YnNlY3Rpb24gQXV0b21h dGljYWxseSBsb2FkaW5nIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeQorK0BjaW5kZXggYXV0by1s b2FkaW5nIGxpYnRocmVhZF9kYi5zby4xCisrCisrVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBw cmVzZW50IG9ubHkgb24gQHNje2dudX0vTGludXggbmF0aXZlIGhvc3RzLgorKworK0B2YWx1ZXtH REJOfSByZWFkcyBpbiBzb21lIGNhc2VzIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBmcm9tIHBs YWNlcyBzcGVjaWZpYworK3RvIHRoZSBpbmZlcmlvciAoQHB4cmVme3NldCBsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGh9KS4KKysKKytUaGUgc3BlY2lhbCBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNo LXBhdGh9IGVudHJ5IEBzYW1weyRzZGlyfSBpcyBwcm9jZXNzZWQKKyt3aXRob3V0IGNoZWNraW5n IHRoaXMgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IHN3aXRjaCBhcyBzeXN0ZW0K KytsaWJyYXJpZXMgaGF2ZSB0byBiZSB0cnVzdGVkIGluIGdlbmVyYWwuICBJbiBhbGwgb3RoZXIg Y2FzZXMgb2YKKytAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9IGVudHJpZXMgQHZhbHVl e0dEQk59IGNoZWNrcyBmaXJzdCBpZiBAc2FtcHtzZXQKKythdXRvLWxvYWQgbGlidGhyZWFkLWRi fSBpcyBlbmFibGVkIGJlZm9yZSB0cnlpbmcgdG8gb3BlbiBzdWNoIHRocmVhZCBkZWJ1Z2dpbmcK KytsaWJyYXJ5LgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIHNl dCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIFtvbnxvZmZdCisrRW5hYmxlIG9yIGRpc2FibGUgdGhl IGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJh cnkuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBz aG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytAaXRlbSBzaG93IGF1dG8tbG9hZCBsaWJ0aHJl YWQtZGIKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRo cmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBpcworK2VuYWJsZWQgb3IgZGlzYWJsZWQuCisrCisrQGFu Y2hvcntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGIKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytQcmlu dCB0aGUgbGlzdCBvZiBhbGwgbG9hZGVkIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dp bmcgbGlicmFyaWVzIGFuZAorK2ZvciBlYWNoIHN1Y2ggbGlicmFyeSBwcmludCBsaXN0IG9mIGlu ZmVyaW9yIEB2YXJ7cGlkfXMgdXNpbmcgaXQuCisrQGVuZCB0YWJsZQorKworK0Bub2RlIG9iamZp bGUtZ2RiLmdkYiBmaWxlCisrQHN1YnNlY3Rpb24gVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2Ri LmdkYn0gZmlsZQorK0BjaW5kZXggYXV0by1sb2FkaW5nIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2Ri LmdkYn0KKysKKytAdmFsdWV7R0RCTn0gdHJpZXMgdG8gbG9hZCBhbiBAZmlsZXtAdmFye29iamZp bGV9LWdkYi5nZGJ9IGZpbGUgY29udGFpbmluZworK2Nhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFu ZHMgKEBweHJlZntTZXF1ZW5jZXN9KSwgYXMgbG9uZyBhcyBAc2FtcHtzZXQKKythdXRvLWxvYWQg Z2RiLXNjcmlwdHN9IGlzIHNldCB0byBAc2FtcHtvbn0uCisrCisrRm9yIG1vcmUgYmFja2dyb3Vu ZCByZWZlciB0byB0aGUgc2ltaWxhciBQeXRob24gc2NyaXB0cyBhdXRvLWxvYWRpbmcKKytkZXNj cmlwdGlvbiAoQHB4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9KS4KKysKKytAdGFibGUgQGNvZGUK KytAYW5jaG9ye3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRleCBzZXQgYXV0by1s b2FkIGdkYi1zY3JpcHRzCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbb258b2Zm XQorK0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNl cyBvZiBjb21tYW5kcyBzY3JpcHRzLgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgZ2RiLXNj cmlwdHN9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cworK0BpdGVtIHNob3cg YXV0by1sb2FkIGdkYi1zY3JpcHRzCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5u ZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgZW5hYmxlZCBvcgorK2Rpc2FibGVk LgorKworK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRleCBpbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0cworK0BjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRl ZCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMKKytAaXRlbSBpbmZvIGF1dG8t bG9hZCBnZGItc2NyaXB0cyBbQHZhcntyZWdleHB9XQorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBj YW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0KKyth dXRvLWxvYWRlZC4KKytAZW5kIHRhYmxlCisrCisrSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVk IG9ubHkgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKKyttYXRjaGlu ZyBuYW1lcyBhcmUgcHJpbnRlZC4KKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0 aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorQEAgLTIxNjE2LDcgKzIxODQ5 LDcgQEAgYXV0b21hdGljYWxseSBpbXBvcnRlZCB3aGVuIEB2YWx1ZXtHREJOfQorIEBtZW51Cisg KiBQeXRob24gQ29tbWFuZHM6OiAgICAgICAgICAgICBBY2Nlc3NpbmcgUHl0aG9uIGZyb20gQHZh bHVle0dEQk59LgorICogUHl0aG9uIEFQSTo6ICAgICAgICAgICAgICAgICAgQWNjZXNzaW5nIEB2 YWx1ZXtHREJOfSBmcm9tIFB5dGhvbi4KKy0qIEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAg IEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQeXRob24gY29kZS4KKysqIFB5dGhvbiBBdXRvLWxvYWRp bmc6OiAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQeXRob24gY29kZS4KKyAqIFB5dGhv biBtb2R1bGVzOjogICAgICAgICAgICAgIFB5dGhvbiBtb2R1bGVzIHByb3ZpZGVkIGJ5IEB2YWx1 ZXtHREJOfS4KKyBAZW5kIG1lbnUKKyAKK0BAIC0yMjc5OSw3ICsyMzAzMiw3IEBAIFRoaXMgcHJh Y3RpY2Ugd2lsbCBlbmFibGUgQHZhbHVle0dEQk59IHQKKyB5b3VyIHByZXR0eS1wcmludGVycyBh dCB0aGUgc2FtZSB0aW1lLCBiZWNhdXNlIHRoZXkgd2lsbCBoYXZlCisgZGlmZmVyZW50IG5hbWVz LgorIAorLVlvdSBzaG91bGQgd3JpdGUgYXV0by1sb2FkZWQgY29kZSAoQHB4cmVme0F1dG8tbG9h ZGluZ30pIHN1Y2ggdGhhdCBpdAorK1lvdSBzaG91bGQgd3JpdGUgYXV0by1sb2FkZWQgY29kZSAo QHB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9KSBzdWNoIHRoYXQgaXQKKyBjYW4gYmUgZXZhbHVh dGVkIG11bHRpcGxlIHRpbWVzIHdpdGhvdXQgY2hhbmdpbmcgaXRzIG1lYW5pbmcuICBBbgorIGlk ZWFsIGF1dG8tbG9hZCBmaWxlIHdpbGwgY29uc2lzdCBzb2xlbHkgb2YgQGNvZGV7aW1wb3J0fXMg b2YgeW91cgorIHByaW50ZXIgbW9kdWxlcywgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGEgcmVnaXN0 ZXIgcHJldHR5LXByaW50ZXJzIHdpdGgKK0BAIC0yMzc2MCw3ICsyMzk5Myw3IEBAIFRoZSBmb2xs b3dpbmcgb2JqZmlsZS1yZWxhdGVkIGZ1bmN0aW9ucworIAorIEBmaW5kZXggZ2RiLmN1cnJlbnRf b2JqZmlsZQorIEBkZWZ1biBnZGIuY3VycmVudF9vYmpmaWxlICgpCistV2hlbiBhdXRvLWxvYWRp bmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7QXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQor K1doZW4gYXV0by1sb2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme1B5dGhvbiBBdXRvLWxv YWRpbmd9KSwgQHZhbHVle0dEQk59Cisgc2V0cyB0aGUgYGBjdXJyZW50IG9iamZpbGUnJyB0byB0 aGUgY29ycmVzcG9uZGluZyBvYmpmaWxlLiAgVGhpcworIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1 cnJlbnQgb2JqZmlsZS4gIElmIHRoZXJlIGlzIG5vIGN1cnJlbnQgb2JqZmlsZSwKKyB0aGlzIGZ1 bmN0aW9uIHJldHVybnMgQGNvZGV7Tm9uZX0uCitAQCAtMjQ2NzEsOSArMjQ5MDQsOSBAQCByZXNv bHZlIHRoaXMgdG8gdGhlIGxhenkgc3RyaW5nJ3MgY2hhcmFjCisgd3JpdGFibGUuCisgQGVuZCBk ZWZ2YXIKKyAKKy1Abm9kZSBBdXRvLWxvYWRpbmcKKy1Ac3Vic2VjdGlvbiBBdXRvLWxvYWRpbmcK Ky1AY2luZGV4IGF1dG8tbG9hZGluZywgUHl0aG9uCisrQG5vZGUgUHl0aG9uIEF1dG8tbG9hZGlu ZworK0BzdWJzZWN0aW9uIFB5dGhvbiBBdXRvLWxvYWRpbmcKKytAY2luZGV4IFB5dGhvbiBhdXRv LWxvYWRpbmcKKyAKKyBXaGVuIGEgbmV3IG9iamVjdCBmaWxlIGlzIHJlYWQgKGZvciBleGFtcGxl LCBkdWUgdG8gdGhlIEBjb2Rle2ZpbGV9CisgY29tbWFuZCwgb3IgYmVjYXVzZSB0aGUgaW5mZXJp b3IgaGFzIGxvYWRlZCBhIHNoYXJlZCBsaWJyYXJ5KSwKK0BAIC0yNDY5MywzMiArMjQ5MjYsMzUg QEAgQXV0by1sb2FkaW5nIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkLAorIGFuZCB0aGUgbGlz dCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGNhbiBiZSBwcmludGVkLgorIAorIEB0YWJsZSBAY29k ZQorLUBraW5kZXggc2V0IGF1dG8tbG9hZC1zY3JpcHRzCistQGl0ZW0gc2V0IGF1dG8tbG9hZC1z Y3JpcHRzIFt5ZXN8bm9dCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQor K0BraW5kZXggc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BpdGVtIHNldCBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHMgW29ufG9mZl0KKyBFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1s b2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLgorIAorLUBraW5kZXggc2hvdyBhdXRvLWxvYWQtc2Ny aXB0cworLUBpdGVtIHNob3cgYXV0by1sb2FkLXNjcmlwdHMKKytAYW5jaG9ye3Nob3cgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzfQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMKKytAaXRlbSBzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworIFNob3cgd2hldGhlciBh dXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAK Ky1Aa2luZGV4IGluZm8gYXV0by1sb2FkLXNjcmlwdHMKKy1AY2luZGV4IHByaW50IGxpc3Qgb2Yg YXV0by1sb2FkZWQgc2NyaXB0cworLUBpdGVtIGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW0B2YXJ7 cmVnZXhwfV0KKy1QcmludCB0aGUgbGlzdCBvZiBhbGwgc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJO fSBhdXRvLWxvYWRlZC4KKytAYW5jaG9ye2luZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQor K0BraW5kZXggaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKKytAY2luZGV4IHByaW50IGxp c3Qgb2YgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyBbQHZhcntyZWdleHB9XQorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBQeXRo b24gc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZC4KKyAKKy1BbHNvIHByaW50 ZWQgaXMgdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IHdlcmUgbWVudGlvbmVkIGluCisrQWxzbyBw cmludGVkIGlzIHRoZSBsaXN0IG9mIFB5dGhvbiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQg aW4KKyB0aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBm b3VuZAorIChAcHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0pLgorIFRoaXMgaXMg dXNlZnVsIGJlY2F1c2UgdGhlaXIgbmFtZXMgYXJlIG5vdCBwcmludGVkIHdoZW4gQHZhbHVle0dE Qk59CisgdHJpZXMgdG8gbG9hZCB0aGVtIGFuZCBmYWlscy4gIFRoZXJlIG1heSBiZSBtYW55IG9m IHRoZW0sIGFuZCBwcmludGluZworIGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2ggb25lIGlzIHBy b2JsZW1hdGljLgorIAorLUlmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IHNjcmlwdHMg d2l0aCBtYXRjaGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KKytJZiBAdmFye3JlZ2V4cH0gaXMgc3Vw cGxpZWQgb25seSBQeXRob24gc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVk LgorIAorIEV4YW1wbGU6CisgCisgQHNtYWxsZXhhbXBsZQorLShnZGIpIGluZm8gYXV0by1sb2Fk LXNjcmlwdHMKKysoZ2RiKSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworIExvYWRlZCAg U2NyaXB0CisgWWVzICAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorICAgICAgICAgZnVsbCBuYW1l OiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0NDoyNi45 NTg0Mzc1MDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0 by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC0zMSwyOSAr MzEsNTYgQEAKKyAKKyAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCisgCistLyogTk9URTog SXQncyB0cml2aWFsIHRvIGFsc28gc3VwcG9ydCBhdXRvLWxvYWRpbmcgbm9ybWFsIGdkYiBzY3Jp cHRzLgorLSAgIFRoZXJlIGhhcyB5ZXQgdG8gYmUgYSBuZWVkIHNvIGl0J3Mgbm90IGltcGxlbWVu dGVkLiAgKi8KKy0KKyAvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0 by1sb2FkLgorICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sg Zm9yIGxpYmZvby1nZGIucHkuICAqLworICNkZWZpbmUgR0RCUFlfQVVUT19GSUxFX05BTUUgIi1n ZGIucHkiCisgCistLyogVGhlIHNlY3Rpb24gdG8gbG9vayBmb3Igc2NyaXB0cyAoaW4gZmlsZSBm b3JtYXRzIHRoYXQgc3VwcG9ydCBzZWN0aW9ucykuCisrLyogVGhlIHNlY3Rpb24gdG8gbG9vayBm b3IgUHl0aG9uIGF1dG8tbG9hZGVkIHNjcmlwdHMgKGluIGZpbGUgZm9ybWF0cyB0aGF0CisrICAg c3VwcG9ydCBzZWN0aW9ucykuCisgICAgRWFjaCBlbnRyeSBpbiB0aGlzIHNlY3Rpb24gaXMgYSBi eXRlIG9mIHZhbHVlIDEsIGFuZCB0aGVuIHRoZSBudWwtdGVybWluYXRlZAorICAgIG5hbWUgb2Yg dGhlIHNjcmlwdC4gIFRoZSBzY3JpcHQgbmFtZSBtYXkgaW5jbHVkZSBhIGRpcmVjdG9yeS4KKyAg ICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93IHVwd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lv bnMuICAqLworICNkZWZpbmUgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUgIi5kZWJ1Z19nZGJfc2Ny aXB0cyIKKyAKKy0vKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRv LWxvYWRpbmc6CistICAgc2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZgorLSAgIFRoaXMgaXMg dHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9i amZpbGUKKy0gICBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4KKy0gICBBdCB0aGUgbW9tZW50 LCB0aGlzIG9ubHkgYWZmZWN0cyBweXRob24gc2NyaXB0cywgYnV0IHRoZXJlJ3Mgbm8gcmVhc29u CistICAgb25lIGNvdWxkbid0IGFsc28gaGF2ZSBvdGhlciBraW5kcyBvZiBhdXRvLWxvYWRlZCBz Y3JpcHRzLCBhbmQgdGhlcmUncworLSAgIG5vIHJlYXNvbiB0byBoYXZlIHRoZW0gZWFjaCBjb250 cm9sbGVkIGJ5IGEgc2VwYXJhdGUgZmxhZy4KKy0gICBTbyB3ZSBlbGlkZSAicHl0aG9uIiBmcm9t IHRoZSBuYW1lIGhlcmUgYW5kIGluIHRoZSBvcHRpb24uCistICAgVGhlIGZhY3QgdGhhdCBpdCBs aXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgKi8KKy1zdGF0aWMg aW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKKysvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBl bmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHM6CisrICAgc2V0IGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYKKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hv dWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIFB5dGhvbiBzY3JpcHRzIHdoZW4gYW4KKysgICBvYmpm aWxlIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KKytzdGF0aWMgaW50IGF1dG9fbG9h ZF9weXRob25fc2NyaXB0cyA9IDE7CisrCisrc3RhdGljIHZvaWQgZ2RicHlfbG9hZF9hdXRvX3Nj cmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCQkJRklMRSAq ZmlsZSwKKysJCQkJCQljb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisrLyogInNob3ciIGNvbW1h bmQgZm9yIHRoZSBhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgY29uZmlndXJhdGlvbiB2YXJpYWJs ZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCQkgICAgICAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmls dGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyAlcy5cbiIp LCB2YWx1ZSk7CisrfQorKworKy8qIERlZmluaXRpb24gb2Ygc2NyaXB0IGxhbmd1YWdlIGZvciBQ eXRob24gc2NyaXB0cy4gICovCisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3Vh Z2Ugc2NyaXB0X2xhbmd1YWdlX3B5dGhvbgorKyAgPSB7IEdEQlBZX0FVVE9fRklMRV9OQU1FLCBn ZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIH07CisrCisrLyogV3JhcHBlciBvZiBz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBmb3Igc2NyaXB0X2xhbmd1YWdlX3B5dGhv bi4gICovCisrCisrc3RhdGljIHZvaWQKKytnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJICAgIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBz cGFjZV9pbmZvOworKworKyAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRv byBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisrICAgICBjYW4gcHJpbnQgaXQu ICAqLworKyAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2Fk aW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNl X2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworKwor KyAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVu YW1lKTsKKyt9CisgCisgLyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgorICAg IFNUQVJULEVORCBkZWxpbWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJt aW5hdGVkCitAQCAtMTIxLDYgKzE0OCwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1 Y3Qgb2JqZmlsZSAqCisgCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKyAJICBtYWtl X2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworIAl9CisrICAgICAgZWxzZQorKwl7CisrCSAg ZnVsbF9wYXRoID0gTlVMTDsKKysKKysJICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhl IHByb2dyYW0gaXMgc3RpbGwgZGVidWdnYWJsZS4gICovCisrCSAgaWYgKHNjcmlwdF9ub3RfZm91 bmRfd2FybmluZ19wcmludCAocHNwYWNlX2luZm8pKQorKwkgICAgd2FybmluZyAoXygiTWlzc2lu ZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKytvZiBmaWxl ICVzXG5cCisrVXNlIGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VYUF0nIHRvIGxpc3QgdGhl bS4iKSwKKysJCSAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOwor Kwl9CisgCisgICAgICAgLyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNv bW1vbiBmb3IgbW9yZSB0byBub3QgYmUKKyAJIGZvdW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQg dG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaAorQEAgLTEyOSwyNCArMTY3LDEyIEBA IHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAKKyAJIElXQk4gaWYg Y29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2UuICAqLworIAorLSAgICAgIGlu X2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwKKy0JCQkJ CW9wZW5lZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOworKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXli ZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwgZnVsbF9wYXRoLAorKwkJCQkJJnNjcmlw dF9sYW5ndWFnZV9weXRob24pOworIAorLSAgICAgIGlmICghIG9wZW5lZCkKKy0JeworLQkgIC8q IFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxl LiAgKi8KKy0JICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5m bykpCistCSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5j ZWQgaW4gc2VjdGlvbiAlc1xuXAorLW9mIGZpbGUgJXNcblwKKy1Vc2UgYGluZm8gYXV0by1sb2Fk LXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKKy0JCSAgICAgR0RCUFlfQVVUT19T RUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAg LyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKy0J ICBpZiAoISBpbl9oYXNoX3RhYmxlKQorLQkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29i amZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKy0JfQorKyAgICAgIC8qIElmIHRo aXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisrICAgICAgaWYg KG9wZW5lZCAmJiAhaW5faGFzaF90YWJsZSkKKysJc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29i amZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKyAKKyAgICAgICBkb19jbGVhbnVw cyAoYmFja190byk7CisgICAgIH0KK0BAIC0xODEsMzYgKzIwNyw3NSBAQCBhdXRvX2xvYWRfc2Vj dGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwor IH0KKyAKKy0vKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8K KysvKiBMb2FkIGFueSBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JKRklMRS4gICov CisgCisgdm9pZAorLWxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKKytnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCisgeworLSAgaWYgKGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5 X2dsb2JhbF9hdXRvX2xvYWQpCisrICBpZiAoYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKQorICAg ICB7CistICAgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCBHREJQWV9BVVRP X0ZJTEVfTkFNRSk7CisrICAgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCAm c2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisgICAgICAgYXV0b19sb2FkX3NlY3Rpb25fc2NyaXB0 cyAob2JqZmlsZSwgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUpOworICAgICB9CisgfQorKworKy8q IFdyYXBwZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuICAqLworKworK3N0 YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4s IGludCBmcm9tX3R0eSkKKyt7CisrICBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBm cm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworK30KKyAMCisgdm9pZAorIGdkYnB5 X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorIHsKKysgIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpjbWQ7CisrICBjaGFyICpjbWRfbmFtZTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5f Y21kICgicHl0aG9uLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAorKwkJCSAgICZhdXRvX2xvYWRf cHl0aG9uX3NjcmlwdHMsIF8oIlwKKytTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2Fy ZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cy4iKSwgXygiXAorK1Nob3cgdGhlIGRlYnVn Z2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cy4iKSwg XygiXAorK0lmIGVuYWJsZWQsIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFyZSBsb2FkZWQg d2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKKythbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJy YXJ5LlxuXAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRy dXN0ZWQgaW5mZXJpb3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzLAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0 b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworICAgYWRkX3NldHNob3dfYm9vbGVhbl9j bWQgKCJhdXRvLWxvYWQtc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCistCQkJICAgJmF1dG9fbG9h ZF9zY3JpcHRzLCBfKCJcCistU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcg YXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygiXAorLVNob3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZp b3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCistSWYgZW5hYmxlZCwg YXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5c CistYW4gZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS4iKSwKKy0JCQkgICBOVUxMLCBOVUxM LAorLQkJCSAgICZzZXRsaXN0LAorLQkJCSAgICZzaG93bGlzdCk7CisrCQkJICAgJmF1dG9fbG9h ZF9weXRob25fc2NyaXB0cywgXygiXAorK1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVn YXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCisrCQkJCQkJCQkgImRlcHJlY2F0 ZWQuIiksCisrCQkJICAgXygiXAorK1Nob3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2Fy ZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cywgIgorKwkJCQkJCQkJICJkZXByZWNhdGVk LiIpLAorKwkJCSAgIE5VTEwsIE5VTEwsIHNob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAor KwkJCSAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOworKyAgY21kX25hbWUgPSAiYXV0by1sb2FkLXNj cmlwdHMiOworKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzZXRsaXN0LCAiIiwgLTEs IDEpOworKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIpOworKworKyAgLyogSXQgaXMgbmVlZGVkIGJlY2F1c2UgbG9va3VwX2NtZCB1cGRhdGVzIHRo ZSBDTURfTkFNRSBwb2ludGVyLiAgKi8KKysgIGNtZF9uYW1lID0gImF1dG8tbG9hZC1zY3JpcHRz IjsKKysgIGNtZCA9IGxvb2t1cF9jbWQgKCZjbWRfbmFtZSwgc2hvd2xpc3QsICIiLCAtMSwgMSk7 CisrICBkZXByZWNhdGVfY21kIChjbWQsICJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIp OworKworKyAgYWRkX2NtZCAoInB5dGhvbi1zY3JpcHRzIiwgY2xhc3NfaW5mbywgaW5mb19hdXRv X2xvYWRfcHl0aG9uX3NjcmlwdHMsCisrCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRp Y2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyBbUkVHRVhQXSIpLAorKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dl dCAoKSk7CisrCisrICBjbWQgPSBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwgaW5mb19h dXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKKytQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0 aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cywgZGVwcmVjYXRlZC4iKSk7CisrICBkZXByZWNh dGVfY21kIChjbWQsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpOworIH0KKyAKKyAj ZWxzZSAvKiAhIEhBVkVfUFlUSE9OICovCisgCisgdm9pZAorLWxvYWRfYXV0b19zY3JpcHRzX2Zv cl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytnZGJweV9sb2FkX2F1dG9fc2Ny aXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgeworIH0KKyAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0 LTE4IDAwOjQ0OjI2Ljk1ODQzNzUwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk3OTQzNzQ0NiArMDIwMAorQEAg LTQxLDcgKzQxLDcgQEAgaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cAor IAorIHZvaWQgcHJlc2VydmVfcHl0aG9uX3ZhbHVlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGh0YWJfdCBjb3BpZWRfdHlwZXMpOworIAorLXZvaWQgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyt2b2lkIGdkYnB5X2xvYWRfYXV0b19z Y3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCisgaW50IGdk YnB5X3Nob3VsZF9zdG9wIChzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3QgKmJwX29iaik7CisgCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhw Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaGVscC5leHAJMjAxMi0wMS0wNCAwOToxNzo0NS4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAJMjAx Mi0wNC0xOCAwMDo0NDoyNi45ODA0Mzc0NDQgKzAyMDAKK0BAIC0yNCw3ICsyNCw3IEBACisgZ2Ri X3N0YXJ0CisgCisgIyBmb3JjZSB0aGUgaGVpZ2h0IG9mIHRoZSBkZWJ1Z2dlciB0byBiZSBwcmV0 dHkgbGFyZ2Ugc28gbm8gcGFnZXJzIGdldCB1c2VkCistZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQg aGVpZ2h0IDQwMCIgInRlc3Qgc2V0IGhlaWdodCIKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBo ZWlnaHQgNTAwIiAidGVzdCBzZXQgaGVpZ2h0IgorIAorICMgdXNlIGEgbGFyZ2VyIGV4cGVjdCBp bnB1dCBidWZmZXIgZm9yIGxvbmcgaGVscCBvdXRwdXRzLgorICMgdGVzdCBoZWxwIGFkZC1zeW1i b2wtZmlsZQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhw CTIwMTItMDEtMTYgMTc6MjE6NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTIt MDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCitAQCAtNDAsNyArNDAsNyBAQCBnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisg IyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgorLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9h ZC1zY3JpcHRzIiAiWWVzLiovJHt0ZXN0ZmlsZX0tZ2RiLnB5LioiCisrZ2RiX3Rlc3QgImluZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiAiWWVzLiovJHt0ZXN0ZmlsZX0tZ2RiLnB5LioiCisg CisgaWYgIVtydW50b19tYWluXSB7CisgICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4i CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt c2VjdGlvbi1zY3JpcHQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAJMjAxMi0w MS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAw MDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC01MiwxMSArNTIsMTEgQEAgZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAorICMgVmVy aWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2Ny aXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHku KiIKKytnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKiR7dGVz dGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCisgIyBBZ2Fpbiwgd2l0 aCBhIHJlZ2V4cCB0aGlzIHRpbWUuCistZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMg JHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZp bGV9LnB5LioiCisrZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzICR7dGVz dGZpbGV9IiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5w eS4qIgorICMgQWdhaW4sIHdpdGggYSByZWdleHAgdGhhdCBtYXRjaGVzIG5vIHNjcmlwdHMuCist Z2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMgbm8tc2NyaXB0LW1hdGNoZXMtdGhpcyIg XAorK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBuby1zY3JpcHQtbWF0 Y2hlcy10aGlzIiBcCisgICAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcgbm8tc2NyaXB0 LW1hdGNoZXMtdGhpcy4iCisgCisgaWYgIVtydW50b19tYWluXSB7CgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTExb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMW9mMTgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzY4YjAuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9s b2FkLTExb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0NCArMCwwIEBACi1bcGF0Y2gj NCA1LzhdIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA5Mi5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTE0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDQvMTcgMTU6NTQ6MjgJMS4xNDExNAotIyMgLTEsNSArMSwzOSBAQAotIDIwMTItMDQtMTcgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJTmV3IG9wdGlv biAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgotKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0rCWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIi4K LSsJKiBhdXRvLWxvYWQuYzogSW5jbHVkZSBnZGJfdmVjcy5oLCByZWFkbGluZS90aWxkZS5oIGFu ZCBjb21wbGV0ZXIuaC4KLSsJKGF1dG9fbG9hZF9zYWZlX3BhdGgsIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjKQotKwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlLCBzZXRfYXV0b19sb2Fk X3NhZmVfcGF0aCkKLSsJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwgYWRkX2F1dG9fbG9hZF9z YWZlX3BhdGgsIGZpbGVuYW1lX2lzX2luX2RpcikKLSsJKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjLCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3LgotKwkoc291cmNl X2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcgdmFyaWFibGUgaXNfc2FmZS4gIENhbGwKLSsJ ZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcyBub3QuCi0rCShzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCk6IE5ldyBmaWVsZCBsb2FkZWQuCi0rCShtYXliZV9hZGRfc2NyaXB0KTog QWRkIHBhcmFtZXRlciBsb2FkZWQuICBJbml0aWFsaXplIFNMT1Qgd2l0aCBpdC4KLSsJKHByaW50 X3NjcmlwdCk6IFVzZSBMT0FERUQgaW5kaWNhdG9yIGluc3RlYWQgb2YgRlVMTF9QQVRILiAgQ2hh bmdlCi0rCW91dHB1dCAiTWlzc2luZyIgdG8gIk5vIi4KLSsJKF9pbml0aWFsaXplX2F1dG9fbG9h ZCk6IE5ldyB2YXJpYWJsZSBjbWQuICBJbml0aWFsaXplCi0rCWF1dG9fbG9hZF9zYWZlX3BhdGgu ICBSZWdpc3RlciAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLAotKwkic2hvdyBhdXRvLWxvYWQg c2FmZS1wYXRoIiBhbmQgImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIi4KLSsJKiBhdXRvLWxvYWQu aCAobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLgotKwkoZmlsZV9pc19h dXRvX2xvYWRfc2FmZSk6IE5ldyBkZWNsYXJhdGlvbi4KLSsJKiBjb25maWcuaW46IFJlZ2VuZXJh dGUuCi0rCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotKwkqIGNvbmZpZ3VyZS5hYzogTmV3IHBh cmFtZXRlcnMgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKLSsJYW5kIC0td2l0aG91dC1hdXRv LWxvYWQtc2FmZS1wYXRoLgotKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xv YWRfZnJvbV9wZGlyXzEpCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBDaGVjayBm aWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZpcnN0LgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6 IENoZWNrIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgZm9yCi0rCUxPQ0FMX0dEQklOSVQuCi0rCSog cHl0aG9uL3B5LWF1dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxl KTogTmV3Ci0rCXZhcmlhYmxlIGlzX3NhZmUuICBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUu ICBSZXR1cm4gaWYgaXQgaXMgbm90LgotKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IENhbGwg ZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcwotKwlub3QuCi0rCi0rMjAx Mi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwot IAlhdXRvLWxvYWQ6IEltcGxlbWVudGF0aW9uLgotIAkqIE5FV1M6IE5ldyBkZXNjcmlwdGlvbnMg Zm9yICJpbmZvIGF1dG8tbG9hZCIsCi0gCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJp bmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvTkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv TkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4yODI3MDYzMTkgKzAyMDAKLUBA IC02Nyw2ICs2NywxMSBAQCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYKLSBzaG93 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKLSAgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIGluZmVy aW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCi0gCi0rc2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGggPGRpcjE+Wzo8ZGlyMj4uLi5dCi0rc2hvdyBhdXRvLWxvYWQgc2Fm ZS1wYXRoCi0rICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2Fm ZSB0byBhdXRvLWxvYWQgZmlsZXMuCi0rICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBk aWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotKwotICogTmV3IGNvbW1hbmQg bGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2Ug LS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEu NjA3NzM2MDIwICswMjAwCi1AQCAtMzIsNiArMzIsOSBAQAotICNpbmNsdWRlICJnZGJjbWQuaCIK LSAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93 LmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0rI2luY2x1ZGUgInJlYWRsaW5lL3RpbGRlLmgi Ci0rI2luY2x1ZGUgImNvbXBsZXRlci5oIgotIAotIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZp bGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVzLgotICAg IEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1n ZGIuZ2RiLiAgKi8KLUBAIC05MCw2ICs5MywxODEgQEAgc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdCAoc3RydWN0IHVpXwotIAkJICAgIHZhbHVlKTsKLSB9Ci0gCi0rLyogRGlyZWN0b3J5IGxp c3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90IGNoZWNrZWQgZm9y Ci0rICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkLiAg SXQgaXMgaW5pdGlhbGl6ZWQgYnkKLSsgICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQuICAqLwotK3N0 YXRpYyBjaGFyICphdXRvX2xvYWRfc2FmZV9wYXRoOwotKwotKy8qIFZlY3RvciBvZiBkaXJlY3Rv cnkgZWxlbWVudHMgb2YgQVVUT19MT0FEX1NBRkVfUEFUSCB3aXRoIGVhY2ggb25lIG5vcm1hbGl6 ZWQKLSsgICBieSB0aWxkZV9leHBhbmQgYW5kIHBvc3NpYmx5IGVhY2ggZW50cmllcyBoYXMgYWRk ZWQgaXRzIGdkYl9yZWFscGF0aAotKyAgIGNvdW50ZXJwYXJ0LiAgKi8KLStzdGF0aWMgVkVDIChj aGFyX3B0cikgKmF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjOwotKwotKy8qIFVwZGF0ZSBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYyBmcm9tIGN1cnJlbnQgQVVUT19MT0FEX1NBRkVfUEFUSC4gICovCi0r Ci0rc3RhdGljIHZvaWQKLSthdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0r ewotKyAgVkVDIChjaGFyX3B0cikgKmRpcl92ZWMgPSBOVUxMOwotKyAgdW5zaWduZWQgbGVuOwot KyAgaW50IGl4OwotKwotKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjKTsKLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9w dHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLSsgIGxlbiA9IFZFQ19sZW5ndGggKGNoYXJf cHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7Ci0rCi0rICAvKiBBcHBseSB0aWxkZV9leHBh bmQgYW5kIGdkYl9yZWFscGF0aCB0byBlYWNoIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDCi0rICAg ICBlbGVtZW50LiAgKi8KLSsgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKLSsgICAgewot KyAgICAgIGNoYXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjLCBpeCk7Ci0rICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRpcik7 Ci0rICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Ci0rCi0r ICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFu ZC1lZC4gICovCi0rICAgICAgeGZyZWUgKGRpcik7Ci0rICAgICAgVkVDX3JlcGxhY2UgKGNoYXJf cHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSsKLSsgICAgICAv KiBJZiBnZGJfcmVhbHBhdGggcmV0dXJucyBhIGRpZmZlcmVudCBjb250ZW50LCBhcHBlbmQgaXQu ICAqLwotKyAgICAgIGlmIChzdHJjbXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQpID09IDApCi0rCXhm cmVlIChyZWFsX3BhdGgpOwotKyAgICAgIGVsc2UKLSsJVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIs IGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOwotKyAgICB9Ci0rfQotKwotKy8q ICJzZXQiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24g dmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0r ewotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotK30KLSsKLSsvKiAic2hv dyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2YXJp YWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0 cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgaWYgKCp2YWx1ZSA9PSAwKQot KyAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNhZmUg dG8gbG9hZCBmcm9tIGFueSAiCi0rCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsKLSsgIGVsc2UK LSsgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIGl0IGlzIHNhZmUgdG8gIgotKwkJCSAgICAgICJhdXRvLWxvYWQgZmlsZXMgaXMgJXMu XG4iKSwKLSsJCSAgICAgIHZhbHVlKTsKLSt9Ci0rCi0rLyogImFkZC1hdXRvLWxvYWQtc2FmZS1w YXRoIiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uCi0r ICAgdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rYWRkX2F1dG9fbG9hZF9zYWZlX3Bh dGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBjaGFyICpzOwotKwotKyAgaWYg KGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAwKQotKyAgICBlcnJvciAoXygiXAotK0FkZGluZyBl bXB0eSBkaXJlY3RvcnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBz ZWN1cml0eS4gIFwKLStVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBpbnN0ZWFkIGlmIHlv dSBtZWFuIHRoYXQuIikpOwotKwotKyAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRvX2xv YWRfc2FmZV9wYXRoLCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7Ci0rICB4ZnJlZSAoYXV0b19s b2FkX3NhZmVfcGF0aCk7Ci0rICBhdXRvX2xvYWRfc2FmZV9wYXRoID0gczsKLSsKLSsgIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYgRklM RU5BTUUgaXMgZXF1YWwgdG8gRElSIG9yIGlmIEZJTEVOQU1FIGJlbG9uZ3MgdG8gdGhlCi0rICAg c3ViZGlyZWN0b3J5IERJUi4gIFJldHVybiAwIG90aGVyd2lzZS4gIGdkYl9yZWFscGF0aCBub3Jt YWxpemF0aW9uIGlzIG5ldmVyCi0rICAgZG9uZSBoZXJlLiAgKi8KLSsKLStzdGF0aWMgQVRUUklC VVRFX1BVUkUgaW50Ci0rZmlsZW5hbWVfaXNfaW5fZGlyIChjb25zdCBjaGFyICpmaWxlbmFtZSwg Y29uc3QgY2hhciAqZGlyKQotK3sKLSsgIHNpemVfdCBkaXJfbGVuID0gc3RybGVuIChkaXIpOwot KwotKyAgd2hpbGUgKGRpcl9sZW4gJiYgSVNfRElSX1NFUEFSQVRPUiAoZGlyW2Rpcl9sZW4gLSAx XSkpCi0rICAgIGRpcl9sZW4tLTsKLSsKLSsgIHJldHVybiAoZmlsZW5hbWVfbmNtcCAoZGlyLCBm aWxlbmFtZSwgZGlyX2xlbikgPT0gMAotKwkgICYmIChJU19ESVJfU0VQQVJBVE9SIChmaWxlbmFt ZVtkaXJfbGVuXSkKLSsJICAgICAgfHwgZmlsZW5hbWVbZGlyX2xlbl0gPT0gJ1wwJykpOwotK30K LSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIG9uZSBvZiBkaXJlY3Rvcnkg Y29tcG9uZW50cyBvZgotKyAgIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDLiAgUmV0dXJuIDAgb3Ro ZXJ3aXNlLgotKyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSBpcyBuZXZlciBjYWxs ZWQuCi0rICAgKkZJTEVOQU1FX1JFQUxQIG1heSBiZSB1cGRhdGVkIGJ5IGdkYl9yZWFscGF0aCBv ZiBGSUxFTkFNRSAtIGl0IGhhcyB0byBiZQotKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAqLwot KwotK3N0YXRpYyBpbnQKLStmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAo Y29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJCQljaGFyICoqZmlsZW5hbWVfcmVhbHApCi0rewot KyAgY2hhciAqZGlyOwotKyAgaW50IGl4OwotKwotKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRl IChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOyArK2l4KQotKyAg ICBpZiAoKmZpbGVuYW1lX3JlYWxwID09IE5VTEwgJiYgZmlsZW5hbWVfaXNfaW5fZGlyIChmaWxl bmFtZSwgZGlyKSkKLSsgICAgICBicmVhazsKLSsgIAotKyAgaWYgKGRpciA9PSBOVUxMKQotKyAg ICB7Ci0rICAgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQotKwkqZmlsZW5hbWVfcmVh bHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKLSsKLSsgICAgICBmb3IgKGl4ID0gMDsgVkVD X2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7Ci0r CSAgICsraXgpCi0rCWlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGly KSkKLSsJICBicmVhazsKLSsgICAgfQotKwotKyAgaWYgKGRpciAhPSBOVUxMKQotKyAgICByZXR1 cm4gMTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBp cyBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgb2YKLSsgICBBVVRPX0xPQURfU0FG RV9QQVRILiAgT3RoZXJ3aXNlIGNhbGwgd2FybmluZyBhbmQgcmV0dXJuIDAuICBGSUxFTkFNRSBk b2VzCi0rICAgbm90IGhhdmUgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KLSsKLSsgICBFeGlzdGVu Y2Ugb2YgRklMRU5BTUUgaXMgbm90IGNoZWNrZWQuICBGdW5jdGlvbiB3aWxsIHN0aWxsIGdpdmUg YSB3YXJuaW5nCi0rICAgZXZlbiBpZiB0aGUgY2FsbGVyIHdvdWxkIHF1aWV0bHkgc2tpcCBub24t ZXhpc3RpbmcgZmlsZSBpbiB1bnNhZmUKLSsgICBkaXJlY3RvcnkuICAqLwotKwotK2ludAotK2Zp bGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIGNoYXIg KmZpbGVuYW1lX3JlYWwgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rCi0r ICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxlbmFt ZV9yZWFsKTsKLSsKLSsgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3Zl YyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKLSsgICAgewotKyAgICAgIGRvX2NsZWFudXBz IChiYWNrX3RvKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotKyAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9z YWZlX3BhdGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotKyAgICB7Ci0rICAgICAg ZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICB3 YXJuaW5nIChfKCJGaWxlIFwiJXNcIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQgYnkg eW91ciAiCi0rCSAgICAgImBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gXCIlc1wiLiIpLAot KwkgICBmaWxlbmFtZV9yZWFsLCBhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLSsKLSsgIGRvX2NsZWFu dXBzIChiYWNrX3RvKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAvKiBEZWZpbml0aW9uIG9mIHNj cmlwdCBsYW5ndWFnZSBmb3IgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuICAqLwot IAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9n ZGIKLUBAIC05OSwxMyArMjc3LDIwIEBAIHN0YXRpYyB2b2lkCi0gc291cmNlX2dkYl9zY3JpcHRf Zm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCSAg ICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0rICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotICAgdm9sYXRpbGUgc3RydWN0 IGdkYl9leGNlcHRpb24gZTsKLSAKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZl IChmaWxlbmFtZSk7Ci0rCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUg dG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4g ICovCi0gICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRp bmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rICBtYXli ZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgaXNfc2FmZSwgZmlsZW5hbWUsIGZpbGVuYW1lLAot KwkJICAgICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKLSsKLSsgIGlmICghaXNfc2FmZSkKLSsgICAg cmV0dXJuOwotIAotICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0gICAgIHsKLUBA IC0xNDAsNiArMzI1LDkgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKLSAgICAgIGluYWNjZXNzaWJs ZSkuICAqLwotICAgY29uc3QgY2hhciAqZnVsbF9wYXRoOwotIAotKyAgLyogTm9uLXplcm8gaWYg dGhpcyBzY3JpcHQgaGFzIGJlZW4gbG9hZGVkLiAgKi8KLSsgIGludCBsb2FkZWQ7Ci0rCi0gICBj b25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKLSB9OwotIAotQEAgLTIzMiwx MiArNDIwLDEzIEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKLSAg IHJldHVybiBpbmZvOwotIH0KLSAKLS0vKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8g aGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KLS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUg c2NyaXB0IHdhc24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSsvKiBBZGQgc2NyaXB0IE5BTUUg aW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4gIExPQURFRCAxIGlmIHRo ZQotKyAgIHNjcmlwdCBoYXMgYmVlbiAoaXMgZ29pbmcgdG8pIGJlIGxvYWRlZCwgMCBvdGhlcndp c2UgKHN1Y2ggYXMgaWYgaXQgaGFzIG5vdAotKyAgIGJlZW4gZm91bmQpLiAgRlVMTF9QQVRIIGlz IE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCi0gICAgdHJ1 ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAKLSBp bnQKLS1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbywKLSttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbywgaW50IGxvYWRlZCwKLSAJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqZnVsbF9wYXRoLAotIAkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5n dWFnZSkKLSB7Ci1AQCAtMjcxLDYgKzQ2MCw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBh dXRvX2xvYWRfcHNwYWMKLSAJfQotICAgICAgIGVsc2UKLSAJKCpzbG90KS0+ZnVsbF9wYXRoID0g TlVMTDsKLSsgICAgICAoKnNsb3QpLT5sb2FkZWQgPSBsb2FkZWQ7Ci0gICAgICAgKCpzbG90KS0+ bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAgICAgfQotIAotQEAgLTQzMiw3ICs2MjIsNyBAQCBwcmlu dF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpCi0gCi0gICBjaGFpbiA9IG1ha2Vf Y2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7Ci0gCi0tICB1aV9v dXRfZmllbGRfc3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlll cyIgOiAiTWlzc2luZyIpOwotKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQi LCBzY3JpcHQtPmxvYWRlZCA/ICJZZXMiIDogIk5vIik7Ci0gICB1aV9vdXRfZmllbGRfc3RyaW5n ICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7Ci0gICB1aV9vdXRfdGV4dCAodWlvdXQs ICJcbiIpOwotIAotQEAgLTcxOCw2ICs5MDgsOCBAQCB2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9h ZCAodm9pZCk7Ci0gdm9pZAotIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0rICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kOwotKwotICAgYXV0b19sb2FkX3BzcGFjZV9kYXRh Ci0gICAgID0gcmVnaXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dpdGhfY2xlYW51cCAoYXV0b19s b2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOwotIAotQEAgLTc1Nyw0ICs5NDksMzAgQEAgVGhpcyBv cHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgotIAkgICBfKCJQcmludCB3aGV0aGVy IGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxuXAotIFVz YWdlOiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCi0gCSAgIGF1dG9fbG9hZF9pbmZv X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChE RUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNf dXBkYXRlICgpOwotKyAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21kICgic2FmZS1w YXRoIiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkJICAgICAmYXV0b19sb2FkX3NhZmVfcGF0aCwgXygi XAotK1NldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8g YXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCi0rU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBm cm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCi0rVmFyaW91 cyBmaWxlcyBsb2FkZWQgYXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicg b3B0aW9ucyBtdXN0XG5cCi0rYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIGxp c3RlZCBieSB0aGlzIG9wdGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAotK3ByaW50ZWQgYW5kIGZp bGUgd2lsbCBub3QgYmUgdXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBldmVu XG5cCi0rZW1wdHkgZGlyZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhlICdz ZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKLStUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZv ciB0aGUga2luZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLlxuXAot K1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5m ZXJpb3JzLiIpLAotKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoLAotKwkJCQkgICAg IHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwKLSsJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxp c3RfZ2V0ICgpLAotKwkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsK LSsgIGNtZCA9IGFkZF9jbWQgKCJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIsIGNsYXNzX3N1cHBv cnQsCi0rCQkgYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCQkgXygiQWRkIGVudHJpZXMgdG8g dGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlICIKLSsJCSAgICJ0 byBhdXRvLWxvYWQgZmlsZXMuXG5cCi0rU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBz YWZlLXBhdGgnIGFuZCAnc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0b1xuXAotK2FjY2VzcyB0 aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKLSsJCSAmY21kbGlzdCk7Ci0rICBzZXRf Y21kX2NvbXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwotIH0KLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEy LTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAotQEAgLTM5LDcgKzM5LDggQEAgZXh0ZXJu IGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZQotIGV4dGVybiBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICoKLSAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRp bmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwotIGV4dGVybiBpbnQgbWF5YmVfYWRk X3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0tCQkJ ICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkJICAgICBp bnQgbG9hZGVkLCBjb25zdCBjaGFyICpuYW1lLAotKwkJCSAgICAgY29uc3QgY2hhciAqZnVsbF9w YXRoLAotIAkJCSAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwot IGV4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCi0gCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdl KTsKLUBAIC01NCw0ICs1NSw2IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1 dG9fbG8KLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19j bWRsaXN0X2dldCAodm9pZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0 b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOwotIAotK2V4dGVybiBpbnQgZmlsZV9pc19h dXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotICNlbmRpZiAvKiBBVVRP X0xPQURfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnLmluCTIwMTIt MDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvY29uZmlnLmluCTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCi1AQCAtNDMs NiArNDMsOSBAQAotICAgIG1vdmVkLiAqLwotICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQot IAotKy8qIERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KLSsj dW5kZWYgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRICi0rCi0gLyogRGVmaW5lIHRvIEJGRCdz IGRlZmF1bHQgYXJjaGl0ZWN0dXJlLiAqLwotICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICi0gCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDo0Njo0 Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJ MjAxMi0wNC0xOCAwMDo0OToyMS42MTE3MzYwMTAgKzAyMDAKLUBAIC05NTUsNiArOTU1LDcgQEAg d2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKLSB3aXRoX2dkYl9kYXRhZGlyCi0gd2l0aF9yZWxvY2F0 ZWRfc291cmNlcwotIHdpdGhfcnBtCi0rd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCi0gZW5hYmxl X3RhcmdldHMKLSBlbmFibGVfNjRfYml0X2JmZAotIGVuYWJsZV9nZGJjbGkKLUBAIC0xNjY2LDYg KzE2NjcsMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCi0gICAt LXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVi dWdpbmZvcyAoeWVzL25vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxp YnJwbS5zbykKLSsgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxl cwotKyAgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSAgIC0t d2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBv cnQKLSAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5z dGVhZCBvZiB0aGUgdGVybWNhcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQot QEAgLTg0NzcsNiArODQ4MiwzMiBAQCAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkUlBNX1BL R19FUlJPCi0gICBmaQotIGZpCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKLSsk YXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIg PiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHdh cyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9IHNl dDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRlc3Qg IiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotKyAgIHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aD0iIgotKyBmaQotK2Vsc2UKLSsgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aD0iJHByZWZpeCIKLStmaQotKwotKwotKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJl Zml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0rICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05F ICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8g JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aGAKLSsgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAk YWNfZGVmaW5lX2RpcmAKLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmluZSBE RUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgotK19BQ0VPRgotKwot KwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+JjUKLSskYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aCIgPiY2OyB9Ci0rCi0gCi0gCi0gc3ViZGlycz0iJHN1YmRpcnMgdGVzdHN1aXRlIgot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTgg MDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29u ZmlndXJlLmFjCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCi1AQCAtMzM5LDYg KzMzOSwxOCBAQCBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJhCi0gICBm aQotIGZpCi0gIAotK0FDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUt cGF0aF0pCi0rQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwKLStBU19IRUxQX1NUUklO RyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sIFtkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0 by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9j YXRpb25zXSksCi0rW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsg dGhlbgotKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgotKyBmaV0sCi0rW3dpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCJdKQotK0FDX0RFRklORV9ESVIoREVGQVVMVF9BVVRP X0xPQURfU0FGRV9QQVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCSAgICAgIFtEaXJl Y3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKLStBQ19NU0dfUkVTVUxU KFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKLSsKLSBBQ19DT05GSUdfU1VCRElSUyh0ZXN0 c3VpdGUpCi0gCi0gIyBDaGVjayB3aGV0aGVyIHRvIHN1cHBvcnQgYWx0ZXJuYXRpdmUgdGFyZ2V0 IGNvbmZpZ3VyYXRpb25zCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhy ZWFkLWRiLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xp bnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0 OToyMS42MTI3MzYwMDcgKzAyMDAKLUBAIC04NjgsNyArODY4LDExIEBAIHRyeV90aHJlYWRfZGJf bG9hZF9mcm9tX3BkaXJfMSAoc3RydWN0IG8KLSAgIC8qIFRoaXMgc2hvdWxkIGF0IG1pbmltdW0g aGl0IHRoZSBmaXJzdCBjaGFyYWN0ZXIuICAqLwotICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVMTCk7 Ci0gICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKLS0gIHJlc3VsdCA9IHRyeV90 aHJlYWRfZGJfbG9hZCAocGF0aCk7Ci0rCi0rICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KHBhdGgpKQotKyAgICByZXN1bHQgPSAwOwotKyAgZWxzZQotKyAgICByZXN1bHQgPSB0cnlfdGhy ZWFkX2RiX2xvYWQgKHBhdGgpOwotIAotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgcmV0 dXJuIHJlc3VsdDsKLUBAIC05MzQsNyArOTM4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9t X2RpciAoY29uc3QgY2hhcgotICAgbWVtY3B5IChwYXRoLCBkaXIsIGRpcl9sZW4pOwotICAgcGF0 aFtkaXJfbGVuXSA9ICcvJzsKLSAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJF QURfREJfU08pOwotLSAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLSsKLSsg IGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCi0rICAgIHJlc3VsdCA9IDA7Ci0r ICBlbHNlCi0rICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Ci0gCi0gICBk b19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gICByZXR1cm4gcmVzdWx0OwotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjEy NzM2MDA3ICswMjAwCi1AQCAtMTAyNiw3ICsxMDI2LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAq ZGF0YSkKLSAgICAgewotICAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0g Z2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKLSAKLS0gICAgICBpZiAoIWluaGliaXRfZ2Ri aW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsgICAgICBpZiAoIWluaGliaXRfZ2Ri aW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdAotKwkgICYmIGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGxvY2FsX2dkYmluaXQpKQotIAl7Ci0gCSAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf bG9hZGVkID0gMTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRl eGluZm8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYy MDczNTk4NyArMDIwMAotQEAgLTIwODAxLDYgKzIwODAxLDggQEAgZ2RiLXNjcmlwdHM6ICBBdXRv LWxvYWRpbmcgb2YgY2FubmVkIHNlcQotIGxpYnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBp bmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCi0gbG9jYWwtZ2RiaW5pdDogIEF1 dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBpcyBv bi4KLSBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBv bi4KLStzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2Fm ZSB0byBhdXRvLWxvYWQgZmlsZXMKLSsgICAgICAgICAgICBpcyAvdXNyL2xvY2FsLgotIEBlbmQg c21hbGxleGFtcGxlCi0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMDg3MiwxMiAr MjA4NzQsMTkgQEAgVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCi0gQHRh YiBTaG93IHNldHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotIEBpdGVtIEB4cmVm e2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0gQHRhYiBTaG93IHN0YXRlIG9mIHRocmVh ZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aH0uCi0rQHRhYiBDb250cm9sIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2Fk aW5nLgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0uCi0rQHRhYiBTaG93 IGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgotK0BpdGVtIEB4cmVm e2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KLStAdGFiIEFkZCBkaXJlY3RvcnkgdHJ1c3RlZCBm b3IgYXV0b21hdGljIGxvYWRpbmcuCi0gQGVuZCBtdWx0aXRhYmxlCi0gCi0gQG1lbnUKLSAqIElu aXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotICogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAg ICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLSAqIG9i amZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1 dG8tbG9hZCBnZGItc2NyaXB0fQotKyogQXV0by1sb2FkaW5nIHNhZmUgcGF0aDo6ICAgICAgICAg ICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0KLSBAeHJlZntQeXRo b24gQXV0by1sb2FkaW5nfS4KLSBAZW5kIG1lbnUKLSAKLUBAIC0yMDk3OCw2ICsyMDk4NywxMDQg QEAgYXV0by1sb2FkZWQuCi0gSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKLSBtYXRjaGluZyBuYW1lcyBhcmUg cHJpbnRlZC4KLSAKLStAbm9kZSBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoCi0rQHN1YnNlY3Rpb24g U2VjdXJpdHkgcmVzdHJpY3Rpb24gZm9yIGF1dG8tbG9hZGluZwotK0BjaW5kZXggYXV0by1sb2Fk aW5nIHNhZmUtcGF0aAotKwotK0FzIHRoZSBmaWxlcyBvZiBpbmZlcmlvciBjYW4gY29tZSBmcm9t IHVudHJ1c3RlZCBzb3VyY2UgKHN1Y2ggYXMgc3VibWl0dGVkIGJ5Ci0rYW4gYXBwbGljYXRpb24g dXNlcikgQHZhbHVle0dEQk59IGRvZXMgbm90IGFsd2F5cyBsb2FkIGFueSBmaWxlcyBhdXRvbWF0 aWNhbGx5LgotK0B2YWx1ZXtHREJOfSBwcm92aWRlcyB0aGUgQHNhbXB7c2V0IGF1dG8tbG9hZCBz YWZlLXBhdGh9IHNldHRpbmcgdG8gbGlzdAotK2RpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGxvYWRp bmcgZmlsZXMgbm90IGV4cGxpY2l0bHkgcmVxdWVzdGVkIGJ5IHVzZXIuCi0rCi0rSWYgdGhlIHBh dGggaXMgbm90IHNldCBwcm9wZXJseSB5b3Ugd2lsbCBzZWUgYSB3YXJuaW5nIGFuZCB0aGUgZmls ZSB3aWxsIG5vdAotK2dldCBsb2FkZWQ6Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyQgLi9nZGIgLXEg Li9nZGIKLStSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgot K3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcg aGFzIGJlZW4KLSsgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRo JyBzZXQgdG8gIi91c3IvbG9jYWwiLgotK3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dk Yi1nZGIucHkiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlv dXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rQGVuZCBzbWFs bGV4YW1wbGUKLSsKLStUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xs ZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9y e3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBzYWZlLXBh dGgKLStAaXRlbSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAdmFye2RpcmVjdG9yaWVzfQotK1Nl dCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyAoYW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0cnVz dGVkIGZvciBhdXRvbWF0aWMKLStsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIFlv dSBjYW4gYWxzbyBlbnRlciBhIHNwZWNpZmljIHRydXN0ZWQgZmlsZS4KLStUaGUgbGlzdCBvZiBk aXJlY3RvcmllcyB1c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQg VW5peAotK3N5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2Vw YXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQotK3RvIHRoZSBAZW52e1BBVEh9IGVudmlyb25t ZW50IHZhcmlhYmxlLgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofQotK0Br aW5kZXggc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgc2Fm ZS1wYXRoCi0rU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0 aWMgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mCi0rc2NyaXB0cy4KLSsKLStAYW5jaG9ye2FkZC1h dXRvLWxvYWQtc2FmZS1wYXRofQotK0BraW5kZXggYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKLStA aXRlbSBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aAotK0FkZCBhbiBlbnRyeSAob3IgbGlzdCBvZiBl bnRyaWVzKSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMKLSts b2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5IGJl IGRlbGltaXRlZCBieSB0aGUKLStob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4g dXNlLgotK0BlbmQgdGFibGUKLSsKLStTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkg c3RyaW5nIGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KLStUaGlzIHZhcmlhYmxl IGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxl IGJ5IHRoZQotK3N5c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291 cmNlIGRpcmVjdG9yaWVzIGluIGluaXQgZmlsZXMgaW4KLSt0aGVpciBob21lIGRpcmVjdG9yaWVz IChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVk Ci0raW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQotKyhAcHhyZWZ7SW5pdCBGaWxl IGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0pLgotKwotK1RvIGZvcmNl IEB2YWx1ZXtHREJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRo ZSBwcmV2aW91cwotK2V4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcg d2F5czoKLSsKLStAaXRlbWl6ZSBAYnVsbGV0Ci0rQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8t bG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RiCi0rU3BlY2lmeSB0aGlzIHRydXN0ZWQgZGlyZWN0b3J5 IChvciBhIGZpbGUpIGFzIGFkZGl0aW9uYWwgY29tcG9uZW50IG9mIHRoZSBsaXN0LgotK1lvdSBo YXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5 Ci0rYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNy Oi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCi0rCi0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQotK1NwZWNp ZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEg c2luZ2xlCi0rQHZhbHVle0dEQk59IHNlc3Npb24uCi0rCi0rQGl0ZW0gQGtiZHtnZGIgLWlleCAi c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KLStEaXNhYmxlIGF1dG8tbG9hZGlu ZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotK1RoaXMgYXNzdW1l cyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lv biB3aWxsIGNvbWUKLStmcm9tIHRydXN0ZWQgc291cmNlcy4KLSsKLStAaXRlbSBAa2Jkey4vY29u ZmlndXJlIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofQotK0R1cmluZyBjb21waWxhdGlv biBvZiBAdmFsdWV7R0RCTn0geW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5 LgotK1RoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0 aGlzIEB2YWx1ZXtHREJOfSBjb21lIGZyb20KLSt0cnVzdGVkIHNvdXJjZXMuCi0rQGVuZCBpdGVt aXplCi0rCi0rT24gdGhlIG90aGVyIGhhbmQgeW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgZm9yYmlk IGF1dG9tYXRpYyBmaWxlcyBsb2FkaW5nIHdoaWNoCi0rYWxzbyBzdXBwcmVzc2VzIGFueSBzdWNo IHdhcm5pbmcgbWVzc2FnZXM6Ci0rCi0rQGl0ZW1pemUgQGJ1bGxldAotK0BpdGVtIEBrYmR7Z2Ri IC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KLStZb3UgY2FuIHVzZSBAdmFsdWV7 R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Np b24uCi0rCi0rQGl0ZW0gQHNhbXB7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99 Ci0rRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkgZm9yIHRoZSB1c2VyCi0rKEBweHJlZntI b21lIERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFdoaWxlIGl0IGlzIGltcHJvYmFibGUsIHlvdSBj b3VsZCBhbHNvCi0rdXNlIHN5c3RlbSBpbml0IGZpbGUgaW5zdGVhZCAoQHB4cmVme1N5c3RlbS13 aWRlIGNvbmZpZ3VyYXRpb259KS4KLStAZW5kIGl0ZW1pemUKLSsKLStUaGlzIHNldHRpbmcgYXBw bGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBlbnRyeSBt YXRjaGVzCi0rQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxzbyByZXNv bHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCi0rdGhlaXIgY2Fub25pY2FsIGZvcm0gKHR5cGlj YWxseSByZXNvbHZpbmcgc3ltYm9saWMgbGlua3MpIGFuZCBjb21wYXJlIHRoZQotK2VudHJpZXMg YWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBjYW5vbmljYWxpemVzIG1vc3Qgb2YgdGhlIGZp bGVuYW1lcyBvbiBpdHMKLStvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEg Y2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKLStyZWNvbW1lbmRlZCB0byBiZSBlbnRl cmVkLgotKwotIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2Fy bmluZ3MgYW5kIE1lc3NhZ2VzCi0gCi1AQCAtMjQ5NTUsMTAgKzI1MDYyLDEwIEBAIEV4YW1wbGU6 Ci0gCi0gQHNtYWxsZXhhbXBsZQotIChnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz Ci0tTG9hZGVkICBTY3JpcHQKLS1ZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Ci0tICAgICAg ICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKLS1NaXNzaW5nIG15LWZvby1w cmV0dHktcHJpbnRlcnMucHkKLStMb2FkZWQgU2NyaXB0Ci0rWWVzICAgIHB5LXNlY3Rpb24tc2Ny aXB0LnB5Ci0rICAgICAgIGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotK05v ICAgICBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSBAZW5k IHRhYmxlCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8t bG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRo b24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0x OCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKLUBAIC03MiwxNCArNzIsMTkgQEAgc3RhdGljIHZv aWQKLSBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgRklMRSAqZmlsZSwKLSAJCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsK LSsgIGludCBpc19zYWZlOwotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm87Ci0gCi0rICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUp OwotKwotICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5m byBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCi0gICAgICBjYW4gcHJpbnQgaXQuICAqLwotICAg cHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZp bGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotKyAgbWF5YmVfYWRk X3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFtZSwKLSsJCSAg ICAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0gCi0tICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOwotKyAgaWYgKGlzX3NhZmUpCi0r ICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmaWxlLCBmaWxl bmFtZSk7Ci0gfQotIAotIC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4KLUBA IC0xNDcsNiArMTUyLDkgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUg KgotIAl7Ci0gCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJICBtYWtlX2NsZWFu dXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKwotKwkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSAoZnVsbF9wYXRoKSkKLSsJICAgIG9wZW5lZCA9IDA7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsK LUBAIC0xNjcsNyArMTc1LDcgQEAgVXNlIGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VYUF0n IHRvCi0gCi0gCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3Nl LiAgKi8KLSAKLS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNl X2luZm8sIGZpbGUsIGZ1bGxfcGF0aCwKLSsgICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRk X3NjcmlwdCAocHNwYWNlX2luZm8sIG9wZW5lZCwgZmlsZSwgZnVsbF9wYXRoLAotIAkJCQkJJnNj cmlwdF9sYW5ndWFnZV9weXRob24pOwotIAotICAgICAgIC8qIElmIHRoaXMgZmlsZSBpcyBub3Qg Y3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1v YmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKLUBA IC0zNyw2ICszNyw3IEBAIGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQot IHNldCByZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5LmluICR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIu cHldCi0gCi0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9weXRob25fZmlsZX0i ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0gIyBW ZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktc2VjdGlvbi1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2Vj dGlvbi1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCi1AQCAt NDksNiArNDksNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSBz ZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9LnB5XQotIAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIv JHN1YmRpcgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHty ZW1vdGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0gZ2RiX2xvYWQg JHtiaW5maWxlfQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMTFvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTExb2YyMi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM2OGIwCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTExb2YyMi5wYXRjaApAQCAtMCwwICsxLDc0NCBAQAorW3Bh dGNoIzQgNS84XSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwOTIuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKKyMjIC0xLDUgKzEsMzkgQEAKKyAyMDEyLTA0LTE3 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCU5ldyBv cHRpb24gInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KKysJKiBORVdTOiBOZXcgY29tbWFuZHMg InNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorKwlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUtcGF0 aCIuCisrCSogYXV0by1sb2FkLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaCwgcmVhZGxpbmUvdGlsZGUu aCBhbmQgY29tcGxldGVyLmguCisrCShhdXRvX2xvYWRfc2FmZV9wYXRoLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYykKKysJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSwgc2V0X2F1dG9f bG9hZF9zYWZlX3BhdGgpCisrCShzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsIGFkZF9hdXRvX2xv YWRfc2FmZV9wYXRoLCBmaWxlbmFtZV9pc19pbl9kaXIpCisrCShmaWxlbmFtZV9pc19pbl9hdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYywgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldy4KKysJKHNv dXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IHZhcmlhYmxlIGlzX3NhZmUuICBDYWxs CisrCWZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90LgorKwkoc3Ry dWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbG9hZGVkLgorKwkobWF5YmVfYWRkX3Njcmlw dCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLiAgSW5pdGlhbGl6ZSBTTE9UIHdpdGggaXQuCisrCShw cmludF9zY3JpcHQpOiBVc2UgTE9BREVEIGluZGljYXRvciBpbnN0ZWFkIG9mIEZVTExfUEFUSC4g IENoYW5nZQorKwlvdXRwdXQgIk1pc3NpbmciIHRvICJObyIuCisrCShfaW5pdGlhbGl6ZV9hdXRv X2xvYWQpOiBOZXcgdmFyaWFibGUgY21kLiAgSW5pdGlhbGl6ZQorKwlhdXRvX2xvYWRfc2FmZV9w YXRoLiAgUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiwKKysJInNob3cgYXV0by1s b2FkIHNhZmUtcGF0aCIgYW5kICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIuCisrCSogYXV0by1s b2FkLmggKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVyIGxvYWRlZC4KKysJKGZpbGVf aXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgZGVjbGFyYXRpb24uCisrCSogY29uZmlnLmluOiBSZWdl bmVyYXRlLgorKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKysJKiBjb25maWd1cmUuYWM6IE5l dyBwYXJhbWV0ZXJzIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrCWFuZCAtLXdpdGhvdXQt YXV0by1sb2FkLXNhZmUtcGF0aC4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3RocmVhZF9k Yl9sb2FkX2Zyb21fcGRpcl8xKQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogQ2hl Y2sgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBmaXJzdC4KKysJKiBtYWluLmMgKGNhcHR1cmVkX21h aW4pOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZvcgorKwlMT0NBTF9HREJJTklULgor KwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2Jq ZmlsZSk6IE5ldworKwl2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbCBmaWxlX2lzX2F1dG9fbG9hZF9z YWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KKysJKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBD YWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMKKysJbm90LgorKwor KzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K KysKKyAJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KKyAJKiBORVdTOiBOZXcgZGVzY3JpcHRp b25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAorIAkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMi LCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMjgyNzA2MzE5ICswMjAw CitAQCAtNjcsNiArNjcsMTEgQEAgc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCisg c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisgICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBp bmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgorIAorK3Nl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQorK3Nob3cgYXV0by1sb2Fk IHNhZmUtcGF0aAorKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgorKyAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBt YXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyAqIE5ldyBjb21t YW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBM aWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5 OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTMyLDYgKzMyLDkgQEAKKyAjaW5jbHVkZSAiZ2RiY21k LmgiCisgI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc2V0 c2hvdy5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorKyNpbmNsdWRlICJyZWFkbGluZS90aWxk ZS5oIgorKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKKyAKKyAvKiBUaGUgc3VmZml4IG9mIHBlci1v YmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4K KyAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJm b28tZ2RiLmdkYi4gICovCitAQCAtOTAsNiArOTMsMTgxIEBAIHNob3dfYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQgKHN0cnVjdCB1aV8KKyAJCSAgICB2YWx1ZSk7CisgfQorIAorKy8qIERpcmVjdG9y eSBsaXN0IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gIEl0IGlzIG5vdCBjaGVja2Vk IGZvcgorKyAgIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRl ZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8K KytzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKKysKKysvKiBWZWN0b3Igb2YgZGly ZWN0b3J5IGVsZW1lbnRzIG9mIEFVVE9fTE9BRF9TQUZFX1BBVEggd2l0aCBlYWNoIG9uZSBub3Jt YWxpemVkCisrICAgYnkgdGlsZGVfZXhwYW5kIGFuZCBwb3NzaWJseSBlYWNoIGVudHJpZXMgaGFz IGFkZGVkIGl0cyBnZGJfcmVhbHBhdGgKKysgICBjb3VudGVycGFydC4gICovCisrc3RhdGljIFZF QyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsKKysKKysvKiBVcGRhdGUgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJvbSBjdXJyZW50IEFVVE9fTE9BRF9TQUZFX1BBVEguICAq LworKworK3N0YXRpYyB2b2lkCisrYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lk KQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVjID0gTlVMTDsKKysgIHVuc2lnbmVkIGxl bjsKKysgIGludCBpeDsKKysKKysgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYyk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2No YXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7CisrICBsZW4gPSBWRUNfbGVuZ3RoIChj aGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOworKworKyAgLyogQXBwbHkgdGlsZGVf ZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQwor KyAgICAgZWxlbWVudC4gICovCisrICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCisrICAg IHsKKysgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYywgaXgpOworKyAgICAgIGNoYXIgKmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChk aXIpOworKyAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOwor KworKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9l eHBhbmQtZWQuICAqLworKyAgICAgIHhmcmVlIChkaXIpOworKyAgICAgIFZFQ19yZXBsYWNlIChj aGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7CisrCisrICAg ICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5k IGl0LiAgKi8KKysgICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQor Kwl4ZnJlZSAocmVhbF9wYXRoKTsKKysgICAgICBlbHNlCisrCVZFQ19zYWZlX3B1c2ggKGNoYXJf cHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysgICAgfQorK30KKysK KysvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0 aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfc2FmZV9w YXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj KQorK3sKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKyt9CisrCisrLyog InNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24g dmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRo IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGlmICgqdmFsdWUgPT0g MCkKKysgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkIGZpbGVzIGFyZSBz YWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorKwkJCSAgICAgICJkaXJlY3RvcnkuXG4iKSk7CisrICBl bHNlCisrICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkxpc3Qgb2YgZGlyZWN0b3JpZXMg ZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvICIKKysJCQkgICAgICAiYXV0by1sb2FkIGZpbGVzIGlz ICVzLlxuIiksCisrCQkgICAgICB2YWx1ZSk7CisrfQorKworKy8qICJhZGQtYXV0by1sb2FkLXNh ZmUtcGF0aCIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlv bgorKyAgIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2FkZF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgY2hhciAqczsKKysKKysg IGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkKKysgICAgZXJyb3IgKF8oIlwKKytBZGRp bmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8tbG9hZCBzYWZlLXBh dGggc2VjdXJpdHkuICBcCisrVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgaW5zdGVhZCBp ZiB5b3UgbWVhbiB0aGF0LiIpKTsKKysKKysgIHMgPSB4c3RycHJpbnRmICgiJXMlYyVzIiwgYXV0 b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFyZ3MpOworKyAgeGZyZWUgKGF1 dG9fbG9hZF9zYWZlX3BhdGgpOworKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHM7CisrCisrICBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQorKworKy8qIFJldHVybiAxIGlm IEZJTEVOQU1FIGlzIGVxdWFsIHRvIERJUiBvciBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIHRoZQor KyAgIHN1YmRpcmVjdG9yeSBESVIuICBSZXR1cm4gMCBvdGhlcndpc2UuICBnZGJfcmVhbHBhdGgg bm9ybWFsaXphdGlvbiBpcyBuZXZlcgorKyAgIGRvbmUgaGVyZS4gICovCisrCisrc3RhdGljIEFU VFJJQlVURV9QVVJFIGludAorK2ZpbGVuYW1lX2lzX2luX2RpciAoY29uc3QgY2hhciAqZmlsZW5h bWUsIGNvbnN0IGNoYXIgKmRpcikKKyt7CisrICBzaXplX3QgZGlyX2xlbiA9IHN0cmxlbiAoZGly KTsKKysKKysgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1IgKGRpcltkaXJfbGVu IC0gMV0pKQorKyAgICBkaXJfbGVuLS07CisrCisrICByZXR1cm4gKGZpbGVuYW1lX25jbXAgKGRp ciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKKysJICAmJiAoSVNfRElSX1NFUEFSQVRPUiAoZmls ZW5hbWVbZGlyX2xlbl0pCisrCSAgICAgIHx8IGZpbGVuYW1lW2Rpcl9sZW5dID09ICdcMCcpKTsK Kyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgYmVsb25ncyB0byBvbmUgb2YgZGlyZWN0 b3J5IGNvbXBvbmVudHMgb2YKKysgICBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQy4gIFJldHVybiAw IG90aGVyd2lzZS4KKysgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgaXMgbmV2ZXIg Y2FsbGVkLgorKyAgICpGSUxFTkFNRV9SRUFMUCBtYXkgYmUgdXBkYXRlZCBieSBnZGJfcmVhbHBh dGggb2YgRklMRU5BTUUgLSBpdCBoYXMgdG8gYmUKKysgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAg Ki8KKysKKytzdGF0aWMgaW50CisrZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCQkJY2hhciAqKmZpbGVuYW1lX3JlYWxwKQor K3sKKysgIGNoYXIgKmRpcjsKKysgIGludCBpeDsKKysKKysgIGZvciAoaXggPSAwOyBWRUNfaXRl cmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsgKytpeCkK KysgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMICYmIGZpbGVuYW1lX2lzX2luX2RpciAo ZmlsZW5hbWUsIGRpcikpCisrICAgICAgYnJlYWs7CisrICAKKysgIGlmIChkaXIgPT0gTlVMTCkK KysgICAgeworKyAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKKysJKmZpbGVuYW1l X3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCisrICAgICAgZm9yIChpeCA9IDA7 IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIp OworKwkgICArK2l4KQorKwlpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAs IGRpcikpCisrCSAgYnJlYWs7CisrICAgIH0KKysKKysgIGlmIChkaXIgIT0gTlVMTCkKKysgICAg cmV0dXJuIDE7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5B TUUgaXMgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIG9mCisrICAgQVVUT19MT0FE X1NBRkVfUEFUSC4gIE90aGVyd2lzZSBjYWxsIHdhcm5pbmcgYW5kIHJldHVybiAwLiAgRklMRU5B TUUgZG9lcworKyAgIG5vdCBoYXZlIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCisrCisrICAgRXhp c3RlbmNlIG9mIEZJTEVOQU1FIGlzIG5vdCBjaGVja2VkLiAgRnVuY3Rpb24gd2lsbCBzdGlsbCBn aXZlIGEgd2FybmluZworKyAgIGV2ZW4gaWYgdGhlIGNhbGxlciB3b3VsZCBxdWlldGx5IHNraXAg bm9uLWV4aXN0aW5nIGZpbGUgaW4gdW5zYWZlCisrICAgZGlyZWN0b3J5LiAgKi8KKysKKytpbnQK KytmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBj aGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwor KworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZmls ZW5hbWVfcmVhbCk7CisrCisrICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCisrICAgIHsKKysgICAgICBkb19jbGVh bnVwcyAoYmFja190byk7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKysgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKKysgICAgeworKyAg ICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKwor KyAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVk IGJ5IHlvdXIgIgorKwkgICAgICJgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvIFwiJXNcIi4i KSwKKysJICAgZmlsZW5hbWVfcmVhbCwgYXV0b19sb2FkX3NhZmVfcGF0aCk7CisrCisrICBkb19j bGVhbnVwcyAoYmFja190byk7CisrICByZXR1cm4gMDsKKyt9CisrCisgLyogRGVmaW5pdGlvbiBv ZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAg Ki8KKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3Vh Z2VfZ2RiCitAQCAtOTksMTMgKzI3NywyMCBAQCBzdGF0aWMgdm9pZAorIHNvdXJjZV9nZGJfc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKyAJ CQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworKyAgaW50IGlzX3NhZmU7CisgICBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisgCisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAoZmlsZW5hbWUpOworKworICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRh YmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQg aXQuICAqLworICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKyAg bWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFt ZSwKKysJCSAgICAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBpZiAoIWlzX3NhZmUpCisr ICAgIHJldHVybjsKKyAKKyAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQorICAgICB7 CitAQCAtMTQwLDYgKzMyNSw5IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0CisgICAgICBpbmFjY2Vz c2libGUpLiAgKi8KKyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKyAKKysgIC8qIE5vbi16ZXJv IGlmIHRoaXMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZC4gICovCisrICBpbnQgbG9hZGVkOworKwor ICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7CisgfTsKKyAKK0BAIC0y MzIsMTIgKzQyMCwxMyBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChz CisgICByZXR1cm4gaW5mbzsKKyB9CisgCistLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdF IHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYg dGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisrLyogQWRkIHNjcmlwdCBO QU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uICBMT0FERUQgMSBp ZiB0aGUKKysgICBzY3JpcHQgaGFzIGJlZW4gKGlzIGdvaW5nIHRvKSBiZSBsb2FkZWQsIDAgb3Ro ZXJ3aXNlIChzdWNoIGFzIGlmIGl0IGhhcyBub3QKKysgICBiZWVuIGZvdW5kKS4gIEZVTExfUEFU SCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBpcworICAg IHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisg CisgaW50CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm8sCisrbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8sIGludCBsb2FkZWQsCisgCQkgIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAq bGFuZ3VhZ2UpCisgeworQEAgLTI3MSw2ICs0NjAsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjCisgCX0KKyAgICAgICBlbHNlCisgCSgqc2xvdCktPmZ1bGxfcGF0 aCA9IE5VTEw7CisrICAgICAgKCpzbG90KS0+bG9hZGVkID0gbG9hZGVkOworICAgICAgICgqc2xv dCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7CisgICAgIH0KKyAKK0BAIC00MzIsNyArNjIyLDcgQEAg cHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaQorIAorICAgY2hhaW4gPSBt YWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworIAorLSAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ ICJZZXMiIDogIk1pc3NpbmciKTsKKysgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9h ZGVkIiwgc2NyaXB0LT5sb2FkZWQgPyAiWWVzIiA6ICJObyIpOworICAgdWlfb3V0X2ZpZWxkX3N0 cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOworICAgdWlfb3V0X3RleHQgKHVp b3V0LCAiXG4iKTsKKyAKK0BAIC03MTgsNiArOTA4LDggQEAgdm9pZCBfaW5pdGlhbGl6ZV9hdXRv X2xvYWQgKHZvaWQpOworIHZvaWQKKyBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgewor KyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKKysKKyAgIGF1dG9fbG9hZF9wc3BhY2Vf ZGF0YQorICAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFudXAgKGF1 dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKyAKK0BAIC03NTcsNCArOTQ5LDMwIEBAIFRo aXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKKyAJICAgXygiUHJpbnQgd2hl dGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVuIGxvYWRlZC5cblwK KyBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkgICBhdXRvX2xvYWRf aW5mb19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1 cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjX3VwZGF0ZSAoKTsKKysgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAoInNh ZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9fbG9hZF9zYWZlX3BhdGgs IF8oIlwKKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3Jp ZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1Zh cmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAu Li4nIG9wdGlvbnMgbXVzdFxuXAorK2JlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJlY3Rvcmll cyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwKKytwcmludGVkIGFu ZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5IHN0cmluZyAob3Ig ZXZlblxuXAorK2VtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55IGZpbGUgZm9yIHRo ZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCisrVGhpcyBvcHRpb24gaXMgaWdub3Jl ZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy5c blwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVk IGluZmVyaW9ycy4iKSwKKysJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCwKKysJCQkJ ICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCQkJCSAgICAgYXV0b19sb2FkX3NldF9j bWRsaXN0X2dldCAoKSwKKysJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7 CisrCisrICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFzc19z dXBwb3J0LAorKwkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkJIF8oIkFkZCBlbnRyaWVz IHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSAiCisrCQkg ICAidG8gYXV0by1sb2FkIGZpbGVzLlxuXAorK1NlZSB0aGUgY29tbWFuZHMgJ3NldCBhdXRvLWxv YWQgc2FmZS1wYXRoJyBhbmQgJ3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG9cblwKKythY2Nl c3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCisrCQkgJmNtZGxpc3QpOworKyAg c2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsKKyB9CitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDY6NDcu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJ MjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKK0BAIC0zOSw3ICszOSw4IEBAIGV4 dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGUKKyBleHRlcm4gc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisgICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKyBleHRlcm4gaW50IG1heWJl X2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAor LQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJCSAg ICAgaW50IGxvYWRlZCwgY29uc3QgY2hhciAqbmFtZSwKKysJCQkgICAgIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aCwKKyAJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdl KTsKKyBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAorIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5n dWFnZSk7CitAQCAtNTQsNCArNTUsNiBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KiphdXRvX2xvCisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3No b3dfY21kbGlzdF9nZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKytleHRlcm4gaW50IGZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKyAjZW5kaWYgLyog QVVUT19MT0FEX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4K Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy5pbgky MDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAg LTQzLDYgKzQzLDkgQEAKKyAgICBtb3ZlZC4gKi8KKyAjdW5kZWYgREVCVUdESVJfUkVMT0NBVEFC TEUKKyAKKysvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICov CisrI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8qIERlZmluZSB0byBC RkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KKyAjdW5kZWYgREVGQVVMVF9CRkRfQVJDSAor IAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6 NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCitAQCAtOTU1LDYgKzk1NSw3 IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCisgd2l0aF9nZGJfZGF0YWRpcgorIHdpdGhfcmVs b2NhdGVkX3NvdXJjZXMKKyB3aXRoX3JwbQorK3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aAorIGVu YWJsZV90YXJnZXRzCisgZW5hYmxlXzY0X2JpdF9iZmQKKyBlbmFibGVfZ2RiY2xpCitAQCAtMTY2 Niw2ICsxNjY3LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcwor ICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5n IGRlYnVnaW5mb3MgKHllcy9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0 bz1saWJycG0uc28pCisrICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICisrICAgICAg ICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQg ZmlsZXMKKysgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICAgICAgICAgICAgICAg ICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCisg ICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBz dXBwb3J0CisgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5 IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJh cnkKK0BAIC04NDc3LDYgKzg0ODIsMzIgQEAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQ TV9QS0dfRVJSTworICAgZmkKKyBmaQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aCIgPiY1 CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aC4u LiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIg PSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0 ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysgZmkKKytlbHNlCisrICB3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9IiRwcmVmaXgiCisrZmkKKysKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYm IHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4 Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBl Y2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhgCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVj aG8gJGFjX2RlZmluZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZp bmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVmaW5lX2RpciIKKytfQUNFT0YK KysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1CisrJGFzX2VjaG8gIiR3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgiID4mNjsgfQorKworIAorIAorIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0 ZSIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0 LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTczNjAxMCArMDIwMAorQEAgLTMz OSw2ICszMzksMTggQEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYQor ICAgZmkKKyBmaQorICAKKytBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBz YWZlLXBhdGhdKQorK0FDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCisrQVNfSEVMUF9T VFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2Fm ZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKKytBU19IRUxQX1NUUklORyhbLS13aXRob3V0 LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVz IGxvY2F0aW9uc10pLAorK1tpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJu byI7IHRoZW4KKysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysgZmldLAorK1t3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKKytBQ19ERUZJTkVfRElSKERFRkFVTFRf QVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkgICAgICBb RGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCisrQUNfTVNHX1JF U1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCisrCisgQUNfQ09ORklHX1NVQkRJUlMo dGVzdHN1aXRlKQorIAorICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRh cmdldCBjb25maWd1cmF0aW9ucworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4 LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTgg MDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCitAQCAtODY4LDcgKzg2OCwxMSBAQCB0cnlfdGhyZWFk X2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCisgICAvKiBUaGlzIHNob3VsZCBhdCBtaW5p bXVtIGhpdCB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgKi8KKyAgIGdkYl9hc3NlcnQgKGNwICE9IE5V TEwpOworICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7CistICByZXN1bHQgPSB0 cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworKworKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9z YWZlIChwYXRoKSkKKysgICAgcmVzdWx0ID0gMDsKKysgIGVsc2UKKysgICAgcmVzdWx0ID0gdHJ5 X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAg IHJldHVybiByZXN1bHQ7CitAQCAtOTM0LDcgKzkzOCwxMSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRf ZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIG1lbWNweSAocGF0aCwgZGlyLCBkaXJfbGVuKTsKKyAg IHBhdGhbZGlyX2xlbl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElC VEhSRUFEX0RCX1NPKTsKKy0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Cisr CisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQorKyAgICByZXN1bHQgPSAw OworKyAgZWxzZQorKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworIAor ICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworICAgcmV0dXJuIHJlc3VsdDsKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ5OjIx LjYxMjczNjAwNyArMDIwMAorQEAgLTEwMjYsNyArMTAyNiw4IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCisgICAgIHsKKyAgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFt ZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7CisgCistICAgICAgaWYgKCFpbmhpYml0 X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrICAgICAgaWYgKCFpbmhpYml0 X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQKKysJICAmJiBmaWxlX2lzX2F1dG9f bG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKKyAJeworIAkgIGF1dG9fbG9hZF9sb2NhbF9nZGJp bml0X2xvYWRlZCA9IDE7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dk Yi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToy MS42MjA3MzU5ODcgKzAyMDAKK0BAIC0yMDgwMSw2ICsyMDgwMSw4IEBAIGdkYi1zY3JpcHRzOiAg QXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXEKKyBsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcg b2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorIGxvY2FsLWdkYmluaXQ6 ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3Rvcnkg aXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMg aXMgb24uCisrc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCisrICAgICAgICAgICAgaXMgL3Vzci9sb2NhbC4KKyBA ZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9CitAQCAtMjA4NzIs MTIgKzIwODc0LDE5IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcwor IEB0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKyBAaXRlbSBA eHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorIEB0YWIgU2hvdyBzdGF0ZSBvZiB0 aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZl LXBhdGh9LgorK0B0YWIgQ29udHJvbCBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMg bG9hZGluZy4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0YWIg U2hvdyBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZy4KKytAaXRlbSBA eHJlZnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisrQHRhYiBBZGQgZGlyZWN0b3J5IHRydXN0 ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgorIEBlbmQgbXVsdGl0YWJsZQorIAorIEBtZW51Cisg KiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3Nob3cvaW5m byBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKyAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAg ICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Cisg KiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KKysqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAg ICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9CisgQHhyZWZ7 UHl0aG9uIEF1dG8tbG9hZGluZ30uCisgQGVuZCBtZW51CisgCitAQCAtMjA5NzgsNiArMjA5ODcs MTA0IEBAIGF1dG8tbG9hZGVkLgorIElmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRoCisgbWF0Y2hpbmcgbmFtZXMg YXJlIHByaW50ZWQuCisgCisrQG5vZGUgQXV0by1sb2FkaW5nIHNhZmUgcGF0aAorK0BzdWJzZWN0 aW9uIFNlY3VyaXR5IHJlc3RyaWN0aW9uIGZvciBhdXRvLWxvYWRpbmcKKytAY2luZGV4IGF1dG8t bG9hZGluZyBzYWZlLXBhdGgKKysKKytBcyB0aGUgZmlsZXMgb2YgaW5mZXJpb3IgY2FuIGNvbWUg ZnJvbSB1bnRydXN0ZWQgc291cmNlIChzdWNoIGFzIHN1Ym1pdHRlZCBieQorK2FuIGFwcGxpY2F0 aW9uIHVzZXIpIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCBhbHdheXMgbG9hZCBhbnkgZmlsZXMgYXV0 b21hdGljYWxseS4KKytAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhlIEBzYW1we3NldCBhdXRvLWxv YWQgc2FmZS1wYXRofSBzZXR0aW5nIHRvIGxpc3QKKytkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBs b2FkaW5nIGZpbGVzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB1c2VyLgorKworK0lmIHRo ZSBwYXRoIGlzIG5vdCBzZXQgcHJvcGVybHkgeW91IHdpbGwgc2VlIGEgd2FybmluZyBhbmQgdGhl IGZpbGUgd2lsbCBub3QKKytnZXQgbG9hZGVkOgorKworK0BzbWFsbGV4YW1wbGUKKyskIC4vZ2Ri IC1xIC4vZ2RiCisrUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9u ZS4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2Fk aW5nIGhhcyBiZWVuCisrICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUt cGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dk Yi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKysgICAgICAgICBkZWNsaW5lZCBi eSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgorK0BlbmQg c21hbGxleGFtcGxlCisrCisrVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250 cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisrCisrQHRhYmxlIEBjb2RlCisrQGFu Y2hvcntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rvcmllc30K KytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3Rvcmllcykg dHJ1c3RlZCBmb3IgYXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMu ICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCisrVGhlIGxpc3Qg b2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUg YW5kIFVuaXgKKytzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRv IHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKKyt0byB0aGUgQGVudntQQVRIfSBlbnZp cm9ubWVudCB2YXJpYWJsZS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0K KytAa2luZGV4IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK0BpdGVtIHNob3cgYXV0by1sb2Fk IHNhZmUtcGF0aAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0 b21hdGljIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZgorK3NjcmlwdHMuCisrCisrQGFuY2hvcnth ZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytAa2luZGV4IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRo CisrQGl0ZW0gYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKKytBZGQgYW4gZW50cnkgKG9yIGxpc3Qg b2YgZW50cmllcykgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGlj CisrbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aXBsZSBlbnRyaWVzIG1h eSBiZSBkZWxpbWl0ZWQgYnkgdGhlCisraG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9y IGluIHVzZS4KKytAZW5kIHRhYmxlCisrCisrU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGFuIGVt cHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCisrVGhpcyB2YXJp YWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0 YWJsZSBieSB0aGUKKytzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWly IHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisrdGhlaXIgaG9tZSBkaXJlY3Rv cmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVj YXRlZAorK2luaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKysoQHB4cmVme0luaXQg RmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9KS4KKysKKytUbyBm b3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGluZWQgdG8gbG9hZCBp biB0aGUgcHJldmlvdXMKKytleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBvZiB0aGUgZm9sbG93 aW5nIHdheXM6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIH4vLmdkYmluaXQ6IGFkZC1h dXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYgorK1NwZWNpZnkgdGhpcyB0cnVzdGVkIGRpcmVj dG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVudCBvZiB0aGUgbGlzdC4KKytZ b3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXll ZCBieQorK2J5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7 L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorKworK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIiIFtAZG90c3t9XX0KKytT cGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZv ciBhIHNpbmdsZQorK0B2YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVtIEBrYmR7Z2RiIC1p ZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19CisrRGlzYWJsZSBhdXRvLWxv YWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKytUaGlzIGFz c3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNl c3Npb24gd2lsbCBjb21lCisrZnJvbSB0cnVzdGVkIHNvdXJjZXMuCisrCisrQGl0ZW0gQGtiZHsu L2NvbmZpZ3VyZSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytEdXJpbmcgY29tcGls YXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNh ZmV0eS4KKytUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdp dGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCisrdHJ1c3RlZCBzb3VyY2VzLgorK0BlbmQg aXRlbWl6ZQorKworK09uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGZv cmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAorK2Fsc28gc3VwcHJlc3NlcyBhbnkg c3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgorKworK0BpdGVtaXplIEBidWxsZXQKKytAaXRlbSBAa2Jk e2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrWW91IGNhbiB1c2UgQHZh bHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBz ZXNzaW9uLgorKworK0BpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2Fk IG5vfQorK0Rpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgorKyhAcHhy ZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2JhYmxlLCB5 b3UgY291bGQgYWxzbworK3VzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJlZntTeXN0 ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCisrQGVuZCBpdGVtaXplCisrCisrVGhpcyBzZXR0aW5n IGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBieSB1c2VyLiAgSWYgbm8gZW50 cnkgbWF0Y2hlcworK0B2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxhc3QgcmVzb3J0IHRvIGFsc28g cmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bworK3RoZWlyIGNhbm9uaWNhbCBmb3JtICh0 eXBpY2FsbHkgcmVzb2x2aW5nIHN5bWJvbGljIGxpbmtzKSBhbmQgY29tcGFyZSB0aGUKKytlbnRy aWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2Fub25pY2FsaXplcyBtb3N0IG9mIHRo ZSBmaWxlbmFtZXMgb24gaXRzCisrb3duIGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFyaXNvbiBz byBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCisrcmVjb21tZW5kZWQgdG8gYmUg ZW50ZXJlZC4KKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFs IFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorQEAgLTI0OTU1LDEwICsyNTA2MiwxMCBAQCBFeGFt cGxlOgorIAorIEBzbWFsbGV4YW1wbGUKKyAoZ2RiKSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cworLUxvYWRlZCAgU2NyaXB0CistWWVzICAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorLSAg ICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5CistTWlzc2luZyBteS1m b28tcHJldHR5LXByaW50ZXJzLnB5CisrTG9hZGVkIFNjcmlwdAorK1llcyAgICBweS1zZWN0aW9u LXNjcmlwdC5weQorKyAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkK KytObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQorIEBlbmQgc21hbGxleGFtcGxlCisg QGVuZCB0YWJsZQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv cHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIt MDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtNzIsMTQgKzcyLDE5IEBAIHN0YXRp YyB2b2lkCisgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisgCQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkK KyB7CisrICBpbnQgaXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBz cGFjZV9pbmZvOworIAorKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVu YW1lKTsKKysKKyAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28g ImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgorICAgICAgY2FuIHByaW50IGl0LiAgKi8K KyAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAo Y3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKy0gIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKysgIG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwgZmlsZW5hbWUsCisr CQkgICAgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworIAorLSAgc291cmNlX3B5dGhvbl9zY3Jp cHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKKysgIGlmIChpc19zYWZl KQorKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwg ZmlsZW5hbWUpOworIH0KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUu CitAQCAtMTQ3LDYgKzE1Miw5IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpm aWxlICoKKyAJeworIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgCSAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysKKysJICBpZiAoIWZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAgICBvcGVuZWQgPSAwOworIAl9CisgICAgICAgZWxzZQor IAl7CitAQCAtMTY3LDcgKzE3NSw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9uIFtSRUdF WFBdJyB0bworIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVy cG9zZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBz cGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCisrICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUsIGZ1bGxfcGF0aCwKKyAJCQkJ CSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKyAKKyAgICAgICAvKiBJZiB0aGlzIGZpbGUgaXMg bm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAw CitAQCAtMzcsNiArMzcsNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVl IH0KKyBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weS5pbiAke3N1YmRpcn0vJHt0ZXN0ZmlsZX0t Z2RiLnB5XQorIAorIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl90 ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0aG9uX2Zp bGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAor ICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTczNTk4NSArMDIwMAor QEAgLTQ5LDYgKzQ5LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9 Cisgc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KKyAKKyBnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo ICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorIGdkYl9s b2FkICR7YmluZmlsZX0KKyAKKyAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEyb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMm9mMTgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MmJkYmMuLjAwMDAwMDAKLS0t IGEvZ2RiLWF1dG9sb2FkLTEyb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1MiArMCww IEBACi1bcGF0Y2gjNCA2LzhdIHNldCBkZWJ1ZyBhdXRvLWxvYWQKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg5Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTUuaHRtbAotCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NDoyOAkxLjE0MTE0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wNC8xNyAxNTo1NjoyMAkxLjE0MTE1Ci0jIyAtMSw1ICsxLDI3IEBACi0gMjAxMi0w NC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwlO ZXcgb3B0aW9uICJzZXQgZGVidWcgYXV0by1sb2FkIi4KLSsJKiBORVdTOiBOZXcgY29tbWFuZHMg InNldCBkZWJ1ZyBhdXRvLWxvYWQiIGFuZCAic2hvdyBkZWJ1ZyBhdXRvLWxvYWQiLgotKwkqIGF1 dG8tbG9hZC5jIChkZWJ1Z19hdXRvX2xvYWQsIHNob3dfZGVidWdfYXV0b19sb2FkOiBOZXcuCi0r CShhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUpCi0rCShmaWxlbmFtZV9pc19pbl9hdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYyk6IENhbGwgZnByaW50Zl91bmZpbHRlcmVkCi0rCWlmIERFQlVH X0FVVE9fTE9BRC4KLSsJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBk ZWJ1Z19mbXQgYW5kIC4uLi4KLSsJQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQgaWYgREVCVUdfQVVU T19MT0FELgotKwkoc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBFeHRlbmQgdGhlIGZp bGVfaXNfYXV0b19sb2FkX3NhZmUKLSsJY2FsbGVyIGJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KLSsJ KF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IFJlZ2lzdGVyICJzZXQgZGVidWcgYXV0by1sb2FkIi4K LSsJKiBhdXRvLWxvYWQuaCAoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJz IGRlYnVnX2ZtdAotKwlhbmQgLi4uLgotKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFk X2RiX2xvYWRfZnJvbV9wZGlyXzEpCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBF eHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgY2FsbGVyCi0rCWJ5IGV4cGxhbmF0b3J5 IHN0cmluZy4KLSsJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBMaWtld2lzZS4KLSsJKiBweXRo b24vcHktYXV0by1sb2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUpCi0r CShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTGlrZXdpc2UuCi0rCi0rMjAxMi0wNC0xNyAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlOZXcgb3B0aW9u ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIuCi0gCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCIKLSAJYW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6 NTA6MTUuMDE4NjAwMjgyICswMjAwCi1AQCAtNzIsNiArNzIsMTAgQEAgc2hvdyBhdXRvLWxvYWQg c2FmZS1wYXRoCi0gICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuCi0gICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1h eSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotIAotK3NldCBkZWJ1ZyBh dXRvLWxvYWQgb258b2ZmCi0rc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLSsgIENvbnRyb2wgZGlzcGxh eSBvZiBkZWJ1Z2dpbmcgaW5mbyBmb3IgYXV0by1sb2FkaW5nIHRoZSBmaWxlcyBhYm92ZS4KLSsK LSAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucwotIAotIC0taW5pdC1jb21tYW5kPUZJTEUsIC1p eCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEy LTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTQzLDYgKzQzLDIwIEBACi0gc3Rh dGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAot Ky8qIFZhbHVlIG9mIHRoZSAnc2V0IGRlYnVnIGF1dG8tbG9hZCcgY29uZmlndXJhdGlvbiB2YXJp YWJsZS4gICovCi0rc3RhdGljIGludCBkZWJ1Z19hdXRvX2xvYWQgPSAwOwotKwotKy8qICJzaG93 IiBjb21tYW5kIGZvciB0aGUgZGVidWdfYXV0b19sb2FkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUu ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z19hdXRvX2xvYWQgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwg XygiRGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgIgotKwkJCSAgICAib2YgJ3NldCBhdXRvLWxv YWQgLi4uJyBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0gLyogVXNlci1zZXR0 YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJ TEVfTkFNRQotICAgIHNjcmlwdHM6Ci0gICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxv ZmYKLUBAIC0xMTIsNiArMTI2LDExIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAo dm9pZCkKLSAgIHVuc2lnbmVkIGxlbjsKLSAgIGludCBpeDsKLSAKLSsgIGlmIChkZWJ1Z19hdXRv X2xvYWQpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQlfKCJhdXRv LWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9yaWVzIG9mIFwiJXNcIi5cbiIpLAotKwkJCWF1dG9fbG9h ZF9zYWZlX3BhdGgpOwotKwotICAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjKTsKLSAKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hh cl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLUBAIC0xMjYsMTQgKzE0NSwzNCBAQCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0gICAgICAgY2hhciAqcmVhbF9w YXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Ci0gCi0gICAgICAgLyogRW5zdXJlIHRoZSBj dXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCi0tICAgICAgeGZy ZWUgKGRpcik7Ci0gICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSAKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQot Kwl7Ci0rCSAgaWYgKHN0cmNtcCAoZXhwYW5kZWQsIGRpcikgPT0gMCkKLSsJICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBVc2luZyBkaXJlY3Rv cnkgXCIlc1wiLlxuIiksCi0rCQkJCWV4cGFuZGVkKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQgZGly ZWN0b3J5IFwiJXNcIiAiCi0rCQkJCSAgImFzIFwiJXNcIi5cbiIpLAotKwkJCQlkaXIsIGV4cGFu ZGVkKTsKLSsJfQotKyAgICAgIHhmcmVlIChkaXIpOwotKwotICAgICAgIC8qIElmIGdkYl9yZWFs cGF0aCByZXR1cm5zIGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4gICovCi0gICAgICAg aWYgKHN0cmNtcCAocmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkKLSAJeGZyZWUgKHJlYWxfcGF0 aCk7Ci0gICAgICAgZWxzZQotLQlWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCXsKLSsJICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0 ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCi0rCSAgaWYgKGRlYnVn X2F1dG9fbG9hZCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJ XygiYXV0by1sb2FkOiBBbmQgY2Fub25pY2FsaXplZCBhcyBcIiVzXCIuXG4iKSwKLSsJCQkJcmVh bF9wYXRoKTsKLSsJfQotICAgICB9Ci0gfQotIAotQEAgLTIxNywxNiArMjU2LDMwIEBAIGZpbGVu YW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgIGlmIChkaXIgPT0gTlVMTCkK LSAgICAgewotICAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKLS0JKmZpbGVuYW1l X3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7Ci0rCXsKLSsJICAqZmlsZW5hbWVfcmVh bHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkICYm IHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKLSsJICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCAiCi0r CQkJCSAgImZpbGUgXCIlc1wiIGFzIFwiJXNcIi5cbiIpLAotKwkJCQlmaWxlbmFtZSwgKmZpbGVu YW1lX3JlYWxwKTsKLSsJfQotIAotLSAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hh cl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLS0JICAgKytpeCkKLS0J aWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIpKQotLQkgIGJyZWFr OwotKyAgICAgIGlmIChzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9IDApCi0r CWZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjLCBpeCwgZGlyKTsKLSsJICAgICArK2l4KQotKwkgIGlmIChmaWxlbmFtZV9pc19pbl9kaXIg KCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKLSsJICAgIGJyZWFrOwotICAgICB9Ci0gCi0gICBpZiAo ZGlyICE9IE5VTEwpCi0tICAgIHJldHVybiAxOwotKyAgICB7Ci0rICAgICAgaWYgKGRlYnVnX2F1 dG9fbG9hZCkKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6 IEZpbGUgXCIlc1wiIG1hdGNoZXMgIgotKwkJCQkJICAiZGlyZWN0b3J5IFwiJXNcIi5cbiIpLAot KwkJCSAgICBmaWxlbmFtZSwgZGlyKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotIAotICAg cmV0dXJuIDA7Ci0gfQotQEAgLTI0MCwxMSArMjkzLDIwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9f bG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgICBkaXJlY3RvcnkuICAqLwotIAotIGludAotLWZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK2ZpbGVfaXNfYXV0b19s b2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpkZWJ1Z19mbXQsIC4u LikKLSB7Ci0gICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOwotIAotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsgICAgewotKyAgICAgIHZh X2xpc3QgZGVidWdfYXJnczsKLSsKLSsgICAgICB2YV9zdGFydCAoZGVidWdfYXJncywgZGVidWdf Zm10KTsKLSsgICAgICB2ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBkZWJ1Z19mbXQs IGRlYnVnX2FyZ3MpOwotKyAgICAgIHZhX2VuZCAoZGVidWdfYXJncyk7Ci0rICAgIH0KLSsKLSAg IGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmZpbGVuYW1l X3JlYWwpOwotIAotICAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVj IChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotQEAgLTI4MSw3ICszNDMsMTAgQEAgc291cmNl X2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlv biBlOwotIAotLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsK LSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwgXygiYXV0by1s b2FkOiBMb2FkaW5nIGNhbm5lZCAiCi0rCQkJCQkJInNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3Jp cHQgIgotKwkJCQkJCSJcIiVzXCIgZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICBm aWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhl IGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSAgICAgIGNh biBwcmludCBpdC4gICovCi1AQCAtOTc1LDQgKzEwNDAsMTMgQEAgU2VlIHRoZSBjb21tYW5kcyAn c2V0IGF1dG8tbG9hZCBzYWZlLXBhdAotIGFjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0 dGluZy4iKSwKLSAJCSAmY21kbGlzdCk7Ci0gICBzZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxl bmFtZV9jb21wbGV0ZXIpOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxv YWQiLCBjbGFzc19tYWludGVuYW5jZSwKLSsJCQkgICAmZGVidWdfYXV0b19sb2FkLCBfKCJcCi0r U2V0IGF1dG8tbG9hZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4iKSwgXygiXAotK1Nob3cgYXV0 by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCi0rV2hlbiBub24temVybywg ZGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgb2YgJ3NldCBhdXRvLWxvYWQgLi4uJ1xuXAotK2lz IGRpc3BsYXllZC4iKSwKLSsJCQkgICAgTlVMTCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQsCi0rCQkJ ICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsKLSB9Ci1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0x OCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKLUBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG8KLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7Ci0gZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOwot IAotLWV4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5h bWUpOwotK2V4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmls ZW5hbWUsCi0rCQkJCSAgIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKTsKLSAKLSAjZW5kaWYg LyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10 aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv bGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAw OjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTg2OSw3ICs4NjksOSBAQCB0cnlfdGhyZWFkX2Ri X2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCi0gICBnZGJfYXNzZXJ0IChjcCAhPSBOVUxMKTsK LSAgIHN0cmNweSAoY3AgKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAgaWYgKCFmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAo cGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAgICAgICAi bGlicmFyeSBcIiVzXCIgZnJvbSAkcGRpci5cbiIpLAotKwkJCSAgICAgICBwYXRoKSkKLSAgICAg cmVzdWx0ID0gMDsKLSAgIGVsc2UKLSAgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChw YXRoKTsKLUBAIC05MzksNyArOTQxLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAo Y29uc3QgY2hhcgotICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKLSAgIHN0cmNweSAocGF0aCArIGRp cl9sZW4gKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9h ZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygi YXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAgICAgICAibGlicmFyeSBc IiVzXCIgZnJvbSBleHBsaWNpdCAiCi0rCQkJCSAgICAgICAiZGlyZWN0b3J5LlxuIiksCi0rCQkJ ICAgICAgIHBhdGgpKQotICAgICByZXN1bHQgPSAwOwotICAgZWxzZQotICAgICByZXN1bHQgPSB0 cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFp bi5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCi1A QCAtMTAyNyw3ICsxMDI3LDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAg YXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxvY2FsX2dk YmluaXQpOwotIAotICAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9hZF9sb2Nh bF9nZGJpbml0Ci0tCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCkp Ci0rCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCwKLSsJCQkJICAg ICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgLmdkYmluaXQgIgotKwkJCQkgICAgICAgImZpbGUgXCIl c1wiLlxuIiksCi0rCQkJCSAgICAgbG9jYWxfZ2RiaW5pdCkpCi0gCXsKLSAJICBhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAxOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQt MTggMDA6NTA6MDQuODA5NjI2MjE1ICswMjAwCi1AQCAtMjA4ODcsNiArMjA4ODcsNyBAQCBUaGVz ZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMKLSAqIGxpYnRocmVhZF9kYi5zby4x IGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJl YWQtZGJ9Ci0gKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0 L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KLSAqIEF1dG8tbG9hZGluZyBzYWZlIHBh dGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9 Ci0rKiBBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlOjogICAgICAgICAgQHNhbXB7c2V0L3Nob3cg ZGVidWcgYXV0by1sb2FkfQotIEB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgotIEBlbmQgbWVu dQotIAotQEAgLTIxMDg1LDYgKzIxMDg2LDQ1IEBAIGVudHJpZXMgYWdhaW4uICBAdmFsdWV7R0RC Tn0gYWxyZWFkeSBjYW4KLSBvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEg Y2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKLSByZWNvbW1lbmRlZCB0byBiZSBlbnRl cmVkLgotIAotK0Bub2RlIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKLStAc3Vic2VjdGlvbiBE aXNwbGF5aW5nIGZpbGVzIHRyaWVkIGZvciBhdXRvLWxvYWQKLStAY2luZGV4IGF1dG8tbG9hZGlu ZyB2ZXJib3NlIG1vZGUKLSsKLStGb3IgYmV0dGVyIHZpc2liaWxpdHkgb2YgYWxsIHRoZSBmaWxl IGxvY2F0aW9ucyB3aGVyZSB5b3UgY2FuIHBsYWNlIHNjcmlwdHMgdG8KLStiZSBhdXRvLWxvYWRl ZCB3aXRoIGluZmVyaW9yIC0tLSBvciB0byBwcm90ZWN0IHlvdXJzZWxmIGFnYWluc3QgYWNjaWRl bnRhbAotK2V4ZWN1dGlvbiBvZiB1bnRydXN0ZWQgc2NyaXB0cyAtLS0gQHZhbHVle0dEQk59IHBy b3ZpZGVzIGEgZmVhdHVyZSBmb3IgcHJpbnRpbmcKLSthbGwgdGhlIGZpbGVzIGF0dGVtcHRlZCB0 byBiZSBsb2FkZWQuICBCb3RoIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgZmlsZXMgbWF5Ci0r YmUgcHJpbnRlZC4KLSsKLStGb3IgZXhhbXBsZSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0rKEBweHJlZntBdXRvLWxvYWRp bmcgc2FmZSBwYXRofSkgYXBwbGllcyBhbHNvIHRvIGNhbm9uaWNhbGl6ZWQgZmlsZW5hbWVzIHdo aWNoCi0rbWF5IG5vdCBiZSB0b28gb2J2aW91cyB3aGlsZSBzZXR0aW5nIGl0IHVwLgotKwotK0Bz bWFsbGV4YW1wbGUKLSsoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIHVlcwotKyhnZGIpIGZpbGUg fi9zcmMvdC90cnVlCi0rYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29t bWFuZHMgc2NyaXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKLSsgICAgICAgICAgIGZvciBvYmpmaWxl ICIvdG1wL3RydWUiLgotK2F1dG8tbG9hZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgIi91c3I6 L29wdCIuCi0rYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgIi91c3IiLgotK2F1dG8tbG9hZDog VXNpbmcgZGlyZWN0b3J5ICIvb3B0Ii4KLSt3YXJuaW5nOiBGaWxlICIvdG1wL3RydWUtZ2RiLmdk YiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkCi0rICAgICAgICAgYnkgeW91ciBgYXV0 by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyOi9vcHQiLgotK0BlbmQgc21hbGxleGFtcGxl Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgZGVidWcgYXV0by1sb2FkfQotK0BraW5k ZXggc2V0IGRlYnVnIGF1dG8tbG9hZAotK0BpdGVtIHNldCBkZWJ1ZyBhdXRvLWxvYWQgW29ufG9m Zl0KLStTZXQgd2hldGhlciB0byBwcmludCB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBh dXRvLWxvYWRlZC4KLSsKLStAYW5jaG9ye3Nob3cgZGVidWcgYXV0by1sb2FkfQotK0BraW5kZXgg c2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLStAaXRlbSBzaG93IGRlYnVnIGF1dG8tbG9hZAotK1Nob3cg d2hldGhlciBwcmludGluZyBvZiB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxv YWRlZCBpcyB0dXJuZWQKLStvbiBvciBvZmYuCi0rQGVuZCB0YWJsZQotKwotIEBub2RlIE1lc3Nh Z2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCi0g Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0 by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo1MDow NC44MTA2MjYyMTIgKzAyMDAKLUBAIC03NSw3ICs3NSwxMCBAQCBnZGJweV9sb2FkX2F1dG9fc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Ci0gICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotIAotLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9z YWZlIChmaWxlbmFtZSwKLSsJCQkJICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2Ny aXB0IFwiJXNcIiAiCi0rCQkJCSAgICAgICJieSBleHRlbnNpb24gZm9yIG9iamZpbGUgXCIlc1wi LlxuIiksCi0rCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQg dGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtMTUzLDcgKzE1NiwxMiBA QCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCSAgbWFrZV9jbGVh bnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgp OwotIAotLQkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkKLSsJICBp ZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwKLSsJCQkJICAgICAgIF8oImF1 dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0ICIKLSsJCQkJCSAiXCIlc1wiIGZyb20gc2Vj dGlvbiBcIiVzXCIgb2YgIgotKwkJCQkJICJvYmpmaWxlIFwiJXNcIi5cbiIpLAotKwkJCQkgICAg ICAgZnVsbF9wYXRoLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwKLSsJCQkJICAgICAgIG9iamZp bGUtPm5hbWUpKQotIAkgICAgb3BlbmVkID0gMDsKLSAJfQotICAgICAgIGVsc2UKCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMTJvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEyb2YyMi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTJiZGJjCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTEyb2YyMi5wYXRjaApAQCAtMCwwICsxLDM1MiBAQAorW3Bh dGNoIzQgNi84XSBzZXQgZGVidWcgYXV0by1sb2FkCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4OS5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTE1Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDQvMTcgMTU6NTQ6MjgJMS4xNDExNAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDQvMTcgMTU6NTY6MjAJMS4xNDExNQorIyMgLTEsNSArMSwyNyBAQAorIDIwMTItMDQtMTcgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJTmV3IG9wdGlv biAic2V0IGRlYnVnIGF1dG8tbG9hZCIuCisrCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgZGVi dWcgYXV0by1sb2FkIiBhbmQgInNob3cgZGVidWcgYXV0by1sb2FkIi4KKysJKiBhdXRvLWxvYWQu YyAoZGVidWdfYXV0b19sb2FkLCBzaG93X2RlYnVnX2F1dG9fbG9hZDogTmV3LgorKwkoYXV0b19s b2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlKQorKwkoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMpOiBDYWxsIGZwcmludGZfdW5maWx0ZXJlZAorKwlpZiBERUJVR19BVVRPX0xP QUQuCisrCShmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3IHBhcmFtZXRlcnMgZGVidWdfZm10 IGFuZCAuLi4uCisrCUNhbGwgZnByaW50Zl91bmZpbHRlcmVkIGlmIERFQlVHX0FVVE9fTE9BRC4K KysJKHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogRXh0ZW5kIHRoZSBmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlCisrCWNhbGxlciBieSBleHBsYW5hdG9yeSBzdHJpbmcuCisrCShfaW5pdGlh bGl6ZV9hdXRvX2xvYWQpOiBSZWdpc3RlciAic2V0IGRlYnVnIGF1dG8tbG9hZCIuCisrCSogYXV0 by1sb2FkLmggKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19m bXQKKysJYW5kIC4uLi4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3RocmVhZF9kYl9sb2Fk X2Zyb21fcGRpcl8xKQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogRXh0ZW5kIHRo ZSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGNhbGxlcgorKwlieSBleHBsYW5hdG9yeSBzdHJpbmcu CisrCSogbWFpbi5jIChjYXB0dXJlZF9tYWluKTogTGlrZXdpc2UuCisrCSogcHl0aG9uL3B5LWF1 dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKQorKwkoc291cmNl X3NlY3Rpb25fc2NyaXB0cyk6IExpa2V3aXNlLgorKworKzIwMTItMDQtMTcgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJTmV3IG9wdGlvbiAic2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGgiLgorIAkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGgiCisgCWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjUwOjE1LjAx ODYwMDI4MiArMDIwMAorQEAgLTcyLDYgKzcyLDEwIEBAIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0 aAorICAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8g YXV0by1sb2FkIGZpbGVzLgorICAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBtYXkgZGlmZmVy IGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKyAKKytzZXQgZGVidWcgYXV0by1sb2Fk IG9ufG9mZgorK3Nob3cgZGVidWcgYXV0by1sb2FkCisrICBDb250cm9sIGRpc3BsYXkgb2YgZGVi dWdnaW5nIGluZm8gZm9yIGF1dG8tbG9hZGluZyB0aGUgZmlsZXMgYWJvdmUuCisrCisgKiBOZXcg Y29tbWFuZCBsaW5lIG9wdGlvbnMKKyAKKyAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAg ICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0CitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAw MDo1MDowNC44MDE2MjYyMzUgKzAyMDAKK0BAIC00Myw2ICs0MywyMCBAQAorIHN0YXRpYyB2b2lk IHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg RklMRSAqZmlsZSwKKyAJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKysvKiBWYWx1 ZSBvZiB0aGUgJ3NldCBkZWJ1ZyBhdXRvLWxvYWQnIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAq LworK3N0YXRpYyBpbnQgZGVidWdfYXV0b19sb2FkID0gMDsKKysKKysvKiAic2hvdyIgY29tbWFu ZCBmb3IgdGhlIGRlYnVnX2F1dG9fbG9hZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysK KytzdGF0aWMgdm9pZAorK3Nob3dfZGVidWdfYXV0b19sb2FkIChzdHJ1Y3QgdWlfZmlsZSAqZmls ZSwgaW50IGZyb21fdHR5LAorKwkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNv bnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVn Z2luZyBvdXRwdXQgZm9yIGZpbGVzICIKKysJCQkgICAgIm9mICdzZXQgYXV0by1sb2FkIC4uLicg aXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworIC8qIFVzZXItc2V0dGFibGUgb3B0 aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBHREJfQVVUT19GSUxFX05BTUUK KyAgICBzY3JpcHRzOgorICAgIHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCitAQCAt MTEyLDYgKzEyNiwxMSBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisg ICB1bnNpZ25lZCBsZW47CisgICBpbnQgaXg7CisgCisrICBpZiAoZGVidWdfYXV0b19sb2FkKQor KyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJXygiYXV0by1sb2FkOiBV cGRhdGluZyBkaXJlY3RvcmllcyBvZiBcIiVzXCIuXG4iKSwKKysJCQlhdXRvX2xvYWRfc2FmZV9w YXRoKTsKKysKKyAgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7 CisgCisgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl YyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7CitAQCAtMTI2LDE0ICsxNDUsMzQgQEAgYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQorICAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdk Yl9yZWFscGF0aCAoZXhwYW5kZWQpOworIAorICAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBl bnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLworLSAgICAgIHhmcmVlIChkaXIp OworICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMs IGl4LCBleHBhbmRlZCk7CisgCisrICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJeworKwkg IGlmIChzdHJjbXAgKGV4cGFuZGVkLCBkaXIpID09IDApCisrCSAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5IFwiJXNc Ii5cbiIpLAorKwkJCQlleHBhbmRlZCk7CisrCSAgZWxzZQorKwkgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAorKwkJCQlfKCJhdXRvLWxvYWQ6IFJlc29sdmVkIGRpcmVjdG9yeSBc IiVzXCIgIgorKwkJCQkgICJhcyBcIiVzXCIuXG4iKSwKKysJCQkJZGlyLCBleHBhbmRlZCk7Cisr CX0KKysgICAgICB4ZnJlZSAoZGlyKTsKKysKKyAgICAgICAvKiBJZiBnZGJfcmVhbHBhdGggcmV0 dXJucyBhIGRpZmZlcmVudCBjb250ZW50LCBhcHBlbmQgaXQuICAqLworICAgICAgIGlmIChzdHJj bXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQpID09IDApCisgCXhmcmVlIChyZWFsX3BhdGgpOworICAg ICAgIGVsc2UKKy0JVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjLCByZWFsX3BhdGgpOworKwl7CisrCSAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOworKworKwkgIGlmIChkZWJ1Z19hdXRvX2xv YWQpCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8t bG9hZDogQW5kIGNhbm9uaWNhbGl6ZWQgYXMgXCIlc1wiLlxuIiksCisrCQkJCXJlYWxfcGF0aCk7 CisrCX0KKyAgICAgfQorIH0KKyAKK0BAIC0yMTcsMTYgKzI1NiwzMCBAQCBmaWxlbmFtZV9pc19p bl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoCisgICBpZiAoZGlyID09IE5VTEwpCisgICAgIHsK KyAgICAgICBpZiAoKmZpbGVuYW1lX3JlYWxwID09IE5VTEwpCistCSpmaWxlbmFtZV9yZWFscCA9 IGdkYl9yZWFscGF0aCAoZmlsZW5hbWUpOworKwl7CisrCSAgKmZpbGVuYW1lX3JlYWxwID0gZ2Ri X3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCAmJiBzdHJjbXAg KCpmaWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9IDApCisrCSAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQgIgorKwkJCQkgICJm aWxlIFwiJXNcIiBhcyBcIiVzXCIuXG4iKSwKKysJCQkJZmlsZW5hbWUsICpmaWxlbmFtZV9yZWFs cCk7CisrCX0KKyAKKy0gICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7CistCSAgICsraXgpCistCWlmIChmaWxl bmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKKy0JICBicmVhazsKKysgICAg ICBpZiAoc3RyY21wICgqZmlsZW5hbWVfcmVhbHAsIGZpbGVuYW1lKSAhPSAwKQorKwlmb3IgKGl4 ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgs IGRpcik7CisrCSAgICAgKytpeCkKKysJICBpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5h bWVfcmVhbHAsIGRpcikpCisrCSAgICBicmVhazsKKyAgICAgfQorIAorICAgaWYgKGRpciAhPSBO VUxMKQorLSAgICByZXR1cm4gMTsKKysgICAgeworKyAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQp CisrCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0by1sb2FkOiBGaWxlIFwi JXNcIiBtYXRjaGVzICIKKysJCQkJCSAgImRpcmVjdG9yeSBcIiVzXCIuXG4iKSwKKysJCQkgICAg ZmlsZW5hbWUsIGRpcik7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKyAKKyAgIHJldHVybiAw OworIH0KK0BAIC0yNDAsMTEgKzI5MywyMCBAQCBmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYyAoCisgICAgZGlyZWN0b3J5LiAgKi8KKyAKKyBpbnQKKy1maWxlX2lzX2F1dG9f bG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKytmaWxlX2lzX2F1dG9fbG9hZF9zYWZl IChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZGVidWdfZm10LCAuLi4pCisgewor ICAgY2hhciAqZmlsZW5hbWVfcmVhbCA9IE5VTEw7CisgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKKyAKKysgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrICAgIHsKKysgICAgICB2YV9saXN0IGRl YnVnX2FyZ3M7CisrCisrICAgICAgdmFfc3RhcnQgKGRlYnVnX2FyZ3MsIGRlYnVnX2ZtdCk7Cisr ICAgICAgdmZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgZGVidWdfZm10LCBkZWJ1Z19h cmdzKTsKKysgICAgICB2YV9lbmQgKGRlYnVnX2FyZ3MpOworKyAgICB9CisrCisgICBiYWNrX3Rv ID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxlbmFtZV9yZWFsKTsK KyAKKyAgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5h bWUsICZmaWxlbmFtZV9yZWFsKSkKK0BAIC0yODEsNyArMzQzLDEwIEBAIHNvdXJjZV9nZGJfc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2IKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvOworICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKKyAK Ky0gIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7CisrICBpc19z YWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUsIF8oImF1dG8tbG9hZDogTG9h ZGluZyBjYW5uZWQgIgorKwkJCQkJCSJzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIKKysJ CQkJCQkiXCIlc1wiIGZvciBvYmpmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAgZmlsZW5hbWUs IG9iamZpbGUtPm5hbWUpOworIAorICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRh YmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQg aXQuICAqLworQEAgLTk3NSw0ICsxMDQwLDEzIEBAIFNlZSB0aGUgY29tbWFuZHMgJ3NldCBhdXRv LWxvYWQgc2FmZS1wYXQKKyBhY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiks CisgCQkgJmNtZGxpc3QpOworICAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29t cGxldGVyKTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkIiwgY2xh c3NfbWFpbnRlbmFuY2UsCisrCQkJICAgJmRlYnVnX2F1dG9fbG9hZCwgXygiXAorK1NldCBhdXRv LWxvYWQgdmVyaWZpY2F0aW9ucyBkZWJ1Z2dpbmcuIiksIF8oIlwKKytTaG93IGF1dG8tbG9hZCB2 ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4iKSwgXygiXAorK1doZW4gbm9uLXplcm8sIGRlYnVnZ2lu ZyBvdXRwdXQgZm9yIGZpbGVzIG9mICdzZXQgYXV0by1sb2FkIC4uLidcblwKKytpcyBkaXNwbGF5 ZWQuIiksCisrCQkJICAgIE5VTEwsIHNob3dfZGVidWdfYXV0b19sb2FkLAorKwkJCSAgICAmc2V0 ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7CisgfQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NTA6 MDQuODAxNjI2MjM1ICswMjAwCitAQCAtNTUsNiArNTUsNyBAQCBleHRlcm4gc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKiphdXRvX2xvCisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoq YXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKy1leHRl cm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKytl eHRlcm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAor KwkJCQkgICBjb25zdCBjaGFyICpkZWJ1Z19mbXQsIC4uLik7CisgCisgI2VuZGlmIC8qIEFVVE9f TE9BRF9IICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRi LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRo cmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44 MDE2MjYyMzUgKzAyMDAKK0BAIC04NjksNyArODY5LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zy b21fcGRpcl8xIChzdHJ1Y3QgbworICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVMTCk7CisgICBzdHJj cHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKyAKKy0gIGlmICghZmlsZV9pc19hdXRvX2xv YWRfc2FmZSAocGF0aCkpCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgsIF8o ImF1dG8tbG9hZDogTG9hZGluZyBsaWJ0aHJlYWQtZGIgIgorKwkJCQkgICAgICAgImxpYnJhcnkg XCIlc1wiIGZyb20gJHBkaXIuXG4iKSwKKysJCQkgICAgICAgcGF0aCkpCisgICAgIHJlc3VsdCA9 IDA7CisgICBlbHNlCisgICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CitA QCAtOTM5LDcgKzk0MSwxMCBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNo YXIKKyAgIHBhdGhbZGlyX2xlbl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsg MSwgTElCVEhSRUFEX0RCX1NPKTsKKyAKKy0gIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAo cGF0aCkpCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgsIF8oImF1dG8tbG9h ZDogTG9hZGluZyBsaWJ0aHJlYWQtZGIgIgorKwkJCQkgICAgICAgImxpYnJhcnkgXCIlc1wiIGZy b20gZXhwbGljaXQgIgorKwkJCQkgICAgICAgImRpcmVjdG9yeS5cbiIpLAorKwkJCSAgICAgICBw YXRoKSkKKyAgICAgcmVzdWx0ID0gMDsKKyAgIGVsc2UKKyAgICAgcmVzdWx0ID0gdHJ5X3RocmVh ZF9kYl9sb2FkIChwYXRoKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEy LTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAorQEAgLTEwMjcs NyArMTAyNywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgICAgIGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsK KyAKKyAgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dAorLQkgICYmIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGxvY2FsX2dkYmluaXQpKQorKwkgICYm IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGxvY2FsX2dkYmluaXQsCisrCQkJCSAgICAgXygiYXV0 by1sb2FkOiBMb2FkaW5nIC5nZGJpbml0ICIKKysJCQkJICAgICAgICJmaWxlIFwiJXNcIi5cbiIp LAorKwkJCQkgICAgIGxvY2FsX2dkYmluaXQpKQorIAl7CisgCSAgYXV0b19sb2FkX2xvY2FsX2dk YmluaXRfbG9hZGVkID0gMTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2Mv Z2RiLnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjUw OjA0LjgwOTYyNjIxNSArMDIwMAorQEAgLTIwODg3LDYgKzIwODg3LDcgQEAgVGhlc2UgYXJlIEB2 YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCisgKiBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlOjog ICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQor ICogb2JqZmlsZS1nZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2lu Zm8gYXV0by1sb2FkIGdkYi1zY3JpcHR9CisgKiBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoOjogICAg ICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgc2FmZS1wYXRofQorKyogQXV0 by1sb2FkaW5nIHZlcmJvc2UgbW9kZTo6ICAgICAgICAgIEBzYW1we3NldC9zaG93IGRlYnVnIGF1 dG8tbG9hZH0KKyBAeHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4KKyBAZW5kIG1lbnUKKyAKK0BA IC0yMTA4NSw2ICsyMTA4Niw0NSBAQCBlbnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVh ZHkgY2FuCisgb3duIGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFyaXNvbiBzbyBhIGNhbm9uaWNh bCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCisgcmVjb21tZW5kZWQgdG8gYmUgZW50ZXJlZC4KKyAK KytAbm9kZSBBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlCisrQHN1YnNlY3Rpb24gRGlzcGxheWlu ZyBmaWxlcyB0cmllZCBmb3IgYXV0by1sb2FkCisrQGNpbmRleCBhdXRvLWxvYWRpbmcgdmVyYm9z ZSBtb2RlCisrCisrRm9yIGJldHRlciB2aXNpYmlsaXR5IG9mIGFsbCB0aGUgZmlsZSBsb2NhdGlv bnMgd2hlcmUgeW91IGNhbiBwbGFjZSBzY3JpcHRzIHRvCisrYmUgYXV0by1sb2FkZWQgd2l0aCBp bmZlcmlvciAtLS0gb3IgdG8gcHJvdGVjdCB5b3Vyc2VsZiBhZ2FpbnN0IGFjY2lkZW50YWwKKytl eGVjdXRpb24gb2YgdW50cnVzdGVkIHNjcmlwdHMgLS0tIEB2YWx1ZXtHREJOfSBwcm92aWRlcyBh IGZlYXR1cmUgZm9yIHByaW50aW5nCisrYWxsIHRoZSBmaWxlcyBhdHRlbXB0ZWQgdG8gYmUgbG9h ZGVkLiAgQm90aCBleGlzdGluZyBhbmQgbm9uLWV4aXN0aW5nIGZpbGVzIG1heQorK2JlIHByaW50 ZWQuCisrCisrRm9yIGV4YW1wbGUgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBp dCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcworKyhAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUg cGF0aH0pIGFwcGxpZXMgYWxzbyB0byBjYW5vbmljYWxpemVkIGZpbGVuYW1lcyB3aGljaAorK21h eSBub3QgYmUgdG9vIG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KKysKKytAc21hbGxleGFt cGxlCisrKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKKysoZ2RiKSBmaWxlIH4vc3JjL3Qv dHJ1ZQorK2F1dG8tbG9hZDogTG9hZGluZyBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNj cmlwdCAiL3RtcC90cnVlLWdkYi5nZGIiCisrICAgICAgICAgICBmb3Igb2JqZmlsZSAiL3RtcC90 cnVlIi4KKythdXRvLWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9yaWVzIG9mICIvdXNyOi9vcHQiLgor K2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5ICIvdXNyIi4KKythdXRvLWxvYWQ6IFVzaW5nIGRp cmVjdG9yeSAiL29wdCIuCisrd2FybmluZzogRmlsZSAiL3RtcC90cnVlLWdkYi5nZGIiIGF1dG8t bG9hZGluZyBoYXMgYmVlbiBkZWNsaW5lZAorKyAgICAgICAgIGJ5IHlvdXIgYGF1dG8tbG9hZCBz YWZlLXBhdGgnIHNldCB0byAiL3Vzcjovb3B0Ii4KKytAZW5kIHNtYWxsZXhhbXBsZQorKworK0B0 YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGRlYnVnIGF1dG8tbG9hZH0KKytAa2luZGV4IHNldCBk ZWJ1ZyBhdXRvLWxvYWQKKytAaXRlbSBzZXQgZGVidWcgYXV0by1sb2FkIFtvbnxvZmZdCisrU2V0 IHdoZXRoZXIgdG8gcHJpbnQgdGhlIGZpbGVuYW1lcyBhdHRlbXB0ZWQgdG8gYmUgYXV0by1sb2Fk ZWQuCisrCisrQGFuY2hvcntzaG93IGRlYnVnIGF1dG8tbG9hZH0KKytAa2luZGV4IHNob3cgZGVi dWcgYXV0by1sb2FkCisrQGl0ZW0gc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKKytTaG93IHdoZXRoZXIg cHJpbnRpbmcgb2YgdGhlIGZpbGVuYW1lcyBhdHRlbXB0ZWQgdG8gYmUgYXV0by1sb2FkZWQgaXMg dHVybmVkCisrb24gb3Igb2ZmLgorK0BlbmQgdGFibGUKKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJu aW5ncworIEBzZWN0aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NTA6MDQuODEwNjI2 MjEyICswMjAwCitAQCAtNzUsNyArNzUsMTAgQEAgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jf b2JqZmlsZSAoc3RydQorICAgaW50IGlzX3NhZmU7CisgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAKKy0gIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9z YWZlIChmaWxlbmFtZSk7CisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmls ZW5hbWUsCisrCQkJCSAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgUHl0aG9uIHNjcmlwdCBcIiVz XCIgIgorKwkJCQkgICAgICAiYnkgZXh0ZW5zaW9uIGZvciBvYmpmaWxlIFwiJXNcIi5cbiIpLAor KwkJCQkgICAgZmlsZW5hbWUsIG9iamZpbGUtPm5hbWUpOworIAorICAgLyogQWRkIHRoaXMgc2Ny aXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLworQEAgLTE1Myw3ICsxNTYsMTIgQEAgc291cmNl X3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgorIAkgIG1ha2VfY2xlYW51cF9mY2xv c2UgKHN0cmVhbSk7CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKyAKKy0J ICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAgaWYgKCFmaWxl X2lzX2F1dG9fbG9hZF9zYWZlIChmdWxsX3BhdGgsCisrCQkJCSAgICAgICBfKCJhdXRvLWxvYWQ6 IExvYWRpbmcgUHl0aG9uIHNjcmlwdCAiCisrCQkJCQkgIlwiJXNcIiBmcm9tIHNlY3Rpb24gXCIl c1wiIG9mICIKKysJCQkJCSAib2JqZmlsZSBcIiVzXCIuXG4iKSwKKysJCQkJICAgICAgIGZ1bGxf cGF0aCwgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsCisrCQkJCSAgICAgICBvYmpmaWxlLT5uYW1l KSkKKyAJICAgIG9wZW5lZCA9IDA7CisgCX0KKyAgICAgICBlbHNlCgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTEzb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xM29mMTgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZWExNTMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9s b2FkLTEzb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMzAuaHRtbAotCi0jIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS4xMjk3Ci0jIyMgc3JjL2dk Yi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4Ci0jIyAtMSwzICsxLDcg QEAKLSsyMDEyLTA0LTE4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUpOiBGaXgg c21hbGxleGFtcGxlIHR5cG8uCi0rCi0gMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlOZXcgb3B0aW9uICJzZXQgZGVidWcgYXV0by1s b2FkIi4KLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzE3IDE1OjU2OjIxCTEu OTQ0Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8xOCAwNzowMzo1OAkxLjk0 NQotQEAgLTIxMTkyLDcgKzIxMTkyLDcgQEAKLSBtYXkgbm90IGJlIHRvbyBvYnZpb3VzIHdoaWxl IHNldHRpbmcgaXQgdXAuCi0gCi0gQHNtYWxsZXhhbXBsZQotLShnZGIpIHNldCBkZWJ1ZyBhdXRv LWxvYWQgdWVzCi0rKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCBvbgotIChnZGIpIGZpbGUgfi9z cmMvdC90cnVlCi0gYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFu ZHMgc2NyaXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKLSAgICAgICAgICAgIGZvciBvYmpmaWxlICIv dG1wL3RydWUiLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xM29mMjIucGF0Y2ggYi9nZGIt YXV0b2xvYWQtMTNvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjI2ZWExNTMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTNvZjIyLnBhdGNoCkBA IC0wLDAgKzEsMjMgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQv bXNnMDAxMzAuaHRtbAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6 NTY6MjEJMS4xMjk3CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTggMDc6MDM6 NTcJMS4xMjk4CisjIyAtMSwzICsxLDcgQEAKKysyMDEyLTA0LTE4ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLnRleGluZm8gKEF1dG8tbG9h ZGluZyB2ZXJib3NlIG1vZGUpOiBGaXggc21hbGxleGFtcGxlIHR5cG8uCisrCisgMjAxMi0wNC0x NyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAlOZXcg b3B0aW9uICJzZXQgZGVidWcgYXV0by1sb2FkIi4KKy0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEyLzA0LzE3IDE1OjU2OjIxCTEuOTQ0CisrKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi8wNC8xOCAwNzowMzo1OAkxLjk0NQorQEAgLTIxMTkyLDcgKzIxMTkyLDcgQEAKKyBtYXkg bm90IGJlIHRvbyBvYnZpb3VzIHdoaWxlIHNldHRpbmcgaXQgdXAuCisgCisgQHNtYWxsZXhhbXBs ZQorLShnZGIpIHNldCBkZWJ1ZyBhdXRvLWxvYWQgdWVzCisrKGdkYikgc2V0IGRlYnVnIGF1dG8t bG9hZCBvbgorIChnZGIpIGZpbGUgfi9zcmMvdC90cnVlCisgYXV0by1sb2FkOiBMb2FkaW5nIGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKKyAg ICAgICAgICAgIGZvciBvYmpmaWxlICIvdG1wL3RydWUiLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRv bG9hZC0xNG9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTRvZjE4LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAyYWNmZDBlLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0x NG9mMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTc4Lmh0bWwKLQotIyMjIHNyYy9nZGIv ZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzE4IDA3OjAzOjU3CTEuMTI5OAotIyMjIHNyYy9nZGIvZG9j L0NoYW5nZUxvZwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuMTI5OQotIyMgLTEsMyArMSw4IEBACi0r MjAxMi0wNC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot KwotKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZSBAaXRl bWl6ZSBAYnVsbGV0Ci0rCWJ5IEB0YWJsZSBAYXNpcy4gIEZpeCBmb3JtYXR0aW5nIG9mIG9uZSBp dGVtLgotKwotIDIwMTItMDQtMTggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZSk6 IEZpeCBzbWFsbGV4YW1wbGUgdHlwby4KLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEy LzA0LzE4IDA3OjAzOjU4CTEuOTQ1Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8w NC8yMiAxNTo0OToyMQkxLjk0NgotQEAgLTIxMTM2LDggKzIxMTM2LDggQEAKLSBUbyBmb3JjZSBA dmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGluZWQgdG8gbG9hZCBpbiB0aGUg cHJldmlvdXMKLSBleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHdh eXM6Ci0gCi0tQGl0ZW1pemUgQGJ1bGxldAotLUBpdGVtIH4vLmdkYmluaXQ6IGFkZC1hdXRvLWxv YWQtc2FmZS1wYXRoIH4vc3JjL2dkYgotK0B0YWJsZSBAYXNpcwotK0BpdGVtIEBmaWxle34vLmdk YmluaXR9OiBAc2FtcHthZGQtYXV0by1sb2FkLXNhZmUtcGF0aCB+L3NyYy9nZGJ9Ci0gU3BlY2lm eSB0aGlzIHRydXN0ZWQgZGlyZWN0b3J5IChvciBhIGZpbGUpIGFzIGFkZGl0aW9uYWwgY29tcG9u ZW50IG9mIHRoZSBsaXN0LgotIFlvdSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkgZXhpc3Rpbmcg ZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0gYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1w YXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCi1AQCAtMjEx NTUsMjAgKzIxMTU1LDIwIEBACi0gRHVyaW5nIGNvbXBpbGF0aW9uIG9mIEB2YWx1ZXtHREJOfSB5 b3UgbWF5IGRpc2FibGUgYW55IGF1dG8tbG9hZGluZyBzYWZldHkuCi0gVGhpcyBhc3N1bWVzIGFs bCB0aGUgZmlsZXMgeW91IHdpbGwgZXZlciBkZWJ1ZyB3aXRoIHRoaXMgQHZhbHVle0dEQk59IGNv bWUgZnJvbQotIHRydXN0ZWQgc291cmNlcy4KLS1AZW5kIGl0ZW1pemUKLStAZW5kIHRhYmxlCi0g Ci0gT24gdGhlIG90aGVyIGhhbmQgeW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgZm9yYmlkIGF1dG9t YXRpYyBmaWxlcyBsb2FkaW5nIHdoaWNoCi0gYWxzbyBzdXBwcmVzc2VzIGFueSBzdWNoIHdhcm5p bmcgbWVzc2FnZXM6Ci0gCi0tQGl0ZW1pemUgQGJ1bGxldAotK0B0YWJsZSBAYXNpcwotIEBpdGVt IEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KLSBZb3UgY2FuIHVz ZSBAdmFsdWV7R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dE Qk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQHNhbXB7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRv LWxvYWQgbm99Ci0rQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQg bm99Ci0gRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkgZm9yIHRoZSB1c2VyCi0gKEBweHJl ZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFdoaWxlIGl0IGlzIGltcHJvYmFibGUsIHlv dSBjb3VsZCBhbHNvCi0gdXNlIHN5c3RlbSBpbml0IGZpbGUgaW5zdGVhZCAoQHB4cmVme1N5c3Rl bS13aWRlIGNvbmZpZ3VyYXRpb259KS4KLS1AZW5kIGl0ZW1pemUKLStAZW5kIHRhYmxlCi0gCi0g VGhpcyBzZXR0aW5nIGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBieSB1c2Vy LiAgSWYgbm8gZW50cnkgbWF0Y2hlcwotIEB2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxhc3QgcmVz b3J0IHRvIGFsc28gcmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bwoKZGlmZiAtLWdpdCBh L2dkYi1hdXRvbG9hZC0xNG9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTRvZjIyLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhY2ZkMGUKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItYXV0b2xvYWQtMTRvZjIyLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxNzguaHRtbAorCisjIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4CisjIyMgc3JjL2dk Yi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5CisjIyAtMSwzICsxLDgg QEAKKysyMDEyLTA0LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisrCisrCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNl IEBpdGVtaXplIEBidWxsZXQKKysJYnkgQHRhYmxlIEBhc2lzLiAgRml4IGZvcm1hdHRpbmcgb2Yg b25lIGl0ZW0uCisrCisgMjAxMi0wNC0xOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgdmVyYm9zZSBt b2RlKTogRml4IHNtYWxsZXhhbXBsZSB0eXBvLgorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTIvMDQvMTggMDc6MDM6NTgJMS45NDUKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEyLzA0LzIyIDE1OjQ5OjIxCTEuOTQ2CitAQCAtMjExMzYsOCArMjExMzYsOCBAQAorIFRvIGZv cmNlIEB2YWx1ZXtHREJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGlu IHRoZSBwcmV2aW91cworIGV4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dp bmcgd2F5czoKKyAKKy1AaXRlbWl6ZSBAYnVsbGV0CistQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1 dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RiCisrQHRhYmxlIEBhc2lzCisrQGl0ZW0gQGZpbGV7 fi8uZ2RiaW5pdH06IEBzYW1we2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYn0KKyBT cGVjaWZ5IHRoaXMgdHJ1c3RlZCBkaXJlY3RvcnkgKG9yIGEgZmlsZSkgYXMgYWRkaXRpb25hbCBj b21wb25lbnQgb2YgdGhlIGxpc3QuCisgWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlz dGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKKyBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBz YWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KK0BA IC0yMTE1NSwyMCArMjExNTUsMjAgQEAKKyBEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dE Qk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KKyBUaGlzIGFzc3Vt ZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RC Tn0gY29tZSBmcm9tCisgdHJ1c3RlZCBzb3VyY2VzLgorLUBlbmQgaXRlbWl6ZQorK0BlbmQgdGFi bGUKKyAKKyBPbiB0aGUgb3RoZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGljaXRseSBmb3JiaWQg YXV0b21hdGljIGZpbGVzIGxvYWRpbmcgd2hpY2gKKyBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2gg d2FybmluZyBtZXNzYWdlczoKKyAKKy1AaXRlbWl6ZSBAYnVsbGV0CisrQHRhYmxlIEBhc2lzCisg QGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQorIFlvdSBj YW4gdXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFs dWV7R0RCTn0gc2Vzc2lvbi4KKyAKKy1AaXRlbSBAc2FtcHt+Ly5nZGJpbml0fTogQHNhbXB7c2V0 IGF1dG8tbG9hZCBub30KKytAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8t bG9hZCBub30KKyBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseSBmb3IgdGhlIHVzZXIKKyAo QHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQgaXMgaW1wcm9iYWJs ZSwgeW91IGNvdWxkIGFsc28KKyB1c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0ZWFkIChAcHhyZWZ7 U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0pLgorLUBlbmQgaXRlbWl6ZQorK0BlbmQgdGFibGUK KyAKKyBUaGlzIHNldHRpbmcgYXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5 IHVzZXIuICBJZiBubyBlbnRyeSBtYXRjaGVzCisgQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFz dCByZXNvcnQgdG8gYWxzbyByZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTE1b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNW9mMTgucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNTY4NDYuLjAwMDAwMDAKLS0tIGEv Z2RiLWF1dG9sb2FkLTE1b2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxODMuaHRtbAot Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Ci0j IyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAwCi0jIyAt MSwzICsxLDggQEAKLSsyMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgp OiBSZW1vdmUgdHJhaWxpbmcgW0Bkb3Rze31dLgotKwlUaHJlZSB0aW1lcy4KLSsKLSAyMDEyLTA0 LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCSog Z2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNlIEBpdGVtaXplIEBi dWxsZXQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEu OTQ2Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjk0 NwotQEAgLTIxMTQyLDExICsyMTE0MiwxMSBAQAotIFlvdSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBh bnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0gYnkgQHNhbXB7c2hvdyBhdXRv LWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBs ZSkuCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggL3Vz cjovYmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBh dXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIifQotIFNwZWNpZnkgdGhpcyBk aXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0g QHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8t bG9hZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCJ9Ci0gRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNp bmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5 b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCi0gZnJv bSB0cnVzdGVkIHNvdXJjZXMuCi1AQCAtMjExNjEsNyArMjExNjEsNyBAQAotIGFsc28gc3VwcHJl c3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgotIAotIEB0YWJsZSBAYXNpcwotLUBpdGVt IEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KLStAaXRlbSBAa2Jk e2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0KLSBZb3UgY2FuIHVzZSBAdmFsdWV7R0RCTn0g Y29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0g Ci0gQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99CgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE1b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNW9mMjIu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU1Njg0NgotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xNW9mMjIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE4My5odG1sCisK KyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMiAxNTo0OToyMQkxLjEyOTkKKyMj IyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjEzMDAKKyMjIC0x LDMgKzEsOCBAQAorKzIwMTItMDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6 IFJlbW92ZSB0cmFpbGluZyBbQGRvdHN7fV0uCisrCVRocmVlIHRpbWVzLgorKworIDIwMTItMDQt MjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBn ZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1 bGxldAorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS45 NDYKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuOTQ3 CitAQCAtMjExNDIsMTEgKzIxMTQyLDExIEBACisgWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFu eSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKKyBieSBAc2FtcHtzaG93IGF1dG8t bG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxl KS4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNy Oi9iaW46fi9zcmMvZ2RiIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiJ9CisgU3BlY2lmeSB0aGlzIGRp cmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKKyBA dmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCIgW0Bkb3Rze31dfQorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRv LWxvYWQgc2FmZS1wYXRoIn0KKyBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2lu Z2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlv dSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKKyBmcm9t IHRydXN0ZWQgc291cmNlcy4KK0BAIC0yMTE2MSw3ICsyMTE2MSw3IEBACisgYWxzbyBzdXBwcmVz c2VzIGFueSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6CisgCisgQHRhYmxlIEBhc2lzCistQGl0ZW0g QGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQorK0BpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8ifQorIFlvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSBj b21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAK KyBAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMTZvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE2b2YxOC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhODhlNi4uMDAwMDAwMAotLS0g YS9nZGItYXV0b2xvYWQtMTZvZjE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBA QAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE4NC5odG1s Ci0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjEzMDAK LSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyNjowMAkxLjEzMDEKLSMj IC0zLDYgKzMsOSBAQAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTog UmVtb3ZlIHRyYWlsaW5nIFtAZG90c3t9XS4KLSAJVGhyZWUgdGltZXMuCi0gCi0rCSogZ2RiLnRl eGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBBZGQgdHJhaWxpbmcgQGRvdHN7fS4KLSsJ VGhyZWUgdGltZXMuCi0rCi0gMjAxMi0wNC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBw YXRoKTogUmVwbGFjZSBAaXRlbWl6ZSBAYnVsbGV0Ci0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjk0NwotKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTIvMDQvMjMgMTc6MjY6MDEJMS45NDgKLUBAIC0yMTE0MiwxMSArMjExNDIsMTEgQEAKLSBZ b3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXll ZCBieQotIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7 L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgotIAotLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIifQotK0BpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIiIEBk b3Rze319Ci0gU3BlY2lmeSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBi dXQganVzdCBmb3IgYSBzaW5nbGUKLSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSAKLS1AaXRlbSBA a2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCJ9Ci0rQGl0ZW0gQGtiZHtnZGIg LWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319Ci0gRGlzYWJsZSBhdXRvLWxv YWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSBUaGlzIGFz c3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNl c3Npb24gd2lsbCBjb21lCi0gZnJvbSB0cnVzdGVkIHNvdXJjZXMuCi1AQCAtMjExNjEsNyArMjEx NjEsNyBAQAotIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgotIAot IEB0YWJsZSBAYXNpcwotLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8ifQot K0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIEBkb3Rze319Ci0gWW91IGNh biB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1 ZXtHREJOfSBzZXNzaW9uLgotIAotIEBpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtzZXQg YXV0by1sb2FkIG5vfQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xNm9mMjIucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMTZvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmFmYTg4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTZvZjIyLnBhdGNo CkBAIC0wLDAgKzEsMzkgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDQvbXNnMDAxODQuaHRtbAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMg MTc6MjA6NTYJMS4xMzAwCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6 MjY6MDAJMS4xMzAxCisjIyAtMyw2ICszLDkgQEAKKyAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2Fk aW5nIHNhZmUgcGF0aCk6IFJlbW92ZSB0cmFpbGluZyBbQGRvdHN7fV0uCisgCVRocmVlIHRpbWVz LgorIAorKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogQWRkIHRyYWls aW5nIEBkb3Rze30uCisrCVRocmVlIHRpbWVzLgorKworIDIwMTItMDQtMjIgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoQXV0 by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1bGxldAorLS0tIHNyYy9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS45NDcKKysrKyBzcmMvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIzIDE3OjI2OjAxCTEuOTQ4CitAQCAtMjExNDIsMTEg KzIxMTQyLDExIEBACisgWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJl Y3RvcmllcyBkaXNwbGF5ZWQgYnkKKyBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9 IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KKyAKKy1AaXRlbSBA a2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2Ri In0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9i aW46fi9zcmMvZ2RiIiBAZG90c3t9fQorIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhl IHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCisgQHZhbHVle0dEQk59IHNlc3Np b24uCisgCistQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgifQor K0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBAZG90c3t9fQor IERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNl c3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlz IEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQorIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgor QEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKKyBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2Fybmlu ZyBtZXNzYWdlczoKKyAKKyBAdGFibGUgQGFzaXMKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQg YXV0by1sb2FkIG5vIn0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBA ZG90c3t9fQorIFlvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZv ciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKyBAaXRlbSBAZmlsZXt+Ly5nZGJp bml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQt MTdvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE3b2YxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNjU0YWFmOS4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTdvZjE4 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwNzU2Lmh0bWwKLVN1YmplY3Q6IFJlOiBb cGF0Y2hdIGF1dG8tbG9hZCBzYWZlLXBhdGggcmVzZXQgYmFjayBieSBzZXQgIiIKLSAtIFBhdGNo ZWQgb3V0ICIod2l0aG91dCB0aGUgcXVvdGVzKSIuCi0KLU9uIFN1biwgMjIgQXByIDIwMTIgMjI6 MTY6MzIgKzAyMDAsIEVsaSBaYXJldHNraWkgd3JvdGU6Ci0+ID4gK0BpdGVtIHNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIFtAdmFye2RpcmVjdG9yaWVzfV0KLT4gCi0+IFlvdSBuZWVkIEBye30gYXJv dW5kIFsgYW5kIF0uCi0+IAotPiA+ICtTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGNvZGV7Ii8i fSAod2l0aG91dCB0aGUgcXVvdGVzKSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5Ci0+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eCi0+IFdoeSBub3QgQGZpbGV7L30/ICBUaGUg cXVvdGVzIGFyZSBub3QgbmVlZGVkIGluIGFueSBjYXNlLgotCi1kb25lLgotCi0KLUluIGZhY3Qg dGhpcyBwYXRjaCBpcyB1bnJlbGF0ZWQgdG8gdGhlIERvdWcncyBzdWdnZXN0aW9uLCByZXBvc3Rp bmcgaXQgb25seQotd2l0aCB0aGUgZG9jIHVwZGF0ZS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1n ZGIvCi0yMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQkqIGF1dG8tbG9hZC5jIChzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCk6IFJlc2V0IEFV VE9fTE9BRF9TQUZFX1BBVEgKLQliYWNrIHRvIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCBp ZiBpdCBpcyBiZWluZyBzZXQgdG8gIiIuCi0JKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCk6IENo ZWNrIGFueS1kaXJlY3RvcnkgYnkgY29tcGFyaXNvbiB3aXRoICIvIi4KLQkoYWRkX2F1dG9fbG9h ZF9zYWZlX3BhdGgpOiBDaGFuZ2UgdGhlIGVycm9yIG1lc3NhZ2UuCi0JKF9pbml0aWFsaXplX2F1 dG9fbG9hZCk6IENoYW5nZSB0aGUgInNhZmUtcGF0aCIgaGVscCB0ZXh0LgotCSogY29uZmlndXJl OiBSZWdlbmVyYXRlCi0JKiBjb25maWd1cmUuYWMgKC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1w YXRoKTogU2V0Ci0JV0lUSF9BVVRPX0xPQURfU0FGRV9QQVRIIHRvIC8uCi0KLWdkYi9kb2MvCi0y MDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0K LQkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAnZGlyZWN0b3Jp ZXMnCi0JZm9yICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9uYWwuICBNZW50aW9uIGlm IGl0IGlzIG9taXR0ZWQuCi0JQ2hhbmdlIGRpc2FibGluZyBzZWN1cml0eSBwcm90ZWN0aW9uIGNv bmRpdGlvbiB0byAiLyIsIHR3aWNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2F1dG8tbG9hZC5jIGIv Z2RiL2F1dG8tbG9hZC5jCi1pbmRleCA5ZDE5MTc5Li42YzEzMDlmIDEwMDY0NAotLS0tIGEvZ2Ri L2F1dG8tbG9hZC5jCi0rKysgYi9nZGIvYXV0by1sb2FkLmMKLUBAIC0xODEsNiArMTgxLDEyIEBA IGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSBzdGF0aWMgdm9pZAotIHNl dF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjKQotIHsKLSsgIGlmIChhdXRvX2xvYWRfc2FmZV9wYXRoWzBdID09 ICdcMCcpCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0rICAg ICAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVf UEFUSCk7Ci0rICAgIH0KLSsKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsK LSB9Ci0gCi1AQCAtMTkwLDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkCi0gc2hvd19hdXRvX2xvYWRf c2FmZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotIAkJCSAgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIGlmICgq dmFsdWUgPT0gMCkKLSsgIGlmIChzdHJjbXAgKHZhbHVlLCAiLyIpID09IDApCi0gICAgIGZwcmlu dGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2FmZSB0byBsb2FkIGZy b20gYW55ICIKLSAJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOwotICAgZWxzZQotQEAgLTIwOSw4 ICsyMTUsOSBAQCBhZGRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotIAotICAgaWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAwKQotICAgICBlcnJvciAo XygiXAotLUFkZGluZyBlbXB0eSBkaXJlY3RvcnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1s b2FkIHNhZmUtcGF0aCBzZWN1cml0eS4gIFwKLS1Vc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo JyBpbnN0ZWFkIGlmIHlvdSBtZWFuIHRoYXQuIikpOwotK0RpcmVjdG9yeSBhcmd1bWVudCByZXF1 aXJlZC5cblwKLStVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC8nIGZvciBkaXNhYmxpbmcg dGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuXAotKyIpKTsKLSAKLSAgIHMgPSB4c3Ry cHJpbnRmICgiJXMlYyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1Is IGFyZ3MpOwotICAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotQEAgLTEwMjMsOCArMTAz MCwxMCBAQCBTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAotIFNob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3Jp ZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAotIFZh cmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAu Li4nIG9wdGlvbnMgbXVzdFxuXAotIGJlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJlY3Rvcmll cyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwKLS1wcmludGVkIGFu ZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5IHN0cmluZyAob3Ig ZXZlblxuXAotLWVtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55IGZpbGUgZm9yIHRo ZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCi0rcHJpbnRlZCBhbmQgZmlsZSB3aWxs IG5vdCBiZSB1c2VkIG90aGVyd2lzZS5cblwKLStTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIGFu IGVtcHR5IGxpc3QgcmVzZXRzIGl0IHRvIGl0cyBkZWZhdWx0IHZhbHVlLlxuXAotK1NldHRpbmcg dGhpcyBwYXJhbWV0ZXIgdG8gJy8nICh3aXRob3V0IHRoZSBxdW90ZXMpIGFsbG93cyBhbnkgZmls ZVxuXAotK2ZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBvcHRpb25zLlxuXAotIFRoaXMgb3B0 aW9uIGlzIGlnbm9yZWQgZm9yIHRoZSBraW5kcyBvZiBmaWxlcyBoYXZpbmcgJ3NldCBhdXRvLWxv YWQgLi4uIG9mZicuXG5cCi0gVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMg Zm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0gCQkJCSAgICAgc2V0X2F1dG9fbG9hZF9zYWZl X3BhdGgsCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKLWluZGV4 IDU0YzIzOTkuLjQyZDJmYmQgMTAwNzU1Ci0tLS0gYS9nZGIvY29uZmlndXJlCi0rKysgYi9nZGIv Y29uZmlndXJlCi1AQCAtNDk0OSw3ICs0OTQ5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aC4uLiAiID4mNjsgfQotICMgQ2hlY2sgd2hldGhl ciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo IiA9ICJubyI7IHRoZW4KLS0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKLSsgICB3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0gIGZpCi0gZWxzZQotICAgd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoPSIkcHJlZml4IgotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuYWMgYi9nZGIv Y29uZmlndXJlLmFjCi1pbmRleCBhNDBjMmU1Li45YmRlMThmIDEwMDY0NAotLS0tIGEvZ2RiL2Nv bmZpZ3VyZS5hYwotKysrIGIvZ2RiL2NvbmZpZ3VyZS5hYwotQEAgLTE0MCw3ICsxNDAsNyBAQCBB Q19BUkdfV0lUSChhdXRvLWxvYWQtc2FmZS1wYXRoLAotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgt YXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRv LWxvYWRlZCBmaWxlc10pCi0gQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2Fm ZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNdKSwK LSBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0tICAg d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCi0rICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIvIgotICBmaV0sCi0gW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCJdKQotIEFD X0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRILCB3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGgsCi1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8KLWluZGV4IGEyYTRlYjMuLjQ2ZGRlMjcgMTAwNjQ0Ci0tLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtMjExMDUsOSArMjExMDUs MTIgQEAgVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRo ZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0gQHRhYmxlIEBjb2RlCi0gQGFuY2hvcntzZXQgYXV0by1s b2FkIHNhZmUtcGF0aH0KLSBAa2luZGV4IHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoCi0tQGl0ZW0g c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rvcmllc30KLStAaXRlbSBzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCBAcntbfUB2YXJ7ZGlyZWN0b3JpZXN9QHJ7XX0KLSBTZXQgdGhlIGxp c3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3RvcmllcykgdHJ1c3RlZCBmb3Ig YXV0b21hdGljCi0gbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBZb3UgY2FuIGFs c28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCi0rSWYgeW91IG9taXQgQHZhcntkaXJl Y3Rvcmllc30sIEBzYW1we2F1dG8tbG9hZCBzYWZlLXBhdGh9IHdpbGwgYmUgcmVzZXQgdG8KLStp dHMgZGVmYXVsdCB2YWx1ZSBhcyBzcGVjaWZpZWQgZHVyaW5nIEB2YWx1ZXtHREJOfSBjb21waWxh dGlvbi4KLSsKLSBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIGRpcmVjdG9yeSBzZXBhcmF0 b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAotIHN5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdp bmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQotIHRv IHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgotQEAgLTIxMTI2LDcgKzIxMTI5 LDggQEAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aXBsZSBlbnRyaWVz IG1heSBiZSBkZWxpbWl0ZWQgYnkgdGhlCi0gaG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJh dG9yIGluIHVzZS4KLSBAZW5kIHRhYmxlCi0gCi0tU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGFu IGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCi0rU2V0dGlu ZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMgc2VjdXJpdHkKLStwcm90 ZWN0aW9uLgotIFRoaXMgdmFyaWFibGUgaXMgc3VwcG9zZWQgdG8gYmUgc2V0IHRvIHRoZSBzeXN0 ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkgdGhlCi0gc3lzdGVtIHN1cGVydXNlciBvbmx5LiAg VXNlcnMgY2FuIGFkZCB0aGVpciBzb3VyY2UgZGlyZWN0b3JpZXMgaW4gaW5pdCBmaWxlcyBpbgot IHRoZWlyIGhvbWUgZGlyZWN0b3JpZXMgKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9 KS4gIFNlZSBhbHNvIGRlcHJlY2F0ZWQKLUBAIC0yMTE0Niw3ICsyMTE1MCw3IEBAIGJ5IEBzYW1w e3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0 aGlzIGV4YW1wbGUpLgotIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3Vz IGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0gQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0t QGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319Ci0r QGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggLyIgQGRvdHN7fX0K LSBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBz ZXNzaW9uLgotIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhp cyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLSBmcm9tIHRydXN0ZWQgc291cmNlcy4K LQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQt MTdvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NGY3NWIK LS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTdvZjIyLnBhdGNoCkBAIC0wLDAgKzEs MjggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwMTAu aHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8wMiAxNzoxMzozOQkxLjE0MTk0 CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8wMiAyMDowMDozMQkxLjE0MTk1CisjIyAt MSwzICsxLDggQEAKKysyMDEyLTA1LTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+CisrCisrCUZpeCAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aCBmb3Ig TVMtV2luZG93cyBob3N0IHBsYXRmb3JtLgorKwkqIGF1dG8tbG9hZC5jIChmaWxlbmFtZV9pc19p bl9kaXIpOiBSZXR1cm4gMSBmb3IgRElSX0xFTiAwLgorKworIDIwMTItMDUtMDIgIEVsaSBaYXJl dHNraWkgIDxlbGl6QGdudS5vcmc+CisgCisgCSogZ2RiX2N1cnNlcy5oOiBVbmRlZmluZSBLRVlf RVZFTlQgYmVmb3JlIGluY2x1ZGluZyBjdXJzZXMKKy0tLSBzcmMvZ2RiL2F1dG8tbG9hZC5jCTIw MTIvMDQvMTcgMTU6NTY6MjEJMS40CisrKysgc3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzAy IDIwOjAwOjM2CTEuNQorQEAgLTIzMSw2ICsyMzEsMTIgQEAKKyAgIHdoaWxlIChkaXJfbGVuICYm IElTX0RJUl9TRVBBUkFUT1IgKGRpcltkaXJfbGVuIC0gMV0pKQorICAgICBkaXJfbGVuLS07Cisg CisrICAvKiBFbnN1cmUgYXV0b19sb2FkX3NhZmVfcGF0aCAiLyIgbWF0Y2hlcyBhbnkgRklMRU5B TUUuICBPbiBNUy1XaW5kb3dzCisrICAgICBwbGF0Zm9ybSBGSUxFTkFNRSBldmVuIGFmdGVyIGdk Yl9yZWFscGF0aCBkb2VzIG5vdCBoYXZlIHRvIHN0YXJ0IHdpdGgKKysgICAgIElTX0RJUl9TRVBB UkFUT1IgY2hhcmFjdGVyLCBzdWNoIGFzIHRoZSAnQzpceC5leGUnIGZpbGVuYW1lLiAgKi8KKysg IGlmIChkaXJfbGVuID09IDApCisrICAgIHJldHVybiAxOworKworICAgcmV0dXJuIChmaWxlbmFt ZV9uY21wIChkaXIsIGZpbGVuYW1lLCBkaXJfbGVuKSA9PSAwCisgCSAgJiYgKElTX0RJUl9TRVBB UkFUT1IgKGZpbGVuYW1lW2Rpcl9sZW5dKQorIAkgICAgICB8fCBmaWxlbmFtZVtkaXJfbGVuXSA9 PSAnXDAnKSk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE4b2YxOC5wYXRjaCBiL2dkYi1h dXRvbG9hZC0xOG9mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTll NDcuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE4b2YxOC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDIzMSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMi0wNC9tc2cwMDc1OC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIGF1dG8tbG9hZCBzYWZlLXBh dGggZGVmYXVsdD0kZGRpci9hdXRvLWxvYWQgIFtSZTogW3BhdGNoXSBhdXRvLWxvYWQgc2FmZS1w YXRoIHJlc2V0IGJhY2sgYnkgc2V0ICIiXQotCi1PbiBTdW4sIDIyIEFwciAyMDEyIDIzOjI2OjE2 ICswMjAwLCBEb3VnIEV2YW5zIHdyb3RlOgotPiBBIHRob3VnaHQgb2NjdXJyZWQgdG8gbWUgcmVn YXJkaW5nIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGF1dG8tbG9hZC1wYXRoCi0+ID0gJHtwcmVmaXh9 LgotCi1UaGlzIGlzIHVucmVsYXRlZCB0byB0aGlzIHBhdGNoIGJ1dCB0aGFua3MgZm9yIHRoZSBz dWdnZXN0aW9uLgotCi0KLT4gU28gSSB3YXMgd29uZGVyaW5nIGlmIHdlIHJlYWxseSB3YW50IHNl Y3VyaXR5IHRvIGJlIG9uIGJ5IGRlZmF1bHQsCi0+IHNob3VsZCB0aGUgZGVmYXVsdCB2YWx1ZSBi ZSBnZGIncyBkYXRhLWRpcmVjdG9yeSAoZS5nLiwKLT4gJHByZWZpeC9zaGFyZS9nZGIpICsgJGV4 ZWNfcHJlZml4L2xpYnssMzIsNjR9ICsgPz8/Ci0KLU1hZGUgaXQgdGhlcmVmb3JlICRkZGlyL2F1 dG8tbG9hZCwgb24gYW4gaWRlYWwgc3lzdGVtL2Rpc3RybyB3ZSBjYW4gY2hhbmdlIGFsbAotdGhl IGF1dG8tbG9hZGVkIEdEQiBmaWxlcyB0byBiZSBsb2NhdGVkIHVuZGVyICRkZGlyL2F1dG8tbG9h ZC4gIEkgaGF2ZSBmaWxlZAotZm9yIHRoZSBvbmx5IHJlbWFpbmluZyB2aW9sYXRpb24gKC91c3Iv YmluL21vbm8tZ2RiLnB5KSBrbm93biB0byBtZToKLQlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5j b20vc2hvd19idWcuY2dpP2lkPTgxNTUwMQotCShTdXJlIEkgd2lsbCBhc2sgYWJvdXQgdXBzdHJl YW1pbmcgb2YgdGhlIGNoYW5nZS4pCi0KLQotPiBQbHVzLCBpdCBzZWVtcyBsaWtlIGF0IGxlYXN0 IGRhdGEtZGlyZWN0b3J5IHNob3VsZCBiZSByZWxvY2F0YWJsZS4KLT4gSW1wbGVtZW50aW5nIHRo aXMgbWlnaHQgYmUgY3VtYmVyc29tZSB1bmxlc3MgZGF0YS1kaXJlY3Rvcnkgd2FzCi0+IHJlcHJl c2VudGVkIGFzIHNvbWV0aGluZyBsaWtlICIkZGRpciIuCi0KLURvbmUuICBVbmZvcnR1bmF0ZWx5 IHRoaXMgc3RpbGwgZG9lcyBub3QgZml4IHRoZSAiLi9nZGIiIHJ1biBmb3IgYSBuZXdseSBidWls dAotR0RCLiAgTmV3bHkgYnVpbHQgR0RCIHByb2JhYmx5IGNvdWxkIHVzZSAiLWRhdGEtZGlyZWN0 b3J5ICRQV0QvZGF0YS1kaXJlY3RvcnkiCi0oaWYgR0RCJ3MgcHJvZ3JhbSBkaXIgY29udGFpbnMg ImRhdGEtZGlyZWN0b3J5IiBzb3J0IG9mIHJlbG9jYXRpb24pLgotV2UgY291bGQgdGhlbiBjaGFu Z2UgY3VycmVudAotCWdkYi1nZGIuZ2RiLmluIC0+IGdkYi1nZGIuZ2RiCi10bwotCWdkYi1nZGIu Z2RiLmluIC0+IGRhdGEtZGlyZWN0b3J5L2F1dG8tbG9hZC8kUFdEL2dkYi1nZGIuZ2RiCi1hbmQg ZXZlbiBpbnN0YWxsIHRoZSBmaWxlICh3aXRoIHByb3BlciBpbnN0YWxsYXRpb24gZGlyZWN0b3Jp ZXMpIGFzOgotCS91c3Ivc2hhcmUvZ2RiL3Vzci9iaW4vZ2RiLWdkYi5nZGIKLQkoYWRkaXRpb25h bGx5IGVuc3VyaW5nIGZvciBleGFtcGxlIGluIEZlZG9yYSAtIGluIGl0cyAuc3BlYyBmaWxlCi0J QHNyY2RpckAgZ2V0cyBzdWJzdGl0dXRlZCByaWdodCBmb3IgRmVkb3JhICotZGVidWdpbmZvLnJw bSkKLQotV291bGQgaXQgbWFrZSBldmVyeW9uZSBoYXBweT8KLQotCi1UaGFua3MsCi1KYW4KLQot Ci1nZGIvCi0yMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0KLQlDaGFuZ2UgYXV0by1sb2FkIHNhZmUtcGF0aCBkZWZhdWx0IHRvICRkZGlyL2F1 dG8tbG9hZC4KLQkqIGF1dG8tbG9hZC5jIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUp OiBDYWxsCi0Jc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCBmb3IgJGRkaXIuCi0JKiBjb25maWd1 cmU6IFJlZ2VuZXJhdGUuCi0JKiBjb25maWd1cmUuYWMgKC0td2l0aC1hdXRvLWxvYWQtc2FmZS1w YXRoKTogU3VnZ2VzdCAkZGRpciBzeW50YXguCi0JQ2hhbmdlIHRoZSBkZWZhdWx0IHRvIFxcXCRk ZGlyL2F1dG8tbG9hZC4KLQkqIGRlZnMuaCAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCk6IE5l dyBkZWNsYXJhdGlvbi4KLQkqIHV0aWxzLmMgKHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQpOiBO ZXcgZnVuY3Rpb24uCi0KLWdkYi9kb2MvCi0yMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlDaGFuZ2UgYXV0by1sb2FkIHNhZmUtcGF0aCBk ZWZhdWx0IHRvICRkZGlyL2F1dG8tbG9hZC4KLQkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcp OiBDaGFuZ2Ugc2hvd24gc2FmZS1wYXRoIGRlZmF1bHQgdG8KLQkkZGRpci9hdXRvLWxvYWQuCi0J KEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBDaGFuZ2UgdGhlIHNhbXBsZSB3YXJuaW5nIHRvICRk ZGlyL2F1dG8tbG9hZC4KLQlUd2ljZS4gIE1lbnRpb24gdGhlICRkZGlyIHN1YnN0aXR1dGlvbi4K LQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTI0 IDE4OjEyOjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1 dG8tbG9hZC5jCTIwMTItMDQtMjQgMTg6MTI6MzguODE5Mjc5NTc0ICswMjAwCi1AQCAtMTQxLDgg KzE0MSwxMiBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0gICBmb3Ig KGl4ID0gMDsgaXggPCBsZW47IGl4KyspCi0gICAgIHsKLSAgICAgICBjaGFyICpkaXIgPSBWRUNf aW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOwotLSAgICAgIGNo YXIgKmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOwotLSAgICAgIGNoYXIgKnJlYWxfcGF0 aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOwotKyAgICAgIGNoYXIgKmV4cGFuZGVkLCAqcmVh bF9wYXRoOwotKwotKyAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOwotKyAgICAg IHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZleHBhbmRlZCwgIiRkZGlyIiwgZ2RiX2RhdGFk aXIpOwotKwotKyAgICAgIHJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOwotIAot ICAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBh bmQtZWQuICAqLwotICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9j b25maWd1cmUJMjAxMi0wNC0yNCAxODoxMjoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0yNCAxODoxMjozOC44MjIyNzk1NjYg KzAyMDAKLUBAIC0xNjY4LDcgKzE2NjgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0 aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2lu Zm9zICh5ZXMvbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBt LnNvKQotICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXMsIHVzZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcXCRkZGlyJyBm b3IgLWRhdGEtZGlyZWN0b3J5Ci0gICAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVz IGxvY2F0aW9ucwotICAgLS13aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFt ZSB1bndpbmRpbmcgc3VwcG9ydAotQEAgLTg0OTEsNyArODQ5Miw3IEBAIGlmIHRlc3QgIiR7d2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0KLSAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9 Ii8iCi0gIGZpCi0gZWxzZQotLSAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4Igot KyAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSdcXFwkZGRpci9hdXRvLWxvYWQnCi0gZmkKLSAK LSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0 LTI0IDE4OjEyOjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTI0IDE4OjEzOjA0LjA5MDIxNjYwNSArMDIwMAotQEAgLTM0 MSwxMiArMzQxLDEzIEBAIGZpCi0gIAotIEFDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0 by1sb2FkIHNhZmUtcGF0aF0pCi0gQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwKLS1B U19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sIFtkaXJlY3Rv cmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQotK0FTX0hFTFBfU1RSSU5HKFst LXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwKLSsgIFtkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZSAnXFxcJGRkaXInIGZvciAtZGF0YS1kaXJlY3Rv cnldKQotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sIFtk byBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCi0gW2lmIHRlc3Qg IiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotICAgIHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aD0iLyIKLSAgZmldLAotLVt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRw cmVmaXgiXSkKLStbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSdcXFwkZGRpci9hdXRvLWxvYWQn XSkKLSBBQ19ERUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8t bG9hZGVkIGZpbGVzLl0pCi0gQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aF0pCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZGVmcy5oCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kZWZzLmgJMjAxMi0wNC0yNCAxODoxMjoy MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kZWZzLmgJMjAx Mi0wNC0yNCAxODoxMjozOC44MjQyNzk1NjIgKzAyMDAKLUBAIC00NDIsNiArNDQyLDkgQEAgZXh0 ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2Jwc3RhdF9jbGVhcgotIAotIGV4dGVybiBpbnQgcHJv ZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1Y2VyKTsKLSAKLStleHRlcm4gdm9p ZCBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29uc3QgY2hhciAq ZnJvbSwKLSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKnRvKTsKLSsKLSAjaWZkZWYgSEFWRV9XQUlU UElECi0gZXh0ZXJuIHBpZF90IHdhaXRfdG9fZGllX3dpdGhfdGltZW91dCAocGlkX3QgcGlkLCBp bnQgKnN0YXR1cywgaW50IHRpbWVvdXQpOwotICNlbmRpZgotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMjQgMTg6MTI6MjEuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDQtMjQgMTg6MTM6MzguMjMzMTMxNTMzICswMjAwCi1AQCAtMjA4MDIsNyArMjA4MDIsNyBA QCBsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3IKLSBsb2NhbC1nZGJpbml0 OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5 IGlzIG9uLgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRz IGlzIG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBp cyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotLSAgICAgICAgICAgIGlzIC91c3IvbG9jYWwuCi0r ICAgICAgICAgICAgaXMgJGRkaXIvYXV0by1sb2FkLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0g QGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMTAwNCw5ICsyMTAwNCw5IEBAIGdldCBsb2Fk ZWQ6Ci0gJCAuL2dkYiAtcSAuL2dkYgotIFJlYWRpbmcgc3ltYm9scyBmcm9tIC9ob21lL3VzZXIv Z2RiL2dkYi4uLmRvbmUuCi0gd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5n ZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1 dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGlu ZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQi LgotIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkiIGF1dG8tbG9hZGlu ZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBh dGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0 by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQiLgotIEBlbmQgc21hbGxl eGFtcGxlCi0gCi0gVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVk IGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci1AQCAtMjEwMzgsNiArMjEwMzgsMTEgQEAgbG9h ZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aQotIGhvc3QgcGxhdGZvcm0gZGly ZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotK0FueSB1c2VkIHN0cmlu ZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0g d2hpY2ggaXMKLStkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0 YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLStiZSBwbGFjZWQgYXMgYSBkaXJlY3Rv cnkgY29tcG9uZW50IC0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieSBAZmlsZXsvfSBvcgot K0BmaWxle1x9IGRpcmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxh dGZvcm0uCi0rCi0gU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRo aXMgc2VjdXJpdHkKLSBwcm90ZWN0aW9uLgotIFRoaXMgdmFyaWFibGUgaXMgc3VwcG9zZWQgdG8g YmUgc2V0IHRvIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkgdGhlCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA0LTI0IDE4OjEyOjIxLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMJMjAxMi0wNC0yNCAx ODoxMjozOC44MzMyNzk1NDAgKzAyMDAKLUBAIC0zOTI1LDYgKzM5MjUsNDggQEAgZGlybmFtZXNf dG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaQotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0g Ci0rLyogU3Vic3RpdHV0ZSBhbGwgb2NjdXJlbmNlcyBvZiBzdHJpbmcgRlJPTSBieSBzdHJpbmcg VE8gaW4gKlNUUklOR1AuICAqU1RSSU5HUAotKyAgIG11c3QgY29tZSBmcm9tIHhyZWFsbG9jLWNv bXBhdGlibGUgYWxsb2NhdG9yIGFuZCBpdCBtYXkgYmUgdXBkYXRlZC4gIEZST00KLSsgICBuZWVk cyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElSX1NFUEFSQVRPUiAob3IgYmUgbG9jYXRlZCBhdCB0 aGUgc3RhcnQgb3IKLSsgICBlbmQgb2YgKlNUUklOR1AuICAqLwotKwotK3ZvaWQKLStzdWJzdGl0 dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29uc3QgY2hhciAqZnJvbSwgY29u c3QgY2hhciAqdG8pCi0rewotKyAgY2hhciAqc3RyaW5nID0gKnN0cmluZ3AsICpzOwotKyAgY29u c3Qgc2l6ZV90IGZyb21fbGVuID0gc3RybGVuIChmcm9tKTsKLSsgIGNvbnN0IHNpemVfdCB0b19s ZW4gPSBzdHJsZW4gKHRvKTsKLSsKLSsgIGZvciAocyA9IHN0cmluZzs7KQotKyAgICB7Ci0rICAg ICAgcyA9IHN0cnN0ciAocywgZnJvbSk7Ci0rICAgICAgaWYgKHMgPT0gTlVMTCkKLSsJYnJlYWs7 Ci0rCi0rICAgICAgaWYgKChzID09IHN0cmluZyB8fCBJU19ESVJfU0VQQVJBVE9SIChzWy0xXSkp Ci0rICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAnXDAnIHx8IElTX0RJUl9TRVBBUkFUT1Ig KHNbZnJvbV9sZW5dKSkpCi0rCXsKLSsJICBjaGFyICpzdHJpbmdfbmV3OwotKwotKwkgIHN0cmlu Z19uZXcgPSB4cmVhbGxvYyAoc3RyaW5nLCAoc3RybGVuIChzdHJpbmcpICsgdG9fbGVuICsgMSkp OwotKwotKwkgIC8qIFJlbG9jYXRlIHRoZSBjdXJyZW50IFMgcG9pbnRlci4gICovCi0rCSAgcyA9 IHMgLSBzdHJpbmcgKyBzdHJpbmdfbmV3OwotKwkgIHN0cmluZyA9IHN0cmluZ19uZXc7Ci0rCi0r CSAgLyogUmVwbGFjZSBmcm9tIGJ5IHRvLiAgKi8KLSsJICBtZW1tb3ZlICgmc1t0b19sZW5dLCAm c1tmcm9tX2xlbl0sIHN0cmxlbiAoJnNbZnJvbV9sZW5dKSArIDEpOwotKwkgIG1lbWNweSAocywg dG8sIHRvX2xlbik7Ci0rCi0rCSAgcyArPSB0b19sZW47Ci0rCX0KLSsgICAgICBlbHNlCi0rCXMr KzsKLSsgICAgfQotKwotKyAgKnN0cmluZ3AgPSBzdHJpbmc7Ci0rfQotKwotICNpZmRlZiBIQVZF X1dBSVRQSUQKLSAKLSAjaWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0x OG9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMThvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjY5MGMyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xv YWQtMThvZjIyLnBhdGNoCkBAIC0wLDAgKzEsMTM2IEBACitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDM4Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDUvMDUgMDU6MzY6MjMJMS4xNDIxMQorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDUvMDYgMTU6MzA6NTkJMS4xNDIxMgorIyMgLTEsMyArMSwxNCBAQAorKzIwMTItMDUtMDYgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBhdXRvLWxv YWQuYyAoc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBSZXNldCBBVVRPX0xPQURfU0FGRV9QQVRI CisrCWJhY2sgdG8gREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIGlmIGl0IGlzIGJlaW5nIHNl dCB0byAiIi4KKysJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCk6IENoZWNrIGFueS1kaXJlY3Rv cnkgYnkgY29tcGFyaXNvbiB3aXRoICIvIi4KKysJKGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoKTog Q2hhbmdlIHRoZSBlcnJvciBtZXNzYWdlLgorKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogQ2hh bmdlIHRoZSAic2FmZS1wYXRoIiBoZWxwIHRleHQuCisrCSogY29uZmlndXJlOiBSZWdlbmVyYXRl CisrCSogY29uZmlndXJlLmFjICgtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aCk6IFNldAor KwlXSVRIX0FVVE9fTE9BRF9TQUZFX1BBVEggdG8gLy4KKysKKyAyMDEyLTA1LTA1ICBTZXJnaW8g RHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorIAorIAkqIHN0YXAtcHJvYmUu aDogRG8gbm90IGluY2x1ZGUgdW5lY2Vzc2FyeSBgcHJvYmUuaCcuCistLS0gc3JjL2dkYi9hdXRv LWxvYWQuYwkyMDEyLzA1LzAyIDIwOjAwOjM2CTEuNQorKysrIHNyYy9nZGIvYXV0by1sb2FkLmMJ MjAxMi8wNS8wNiAxNTozMTowMgkxLjYKK0BAIC0xODEsNiArMTgxLDEyIEBACisgc3RhdGljIHZv aWQKKyBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LCBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKKyB7CisrICBpZiAoYXV0b19sb2FkX3NhZmVfcGF0 aFswXSA9PSAnXDAnKQorKyAgICB7CisrICAgICAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgp OworKyAgICAgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZBVUxUX0FVVE9fTE9B RF9TQUZFX1BBVEgpOworKyAgICB9CisrCisgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRh dGUgKCk7CisgfQorIAorQEAgLTE5MCw3ICsxOTYsNyBAQAorIHNob3dfYXV0b19sb2FkX3NhZmVf cGF0aCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKyAJCQkgIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBpZiAoKnZhbHVl ID09IDApCisrICBpZiAoc3RyY21wICh2YWx1ZSwgIi8iKSA9PSAwKQorICAgICBmcHJpbnRmX2Zp bHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNhZmUgdG8gbG9hZCBmcm9tIGFu eSAiCisgCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsKKyAgIGVsc2UKK0BAIC0yMDksOCArMjE1 LDkgQEAKKyAKKyAgIGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkKKyAgICAgZXJyb3Ig KF8oIlwKKy1BZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8t bG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCistVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKKytEaXJlY3RvcnkgYXJndW1lbnQgcmVx dWlyZWQuXG5cCisrVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvJyBmb3IgZGlzYWJsaW5n IHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5LlwKKysiKSk7CisgCisgICBzID0geHN0 cnByaW50ZiAoIiVzJWMlcyIsIGF1dG9fbG9hZF9zYWZlX3BhdGgsIERJUk5BTUVfU0VQQVJBVE9S LCBhcmdzKTsKKyAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKK0BAIC0xMDI5LDggKzEw MzYsMTAgQEAKKyBTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuIiksIF8oIlwKKyBWYXJpb3VzIGZpbGVzIGxvYWRlZCBh dXRvbWF0aWNhbGx5IGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBvcHRpb25zIG11c3RcblwK KyBiZSBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGJ5IHRoaXMgb3B0 aW9uLiAgV2FybmluZyB3aWxsIGJlXG5cCistcHJpbnRlZCBhbmQgZmlsZSB3aWxsIG5vdCBiZSB1 c2VkIG90aGVyd2lzZS4gIFVzZSBlbXB0eSBzdHJpbmcgKG9yIGV2ZW5cblwKKy1lbXB0eSBkaXJl Y3RvcnkgZW50cnkpIHRvIGFsbG93IGFueSBmaWxlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4u JyBvcHRpb25zLlxuXAorK3ByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUgdXNlZCBvdGhlcndp c2UuXG5cCisrU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBhbiBlbXB0eSBsaXN0IHJlc2V0cyBp dCB0byBpdHMgZGVmYXVsdCB2YWx1ZS5cblwKKytTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvICcv JyAod2l0aG91dCB0aGUgcXVvdGVzKSBhbGxvd3MgYW55IGZpbGVcblwKKytmb3IgdGhlICdzZXQg YXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKKyBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0 aGUga2luZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLlxuXAorIFRo aXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJp b3JzLiIpLAorIAkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorLS0tIHNyYy9nZGIv Y29uZmlndXJlCTIwMTIvMDQvMjcgMjA6NDc6NTIJMS4zNjAKKysrKyBzcmMvZ2RiL2NvbmZpZ3Vy ZQkyMDEyLzA1LzA2IDE1OjMxOjAyCTEuMzYxCitAQCAtNDk2NCw3ICs0OTY0LDcgQEAKKyAjIENo ZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggd2FzIGdpdmVuLgorIGlmIHRl c3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIHdp dGh2YWw9JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aDsgaWYgdGVzdCAiJHdpdGhfYXV0b19sb2Fk X3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCistICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIi CisrICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICBmaQorIGVsc2UKKyAgIHdpdGhf YXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKKy0tLSBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwky MDEyLzA0LzI3IDIwOjQ3OjUzCTEuMTcxCisrKysgc3JjL2dkYi9jb25maWd1cmUuYWMJMjAxMi8w NS8wNiAxNTozMTowMwkxLjE3MgorQEAgLTE0MSw3ICsxNDEsNyBAQAorIEFTX0hFTFBfU1RSSU5H KFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8g aG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRv LWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2Nh dGlvbnNdKSwKKyBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0 aGVuCistICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCisrICAgd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoPSIvIgorICBmaV0sCisgW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZp eCJdKQorIEFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRILCB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGgsCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDMg MDc6MDc6MjQJMS4xMzA4CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDYgMTU6 MzE6MDQJMS4xMzA5CisjIyAtMSwzICsxLDkgQEAKKysyMDEyLTA1LTA2ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLnRleGluZm8gKEF1dG8t bG9hZGluZyBzYWZlIHBhdGgpOiBNYWtlICdkaXJlY3RvcmllcycKKysJZm9yICdzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCcgb3B0aW9uYWwuICBNZW50aW9uIGlmIGl0IGlzIG9taXR0ZWQuCisrCUNo YW5nZSBkaXNhYmxpbmcgc2VjdXJpdHkgcHJvdGVjdGlvbiBjb25kaXRpb24gdG8gIi8iLCB0d2lj ZS4KKysKKyAyMDEyLTA1LTAzICBTaXZhIENoYW5kcmEgUmVkZHkgIDxzaXZhY2hhbmRyYUBnb29n bGUuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChTeW1ib2wgVGFibGVzIEluIFB5dGhvbik6IEFk ZCBkb2N1bWVudGF0aW9uIGFib3V0CistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8w NS8wMyAwNzowNzoyNAkxLjk1NAorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUv MDYgMTU6MzE6MDQJMS45NTUKK0BAIC0yMTIxOSw5ICsyMTIxOSwxMiBAQAorIEB0YWJsZSBAY29k ZQorIEBhbmNob3J7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9CisgQGtpbmRleCBzZXQgYXV0by1s b2FkIHNhZmUtcGF0aAorLUBpdGVtIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIEB2YXJ7ZGlyZWN0 b3JpZXN9CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHJ7W31AdmFye2RpcmVjdG9y aWVzfUBye119CisgU2V0IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIChhbmQgdGhlaXIgc3ViZGly ZWN0b3JpZXMpIHRydXN0ZWQgZm9yIGF1dG9tYXRpYworIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBv ZiBzY3JpcHRzLiAgWW91IGNhbiBhbHNvIGVudGVyIGEgc3BlY2lmaWMgdHJ1c3RlZCBmaWxlLgor K0lmIHlvdSBvbWl0IEB2YXJ7ZGlyZWN0b3JpZXN9LCBAc2FtcHthdXRvLWxvYWQgc2FmZS1wYXRo fSB3aWxsIGJlIHJlc2V0IHRvCisraXRzIGRlZmF1bHQgdmFsdWUgYXMgc3BlY2lmaWVkIGR1cmlu ZyBAdmFsdWV7R0RCTn0gY29tcGlsYXRpb24uCisrCisgVGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMg dXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUgYW5kIFVuaXgKKyBzeXN0 ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVj dG9yaWVzLCBzaW1pbGFybHkKKyB0byB0aGUgQGVudntQQVRIfSBlbnZpcm9ubWVudCB2YXJpYWJs ZS4KK0BAIC0yMTI0MCw3ICsyMTI0Myw3IEBACisgaG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2Vw YXJhdG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisgCistU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRv IGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCisrU2V0 dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJv dGVjdGlvbi4KKyBUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0byB0aGUgc3lz dGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQorIHN5c3RlbSBzdXBlcnVzZXIgb25seS4g IFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9yaWVzIGluIGluaXQgZmlsZXMgaW4K KyB0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxl fSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCitAQCAtMjEyNjAsNyArMjEyNjMsNyBAQAorIFNwZWNp ZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEg c2luZ2xlCisgQHZhbHVle0dEQk59IHNlc3Npb24uCisgCistQGl0ZW0gQGtiZHtnZGIgLWlleCAi c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319CisrQGl0ZW0gQGtiZHtnZGIgLWlleCAi c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggLyIgQGRvdHN7fX0KKyBEaXNhYmxlIGF1dG8tbG9hZGlu ZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIFRoaXMgYXNzdW1l cyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lv biB3aWxsIGNvbWUKKyBmcm9tIHRydXN0ZWQgc291cmNlcy4KCmRpZmYgLS1naXQgYS9nZGItYXV0 b2xvYWQtMTlvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGU5NDRhCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWF1dG9sb2FkLTE5b2YyMi5wYXRjaApAQCAtMCwwICsxLDM1IEBACitodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDU5Lmh0bWwKKworIyMjIHNyYy9nZGIvZG9j L0NoYW5nZUxvZwkyMDEyLzA1LzA2IDE1OjMxOjA0CTEuMTMwOQorIyMjIHNyYy9nZGIvZG9jL0No YW5nZUxvZwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEuMTMxMAorIyMgLTEsMyArMSw4IEBACisrMjAx Mi0wNS0wOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKwor KwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBXcmFwIHRvbyBsb25nIGxpbmVzIGluIEBz bWFsbGV4YW1wbGUuCisrCVR3aWNlLgorKworIDIwMTItMDUtMDYgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2Fk aW5nIHNhZmUgcGF0aCk6IE1ha2UgJ2RpcmVjdG9yaWVzJworLS0tIHNyYy9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS45NTUKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEuOTU2CitAQCAtMjEwMDQsNyArMjEwMDQsOCBAQAor IChnZGIpIHNob3cgYXV0by1sb2FkCisgZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgY2Fu bmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIG9uLgorIGxpYnRocmVhZC1kYjog IEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCist bG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJy ZW50IGRpcmVjdG9yeSBpcyBvbi4KKytsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5n ZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5CisrICAgICAgICAgICAgICAgIGlz IG9uLgorIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlz IG9uLgorIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBz YWZlIHRvIGF1dG8tbG9hZCBmaWxlcworICAgICAgICAgICAgIGlzIC91c3IvbG9jYWwuCitAQCAt MjEwMjIsNyArMjEwMjMsOCBAQAorIExvYWRlZCAgU2NyaXB0CisgWWVzICAgICAvaG9tZS91c2Vy L2dkYi9nZGItZ2RiLmdkYgorIGxpYnRocmVhZC1kYjogIE5vIGF1dG8tbG9hZGVkIGxpYnRocmVh ZC1kYi4KKy1sb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAiL2hvbWUvdXNlci9n ZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KKytsb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdk YmluaXQgZmlsZSAiL2hvbWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVuCisrICAgICAgICAg ICAgICAgIGxvYWRlZC4KKyBweXRob24tc2NyaXB0czoKKyBMb2FkZWQgIFNjcmlwdAorIFllcyAg ICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0y MG9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjBvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmY0YzdkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xv YWQtMjBvZjIyLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAwMTgwLmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gYXV0 by1sb2FkIGZpeCBtdWx0aS1kaXIgZGVidWctZmlsZS1kaXJlY3RvcnkKKworSGksCisKK0kgZm9y Z290IHRvIGZpeCB0aGlzIGNhc2UgbXlzZWxmLCBQeXRob24gYXV0by1sb2FkIHdhcyBpbXBsZW1l bnRlZCBieToKKwljb21taXQgMWU1ZTJhZmQ3Y2ZhNmJiNjJhYmI5NDkzYTUxNGM3MDQ4OWUxOWMz MgorCUF1dGhvcjogVG9tIFRyb21leSA8dHJvbWV5QHJlZGhhdC5jb20+CisJRGF0ZTogICBUaHUg TWF5IDI4IDAwOjQwOjIzIDIwMDkgKzAwMDAKKword2hpbGUgbXVsdGktZGlyIGRlYnVnLWZpbGUt ZGlyZWN0b3J5IHdhcyBpbXBsZW1lbnRlZCBieQorCWNvbW1pdCAzNmFlNTJkMTZjYzlkMzhjZmUz MTdhNzliYjVkNjNjNjI0MzU5MTU0CisJQXV0aG9yOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKwlEYXRlOiAgIE1vbiBOb3YgMiAxNDo1OTo0OCAyMDA5ICswMDAw CisKK05vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExNy1s aW51eC1nbnUuCisKK0FuZCBkZWJ1Z19maWxlX2RpcmVjdG9yeSByZWFsbHkgY2Fubm90IGJlIE5V TEwgYWZ0ZXIgR0RCIGluaXRpYWxpemF0aW9uIGNvZGUuCisKKworVGhhbmtzLAorSmFuCisKKwor Z2RiLworMjAxMi0wNS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgorCisJTWFrZSBhdXRvLWxvYWQgaGFuZGxlIG11bHRpcGxlIGNvbXBvbmVudHMgb2YgREVC VUdfRklMRV9ESVJFQ1RPUlkuCisJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX29iamZpbGVfc2Ny aXB0KTogUmVtb3ZlIGNoZWNrIGZvciBOVUxMCisJREVCVUdfRklMRV9ESVJFQ1RPUlkuICBIYW5k bGUgbXVsdGlwbGUgY29tcG9uZW50cyBvZgorCURFQlVHX0ZJTEVfRElSRUNUT1JZLgorCitEaWZm IC0tZ2l0IGEvZ2RiL2F1dG8tbG9hZC5jIGIvZ2RiL2F1dG8tbG9hZC5jCitpbmRleCA5ZDRkMGJj Li4yNTRkZTNiIDEwMDY0NAorLS0tIGEvZ2RiL2F1dG8tbG9hZC5jCisrKysgYi9nZGIvYXV0by1s b2FkLmMKK0BAIC01ODcsMTcgKzU4NywyOSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorICAgaW5wdXQgPSBmb3BlbiAoZmlsZW5hbWUsICJyIik7 CisgICBkZWJ1Z2ZpbGUgPSBmaWxlbmFtZTsKKyAKKy0gIGlmICghaW5wdXQgJiYgZGVidWdfZmls ZV9kaXJlY3RvcnkpCisrICBpZiAoIWlucHV0KQorICAgICB7CistICAgICAgLyogQWxzbyB0cnkg dGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwor LSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCistCQkJICAgKyBz dHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOworLSAgICAgIHN0cmNweSAoZGVidWdm aWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1 dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChkZWJ1 Z2ZpbGUsIGZpbGVuYW1lKTsKKysgICAgICBjaGFyICpkZWJ1Z2RpcjsKKysgICAgICBWRUMgKGNo YXJfcHRyKSAqZGVidWdkaXJfdmVjOworKyAgICAgIGludCBpeDsKKyAKKy0gICAgICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmls ZSwgInIiKTsKKysgICAgICBkZWJ1Z2Rpcl92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMg KGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKKysgICAgICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0 cl92ZWMgKGRlYnVnZGlyX3ZlYyk7CisrCisrICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRl IChjaGFyX3B0ciwgZGVidWdkaXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4KQorKwl7CisrCSAg LyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJl Y3RvcnkuICAqLworKwkgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGVidWdkaXIpICsg c3RybGVuIChmaWxlbmFtZSkgKyAxKTsKKysJICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIp OworKworKwkgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8i IGhlcmUuICAqLworKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CisrCisrCSAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKysJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2Zp bGUsICJyIik7CisrCSAgaWYgKGlucHV0ICE9IE5VTEwpCisrCSAgICBicmVhazsKKysJfQorICAg ICB9CisgCisgICBpZiAoIWlucHV0ICYmIGdkYl9kYXRhZGlyKQorCgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTIxb2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMW9mMjIucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFlY2I1ZAotLS0gL2Rldi9udWxsCisrKyBi L2dkYi1hdXRvbG9hZC0yMW9mMjIucGF0Y2gKQEAgLTAsMCArMSw0MDMgQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAwMzAzLmh0bWwKK1N1YmplY3Q6 IFJlOiBbcGF0Y2ggMS8yXSBQcm92aWRlICRkZGlyIHN1YnN0aXR1dGlvbiBmb3IgLS13aXRoLWF1 dG8tbG9hZC1zYWZlLXBhdGgKKworT24gV2VkLCAwOSBNYXkgMjAxMiAxOTo0MTowOCArMDIwMCwg RWxpIFphcmV0c2tpaSB3cm90ZToKKz4gT2theSB3aXRoIHRoYXQuICBUaGFua3MuCisKK1VwZGF0 ZWQganVzdCB0aGUgZG9jLgorCisKK1RoYW5rcywKK0phbgorCisKKworZ2RiLworMjAxMi0wNS0w OSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUHJvdmlk ZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoLgorCSog TkVXUyAoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgsIC0td2l0aG91dC1hdXRvLWxvYWQtc2Fm ZS1wYXRoKTogTmV3CisJZW50cmllcy4KKwkqIGF1dG8tbG9hZC5jOiBJbmNsdWRlIG9ic2VydmVy LmguCisJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSk6IENhbGwgc3Vic3RpdHV0ZV9w YXRoX2NvbXBvbmVudCBmb3IKKwllYWNoIGNvbXBvbmVudC4gIE5ldyB2YXJpYWJsZSBkZGlyX3N1 YnN0LgorCShhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCk6IE5ldyBmdW5jdGlvbi4KKwko c2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBSZW5hbWUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9Q QVRIIHRvCisJQVVUT19MT0FEX1NBRkVfUEFUSC4gIE5ldyBjb21tZW50LgorCShfaW5pdGlhbGl6 ZV9hdXRvX2xvYWQpOiBSZW5hbWUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIHRvCisJQVVU T19MT0FEX1NBRkVfUEFUSC4gIEluc3RhbGwgYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQu CisJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJ KiBjb25maWd1cmUuYWMgKC0tYXV0by1sb2FkLXNhZmUtcGF0aCk6IFJlbmFtZQorCURFRkFVTFRf QVVUT19MT0FEX1NBRkVfUEFUSCB0byBBVVRPX0xPQURfU0FGRV9QQVRILiAgRGVmYXVsdCB0bwor CUdEQl9EQVRBRElSL2F1dG8tbG9hZC4KKwkqIGRlZnMuaCAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBv bmVudCk6IE5ldyBkZWNsYXJhdGlvbi4KKwkqIHRvcC5jOiBJbmNsdWRlIG9ic2VydmVyLmguCisJ KHNldF9nZGJfZGF0YWRpcik6IE5ldyBmdW5jdGlvbi4KKwkoaW5pdF9tYWluKTogSW5zdGFsbCBp dCBmb3IgInNldCBkYXRhLWRpcmVjdG9yeSIuCisJKiB1dGlscy5jIChzdWJzdGl0dXRlX3BhdGhf Y29tcG9uZW50KTogTmV3IGZ1bmN0aW9uLgorCitnZGIvZG9jLworMjAxMi0wNS0wOSAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUHJvdmlkZSAkZGRpciBz dWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoLgorCSogZ2RiLnRleGlu Zm8gKEF1dG8tbG9hZGluZyk6IFJlcGxhY2UgL3Vzci9sb2NhbCBieSAkZGRpci9hdXRvLWxvYWQu CisJKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBMaWtld2lzZS4gIE1lbnRpb24gdGhlIGRlZmF1 bHQgdmFsdWUsCisJJGRkaXIgc3Vic3RpdHV0aW9uLCAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aCBhbmQKKwktLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aC4KKwkqIG9ic2VydmVyLnRleGkg KGdkYl9kYXRhZGlyX2NoYW5nZWQpOiBOZXcuCisKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9O RVdTCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA1LTA5IDIyOjE0OjI5LjA5MTE4MzE5MCArMDIwMAorQEAg LTc2LDYgKzc2LDE3IEBAIHNldCBkZWJ1ZyBhdXRvLWxvYWQgb258b2ZmCisgc2hvdyBkZWJ1ZyBh dXRvLWxvYWQKKyAgIENvbnRyb2wgZGlzcGxheSBvZiBkZWJ1Z2dpbmcgaW5mbyBmb3IgYXV0by1s b2FkaW5nIHRoZSBmaWxlcyBhYm92ZS4KKyAKKysqIE5ldyBjb25maWd1cmUgb3B0aW9ucworKwor Ky0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBm b3IgdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0dGluZworKyAgYWJvdmUuICBJdCBk ZWZhdWx0cyB0byAnJGRkaXIvYXV0by1sb2FkJywgJGRkaXIgcmVwcmVzZW50aW5nIHRoZSB2YWx1 ZQorKyAgb2YgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZ2RiLWRhdGFkaXIuCisrCisrLS13aXRo b3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKKysgIFNldCAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgn IHRvICcvJywgZWZmZWN0aXZlbHkgZGlzYWJsaW5nIHRoaXMKKysgIHNlY3VyaXR5IGZlYXR1cmUu CisrCisgKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAKKyAtLWluaXQtY29tbWFuZD1GSUxF LCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0CitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMDkgMjI6MTM6NTgu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJ MjAxMi0wNS0wOSAyMjoxNDowNC44MTIyMjIyMjYgKzAyMDAKK0BAIC0zNSw2ICszNSw3IEBACisg I2luY2x1ZGUgImdkYl92ZWNzLmgiCisgI2luY2x1ZGUgInJlYWRsaW5lL3RpbGRlLmgiCisgI2lu Y2x1ZGUgImNvbXBsZXRlci5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorIAorIC8qIFRoZSBz dWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBj b21tYW5kIGZpbGVzLgorICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28s IGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KK0BAIC0xNDEsMTAgKzE0MiwxNiBAQCBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisgICBmb3IgKGl4ID0gMDsgaXggPCBs ZW47IGl4KyspCisgICAgIHsKKyAgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRy LCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworLSAgICAgIGNoYXIgKmV4cGFuZGVkID0g dGlsZGVfZXhwYW5kIChkaXIpOworLSAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0 aCAoZXhwYW5kZWQpOworKyAgICAgIGNoYXIgKmRkaXJfc3Vic3QsICpleHBhbmRlZCwgKnJlYWxf cGF0aDsKKyAKKy0gICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3Qg dGlsZGVfZXhwYW5kLWVkLiAgKi8KKysgICAgICBkZGlyX3N1YnN0ID0geHN0cmR1cCAoZGlyKTsK KysgICAgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGRpcl9zdWJzdCwgIiRkZGlyIiwg Z2RiX2RhdGFkaXIpOworKyAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkZGlyX3N1YnN0 KTsKKysgICAgICB4ZnJlZSAoZGRpcl9zdWJzdCk7CisrICAgICAgcmVhbF9wYXRoID0gZ2RiX3Jl YWxwYXRoIChleHBhbmRlZCk7CisrCisrICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5 IGlzIGF0IGxlYXN0IGEgdmFsaWQgcGF0aCAodGhlcmVmb3JlCisrCSAkZGRpci1leHBhbmRlZCBh bmQgdGlsZGUtZXhwYW5kZWQpLiAgKi8KKyAgICAgICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhwYW5kZWQpOworIAorICAgICAgIGlmIChkZWJ1 Z19hdXRvX2xvYWQpCitAQCAtMTc2LDE1ICsxODMsMjQgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWNfdXBkYXRlICh2b2lkKQorICAgICB9CisgfQorIAorKy8qIFZhcmlhYmxlIGdkYl9kYXRhZGly IGhhcyBiZWVuIHNldC4gIFVwZGF0ZSBjb250ZW50IGRlcGVuZGluZyBvbiAkZGRpci4gICovCisr Cisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCAodm9pZCkKKyt7 CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQorKworIC8qICJzZXQi IGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24gdmFyaWFi bGUuICAqLworIAorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCisgeworKyAg LyogU2V0dGluZyB0aGUgdmFyaWFibGUgdG8gIiIgcmVzZXRzIGl0IHRvIHRoZSBjb21waWxlIHRp bWUgZGVmYXVsdHMuICAqLworICAgaWYgKGF1dG9fbG9hZF9zYWZlX3BhdGhbMF0gPT0gJ1wwJykK KyAgICAgeworICAgICAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKy0gICAgICBhdXRv X2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsK KysgICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFU SCk7CisgICAgIH0KKyAKKyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKK0BA IC0xMDQwLDcgKzEwNTYsNyBAQCBUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9u cyBmCisgVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKKyAJICAgYXV0b19s b2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworIAorLSAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhz dHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7CisrICBhdXRvX2xvYWRfc2FmZV9w YXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7CisgICBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlY191cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQg KCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorIAkJCQkgICAgICZhdXRvX2xvYWRfc2FmZV9w YXRoLCBfKCJcCitAQCAtMTA1OCw2ICsxMDc0LDcgQEAgVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0 eSBpbXBsaWNhdGlvbnMgZgorIAkJCQkgICAgIHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwKKyAJ CQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAorIAkJCQkgICAgIGF1dG9fbG9h ZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKKysgIG9ic2VydmVyX2F0dGFjaF9nZGJfZGF0YWRpcl9j aGFuZ2VkIChhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCk7CisgCisgICBjbWQgPSBhZGRf Y21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorIAkJIGFkZF9h dXRvX2xvYWRfc2FmZV9wYXRoLAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZp Zy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmln LmluCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMDkgMjI6MTQ6MDQuODEyMjIyMjI2ICswMjAw CitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRl cm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVmIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRAor IAorKy8qIERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KKysj dW5kZWYgQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8qIERpcmVjdG9yeSBvZiBwcm9ncmFtcy4g Ki8KKyAjdW5kZWYgQklORElSCisgCitAQCAtNDMsOSArNDYsNiBAQAorICAgIG1vdmVkLiAqLwor ICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQorIAorLS8qIERpcmVjdG9yaWVzIHNhZmUgdG8g aG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KKy0jdW5kZWYgREVGQVVMVF9BVVRPX0xPQURfU0FG RV9QQVRICistCisgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLiAqLwor ICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9jb25maWd1cmUJMjAxMi0wNS0wOSAyMjoxMzo1OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNS0wOSAyMjoxNjoxOS44NzcwMDUw ODMgKzAyMDAKK0BAIC0xNjY4LDcgKzE2NjgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0t d2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1 Z2luZm9zICh5ZXMvbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGli cnBtLnNvKQorICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVz CisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0 by1sb2FkZWQgZmlsZXMsIHVzZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgJGRkaXIgZm9y IC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9hdXRvLWxvYWRdCisgICAtLXdpdGhvdXQt YXV0by1sb2FkLXNhZmUtcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHJl c3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9ucworICAgLS13aXRoLWxpYnVud2luZCAg ICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAorQEAgLTg0ODgsMjAg Kzg0ODksMjEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sbworICMg Q2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCisgaWYg dGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAg d2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9 Ii8iCistIGZpCisrICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCisrICAgICBmaQor IGVsc2UKKy0gIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKKysgIHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aD0nJGRkaXIvYXV0by1sb2FkJworIGZpCisgCisrZXNjYXBlX2Rpcj1g ZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXWRkaXJcPi9cXFxcXFxc XFxcXFwmL2cnYAorIAorICAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNf ZGVmYXVsdF9wcmVmaXgiCisgICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNf cHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aGAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkZXNjYXBlX2Rp cmAKKyAgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5lX2RpcmAKKyAKKyBjYXQg Pj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BB VEggIiRhY19kZWZpbmVfZGlyIgorKyNkZWZpbmUgQVVUT19MT0FEX1NBRkVfUEFUSCAiJGFjX2Rl ZmluZV9kaXIiCisgX0FDRU9GCisgCisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9jb25maWd1cmUuYWMJMjAxMi0wNS0wOSAyMjoxMzo1OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0wOSAyMjoxNjoxMC41 OTIwMjAwMTIgKzAyMDAKK0BAIC0zNDEsMTMgKzM0MSwxNiBAQCBmaQorICAKKyBBQ19NU0dfQ0hF Q0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQorIEFDX0FSR19XSVRIKGF1 dG8tbG9hZC1zYWZlLXBhdGgsCistQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2Fm ZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVz XSkKKy1BU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8g bm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAorLVtpZiB0ZXN0ICIk d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGg9Ii8iCistIGZpXSwKKy1bd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJl Zml4Il0pCistQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgsIHdpdGhf YXV0b19sb2FkX3NhZmVfcGF0aCwKKytBU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1z YWZlLXBhdGg9UEFUSF0sCisrICBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVk IGZpbGVzLCB1c2UgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIEA8OkAkZGRpci9h dXRvLWxvYWRAOj5AXSkKKytBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZl LXBhdGhdLAorKyAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmls ZXMgbG9jYXRpb25zXSksCisrICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo IiA9ICJubyI7IHRoZW4KKysgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKysgICAg IGZpXSwKKytbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxvYWQnXSkKKytl c2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3MvW1skXV1k ZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKytBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9TQUZFX1BB VEgsIGVzY2FwZV9kaXIsCisgCSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo XSkKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kZWZzLmgKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RlZnMuaAkyMDEyLTA1LTA5IDIyOjEz OjU3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RlZnMuaAky MDEyLTA1LTA5IDIyOjE0OjA0LjgxNjIyMjIyMCArMDIwMAorQEAgLTQ0Miw2ICs0NDIsOSBAQCBl eHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfYnBzdGF0X2NsZWFyCisgCisgZXh0ZXJuIGludCBw cm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAqcHJvZHVjZXIpOworIAorK2V4dGVybiB2 b2lkIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJpbmdwLCBjb25zdCBjaGFy ICpmcm9tLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAqdG8pOworKworICNpZmRlZiBIQVZFX1dB SVRQSUQKKyBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0IChwaWRfdCBwaWQs IGludCAqc3RhdHVzLCBpbnQgdGltZW91dCk7CisgI2VuZGlmCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0wOSAyMjoxMzo1OC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi0wNS0wOSAyMjoxNjo0My43NTk5NjY2ODggKzAyMDAKK0BAIC0yMDgwMyw3ICsyMDgwMyw3 IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQKKyAgICAgICAgICAg ICAgICAgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNj cmlwdHMgaXMgb24uCisgc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCistICAgICAgICAgICAgaXMgL3Vzci9sb2Nh bC4KKysgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCisgQGVuZCBzbWFsbGV4YW1wbGUK KyAKKyBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQorQEAgLTIxMDA2LDkgKzIxMDA2LDkgQEAgZ2V0 IGxvYWRlZDoKKyAkIC4vZ2RiIC1xIC4vZ2RiCisgUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUv dXNlci9nZGIvZ2RiLi4uZG9uZS4KKyB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGIt Z2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAgICAgICAgZGVjbGluZWQgYnkgeW91 ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKysgICAgICAgICBk ZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8t bG9hZCIuCisgd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weSIgYXV0by1s b2FkaW5nIGhhcyBiZWVuCistICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNh ZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKysgICAgICAgICBkZWNsaW5lZCBieSB5b3Vy IGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9hZCIuCisgQGVuZCBz bWFsbGV4YW1wbGUKKyAKKyBUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRy b2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK0BAIC0yMTA0MCw3ICsyMTA0MCwxOCBA QCBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpCisgaG9zdCBwbGF0Zm9y bSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisgCistU2V0dGluZyB0 aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlv bi4KKytUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1dG8tbG9hZH0uICBU aGUgZGVmYXVsdCBAY29kZXtzZXQKKythdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUg YWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24KKytvcHRpb24gQG9w dGlvbnstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisrCisrQW55IHVzZWQgc3RyaW5nIEBm aWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGlj aCBpcworK2RldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZp bGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBiZQorK2JlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBj b21wb25lbnQgLS0tIGVpdGhlciBhbG9uZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKKytA ZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRm b3JtLgorKworK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlz IHNlY3VyaXR5IHByb3RlY3Rpb24sCisrY29ycmVzcG9uZGluZyBAdmFsdWV7R0RCTn0gY29uZmln dXJhdGlvbiBvcHRpb24gaXMKKytAb3B0aW9uey0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRo fS4KKyBUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRp cmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQorIHN5c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJz IGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9yaWVzIGluIGluaXQgZmlsZXMgaW4KKyB0aGVp ciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBT ZWUgYWxzbyBkZXByZWNhdGVkCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL29i c2VydmVyLnRleGkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2RvYy9vYnNlcnZlci50ZXhpCTIwMTItMDUtMDkgMjI6MTM6NTYuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMi0wNS0wOSAy MjoxNzowNC4xMTg5MzM5NDggKzAyMDAKK0BAIC0yMzEsNiArMjMxLDEwIEBAIHRoZSBjdXJyZW50 IHRvcC1sZXZlbCBwcm9tcHQuCisgQGMgY29sbGVjdG9yIHBhc3MuICBDdXJyZW50bHkgb25seSBA Y29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4KKyBAYyBAZW5kIGRlZnR5 cGVmdW4KKyAKKytAZGVmdHlwZWZ1biB2b2lkIGdkYl9kYXRhZGlyX2NoYW5nZWQgKHZvaWQpCisr VmFyaWFibGUgZ2RiX2RhdGFkaXIgaGFzIGJlZW4gc2V0LiAgVGhlIHZhbHVlIG1heSBub3QgbmVj ZXNzYXJpbHkgY2hhbmdlLgorK0BlbmQgZGVmdHlwZWZ1bgorKworIEBkZWZ0eXBlZnVuIHZvaWQg dGVzdF9ub3RpZmljYXRpb24gKGludCBAdmFye3NvbWVhcmd9KQorIFRoaXMgb2JzZXJ2ZXIgaXMg dXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAKKyBTZWUgdGVzdHN1aXRl L2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rv cC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90b3AuYwky MDEyLTA1LTA5IDIyOjEzOjU3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3RvcC5jCTIwMTItMDUtMDkgMjI6MTQ6MDQuODIzMjIyMjA4ICswMjAwCitAQCAtNDcs NiArNDcsNyBAQAorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAicHl0aG9uL3B5 dGhvbi5oIgorICNpbmNsdWRlICJpbnRlcnBzLmgiCisrI2luY2x1ZGUgIm9ic2VydmVyLmgiCisg CisgLyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcy4gICovCisgI2luY2x1ZGUgInJlYWRsaW5lL3Jl YWRsaW5lLmgiCitAQCAtMTU2MSw2ICsxNTYyLDE1IEBAIHNob3dfZXhlY19kb25lX2Rpc3BsYXlf cCAoc3RydWN0IHVpX2ZpbGUKKyAJCQkgICAgImFzeW5jaHJvbm91cyBleGVjdXRpb24gY29tbWFu ZHMgaXMgJXMuXG4iKSwKKyAJCSAgICB2YWx1ZSk7CisgfQorKworKy8qICJzZXQiIGNvbW1hbmQg Zm9yIHRoZSBnZGJfZGF0YWRpciBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0 aWMgdm9pZAorK3NldF9nZGJfZGF0YWRpciAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKKyt7CisrICBvYnNlcnZlcl9ub3RpZnlfZ2RiX2RhdGFk aXJfY2hhbmdlZCAoKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBpbml0X21haW4gKHZvaWQpCisg eworQEAgLTE2NjgsNyArMTY3OCw3IEBAIFVzZSBcIm9uXCIgdG8gZW5hYmxlIHRoZSBub3RpZmlj YXRpb24sIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJTaG93IEdEQidzIGRhdGEg ZGlyZWN0b3J5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlwKKyBXaGVuIHNl dCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRoIHRvIHNlYXJjaCBmb3IgZGF0YSBmaWxlcy4i KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNldF9nZGJfZGF0YWRpciwgTlVMTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmc2V0bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hvd2xp c3QpOworIH0KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi91dGlscy5jCTIwMTItMDUtMDkg MjI6MTM6NTcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRp bHMuYwkyMDEyLTA1LTA5IDIyOjE0OjA0LjgyNDIyMjIwNiArMDIwMAorQEAgLTM5MjUsNiArMzky NSw0OCBAQCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpCisgICByZXR1 cm4gcmV0dmFsOworIH0KKyAKKysvKiBTdWJzdGl0dXRlIGFsbCBvY2N1cmVuY2VzIG9mIHN0cmlu ZyBGUk9NIGJ5IHN0cmluZyBUTyBpbiAqU1RSSU5HUC4gICpTVFJJTkdQCisrICAgbXVzdCBjb21l IGZyb20geHJlYWxsb2MtY29tcGF0aWJsZSBhbGxvY2F0b3IgYW5kIGl0IG1heSBiZSB1cGRhdGVk LiAgRlJPTQorKyAgIG5lZWRzIHRvIGJlIGRlbGltaXRlZCBieSBJU19ESVJfU0VQQVJBVE9SIChv ciBiZSBsb2NhdGVkIGF0IHRoZSBzdGFydCBvcgorKyAgIGVuZCBvZiAqU1RSSU5HUC4gICovCisr Cisrdm9pZAorK3N1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJpbmdwLCBjb25z dCBjaGFyICpmcm9tLCBjb25zdCBjaGFyICp0bykKKyt7CisrICBjaGFyICpzdHJpbmcgPSAqc3Ry aW5ncCwgKnM7CisrICBjb25zdCBzaXplX3QgZnJvbV9sZW4gPSBzdHJsZW4gKGZyb20pOworKyAg Y29uc3Qgc2l6ZV90IHRvX2xlbiA9IHN0cmxlbiAodG8pOworKworKyAgZm9yIChzID0gc3RyaW5n OzspCisrICAgIHsKKysgICAgICBzID0gc3Ryc3RyIChzLCBmcm9tKTsKKysgICAgICBpZiAocyA9 PSBOVUxMKQorKwlicmVhazsKKysKKysgICAgICBpZiAoKHMgPT0gc3RyaW5nIHx8IElTX0RJUl9T RVBBUkFUT1IgKHNbLTFdKSkKKysgICAgICAgICAgJiYgKHNbZnJvbV9sZW5dID09ICdcMCcgfHwg SVNfRElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pKSkKKysJeworKwkgIGNoYXIgKnN0cmluZ19u ZXc7CisrCisrCSAgc3RyaW5nX25ldyA9IHhyZWFsbG9jIChzdHJpbmcsIChzdHJsZW4gKHN0cmlu ZykgKyB0b19sZW4gKyAxKSk7CisrCisrCSAgLyogUmVsb2NhdGUgdGhlIGN1cnJlbnQgUyBwb2lu dGVyLiAgKi8KKysJICBzID0gcyAtIHN0cmluZyArIHN0cmluZ19uZXc7CisrCSAgc3RyaW5nID0g c3RyaW5nX25ldzsKKysKKysJICAvKiBSZXBsYWNlIGZyb20gYnkgdG8uICAqLworKwkgIG1lbW1v dmUgKCZzW3RvX2xlbl0sICZzW2Zyb21fbGVuXSwgc3RybGVuICgmc1tmcm9tX2xlbl0pICsgMSk7 CisrCSAgbWVtY3B5IChzLCB0bywgdG9fbGVuKTsKKysKKysJICBzICs9IHRvX2xlbjsKKysJfQor KyAgICAgIGVsc2UKKysJcysrOworKyAgICB9CisrCisrICAqc3RyaW5ncCA9IHN0cmluZzsKKyt9 CisrCisgI2lmZGVmIEhBVkVfV0FJVFBJRAorIAorICNpZmRlZiBTSUdBTFJNCgpkaWZmIC0tZ2l0 IGEvZ2RiLWF1dG9sb2FkLTIyb2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMm9mMjIucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NlZDYyNAotLS0gL2Rldi9udWxs CisrKyBiL2dkYi1hdXRvbG9hZC0yMm9mMjIucGF0Y2gKQEAgLTAsMCArMSw0ODIgQEAKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAwMzAxLmh0bWwKK1N1 YmplY3Q6IFJlOiBbcGF0Y2ggMi8yXSBJbXBsZW1lbnQgbXVsdGktY29tcG9uZW50IC0td2l0aC1h dXRvLWxvYWQtZGlyCisKK09uIFdlZCwgMDkgTWF5IDIwMTIgMTk6NDc6MDcgKzAyMDAsIEVsaSBa YXJldHNraWkgd3JvdGU6Cis+ID4gRGF0ZTogV2VkLCA5IE1heSAyMDEyIDE3OjQ4OjQ3ICswMjAw Cis+ID4gRnJvbTogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Cis+ ID4gCis+ID4gK3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkgPGRpcjE+Wzo8ZGlyMj4u Li5dCis+ID4gKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyB3aXRoIGF1dG8tbG9hZGVkIHNj cmlwdHMuICBBdXRvbWF0aWNhbGx5Cis+IAorPiAgICJTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVz IGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIKKworT0suCisKKworPiA+ ICtTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgd2l0aCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIp LCBfKCJcCis+ID4gK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgd2l0aCBhdXRvLWxvYWRl ZCBzY3JpcHRzLiIpLCBfKCJcCis+IAorPiBMaWtld2lzZSBoZXJlLgorCitCdXQgdXNlZCAidGhl IiwgInRoZSIgaXMgcHJlc2VudC9yZXZpZXdlZCBpbiBtYW55IG90aGVyIGxvY2F0aW9ucyBpbiBj b2RlLgorCisKKz4gPiArbWF5IGJlIGRlbGltaXRlZCBieSB0aGUgaG9zdCBwbGF0Zm9ybSBkaXJl Y3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKz4gCis+IEkgYmVsaWV2ZSB0aGUgY29ycmVjdCB0ZXJt IGlzICJwYXRoIHNlcGFyYXRvciIuCisKK2RvbmUuCisKKworPiBJIHN1Z2dlc3QgdG8gc2F5Cis+ IAorPiAgIChAc2FtcHs6fSBvbiBVbml4LCBAc2FtcHs7fSBvbiBXaW5kb3dzIGFuZCBET1MpCis+ IAorPiBmb3IgY2xhcml0eSBoZXJlLCBhbmQgbm90IGZ1cnRoZXIgZG93bi4KKworVXNlZCwgd2l0 aCBNUy0gcHJlZml4ZXMuCisKKworPiAKKz4gPiArRWFjaCBlbnRyeSBoZXJlIG5lZWRzIHRvIGJl IGNvdmVyZWQgYWxzbyBieSB0aGUgc2VjdXJpdHkgc2V0dGluZworPiA+ICtAeHJlZntzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aH0uCis+ICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgor PiBZb3Ugd2FudCAiKEBweHJlZnsuLi59KSIgaGVyZS4KKworVXNlZDoKK0VhY2ggZW50cnkgaGVy ZSBuZWVkcyB0byBiZSBjb3ZlcmVkIGFsc28gYnkgdGhlIHNlY3VyaXR5IHNldHRpbmcKK0Bjb2Rl e3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSAoQHB4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo fSkuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMi0wNS0wOSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJSW1wbGVtZW50IG11bHRpLWNvbXBv bmVudCAtLXdpdGgtYXV0by1sb2FkLWRpci4KKwkqIE5FV1MgKHNldCBhdXRvLWxvYWQgc2NyaXB0 cy1kaXJlY3RvcnksIC0td2l0aC1hdXRvLWxvYWQtZGlyKTogTmV3CisJZW50cmllcy4KKwkoLS13 aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBVcGRhdGUgdGhlIGRlZmF1bHQgdmFsdWUgZGVzY3Jp cHRpb24uCisJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX2Rpciwgc2V0X2F1dG9fbG9hZF9kaXIs IHNob3dfYXV0b19sb2FkX2Rpcik6CisJTmV3LgorCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQp OiBBZGQgREVCVUdfQVVUT19MT0FEIG91dHB1dC4gIFJlbW92ZQorCUdEQl9EQVRBRElSIE5VTEwg Y2hlY2suICBSZXBsYWNlIEdEQl9EQVRBRElSL2F1dG8tbG9hZCBieQorCUFVVE9fTE9BRF9ESVIu ICBTdXBwb3J0ICRkZGlyIGFuZCBtdWx0aXBsZSBjb21wb25lbnRzIGluIGl0LgorCShfaW5pdGlh bGl6ZV9hdXRvX2xvYWQpOiBJbml0aWFsaXplIGFsc28gYXV0b19sb2FkX2Rpci4gIEluc3RhbGwg bmV3CisJInNldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkiLgorCSogY29uZmlnLmluOiBS ZWdlbmVyYXRlLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogY29uZmlndXJlLmFjICgt LXdpdGgtYXV0by1sb2FkLWRpcik6IE5ldyBjb25maWd1cmUgb3B0aW9uLgorCSgtLWF1dG8tbG9h ZC1zYWZlLXBhdGgpOiBDaGFuZ2UgdGhlIGRlZmF1bHQgdG8gLS13aXRoLWF1dG8tbG9hZC1kaXIu CisKK2dkYi9kb2MvCisyMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+CisKKwlJbXBsZW1lbnQgbXVsdGktY29tcG9uZW50IC0td2l0aC1hdXRvLWxv YWQtZGlyLgorCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IE5ldyByZWZlcmVuY2VzCisJ Zm9yICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5JworCWFuZCAnc2hvdyBhdXRvLWxv YWQgc2NyaXB0cy1kaXJlY3RvcnknLgorCShBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogRGVzY3Jp YmUgdGhlIG5ldyBkZWZhdWx0LiAgTW92ZSAkZGRpcgorCXN1YnN0aXR1YXRpb24gcmVmZXJlbmNl IHRvICdvYmpmaWxlLWdkYi5weSBmaWxlJy4KKwkob2JqZmlsZS1nZGIucHkgZmlsZSk6IERlc2Ny aWJlIHNjcmlwdC1uYW1lIGFsaWFzLiAgQ2hhbmdlIHJlYWwtbmFtZSB0bworCXNjcmlwdC1uYW1l LiAgRGVzY3JpYmUgbmV3ICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5JworCWFuZCAn c2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknLgorCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvTkVXUwkyMDEyLTA1LTA5IDIyOjE0OjI5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNS0wOSAyMjoxNzoxNi40MTY5MTQxODQgKzAy MDAKK0BAIC02Nyw2ICs2NywxMiBAQCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYK KyBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKyAgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9m IGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCisgCisr c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeSA8ZGlyMT5bOjxkaXIyPi4uLl0KKysgIFNl dCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNj cmlwdHMuCisrICBBdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cyBhbmQgR0RCIHNj cmlwdHMgYXJlIGxvY2F0ZWQgaW4gb25lCisrICBvZiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGJ5 IHRoaXMgb3B0aW9uLgorKyAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBtYXkgZGlmZmVyIGFj Y29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyBzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCA8ZGlyMT5bOjxkaXIyPi4uLl0KKyBzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgKKyAgIFNldCBh IGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBm aWxlcy4KK0BAIC03OCwxMCArODQsMTQgQEAgc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKKyAKKyAqIE5l dyBjb25maWd1cmUgb3B0aW9ucworIAorKy0td2l0aC1hdXRvLWxvYWQtZGlyCisrICBDb25maWd1 cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5 JworKyAgc2V0dGluZyBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICckZGRpci9hdXRvLWxvYWQnLCAk ZGRpciByZXByZXNlbnRpbmcKKysgIHRoZSB2YWx1ZSBvZiBjb25maWd1cmUgb3B0aW9uIC0td2l0 aC1nZGItZGF0YWRpci4KKysKKyAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aAorICAgQ29uZmln dXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldHRp bmcKKy0gIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8gJyRkZGlyL2F1dG8tbG9hZCcsICRkZGlyIHJl cHJlc2VudGluZyB0aGUgdmFsdWUKKy0gIG9mIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWdkYi1k YXRhZGlyLgorKyAgYWJvdmUuICBJdCBkZWZhdWx0cyB0byB0aGUgLS13aXRoLWF1dG8tbG9hZC1k aXIgc2V0dGluZy4KKyAKKyAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAorICAgU2V0ICdz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8nLCBlZmZlY3RpdmVseSBkaXNhYmxpbmcgdGhp cworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTA5 IDIyOjE0OjA0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1 dG8tbG9hZC5jCTIwMTItMDUtMDkgMjI6MTc6MTYuNDE3OTE0MTgyICswMjAwCitAQCAtMTA4LDYg KzEwOCwzNSBAQCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1Y3QgdWlfCisgCQkg ICAgdmFsdWUpOworIH0KKyAKKysvKiBEaXJlY3RvcnkgbGlzdCBmcm9tIHdoaWNoIHRvIGxvYWQg YXV0by1sb2FkZWQgc2NyaXB0cy4gIEl0IGlzIG5vdCBjaGVja2VkCisrICAgZm9yIGFic29sdXRl IHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZC4gIEl0IGlzIGluaXRpYWxp emVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8KKytzdGF0aWMgY2hhciAqYXV0 b19sb2FkX2RpcjsKKysKKysvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBj b25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xv YWRfZGlyIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpjKQorK3sKKysgIC8qIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIiIHJlc2V0cyBpdCB0byB0 aGUgY29tcGlsZSB0aW1lIGRlZmF1bHRzLiAgKi8KKysgIGlmIChhdXRvX2xvYWRfZGlyWzBdID09 ICdcMCcpCisrICAgIHsKKysgICAgICB4ZnJlZSAoYXV0b19sb2FkX2Rpcik7CisrICAgICAgYXV0 b19sb2FkX2RpciA9IHhzdHJkdXAgKEFVVE9fTE9BRF9ESVIpOworKyAgICB9CisrfQorKworKy8q ICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2RpciAoc3RydWN0IHVp X2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCSAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwg XygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgIgorKwkJCSAgICAiYXV0 by1sb2FkZWQgc2NyaXB0cyBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisrCisgLyog RGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90 IGNoZWNrZWQgZm9yCisgICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJl Y29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKKyAgICBfaW5pdGlhbGl6ZV9hdXRvX2xv YWQuICAqLworQEAgLTYwMiw2ICs2MzEsOSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0 cnVjdCBvYmpmaWxlCisgCisgICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKKyAgIGRl YnVnZmlsZSA9IGZpbGVuYW1lOworKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlIFwi JXNcIiAlcy5cbiIpLAorKwkJCWRlYnVnZmlsZSwgaW5wdXQgPyBfKCJleGlzdHMiKSA6IF8oImRv ZXMgbm90IGV4aXN0IikpOworIAorICAgaWYgKCFpbnB1dCkKKyAgICAgeworQEAgLTYxMiw2ICs2 NDQsMTIgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorICAgICAg IGRlYnVnZGlyX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoZGVidWdfZmlsZV9kaXJl Y3RvcnkpOworICAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoZGVidWdkaXJf dmVjKTsKKyAKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwlmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisrCQkJICAgIF8oImF1dG8tbG9hZDogU2VhcmNoaW5nICdzZXQgZGVi dWctZmlsZS1kaXJlY3RvcnknICIKKysJCQkgICAgICAicGF0aCBcIiVzXCIuXG4iKSwKKysJCQkg ICAgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworKworICAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRl cmF0ZSAoY2hhcl9wdHIsIGRlYnVnZGlyX3ZlYywgaXgsIGRlYnVnZGlyKTsgKytpeCkKKyAJewor IAkgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8g ZGlyZWN0b3J5LiAgKi8KK0BAIC02MjMsMjQgKzY2MSw1MyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9z Y3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdm aWxlKTsKKyAJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CisrCSAgaWYgKGRlYnVn X2F1dG9fbG9hZCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0 by1sb2FkOiBBdHRlbXB0ZWQgZmlsZSAiCisrCQkJCQkgICAgICAiXCIlc1wiICVzLlxuIiksCisr CQkJCWRlYnVnZmlsZSwKKysJCQkJaW5wdXQgPyBfKCJleGlzdHMiKSA6IF8oImRvZXMgbm90IGV4 aXN0IikpOworIAkgIGlmIChpbnB1dCAhPSBOVUxMKQorIAkgICAgYnJlYWs7CisgCX0KKyAgICAg fQorIAorLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKKysgIGlmICghaW5wdXQpCisgICAg IHsKKysgICAgICBWRUMgKGNoYXJfcHRyKSAqdmVjOworKyAgICAgIGludCBpeDsKKysgICAgICBj aGFyICpkaXI7CisrCisgICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1YmRp cmVjdG9yeSBvZiBnZGIncyBkYXRhCisgCSBkaXJlY3RvcnkuICAqLworLSAgICAgIGRlYnVnZmls ZSA9IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFkaXIpICsgc3RybGVuIChmaWxlbmFtZSkKKy0J CQkgICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSArIDEpOworLSAgICAgIHN0cmNweSAoZGVidWdm aWxlLCBnZGJfZGF0YWRpcik7CistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvYXV0by1sb2Fk Iik7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAi LyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKyAKKy0g ICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9w ZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgICB2ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92 ZWMgKGF1dG9fbG9hZF9kaXIpOworKyAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3Zl YyAodmVjKTsKKysKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwlmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogU2VhcmNoaW5nICdzZXQgYXV0by1sb2Fk ICIKKysJCQkJCSAgInNjcmlwdHMtZGlyZWN0b3J5JyBwYXRoIFwiJXNcIi5cbiIpLAorKwkJCSAg ICBhdXRvX2xvYWRfZGlyKTsKKysKKysgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNo YXJfcHRyLCB2ZWMsIGl4LCBkaXIpOyArK2l4KQorKwl7CisrCSAgZGVidWdmaWxlID0geHN0cmR1 cCAoZGlyKTsKKysJICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGVidWdmaWxlLCAiJGRk aXIiLCBnZGJfZGF0YWRpcik7CisrCSAgZGVidWdmaWxlID0geHJlYWxsb2MgKGRlYnVnZmlsZSwg KHN0cmxlbiAoZGVidWdmaWxlKQorKwkJCQkJICAgICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKSk7 CisrCisrCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIg aGVyZS4gICovCisrCSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKysKKysJICBtYWtl X2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworKwkgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmls ZSwgInIiKTsKKysJICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwkgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlICIKKysJCQkJCSAg ICAgICJcIiVzXCIgJXMuXG4iKSwKKysJCQkJZGVidWdmaWxlLAorKwkJCQlpbnB1dCA/IF8oImV4 aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7CisrCSAgaWYgKGlucHV0ICE9IE5VTEwpCisr CSAgICBicmVhazsKKysJfQorICAgICB9CisgCisgICBpZiAoaW5wdXQpCitAQCAtMTA1Niw2ICsx MTIzLDE5IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKKyBVc2Fn ZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkgICBhdXRvX2xvYWRfaW5mb19j bWRsaXN0X2dldCAoKSk7CisgCisrICBhdXRvX2xvYWRfZGlyID0geHN0cmR1cCAoQVVUT19MT0FE X0RJUik7CisrICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJzY3JpcHRzLWRp cmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9fbG9hZF9kaXIsIF8oIlwK KytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9h ZGVkIHNjcmlwdHMuIiksIF8oIlwKKytTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCisrQXV0b21hdGljYWxs eSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMgYW5kIEdEQiBzY3JpcHRzIGFyZSBsb2NhdGVkIGluIG9u ZSBvZiB0aGVcblwKKytkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBUaGlzIG9w dGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2ZcblwKKytzY3JpcHRzIGhhdmluZyAnc2V0 IGF1dG8tbG9hZCAuLi4gb2ZmJy4gIERpcmVjdG9yaWVzIGxpc3RlZCBoZXJlIG5lZWQgdG8gYmVc blwKKytwcmVzZW50IGFsc28gaW4gdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9u LiIpLAorKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1dG9fbG9hZF9kaXIsCisr CQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkJICAgICBhdXRvX2xv YWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0 cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7CisgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191 cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJzYWZlLXBh dGgiLCBjbGFzc19zdXBwb3J0LAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZp Zy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmln LmluCTIwMTItMDUtMDkgMjI6MTQ6MDQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMDkgMjI6MTc6MTYuNDE3OTE0MTgyICswMjAw CitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRl cm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVmIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRAor IAorKy8qIERpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRz LiAqLworKyN1bmRlZiBBVVRPX0xPQURfRElSCisrCisgLyogRGlyZWN0b3JpZXMgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLworICN1bmRlZiBBVVRPX0xPQURfU0FGRV9QQVRICisg CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNS0wOSAyMjox NjoxOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1 cmUJMjAxMi0wNS0wOSAyMjoxOToxOS4xOTI3MTY3OTggKzAyMDAKK0BAIC05NTUsNiArOTU1LDcg QEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKKyB3aXRoX2dkYl9kYXRhZGlyCisgd2l0aF9yZWxv Y2F0ZWRfc291cmNlcworIHdpdGhfcnBtCisrd2l0aF9hdXRvX2xvYWRfZGlyCisgd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfNjRfYml0X2JmZAorQEAg LTE2NjcsOSArMTY2OCwxMyBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmls ZXMKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlz c2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYu IGF1dG89bGlicnBtLnNvKQorKyAgLS13aXRoLWF1dG8tbG9hZC1kaXI9UEFUSAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9h ZGVkIHNjcmlwdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgJyRkZGlyJyBmb3Ig LWRhdGEtZGlyZWN0b3J5IFskZGRpci9hdXRvLWxvYWRdCisgICAtLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aD1QQVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZl IHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9hdXRvLWxvYWRdCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBh dGgKKysgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdpdGgtYXV0by1sb2FkLWRpcl0KKyAg IC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCisgICAtLXdpdGgt bGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CitA QCAtODQ4Myw2ICs4NDg4LDMxIEBAICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRSUE1fUEtH X0VSUk8KKyAgIGZpCisgZmkKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3RvcnkiID4mNQorKyRh c19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3RvcnkuLi4gIiA+ JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1kaXIgd2FzIGdpdmVu LgorK2lmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKysg IHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX2RpcjsKKytlbHNlCisrICB3aXRoX2F1dG9fbG9hZF9k aXI9JyRkZGlyL2F1dG8tbG9hZCcKKytmaQorKworK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0 b19sb2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKysKKysgIHRl c3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAg dGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9Jwor KyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRlc2NhcGVfZGlyYAorKyAgYWNfZGVmaW5lX2Rp cj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAorKworK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNF T0YKKysjZGVmaW5lIEFVVE9fTE9BRF9ESVIgIiRhY19kZWZpbmVfZGlyIgorK19BQ0VPRgorKwor KworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0 aF9hdXRvX2xvYWRfZGlyIiA+JjUKKyskYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX2RpciIgPiY2 OyB9CisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKKyAkYXNfZWNob19uICJjaGVj a2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIgPiY2OyB9CisgCitAQCAt ODQ5Miw3ICs4NTIyLDcgQEAgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0 fQorICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICAgICAgZmkKKyBlbHNlCist ICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9hZCcKKysgIHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciIKKyBmaQorIAorIGVzY2FwZV9k aXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1kZGlyXD4vXFxc XFxcXFxcXFxcJi9nJ2AKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUu YWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3Vy ZS5hYwkyMDEyLTA1LTA5IDIyOjE2OjEwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTA5IDIyOjE5OjA4LjM5MDczNDE2NyAr MDIwMAorQEAgLTMzOSwxNiArMzM5LDI2IEBAIGV4dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBt dHNJbml0SXRlcmEKKyAgIGZpCisgZmkKKyAgCisrQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVs dCBhdXRvLWxvYWQgZGlyZWN0b3J5XSkKKytBQ19BUkdfV0lUSChhdXRvLWxvYWQtZGlyLAorK0FT X0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRIXSwKKysgIFtkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywgdXNlICckZGRpcicgZm9y IC1kYXRhLWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0pLCwKKysgIFt3aXRoX2F1 dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCddKQorK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhf YXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAorK0FD X0RFRklORV9ESVIoQVVUT19MT0FEX0RJUiwgZXNjYXBlX2RpciwKKysJICAgICAgW0RpcmVjdG9y aWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLl0pCisrQUNfTVNHX1JF U1VMVChbJHdpdGhfYXV0b19sb2FkX2Rpcl0pCisrCisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVm YXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKKyBBQ19BUkdfV0lUSChhdXRvLWxvYWQtc2FmZS1w YXRoLAorIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwK Ky0gIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZSAkZGRp ciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGggQDw6QCRkZGlyL2F1dG8tbG9hZEA6PkBdKQor KyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlICRkZGly IGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpALS13aXRoLWF1dG8tbG9hZC1kaXJAOj5A XSkKKyBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLAorICAg ICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25z XSksCisgICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRo ZW4KKyAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAgICAgIGZpXSwKKy1bd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxvYWQnXSkKKytbd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIl0pCisgZXNjYXBlX2Rpcj1gZWNobyAk d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGRpclw+L1xcXFxcXFxcXFxc XCYvZydgCisgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAor IAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0w NS0wOSAyMjoxNjo0My4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0wOSAyMjoxODozOC4yOTQ3ODI1NDkgKzAyMDAKK0BA IC0yMDgwNCw2ICsyMDgwNCw4IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdk YmluaXQKKyBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBp cyBvbi4KKyBzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKKyAgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQu Cisrc2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8g bG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCisrICAgICAgICAgICAgICAgICAgICBpcyAkZGRpci9h dXRvLWxvYWQuCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBAYW5jaG9ye2luZm8gYXV0by1sb2Fk fQorQEAgLTIwODY0LDYgKzIwODY2LDEwIEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJv bCBjb21tYW5kcworIEB0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2Ny aXB0cy4KKyBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisgQHRh YiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KKytAaXRlbSBAeHJl ZntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KKytAdGFiIENvbnRyb2wgZm9yIEB2 YWx1ZXtHREJOfSBhdXRvLWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLgorK0BpdGVtIEB4cmVme3No b3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KKytAdGFiIFNob3cgQHZhbHVle0dEQk59 IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uCisgQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0fS4KKyBAdGFiIENvbnRyb2wgZm9yIGluaXQgZmlsZSBpbiB0aGUgY3Vy cmVudCBkaXJlY3RvcnkuCisgQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dH0uCitAQCAtMjEwNDAsMTUgKzIxMDQ2LDEzIEBAIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBz Y3JpcHRzLiAgTXVsdGkKKyBob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNl LgorIEBlbmQgdGFibGUKKyAKKy1UaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZGly L2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKytUaGlzIHZhcmlhYmxlIGRlZmF1 bHRzIHRvIHdoYXQgQGNvZGV7LS13aXRoLWF1dG8tbG9hZC1kaXJ9IGhhcyBiZWVuIGNvbmZpZ3Vy ZWQKKyt0byAoQHB4cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRkaXJ9IHN1YnN0 aXR1YXRpb24gYXBwbGllcyB0aGUgc2FtZQorK2FzIGZvciBAeHJlZntzZXQgYXV0by1sb2FkIHNj cmlwdHMtZGlyZWN0b3J5fS4KKytUaGUgZGVmYXVsdCBAY29kZXtzZXQKKyBhdXRvLWxvYWQgc2Fm ZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZp Z3VyYXRpb24KKyBvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisg CistQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFy e2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcworLWRldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0 YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBiZQorLWJlIHBs YWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9uZSBvciBkZWxpbWl0 ZWQgYnkgQGZpbGV7L30gb3IKKy1AZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywgZGVwZW5k aW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgorLQorIFNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBA ZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24sCisgY29ycmVzcG9uZGlu ZyBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbiBvcHRpb24gaXMKKyBAb3B0aW9uey0td2l0aG91 dC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KK0BAIC0yNTEzNSw3ICsyNTEzOSw3IEBAIHJlZ2lzdGVy aW5nIG9iamZpbGUtc3BlY2lmaWMgcHJldHR5LXByaW4KKyBAY2luZGV4IEBmaWxle0B2YXJ7b2Jq ZmlsZX0tZ2RiLnB5fQorIAorIFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUgaXMgcmVhZCwgQHZhbHVl e0dEQk59IGxvb2tzIGZvcgorLWEgZmlsZSBuYW1lZCBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5w eX0sCisrYSBmaWxlIG5hbWVkIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSAod2UgY2FsbCBp dCBAdmFye3NjcmlwdC1uYW1lfSBiZWxvdyksCisgd2hlcmUgQHZhcntvYmpmaWxlfSBpcyB0aGUg b2JqZWN0IGZpbGUncyByZWFsIG5hbWUsIGZvcm1lZCBieSBlbnN1cmluZworIHRoYXQgdGhlIGZp bGUgbmFtZSBpcyBhYnNvbHV0ZSwgZm9sbG93aW5nIGFsbCBzeW1saW5rcywgYW5kIHJlc29sdmlu ZworIEBjb2Rley59IGFuZCBAY29kZXsuLn0gY29tcG9uZW50cy4gIElmIHRoaXMgZmlsZSBleGlz dHMgYW5kIGlzCitAQCAtMjUxNDMsMTQgKzI1MTQ3LDQyIEBAIHJlYWRhYmxlLCBAdmFsdWV7R0RC Tn0gd2lsbCBldmFsdWF0ZSBpdAorIAorIElmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5k IGlmIHRoZSBwYXJhbWV0ZXIKKyBAY29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0gaXMgc2V0IChA cHhyZWZ7U2VwYXJhdGUgRGVidWcgRmlsZXN9KSwKKy10aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxv b2sgZm9yIEB2YXJ7cmVhbC1uYW1lfSBpbiBhbGwgb2YgdGhlCisrdGhlbiBAdmFsdWV7R0RCTn0g d2lsbCBsb29rIGZvciBAdmFye3NjcmlwdC1uYW1lfSBpbiBhbGwgb2YgdGhlCisgZGlyZWN0b3Jp ZXMgbWVudGlvbmVkIGluIHRoZSB2YWx1ZSBvZiBAY29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0u CisgCisgRmluYWxseSwgaWYgdGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0LCB0aGVuIEB2YWx1ZXtH REJOfSB3aWxsIGxvb2sgZm9yCistYSBmaWxlIG5hbWVkIEBmaWxle0B2YXJ7ZGF0YS1kaXJlY3Rv cnl9L3B5dGhvbi9hdXRvLWxvYWQvQHZhcntyZWFsLW5hbWV9fSwgd2hlcmUKKy1AdmFye2RhdGEt ZGlyZWN0b3J5fSBpcyBAdmFsdWV7R0RCTn0ncyBkYXRhIGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZp YQorLUBjb2Rle3Nob3cgZGF0YS1kaXJlY3Rvcnl9LCBAcHhyZWZ7RGF0YSBGaWxlc30pLCBhbmQg QHZhcntyZWFsLW5hbWV9CistaXMgdGhlIG9iamVjdCBmaWxlJ3MgcmVhbCBuYW1lLCBhcyBkZXNj cmliZWQgYWJvdmUuCisrQHZhcntzY3JpcHQtbmFtZX0gZmlsZSBpbiBhbGwgb2YgdGhlIGRpcmVj dG9yaWVzIHNwZWNpZmllZCBieToKKysKKytAdGFibGUgQGNvZGUKKytAYW5jaG9ye3NldCBhdXRv LWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIHNjcmlwdHMt ZGlyZWN0b3J5CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeSBAcntbfUB2 YXJ7ZGlyZWN0b3JpZXN9QHJ7XX0KKytDb250cm9sIEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZCBz Y3JpcHRzIGxvY2F0aW9uLiAgTXVsdGlwbGUgZGlyZWN0b3J5IGVudHJpZXMKKyttYXkgYmUgZGVs aW1pdGVkIGJ5IHRoZSBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJhdG9yIGluIHVzZQorKyhAc2Ft cHs6fSBvbiBVbml4LCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpLgorKworK0Vh Y2ggZW50cnkgaGVyZSBuZWVkcyB0byBiZSBjb3ZlcmVkIGFsc28gYnkgdGhlIHNlY3VyaXR5IHNl dHRpbmcKKytAY29kZXtzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0gKEBweHJlZntzZXQgYXV0by1s b2FkIHNhZmUtcGF0aH0pLgorKworK0BhbmNob3J7d2l0aC1hdXRvLWxvYWQtZGlyfQorK1RoaXMg dmFyaWFibGUgZGVmYXVsdHMgdG8gQGZpbGV7JGRkaXIvYXV0by1sb2FkfS4gIFRoZSBkZWZhdWx0 IEBjb2Rle3NldAorK2F1dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJy aWRlbiBieSBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbgorK29wdGlvbiBAb3B0aW9uey0td2l0 aC1hdXRvLWxvYWQtZGlyfS4KKysKKytBbnkgdXNlZCBzdHJpbmcgQGZpbGV7JGRkaXJ9IHdpbGwg Z2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IHdoaWNoIGlzCisrZGV0ZXJtaW5l ZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cCAoQHB4cmVme0RhdGEgRmlsZXN9KS4gIEBmaWxleyRk ZGlyfSBtdXN0IGJlCisrYmUgcGxhY2VkIGFzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCAtLS0gZWl0 aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieSBAZmlsZXsvfSBvcgorK0BmaWxle1x9IGRpcmVjdG9y eSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxhdGZvcm0uCisrCisrVGhlIGxp c3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBwYXRoIHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFu ZCBVbml4Cisrc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKSB0byBz ZXBhcmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5CisrdG8gdGhlIEBlbnZ7UEFUSH0gZW52aXJv bm1lbnQgdmFyaWFibGUuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVj dG9yeX0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5CisrQGl0ZW0g c2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkKKytTaG93IEB2YWx1ZXtHREJOfSBhdXRv LWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLgorK0BlbmQgdGFibGUKKyAKKyBAdmFsdWV7R0RCTn0g ZG9lcyBub3QgdHJhY2sgd2hpY2ggZmlsZXMgaXQgaGFzIGFscmVhZHkgYXV0by1sb2FkZWQgdGhp cyB3YXkuCisgQHZhbHVle0dEQk59IHdpbGwgbG9hZCB0aGUgYXNzb2NpYXRlZCBzY3JpcHQgZXZl cnkgdGltZSB0aGUgY29ycmVzcG9uZGluZwoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNw ZWMKaW5kZXggYzhiZTljMC4uZDRiOTZkYSAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2Ri LnNwZWMKQEAgLTM1LDcgKzM1LDcgQEAgVmVyc2lvbjogNy40LjUwLiV7c25hcH0KIAogIyBUaGUg cmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQg aXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1 bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNl OiA0MyV7P2Rpc3R9CitSZWxlYXNlOiA0NCV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQg R1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRp b25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3Vw OiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTU5MCwyNCArNTkwLDI4IEBAIFBhdGNoNjYxOiBn ZGItc3RhbGUtZnJhbWVfaW5mby5wYXRjaAogCiAjIFNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1 bnRydXN0ZWQgaW5mZXJpb3JzLCBzZWUgInNldCBhdXRvLWxvYWQiIChCWiA3NTYxMTcpLgogIz1w dXNoCi1QYXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAxb2YxOC5wYXRjaAotUGF0Y2g2NjM6IGdkYi1h dXRvbG9hZC0wMm9mMTgucGF0Y2gKLVBhdGNoNjY0OiBnZGItYXV0b2xvYWQtMDNvZjE4LnBhdGNo Ci1QYXRjaDY2NTogZ2RiLWF1dG9sb2FkLTA0b2YxOC5wYXRjaAotUGF0Y2g2NjY6IGdkYi1hdXRv bG9hZC0wNW9mMTgucGF0Y2gKLVBhdGNoNjY3OiBnZGItYXV0b2xvYWQtMDZvZjE4LnBhdGNoCi1Q YXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaAotUGF0Y2g2Njk6IGdkYi1hdXRvbG9h ZC0wOG9mMTgucGF0Y2gKLVBhdGNoNjcwOiBnZGItYXV0b2xvYWQtMDlvZjE4LnBhdGNoCi1QYXRj aDY3MTogZ2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRjaAotUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0x MW9mMTgucGF0Y2gKLVBhdGNoNjczOiBnZGItYXV0b2xvYWQtMTJvZjE4LnBhdGNoCi1QYXRjaDY3 NDogZ2RiLWF1dG9sb2FkLTEzb2YxOC5wYXRjaAotUGF0Y2g2NzU6IGdkYi1hdXRvbG9hZC0xNG9m MTgucGF0Y2gKLVBhdGNoNjc2OiBnZGItYXV0b2xvYWQtMTVvZjE4LnBhdGNoCi1QYXRjaDY3Nzog Z2RiLWF1dG9sb2FkLTE2b2YxOC5wYXRjaAotUGF0Y2g2Nzg6IGdkYi1hdXRvbG9hZC0xN29mMTgu cGF0Y2gKLVBhdGNoNjc5OiBnZGItYXV0b2xvYWQtMThvZjE4LnBhdGNoCitQYXRjaDY2MjogZ2Ri LWF1dG9sb2FkLTAxb2YyMi5wYXRjaAorUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMjIucGF0 Y2gKK1BhdGNoNjY0OiBnZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCitQYXRjaDY2NTogZ2RiLWF1 dG9sb2FkLTA0b2YyMi5wYXRjaAorUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMjIucGF0Y2gK K1BhdGNoNjY3OiBnZGItYXV0b2xvYWQtMDZvZjIyLnBhdGNoCitQYXRjaDY2ODogZ2RiLWF1dG9s b2FkLTA3b2YyMi5wYXRjaAorUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMjIucGF0Y2gKK1Bh dGNoNjcwOiBnZGItYXV0b2xvYWQtMDlvZjIyLnBhdGNoCitQYXRjaDY3MTogZ2RiLWF1dG9sb2Fk LTEwb2YyMi5wYXRjaAorUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMjIucGF0Y2gKK1BhdGNo NjczOiBnZGItYXV0b2xvYWQtMTJvZjIyLnBhdGNoCitQYXRjaDY3NDogZ2RiLWF1dG9sb2FkLTEz b2YyMi5wYXRjaAorUGF0Y2g2NzU6IGdkYi1hdXRvbG9hZC0xNG9mMjIucGF0Y2gKK1BhdGNoNjc2 OiBnZGItYXV0b2xvYWQtMTVvZjIyLnBhdGNoCitQYXRjaDY3NzogZ2RiLWF1dG9sb2FkLTE2b2Yy Mi5wYXRjaAorUGF0Y2g2Nzg6IGdkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2gKK1BhdGNoNjc5OiBn ZGItYXV0b2xvYWQtMThvZjIyLnBhdGNoCitQYXRjaDY4MDogZ2RiLWF1dG9sb2FkLTE5b2YyMi5w YXRjaAorUGF0Y2g2ODE6IGdkYi1hdXRvbG9hZC0yMG9mMjIucGF0Y2gKK1BhdGNoNjgyOiBnZGIt YXV0b2xvYWQtMjFvZjIyLnBhdGNoCitQYXRjaDY4MzogZ2RiLWF1dG9sb2FkLTIyb2YyMi5wYXRj aAogCiAlaWYgMCV7IT9yaGVsOjF9IHx8IDAlez9yaGVsfSA+IDYKICMgUkxfU1RBVEVfRkVET1JB X0dEQiB3b3VsZCBub3QgYmUgZm91bmQgZm9yOgpAQCAtOTE3LDYgKzkyMSwxMCBAQCBybSAtZiBn ZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0 Y2g2NzcgLXAxCiAlcGF0Y2g2NzggLXAxCiAlcGF0Y2g2NzkgLXAxCislcGF0Y2g2ODAgLXAxCisl cGF0Y2g2ODEgLXAxCislcGF0Y2g2ODIgLXAxCislcGF0Y2g2ODMgLXAxCiAKICVwYXRjaDM5MyAt cDEKICVpZiAwJXshP2VsNToxfSB8fCAwJXs/c2NsOjF9CkBAIC0xMDM4LDkgKzEwNDYsOSBAQCAk KDogUkhFTC01IGxpYnJwbSBoYXMgaW5jb21wYXRpYmxlIEFQSS4gKQkJCVwKICVlbHNlCiAJLS1k aXNhYmxlLWlucHJvY2Vzcy1hZ2VudAkJCQlcCiAlZW5kaWYKLSQoOiAle19iaW5kaXJ9L21vbm8t Z2RiLnB5IGlzIHdvcmthcm91bmQgZm9yIG1vbm8gQlogODE1NTAxLiApCQkJCQkJCQkJCQlcCi0k KDogZm9yIHRoZSBzY2wgcGFydCBzZWUgdW5maXhlZCBCWiA4MTU5MTAuICkJCQkJCQkJCQkJCQkJ XAotCS0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPSV7X2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWQ6 L3Vzci9saWIvZGVidWclez9zY2w6OiV7X3Jvb3RfZGF0YWRpcn0vZ2RiL2F1dG8tbG9hZH06JXtf cm9vdF9iaW5kaXJ9L21vbm8tZ2RiLnB5CVwKKyQoOiAle19iaW5kaXJ9L21vbm8tZ2RiLnB5IGlz IHdvcmthcm91bmQgZm9yIG1vbm8gQlogODE1NTAxLiApCQkJCQkJCQkJCVwKKwkgICAgICAtLXdp dGgtYXV0by1sb2FkLWRpcj0nJGRkaXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFkaXJ9 L2dkYi9hdXRvLWxvYWR9JwkJCQkJCVwKKwktLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD0nJGRk aXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWR9Oi91c3Iv bGliL2RlYnVnOiV7X3Jvb3RfYmluZGlyfS9tb25vLWdkYi5weScJXAogJWlmYXJjaCBzcGFyYyBz cGFyY3Y5CiAJc3BhcmMtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9JXs/X2dudX0KICVlbHNlCkBA IC0xNDAxLDYgKzE0MDksOSBAQCBmaQogJWVuZGlmICMgMCV7IT9lbDU6MX0gfHwgIiV7X3Rhcmdl dF9jcHV9IiA9PSAibm9hcmNoIgogCiAlY2hhbmdlbG9nCisqIFdlZCBNYXkgIDkgMjAxMiBKYW4g S3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjQuNTAuMjAxMjAxMjAt NDQuZmMxNworLSBGaXggaW4gInNldCBhdXRvLWxvYWQiIHBhdGNoc2V0IGZvciBTQ0wgc2NyaXB0 cyBpbmhlcml0YW5jZSAoQlogODE1OTEwKS4KKwogKiBXZWQgQXByIDI1IDIwMTIgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwMTIwLTQzLmZj MTcKIC0gW1JIRUw1XSBXb3JrYXJvdW5kIGtlcm5lbCBmb3IgZGV0YWNoaW5nIFNJR1NUT1BwZWQg cHJvY2Vzc2VzIChCWiA4MDkzODIpLgogCg==