From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id AD2113858D37; Wed, 5 Oct 2022 11:19:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AD2113858D37 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.95,159,1661846400"; d="diff'?scan'208,217";a="84144783" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 05 Oct 2022 03:19:46 -0800 IronPort-SDR: yJLE9T22o/mBhMNESM7yE3OpzkuQyeeHcrbIVp/REX7LFzzdQ+CPV+ehdPPZYHoAo0jKOZ81W1 R/reIIgcX3aQVwsAOHyZNNc1Qp6E99DPC1PK9pq8Fjr4b7DMX9cK9O+32OuYU7HfDCvsTJXbXV ygfeK8k7V2HbyPZNUOh5QCICdeVczXmOTv2aIH/YSuK2Bopdn8rDGeC/py4l1oJWglqf+o9VUC 1EMztUCh9kBbo08DOCBFEnKJqy3SbiSMdihsHlIJQd3+NVv7vZbs7dGSNVMcJ0vYTVZIRRJ4+Z Gho= Content-Type: multipart/mixed; boundary="------------7Svl0KhUJfVKa5AXj0PAvSur" Message-ID: <87cbf1bf-53ff-c743-2447-172aecd7852a@codesourcery.com> Date: Wed, 5 Oct 2022 13:19:34 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: [Patch] Fortran: Add OpenMP's assume(s) directives To: Jakub Jelinek CC: gcc-patches , fortran References: Content-Language: en-US From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-07.mgc.mentorg.com (139.181.222.7) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------7Svl0KhUJfVKa5AXj0PAvSur Content-Type: multipart/alternative; boundary="------------sn5nfFn0JaJx0Hi0J4E1YCfI" --------------sn5nfFn0JaJx0Hi0J4E1YCfI Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi Jakub, On 04.10.22 14:58, Jakub Jelinek via Gcc-patches wrote: On Tue, Oct 04, 2022 at 02:26:13PM +0200, Tobias Burnus wrote: On Sun, Oct 02, 2022 at 07:47:18PM +0200, Tobias Burnus wrote: --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi OK? Ok, thanks. Committed as https://gcc.gnu.org/r13-3063-g8792047470073df0da4a5b91997d6058= 193d7676 Wouldn't this be better table driven (like c_omp_directives in c-family, though guess for Fortran you can just use spaces in the name, don't need 3 strings for the separate tokens)? Because I think absent/contains isn't the only spot where you need directive names, metadirective is another. Now added. I noted that I have different kinds/categories than you used in = c-family/c-omp.c; and my impression that standalone vs. block vs delimited = is a different category than informational/meta/... Maybe =E2=80=93 I think there are already way to many string repetitions. O= ne problem is that metadirectives permit combined/composite constructs whil= e 'assume(s)' does not. I on purpose did not parse them, but probably in li= ght of Metadirectives, I should. I will take a look. It is true that metadirective supports combined/composite constructs, and so do we in the C++ attribute case, still we IMHO can use the C/C++ table as is.and it doesn't need to include combined/composite constructs. The thing is that for the metadirective/C++ attribute case, all we need to know is to discover the directive category (declarative, stand-alone, construct, informational, ...) and for that it is enough to parse the first directive-name in combined/composite constructs. ... else if (popcount (old_n_absent) =3D=3D 1) absent =3D ... sizeof() * (old_n_absent) * 2) Yeah. Or for 0 allocate say 8 and use (pow2p_hwi (old_n_absent) && old_n_absent >=3D 8) in the else if. I used now pow2p_hwi as popcount did not exist (and I didn't want to add an= #include or use __builtin_popcount), not that either variant is clearer an= d it is neither performance critical nor is neither of "(x & -x) =3D=3D x" = and "popcount(x) =3D=3D 1" slow. I don't understand the point of preallocation of gfc_omp_clauses here, ... That's now gone. As I have to check the duplication right after parsing =E2= =80=93 but before merging, I can no longer do it during resolution. Instead= of keeping track of the directives separately, I now moved the checking to= the directive parsing itself. It is not equivalent to that, because while we have the restriction that the same list item can't appear multiple times on the same directive, it can appear multiple times on multiple directives. I am not sure the handling of nested/repeated informational/declarative dir= ectives is very clear, but that's a separate issue. (Namely, OpenMP spec is= sue 3362.) Updated patch enclosed. And thanks for your comments! OK? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------sn5nfFn0JaJx0Hi0J4E1YCfI-- --------------7Svl0KhUJfVKa5AXj0PAvSur Content-Type: text/x-patch; charset="UTF-8"; name="omp-assume-fortran-v2.diff" Content-Disposition: attachment; filename="omp-assume-fortran-v2.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbjogQWRkIE9wZW5NUCdzIGFzc3VtZShzKSBkaXJlY3RpdmVzCgps aWJnb21wL0NoYW5nZUxvZzoKCgkqIGxpYmdvbXAudGV4aSAoT3Blbk1QIDUu MSBJbXBsLiBTdGF0dXMpOiBNYXJrICdhc3N1bWUnIGFzICdZJy4KCmdjYy9m b3J0cmFuL0NoYW5nZUxvZzoKCgkqIGR1bXAtcGFyc2UtdHJlZS5jYyAoc2hv d19vbXBfYXNzdW1lcyk6IE5ldy4KCShzaG93X29tcF9jbGF1c2VzLCBzaG93 X25hbWVzcGFjZSk6IENhbGwgaXQuCgkoc2hvd19vbXBfbm9kZSwgc2hvd19j b2RlX25vZGUpOiBIYW5kbGUgT3Blbk1QIEFTU1VNRS4KCSogZ2ZvcnRyYW4u aCAoZW51bSBnZmNfc3RhdGVtZW50KTogQWRkIFNUX09NUF9BU1NVTUUsCglT VF9PTVBfRU5EX0FTU1VNRSwgU1RfT01QX0FTU1VNRVMgYW5kIFNUX05PVEhJ TkcuCgkoZ2ZjX2V4ZWNfb3ApOiBBZGQgRVhFQ19PTVBfQVNTVU1FLgoJKGdm Y19vbXBfYXNzdW1wdGlvbnMpOiBOZXcgc3RydWN0LgoJKGdmY19nZXRfb21w X2Fzc3VtcHRpb25zKTogTmV3IFhDTkVXICNkZWZpbmUuCgkoZ2ZjX29tcF9j bGF1c2VzLCBnZmNfbmFtZXNwYWNlKTogQWRkIGFzc3VtZSBtZW1iZXIuCgko Z2ZjX3Jlc29sdmVfb21wX2Fzc3VtcHRpb25zKTogTmV3IHByb3RvdHlwZS4K CSogbWF0Y2guaCAoZ2ZjX21hdGNoX29tcF9hc3N1bWUsIGdmY19tYXRjaF9v bXBfYXNzdW1lcyk6IE5ldy4KCSogb3Blbm1wLmNjIChvbXBfY29kZV90b19z dGF0ZW1lbnQpOiBGb3J3YXJkIGRlY2xhcmUuCgkoZW51bSBnZmNfb21wX2Rp cmVjdGl2ZV9raW5kLCBzdHJ1Y3QgZ2ZjX29tcF9kaXJlY3RpdmUpOiBOZXcu CgkoZ2ZjX2ZyZWVfb21wX2NsYXVzZXMpOiBGcmVlIGFzc3VtZSBtZW1iZXIg YW5kIGl0cyBzdHJ1Y3QgZGF0YS4KCShlbnVtIG9tcF9tYXNrMik6IEFkZCBP TVBfQ0xBVVNFX0FTU1VNUFRJT05TLgoJKGdmY19vbXBfYWJzZW50X2NvbnRh aW5zX2NsYXVzZSk6IE5ldy4KCShnZmNfbWF0Y2hfb21wX2NsYXVzZXMpOiBD YWxsIGl0OyBvcHRpb25hbGx5IHVzZSBwYXNzZWQKCW9tcF9jbGF1c2VzIGFy Z3VtZW50LgoJKG9tcF92ZXJpZnlfbWVyZ2VfYWJzZW50X2NvbnRhaW5zLCBn ZmNfbWF0Y2hfb21wX2Fzc3VtZSwKCSBnZmNfbWF0Y2hfb21wX2Fzc3VtZXMs IGdmY19yZXNvbHZlX29tcF9hc3N1bXB0aW9ucyk6IE5ldy4KCShyZXNvbHZl X29tcF9jbGF1c2VzKTogQ2FsbCB0aGUgbGF0dGVyLgoJKGdmY19yZXNvbHZl X29tcF9kaXJlY3RpdmUsIG9tcF9jb2RlX3RvX3N0YXRlbWVudCk6IEhhbmRs ZQoJRVhFQ19PTVBfQVNTVU1FLgoJKiBwYXJzZS5jYyAoZGVjb2RlX29tcF9k aXJlY3RpdmUpOiBQYXJzZSBPcGVuTVAgQVNTVU1FKFMpLgoJKG5leHRfc3Rh dGVtZW50LCBwYXJzZV9leGVjdXRhYmxlLCBwYXJzZV9vbXBfc3RydWN0dXJl ZF9ibG9jayk6CglIYW5kbGUgU1RfT01QX0FTU1VNRS4KCShjYXNlX29tcF9k ZWNsKTogQWRkIFNUX09NUF9BU1NVTUVTLgoJKGdmY19hc2NpaV9zdGF0ZW1l bnQpOiBIYW5kbGUgQXNzdW1lcywgb3B0aW9uYWwgcmV0dXJuCglzdHJpbmcg d2l0aG91dCAnISRPTVAgJy8nISRBQ0MgJyBwcmVmaXguCgkqIHBhcnNlLmgg KGdmY19hc2NpaV9zdGF0ZW1lbnQpOiBBZGQgb3B0aW9uYWwgYm9vbCBhcmcg dG8gcHJvdG90eXBlLgoJKiByZXNvbHZlLmNjIChnZmNfcmVzb2x2ZV9ibG9j a3MsIGdmY19yZXNvbHZlX2NvZGUpOiBBZGQKCUVYRUNfT01QX0FTU1VNRS4K CShnZmNfcmVzb2x2ZSk6IFJlc29sdmUgQVNTVU1FUyBkaXJlY3RpdmUuCgkq IHN5bWJvbC5jYyAoZ2ZjX2ZyZWVfbmFtZXNwYWNlKTogRnJlZSBvbXBfYXNz dW1lcyBtZW1iZXIuCgkqIHN0LmNjIChnZmNfZnJlZV9zdGF0ZW1lbnQpOiBI YW5kbGUgRVhFQ19PTVBfQVNTVU1FLgoJKiB0cmFucy1vcGVubXAuY2MgKGdm Y190cmFuc19vbXBfZGlyZWN0aXZlKTogTGlrZXdpc2UuCgkqIHRyYW5zLmNj ICh0cmFuc19jb2RlKTogTGlrZXdpc2UuCgpnY2MvdGVzdHN1aXRlL0NoYW5n ZUxvZzoKCgkqIGdmb3J0cmFuLmRnL2dvbXAvYXNzdW1lLTEuZjkwOiBOZXcg dGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMi5mOTA6IE5ldyB0 ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMS5mOTA6IE5ldyB0 ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMi5mOTA6IE5ldyB0 ZXN0LgoKIGdjYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYyAgICAgICAg ICAgICAgIHwgIDQxICsrKwogZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCAgICAg ICAgICAgICAgICAgICAgICAgfCAgMjMgKy0KIGdjYy9mb3J0cmFuL21hdGNo LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGdjYy9mb3J0 cmFuL29wZW5tcC5jYyAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAzICsr KysrKysrKysrKysrKysrKysrKysrKysrKwogZ2NjL2ZvcnRyYW4vcGFyc2Uu Y2MgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKystCiBnY2MvZm9y dHJhbi9wYXJzZS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQogZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDUgKwogZ2NjL2ZvcnRyYW4vc3QuY2MgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2ZvcnRyYW4vc3ltYm9sLmNjICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGdjYy9mb3J0cmFuL3Ry YW5zLW9wZW5tcC5jYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIGdjYy9m b3J0cmFuL3RyYW5zLmNjICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMS5m OTAgIHwgIDI0ICsrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAv YXNzdW1lLTIuZjkwICB8ICAyNyArKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2Fzc3VtZXMtMS5mOTAgfCAgODIgKysrKysrCiBnY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lcy0yLmY5MCB8ICAxOSAr KwogbGliZ29tcC9saWJnb21wLnRleGkgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDY2NSBpbnNlcnRpb25z KCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFu L2R1bXAtcGFyc2UtdHJlZS5jYyBiL2djYy9mb3J0cmFuL2R1bXAtcGFyc2Ut dHJlZS5jYwppbmRleCA0MGM2OTBjOWFlOC4uMmYwNDJhYjUxNDIgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYworKysgYi9n Y2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuY2MKQEAgLTM2LDYgKzM2LDcg QEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdCBzZWUKICNpbmNsdWRlICJnZm9ydHJhbi5oIgogI2luY2x1ZGUgImNv bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUg InBhcnNlLmgiICAvKiBGb3IgZ2ZjX2FzY2lpX3N0YXRlbWVudC4gICovCiAK IC8qIEtlZXAgdHJhY2sgb2YgaW5kZW50YXRpb24gZm9yIHN5bWJvbCB0cmVl IGR1bXBzLiAgKi8KIHN0YXRpYyBpbnQgc2hvd19sZXZlbCA9IDA7CkBAIC0x NDU4LDYgKzE0NTksMzQgQEAgc2hvd19vbXBfbmFtZWxpc3QgKGludCBsaXN0 X3R5cGUsIGdmY19vbXBfbmFtZWxpc3QgKm4pCiAgIGdmY19jdXJyZW50X25z ID0gbnNfY3VycjsKIH0KIAorc3RhdGljIHZvaWQKK3Nob3dfb21wX2Fzc3Vt ZXMgKGdmY19vbXBfYXNzdW1wdGlvbnMgKmFzc3VtZSkKK3sKKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBhc3N1bWUtPm5fYWJzZW50OyBpKyspCisgICAgewor ICAgICAgZnB1dHMgKCIgQUJTRU5UICgiLCBkdW1wZmlsZSk7CisgICAgICBm cHV0cyAoZ2ZjX2FzY2lpX3N0YXRlbWVudCAoYXNzdW1lLT5hYnNlbnRbaV0s IHRydWUpLCBkdW1wZmlsZSk7CisgICAgICBmcHV0YyAoJyknLCBkdW1wZmls ZSk7CisgICAgfQorICBmb3IgKGludCBpID0gMDsgaSA8IGFzc3VtZS0+bl9j b250YWluczsgaSsrKQorICAgIHsKKyAgICAgIGZwdXRzICgiIENPTlRBSU5T ICgiLCBkdW1wZmlsZSk7CisgICAgICBmcHV0cyAoZ2ZjX2FzY2lpX3N0YXRl bWVudCAoYXNzdW1lLT5jb250YWluc1tpXSwgdHJ1ZSksIGR1bXBmaWxlKTsK KyAgICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsKKyAgICB9CisgIGZvciAo Z2ZjX2V4cHJfbGlzdCAqZWwgPSBhc3N1bWUtPmhvbGRzOyBlbDsgZWwgPSBl bC0+bmV4dCkKKyAgICB7CisgICAgICBmcHV0cyAoIiBIT0xEUyAoIiwgZHVt cGZpbGUpOworICAgICAgc2hvd19leHByIChlbC0+ZXhwcik7CisgICAgICBm cHV0YyAoJyknLCBkdW1wZmlsZSk7CisgICAgfQorICBpZiAoYXNzdW1lLT5u b19vcGVubXApCisgICAgZnB1dHMgKCIgTk9fT1BFTk1QIiwgZHVtcGZpbGUp OworICBpZiAoYXNzdW1lLT5ub19vcGVubXBfcm91dGluZXMpCisgICAgZnB1 dHMgKCIgTk9fT1BFTk1QX1JPVVRJTkVTIiwgZHVtcGZpbGUpOworICBpZiAo YXNzdW1lLT5ub19wYXJhbGxlbGlzbSkKKyAgICBmcHV0cyAoIiBOT19QQVJB TExFTElTTSIsIGR1bXBmaWxlKTsKK30KIAogLyogU2hvdyBPcGVuTVAgb3Ig T3BlbkFDQyBjbGF1c2VzLiAgKi8KIApAQCAtMTk5OCw2ICsyMDI3LDggQEAg c2hvd19vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNl cykKICAgICAgIHNob3dfZXhwciAob21wX2NsYXVzZXMtPm1lc3NhZ2UpOwog ICAgICAgZnB1dGMgKCcpJywgZHVtcGZpbGUpOwogICAgIH0KKyAgaWYgKG9t cF9jbGF1c2VzLT5hc3N1bWUpCisgICAgc2hvd19vbXBfYXNzdW1lcyAob21w X2NsYXVzZXMtPmFzc3VtZSk7CiB9CiAKIC8qIFNob3cgYSBzaW5nbGUgT3Bl bk1QIG9yIE9wZW5BQ0MgZGlyZWN0aXZlIG5vZGUgYW5kIGV2ZXJ5dGhpbmcg dW5kZXJuZWF0aCBpdApAQCAtMjAyNyw2ICsyMDU4LDcgQEAgc2hvd19vbXBf bm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNf T0FDQ19DQUNIRTogbmFtZSA9ICJDQUNIRSI7IGlzX29hY2MgPSB0cnVlOyBi cmVhazsKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOiBuYW1lID0g IkVOVEVSIERBVEEiOyBpc19vYWNjID0gdHJ1ZTsgYnJlYWs7CiAgICAgY2Fz ZSBFWEVDX09BQ0NfRVhJVF9EQVRBOiBuYW1lID0gIkVYSVQgREFUQSI7IGlz X29hY2MgPSB0cnVlOyBicmVhazsKKyAgICBjYXNlIEVYRUNfT01QX0FTU1VN RTogbmFtZSA9ICJBU1NVTUUiOyBicmVhazsKICAgICBjYXNlIEVYRUNfT01Q X0FUT01JQzogbmFtZSA9ICJBVE9NSUMiOyBicmVhazsKICAgICBjYXNlIEVY RUNfT01QX0JBUlJJRVI6IG5hbWUgPSAiQkFSUklFUiI7IGJyZWFrOwogICAg IGNhc2UgRVhFQ19PTVBfQ0FOQ0VMOiBuYW1lID0gIkNBTkNFTCI7IGJyZWFr OwpAQCAtMjEyOCw2ICsyMTYwLDcgQEAgc2hvd19vbXBfbm9kZSAoaW50IGxl dmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNfT0FDQ19DQUNIRToK ICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOgogICAgIGNhc2UgRVhF Q19PQUNDX0VYSVRfREFUQToKKyAgICBjYXNlIEVYRUNfT01QX0FTU1VNRToK ICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNfT01Q X0NBTkNFTExBVElPTl9QT0lOVDoKICAgICBjYXNlIEVYRUNfT01QX0RJU1RS SUJVVEU6CkBAIC0zMzUzLDYgKzMzODYsNyBAQCBzaG93X2NvZGVfbm9kZSAo aW50IGxldmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNfT0FDQ19D QUNIRToKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOgogICAgIGNh c2UgRVhFQ19PQUNDX0VYSVRfREFUQToKKyAgICBjYXNlIEVYRUNfT01QX0FT U1VNRToKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoKICAgICBjYXNlIEVY RUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTExBVElP Tl9QT0lOVDoKQEAgLTM1MzEsNiArMzU2NSwxMyBAQCBzaG93X25hbWVzcGFj ZSAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAJfQogICAgIH0KIAorICBpZiAobnMt Pm9tcF9hc3N1bWVzKQorICAgIHsKKyAgICAgIHNob3dfaW5kZW50ICgpOwor ICAgICAgZnByaW50ZiAoZHVtcGZpbGUsICIhJE9NUCBBU1NVTUVTIik7Cisg ICAgICBzaG93X29tcF9hc3N1bWVzIChucy0+b21wX2Fzc3VtZXMpOworICAg IH0KKwogICBmcHV0YyAoJ1xuJywgZHVtcGZpbGUpOwogICBzaG93X2luZGVu dCAoKTsKICAgZnB1dHMgKCJjb2RlOiIsIGR1bXBmaWxlKTsKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9ydHJhbi9nZm9y dHJhbi5oCmluZGV4IDRiYWJkNzc5MjRiLi42MDhkZGE0YmY1NSAxMDA2NDQK LS0tIGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAorKysgYi9nY2MvZm9ydHJh bi9nZm9ydHJhbi5oCkBAIC0zMTYsNyArMzE2LDkgQEAgZW51bSBnZmNfc3Rh dGVtZW50CiAgIFNUX09NUF9FTkRfUEFSQUxMRUxfTUFTS0VEX1RBU0tMT09Q X1NJTUQsIFNUX09NUF9NQVNLRURfVEFTS0xPT1AsCiAgIFNUX09NUF9FTkRf TUFTS0VEX1RBU0tMT09QLCBTVF9PTVBfTUFTS0VEX1RBU0tMT09QX1NJTUQs CiAgIFNUX09NUF9FTkRfTUFTS0VEX1RBU0tMT09QX1NJTUQsIFNUX09NUF9T Q09QRSwgU1RfT01QX0VORF9TQ09QRSwKLSAgU1RfT01QX0VSUk9SLCBTVF9O T05FCisgIFNUX09NUF9FUlJPUiwgU1RfT01QX0FTU1VNRSwgU1RfT01QX0VO RF9BU1NVTUUsIFNUX09NUF9BU1NVTUVTLAorICAvKiBOb3RlOiBnZmNfbWF0 Y2hfb21wX25vdGhpbmcgcmV0dXJucyBTVF9OT05FLiAqLworICBTVF9PTVBf Tk9USElORywgU1RfTk9ORQogfTsKIAogLyogVHlwZXMgb2YgaW50ZXJmYWNl cyB0aGF0IHdlIGNhbiBoYXZlLiAgQXNzaWdubWVudCBpbnRlcmZhY2VzIGFy ZQpAQCAtMTUwNiw2ICsxNTA4LDE4IEBAIGVudW0gZ2ZjX29tcF9iaW5kX3R5 cGUKICAgT01QX0JJTkRfVEhSRUFECiB9OwogCit0eXBlZGVmIHN0cnVjdCBn ZmNfb21wX2Fzc3VtcHRpb25zCit7CisgIGludCBuX2Fic2VudCwgbl9jb250 YWluczsKKyAgZW51bSBnZmNfc3RhdGVtZW50ICphYnNlbnQsICpjb250YWlu czsKKyAgZ2ZjX2V4cHJfbGlzdCAqaG9sZHM7CisgIGJvb2wgbm9fb3Blbm1w OjEsIG5vX29wZW5tcF9yb3V0aW5lczoxLCBub19wYXJhbGxlbGlzbToxOwor fQorZ2ZjX29tcF9hc3N1bXB0aW9uczsKKworI2RlZmluZSBnZmNfZ2V0X29t cF9hc3N1bXB0aW9ucygpIFhDTkVXIChnZmNfb21wX2Fzc3VtcHRpb25zKQor CisKIHR5cGVkZWYgc3RydWN0IGdmY19vbXBfY2xhdXNlcwogewogICBnZmNf b21wX25hbWVsaXN0ICpsaXN0c1tPTVBfTElTVF9OVU1dOwpAQCAtMTUyOSw2 ICsxNTQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2ZjX29tcF9jbGF1c2VzCiAg IHN0cnVjdCBnZmNfZXhwciAqaWZfZXhwcnNbT01QX0lGX0xBU1RdOwogICBz dHJ1Y3QgZ2ZjX2V4cHIgKmRpc3RfY2h1bmtfc2l6ZTsKICAgc3RydWN0IGdm Y19leHByICptZXNzYWdlOworICBzdHJ1Y3QgZ2ZjX29tcF9hc3N1bXB0aW9u cyAqYXNzdW1lOwogICBjb25zdCBjaGFyICpjcml0aWNhbF9uYW1lOwogICBl bnVtIGdmY19vbXBfZGVmYXVsdF9zaGFyaW5nIGRlZmF1bHRfc2hhcmluZzsK ICAgZW51bSBnZmNfb21wX2F0b21pY19vcCBhdG9taWNfb3A7CkBAIC0yMTQ1 LDYgKzIxNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfbmFtZXNwYWNlCiAg IC8qIExpbmtlZCBsaXN0IG9mICEkb21wIGRlY2xhcmUgdmFyaWFudCBjb25z dHJ1Y3RzLiAgKi8KICAgc3RydWN0IGdmY19vbXBfZGVjbGFyZV92YXJpYW50 ICpvbXBfZGVjbGFyZV92YXJpYW50OwogCisgIC8qIE9wZW5NUCBhc3N1bXB0 aW9ucy4gICovCisgIHN0cnVjdCBnZmNfb21wX2Fzc3VtcHRpb25zICpvbXBf YXNzdW1lczsKKwogICAvKiBBIGhhc2ggc2V0IGZvciB0aGUgZ2ZjIGV4cHJl c3Npb25zIHRoYXQgaGF2ZSBhbHJlYWR5CiAgICAgIGJlZW4gZmluYWxpemVk IGluIHRoaXMgbmFtZXNwYWNlLiAgKi8KIApAQCAtMjkxMyw3ICsyOTMxLDcg QEAgZW51bSBnZmNfZXhlY19vcAogICBFWEVDX09NUF9PUkRFUkVELCBFWEVD X09NUF9QQVJBTExFTCwgRVhFQ19PTVBfUEFSQUxMRUxfRE8sCiAgIEVYRUNf T01QX1BBUkFMTEVMX1NFQ1RJT05TLCBFWEVDX09NUF9QQVJBTExFTF9XT1JL U0hBUkUsCiAgIEVYRUNfT01QX1NFQ1RJT05TLCBFWEVDX09NUF9TSU5HTEUs IEVYRUNfT01QX1dPUktTSEFSRSwKLSAgRVhFQ19PTVBfQVRPTUlDLCBFWEVD X09NUF9CQVJSSUVSLCBFWEVDX09NUF9FTkRfTk9XQUlULAorICBFWEVDX09N UF9BU1NVTUUsIEVYRUNfT01QX0FUT01JQywgRVhFQ19PTVBfQkFSUklFUiwg RVhFQ19PTVBfRU5EX05PV0FJVCwKICAgRVhFQ19PTVBfRU5EX1NJTkdMRSwg RVhFQ19PTVBfVEFTSywgRVhFQ19PTVBfVEFTS1dBSVQsCiAgIEVYRUNfT01Q X1RBU0tZSUVMRCwgRVhFQ19PTVBfQ0FOQ0VMLCBFWEVDX09NUF9DQU5DRUxM QVRJT05fUE9JTlQsCiAgIEVYRUNfT01QX1RBU0tHUk9VUCwgRVhFQ19PTVBf U0lNRCwgRVhFQ19PTVBfRE9fU0lNRCwKQEAgLTM1NzYsNiArMzU5NCw3IEBA IHZvaWQgZ2ZjX2ZyZWVfb21wX2RlY2xhcmVfc2ltZCAoZ2ZjX29tcF9kZWNs YXJlX3NpbWQgKik7CiB2b2lkIGdmY19mcmVlX29tcF9kZWNsYXJlX3NpbWRf bGlzdCAoZ2ZjX29tcF9kZWNsYXJlX3NpbWQgKik7CiB2b2lkIGdmY19mcmVl X29tcF91ZHIgKGdmY19vbXBfdWRyICopOwogZ2ZjX29tcF91ZHIgKmdmY19v bXBfdWRyX2ZpbmQgKGdmY19zeW10cmVlICosIGdmY190eXBlc3BlYyAqKTsK K3ZvaWQgZ2ZjX3Jlc29sdmVfb21wX2Fzc3VtcHRpb25zIChnZmNfb21wX2Fz c3VtcHRpb25zICopOwogdm9pZCBnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZl IChnZmNfY29kZSAqLCBnZmNfbmFtZXNwYWNlICopOwogdm9pZCBnZmNfcmVz b2x2ZV9kb19pdGVyYXRvciAoZ2ZjX2NvZGUgKiwgZ2ZjX3N5bWJvbCAqLCBi b29sKTsKIHZvaWQgZ2ZjX3Jlc29sdmVfb21wX2xvY2FsX3ZhcnMgKGdmY19u YW1lc3BhY2UgKik7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9tYXRjaC5o IGIvZ2NjL2ZvcnRyYW4vbWF0Y2guaAppbmRleCAxZjUzZTBjYjY3ZC4uMmE4 MDU4MTVkOWMgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL21hdGNoLmgKKysr IGIvZ2NjL2ZvcnRyYW4vbWF0Y2guaApAQCAtMTQ5LDYgKzE0OSw4IEBAIG1h dGNoIGdmY19tYXRjaF9vYWNjX3JvdXRpbmUgKHZvaWQpOwogCiAvKiBPcGVu TVAgZGlyZWN0aXZlIG1hdGNoZXJzLiAgKi8KIG1hdGNoIGdmY19tYXRjaF9v bXBfZW9zX2Vycm9yICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9vbXBfYXNz dW1lICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9vbXBfYXNzdW1lcyAodm9p ZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21wX2F0b21pYyAodm9pZCk7CiBtYXRj aCBnZmNfbWF0Y2hfb21wX2JhcnJpZXIgKHZvaWQpOwogbWF0Y2ggZ2ZjX21h dGNoX29tcF9jYW5jZWwgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRy YW4vb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCmluZGV4IGNl NzE5YmQ1ZDkyLi43ZTdmZDMwYWIyNiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRy YW4vb3Blbm1wLmNjCisrKyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwpAQCAt MjksNiArMjksODYgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJkaWFnbm9zdGljLmgi CiAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKICNpbmNsdWRlICJ0YXJn ZXQtbWVtb3J5LmgiICAvKiBGb3IgZ2ZjX2VuY29kZV9jaGFyYWN0ZXIuICAq LworI2luY2x1ZGUgImJpdG1hcC5oIgorCisKK3N0YXRpYyBnZmNfc3RhdGVt ZW50IG9tcF9jb2RlX3RvX3N0YXRlbWVudCAoZ2ZjX2NvZGUgKik7CisKK2Vu dW0gZ2ZjX29tcF9kaXJlY3RpdmVfa2luZCB7CisgIEdGQ19PTVBfRElSX0RF Q0xBUkFUSVZFLAorICBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLAorICBHRkNf T01QX0RJUl9JTkZPUk1BVElPTkFMLAorICBHRkNfT01QX0RJUl9NRVRBLAor ICBHRkNfT01QX0RJUl9TVUJTSURJQVJZLAorICBHRkNfT01QX0RJUl9VVElM SVRZCit9OworCitzdHJ1Y3QgZ2ZjX29tcF9kaXJlY3RpdmUgeworICBjb25z dCBjaGFyICpuYW1lOworICBlbnVtIGdmY19vbXBfZGlyZWN0aXZlX2tpbmQg a2luZDsKKyAgZ2ZjX3N0YXRlbWVudCBzdDsKK307CisKKy8qIEFscGhhYmV0 aWNhbGx5IHNvcnRlZCBPcGVuTVAgY2xhdXNlcyAod2l0aG91dCBjb21iaW5l ZC9jb21wb3NpdGUgZGlyZWN0aXZlcykuCisgICBXYXRjaCBvdXQgZm9yICJv cmRlcmVkIiEgICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2ZjX29tcF9k aXJlY3RpdmUgZ2ZjX29tcF9kaXJlY3RpdmVzW10gPSB7CisgIC8qIHsiYWxs b2NhdGUiLCBHRkNfT01QX0RJUl9ERUNMQVJBVElWRSwgU1RfT01QX0FMTE9D QVRFfSwgKi8KKyAgLyogeyJhbGxvY2F0b3JzIiwgR0ZDX09NUF9ESVJfRVhF Q1VUQUJMRSwgU1RfT01QX0FMTE9DQVRPUlN9LCAqLworICB7ImFzc3VtZSIs IEdGQ19PTVBfRElSX0lORk9STUFUSU9OQUwsIFNUX09NUF9BU1NVTUV9LAor ICB7ImFzc3VtZXMiLCBHRkNfT01QX0RJUl9JTkZPUk1BVElPTkFMLCBTVF9P TVBfQVNTVU1FU30sCisgIHsiYXRvbWljIiwgR0ZDX09NUF9ESVJfRVhFQ1VU QUJMRSwgU1RfT01QX0FUT01JQ30sCisgIHsiYmFycmllciIsIEdGQ19PTVBf RElSX0VYRUNVVEFCTEUsIFNUX09NUF9CQVJSSUVSfSwKKyAgeyJjYW5jZWwi LCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfQ0FOQ0VMfSwKKyAg eyJjYW5jZWxsYXRpb24gcG9pbnQiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxF LCBTVF9PTVBfQ0FOQ0VMTEFUSU9OX1BPSU5UfSwKKyAgeyJjcml0aWNhbCIs IEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9DUklUSUNBTH0sCisg IC8qIHsiZGVjbGFyZSBtYXBwZXIiLCBHRkNfT01QX0RJUl9ERUNMQVJBVElW RSwgU1RfT01QX0RFQ0xBUkVfTUFQUEVSfSwgKi8KKyAgeyJkZWNsYXJlIHJl ZHVjdGlvbiIsIEdGQ19PTVBfRElSX0RFQ0xBUkFUSVZFLCBTVF9PTVBfREVD TEFSRV9SRURVQ1RJT059LAorICB7ImRlY2xhcmUgc2ltZCIsIEdGQ19PTVBf RElSX0RFQ0xBUkFUSVZFLCBTVF9PTVBfREVDTEFSRV9TSU1EfSwKKyAgeyJk ZWNsYXJlIHRhcmdldCIsIEdGQ19PTVBfRElSX0RFQ0xBUkFUSVZFLCBTVF9P TVBfREVDTEFSRV9UQVJHRVR9LAorICB7ImRlY2xhcmUgdmFyaWFudCIsIEdG Q19PTVBfRElSX0RFQ0xBUkFUSVZFLCBTVF9PTVBfREVDTEFSRV9WQVJJQU5U fSwKKyAgeyJkZXBvYmoiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9P TVBfREVQT0JKfSwKKyAgLyogeyJkaXNwYXRjaCIsIEdGQ19PTVBfRElSX0VY RUNVVEFCTEUsIFNUX09NUF9ESVNQQVRDSH0sICovCisgIHsiZGlzdHJpYnV0 ZSIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9ESVNUUklCVVRF fSwKKyAgeyJkbyIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9E T30sCisgIC8qICJlcnJvciIgYmVjb21lcyBHRkNfT01QX0RJUl9FWEVDVVRB QkxFIHdpdGggYXQoZXhlY3V0aW9uKSAqLworICB7ImVycm9yIiwgR0ZDX09N UF9ESVJfVVRJTElUWSwgU1RfT01QX0VSUk9SfSwKKyAgeyJmbHVzaCIsIEdG Q19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9GTFVTSH0sCisgIC8qIHsi aW50ZXJvcCIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9JTlRF Uk9QfSwgKi8KKyAgeyJsb29wIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwg U1RfT01QX0xPT1B9LAorICB7Im1hc2tlZCIsIEdGQ19PTVBfRElSX0VYRUNV VEFCTEUsIFNUX09NUF9NQVNLRUR9LAorICAvKiB7Im1ldGFkaXJlY3RpdmUi LCBHRkNfT01QX0RJUl9NRVRBLCBTVF9PTVBfTUVUQURJUkVDVElWRX0sICov CisgIC8qIE5vdGU6IGdmY19tYXRjaF9vbXBfbm90aGluZyB1c2VzIFNUX05P TkUuICAqLworICB7Im5vdGhpbmciLCBHRkNfT01QX0RJUl9VVElMSVRZLCBT VF9PTVBfTk9USElOR30sCisgIC8qIFNwZWNpYWwgY2FzZTsgZm9yIG5vdyBt YXAgdG8gdGhlIGZpcnN0IG9uZS4KKyAgICAgb3JkZXJlZC1ibG9ja2Fzc29j ID0gU1RfT01QX09SREVSRUQKKyAgICAgb3JkZXJlZC1zdGFuZGFsb25lID0g U1RfT01QX09SREVSRURfREVQRU5EICsgZGVwZW5kL2RvYWNyb3NzLiAgKi8K KyAgeyJvcmRlcmVkIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01Q X09SREVSRUR9LAorICB7InBhcmFsbGVsIiwgR0ZDX09NUF9ESVJfRVhFQ1VU QUJMRSwgU1RfT01QX1BBUkFMTEVMfSwKKyAgeyJyZXF1aXJlcyIsIEdGQ19P TVBfRElSX0lORk9STUFUSU9OQUwsIFNUX09NUF9SRVFVSVJFU30sCisgIHsi c2NhbiIsIEdGQ19PTVBfRElSX1NVQlNJRElBUlksIFNUX09NUF9TQ0FOfSwK KyAgeyJzY29wZSIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9T Q09QRX0sCisgIHsic2VjdGlvbiIsIEdGQ19PTVBfRElSX1NVQlNJRElBUlks IFNUX09NUF9TRUNUSU9OfSwKKyAgeyJzZWN0aW9ucyIsIEdGQ19PTVBfRElS X0VYRUNVVEFCTEUsIFNUX09NUF9TRUNUSU9OU30sCisgIHsic2ltZCIsIEdG Q19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9TSU1EfSwKKyAgeyJzaW5n bGUiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfU0lOR0xFfSwK KyAgeyJ0YXJnZXQgZGF0YSIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNU X09NUF9UQVJHRVRfREFUQX0sCisgIHsidGFyZ2V0IGVudGVyIGRhdGEiLCBH RkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfVEFSR0VUX0VOVEVSX0RB VEF9LAorICB7InRhcmdldCBleGl0IGRhdGEiLCBHRkNfT01QX0RJUl9FWEVD VVRBQkxFLCBTVF9PTVBfVEFSR0VUX0VYSVRfREFUQX0sCisgIHsidGFyZ2V0 IiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RBUkdFVH0sCisg IHsidGFyZ2V0IHVwZGF0ZSIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNU X09NUF9UQVJHRVRfVVBEQVRFfSwKKyAgeyJ0YXNrZ3JvdXAiLCBHRkNfT01Q X0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfVEFTS0dST1VQfSwKKyAgeyJ0YXNr IiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RBU0t9LAorICB7 InRhc2tsb29wIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RB U0tMT09QfSwKKyAgeyJ0YXNrd2FpdCIsIEdGQ19PTVBfRElSX0VYRUNVVEFC TEUsIFNUX09NUF9UQVNLV0FJVH0sCisgIHsidGFza3lpZWxkIiwgR0ZDX09N UF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1RBU0tZSUVMRH0sCisgIHsidGVh bXMiLCBHRkNfT01QX0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfVEVBTVN9LAor ICB7InRocmVhZHByaXZhdGUiLCBHRkNfT01QX0RJUl9ERUNMQVJBVElWRSwg U1RfT01QX1RIUkVBRFBSSVZBVEV9LAorICAvKiB7InRpbGUiLCBHRkNfT01Q X0RJUl9FWEVDVVRBQkxFLCBTVF9PTVBfVElMRX0sICovCisgIC8qIHsidW5y b2xsIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwgU1RfT01QX1VOUk9MTH0s ICovCisgIHsid29ya3NoYXJlIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwg U1RfT01QX1dPUktTSEFSRX0sCit9OworCiAKIC8qIE1hdGNoIGFuIGVuZCBv ZiBPcGVuTVAgZGlyZWN0aXZlLiAgRW5kIG9mIE9wZW5NUCBkaXJlY3RpdmUg aXMgb3B0aW9uYWwKICAgIHdoaXRlc3BhY2UsIGZvbGxvd2VkIGJ5ICdcbicg b3IgY29tbWVudCAnIScuICAqLwpAQCAtMTExLDYgKzE5MSwxMyBAQCBnZmNf ZnJlZV9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICpjKQogICBnZmNf ZnJlZV9leHByX2xpc3QgKGMtPndhaXRfbGlzdCk7CiAgIGdmY19mcmVlX2V4 cHJfbGlzdCAoYy0+dGlsZV9saXN0KTsKICAgZnJlZSAoQ09OU1RfQ0FTVCAo Y2hhciAqLCBjLT5jcml0aWNhbF9uYW1lKSk7CisgIGlmIChjLT5hc3N1bWUp CisgICAgeworICAgICAgZnJlZSAoYy0+YXNzdW1lLT5hYnNlbnQpOworICAg ICAgZnJlZSAoYy0+YXNzdW1lLT5jb250YWlucyk7CisgICAgICBnZmNfZnJl ZV9leHByX2xpc3QgKGMtPmFzc3VtZS0+aG9sZHMpOworICAgICAgZnJlZSAo Yy0+YXNzdW1lKTsKKyAgICB9CiAgIGZyZWUgKGMpOwogfQogCkBAIC05OTIs NiArMTA3OSw3IEBAIGVudW0gb21wX21hc2syCiAgIE9NUF9DTEFVU0VfSEFT X0RFVklDRV9BRERSLCAgLyogT3Blbk1QIDUuMSAgKi8KICAgT01QX0NMQVVT RV9FTlRFUiwgLyogT3Blbk1QIDUuMiAqLwogICBPTVBfQ0xBVVNFX0RPQUNS T1NTLCAvKiBPcGVuTVAgNS4yICovCisgIE9NUF9DTEFVU0VfQVNTVU1QVElP TlMsIC8qIE9wZW5NUCA1LjEuICovCiAgIC8qIFRoaXMgbXVzdCBjb21lIGxh c3QuICAqLwogICBPTVBfTUFTSzJfTEFTVAogfTsKQEAgLTE0MDcsNiArMTQ5 NSwxNzMgQEAgZ2ZjX21hdGNoX29tcF9jbGF1c2VfcmVkdWN0aW9uIChjaGFy IHBjLCBnZmNfb21wX2NsYXVzZXMgKmMsIGJvb2wgb3BlbmFjYywKICAgcmV0 dXJuIE1BVENIX1lFUzsKIH0KIAorc3RhdGljIG1hdGNoCitnZmNfb21wX2Fi c2VudF9jb250YWluc19jbGF1c2UgKGdmY19vbXBfYXNzdW1wdGlvbnMgKiph c3N1bWUsIGJvb2wgaXNfYWJzZW50KQoreworICBpZiAoKmFzc3VtZSA9PSBO VUxMKQorICAgICphc3N1bWUgPSBnZmNfZ2V0X29tcF9hc3N1bXB0aW9ucyAo KTsKKyAgZG8KKyAgICB7CisgICAgICBnZmNfc3RhdGVtZW50IHN0ID0gU1Rf Tk9ORTsKKyAgICAgIGdmY19nb2JibGVfd2hpdGVzcGFjZSAoKTsKKyAgICAg IGxvY3VzIG9sZF9sb2MgPSBnZmNfY3VycmVudF9sb2N1czsKKyAgICAgIGNo YXIgYyA9IGdmY19wZWVrX2FzY2lpX2NoYXIgKCk7CisgICAgICBlbnVtIGdm Y19vbXBfZGlyZWN0aXZlX2tpbmQga2luZAorCT0gR0ZDX09NUF9ESVJfREVD TEFSQVRJVkU7IC8qIFNpbGVuY2Ugd2FybmluZy4gKi8KKyAgICAgIGZvciAo c2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlfU0laRSAoZ2ZjX29tcF9kaXJlY3Rp dmVzKTsgaSsrKQorCXsKKwkgIGlmIChnZmNfb21wX2RpcmVjdGl2ZXNbaV0u bmFtZVswXSA+IGMpCisJICAgIGJyZWFrOworCSAgaWYgKGdmY19vbXBfZGly ZWN0aXZlc1tpXS5uYW1lWzBdICE9IGMpCisJICAgIGNvbnRpbnVlOworCSAg aWYgKGdmY19tYXRjaCAoZ2ZjX29tcF9kaXJlY3RpdmVzW2ldLm5hbWUpID09 IE1BVENIX1lFUykKKwkgICAgeworCSAgICAgIHN0ID0gZ2ZjX29tcF9kaXJl Y3RpdmVzW2ldLnN0OworCSAgICAgIGtpbmQgPSBnZmNfb21wX2RpcmVjdGl2 ZXNbaV0ua2luZDsKKwkgICAgfQorCX0KKyAgICAgIGdmY19nb2JibGVfd2hp dGVzcGFjZSAoKTsKKyAgICAgIGMgPSBnZmNfcGVla19hc2NpaV9jaGFyICgp OworICAgICAgaWYgKHN0ID09IFNUX05PTkUgfHwgKGMgIT0gJywnICYmIGMg IT0gJyknKSkKKwl7CisJICBpZiAoc3QgPT0gU1RfTk9ORSkKKwkgICAgZ2Zj X2Vycm9yICgiVW5rbm93biBkaXJlY3RpdmUgYXQgJUwiLCAmb2xkX2xvYyk7 CisJICBlbHNlCisJICAgIGdmY19lcnJvciAoIkludmFsaWQgY29tYmluZWQg b3IgY29tcG9zaXQgZGlyZWN0aXZlIGF0ICVMIiwKKwkJICAgICAgICZvbGRf bG9jKTsKKwkgIHJldHVybiBNQVRDSF9FUlJPUjsKKwl9CisgICAgICBpZiAo a2luZCA9PSBHRkNfT01QX0RJUl9ERUNMQVJBVElWRQorCSAgfHwga2luZCA9 PSBHRkNfT01QX0RJUl9JTkZPUk1BVElPTkFMCisJICB8fCBraW5kID09IEdG Q19PTVBfRElSX01FVEEpCisJeworCSAgZ2ZjX2Vycm9yICgiSW52YWxpZCAl cXMgZGlyZWN0aXZlIGF0ICVMIGluICVzIGNsYXVzZTogZGVjbGFyYXRpdmUs ICIKKwkJICAgICAiaW5mb3JtYXRpb25hbCBhbmQgbWV0YSBkaXJlY3RpdmVz IG5vdCBwZXJtaXR0ZWQiLAorCQkgICAgIGdmY19hc2NpaV9zdGF0ZW1lbnQg KHN0LCB0cnVlKSwgJm9sZF9sb2MsCisJCSAgICAgaXNfYWJzZW50ID8gIkFC U0VOVCIgOiAiQ09OVEFJTlMiKTsKKwkgIHJldHVybiBNQVRDSF9FUlJPUjsK Kwl9CisgICAgICBpZiAoaXNfYWJzZW50KQorCXsKKwkgIC8qIFVzZSBleHBv bmVudGlhbCBhbGxvY2F0aW9uOyBlcXVpdmFsZW50IHRvIHBvdzJwKHgpLiAq LworCSAgaW50IGkgPSAoKmFzc3VtZSktPm5fYWJzZW50OworCSAgaW50IHNp emUgPSAoKGkgPT0gMCkgPyA0CisJCSAgICAgIDogcG93MnBfaHdpIChpKSA9 PSAxID8gaSoyIDogMCk7CisJICBpZiAoc2l6ZSAhPSAwKQorCSAgICAoKmFz c3VtZSktPmFic2VudCA9IFhSRVNJWkVWRUMgKGdmY19zdGF0ZW1lbnQsCisJ CQkJCSAgICAoKmFzc3VtZSktPmFic2VudCwgc2l6ZSk7CisJICAoKmFzc3Vt ZSktPmFic2VudFsoKmFzc3VtZSktPm5fYWJzZW50KytdID0gc3Q7CisJfQor ICAgICAgZWxzZQorCXsKKwkgIGludCBpID0gKCphc3N1bWUpLT5uX2NvbnRh aW5zOworCSAgaW50IHNpemUgPSAoKGkgPT0gMCkgPyA0CisJCSAgICAgIDog cG93MnBfaHdpIChpKSA9PSAxID8gaSoyIDogMCk7CisJICBpZiAoc2l6ZSAh PSAwKQorCSAgICAoKmFzc3VtZSktPmNvbnRhaW5zID0gWFJFU0laRVZFQyAo Z2ZjX3N0YXRlbWVudCwKKwkJCQkJICAgICAgKCphc3N1bWUpLT5jb250YWlu cywgc2l6ZSk7CisJICAoKmFzc3VtZSktPmNvbnRhaW5zWygqYXNzdW1lKS0+ bl9jb250YWlucysrXSA9IHN0OworCX0KKyAgICAgIGdmY19nb2JibGVfd2hp dGVzcGFjZSAoKTsKKyAgICAgIGlmIChnZmNfbWF0Y2goIiwiKSA9PSBNQVRD SF9ZRVMpCisJY29udGludWU7CisgICAgICBpZiAoZ2ZjX21hdGNoKCIpIikg PT0gTUFUQ0hfWUVTKQorCWJyZWFrOworICAgICAgZ2ZjX2Vycm9yICgiRXhw ZWN0ZWQgJTwsJT4gb3IgJTwpJT4gYXQgJUMiKTsKKyAgICAgIHJldHVybiBN QVRDSF9FUlJPUjsKKyAgICB9CisgIHdoaWxlICh0cnVlKTsKKworICByZXR1 cm4gTUFUQ0hfWUVTOworfQorCisvKiBDaGVjayAnY2hlY2snIGFyZ3VtZW50 IGZvciBkdXBsaWNhdGVkIHN0YXRlbWVudHMgaW4gYWJzZW50IGFuZC9vciBj b250YWlucworICAgY2xhdXNlcy4gSWYgJ21lcmdlJywgbWVyZ2UgdGhlbSBm cm9tIGNoZWNrIHRvICdtZXJnZScuICAqLworCitzdGF0aWMgbWF0Y2gKK29t cF92ZXJpZnlfbWVyZ2VfYWJzZW50X2NvbnRhaW5zIChnZmNfc3RhdGVtZW50 IHN0LCBnZmNfb21wX2Fzc3VtcHRpb25zICpjaGVjaywKKwkJCQkgIGdmY19v bXBfYXNzdW1wdGlvbnMgKm1lcmdlLCBsb2N1cyAqbG9jKQoreworICBpZiAo Y2hlY2sgPT0gTlVMTCkKKyAgICByZXR1cm4gTUFUQ0hfWUVTOworICBiaXRt YXBfaGVhZCBhYnNlbnRfaGVhZCwgY29udGFpbnNfaGVhZDsKKyAgYml0bWFw X29ic3RhY2tfaW5pdGlhbGl6ZSAoTlVMTCk7CisgIGJpdG1hcF9pbml0aWFs aXplICgmYWJzZW50X2hlYWQsICZiaXRtYXBfZGVmYXVsdF9vYnN0YWNrKTsK KyAgYml0bWFwX2luaXRpYWxpemUgKCZjb250YWluc19oZWFkLCAmYml0bWFw X2RlZmF1bHRfb2JzdGFjayk7CisKKyAgbWF0Y2ggbSA9IE1BVENIX1lFUzsK KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGVjay0+bl9hYnNlbnQ7IGkrKykK KyAgICBpZiAoIWJpdG1hcF9zZXRfYml0ICgmYWJzZW50X2hlYWQsIGNoZWNr LT5hYnNlbnRbaV0pKQorICAgICAgeworCWdmY19lcnJvciAoIiVxcyBkaXJl Y3RpdmUgbWVudGlvbmVkIG11bHRpcGxlIHRpbWVzIGluICVzIGNsYXVzZSBp biAlcyAiCisJCSAgICJkaXJlY3RpdmUgYXQgJUwiLAorCQkgICBnZmNfYXNj aWlfc3RhdGVtZW50IChjaGVjay0+YWJzZW50W2ldLCB0cnVlKSwKKwkJICAg IkFCU0VOVCIsIGdmY19hc2NpaV9zdGF0ZW1lbnQgKHN0KSwgbG9jKTsKKwlt ID0gTUFUQ0hfRVJST1I7CisgICAgICB9CisgIGZvciAoaW50IGkgPSAwOyBp IDwgY2hlY2stPm5fY29udGFpbnM7IGkrKykKKyAgICB7CisgICAgICBpZiAo IWJpdG1hcF9zZXRfYml0ICgmY29udGFpbnNfaGVhZCwgY2hlY2stPmNvbnRh aW5zW2ldKSkKKwl7CisJICBnZmNfZXJyb3IgKCIlcXMgZGlyZWN0aXZlIG1l bnRpb25lZCBtdWx0aXBsZSB0aW1lcyBpbiAlcyBjbGF1c2UgaW4gJXMgIgor CQkgICAgICJkaXJlY3RpdmUgYXQgJUwiLAorCQkgICAgIGdmY19hc2NpaV9z dGF0ZW1lbnQgKGNoZWNrLT5jb250YWluc1tpXSwgdHJ1ZSksCisJCSAgICAg IkNPTlRBSU5TIiwgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoc3QpLCBsb2MpOwor CSAgbSA9IE1BVENIX0VSUk9SOworCX0KKyAgICAgIGlmIChiaXRtYXBfYml0 X3AgKCZhYnNlbnRfaGVhZCwgY2hlY2stPmNvbnRhaW5zW2ldKSkKKwl7CisJ ICBnZmNfZXJyb3IgKCIlcXMgZGlyZWN0aXZlIG1lbnRpb25lZCBib3RoIHRp bWVzIGluIEFCU0VOVCBhbmQgQ09OVEFJTlMgIgorCQkgICAgICJjbGF1c2Vz IGluICVzIGRpcmVjdGl2ZSBhdCAlTCIsCisJCSAgICAgZ2ZjX2FzY2lpX3N0 YXRlbWVudCAoY2hlY2stPmFic2VudFtpXSwgdHJ1ZSksCisJCSAgICAgZ2Zj X2FzY2lpX3N0YXRlbWVudCAoc3QpLCBsb2MpOworCSAgbSA9IE1BVENIX0VS Uk9SOworCX0KKyAgICB9CisKKyAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisg ICAgcmV0dXJuIE1BVENIX0VSUk9SOworICBpZiAobWVyZ2UgPT0gTlVMTCkK KyAgICByZXR1cm4gTUFUQ0hfWUVTOworICBpZiAobWVyZ2UtPmFic2VudCA9 PSBOVUxMICYmIGNoZWNrLT5hYnNlbnQpCisgICAgeworICAgICAgbWVyZ2Ut Pm5fYWJzZW50ID0gY2hlY2stPm5fYWJzZW50OworICAgICAgbWVyZ2UtPmFi c2VudCA9IGNoZWNrLT5hYnNlbnQ7CisgICAgICBjaGVjay0+YWJzZW50ID0g TlVMTDsKKyAgICB9CisgIGVsc2UgaWYgKG1lcmdlLT5hYnNlbnQgJiYgY2hl Y2stPmFic2VudCkKKyAgICB7CisgICAgICBjaGVjay0+YWJzZW50ID0gWFJF U0laRVZFQyAoZ2ZjX3N0YXRlbWVudCwgY2hlY2stPmFic2VudCwKKwkJCQkg IG1lcmdlLT5uX2Fic2VudCArIGNoZWNrLT5uX2Fic2VudCk7CisgICAgICBm b3IgKGludCBpID0gMDsgaSA8IG1lcmdlLT5uX2Fic2VudDsgaSsrKQorCWlm ICghYml0bWFwX2JpdF9wICgmYWJzZW50X2hlYWQsIG1lcmdlLT5hYnNlbnRb aV0pKQorCSAgY2hlY2stPmFic2VudFtjaGVjay0+bl9hYnNlbnQrK10gPSBt ZXJnZS0+YWJzZW50W2ldOworICAgICAgZnJlZSAobWVyZ2UtPmFic2VudCk7 CisgICAgICBtZXJnZS0+YWJzZW50ID0gY2hlY2stPmFic2VudDsKKyAgICAg IG1lcmdlLT5uX2Fic2VudCA9IGNoZWNrLT5uX2Fic2VudDsKKyAgICAgIGNo ZWNrLT5hYnNlbnQgPSBOVUxMOworICAgIH0KKyAgaWYgKG1lcmdlLT5jb250 YWlucyA9PSBOVUxMICYmIGNoZWNrLT5jb250YWlucykKKyAgICB7CisgICAg ICBtZXJnZS0+bl9jb250YWlucyA9IGNoZWNrLT5uX2NvbnRhaW5zOworICAg ICAgbWVyZ2UtPmNvbnRhaW5zID0gY2hlY2stPmNvbnRhaW5zOworICAgICAg Y2hlY2stPmNvbnRhaW5zID0gTlVMTDsKKyAgICB9CisgIGVsc2UgaWYgKG1l cmdlLT5jb250YWlucyAmJiBjaGVjay0+Y29udGFpbnMpCisgICAgeworICAg ICAgY2hlY2stPmNvbnRhaW5zID0gWFJFU0laRVZFQyAoZ2ZjX3N0YXRlbWVu dCwgY2hlY2stPmNvbnRhaW5zLAorCQkJCSAgICBtZXJnZS0+bl9jb250YWlu cyArIGNoZWNrLT5uX2NvbnRhaW5zKTsKKyAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgbWVyZ2UtPm5fY29udGFpbnM7IGkrKykKKwlpZiAoIWJpdG1hcF9i aXRfcCAoJmNvbnRhaW5zX2hlYWQsIG1lcmdlLT5jb250YWluc1tpXSkpCisJ ICBjaGVjay0+Y29udGFpbnNbY2hlY2stPm5fY29udGFpbnMrK10gPSBtZXJn ZS0+Y29udGFpbnNbaV07CisgICAgICBmcmVlIChtZXJnZS0+Y29udGFpbnMp OworICAgICAgbWVyZ2UtPmNvbnRhaW5zID0gY2hlY2stPmNvbnRhaW5zOwor ICAgICAgbWVyZ2UtPm5fY29udGFpbnMgPSBjaGVjay0+bl9jb250YWluczsK KyAgICAgIGNoZWNrLT5jb250YWlucyA9IE5VTEw7CisgICAgfQorICByZXR1 cm4gTUFUQ0hfWUVTOworfQorCiAKIC8qIE1hdGNoIHdpdGggZHVwbGljYXRl IGNoZWNrLiBNYXRjaGVzICduYW1lJy4gSWYgZXhwciAhPSBOVUxMLCBpdAog ICAgdGhlbiBtYXRjaGVzICcoZXhwciknLCBvdGhlcndpc2UsIGlmIG9wZW5f cGFyZW5zIGlzIHRydWUsCkBAIC0xNTExLDYgKzE3NjYsMTQgQEAgZ2ZjX21h dGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKipjcCwgY29uc3Qg b21wX21hc2sgbWFzaywKIAljYXNlICdhJzoKIAkgIGVuZF9jb2xvbiA9IGZh bHNlOwogCSAgaGVhZCA9IE5VTEw7CisJICBpZiAoKG1hc2sgJiBPTVBfQ0xB VVNFX0FTU1VNUFRJT05TKQorCSAgICAgICYmIGdmY19tYXRjaCAoImFic2Vu dCAoICIpID09IE1BVENIX1lFUykKKwkgICAgeworCSAgICAgIGlmIChnZmNf b21wX2Fic2VudF9jb250YWluc19jbGF1c2UgKCZjLT5hc3N1bWUsIHRydWUp CisJCSAgIT0gTUFUQ0hfWUVTKQorCQlnb3RvIGVycm9yOworCSAgICAgIGNv bnRpbnVlOworCSAgICB9CiAJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX0FM SUdORUQpCiAJICAgICAgJiYgZ2ZjX21hdGNoX29tcF92YXJpYWJsZV9saXN0 ICgiYWxpZ25lZCAoIiwKIAkJCQkJICAgICAgJmMtPmxpc3RzW09NUF9MSVNU X0FMSUdORURdLApAQCAtMTc0Myw2ICsyMDA2LDE0IEBAIGdmY19tYXRjaF9v bXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9t YXNrIG1hc2ssCiAJICAgICAgbmVlZHNfc3BhY2UgPSB0cnVlOwogCSAgICAg IGNvbnRpbnVlOwogCSAgICB9CisJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNF X0FTU1VNUFRJT05TKQorCSAgICAgICYmIGdmY19tYXRjaCAoImNvbnRhaW5z ICggIikgPT0gTUFUQ0hfWUVTKQorCSAgICB7CisJICAgICAgaWYgKGdmY19v bXBfYWJzZW50X2NvbnRhaW5zX2NsYXVzZSAoJmMtPmFzc3VtZSwgZmFsc2Up CisJCSAgIT0gTUFUQ0hfWUVTKQorCQlnb3RvIGVycm9yOworCSAgICAgIGNv bnRpbnVlOworCSAgICB9CiAJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX0NP UFkpCiAJICAgICAgJiYgZ2ZjX21hdGNoICgiY29weSAoICIpID09IE1BVENI X1lFUwogCSAgICAgICYmIGdmY19tYXRjaF9vbXBfbWFwX2NsYXVzZSAoJmMt Pmxpc3RzW09NUF9MSVNUX01BUF0sCkBAIC0yMjc3LDYgKzI1NDgsMjAgQEAg Z2ZjX21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKipjcCwg Y29uc3Qgb21wX21hc2sgbWFzaywKIAkJZ290byBlcnJvcjsKIAkgICAgICBj b250aW51ZTsKIAkgICAgfQorCSAgaWYgKChtYXNrICYgT01QX0NMQVVTRV9B U1NVTVBUSU9OUykKKwkgICAgICAmJiBnZmNfbWF0Y2ggKCJob2xkcyAoICIp ID09IE1BVENIX1lFUykKKwkgICAgeworCSAgICAgIGdmY19leHByICplOwor CSAgICAgIGlmIChnZmNfbWF0Y2ggKCIlZSApIiwgJmUpICE9IE1BVENIX1lF UykKKwkJZ290byBlcnJvcjsKKwkgICAgICBpZiAoYy0+YXNzdW1lID09IE5V TEwpCisJCWMtPmFzc3VtZSA9IGdmY19nZXRfb21wX2Fzc3VtcHRpb25zICgp OworCSAgICAgIGdmY19leHByX2xpc3QgKmVsID0gWENORVcgKGdmY19leHBy X2xpc3QpOworCSAgICAgIGVsLT5leHByID0gZTsKKwkgICAgICBlbC0+bmV4 dCA9IGMtPmFzc3VtZS0+aG9sZHM7CisJICAgICAgYy0+YXNzdW1lLT5ob2xk cyA9IGVsOworCSAgICAgIGNvbnRpbnVlOworCSAgICB9CiAJICBpZiAoKG1h c2sgJiBPTVBfQ0xBVVNFX0hPU1RfU0VMRikKIAkgICAgICAmJiBnZmNfbWF0 Y2ggKCJob3N0ICggIikgPT0gTUFUQ0hfWUVTCiAJICAgICAgJiYgZ2ZjX21h dGNoX29tcF9tYXBfY2xhdXNlICgmYy0+bGlzdHNbT01QX0xJU1RfTUFQXSwK QEAgLTI2NjQsNiArMjk0OSw0MSBAQCBnZmNfbWF0Y2hfb21wX2NsYXVzZXMg KGdmY19vbXBfY2xhdXNlcyAqKmNwLCBjb25zdCBvbXBfbWFzayBtYXNrLAog CQkJCQkgICBPTVBfTUFQX0lGX1BSRVNFTlQsIHRydWUsCiAJCQkJCSAgIGFs bG93X2Rlcml2ZWQpKQogCSAgICBjb250aW51ZTsKKwkgIGlmICgobWFzayAm IE9NUF9DTEFVU0VfQVNTVU1QVElPTlMpCisJICAgICAgJiYgKG0gPSBnZmNf bWF0Y2hfZHVwbF9jaGVjayAoIWMtPmFzc3VtZQorCQkJCQkgICAgfHwgIWMt PmFzc3VtZS0+bm9fb3Blbm1wX3JvdXRpbmVzLAorCQkJCQkgICAgIm5vX29w ZW5tcF9yb3V0aW5lcyIpKSA9PSBNQVRDSF9ZRVMpCisJICAgIHsKKwkgICAg ICBpZiAobSA9PSBNQVRDSF9FUlJPUikKKwkJZ290byBlcnJvcjsKKwkgICAg ICBpZiAoYy0+YXNzdW1lID09IE5VTEwpCisJCWMtPmFzc3VtZSA9IGdmY19n ZXRfb21wX2Fzc3VtcHRpb25zICgpOworCSAgICAgIGMtPmFzc3VtZS0+bm9f b3Blbm1wX3JvdXRpbmVzID0gbmVlZHNfc3BhY2UgPSB0cnVlOworCSAgICAg IGNvbnRpbnVlOworCSAgICB9CisJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNF X0FTU1VNUFRJT05TKQorCSAgICAgICYmIChtID0gZ2ZjX21hdGNoX2R1cGxf Y2hlY2sgKCFjLT5hc3N1bWUgfHwgIWMtPmFzc3VtZS0+bm9fb3Blbm1wLAor CQkJCQkgICAgIm5vX29wZW5tcCIpKSA9PSBNQVRDSF9ZRVMpCisJICAgIHsK KwkgICAgICBpZiAobSA9PSBNQVRDSF9FUlJPUikKKwkJZ290byBlcnJvcjsK KwkgICAgICBpZiAoYy0+YXNzdW1lID09IE5VTEwpCisJCWMtPmFzc3VtZSA9 IGdmY19nZXRfb21wX2Fzc3VtcHRpb25zICgpOworCSAgICAgIGMtPmFzc3Vt ZS0+bm9fb3Blbm1wID0gbmVlZHNfc3BhY2UgPSB0cnVlOworCSAgICAgIGNv bnRpbnVlOworCSAgICB9CisJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX0FT U1VNUFRJT05TKQorCSAgICAgICYmIChtID0gZ2ZjX21hdGNoX2R1cGxfY2hl Y2sgKCFjLT5hc3N1bWUKKwkJCQkJICAgIHx8ICFjLT5hc3N1bWUtPm5vX3Bh cmFsbGVsaXNtLAorCQkJCQkgICAgIm5vX3BhcmFsbGVsaXNtIikpID09IE1B VENIX1lFUykKKwkgICAgeworCSAgICAgIGlmIChtID09IE1BVENIX0VSUk9S KQorCQlnb3RvIGVycm9yOworCSAgICAgIGlmIChjLT5hc3N1bWUgPT0gTlVM TCkKKwkJYy0+YXNzdW1lID0gZ2ZjX2dldF9vbXBfYXNzdW1wdGlvbnMgKCk7 CisJICAgICAgYy0+YXNzdW1lLT5ub19wYXJhbGxlbGlzbSA9IG5lZWRzX3Nw YWNlID0gdHJ1ZTsKKwkgICAgICBjb250aW51ZTsKKwkgICAgfQogCSAgaWYg KChtYXNrICYgT01QX0NMQVVTRV9OT0dST1VQKQogCSAgICAgICYmIChtID0g Z2ZjX21hdGNoX2R1cGxfY2hlY2sgKCFjLT5ub2dyb3VwLCAibm9ncm91cCIp KQogCQkgIT0gTUFUQ0hfTk8pCkBAIC0zOTQxLDYgKzQyNjEsNjkgQEAgbWF0 Y2hfb21wIChnZmNfZXhlY19vcCBvcCwgY29uc3Qgb21wX21hc2sgbWFzaykK IH0KIAogCittYXRjaAorZ2ZjX21hdGNoX29tcF9hc3N1bWUgKHZvaWQpCit7 CisgIGdmY19vbXBfY2xhdXNlcyAqYzsKKyAgbG9jdXMgbG9jID0gZ2ZjX2N1 cnJlbnRfbG9jdXM7CisgIGlmICgoZ2ZjX21hdGNoX29tcF9jbGF1c2VzICgm Yywgb21wX21hc2sgKE9NUF9DTEFVU0VfQVNTVU1QVElPTlMpKQorICAgICAg ICE9IE1BVENIX1lFUykKKyAgICAgIHx8IChvbXBfdmVyaWZ5X21lcmdlX2Fi c2VudF9jb250YWlucyAoU1RfT01QX0FTU1VNRSwgYy0+YXNzdW1lLCBOVUxM LAorCQkJCQkgICAgJmxvYykgIT0gTUFUQ0hfWUVTKSkKKyAgICByZXR1cm4g TUFUQ0hfRVJST1I7CisgIG5ld19zdC5vcCA9IEVYRUNfT01QX0FTU1VNRTsK KyAgbmV3X3N0LmV4dC5vbXBfY2xhdXNlcyA9IGM7CisgIHJldHVybiBNQVRD SF9ZRVM7Cit9CisKKworbWF0Y2gKK2dmY19tYXRjaF9vbXBfYXNzdW1lcyAo dm9pZCkKK3sKKyAgZ2ZjX29tcF9jbGF1c2VzICpjOworICBsb2N1cyBsb2Mg PSBnZmNfY3VycmVudF9sb2N1czsKKyAgaWYgKCFnZmNfY3VycmVudF9ucy0+ cHJvY19uYW1lCisgICAgICB8fCAoZ2ZjX2N1cnJlbnRfbnMtPnByb2NfbmFt ZS0+YXR0ci5mbGF2b3IgIT0gRkxfTU9EVUxFCisJICAmJiAhZ2ZjX2N1cnJl bnRfbnMtPnByb2NfbmFtZS0+YXR0ci5zdWJyb3V0aW5lCisJICAmJiAhZ2Zj X2N1cnJlbnRfbnMtPnByb2NfbmFtZS0+YXR0ci5mdW5jdGlvbikpCisgICAg eworICAgICAgZ2ZjX2Vycm9yICgiIU9NUCBBU1NVTUVTIGF0ICVDIG11c3Qg YmUgaW4gdGhlIHNwZWNpZmljYXRpb24gcGFydCBvZiBhICIKKwkJICJzdWJw cm9ncmFtIG9yIG1vZHVsZSIpOworICAgICAgcmV0dXJuIE1BVENIX0VSUk9S OworICAgIH0KKyAgaWYgKChnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKCZjLCBv bXBfbWFzayAoT01QX0NMQVVTRV9BU1NVTVBUSU9OUykpCisgICAgICAgIT0g TUFUQ0hfWUVTKQorICAgICAgfHwgKG9tcF92ZXJpZnlfbWVyZ2VfYWJzZW50 X2NvbnRhaW5zIChTVF9PTVBfQVNTVU1FUywgYy0+YXNzdW1lLAorCQkJCQkg ICAgZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hc3N1bWVzLCAmbG9jKQorCSAgIT0g TUFUQ0hfWUVTKSkKKyAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisgIGlmIChn ZmNfY3VycmVudF9ucy0+b21wX2Fzc3VtZXMgPT0gTlVMTCkKKyAgICB7Cisg ICAgICBnZmNfY3VycmVudF9ucy0+b21wX2Fzc3VtZXMgPSBjLT5hc3N1bWU7 CisgICAgICBjLT5hc3N1bWUgPSBOVUxMOworICAgIH0KKyAgZWxzZSBpZiAo Z2ZjX2N1cnJlbnRfbnMtPm9tcF9hc3N1bWVzICYmIGMtPmFzc3VtZSkKKyAg ICB7CisgICAgICBnZmNfY3VycmVudF9ucy0+b21wX2Fzc3VtZXMtPm5vX29w ZW5tcCB8PSBjLT5hc3N1bWUtPm5vX29wZW5tcDsKKyAgICAgIGdmY19jdXJy ZW50X25zLT5vbXBfYXNzdW1lcy0+bm9fb3Blbm1wX3JvdXRpbmVzCisJfD0g Yy0+YXNzdW1lLT5ub19vcGVubXBfcm91dGluZXM7CisgICAgICBnZmNfY3Vy cmVudF9ucy0+b21wX2Fzc3VtZXMtPm5vX3BhcmFsbGVsaXNtIHw9IGMtPmFz c3VtZS0+bm9fcGFyYWxsZWxpc207CisgICAgICBpZiAoZ2ZjX2N1cnJlbnRf bnMtPm9tcF9hc3N1bWVzLT5ob2xkcyAmJiBjLT5hc3N1bWUtPmhvbGRzKQor CXsKKwkgIGdmY19leHByX2xpc3QgKmVsID0gZ2ZjX2N1cnJlbnRfbnMtPm9t cF9hc3N1bWVzLT5ob2xkczsKKwkgIGZvciAoIDsgZWwtPm5leHQgOyBlbCA9 IGVsLT5uZXh0KQorCSAgICA7CisJICBlbC0+bmV4dCA9IGMtPmFzc3VtZS0+ aG9sZHM7CisJfQorICAgICAgZWxzZSBpZiAoYy0+YXNzdW1lLT5ob2xkcykK KwlnZmNfY3VycmVudF9ucy0+b21wX2Fzc3VtZXMtPmhvbGRzID0gYy0+YXNz dW1lLT5ob2xkczsKKyAgICAgIGMtPmFzc3VtZS0+aG9sZHMgPSBOVUxMOwor ICAgIH0KKyAgZ2ZjX2ZyZWVfb21wX2NsYXVzZXMgKGMpOworICByZXR1cm4g TUFUQ0hfWUVTOworfQorCisKIG1hdGNoCiBnZmNfbWF0Y2hfb21wX2NyaXRp Y2FsICh2b2lkKQogewpAQCAtNjUwNSw2ICs2ODg4LDIwIEBAIHJlc29sdmVf b21wX3Vkcl9jbGF1c2UgKGdmY19vbXBfbmFtZWxpc3QgKm4sIGdmY19uYW1l c3BhY2UgKm5zLAogICByZXR1cm4gY29weTsKIH0KIAorCisvKiBSZXNvbHZl IEFTU1VNRSdzIGFuZCBBU1NVTUVTJyBhc3N1bXB0aW9uIGNsYXVzZXMuICBO b3RlIHRoYXQgYWJzZW50L2NvbnRhaW5zCisgICBpcyBoYW5kbGVkIGR1cmlu ZyBwYXJzZSB0aW1lIGluIG9tcF92ZXJpZnlfbWVyZ2VfYWJzZW50X2NvbnRh aW5zLiAgICovCisKK3ZvaWQKK2dmY19yZXNvbHZlX29tcF9hc3N1bXB0aW9u cyAoZ2ZjX29tcF9hc3N1bXB0aW9ucyAqYXNzdW1lKQoreworICBmb3IgKGdm Y19leHByX2xpc3QgKmVsID0gYXNzdW1lLT5ob2xkczsgZWw7IGVsID0gZWwt Pm5leHQpCisgICAgaWYgKCFnZmNfcmVzb2x2ZV9leHByIChlbC0+ZXhwcikg fHwgZWwtPmV4cHItPnRzLnR5cGUgIT0gQlRfTE9HSUNBTCkKKwlnZmNfZXJy b3IgKCJIT0xEUyBleHByZXNzaW9uIGF0ICVMIG11c3QgYmUgYSBsb2dpY2Fs IGV4cHJlc3Npb24iLAorCQkgICAmZWwtPmV4cHItPndoZXJlKTsKK30KKwor CiAvKiBPcGVuTVAgZGlyZWN0aXZlIHJlc29sdmluZyByb3V0aW5lcy4gICov CiAKIHN0YXRpYyB2b2lkCkBAIC03ODg4LDYgKzgyODUsOSBAQCByZXNvbHZl X29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2Vz ICpvbXBfY2xhdXNlcywKIAlnZmNfZXJyb3IgKCIlPERFVEFDSCU+IGNsYXVz ZSBhdCAlTCBtdXN0IG5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggIgogCQkg ICAiJTxNRVJHRUFCTEUlPiBjbGF1c2UiLCAmb21wX2NsYXVzZXMtPmRldGFj aC0+d2hlcmUpOwogICAgIH0KKworICBpZiAob21wX2NsYXVzZXMtPmFzc3Vt ZSkKKyAgICBnZmNfcmVzb2x2ZV9vbXBfYXNzdW1wdGlvbnMgKG9tcF9jbGF1 c2VzLT5hc3N1bWUpOwogfQogCiAKQEAgLTkxMTYsNiArOTUxNiw4IEBAIG9t cF9jb2RlX3RvX3N0YXRlbWVudCAoZ2ZjX2NvZGUgKmNvZGUpCiAgICAgICBy ZXR1cm4gU1RfT01QX0RPOwogICAgIGNhc2UgRVhFQ19PTVBfTE9PUDoKICAg ICAgIHJldHVybiBTVF9PTVBfTE9PUDsKKyAgICBjYXNlIEVYRUNfT01QX0FT U1VNRToKKyAgICAgIHJldHVybiBTVF9PTVBfQVNTVU1FOwogICAgIGNhc2Ug RVhFQ19PTVBfQVRPTUlDOgogICAgICAgcmV0dXJuIFNUX09NUF9BVE9NSUM7 CiAgICAgY2FzZSBFWEVDX09NUF9CQVJSSUVSOgpAQCAtOTYzNSw2ICsxMDAz Nyw3IEBAIGdmY19yZXNvbHZlX29tcF9kaXJlY3RpdmUgKGdmY19jb2RlICpj b2RlLCBnZmNfbmFtZXNwYWNlICpucykKICAgICBjYXNlIEVYRUNfT01QX1RF QU1TX0xPT1A6CiAgICAgICByZXNvbHZlX29tcF9kbyAoY29kZSk7CiAgICAg ICBicmVhazsKKyAgICBjYXNlIEVYRUNfT01QX0FTU1VNRToKICAgICBjYXNl IEVYRUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNfT01QX0VSUk9SOgog ICAgIGNhc2UgRVhFQ19PTVBfTUFTS0VEOgpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vcGFyc2UuY2MgYi9nY2MvZm9ydHJhbi9wYXJzZS5jYwppbmRleCAy ZTJlOTc3MDUyMC4uZjA0ZmQxM2NjNjkgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0 cmFuL3BhcnNlLmNjCisrKyBiL2djYy9mb3J0cmFuL3BhcnNlLmNjCkBAIC04 ODUsNiArODg1LDggQEAgZGVjb2RlX29tcF9kaXJlY3RpdmUgKHZvaWQpCiAg IHN3aXRjaCAoYykKICAgICB7CiAgICAgY2FzZSAnYSc6CisgICAgICBtYXRj aG8gKCJhc3N1bWVzIiwgZ2ZjX21hdGNoX29tcF9hc3N1bWVzLCBTVF9PTVBf QVNTVU1FUyk7CisgICAgICBtYXRjaHMgKCJhc3N1bWUiLCBnZmNfbWF0Y2hf b21wX2Fzc3VtZSwgU1RfT01QX0FTU1VNRSk7CiAgICAgICBtYXRjaG8gKCJh dG9taWMiLCBnZmNfbWF0Y2hfb21wX2F0b21pYywgU1RfT01QX0FUT01JQyk7 CiAgICAgICBicmVhazsKICAgICBjYXNlICdiJzoKQEAgLTkxMyw2ICs5MTUs NyBAQCBkZWNvZGVfb21wX2RpcmVjdGl2ZSAodm9pZCkKICAgICAgIGJyZWFr OwogICAgIGNhc2UgJ2UnOgogICAgICAgbWF0Y2hvICgiZXJyb3IiLCBnZmNf bWF0Y2hfb21wX2Vycm9yLCBTVF9PTVBfRVJST1IpOworICAgICAgbWF0Y2hz ICgiZW5kIGFzc3VtZSIsIGdmY19tYXRjaF9vbXBfZW9zX2Vycm9yLCBTVF9P TVBfRU5EX0FTU1VNRSk7CiAgICAgICBtYXRjaG8gKCJlbmQgYXRvbWljIiwg Z2ZjX21hdGNoX29tcF9lb3NfZXJyb3IsIFNUX09NUF9FTkRfQVRPTUlDKTsK ICAgICAgIG1hdGNobyAoImVuZCBjcml0aWNhbCIsIGdmY19tYXRjaF9vbXBf ZW5kX2NyaXRpY2FsLCBTVF9PTVBfRU5EX0NSSVRJQ0FMKTsKICAgICAgIG1h dGNocyAoImVuZCBkaXN0cmlidXRlIHBhcmFsbGVsIGRvIHNpbWQiLCBnZmNf bWF0Y2hfb21wX2Vvc19lcnJvciwKQEAgLTE3MTYsNiArMTcxOSw3IEBAIG5l eHRfc3RhdGVtZW50ICh2b2lkKQogICBjYXNlIFNUX09NUF9UQVJHRVRfU0lN RDogY2FzZSBTVF9PTVBfVEFTS0xPT1A6IGNhc2UgU1RfT01QX1RBU0tMT09Q X1NJTUQ6IFwKICAgY2FzZSBTVF9PTVBfTE9PUDogY2FzZSBTVF9PTVBfUEFS QUxMRUxfTE9PUDogY2FzZSBTVF9PTVBfVEVBTVNfTE9PUDogXAogICBjYXNl IFNUX09NUF9UQVJHRVRfUEFSQUxMRUxfTE9PUDogY2FzZSBTVF9PTVBfVEFS R0VUX1RFQU1TX0xPT1A6IFwKKyAgY2FzZSBTVF9PTVBfQVNTVU1FOiBcCiAg IGNhc2UgU1RfQ1JJVElDQUw6IFwKICAgY2FzZSBTVF9PQUNDX1BBUkFMTEVM X0xPT1A6IGNhc2UgU1RfT0FDQ19QQVJBTExFTDogY2FzZSBTVF9PQUNDX0tF Uk5FTFM6IFwKICAgY2FzZSBTVF9PQUNDX0RBVEE6IGNhc2UgU1RfT0FDQ19I T1NUX0RBVEE6IGNhc2UgU1RfT0FDQ19MT09QOiBcCkBAIC0xNzMzLDcgKzE3 MzcsNyBAQCBuZXh0X3N0YXRlbWVudCAodm9pZCkKIAogI2RlZmluZSBjYXNl X29tcF9kZWNsIGNhc2UgU1RfT01QX1RIUkVBRFBSSVZBVEU6IGNhc2UgU1Rf T01QX0RFQ0xBUkVfU0lNRDogXAogICBjYXNlIFNUX09NUF9ERUNMQVJFX1RB UkdFVDogY2FzZSBTVF9PTVBfREVDTEFSRV9SRURVQ1RJT046IFwKLSAgY2Fz ZSBTVF9PTVBfREVDTEFSRV9WQVJJQU5UOiBcCisgIGNhc2UgU1RfT01QX0RF Q0xBUkVfVkFSSUFOVDogY2FzZSBTVF9PTVBfQVNTVU1FUzogXAogICBjYXNl IFNUX09NUF9SRVFVSVJFUzogY2FzZSBTVF9PQUNDX1JPVVRJTkU6IGNhc2Ug U1RfT0FDQ19ERUNMQVJFCiAKIC8qIEJsb2NrIGVuZCBzdGF0ZW1lbnRzLiAg RXJyb3JzIGFzc29jaWF0ZWQgd2l0aCBpbnRlcmNoYW5naW5nIHRoZXNlCkBA IC0xOTI1LDEwICsxOTI5LDExIEBAIGdmY19lbmNsb3NpbmdfdW5pdCAoZ2Zj X2NvbXBpbGVfc3RhdGUgKiByZXN1bHQpCiB9CiAKIAotLyogVHJhbnNsYXRl IGEgc3RhdGVtZW50IGVudW0gdG8gYSBzdHJpbmcuICAqLworLyogVHJhbnNs YXRlIGEgc3RhdGVtZW50IGVudW0gdG8gYSBzdHJpbmcuICBJZiBzdHJpcF9z ZW50aW5lbCBpcyB0cnVlLAorICAgdGhlICEkT01QLyEkQUNDIHNlbnRpbmVs IGlzIGV4Y2x1ZGVkLiAgKi8KIAogY29uc3QgY2hhciAqCi1nZmNfYXNjaWlf c3RhdGVtZW50IChnZmNfc3RhdGVtZW50IHN0KQorZ2ZjX2FzY2lpX3N0YXRl bWVudCAoZ2ZjX3N0YXRlbWVudCBzdCwgYm9vbCBzdHJpcF9zZW50aW5lbCkK IHsKICAgY29uc3QgY2hhciAqcDsKIApAQCAtMjM1Myw2ICsyMzU4LDEyIEBA IGdmY19hc2NpaV9zdGF0ZW1lbnQgKGdmY19zdGF0ZW1lbnQgc3QpCiAgICAg Y2FzZSBTVF9PQUNDX0VORF9BVE9NSUM6CiAgICAgICBwID0gIiEkQUNDIEVO RCBBVE9NSUMiOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBTVF9PTVBfQVNT VU1FOgorICAgICAgcCA9ICIhJE9NUCBBU1NVTUUiOworICAgICAgYnJlYWs7 CisgICAgY2FzZSBTVF9PTVBfQVNTVU1FUzoKKyAgICAgIHAgPSAiISRPTVAg QVNTVU1FUyI7CisgICAgICBicmVhazsKICAgICBjYXNlIFNUX09NUF9BVE9N SUM6CiAgICAgICBwID0gIiEkT01QIEFUT01JQyI7CiAgICAgICBicmVhazsK QEAgLTI0MDEsNiArMjQxMiw5IEBAIGdmY19hc2NpaV9zdGF0ZW1lbnQgKGdm Y19zdGF0ZW1lbnQgc3QpCiAgICAgY2FzZSBTVF9PTVBfRE9fU0lNRDoKICAg ICAgIHAgPSAiISRPTVAgRE8gU0lNRCI7CiAgICAgICBicmVhazsKKyAgICBj YXNlIFNUX09NUF9FTkRfQVNTVU1FOgorICAgICAgcCA9ICIhJE9NUCBFTkQg QVNTVU1FIjsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgU1RfT01QX0VORF9B VE9NSUM6CiAgICAgICBwID0gIiEkT01QIEVORCBBVE9NSUMiOwogICAgICAg YnJlYWs7CkBAIC0yNjAwLDYgKzI2MTQsMTAgQEAgZ2ZjX2FzY2lpX3N0YXRl bWVudCAoZ2ZjX3N0YXRlbWVudCBzdCkKICAgICBjYXNlIFNUX09NUF9PUkRF UkVEX0RFUEVORDoKICAgICAgIHAgPSAiISRPTVAgT1JERVJFRCI7CiAgICAg ICBicmVhazsKKyAgICBjYXNlIFNUX09NUF9OT1RISU5HOgorICAgICAgLyog Tm90ZTogZ2ZjX21hdGNoX29tcF9ub3RoaW5nIHJldHVybnMgU1RfTk9ORS4g Ki8KKyAgICAgIHAgPSAiISRPTVAgTk9USElORyI7CisgICAgICBicmVhazsK ICAgICBjYXNlIFNUX09NUF9QQVJBTExFTDoKICAgICAgIHAgPSAiISRPTVAg UEFSQUxMRUwiOwogICAgICAgYnJlYWs7CkBAIC0yNzUxLDYgKzI3NjksOCBA QCBnZmNfYXNjaWlfc3RhdGVtZW50IChnZmNfc3RhdGVtZW50IHN0KQogICAg ICAgZ2ZjX2ludGVybmFsX2Vycm9yICgiZ2ZjX2FzY2lpX3N0YXRlbWVudCgp OiBCYWQgc3RhdGVtZW50IGNvZGUiKTsKICAgICB9CiAKKyAgaWYgKHN0cmlw X3NlbnRpbmVsICYmIHBbMF0gPT0gJyEnKQorICAgIHJldHVybiBwICsgc3Ry bGVuICgiISRPTVAgIik7CiAgIHJldHVybiBwOwogfQogCkBAIC01NTE4LDYg KzU1MzgsOSBAQCBwYXJzZV9vbXBfc3RydWN0dXJlZF9ibG9jayAoZ2ZjX3N0 YXRlbWVudCBvbXBfc3QsIGJvb2wgd29ya3NoYXJlX3N0bXRzX29ubHkpCiAK ICAgc3dpdGNoIChvbXBfc3QpCiAgICAgeworICAgIGNhc2UgU1RfT01QX0FT U1VNRToKKyAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX0FTU1VNRTsK KyAgICAgIGJyZWFrOwogICAgIGNhc2UgU1RfT01QX1BBUkFMTEVMOgogICAg ICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfUEFSQUxMRUw7CiAgICAgICBi cmVhazsKQEAgLTU2NTEsNiArNTY3NCw3IEBAIHBhcnNlX29tcF9zdHJ1Y3R1 cmVkX2Jsb2NrIChnZmNfc3RhdGVtZW50IG9tcF9zdCwgYm9vbCB3b3Jrc2hh cmVfc3RtdHNfb25seSkKIAkJICBwYXJzZV9mb3JhbGxfYmxvY2sgKCk7CiAJ CSAgYnJlYWs7CiAKKwkJY2FzZSBTVF9PTVBfQVNTVU1FOgogCQljYXNlIFNU X09NUF9QQVJBTExFTDoKIAkJY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTS0VE OgogCQljYXNlIFNUX09NUF9QQVJBTExFTF9NQVNURVI6CkBAIC01ODc0LDYg KzU4OTgsNyBAQCBwYXJzZV9leGVjdXRhYmxlIChnZmNfc3RhdGVtZW50IHN0 KQogCSAgcGFyc2Vfb2FjY19zdHJ1Y3R1cmVkX2Jsb2NrIChzdCk7CiAJICBi cmVhazsKIAorCWNhc2UgU1RfT01QX0FTU1VNRToKIAljYXNlIFNUX09NUF9Q QVJBTExFTDoKIAljYXNlIFNUX09NUF9QQVJBTExFTF9NQVNLRUQ6CiAJY2Fz ZSBTVF9PTVBfUEFSQUxMRUxfTUFTVEVSOgpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vcGFyc2UuaCBiL2djYy9mb3J0cmFuL3BhcnNlLmgKaW5kZXggN2Rk ZWExMDIzN2YuLjAxM2FlYWVkYzAzIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJh bi9wYXJzZS5oCisrKyBiL2djYy9mb3J0cmFuL3BhcnNlLmgKQEAgLTY2LDcg KzY2LDcgQEAgZXh0ZXJuIGdmY19zdGF0ZV9kYXRhICpnZmNfc3RhdGVfc3Rh Y2s7CiBpbnQgZ2ZjX2NoZWNrX2RvX3ZhcmlhYmxlIChnZmNfc3ltdHJlZSAq KTsKIGJvb2wgZ2ZjX2ZpbmRfc3RhdGUgKGdmY19jb21waWxlX3N0YXRlKTsK IGdmY19zdGF0ZV9kYXRhICpnZmNfZW5jbG9zaW5nX3VuaXQgKGdmY19jb21w aWxlX3N0YXRlICopOwotY29uc3QgY2hhciAqZ2ZjX2FzY2lpX3N0YXRlbWVu dCAoZ2ZjX3N0YXRlbWVudCk7Citjb25zdCBjaGFyICpnZmNfYXNjaWlfc3Rh dGVtZW50IChnZmNfc3RhdGVtZW50LCBib29sIHN0cmlwX3NlbnRpbmVsID0g ZmFsc2UpIDsKIG1hdGNoIGdmY19tYXRjaF9lbnVtICh2b2lkKTsKIG1hdGNo IGdmY19tYXRjaF9lbnVtZXJhdG9yX2RlZiAodm9pZCk7CiB2b2lkIGdmY19m cmVlX2VudW1faGlzdG9yeSAodm9pZCk7CmRpZmYgLS1naXQgYS9nY2MvZm9y dHJhbi9yZXNvbHZlLmNjIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYwppbmRl eCBhZTdlYmI2MjRlNC4uZDEzM2JjMmQwMzQgMTAwNjQ0Ci0tLSBhL2djYy9m b3J0cmFuL3Jlc29sdmUuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5j YwpAQCAtMTA5MDIsNiArMTA5MDIsNyBAQCBnZmNfcmVzb2x2ZV9ibG9ja3Mg KGdmY19jb2RlICpiLCBnZmNfbmFtZXNwYWNlICpucykKIAljYXNlIEVYRUNf T0FDQ19FTlRFUl9EQVRBOgogCWNhc2UgRVhFQ19PQUNDX0VYSVRfREFUQToK IAljYXNlIEVYRUNfT0FDQ19ST1VUSU5FOgorCWNhc2UgRVhFQ19PTVBfQVNT VU1FOgogCWNhc2UgRVhFQ19PTVBfQ1JJVElDQUw6CiAJY2FzZSBFWEVDX09N UF9ESVNUUklCVVRFOgogCWNhc2UgRVhFQ19PTVBfRElTVFJJQlVURV9QQVJB TExFTF9ETzoKQEAgLTEyMzc2LDYgKzEyMzc3LDcgQEAgc3RhcnQ6CiAJICBn ZmNfcmVzb2x2ZV9vYWNjX2RpcmVjdGl2ZSAoY29kZSwgbnMpOwogCSAgYnJl YWs7CiAKKwljYXNlIEVYRUNfT01QX0FTU1VNRToKIAljYXNlIEVYRUNfT01Q X0FUT01JQzoKIAljYXNlIEVYRUNfT01QX0JBUlJJRVI6CiAJY2FzZSBFWEVD X09NUF9DQU5DRUw6CkBAIC0xNzY1MSw2ICsxNzY1Myw5IEBAIGdmY19yZXNv bHZlIChnZmNfbmFtZXNwYWNlICpucykKICAgY29tcG9uZW50X2Fzc2lnbm1l bnRfbGV2ZWwgPSAwOwogICByZXNvbHZlX2NvZGVzIChucyk7CiAKKyAgaWYg KG5zLT5vbXBfYXNzdW1lcykKKyAgICBnZmNfcmVzb2x2ZV9vbXBfYXNzdW1w dGlvbnMgKG5zLT5vbXBfYXNzdW1lcyk7CisKICAgZ2ZjX2N1cnJlbnRfbnMg PSBvbGRfbnM7CiAgIGNzX2Jhc2UgPSBvbGRfY3NfYmFzZTsKICAgbnMtPnJl c29sdmVkID0gMTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3N0LmNjIGIv Z2NjL2ZvcnRyYW4vc3QuY2MKaW5kZXggNzNmMzBjMjEzN2YuLjNjOGNhNjY1 NTRkIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9zdC5jYworKysgYi9nY2Mv Zm9ydHJhbi9zdC5jYwpAQCAtMjE0LDYgKzIxNCw3IEBAIGdmY19mcmVlX3N0 YXRlbWVudCAoZ2ZjX2NvZGUgKnApCiAgICAgY2FzZSBFWEVDX09BQ0NfRU5U RVJfREFUQToKICAgICBjYXNlIEVYRUNfT0FDQ19FWElUX0RBVEE6CiAgICAg Y2FzZSBFWEVDX09BQ0NfUk9VVElORToKKyAgICBjYXNlIEVYRUNfT01QX0FT U1VNRToKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoKICAgICBjYXNlIEVY RUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTExBVElP Tl9QT0lOVDoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3N5bWJvbC5jYyBi L2djYy9mb3J0cmFuL3N5bWJvbC5jYwppbmRleCA3YTgwZGZkMDYzYi4uNjA1 MDM1OWQ1MjEgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3N5bWJvbC5jYwor KysgYi9nY2MvZm9ydHJhbi9zeW1ib2wuY2MKQEAgLTQwNzEsNyArNDA3MSwx MyBAQCBnZmNfZnJlZV9uYW1lc3BhY2UgKGdmY19uYW1lc3BhY2UgKiZucykK ICAgICAgIGYgPSBmLT5uZXh0OwogICAgICAgZnJlZSAoY3VycmVudCk7CiAg ICAgfQotCisgIGlmIChucy0+b21wX2Fzc3VtZXMpCisgICAgeworICAgICAg ZnJlZSAobnMtPm9tcF9hc3N1bWVzLT5hYnNlbnQpOworICAgICAgZnJlZSAo bnMtPm9tcF9hc3N1bWVzLT5jb250YWlucyk7CisgICAgICBnZmNfZnJlZV9l eHByX2xpc3QgKG5zLT5vbXBfYXNzdW1lcy0+aG9sZHMpOworICAgICAgZnJl ZSAobnMtPm9tcF9hc3N1bWVzKTsKKyAgICB9CiAgIHAgPSBucy0+Y29udGFp bmVkOwogICBmcmVlIChucyk7CiAgIG5zID0gTlVMTDsKZGlmZiAtLWdpdCBh L2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyBiL2djYy9mb3J0cmFuL3Ry YW5zLW9wZW5tcC5jYwppbmRleCA4ZTlkNTM0NmIwNS4uMjEwNTM2OTRmODEg MTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYworKysg Yi9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKQEAgLTc0ODcsNiArNzQ4 Nyw4IEBAIGdmY190cmFuc19vbXBfZGlyZWN0aXZlIChnZmNfY29kZSAqY29k ZSkKIHsKICAgc3dpdGNoIChjb2RlLT5vcCkKICAgICB7CisgICAgY2FzZSBF WEVDX09NUF9BU1NVTUU6CisgICAgICByZXR1cm4gZ2ZjX3RyYW5zX29tcF9j b2RlIChjb2RlLT5ibG9jay0+bmV4dCwgdHJ1ZSk7CiAgICAgY2FzZSBFWEVD X09NUF9BVE9NSUM6CiAgICAgICByZXR1cm4gZ2ZjX3RyYW5zX29tcF9hdG9t aWMgKGNvZGUpOwogICAgIGNhc2UgRVhFQ19PTVBfQkFSUklFUjoKZGlmZiAt LWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLmNjIGIvZ2NjL2ZvcnRyYW4vdHJh bnMuY2MKaW5kZXggOTEyYTIwNmYyZWQuLjhhNjQ4ODJlYTllIDEwMDY0NAot LS0gYS9nY2MvZm9ydHJhbi90cmFucy5jYworKysgYi9nY2MvZm9ydHJhbi90 cmFucy5jYwpAQCAtMjE3NCw2ICsyMTc0LDcgQEAgdHJhbnNfY29kZSAoZ2Zj X2NvZGUgKiBjb2RlLCB0cmVlIGNvbmQpCiAJICByZXMgPSBnZmNfdHJhbnNf ZHRfZW5kIChjb2RlKTsKIAkgIGJyZWFrOwogCisJY2FzZSBFWEVDX09NUF9B U1NVTUU6CiAJY2FzZSBFWEVDX09NUF9BVE9NSUM6CiAJY2FzZSBFWEVDX09N UF9CQVJSSUVSOgogCWNhc2UgRVhFQ19PTVBfQ0FOQ0VMOgpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZS0xLmY5 MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMS5m OTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhi ZDVjNzIzMDUxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2Fzc3VtZS0xLmY5MApAQCAtMCwwICsxLDI0IEBA CitzdWJyb3V0aW5lIGZvbyAoaSwgYSkKKyAgaW1wbGljaXQgbm9uZQorICBp bnRlZ2VyLCB2YWx1ZSA6OiBpCisgIGludGVnZXIgOjogYSg6KQorICBpbnRl Z2VyIDo6IGoKKworICBqID0gNworICAhJG9tcCBhc3N1bWUgbm9fb3Blbm1w LCBhYnNlbnQgKHRhcmdldCwgdGVhbXMpIGhvbGRzIChpIDwgMzIpIGhvbGRz IChpIDwgMzJfMikKKyAgISRvbXAgZW5kIGFzc3VtZQorCisgICEkb21wIGFz c3VtZSBub19vcGVubXBfcm91dGluZXMsIGNvbnRhaW5zIChzaW1kKQorICBi bG9jaworICAgICEkb21wIHNpbWQKKyAgICBkbyBqID0gMSwgaQorICAgICAg YShpKSA9IGoKKyAgICBlbmQgZG8KKyAgZW5kIGJsb2NrCisKKyAgISRvbXAg YXNzdW1lIG5vX3BhcmFsbGVsaXNtLCBjb250YWlucyAoZXJyb3IpCisgIGlm IChpID49IDMyKSB0aGVuCisgICAgISRvbXAgZXJyb3IgYXQgKGV4ZWN1dGlv bikgbWVzc2FnZSAoIlNob3VsZCBub3QgaGFwcGVuIikKKyAgZW5kIGlmCisg ICEkb21wIGVuZCBhc3N1bWUKK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fzc3VtZS0yLmY5MCBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hc3N1bWUtMi5mOTAKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNhM2UwNGRmZTk1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9n b21wL2Fzc3VtZS0yLmY5MApAQCAtMCwwICsxLDI3IEBACitzdWJyb3V0aW5l IGZvbyAoaSwgYSkKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLCB2YWx1 ZSA6OiBpCisgIGludGVnZXIgOjogYSg6KQorICBpbnRlZ2VyIDo6IGoKKwor ICBqID0gNworICAhJG9tcCBhc3N1bWUgbm9fb3Blbm1wLCBhYnNlbnQgKHRh cmdldCwgdGVhbXMsdGFyZ2V0KSBob2xkcyAoaSA8IDMyKSBob2xkcyAoaSA8 IDMyXzIpICAhIHsgZGctZXJyb3IgIidUQVJHRVQnIGRpcmVjdGl2ZSBtZW50 aW9uZWQgbXVsdGlwbGUgdGltZXMgaW4gQUJTRU5UIGNsYXVzZSBpbiAhLk9N UCBBU1NVTUUgZGlyZWN0aXZlIiB9CishICAhJG9tcCBlbmQgYXNzdW1lICAt IHNpbGVuY2U6ICdVbmV4cGVjdGVkICEkT01QIEVORCBBU1NVTUUgc3RhdGVt ZW50JworCisgICEkb21wIGFzc3VtZSBub19vcGVubXBfcm91dGluZXMsIGNv bnRhaW5zIChzaW1kKSBjb250YWlucyAoIHNpbWQgKSAgISB7IGRnLWVycm9y ICInU0lNRCcgZGlyZWN0aXZlIG1lbnRpb25lZCBtdWx0aXBsZSB0aW1lcyBp biBDT05UQUlOUyBjbGF1c2UgaW4gIS5PTVAgQVNTVU1FIGRpcmVjdGl2ZSIg fQorICBibG9jaworICAgICEkb21wIHNpbWQKKyAgICBkbyBqID0gMSwgaQor ICAgICAgYShpKSA9IGoKKyAgICBlbmQgZG8KKyAgZW5kIGJsb2NrCisKKyAg ISRvbXAgYXNzdW1lIG5vX3BhcmFsbGVsaXNtLCBjb250YWlucyAoZXJyb3Ip IGFic2VudCAoZXJyb3IpICAhIHsgZGctZXJyb3IgIidFUlJPUicgZGlyZWN0 aXZlIG1lbnRpb25lZCBib3RoIHRpbWVzIGluIEFCU0VOVCBhbmQgQ09OVEFJ TlMgY2xhdXNlcyBpbiAhLk9NUCBBU1NVTUUgZGlyZWN0aXZlIiB9CisgIGlm IChpID49IDMyKSB0aGVuCisgICAgISRvbXAgZXJyb3IgYXQgKGV4ZWN1dGlv bikgbWVzc2FnZSAoIlNob3VsZCBub3QgaGFwcGVuIikKKyAgZW5kIGlmCish ICAhJG9tcCBlbmQgYXNzdW1lICAtIHNpbGVuY2U6ICdVbmV4cGVjdGVkICEk T01QIEVORCBBU1NVTUUgc3RhdGVtZW50JworCisgICEkb21wIGFzc3VtZSBo b2xkcyAoMS4wKSAgISB7IGRnLWVycm9yICJIT0xEUyBleHByZXNzaW9uIGF0 IC4xLiBtdXN0IGJlIGEgbG9naWNhbCBleHByZXNzaW9uIiB9CisgICEkb21w IGVuZCBhc3N1bWUKK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2Fzc3VtZXMtMS5mOTAgYi9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lcy0xLmY5MApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2Q0NjhkYzFjODEKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAv YXNzdW1lcy0xLmY5MApAQCAtMCwwICsxLDgyIEBACishIEFsbCBvZiB0aGUg Zm9sbG93aW5nICh1cCB0byBQUk9HUkFNKSBhcmUgb2theToKKyEKK3N1YnJv dXRpbmUgc3ViCisgIGludGVyZmFjZQorICAgIHN1YnJvdXRpbmUgc3ViX2l0 ZXJmYWNlKCkKKyAgICAgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1wX3JvdXRp bmVzIGFic2VudChzaW1kKSAhICBPSyBpbmZlcmZhY2Ugb2YgYW4gZXh0ZXJu YWwgc3Vicm91dGluZS9zdWJwcm9ncmFtCisgICAgZW5kCisgIGVuZCBpbnRl cmZhY2UKKyAgISRvbXAgYXNzdW1lcyBub19vcGVubXBfcm91dGluZXMgYWJz ZW50KHNpbWQpICEgIE9LIGV4dGVybmFsIHN1YnJvdXRpbmUvc3VicHJvZ3Jh bQorY29udGFpbnMKKyAgc3Vicm91dGluZSBpbm5lcl9zdWIKKyAgICAgISRv bXAgYXNzdW1lcyBub19wYXJhbGxlbGlzbSBhYnNlbnQodGVhbXMpICEgT0sg aW50ZXJuYWwgc3Vicm91dGluZS9zdWJwcm9ncmFtCisgIGVuZAorZW5kCisK K2ludGVnZXIgZnVuY3Rpb24gZnVuYyAoKQorICAhJG9tcCBhc3N1bWVzIG5v X29wZW5tcF9yb3V0aW5lcyBhYnNlbnQoc2ltZCkgISAgT0sgZXh0ZXJuYWwg ZnVuY3Rpb24vc3VicHJvZ3JhbQorICBpbnRlcmZhY2UKKyAgICBpbnRlZ2Vy IGZ1bmN0aW9uIGZ1bmNfaXRlcmZhY2UoKQorICAgICAgISRvbXAgYXNzdW1l cyBub19vcGVubXBfcm91dGluZXMgYWJzZW50KHNpbWQpICEgIE9LIGluZmVy ZmFjZSBvZiBhbiBleHRlcm5hbCBmdW5jdGlvbi9zdWJwcm9ncmFtCisgICAg ZW5kCisgIGVuZCBpbnRlcmZhY2UKKyAgZnVuYyA9IDAKK2NvbnRhaW5zCisg IGludGVnZXIgZnVuY3Rpb24gaW5uZXJfZnVuYygpCisgICAgICEkb21wIGFz c3VtZXMgbm9fcGFyYWxsZWxpc20gYWJzZW50KHRlYW1zKSAhIE9LIGludGVy bmFsIGZ1bmN0aW9uL3N1YnByb2dyYW0KKyAgICAgaW5uZXJfc3ViMiA9IDAK KyAgZW5kCitlbmQKKworbW9kdWxlIG0KKyAgaW50ZWdlciA6OnggCisgICEk b21wIGFzc3VtZXMgY29udGFpbnModGFyZ2V0KSBob2xkcyh4ID4gMC4wKQor CisgICAgaW50ZXJmYWNlCisgICAgICBzdWJyb3V0aW5lIG1vZF9tb2Rfc3Vi X2l0ZXJmYWNlKCkKKyAgICAgICAgISRvbXAgYXNzdW1lcyBub19vcGVubXBf cm91dGluZXMgYWJzZW50KHNpbWQpICEgIE9LIGluZmVyZmFjZSBvZiBhbiBl eHRlcm5hbCBzdWJyb3V0aW5lL3N1YnByb2dyYW0KKyAgICAgIGVuZAorICAg ICAgaW50ZWdlciBmdW5jdGlvbiBtb2RfbW9kX2Z1bmNfaXRlcmZhY2UoKQor ICAgICAgICAhJG9tcCBhc3N1bWVzIG5vX29wZW5tcF9yb3V0aW5lcyBhYnNl bnQoZXJyb3IpICEgIE9LIGluZmVyZmFjZSBvZiBhbiBleHRlcm5hbCBzdWJy b3V0aW5lL3N1YnByb2dyYW0KKyAgICAgIGVuZAorICAgIGVuZCBpbnRlcmZh Y2UKKworY29udGFpbnMKKyAgc3Vicm91dGluZSBtb2Rfc3ViCisgICAgaW50 ZXJmYWNlCisgICAgICBzdWJyb3V0aW5lIG1vZF9zdWJfaXRlcmZhY2UoKQor ICAgICAgICAhJG9tcCBhc3N1bWVzIG5vX29wZW5tcF9yb3V0aW5lcyBhYnNl bnQoc2ltZCkgISAgT0sgaW5mZXJmYWNlIG9mIGFuIGV4dGVybmFsIHN1YnJv dXRpbmUvc3VicHJvZ3JhbQorICAgICAgZW5kCisgICAgZW5kIGludGVyZmFj ZQorICAgICEkb21wIGFzc3VtZXMgbm9fb3Blbm1wX3JvdXRpbmVzIGFic2Vu dChzaW1kKSAhICBPSyBtb2R1bGUgc3Vicm91dGluZS9zdWJwcm9ncmFtCisg IGNvbnRhaW5zCisgICAgc3Vicm91dGluZSBtb2RfaW5uZXJfc3ViCisgICAg ICAgISRvbXAgYXNzdW1lcyBub19wYXJhbGxlbGlzbSBhYnNlbnQodGVhbXMp ICEgT0sgaW50ZXJuYWwgc3Vicm91dGluZS9zdWJwcm9ncmFtCisgICAgZW5k CisgIGVuZAorCisgIGludGVnZXIgZnVuY3Rpb24gbW9kX2Z1bmMgKCkKKyAg ICAhJG9tcCBhc3N1bWVzIG5vX29wZW5tcF9yb3V0aW5lcyBhYnNlbnQoc2lt ZCkgISAgT0sgbW9kdWxlIGZ1bmN0aW9uL3N1YnByb2dyYW0KKyAgICBpbnRl cmZhY2UKKyAgICAgIGludGVnZXIgZnVuY3Rpb24gbW9kX2Z1bmNfaXRlcmZh Y2UoKQorICAgICAgICAhJG9tcCBhc3N1bWVzIG5vX29wZW5tcF9yb3V0aW5l cyBhYnNlbnQoc2ltZCkgISAgT0sgaW5mZXJmYWNlIG9mIGFuIGV4dGVybmFs IGZ1bmN0aW9uL3N1YnByb2dyYW0KKyAgICAgIGVuZAorICAgIGVuZCBpbnRl cmZhY2UKKyAgICBtb2RfZnVuYyA9IDAKKyAgY29udGFpbnMKKyAgICBpbnRl Z2VyIGZ1bmN0aW9uIG1vZF9pbm5lcl9mdW5jKCkKKyAgICAgICAhJG9tcCBh c3N1bWVzIG5vX3BhcmFsbGVsaXNtIGFic2VudCh0ZWFtcykgISBPSyBpbnRl cm5hbCBmdW5jdGlvbi9zdWJwcm9ncmFtCisgICAgICAgbW9kX2lubmVyX3N1 YjIgPSAwCisgICAgZW5kCisgIGVuZAorZW5kIG1vZHVsZSBtCisKKworISBQ Uk9HUkFNIC0gaW52YWxpZCBhczoKKyEgIG1haW4gcHJvZ3JhbSBpcyBhIHBy b2dyYW0gdW5pdCB0aGF0IGlzIG5vdCBhIHN1YnByb2dyYW0KKyEkb21wIGFz c3VtZXMgbm9fb3Blbm1wIGFic2VudChzaW1kKSAgISB7IGRnLWVycm9yICJt dXN0IGJlIGluIHRoZSBzcGVjaWZpY2F0aW9uIHBhcnQgb2YgYSBzdWJwcm9n cmFtIG9yIG1vZHVsZSIgfQorICBibG9jaworICAgICEgaW52YWxpZDogYmxv Y2sKKyAgICAhJG9tcCBhc3N1bWVzIG5vX29wZW5tcCBhYnNlbnQodGFyZ2V0 KSAgISB7IGRnLWVycm9yICJtdXN0IGJlIGluIHRoZSBzcGVjaWZpY2F0aW9u IHBhcnQgb2YgYSBzdWJwcm9ncmFtIG9yIG1vZHVsZSIgfQorICBlbmQgYmxv Y2sKK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL2Fzc3VtZXMtMi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2dvbXAvYXNzdW1lcy0yLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNzI5Yzk3MzdhMWMKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYXNzdW1lcy0y LmY5MApAQCAtMCwwICsxLDE5IEBACittb2R1bGUgbQorICBpbnRlZ2VyIDo6 eCAKKyEgTm9uc2Vuc2UgYnV0IE9wZW5NUC1zZW1hbnRpY2FsbHkgdmFsaWQ6 CisgICEkb21wIGFzc3VtZXMgY29udGFpbnModGFyZ2V0KSBob2xkcyh4ID4g MC4wKQorICAhJG9tcCBhc3N1bWVzIGFic2VudCh0YXJnZXQpCisgICEkb21w IGFzc3VtZXMgaG9sZHMoMC4wKQorISB7IGRnLWVycm9yICJIT0xEUyBleHBy ZXNzaW9uIGF0IC4xLiBtdXN0IGJlIGEgbG9naWNhbCBleHByZXNzaW9uIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CitlbmQgbW9kdWxlCisKK21vZHVs ZSBtMgoraW50ZXJmYWNlCisgIHN1YnJvdXRpbmUgZm9vCisgICAgISRvbXAg YXNzdW1lcyBjb250YWlucyh0YXJnZXQpIGNvbnRhaW5zKHRlYW1zLHRhcmdl dCkgISB7IGRnLWVycm9yICInVEFSR0VUJyBkaXJlY3RpdmUgbWVudGlvbmVk IG11bHRpcGxlIHRpbWVzIGluIENPTlRBSU5TIGNsYXVzZSBpbiAhLk9NUCBB U1NVTUVTIGRpcmVjdGl2ZSIgfQorICAgICEkb21wIGFzc3VtZXMgYWJzZW50 KGRlY2xhcmUgdGFyZ2V0KSAhIHsgZGctZXJyb3IgIkludmFsaWQgJ0RFQ0xB UkUgVEFSR0VUJyBkaXJlY3RpdmUgYXQgLjEuIGluIEFCU0VOVCBjbGF1c2U6 IGRlY2xhcmF0aXZlLCBpbmZvcm1hdGlvbmFsIGFuZCBtZXRhIGRpcmVjdGl2 ZXMgbm90IHBlcm1pdHRlZCIgfQorICAgICEkb21wIGFzc3VtZXMgYWJzZW50 KHBhcmFsbGVsKSBhYnNlbnQoZG8sc2ltZCxwYXJhbGxlbCxkaXN0cmlidXRl KSAhIHsgZGctZXJyb3IgIidQQVJBTExFTCcgZGlyZWN0aXZlIG1lbnRpb25l ZCBtdWx0aXBsZSB0aW1lcyBpbiBBQlNFTlQgY2xhdXNlIGluICEuT01QIEFT U1VNRVMgZGlyZWN0aXZlIiB9CisgICAgISRvbXAgYXNzdW1lcyBjb250YWlu cyhiYXJyaWVyLGF0b21pYykgYWJzZW50KGNhbmNlbCxzaW1kLGF0b21pYyxk aXN0cmlidXRlKSAhIHsgZGctZXJyb3IgIidTSU1EJyBkaXJlY3RpdmUgbWVu dGlvbmVkIGJvdGggdGltZXMgaW4gQUJTRU5UIGFuZCBDT05UQUlOUyBjbGF1 c2VzIGluICEuT01QIEFTU1VNRVMgZGlyZWN0aXZlIiB9CisgIGVuZCBzdWJy b3V0aW5lIGZvbworZW5kIGludGVyZmFjZQorZW5kIG1vZHVsZSBtMgpkaWZm IC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLnRleGkgYi9saWJnb21wL2xpYmdv bXAudGV4aQppbmRleCBkMTcwNTk0OTIxZi4uZDhjNzk4Y2Y3YTEgMTAwNjQ0 Ci0tLSBhL2xpYmdvbXAvbGliZ29tcC50ZXhpCisrKyBiL2xpYmdvbXAvbGli Z29tcC50ZXhpCkBAIC0yODcsNyArMjg3LDcgQEAgVGhlIE9wZW5NUCA0LjUg c3BlY2lmaWNhdGlvbiBpcyBmdWxseSBzdXBwb3J0ZWQuCiAgICAgICBAY29k ZXthcHBlbmRfYXJnc30gQHRhYiBOIEB0YWIKIEBpdGVtIEBjb2Rle2Rpc3Bh dGNofSBjb25zdHJ1Y3QgQHRhYiBOIEB0YWIKIEBpdGVtIGRldmljZS1zcGVj aWZpYyBJQ1Ygc2V0dGluZ3Mgd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMg QHRhYiBZIEB0YWIKLUBpdGVtIEBjb2Rle2Fzc3VtZX0gZGlyZWN0aXZlIEB0 YWIgUCBAdGFiIE9ubHkgQy9DKysKK0BpdGVtIEBjb2Rle2Fzc3VtZX0gZGly ZWN0aXZlIEB0YWIgWSBAdGFiCiBAaXRlbSBAY29kZXtub3RoaW5nfSBkaXJl Y3RpdmUgQHRhYiBZIEB0YWIKIEBpdGVtIEBjb2Rle2Vycm9yfSBkaXJlY3Rp dmUgQHRhYiBZIEB0YWIKIEBpdGVtIEBjb2Rle21hc2tlZH0gY29uc3RydWN0 IEB0YWIgWSBAdGFiCg== --------------7Svl0KhUJfVKa5AXj0PAvSur--