From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=ALL_TRUSTED,URIBL_BLACK autolearn=no autolearn_force=no version=3.4.4 Received: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 5533C216AE for ; Thu, 25 Apr 2024 16:17:17 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============8052810562011398800==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_=5BWIP=5D_New_package=3A_xiphos-4=2E2=2E1?= To: ml@inbox.vuxu.org From: jonpikum Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Thu, 25 Apr 2024 16:17:17 +0200 List-Id: Message-Id: <20240425141717.5533C216AE@inbox.vuxu.org> GitHub notification mails are now in MIME to allow UTF8. --===============8052810562011398800== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgam9ucGlrdW0gYWdhaW5zdCBtYXN0 ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL2pv bnBpa3VtL3ZvaWQtcGFja2FnZXMgeGlwaG9zCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC81MDAyOAoKW1dJUF0gTmV3IHBhY2thZ2U6IHhpcGhvcy00LjIu MQojIyMjIFRlc3RpbmcgdGhlIGNoYW5nZXMNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipicmllZmx5KioNCg0KIyMjIyBOZXcgcGFja2FnZQ0KLSBUaGlzIG5ldyBwYWNrYWdl IGNvbmZvcm1zIHRvIHRoZSBbcGFja2FnZSByZXF1aXJlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNv bS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI3Bh Y2thZ2UtcmVxdWlyZW1lbnRzKTogKipZRVMqKg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcN Ci0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsIHg4 Nl82NC1nbGliYw0KLSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxseSBmb3IgdGhlc2UgYXJjaGl0ZWN0 dXJlcyAoaWYgc3VwcG9ydGVkLiBtYXJrIGNyb3NzYnVpbGRzKToNCiAgLSB4ODZfNjQtbXVzbCAo Y3Jvc3MpDQogIC0gYWFyY2g2NC1nbGliYyAoY3Jvc3MpDQogIC0gYXJtdjdsLWdsaWJjIChjcm9z cykNCg0KQmFzZWQgb24gaHR0cHM6Ly9naXRsYWIuYXJjaGxpbnV4Lm9yZy9hcmNobGludXgvcGFj a2FnaW5nL3BhY2thZ2VzL3hpcGhvcy8tL2Jsb2IvbWFpbi9QS0dCVUlMRA0KRG8gbm90ZSB0aGUg Y2F1c2Ugb2YgdGhlIHBhdGNoZXM6DQotIGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9zc3dpcmUveGlw aG9zL2lzc3Vlcy8xMDgzDQotIGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9zc3dpcmUveGlwaG9zL2lz c3Vlcy83OTQNCg0KSSBkaWQgbm90IGluY2x1ZGUgdGhlIGh0dHBzIHBhdGNoDQoNCmNsb3NlcyAj NTAwMjYgDQoNCmJsb2NrZWQgYnk6DQotIFsgXSB3ZWJraXQyZ3RrLTQuMCBkZXBlbmRlbmN5IHVu dGlsIG5leHQgdXBzdHJlYW0gcmVsZWFzZQoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRo dWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzUwMDI4LnBhdGNoIGlzIGF0dGFj aGVk --===============8052810562011398800== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-xiphos-50028.patch" RnJvbSBmMGMzYTUyMDZiYjc5MGZhMzg3MWY5ZWZmMDk3ZTYwYTE3Mzc1ZjVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hdGhhbiBCcmFkbGV5IDxqY2JAcGlrdW0ueHl6PgpEYXRl OiBXZWQsIDI0IEFwciAyMDI0IDIyOjA5OjMxIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gTmV3IHBh Y2thZ2U6IHhpcGhvcwoKLS0tCiAuLi4vcGF0Y2hlcy9kaXNhYmxlLXdlYmtpdC1lZGl0b3IucGF0 Y2ggICAgICAgfCAxMzMyICsrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3hpcGhvcy9wYXRjaGVz L3hpcGhvcy1nbGliLnBhdGNoICAgICAgfCAgIDEwICsKIHNyY3BrZ3MveGlwaG9zL3RlbXBsYXRl ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMzU5IGlu c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3hpcGhvcy9wYXRjaGVzL2Rp c2FibGUtd2Via2l0LWVkaXRvci5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MveGlw aG9zL3BhdGNoZXMveGlwaG9zLWdsaWIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L3hpcGhvcy90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveGlwaG9zL3BhdGNoZXMvZGlz YWJsZS13ZWJraXQtZWRpdG9yLnBhdGNoIGIvc3JjcGtncy94aXBob3MvcGF0Y2hlcy9kaXNhYmxl LXdlYmtpdC1lZGl0b3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMDAuLjYxY2Y5MDcxNTQyNTE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy94aXBob3Mv cGF0Y2hlcy9kaXNhYmxlLXdlYmtpdC1lZGl0b3IucGF0Y2gKQEAgLTAsMCArMSwxMzMyIEBACitG cm9tOiBCYXN0aWFuIEdlcm1hbm4gPGJhZ2VAZGViaWFuLm9yZz4KK0RhdGU6IFNhdCwgMjcgSnVu IDIwMjAgMTk6MzY6MjUgKzAyMDAKK1N1YmplY3Q6IERpc2FibGUgd2Via2l0IGVkaXRvcgorCist LS0KKyBzcmMvZWRpdG9yL2VkaXRvci5jICAgICAgICB8ICAgIDIgKy0KKyBzcmMvZWRpdG9yL3dl YmtpdF9lZGl0b3IuYyB8IDEwNjUgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEwNjQgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9zcmMvZWRpdG9yL2VkaXRvci5jIGIvc3JjL2VkaXRvci9lZGl0b3IuYwor aW5kZXggMGE3Y2FiNC4uMDA2ZWVlYiAxMDA2NDQKKy0tLSBhL3NyYy9lZGl0b3IvZWRpdG9yLmMK KysrKyBiL3NyYy9lZGl0b3IvZWRpdG9yLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUg PGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpZmRlZiBVU0VfV0VCS0lUX0VESVRPUgorKyNpZm5k ZWYgVVNFX1dFQktJVF9FRElUT1IKKyAKKyAvKiBYIGtleWJvYXJkICNkZWZpbml0aW9ucywgdG8g aGFuZGxlIHNob3J0Y3V0cyAqLworIC8qIHdlIG11c3QgZGVmaW5lIHRoZSBjYXRlZ29yaWVzIG9m ICNkZWZpbml0aW9ucyB3ZSBuZWVkLiAqLworZGlmZiAtLWdpdCBhL3NyYy9lZGl0b3Ivd2Via2l0 X2VkaXRvci5jIGIvc3JjL2VkaXRvci93ZWJraXRfZWRpdG9yLmMKK2luZGV4IDgyOTlkMjMuLjg1 MDdmNjQgMTAwNjQ0CistLS0gYS9zcmMvZWRpdG9yL3dlYmtpdF9lZGl0b3IuYworKysrIGIvc3Jj L2VkaXRvci93ZWJraXRfZWRpdG9yLmMKK0BAIC0yOSw3ICsyOSw2IEBACisgI2luY2x1ZGUgPGN0 eXBlLmg+CisgCisgI2luY2x1ZGUgPGdsaWIuaD4KKy0jaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5o PgorIAorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorQEAgLTkz LDcgKzkyLDYgQEAgc3RhdGljIHZvaWQKKyBvbl9hYm91dF9kaWFsb2dfcmVzcG9uc2UoR3RrRGlh bG9nICpkaWFsb2csCisgCQkJIGdpbnQgcmVzcG9uc2VfaWQsIGdwb2ludGVyIHVzZXJfZGF0YSkK KyB7CistCWd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworIH0KKyAKKyAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCitAQCAtMTE1LDM5ICsxMTMsMjEgQEAgb25fYWJvdXRfZGlh bG9nX3Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisg YWN0aW9uX2Fib3V0X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisg eworLQlHdGtXaWRnZXQgKmFib3V0OworLQlHZGtQaXhidWYgKmFib3V0X2xvZ287CistCistCWFi b3V0X2xvZ28gPSBwaXhidWZfZmluZGVyKCJ4aXBob3MtYnV0dG9uLTEyNS5wbmciLCAwLCBOVUxM KTsKKy0JYWJvdXQgPSBndGtfYWJvdXRfZGlhbG9nX25ldygpOworLQorLQlnX3NpZ25hbF9jb25u ZWN0KGFib3V0LCAicmVzcG9uc2UiLAorLQkJCSBHX0NBTExCQUNLKG9uX2Fib3V0X2RpYWxvZ19y ZXNwb25zZSksIE5VTEwpOworLQlndGtfYWJvdXRfZGlhbG9nX3NldF9wcm9ncmFtX25hbWUoR1RL X0FCT1VUX0RJQUxPRyhhYm91dCksICJXZWJLaXQgZWRpdG9yLCBYaXBob3MiKTsKKy0JZ3RrX2Fi b3V0X2RpYWxvZ19zZXRfdmVyc2lvbihHVEtfQUJPVVRfRElBTE9HKGFib3V0KSwgKGdjaGFyICop VkVSU0lPTik7CistCWd0a19hYm91dF9kaWFsb2dfc2V0X2NvbW1lbnRzKEdUS19BQk9VVF9ESUFM T0coYWJvdXQpLCAiUmVwbGFjZW1lbnQgZm9yIGd0a2h0bWwgZWRpdG9yIik7CistCWd0a19hYm91 dF9kaWFsb2dfc2V0X2xvZ28oR1RLX0FCT1VUX0RJQUxPRyhhYm91dCksIGFib3V0X2xvZ28pOwor LQlzZXRfd2luZG93X2ljb24oR1RLX1dJTkRPVyhhYm91dCkpOworLQlndGtfd2lkZ2V0X3Nob3co YWJvdXQpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9pbmNyZWFzZV9p bmRlbnRfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCWVk aXRvcl9leGVjdXRlX3NjcmlwdCgiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luZGVudCcsIGZhbHNl LCBmYWxzZSk7IiwgZSk7CistCWVkaXRvcl9pbnNlcnRfbmV3X291dGxpbmVfbGV2ZWwoZS0+dG9v bGl0ZW1zLm91dGxpbmVfbGV2ZWwsIGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAor IGFjdGlvbl9kZWNyZWFzZV9pbmRlbnRfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVE SVRPUiAqZSkKKyB7CistCWVkaXRvcl9leGVjdXRlX3NjcmlwdCgiZG9jdW1lbnQuZXhlY0NvbW1h bmQoJ091dGRlbnQnLCBmYWxzZSwgZmFsc2UpOyIsIGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBP UlQgdm9pZAorIGFjdGlvbl9pbnNlcnRfcnVsZV9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdl dCwgRURJVE9SICplKQorIHsKKy0JZWRpdG9yX2luc2VydF9odG1sKCI8aHI+IiwgZSk7CisgfQor IAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCitAQCAtMTU4LDE0MSArMTM4LDgwIEBAIGFjdGlvbl9p bnNlcnRfdGFibGVfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyBH X01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9pbnNlcnRfZW1vdGljb25fYWN0aXZhdGVfY2Io R3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCS8vIFRoaXMgaXMgc3R1cGlkLCBp ZiB3ZSBkb24ndCBoYXZlIGVtb3RpY29ucyB3b3JraW5nLCB0aGVuIHdlIHNvdWxkCistCS8vIHJl bW92ZSB0aGUgYnV0dG9uIHVzZXJzIHNlZS4KKy0KKy0JLy9zY3JpcHQgPSBnX3N0cmR1cCAoImRv Y3VtZW50LmV4ZWNDb21tYW5kKCcnLCBudWxsLCBcIlwiKTsiKTsKKyB9CisgCisgR19NT0RVTEVf RVhQT1JUIHZvaWQKKyBhY3Rpb25faW5zZXJ0X2ltYWdlX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAq d2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQlnY2hhciAqZmlsZW5hbWUgPSBOVUxMOworLQorLQlH dGtXaWRnZXQgKmRpYWxvZyA9IGd0a19maWxlX2Nob29zZXJfZGlhbG9nX25ldygiU2VsZWN0IGFu IGltYWdlIGZpbGUiLAorLQkJCQkJCQlOVUxMLAorLQkJCQkJCQlHVEtfRklMRV9DSE9PU0VSX0FD VElPTl9PUEVOLAorLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxMCwgMCkKKy0JCQkJCQkJIl9D YW5jZWwiLCBHVEtfUkVTUE9OU0VfQ0FOQ0VMLAorLQkJCQkJCQkiX09LIiwgR1RLX1JFU1BPTlNF X0FDQ0VQVCwKKy0jZWxzZQorLQkJCQkJCQlHVEtfU1RPQ0tfQ0FOQ0VMLAorLQkJCQkJCQlHVEtf UkVTUE9OU0VfQ0FOQ0VMLAorLQkJCQkJCQlHVEtfU1RPQ0tfT0ssIEdUS19SRVNQT05TRV9BQ0NF UFQsCistI2VuZGlmCistCQkJCQkJCU5VTEwpOworLQorLQlpZiAoZ3RrX2RpYWxvZ19ydW4oR1RL X0RJQUxPRyhkaWFsb2cpKSA9PSBHVEtfUkVTUE9OU0VfT0spIHsKKy0JCWZpbGVuYW1lID0gZ3Rr X2ZpbGVfY2hvb3Nlcl9nZXRfZmlsZW5hbWUoR1RLX0ZJTEVfQ0hPT1NFUihkaWFsb2cpKTsKKy0J CWdjaGFyICpzY3JpcHQgPSBnX3N0cmR1cF9wcmludGYoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdp bnNlcnRJbWFnZScsIG51bGwsICclcycpOyIsIGZpbGVuYW1lKTsKKy0JCWVkaXRvcl9leGVjdXRl X3NjcmlwdChzY3JpcHQsIGUpOworLQkJZ19mcmVlKHNjcmlwdCk7CistCX0KKy0KKy0JaWYgKGZp bGVuYW1lKQorLQkJZ19mcmVlKGZpbGVuYW1lKTsKKy0JZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxv Zyk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX2luc2VydF9vdXRsaW5l X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQllZGl0b3Jf ZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgbnVsbCwg XCI8T0wgQ0xBU1M9TDE+PExJPiA8L0xJPjwvT0w+IFwiKTsiLCBlKTsKKyB9CisgCisgR19NT0RV TEVfRVhQT1JUIHZvaWQKKyBhY3Rpb25fanVzdGlmeV9yaWdodF9hY3RpdmF0ZV9jYihHdGtXaWRn ZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZWRpdG9yX2V4ZWN1dGVfc2NyaXB0KCJkb2N1 bWVudC5leGVjQ29tbWFuZCgnanVzdGlmeXJpZ2h0JywgZmFsc2UsIGZhbHNlKTsiLCBlKTsKKyB9 CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQKKyBhY3Rpb25fanVzdGlmeV9sZWZ0X2FjdGl2YXRl X2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQllZGl0b3JfZXhlY3V0ZV9z Y3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdqdXN0aWZ5bGVmdCcsIGZhbHNlLCBmYWxzZSk7 IiwgZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX2p1c3RpZnlfY2Vu dGVyX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQllZGl0 b3JfZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdqdXN0aWZ5Y2VudGVyJywg ZmFsc2UsIGZhbHNlKTsiLCBlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQKKyBhY3Rp b25fanVzdGlmeV9mdWxsX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUp CisgeworLQllZGl0b3JfZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdqdXN0 aWZ5ZnVsbCcsIGZhbHNlLCBmYWxzZSk7IiwgZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2 b2lkCisgYWN0aW9uX2JvbGRfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAq ZSkKKyB7CistCWlmIChidXR0b25zX3N0YXRlLm5vY2hhbmdlKQorLQkJcmV0dXJuOworLQorLQll ZGl0b3JfZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdib2xkJyxmYWxzZSxm YWxzZSk7IiwgZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX2l0YWxp Y19hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JLy9leHRl cm4gQlVUVE9OU19TVEFURSBidXR0b25zX3N0YXRlOworLQlpZiAoYnV0dG9uc19zdGF0ZS5ub2No YW5nZSkKKy0JCXJldHVybjsKKy0KKy0JZWRpdG9yX2V4ZWN1dGVfc2NyaXB0KCJkb2N1bWVudC5l eGVjQ29tbWFuZCgnaXRhbGljJyxmYWxzZSxmYWxzZSk7IiwgZSk7CisgfQorIAorIEdfTU9EVUxF X0VYUE9SVCB2b2lkCisgYWN0aW9uX3VuZG9fYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQs IEVESVRPUiAqZSkKKyB7CistCWVkaXRvcl9leGVjdXRlX3NjcmlwdCgiZG9jdW1lbnQuZXhlY0Nv bW1hbmQoJ3VuZG8nLGZhbHNlLGZhbHNlKTsiLCBlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JU IHZvaWQKKyBhY3Rpb25fcmVkb19hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9S ICplKQorIHsKKy0JZWRpdG9yX2V4ZWN1dGVfc2NyaXB0KCJkb2N1bWVudC5leGVjQ29tbWFuZCgn cmVkbycsZmFsc2UsZmFsc2UpOyIsIGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAor IGFjdGlvbl91bmRlcmxpbmVfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAq ZSkKKyB7CistCS8vZXh0ZXJuIEJVVFRPTlNfU1RBVEUgYnV0dG9uc19zdGF0ZTsKKy0JaWYgKGJ1 dHRvbnNfc3RhdGUubm9jaGFuZ2UpCistCQlyZXR1cm47CistCistCWVkaXRvcl9leGVjdXRlX3Nj cmlwdCgiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ3VuZGVybGluZScsIGZhbHNlLCBmYWxzZSk7Iiwg ZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX3N0cmlrZXRocm91Z2hf YWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCS8vZXh0ZXJu IEJVVFRPTlNfU1RBVEUgYnV0dG9uc19zdGF0ZTsKKy0JaWYgKGJ1dHRvbnNfc3RhdGUubm9jaGFu Z2UpCistCQlyZXR1cm47CistCistCWVkaXRvcl9leGVjdXRlX3NjcmlwdCgiZG9jdW1lbnQuZXhl Y0NvbW1hbmQoJ3N0cmlrZXRocm91Z2gnLCBmYWxzZSwgZmFsc2UpOyIsIGUpOworIH0KKyAKKyBH X01PRFVMRV9FWFBPUlQgdm9pZCBhY3Rpb25fY3V0X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lk Z2V0LCBFRElUT1IgKmUpCisgeworLQllZGl0b3JfY3V0KGUpOworIH0KKyAKKyBHX01PRFVMRV9F WFBPUlQgdm9pZAorIGFjdGlvbl9jb3B5X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBF RElUT1IgKmUpCisgeworLQlpZiAoZWRpdG9yX2NvcHkoZSkpCistCQlYSV9tZXNzYWdlKCgiJXMi LCAiY29weSBzdWNjZXNzIikpOworLQllbHNlCistCQlYSV9tZXNzYWdlKCgiJXMiLCAiY29weSBm YWlsZWQiKSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX3Bhc3RlX2Fj dGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQllZGl0b3JfcGFz dGUoZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCitAQCAtMzAzLDczNyArMjIyLDkz IEBAIGFjdGlvbl9kZWxldGVfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAq ZSkKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9kZWxldGVfaXRlbV9hY3RpdmF0ZV9j YihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JaWYgKGUtPnN0dWR5cGFkKQor LQkJcmV0dXJuOworLQorLQlnY2hhciAqYnVmID0gCistCQlnX3N0cmR1cF9wcmludGYoIjxzcGFu IHdlaWdodD1cImJvbGRcIiBzaXplPVwibGFyZ2VyXCI+JXMgJXM/PC9zcGFuPiIsCistCQkJCV8o IkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIG5vdGUgZm9yIiksIGUtPmtleSk7 CistCistCWlmIChndWlfeWVzX25vX2RpYWxvZyhidWYsCistI2lmIEdUS19DSEVDS19WRVJTSU9O KDMsIDEwLCAwKQorLQkJCSAgICAgICJkaWFsb2ctd2FybmluZyIKKy0jZWxzZQorLQkJCSAgICAg IEdUS19TVE9DS19ESUFMT0dfV0FSTklORworLSNlbmRpZgorLQkJCSAgICAgICkpIHsKKy0KKy0J CW1haW5fZGVsZXRlX25vdGUoZS0+bW9kdWxlLCBlLT5rZXkpOworLQorLQkJLyogbmV3IGVtcHR5 IGRvY3VtZW50IGZyb20gdGVtcGxhdGUgKi8KKy0JCWdjaGFyICpmbmFtZSA9IGdfYnVpbGRfZmls ZW5hbWUoc2V0dGluZ3MuZ1N3b3JkRGlyLCAic3R1ZHlwYWQuc3B0IiwgTlVMTCk7CistCQlYSV9t ZXNzYWdlKCgiYWN0aW9uIGRlbGV0ZSBpdGVtIFslc10iLCBmbmFtZSkpOworLQkJZ2NoYXIgKnRl eHQgPSBpbmhhbGVfdGV4dF9mcm9tX2ZpbGUoZm5hbWUpOworLQkJZ19mcmVlKGZuYW1lKTsKKy0K Ky0JCWlmICh0ZXh0ICYmIHN0cmxlbih0ZXh0KSkgeworLQkJCXdlYmtpdF93ZWJfdmlld19sb2Fk X3N0cmluZygoV2ViS2l0V2ViVmlldyAqKQorLQkJCQkJCSAgICBlLT5odG1sX3dpZGdldCwKKy0J CQkJCQkgICAgdGV4dCwKKy0JCQkJCQkgICAgImFwcGxpY2F0aW9uL3hodG1sK3htbCIsICJ1dGZf OCIsCistCQkJCQkJICAgICJmaWxlOi8vIik7CistCQl9CistCQlpZiAodGV4dCkKKy0JCQlnX2Zy ZWUodGV4dCk7CistCX0KKy0KKy0JZ19mcmVlKGJ1Zik7CistCWUtPmlzX2NoYW5nZWQgPSBGQUxT RTsKKyB9CisgCisgdm9pZCBzZXRfYnV0dG9uX3N0YXRlKEJVVFRPTlNfU1RBVEUgc3RhdGUsIEVE SVRPUiAqZSkKKyB7CistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCistCUdka1JHQkEg cmdiYTsKKy0jZWxzZQorLQlHZGtDb2xvciBjb2xvcjsKKy0jZW5kaWYKKy0JZ3RrX3RvZ2dsZV90 b29sX2J1dHRvbl9zZXRfYWN0aXZlKGUtPnRvb2xpdGVtcy5ib2xkLCBzdGF0ZS5ib2xkKTsKKy0J Z3RrX3RvZ2dsZV90b29sX2J1dHRvbl9zZXRfYWN0aXZlKGUtPnRvb2xpdGVtcy5pdGFsaWMsIHN0 YXRlLml0YWxpYyk7CistCWd0a190b2dnbGVfdG9vbF9idXR0b25fc2V0X2FjdGl2ZShlLT50b29s aXRlbXMudW5kZXJsaW5lLCBzdGF0ZS51bmRlcmxpbmUpOworLQlndGtfdG9nZ2xlX3Rvb2xfYnV0 dG9uX3NldF9hY3RpdmUoZS0+dG9vbGl0ZW1zLnN0cmlrZSwgc3RhdGUuc3RyaWtlKTsKKy0JZ3Rr X2NvbWJvX2JveF9zZXRfYWN0aXZlKChHdGtDb21ib0JveCAqKWUtPnRvb2xpdGVtcy5jYiwgc3Rh dGUuc3R5bGUpOworLQorLQlpZiAoc3RhdGUuY29sb3IpIHsKKy0JCVhJX21lc3NhZ2UoKCJzdGF0 ZS5jb2xvcjogJXMiLCBzdGF0ZS5jb2xvcikpOworLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0 LCAwKQorLQkJaWYgKGdka19yZ2JhX3BhcnNlKCZyZ2JhLCBzdGF0ZS5jb2xvcikpCistCQkJZ3Rr X2NvbG9yX2Nob29zZXJfc2V0X3JnYmEoKEd0a0NvbG9yQ2hvb3NlciAqKQorLQkJCQkJCSAgIGUt PnRvb2xpdGVtcy5jb2xvciwKKy0JCQkJCQkgICAmcmdiYSk7CistI2Vsc2UKKy0JCWlmIChnZGtf Y29sb3JfcGFyc2Uoc3RhdGUuY29sb3IsICZjb2xvcikpCistCQkJZ3RrX2NvbG9yX2J1dHRvbl9z ZXRfY29sb3IoKEd0a0NvbG9yQnV0dG9uICopCistCQkJCQkJICAgZS0+dG9vbGl0ZW1zLmNvbG9y LAorLQkJCQkJCSAgICZjb2xvcik7CistI2VuZGlmCistCX0KKyB9CisgCisgR19NT0RVTEVfRVhQ T1JUIHZvaWQKKyBjb2xvcmJ1dHRvbjFfY29sb3Jfc2V0X2NiKEd0a0NvbG9yQnV0dG9uICp3aWRn ZXQsIEVESVRPUiAqZSkKKyB7CistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCistCUdk a1JHQkEgY29sb3I7CistI2Vsc2UKKy0JR2RrQ29sb3IgY29sb3I7CistI2VuZGlmCistCWdjaGFy ICpjb2xvcl9zdHI7CistCWdjaGFyICpmb3JlY29sb3IgPSBOVUxMOworLQorLSNpZiBHVEtfQ0hF Q0tfVkVSU0lPTigzLCA0LCAwKQorLQlndGtfY29sb3JfY2hvb3Nlcl9nZXRfcmdiYSgoR3RrQ29s b3JDaG9vc2VyICopd2lkZ2V0LCAmY29sb3IpOworLQljb2xvcl9zdHIgPSBnZGtfcmdiYV90b19z dHJpbmcoJmNvbG9yKTsKKy0jZWxzZQorLQlndGtfY29sb3JfYnV0dG9uX2dldF9jb2xvcigoR3Rr Q29sb3JCdXR0b24gKil3aWRnZXQsICZjb2xvcik7CistCS8qIEZJWE1FOiB1Z2x5IG5lZWQgc29t ZXRoaW5nIGJldHRlciAqLworLQljb2xvcl9zdHIgPSBnX3N0cmR1cF9wcmludGYoInJnYigldSwl dSwldSkiLCBjb2xvci5yZWQgPj4gOCwgY29sb3IuZ3JlZW4gPj4gOCwgY29sb3IuYmx1ZSA+PiA4 KTsKKy0jZW5kaWYKKy0JZm9yZWNvbG9yID0gZ19zdHJkdXBfcHJpbnRmKCJkb2N1bWVudC5leGVj Q29tbWFuZCgnZm9yZWNvbG9yJywgbnVsbCwgJyVzJyk7IiwgY29sb3Jfc3RyKTsKKy0JZWRpdG9y X2V4ZWN1dGVfc2NyaXB0KGZvcmVjb2xvciwgZSk7CistCWdfZnJlZShmb3JlY29sb3IpOworLQln X2ZyZWUoY29sb3Jfc3RyKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQKKyBjb2xvcmJ1 dHRvbl9oaWdobGlnaHRfY29sb3Jfc2V0X2NiKEd0a0NvbG9yQnV0dG9uICp3aWRnZXQsIEVESVRP UiAqZSkKKyB7CistCistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCistCUdka1JHQkEg Y29sb3I7CistI2Vsc2UKKy0JR2RrQ29sb3IgY29sb3I7CistI2VuZGlmCistCWdjaGFyICpjb2xv cl9zdHI7CistCWdjaGFyICpoaWdobGlnaHRjb2xvciA9IE5VTEw7CistCistI2lmIEdUS19DSEVD S19WRVJTSU9OKDMsIDQsIDApCistCWd0a19jb2xvcl9jaG9vc2VyX2dldF9yZ2JhKChHdGtDb2xv ckNob29zZXIgKil3aWRnZXQsICZjb2xvcik7CistCWNvbG9yX3N0ciA9IGdka19yZ2JhX3RvX3N0 cmluZygmY29sb3IpOworLSNlbHNlCistCWd0a19jb2xvcl9idXR0b25fZ2V0X2NvbG9yKChHdGtD b2xvckJ1dHRvbiAqKXdpZGdldCwgJmNvbG9yKTsKKy0JLyogRklYTUU6IHVnbHkgbmVlZCBzb21l dGhpbmcgYmV0dGVyICovCistCWNvbG9yX3N0ciA9IGdfc3RyZHVwX3ByaW50ZigicmdiKCV1LCV1 LCV1KSIsIGNvbG9yLnJlZCA+PiA4LCBjb2xvci5ncmVlbiA+PiA4LCBjb2xvci5ibHVlID4+IDgp OworLSNlbmRpZgorLQloaWdobGlnaHRjb2xvciA9IGdfc3RyZHVwX3ByaW50ZigiZG9jdW1lbnQu ZXhlY0NvbW1hbmQoJ2JhY2tDb2xvcicsIG51bGwsICclcycpOyIsIGNvbG9yX3N0cik7CistCWVk aXRvcl9leGVjdXRlX3NjcmlwdChoaWdobGlnaHRjb2xvciwgZSk7CistCWdfZnJlZShoaWdobGln aHRjb2xvcik7CistCWdfZnJlZShjb2xvcl9zdHIpOworLX0KKy0KKy1zdGF0aWMgZ2NoYXIgKmdl dF9mb250X3NpemVfZnJvbV9uYW1lKEdTdHJpbmcgKmZvbnRuYW1lKQorLXsKKy0JZ2NoYXIgYnVm WzgwXTsKKy0JZ2ludCBsZW4sIGkgPSAwLCBqID0gMDsKKy0KKy0JbGVuID0gZm9udG5hbWUtPmxl bjsKKy0JWElfbWVzc2FnZSgoIlxubGVuZ3RoOiAlZFxuIiwgbGVuKSk7CistCWZvciAoaSA9IDA7 IChpIDwgNzkgJiYgaSA8IGxlbik7IGkrKykgeworLQkJaWYgKGlzZGlnaXQoZm9udG5hbWUtPnN0 cltpXSkpIHsKKy0JCQlYSV9tZXNzYWdlKCgiXG5cbmZvbnRuYW1lLT5zdHJbaV06ICVjIiwKKy0J CQkJICAgIGZvbnRuYW1lLT5zdHJbaV0pKTsKKy0JCQlidWZbal0gPSBmb250bmFtZS0+c3RyW2ld OworLQkJCWJ1ZltqICsgMV0gPSAnXDAnOworLQkJCWorKzsKKy0JCX0KKy0JfQorLQlyZXR1cm4g Z19zdHJkdXAoYnVmKTsKKyB9CisgCistR19NT0RVTEVfRVhQT1JUIHZvaWQKKy1hY3Rpb25fZm9u dF9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorLXsKKy0JR3RrV2lk Z2V0ICpkaWFsb2c7CistCWdjaGFyICpzZWxlY3RlZF90ZXh0ID0gTlVMTDsKKy0JZ2NoYXIgKnNp emUgPSBOVUxMOworLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAyLCAwKQorLQlkaWFsb2cgPSBn dGtfZm9udF9jaG9vc2VyX2RpYWxvZ19uZXcoIlNlbGVjdCBmb250IiwgTlVMTCk7CistCWd0a19m b250X2Nob29zZXJfc2V0X2ZvbnQoKEd0a0ZvbnRDaG9vc2VyICopZGlhbG9nLAorLSNlbHNlCist CWRpYWxvZyA9IGd0a19mb250X3NlbGVjdGlvbl9kaWFsb2dfbmV3KCJTZWxlY3QgZm9udCIpOwor LQlndGtfZm9udF9zZWxlY3Rpb25fZGlhbG9nX3NldF9mb250X25hbWUoKEd0a0ZvbnRTZWxlY3Rp b25EaWFsb2cgKikKKy0JCQkJCQlkaWFsb2csCistI2VuZGlmCistCQkJCSAgIkRyb2lkIFNhbnMg MTQiKTsKKy0KKy0JaWYgKGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSkgPT0gR1RL X1JFU1BPTlNFX09LKSB7CistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDIsIDApCistCQljb25z dCBnY2hhciAqZm9udG5hbWUgPSBndGtfZm9udF9jaG9vc2VyX2dldF9mb250KChHdGtGb250Q2hv b3NlciAqKWRpYWxvZyk7CistI2Vsc2UKKy0JCWNvbnN0IGdjaGFyICpmb250bmFtZSA9IGd0a19m b250X3NlbGVjdGlvbl9kaWFsb2dfZ2V0X2ZvbnRfbmFtZSgoR3RrRm9udFNlbGVjdGlvbkRpYWxv ZyAqKWRpYWxvZyk7CistI2VuZGlmCistCQlHU3RyaW5nICpuYW1lID0gZ19zdHJpbmdfbmV3KGZv bnRuYW1lKTsKKy0JCXNpemUgPSBnZXRfZm9udF9zaXplX2Zyb21fbmFtZShuYW1lKTsKKy0JCWdf c3RyaW5nX2ZyZWUobmFtZSwgVFJVRSk7CistCistCQlzZWxlY3RlZF90ZXh0ID0gZWRpdG9yX2dl dF9zZWxlY3RlZF90ZXh0KGUpOworLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAyLCAwKQorLQkJ UGFuZ29Gb250RGVzY3JpcHRpb24gKmZvbnRfZGVzY3JpcHRpb24gPQorLQkJCWd0a19mb250X2No b29zZXJfZ2V0X2ZvbnRfZGVzYygoR3RrRm9udENob29zZXIgKikKKy0JCQkJCQkgICAgICAgZGlh bG9nKTsKKy0JCWZvbnRuYW1lID0gcGFuZ29fZm9udF9kZXNjcmlwdGlvbl9nZXRfZmFtaWx5KGZv bnRfZGVzY3JpcHRpb24pOworLSNlbHNlCistCQlQYW5nb0ZvbnREZXNjcmlwdGlvbiAqZm9udF9k ZXNjcmlwdGlvbiA9CistCQkJcGFuZ29fZm9udF9kZXNjcmlwdGlvbl9mcm9tX3N0cmluZyhmb250 bmFtZSk7CistCQlmb250bmFtZSA9IHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZ2V0X2ZhbWlseShm b250X2Rlc2NyaXB0aW9uKTsKKy0jZW5kaWYKKy0KKy0JCWdjaGFyICpzY3JpcHQgPSBnX3N0cmR1 cF9wcmludGYoIjxTUEFOIFNUWUxFPVwiZm9udC1mYW1pbHk6JXM7Zm9udC1zaXplOiVzcHg7XCI+ JXM8L1NQQU4+IiwKKy0JCQkJCQlmb250bmFtZSwgc2l6ZSwgc2VsZWN0ZWRfdGV4dCk7CistCist CQllZGl0b3JfaW5zZXJ0X2h0bWwoc2NyaXB0LCBlKTsKKy0JCWdfZnJlZShzY3JpcHQpOworLQl9 CistCWlmIChzaXplKQorLQkJZ19mcmVlKHNpemUpOworLQlpZiAoc2VsZWN0ZWRfdGV4dCkKKy0J CWdfZnJlZShzZWxlY3RlZF90ZXh0KTsKKy0JZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7Cist fQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgZmluZF9yZXBsYWNlX3Jlc3BvbnNlX2NiKEd0 a0RpYWxvZyAqZGlhbG9nLCBnaW50IHJlc3BvbnNlX2lkLCBFRElUT1IgKmUpCisgeworLQlzd2l0 Y2ggKHJlc3BvbnNlX2lkKSB7CistCWNhc2UgR1RLX1JFU1BPTlNFX0NBTkNFTDoKKy0JCWd0a193 aWRnZXRfaGlkZShmaW5kX2RpYWxvZy53aW5kb3cpOworLQkJYnJlYWs7CistCWNhc2UgMToKKy0J CWVkaXRvcl9maW5kX3N0cmluZygoZ2NoYXIgKikKKy0JCQkJICAgZ3RrX2VudHJ5X2dldF90ZXh0 KEdUS19FTlRSWShmaW5kX2RpYWxvZy5maW5kX2VudHJ5KSksCistCQkJCSAgIGUpOworLQkJYnJl YWs7CistCWNhc2UgMjoKKy0JCWVkaXRvcl9yZXBsYWNlX3N0cmluZygoZ2NoYXIgKikKKy0JCQkJ ICAgICAgZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShmaW5kX2RpYWxvZy5maW5kX2VudHJ5 KSksCistCQkJCSAgICAgIChnY2hhciAqKQorLQkJCQkgICAgICBndGtfZW50cnlfZ2V0X3RleHQo R1RLX0VOVFJZKGZpbmRfZGlhbG9nLnJlcGxhY2VfZW50cnkpKSwKKy0JCQkJICAgICAgZSk7Cist CQlicmVhazsKKy0JZGVmYXVsdDoKKy0JCWd0a193aWRnZXRfaGlkZShmaW5kX2RpYWxvZy53aW5k b3cpOworLQkJYnJlYWs7CistCX0KKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQKKyBhY3Rp b25fZmluZF9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0J Z3RrX3dpZGdldF9zaG93KGZpbmRfZGlhbG9nLndpbmRvdyk7CistCWd0a193aWRnZXRfaGlkZShm aW5kX2RpYWxvZy5ib3hfcmVwbGFjZSk7CistCWd0a193aWRnZXRfaGlkZShmaW5kX2RpYWxvZy5i dXR0b25fcmVwbGFjZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX3Jl cGxhY2VfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCWd0 a193aWRnZXRfc2hvdyhmaW5kX2RpYWxvZy53aW5kb3cpOworLQlndGtfd2lkZ2V0X3Nob3coZmlu ZF9kaWFsb2cuYm94X3JlcGxhY2UpOworLQlndGtfd2lkZ2V0X3Nob3coZmluZF9kaWFsb2cuYnV0 dG9uX3JlcGxhY2UpOworLX0KKy0KKy1zdGF0aWMgdm9pZCBoYW5kbGVfZXJyb3IoR0Vycm9yICoq ZXJyb3IpCisteworLQlpZiAoKmVycm9yICE9IE5VTEwpIHsKKy0JCWdfd2FybmluZygiJXMiLCAo KmVycm9yKS0+bWVzc2FnZSk7CistCQlnX2NsZWFyX2Vycm9yKGVycm9yKTsKKy0JfQorLX0KKy0K Ky1zdGF0aWMgdm9pZCBkb19leGl0KEVESVRPUiAqZSkKKy17CistCWlmIChlLT5maWxlbmFtZSkg eworLQkJZ19mcmVlKGUtPmZpbGVuYW1lKTsKKy0JfQorLQlpZiAoZS0+bW9kdWxlKSB7CistCQln X2ZyZWUoZS0+bW9kdWxlKTsKKy0JfQorLQlpZiAoZS0+a2V5KSB7CistCQlnX2ZyZWUoZS0+a2V5 KTsKKy0JfQorLQlpZiAoZS0+d2luZG93KQorLQkJZ3RrX3dpZGdldF9kZXN0cm95KGUtPndpbmRv dyk7CistCWdfZnJlZShlKTsKKy19CistCistc3RhdGljIHZvaWQgcmVjZW50X2l0ZW1fY2IoR3Rr UmVjZW50Q2hvb3NlciAqY2hvb3NlciwgRURJVE9SICplKQorLXsKKy0JZ2NoYXIgKmZpbGVfdXJp ID0gZ3RrX3JlY2VudF9jaG9vc2VyX2dldF9jdXJyZW50X3VyaShjaG9vc2VyKTsKKy0KKy0JWElf bWVzc2FnZSgoImZpbGVfdXJpOiAlcyIsIGZpbGVfdXJpKSk7CistCWlmIChlLT5maWxlbmFtZSkK Ky0JCWdfZnJlZShlLT5maWxlbmFtZSk7CistCWUtPmZpbGVuYW1lID0gZ19zdHJkdXAoZmlsZV91 cmkpOworLQorLQkvL2VkaXRvcl9vcGVuX3JlY2VudCAoZmlsZV91cmksIGUpOworLQlfbG9hZF9m aWxlKGUsIGZpbGVfdXJpKTsKKy0JeG1sX3NldF92YWx1ZSgiWGlwaG9zIiwgInN0dWR5cGFkIiwg Imxhc3RmaWxlIiwgZS0+ZmlsZW5hbWUpOworLQlzZXR0aW5ncy5zdHVkeXBhZGZpbGVuYW1lID0g eG1sX2dldF92YWx1ZSgic3R1ZHlwYWQiLCAibGFzdGZpbGUiKTsKKy0KKy0JY2hhbmdlX3dpbmRv d190aXRsZShlLT53aW5kb3csIGUtPmZpbGVuYW1lKTsKKy19CistCistc3RhdGljIHZvaWQgY2hh bmdlX3dpbmRvd190aXRsZShHdGtXaWRnZXQgKndpbmRvdywgY29uc3QgZ2NoYXIgKndpbmRvd190 aXRsZSkKKy17CistCWd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgd2lu ZG93X3RpdGxlKTsKKy19CistCistc3RhdGljIEd0a1ByaW50T3BlcmF0aW9uUmVzdWx0CistcHJp bnQoV2ViS2l0V2ViVmlldyAqaHRtbCwgR3RrUHJpbnRPcGVyYXRpb25BY3Rpb24gYWN0aW9uKQor LXsKKy0JR3RrUHJpbnRPcGVyYXRpb24gKm9wZXJhdGlvbjsKKy0JR3RrUHJpbnRPcGVyYXRpb25S ZXN1bHQgcmVzdWx0OworLQlHRXJyb3IgKmVycm9yID0gTlVMTDsKKy0JV2ViS2l0V2ViRnJhbWUg KmZyYW1lOworLQorLQlmcmFtZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShodG1s KTsKKy0Jb3BlcmF0aW9uID0gZ3RrX3ByaW50X29wZXJhdGlvbl9uZXcoKTsKKy0KKy0JcmVzdWx0 ID0gd2Via2l0X3dlYl9mcmFtZV9wcmludF9mdWxsKGZyYW1lLCBvcGVyYXRpb24sIGFjdGlvbiwg JmVycm9yKTsKKy0KKy0JZ19vYmplY3RfdW5yZWYob3BlcmF0aW9uKTsKKy0JaGFuZGxlX2Vycm9y KCZlcnJvcik7CistCistCXJldHVybiByZXN1bHQ7CistfQorLQorLXN0YXRpYyBnaW50IG9wZW5f ZGlhbG9nKEVESVRPUiAqZSkKKy17CistCUd0a1dpZGdldCAqZGlhbG9nOworLQlnaW50IHJlc3Bv bnNlOworLQorLQlkaWFsb2cgPSBndGtfZmlsZV9jaG9vc2VyX2RpYWxvZ19uZXcoXygiT3BlbiIp LCBHVEtfV0lORE9XKGUtPndpbmRvdyksCistCQkJCQkgICAgIEdUS19GSUxFX0NIT09TRVJfQUNU SU9OX09QRU4sCistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQorLQkJCQkJICAgICAi X0NhbmNlbCIsIEdUS19SRVNQT05TRV9DQU5DRUwsCistCQkJCQkgICAgICJfT3BlbiIsIEdUS19S RVNQT05TRV9BQ0NFUFQsCistI2Vsc2UKKy0JCQkJCSAgICAgR1RLX1NUT0NLX0NBTkNFTCwKKy0J CQkJCSAgICAgR1RLX1JFU1BPTlNFX0NBTkNFTCwKKy0JCQkJCSAgICAgR1RLX1NUT0NLX09QRU4s CistCQkJCQkgICAgIEdUS19SRVNQT05TRV9BQ0NFUFQsCistI2VuZGlmCistCQkJCQkgICAgIE5V TEwpOworLQorLQlndGtfZmlsZV9jaG9vc2VyX3NldF9jdXJyZW50X2ZvbGRlcihHVEtfRklMRV9D SE9PU0VSKGRpYWxvZyksIHNldHRpbmdzLnN0dWR5cGFkZGlyKTsKKy0KKy0JcmVzcG9uc2UgPSBn dGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpOworLQorLQlpZiAocmVzcG9uc2UgPT0g R1RLX1JFU1BPTlNFX0FDQ0VQVCkgeworLQkJZ2NoYXIgKm5ld19maWxlbmFtZTsKKy0KKy0JCW5l d19maWxlbmFtZSA9IGd0a19maWxlX2Nob29zZXJfZ2V0X2ZpbGVuYW1lKEdUS19GSUxFX0NIT09T RVIoZGlhbG9nKSk7CistCQlfbG9hZF9maWxlKGUsIG5ld19maWxlbmFtZSk7CistCQlnX2ZyZWUo bmV3X2ZpbGVuYW1lKTsKKy0JfQorLQorLQlndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKKy0K Ky0JcmV0dXJuIHJlc3BvbnNlOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZCBhY3Rpb25f cHJpbnRfY2IoR3RrQWN0aW9uICphY3Rpb24sIEVESVRPUiAqZSkKKyB7CistCXByaW50KFdFQktJ VF9XRUJfVklFVyhlLT5odG1sX3dpZGdldCksCistCSAgICAgIEdUS19QUklOVF9PUEVSQVRJT05f QUNUSU9OX1BSSU5UX0RJQUxPRyk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkIGFjdGlv bl9wcmludF9wcmV2aWV3X2NiKEd0a0FjdGlvbiAqYWN0aW9uLCBFRElUT1IgKmUpCisgeworLQlw cmludChXRUJLSVRfV0VCX1ZJRVcoZS0+aHRtbF93aWRnZXQpLAorLQkgICAgICBHVEtfUFJJTlRf T1BFUkFUSU9OX0FDVElPTl9QUkVWSUVXKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQg YWN0aW9uX3F1aXRfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7 CistCWRlbGV0ZV9ldmVudChOVUxMLCBOVUxMLCBlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JU IHZvaWQgYWN0aW9uX29wZW5fYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAq ZSkKKyB7CistCW9wZW5fZGlhbG9nKGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZCBh Y3Rpb25fc2F2ZV9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsK Ky0Jc3dpdGNoIChlLT50eXBlKSB7CistCWNhc2UgU1RVRFlQQURfRURJVE9SOgorLQkJX3NhdmVf ZmlsZShlKTsKKy0JCWJyZWFrOworLQljYXNlIE5PVEVfRURJVE9SOgorLQkJX3NhdmVfbm90ZShl KTsKKy0JCWJyZWFrOworLQljYXNlIEJPT0tfRURJVE9SOgorLQkJX3NhdmVfYm9vayhlKTsKKy0J CWJyZWFrOworLQlkZWZhdWx0OgorLQkJWElfbWVzc2FnZSgoIlxuYWN0aW9uX3NhdmVfY2Igb29w cyFcbiIpKTsKKy0JCWJyZWFrOworLQl9CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkIGFj dGlvbl9uZXdfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7IC8q IGZvciBzdHVkeXBhZCBvbmx5ICovCistCWdjaGFyICpmaWxlbmFtZSA9IE5VTEw7CistCistCWlm IChlLT5pc19jaGFuZ2VkKQorLQkJYXNrX2Fib3V0X3NhdmluZyhlKTsKKy0KKy0JZmlsZW5hbWUg PSBnX3N0cmR1cF9wcmludGYoIiVzLyVzIiwgc2V0dGluZ3MuZ1N3b3JkRGlyLCAic3R1ZHlwYWQu c3B0Iik7CistCistCV9sb2FkX2ZpbGUoZSwgZmlsZW5hbWUpOworLQorLQlpZiAoZS0+ZmlsZW5h bWUpCistCQlnX2ZyZWUoZS0+ZmlsZW5hbWUpOworLQllLT5maWxlbmFtZSA9IGdfc3RyZHVwKF8o IlVudGl0bGVkIGRvY3VtZW50IikpOworLQorLQl4bWxfc2V0X3ZhbHVlKCJYaXBob3MiLCAic3R1 ZHlwYWQiLCAibGFzdGZpbGUiLCBlLT5maWxlbmFtZSk7CistCXNldHRpbmdzLnN0dWR5cGFkZmls ZW5hbWUgPSB4bWxfZ2V0X3ZhbHVlKCJzdHVkeXBhZCIsICJsYXN0ZmlsZSIpOworLQljaGFuZ2Vf d2luZG93X3RpdGxlKGUtPndpbmRvdywgZS0+ZmlsZW5hbWUpOworLQllLT5pc19jaGFuZ2VkID0g VFJVRTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQKKyBhY3Rpb25faW5zZXJ0X3N3b3Jk X2xpbmtfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIGdwb2ludGVyIGRhdGEpCisgewor LQllZGl0b3JfbGlua19kaWFsb2coZGF0YSk7IC8vZWRpdG9yX2luc2VydF9zd29yZF9saW5rKCk7 CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX2luc2VydF9saW5rX2FjdGl2 YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQllZGl0b3JfbGlua19k aWFsb2coZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX3NhdmVfYXNf YWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCWlmIChlLT5m aWxlbmFtZSkKKy0JCWdfZnJlZShlLT5maWxlbmFtZSk7CistCWUtPmZpbGVuYW1lID0gTlVMTDsK Ky0JX3NhdmVfZmlsZShlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQgY29tYm9fYm94 X2NoYW5nZWRfY2IoR3RrQ29tYm9Cb3ggKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZ2NoYXIg KnNjcmlwdCA9IE5VTEw7CistCWdpbnQgY2hvaWNlID0gZ3RrX2NvbWJvX2JveF9nZXRfYWN0aXZl KHdpZGdldCk7CistCS8qIHdlIG5lZWQgdGhlIGxpbmUgb2YgdGV4dCB3aGVyZSB0aGUgY3Vyc29y IGlzICovCistCS8vZXh0ZXJuIEJVVFRPTlNfU1RBVEUgYnV0dG9uc19zdGF0ZTsKKy0KKy0JaWYg KGJ1dHRvbnNfc3RhdGUubm9jaGFuZ2UpCistCQlyZXR1cm47CistCistCXN3aXRjaCAoY2hvaWNl KSB7CistCWNhc2UgMDogLyogTm9ybWFsICAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50LmV4ZWND b21tYW5kKCdmb3JtYXRCbG9jaycsIGZhbHNlLCBcImRpdlwiKTsiOworLQkJYnJlYWs7CistCist CWNhc2UgMTogLyogSDEgICovCistCQlzY3JpcHQgPSAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2Zv cm1hdEJsb2NrJywgbnVsbCwgXCJIMVwiKTsiOworLQkJYnJlYWs7CistCistCWNhc2UgMjogLyog SDIgKi8KKy0JCXNjcmlwdCA9ICJkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9ybWF0QmxvY2snLCBu dWxsLCBcIkgyXCIpOyI7CistCQlicmVhazsKKy0KKy0JY2FzZSAzOiAvKiBIMyAgKi8KKy0JCXNj cmlwdCA9ICJkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9ybWF0QmxvY2snLCBudWxsLCBcIkgzXCIp OyI7CistCQlicmVhazsKKy0KKy0JY2FzZSA0OiAvKiBINCAgKi8KKy0JCXNjcmlwdCA9ICJkb2N1 bWVudC5leGVjQ29tbWFuZCgnZm9ybWF0QmxvY2snLCBudWxsLCBcIkg0XCIpOyI7CistCQlicmVh azsKKy0KKy0JY2FzZSA1OiAvKiBINSAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50LmV4ZWNDb21t YW5kKCdmb3JtYXRCbG9jaycsIG51bGwsIFwiSDVcIik7IjsKKy0JCWJyZWFrOworLQorLQljYXNl IDY6IC8qIEg2ICAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JtYXRC bG9jaycsIG51bGwsIFwiSDZcIik7IjsKKy0JCWJyZWFrOworLQorLQljYXNlIDc6IC8qIEFkZHJl c3MgICovCistCQlzY3JpcHQgPSAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2Zvcm1hdEJsb2NrJywg bnVsbCwgXCJBRERSRVNTXCIpOyI7CistCQlicmVhazsKKy0KKy0JY2FzZSA4OiAvKiBQcmVmb3Jt YXR0ZWQgICovCistCQlzY3JpcHQgPSAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2Zvcm1hdEJsb2Nr JywgbnVsbCwgXCJQUkVcIik7IjsKKy0JCWJyZWFrOworLQorLQljYXNlIDk6IC8qIEJ1bGxldGVk IExpc3QgIGluc2VydFVub3JkZXJlZExpc3QgKi8KKy0JCXNjcmlwdCA9ICJkb2N1bWVudC5leGVj Q29tbWFuZCgnaW5zZXJ0VW5vcmRlcmVkTGlzdCcsIG51bGwsIFwiXCIpOyI7CistCQlicmVhazsK Ky0KKy0JY2FzZSAxMDogLyogUm9tYW4gTnVtZXJhbCBMaXN0ICAqLworLQkJc2NyaXB0ID0gImRv Y3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgbnVsbCwgXCI8T0wgdHlwZT1JPjxMST4g PC9MST48L09MPiBcIik7IjsKKy0JCWJyZWFrOworLQorLQljYXNlIDExOiAvKiBOdW1iZXJlZCBM aXN0ICBpbnNlcnRPcmRlcmVkTGlzdCAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50LmV4ZWNDb21t YW5kKCdpbnNlcnRPcmRlcmVkTGlzdCcsIG51bGwsIFwiXCIpOyI7CistCQlicmVhazsKKy0KKy0J Y2FzZSAxMjogLyogQWxwaGFiZXRpY2FsIExpc3QgICovCistCQlzY3JpcHQgPSAiZG9jdW1lbnQu ZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBudWxsLCBcIjxPTCB0eXBlPUE+PExJPiA8L0xJPjwv T0w+IFwiKTsiOworLQkJYnJlYWs7CistCistCWRlZmF1bHQ6CistCQlicmVhazsKKy0JfQorLQor LQlpZiAoc2NyaXB0KSB7CistCQlYSV9tZXNzYWdlKCgiJXMiLCBzY3JpcHQpKTsKKy0JCWVkaXRv cl9leGVjdXRlX3NjcmlwdChzY3JpcHQsIGUpOworLQl9CistfQorLQorLS8qIG5lZWQgbm90ZSB0 b29sYmFycyB3aGVuIHR5cGUgaXMgbm90ZSAqLworLXN0YXRpYyBHdGtXaWRnZXQgKmVkaXRvcl9u ZXcoY29uc3QgZ2NoYXIgKnRpdGxlLCBFRElUT1IgKmUpCisteworLQlHdGtXaWRnZXQgKndpbmRv dzsKKy0JR3RrV2lkZ2V0ICpzY3JvbGx3aW5kb3c7CistCUd0a1dpZGdldCAqc3RhdHVzYmFyOwor LQlHdGtCdWlsZGVyICpidWlsZGVyOworLQlnY2hhciAqZ2J1aWxkZXJfZmlsZTsKKy0JR0Vycm9y ICplcnJvciA9IE5VTEw7CistCUd0a01lbnVJdGVtICppdGVtOworLQlHdGtXaWRnZXQgKnJlY2Vu dF9pdGVtOworLQorLQlidXR0b25zX3N0YXRlLm5vY2hhbmdlID0gMTsKKy0KKy0JZ2J1aWxkZXJf ZmlsZSA9IGd1aV9nZW5lcmFsX3VzZXJfZmlsZSgKKy0jaWZkZWYgVVNFX0dUS18zCistCSAgICAi Z3RrX3dlYmVkaXQudWkiCistI2Vsc2UKKy0JICAgICJndGsyX3dlYmVkaXQudWkiCistI2VuZGlm CistCSAgICAsCistCSAgICBGQUxTRSk7CistCWJ1aWxkZXIgPSBndGtfYnVpbGRlcl9uZXcoKTsK Ky0KKy0JaWYgKCFndGtfYnVpbGRlcl9hZGRfZnJvbV9maWxlKGJ1aWxkZXIsIGdidWlsZGVyX2Zp bGUsICZlcnJvcikpIHsKKy0JCWdfd2FybmluZygiQ291bGRuJ3QgbG9hZCBidWlsZGVyIGZpbGU6 ICVzIiwKKy0JCQkgIGVycm9yLT5tZXNzYWdlKTsKKy0JCWdfZXJyb3JfZnJlZShlcnJvcik7Cist CX0KKy0KKy0Jd2luZG93ID0gR1RLX1dJREdFVChndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxk ZXIsICJ3aW5kb3ciKSk7CistCWUtPndpbmRvdyA9IHdpbmRvdzsKKy0JZ3RrX3dpbmRvd19zZXRf dGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCB0aXRsZSk7CistCistCXN0YXR1c2JhciA9IEdUS19X SURHRVQoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdChidWlsZGVyLCAic3RhdHVzYmFyMSIpKTsKKy0J Z3RrX3dpZGdldF9oaWRlKHN0YXR1c2Jhcik7CistCistCWUtPnRvb2xpdGVtcy5vdXRsaW5lX2xl dmVsID0gMDsKKy0JZS0+dG9vbGl0ZW1zLmJvbGQgPSBHVEtfVE9HR0xFX1RPT0xfQlVUVE9OKGd0 a19idWlsZGVyX2dldF9vYmplY3QoYnVpbGRlciwgInRvb2xidXR0b25fYm9sZCIpKTsKKy0JZS0+ dG9vbGl0ZW1zLml0YWxpYyA9IEdUS19UT0dHTEVfVE9PTF9CVVRUT04oZ3RrX2J1aWxkZXJfZ2V0 X29iamVjdChidWlsZGVyLCAidG9vbGJ1dHRvbl9pdGFsaWMiKSk7CistCWUtPnRvb2xpdGVtcy51 bmRlcmxpbmUgPSBHVEtfVE9HR0xFX1RPT0xfQlVUVE9OKGd0a19idWlsZGVyX2dldF9vYmplY3Qo YnVpbGRlciwgInRvb2xidXR0b251bmRlcmxpbmUiKSk7CistCWUtPnRvb2xpdGVtcy5zdHJpa2Ug PSBHVEtfVE9HR0xFX1RPT0xfQlVUVE9OKGd0a19idWlsZGVyX2dldF9vYmplY3QoYnVpbGRlciwg InRvb2xidXR0b25fc3RyaWtldGhyb3VnaCIpKTsKKy0JZS0+dG9vbGl0ZW1zLm9wZW4gPSBHVEtf VE9PTF9CVVRUT04oZ3RrX2J1aWxkZXJfZ2V0X29iamVjdChidWlsZGVyLCAidG9vbGJ1dHRvbl9v cGVuIikpOworLQllLT50b29saXRlbXMubmV3ZG9jID0gR1RLX1RPT0xfQlVUVE9OKGd0a19idWls ZGVyX2dldF9vYmplY3QoYnVpbGRlciwgInRvb2xidXR0b25fbmV3IikpOworLQllLT50b29saXRl bXMuZGVsZXRlZG9jID0gR1RLX1RPT0xfQlVUVE9OKGd0a19idWlsZGVyX2dldF9vYmplY3QoYnVp bGRlciwgInRvb2xidXR0b25fZGVsZXRlIikpOworLQllLT50b29saXRlbXMuY29sb3IgPSBHVEtf Q09MT1JfQlVUVE9OKGd0a19idWlsZGVyX2dldF9vYmplY3QoYnVpbGRlciwgImNvbG9yYnV0dG9u MSIpKTsKKy0JZS0+dG9vbGl0ZW1zLmNiID0gR1RLX0NPTUJPX0JPWF9URVhUKGd0a19idWlsZGVy X2dldF9vYmplY3QoYnVpbGRlciwgImNvbWJvYm94dGV4dDEiKSk7CistCistCWd0a19jb21ib19i b3hfc2V0X2FjdGl2ZSgoR3RrQ29tYm9Cb3ggKillLT50b29saXRlbXMuY2IsIDApOworLQorLQlp dGVtID0gR1RLX01FTlVfSVRFTShndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJtZW51 aXRlbV9yZWNlbnQiKSk7CistCistCXN3aXRjaCAoZS0+dHlwZSkgeworLQljYXNlIFNUVURZUEFE X0VESVRPUjoKKy0JCWd0a193aWRnZXRfaGlkZShHVEtfV0lER0VUKGUtPnRvb2xpdGVtcy5kZWxl dGVkb2MpKTsKKy0KKy0JCXJlY2VudF9pdGVtID0gZ3RrX3JlY2VudF9jaG9vc2VyX21lbnVfbmV3 KCk7CistCQlnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKHJlY2VudF9pdGVtKSwgIml0ZW0tYWN0 aXZhdGVkIiwKKy0JCQkJIEdfQ0FMTEJBQ0socmVjZW50X2l0ZW1fY2IpLCBlKTsKKy0JCWd0a19t ZW51X2l0ZW1fc2V0X3N1Ym1lbnUoaXRlbSwgcmVjZW50X2l0ZW0pOworLQkJYnJlYWs7CistCWNh c2UgTk9URV9FRElUT1I6CistCQlndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdFVChlLT50b29saXRl bXMub3BlbikpOworLQkJZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoZS0+dG9vbGl0ZW1zLm5l d2RvYykpOworLQkJZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoaXRlbSkpOworLQkJYnJlYWs7 CistCWNhc2UgQk9PS19FRElUT1I6CistCQlndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdFVChlLT50 b29saXRlbXMub3BlbikpOworLQkJZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoZS0+dG9vbGl0 ZW1zLm5ld2RvYykpOworLQkJZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoaXRlbSkpOworLQkJ YnJlYWs7CistCX0KKy0KKy0JZS0+bmF2YmFyX2JveCA9IEdUS19XSURHRVQoZ3RrX2J1aWxkZXJf Z2V0X29iamVjdChidWlsZGVyLCAiYm94X25hdmJhciIpKTsKKy0JZS0+Ym94ID0gR1RLX1dJREdF VChndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJ2Ym94MSIpKTsKKy0KKy0Jc2Nyb2xs d2luZG93ID0gR1RLX1dJREdFVChndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJzY3Jv bGxlZHdpbmRvdzEiKSk7CistCWNyZWF0ZV9lZGl0b3Jfd2luZG93KHNjcm9sbHdpbmRvdywgZSk7 CistCWUtPmlzX2NoYW5nZWQgPSBGQUxTRTsKKy0KKy0JLyogVGhpcyBpcyBpbXBvcnRhbnQgKi8K Ky0JZ3RrX2J1aWxkZXJfY29ubmVjdF9zaWduYWxzKGJ1aWxkZXIsIChFRElUT1IgKillKTsKKy0K Ky0JZmluZF9kaWFsb2cud2luZG93ID0gR1RLX1dJREdFVChndGtfYnVpbGRlcl9nZXRfb2JqZWN0 KGJ1aWxkZXIsICJkaWFsb2dfZmluZF9yZXBsYWNlIikpOworLQlmaW5kX2RpYWxvZy5maW5kX2Vu dHJ5ID0gR1RLX1dJREdFVChndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJlbnRyeTEi KSk7CistCWZpbmRfZGlhbG9nLnJlcGxhY2VfZW50cnkgPSBHVEtfV0lER0VUKGd0a19idWlsZGVy X2dldF9vYmplY3QoYnVpbGRlciwgImVudHJ5MiIpKTsKKy0JZmluZF9kaWFsb2cuYm94X3JlcGxh Y2UgPSBHVEtfV0lER0VUKGd0a19idWlsZGVyX2dldF9vYmplY3QoYnVpbGRlciwgImJveDQiKSk7 CistCWZpbmRfZGlhbG9nLmJ1dHRvbl9yZXBsYWNlID0gR1RLX1dJREdFVChndGtfYnVpbGRlcl9n ZXRfb2JqZWN0KGJ1aWxkZXIsICJidXR0b25fcmVwbGFjZSIpKTsKKy0KKy0JZ19vYmplY3RfdW5y ZWYoYnVpbGRlcik7CistCistCXJldHVybiB3aW5kb3c7CistfQorLQorLXN0YXRpYyB2b2lkIF9z YXZlX25vdGUoRURJVE9SICplKQorLXsKKy0JR1N0cmluZyAqZGF0YSA9IGdfc3RyaW5nX25ldygi Iik7CistCistCWVkaXRvcl9nZXRfZG9jdW1lbnRfY29udGVudChkYXRhLCBlKTsKKy0JbWFpbl9z YXZlX25vdGUoZS0+bW9kdWxlLCBlLT5rZXksIGRhdGEtPnN0cik7CistCWUtPmlzX2NoYW5nZWQg PSBGQUxTRTsKKy0JZ19zdHJpbmdfZnJlZShkYXRhLCBUUlVFKTsKKy19CistCistc3RhdGljIHZv aWQgX3NhdmVfYm9vayhFRElUT1IgKmUpCisteworLQlHU3RyaW5nICpkYXRhID0gZ19zdHJpbmdf bmV3KCIiKTsKKy0KKy0JZWRpdG9yX2dldF9kb2N1bWVudF9jb250ZW50KGRhdGEsIGUpOworLQlt YWluX3RyZWVrZXlfc2F2ZV9ib29rX3RleHQoZS0+bW9kdWxlLCBlLT5rZXksIGRhdGEtPnN0cik7 CistCWUtPmlzX2NoYW5nZWQgPSBGQUxTRTsKKy0JZ19zdHJpbmdfZnJlZShkYXRhLCBUUlVFKTsK Ky19CistCistc3RhdGljIHZvaWQgX3NhdmVfZmlsZShFRElUT1IgKmUpCisteworLQlHdGtSZWNl bnRNYW5hZ2VyICpybSA9IE5VTEw7CistCUdTdHJpbmcgKmRhdGEgPSBnX3N0cmluZ19uZXcoIiIp OworLQorLQllZGl0b3JfZ2V0X2RvY3VtZW50X2NvbnRlbnQoZGF0YSwgZSk7CistCVhJX21lc3Nh Z2UoKCIlcyIsIGRhdGEtPnN0cikpOworLQorLQlpZiAoIWUtPmZpbGVuYW1lIHx8ICgwID09IGdf c3RyY21wMCgiVW50aXRsZWQgZG9jdW1lbnQiLCBlLT5maWxlbmFtZSkpIHx8IGdfc3RycnN0cihl LT5maWxlbmFtZSwgIi5zcHQiKSkgeworLQkJR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfZmlsZV9j aG9vc2VyX2RpYWxvZ19uZXcoIlNhdmUgYXMiLAkJICAgICAgLy9jb25zdCBnY2hhciAqdGl0bGUs CistCQkJCQkJCQlOVUxMLAkJCSAgICAgIC8vR3RrV2luZG93ICpwYXJlbnQsCistCQkJCQkJCQlH VEtfRklMRV9DSE9PU0VSX0FDVElPTl9TQVZFLCAvL0d0a0ZpbGVDaG9vc2VyQWN0aW9uIGFjdGlv biwKKy0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMTAsIDApCistCQkJCQkJCQkiX09LIiwKKy0J CQkJCQkJCUdUS19SRVNQT05TRV9PSywKKy0JCQkJCQkJCSJfQ2FuY2VsIiwKKy0JCQkJCQkJCUdU S19SRVNQT05TRV9DQU5DRUwsCistI2Vsc2UKKy0JCQkJCQkJCUdUS19TVE9DS19PSywKKy0JCQkJ CQkJCUdUS19SRVNQT05TRV9PSywKKy0JCQkJCQkJCUdUS19TVE9DS19DQU5DRUwsCistCQkJCQkJ CQlHVEtfUkVTUE9OU0VfQ0FOQ0VMLAorLSNlbmRpZgorLQkJCQkJCQkJTlVMTCk7CistCQlndGtf ZmlsZV9jaG9vc2VyX3NldF9kb19vdmVyd3JpdGVfY29uZmlybWF0aW9uKEdUS19GSUxFX0NIT09T RVIoZGlhbG9nKSwgVFJVRSk7CistCistCQlndGtfZmlsZV9jaG9vc2VyX3NldF9jdXJyZW50X2Zv bGRlcihHVEtfRklMRV9DSE9PU0VSKGRpYWxvZyksCistCQkJCQkJICAgIHNldHRpbmdzLnN0dWR5 cGFkZGlyKTsKKy0JCWlmIChndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpID09IEdU S19SRVNQT05TRV9PSykgeworLQkJCWdjaGFyICpmaWxlbmFtZSA9IGd0a19maWxlX2Nob29zZXJf Z2V0X2ZpbGVuYW1lKEdUS19GSUxFX0NIT09TRVIoZGlhbG9nKSk7CistCQkJZS0+ZmlsZW5hbWUg PSBnX3N0cmR1cChmaWxlbmFtZSk7CistCQkJR0ZpbGUgKmdmaWxlID0gZ19maWxlX3BhcnNlX25h bWUoZmlsZW5hbWUpOworLQkJCWdfZmlsZV9yZXBsYWNlX2NvbnRlbnRzKGdmaWxlLCBkYXRhLT5z dHIsIGRhdGEtPmxlbiwgTlVMTCwgVFJVRSwgR19GSUxFX0NSRUFURV9OT05FLCBOVUxMLCBOVUxM LCBOVUxMKTsgLy9HRXJyb3IgKiplcnJvcgorLQkJfQorLQkJY2hhbmdlX3dpbmRvd190aXRsZShl LT53aW5kb3csIGUtPmZpbGVuYW1lKTsKKy0JCWd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwor LQorLQl9IGVsc2UgeworLQorLQkJR0ZpbGUgKmdmaWxlID0gZ19maWxlX3BhcnNlX25hbWUoZS0+ ZmlsZW5hbWUpOworLQkJZ19maWxlX3JlcGxhY2VfY29udGVudHMoZ2ZpbGUsIGRhdGEtPnN0ciwg ZGF0YS0+bGVuLCBOVUxMLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIE5VTEwsIE5VTEwsIE5V TEwpOyAvL0dFcnJvciAqKmVycm9yCistCX0KKy0KKy0Jcm0gPSBndGtfcmVjZW50X21hbmFnZXJf Z2V0X2RlZmF1bHQoKTsKKy0JZ3RrX3JlY2VudF9tYW5hZ2VyX2FkZF9pdGVtKHJtLCBlLT5maWxl bmFtZSk7CistCistCWUtPmlzX2NoYW5nZWQgPSBGQUxTRTsKKy0JZ19zdHJpbmdfZnJlZShkYXRh LCBUUlVFKTsKKy19CistCistc3RhdGljIHZvaWQgX2xvYWRfZmlsZShFRElUT1IgKmUsIGNvbnN0 IGdjaGFyICpmaWxlbmFtZSkKKy17CistCWNoYXIgKnRleHQgPSBOVUxMOworLQlHdGtSZWNlbnRN YW5hZ2VyICpybSA9IE5VTEw7CistCistCXJtID0gZ3RrX3JlY2VudF9tYW5hZ2VyX2dldF9kZWZh dWx0KCk7CistCWd0a19yZWNlbnRfbWFuYWdlcl9hZGRfaXRlbShybSwgZmlsZW5hbWUpOworLQor LQlpZiAoZS0+ZmlsZW5hbWUpCistCQlnX2ZyZWUoZS0+ZmlsZW5hbWUpOworLQllLT5maWxlbmFt ZSA9IGdfc3RyZHVwKGZpbGVuYW1lKTsKKy0KKy0JWElfbWVzc2FnZSgoIl9sb2FkX2ZpbGUgZmls ZW5hbWU6ICVzIiwgZmlsZW5hbWUpKTsKKy0KKy0JeG1sX3NldF92YWx1ZSgiWGlwaG9zIiwgInN0 dWR5cGFkIiwgImxhc3RmaWxlIiwgZS0+ZmlsZW5hbWUpOworLQlzZXR0aW5ncy5zdHVkeXBhZGZp bGVuYW1lID0geG1sX2dldF92YWx1ZSgic3R1ZHlwYWQiLCAibGFzdGZpbGUiKTsKKy0KKy0JY2hh bmdlX3dpbmRvd190aXRsZShlLT53aW5kb3csIGUtPmZpbGVuYW1lKTsKKy0JdGV4dCA9IGluaGFs ZV90ZXh0X2Zyb21fZmlsZSghc3RybmNtcChmaWxlbmFtZSwgImZpbGU6IiwgNSkKKy0JCQkJCSA/ IGZpbGVuYW1lICsgNQorLQkJCQkJIDogZmlsZW5hbWUpOworLQorLQlYSV9tZXNzYWdlKCgid2Vi IHZpZXcgbG9hZCBzdHJpbmcgWyVzXSIsIHRleHQpKTsKKy0Jd2Via2l0X3dlYl92aWV3X2xvYWRf c3RyaW5nKFdFQktJVF9XRUJfVklFVyhlLT5odG1sX3dpZGdldCksCistCQkJCSAgICB0ZXh0LCAi YXBwbGljYXRpb24veGh0bWwreG1sIiwgInV0Zl84IiwgImZpbGU6Ly8iKTsKKy0KKy0JZ19mcmVl KHRleHQpOworLQllLT5pc19jaGFuZ2VkID0gRkFMU0U7CisgfQorIAorIGdib29sZWFuIGVkaXRv cl9pc19kaXJ0eShFRElUT1IgKmUpCisgeworLQlyZXR1cm4gZS0+aXNfY2hhbmdlZDsKKysJcmV0 dXJuIEZBTFNFOworIH0KKyAKKyB2b2lkIGVkaXRvcl9zYXZlX2Jvb2soRURJVE9SICplKQorIHsK Ky0JaWYgKGVkaXRvcl9pc19kaXJ0eShlKSkKKy0JCV9zYXZlX2Jvb2soZSk7CisgfQorIAorIC8q IHNhdmUgaWYgbmVlZGVkIGlzIGRvbmUgaW4gdHJlZWt5LWVkaXRvci5jIGJlZm9yZSBjYWxsaW5n IGVkaXRvcl9sb2FkX2Jvb2soKSAqLworIHZvaWQgZWRpdG9yX2xvYWRfYm9vayhFRElUT1IgKmUp CisgeworLQlnY2hhciAqdGl0bGUgPSBOVUxMLCAqdGV4dCA9IE5VTEw7CistCistCWlmICghZ19h c2NpaV9pc2RpZ2l0KGUtPmtleVswXSkpCistCQlyZXR1cm47IC8qIG1ha2Ugc3VyZSBpcyBhIG51 bWJlciAob2Zmc2V0KSAqLworLQorLQlYSV9tZXNzYWdlKCgiYm9vazogJXNcbm9mZnNldCA6JXMi LCBlLT5tb2R1bGUsIGUtPmtleSkpOworLQorLQlpZiAoYXRvbChlLT5rZXkpICE9IDApCistCQl0 ZXh0ID0gbWFpbl9nZXRfYm9va19yYXdfdGV4dChlLT5tb2R1bGUsIGUtPmtleSk7CistCWVsc2UK Ky0JCXRleHQgPSBnX3N0cmR1cChlLT5tb2R1bGUpOworLQorLQlpZiAoKHRleHQgPT0gTlVMTCkg fHwgc3RybGVuKHRleHQpID09IDApIHsKKy0JCWlmICh0ZXh0KQorLQkJCWdfZnJlZSh0ZXh0KTsK Ky0KKy0JCS8qIG5ldyBlbXB0eSBkb2N1bWVudCBmcm9tIHRlbXBsYXRlICovCistCQlnY2hhciAq Zm5hbWUgPSBnX2J1aWxkX2ZpbGVuYW1lKHNldHRpbmdzLmdTd29yZERpciwgInN0dWR5cGFkLnNw dCIsIE5VTEwpOworLQkJWElfbWVzc2FnZSgoImVkaXRvciBsb2FkIEJPT0sgWyVzXSIsIGZuYW1l KSk7CistCQl0ZXh0ID0gaW5oYWxlX3RleHRfZnJvbV9maWxlKGZuYW1lKTsKKy0JCWdfZnJlZShm bmFtZSk7CistCX0KKy0KKy0JaWYgKHRleHQgJiYgc3RybGVuKHRleHQpKSB7CistCQl3ZWJraXRf d2ViX3ZpZXdfbG9hZF9zdHJpbmcoKFdlYktpdFdlYlZpZXcgKikKKy0JCQkJCSAgICBlLT5odG1s X3dpZGdldCwKKy0JCQkJCSAgICB0ZXh0LAorLQkJCQkJICAgICJhcHBsaWNhdGlvbi94aHRtbCt4 bWwiLCAidXRmXzgiLAorLQkJCQkJICAgICJmaWxlOi8vIik7CistCX0KKy0KKy0JaWYgKHRleHQp CistCQlnX2ZyZWUodGV4dCk7CistCistCXRpdGxlID0gZ19zdHJkdXBfcHJpbnRmKCIlcyIsIGUt Pm1vZHVsZSk7CistCWNoYW5nZV93aW5kb3dfdGl0bGUoZS0+d2luZG93LCB0aXRsZSk7CistCWdf ZnJlZSh0aXRsZSk7CistCistCWUtPmlzX2NoYW5nZWQgPSBGQUxTRTsKKyB9CisgCisgLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorQEAgLTEwNTQsMjgxICszMjksMTkgQEAgdm9pZCBlZGl0b3JfbG9h ZF9ib29rKEVESVRPUiAqZSkKKyAKKyB2b2lkIGVkaXRvcl9zeW5jX3dpdGhfbWFpbih2b2lkKQor IHsKKy0JR0xpc3QgKnRtcCA9IE5VTEw7CistCistCXRtcCA9IGdfbGlzdF9maXJzdChlZGl0b3Jz X2FsbCk7CistCXdoaWxlICh0bXAgIT0gTlVMTCkgeworLQkJRURJVE9SICplID0gKEVESVRPUiAq KXRtcC0+ZGF0YTsKKy0KKy0JCXN3aXRjaCAoZS0+dHlwZSkgeworLQkJY2FzZSBTVFVEWVBBRF9F RElUT1I6CistCQljYXNlIEJPT0tfRURJVE9SOgorLQkJCWJyZWFrOworLQkJY2FzZSBOT1RFX0VE SVRPUjoKKy0JCQlpZiAoZS0+c3luYykKKy0JCQkJZWRpdG9yX2xvYWRfbm90ZShlLCBOVUxMLAor LQkJCQkJCSBzZXR0aW5ncy5jdXJyZW50dmVyc2UpOworLQkJCWJyZWFrOworLQkJfQorLQkJdG1w ID0gZ19saXN0X25leHQodG1wKTsKKy0JfQorIH0KKyAKKyB2b2lkCisgZWRpdG9yX2xvYWRfbm90 ZShFRElUT1IgKmUsIGNvbnN0IGdjaGFyICptb2R1bGVfbmFtZSwgY29uc3QgZ2NoYXIgKmtleSkK KyB7CistCWdjaGFyICp0aXRsZSA9IE5VTEwsICp0ZXh0ID0gTlVMTDsKKy0KKy0JaWYgKGUtPmlz X2NoYW5nZWQpCistCQlfc2F2ZV9ub3RlKGUpOworLQorLQlpZiAobW9kdWxlX25hbWUpIHsKKy0J CWlmIChlLT5tb2R1bGUpCistCQkJZ19mcmVlKGUtPm1vZHVsZSk7CistCQllLT5tb2R1bGUgPSBn X3N0cmR1cChtb2R1bGVfbmFtZSk7CistCX0KKy0JaWYgKGtleSkgeworLQkJaWYgKGUtPmtleSkK Ky0JCQlnX2ZyZWUoZS0+a2V5KTsKKy0JCWUtPmtleSA9IGdfc3RyZHVwKGtleSk7CistCX0KKy0K Ky0JdGV4dCA9IG1haW5fZ2V0X3Jhd190ZXh0KChnY2hhciAqKWUtPm1vZHVsZSwgKGdjaGFyICop ZS0+a2V5KTsKKy0KKy0JaWYgKCh0ZXh0ID09IE5VTEwpIHx8IHN0cmxlbih0ZXh0KSA9PSAwKSB7 CistCQlpZiAodGV4dCkKKy0JCQlnX2ZyZWUodGV4dCk7CistCistCQkvKiBuZXcgZW1wdHkgZG9j dW1lbnQgZnJvbSB0ZW1wbGF0ZSAqLworLQkJZ2NoYXIgKmZuYW1lID0gZ19idWlsZF9maWxlbmFt ZShzZXR0aW5ncy5nU3dvcmREaXIsICJzdHVkeXBhZC5zcHQiLCBOVUxMKTsKKy0JCVhJX21lc3Nh Z2UoKCJlZGl0b3IgbG9hZCBOT1RFIFslc10iLCBmbmFtZSkpOworLQkJdGV4dCA9IGluaGFsZV90 ZXh0X2Zyb21fZmlsZShmbmFtZSk7CistCQlnX2ZyZWUoZm5hbWUpOworLQl9CistCistCWlmICh0 ZXh0ICYmIHN0cmxlbih0ZXh0KSkgeworLQkJd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKChX ZWJLaXRXZWJWaWV3ICopCistCQkJCQkgICAgZS0+aHRtbF93aWRnZXQsCistCQkJCQkgICAgdGV4 dCwKKy0JCQkJCSAgICAiYXBwbGljYXRpb24veGh0bWwreG1sIiwgInV0Zl84IiwKKy0JCQkJCSAg ICAiZmlsZTovLyIpOworLQl9CistCistCWUtPmlzX2NoYW5nZWQgPSBGQUxTRTsKKy0JaWYgKGUt PnR5cGUgPT0gTk9URV9FRElUT1IpIHsKKy0JCWUtPm5hdmJhci52YWxpZF9rZXkgPSBUUlVFOwor LQkJbWFpbl9uYXZiYXJfdmVyc2VrZXlfc2V0KGUtPm5hdmJhciwgZS0+a2V5KTsKKy0JfQorLQor LQlpZiAodGV4dCkKKy0JCWdfZnJlZSh0ZXh0KTsKKy0KKy0JdGl0bGUgPSBnX3N0cmR1cF9wcmlu dGYoIiVzIC0gJXMiLCBlLT5tb2R1bGUsIGUtPmtleSk7CistCWNoYW5nZV93aW5kb3dfdGl0bGUo ZS0+d2luZG93LCB0aXRsZSk7CistCWdfZnJlZSh0aXRsZSk7CisgfQorIAorIEdfTU9EVUxFX0VY UE9SVCBpbnQKKyBkZWxldGVfZXZlbnQoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50ICpldmVu dCwgRURJVE9SICplKQorIHsKKy0JaWYgKGUtPmlzX2NoYW5nZWQpIHsKKy0JCXN3aXRjaCAoYXNr X2Fib3V0X3NhdmluZyhlKSkgeworLQkJY2FzZSBHU19ZRVM6IC8qIGV4aXQgc2F2aW5nICovCist CQkJYnJlYWs7CistCistCQljYXNlIEdTX05POiAvKiBleGl0IHdpdGhvdXQgc2F2aW5nICovCist CQkJYnJlYWs7CistCistCQljYXNlIEdTX0NBTkNFTDoKKy0JCQlyZXR1cm4gVFJVRTsKKy0JCX0K Ky0JfQorLQllZGl0b3JzX2FsbCA9IGdfbGlzdF9yZW1vdmUoZWRpdG9yc19hbGwsIGUpOworLQlk b19leGl0KGUpOworIAlyZXR1cm4gRkFMU0U7CisgfQorIAorLWdpbnQgYXNrX2Fib3V0X3Nhdmlu ZyhFRElUT1IgKmUpCisteworLQlnaW50IHRlc3Q7CistCUdTX0RJQUxPRyAqaW5mbzsKKy0JZ2No YXIgKmJ1ZiA9IE5VTEw7CistCWdjaGFyICpidWYxID0gTlVMTDsKKy0JZ2NoYXIgKmJ1ZjIgPSBO VUxMOworLQlnY2hhciAqYnVmMyA9IE5VTEw7CistCWdpbnQgcmV0dmFsID0gRkFMU0U7CistCist CXN3aXRjaCAoZS0+dHlwZSkgeworLQljYXNlIEJPT0tfRURJVE9SOgorLQljYXNlIE5PVEVfRURJ VE9SOgorLQkJaW5mbyA9IGd1aV9uZXdfZGlhbG9nKCk7CistCQlpbmZvLT5zdG9ja19pY29uID0K Ky0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMTAsIDApCistCQkgICAgImRpYWxvZy13YXJuaW5n IjsKKy0jZWxzZQorLQkJICAgIEdUS19TVE9DS19ESUFMT0dfV0FSTklORzsKKy0jZW5kaWYKKy0K Ky0JCWJ1ZiA9IGdfc3RyZHVwX3ByaW50ZigiJXM6ICVzIiwgZS0+bW9kdWxlLCBlLT5rZXkpOwor LQkJYnVmMSA9IF8oIlNhdmUgdGhlIGNoYW5nZXMgdG8gZG9jdW1lbnQiKTsKKy0JCWJ1ZjIgPSBf KCJiZWZvcmUgY2xvc2luZz8iKTsKKy0JCWJ1ZjMgPSBnX3N0cmR1cF9wcmludGYoIjxzcGFuIHdl aWdodD1cImJvbGRcIiBzaXplPVwibGFyZ2VyXCI+JXMgJXMgJXM8L3NwYW4+IiwKKy0JCQkJICAg ICAgIGJ1ZjEsIGJ1ZiwgYnVmMik7CistCQlpbmZvLT5sYWJlbF90b3AgPSBidWYzOworLQkJaW5m by0+bGFiZWwyID0gXygiSWYgeW91IGRvbid0IHNhdmUsIGNoYW5nZXMgd2lsbCBiZSBwZXJtYW5l bnRseSBsb3N0LiIpOworLQkJaW5mby0+c2F2ZSA9IFRSVUU7CistCQlpbmZvLT5jYW5jZWwgPSBU UlVFOworLQkJaW5mby0+bm9fc2F2ZSA9IFRSVUU7CistCistCQl0ZXN0ID0gZ3VpX2FsZXJ0X2Rp YWxvZyhpbmZvKTsKKy0JCXJldHZhbCA9IHRlc3Q7CistCistCQlpZiAodGVzdCA9PSBHU19ZRVMp IHsKKy0JCQlpZiAoZS0+dHlwZSA9PSBOT1RFX0VESVRPUikgeworLQkJCQkvKiBzYXZlIG5vdGVz IGFuZCBwcmF5ZXIgbGlzdHMgKi8KKy0JCQkJX3NhdmVfbm90ZShlKTsKKy0KKy0JCQl9IGVsc2Ug eworLQkJCQkvKiBzYXZlIG5vdGVzIGFuZCBwcmF5ZXIgbGlzdHMgKi8KKy0JCQkJX3NhdmVfYm9v ayhlKTsKKy0JCQl9CistCQl9CistCQlnX2ZyZWUoaW5mbyk7CistCQlnX2ZyZWUoYnVmKTsKKy0J CWdfZnJlZShidWYzKTsKKy0JCWJyZWFrOworLQorLQljYXNlIFNUVURZUEFEX0VESVRPUjoKKy0J CWluZm8gPSBndWlfbmV3X2RpYWxvZygpOworLQkJaW5mby0+c3RvY2tfaWNvbiA9CistI2lmIEdU S19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQorLQkJICAgICJkaWFsb2ctd2FybmluZyI7CistI2Vs c2UKKy0JCSAgICBHVEtfU1RPQ0tfRElBTE9HX1dBUk5JTkc7CistI2VuZGlmCistCQlpZiAoc2V0 dGluZ3Muc3R1ZHlwYWRmaWxlbmFtZSkKKy0JCQlidWYgPSBzZXR0aW5ncy5zdHVkeXBhZGZpbGVu YW1lOworLQkJZWxzZQorLQkJCWJ1ZiA9IE5fKCJGaWxlIik7CistCQlidWYxID0gXygiU2F2ZSB0 aGUgY2hhbmdlcyB0byBkb2N1bWVudCIpOworLQkJYnVmMiA9IF8oImJlZm9yZSBjbG9zaW5nPyIp OworLQkJYnVmMyA9IGdfc3RyZHVwX3ByaW50ZigiPHNwYW4gd2VpZ2h0PVwiYm9sZFwiIHNpemU9 XCJsYXJnZXJcIj4lcyAlcyAlczwvc3Bhbj4iLAorLQkJCQkgICAgICAgYnVmMSwgYnVmLCBidWYy KTsKKy0JCWluZm8tPmxhYmVsX3RvcCA9IGJ1ZjM7CistCQlpbmZvLT5sYWJlbDIgPSBfKCJJZiB5 b3UgZG9uJ3Qgc2F2ZSwgY2hhbmdlcyB3aWxsIGJlIHBlcm1hbmVudGx5IGxvc3QuIik7CistCQlp bmZvLT5zYXZlID0gVFJVRTsKKy0JCWluZm8tPmNhbmNlbCA9IFRSVUU7CistCQlpbmZvLT5ub19z YXZlID0gVFJVRTsKKy0KKy0JCXRlc3QgPSBndWlfYWxlcnRfZGlhbG9nKGluZm8pOworLQkJcmV0 dmFsID0gdGVzdDsKKy0JCWlmICh0ZXN0ID09IEdTX1lFUykgeworLQkJCV9zYXZlX2ZpbGUoZSk7 CistCQl9CistCQlnX2ZyZWUoaW5mbyk7CistCQlnX2ZyZWUoYnVmMyk7CistCQlicmVhazsKKy0J fQorLQlzeW5jX3dpbmRvd3MoKTsKKy0JcmV0dXJuIHJldHZhbDsKKy19CistCistc3RhdGljIGdp bnQgX2NyZWF0ZV9uZXcoY29uc3QgZ2NoYXIgKmZpbGVuYW1lLCBjb25zdCBnY2hhciAqa2V5LAor LQkJCWdpbnQgZWRpdG9yX3R5cGUpCisteworLQlFRElUT1IgKmVkaXRvcjsKKy0JR3RrV2lkZ2V0 ICp0b29sYmFyX25hdiA9IE5VTEw7CistCistCWVkaXRvciA9IGdfbmV3KEVESVRPUiwgMSk7Cist CWVkaXRvci0+aHRtbF93aWRnZXQgPSBOVUxMOworLQllZGl0b3ItPnN5bmMgPSBGQUxTRTsKKy0J ZWRpdG9yLT50eXBlID0gZWRpdG9yX3R5cGU7CistCistCXN3aXRjaCAoZWRpdG9yX3R5cGUpIHsK Ky0JY2FzZSBTVFVEWVBBRF9FRElUT1I6CistCQllZGl0b3ItPnN0dWR5cGFkID0gVFJVRTsKKy0J CWVkaXRvci0+Ym9va2VkaXRvciA9IEZBTFNFOworLQkJZWRpdG9yLT5ub3RlZWRpdG9yID0gRkFM U0U7CistCQllZGl0b3ItPm1vZHVsZSA9IE5VTEw7CistCQllZGl0b3ItPmtleSA9IE5VTEw7Cist CQllZGl0b3ItPmZpbGVuYW1lID0gTlVMTDsKKy0JCXdpZGdldHMuc3R1ZHlwYWRfZGlhbG9nID0g ZWRpdG9yX25ldyhfKCJTdHVkeVBhZCIpLCBlZGl0b3IpOworLQorLQkJaWYgKGZpbGVuYW1lKSB7 CistCQkJZWRpdG9yLT5maWxlbmFtZSA9IGdfc3RyZHVwKGZpbGVuYW1lKTsKKy0JCQlfbG9hZF9m aWxlKGVkaXRvciwgZ19zdHJkdXAoZmlsZW5hbWUpKTsKKy0JCX0KKy0JCWJyZWFrOworLQljYXNl IE5PVEVfRURJVE9SOgorLQkJZWRpdG9yLT5ub3RlZWRpdG9yID0gVFJVRTsKKy0JCWVkaXRvci0+ Ym9va2VkaXRvciA9IEZBTFNFOworLQkJZWRpdG9yLT5zdHVkeXBhZCA9IEZBTFNFOworLQkJZWRp dG9yLT5maWxlbmFtZSA9IE5VTEw7CistCQllZGl0b3ItPm1vZHVsZSA9IGdfc3RyZHVwKGZpbGVu YW1lKTsKKy0JCWVkaXRvci0+a2V5ID0gZ19zdHJkdXAoa2V5KTsKKy0JCWVkaXRvci0+bmF2YmFy LmtleSA9IE5VTEw7CistCQllZGl0b3JfbmV3KF8oIk5vdGUgRWRpdG9yIiksIGVkaXRvcik7Cist CistCQl0b29sYmFyX25hdiA9IGd1aV9uYXZiYXJfdmVyc2VrZXlfZWRpdG9yX25ldyhlZGl0b3Ip OworLQkJZ3RrX3dpZGdldF9zaG93KHRvb2xiYXJfbmF2KTsKKy0JCWd0a19ib3hfcGFja19zdGFy dChHVEtfQk9YKGVkaXRvci0+bmF2YmFyX2JveCksCistCQkJCSAgIEdUS19XSURHRVQodG9vbGJh cl9uYXYpLCBGQUxTRSwgVFJVRSwKKy0JCQkJICAgMCk7CistCistCQllZGl0b3JfbG9hZF9ub3Rl KGVkaXRvciwgTlVMTCwgTlVMTCk7CistCQlicmVhazsKKy0JY2FzZSBCT09LX0VESVRPUjoKKy0J CWVkaXRvci0+Ym9va2VkaXRvciA9IFRSVUU7CistCQllZGl0b3ItPm5vdGVlZGl0b3IgPSBGQUxT RTsKKy0JCWVkaXRvci0+c3R1ZHlwYWQgPSBGQUxTRTsKKy0JCWVkaXRvci0+ZmlsZW5hbWUgPSBO VUxMOworLQkJZWRpdG9yLT5tb2R1bGUgPSBnX3N0cmR1cChmaWxlbmFtZSk7CistCQllZGl0b3It PmtleSA9IGdfc3RyZHVwKGtleSk7CistCQllZGl0b3JfbmV3KF8oIlByYXllciBMaXN0L0pvdXJu YWwgRWRpdG9yIiksIGVkaXRvcik7CistCistCQlHdGtXaWRnZXQgKmJveDsKKy0JCVVJX1ZCT1go Ym94LCBGQUxTRSwgMCk7CistCQlndGtfd2lkZ2V0X3Nob3coYm94KTsKKy0JCUd0a1dpZGdldCAq aHBhbmVkMSA9IFVJX0hQQU5FKCk7CistCQlndGtfd2lkZ2V0X3Nob3coaHBhbmVkMSk7CistCQln dGtfcGFuZWRfcGFjazIoR1RLX1BBTkVEKGhwYW5lZDEpLCBib3gsIFRSVUUsIFRSVUUpOworLQor LQkJR3RrV2lkZ2V0ICpzY3JvbGxiYXIgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBO VUxMKTsKKy0JCWd0a193aWRnZXRfc2hvdyhzY3JvbGxiYXIpOworLQkJZ3RrX3BhbmVkX3BhY2sx KEdUS19QQU5FRChocGFuZWQxKSwgR1RLX1dJREdFVChzY3JvbGxiYXIpLAorLQkJCQlUUlVFLCBU UlVFKTsKKy0JCWd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lO RE9XKHNjcm9sbGJhciksCistCQkJCQkgICAgICAgR1RLX1BPTElDWV9BVVRPTUFUSUMsCistCQkJ CQkgICAgICAgR1RLX1BPTElDWV9BVVRPTUFUSUMpOworLQkJZ3RrX3Njcm9sbGVkX3dpbmRvd19z ZXRfc2hhZG93X3R5cGUoKEd0a1Njcm9sbGVkV2luZG93ICopCistCQkJCQkJICAgIHNjcm9sbGJh ciwKKy0JCQkJCQkgICAgc2V0dGluZ3Muc2hhZG93X3R5cGUpOworLQorLQkJZWRpdG9yLT50cmVl dmlldyA9IGd1aV9jcmVhdGVfZWRpdG9yX3RyZWUoZWRpdG9yKTsKKy0JCWd0a193aWRnZXRfc2hv dyhlZGl0b3ItPnRyZWV2aWV3KTsKKy0JCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIo c2Nyb2xsYmFyKSwKKy0JCQkJICBlZGl0b3ItPnRyZWV2aWV3KTsKKy0JCWd0a19wYW5lZF9zZXRf cG9zaXRpb24oR1RLX1BBTkVEKGhwYW5lZDEpLCAxMjUpOworLQkJZ3RrX3RyZWVfdmlld19leHBh bmRfYWxsKChHdGtUcmVlVmlldyAqKWVkaXRvci0+dHJlZXZpZXcpOworLS8vIHRoZW4gd2Ugc2hv dWxkIGV4cGFuZCBvbiB0aGUgaXRlbSB0byB3aGljaCB3ZSd2ZSBvcGVuZWQgZm9yIGVkaXQuCist CistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQorLQkJZ3RrX2NvbnRhaW5lcl9hZGQo R1RLX0NPTlRBSU5FUihib3gpLCBlZGl0b3ItPmJveCk7CistI2Vsc2UKKy0JCWd0a193aWRnZXRf cmVwYXJlbnQoZWRpdG9yLT5ib3gsIGJveCk7CistI2VuZGlmCistCistCQlndGtfY29udGFpbmVy X2FkZChHVEtfQ09OVEFJTkVSKGVkaXRvci0+d2luZG93KSwgaHBhbmVkMSk7CistCistCQllZGl0 b3JfbG9hZF9ib29rKGVkaXRvcik7CistCistCQlicmVhazsKKy0JfQorLQllZGl0b3ItPmlzX2No YW5nZWQgPSBGQUxTRTsKKy0JZWRpdG9yc19hbGwgPSBnX2xpc3RfYXBwZW5kKGVkaXRvcnNfYWxs LCAoRURJVE9SICopZWRpdG9yKTsKKy0JcmV0dXJuIDE7CistfQorLQorIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAgKiBOYW1lCisgICogICBlZGl0b3JfY3JlYXRlX25ldworQEAgLTEzNDgsODUg KzM2MSwxMSBAQCBzdGF0aWMgZ2ludCBfY3JlYXRlX25ldyhjb25zdCBnY2hhciAqZmlsZW5hbWUs IGNvbnN0IGdjaGFyICprZXksCisgZ2ludCBlZGl0b3JfY3JlYXRlX25ldyhjb25zdCBnY2hhciAq ZmlsZW5hbWUsIGNvbnN0IGdjaGFyICprZXksCisgCQkgICAgICAgZ2ludCBlZGl0b3JfdHlwZSkK KyB7CistCUdMaXN0ICp0bXAgPSBOVUxMOworLQorLQl0bXAgPSBnX2xpc3RfZmlyc3QoZWRpdG9y c19hbGwpOworLQl3aGlsZSAodG1wICE9IE5VTEwpIHsKKy0JCUVESVRPUiAqZSA9IChFRElUT1Ig Kil0bXAtPmRhdGE7CistCQlzd2l0Y2ggKGVkaXRvcl90eXBlKSB7CistCQljYXNlIFNUVURZUEFE X0VESVRPUjoKKy0JCQlpZiAoZS0+c3R1ZHlwYWQpIHsKKy0JCQkJaWYgKGVkaXRvcl9pc19kaXJ0 eShlKSkKKy0JCQkJCV9zYXZlX2ZpbGUoZSk7CistCQkJCWlmIChlLT5maWxlbmFtZSkKKy0JCQkJ CWdfZnJlZShlLT5maWxlbmFtZSk7CistCQkJCWUtPmZpbGVuYW1lID0gZ19zdHJkdXAoZmlsZW5h bWUpOworLQkJCQlndGtfd2lkZ2V0X3Nob3coZS0+d2luZG93KTsKKy0JCQkJZ2RrX3dpbmRvd19y YWlzZShndGtfd2lkZ2V0X2dldF9wYXJlbnRfd2luZG93KEdUS19XSURHRVQoZS0+d2luZG93KSkp OworLQorLQkJCQlfbG9hZF9maWxlKGUsIGdfc3RyZHVwKGZpbGVuYW1lKSk7CistCQkJCXJldHVy biAxOworLQkJCX0KKy0JCQlicmVhazsKKy0JCWNhc2UgTk9URV9FRElUT1I6CistCQkJaWYgKCFl LT5ub3RlZWRpdG9yKQorLQkJCQlicmVhazsKKy0JCQlpZiAoZWRpdG9yX2lzX2RpcnR5KGUpKQor LQkJCQlfc2F2ZV9ub3RlKGUpOworLQkJCWlmIChlLT5tb2R1bGUpCistCQkJCWdfZnJlZShlLT5t b2R1bGUpOworLQkJCWUtPm1vZHVsZSA9IGdfc3RyZHVwKGZpbGVuYW1lKTsKKy0JCQlpZiAoZS0+ a2V5KQorLQkJCQlnX2ZyZWUoZS0+a2V5KTsKKy0JCQllLT5rZXkgPSBnX3N0cmR1cChrZXkpOwor LQkJCWd0a193aWRnZXRfc2hvdyhlLT53aW5kb3cpOworLQkJCWdka193aW5kb3dfcmFpc2UoZ3Rr X3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyhHVEtfV0lER0VUKGUtPndpbmRvdykpKTsKKy0KKy0J CQllZGl0b3JfbG9hZF9ub3RlKGUsIE5VTEwsIE5VTEwpOworLQorLQkJCXJldHVybiAxOworLQkJ CWJyZWFrOworLQkJY2FzZSBCT09LX0VESVRPUjoKKy0JCQlpZiAoIWUtPmJvb2tlZGl0b3IpCist CQkJCWJyZWFrOworLQkJCWlmIChlZGl0b3JfaXNfZGlydHkoZSkpCistCQkJCV9zYXZlX2Jvb2so ZSk7CistCQkJaWYgKGUtPm1vZHVsZSkKKy0JCQkJZ19mcmVlKGUtPm1vZHVsZSk7CistCQkJZS0+ bW9kdWxlID0gZ19zdHJkdXAoZmlsZW5hbWUpOworLQkJCWlmIChlLT5rZXkpCistCQkJCWdfZnJl ZShlLT5rZXkpOworLQkJCWUtPmtleSA9IGdfc3RyZHVwKGtleSk7CistCQkJZ3RrX3dpZGdldF9z aG93KGUtPndpbmRvdyk7CistCQkJZ2RrX3dpbmRvd19yYWlzZShndGtfd2lkZ2V0X2dldF9wYXJl bnRfd2luZG93KEdUS19XSURHRVQoZS0+d2luZG93KSkpOworLQkJCW1haW5fbG9hZF9ib29rX3Ry ZWVfaW5fZWRpdG9yKEdUS19UUkVFX1ZJRVcoZS0+dHJlZXZpZXcpLAorLQkJCQkJCSAgICAgIGUt Pm1vZHVsZSk7CistCQkJZWRpdG9yX2xvYWRfYm9vayhlKTsKKy0KKy0JCQlyZXR1cm4gMTsKKy0J CQlicmVhazsKKy0JCX0KKy0JCXRtcCA9IGdfbGlzdF9uZXh0KHRtcCk7CistCX0KKy0JWElfbWVz c2FnZSgoImZpbGVuYW1lICVzLCBrZXkgJXMiLAorLQkJICAgIChmaWxlbmFtZSA/IGZpbGVuYW1l IDogIi1udWxsLSIpLAorLQkJICAgIChrZXkgPyBrZXkgOiAiLW51bGwtIikpKTsKKy0JcmV0dXJu IF9jcmVhdGVfbmV3KGZpbGVuYW1lLCBrZXksIGVkaXRvcl90eXBlKTsKKysJcmV0dXJuIDE7Cisg fQorIAorIHZvaWQgZWRpdG9yX21heWJlX3NhdmVfYWxsKHZvaWQpCisgeworLQlHTGlzdCAqdG1w LCAqdG1wMjsKKy0KKy0JdG1wID0gZ19saXN0X2ZpcnN0KGVkaXRvcnNfYWxsKTsKKy0Jd2hpbGUg KHRtcCAhPSBOVUxMKSB7CistCQkvKiAybmRhcnkgbGlzdCBjaGFzZXI6CistCQkgICBlbGVtZW50 cyB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIHNhdmVyLiAqLworLQkJdG1wMiA9IGdfbGlzdF9uZXh0 KHRtcCk7CistCistCQlkZWxldGVfZXZlbnQoTlVMTCwgTlVMTCwgKEVESVRPUiAqKXRtcC0+ZGF0 YSk7CistCQl0bXAgPSB0bXAyOworLQl9CisgfQorIAorICNlbmRpZiAvKiBVU0VfV0VCS0lUX0VE SVRPUiAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy94aXBob3MvcGF0Y2hlcy94aXBob3MtZ2xpYi5w YXRjaCBiL3NyY3BrZ3MveGlwaG9zL3BhdGNoZXMveGlwaG9zLWdsaWIucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI3ZjNhNDkyNzY3ZThkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy94aXBob3MvcGF0Y2hlcy94aXBob3MtZ2xpYi5wYXRjaApAQCAt MCwwICsxLDEwIEBACistLS0gYS9jbWFrZS9jb25maWcuaC5jbWFrZS5pbgorKysrIGIvY21ha2Uv Y29uZmlnLmguY21ha2UuaW4KK0BAIC02NSwzICs2NSw3IEBACisgCisgCisgI2VuZGlmCisrCisr I2lmbmRlZiBHTElCX1ZFUlNJT05fTUlOX1JFUVVJUkVECisrI2RlZmluZSBHTElCX1ZFUlNJT05f TUlOX1JFUVVJUkVEIChHTElCX1ZFUlNJT05fMl8yNikKKysjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MveGlwaG9zL3RlbXBsYXRlIGIvc3JjcGtncy94aXBob3MvdGVtcGxhdGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjRlMDE3YjE4MGYzZmMzCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy94aXBob3MvdGVtcGxhdGUKQEAgLTAsMCArMSwxNyBAQAorIyBU ZW1wbGF0ZSBmaWxlIGZvciAneGlwaG9zJworcGtnbmFtZT14aXBob3MKK3ZlcnNpb249NC4yLjEK K3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPWNtYWtlCitob3N0bWFrZWRlcGVuZHM9ImFwcHN0cmVh bS1nbGliLWRldmVsIHBrZy1jb25maWcgZ2xpYi1kZXZlbCBkYnVzLWdsaWItZGV2ZWwKKyBnZXR0 ZXh0IGRlc2t0b3AtZmlsZS11dGlscyBsaWJ4bWwyLXB5dGhvbjMgcHl0aG9uMy1seG1sIHllbHAt dG9vbHMgemlwIgorbWFrZWRlcGVuZHM9ImJpYmxlc3luYy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwg Z3RrbW0tZGV2ZWwgaW50bHRvb2wgaXRzdG9vbAorIGxpYmZmaS1kZXZlbCBsaWJzb3VwLWRldmVs IGxpYndlYmtpdGd0azYwLWRldmVsIGxpYnhzbHQgbWluaXppcC1kZXZlbAorIHN3b3JkLWRldmVs IHV0aWwtbGludXggd2Via2l0Mmd0ay1kZXZlbCB6aXAiCitkZXBlbmRzPSJiaWJsZXN5bmMgZGJ1 cy1nbGliIGljdSBpY3UtbGlicyBtaW5pemlwIHN3b3JkIHdlYmtpdDJndGsiCitzaG9ydF9kZXNj PSJHVEszIEJpYmxlIHRvb2wgZm9yIHJlYWRpbmcsIHN0dWR5LCBhbmQgcmVzZWFyY2giCittYWlu dGFpbmVyPSJqb25waWt1bSA8amNiQHBpa3VtLnh5ej4iCitsaWNlbnNlPSJHUEwtMi4wLW9yLWxh dGVyIgoraG9tZXBhZ2U9Imh0dHBzOi8veGlwaG9zLm9yZy8iCitkaXN0ZmlsZXM9Imh0dHBzOi8v Z2l0aHViLmNvbS9jcm9zc3dpcmUveGlwaG9zL3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0v eGlwaG9zLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09ZDM0MzUzZjYyMjI0MzAyYzkyNDc1 N2ZjYTU1ZmYwZmMxOWY5NjgxNWYyMGI4OTMyNzljZWVmM2Q3ZDA1NDEyOAo= --===============8052810562011398800==--