From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17899 invoked by alias); 17 Jul 2012 09:42:42 -0000 Received: (qmail 17870 invoked by uid 22791); 17 Jul 2012 09:42:41 -0000 X-SWARE-Spam-Status: No, hits=-4.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-gg0-f175.google.com (HELO mail-gg0-f175.google.com) (209.85.161.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 17 Jul 2012 09:42:28 +0000 Received: by ggnp4 with SMTP id p4so160579ggn.20 for ; Tue, 17 Jul 2012 02:42:27 -0700 (PDT) MIME-Version: 1.0 Received: by 10.236.197.42 with SMTP id s30mr1171883yhn.64.1342518147173; Tue, 17 Jul 2012 02:42:27 -0700 (PDT) Received: by 10.236.139.201 with HTTP; Tue, 17 Jul 2012 02:42:26 -0700 (PDT) Date: Tue, 17 Jul 2012 09:42:00 -0000 Message-ID: Subject: [Patch, Fortran] gfc_notify_std cleanup From: Janus Weil To: gfortran , gcc-patches Content-Type: multipart/mixed; boundary=90e6ba475d45444c4b04c5035d6a Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-07/txt/msg00709.txt.bz2 --90e6ba475d45444c4b04c5035d6a Content-Type: text/plain; charset=ISO-8859-1 Content-length: 551 Hi all, here is a patch which makes 'gfc_notify_std' print the relevant version of the Fortran standard automatically when issuing errors/warnings. Up to now this had to be done manually and was forgotten (or inconsistent) in a several cases, as noted e.g. in PR 51081. The interesting part of the patch are the two hunks in error.c, the rest is just mechanically removing the explicit mention of "Fortran XXXX" (or similar) in the error strings. Patch was regtested on x86_64-unknown-linux-gnu. Ok for trunk (with proper ChangeLog)? Cheers, Janus --90e6ba475d45444c4b04c5035d6a Content-Type: application/octet-stream; name="pr51081_v2.diff" Content-Disposition: attachment; filename="pr51081_v2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4qslzzd1 Content-length: 90720 SW5kZXg6IGdjYy9mb3J0cmFuL2ludGVyZmFjZS5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy9mb3J0cmFuL2ludGVyZmFjZS5jCShyZXZpc2lv biAxODk1NjEpCisrKyBnY2MvZm9ydHJhbi9pbnRlcmZhY2UuYwkod29ya2lu ZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIGdmY19tYXRjaF9hYnN0cmFj dF9pbnRlcmZhY2UgKHZvaWQpCiB7CiAgIG1hdGNoIG07CiAKLSAgaWYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBB QlNUUkFDVCBJTlRFUkZBQ0UgYXQgJUMiKQorICBpZiAoZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfRjIwMDMsICJBQlNUUkFDVCBJTlRFUkZBQ0UgYXQgJUMi KQogCQkgICAgICA9PSBGQUlMVVJFKQogICAgIHJldHVybiBNQVRDSF9FUlJP UjsKIApAQCAtMTMxMyw3ICsxMzEzLDcgQEAgY2hlY2tfaW50ZXJmYWNlMCAo Z2ZjX2ludGVyZmFjZSAqcCwgY29uc3QgY2hhciAqaW4KIAogICAgICAgLyog RjIwMDMsIEMxMjA3LiBGMjAwOCwgQzEyMDcuICAqLwogICAgICAgaWYgKHAt PnN5bS0+YXR0ci5wcm9jID09IFBST0NfSU5URVJOQUwKLQkgICYmIGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRm9ydHJhbiAyMDA4OiBJbnRl cm5hbCBwcm9jZWR1cmUgIgorCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDgsICJJbnRlcm5hbCBwcm9jZWR1cmUgIgogCQkJICAgICAiJyVz JyBpbiAlcyBhdCAlTCIsIHAtPnN5bS0+bmFtZSwgaW50ZXJmYWNlX25hbWUs CiAJCQkgICAgICZwLT5zeW0tPmRlY2xhcmVkX2F0KSA9PSBGQUlMVVJFKQog CXJldHVybiAxOwpJbmRleDogZ2NjL2ZvcnRyYW4vaW50cmluc2ljLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vaW50cmluc2lj LmMJKHJldmlzaW9uIDE4OTU2MSkKKysrIGdjYy9mb3J0cmFuL2ludHJpbnNp Yy5jCSh3b3JraW5nIGNvcHkpCkBAIC00MDgzLDcgKzQwODMsNyBAQCBnZmNf aW50cmluc2ljX2Z1bmNfaW50ZXJmYWNlIChnZmNfZXhwciAqZXhwciwgaW50 CiAgIGlmICgoaXN5bS0+aWQgPT0gR0ZDX0lTWU1fUkVBTCB8fCBpc3ltLT5p ZCA9PSBHRkNfSVNZTV9EQkxFCiAgICAgICAgfHwgaXN5bS0+aWQgPT0gR0ZD X0lTWU1fQ01QTFgpCiAgICAgICAmJiBnZmNfaW5pdF9leHByX2ZsYWcKLSAg ICAgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJh biAyMDAzOiBGdW5jdGlvbiAnJXMnICIKKyAgICAgICYmIGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiRnVuY3Rpb24gJyVzJyAiCiAJCQkgImFz IGluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24gYXQgJUwiLCBuYW1lLAogCQkJ ICZleHByLT53aGVyZSkgPT0gRkFJTFVSRSkKICAgICB7CkBAIC00MTU5LDcg KzQxNTksNyBAQCBnb3Rfc3BlY2lmaWM6CiAgICAgICAgICAgIHdoZXJlIGVh Y2ggYXJndW1lbnQgaXMgYW4gaW5pdGlhbGl6YXRpb24gZXhwcmVzc2lvbiAg Ki8KIAogICBpZiAoZ2ZjX2luaXRfZXhwcl9mbGFnICYmIGlzeW0tPmVsZW1l bnRhbCAmJiBmbGFnCi0gICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NU RF9GMjAwMywgIkZvcnRyYW4gMjAwMzogRWxlbWVudGFsIGZ1bmN0aW9uICIK KyAgICAgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRWxl bWVudGFsIGZ1bmN0aW9uICIKIAkJCSJhcyBpbml0aWFsaXphdGlvbiBleHBy ZXNzaW9uIHdpdGggbm9uLWludGVnZXIvbm9uLSIKIAkJICAgICAgICAiY2hh cmFjdGVyIGFyZ3VtZW50cyBhdCAlTCIsICZleHByLT53aGVyZSkgPT0gRkFJ TFVSRSkKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CkluZGV4OiBnY2MvZm9y dHJhbi9zeW1ib2wuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Zm9ydHJhbi9zeW1ib2wuYwkocmV2aXNpb24gMTg5NTYxKQorKysgZ2NjL2Zv cnRyYW4vc3ltYm9sLmMJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEs NyBAQCBjaGVja19jb25mbGljdCAoc3ltYm9sX2F0dHJpYnV0ZSAqYXR0ciwg Y29uc3QgY2hhcgogICAgIGNvbmYgKGV4dGVybmFsLCBzdWJyb3V0aW5lKTsK IAogICBpZiAoYXR0ci0+cHJvY19wb2ludGVyICYmIGdmY19ub3RpZnlfc3Rk IChHRkNfU1REX0YyMDAzLAotCQkJICAgICJGb3J0cmFuIDIwMDM6IFByb2Nl ZHVyZSBwb2ludGVyIGF0ICVDIikgPT0gRkFJTFVSRSkKKwkJCSAgICAiUHJv Y2VkdXJlIHBvaW50ZXIgYXQgJUMiKSA9PSBGQUlMVVJFKQogICAgIHJldHVy biBGQUlMVVJFOwogCiAgIGNvbmYgKGFsbG9jYXRhYmxlLCBwb2ludGVyKTsK QEAgLTc3MiwxMyArNzcyLDEzIEBAIGNvbmZsaWN0OgogY29uZmxpY3Rfc3Rk OgogICBpZiAobmFtZSA9PSBOVUxMKQogICAgIHsKLSAgICAgIHJldHVybiBn ZmNfbm90aWZ5X3N0ZCAoc3RhbmRhcmQsICJGb3J0cmFuIDIwMDM6ICVzIGF0 dHJpYnV0ZSAiCisgICAgICByZXR1cm4gZ2ZjX25vdGlmeV9zdGQgKHN0YW5k YXJkLCAiJXMgYXR0cmlidXRlICIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIndpdGggJXMgYXR0cmlidXRlIGF0ICVMIiwgYTEsIGEyLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSk7CiAgICAgfQogICBl bHNlCiAgICAgewotICAgICAgcmV0dXJuIGdmY19ub3RpZnlfc3RkIChzdGFu ZGFyZCwgIkZvcnRyYW4gMjAwMzogJXMgYXR0cmlidXRlICIKKyAgICAgIHJl dHVybiBnZmNfbm90aWZ5X3N0ZCAoc3RhbmRhcmQsICIlcyBhdHRyaWJ1dGUg IgogCQkJICAgICAid2l0aCAlcyBhdHRyaWJ1dGUgaW4gJyVzJyBhdCAlTCIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGExLCBhMiwgbmFtZSwg d2hlcmUpOwogICAgIH0KQEAgLTE1OTcsNyArMTU5Nyw3IEBAIGdmY19hZGRf aXNfYmluZF9jIChzeW1ib2xfYXR0cmlidXRlICphdHRyLCBjb25zdCBjCiAg IGlmICh3aGVyZSA9PSBOVUxMKQogICAgIHdoZXJlID0gJmdmY19jdXJyZW50 X2xvY3VzOwogICAgCi0gIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9G MjAwMywgIkZvcnRyYW4gMjAwMzogQklORChDKSBhdCAlTCIsIHdoZXJlKQor ICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJCSU5EKEMp IGF0ICVMIiwgd2hlcmUpCiAgICAgICA9PSBGQUlMVVJFKQogICAgIHJldHVy biBGQUlMVVJFOwogCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBnZmNfYWRkX2V4 dGVuc2lvbiAoc3ltYm9sX2F0dHJpYnV0ZSAqYXR0ciwgbG9jdXMgKgogICBl bHNlCiAgICAgYXR0ci0+ZXh0ZW5zaW9uID0gMTsKIAotICBpZiAoZ2ZjX25v dGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IEVYVEVO RFMgYXQgJUwiLCB3aGVyZSkKKyAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiRVhURU5EUyBhdCAlTCIsIHdoZXJlKQogCT09IEZBSUxV UkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7CiAKQEAgLTQ3NDYsNyArNDc0Niw3 IEBAIGdmY19jaGVja19zeW1ib2xfdHlwZWQgKGdmY19zeW1ib2wqIHN5bSwg Z2ZjX25hbWVzCiAJfQogCiAgICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdG Q19TVERfR05VLAotCQkJICAiRXh0ZW5zaW9uOiBTeW1ib2wgJyVzJyBpcyB1 c2VkIGJlZm9yZSIKKwkJCSAgIlN5bWJvbCAnJXMnIGlzIHVzZWQgYmVmb3Jl IgogCQkJICAiIGl0IGlzIHR5cGVkIGF0ICVMIiwgc3ltLT5uYW1lLCAmd2hl cmUpID09IEZBSUxVUkUpCiAJcmV0dXJuIEZBSUxVUkU7CiAgICAgfQpJbmRl eDogZ2NjL2ZvcnRyYW4vZGVjbC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGdjYy9mb3J0cmFuL2RlY2wuYwkocmV2aXNpb24gMTg5NTYxKQorKysg Z2NjL2ZvcnRyYW4vZGVjbC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNyAr MjY5LDcgQEAgdmFyX2VsZW1lbnQgKGdmY19kYXRhX3ZhcmlhYmxlICpuZXdf dmFyKQogCiAgIGlmIChnZmNfY3VycmVudF9zdGF0ZSAoKSAhPSBDT01QX0JM T0NLX0RBVEEKICAgICAgICYmIHN5bS0+YXR0ci5pbl9jb21tb24KLSAgICAg ICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIkV4dGVuc2lvbjog aW5pdGlhbGl6YXRpb24gb2YgIgorICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQg KEdGQ19TVERfR05VLCAiaW5pdGlhbGl6YXRpb24gb2YgIgogCQkJICJjb21t b24gYmxvY2sgdmFyaWFibGUgJyVzJyBpbiBEQVRBIHN0YXRlbWVudCBhdCAl QyIsCiAJCQkgc3ltLT5uYW1lKSA9PSBGQUlMVVJFKQogICAgIHJldHVybiBN QVRDSF9FUlJPUjsKQEAgLTY3Nyw3ICs2NzcsNyBAQCBjaGFyX2xlbl9wYXJh bV92YWx1ZSAoZ2ZjX2V4cHIgKipleHByLCBib29sICpkZWZlcgogCiAgIGlm IChnZmNfbWF0Y2hfY2hhciAoJzonKSA9PSBNQVRDSF9ZRVMpCiAgICAgewot ICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9y dHJhbiAyMDAzOiBkZWZlcnJlZCB0eXBlICIKKyAgICAgIGlmIChnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgImRlZmVycmVkIHR5cGUgIgogCQkJ ICAicGFyYW1ldGVyIGF0ICVDIikgPT0gRkFJTFVSRSkKIAlyZXR1cm4gTUFU Q0hfRVJST1I7CiAKQEAgLTczOSw3ICs3MzksNyBAQCBtYXRjaF9jaGFyX2xl bmd0aCAoZ2ZjX2V4cHIgKipleHByLCBib29sICpkZWZlcnJlZAogCiAgIGlm IChtID09IE1BVENIX1lFUykKICAgICB7Ci0gICAgICBpZiAoZ2ZjX25vdGlm eV9zdGQgKEdGQ19TVERfRjk1X09CUywgIk9ic29sZXNjZW50IGZlYXR1cmU6 ICIKKyAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GOTVfT0JT LAogCQkJICAiT2xkLXN0eWxlIGNoYXJhY3RlciBsZW5ndGggYXQgJUMiKSA9 PSBGQUlMVVJFKQogCXJldHVybiBNQVRDSF9FUlJPUjsKICAgICAgICpleHBy ID0gZ2ZjX2dldF9pbnRfZXhwciAoZ2ZjX2RlZmF1bHRfaW50ZWdlcl9raW5k LCBOVUxMLCBsZW5ndGgpOwpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgZ2ZjX3Zl cmlmeV9jX2ludGVyb3BfcGFyYW0gKGdmY19zeW1ib2wgKnN5bSkKIAkgICAg ICByZXR2YWwgPSBGQUlMVVJFOwogCSAgICB9CiAJICBlbHNlIGlmIChzeW0t PmF0dHIub3B0aW9uYWwgPT0gMQotCQkgICAmJiBnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9GMjAwOF9UUywgIlRTMjkxMTM6IFZhcmlhYmxlICclcycgIgor CQkgICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOF9UUywgIlZh cmlhYmxlICclcycgIgogCQkJCSAgICAgICJhdCAlTCB3aXRoIE9QVElPTkFM IGF0dHJpYnV0ZSBpbiAiCiAJCQkJICAgICAgInByb2NlZHVyZSAnJXMnIHdo aWNoIGlzIEJJTkQoQykiLAogCQkJCSAgICAgIHN5bS0+bmFtZSwgJihzeW0t PmRlY2xhcmVkX2F0KSwKQEAgLTE3MzgsNyArMTczOCw3IEBAIG1hdGNoX3Bv aW50ZXJfaW5pdCAoZ2ZjX2V4cHIgKippbml0LCBpbnQgcHJvY3B0cikKICAg aWYgKCFwcm9jcHRyKQogICAgIGdmY19yZXNvbHZlX2V4cHIgKCppbml0KTsK ICAgCi0gIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkZv cnRyYW4gMjAwODogbm9uLU5VTEwgcG9pbnRlciAiCisgIGlmIChnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIm5vbi1OVUxMIHBvaW50ZXIgIgog CQkgICAgICAiaW5pdGlhbGl6YXRpb24gYXQgJUMiKSA9PSBGQUlMVVJFKQog ICAgIHJldHVybiBNQVRDSF9FUlJPUjsKIApAQCAtMTgzNSw3ICsxODM1LDcg QEAgdmFyaWFibGVfZGVjbCAoaW50IGVsZW0pCiAKICAgICAgIGlmIChhcy0+ dHlwZSA9PSBBU19JTVBMSUVEX1NIQVBFCiAJICAmJiBnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwOCwKLQkJCSAgICAgIkZvcnRyYW4gMjAwODogSW1w bGllZC1zaGFwZSBhcnJheSBhdCAlTCIsCisJCQkgICAgICJJbXBsaWVkLXNo YXBlIGFycmF5IGF0ICVMIiwKIAkJCSAgICAgJnZhcl9sb2N1cykgPT0gRkFJ TFVSRSkKIAl7CiAJICBtID0gTUFUQ0hfRVJST1I7CkBAIC0xOTk0LDcgKzE5 OTQsNyBAQCB2YXJpYWJsZV9kZWNsIChpbnQgZWxlbSkKIAogICBpZiAoIWNv bG9uX3NlZW4gJiYgZ2ZjX21hdGNoICgiIC8iKSA9PSBNQVRDSF9ZRVMpCiAg ICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwg IkV4dGVuc2lvbjogT2xkLXN0eWxlICIKKyAgICAgIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9HTlUsICJPbGQtc3R5bGUgIgogCQkJICAiaW5pdGlh bGl6YXRpb24gYXQgJUMiKSA9PSBGQUlMVVJFKQogCXJldHVybiBNQVRDSF9F UlJPUjsKICAKQEAgLTI1ODcsNyArMjU4Nyw3IEBAIGdmY19tYXRjaF9kZWNs X3R5cGVfc3BlYyAoZ2ZjX3R5cGVzcGVjICp0cywgaW50IGltCiAKICAgaWYg KGdmY19tYXRjaCAoIiBieXRlIikgPT0gTUFUQ0hfWUVTKQogICAgIHsKLSAg ICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJFeHRlbnNp b246IEJZVEUgdHlwZSBhdCAlQyIpCisgICAgICBpZiAoZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfR05VLCAiQllURSB0eXBlIGF0ICVDIikKIAkgID09IEZB SUxVUkUpCiAJcmV0dXJuIE1BVENIX0VSUk9SOwogCkBAIC0yNjE4LDcgKzI2 MTgsNyBAQCBnZmNfbWF0Y2hfZGVjbF90eXBlX3NwZWMgKGdmY190eXBlc3Bl YyAqdHMsIGludCBpbQogCSAgICAgIGdmY19lcnJvciAoIkFzc3VtZWQgdHlw ZSBhdCAlQyBpcyBub3QgYWxsb3dlZCBmb3IgY29tcG9uZW50cyIpOwogCSAg ICAgIHJldHVybiBNQVRDSF9FUlJPUjsKIAkgICAgfQotCSAgaWYgKGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDA4X1RTLCAiVFMgMjkxMTM6IEFzc3Vt ZWQgdHlwZSAiCisJICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIw MDhfVFMsICJBc3N1bWVkIHR5cGUgIgogCQkJICAiYXQgJUMiKSA9PSBGQUlM VVJFKQogCSAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAJICB0cy0+dHlwZSA9 IEJUX0FTU1VNRUQ7CkBAIC0yNjQxLDcgKzI2NDEsNyBAQCBnZmNfbWF0Y2hf ZGVjbF90eXBlX3NwZWMgKGdmY190eXBlc3BlYyAqdHMsIGludCBpbQogICAg ICAgfHwgKCFtYXRjaGVkX3R5cGUgJiYgZ2ZjX21hdGNoICgiIGNoYXJhY3Rl ciIpID09IE1BVENIX1lFUykpCiAgICAgewogICAgICAgaWYgKG1hdGNoZWRf dHlwZQotCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJG b3J0cmFuIDIwMDg6IFRZUEUgd2l0aCAiCisJICAmJiBnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwOCwgIlRZUEUgd2l0aCAiCiAJCQkgICJpbnRyaW5z aWMtdHlwZS1zcGVjIGF0ICVDIikgPT0gRkFJTFVSRSkKIAlyZXR1cm4gTUFU Q0hfRVJST1I7CiAKQEAgLTI2NzIsNyArMjY3Miw3IEBAIGdmY19tYXRjaF9k ZWNsX3R5cGVfc3BlYyAoZ2ZjX3R5cGVzcGVjICp0cywgaW50IGltCiAgICAg ICB8fCAoIW1hdGNoZWRfdHlwZSAmJiBnZmNfbWF0Y2ggKCIgZG91YmxlIHBy ZWNpc2lvbiIpID09IE1BVENIX1lFUykpCiAgICAgewogICAgICAgaWYgKG1h dGNoZWRfdHlwZQotCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIw MDgsICJGb3J0cmFuIDIwMDg6IFRZUEUgd2l0aCAiCisJICAmJiBnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIlRZUEUgd2l0aCAiCiAJCQkgICJp bnRyaW5zaWMtdHlwZS1zcGVjIGF0ICVDIikgPT0gRkFJTFVSRSkKIAlyZXR1 cm4gTUFUQ0hfRVJST1I7CiAgICAgICBpZiAobWF0Y2hlZF90eXBlICYmIGdm Y19tYXRjaF9jaGFyICgnKScpICE9IE1BVENIX1lFUykKQEAgLTI2OTcsMTIg KzI2OTcsMTIgQEAgZ2ZjX21hdGNoX2RlY2xfdHlwZV9zcGVjIChnZmNfdHlw ZXNwZWMgKnRzLCBpbnQgaW0KIAkgICAgICAgJiYgZ2ZjX21hdGNoICgiIGNv bXBsZXgiKSA9PSBNQVRDSF9ZRVMpKSkKICAgICAgIHx8ICghbWF0Y2hlZF90 eXBlICYmIGdmY19tYXRjaCAoIiBkb3VibGUgY29tcGxleCIpID09IE1BVENI X1lFUykpCiAgICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0dOVSwgIkV4dGVuc2lvbjogRE9VQkxFIENPTVBMRVggYXQgJUMiKQor ICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIkRPVUJM RSBDT01QTEVYIGF0ICVDIikKIAkgID09IEZBSUxVUkUpCiAJcmV0dXJuIE1B VENIX0VSUk9SOwogCiAgICAgICBpZiAobWF0Y2hlZF90eXBlCi0JICAmJiBn ZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkZvcnRyYW4gMjAwODog VFlQRSB3aXRoICIKKwkgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDA4LCAiVFlQRSB3aXRoICIKIAkJCSAgImludHJpbnNpYy10eXBlLXNwZWMg YXQgJUMiKSA9PSBGQUlMVVJFKQogCXJldHVybiBNQVRDSF9FUlJPUjsKIApA QCAtMjc0NCw3ICsyNzQ0LDcgQEAgZ2ZjX21hdGNoX2RlY2xfdHlwZV9zcGVj IChnZmNfdHlwZXNwZWMgKnRzLCBpbnQgaW0KIAlyZXR1cm4gbTsKICAgICAg IHRzLT50eXBlID0gQlRfQ0xBU1M7CiAKLSAgICAgIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogQ0xBU1Mgc3Rh dGVtZW50IGF0ICVDIikKKyAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZD X1NURF9GMjAwMywgIkNMQVNTIHN0YXRlbWVudCBhdCAlQyIpCiAJCQkgID09 IEZBSUxVUkUpCiAJcmV0dXJuIE1BVENIX0VSUk9SOwogICAgIH0KQEAgLTI4 NTIsNyArMjg1Miw3IEBAIGdmY19tYXRjaF9kZWNsX3R5cGVfc3BlYyAoZ2Zj X3R5cGVzcGVjICp0cywgaW50IGltCiAKIGdldF9raW5kOgogICBpZiAobWF0 Y2hlZF90eXBlCi0gICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9G MjAwOCwgIkZvcnRyYW4gMjAwODogVFlQRSB3aXRoICIKKyAgICAgICYmIGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiVFlQRSB3aXRoICIKIAkJ CSAiaW50cmluc2ljLXR5cGUtc3BlYyBhdCAlQyIpID09IEZBSUxVUkUpCiAg ICAgcmV0dXJuIE1BVENIX0VSUk9SOwogCkBAIC0zMTM3LDcgKzMxMzcsNyBA QCBnZmNfbWF0Y2hfaW1wb3J0ICh2b2lkKQogICAgICAgcmV0dXJuIE1BVENI X0VSUk9SOwogICAgIH0KIAotICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IElNUE9SVCBzdGF0ZW1lbnQgYXQg JUMiKQorICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJJ TVBPUlQgc3RhdGVtZW50IGF0ICVDIikKICAgICAgID09IEZBSUxVUkUpCiAg ICAgcmV0dXJuIE1BVENIX0VSUk9SOwogCkBAIC0zNjMzLDcgKzM2MzMsNyBA QCBtYXRjaF9hdHRyX3NwZWMgKHZvaWQpCiAJewogCSAgaWYgKGQgPT0gREVD TF9BTExPQ0FUQUJMRSkKIAkgICAgewotCSAgICAgIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogQUxMT0NBVEFC TEUgIgorCSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw MywgIkFMTE9DQVRBQkxFICIKIAkJCQkgICJhdHRyaWJ1dGUgYXQgJUMgaW4g YSBUWVBFIGRlZmluaXRpb24iKQogCQkgID09IEZBSUxVUkUpCiAJCXsKQEAg LTM2NjEsNyArMzY2MSw3IEBAIG1hdGNoX2F0dHJfc3BlYyAodm9pZCkKIAkg ICAgICAmJiBnZmNfc3RhdGVfc3RhY2stPnByZXZpb3VzCiAJICAgICAgJiYg Z2ZjX3N0YXRlX3N0YWNrLT5wcmV2aW91cy0+c3RhdGUgPT0gQ09NUF9NT0RV TEUpCiAJICAgIHsKLQkgICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IEF0dHJpYnV0ZSAlcyAiCisJICAg ICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiQXR0cmli dXRlICVzICIKIAkJCQkgICJhdCAlTCBpbiBhIFRZUEUgZGVmaW5pdGlvbiIs IGF0dHIsCiAJCQkJICAmc2Vlbl9hdFtkXSkKIAkJICA9PSBGQUlMVVJFKQpA QCAtMzY4Nyw3ICszNjg3LDcgQEAgbWF0Y2hfYXR0cl9zcGVjICh2b2lkKQog CiAJY2FzZSBERUNMX0FTWU5DSFJPTk9VUzoKIAkgIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwMywKLQkJCSAgICAgICJGb3J0cmFuIDIwMDM6 IEFTWU5DSFJPTk9VUyBhdHRyaWJ1dGUgYXQgJUMiKQorCQkJICAgICAgIkFT WU5DSFJPTk9VUyBhdHRyaWJ1dGUgYXQgJUMiKQogCSAgICAgID09IEZBSUxV UkUpCiAJICAgIHQgPSBGQUlMVVJFOwogCSAgZWxzZQpAQCAtMzcwMCw3ICsz NzAwLDcgQEAgbWF0Y2hfYXR0cl9zcGVjICh2b2lkKQogCiAJY2FzZSBERUNM X0NPTlRJR1VPVVM6CiAJICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf RjIwMDgsCi0JCQkgICAgICAiRm9ydHJhbiAyMDA4OiBDT05USUdVT1VTIGF0 dHJpYnV0ZSBhdCAlQyIpCisJCQkgICAgICAiQ09OVElHVU9VUyBhdHRyaWJ1 dGUgYXQgJUMiKQogCSAgICAgID09IEZBSUxVUkUpCiAJICAgIHQgPSBGQUlM VVJFOwogCSAgZWxzZQpAQCAtMzc1Miw3ICszNzUyLDcgQEAgbWF0Y2hfYXR0 cl9zcGVjICh2b2lkKQogCSAgICAgICBicmVhazsKIAkgICAgfQogCi0JICBp ZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIw MDM6IFBST1RFQ1RFRCAiCisJICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDMsICJQUk9URUNURUQgIgogCQkJICAgICAgImF0dHJpYnV0ZSBh dCAlQyIpCiAJICAgICAgPT0gRkFJTFVSRSkKIAkgICAgdCA9IEZBSUxVUkU7 CkBAIC0zNzgzLDcgKzM3ODMsNyBAQCBtYXRjaF9hdHRyX3NwZWMgKHZvaWQp CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAKIAljYXNlIERFQ0xf VkFMVUU6Ci0JICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMs ICJGb3J0cmFuIDIwMDM6IFZBTFVFIGF0dHJpYnV0ZSAiCisJICBpZiAoZ2Zj X25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJWQUxVRSBhdHRyaWJ1dGUg IgogCQkJICAgICAgImF0ICVDIikKIAkgICAgICA9PSBGQUlMVVJFKQogCSAg ICB0ID0gRkFJTFVSRTsKQEAgLTM3OTMsNyArMzc5Myw3IEBAIG1hdGNoX2F0 dHJfc3BlYyAodm9pZCkKIAogCWNhc2UgREVDTF9WT0xBVElMRToKIAkgIGlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywKLQkJCSAgICAgICJG b3J0cmFuIDIwMDM6IFZPTEFUSUxFIGF0dHJpYnV0ZSBhdCAlQyIpCisJCQkg ICAgICAiVk9MQVRJTEUgYXR0cmlidXRlIGF0ICVDIikKIAkgICAgICA9PSBG QUlMVVJFKQogCSAgICB0ID0gRkFJTFVSRTsKIAkgIGVsc2UKQEAgLTQzNzMs NyArNDM3Myw3IEBAIGdmY19tYXRjaF9wcmVmaXggKGdmY190eXBlc3BlYyAq dHMpCiAgICAgICBpZiAoZ2ZjX21hdGNoICgiaW1wdXJlJSAiKSA9PSBNQVRD SF9ZRVMpCiAJewogCSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDA4LAotCQkJICAgICAgIkZvcnRyYW4gMjAwODogSU1QVVJFIHByb2NlZHVy ZSBhdCAlQyIpCisJCQkgICAgICAiSU1QVVJFIHByb2NlZHVyZSBhdCAlQyIp CiAJCT09IEZBSUxVUkUpCiAJICAgIGdvdG8gZXJyb3I7CiAKQEAgLTQ2NTks NyArNDY1OSw3IEBAIGdmY19tYXRjaF9zdWZmaXggKGdmY19zeW1ib2wgKnN5 bSwgZ2ZjX3N5bWJvbCAqKnJlCiAgICAgICAvKiBGb3J0cmFuIDIwMDggZHJh ZnQgYWxsb3dzIEJJTkQoQykgZm9yIGludGVybmFsIHByb2NlZHVyZXMuICAq LwogICAgICAgaWYgKGdmY19jdXJyZW50X3N0YXRlICgpID09IENPTVBfQ09O VEFJTlMKIAkgICYmIHN5bS0+bnMtPnByb2NfbmFtZS0+YXR0ci5mbGF2b3Ig IT0gRkxfTU9EVUxFCi0JICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9G MjAwOCwgIkZvcnRyYW4gMjAwODogQklORChDKSBhdHRyaWJ1dGUgIgorCSAg JiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJCSU5EKEMpIGF0 dHJpYnV0ZSAiCiAJCQkgICAgICJhdCAlTCBtYXkgbm90IGJlIHNwZWNpZmll ZCBmb3IgYW4gaW50ZXJuYWwgIgogCQkJICAgICAicHJvY2VkdXJlIiwgJmdm Y19jdXJyZW50X2xvY3VzKQogCSAgICAgPT0gRkFJTFVSRSkKQEAgLTUwMzAs NyArNTAzMCw3IEBAIG1hdGNoX3BwY19kZWNsICh2b2lkKQogICAgICAgcmV0 dXJuIE1BVENIX0VSUk9SOwogICAgIH0KIAotICBpZiAoZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IFByb2NlZHVyZSBw b2ludGVyICIKKyAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAz LCAiUHJvY2VkdXJlIHBvaW50ZXIgIgogICAgICAgICAgICAgICAgICAgICAg ImNvbXBvbmVudCBhdCAlQyIpID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIE1B VENIX0VSUk9SOwogCkBAIC01MTc4LDcgKzUxNzgsNyBAQCBnZmNfbWF0Y2hf cHJvY2VkdXJlICh2b2lkKQogICBpZiAobSAhPSBNQVRDSF9ZRVMpCiAgICAg cmV0dXJuIG07CiAKLSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDAzLCAiRm9ydHJhbiAyMDAzOiBQUk9DRURVUkUgc3RhdGVtZW50IGF0ICVD IikKKyAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiUFJP Q0VEVVJFIHN0YXRlbWVudCBhdCAlQyIpCiAgICAgICA9PSBGQUlMVVJFKQog ICAgIHJldHVybiBNQVRDSF9FUlJPUjsKIApAQCAtNTM4OSw3ICs1Mzg5LDcg QEAgZ2ZjX21hdGNoX2VudHJ5ICh2b2lkKQogICBpZiAobSAhPSBNQVRDSF9Z RVMpCiAgICAgcmV0dXJuIG07CiAKLSAgaWYgKGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDA4X09CUywgIkZvcnRyYW4gMjAwOCBvYnNvbGVzY2VudCBm ZWF0dXJlOiAiCisgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw OF9PQlMsCiAJCSAgICAgICJFTlRSWSBzdGF0ZW1lbnQgYXQgJUMiKSA9PSBG QUlMVVJFKQogICAgIHJldHVybiBNQVRDSF9FUlJPUjsKIApAQCAtNTcwMCw3 ICs1NzAwLDcgQEAgZ2ZjX21hdGNoX3N1YnJvdXRpbmUgKHZvaWQpCiAgICAg ICAvKiBUaGUgZm9sbG93aW5nIGlzIGFsbG93ZWQgaW4gdGhlIEZvcnRyYW4g MjAwOCBkcmFmdC4gICovCiAgICAgICBpZiAoZ2ZjX2N1cnJlbnRfc3RhdGUg KCkgPT0gQ09NUF9DT05UQUlOUwogCSAgJiYgc3ltLT5ucy0+cHJvY19uYW1l LT5hdHRyLmZsYXZvciAhPSBGTF9NT0RVTEUKLQkgICYmIGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDA4LCAiRm9ydHJhbiAyMDA4OiBCSU5EKEMpIGF0 dHJpYnV0ZSAiCisJICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw OCwgIkJJTkQoQykgYXR0cmlidXRlICIKIAkJCSAgICAgImF0ICVMIG1heSBu b3QgYmUgc3BlY2lmaWVkIGZvciBhbiBpbnRlcm5hbCAiCiAJCQkgICAgICJw cm9jZWR1cmUiLCAmZ2ZjX2N1cnJlbnRfbG9jdXMpCiAJICAgICA9PSBGQUlM VVJFKQpAQCAtNjA3MCw3ICs2MDcwLDcgQEAgZ2ZjX21hdGNoX2VuZCAoZ2Zj X3N0YXRlbWVudCAqc3QpCiAgICAgewogICAgICAgaWYgKCFlb3Nfb2sgJiYg KCpzdCA9PSBTVF9FTkRfU1VCUk9VVElORSB8fCAqc3QgPT0gU1RfRU5EX0ZV TkNUSU9OKSkKIAl7Ci0JICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf RjIwMDgsICJGb3J0cmFuIDIwMDg6IEVORCBzdGF0ZW1lbnQgIgorCSAgaWYg KGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRU5EIHN0YXRlbWVu dCAiCiAJCQkgICAgICAiaW5zdGVhZCBvZiAlcyBzdGF0ZW1lbnQgYXQgJUwi LAogCQkJICAgICAgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoKnN0KSwgJm9sZF9s b2MpID09IEZBSUxVUkUpCiAJICAgIGdvdG8gY2xlYW51cDsKQEAgLTY1OTYs NyArNjU5Niw3IEBAIGdmY19tYXRjaF9jb2RpbWVuc2lvbiAodm9pZCkKIG1h dGNoCiBnZmNfbWF0Y2hfY29udGlndW91cyAodm9pZCkKIHsKLSAgaWYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRm9ydHJhbiAyMDA4OiBD T05USUdVT1VTIHN0YXRlbWVudCBhdCAlQyIpCisgIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkNPTlRJR1VPVVMgc3RhdGVtZW50IGF0 ICVDIikKICAgICAgID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIE1BVENIX0VS Uk9SOwogCkBAIC02NzQ5LDcgKzY3NDksNyBAQCBnZmNfbWF0Y2hfcHJvdGVj dGVkICh2b2lkKQogCiAgICAgfQogCi0gIGlmIChnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogUFJPVEVDVEVEIHN0YXRl bWVudCBhdCAlQyIpCisgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9G MjAwMywgIlBST1RFQ1RFRCBzdGF0ZW1lbnQgYXQgJUMiKQogICAgICAgPT0g RkFJTFVSRSkKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAKQEAgLTcwNDcs NyArNzA0Nyw3IEBAIGdmY19tYXRjaF92YWx1ZSAodm9pZCkKICAgICAgIHJl dHVybiBNQVRDSF9FUlJPUjsKICAgICB9CiAKLSAgaWYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBWQUxVRSBzdGF0 ZW1lbnQgYXQgJUMiKQorICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf RjIwMDMsICJWQUxVRSBzdGF0ZW1lbnQgYXQgJUMiKQogICAgICAgPT0gRkFJ TFVSRSkKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAKQEAgLTcwOTgsNyAr NzA5OCw3IEBAIGdmY19tYXRjaF92b2xhdGlsZSAodm9pZCkKICAgZ2ZjX3N5 bWJvbCAqc3ltOwogICBtYXRjaCBtOwogCi0gIGlmIChnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogVk9MQVRJTEUgc3Rh dGVtZW50IGF0ICVDIikKKyAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1RE X0YyMDAzLCAiVk9MQVRJTEUgc3RhdGVtZW50IGF0ICVDIikKICAgICAgID09 IEZBSUxVUkUpCiAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwogCkBAIC03MTU5 LDcgKzcxNTksNyBAQCBnZmNfbWF0Y2hfYXN5bmNocm9ub3VzICh2b2lkKQog ICBnZmNfc3ltYm9sICpzeW07CiAgIG1hdGNoIG07CiAKLSAgaWYgKGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBBU1lO Q0hST05PVVMgc3RhdGVtZW50IGF0ICVDIikKKyAgaWYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiQVNZTkNIUk9OT1VTIHN0YXRlbWVudCBh dCAlQyIpCiAgICAgICA9PSBGQUlMVVJFKQogICAgIHJldHVybiBNQVRDSF9F UlJPUjsKIApAQCAtNzI1MCw3ICs3MjUwLDcgQEAgZ2ZjX21hdGNoX21vZHBy b2MgKHZvaWQpCiAgIG9sZF9sb2N1cyA9IGdmY19jdXJyZW50X2xvY3VzOwog ICBpZiAoZ2ZjX21hdGNoICgiOjoiKSA9PSBNQVRDSF9ZRVMpCiAgICAgewot ICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRm9y dHJhbiAyMDA4OiBkb3VibGUgY29sb24gaW4gIgorICAgICAgaWYgKGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiZG91YmxlIGNvbG9uIGluICIK IAkJCSAiTU9EVUxFIFBST0NFRFVSRSBzdGF0ZW1lbnQgYXQgJUwiLCAmb2xk X2xvY3VzKQogCSAgPT0gRkFJTFVSRSkKIAlyZXR1cm4gTUFUQ0hfRVJST1I7 CkBAIC03NDE3LDcgKzc0MTcsNyBAQCBnZmNfZ2V0X3R5cGVfYXR0cl9zcGVj IChzeW1ib2xfYXR0cmlidXRlICphdHRyLCBjaAogICAgIH0KICAgZWxzZSBp ZiAoZ2ZjX21hdGNoICgiICwgYWJzdHJhY3QiKSA9PSBNQVRDSF9ZRVMpCiAg ICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAz LCAiRm9ydHJhbiAyMDAzOiBBQlNUUkFDVCB0eXBlIGF0ICVDIikKKyAgICAg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkFCU1RSQUNU IHR5cGUgYXQgJUMiKQogCSAgICA9PSBGQUlMVVJFKQogCXJldHVybiBNQVRD SF9FUlJPUjsKIApAQCAtNzY0OCw3ICs3NjQ4LDcgQEAgZ2ZjX21hdGNoX2Vu dW0gKHZvaWQpCiAgIGlmIChtICE9IE1BVENIX1lFUykKICAgICByZXR1cm4g bTsKIAotICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJG b3J0cmFuIDIwMDM6IEVOVU0gYW5kIEVOVU1FUkFUT1IgYXQgJUMiKQorICBp ZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJFTlVNIGFuZCBF TlVNRVJBVE9SIGF0ICVDIikKICAgICAgID09IEZBSUxVUkUpCiAgICAgcmV0 dXJuIE1BVENIX0VSUk9SOwogCkBAIC04MTQyLDcgKzgxNDIsNyBAQCBtYXRj aF9wcm9jZWR1cmVfaW5fdHlwZSAodm9pZCkKIAkgIHJldHVybiBNQVRDSF9F UlJPUjsKIAl9CiAKLSAgICAgIGlmIChudW0+MSAmJiBnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwOCwgIkZvcnRyYW4gMjAwODogUFJPQ0VEVVJFIGxp c3QiCisgICAgICBpZiAobnVtPjEgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDgsICJQUk9DRURVUkUgbGlzdCIKIAkJCQkgICAiIGF0ICVDIikg PT0gRkFJTFVSRSkKIAlyZXR1cm4gTUFUQ0hfRVJST1I7CiAKSW5kZXg6IGdj Yy9mb3J0cmFuL2FycmF5LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Z2NjL2ZvcnRyYW4vYXJyYXkuYwkocmV2aXNpb24gMTg5NTYxKQorKysgZ2Nj L2ZvcnRyYW4vYXJyYXkuYwkod29ya2luZyBjb3B5KQpAQCAtNTU1LDcgKzU1 NSw3IEBAIGdmY19tYXRjaF9hcnJheV9zcGVjIChnZmNfYXJyYXlfc3BlYyAq KmFzcCwgYm9vbCBtCiAJfQogCiAgICAgICBpZiAoYXMtPmNvcmFuayArIGFz LT5yYW5rID49IDcKLQkgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDA4LCAiRm9ydHJhbiAyMDA4OiBBcnJheSAiCisJICAmJiBnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkFycmF5ICIKIAkJCSAgICAgInNwZWNp ZmljYXRpb24gYXQgJUMgd2l0aCBtb3JlIHRoYW4gNyBkaW1lbnNpb25zIikK IAkgICAgID09IEZBSUxVUkUpCiAJZ290byBjbGVhbnVwOwpAQCAtNTY4LDcg KzU2OCw3IEBAIGNvYXJyYXk6CiAgIGlmIChnZmNfbWF0Y2hfY2hhciAoJ1sn KSAgIT0gTUFUQ0hfWUVTKQogICAgIGdvdG8gZG9uZTsKIAotICBpZiAoZ2Zj X25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJGb3J0cmFuIDIwMDg6IENv YXJyYXkgZGVjbGFyYXRpb24gYXQgJUMiKQorICBpZiAoZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfRjIwMDgsICJDb2FycmF5IGRlY2xhcmF0aW9uIGF0ICVD IikKICAgICAgID09IEZBSUxVUkUpCiAgICAgZ290byBjbGVhbnVwOwogCkBA IC0xMDI3LDcgKzEwMjcsNyBAQCBnZmNfbWF0Y2hfYXJyYXlfY29uc3RydWN0 b3IgKGdmY19leHByICoqcmVzdWx0KQogCXJldHVybiBNQVRDSF9OTzsKICAg ICAgIGVsc2UKIAl7Ci0JICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf RjIwMDMsICJGb3J0cmFuIDIwMDM6IFsuLi5dICIKKwkgIGlmIChnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIlsuLi5dICIKIAkJCSAgICAgICJz dHlsZSBhcnJheSBjb25zdHJ1Y3RvcnMgYXQgJUMiKSA9PSBGQUlMVVJFKQog CSAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAJICBlbmRfZGVsaW0gPSAiIF0i OwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgZ2ZjX21hdGNoX2FycmF5X2NvbnN0 cnVjdG9yIChnZmNfZXhwciAqKnJlc3VsdCkKIAogICAgICAgaWYgKHNlZW5f dHMpCiAJewotCSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAz LCAiRm9ydHJhbiAyMDAzOiBBcnJheSBjb25zdHJ1Y3RvciAiCisJICBpZiAo Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJBcnJheSBjb25zdHJ1 Y3RvciAiCiAJCQkgICAgICAiaW5jbHVkaW5nIHR5cGUgc3BlY2lmaWNhdGlv biBhdCAlQyIpID09IEZBSUxVUkUpCiAJICAgIGdvdG8gY2xlYW51cDsKIApJ bmRleDogZ2NjL2ZvcnRyYW4vZXJyb3IuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBnY2MvZm9ydHJhbi9lcnJvci5jCShyZXZpc2lvbiAxODk1NjEp CisrKyBnY2MvZm9ydHJhbi9lcnJvci5jCSh3b3JraW5nIGNvcHkpCkBAIC04 MDksNiArODA5LDcgQEAgZ2ZjX25vdGlmeV9zdGQgKGludCBzdGQsIGNvbnN0 IGNoYXIgKmdtc2dpZCwgLi4uKQogewogICB2YV9saXN0IGFyZ3A7CiAgIGJv b2wgd2FybmluZzsKKyAgY2hhciBidWZmZXJbNTBdOwogCiAgIHdhcm5pbmcg PSAoKGdmY19vcHRpb24ud2Fybl9zdGQgJiBzdGQpICE9IDApICYmICFpbmhp Yml0X3dhcm5pbmdzOwogICBpZiAoKGdmY19vcHRpb24uYWxsb3dfc3RkICYg c3RkKSAhPSAwICYmICF3YXJuaW5nKQpAQCAtODIwLDEyICs4MjEsNDEgQEAg Z2ZjX25vdGlmeV9zdGQgKGludCBzdGQsIGNvbnN0IGNoYXIgKmdtc2dpZCwg Li4uKQogICBjdXJfZXJyb3JfYnVmZmVyID0gd2FybmluZyA/ICZ3YXJuaW5n X2J1ZmZlciA6ICZlcnJvcl9idWZmZXI7CiAgIGN1cl9lcnJvcl9idWZmZXIt PmZsYWcgPSAxOwogICBjdXJfZXJyb3JfYnVmZmVyLT5pbmRleCA9IDA7Ci0K KyAgCiAgIHZhX3N0YXJ0IChhcmdwLCBnbXNnaWQpOwogICBpZiAod2Fybmlu ZykKLSAgICBlcnJvcl9wcmludCAoXygiV2FybmluZzoiKSwgXyhnbXNnaWQp LCBhcmdwKTsKKyAgICBzdHJjcHkgKGJ1ZmZlciwgIldhcm5pbmc6Iik7CiAg IGVsc2UKLSAgICBlcnJvcl9wcmludCAoXygiRXJyb3I6IiksIF8oZ21zZ2lk KSwgYXJncCk7CisgICAgc3RyY3B5IChidWZmZXIsICJFcnJvcjoiKTsKKyAg CisgIHN3aXRjaCAoc3RkKQorICB7CisgICAgY2FzZSBHRkNfU1REX0YyMDA4 X1RTOgorICAgICAgc3RyY2F0IChidWZmZXIsICIgVFMgMjkxMTM6Iik7Cisg ICAgICBicmVhazsKKyAgICBjYXNlIEdGQ19TVERfRjIwMDhfT0JTOgorICAg ICAgc3RyY2F0IChidWZmZXIsICIgRm9ydHJhbiAyMDA4IG9ic29sZXNjZW50 IGZlYXR1cmU6Iik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdGQ19TVERf RjIwMDg6CisgICAgICBzdHJjYXQgKGJ1ZmZlciwgIiBGb3J0cmFuIDIwMDg6 Iik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdGQ19TVERfRjIwMDM6Cisg ICAgICBzdHJjYXQgKGJ1ZmZlciwgIiBGb3J0cmFuIDIwMDM6Iik7CisgICAg ICBicmVhazsKKyAgICBjYXNlIEdGQ19TVERfR05VOgorICAgICAgc3RyY2F0 IChidWZmZXIsICIgR05VIEV4dGVuc2lvbjoiKTsKKyAgICAgIGJyZWFrOwor ICAgIGNhc2UgR0ZDX1NURF9MRUdBQ1k6CisgICAgICBzdHJjYXQgKGJ1ZmZl ciwgIiBFeHRlbnNpb246Iik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdG Q19TVERfRjk1X09CUzoKKyAgICAgIHN0cmNhdCAoYnVmZmVyLCAiIE9ic29s ZXNjZW50IGZlYXR1cmU6Iik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdG Q19TVERfRjk1X0RFTDoKKyAgICAgIHN0cmNhdCAoYnVmZmVyLCAiIERlbGV0 ZWQgZmVhdHVyZToiKTsKKyAgICAgIGJyZWFrOworICB9CisgIGVycm9yX3By aW50IChfKGJ1ZmZlciksIF8oZ21zZ2lkKSwgYXJncCk7CiAgIHZhX2VuZCAo YXJncCk7CiAKICAgZXJyb3JfY2hhciAoJ1wwJyk7CkluZGV4OiBnY2MvZm9y dHJhbi9kYXRhLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2Zv cnRyYW4vZGF0YS5jCShyZXZpc2lvbiAxODk1NjEpCisrKyBnY2MvZm9ydHJh bi9kYXRhLmMJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw3ICszMTUsNyBAQCBn ZmNfYXNzaWduX2RhdGFfdmFsdWUgKGdmY19leHByICpsdmFsdWUsIGdmY19l eHByCiAJCSAgZXhwcmQgPSAoTE9DQVRJT05fTElORSAoY29uLT5leHByLT53 aGVyZS5sYi0+bG9jYXRpb24pCiAJCQkgICA+IExPQ0FUSU9OX0xJTkUgKHJ2 YWx1ZS0+d2hlcmUubGItPmxvY2F0aW9uKSkKIAkJCSAgPyBjb24tPmV4cHIg OiBydmFsdWU7Ci0JCSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dO VSwiRXh0ZW5zaW9uOiAiCisJCSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0dOVSwKIAkJCQkgICAgICAicmUtaW5pdGlhbGl6YXRpb24gb2YgJyVz JyBhdCAlTCIsCiAJCQkJICAgICAgc3ltYm9sLT5uYW1lLCAmZXhwcmQtPndo ZXJlKSA9PSBGQUlMVVJFKQogCQkgICAgcmV0dXJuIEZBSUxVUkU7CkBAIC00 ODEsNyArNDgxLDcgQEAgZ2ZjX2Fzc2lnbl9kYXRhX3ZhbHVlIChnZmNfZXhw ciAqbHZhbHVlLCBnZmNfZXhwcgogCSAgZXhwciA9IChMT0NBVElPTl9MSU5F IChpbml0LT53aGVyZS5sYi0+bG9jYXRpb24pCiAJCSAgPiBMT0NBVElPTl9M SU5FIChydmFsdWUtPndoZXJlLmxiLT5sb2NhdGlvbikpCiAJICAgICAgID8g aW5pdCA6IHJ2YWx1ZTsKLQkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NU RF9HTlUsIkV4dGVuc2lvbjogIgorCSAgaWYgKGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0dOVSwKIAkJCSAgICAgICJyZS1pbml0aWFsaXphdGlvbiBvZiAn JXMnIGF0ICVMIiwKIAkJCSAgICAgIHN5bWJvbC0+bmFtZSwgJmV4cHItPndo ZXJlKSA9PSBGQUlMVVJFKQogCSAgICByZXR1cm4gRkFJTFVSRTsKSW5kZXg6 IGdjYy9mb3J0cmFuL2V4cHIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvZm9ydHJhbi9leHByLmMJKHJldmlzaW9uIDE4OTU2MSkKKysrIGdj Yy9mb3J0cmFuL2V4cHIuYwkod29ya2luZyBjb3B5KQpAQCAtMjQwNSw3ICsy NDA1LDcgQEAgY2hlY2tfZWxlbWVudGFsIChnZmNfZXhwciAqZSkKIAogICBp ZiAoZS0+dHMudHlwZSAhPSBCVF9JTlRFR0VSCiAgICAgICAmJiBlLT50cy50 eXBlICE9IEJUX0NIQVJBQ1RFUgotICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQg KEdGQ19TVERfRjIwMDMsICJFeHRlbnNpb246IEV2YWx1YXRpb24gb2YgIgor ICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJFdmFs dWF0aW9uIG9mICIKIAkJCSJub25zdGFuZGFyZCBpbml0aWFsaXphdGlvbiBl eHByZXNzaW9uIGF0ICVMIiwKIAkJCSZlLT53aGVyZSkgPT0gRkFJTFVSRSkK ICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CkBAIC0zMTY0LDEzICszMTY0LDEz IEBAIGdmY19jaGVja19hc3NpZ24gKGdmY19leHByICpsdmFsdWUsIGdmY19l eHByICpydmFsCiAKICAgaWYgKHJ2YWx1ZS0+aXNfYm96ICYmIGx2YWx1ZS0+ dHMudHlwZSAhPSBCVF9JTlRFR0VSCiAgICAgICAmJiBsdmFsdWUtPnN5bXRy ZWUtPm4uc3ltLT5hdHRyLmRhdGEKLSAgICAgICYmIGdmY19ub3RpZnlfc3Rk IChHRkNfU1REX0dOVSwgIkV4dGVuc2lvbjogQk9aIGxpdGVyYWwgYXQgJUwg dXNlZCB0byAiCisgICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9H TlUsICJCT1ogbGl0ZXJhbCBhdCAlTCB1c2VkIHRvICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAiaW5pdGlhbGl6ZSBub24taW50ZWdlciB2YXJpYWJs ZSAnJXMnIiwKIAkJCSAmcnZhbHVlLT53aGVyZSwgbHZhbHVlLT5zeW10cmVl LT5uLnN5bS0+bmFtZSkKIAkgPT0gRkFJTFVSRSkKICAgICByZXR1cm4gRkFJ TFVSRTsKICAgZWxzZSBpZiAocnZhbHVlLT5pc19ib3ogJiYgIWx2YWx1ZS0+ c3ltdHJlZS0+bi5zeW0tPmF0dHIuZGF0YQotICAgICAgJiYgZ2ZjX25vdGlm eV9zdGQgKEdGQ19TVERfR05VLCAiRXh0ZW5zaW9uOiBCT1ogbGl0ZXJhbCBh dCAlTCBvdXRzaWRlICIKKyAgICAgICYmIGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0dOVSwgIkJPWiBsaXRlcmFsIGF0ICVMIG91dHNpZGUgIgogCQkJICJh IERBVEEgc3RhdGVtZW50IGFuZCBvdXRzaWRlIElOVC9SRUFML0RCTEUvQ01Q TFgiLAogCQkJICZydmFsdWUtPndoZXJlKSA9PSBGQUlMVVJFKQogICAgIHJl dHVybiBGQUlMVVJFOwpAQCAtMzMzOCw3ICszMzM4LDcgQEAgZ2ZjX2NoZWNr X3BvaW50ZXJfYXNzaWduIChnZmNfZXhwciAqbHZhbHVlLCBnZmNfZXgKIAkg ICAgICByZXR1cm4gRkFJTFVSRTsKIAkgICAgfQogCi0JICBpZiAoZ2ZjX25v dGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsIkZvcnRyYW4gMjAwMzogQm91bmRz ICIKKwkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywiQm91 bmRzICIKIAkJCSAgICAgICJzcGVjaWZpY2F0aW9uIGZvciAnJXMnIGluIHBv aW50ZXIgYXNzaWdubWVudCAiCiAJCQkgICAgICAiYXQgJUwiLCBsdmFsdWUt PnN5bXRyZWUtPm4uc3ltLT5uYW1lLAogCQkJICAgICAgJmx2YWx1ZS0+d2hl cmUpID09IEZBSUxVUkUpCkBAIC0zNDM5LDkgKzM0MzksMTAgQEAgZ2ZjX2No ZWNrX3BvaW50ZXJfYXNzaWduIChnZmNfZXhwciAqbHZhbHVlLCBnZmNfZXgK IAkgICAgICByZXR1cm4gRkFJTFVSRTsKIAkgICAgfQogCSAgaWYgKGF0dHIu cHJvYyA9PSBQUk9DX0lOVEVSTkFMICYmCi0JICAgICAgZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfRjIwMDgsICJJbnRlcm5hbCBwcm9jZWR1cmUgJyVzJyBp cyAiCi0JCQkgICAgICAiaW52YWxpZCBpbiBwcm9jZWR1cmUgcG9pbnRlciBh c3NpZ25tZW50IGF0ICVMIiwKLQkJCSAgICAgIHJ2YWx1ZS0+c3ltdHJlZS0+ bmFtZSwgJnJ2YWx1ZS0+d2hlcmUpID09IEZBSUxVUkUpCisJICAgICAgZ2Zj X25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJJbnRlcm5hbCBwcm9jZWR1 cmUgIgorCQkJICAgICAgIiclcycgaXMgaW52YWxpZCBpbiBwcm9jZWR1cmUg cG9pbnRlciBhc3NpZ25tZW50ICIKKwkJCSAgICAgICJhdCAlTCIsIHJ2YWx1 ZS0+c3ltdHJlZS0+bmFtZSwgJnJ2YWx1ZS0+d2hlcmUpCisJCQkgICAgICA9 PSBGQUlMVVJFKQogCSAgICByZXR1cm4gRkFJTFVSRTsKIAl9CiAgICAgICAv KiBDaGVjayBmb3IgRjA4OkM3MzAuICAqLwpAQCAtMzU2Miw3ICszNTYzLDcg QEAgZ2ZjX2NoZWNrX3BvaW50ZXJfYXNzaWduIChnZmNfZXhwciAqbHZhbHVl LCBnZmNfZXgKIAkJCSAiIHNpbXBseSBjb250aWd1b3VzIGF0ICVMIiwgJnJ2 YWx1ZS0+d2hlcmUpOwogCSAgICAgIHJldHVybiBGQUlMVVJFOwogCSAgICB9 Ci0JICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJGb3J0 cmFuIDIwMDg6IFJhbmsgcmVtYXBwaW5nIgorCSAgaWYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDA4LCAiUmFuayByZW1hcHBpbmciCiAJCQkgICAg ICAiIHRhcmdldCBpcyBub3QgcmFuayAxIGF0ICVMIiwgJnJ2YWx1ZS0+d2hl cmUpCiAJCT09IEZBSUxVUkUpCiAJICAgIHJldHVybiBGQUlMVVJFOwpJbmRl eDogZ2NjL2ZvcnRyYW4vbW9kdWxlLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL2ZvcnRyYW4vbW9kdWxlLmMJKHJldmlzaW9uIDE4OTU2MSkK KysrIGdjYy9mb3J0cmFuL21vZHVsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC01 NTMsNyArNTUzLDcgQEAgZ2ZjX21hdGNoX3VzZSAodm9pZCkKICAgICB7CiAg ICAgICBpZiAoKG0gPSBnZmNfbWF0Y2ggKCIgJW4gOjoiLCBtb2R1bGVfbmF0 dXJlKSkgPT0gTUFUQ0hfWUVTKQogCXsKLQkgIGlmIChnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogbW9kdWxlICIKKwkg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIm1vZHVsZSAi CiAJCQkgICAgICAibmF0dXJlIGluIFVTRSBzdGF0ZW1lbnQgYXQgJUMiKSA9 PSBGQUlMVVJFKQogCSAgICBnb3RvIGNsZWFudXA7CiAKQEAgLTU4OCw3ICs1 ODgsNyBAQCBnZmNfbWF0Y2hfdXNlICh2b2lkKQogICAgIHsKICAgICAgIG0g PSBnZmNfbWF0Y2ggKCIgOjoiKTsKICAgICAgIGlmIChtID09IE1BVENIX1lF UyAmJgotCSAgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0 cmFuIDIwMDM6ICIKKwkgIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAz LAogCQkJICAiXCJVU0UgOjogbW9kdWxlXCIgYXQgJUMiKSA9PSBGQUlMVVJF KQogCWdvdG8gY2xlYW51cDsKIApAQCAtNjU2LDcgKzY1Niw3IEBAIGdmY19t YXRjaF91c2UgKHZvaWQpCiAJICBtID0gZ2ZjX21hdGNoICgiID0+Iik7CiAK IAkgIGlmICh0eXBlID09IElOVEVSRkFDRV9VU0VSX09QICYmIG0gPT0gTUFU Q0hfWUVTCi0JICAgICAgJiYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDAzLCAiRm9ydHJhbiAyMDAzOiBSZW5hbWluZyAiCisJICAgICAgJiYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiUmVuYW1pbmcgIgogCQkJ CSAgIm9wZXJhdG9ycyBpbiBVU0Ugc3RhdGVtZW50cyBhdCAlQyIpCiAJCSA9 PSBGQUlMVVJFKSkKIAkgICAgZ290byBjbGVhbnVwOwpAQCAtNjA1MSw3ICs2 MDUxLDcgQEAgZ2ZjX3VzZV9tb2R1bGUgKGdmY191c2VfbGlzdCAqbW9kdWxl KQogICBpZiAobW9kdWxlX2ZwID09IE5VTEwgJiYgIW1vZHVsZS0+bm9uX2lu dHJpbnNpYykKICAgICB7CiAgICAgICBpZiAoc3RyY21wIChtb2R1bGVfbmFt ZSwgImlzb19mb3J0cmFuX2VudiIpID09IDAKLQkgICYmIGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBJU09fRk9SVFJB Tl9FTlYgIgorCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMs ICJJU09fRk9SVFJBTl9FTlYgIgogCQkJICAgICAiaW50cmluc2ljIG1vZHVs ZSBhdCAlQyIpICE9IEZBSUxVUkUpCiAgICAgICAgewogCSB1c2VfaXNvX2Zv cnRyYW5fZW52X21vZHVsZSAoKTsKQEAgLTYwNjEsNyArNjA2MSw3IEBAIGdm Y191c2VfbW9kdWxlIChnZmNfdXNlX2xpc3QgKm1vZHVsZSkKICAgICAgICB9 CiAKICAgICAgIGlmIChzdHJjbXAgKG1vZHVsZV9uYW1lLCAiaXNvX2NfYmlu ZGluZyIpID09IDAKLQkgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDAzLCAiRm9ydHJhbiAyMDAzOiAiCisJICAmJiBnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9GMjAwMywKIAkJCSAgICAgIklTT19DX0JJTkRJTkcgbW9kdWxl IGF0ICVDIikgIT0gRkFJTFVSRSkKIAl7CiAJICBpbXBvcnRfaXNvX2NfYmlu ZGluZ19tb2R1bGUoKTsKSW5kZXg6IGdjYy9mb3J0cmFuL2lvLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vaW8uYwkocmV2aXNp b24gMTg5NTYxKQorKysgZ2NjL2ZvcnRyYW4vaW8uYwkod29ya2luZyBjb3B5 KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgZm9ybWF0X2xleCAodm9pZCkKICAg ICAgIGMgPSBuZXh0X2NoYXJfbm90X3NwYWNlICgmZXJyb3IpOwogICAgICAg aWYgKGMgPT0gJ1AnKQogCXsKLQkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZD X1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogRFAgZm9ybWF0ICIKKwkgIGlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkRQIGZvcm1hdCAi CiAJICAgICAgInNwZWNpZmllciBub3QgYWxsb3dlZCBhdCAlQyIpID09IEZB SUxVUkUpCiAJICAgIHJldHVybiBGTVRfRVJST1I7CiAJICB0b2tlbiA9IEZN VF9EUDsKIAl9CiAgICAgICBlbHNlIGlmIChjID09ICdDJykKIAl7Ci0JICBp ZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIw MDM6IERDIGZvcm1hdCAiCisJICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDMsICJEQyBmb3JtYXQgIgogCSAgICAgICJzcGVjaWZpZXIgbm90 IGFsbG93ZWQgYXQgJUMiKSA9PSBGQUlMVVJFKQogCSAgICByZXR1cm4gRk1U X0VSUk9SOwogCSAgdG9rZW4gPSBGTVRfREM7CkBAIC02NDcsNyArNjQ3LDcg QEAgZm9ybWF0X2l0ZW1fMToKICAgICAgIC8qIFggcmVxdWlyZXMgYSBwcmlv ciBudW1iZXIgaWYgd2UncmUgYmVpbmcgcGVkYW50aWMuICAqLwogICAgICAg aWYgKG1vZGUgIT0gTU9ERV9GT1JNQVQpCiAJZm9ybWF0X2xvY3VzLm5leHRj ICs9IGZvcm1hdF9zdHJpbmdfcG9zOwotICAgICAgaWYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0dOVSwgIkV4dGVuc2lvbjogWCBkZXNjcmlwdG9yICIK KyAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJYIGRl c2NyaXB0b3IgIgogCQkJICAicmVxdWlyZXMgbGVhZGluZyBzcGFjZSBjb3Vu dCBhdCAlTCIsICZmb3JtYXRfbG9jdXMpCiAJICA9PSBGQUlMVVJFKQogCXJl dHVybiBGQUlMVVJFOwpAQCAtNjc3LDcgKzY3Nyw3IEBAIGZvcm1hdF9pdGVt XzE6CiAgICAgICBpZiAodCA9PSBGTVRfRVJST1IpCiAJZ290byBmYWlsOwog Ci0gICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfR05VLCAiRXh0 ZW5zaW9uOiAkIGRlc2NyaXB0b3IgYXQgJUwiLAorICAgICAgaWYgKGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIiQgZGVzY3JpcHRvciBhdCAlTCIs CiAJICAmZm9ybWF0X2xvY3VzKSA9PSBGQUlMVVJFKQogCXJldHVybiBGQUlM VVJFOwogICAgICAgaWYgKHQgIT0gRk1UX1JQQVJFTiB8fCBsZXZlbCA+IDAp CkBAIC04MjQsNyArODI0LDcgQEAgZGF0YV9kZXNjOgogCSAgICAgIGVycm9y ID0gemVyb193aWR0aDsKIAkgICAgICBnb3RvIHN5bnRheDsKIAkgICAgfQot CSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRm9ydHJh biAyMDA4OiAnRzAnIGluICIKKwkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZD X1NURF9GMjAwOCwgIidHMCcgaW4gIgogCQkJICAgICAgImZvcm1hdCBhdCAl TCIsICZmb3JtYXRfbG9jdXMpID09IEZBSUxVUkUpCiAJICAgIHJldHVybiBG QUlMVVJFOwogCSAgdSA9IGZvcm1hdF9sZXggKCk7CkBAIC0xMDU3LDcgKzEw NTcsNyBAQCBiZXR3ZWVuX2Rlc2M6CiAgICAgZGVmYXVsdDoKICAgICAgIGlm IChtb2RlICE9IE1PREVfRk9STUFUKQogCWZvcm1hdF9sb2N1cy5uZXh0YyAr PSBmb3JtYXRfc3RyaW5nX3BvcyAtIDE7Ci0gICAgICBpZiAoZ2ZjX25vdGlm eV9zdGQgKEdGQ19TVERfR05VLCAiRXh0ZW5zaW9uOiBNaXNzaW5nIGNvbW1h IGF0ICVMIiwKKyAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9H TlUsICJNaXNzaW5nIGNvbW1hIGF0ICVMIiwKIAkgICZmb3JtYXRfbG9jdXMp ID09IEZBSUxVUkUpCiAJcmV0dXJuIEZBSUxVUkU7CiAgICAgICAvKiBJZiB3 ZSBkbyBub3QgYWN0dWFsbHkgcmV0dXJuIGEgZmFpbHVyZSwgd2UgbmVlZCB0 byB1bndpbmQgdGhpcwpAQCAtMTEyMCw3ICsxMTIwLDcgQEAgZXh0ZW5zaW9u X29wdGlvbmFsX2NvbW1hOgogICAgIGRlZmF1bHQ6CiAgICAgICBpZiAobW9k ZSAhPSBNT0RFX0ZPUk1BVCkKIAlmb3JtYXRfbG9jdXMubmV4dGMgKz0gZm9y bWF0X3N0cmluZ19wb3M7Ci0gICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdG Q19TVERfR05VLCAiRXh0ZW5zaW9uOiBNaXNzaW5nIGNvbW1hIGF0ICVMIiwK KyAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJNaXNz aW5nIGNvbW1hIGF0ICVMIiwKIAkgICZmb3JtYXRfbG9jdXMpID09IEZBSUxV UkUpCiAJcmV0dXJuIEZBSUxVUkU7CiAgICAgICAvKiBJZiB3ZSBkbyBub3Qg YWN0dWFsbHkgcmV0dXJuIGEgZmFpbHVyZSwgd2UgbmVlZCB0byB1bndpbmQg dGhpcwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgcmVzb2x2ZV90YWdfZm9ybWF0 IChjb25zdCBnZmNfZXhwciAqZSkKIAl9CiAgICAgICBlbHNlIGlmIChlLT50 cy50eXBlID09IEJUX0lOVEVHRVIgJiYgZS0+ZXhwcl90eXBlID09IEVYUFJf VkFSSUFCTEUpCiAJewotCSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1RE X0Y5NV9ERUwsICJEZWxldGVkIGZlYXR1cmU6IEFTU0lHTkVEICIKKwkgIGlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GOTVfREVMLCAiQVNTSUdORUQg IgogCQkJICAgICAgInZhcmlhYmxlIGluIEZPUk1BVCB0YWcgYXQgJUwiLCAm ZS0+d2hlcmUpCiAJICAgICAgPT0gRkFJTFVSRSkKIAkgICAgcmV0dXJuIEZB SUxVUkU7CkBAIC0xNDMwLDcgKzE0MzAsNyBAQCByZXNvbHZlX3RhZ19mb3Jt YXQgKGNvbnN0IGdmY19leHByICplKQogICAgICBJdCBtYXkgYmUgYXNzaWdu ZWQgYW4gSG9sbGVyaXRoIGNvbnN0YW50LiAgKi8KICAgaWYgKGUtPnRzLnR5 cGUgIT0gQlRfQ0hBUkFDVEVSKQogICAgIHsKLSAgICAgIGlmIChnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9MRUdBQ1ksICJFeHRlbnNpb246IE5vbi1jaGFy YWN0ZXIgIgorICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0xF R0FDWSwgIk5vbi1jaGFyYWN0ZXIgIgogCQkJICAiaW4gRk9STUFUIHRhZyBh dCAlTCIsICZlLT53aGVyZSkgPT0gRkFJTFVSRSkKIAlyZXR1cm4gRkFJTFVS RTsKIApAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgcmVzb2x2ZV90YWcgKGNvbnN0 IGlvX3RhZyAqdGFnLCBnZmNfZXhwciAqZSkKIAogICBpZiAodGFnID09ICZ0 YWdfaW9tc2cpCiAgICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBJT01TRyB0YWcgYXQgJUwi LAorICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAi SU9NU0cgdGFnIGF0ICVMIiwKIAkJCSAgJmUtPndoZXJlKSA9PSBGQUlMVVJF KQogCXJldHVybiBGQUlMVVJFOwogICAgIH0KQEAgLTE1MTIsNyArMTUxMiw3 IEBAIHJlc29sdmVfdGFnIChjb25zdCBpb190YWcgKnRhZywgZ2ZjX2V4cHIg KmUpCiAKICAgaWYgKHRhZyA9PSAmdGFnX2V4aXN0ICYmIGUtPnRzLmtpbmQg IT0gZ2ZjX2RlZmF1bHRfbG9naWNhbF9raW5kKQogICAgIHsKLSAgICAgIGlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkZvcnRyYW4gMjAw ODogTm9uZGVmYXVsdCBMT0dJQ0FMICIKKyAgICAgIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIk5vbmRlZmF1bHQgTE9HSUNBTCAiCiAJ CQkgICJpbiAlcyB0YWcgYXQgJUwiLCB0YWctPm5hbWUsICZlLT53aGVyZSkK IAkgID09IEZBSUxVUkUpCiAJcmV0dXJuIEZBSUxVUkU7CkBAIC0xNTIwLDcg KzE1MjAsNyBAQCByZXNvbHZlX3RhZyAoY29uc3QgaW9fdGFnICp0YWcsIGdm Y19leHByICplKQogCiAgIGlmICh0YWcgPT0gJnRhZ19uZXd1bml0KQogICAg IHsKLSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwg IkZvcnRyYW4gMjAwODogTkVXVU5JVCBzcGVjaWZpZXIiCisgICAgICBpZiAo Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJORVdVTklUIHNwZWNp ZmllciIKIAkJCSAgIiBhdCAlTCIsICZlLT53aGVyZSkgPT0gRkFJTFVSRSkK IAlyZXR1cm4gRkFJTFVSRTsKICAgICB9CkBAIC0xNTM4LDcgKzE1MzgsNyBA QCByZXNvbHZlX3RhZyAoY29uc3QgaW9fdGFnICp0YWcsIGdmY19leHByICpl KQogICAKICAgaWYgKHRhZyA9PSAmdGFnX2NvbnZlcnQpCiAgICAgewotICAg ICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIkV4dGVuc2lv bjogQ09OVkVSVCB0YWcgYXQgJUwiLAorICAgICAgaWYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0dOVSwgIkNPTlZFUlQgdGFnIGF0ICVMIiwKIAkJCSAg JmUtPndoZXJlKSA9PSBGQUlMVVJFKQogCXJldHVybiBGQUlMVVJFOwogICAg IH0KQEAgLTE3MzIsNyArMTczMiw3IEBAIGNvbXBhcmVfdG9fYWxsb3dlZF92 YWx1ZXMgKGNvbnN0IGNoYXIgKnNwZWNpZmllciwKIAllbHNlCiAJICBpZiAo biA9PSBFUlJPUikKIAkgICAgewotCSAgICAgIGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiAlcyBzcGVjaWZpZXIgaW4g IgorCSAgICAgIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiJXMg c3BlY2lmaWVyIGluICIKIAkJCSAgICAgICIlcyBzdGF0ZW1lbnQgYXQgJUMg aGFzIHZhbHVlICclcyciLCBzcGVjaWZpZXIsCiAJCQkgICAgICBzdGF0ZW1l bnQsIGFsbG93ZWRfZjIwMDNbaV0pOwogCSAgICAgIHJldHVybiAwOwpAQCAt MTc1OSw3ICsxNzU5LDcgQEAgY29tcGFyZV90b19hbGxvd2VkX3ZhbHVlcyAo Y29uc3QgY2hhciAqc3BlY2lmaWVyLAogCWVsc2UKIAkgIGlmIChuID09IEVS Uk9SKQogCSAgICB7Ci0JICAgICAgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf R05VLCAiRXh0ZW5zaW9uOiAlcyBzcGVjaWZpZXIgaW4gIgorCSAgICAgIGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIiVzIHNwZWNpZmllciBpbiAi CiAJCQkgICAgICAiJXMgc3RhdGVtZW50IGF0ICVDIGhhcyB2YWx1ZSAnJXMn Iiwgc3BlY2lmaWVyLAogCQkJICAgICAgc3RhdGVtZW50LCBhbGxvd2VkX2du dVtpXSk7CiAJICAgICAgcmV0dXJuIDA7CkBAIC0xODk0LDcgKzE4OTQsNyBA QCBnZmNfbWF0Y2hfb3BlbiAodm9pZCkKICAgLyogQ2hlY2tzIG9uIHRoZSBB U1lOQ0hST05PVVMgc3BlY2lmaWVyLiAgKi8KICAgaWYgKG9wZW4tPmFzeW5j aHJvbm91cykKICAgICB7Ci0gICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdG Q19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IEFTWU5DSFJPTk9VUz0gYXQg JUMgIgorICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAz LCAiQVNZTkNIUk9OT1VTPSBhdCAlQyAiCiAJICAibm90IGFsbG93ZWQgaW4g Rm9ydHJhbiA5NSIpID09IEZBSUxVUkUpCiAJZ290byBjbGVhbnVwOwogCkBA IC0xOTEyLDcgKzE5MTIsNyBAQCBnZmNfbWF0Y2hfb3BlbiAodm9pZCkKICAg LyogQ2hlY2tzIG9uIHRoZSBCTEFOSyBzcGVjaWZpZXIuICAqLwogICBpZiAo b3Blbi0+YmxhbmspCiAgICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3Rk IChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBCTEFOSz0gYXQgJUMg IgorICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAi QkxBTks9IGF0ICVDICIKIAkgICJub3QgYWxsb3dlZCBpbiBGb3J0cmFuIDk1 IikgPT0gRkFJTFVSRSkKIAlnb3RvIGNsZWFudXA7CiAKQEAgLTE5MzAsNyAr MTkzMCw3IEBAIGdmY19tYXRjaF9vcGVuICh2b2lkKQogICAvKiBDaGVja3Mg b24gdGhlIERFQ0lNQUwgc3BlY2lmaWVyLiAgKi8KICAgaWYgKG9wZW4tPmRl Y2ltYWwpCiAgICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBERUNJTUFMPSBhdCAlQyAiCisg ICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJERUNJ TUFMPSBhdCAlQyAiCiAJICAibm90IGFsbG93ZWQgaW4gRm9ydHJhbiA5NSIp ID09IEZBSUxVUkUpCiAJZ290byBjbGVhbnVwOwogCkBAIC0xOTYyLDcgKzE5 NjIsNyBAQCBnZmNfbWF0Y2hfb3BlbiAodm9pZCkKICAgLyogQ2hlY2tzIG9u IHRoZSBFTkNPRElORyBzcGVjaWZpZXIuICAqLwogICBpZiAob3Blbi0+ZW5j b2RpbmcpCiAgICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBFTkNPRElORz0gYXQgJUMgIgor ICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRU5D T0RJTkc9IGF0ICVDICIKIAkgICJub3QgYWxsb3dlZCBpbiBGb3J0cmFuIDk1 IikgPT0gRkFJTFVSRSkKIAlnb3RvIGNsZWFudXA7CiAgICAgCkBAIC0yMDEz LDcgKzIwMTMsNyBAQCBnZmNfbWF0Y2hfb3BlbiAodm9pZCkKICAgLyogQ2hl Y2tzIG9uIHRoZSBST1VORCBzcGVjaWZpZXIuICAqLwogICBpZiAob3Blbi0+ cm91bmQpCiAgICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBST1VORD0gYXQgJUMgIgorICAg ICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiUk9VTkQ9 IGF0ICVDICIKIAkgICJub3QgYWxsb3dlZCBpbiBGb3J0cmFuIDk1IikgPT0g RkFJTFVSRSkKICAgICAgIGdvdG8gY2xlYW51cDsKIApAQCAtMjAzMyw3ICsy MDMzLDcgQEAgZ2ZjX21hdGNoX29wZW4gKHZvaWQpCiAgIC8qIENoZWNrcyBv biB0aGUgU0lHTiBzcGVjaWZpZXIuICAqLwogICBpZiAob3Blbi0+c2lnbikg CiAgICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDAzLCAiRm9ydHJhbiAyMDAzOiBTSUdOPSBhdCAlQyAiCisgICAgICBpZiAo Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJTSUdOPSBhdCAlQyAi CiAJICAibm90IGFsbG93ZWQgaW4gRm9ydHJhbiA5NSIpID09IEZBSUxVUkUp CiAJZ290byBjbGVhbnVwOwogCkBAIC0yNDc5LDcgKzI0NzksNyBAQCBnZmNf bWF0Y2hfcmV3aW5kICh2b2lkKQogbWF0Y2gKIGdmY19tYXRjaF9mbHVzaCAo dm9pZCkKIHsKLSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAz LCAiRm9ydHJhbiAyMDAzOiBGTFVTSCBzdGF0ZW1lbnQgYXQgJUMiKQorICBp ZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGTFVTSCBzdGF0 ZW1lbnQgYXQgJUMiKQogICAgICAgPT0gRkFJTFVSRSkKICAgICByZXR1cm4g TUFUQ0hfRVJST1I7CiAKQEAgLTI5MTAsNyArMjkxMCw3IEBAIGdmY19yZXNv bHZlX2R0IChnZmNfZHQgKmR0LCBsb2N1cyAqbG9jKQogICAgIH0KIAogICBp ZiAoZHQtPmV4dHJhX2NvbW1hCi0gICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9HTlUsICJFeHRlbnNpb246IENvbW1hIGJlZm9yZSBpL28gIgor ICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfR05VLCAiQ29tbWEg YmVmb3JlIGkvbyAiCiAJCQkgIml0ZW0gbGlzdCBhdCAlTCIsICZkdC0+ZXh0 cmFfY29tbWEtPndoZXJlKSA9PSBGQUlMVVJFKQogICAgIHJldHVybiBGQUlM VVJFOwogCkBAIC0zMjU2LDcgKzMyNTYsNyBAQCBpZiAoY29uZGl0aW9uKSBc CiAKICAgICAgIGlmIChkdC0+bmFtZWxpc3QgIT0gTlVMTCkKIAl7Ci0JICBp ZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIw MDM6IEludGVybmFsIGZpbGUgIgorCSAgaWYgKGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDAzLCAiSW50ZXJuYWwgZmlsZSAiCiAJCQkgICAgICAiYXQg JUwgd2l0aCBuYW1lbGlzdCIsICZleHByLT53aGVyZSkKIAkgICAgICA9PSBG QUlMVVJFKQogCSAgICBtID0gTUFUQ0hfRVJST1I7CkBAIC0zMzQwLDcgKzMz NDAsNyBAQCBpZiAoY29uZGl0aW9uKSBcCiAKICAgaWYgKGR0LT5kZWNpbWFs KQogICAgIHsKLSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9G MjAwMywgIkZvcnRyYW4gMjAwMzogREVDSU1BTD0gYXQgJUMgIgorICAgICAg aWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiREVDSU1BTD0g YXQgJUMgIgogCSAgIm5vdCBhbGxvd2VkIGluIEZvcnRyYW4gOTUiKSA9PSBG QUlMVVJFKQogCXJldHVybiBNQVRDSF9FUlJPUjsKIApAQCAtMzM2MSw3ICsz MzYxLDcgQEAgaWYgKGNvbmRpdGlvbikgXAogICAKICAgaWYgKGR0LT5ibGFu aykKICAgICB7Ci0gICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf RjIwMDMsICJGb3J0cmFuIDIwMDM6IEJMQU5LPSBhdCAlQyAiCisgICAgICBp ZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJCTEFOSz0gYXQg JUMgIgogCSAgIm5vdCBhbGxvd2VkIGluIEZvcnRyYW4gOTUiKSA9PSBGQUlM VVJFKQogCXJldHVybiBNQVRDSF9FUlJPUjsKIApAQCAtMzM4Miw3ICszMzgy LDcgQEAgaWYgKGNvbmRpdGlvbikgXAogCiAgIGlmIChkdC0+cGFkKQogICAg IHsKLSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywg IkZvcnRyYW4gMjAwMzogUEFEPSBhdCAlQyAiCisgICAgICBpZiAoZ2ZjX25v dGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJQQUQ9IGF0ICVDICIKIAkgICJu b3QgYWxsb3dlZCBpbiBGb3J0cmFuIDk1IikgPT0gRkFJTFVSRSkKIAlyZXR1 cm4gTUFUQ0hfRVJST1I7CiAKQEAgLTM0MDMsNyArMzQwMyw3IEBAIGlmIChj b25kaXRpb24pIFwKIAogICBpZiAoZHQtPnJvdW5kKQogICAgIHsKLSAgICAg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4g MjAwMzogUk9VTkQ9IGF0ICVDICIKKyAgICAgIGlmIChnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwMywgIlJPVU5EPSBhdCAlQyAiCiAJICAibm90IGFs bG93ZWQgaW4gRm9ydHJhbiA5NSIpID09IEZBSUxVUkUpCiAJcmV0dXJuIE1B VENIX0VSUk9SOwogCkBAIC0zNDIzLDcgKzM0MjMsNyBAQCBpZiAoY29uZGl0 aW9uKSBcCiAgIGlmIChkdC0+c2lnbikKICAgICB7CiAgICAgICAvKiBXaGVu IGltcGxlbWVudGVkLCBjaGFuZ2UgdGhlIGZvbGxvd2luZyB0byB1c2UgZ2Zj X25vdGlmeV9zdGQgRjIwMDMuCi0gICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQg KEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IFNJR049IGF0ICVDICIK KyAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIlNJ R049IGF0ICVDICIKIAkgICJub3QgYWxsb3dlZCBpbiBGb3J0cmFuIDk1Iikg PT0gRkFJTFVSRSkKIAlyZXR1cm4gTUFUQ0hfRVJST1I7ICAqLwogICAgICAg aWYgKGR0LT5zaWduLT5leHByX3R5cGUgPT0gRVhQUl9DT05TVEFOVCkKQEAg LTM0NDgsNyArMzQ0OCw3IEBAIGlmIChjb25kaXRpb24pIFwKIAogICBpZiAo ZHQtPmRlbGltKQogICAgIHsKLSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogREVMSU09IGF0ICVDICIK KyAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkRF TElNPSBhdCAlQyAiCiAJICAibm90IGFsbG93ZWQgaW4gRm9ydHJhbiA5NSIp ID09IEZBSUxVUkUpCiAJcmV0dXJuIE1BVENIX0VSUk9SOwogCkBAIC00MTk3 LDcgKzQxOTcsNyBAQCBnZmNfbWF0Y2hfd2FpdCAodm9pZCkKIAlnb3RvIHN5 bnRheDsKICAgICB9CiAKLSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1RE X0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBXQUlUIGF0ICVDICIKKyAgaWYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiV0FJVCBhdCAlQyAiCiAJ ICAibm90IGFsbG93ZWQgaW4gRm9ydHJhbiA5NSIpID09IEZBSUxVUkUpCiAg ICAgZ290byBjbGVhbnVwOwogCkluZGV4OiBnY2MvZm9ydHJhbi9yZXNvbHZl LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vcmVz b2x2ZS5jCShyZXZpc2lvbiAxODk1NjEpCisrKyBnY2MvZm9ydHJhbi9yZXNv bHZlLmMJKHdvcmtpbmcgY29weSkKQEAgLTMzMSw3ICszMzEsNyBAQCByZXNv bHZlX2Zvcm1hbF9hcmdsaXN0IChnZmNfc3ltYm9sICpwcm9jKQogCSAgICAg IGlmIChwcm9jLT5hdHRyLmZ1bmN0aW9uICYmIHN5bS0+YXR0ci5pbnRlbnQg IT0gSU5URU5UX0lOKQogCQl7CiAJCSAgaWYgKHN5bS0+YXR0ci52YWx1ZSkK LQkJICAgIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRm9ydHJh biAyMDA4OiBBcmd1bWVudCAnJXMnIgorCQkgICAgZ2ZjX25vdGlmeV9zdGQg KEdGQ19TVERfRjIwMDgsICJBcmd1bWVudCAnJXMnIgogCQkJCSAgICAiIG9m IHB1cmUgZnVuY3Rpb24gJyVzJyBhdCAlTCB3aXRoIFZBTFVFICIKIAkJCQkg ICAgImF0dHJpYnV0ZSBidXQgd2l0aG91dCBJTlRFTlQoSU4pIiwKIAkJCQkg ICAgc3ltLT5uYW1lLCBwcm9jLT5uYW1lLCAmc3ltLT5kZWNsYXJlZF9hdCk7 CkBAIC0zNDQsNyArMzQ0LDcgQEAgcmVzb2x2ZV9mb3JtYWxfYXJnbGlzdCAo Z2ZjX3N5bWJvbCAqcHJvYykKIAkgICAgICBpZiAocHJvYy0+YXR0ci5zdWJy b3V0aW5lICYmIHN5bS0+YXR0ci5pbnRlbnQgPT0gSU5URU5UX1VOS05PV04p CiAJCXsKIAkJICBpZiAoc3ltLT5hdHRyLnZhbHVlKQotCQkgICAgZ2ZjX25v dGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJGb3J0cmFuIDIwMDg6IEFyZ3Vt ZW50ICclcyciCisJCSAgICBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw OCwgIkFyZ3VtZW50ICclcyciCiAJCQkJICAgICIgb2YgcHVyZSBzdWJyb3V0 aW5lICclcycgYXQgJUwgd2l0aCBWQUxVRSAiCiAJCQkJICAgICJhdHRyaWJ1 dGUgYnV0IHdpdGhvdXQgSU5URU5UIiwgc3ltLT5uYW1lLAogCQkJCSAgICBw cm9jLT5uYW1lLCAmc3ltLT5kZWNsYXJlZF9hdCk7CkBAIC03MjMsNyArNzIz LDcgQEAgcmVzb2x2ZV9lbnRyaWVzIChnZmNfbmFtZXNwYWNlICpucykKIAkJ CSAgICYmIHRzLT51LmNsLT5sZW5ndGgtPmV4cHJfdHlwZSA9PSBFWFBSX0NP TlNUQU5UCiAJCSAgICAgICAgICAgJiYgbXB6X2NtcCAodHMtPnUuY2wtPmxl bmd0aC0+dmFsdWUuaW50ZWdlciwKIAkJCQkgICAgICAgZnRzLT51LmNsLT5s ZW5ndGgtPnZhbHVlLmludGVnZXIpICE9IDApKSkKLQkgICAgZ2ZjX25vdGlm eV9zdGQgKEdGQ19TVERfR05VLCAiRXh0ZW5zaW9uOiBGdW5jdGlvbiAlcyBh dCAlTCB3aXRoICIKKwkgICAgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfR05V LCAiRnVuY3Rpb24gJXMgYXQgJUwgd2l0aCAiCiAJCQkgICAgImVudHJpZXMg cmV0dXJuaW5nIHZhcmlhYmxlcyBvZiBkaWZmZXJlbnQgIgogCQkJICAgICJz dHJpbmcgbGVuZ3RocyIsIG5zLT5lbnRyaWVzLT5zeW0tPm5hbWUsCiAJCQkg ICAgJm5zLT5lbnRyaWVzLT5zeW0tPmRlY2xhcmVkX2F0KTsKQEAgLTkxNiwx MiArOTE2LDEyIEBAIHJlc29sdmVfY29tbW9uX2Jsb2NrcyAoZ2ZjX3N5bXRy ZWUgKmNvbW1vbl9yb290KQogCSAgICAgICBzeW0tPm5hbWUsICZjb21tb25f cm9vdC0+bi5jb21tb24tPndoZXJlKTsKICAgZWxzZSBpZiAoc3ltLT5hdHRy LnJlc3VsdAogCSAgIHx8IGdmY19pc19mdW5jdGlvbl9yZXR1cm5fdmFsdWUg KHN5bSwgZ2ZjX2N1cnJlbnRfbnMpKQotICAgIGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBDT01NT04gYmxvY2sgJyVz JyBhdCAlTCAiCisgICAgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMs ICJDT01NT04gYmxvY2sgJyVzJyBhdCAlTCAiCiAJCSAgICAidGhhdCBpcyBh bHNvIGEgZnVuY3Rpb24gcmVzdWx0Iiwgc3ltLT5uYW1lLAogCQkgICAgJmNv bW1vbl9yb290LT5uLmNvbW1vbi0+d2hlcmUpOwogICBlbHNlIGlmIChzeW0t PmF0dHIuZmxhdm9yID09IEZMX1BST0NFRFVSRSAmJiBzeW0tPmF0dHIucHJv YyAhPSBQUk9DX0lOVEVSTkFMCiAJICAgJiYgc3ltLT5hdHRyLnByb2MgIT0g UFJPQ19TVF9GVU5DVElPTikKLSAgICBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NU RF9GMjAwMywgIkZvcnRyYW4gMjAwMzogQ09NTU9OIGJsb2NrICclcycgYXQg JUwgIgorICAgIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiQ09N TU9OIGJsb2NrICclcycgYXQgJUwgIgogCQkgICAgInRoYXQgaXMgYWxzbyBh IGdsb2JhbCBwcm9jZWR1cmUiLCBzeW0tPm5hbWUsCiAJCSAgICAmY29tbW9u X3Jvb3QtPm4uY29tbW9uLT53aGVyZSk7CiB9CkBAIC0xNjczLDcgKzE2NzMs NyBAQCByZXNvbHZlX2FjdHVhbF9hcmdsaXN0IChnZmNfYWN0dWFsX2FyZ2xp c3QgKmFyZywgcAogCSAgICAgICYmIHN5bS0+bnMtPnByb2NfbmFtZS0+YXR0 ci5mbGF2b3IgIT0gRkxfTU9EVUxFKQogCSAgICB7CiAJICAgICAgaWYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LAotCQkJCSAgIkZvcnRyYW4g MjAwODogSW50ZXJuYWwgcHJvY2VkdXJlICclcycgaXMiCisJCQkJICAiSW50 ZXJuYWwgcHJvY2VkdXJlICclcycgaXMiCiAJCQkJICAiIHVzZWQgYXMgYWN0 dWFsIGFyZ3VtZW50IGF0ICVMIiwKIAkJCQkgIHN5bS0+bmFtZSwgJmUtPndo ZXJlKSA9PSBGQUlMVVJFKQogCQlyZXR1cm4gRkFJTFVSRTsKQEAgLTQ0NTAs NyArNDQ1MCw3IEBAIGdmY19yZXNvbHZlX2luZGV4XzEgKGdmY19leHByICpp bmRleCwgaW50IGNoZWNrX3NjCiAgICAgfQogCiAgIGlmIChpbmRleC0+dHMu dHlwZSA9PSBCVF9SRUFMKQotICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZD X1NURF9MRUdBQ1ksICJFeHRlbnNpb246IFJFQUwgYXJyYXkgaW5kZXggYXQg JUwiLAorICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9MRUdBQ1ks ICJSRUFMIGFycmF5IGluZGV4IGF0ICVMIiwKIAkJCSZpbmRleC0+d2hlcmUp ID09IEZBSUxVUkUpCiAgICAgICByZXR1cm4gRkFJTFVSRTsKIApAQCAtNjQy MCw3ICs2NDIwLDcgQEAgZ2ZjX3Jlc29sdmVfaXRlcmF0b3JfZXhwciAoZ2Zj X2V4cHIgKmV4cHIsIGJvb2wgcmUKIAl7CiAJICBpZiAocmVhbF9vaykKIAkg ICAgcmV0dXJuIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Y5NV9ERUwsCi0J CQkJICAgIkRlbGV0ZWQgZmVhdHVyZTogJXMgYXQgJUwgbXVzdCBiZSBpbnRl Z2VyIiwKKwkJCQkgICAiJXMgYXQgJUwgbXVzdCBiZSBpbnRlZ2VyIiwKIAkJ CQkgICBfKG5hbWVfbXNnaWQpLCAmZXhwci0+d2hlcmUpOwogCSAgZWxzZQog CSAgICB7CkBAIC05MTU4LDcgKzkxNTgsNyBAQCByZXNvbHZlX29yZGluYXJ5 X2Fzc2lnbiAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19uYW1lcwogICByaHMgPSBj b2RlLT5leHByMjsKIAogICBpZiAocmhzLT5pc19ib3oKLSAgICAgICYmIGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIkV4dGVuc2lvbjogQk9aIGxp dGVyYWwgYXQgJUwgb3V0c2lkZSAiCisgICAgICAmJiBnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9HTlUsICJCT1ogbGl0ZXJhbCBhdCAlTCBvdXRzaWRlICIK IAkJCSAiYSBEQVRBIHN0YXRlbWVudCBhbmQgb3V0c2lkZSBJTlQvUkVBTC9E QkxFL0NNUExYIiwKIAkJCSAmY29kZS0+bG9jKSA9PSBGQUlMVVJFKQogICAg IHJldHVybiBmYWxzZTsKQEAgLTEwMzI3LDkgKzEwMzI3LDkgQEAgcmVzb2x2 ZV9mbF92YXJfYW5kX3Byb2MgKGdmY19zeW1ib2wgKnN5bSwgaW50IG1wX2YK IAkJCSAiYSBkZWZlcnJlZCBzaGFwZSIsIHN5bS0+bmFtZSwgJnN5bS0+ZGVj bGFyZWRfYXQpOwogCSAgICAgIHJldHVybiBGQUlMVVJFOwogCSAgICB9Ci0J ICBlbHNlIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIlNj YWxhciBvYmplY3QgJyVzJyBhdCAlTCAiCi0JCQkJICAgIm1heSBub3QgYmUg QUxMT0NBVEFCTEUiLCBzeW0tPm5hbWUsCi0JCQkJICAgJnN5bS0+ZGVjbGFy ZWRfYXQpID09IEZBSUxVUkUpCisJICBlbHNlIGlmIChnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwMywgIlNjYWxhciBvYmplY3QgIgorCQkJCSAgICIn JXMnIGF0ICVMIG1heSBub3QgYmUgQUxMT0NBVEFCTEUiLAorCQkJCSAgIHN5 bS0+bmFtZSwgJnN5bS0+ZGVjbGFyZWRfYXQpID09IEZBSUxVUkUpCiAJICAg IHJldHVybiBGQUlMVVJFOwogCX0KIApAQCAtMTA0MjMsNyArMTA0MjMsNyBA QCByZXNvbHZlX2ZsX3ZhcmlhYmxlX2Rlcml2ZWQgKGdmY19zeW1ib2wgKnN5 bSwgaW50CiAgICAgICAmJiAhc3ltLT5ucy0+c2F2ZV9hbGwgJiYgIXN5bS0+ YXR0ci5zYXZlCiAgICAgICAmJiAhc3ltLT5hdHRyLnBvaW50ZXIgJiYgIXN5 bS0+YXR0ci5hbGxvY2F0YWJsZQogICAgICAgJiYgZ2ZjX2hhc19kZWZhdWx0 X2luaXRpYWxpemVyIChzeW0tPnRzLnUuZGVyaXZlZCkKLSAgICAgICYmIGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRm9ydHJhbiAyMDA4OiBJ bXBsaWVkIFNBVkUgZm9yICIKKyAgICAgICYmIGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDA4LCAiSW1wbGllZCBTQVZFIGZvciAiCiAJCQkgIm1vZHVs ZSB2YXJpYWJsZSAnJXMnIGF0ICVMLCBuZWVkZWQgZHVlIHRvICIKIAkJCSAi dGhlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24iLCBzeW0tPm5hbWUsCiAJCQkg JnN5bS0+ZGVjbGFyZWRfYXQpID09IEZBSUxVUkUpCkBAIC0xMDYzOCw3ICsx MDYzOCw3IEBAIHJlc29sdmVfZmxfcHJvY2VkdXJlIChnZmNfc3ltYm9sICpz eW0sIGludCBtcF9mbGFnCiAJICAgICAgJiYgYXJnLT5zeW0tPnRzLnR5cGUg PT0gQlRfREVSSVZFRAogCSAgICAgICYmICFhcmctPnN5bS0+dHMudS5kZXJp dmVkLT5hdHRyLnVzZV9hc3NvYwogCSAgICAgICYmICFnZmNfY2hlY2tfc3lt Ym9sX2FjY2VzcyAoYXJnLT5zeW0tPnRzLnUuZGVyaXZlZCkKLQkgICAgICAm JiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAw MzogJyVzJyBpcyBvZiBhICIKKwkgICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9GMjAwMywgIiclcycgaXMgb2YgYSAiCiAJCQkJICJQUklWQVRF IHR5cGUgYW5kIGNhbm5vdCBiZSBhIGR1bW15IGFyZ3VtZW50IgogCQkJCSAi IG9mICclcycsIHdoaWNoIGlzIFBVQkxJQyBhdCAlTCIsCiAJCQkJIGFyZy0+ c3ltLT5uYW1lLCBzeW0tPm5hbWUsICZzeW0tPmRlY2xhcmVkX2F0KQpAQCAt MTA2NjAsNyArMTA2NjAsNyBAQCByZXNvbHZlX2ZsX3Byb2NlZHVyZSAoZ2Zj X3N5bWJvbCAqc3ltLCBpbnQgbXBfZmxhZwogCQkgICYmIGFyZy0+c3ltLT50 cy50eXBlID09IEJUX0RFUklWRUQKIAkJICAmJiAhYXJnLT5zeW0tPnRzLnUu ZGVyaXZlZC0+YXR0ci51c2VfYXNzb2MKIAkJICAmJiAhZ2ZjX2NoZWNrX3N5 bWJvbF9hY2Nlc3MgKGFyZy0+c3ltLT50cy51LmRlcml2ZWQpCi0JCSAgJiYg Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6 IFByb2NlZHVyZSAiCisJCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf RjIwMDMsICJQcm9jZWR1cmUgIgogCQkJCSAgICAgIiclcycgaW4gUFVCTElD IGludGVyZmFjZSAnJXMnIGF0ICVMICIKIAkJCQkgICAgICJ0YWtlcyBkdW1t eSBhcmd1bWVudHMgb2YgJyVzJyB3aGljaCBpcyAiCiAJCQkJICAgICAiUFJJ VkFURSIsIGlmYWNlLT5zeW0tPm5hbWUsIHN5bS0+bmFtZSwKQEAgLTEwNjg0 LDcgKzEwNjg0LDcgQEAgcmVzb2x2ZV9mbF9wcm9jZWR1cmUgKGdmY19zeW1i b2wgKnN5bSwgaW50IG1wX2ZsYWcKIAkJICAmJiBhcmctPnN5bS0+dHMudHlw ZSA9PSBCVF9ERVJJVkVECiAJCSAgJiYgIWFyZy0+c3ltLT50cy51LmRlcml2 ZWQtPmF0dHIudXNlX2Fzc29jCiAJCSAgJiYgIWdmY19jaGVja19zeW1ib2xf YWNjZXNzIChhcmctPnN5bS0+dHMudS5kZXJpdmVkKQotCQkgICYmIGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBQcm9j ZWR1cmUgIgorCQkgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAz LCAiUHJvY2VkdXJlICIKIAkJCQkgICAgICInJXMnIGluIFBVQkxJQyBpbnRl cmZhY2UgJyVzJyBhdCAlTCAiCiAJCQkJICAgICAidGFrZXMgZHVtbXkgYXJn dW1lbnRzIG9mICclcycgd2hpY2ggaXMgIgogCQkJCSAgICAgIlBSSVZBVEUi LCBpZmFjZS0+c3ltLT5uYW1lLCBzeW0tPm5hbWUsCkBAIC0xMDc3Miw3ICsx MDc3Miw3IEBAIHJlc29sdmVfZmxfcHJvY2VkdXJlIChnZmNfc3ltYm9sICpz eW0sIGludCBtcF9mbGFnCiAgICAgICBpZiAoIXN5bS0+YXR0ci5jb250YWlu ZWQKIAkgICAgJiYgZ2ZjX2N1cnJlbnRfZm9ybSAhPSBGT1JNX0ZJWEVECiAJ ICAgICYmICFzeW0tPnRzLmRlZmVycmVkKQotCWdmY19ub3RpZnlfc3RkIChH RkNfU1REX0Y5NV9PQlMsICJPYnNvbGVzY2VudCBmZWF0dXJlOiAiCisJZ2Zj X25vdGlmeV9zdGQgKEdGQ19TVERfRjk1X09CUywKIAkJCSJDSEFSQUNURVIo KikgZnVuY3Rpb24gJyVzJyBhdCAlTCIsCiAJCQlzeW0tPm5hbWUsICZzeW0t PmRlY2xhcmVkX2F0KTsKICAgICB9CkBAIC0xMTk5Miw3ICsxMTk5Miw3IEBA IHJlc29sdmVfZmxfZGVyaXZlZDAgKGdmY19zeW1ib2wgKnN5bSkKIAkgICYm ICFpc19zeW1faG9zdF9hc3NvYyAoYy0+dHMudS5kZXJpdmVkLCBzeW0tPm5z KQogCSAgJiYgIWMtPnRzLnUuZGVyaXZlZC0+YXR0ci51c2VfYXNzb2MKIAkg ICYmICFnZmNfY2hlY2tfc3ltYm9sX2FjY2VzcyAoYy0+dHMudS5kZXJpdmVk KQotCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0 cmFuIDIwMDM6IHRoZSBjb21wb25lbnQgJyVzJyAiCisJICAmJiBnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgInRoZSBjb21wb25lbnQgJyVzJyAi CiAJCQkgICAgICJpcyBhIFBSSVZBVEUgdHlwZSBhbmQgY2Fubm90IGJlIGEg Y29tcG9uZW50IG9mICIKIAkJCSAgICAgIiclcycsIHdoaWNoIGlzIFBVQkxJ QyBhdCAlTCIsIGMtPm5hbWUsCiAJCQkgICAgIHN5bS0+bmFtZSwgJnN5bS0+ ZGVjbGFyZWRfYXQpID09IEZBSUxVUkUpCkBAIC0xMjEwMCw3ICsxMjEwMCw3 IEBAIHJlc29sdmVfZmxfZGVyaXZlZCAoZ2ZjX3N5bWJvbCAqc3ltKQogICBp ZiAoZ2VuX2R0ICYmIGdlbl9kdC0+Z2VuZXJpYyAmJiBnZW5fZHQtPmdlbmVy aWMtPm5leHQKICAgICAgICYmICghZ2VuX2R0LT5nZW5lcmljLT5zeW0tPmF0 dHIudXNlX2Fzc29jCiAJICB8fCBnZW5fZHQtPmdlbmVyaWMtPnN5bS0+bW9k dWxlICE9IGdlbl9kdC0+Z2VuZXJpYy0+bmV4dC0+c3ltLT5tb2R1bGUpCi0g ICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRy YW4gMjAwMzogR2VuZXJpYyBuYW1lICclcycgb2YgIgorICAgICAgJiYgZ2Zj X25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJHZW5lcmljIG5hbWUgJyVz JyBvZiAiCiAJCQkgImZ1bmN0aW9uICclcycgYXQgJUwgYmVpbmcgdGhlIHNh bWUgbmFtZSBhcyBkZXJpdmVkICIKIAkJCSAidHlwZSBhdCAlTCIsIHN5bS0+ bmFtZSwKIAkJCSBnZW5fZHQtPmdlbmVyaWMtPnN5bSA9PSBzeW0KQEAgLTEy MTU4LDE0ICsxMjE1OCwxNCBAQCByZXNvbHZlX2ZsX25hbWVsaXN0IChnZmNf c3ltYm9sICpzeW0pCiAJfQogCiAgICAgICBpZiAobmwtPnN5bS0+YXMgJiYg bmwtPnN5bS0+YXMtPnR5cGUgPT0gQVNfQVNTVU1FRF9TSEFQRQotCSAgJiYg Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6 IE5BTUVMSVNUIGFycmF5ICIKKwkgICYmIGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiTkFNRUxJU1QgYXJyYXkgIgogCQkJICAgICAib2JqZWN0 ICclcycgd2l0aCBhc3N1bWVkIHNoYXBlIGluIG5hbWVsaXN0ICIKIAkJCSAg ICAgIiclcycgYXQgJUwiLCBubC0+c3ltLT5uYW1lLCBzeW0tPm5hbWUsCiAJ CQkgICAgICZzeW0tPmRlY2xhcmVkX2F0KSA9PSBGQUlMVVJFKQogCXJldHVy biBGQUlMVVJFOwogCiAgICAgICBpZiAoaXNfbm9uX2NvbnN0YW50X3NoYXBl X2FycmF5IChubC0+c3ltKQotCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDMsICAiRm9ydHJhbiAyMDAzOiBOQU1FTElTVCBhcnJheSAiCisJ ICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIk5BTUVMSVNU IGFycmF5ICIKIAkJCSAgICAgIm9iamVjdCAnJXMnIHdpdGggbm9uY29uc3Rh bnQgc2hhcGUgaW4gbmFtZWxpc3QgIgogCQkJICAgICAiJyVzJyBhdCAlTCIs IG5sLT5zeW0tPm5hbWUsIHN5bS0+bmFtZSwKIAkJCSAgICAgJnN5bS0+ZGVj bGFyZWRfYXQpID09IEZBSUxVUkUpCkBAIC0xMjE3NCw3ICsxMjE3NCw3IEBA IHJlc29sdmVfZmxfbmFtZWxpc3QgKGdmY19zeW1ib2wgKnN5bSkKICAgICAg IGlmIChubC0+c3ltLT50cy50eXBlID09IEJUX0NIQVJBQ1RFUgogCSAgJiYg KG5sLT5zeW0tPnRzLnUuY2wtPmxlbmd0aCA9PSBOVUxMCiAJICAgICAgfHwg IWdmY19pc19jb25zdGFudF9leHByIChubC0+c3ltLT50cy51LmNsLT5sZW5n dGgpKQotCSAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICAi Rm9ydHJhbiAyMDAzOiBOQU1FTElTVCBvYmplY3QgIgorCSAgJiYgZ2ZjX25v dGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJOQU1FTElTVCBvYmplY3QgIgog CQkJICAgICAiJyVzJyB3aXRoIG5vbmNvbnN0YW50IGNoYXJhY3RlciBsZW5n dGggaW4gIgogCQkJICAgICAibmFtZWxpc3QgJyVzJyBhdCAlTCIsIG5sLT5z eW0tPm5hbWUsIHN5bS0+bmFtZSwKIAkJCSAgICAgJnN5bS0+ZGVjbGFyZWRf YXQpID09IEZBSUxVUkUpCkBAIC0xMjE5NCw3ICsxMjE5NCw3IEBAIHJlc29s dmVfZmxfbmFtZWxpc3QgKGdmY19zeW1ib2wgKnN5bSkKIAkgICYmIChubC0+ c3ltLT50cy51LmRlcml2ZWQtPmF0dHIuYWxsb2NfY29tcAogCSAgICAgIHx8 IG5sLT5zeW0tPnRzLnUuZGVyaXZlZC0+YXR0ci5wb2ludGVyX2NvbXApKQog CXsKLQkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgICJG b3J0cmFuIDIwMDM6IE5BTUVMSVNUIG9iamVjdCAiCisJICBpZiAoZ2ZjX25v dGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJOQU1FTElTVCBvYmplY3QgIgog CQkJICAgICAgIiclcycgaW4gbmFtZWxpc3QgJyVzJyBhdCAlTCB3aXRoIEFM TE9DQVRBQkxFICIKIAkJCSAgICAgICJvciBQT0lOVEVSIGNvbXBvbmVudHMi LCBubC0+c3ltLT5uYW1lLAogCQkJICAgICAgc3ltLT5uYW1lLCAmc3ltLT5k ZWNsYXJlZF9hdCkgPT0gRkFJTFVSRSkKQEAgLTEyNjcyLDcgKzEyNjcyLDcg QEAgcmVzb2x2ZV9zeW1ib2wgKGdmY19zeW1ib2wgKnN5bSkKICAgICAgICYm ICFzeW0tPnRzLnUuZGVyaXZlZC0+YXR0ci51c2VfYXNzb2MKICAgICAgICYm IGdmY19jaGVja19zeW1ib2xfYWNjZXNzIChzeW0pCiAgICAgICAmJiAhZ2Zj X2NoZWNrX3N5bWJvbF9hY2Nlc3MgKHN5bS0+dHMudS5kZXJpdmVkKQotICAg ICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFu IDIwMDM6IFBVQkxJQyAlcyAnJXMnIGF0ICVMICIKKyAgICAgICYmIGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiUFVCTElDICVzICclcycgYXQg JUwgIgogCQkgICAgICAgICAib2YgUFJJVkFURSBkZXJpdmVkIHR5cGUgJyVz JyIsCiAJCQkgKHN5bS0+YXR0ci5mbGF2b3IgPT0gRkxfUEFSQU1FVEVSKSA/ ICJwYXJhbWV0ZXIiCiAJCQkgOiAidmFyaWFibGUiLCBzeW0tPm5hbWUsICZz eW0tPmRlY2xhcmVkX2F0LApAQCAtMTM4MzgsNyArMTM4MzgsNyBAQCByZXNv bHZlX2ZudHlwZSAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAgICAgICAmJiAhZ2Zj X2NoZWNrX3N5bWJvbF9hY2Nlc3MgKHN5bS0+dHMudS5kZXJpdmVkKQogICAg ICAgJiYgZ2ZjX2NoZWNrX3N5bWJvbF9hY2Nlc3MgKHN5bSkpCiAgICAgewot ICAgICAgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFu IDIwMDM6IFBVQkxJQyBmdW5jdGlvbiAnJXMnIGF0ICIKKyAgICAgIGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiUFVCTElDIGZ1bmN0aW9uICcl cycgYXQgIgogCQkgICAgICAiJUwgb2YgUFJJVkFURSB0eXBlICclcyciLCBz eW0tPm5hbWUsCiAJCSAgICAgICZzeW0tPmRlY2xhcmVkX2F0LCBzeW0tPnRz LnUuZGVyaXZlZC0+bmFtZSk7CiAgICAgfQpJbmRleDogZ2NjL2ZvcnRyYW4v bWF0Y2guYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJh bi9tYXRjaC5jCShyZXZpc2lvbiAxODk1NjEpCisrKyBnY2MvZm9ydHJhbi9t YXRjaC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMzkzLDcgKzEzOTMsNyBAQCBt YXRjaF9hcml0aG1ldGljX2lmICh2b2lkKQogICAgICAgcmV0dXJuIE1BVENI X0VSUk9SOwogICAgIH0KIAotICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjk1X09CUywgIk9ic29sZXNjZW50IGZlYXR1cmU6IEFyaXRobWV0aWMg SUYgIgorICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjk1X09CUywg IkFyaXRobWV0aWMgSUYgIgogCQkgICAgICAic3RhdGVtZW50IGF0ICVDIikg PT0gRkFJTFVSRSkKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAKQEAgLTE0 NzQsNyArMTQ3NCw3IEBAIGdmY19tYXRjaF9pZiAoZ2ZjX3N0YXRlbWVudCAq aWZfdHlwZSkKIAkgIHJldHVybiBNQVRDSF9FUlJPUjsKIAl9CiAgICAgICAK LSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GOTVfT0JTLCAi T2Jzb2xlc2NlbnQgZmVhdHVyZTogQXJpdGhtZXRpYyBJRiAiCisgICAgICBp ZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjk1X09CUywgIkFyaXRobWV0 aWMgSUYgIgogCQkJICAic3RhdGVtZW50IGF0ICVDIikgPT0gRkFJTFVSRSkK IAlyZXR1cm4gTUFUQ0hfRVJST1I7CiAKQEAgLTE3NTgsNyArMTc1OCw3IEBA IGdmY19tYXRjaF9jcml0aWNhbCAodm9pZCkKICAgaWYgKGdmY19pbXBsaWNp dF9wdXJlIChOVUxMKSkKICAgICBnZmNfY3VycmVudF9ucy0+cHJvY19uYW1l LT5hdHRyLmltcGxpY2l0X3B1cmUgPSAwOwogCi0gIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkZvcnRyYW4gMjAwODogQ1JJVElDQUwg c3RhdGVtZW50IGF0ICVDIikKKyAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDA4LCAiQ1JJVElDQUwgc3RhdGVtZW50IGF0ICVDIikKICAgICAg ID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwogCkBAIC0y MzgyLDcgKzIzODIsNyBAQCBnZmNfbWF0Y2hfZG8gKHZvaWQpCiAgICAgICBn ZmNfZm9yYWxsX2l0ZXJhdG9yICpoZWFkOwogICAgICAgZ2ZjX2V4cHIgKm1h c2s7CiAKLSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw OCwgIkZvcnRyYW4gMjAwODogRE8gQ09OQ1VSUkVOVCAiCisgICAgICBpZiAo Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJETyBDT05DVVJSRU5U ICIKIAkJCSAgICJjb25zdHJ1Y3QgYXQgJUMiKSA9PSBGQUlMVVJFKQogCXJl dHVybiBNQVRDSF9FUlJPUjsKIApAQCAtMjU4MSw3ICsyNTgxLDcgQEAgbWF0 Y2hfZXhpdF9jeWNsZSAoZ2ZjX3N0YXRlbWVudCBzdCwgZ2ZjX2V4ZWNfb3Ag b3AKIAkgIHJldHVybiBNQVRDSF9FUlJPUjsKIAl9CiAgICAgICBnY2NfYXNz ZXJ0IChvcCA9PSBFWEVDX0VYSVQpOwotICAgICAgaWYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDA4LCAiRm9ydHJhbiAyMDA4OiBFWElUIHN0YXRl bWVudCB3aXRoIG5vIgorICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDA4LCAiRVhJVCBzdGF0ZW1lbnQgd2l0aCBubyIKIAkJCSAgIiBk by1jb25zdHJ1Y3QtbmFtZSBhdCAlQyIpID09IEZBSUxVUkUpCiAJcmV0dXJu IE1BVENIX0VSUk9SOwogICAgICAgYnJlYWs7CkBAIC0yNzcyLDcgKzI3NzIs NyBAQCBnZmNfbWF0Y2hfcGF1c2UgKHZvaWQpCiAgIG0gPSBnZmNfbWF0Y2hf c3RvcGNvZGUgKFNUX1BBVVNFKTsKICAgaWYgKG0gPT0gTUFUQ0hfWUVTKQog ICAgIHsKLSAgICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GOTVf REVMLCAiRGVsZXRlZCBmZWF0dXJlOiBQQVVTRSBzdGF0ZW1lbnQiCisgICAg ICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjk1X0RFTCwgIlBBVVNF IHN0YXRlbWVudCIKIAkgICIgYXQgJUMiKQogCSAgPT0gRkFJTFVSRSkKIAlt ID0gTUFUQ0hfRVJST1I7CkBAIC0yNzk1LDcgKzI3OTUsNyBAQCBnZmNfbWF0 Y2hfc3RvcCAodm9pZCkKIG1hdGNoCiBnZmNfbWF0Y2hfZXJyb3Jfc3RvcCAo dm9pZCkKIHsKLSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4 LCAiRm9ydHJhbiAyMDA4OiBFUlJPUiBTVE9QIHN0YXRlbWVudCBhdCAlQyIp CisgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkVSUk9S IFNUT1Agc3RhdGVtZW50IGF0ICVDIikKICAgICAgID09IEZBSUxVUkUpCiAg ICAgcmV0dXJuIE1BVENIX0VSUk9SOwogCkBAIC0yOTc3LDcgKzI5NzcsNyBA QCBjbGVhbnVwOgogbWF0Y2gKIGdmY19tYXRjaF9sb2NrICh2b2lkKQogewot ICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJGb3J0cmFu IDIwMDg6IExPQ0sgc3RhdGVtZW50IGF0ICVDIikKKyAgaWYgKGdmY19ub3Rp Znlfc3RkIChHRkNfU1REX0YyMDA4LCAiTE9DSyBzdGF0ZW1lbnQgYXQgJUMi KQogICAgICAgPT0gRkFJTFVSRSkKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7 CiAKQEAgLTI5ODgsNyArMjk4OCw3IEBAIGdmY19tYXRjaF9sb2NrICh2b2lk KQogbWF0Y2gKIGdmY19tYXRjaF91bmxvY2sgKHZvaWQpCiB7Ci0gIGlmIChn ZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIkZvcnRyYW4gMjAwODog VU5MT0NLIHN0YXRlbWVudCBhdCAlQyIpCisgIGlmIChnZmNfbm90aWZ5X3N0 ZCAoR0ZDX1NURF9GMjAwOCwgIlVOTE9DSyBzdGF0ZW1lbnQgYXQgJUMiKQog ICAgICAgPT0gRkFJTFVSRSkKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAK QEAgLTMwMjEsNyArMzAyMSw3IEBAIHN5bmNfc3RhdGVtZW50IChnZmNfc3Rh dGVtZW50IHN0KQogICBpZiAoZ2ZjX2ltcGxpY2l0X3B1cmUgKE5VTEwpKQog ICAgIGdmY19jdXJyZW50X25zLT5wcm9jX25hbWUtPmF0dHIuaW1wbGljaXRf cHVyZSA9IDA7CiAKLSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDA4LCAiRm9ydHJhbiAyMDA4OiBTWU5DIHN0YXRlbWVudCBhdCAlQyIpCisg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIlNZTkMgc3Rh dGVtZW50IGF0ICVDIikKICAgICAgID09IEZBSUxVUkUpCiAgICAgcmV0dXJu IE1BVENIX0VSUk9SOwogCkBAIC0zMjE5LDcgKzMyMTksNyBAQCBnZmNfbWF0 Y2hfYXNzaWduICh2b2lkKQogCXJldHVybiBNQVRDSF9FUlJPUjsKICAgICAg IGlmIChnZmNfbWF0Y2ggKCIgdG8gJXYldCIsICZleHByKSA9PSBNQVRDSF9Z RVMpCiAJewotCSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Y5NV9E RUwsICJEZWxldGVkIGZlYXR1cmU6IEFTU0lHTiAiCisJICBpZiAoZ2ZjX25v dGlmeV9zdGQgKEdGQ19TVERfRjk1X0RFTCwgIkFTU0lHTiAiCiAJCQkgICAg ICAic3RhdGVtZW50IGF0ICVDIikKIAkgICAgICA9PSBGQUlMVVJFKQogCSAg ICByZXR1cm4gTUFUQ0hfRVJST1I7CkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBn ZmNfbWF0Y2hfZ290byAodm9pZCkKIAogICBpZiAoZ2ZjX21hdGNoX3Zhcmlh YmxlICgmZXhwciwgMCkgPT0gTUFUQ0hfWUVTKQogICAgIHsKLSAgICAgIGlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GOTVfREVMLCAiRGVsZXRlZCBm ZWF0dXJlOiBBc3NpZ25lZCBHT1RPICIKKyAgICAgIGlmIChnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GOTVfREVMLCAiQXNzaWduZWQgR09UTyAiCiAJCQkg ICJzdGF0ZW1lbnQgYXQgJUMiKQogCSAgPT0gRkFJTFVSRSkKIAlyZXR1cm4g TUFUQ0hfRVJST1I7CkBAIC0zMzc1LDcgKzMzNzUsNyBAQCBnZmNfbWF0Y2hf Z290byAodm9pZCkKICAgaWYgKGdmY19tYXRjaCAoIiAlZSV0IiwgJmV4cHIp ICE9IE1BVENIX1lFUykKICAgICBnb3RvIHN5bnRheDsKIAotICBpZiAoZ2Zj X25vdGlmeV9zdGQgKEdGQ19TVERfRjk1X09CUywgIk9ic29sZXNjZW50IGZl YXR1cmU6IENvbXB1dGVkIEdPVE8gIgorICBpZiAoZ2ZjX25vdGlmeV9zdGQg KEdGQ19TVERfRjk1X09CUywgIkNvbXB1dGVkIEdPVE8gIgogCQkgICAgICAi YXQgJUMiKSA9PSBGQUlMVVJFKQogICAgIHJldHVybiBNQVRDSF9FUlJPUjsK IApAQCAtMzQ1Nyw3ICszNDU3LDcgQEAgZ2ZjX21hdGNoX2FsbG9jYXRlICh2 b2lkKQogICAgIHsKICAgICAgIGlmIChnZmNfbWF0Y2ggKCIgOjogIikgPT0g TUFUQ0hfWUVTKQogCXsKLQkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NU RF9GMjAwMywgIkZvcnRyYW4gMjAwMzogdHlwZXNwZWMgaW4gIgorCSAgaWYg KGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAidHlwZXNwZWMgaW4g IgogCQkJICAgICAgIkFMTE9DQVRFIGF0ICVMIiwgJm9sZF9sb2N1cykgPT0g RkFJTFVSRSkKIAkgICAgZ290byBjbGVhbnVwOwogCkBAIC0zNjIwLDcgKzM2 MjAsNyBAQCBhbGxvY19vcHRfbGlzdDoKIAlnb3RvIGNsZWFudXA7CiAgICAg ICBpZiAobSA9PSBNQVRDSF9ZRVMpCiAJewotCSAgaWYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBFUlJNU0cgdGFn IGF0ICVMIiwKKwkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw MywgIkVSUk1TRyB0YWcgYXQgJUwiLAogCQkJICAgICAgJnRtcC0+d2hlcmUp ID09IEZBSUxVUkUpCiAJICAgIGdvdG8gY2xlYW51cDsKIApAQCAtMzY0NCw3 ICszNjQ0LDcgQEAgYWxsb2Nfb3B0X2xpc3Q6CiAJZ290byBjbGVhbnVwOwog ICAgICAgaWYgKG0gPT0gTUFUQ0hfWUVTKQogCXsKLQkgIGlmIChnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogU09VUkNF IHRhZyBhdCAlTCIsCisJICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf RjIwMDMsICJTT1VSQ0UgdGFnIGF0ICVMIiwKIAkJCSAgICAgICZ0bXAtPndo ZXJlKSA9PSBGQUlMVVJFKQogCSAgICBnb3RvIGNsZWFudXA7CiAKQEAgLTM2 NjQsNyArMzY2NCw3IEBAIGFsbG9jX29wdF9saXN0OgogCSAgICB9CiAKIAkg IGlmIChoZWFkLT5uZXh0Ci0JICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdG Q19TVERfRjIwMDgsICJGb3J0cmFuIDIwMDg6IFNPVVJDRSB0YWcgYXQgJUwi CisJICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJT T1VSQ0UgdGFnIGF0ICVMIgogCQkJCSAiIHdpdGggbW9yZSB0aGFuIGEgc2lu Z2xlIGFsbG9jYXRlIG9iamVjdCIsCiAJCQkJICZ0bXAtPndoZXJlKSA9PSBG QUlMVVJFKQogCSAgICBnb3RvIGNsZWFudXA7CkBAIC0zNjgyLDcgKzM2ODIs NyBAQCBhbGxvY19vcHRfbGlzdDoKIAlnb3RvIGNsZWFudXA7CiAgICAgICBp ZiAobSA9PSBNQVRDSF9ZRVMpCiAJewotCSAgaWYgKGdmY19ub3RpZnlfc3Rk IChHRkNfU1REX0YyMDA4LCAiRm9ydHJhbiAyMDA4OiBNT0xEIHRhZyBhdCAl TCIsCisJICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJN T0xEIHRhZyBhdCAlTCIsCiAJCQkgICAgICAmdG1wLT53aGVyZSkgPT0gRkFJ TFVSRSkKIAkgICAgZ290byBjbGVhbnVwOwogCkBAIC0zOTQ0LDcgKzM5NDQs NyBAQCBkZWFsbG9jX29wdF9saXN0OgogCWdvdG8gY2xlYW51cDsKICAgICAg IGlmIChtID09IE1BVENIX1lFUykKIAl7Ci0JICBpZiAoZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IEVSUk1TRyBhdCAl TCIsCisJICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJF UlJNU0cgYXQgJUwiLAogCQkJICAgICAgJnRtcC0+d2hlcmUpID09IEZBSUxV UkUpCiAJICAgIGdvdG8gY2xlYW51cDsKIApAQCAtNDAyMiw3ICs0MDIyLDcg QEAgZ2ZjX21hdGNoX3JldHVybiAodm9pZCkKICAgICAgIGdvdG8gY2xlYW51 cDsKICAgICB9CiAKLSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Y5 NV9PQlMsICJPYnNvbGVzY2VudCBmZWF0dXJlOiBBbHRlcm5hdGUgUkVUVVJO ICIKKyAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Y5NV9PQlMsICJB bHRlcm5hdGUgUkVUVVJOICIKIAkJICAgICAgImF0ICVDIikgPT0gRkFJTFVS RSkKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAKQEAgLTQwNTIsNyArNDA1 Miw3IEBAIGNsZWFudXA6CiBkb25lOgogICBnZmNfZW5jbG9zaW5nX3VuaXQg KCZzKTsKICAgaWYgKHMgPT0gQ09NUF9QUk9HUkFNCi0gICAgICAmJiBnZmNf bm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJFeHRlbnNpb246IFJFVFVSTiBz dGF0ZW1lbnQgaW4gIgorICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfR05VLCAiUkVUVVJOIHN0YXRlbWVudCBpbiAiCiAJCQkibWFpbiBwcm9n cmFtIGF0ICVDIikgPT0gRkFJTFVSRSkKICAgICAgIHJldHVybiBNQVRDSF9F UlJPUjsKIApAQCAtNDk2Niw3ICs0OTY2LDcgQEAgZ2ZjX21hdGNoX3N0X2Z1 bmN0aW9uICh2b2lkKQogCiAgIHN5bS0+dmFsdWUgPSBleHByOwogCi0gIGlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GOTVfT0JTLCAiT2Jzb2xlc2Nl bnQgZmVhdHVyZTogIgorICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf Rjk1X09CUywKIAkJICAgICAgIlN0YXRlbWVudCBmdW5jdGlvbiBhdCAlQyIp ID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwogCkluZGV4 OiBnY2MvZm9ydHJhbi9hcml0aC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGdjYy9mb3J0cmFuL2FyaXRoLmMJKHJldmlzaW9uIDE4OTU2MSkKKysr IGdjYy9mb3J0cmFuL2FyaXRoLmMJKHdvcmtpbmcgY29weSkKQEAgLTkwMyw3 ICs5MDMsNyBAQCBhcml0aF9wb3dlciAoZ2ZjX2V4cHIgKm9wMSwgZ2ZjX2V4 cHIgKm9wMiwgZ2ZjX2V4cAogCiAgICAgICBpZiAoZ2ZjX2luaXRfZXhwcl9m bGFnKQogCXsKLQkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw MywiRm9ydHJhbiAyMDAzOiBOb25pbnRlZ2VyICIKKwkgIGlmIChnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIk5vbmludGVnZXIgIgogCQkJICAg ICAgImV4cG9uZW50IGluIGFuIGluaXRpYWxpemF0aW9uICIKIAkJCSAgICAg ICJleHByZXNzaW9uIGF0ICVMIiwgJm9wMi0+d2hlcmUpID09IEZBSUxVUkUp CiAJICAgIHJldHVybiBBUklUSF9QUk9ISUJJVDsKQEAgLTkyNSw3ICs5MjUs NyBAQCBhcml0aF9wb3dlciAoZ2ZjX2V4cHIgKm9wMSwgZ2ZjX2V4cHIgKm9w MiwgZ2ZjX2V4cAogICAgICAgewogCWlmIChnZmNfaW5pdF9leHByX2ZsYWcp CiAJICB7Ci0JICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw MywiRm9ydHJhbiAyMDAzOiBOb25pbnRlZ2VyICIKKwkgICAgaWYgKGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiTm9uaW50ZWdlciAiCiAJCQkJ ImV4cG9uZW50IGluIGFuIGluaXRpYWxpemF0aW9uICIKIAkJCQkiZXhwcmVz c2lvbiBhdCAlTCIsICZvcDItPndoZXJlKSA9PSBGQUlMVVJFKQogCSAgICAg IHJldHVybiBBUklUSF9QUk9ISUJJVDsKSW5kZXg6IGdjYy9mb3J0cmFuL3Bh cnNlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4v cGFyc2UuYwkocmV2aXNpb24gMTg5NTYxKQorKysgZ2NjL2ZvcnRyYW4vcGFy c2UuYwkod29ya2luZyBjb3B5KQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgcGFy c2VfZGVyaXZlZF9jb250YWlucyAodm9pZCkKIAkgIGdvdG8gZXJyb3I7CiAK IAljYXNlIFNUX1BST0NFRFVSRToKLQkgIGlmIChnZmNfbm90aWZ5X3N0ZCAo R0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogIFR5cGUtYm91bmQiCisJ ICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsICJUeXBlLWJv dW5kIgogCQkJCQkgICAgICIgcHJvY2VkdXJlIGF0ICVDIikgPT0gRkFJTFVS RSkKIAkgICAgZ290byBlcnJvcjsKIApAQCAtMTk4NSw3ICsxOTg1LDcgQEAg cGFyc2VfZGVyaXZlZF9jb250YWlucyAodm9pZCkKIAkgIGJyZWFrOwogCiAJ Y2FzZSBTVF9HRU5FUklDOgotCSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiAgR0VORVJJQyBiaW5kaW5nIgor CSAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiR0VORVJJ QyBiaW5kaW5nIgogCQkJCQkgICAgICIgYXQgJUMiKSA9PSBGQUlMVVJFKQog CSAgICBnb3RvIGVycm9yOwogCkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBwYXJz ZV9kZXJpdmVkX2NvbnRhaW5zICh2b2lkKQogCiAJY2FzZSBTVF9GSU5BTDoK IAkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywKLQkJCSAg ICAgICJGb3J0cmFuIDIwMDM6ICBGSU5BTCBwcm9jZWR1cmUgZGVjbGFyYXRp b24iCisJCQkgICAgICAiRklOQUwgcHJvY2VkdXJlIGRlY2xhcmF0aW9uIgog CQkJICAgICAgIiBhdCAlQyIpID09IEZBSUxVUkUpCiAJICAgIGdvdG8gZXJy b3I7CiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIHBhcnNlX2Rlcml2ZWRfY29u dGFpbnMgKHZvaWQpCiAJICB0b19maW5pc2ggPSB0cnVlOwogCiAJICBpZiAo IXNlZW5fY29tcHMKLQkgICAgICAmJiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDgsICJGb3J0cmFuIDIwMDg6IERlcml2ZWQgdHlwZSAiCisJICAg ICAgJiYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiRGVyaXZl ZCB0eXBlICIKIAkJCQkgICJkZWZpbml0aW9uIGF0ICVDIHdpdGggZW1wdHkg Q09OVEFJTlMgIgogCQkJCSAgInNlY3Rpb24iKSA9PSBGQUlMVVJFKSkKIAkg ICAgZ290byBlcnJvcjsKQEAgLTIxMTIsNyArMjExMiw3IEBAIGVuZFR5cGU6 CiAJICBjb21waWxpbmdfdHlwZSA9IDA7CiAKIAkgIGlmICghc2Vlbl9jb21w b25lbnQpCi0JICAgIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAi Rm9ydHJhbiAyMDAzOiBEZXJpdmVkIHR5cGUgIgorCSAgICBnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkRlcml2ZWQgdHlwZSAiCiAJCQkgICAg ImRlZmluaXRpb24gYXQgJUMgd2l0aG91dCBjb21wb25lbnRzIik7CiAKIAkg IGFjY2VwdF9zdGF0ZW1lbnQgKFNUX0VORF9UWVBFKTsKQEAgLTIxNjYsNyAr MjE2Niw3IEBAIGVuZFR5cGU6CiAKIAljYXNlIFNUX0NPTlRBSU5TOgogCSAg Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDMsCi0JCQkgICJGb3J0cmFu IDIwMDM6ICBDT05UQUlOUyBibG9jayBpbiBkZXJpdmVkIHR5cGUiCisJCQkg ICJDT05UQUlOUyBibG9jayBpbiBkZXJpdmVkIHR5cGUiCiAJCQkgICIgZGVm aW5pdGlvbiBhdCAlQyIpOwogCiAJICBhY2NlcHRfc3RhdGVtZW50IChTVF9D T05UQUlOUyk7CkBAIC0zMzM1LDcgKzMzMzUsNyBAQCBwYXJzZV9ibG9ja19j b25zdHJ1Y3QgKHZvaWQpCiAgIGdmY19uYW1lc3BhY2UqIG15X25zOwogICBn ZmNfc3RhdGVfZGF0YSBzOwogCi0gIGdmY19ub3RpZnlfc3RkIChHRkNfU1RE X0YyMDA4LCAiRm9ydHJhbiAyMDA4OiBCTE9DSyBjb25zdHJ1Y3QgYXQgJUMi KTsKKyAgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgsICJCTE9DSyBj b25zdHJ1Y3QgYXQgJUMiKTsKIAogICBteV9ucyA9IGdmY19idWlsZF9ibG9j a19ucyAoZ2ZjX2N1cnJlbnRfbnMpOwogCkBAIC0zMzY1LDcgKzMzNjUsNyBA QCBwYXJzZV9hc3NvY2lhdGUgKHZvaWQpCiAgIGdmY19zdGF0ZW1lbnQgc3Q7 CiAgIGdmY19hc3NvY2lhdGlvbl9saXN0KiBhOwogCi0gIGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBBU1NPQ0lBVEUg Y29uc3RydWN0IGF0ICVDIik7CisgIGdmY19ub3RpZnlfc3RkIChHRkNfU1RE X0YyMDAzLCAiQVNTT0NJQVRFIGNvbnN0cnVjdCBhdCAlQyIpOwogCiAgIG15 X25zID0gZ2ZjX2J1aWxkX2Jsb2NrX25zIChnZmNfY3VycmVudF9ucyk7CiAK QEAgLTQwOTUsNyArNDA5NSw3IEBAIHBhcnNlX2NvbnRhaW5lZCAoaW50IG1v ZHVsZSkKIAogICBwb3Bfc3RhdGUgKCk7CiAgIGlmICghY29udGFpbnNfc3Rh dGVtZW50cykKLSAgICBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwg IkZvcnRyYW4gMjAwODogQ09OVEFJTlMgc3RhdGVtZW50IHdpdGhvdXQgIgor ICAgIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDA4LCAiQ09OVEFJTlMg c3RhdGVtZW50IHdpdGhvdXQgIgogCQkgICAgIkZVTkNUSU9OIG9yIFNVQlJP VVRJTkUgc3RhdGVtZW50IGF0ICVDIik7CiB9CiAKSW5kZXg6IGdjYy9mb3J0 cmFuL2NoZWNrLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2Zv cnRyYW4vY2hlY2suYwkocmV2aXNpb24gMTg5NTYxKQorKysgZ2NjL2ZvcnRy YW4vY2hlY2suYwkod29ya2luZyBjb3B5KQpAQCAtODYyLDcgKzg2Miw3IEBA IGdmY19jaGVja19hX3AgKGdmY19leHByICphLCBnZmNfZXhwciAqcCkKIAog ICBpZiAoYS0+dHMua2luZCAhPSBwLT50cy5raW5kKQogICAgIHsKLSAgICAg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJFeHRlbnNpb246 IERpZmZlcmVudCB0eXBlIGtpbmRzIGF0ICVMIiwKKyAgICAgIGlmIChnZmNf bm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJEaWZmZXJlbnQgdHlwZSBraW5k cyBhdCAlTCIsCiAJCQkgICZwLT53aGVyZSkgPT0gRkFJTFVSRSkKICAgICAg ICByZXR1cm4gRkFJTFVSRTsKICAgICB9CkBAIC0xMDgxLDcgKzEwODEsNyBA QCBnZmNfY2hlY2tfYmVzbiAoZ2ZjX2V4cHIgKm4sIGdmY19leHByICp4KQog ICAgIHsKICAgICAgIGludCBpOwogICAgICAgZ2ZjX2V4dHJhY3RfaW50IChu LCAmaSk7Ci0gICAgICBpZiAoaSA8IDAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdG Q19TVERfR05VLCAiRXh0ZW5zaW9uOiBOZWdhdGl2ZSBhcmd1bWVudCAiCisg ICAgICBpZiAoaSA8IDAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfR05V LCAiTmVnYXRpdmUgYXJndW1lbnQgIgogCQkJCSAgICJOIGF0ICVMIiwgJm4t PndoZXJlKSA9PSBGQUlMVVJFKQogCXJldHVybiBGQUlMVVJFOwogICAgIH0K QEAgLTEzMDYsNyArMTMwNiw3IEBAIGdmY19jaGVja19jb3VudCAoZ2ZjX2V4 cHIgKm1hc2ssIGdmY19leHByICpkaW0sIGdmCiAgICAgcmV0dXJuIEZBSUxV UkU7CiAgIGlmIChraW5kX2NoZWNrIChraW5kLCAyLCBCVF9JTlRFR0VSKSA9 PSBGQUlMVVJFKQogICAgIHJldHVybiBGQUlMVVJFOwotICBpZiAoa2luZCAm JiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAw MzogJyVzJyBpbnRyaW5zaWMgIgorICBpZiAoa2luZCAmJiBnZmNfbm90aWZ5 X3N0ZCAoR0ZDX1NURF9GMjAwMywgIiclcycgaW50cmluc2ljICIKIAkJCSAg ICAgICJ3aXRoIEtJTkQgYXJndW1lbnQgYXQgJUwiLAogCQkJICAgICAgZ2Zj X2N1cnJlbnRfaW50cmluc2ljLCAma2luZC0+d2hlcmUpID09IEZBSUxVUkUp CiAgICAgcmV0dXJuIEZBSUxVUkU7CkBAIC0xNjY0LDcgKzE2NjQsNyBAQCBn ZmNfY2hlY2tfZmxvYXQgKGdmY19leHByICphKQogICAgIHJldHVybiBGQUlM VVJFOwogCiAgIGlmICgoYS0+dHMua2luZCAhPSBnZmNfZGVmYXVsdF9pbnRl Z2VyX2tpbmQpCi0gICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9H TlUsICJHTlUgZXh0ZW5zaW9uOiBub24tZGVmYXVsdCBJTlRFR0VSICIKKyAg ICAgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIm5vbi1kZWZh dWx0IElOVEVHRVIgIgogCQkJICJraW5kIGFyZ3VtZW50IHRvICVzIGludHJp bnNpYyBhdCAlTCIsCiAJCQkgZ2ZjX2N1cnJlbnRfaW50cmluc2ljLCAmYS0+ d2hlcmUpID09IEZBSUxVUkUJKQogICAgIHJldHVybiBGQUlMVVJFOwpAQCAt MTcyNCw3ICsxNzI0LDcgQEAgZ2ZjX2NoZWNrX2ZuX3JjMjAwOCAoZ2ZjX2V4 cHIgKmEpCiAgICAgcmV0dXJuIEZBSUxVUkU7CiAKICAgaWYgKGEtPnRzLnR5 cGUgPT0gQlRfQ09NUExFWAotICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdG Q19TVERfRjIwMDgsICJGb3J0cmFuIDIwMDg6IENPTVBMRVggYXJndW1lbnQg JyVzJyAiCisgICAgICAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw OCwgIkNPTVBMRVggYXJndW1lbnQgJyVzJyAiCiAJCQkgImFyZ3VtZW50IG9m ICclcycgaW50cmluc2ljIGF0ICVMIiwKIAkJCSBnZmNfY3VycmVudF9pbnRy aW5zaWNfYXJnWzBdLT5uYW1lLAogCQkJIGdmY19jdXJyZW50X2ludHJpbnNp YywgJmEtPndoZXJlKSA9PSBGQUlMVVJFKQpAQCAtMTc5Miw3ICsxNzkyLDcg QEAgZ2ZjX2NoZWNrX2lhbmQgKGdmY19leHByICppLCBnZmNfZXhwciAqaikK IAogICBpZiAoaS0+dHMua2luZCAhPSBqLT50cy5raW5kKQogICAgIHsKLSAg ICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJFeHRlbnNp b246IERpZmZlcmVudCB0eXBlIGtpbmRzIGF0ICVMIiwKKyAgICAgIGlmIChn ZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJEaWZmZXJlbnQgdHlwZSBr aW5kcyBhdCAlTCIsCiAJCQkgICZpLT53aGVyZSkgPT0gRkFJTFVSRSkKIAly ZXR1cm4gRkFJTFVSRTsKICAgICB9CkBAIC0xODM3LDcgKzE4MzcsNyBAQCBn ZmNfY2hlY2tfaWNoYXJfaWFjaGFyIChnZmNfZXhwciAqYywgZ2ZjX2V4cHIg KmtpbgogICBpZiAoa2luZF9jaGVjayAoa2luZCwgMSwgQlRfSU5URUdFUikg PT0gRkFJTFVSRSkKICAgICByZXR1cm4gRkFJTFVSRTsKIAotICBpZiAoa2lu ZCAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4g MjAwMzogJyVzJyBpbnRyaW5zaWMgIgorICBpZiAoa2luZCAmJiBnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIiclcycgaW50cmluc2ljICIKIAkJ CSAgICAgICJ3aXRoIEtJTkQgYXJndW1lbnQgYXQgJUwiLAogCQkJICAgICAg Z2ZjX2N1cnJlbnRfaW50cmluc2ljLCAma2luZC0+d2hlcmUpID09IEZBSUxV UkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7CkBAIC0xOTE4LDcgKzE5MTgsNyBA QCBnZmNfY2hlY2tfaWVvciAoZ2ZjX2V4cHIgKmksIGdmY19leHByICpqKQog CiAgIGlmIChpLT50cy5raW5kICE9IGotPnRzLmtpbmQpCiAgICAgewotICAg ICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIkV4dGVuc2lv bjogRGlmZmVyZW50IHR5cGUga2luZHMgYXQgJUwiLAorICAgICAgaWYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIkRpZmZlcmVudCB0eXBlIGtp bmRzIGF0ICVMIiwKIAkJCSAgJmktPndoZXJlKSA9PSBGQUlMVVJFKQogCXJl dHVybiBGQUlMVVJFOwogICAgIH0KQEAgLTE5NDAsNyArMTk0MCw3IEBAIGdm Y19jaGVja19pbmRleCAoZ2ZjX2V4cHIgKnN0cmluZywgZ2ZjX2V4cHIgKnN1 YnN0CiAKICAgaWYgKGtpbmRfY2hlY2sgKGtpbmQsIDMsIEJUX0lOVEVHRVIp ID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7Ci0gIGlmIChraW5k ICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAy MDAzOiAnJXMnIGludHJpbnNpYyAiCisgIGlmIChraW5kICYmIGdmY19ub3Rp Znlfc3RkIChHRkNfU1REX0YyMDAzLCAiJyVzJyBpbnRyaW5zaWMgIgogCQkJ ICAgICAgIndpdGggS0lORCBhcmd1bWVudCBhdCAlTCIsCiAJCQkgICAgICBn ZmNfY3VycmVudF9pbnRyaW5zaWMsICZraW5kLT53aGVyZSkgPT0gRkFJTFVS RSkKICAgICByZXR1cm4gRkFJTFVSRTsKQEAgLTE5OTIsNyArMTk5Miw3IEBA IGdmY19jaGVja19pb3IgKGdmY19leHByICppLCBnZmNfZXhwciAqaikKIAog ICBpZiAoaS0+dHMua2luZCAhPSBqLT50cy5raW5kKQogICAgIHsKLSAgICAg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJFeHRlbnNpb246 IERpZmZlcmVudCB0eXBlIGtpbmRzIGF0ICVMIiwKKyAgICAgIGlmIChnZmNf bm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJEaWZmZXJlbnQgdHlwZSBraW5k cyBhdCAlTCIsCiAJCQkgICZpLT53aGVyZSkgPT0gRkFJTFVSRSkKIAlyZXR1 cm4gRkFJTFVSRTsKICAgICB9CkBAIC0yMTM0LDcgKzIxMzQsNyBAQCBnZmNf Y2hlY2tfbGJvdW5kIChnZmNfZXhwciAqYXJyYXksIGdmY19leHByICpkaW0s CiAKICAgaWYgKGtpbmRfY2hlY2sgKGtpbmQsIDIsIEJUX0lOVEVHRVIpID09 IEZBSUxVUkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7Ci0gIGlmIChraW5kICYm IGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAz OiAnJXMnIGludHJpbnNpYyAiCisgIGlmIChraW5kICYmIGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiJyVzJyBpbnRyaW5zaWMgIgogCQkJICAg ICAgIndpdGggS0lORCBhcmd1bWVudCBhdCAlTCIsCiAJCQkgICAgICBnZmNf Y3VycmVudF9pbnRyaW5zaWMsICZraW5kLT53aGVyZSkgPT0gRkFJTFVSRSkK ICAgICByZXR1cm4gRkFJTFVSRTsKQEAgLTIxNzksNyArMjE3OSw3IEBAIGdm Y19jaGVja19sZW5fbGVudHJpbSAoZ2ZjX2V4cHIgKnMsIGdmY19leHByICpr aW5kCiAKICAgaWYgKGtpbmRfY2hlY2sgKGtpbmQsIDEsIEJUX0lOVEVHRVIp ID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7Ci0gIGlmIChraW5k ICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAy MDAzOiAnJXMnIGludHJpbnNpYyAiCisgIGlmIChraW5kICYmIGdmY19ub3Rp Znlfc3RkIChHRkNfU1REX0YyMDAzLCAiJyVzJyBpbnRyaW5zaWMgIgogCQkJ ICAgICAgIndpdGggS0lORCBhcmd1bWVudCBhdCAlTCIsCiAJCQkgICAgICBn ZmNfY3VycmVudF9pbnRyaW5zaWMsICZraW5kLT53aGVyZSkgPT0gRkFJTFVS RSkKICAgICByZXR1cm4gRkFJTFVSRTsKQEAgLTIzNDQsNyArMjM0NCw3IEBA IGNoZWNrX3Jlc3QgKGJ0IHR5cGUsIGludCBraW5kLCBnZmNfYWN0dWFsX2Fy Z2xpc3QKIAl7CiAJICBpZiAoeC0+dHMudHlwZSA9PSB0eXBlKQogCSAgICB7 Ci0JICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgIkV4 dGVuc2lvbjogRGlmZmVyZW50IHR5cGUgIgorCSAgICAgIGlmIChnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJEaWZmZXJlbnQgdHlwZSAiCiAJCQkJ ICAia2luZHMgYXQgJUwiLCAmeC0+d2hlcmUpID09IEZBSUxVUkUpCiAJCXJl dHVybiBGQUlMVVJFOwogCSAgICB9CkBAIC0yMzgxLDcgKzIzODEsNyBAQCBn ZmNfY2hlY2tfbWluX21heCAoZ2ZjX2FjdHVhbF9hcmdsaXN0ICphcmcpCiAK ICAgaWYgKHgtPnRzLnR5cGUgPT0gQlRfQ0hBUkFDVEVSKQogICAgIHsKLSAg ICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRy YW4gMjAwMzogJyVzJyBpbnRyaW5zaWMgIgorICAgICAgaWYgKGdmY19ub3Rp Znlfc3RkIChHRkNfU1REX0YyMDAzLCAiJyVzJyBpbnRyaW5zaWMgIgogCQkJ ICAid2l0aCBDSEFSQUNURVIgYXJndW1lbnQgYXQgJUwiLAogCQkJICBnZmNf Y3VycmVudF9pbnRyaW5zaWMsICZ4LT53aGVyZSkgPT0gRkFJTFVSRSkKIAly ZXR1cm4gRkFJTFVSRTsKQEAgLTI4NjMsNyArMjg2Myw3IEBAIGdmY19jaGVj a19udWxsIChnZmNfZXhwciAqbW9sZCkKICAgICB9CiAKICAgaWYgKGF0dHIu YWxsb2NhdGFibGUKLSAgICAgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1RE X0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBOVUxMIGludHJpbnNpYyB3aXRoICIK KyAgICAgICYmIGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiTlVM TCBpbnRyaW5zaWMgd2l0aCAiCiAJCQkgImFsbG9jYXRhYmxlIE1PTEQgYXQg JUwiLCAmbW9sZC0+d2hlcmUpID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIEZB SUxVUkU7CiAKQEAgLTMzOTksNyArMzM5OSw3IEBAIGdmY19jaGVja19zY2Fu IChnZmNfZXhwciAqeCwgZ2ZjX2V4cHIgKnksIGdmY19leHByCiAKICAgaWYg KGtpbmRfY2hlY2sgKGtpbmQsIDMsIEJUX0lOVEVHRVIpID09IEZBSUxVUkUp CiAgICAgcmV0dXJuIEZBSUxVUkU7Ci0gIGlmIChraW5kICYmIGdmY19ub3Rp Znlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiAnJXMnIGlu dHJpbnNpYyAiCisgIGlmIChraW5kICYmIGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiJyVzJyBpbnRyaW5zaWMgIgogCQkJICAgICAgIndpdGgg S0lORCBhcmd1bWVudCBhdCAlTCIsCiAJCQkgICAgICBnZmNfY3VycmVudF9p bnRyaW5zaWMsICZraW5kLT53aGVyZSkgPT0gRkFJTFVSRSkKICAgICByZXR1 cm4gRkFJTFVSRTsKQEAgLTM0NjAsNyArMzQ2MCw3IEBAIGdmY190cnkKIGdm Y19jaGVja19zZWxlY3RlZF9yZWFsX2tpbmQgKGdmY19leHByICpwLCBnZmNf ZXhwciAqciwgZ2ZjX2V4cHIgKnJhZGl4KQogewogICBpZiAocCA9PSBOVUxM ICYmIHIgPT0gTlVMTAotICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfRjIwMDgsICJGb3J0cmFuIDIwMDg6IFNFTEVDVEVEX1JFQUxfS0lORCB3 aXRoIgorICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMDgs ICJTRUxFQ1RFRF9SRUFMX0tJTkQgd2l0aCIKIAkJCSAiIG5laXRoZXIgJ1An IG5vciAnUicgYXJndW1lbnQgYXQgJUwiLAogCQkJIGdmY19jdXJyZW50X2lu dHJpbnNpY193aGVyZSkgPT0gRkFJTFVSRSkKICAgICByZXR1cm4gRkFJTFVS RTsKQEAgLTM0OTEsNyArMzQ5MSw3IEBAIGdmY19jaGVja19zZWxlY3RlZF9y ZWFsX2tpbmQgKGdmY19leHByICpwLCBnZmNfZXhwCiAgICAgICBpZiAoc2Nh bGFyX2NoZWNrIChyYWRpeCwgMSkgPT0gRkFJTFVSRSkKIAlyZXR1cm4gRkFJ TFVSRTsKIAotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0Yy MDA4LCAiRm9ydHJhbiAyMDA4OiAnJXMnIGludHJpbnNpYyB3aXRoICIKKyAg ICAgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwOCwgIiclcycg aW50cmluc2ljIHdpdGggIgogCQkJICAiUkFESVggYXJndW1lbnQgYXQgJUwi LCBnZmNfY3VycmVudF9pbnRyaW5zaWMsCiAJCQkgICZyYWRpeC0+d2hlcmUp ID09IEZBSUxVUkUpCiAJcmV0dXJuIEZBSUxVUkU7CkBAIC0zNTMzLDcgKzM1 MzMsNyBAQCBnZmNfY2hlY2tfc2hhcGUgKGdmY19leHByICpzb3VyY2UsIGdm Y19leHByICpraW5kKQogCiAgIGlmIChraW5kX2NoZWNrIChraW5kLCAxLCBC VF9JTlRFR0VSKSA9PSBGQUlMVVJFKQogICAgIHJldHVybiBGQUlMVVJFOwot ICBpZiAoa2luZCAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywg IkZvcnRyYW4gMjAwMzogJyVzJyBpbnRyaW5zaWMgIgorICBpZiAoa2luZCAm JiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIiclcycgaW50cmlu c2ljICIKIAkJCSAgICAgICJ3aXRoIEtJTkQgYXJndW1lbnQgYXQgJUwiLAog CQkJICAgICAgZ2ZjX2N1cnJlbnRfaW50cmluc2ljLCAma2luZC0+d2hlcmUp ID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7CkBAIC0zNTg4LDcg KzM1ODgsNyBAQCBnZmNfY2hlY2tfc2l6ZSAoZ2ZjX2V4cHIgKmFycmF5LCBn ZmNfZXhwciAqZGltLCBnZgogCiAgIGlmIChraW5kX2NoZWNrIChraW5kLCAy LCBCVF9JTlRFR0VSKSA9PSBGQUlMVVJFKQogICAgIHJldHVybiBGQUlMVVJF OwotICBpZiAoa2luZCAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAw MywgIkZvcnRyYW4gMjAwMzogJyVzJyBpbnRyaW5zaWMgIgorICBpZiAoa2lu ZCAmJiBnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIiclcycgaW50 cmluc2ljICIKIAkJCSAgICAgICJ3aXRoIEtJTkQgYXJndW1lbnQgYXQgJUwi LAogCQkJICAgICAgZ2ZjX2N1cnJlbnRfaW50cmluc2ljLCAma2luZC0+d2hl cmUpID09IEZBSUxVUkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7CkBAIC0zNjQ2 LDcgKzM2NDYsNyBAQCBnZmNfY2hlY2tfc25nbCAoZ2ZjX2V4cHIgKmEpCiAg ICAgcmV0dXJuIEZBSUxVUkU7CiAKICAgaWYgKChhLT50cy5raW5kICE9IGdm Y19kZWZhdWx0X2RvdWJsZV9raW5kKQotICAgICAgJiYgZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfR05VLCAiR05VIGV4dGVuc2lvbjogbm9uIGRvdWJsZSBw cmVjaXNpb24gIgorICAgICAgJiYgZ2ZjX25vdGlmeV9zdGQgKEdGQ19TVERf R05VLCAibm9uIGRvdWJsZSBwcmVjaXNpb24gIgogCQkJICJSRUFMIGFyZ3Vt ZW50IHRvICVzIGludHJpbnNpYyBhdCAlTCIsCiAJCQkgZ2ZjX2N1cnJlbnRf aW50cmluc2ljLCAmYS0+d2hlcmUpID09IEZBSUxVUkUpCiAgICAgcmV0dXJu IEZBSUxVUkU7CkBAIC00MTI3LDcgKzQxMjcsNyBAQCBnZmNfY2hlY2tfdWJv dW5kIChnZmNfZXhwciAqYXJyYXksIGdmY19leHByICpkaW0sCiAKICAgaWYg KGtpbmRfY2hlY2sgKGtpbmQsIDIsIEJUX0lOVEVHRVIpID09IEZBSUxVUkUp CiAgICAgcmV0dXJuIEZBSUxVUkU7Ci0gIGlmIChraW5kICYmIGdmY19ub3Rp Znlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiAnJXMnIGlu dHJpbnNpYyAiCisgIGlmIChraW5kICYmIGdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDAzLCAiJyVzJyBpbnRyaW5zaWMgIgogCQkJICAgICAgIndpdGgg S0lORCBhcmd1bWVudCBhdCAlTCIsCiAJCQkgICAgICBnZmNfY3VycmVudF9p bnRyaW5zaWMsICZraW5kLT53aGVyZSkgPT0gRkFJTFVSRSkKICAgICByZXR1 cm4gRkFJTFVSRTsKQEAgLTQyNTYsNyArNDI1Niw3IEBAIGdmY19jaGVja192 ZXJpZnkgKGdmY19leHByICp4LCBnZmNfZXhwciAqeSwgZ2ZjX2V4CiAKICAg aWYgKGtpbmRfY2hlY2sgKGtpbmQsIDMsIEJUX0lOVEVHRVIpID09IEZBSUxV UkUpCiAgICAgcmV0dXJuIEZBSUxVUkU7Ci0gIGlmIChraW5kICYmIGdmY19u b3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiAnJXMn IGludHJpbnNpYyAiCisgIGlmIChraW5kICYmIGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDAzLCAiJyVzJyBpbnRyaW5zaWMgIgogCQkJICAgICAgIndp dGggS0lORCBhcmd1bWVudCBhdCAlTCIsCiAJCQkgICAgICBnZmNfY3VycmVu dF9pbnRyaW5zaWMsICZraW5kLT53aGVyZSkgPT0gRkFJTFVSRSkKICAgICBy ZXR1cm4gRkFJTFVSRTsKSW5kZXg6IGdjYy9mb3J0cmFuL3ByaW1hcnkuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi9wcmltYXJ5 LmMJKHJldmlzaW9uIDE4OTU2MSkKKysrIGdjYy9mb3J0cmFuL3ByaW1hcnku Ywkod29ya2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw3IEBAIG1hdGNoX2hv bGxlcml0aF9jb25zdGFudCAoZ2ZjX2V4cHIgKipyZXN1bHQpCiAgIGlmICht YXRjaF9pbnRlZ2VyX2NvbnN0YW50ICgmZSwgMCkgPT0gTUFUQ0hfWUVTCiAg ICAgICAmJiBnZmNfbWF0Y2hfY2hhciAoJ2gnKSA9PSBNQVRDSF9ZRVMpCiAg ICAgewotICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0xFR0FD WSwgIkV4dGVuc2lvbjogSG9sbGVyaXRoIGNvbnN0YW50ICIKKyAgICAgIGlm IChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9MRUdBQ1ksICJIb2xsZXJpdGgg Y29uc3RhbnQgIgogCQkJICAiYXQgJUMiKSA9PSBGQUlMVVJFKQogCWdvdG8g Y2xlYW51cDsKIApAQCAtMzkzLDcgKzM5Myw3IEBAIG1hdGNoX2Jvel9jb25z dGFudCAoZ2ZjX2V4cHIgKipyZXN1bHQpCiAgICAgZ290byBiYWNrdXA7CiAK ICAgaWYgKHhfaGV4Ci0gICAgICAmJiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfR05VLCAiRXh0ZW5zaW9uOiBIZXhhZGVjaW1hbCAiCisgICAgICAmJiAo Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfR05VLCAiSGV4YWRlY2ltYWwgIgog CQkJICAiY29uc3RhbnQgYXQgJUMgdXNlcyBub24tc3RhbmRhcmQgc3ludGF4 IikKIAkgID09IEZBSUxVUkUpKQogICAgICAgcmV0dXJuIE1BVENIX0VSUk9S OwpAQCAtNDMyLDcgKzQzMiw3IEBAIG1hdGNoX2Jvel9jb25zdGFudCAoZ2Zj X2V4cHIgKipyZXN1bHQpCiAJICBnb3RvIGJhY2t1cDsKIAl9CiAKLSAgICAg IGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJFeHRlbnNpb246 IEJPWiBjb25zdGFudCAiCisgICAgICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdG Q19TVERfR05VLCAiQk9aIGNvbnN0YW50ICIKIAkJCSAgImF0ICVDIHVzZXMg bm9uLXN0YW5kYXJkIHBvc3RmaXggc3ludGF4IikKIAkgID09IEZBSUxVUkUp CiAJcmV0dXJuIE1BVENIX0VSUk9SOwpAQCAtNDY5LDcgKzQ2OSw3IEBAIG1h dGNoX2Jvel9jb25zdGFudCAoZ2ZjX2V4cHIgKipyZXN1bHQpCiAgICAgfQog CiAgIGlmICghZ2ZjX2luX21hdGNoX2RhdGEgKCkKLSAgICAgICYmIChnZmNf bm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIkZvcnRyYW4gMjAwMzogQk9a IHVzZWQgb3V0c2lkZSBhIERBVEEgIgorICAgICAgJiYgKGdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDAzLCAiQk9aIHVzZWQgb3V0c2lkZSBhIERBVEEg IgogCQkJICAic3RhdGVtZW50IGF0ICVDIikKIAkgID09IEZBSUxVUkUpKQog ICAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwpAQCAtNTYwLDcgKzU2MCw3IEBA IG1hdGNoX3JlYWxfY29uc3RhbnQgKGdmY19leHByICoqcmVzdWx0LCBpbnQg c2lnbmZsCiAKICAgaWYgKGMgPT0gJ3EnKQogICAgIHsKLSAgICAgIGlmIChn ZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9HTlUsICJFeHRlbnNpb246IGV4cG9u ZW50LWxldHRlciAncScgaW4gIgorICAgICAgaWYgKGdmY19ub3RpZnlfc3Rk IChHRkNfU1REX0dOVSwgImV4cG9uZW50LWxldHRlciAncScgaW4gIgogCQkJ ICJyZWFsLWxpdGVyYWwtY29uc3RhbnQgYXQgJUMiKSA9PSBGQUlMVVJFKQog CXJldHVybiBNQVRDSF9FUlJPUjsKICAgICAgIGVsc2UgaWYgKGdmY19vcHRp b24ud2Fybl9yZWFsX3FfY29uc3RhbnQpCkBAIC0xMjE4LDcgKzEyMTgsNyBA QCBtYXRjaF9zeW1fY29tcGxleF9wYXJ0IChnZmNfZXhwciAqKnJlc3VsdCkK ICAgICAgIHJldHVybiBNQVRDSF9FUlJPUjsKICAgICB9CiAKLSAgaWYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAiRm9ydHJhbiAyMDAzOiBQ QVJBTUVURVIgc3ltYm9sIGluICIKKyAgaWYgKGdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDAzLCAiUEFSQU1FVEVSIHN5bWJvbCBpbiAiCiAJCSAgICAg ICJjb21wbGV4IGNvbnN0YW50IGF0ICVDIikgPT0gRkFJTFVSRSkKICAgICBy ZXR1cm4gTUFUQ0hfRVJST1I7CiAKQEAgLTE2NDYsNyArMTY0Niw3IEBAIG1h dGNoX2FyZ19saXN0X2Z1bmN0aW9uIChnZmNfYWN0dWFsX2FyZ2xpc3QgKnJl c3VsCiAJfQogICAgIH0KIAotICBpZiAoZ2ZjX25vdGlmeV9zdGQgKEdGQ19T VERfR05VLCAiRXh0ZW5zaW9uOiBhcmd1bWVudCBsaXN0ICIKKyAgaWYgKGdm Y19ub3RpZnlfc3RkIChHRkNfU1REX0dOVSwgImFyZ3VtZW50IGxpc3QgIgog CQkgICAgICAiZnVuY3Rpb24gYXQgJUMiKSA9PSBGQUlMVVJFKQogICAgIHsK ICAgICAgIG0gPSBNQVRDSF9FUlJPUjsKQEAgLTIzNTMsNyArMjM1Myw3IEBA IGJ1aWxkX2FjdHVhbF9jb25zdHJ1Y3RvciAoZ2ZjX3N0cnVjdHVyZV9jdG9y X2NvbXBvCiAJewogCSAgaWYgKGNvbXAtPmluaXRpYWxpemVyKQogCSAgICB7 Ci0JICAgICAgaWYgKGdmY19ub3RpZnlfc3RkIChHRkNfU1REX0YyMDAzLCAi Rm9ydHJhbiAyMDAzOiBTdHJ1Y3R1cmUiCisJICAgICAgaWYgKGdmY19ub3Rp Znlfc3RkIChHRkNfU1REX0YyMDAzLCAiU3RydWN0dXJlIgogCQkJCSAgIiBj b25zdHJ1Y3RvciB3aXRoIG1pc3Npbmcgb3B0aW9uYWwgYXJndW1lbnRzIgog CQkJCSAgIiBhdCAlQyIpID09IEZBSUxVUkUpCiAJCXJldHVybiBGQUlMVVJF OwpAQCAtMjQyOSw3ICsyNDI5LDcgQEAgZ2ZjX2NvbnZlcnRfdG9fc3RydWN0 dXJlX2NvbnN0cnVjdG9yIChnZmNfZXhwciAqZSwKICAgICAgICAJfQogICAg ICAgaWYgKGFjdHVhbC0+bmFtZSkKIAl7Ci0JICBpZiAoZ2ZjX25vdGlmeV9z dGQgKEdGQ19TVERfRjIwMDMsICJGb3J0cmFuIDIwMDM6IFN0cnVjdHVyZSIK KwkgIGlmIChnZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GMjAwMywgIlN0cnVj dHVyZSIKIAkJCSAgICAgICIgY29uc3RydWN0b3Igd2l0aCBuYW1lZCBhcmd1 bWVudHMgYXQgJUMiKQogCSAgICAgID09IEZBSUxVUkUpCiAJICAgIGdvdG8g Y2xlYW51cDsK --90e6ba475d45444c4b04c5035d6a--