From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: - Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz). Date: Sat, 27 Jun 2026 23:54:59 GMT Message-ID: <178260449996.1.11563752802101632293.rpms-gdb-e266c66da6a1@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: e266c66da6a1f3b68b2e1decf569bb1dcedb9fbf QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogZTI2NmM2NmRhNmExZjNiNjhiMmUxZGVjZjU2 OWJiMWRjZWRiOWZiZgpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMS0wMi0wNlQyMzo0ODowOCswMTowMApTdGF0cyAgOiArODU3 Ly0yIGluIDQgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9y cG1zL2dkYi9jL2UyNjZjNjZkYTZhMWYzYjY4YjJlMWRlY2Y1NjliYjFkY2VkYjlmYmY/YnJhbmNo PWdkYi0xNy4yLXJlYmFzZS1mNDQKCkxvZzoKLSBGaXggcmVncmVzc2lvbnMgb24gQysrIG5hbWVz IHJlc29sdmluZyAoUFIgMTE3MzQsIFBSIDEyMjczLCBLZWl0aCBTZWl0eikuCgotLS0KZGlmZiAt LWdpdCBhL2dkYi1waHlzbmFtZS1wcjExNzM0LTFvZjIucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIx MTczNC0xb2YyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYTY5 YjcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcGh5c25hbWUtcHIxMTczNC0xb2YyLnBhdGNoCkBA IC0wLDAgKzEsNjE5IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx MC0xMi9tc2cwMDI2My5odG1sCisKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9jcC1z dXBwb3J0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL2Nw LXN1cHBvcnQuYwkyMDExLTAyLTA2IDIzOjEyOjE2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjIuNTAuMjAxMTAyMDYvZ2RiL2NwLXN1cHBvcnQuYwkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAw MDAwMCArMDEwMAorQEAgLTM1LDYgKzM1LDcgQEAKKyAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgor ICNpbmNsdWRlICJleHByZXNzaW9uLmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUg Imxhbmd1YWdlLmgiCisgCisgI2luY2x1ZGUgInNhZmUtY3R5cGUuaCIKKyAKK0BAIC05MzYsNyAr OTM3LDggQEAgbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9xdWFsaWZpZWQgKGNvbgorICAgQUxM X09CSkZJTEVTIChvYmpmaWxlKQorICAgeworICAgICBpZiAob2JqZmlsZS0+c2YpCistICAgICAg b2JqZmlsZS0+c2YtPnFmLT5leHBhbmRfc3ltdGFic19mb3JfZnVuY3Rpb24gKG9iamZpbGUsIGZ1 bmNfbmFtZSk7CisrICAgICAgb2JqZmlsZS0+c2YtPnFmLT5leHBhbmRfc3ltdGFic19mb3JfZnVu Y3Rpb24gKG9iamZpbGUsIGZ1bmNfbmFtZSwKKysJCQkJCQkgICAgbGFuZ3VhZ2VfY3BsdXMpOwor ICAgfQorIAorICAgLyogU2VhcmNoIHVwd2FyZHMgZnJvbSBjdXJyZW50bHkgc2VsZWN0ZWQgZnJh bWUgKHNvIHRoYXQgd2UgY2FuCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvZHdhcmYy cmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9kd2Fy ZjJyZWFkLmMJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjUwLjIwMTEwMjA2L2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAw MDAgKzAxMDAKK0BAIC0yMzczLDcgKzIzNzMsOCBAQCBkdzJfbG9va3VwX3N5bXRhYiAoc3RydWN0 IG9iamZpbGUgKm9iamZpCisgCisgc3RhdGljIHN0cnVjdCBzeW10YWIgKgorIGR3Ml9sb29rdXBf c3ltYm9sIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IGJsb2NrX2luZGV4LAorLQkJICAg Y29uc3QgY2hhciAqbmFtZSwgZG9tYWluX2VudW0gZG9tYWluKQorKwkJICAgY29uc3QgY2hhciAq bmFtZSwgZG9tYWluX2VudW0gZG9tYWluLAorKwkJICAgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkK KyB7CisgICAvKiBXZSBkbyBhbGwgdGhlIHdvcmsgaW4gdGhlIHByZV9leHBhbmRfc3ltdGFic19t YXRjaGluZyBob29rCisgICAgICBpbnN0ZWFkLiAgKi8KK0BAIC0yNDQ5LDcgKzI0NTAsOCBAQCBk dzJfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzCisgCisgc3RhdGljIHZvaWQK KyBkdzJfZXhwYW5kX3N5bXRhYnNfZm9yX2Z1bmN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKy0JCQkJIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKKysJCQkJIGNvbnN0IGNoYXIgKmZ1bmNf bmFtZSwKKysJCQkJIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisgeworICAgZHcyX2RvX2V4cGFu ZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLCBmdW5jX25hbWUpOworIH0KK0BAIC0yNTA5LDcg KzI1MTEsOCBAQCBkdzJfZXhwYW5kX3N5bXRhYnNfd2l0aF9maWxlbmFtZSAoc3RydWN0CisgfQor IAorIHN0YXRpYyBjb25zdCBjaGFyICoKKy1kdzJfZmluZF9zeW1ib2xfZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCisrZHcyX2ZpbmRfc3ltYm9sX2ZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAorKwkJICAgICAgZW51 bSBsYW5ndWFnZSBsYW5ndWFnZSkKKyB7CisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpw ZXJfY3U7CisgICBvZmZzZXRfdHlwZSAqdmVjOworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYv Z2RiL2xpbmVzcGVjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcv Z2RiL2xpbmVzcGVjLmMJMjAxMS0wMi0wNiAyMzoxMjoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9saW5lc3BlYy5jCTIwMTEtMDItMDYgMjM6MTI6MjYuMDAw MDAwMDAwICswMTAwCitAQCAtMTIyNiw3ICsxMjI2LDcgQEAgZGVjb2RlX29iamMgKGNoYXIgKiph cmdwdHIsIGludCBmdW5maXJzdAorIAorIHN0YXRpYyBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMK KyBkZWNvZGVfY29tcG91bmQgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIGNoYXIg KioqY2Fub25pY2FsLAorLQkJIGNoYXIgKnNhdmVkX2FyZywgY2hhciAqcCwgaW50ICpub3RfZm91 bmRfcHRyKQorKwkJIGNoYXIgKnRoZV9yZWFsX3NhdmVkX2FyZywgY2hhciAqcCwgaW50ICpub3Rf Zm91bmRfcHRyKQorIHsKKyAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyB2YWx1ZXM7CisgICBj aGFyICpwMjsKK0BAIC0xMjM3LDcgKzEyMzcsMjMgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoq YXJncHRyLCBpbnQgZnVuZgorICAgc3RydWN0IHN5bWJvbCAqc3ltX2NsYXNzOworICAgc3RydWN0 IHR5cGUgKnQ7CisgICBjaGFyICpzYXZlZF9qYXZhX2FyZ3B0ciA9IE5VTEw7CisrICBjaGFyICpz YXZlZF9hcmc7CisgCisrICAvKiBUSEVfUkVBTF9TQVZFRF9BUkcgY2Fubm90IGJlIGFsdGVyZWQs IHNvIG1ha2UgYSBjb3B5IHRoYXQgY2FuIGJlLiAgKi8KKysgIHNhdmVkX2FyZyA9IGFsbG9jYSAo c3RybGVuICh0aGVfcmVhbF9zYXZlZF9hcmcpICsgMSk7CisrICBzdHJjcHkgKHNhdmVkX2FyZywg dGhlX3JlYWxfc2F2ZWRfYXJnKTsKKysKKysgIC8qIElmIHRoZSB1c2VyIHNwZWNpZmllZCAiJ2Zv bzo6YmFyKGJheiknIiAobm90ZSB0aGUgcXVvdGVzIC0tIG9mdGVuCisrICAgICBhZGRlZCB0byB3 b3JrYXJvdW5kIGNvbXBsZXRlciBpc3N1ZXMpIC0tIHNhdmVkX2FyZyB3aWxsIGJlCisrICAgICBl bmNhcHN1bGF0ZWQgaW4gc2luZ2xlLXF1b3Rlcy4gIFRoZXkgYXJlIHN1cGVyZmx1b3VzLCBzbyBq dXN0IHN0cmlwCisrICAgICB0aGVtIG9mZi4gICovCisrICBpZiAoKnNhdmVkX2FyZyA9PSAnXCcn KQorKyAgICB7CisrICAgICAgY2hhciAqZW5kID0gc2tpcF9xdW90ZWQgKHNhdmVkX2FyZyk7Cisr ICAgICAgbWVtbW92ZSAoc2F2ZWRfYXJnLCBzYXZlZF9hcmcgKyAxLCBlbmQgLSBzYXZlZF9hcmcp OworKyAgICAgIG1lbW1vdmUgKGVuZCAtIDIsIGVuZCwgc3RybGVuIChzYXZlZF9hcmcpICsgMSk7 CisrICAgIH0KKysgICAgICAKKyAgIC8qIEZpcnN0IGNoZWNrIGZvciAiZ2xvYmFsIiBuYW1lc3Bh Y2Ugc3BlY2lmaWNhdGlvbiwgb2YgdGhlIGZvcm0KKyAgICAgICI6OmZvbyIuICBJZiBmb3VuZCwg c2tpcCBvdmVyIHRoZSBjb2xvbnMgYW5kIGp1bXAgdG8gbm9ybWFsCisgICAgICBzeW1ib2wgcHJv Y2Vzc2luZy4gIEkuZS4gdGhlIHdob2xlIGxpbmUgc3BlY2lmaWNhdGlvbiBzdGFydHMgd2l0aAor QEAgLTE0ODksNyArMTUwNSw3IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50 IGZ1bmYKKyAgICAgIHVwLiAgVGhlIHF1b3RlcyBhcmUgaW1wb3J0YW50IGlmIGNvcHkgaXMgZW1w dHkuICAqLworICAgaWYgKG5vdF9mb3VuZF9wdHIpCisgICAgICpub3RfZm91bmRfcHRyID0gMTsK Ky0gIGNwbHVzcGx1c19lcnJvciAoc2F2ZWRfYXJnLAorKyAgY3BsdXNwbHVzX2Vycm9yICh0aGVf cmVhbF9zYXZlZF9hcmcsCisgCQkgICAiQ2FuJ3QgZmluZCBtZW1iZXIgb2YgbmFtZXNwYWNlLCAi CisgCQkgICAiY2xhc3MsIHN0cnVjdCwgb3IgdW5pb24gbmFtZWQgXCIlc1wiXG4iLAorIAkJICAg Y29weSk7CitJbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvcHN5bXRhYi5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9wc3ltdGFiLmMJMjAxMS0wMi0w NiAyMzoxMjoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9w c3ltdGFiLmMJMjAxMS0wMi0wNiAyMzoxMjo1NC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMyw2ICsz Myw4IEBACisgI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCisgI2luY2x1ZGUgImdkYl9y ZWdleC5oIgorICNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCisrI2luY2x1ZGUgImxhbmd1YWdlLmgi CisrI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKKyAKKyAjaWZuZGVmIERFVl9UVFkKKyAjZGVmaW5l IERFVl9UVFkgIi9kZXYvdHR5IgorQEAgLTU1LDcgKzU3LDggQEAgc3RhdGljIHN0cnVjdCBwYXJ0 aWFsX3N5bWJvbCAqbWF0Y2hfcGFydAorIAorIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wg Kmxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICosCisgCQkJCQkJ ICAgICBjb25zdCBjaGFyICosIGludCwKKy0JCQkJCQkgICAgIGRvbWFpbl9lbnVtKTsKKysJCQkJ CQkgICAgIGRvbWFpbl9lbnVtLAorKwkJCQkJCSAgICAgZW51bSBsYW5ndWFnZSk7CisgCisgc3Rh dGljIGNoYXIgKnBzeW10YWJfdG9fZnVsbG5hbWUgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHMp OworIAorQEAgLTQxOCwxNSArNDIxLDM1IEBAIGZpeHVwX3BzeW1ib2xfc2VjdGlvbiAoc3RydWN0 IHBhcnRpYWxfc3kKKyBzdGF0aWMgc3RydWN0IHN5bXRhYiAqCisgbG9va3VwX3N5bWJvbF9hdXhf cHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCSAgICBpbnQgYmxvY2tfaW5k ZXgsIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikK KysJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLCBlbnVtIGxhbmd1YWdlIGxhbmd1YWdl KQorIHsKKyAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHM7CisgICBjb25zdCBpbnQgcHN5bXRh Yl9pbmRleCA9IChibG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPyAxIDogMCk7CisgCisgICBB TExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwgcHMpCisgICB7CistICAgIGlmICghcHMtPnJl YWRpbiAmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCBwc3ltdGFiX2luZGV4LCBk b21haW4pKQorLSAgICAgIHJldHVybiBQU1lNVEFCX1RPX1NZTVRBQiAocHMpOworKyAgICBpZiAo IXBzLT5yZWFkaW4KKysJJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgcHN5bXRh Yl9pbmRleCwgZG9tYWluLCBsYW5ndWFnZSkpCisrICAgICAgeworKwlzdHJ1Y3Qgc3ltYm9sICpz eW07CisrCXN0cnVjdCBzeW10YWIgKnN0YWIgPSBQU1lNVEFCX1RPX1NZTVRBQiAocHMpOworKwlz eW0gPSBOVUxMOworKworKwkvKiBTb21lIGNhdXRpb24gbXVzdCBiZSBvYnNlcnZlZCB3aXRoIG92 ZXJsb2FkZWQgZnVuY3Rpb25zCisrCSAgIGFuZCBtZXRob2RzLCBzaW5jZSB0aGUgcHN5bXRhYiB3 aWxsIG5vdCBjb250YWluIGFueSBvdmVybG9hZAorKwkgICBpbmZvcm1hdGlvbiAoYnV0IE5BTUUg bWlnaHQgY29udGFpbiBpdCkuICAqLworKwlpZiAoc3RhYi0+cHJpbWFyeSkKKysJICB7CisrCSAg ICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2ID0gQkxPQ0tWRUNUT1IgKHN0YWIpOworKwkgICAgc3Ry dWN0IGJsb2NrICpibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgYmxvY2tfaW5kZXgpOwor KwkgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Cisr CSAgfQorKworKwlpZiAoc3ltICYmIHN0cmNtcF9pdyAoU1lNQk9MX1NFQVJDSF9OQU1FIChzeW0p LCBuYW1lKSA9PSAwKQorKwkgIHJldHVybiBzdGFiOworKworKwkvKiBLZWVwIGxvb2tpbmcgdGhy b3VnaCBvdGhlciBwc3ltdGFicy4gICovCisrICAgICAgfQorICAgfQorIAorICAgcmV0dXJuIE5V TEw7CitAQCAtNTE5LDIyICs1NDIsNTggQEAgcHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nX3Bz eW10YWJzIChzdAorICAgLyogTm90aGluZy4gICovCisgfQorIAorKy8qIFJldHVybnMgdGhlIG5h bWUgdXNlZCB0byBzZWFyY2ggcHN5bXRhYnMuICBVbmxpa2Ugc3ltdGFicywgcHN5bXRhYnMgZG8K KysgICBub3QgY29udGFpbiBhbnkgbWV0aG9kL2Z1bmN0aW9uIGluc3RhbmNlIGluZm9ybWF0aW9u IChzaW5jZSB0aGlzIHdvdWxkCisrICAgZm9yY2UgcmVhZGluZyB0eXBlIGluZm9ybWF0aW9uIHdo aWxlIHJlYWRpbmcgcHN5bXRhYnMpLiAgVGhlcmVmb3JlLAorKyAgIGlmIE5BTUUgY29udGFpbnMg b3ZlcmxvYWQgaW5mb3JtYXRpb24sIGl0IG11c3QgYmUgc3RyaXBwZWQgYmVmb3JlIHNlYXJjaGlu ZworKyAgIHBzeW10YWJzLgorKworKyAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZy ZWVpbmcgdGhlIHJldHVybiByZXN1bHQuICAqLworKworK3N0YXRpYyBjb25zdCBjaGFyICoKKytw c3ltdGFiX3NlYXJjaF9uYW1lIChjb25zdCBjaGFyICpuYW1lLCBlbnVtIGxhbmd1YWdlIGxhbmd1 YWdlKQorK3sKKysgIHN3aXRjaCAobGFuZ3VhZ2UpCisrICAgIHsKKysgICAgY2FzZSBsYW5ndWFn ZV9jcGx1czoKKysgICAgY2FzZSBsYW5ndWFnZV9qYXZhOgorKyAgICAgIHsKKysgICAgICAgaWYg KHN0cmNociAobmFtZSwgJygnKSkKKysgICAgICAgICB7CisrICAgICAgICAgICBjaGFyICpyZXQg PSBjcF9yZW1vdmVfcGFyYW1zIChuYW1lKTsKKysgICAgICAgICAgIGlmIChyZXQpCisrICAgICAg ICAgICAgIHJldHVybiByZXQ7CisrICAgICAgICAgfQorKyAgICAgIH0KKysKKysgICAgZGVmYXVs dDoKKysgICAgICBicmVhazsKKysgICAgfQorKworKyAgcmV0dXJuIHhzdHJkdXAgKG5hbWUpOwor K30KKysKKyAvKiBMb29rLCBpbiBwYXJ0aWFsX3N5bXRhYiBQU1QsIGZvciBzeW1ib2wgd2hvc2Ug bmF0dXJhbCBuYW1lIGlzIE5BTUUuCisgICAgQ2hlY2sgdGhlIGdsb2JhbCBzeW1ib2xzIGlmIEdM T0JBTCwgdGhlIHN0YXRpYyBzeW1ib2xzIGlmIG5vdC4gICovCisgCisgc3RhdGljIHN0cnVjdCBw YXJ0aWFsX3N5bWJvbCAqCisgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgICBpbnQgZ2xvYmFsLCBkb21h aW5fZW51bSBkb21haW4pCisrCQkgICAgICAgaW50IGdsb2JhbCwgZG9tYWluX2VudW0gZG9tYWlu LCBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlKQorIHsKKyAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAq KnN0YXJ0LCAqKnBzeW07CisgICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKip0b3AsICoqcmVhbF90 b3AsICoqYm90dG9tLCAqKmNlbnRlcjsKKyAgIGludCBsZW5ndGggPSAoZ2xvYmFsID8gcHN0LT5u X2dsb2JhbF9zeW1zIDogcHN0LT5uX3N0YXRpY19zeW1zKTsKKyAgIGludCBkb19saW5lYXJfc2Vh cmNoID0gMTsKKysgIGNvbnN0IGNoYXIgKnNlYXJjaF9uYW1lOworKyAgc3RydWN0IGNsZWFudXAg KmNsZWFudXA7CisgCisgICBpZiAobGVuZ3RoID09IDApCisgICAgIHsKKyAgICAgICByZXR1cm4g KE5VTEwpOworICAgICB9CisrCisrICBzZWFyY2hfbmFtZSA9IHBzeW10YWJfc2VhcmNoX25hbWUg KG5hbWUsIGxhbmd1YWdlKTsKKysgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCAodm9p ZCAqKSBzZWFyY2hfbmFtZSk7CisgICBzdGFydCA9IChnbG9iYWwgPworIAkgICBwc3QtPm9iamZp bGUtPmdsb2JhbF9wc3ltYm9scy5saXN0ICsgcHN0LT5nbG9iYWxzX29mZnNldCA6CisgCSAgIHBz dC0+b2JqZmlsZS0+c3RhdGljX3BzeW1ib2xzLmxpc3QgKyBwc3QtPnN0YXRpY3Nfb2Zmc2V0KTsK K0BAIC01NjMsNyArNjIyLDggQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlh bF9zeQorIAkgICAgeworIAkgICAgICBkb19saW5lYXJfc2VhcmNoID0gMTsKKyAJICAgIH0KKy0J ICBpZiAoc3RyY21wX2l3X29yZGVyZWQgKFNZTUJPTF9TRUFSQ0hfTkFNRSAoKmNlbnRlciksIG5h bWUpID49IDApCisrCSAgaWYgKHN0cmNtcF9pd19vcmRlcmVkIChTWU1CT0xfU0VBUkNIX05BTUUg KCpjZW50ZXIpLAorKwkJCQkgc2VhcmNoX25hbWUpID49IDApCisgCSAgICB7CisgCSAgICAgIHRv cCA9IGNlbnRlcjsKKyAJICAgIH0KK0BAIC01NzcsMTEgKzYzNywxNCBAQCBsb29rdXBfcGFydGlh bF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5CisgCQkJXygiZmFpbGVkIGludGVybmFsIGNvbnNp c3RlbmN5IGNoZWNrIikpOworIAorICAgICAgIHdoaWxlICh0b3AgPD0gcmVhbF90b3AKKy0JICAg ICAmJiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnRvcCwgbmFtZSkpCisrCSAgICAgJiYg U1lNQk9MX01BVENIRVNfU0VBUkNIX05BTUUgKCp0b3AsIHNlYXJjaF9uYW1lKSkKKyAJeworIAkg IGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZTUJPTF9MQU5HVUFHRSAoKnRvcCksCisgCQkJ CSAgICAgU1lNQk9MX0RPTUFJTiAoKnRvcCksIGRvbWFpbikpCistCSAgICByZXR1cm4gKCp0b3Ap OworKwkgICAgeworKwkgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCSAgICAgIHJldHVy biAoKnRvcCk7CisrCSAgICB9CisgCSAgdG9wKys7CisgCX0KKyAgICAgfQorQEAgLTU5NSwxMSAr NjU4LDE1IEBAIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3kKKyAJewor IAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW0pLAor IAkJCQkgICAgIFNZTUJPTF9ET01BSU4gKCpwc3ltKSwgZG9tYWluKQorLQkgICAgICAmJiBTWU1C T0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnBzeW0sIG5hbWUpKQorLQkgICAgcmV0dXJuICgqcHN5 bSk7CisrCSAgICAgICYmIFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqcHN5bSwgc2VhcmNo X25hbWUpKQorKwkgICAgeworKwkgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCSAgICAg IHJldHVybiAoKnBzeW0pOworKwkgICAgfQorIAl9CisgICAgIH0KKyAKKysgIGRvX2NsZWFudXBz IChjbGVhbnVwKTsKKyAgIHJldHVybiAoTlVMTCk7CisgfQorIAorQEAgLTkxMSw3ICs5NzgsOCBA QCBkdW1wX3BzeW10YWJzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsCisgICAgYnkgbWF0Y2hp bmcgRlVOQ19OQU1FLiAgTWFrZSBzdXJlIHdlIHJlYWQgdGhhdCBzeW1ib2wgdGFibGUgaW4uICAq LworIAorIHN0YXRpYyB2b2lkCistcmVhZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKKytyZWFkX3N5bXRhYnNfZm9y X2Z1bmN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZnVuY19uYW1l LAorKwkJCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisgeworICAgc3RydWN0IHBhcnRpYWxf c3ltdGFiICpwczsKKyAKK0BAIC05MjAsOSArOTg4LDkgQEAgcmVhZF9zeW10YWJzX2Zvcl9mdW5j dGlvbiAoc3RydWN0IG9iamZpbAorICAgICBpZiAocHMtPnJlYWRpbikKKyAgICAgICBjb250aW51 ZTsKKyAKKy0gICAgaWYgKChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIDEs IFZBUl9ET01BSU4pCisrICAgIGlmICgobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19u YW1lLCAxLCBWQVJfRE9NQUlOLCBsYW5ndWFnZSkKKyAJICE9IE5VTEwpCistCXx8IChsb29rdXBf cGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIDAsIFZBUl9ET01BSU4pCisrCXx8IChsb29r dXBfcGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIDAsIFZBUl9ET01BSU4sIGxhbmd1YWdl KQorIAkgICAgIT0gTlVMTCkpCisgICAgICAgcHN5bXRhYl90b19zeW10YWIgKHBzKTsKKyAgIH0K K0BAIC0xMDQyLDEzICsxMTEwLDE0IEBAIHBzeW10YWJfdG9fZnVsbG5hbWUgKHN0cnVjdCBwYXJ0 aWFsX3N5bXQKKyB9CisgCisgc3RhdGljIGNvbnN0IGNoYXIgKgorLWZpbmRfc3ltYm9sX2ZpbGVf ZnJvbV9wYXJ0aWFsIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSkK KytmaW5kX3N5bWJvbF9maWxlX2Zyb21fcGFydGlhbCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IGNoYXIgKm5hbWUsCisrCQkJICAgICAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisg eworICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3Q7CisgCisgICBBTExfT0JKRklMRV9QU1lN VEFCUyAob2JqZmlsZSwgcHN0KQorICAgICB7CistICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5 bWJvbCAocHN0LCBuYW1lLCAxLCBWQVJfRE9NQUlOKSkKKysgICAgICBpZiAobG9va3VwX3BhcnRp YWxfc3ltYm9sIChwc3QsIG5hbWUsIDEsIFZBUl9ET01BSU4sIGxhbmd1YWdlKSkKKyAJcmV0dXJu IHBzdC0+ZmlsZW5hbWU7CisgICAgIH0KKyAgIHJldHVybiBOVUxMOworSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAyMDYvZ2RiL3N5bWZpbGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIuNTAuMjAx MTAyMDYub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMDItMDYgMjM6MTI6MTYuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvc3ltZmlsZS5oCTIwMTEtMDItMDYgMjM6 MTI6MjIuMDAwMDAwMDAwICswMTAwCitAQCAtMTY3LDE0ICsxNjcsMTUgQEAgc3RydWN0IHF1aWNr X3N5bWJvbF9mdW5jdGlvbnMKKyAgIC8qIENoZWNrIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGlzIGRl ZmluZWQgaW4gYSAicGFydGlhbCIgc3ltYm9sIHRhYmxlCisgICAgICBvZiBPQkpGSUxFLiAgS0lO RCBzaG91bGQgYmUgZWl0aGVyIEdMT0JBTF9CTE9DSyBvciBTVEFUSUNfQkxPQ0ssCisgICAgICBk ZXBlbmRpbmcgb24gd2hldGhlciB3ZSB3YW50IHRvIHNlYXJjaCBnbG9iYWwgc3ltYm9scyBvciBz dGF0aWMKKy0gICAgIHN5bWJvbHMuICBOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBzeW1ib2wgdG8g bG9vayBmb3IuICBET01BSU4KKy0gICAgIGluZGljYXRlcyB3aGF0IHNvcnQgb2Ygc3ltYm9sIHRv IHNlYXJjaCBmb3IuCisrICAgICBzeW1ib2xzLiAgTkFNRSAodmFsaWQgaW4gTEFOR1VBR0UpIGlz IHRoZSBuYW1lIG9mIHRoZSBzeW1ib2wgdG8gbG9vayBmb3IuCisrICAgICBET01BSU4gaW5kaWNh dGVzIHdoYXQgc29ydCBvZiBzeW1ib2wgdG8gc2VhcmNoIGZvci4KKyAKKyAgICAgIFJldHVybnMg dGhlIG5ld2x5LWV4cGFuZGVkIHN5bWJvbCB0YWJsZSBpbiB3aGljaCB0aGUgc3ltYm9sIGlzCisg ICAgICBkZWZpbmVkLCBvciBOVUxMIGlmIG5vIHN1Y2ggc3ltYm9sIHRhYmxlIGV4aXN0cy4gICov CisgICBzdHJ1Y3Qgc3ltdGFiICooKmxvb2t1cF9zeW1ib2wpIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKKyAJCQkJICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCSAgIGRvbWFp bl9lbnVtIGRvbWFpbik7CisrCQkJCSAgIGRvbWFpbl9lbnVtIGRvbWFpbiwKKysJCQkJICAgZW51 bSBsYW5ndWFnZSBsYW5ndWFnZSk7CisgCisgICAvKiBUaGlzIGlzIGNhbGxlZCB0byBleHBhbmQg c3ltYm9sIHRhYmxlcyBiZWZvcmUgbG9va2luZyB1cCBhCisgICAgICBzeW1ib2wuICBBIGJhY2tl bmQgY2FuIGNob29zZSB0byBpbXBsZW1lbnQgdGhpcyBhbmQgdGhlbiBoYXZlIGl0cworQEAgLTIw MCwxMCArMjAxLDExIEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCisgCQkgICAgc3Ry dWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMsCisgCQkgICAgc3RydWN0IHNlY3Rpb25f b2Zmc2V0cyAqZGVsdGEpOworIAorLSAgLyogRmluZCBhbGwgdGhlIHN5bWJvbHMgaW4gT0JKRklM RSBuYW1lZCBGVU5DX05BTUUsIGFuZCBlbnN1cmUgdGhhdAorLSAgICAgdGhlIGNvcnJlc3BvbmRp bmcgc3ltYm9sIHRhYmxlcyBhcmUgbG9hZGVkLiAgKi8KKysgIC8qIEZpbmQgYWxsIHRoZSBzeW1i b2xzIGluIE9CSkZJTEUgbmFtZWQgRlVOQ19OQU1FICh2YWxpZCBpbiBMQU5HVUFHRSksCisrICAg ICBhbmQgZW5zdXJlIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgc3ltYm9sIHRhYmxlcyBhcmUgbG9h ZGVkLiAgKi8KKyAgIHZvaWQgKCpleHBhbmRfc3ltdGFic19mb3JfZnVuY3Rpb24pIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJICAgICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSk7Cisr CQkJCSAgICAgICBjb25zdCBjaGFyICpmdW5jX25hbWUsCisrCQkJCSAgICAgICBlbnVtIGxhbmd1 YWdlIGxhbmd1YWdlKTsKKyAKKyAgIC8qIFJlYWQgYWxsIHN5bWJvbCB0YWJsZXMgYXNzb2NpYXRl ZCB3aXRoIE9CSkZJTEUuICAqLworICAgdm9pZCAoKmV4cGFuZF9hbGxfc3ltdGFicykgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKTsKK0BAIC0yMTcsOCArMjE5LDEwIEBAIHN0cnVjdCBxdWlja19z eW1ib2xfZnVuY3Rpb25zCisgCQkJCQljb25zdCBjaGFyICpmaWxlbmFtZSk7CisgCisgICAvKiBS ZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgZmlsZSBob2xkaW5nIHRoZSBzeW1ib2wgaW4gT0JK RklMRQorLSAgICAgbmFtZWQgTkFNRS4gIElmIG5vIHN1Y2ggc3ltYm9sIGV4aXN0cyBpbiBPQkpG SUxFLCByZXR1cm4gTlVMTC4gICovCistICBjb25zdCBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUp IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7CisrICAgICBuYW1l ZCBOQU1FICh2YWxpZCBpbiBMQU5HVUFHRSkuICBJZiBubyBzdWNoIHN5bWJvbCBleGlzdHMgaW4g T0JKRklMRSwKKysgICAgIHJldHVybiBOVUxMLiAgKi8KKysgIGNvbnN0IGNoYXIgKigqZmluZF9z eW1ib2xfZmlsZSkgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAor KwkJCQkgICBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlKTsKKyAKKyAgIC8qIEZpbmQgZ2xvYmFsIG9y IHN0YXRpYyBzeW1ib2xzIGluIGFsbCB0YWJsZXMgdGhhdCBhcmUgaW4gTkFNRVNQQUNFIAorICAg ICAgYW5kIGZvciB3aGljaCBNQVRDSCAoc3ltYm9sIG5hbWUsIE5BTUUpID09IDAsIHBhc3Npbmcg ZWFjaCB0byAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9zeW10YWIuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjIuNTAuMjAxMTAyMDYub3JpZy9nZGIvc3ltdGFiLmMJMjAxMS0wMi0w NiAyMzoxMjoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9z eW10YWIuYwkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAorQEAgLTEzODAsNyAr MTM4MCw4IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3F1aWNrIChzdHJ1Y3Qgb2JqZmlsZSAKKyAKKyAg IGlmICghb2JqZmlsZS0+c2YpCisgICAgIHJldHVybiBOVUxMOworLSAgc3ltdGFiID0gb2JqZmls ZS0+c2YtPnFmLT5sb29rdXBfc3ltYm9sIChvYmpmaWxlLCBraW5kLCBuYW1lLCBkb21haW4pOwor KyAgc3ltdGFiID0gb2JqZmlsZS0+c2YtPnFmLT5sb29rdXBfc3ltYm9sIChvYmpmaWxlLCBraW5k LCBuYW1lLCBkb21haW4sCisrCQkJCQkgICBjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSk7 CisgICBpZiAoIXN5bXRhYikKKyAgICAgcmV0dXJuIE5VTEw7CisgCitAQCAtMTU1NCw3ICsxNTU1 LDggQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGVfcXVpY2sgKHN0cgorIAorICAgaWYg KCFvYmpmaWxlLT5zZikKKyAgICAgcmV0dXJuIE5VTEw7CistICBzeW10YWIgPSBvYmpmaWxlLT5z Zi0+cWYtPmxvb2t1cF9zeW1ib2wgKG9iamZpbGUsIGtpbmQsIG5hbWUsIFNUUlVDVF9ET01BSU4p OworKyAgc3ltdGFiID0gb2JqZmlsZS0+c2YtPnFmLT5sb29rdXBfc3ltYm9sIChvYmpmaWxlLCBr aW5kLCBuYW1lLCBTVFJVQ1RfRE9NQUlOLAorKwkJCQkJICAgY3VycmVudF9sYW5ndWFnZS0+bGFf bGFuZ3VhZ2UpOworICAgaWYgKCFzeW10YWIpCisgICAgIHJldHVybiBOVUxMOworIAorQEAgLTE2 ODYsNyArMTY4OCw4IEBAIGZpbmRfbWFpbl9maWxlbmFtZSAodm9pZCkKKyAKKyAgICAgaWYgKCFv YmpmaWxlLT5zZikKKyAgICAgICBjb250aW51ZTsKKy0gICAgcmVzdWx0ID0gb2JqZmlsZS0+c2Yt PnFmLT5maW5kX3N5bWJvbF9maWxlIChvYmpmaWxlLCBuYW1lKTsKKysgICAgcmVzdWx0ID0gb2Jq ZmlsZS0+c2YtPnFmLT5maW5kX3N5bWJvbF9maWxlIChvYmpmaWxlLCBuYW1lLAorKwkJCQkJCWN1 cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlKTsKKyAgICAgaWYgKHJlc3VsdCkKKyAgICAgICBy ZXR1cm4gcmVzdWx0OworICAgfQorSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvcHIxMTczNC0xLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi41MC4yMDExMDIwNi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTEuY2MJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAw MDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMzAgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworKyAgIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBh ZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgorKyAgIGJ1Zy1nZGJAZ251Lm9yZyAgKi8KKysKKysj aW5jbHVkZSAicHIxMTczNC5oIgorKworK2ludAorK21haW4gKCkKKyt7CisrICBwcjExNzM0ICpw ID0gbmV3IHByMTE3MzQ7CisrICBwLT5mb28gKCk7CisrICByZXR1cm4gMDsKKyt9CisrCitJbmRl eDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTIuY2MK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3 MzQtMi5jYwkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwy NyBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CisrCisrICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrICAgUGxlYXNlIGVt YWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86 CisrICAgYnVnLWdkYkBnbnUub3JnICAqLworKworKyNpbmNsdWRlICJwcjExNzM0LmgiCisrCisr dm9pZAorK3ByMTE3MzQ6OmZvbyh2b2lkKQorK3sKKyt9CisrCitJbmRleDogZ2RiLTcuMi41MC4y MDExMDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTMuY2MKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQtMy5jYwkyMDExLTAy LTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwyNyBAQAorKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrICAgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBj b21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86CisrICAgYnVnLWdkYkBn bnUub3JnICAqLworKworKyNpbmNsdWRlICJwcjExNzM0LmgiCisrCisrdm9pZAorK3ByMTE3MzQ6 OmZvbyAoaW50IGEpCisreworK30KKysKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQtNC5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMTAy MDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTczNC00LmNjCTIwMTEtMDItMDYgMjM6MTI6MjIu MDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDI3IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKysgICBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQv b3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKKysgICBidWctZ2RiQGdudS5vcmcgICovCisr CisrI2luY2x1ZGUgInByMTE3MzQuaCIKKysKKyt2b2lkCisrcHIxMTczNDo6Zm9vIChjaGFyICph KQorK3sKKyt9CisrCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9wcjExNzM0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvcHIxMTczNC5leHAJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAx MDAKK0BAIC0wLDAgKzEsNTUgQEAKKysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKyMKKysjIENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQsIG9yaWdpbmFsbHkg d3JpdHRlbiBieSBLZWl0aCBTZWl0ei4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKworKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCisrCisraWYg eyBbc2tpcF9jcGx1c190ZXN0c10gfSB7IGNvbnRpbnVlIH0KKysKKytzZXQgdGVzdGZpbGUgInBy MTE3MzQiCisrc2V0IGNsYXNzICR0ZXN0ZmlsZQorKworK3NldCBzcmNmaWxlcyB7fQorK2ZvciB7 c2V0IGkgMX0geyRpIDwgNX0ge2luY3IgaX0geworKyAgICBsYXBwZW5kIHNyY2ZpbGVzICR0ZXN0 ZmlsZS0kaS5jYworK30KKysKKytwcmVwYXJlX2Zvcl90ZXN0aW5nIHByMTE3MzQgJHRlc3RmaWxl ICRzcmNmaWxlcyB7YysrIGRlYnVnfQorKworK2lmIHshW3J1bnRvX21haW5dfSB7CisrICAgIHBl cnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQiCisrICAgIGNvbnRpbnVlCisrfQorKwor KyMgQW4gYXJyYXkgaG9sZGluZyB0aGUgb3ZlcmxvYWQgdHlwZXMgZm9yIHRoZSBtZXRob2QgcHIx MTczNDo6Zm9vLiAgVGhlCisrIyBmaXJzdCBlbGVtZW50IGlzIHRoZSBvdmVybG9hZGVkIG1ldGhv ZCBwYXJhbWV0ZXIuICBUaGUgc2Vjb25kIGVsZW1lbnQKKysjIGlzIHRoZSBleHBlY3RlZCBzb3Vy Y2UgZmlsZSBudW1iZXIsIGUuZy4gInByMTE3MzQtPy5jYyIuCisrYXJyYXkgc2V0IHRlc3RzIHsK KysgICAgImNoYXIqIiAgNAorKyAgICAiaW50IiAgICAzCisrICAgICIiICAgICAgIDIKKyt9Cisr CisrIyBUZXN0IGVhY2ggb3ZlcmxvYWQgaW5zdGFuY2UgdHdpY2U6IG9uY2UgcXVvdGVkLCBvbmNl IHVucXVvdGVkCisrZm9yZWFjaCBvdmxkIFthcnJheSBuYW1lcyB0ZXN0c10geworKyAgICBzZXQg bWV0aG9kICIke2NsYXNzfTo6Zm9vXCgkb3ZsZFwpIgorKyAgICBzZXQgcmVzdWx0ICJCcmVha3Bv aW50IChcWzAtOVxdKS4qZmlsZSAuKi8kY2xhc3MtJHRlc3RzKCRvdmxkKS4qIgorKyAgICBnZGJf dGVzdCAiYnJlYWsgJG1ldGhvZCIgJHJlc3VsdAorKyAgICBnZGJfdGVzdCAiYnJlYWsgJyRtZXRo b2QnIiAkcmVzdWx0CisrfQorKworK2dkYl9leGl0CisrcmV0dXJuIDAKK0luZGV4OiBnZGItNy4y LjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQuaAorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdk Yi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTczNC5oCTIwMTEtMDIt MDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDI4IEBACisrLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmln aHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysgICBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNv bW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKKysgICBidWctZ2RiQGdu dS5vcmcgICovCisrCisrY2xhc3MgcHIxMTczNAorK3sKKysgcHVibGljOgorKyAgdm9pZCBmb28g KCk7CisrICB2b2lkIGZvbyAoaW50KTsKKysgIHZvaWQgZm9vIChjaGFyICopOworK307CisrCgpk aWZmIC0tZ2l0IGEvZ2RiLXBoeXNuYW1lLXByMTE3MzQtMm9mMi5wYXRjaCBiL2dkYi1waHlzbmFt ZS1wcjExNzM0LTJvZjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YjNlZWM5ZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1waHlzbmFtZS1wcjExNzM0LTJvZjIucGF0 Y2gKQEAgLTAsMCArMSwxOCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTEtMDEvbXNnMDA0NjAuaHRtbAorCitJbmRleDogZ2RiLTcuMi9nZGIvbGluZXNwZWMuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvbGluZXNwZWMuYwkyMDExLTAyLTAzIDIy OjU5OjQ2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIvZ2RiL2xpbmVzcGVjLmMJMjAxMS0w Mi0wMyAyMzowMzoyOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjMwLDcgKzEyMzAsMTAgQEAgZGVj b2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgorICAgICB7CisgICAgICAgY2hh ciAqZW5kID0gc2tpcF9xdW90ZWQgKHNhdmVkX2FyZyk7CisgICAgICAgbWVtbW92ZSAoc2F2ZWRf YXJnLCBzYXZlZF9hcmcgKyAxLCBlbmQgLSBzYXZlZF9hcmcpOworLSAgICAgIG1lbW1vdmUgKGVu ZCAtIDIsIGVuZCwgc3RybGVuIChzYXZlZF9hcmcpICsgMSk7CisrICAgICAgaWYgKCZlbmRbLTJd ID49IHNhdmVkX2FyZyAmJiBlbmRbLTJdID09ICdcJycpCisrCW1lbW1vdmUgKGVuZCAtIDIsIGVu ZCwgc3RybGVuIChlbmQpICsgMSk7CisrICAgICAgZWxzZQorKwltZW1tb3ZlIChlbmQgLSAxLCBl bmQsIHN0cmxlbiAoZW5kKSArIDEpOworICAgICB9CisgICAgICAgCisgICAvKiBGaXJzdCBjaGVj ayBmb3IgImdsb2JhbCIgbmFtZXNwYWNlIHNwZWNpZmljYXRpb24sIG9mIHRoZSBmb3JtCgpkaWZm IC0tZ2l0IGEvZ2RiLXBoeXNuYW1lLXByMTIyNzMucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIxMjI3 My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2VjNjJiCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLXBoeXNuYW1lLXByMTIyNzMucGF0Y2gKQEAgLTAsMCArMSwyMDcg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTEyL21zZzAwMjY0 Lmh0bWwKKworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL2xpbmVzcGVjLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL2xpbmVzcGVjLmMJMjAxMS0w Mi0wNiAyMzowNjoyNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dk Yi9saW5lc3BlYy5jCTIwMTEtMDItMDYgMjM6MDg6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMTA1 Nyw2ICsxMDU3LDEwIEBAIGxvY2F0ZV9maXJzdF9oYWxmIChjaGFyICoqYXJncHRyLCBpbnQgKmkK KyAJICAgIGVycm9yIChfKCJtYWxmb3JtZWQgdGVtcGxhdGUgc3BlY2lmaWNhdGlvbiBpbiBjb21t YW5kIikpOworIAkgIHAgPSB0ZW1wX2VuZDsKKyAJfQorKworKyAgICAgIGlmIChwWzBdID09ICco JykKKysJcCA9IGZpbmRfbWV0aG9kX292ZXJsb2FkX2VuZCAocCk7CisrCisgICAgICAgLyogQ2hl Y2sgZm9yIGEgY29sb24gYW5kIGEgcGx1cyBvciBtaW51cyBhbmQgYSBbICh3aGljaAorICAgICAg ICAgIGluZGljYXRlcyBhbiBPYmplY3RpdmUtQyBtZXRob2QpLiAgKi8KKyAgICAgICBpZiAoaXNf b2JqY19tZXRob2RfZm9ybWF0IChwKSkKK0BAIC0xMjcyLDggKzEyNzYsMTAgQEAgZGVjb2RlX2Nv bXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgorICAgICAgICAgZmluZF9tZXRob2QuCisg CisgICAgICAyKSBBQUE6OmluQSBpc24ndCB0aGUgbmFtZSBvZiBhIGNsYXNzLiAgSW4gdGhhdCBj YXNlLCBlaXRoZXIgdGhlCistICAgICAgICB1c2VyIG1hZGUgYSB0eXBvIG9yIEFBQTo6aW5BIGlz IHRoZSBuYW1lIG9mIGEgbmFtZXNwYWNlLgorLSAgICAgICAgRWl0aGVyIHdheSwgd2UganVzdCBs b29rIHVwIEFBQTo6aW5BOjpmdW4gd2l0aCBsb29rdXBfc3ltYm9sLgorKyAgICAgICAgdXNlciBt YWRlIGEgdHlwbywgQUFBOjppbkEgaXMgdGhlIG5hbWUgb2YgYSBuYW1lc3BhY2UsIG9yIGl0IGlz CisrICAgICAgICB0aGUgbmFtZSBvZiBhIG1pbmltYWwgc3ltYm9sLgorKyAgICAgICAgV2UganVz dCBsb29rIHVwIEFBQTo6aW5BOjpmdW4gd2l0aCBsb29rdXBfc3ltYm9sLiAgSWYgdGhhdCBmYWls cywKKysgICAgICAgIHRyeSBsb29rdXBfbWluaW1hbF9zeW1ib2wuCisgCisgICAgICBUaHVzLCBv dXIgZmlyc3QgdGFzayBpcyB0byBmaW5kIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBsYXN0IHNldCBv ZgorICAgICAgZG91YmxlLWNvbG9ucyBhbmQgZmlndXJlIG91dCBpZiBpdCdzIHRoZSBuYW1lIG9m IGEgY2xhc3MuICBTbyB3ZQorQEAgLTEyOTQsNiArMTMwMCw4IEBAIGRlY29kZV9jb21wb3VuZCAo Y2hhciAqKmFyZ3B0ciwgaW50IGZ1bmYKKyAKKyAgIHdoaWxlICgxKQorICAgICB7CisrICAgICAg c3RhdGljIGNoYXIgKmJyZWFrX2NoYXJhY3RlcnMgPSAiIFx0XCcoIjsKKysKKyAgICAgICAvKiBN b3ZlIHBvaW50ZXIgdXAgdG8gbmV4dCBwb3NzaWJsZSBjbGFzcy9uYW1lc3BhY2UgdG9rZW4uICAq LworIAorICAgICAgIHAgPSBwMiArIDE7CS8qIFJlc3RhcnQgd2l0aCBvbGQgdmFsdWUgKzEuICAq LworQEAgLTEzMDQsOCArMTMxMiw3IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwg aW50IGZ1bmYKKyAgICAgICAvKiBQQVNTMjogcDItPiI6OmZ1biIsIHAtPiI6ZnVuIiAqLworIAor ICAgICAgIC8qIE1vdmUgcG9pbnRlciBhaGVhZCB0byBuZXh0IGRvdWJsZS1jb2xvbi4gICovCist ICAgICAgd2hpbGUgKCpwICYmIChwWzBdICE9ICcgJykgJiYgKHBbMF0gIT0gJ1x0JykgJiYgKHBb MF0gIT0gJ1wnJykKKy0JICAgICAmJiAoKnAgIT0gJygnKSkKKysgICAgICB3aGlsZSAoKnAgJiYg c3RyY2hyIChicmVha19jaGFyYWN0ZXJzLCAqcCkgPT0gTlVMTCkKKyAJeworIAkgIGlmIChjdXJy ZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKKyAJICAgIHAgKz0g Y3BfdmFsaWRhdGVfb3BlcmF0b3IgKHApOworQEAgLTEzMjksOSArMTMzNiwxMiBAQCBkZWNvZGVf Y29tcG91bmQgKGNoYXIgKiphcmdwdHIsIGludCBmdW5mCisgCSAgZWxzZSBpZiAoKHBbMF0gPT0g JzonKSAmJiAocFsxXSA9PSAnOicpKQorIAkgICAgYnJlYWs7CS8qIEZvdW5kIGRvdWJsZS1jb2xv bi4gICovCisgCSAgZWxzZQorLQkgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAgZ2V0dGluZyBoZXJl LCB1bnRpbCBwLT4iIiwgYXQgd2hpY2ggcG9pbnQKKy0JICAgICAgIHdlIGV4aXQgdGhpcyBsb29w LiAgKi8KKy0JICAgIHArKzsKKysJICAgIHsKKysJICAgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAg Z2V0dGluZyBoZXJlLCB1bnRpbCBQIHBvaW50cyB0byBvbmUgb2YgdGhlCisrCQkgYnJlYWsgY2hh cmFjdGVycywgYXQgd2hpY2ggcG9pbnQgd2UgZXhpdCB0aGlzIGxvb3AuICAqLworKwkgICAgICBp ZiAoc3RyY2hyIChicmVha19jaGFyYWN0ZXJzLCAqcCkgPT0gTlVMTCkKKysJCXArKzsKKysJICAg IH0KKyAJfQorIAorICAgICAgIGlmICgqcCAhPSAnOicpCitAQCAtMTM0MCw3ICsxMzUwLDcgQEAg ZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgorIAkJCSAgIHVuc3VjY2Vz c2Z1bGx5IGFsbCB0aGUgY29tcG9uZW50cyBvZiB0aGUKKyAJCQkgICBzdHJpbmcsIGFuZCBwLT4i IihQQVNTMikuICAqLworIAorLSAgICAgIC8qIFdlIGdldCBoZXJlIGlmIHAgcG9pbnRzIHRvICcg JywgJ1x0JywgJ1wnJywgIjo6IiBvciAiIihpLmUKKysgICAgICAvKiBXZSBnZXQgaGVyZSBpZiBw IHBvaW50cyB0byBvbmUgb2YgdGhlIGJyZWFrIGNoYXJhY3RlcnMgb3IgIiIoaS5lCisgCSBzdHJp bmcgZW5kZWQpLiAgKi8KKyAgICAgICAvKiBTYXZlIHJlc3RhcnQgZm9yIG5leHQgdGltZSBhcm91 bmQuICAqLworICAgICAgIHAyID0gcDsKK0BAIC0xNDkxLDYgKzE1MDEsMTggQEAgZGVjb2RlX2Nv bXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgorICAgLyogV2UgY291bGRuJ3QgZmluZCBh IGNsYXNzLCBzbyB3ZSdyZSBpbiBjYXNlIDIgYWJvdmUuICBXZSBjaGVjayB0aGUKKyAgICAgIGVu dGlyZSBuYW1lIGFzIGEgc3ltYm9sIGluc3RlYWQuICAqLworIAorKyAgaWYgKGN1cnJlbnRfbGFu Z3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCisrICAgICAgfHwgY3VycmVudF9s YW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkKKysgICAgeworKyAgICAgIGNo YXIgKnBhcmVuID0gc3RyY2hyIChwLCAnKCcpOworKyAgICAgIGlmIChwYXJlbiAhPSBOVUxMKQor KwlwID0gZmluZF9tZXRob2Rfb3ZlcmxvYWRfZW5kIChwYXJlbik7CisrCisrICAgICAgLyogTWFr ZSBzdXJlIHdlIGtlZXAgaW1wb3J0YW50IGtld29yZHMgbGlrZSAiY29uc3QiICovCisrICAgICAg aWYgKHN0cm5jbXAgKHAsICIgY29uc3QiLCA2KSA9PSAwKQorKwlwICs9IDY7CisrICAgIH0KKysK KyAgIGNvcHkgPSAoY2hhciAqKSBhbGxvY2EgKHAgLSBzYXZlZF9hcmcyICsgMSk7CisgICBtZW1j cHkgKGNvcHksIHNhdmVkX2FyZzIsIHAgLSBzYXZlZF9hcmcyKTsKKyAgIC8qIE5vdGU6IGlmIGlz X3F1b3RlZCBzaG91bGQgYmUgdHJ1ZSwgd2Ugc251ZmYgb3V0IHF1b3RlIGhlcmUKK0BAIC0xNTAz LDkgKzE1MjUsMTggQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgor ICAgc3ltID0gbG9va3VwX3N5bWJvbCAoY29weSwgMCwgVkFSX0RPTUFJTiwgMCk7CisgICBpZiAo c3ltKQorICAgICByZXR1cm4gc3ltYm9sX2ZvdW5kIChmdW5maXJzdGxpbmUsIGNhbm9uaWNhbCwg Y29weSwgc3ltLCBOVUxMKTsKKysgIGVsc2UKKysgICAgeworKyAgICAgIHN0cnVjdCBtaW5pbWFs X3N5bWJvbCAqbXN5bTsKKysKKysgICAgICAvKiBDb3VsZG4ndCBmaW5kIGFueSBpbnRlcnByZXRh dGlvbiBhcyBjbGFzc2VzL25hbWVzcGFjZXMuICBBcyBhIGxhc3QKKysJIHJlc29ydCwgdHJ5IHRo ZSBtaW5pbWFsIHN5bWJvbCB0YWJsZXMuICAqLworKyAgICAgIG1zeW0gPSBsb29rdXBfbWluaW1h bF9zeW1ib2wgKGNvcHksIE5VTEwsIE5VTEwpOworKyAgICAgIGlmIChtc3ltICE9IE5VTEwpCisr CXJldHVybiBtaW5zeW1fZm91bmQgKGZ1bmZpcnN0bGluZSwgbXN5bSk7CisrICAgIH0gICAgCisg CistICAvKiBDb3VsZG4ndCBmaW5kIGFueSBpbnRlcnByZXRhdGlvbiBhcyBjbGFzc2VzL25hbWVz cGFjZXMsIHNvIGdpdmUKKy0gICAgIHVwLiAgVGhlIHF1b3RlcyBhcmUgaW1wb3J0YW50IGlmIGNv cHkgaXMgZW1wdHkuICAqLworKyAgLyogQ291bGRuJ3QgZmluZCBhIG1pbmltYWwgc3ltYm9sLCBl aXRoZXIsIHNvIGdpdmUgdXAuICAqLworICAgaWYgKG5vdF9mb3VuZF9wdHIpCisgICAgICpub3Rf Zm91bmRfcHRyID0gMTsKKyAgIGNwbHVzcGx1c19lcnJvciAodGhlX3JlYWxfc2F2ZWRfYXJnLAor SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5j YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIx MjI3My5jYwkyMDExLTAyLTA2IDIzOjA3OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwz NyBAQAorKy8qIFRoaXMgdGVzdCBjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgorKworKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKyt0ZW1wbGF0 ZSA8dHlwZW5hbWUgVD4KKytjbGFzcyBHREIKKyt7CisrIHB1YmxpYzoKKysgICBzdGF0aWMgaW50 IHNpbXBsZSAodm9pZCkgeyByZXR1cm4gMDsgfQorKyAgIHN0YXRpYyBpbnQgaGFyZGVyIChUIGEp IHsgcmV0dXJuIDE7IH0KKysgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KKysgICBzdGF0aWMgWCBl dmVuX2hhcmRlciAoVCBhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxYPiAoYSk7IH0KKysgICBpbnQg b3BlcmF0b3IgPT0gKEdEQiBjb25zdCYgb3RoZXIpCisrICAgeyByZXR1cm4gMTsgfQorK307Cisr CisraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgICBHREI8aW50PiBhLCBi OworKyAgIGlmIChhID09IGIpCisrICAgICByZXR1cm4gR0RCPGNoYXI+OjpoYXJkZXIoJ2EnKSAr IEdEQjxpbnQ+OjpoYXJkZXIoMykKKysJKyBHREI8Y2hhcj46OmV2ZW5faGFyZGVyPGludD4gKCdh Jyk7CisrICAgcmV0dXJuIEdEQjxpbnQ+OjpzaW1wbGUgKCk7CisrfQorSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5leHAKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBn ZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIyNzMuZXhwCTIwMTEt MDItMDYgMjM6MDc6MTkuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDQ2IEBACisrIyBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBDb250cmli dXRlZCBieSBSZWQgSGF0LCBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgS2VpdGggU2VpdHouCisrIwor KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMK KysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBnZGIgdGVzdHN1aXRlLgorKworK2lmIHtbc2tpcF9jcGx1c190ZXN0c119IHsgY29udGlu dWUgfQorKworK3NldCB0ZXN0ZmlsZSAicHIxMjI3MyIKKysjIERvIE5PVCBjb21waWxlIHdpdGgg ZGVidWcgZmxhZy4KKytwcmVwYXJlX2Zvcl90ZXN0aW5nIHByMTIyNzMgJHRlc3RmaWxlICR0ZXN0 ZmlsZS5jYyB7YysrfQorKworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1YWdlIGMrKyIK KysKKysjIEEgbGlzdCBvZiBtaW5pbWFsIHN5bWJvbCBuYW1lcyB0byBjaGVjay4KKysjIE5vdGUg dGhhdCBHREI8Y2hhcj46OmV2ZW5faGFyZGVyPGludD4oY2hhcikgaXMgcXVvdGVkIGFuZCBpbmNs dWRlcworKyMgdGhlIHJldHVybiB0eXBlLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGlz IGlzIHRoZSBkZW1hbmdsZWQgbmFtZQorKyMgb2YgdGhlIG1pbmltYWwgc3ltYm9sLgorK3NldCBt aW5fc3ltcyBbbGlzdCBcCisrCQkgICJHREI8aW50Pjo6b3BlcmF0b3IgPT0iIFwKKysJCSAgIkdE QjxpbnQ+OjpvcGVyYXRvcj09KEdEQjxpbnQ+IGNvbnN0JikiIFwKKysJCSAgIkdEQjxjaGFyPjo6 aGFyZGVyKGNoYXIpIiBcCisrCQkgICJHREI8aW50Pjo6aGFyZGVyKGludCkiIFwKKysJCSAgeyJp bnQgR0RCPGNoYXI+OjpldmVuX2hhcmRlcjxpbnQ+KGNoYXIpIn0gXAorKwkJICAiR0RCPGludD46 OnNpbXBsZSgpIl0KKysKKytmb3JlYWNoIHN5bSAkbWluX3N5bXMgeworKyAgICBpZiB7W2dkYl9i cmVha3BvaW50ICRzeW1dfSB7CisrCXBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCAkc3ltIgor KyAgICB9CisrfQorKworK2dkYl9leGl0CgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3Bl YwppbmRleCBmY2Y2MGYzLi4zYTViMjhhIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIu c3BlYwpAQCAtMjcsNyArMjcsNyBAQCBWZXJzaW9uOiA3LjIuNTAuMjAxMTAyMDYKIAogIyBUaGUg cmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQg aXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1 bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNl OiAxNyV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0lez9kaXN0fQorUmVsZWFzZTogMTglez9f d2l0aF91cHN0cmVhbToudXBzdHJlYW19JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBH UEx2Mysgd2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlv bnMgYW5kIEdQTCsgYW5kIExHUEx2MisgYW5kIEdGREwgYW5kIEJTRCBhbmQgUHVibGljIERvbWFp bgogR3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtNTUyLDYgKzU1MiwxMSBAQCBQYXRj aDU1NjogZ2RiLWdjYzQ2LXN0ZGFyZy1wcm9sb2d1ZS5wYXRjaAogIyA9cHVzaAogUGF0Y2g1NTc6 IGdkYi1weXRob24tbmV3YmFja3RyYWNlLnBhdGNoCiAKKyMgRml4IHJlZ3Jlc3Npb25zIG9uIEMr KyBuYW1lcyByZXNvbHZpbmcgKFBSIDExNzM0LCBQUiAxMjI3MywgS2VpdGggU2VpdHopLgorUGF0 Y2g1NjU6IGdkYi1waHlzbmFtZS1wcjExNzM0LTFvZjIucGF0Y2gKK1BhdGNoNTY2OiBnZGItcGh5 c25hbWUtcHIxMTczNC0yb2YyLnBhdGNoCitQYXRjaDU2NzogZ2RiLXBoeXNuYW1lLXByMTIyNzMu cGF0Y2gKKwogQnVpbGRSZXF1aXJlczogbmN1cnNlcy1kZXZlbCV7P19pc2F9IHRleGluZm8gZ2V0 dGV4dCBmbGV4IGJpc29uIGV4cGF0LWRldmVsJXs/X2lzYX0KIFJlcXVpcmVzOiByZWFkbGluZSV7 P19pc2F9CiBCdWlsZFJlcXVpcmVzOiByZWFkbGluZS1kZXZlbCV7P19pc2F9CkBAIC04MDUsNiAr ODEwLDkgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBn ZGIvcC1leHAuYwogJXBhdGNoNTU1IC1wMQogJXBhdGNoNTU2IC1wMQogJXBhdGNoNTU3IC1wMQor JXBhdGNoNTY1IC1wMQorJXBhdGNoNTY2IC1wMQorJXBhdGNoNTY3IC1wMQogCiAlcGF0Y2gzOTAg LXAxCiAlcGF0Y2gzOTMgLXAxCkBAIC0xMjExLDcgKzEyMTksMTAgQEAgZmkKICVlbmRpZgogCiAl Y2hhbmdlbG9nCi0qIFRodSBKYW4gMjcgMjAxMSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4gLSA3LjIuNTAuMjAxMTAyMDYtMTcuZmMxNQorKiBTdW4gRmViICA2IDIw MTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLjUwLjIw MTEwMjA2LTE4LmZjMTUKKy0gRml4IHJlZ3Jlc3Npb25zIG9uIEMrKyBuYW1lcyByZXNvbHZpbmcg KFBSIDExNzM0LCBQUiAxMjI3MywgS2VpdGggU2VpdHopLgorCisqIFN1biBGZWIgIDYgMjAxMSBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjIuNTAuMjAxMTAy MDYtMTcuZmMxNQogLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjIuNTAuMjAxMTAyMDYgKHdoaWNoIGlz IGEgNy4zIHByZS1yZWxlYXNlKS4KIAogKiBUaHUgSmFuIDI3IDIwMTEgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLjUwLjIwMTEwMTI1LTE2LmZjMTUK