From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id AC6A3385801D; Fri, 10 Dec 2021 17:39:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AC6A3385801D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: t+KNs9JhL9KQwwEdWuZ5297EBqfGI7iWp/gSZEWp1hyI/Boe1+96kpPSIgOJh51myLdhBLxBNx FdmIxXq1TtCKEq3DdGAQ6poM6di1HB9r1Axd1LIaHOfIYTmozlOsG0xvwb3K+Xh+Hh3X7xL1zv JJ7BAg6Py57jbL8m/oGQNS8VRajI3XPgjEd+hdvV4PhFQvHYS0vkM08FDfsYCZqT2hyRhi95Bw ccoXeFK5EmKn/vcZsScGHbIOiXIgApDqSLsxiVXkqGlrkzEBYS5w4SJFXVuIWOkaa4lUK4yN0/ PEElr1TvUNCrE9HNOezYeZtY X-IronPort-AV: E=Sophos;i="5.88,196,1635235200"; d="scan'208,223";a="72064323" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 10 Dec 2021 09:39:50 -0800 IronPort-SDR: P1cTAH/LdBA5M6txm3saAGhyP5IAVLlDWqIktg8pBsY1Y+UYQOWbNhKepT8SSgVPbgCKNvVb5j ziDoKz6s0Yx9m7T3JwUMJ9e3uEhsuvaPzCcP2oqblWCxktAqYJMVpcehi/8d0Esw5DJTge5skZ h5frDFLLuNlKr3tti+TMumIsInCoKr6BOnwXqm4niCAQErtmzow/qDIsiXL8iaGBmqh2mjJvI5 ZL8dDlYc9sw38dDbycm4ln72lIViOfRFMctfq2rSNiD7Aje8YqzNL/ey2xOD7d6JdjTPvDrxHP y1k= Content-Type: multipart/mixed; boundary="------------fGX6oySdFFbCF0HTil9TOV4j" Message-ID: <88facbcc-5be6-5c3b-1e73-f5ceba75ef6f@codesourcery.com> Date: Fri, 10 Dec 2021 17:39:17 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 References: Subject: [PATCH 6/7] openmp, fortran: Add Fortran support for parsing metadirectives To: gcc-patches , fortran , Jakub Jelinek , Tobias Burnus From: Kwok Cheung Yeung In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-05.mgc.mentorg.com (139.181.222.5) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Dec 2021 17:39:56 -0000 --------------fGX6oySdFFbCF0HTil9TOV4j Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit This patch implements metadirective parsing in the Fortran frontend. The code previously used to process context selectors in 'declare variant' is refactored so that it can be reused in metadirectives. The big case lists in parse_executable are moved into macros, since parse_omp_metadirective_body needs to know how to act depending on the type of directive variant. The selection of end statements in parse_omp_do and parse_omp_structured_block are also delegated to gfc_omp_end_stmt. Labels in directive variant bodies are handled by assigning a unique number to each statement body parsed in a metadirective, and adding this number as a field to gfc_st_label, such that labels with identical numbers but different region ids are considered different. I have also reverted my previous changes to the TREE_STRING_LENGTH check in omp_check_context_selector and omp_context_name_list_prop. This is because in the accel compiler, lang_GNU_Fortran returns 0 even when the code is in Fortran, resulting in the selector failing to match. Instead, I opted to increment the TREE_STRING_LENGTH when it is created in gfc_trans_omp_set_selector - this should be safe as it is an internal implementation detail not visible to end users. Kwok --------------fGX6oySdFFbCF0HTil9TOV4j Content-Type: text/plain; charset="UTF-8"; name="0006-openmp-fortran-Add-Fortran-support-for-parsing-metad.patch" Content-Disposition: attachment; filename*0="0006-openmp-fortran-Add-Fortran-support-for-parsing-metad.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlZWQ4YTA2ZmNhMzk3ZWRkNWZiNDUxZjA4YzhiMWE2ZjdkNjc5NTFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IE1vbiwgNiBEZWMgMjAyMSAyMjo1OTozNiArMDAwMApTdWJqZWN0 OiBbUEFUQ0ggNi83XSBvcGVubXAsIGZvcnRyYW46IEFkZCBGb3J0cmFuIHN1cHBvcnQgZm9y IHBhcnNpbmcKIG1ldGFkaXJlY3RpdmVzCgpUaGlzIGFkZHMgc3VwcG9ydCBmb3IgcGFyc2lu ZyBPcGVuTVAgbWV0YWRpcmVjdGl2ZXMgaW4gdGhlIEZvcnRyYW4gZnJvbnQgZW5kLgoKMjAy MS0xMi0xMCAgS3dvayBDaGV1bmcgWWV1bmcgIDxrY3lAY29kZXNvdXJjZXJ5LmNvbT4KCgln Y2MvCgkqIG9tcC1nZW5lcmFsLmMgKG9tcF9jaGVja19jb250ZXh0X3NlbGVjdG9yKTogUmV2 ZXJ0IHN0cmluZyBsZW5ndGgKCWNoZWNrLgoJKG9tcF9jb250ZXh0X25hbWVfbGlzdF9wcm9w KTogTGlrZXdpc2UuCgoJZ2NjL2ZvcnRyYW4vCgkqIGRlY2wuYyAoZ2ZjX21hdGNoX2VuZCk6 IEhhbmRsZSBDT01QX09NUF9NRVRBRElSRUNUSVZFIGFuZAoJQ09NUF9PTVBfQkVHSU5fTUVU QURJUkVDVElWRS4KCSogZHVtcC1wYXJzZS10cmVlLmMgKHNob3dfb21wX25vZGUpOiBIYW5k bGUgRVhFQ19PTVBfTUVUQURJUkVDVElWRS4KCShzaG93X2NvZGVfbm9kZSk6IEhhbmRsZSBF WEVDX09NUF9NRVRBRElSRUNUSVZFLgoJKiBnZm9ydHJhbi5oIChlbnVtIGdmY19zdGF0ZW1l bnQpOiBBZGQgU1RfT01QX01FVEFESVJFQ1RJVkUsCglTVF9PTVBfQkVHSU5fTUVUQURJUkVD VElWRSBhbmQgU1RfT01QX0VORF9NRVRBRElSRUNUSVZFLgoJKHN0cnVjdCBnZmNfb21wX21l dGFkaXJlY3RpdmVfY2xhdXNlKTogTmV3IHN0cnVjdHVyZS4KCShnZmNfZ2V0X29tcF9tZXRh ZGlyZWN0aXZlX2NsYXVzZSk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgZ2ZjX3N0X2xhYmVsKTog QWRkIG9tcF9yZWdpb24gZmllbGQuCgkoZW51bSBnZmNfZXhlY19vcCk6IEFkZCBFWEVDX09N UF9NRVRBRElSRUNUSVZFLgoJKHN0cnVjdCBnZmNfY29kZSk6IEFkZCBvbXBfbWV0YWRpcmVj dGl2ZV9jbGF1c2VzIGZpZWxkLgoJKGdmY19mcmVlX29tcF9tZXRhZGlyZWN0aXZlX2NsYXVz ZXMpOiBOZXcgcHJvdG90eXBlLgoJKG1hdGNoX29tcF9kaXJlY3RpdmUpOiBOZXcgcHJvdG90 eXBlLgoJKiBpby5jIChmb3JtYXRfYXN0ZXJpc2spOiBJbml0aWFsaXplIG9tcF9yZWdpb24g ZmllbGQuCgkqIG1hdGNoLmggKGdmY19tYXRjaF9vbXBfYmVnaW5fbWV0YWRpcmVjdGl2ZSk6 IE5ldyBwcm90b3R5cGUuCgkoZ2ZjX21hdGNoX29tcF9tZXRhZGlyZWN0aXZlKTogTmV3IHBy b3RvdHlwZS4KCSogb3Blbm1wLmMgKGdmY19tYXRjaF9vbXBfZW9zKTogTWF0Y2ggJyknIGlu IGNvbnRleHQgc2VsZWN0b3JzLgoJKGdmY19mcmVlX29tcF9tZXRhZGlyZWN0aXZlX2NsYXVz ZXMpOiBOZXcuCgkoZ2ZjX21hdGNoX29tcF9jbGF1c2VzKTogUmVtb3ZlIGNvbnRleHRfc2Vs ZWN0b3IgYXJndW1lbnQuICBSZWx5IG9uCglnZmNfbWF0Y2hfb21wX2VvcyB0byBtYXRjaCBl bmQgb2YgY2xhdXNlcy4KCShtYXRjaF9vbXApOiBSZW1vdmUgZXh0cmEgYXJndW1lbnQgdG8g Z2ZjX21hdGNoX29tcF9jbGF1c2VzLgoJKGdmY19tYXRjaF9vbXBfY29udGV4dF9zZWxlY3Rv cik6IFJlbW92ZSBleHRyYSBhcmd1bWVudCB0bwoJZ2ZjX21hdGNoX29tcF9jbGF1c2VzLiAg U2V0IGdmY19tYXRjaGluZ19vbXBfY29udGV4dF9zZWxlY3RvcgoJYmVmb3JlIGNhbGwgdG8g Z2ZjX21hdGNoX29tcF9jbGF1c2VzIGFuZCByZXNldCBhZnRlci4KCShnZmNfbWF0Y2hfb21w X2NvbnRleHRfc2VsZWN0b3Jfc3BlY2lmaWNhdGlvbik6IE1vZGlmeSB0byB0YWtlIGEKCWdm Y19vbXBfc2V0X3NlbGVjdG9yKiogYXJndW1lbnQuCgkoZ2ZjX21hdGNoX29tcF9kZWNsYXJl X3ZhcmlhbnQpOiBQYXNzIHNldF9zZWxlY3RvcnMgdG8KCWdmY19tYXRjaF9vbXBfY29udGV4 dF9zZWxlY3Rvcl9zcGVjaWZpY2F0aW9uLgoJKG1hdGNoX29tcF9tZXRhZGlyZWN0aXZlKTog TmV3LgoJKGdmY19tYXRjaF9vbXBfYmVnaW5fbWV0YWRpcmVjdGl2ZSk6IE5ldy4KCShnZmNf bWF0Y2hfb21wX21ldGFkaXJlY3RpdmUpOiBOZXcuCgkocmVzb2x2ZV9vbXBfbWV0YWRpcmVj dGl2ZSk6IE5ldy4KCShnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZlKTogSGFuZGxlIEVYRUNf T01QX01FVEFESVJFQ1RJVkUuCgkqIHBhcnNlLmMgKGdmY19tYXRjaGluZ19vbXBfY29udGV4 dF9zZWxlY3Rvcik6IE5ldyB2YXJpYWJsZS4KCShnZmNfaW5fbWV0YWRpcmVjdGl2ZV9ib2R5 KTogTmV3IHZhcmlhYmxlLgoJKGdmY19vbXBfcmVnaW9uX2NvdW50KTogTmV3IHZhcmlhYmxl LgoJKGRlY29kZV9vbXBfZGlyZWN0aXZlKTogTWF0Y2ggJ2JlZ2luIG1ldGFkaXJlY3RpdmUn LAoJJ2VuZCBtZXRhZGlyZWN0aXZlJyBhbmQgJ21ldGFkaXJlY3RpdmUnLgoJKG1hdGNoX29t cF9kaXJlY3RpdmUpOiBOZXcuCgkoY2FzZV9vbXBfc3RydWN0dXJlZF9ibG9jayk6IE5ldy4K CShjYXNlX29tcF9kbyk6IE5ldy4KCShnZmNfYXNjaWlfc3RhdGVtZW50KTogSGFuZGxlIG1l dGFkaXJlY3RpdmUgc3RhdGVtZW50cy4KCShnZmNfb21wX2VuZF9zdG10KTogTmV3LgoJKHBh cnNlX29tcF9kbyk6IERlbGVnYXRlIHRvIGdmY19vbXBfZW5kX3N0bXQuCgkocGFyc2Vfb21w X3N0cnVjdHVyZWRfYmxvY2spOiBEZWxlZ2F0ZSB0byBnZmNfb21wX2VuZF9zdG10LiBIYW5k bGUKCVNUX09NUF9FTkRfTUVUQURJUkVDVElWRS4KCShwYXJzZV9vbXBfbWV0YWRpcmVjdGl2 ZV9ib2R5KTogTmV3LgoJKHBhcnNlX2V4ZWN1dGFibGUpOiBEZWxlZ2F0ZSB0byBjYXNlX29t cF9zdHJ1Y3R1cmVkX2Jsb2NrIGFuZAoJY2FzZV9vbXBfZG8uICBSZXR1cm4gYWZ0ZXIgb25l IHN0YXRlbWVudCBpZiBjb21waWxpbmcgcmVndWxhcgoJbWV0YWRpcmVjdGl2ZS4gIEhhbmRs ZSBtZXRhZGlyZWN0aXZlIHN0YXRlbWVudHMuCgkoZ2ZjX3BhcnNlX2ZpbGUpOiBSZXNldCBn ZmNfb21wX3JlZ2lvbl9jb3VudCwKCWdmY19pbl9tZXRhZGlyZWN0aXZlX2JvZHkgYW5kIGdm Y19tYXRjaGluZ19vbXBfY29udGV4dF9zZWxlY3Rvci4KCSogcGFyc2UuaCAoZW51bSBnZmNf Y29tcGlsZV9zdGF0ZSk6IEFkZCBDT01QX09NUF9NRVRBRElSRUNUSVZFIGFuZAoJQ09NUF9P TVBfQkVHSU5fTUVUQURJUkVDVElWRS4KCShnZmNfb21wX2VuZF9zdG10KTogTmV3IHByb3Rv dHlwZS4KCShnZmNfbWF0Y2hpbmdfb21wX2NvbnRleHRfc2VsZWN0b3IpOiBOZXcgZGVjbGFy YXRpb24uCgkoZ2ZjX2luX21ldGFkaXJlY3RpdmVfYm9keSk6IE5ldyBkZWNsYXJhdGlvbi4K CShnZmNfb21wX3JlZ2lvbl9jb3VudCk6IE5ldyBkZWNsYXJhdGlvbi4KCSogcmVzb2x2ZS5j IChnZmNfcmVzb2x2ZV9jb2RlKTogSGFuZGxlIEVYRUNfT01QX01FVEFESVJFQ1RJVkUuCgkq IHN0LmMgKGdmY19mcmVlX3N0YXRlbWVudCk6IEhhbmRsZSBFWEVDX09NUF9NRVRBRElSRUNU SVZFLgoJKiBzeW1ib2wuYyAoY29tcGFyZV9zdF9sYWJlbHMpOiBUYWtlIG9tcF9yZWdpb24g aW50byBhY2NvdW50LgoJKGdmY19nZXRfc3RfbGFiZWxzKTogSW5jb3Jwb3JhdGUgb21wX3Jl Z2lvbiBpbnRvIGxhYmVsLgoJKiB0cmFucy1kZWNsLmMgKGdmY19nZXRfbGFiZWxfZGVjbCk6 IEFkZCBvbXBfcmVnaW9uIGludG8gdHJhbnNsYXRlZAoJbGFiZWwgbmFtZS4KCSogdHJhbnMt b3Blbm1wLmMgKGdmY190cmFuc19vbXBfZGlyZWN0aXZlKTogSGFuZGxlCglFWEVDX09NUF9N RVRBRElSRUNUSVZFLgoJKGdmY190cmFuc19vbXBfc2V0X3NlbGVjdG9yKTogSG9pc3QgY29k ZSBmcm9tLi4uCgkoZ2ZjX3RyYW5zX29tcF9kZWNsYXJlX3ZhcmlhbnQpOiAuLi5oZXJlLgoJ KGdmY190cmFuc19vbXBfbWV0YWRpcmVjdGl2ZSk6IE5ldy4KCSogdHJhbnMtc3RtdC5oIChn ZmNfdHJhbnNfb21wX21ldGFkaXJlY3RpdmUpOiBOZXcgcHJvdG90eXBlLgoJKiB0cmFucy5j ICh0cmFuc19jb2RlKTogSGFuZGxlIEVYRUNfT01QX01FVEFESVJFQ1RJVkUuCi0tLQogZ2Nj L2ZvcnRyYW4vZGVjbC5jICAgICAgICAgICAgfCAgIDggKwogZ2NjL2ZvcnRyYW4vZHVtcC1w YXJzZS10cmVlLmMgfCAgMjAgKysKIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmggICAgICAgIHwg IDE3ICsrCiBnY2MvZm9ydHJhbi9pby5jICAgICAgICAgICAgICB8ICAgMiArLQogZ2NjL2Zv cnRyYW4vbWF0Y2guaCAgICAgICAgICAgfCAgIDIgKwogZ2NjL2ZvcnRyYW4vb3Blbm1wLmMg ICAgICAgICAgfCAyMjIgKysrKysrKysrKysrLS0KIGdjYy9mb3J0cmFuL3BhcnNlLmMgICAg ICAgICAgIHwgNTMyICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGdjYy9m b3J0cmFuL3BhcnNlLmggICAgICAgICAgIHwgICA4ICstCiBnY2MvZm9ydHJhbi9yZXNvbHZl LmMgICAgICAgICB8ICAxMiArCiBnY2MvZm9ydHJhbi9zdC5jICAgICAgICAgICAgICB8ICAg NCArCiBnY2MvZm9ydHJhbi9zeW1ib2wuYyAgICAgICAgICB8ICAxOCArLQogZ2NjL2ZvcnRy YW4vdHJhbnMtZGVjbC5jICAgICAgfCAgIDUgKy0KIGdjYy9mb3J0cmFuL3RyYW5zLW9wZW5t cC5jICAgIHwgMTkwICsrKysrKystLS0tLQogZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5oICAg ICAgfCAgIDEgKwogZ2NjL2ZvcnRyYW4vdHJhbnMuYyAgICAgICAgICAgfCAgIDEgKwogZ2Nj L29tcC1nZW5lcmFsLmMgICAgICAgICAgICAgfCAgIDUgKy0KIDE2IGZpbGVzIGNoYW5nZWQs IDcyOSBpbnNlcnRpb25zKCspLCAzMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vZGVjbC5jIGIvZ2NjL2ZvcnRyYW4vZGVjbC5jCmluZGV4IDQ5NzE2MzhmOWI2 Li5kNTBjM2VhMjI3NyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZGVjbC5jCisrKyBiL2dj Yy9mb3J0cmFuL2RlY2wuYwpAQCAtODMyMyw2ICs4MzIzLDggQEAgZ2ZjX21hdGNoX2VuZCAo Z2ZjX3N0YXRlbWVudCAqc3QpCiAKICAgICBjYXNlIENPTVBfQ09OVEFJTlM6CiAgICAgY2Fz ZSBDT01QX0RFUklWRURfQ09OVEFJTlM6CisgICAgY2FzZSBDT01QX09NUF9NRVRBRElSRUNU SVZFOgorICAgIGNhc2UgQ09NUF9PTVBfQkVHSU5fTUVUQURJUkVDVElWRToKICAgICAgIHN0 YXRlID0gZ2ZjX3N0YXRlX3N0YWNrLT5wcmV2aW91cy0+c3RhdGU7CiAgICAgICBibG9ja19u YW1lID0gZ2ZjX3N0YXRlX3N0YWNrLT5wcmV2aW91cy0+c3ltID09IE5VTEwKIAkJID8gTlVM TCA6IGdmY19zdGF0ZV9zdGFjay0+cHJldmlvdXMtPnN5bS0+bmFtZTsKQEAgLTg0NzUsNiAr ODQ3NywxMiBAQCBnZmNfbWF0Y2hfZW5kIChnZmNfc3RhdGVtZW50ICpzdCkKICAgICAgIGdm Y19mcmVlX2VudW1faGlzdG9yeSAoKTsKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBDT01Q X09NUF9CRUdJTl9NRVRBRElSRUNUSVZFOgorICAgICAgKnN0ID0gU1RfT01QX0VORF9NRVRB RElSRUNUSVZFOworICAgICAgdGFyZ2V0ID0gIiBtZXRhZGlyZWN0aXZlIjsKKyAgICAgIGVv c19vayA9IDA7CisgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICBnZmNfZXJy b3IgKCJVbmV4cGVjdGVkIEVORCBzdGF0ZW1lbnQgYXQgJUMiKTsKICAgICAgIGdvdG8gY2xl YW51cDsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jIGIvZ2Nj L2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmMKaW5kZXggMmFhNDRmZjg2NGMuLjRlYzY0YWQ1 ZWEzIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuYworKysgYi9n Y2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuYwpAQCAtMjAxNSw2ICsyMDE1LDcgQEAgc2hv d19vbXBfbm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNfT01Q X01BU1RFUjogbmFtZSA9ICJNQVNURVIiOyBicmVhazsKICAgICBjYXNlIEVYRUNfT01QX01B U1RFUl9UQVNLTE9PUDogbmFtZSA9ICJNQVNURVIgVEFTS0xPT1AiOyBicmVhazsKICAgICBj YXNlIEVYRUNfT01QX01BU1RFUl9UQVNLTE9PUF9TSU1EOiBuYW1lID0gIk1BU1RFUiBUQVNL TE9PUCBTSU1EIjsgYnJlYWs7CisgICAgY2FzZSBFWEVDX09NUF9NRVRBRElSRUNUSVZFOiBu YW1lID0gIk1FVEFESVJFQ1RJVkUiOyBicmVhazsKICAgICBjYXNlIEVYRUNfT01QX09SREVS RUQ6IG5hbWUgPSAiT1JERVJFRCI7IGJyZWFrOwogICAgIGNhc2UgRVhFQ19PTVBfREVQT0JK OiBuYW1lID0gIkRFUE9CSiI7IGJyZWFrOwogICAgIGNhc2UgRVhFQ19PTVBfUEFSQUxMRUw6 IG5hbWUgPSAiUEFSQUxMRUwiOyBicmVhazsKQEAgLTIyMDksNiArMjIxMCwyNCBAQCBzaG93 X29tcF9ub2RlIChpbnQgbGV2ZWwsIGdmY19jb2RlICpjKQogCSAgZCA9IGQtPmJsb2NrOwog CX0KICAgICB9CisgIGVsc2UgaWYgKGMtPm9wID09IEVYRUNfT01QX01FVEFESVJFQ1RJVkUp CisgICAgeworICAgICAgZ2ZjX29tcF9tZXRhZGlyZWN0aXZlX2NsYXVzZSAqY2xhdXNlID0g Yy0+ZXh0Lm9tcF9tZXRhZGlyZWN0aXZlX2NsYXVzZXM7CisKKyAgICAgIHdoaWxlIChjbGF1 c2UpCisJeworCSAgY29kZV9pbmRlbnQgKGxldmVsICsgMSwgMCk7CisJICBpZiAoY2xhdXNl LT5zZWxlY3RvcnMpCisJICAgIGZwdXRzICgiV0hFTiAoKVxuIiwgZHVtcGZpbGUpOworCSAg ZWxzZQorCSAgICBmcHV0cyAoIkRFRkFVTFQgKClcbiIsIGR1bXBmaWxlKTsKKwkgIC8qIFRP RE86IFByaW50IHNlbGVjdG9yLiAgKi8KKwkgIHNob3dfY29kZSAobGV2ZWwgKyAyLCBjbGF1 c2UtPmNvZGUpOworCSAgaWYgKGNsYXVzZS0+bmV4dCkKKwkgICAgZnB1dHMgKCJcbiIsIGR1 bXBmaWxlKTsKKwkgIGNsYXVzZSA9IGNsYXVzZS0+bmV4dDsKKwl9CisgICAgfQogICBlbHNl CiAgICAgc2hvd19jb2RlIChsZXZlbCArIDEsIGMtPmJsb2NrLT5uZXh0KTsKICAgaWYgKGMt Pm9wID09IEVYRUNfT01QX0FUT01JQykKQEAgLTMzMzUsNiArMzM1NCw3IEBAIHNob3dfY29k ZV9ub2RlIChpbnQgbGV2ZWwsIGdmY19jb2RlICpjKQogICAgIGNhc2UgRVhFQ19PTVBfTUFT VEVSOgogICAgIGNhc2UgRVhFQ19PTVBfTUFTVEVSX1RBU0tMT09QOgogICAgIGNhc2UgRVhF Q19PTVBfTUFTVEVSX1RBU0tMT09QX1NJTUQ6CisgICAgY2FzZSBFWEVDX09NUF9NRVRBRElS RUNUSVZFOgogICAgIGNhc2UgRVhFQ19PTVBfT1JERVJFRDoKICAgICBjYXNlIEVYRUNfT01Q X1BBUkFMTEVMOgogICAgIGNhc2UgRVhFQ19PTVBfUEFSQUxMRUxfRE86CmRpZmYgLS1naXQg YS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAppbmRl eCBlNWQyZGQ3OTcxZS4uNTAyNWRmMWJkYTIgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2dm b3J0cmFuLmgKKysrIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaApAQCAtMzE2LDYgKzMxNiw3 IEBAIGVudW0gZ2ZjX3N0YXRlbWVudAogICBTVF9PTVBfRU5EX1BBUkFMTEVMX01BU0tFRF9U QVNLTE9PUF9TSU1ELCBTVF9PTVBfTUFTS0VEX1RBU0tMT09QLAogICBTVF9PTVBfRU5EX01B U0tFRF9UQVNLTE9PUCwgU1RfT01QX01BU0tFRF9UQVNLTE9PUF9TSU1ELAogICBTVF9PTVBf RU5EX01BU0tFRF9UQVNLTE9PUF9TSU1ELCBTVF9PTVBfU0NPUEUsIFNUX09NUF9FTkRfU0NP UEUsCisgIFNUX09NUF9NRVRBRElSRUNUSVZFLCBTVF9PTVBfQkVHSU5fTUVUQURJUkVDVElW RSwgU1RfT01QX0VORF9NRVRBRElSRUNUSVZFLAogICBTVF9PTVBfRVJST1IsIFNUX05PTkUK IH07CiAKQEAgLTE2NTgsNiArMTY1OSwxNyBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfb21wX2Rl Y2xhcmVfdmFyaWFudAogZ2ZjX29tcF9kZWNsYXJlX3ZhcmlhbnQ7CiAjZGVmaW5lIGdmY19n ZXRfb21wX2RlY2xhcmVfdmFyaWFudCgpIFhDTkVXIChnZmNfb21wX2RlY2xhcmVfdmFyaWFu dCkKIAordHlwZWRlZiBzdHJ1Y3QgZ2ZjX29tcF9tZXRhZGlyZWN0aXZlX2NsYXVzZQorewor ICBzdHJ1Y3QgZ2ZjX29tcF9tZXRhZGlyZWN0aXZlX2NsYXVzZSAqbmV4dDsKKyAgbG9jdXMg d2hlcmU7IC8qIFdoZXJlIHRoZSBtZXRhZGlyZWN0aXZlIGNsYXVzZSBvY2N1cnJlZC4gICov CisKKyAgZ2ZjX29tcF9zZXRfc2VsZWN0b3IgKnNlbGVjdG9yczsKKyAgZW51bSBnZmNfc3Rh dGVtZW50IHN0bXQ7CisgIHN0cnVjdCBnZmNfY29kZSAqY29kZTsKKworfSBnZmNfb21wX21l dGFkaXJlY3RpdmVfY2xhdXNlOworI2RlZmluZSBnZmNfZ2V0X29tcF9tZXRhZGlyZWN0aXZl X2NsYXVzZSgpIFhDTkVXIChnZmNfb21wX21ldGFkaXJlY3RpdmVfY2xhdXNlKQogCiB0eXBl ZGVmIHN0cnVjdCBnZmNfb21wX3VkcgogewpAQCAtMTcwNiw2ICsxNzE4LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgZ2ZjX3N0X2xhYmVsCiAgIGxvY3VzIHdoZXJlOwogCiAgIGdmY19uYW1lc3Bh Y2UgKm5zOworICBpbnQgb21wX3JlZ2lvbjsKIH0KIGdmY19zdF9sYWJlbDsKIApAQCAtMjky Miw2ICsyOTM1LDcgQEAgZW51bSBnZmNfZXhlY19vcAogICBFWEVDX09NUF9UQVJHRVRfVEVB TVNfTE9PUCwgRVhFQ19PTVBfTUFTS0VELCBFWEVDX09NUF9QQVJBTExFTF9NQVNLRUQsCiAg IEVYRUNfT01QX1BBUkFMTEVMX01BU0tFRF9UQVNLTE9PUCwgRVhFQ19PTVBfUEFSQUxMRUxf TUFTS0VEX1RBU0tMT09QX1NJTUQsCiAgIEVYRUNfT01QX01BU0tFRF9UQVNLTE9PUCwgRVhF Q19PTVBfTUFTS0VEX1RBU0tMT09QX1NJTUQsIEVYRUNfT01QX1NDT1BFLAorICBFWEVDX09N UF9NRVRBRElSRUNUSVZFLAogICBFWEVDX09NUF9FUlJPUgogfTsKIApAQCAtMjk3OCw2ICsy OTkyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2ZjX2NvZGUKICAgICBnZmNfb21wX2NsYXVzZXMg Km9tcF9jbGF1c2VzOwogICAgIGNvbnN0IGNoYXIgKm9tcF9uYW1lOwogICAgIGdmY19vbXBf bmFtZWxpc3QgKm9tcF9uYW1lbGlzdDsKKyAgICBnZmNfb21wX21ldGFkaXJlY3RpdmVfY2xh dXNlICpvbXBfbWV0YWRpcmVjdGl2ZV9jbGF1c2VzOwogICAgIGJvb2wgb21wX2Jvb2w7CiAg IH0KICAgZXh0OwkJLyogUG9pbnRzIHRvIGFkZGl0aW9uYWwgc3RydWN0dXJlcyByZXF1aXJl ZCBieSBzdGF0ZW1lbnQgKi8KQEAgLTM1NTIsNiArMzU2Nyw3IEBAIHZvaWQgZ2ZjX2ZyZWVf b21wX2RlY2xhcmVfdmFyaWFudF9saXN0IChnZmNfb21wX2RlY2xhcmVfdmFyaWFudCAqbGlz dCk7CiB2b2lkIGdmY19mcmVlX29tcF9kZWNsYXJlX3NpbWQgKGdmY19vbXBfZGVjbGFyZV9z aW1kICopOwogdm9pZCBnZmNfZnJlZV9vbXBfZGVjbGFyZV9zaW1kX2xpc3QgKGdmY19vbXBf ZGVjbGFyZV9zaW1kICopOwogdm9pZCBnZmNfZnJlZV9vbXBfdWRyIChnZmNfb21wX3VkciAq KTsKK3ZvaWQgZ2ZjX2ZyZWVfb21wX21ldGFkaXJlY3RpdmVfY2xhdXNlcyAoZ2ZjX29tcF9t ZXRhZGlyZWN0aXZlX2NsYXVzZSAqKTsKIGdmY19vbXBfdWRyICpnZmNfb21wX3Vkcl9maW5k IChnZmNfc3ltdHJlZSAqLCBnZmNfdHlwZXNwZWMgKik7CiB2b2lkIGdmY19yZXNvbHZlX29t cF9kaXJlY3RpdmUgKGdmY19jb2RlICosIGdmY19uYW1lc3BhY2UgKik7CiB2b2lkIGdmY19y ZXNvbHZlX2RvX2l0ZXJhdG9yIChnZmNfY29kZSAqLCBnZmNfc3ltYm9sICosIGJvb2wpOwpA QCAtMzgyNyw2ICszODQzLDcgQEAgdm9pZCBkZWJ1ZyAoZ2ZjX2V4cHIgKik7CiBib29sIGdm Y19wYXJzZV9maWxlICh2b2lkKTsKIHZvaWQgZ2ZjX2dsb2JhbF91c2VkIChnZmNfZ3N5bWJv bCAqLCBsb2N1cyAqKTsKIGdmY19uYW1lc3BhY2UqIGdmY19idWlsZF9ibG9ja19ucyAoZ2Zj X25hbWVzcGFjZSAqKTsKK2dmY19zdGF0ZW1lbnQgbWF0Y2hfb21wX2RpcmVjdGl2ZSAodm9p ZCk7CiAKIC8qIGRlcGVuZGVuY3kuYyAqLwogaW50IGdmY19kZXBfY29tcGFyZV9mdW5jdGlv bnMgKGdmY19leHByICosIGdmY19leHByICosIGJvb2wpOwpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vaW8uYyBiL2djYy9mb3J0cmFuL2lvLmMKaW5kZXggZmM5N2RmNzllY2EuLmFkYjgx MWE0MjNjIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9pby5jCisrKyBiL2djYy9mb3J0cmFu L2lvLmMKQEAgLTI5LDcgKzI5LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4gIElmIG5vdCBzZWUKIAogZ2ZjX3N0X2xhYmVsCiBmb3JtYXRfYXN0ZXJpc2sg PSB7MCwgTlVMTCwgTlVMTCwgLTEsIFNUX0xBQkVMX0ZPUk1BVCwgU1RfTEFCRUxfRk9STUFU LCBOVUxMLAotCQkgICAwLCB7TlVMTCwgTlVMTH0sIE5VTEx9OworCQkgICAwLCB7TlVMTCwg TlVMTH0sIE5VTEwsIDB9OwogCiB0eXBlZGVmIHN0cnVjdAogewpkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vbWF0Y2guaCBiL2djYy9mb3J0cmFuL21hdGNoLmgKaW5kZXggZTkzNjhkYjI4 MWQuLmNmMGY3MTFmNGVjIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9tYXRjaC5oCisrKyBi L2djYy9mb3J0cmFuL21hdGNoLmgKQEAgLTE1MSw2ICsxNTEsNyBAQCBtYXRjaCBnZmNfbWF0 Y2hfb2FjY19yb3V0aW5lICh2b2lkKTsKIG1hdGNoIGdmY19tYXRjaF9vbXBfZW9zX2Vycm9y ICh2b2lkKTsKIG1hdGNoIGdmY19tYXRjaF9vbXBfYXRvbWljICh2b2lkKTsKIG1hdGNoIGdm Y19tYXRjaF9vbXBfYmFycmllciAodm9pZCk7CittYXRjaCBnZmNfbWF0Y2hfb21wX2JlZ2lu X21ldGFkaXJlY3RpdmUgKHZvaWQpOwogbWF0Y2ggZ2ZjX21hdGNoX29tcF9jYW5jZWwgKHZv aWQpOwogbWF0Y2ggZ2ZjX21hdGNoX29tcF9jYW5jZWxsYXRpb25fcG9pbnQgKHZvaWQpOwog bWF0Y2ggZ2ZjX21hdGNoX29tcF9jcml0aWNhbCAodm9pZCk7CkBAIC0xNzQsNiArMTc1LDcg QEAgbWF0Y2ggZ2ZjX21hdGNoX29tcF9tYXNrZWRfdGFza2xvb3Bfc2ltZCAodm9pZCk7CiBt YXRjaCBnZmNfbWF0Y2hfb21wX21hc3RlciAodm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21w X21hc3Rlcl90YXNrbG9vcCAodm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21wX21hc3Rlcl90 YXNrbG9vcF9zaW1kICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9vbXBfbWV0YWRpcmVjdGl2 ZSAodm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21wX25vdGhpbmcgKHZvaWQpOwogbWF0Y2gg Z2ZjX21hdGNoX29tcF9vcmRlcmVkICh2b2lkKTsKIG1hdGNoIGdmY19tYXRjaF9vbXBfb3Jk ZXJlZF9kZXBlbmQgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vb3Blbm1wLmMg Yi9nY2MvZm9ydHJhbi9vcGVubXAuYwppbmRleCA4NDZmZDdiNWM1YS4uMWE0MjNjOGUwNDEg MTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL29wZW5tcC5jCisrKyBiL2djYy9mb3J0cmFuL29w ZW5tcC5jCkBAIC0zMSw3ICszMSw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVkZSAidGFyZ2V0LW1lbW9yeS5oIiAgLyog Rm9yIGdmY19lbmNvZGVfY2hhcmFjdGVyLiAgKi8KIAogLyogTWF0Y2ggYW4gZW5kIG9mIE9w ZW5NUCBkaXJlY3RpdmUuICBFbmQgb2YgT3Blbk1QIGRpcmVjdGl2ZSBpcyBvcHRpb25hbAot ICAgd2hpdGVzcGFjZSwgZm9sbG93ZWQgYnkgJ1xuJyBvciBjb21tZW50ICchJy4gICovCisg ICB3aGl0ZXNwYWNlLCBmb2xsb3dlZCBieSAnXG4nIG9yIGNvbW1lbnQgJyEnLiAgSW4gdGhl IHNwZWNpYWwgY2FzZSB3aGVyZSBhCisgICBjb250ZXh0IHNlbGVjdG9yIGlzIGJlaW5nIG1h dGNoZWQsIG1hdGNoIGFnYWluc3QgJyknIGluc3RlYWQuICAqLwogCiBzdGF0aWMgbWF0Y2gK IGdmY19tYXRjaF9vbXBfZW9zICh2b2lkKQpAQCAtNDIsMTcgKzQzLDI1IEBAIGdmY19tYXRj aF9vbXBfZW9zICh2b2lkKQogICBvbGRfbG9jID0gZ2ZjX2N1cnJlbnRfbG9jdXM7CiAgIGdm Y19nb2JibGVfd2hpdGVzcGFjZSAoKTsKIAotICBjID0gZ2ZjX25leHRfYXNjaWlfY2hhciAo KTsKLSAgc3dpdGNoIChjKQorICBpZiAoZ2ZjX21hdGNoaW5nX29tcF9jb250ZXh0X3NlbGVj dG9yKQogICAgIHsKLSAgICBjYXNlICchJzoKLSAgICAgIGRvCi0JYyA9IGdmY19uZXh0X2Fz Y2lpX2NoYXIgKCk7Ci0gICAgICB3aGlsZSAoYyAhPSAnXG4nKTsKLSAgICAgIC8qIEZhbGwg dGhyb3VnaCAqLworICAgICAgaWYgKGdmY19wZWVrX2FzY2lpX2NoYXIgKCkgPT0gJyknKQor CXJldHVybiBNQVRDSF9ZRVM7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgYyA9IGdm Y19uZXh0X2FzY2lpX2NoYXIgKCk7CisgICAgICBzd2l0Y2ggKGMpCisJeworCWNhc2UgJyEn OgorCSAgZG8KKwkgICAgYyA9IGdmY19uZXh0X2FzY2lpX2NoYXIgKCk7CisJICB3aGlsZSAo YyAhPSAnXG4nKTsKKwkgIC8qIEZhbGwgdGhyb3VnaCAqLwogCi0gICAgY2FzZSAnXG4nOgot ICAgICAgcmV0dXJuIE1BVENIX1lFUzsKKwljYXNlICdcbic6CisJICByZXR1cm4gTUFUQ0hf WUVTOworCX0KICAgICB9CiAKICAgZ2ZjX2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOwpAQCAt MjQ4LDYgKzI1NywxOSBAQCBnZmNfZnJlZV9vbXBfdWRyIChnZmNfb21wX3VkciAqb21wX3Vk cikKICAgICB9CiB9CiAKKy8qIEZyZWUgY2xhdXNlcyBvZiBhbiAhJG9tcCBtZXRhZGlyZWN0 aXZlIGNvbnN0cnVjdC4gICovCisKK3ZvaWQKK2dmY19mcmVlX29tcF9tZXRhZGlyZWN0aXZl X2NsYXVzZXMgKGdmY19vbXBfbWV0YWRpcmVjdGl2ZV9jbGF1c2UgKmNsYXVzZSkKK3sKKyAg d2hpbGUgKGNsYXVzZSkKKyAgICB7CisgICAgICBnZmNfb21wX21ldGFkaXJlY3RpdmVfY2xh dXNlICpuZXh0X2NsYXVzZSA9IGNsYXVzZS0+bmV4dDsKKyAgICAgIGdmY19mcmVlX29tcF9z ZXRfc2VsZWN0b3JfbGlzdCAoY2xhdXNlLT5zZWxlY3RvcnMpOworICAgICAgZnJlZSAoY2xh dXNlKTsKKyAgICAgIGNsYXVzZSA9IG5leHRfY2xhdXNlOworICAgIH0KK30KIAogc3RhdGlj IGdmY19vbXBfdWRyICoKIGdmY19maW5kX29tcF91ZHIgKGdmY19uYW1lc3BhY2UgKm5zLCBj b25zdCBjaGFyICpuYW1lLCBnZmNfdHlwZXNwZWMgKnRzKQpAQCAtMTQzNCw4ICsxNDU2LDcg QEAgZ2ZjX21hdGNoX2R1cGxfYXRvbWljIChib29sIG5vdF9kdXBsLCBjb25zdCBjaGFyICpu YW1lKQogc3RhdGljIG1hdGNoCiBnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKGdmY19vbXBfY2xh dXNlcyAqKmNwLCBjb25zdCBvbXBfbWFzayBtYXNrLAogCQkgICAgICAgYm9vbCBmaXJzdCA9 IHRydWUsIGJvb2wgbmVlZHNfc3BhY2UgPSB0cnVlLAotCQkgICAgICAgYm9vbCBvcGVuYWNj ID0gZmFsc2UsIGJvb2wgY29udGV4dF9zZWxlY3RvciA9IGZhbHNlLAotCQkgICAgICAgYm9v bCBvcGVubXBfdGFyZ2V0ID0gZmFsc2UpCisJCSAgICAgICBib29sIG9wZW5hY2MgPSBmYWxz ZSwgYm9vbCBvcGVubXBfdGFyZ2V0ID0gZmFsc2UpCiB7CiAgIGJvb2wgZXJyb3IgPSBmYWxz ZTsKICAgZ2ZjX29tcF9jbGF1c2VzICpjID0gZ2ZjX2dldF9vbXBfY2xhdXNlcyAoKTsKQEAg LTI5ODIsOSArMzAwMyw3IEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1 c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAgICAgfQogCiBlbmQ6Ci0gIGlmIChl cnJvcgotICAgICAgfHwgKGNvbnRleHRfc2VsZWN0b3IgJiYgZ2ZjX3BlZWtfYXNjaWlfY2hh ciAoKSAhPSAnKScpCi0gICAgICB8fCAoIWNvbnRleHRfc2VsZWN0b3IgJiYgZ2ZjX21hdGNo X29tcF9lb3MgKCkgIT0gTUFUQ0hfWUVTKSkKKyAgaWYgKGVycm9yIHx8IGdmY19tYXRjaF9v bXBfZW9zICgpICE9IE1BVENIX1lFUykKICAgICB7CiAgICAgICBpZiAoIWdmY19lcnJvcl9m bGFnX3Rlc3QgKCkpCiAJZ2ZjX2Vycm9yICgiRmFpbGVkIHRvIG1hdGNoIGNsYXVzZSBhdCAl QyIpOwpAQCAtMzY1NSw3ICszNjc0LDcgQEAgc3RhdGljIG1hdGNoCiBtYXRjaF9vbXAgKGdm Y19leGVjX29wIG9wLCBjb25zdCBvbXBfbWFzayBtYXNrKQogewogICBnZmNfb21wX2NsYXVz ZXMgKmM7Ci0gIGlmIChnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKCZjLCBtYXNrLCB0cnVlLCB0 cnVlLCBmYWxzZSwgZmFsc2UsCisgIGlmIChnZmNfbWF0Y2hfb21wX2NsYXVzZXMgKCZjLCBt YXNrLCB0cnVlLCB0cnVlLCBmYWxzZSwKIAkJCSAgICAgb3AgPT0gRVhFQ19PTVBfVEFSR0VU KSAhPSBNQVRDSF9ZRVMpCiAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwogICBuZXdfc3Qub3Ag PSBvcDsKQEAgLTQ4MDQsMTQgKzQ4MjMsMTcgQEAgZ2ZjX21hdGNoX29tcF9jb250ZXh0X3Nl bGVjdG9yIChnZmNfb21wX3NldF9zZWxlY3RvciAqb3NzKQogCSAgICAgIGJyZWFrOwogCSAg ICBjYXNlIENUWF9QUk9QRVJUWV9TSU1EOgogCSAgICAgIHsKKwkJZ2ZjX21hdGNoaW5nX29t cF9jb250ZXh0X3NlbGVjdG9yID0gdHJ1ZTsKIAkJaWYgKGdmY19tYXRjaF9vbXBfY2xhdXNl cyAoJm90cC0+Y2xhdXNlcywKIAkJCQkJICAgT01QX0RFQ0xBUkVfU0lNRF9DTEFVU0VTLAot CQkJCQkgICB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCisJCQkJCSAgIHRydWUsIGZhbHNl LCBmYWxzZSkKIAkJICAgICE9IE1BVENIX1lFUykKIAkJICB7Ci0JCSAgZ2ZjX2Vycm9yICgi ZXhwZWN0ZWQgc2ltZCBjbGF1c2UgYXQgJUMiKTsKKwkJICAgIGdmY19tYXRjaGluZ19vbXBf Y29udGV4dF9zZWxlY3RvciA9IGZhbHNlOworCQkgICAgZ2ZjX2Vycm9yICgiZXhwZWN0ZWQg c2ltZCBjbGF1c2UgYXQgJUMiKTsKIAkJICAgIHJldHVybiBNQVRDSF9FUlJPUjsKIAkJICB9 CisJCWdmY19tYXRjaGluZ19vbXBfY29udGV4dF9zZWxlY3RvciA9IGZhbHNlOwogCQlicmVh azsKIAkgICAgICB9CiAJICAgIGRlZmF1bHQ6CkBAIC00ODU3LDcgKzQ4NzksNyBAQCBnZmNf bWF0Y2hfb21wX2NvbnRleHRfc2VsZWN0b3IgKGdmY19vbXBfc2V0X3NlbGVjdG9yICpvc3Mp CiAgICAgIHVzZXIgICovCiAKIG1hdGNoCi1nZmNfbWF0Y2hfb21wX2NvbnRleHRfc2VsZWN0 b3Jfc3BlY2lmaWNhdGlvbiAoZ2ZjX29tcF9kZWNsYXJlX3ZhcmlhbnQgKm9kdikKK2dmY19t YXRjaF9vbXBfY29udGV4dF9zZWxlY3Rvcl9zcGVjaWZpY2F0aW9uIChnZmNfb21wX3NldF9z ZWxlY3RvciAqKm9zc19oZWFkKQogewogICBkbwogICAgIHsKQEAgLTQ4OTcsOSArNDkxOSw5 IEBAIGdmY19tYXRjaF9vbXBfY29udGV4dF9zZWxlY3Rvcl9zcGVjaWZpY2F0aW9uIChnZmNf b21wX2RlY2xhcmVfdmFyaWFudCAqb2R2KQogCX0KIAogICAgICAgZ2ZjX29tcF9zZXRfc2Vs ZWN0b3IgKm9zcyA9IGdmY19nZXRfb21wX3NldF9zZWxlY3RvciAoKTsKLSAgICAgIG9zcy0+ bmV4dCA9IG9kdi0+c2V0X3NlbGVjdG9yczsKKyAgICAgIG9zcy0+bmV4dCA9ICpvc3NfaGVh ZDsKICAgICAgIG9zcy0+dHJhaXRfc2V0X3NlbGVjdG9yX25hbWUgPSBzZWxlY3Rvcl9zZXRz W2ldOwotICAgICAgb2R2LT5zZXRfc2VsZWN0b3JzID0gb3NzOworICAgICAgKm9zc19oZWFk ID0gb3NzOwogCiAgICAgICBpZiAoZ2ZjX21hdGNoX29tcF9jb250ZXh0X3NlbGVjdG9yIChv c3MpICE9IE1BVENIX1lFUykKIAlyZXR1cm4gTUFUQ0hfRVJST1I7CkBAIC01MDAwLDcgKzUw MjIsOCBAQCBnZmNfbWF0Y2hfb21wX2RlY2xhcmVfdmFyaWFudCAodm9pZCkKIAkgIHJldHVy biBNQVRDSF9FUlJPUjsKIAl9CiAKLSAgICAgIGlmIChnZmNfbWF0Y2hfb21wX2NvbnRleHRf c2VsZWN0b3Jfc3BlY2lmaWNhdGlvbiAob2R2KSAhPSBNQVRDSF9ZRVMpCisgICAgICBpZiAo Z2ZjX21hdGNoX29tcF9jb250ZXh0X3NlbGVjdG9yX3NwZWNpZmljYXRpb24gKCZvZHYtPnNl dF9zZWxlY3RvcnMpCisJICAhPSBNQVRDSF9ZRVMpCiAJcmV0dXJuIE1BVENIX0VSUk9SOwog CiAgICAgICBpZiAoZ2ZjX21hdGNoICgiICkiKSAhPSBNQVRDSF9ZRVMpCkBAIC01MDE2LDYg KzUwMzksMTQ1IEBAIGdmY19tYXRjaF9vbXBfZGVjbGFyZV92YXJpYW50ICh2b2lkKQogfQog CiAKK3N0YXRpYyBtYXRjaAorbWF0Y2hfb21wX21ldGFkaXJlY3RpdmUgKGJvb2wgYmVnaW5f cCkKK3sKKyAgbG9jdXMgb2xkX2xvYyA9IGdmY19jdXJyZW50X2xvY3VzOworICBnZmNfb21w X21ldGFkaXJlY3RpdmVfY2xhdXNlICpjbGF1c2VfaGVhZDsKKyAgZ2ZjX29tcF9tZXRhZGly ZWN0aXZlX2NsYXVzZSAqKm5leHRfY2xhdXNlID0gJmNsYXVzZV9oZWFkOworICBib29sIGRl ZmF1bHRfc2VlbiA9IGZhbHNlOworCisgIC8qIFBhcnNlIHRoZSBjb250ZXh0IHNlbGVjdG9y cy4gICovCisgIGZvciAoOzspCisgICAgeworICAgICAgYm9vbCBkZWZhdWx0X3AgPSBmYWxz ZTsKKyAgICAgIGdmY19vbXBfc2V0X3NlbGVjdG9yICpzZWxlY3RvcnMgPSBOVUxMOworCisg ICAgICBpZiAoZ2ZjX21hdGNoICgiIGRlZmF1bHQgKCAiKSA9PSBNQVRDSF9ZRVMpCisJZGVm YXVsdF9wID0gdHJ1ZTsKKyAgICAgIGVsc2UgaWYgKGdmY19tYXRjaF9lb3MgKCkgPT0gTUFU Q0hfWUVTKQorCWJyZWFrOworICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNoICgiIHdoZW4gKCAi KSAhPSBNQVRDSF9ZRVMpCisJeworCSAgZ2ZjX2Vycm9yICgiZXhwZWN0ZWQgJ2RlZmF1bHQn IG9yICd3aGVuJyBhdCAlQyIpOworCSAgZ2ZjX2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOwor CSAgcmV0dXJuIE1BVENIX0VSUk9SOworCX0KKworICAgICAgaWYgKGRlZmF1bHRfcCAmJiBk ZWZhdWx0X3NlZW4pCisJeworCSAgZ2ZjX2Vycm9yICgidGhlcmUgY2FuIG9ubHkgYmUgb25l IGRlZmF1bHQgY2xhdXNlIGluIGEgIgorCQkgICAgICJtZXRhZGlyZWN0aXZlIGF0ICVDIik7 CisJICBnZmNfY3VycmVudF9sb2N1cyA9IG9sZF9sb2M7CisJICByZXR1cm4gTUFUQ0hfRVJS T1I7CisJfQorCisgICAgICBpZiAoIWRlZmF1bHRfcCkKKwl7CisJICBpZiAoZ2ZjX21hdGNo X29tcF9jb250ZXh0X3NlbGVjdG9yX3NwZWNpZmljYXRpb24gKCZzZWxlY3RvcnMpCisJICAg ICAgIT0gTUFUQ0hfWUVTKQorCSAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisKKwkgIGlmIChn ZmNfbWF0Y2ggKCIgOiAiKSAhPSBNQVRDSF9ZRVMpCisJICAgIHsKKwkgICAgICBnZmNfZXJy b3IgKCJleHBlY3RlZCAnOicgYXQgJUMiKTsKKwkgICAgICBnZmNfY3VycmVudF9sb2N1cyA9 IG9sZF9sb2M7CisJICAgICAgcmV0dXJuIE1BVENIX0VSUk9SOworCSAgICB9CisKKwkgIGdm Y19jb21taXRfc3ltYm9scyAoKTsKKwl9CisKKyAgICAgIGdmY19tYXRjaGluZ19vbXBfY29u dGV4dF9zZWxlY3RvciA9IHRydWU7CisgICAgICBnZmNfc3RhdGVtZW50IGRpcmVjdGl2ZSA9 IG1hdGNoX29tcF9kaXJlY3RpdmUgKCk7CisgICAgICBnZmNfbWF0Y2hpbmdfb21wX2NvbnRl eHRfc2VsZWN0b3IgPSBmYWxzZTsKKworICAgICAgaWYgKGdmY19lcnJvcl9mbGFnX3Rlc3Qg KCkpCisJeworCSAgZ2ZjX2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOworCSAgcmV0dXJuIE1B VENIX0VSUk9SOworCX0KKworICAgICAgaWYgKGdmY19tYXRjaCAoIiApIikgIT0gTUFUQ0hf WUVTKQorCXsKKwkgIGdmY19lcnJvciAoIkV4cGVjdGVkICcpJyBhdCAlQyIpOworCSAgZ2Zj X2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOworCSAgcmV0dXJuIE1BVENIX0VSUk9SOworCX0K KworICAgICAgZ2ZjX2NvbW1pdF9zeW1ib2xzICgpOworCisgICAgICBpZiAoYmVnaW5fcCAm JiBkaXJlY3RpdmUgIT0gU1RfTk9ORQorCSAgJiYgZ2ZjX29tcF9lbmRfc3RtdCAoZGlyZWN0 aXZlKSA9PSBTVF9OT05FKQorCXsKKwkgIGdmY19lcnJvciAoInZhcmlhbnQgZGlyZWN0aXZl IHVzZWQgaW4gT01QIEJFR0lOIE1FVEFESVJFQ1RJVkUgIgorCQkgICAgICJhdCAlQyBtdXN0 IGhhdmUgYSBjb3JyZXNwb25kaW5nIGVuZCBkaXJlY3RpdmUiKTsKKwkgIGdmY19jdXJyZW50 X2xvY3VzID0gb2xkX2xvYzsKKwkgIHJldHVybiBNQVRDSF9FUlJPUjsKKwl9CisKKyAgICAg IGlmIChkZWZhdWx0X3ApCisJZGVmYXVsdF9zZWVuID0gdHJ1ZTsKKworICAgICAgZ2ZjX29t cF9tZXRhZGlyZWN0aXZlX2NsYXVzZSAqb21jID0gZ2ZjX2dldF9vbXBfbWV0YWRpcmVjdGl2 ZV9jbGF1c2UgKCk7CisgICAgICBvbWMtPnNlbGVjdG9ycyA9IHNlbGVjdG9yczsKKyAgICAg IG9tYy0+c3RtdCA9IGRpcmVjdGl2ZTsKKyAgICAgIGlmIChkaXJlY3RpdmUgPT0gU1RfTk9O RSkKKwl7CisJICAvKiBUaGUgZGlyZWN0aXZlIHdhcyBhICdub3RoaW5nJyBkaXJlY3RpdmUu ICAqLworCSAgb21jLT5jb2RlID0gZ2ZjX2dldF9jb2RlIChFWEVDX0NPTlRJTlVFKTsKKwkg IG9tYy0+Y29kZS0+ZXh0Lm9tcF9jbGF1c2VzID0gTlVMTDsKKwl9CisgICAgICBlbHNlCisJ eworCSAgb21jLT5jb2RlID0gZ2ZjX2dldF9jb2RlIChuZXdfc3Qub3ApOworCSAgb21jLT5j b2RlLT5leHQub21wX2NsYXVzZXMgPSBuZXdfc3QuZXh0Lm9tcF9jbGF1c2VzOworCSAgLyog UHJldmVudCB0aGUgT3Blbk1QIGNsYXVzZXMgZnJvbSBiZWluZyBmcmVlZCB2aWEgTkVXX1NU LiAgKi8KKwkgIG5ld19zdC5leHQub21wX2NsYXVzZXMgPSBOVUxMOworCX0KKworICAgICAg Km5leHRfY2xhdXNlID0gb21jOworICAgICAgbmV4dF9jbGF1c2UgPSAmb21jLT5uZXh0Owor ICAgIH0KKworICBpZiAoZ2ZjX21hdGNoX29tcF9lb3MgKCkgIT0gTUFUQ0hfWUVTKQorICAg IHsKKyAgICAgIGdmY19lcnJvciAoIlVuZXhwZWN0ZWQganVuayBhZnRlciBPTVAgTUVUQURJ UkVDVElWRSBhdCAlQyIpOworICAgICAgZ2ZjX2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOwor ICAgICAgcmV0dXJuIE1BVENIX0VSUk9SOworICAgIH0KKworICAvKiBBZGQgYSAnZGVmYXVs dCAobm90aGluZyknIGNsYXVzZSBpZiBubyBkZWZhdWx0IGlzIGV4cGxpY2l0bHkgZ2l2ZW4u ICAqLworICBpZiAoIWRlZmF1bHRfc2VlbikKKyAgICB7CisgICAgICBnZmNfb21wX21ldGFk aXJlY3RpdmVfY2xhdXNlICpvbWMgPSBnZmNfZ2V0X29tcF9tZXRhZGlyZWN0aXZlX2NsYXVz ZSAoKTsKKyAgICAgIG9tYy0+c3RtdCA9IFNUX05PTkU7CisgICAgICBvbWMtPmNvZGUgPSBn ZmNfZ2V0X2NvZGUgKEVYRUNfQ09OVElOVUUpOworICAgICAgb21jLT5jb2RlLT5leHQub21w X2NsYXVzZXMgPSBOVUxMOworICAgICAgb21jLT5zZWxlY3RvcnMgPSBOVUxMOworCisgICAg ICAqbmV4dF9jbGF1c2UgPSBvbWM7CisgICAgICBuZXh0X2NsYXVzZSA9ICZvbWMtPm5leHQ7 CisgICAgfQorCisgIG5ld19zdC5vcCA9IEVYRUNfT01QX01FVEFESVJFQ1RJVkU7CisgIG5l d19zdC5leHQub21wX21ldGFkaXJlY3RpdmVfY2xhdXNlcyA9IGNsYXVzZV9oZWFkOworCisg IHJldHVybiBNQVRDSF9ZRVM7Cit9CisKK21hdGNoCitnZmNfbWF0Y2hfb21wX2JlZ2luX21l dGFkaXJlY3RpdmUgKHZvaWQpCit7CisgIHJldHVybiBtYXRjaF9vbXBfbWV0YWRpcmVjdGl2 ZSAodHJ1ZSk7Cit9CisKK21hdGNoCitnZmNfbWF0Y2hfb21wX21ldGFkaXJlY3RpdmUgKHZv aWQpCit7CisgIHJldHVybiBtYXRjaF9vbXBfbWV0YWRpcmVjdGl2ZSAoZmFsc2UpOworfQor CiBtYXRjaAogZ2ZjX21hdGNoX29tcF90aHJlYWRwcml2YXRlICh2b2lkKQogewpAQCAtODQ4 Niw2ICs4NjQ4LDE5IEBAIHJlc29sdmVfb21wX2RvIChnZmNfY29kZSAqY29kZSkKICAgICB9 CiB9CiAKK3N0YXRpYyB2b2lkCityZXNvbHZlX29tcF9tZXRhZGlyZWN0aXZlIChnZmNfY29k ZSAqY29kZSwgZ2ZjX25hbWVzcGFjZSAqbnMpCit7CisgIGdmY19vbXBfbWV0YWRpcmVjdGl2 ZV9jbGF1c2UgKmNsYXVzZSA9IGNvZGUtPmV4dC5vbXBfbWV0YWRpcmVjdGl2ZV9jbGF1c2Vz OworCisgIHdoaWxlIChjbGF1c2UpCisgICAgeworICAgICAgZ2ZjX2NvZGUgKmNsYXVzZV9j b2RlID0gY2xhdXNlLT5jb2RlOworICAgICAgZ2ZjX3Jlc29sdmVfY29kZSAoY2xhdXNlX2Nv ZGUsIG5zKTsKKyAgICAgIGNsYXVzZSA9IGNsYXVzZS0+bmV4dDsKKyAgICB9Cit9CisKIAog c3RhdGljIGdmY19zdGF0ZW1lbnQKIG9tcF9jb2RlX3RvX3N0YXRlbWVudCAoZ2ZjX2NvZGUg KmNvZGUpCkBAIC05MTEzLDYgKzkyODgsOSBAQCBnZmNfcmVzb2x2ZV9vbXBfZGlyZWN0aXZl IChnZmNfY29kZSAqY29kZSwgZ2ZjX25hbWVzcGFjZSAqbnMpCiAgICAgICBjb2RlLT5leHQu b21wX2NsYXVzZXMtPmlmX3ByZXNlbnQgPSBmYWxzZTsKICAgICAgIHJlc29sdmVfb21wX2Ns YXVzZXMgKGNvZGUsIGNvZGUtPmV4dC5vbXBfY2xhdXNlcywgbnMpOwogICAgICAgYnJlYWs7 CisgICAgY2FzZSBFWEVDX09NUF9NRVRBRElSRUNUSVZFOgorICAgICAgcmVzb2x2ZV9vbXBf bWV0YWRpcmVjdGl2ZSAoY29kZSwgbnMpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK ICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3BhcnNlLmMg Yi9nY2MvZm9ydHJhbi9wYXJzZS5jCmluZGV4IDFmMTExMDkxYjBhLi5hOTZjODkyYzYwOCAx MDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vcGFyc2UuYworKysgYi9nY2MvZm9ydHJhbi9wYXJz ZS5jCkBAIC00MCw2ICs0MCwxMCBAQCBzdGF0aWMgam1wX2J1ZiBlb2ZfYnVmOwogZ2ZjX3N0 YXRlX2RhdGEgKmdmY19zdGF0ZV9zdGFjazsKIHN0YXRpYyBib29sIGxhc3Rfd2FzX3VzZV9z dG10ID0gZmFsc2U7CiAKK2Jvb2wgZ2ZjX21hdGNoaW5nX29tcF9jb250ZXh0X3NlbGVjdG9y OworYm9vbCBnZmNfaW5fbWV0YWRpcmVjdGl2ZV9ib2R5OworaW50IGdmY19vbXBfcmVnaW9u X2NvdW50OworCiAvKiBUT0RPOiBSZS1vcmRlciBmdW5jdGlvbnMgdG8ga2lsbCB0aGVzZSBm b3J3YXJkIGRlY2xzLiAgKi8KIHN0YXRpYyB2b2lkIGNoZWNrX3N0YXRlbWVudF9sYWJlbCAo Z2ZjX3N0YXRlbWVudCk7CiBzdGF0aWMgdm9pZCB1bmRvX25ld19zdGF0ZW1lbnQgKHZvaWQp OwpAQCAtODg5LDYgKzg5Myw4IEBAIGRlY29kZV9vbXBfZGlyZWN0aXZlICh2b2lkKQogICAg ICAgYnJlYWs7CiAgICAgY2FzZSAnYic6CiAgICAgICBtYXRjaG8gKCJiYXJyaWVyIiwgZ2Zj X21hdGNoX29tcF9iYXJyaWVyLCBTVF9PTVBfQkFSUklFUik7CisgICAgICBtYXRjaG8gKCJi ZWdpbiBtZXRhZGlyZWN0aXZlIiwgZ2ZjX21hdGNoX29tcF9iZWdpbl9tZXRhZGlyZWN0aXZl LAorCSAgICAgIFNUX09NUF9CRUdJTl9NRVRBRElSRUNUSVZFKTsKICAgICAgIGJyZWFrOwog ICAgIGNhc2UgJ2MnOgogICAgICAgbWF0Y2hvICgiY2FuY2VsbGF0aW9uJSBwb2ludCIsIGdm Y19tYXRjaF9vbXBfY2FuY2VsbGF0aW9uX3BvaW50LApAQCAtOTM2LDYgKzk0Miw4IEBAIGRl Y29kZV9vbXBfZGlyZWN0aXZlICh2b2lkKQogICAgICAgbWF0Y2hvICgiZW5kIG1hc3RlciB0 YXNrbG9vcCIsIGdmY19tYXRjaF9vbXBfZW9zX2Vycm9yLAogCSAgICAgIFNUX09NUF9FTkRf TUFTVEVSX1RBU0tMT09QKTsKICAgICAgIG1hdGNobyAoImVuZCBtYXN0ZXIiLCBnZmNfbWF0 Y2hfb21wX2Vvc19lcnJvciwgU1RfT01QX0VORF9NQVNURVIpOworICAgICAgbWF0Y2hvICgi ZW5kIG1ldGFkaXJlY3RpdmUiLCBnZmNfbWF0Y2hfb21wX2Vvc19lcnJvciwKKwkgICAgICBT VF9PTVBfRU5EX01FVEFESVJFQ1RJVkUpOwogICAgICAgbWF0Y2hzICgiZW5kIG9yZGVyZWQi LCBnZmNfbWF0Y2hfb21wX2Vvc19lcnJvciwgU1RfT01QX0VORF9PUkRFUkVEKTsKICAgICAg IG1hdGNocyAoImVuZCBwYXJhbGxlbCBkbyBzaW1kIiwgZ2ZjX21hdGNoX29tcF9lb3NfZXJy b3IsCiAJICAgICAgU1RfT01QX0VORF9QQVJBTExFTF9ET19TSU1EKTsKQEAgLTEwMTgsNiAr MTAyNiw4IEBAIGRlY29kZV9vbXBfZGlyZWN0aXZlICh2b2lkKQogICAgICAgbWF0Y2hvICgi bWFzdGVyIHRhc2tsb29wIiwgZ2ZjX21hdGNoX29tcF9tYXN0ZXJfdGFza2xvb3AsCiAJICAg ICAgU1RfT01QX01BU1RFUl9UQVNLTE9PUCk7CiAgICAgICBtYXRjaG8gKCJtYXN0ZXIiLCBn ZmNfbWF0Y2hfb21wX21hc3RlciwgU1RfT01QX01BU1RFUik7CisgICAgICBtYXRjaG8gKCJt ZXRhZGlyZWN0aXZlIiwgZ2ZjX21hdGNoX29tcF9tZXRhZGlyZWN0aXZlLAorCSAgICAgIFNU X09NUF9NRVRBRElSRUNUSVZFKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ24nOgogICAg ICAgbWF0Y2hvICgibm90aGluZyIsIGdmY19tYXRjaF9vbXBfbm90aGluZywgU1RfTk9ORSk7 CkBAIC0xMTQ2LDYgKzExNTYsMTAgQEAgZGVjb2RlX29tcF9kaXJlY3RpdmUgKHZvaWQpCiAJ Z2ZjX2Vycm9yX25vdyAoIlVuY2xhc3NpZmlhYmxlIE9wZW5NUCBkaXJlY3RpdmUgYXQgJUMi KTsKICAgICB9CiAKKyAgLyogSWYgcGFyc2luZyBhIG1ldGFkaXJlY3RpdmUsIGxldCB0aGUg Y2FsbGVyIGRlYWwgd2l0aCB0aGUgY2xlYW51cC4gICovCisgIGlmIChnZmNfbWF0Y2hpbmdf b21wX2NvbnRleHRfc2VsZWN0b3IpCisgICAgcmV0dXJuIFNUX05PTkU7CisKICAgcmVqZWN0 X3N0YXRlbWVudCAoKTsKIAogICBnZmNfZXJyb3JfcmVjb3ZlcnkgKCk7CkBAIC0xMjEzLDYg KzEyMjcsMTIgQEAgZGVjb2RlX29tcF9kaXJlY3RpdmUgKHZvaWQpCiAgIHJldHVybiBTVF9H RVRfRkNOX0NIQVJBQ1RFUklTVElDUzsKIH0KIAorZ2ZjX3N0YXRlbWVudAorbWF0Y2hfb21w X2RpcmVjdGl2ZSAodm9pZCkKK3sKKyAgcmV0dXJuIGRlY29kZV9vbXBfZGlyZWN0aXZlICgp OworfQorCiBzdGF0aWMgZ2ZjX3N0YXRlbWVudAogZGVjb2RlX2djY19hdHRyaWJ1dGUgKHZv aWQpCiB7CkBAIC0xNzM0LDYgKzE3NTQsNDMgQEAgbmV4dF9zdGF0ZW1lbnQgKHZvaWQpCiAg IGNhc2UgU1RfT01QX0RFQ0xBUkVfVkFSSUFOVDogXAogICBjYXNlIFNUX09NUF9SRVFVSVJF UzogY2FzZSBTVF9PQUNDX1JPVVRJTkU6IGNhc2UgU1RfT0FDQ19ERUNMQVJFCiAKKy8qIE9w ZW5NUCBzdGF0ZW1lbnRzIHRoYXQgYXJlIGZvbGxvd2VkIGJ5IGEgc3RydWN0dXJlZCBibG9j ay4gICovCisKKyNkZWZpbmUgY2FzZV9vbXBfc3RydWN0dXJlZF9ibG9jayBjYXNlIFNUX09N UF9QQVJBTExFTDogXAorICBjYXNlIFNUX09NUF9QQVJBTExFTF9NQVNLRUQ6IGNhc2UgU1Rf T01QX1BBUkFMTEVMX01BU1RFUjogXAorICBjYXNlIFNUX09NUF9QQVJBTExFTF9TRUNUSU9O UzogY2FzZSBTVF9PTVBfT1JERVJFRDogXAorICBjYXNlIFNUX09NUF9DUklUSUNBTDogY2Fz ZSBTVF9PTVBfTUFTS0VEOiBjYXNlIFNUX09NUF9NQVNURVI6IFwKKyAgY2FzZSBTVF9PTVBf U0NPUEU6IGNhc2UgU1RfT01QX1NFQ1RJT05TOiBjYXNlIFNUX09NUF9TSU5HTEU6IFwKKyAg Y2FzZSBTVF9PTVBfVEFSR0VUOiBjYXNlIFNUX09NUF9UQVJHRVRfREFUQTogY2FzZSBTVF9P TVBfVEFSR0VUX1BBUkFMTEVMOiBcCisgIGNhc2UgU1RfT01QX1RBUkdFVF9URUFNUzogY2Fz ZSBTVF9PTVBfVEVBTVM6IGNhc2UgU1RfT01QX1RBU0s6IFwKKyAgY2FzZSBTVF9PTVBfVEFT S0dST1VQOiBcCisgIGNhc2UgU1RfT01QX1dPUktTSEFSRTogY2FzZSBTVF9PTVBfUEFSQUxM RUxfV09SS1NIQVJFCisKKy8qIE9wZW5NUCBzdGF0ZW1lbnRzIHRoYXQgYXJlIGZvbGxvd2Vk IGJ5IGEgZG8gbG9vcC4gICovCisKKyNkZWZpbmUgY2FzZV9vbXBfZG8gY2FzZSBTVF9PTVBf RElTVFJJQlVURTogXAorICBjYXNlIFNUX09NUF9ESVNUUklCVVRFX1BBUkFMTEVMX0RPOiBc CisgIGNhc2UgU1RfT01QX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE9fU0lNRDogY2FzZSBTVF9P TVBfRElTVFJJQlVURV9TSU1EOiBcCisgIGNhc2UgU1RfT01QX0RPOiBjYXNlIFNUX09NUF9E T19TSU1EOiBjYXNlIFNUX09NUF9MT09QOiBcCisgIGNhc2UgU1RfT01QX1BBUkFMTEVMX0RP OiBjYXNlIFNUX09NUF9QQVJBTExFTF9ET19TSU1EOiBcCisgIGNhc2UgU1RfT01QX1BBUkFM TEVMX0xPT1A6IGNhc2UgU1RfT01QX1BBUkFMTEVMX01BU0tFRF9UQVNLTE9PUDogXAorICBj YXNlIFNUX09NUF9QQVJBTExFTF9NQVNLRURfVEFTS0xPT1BfU0lNRDogXAorICBjYXNlIFNU X09NUF9QQVJBTExFTF9NQVNURVJfVEFTS0xPT1A6IFwKKyAgY2FzZSBTVF9PTVBfUEFSQUxM RUxfTUFTVEVSX1RBU0tMT09QX1NJTUQ6IFwKKyAgY2FzZSBTVF9PTVBfTUFTS0VEX1RBU0tM T09QOiBjYXNlIFNUX09NUF9NQVNLRURfVEFTS0xPT1BfU0lNRDogXAorICBjYXNlIFNUX09N UF9NQVNURVJfVEFTS0xPT1A6IGNhc2UgU1RfT01QX01BU1RFUl9UQVNLTE9PUF9TSU1EOiBc CisgIGNhc2UgU1RfT01QX1NJTUQ6IFwKKyAgY2FzZSBTVF9PTVBfVEFSR0VUX1BBUkFMTEVM X0RPOiBjYXNlIFNUX09NUF9UQVJHRVRfUEFSQUxMRUxfRE9fU0lNRDogXAorICBjYXNlIFNU X09NUF9UQVJHRVRfUEFSQUxMRUxfTE9PUDogY2FzZSBTVF9PTVBfVEFSR0VUX1NJTUQ6IFwK KyAgY2FzZSBTVF9PTVBfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEU6IFwKKyAgY2FzZSBTVF9P TVBfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE86IFwKKyAgY2FzZSBTVF9P TVBfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE9fU0lNRDogXAorICBjYXNl IFNUX09NUF9UQVJHRVRfVEVBTVNfRElTVFJJQlVURV9TSU1EOiBjYXNlIFNUX09NUF9UQVJH RVRfVEVBTVNfTE9PUDogXAorICBjYXNlIFNUX09NUF9UQVNLTE9PUDogY2FzZSBTVF9PTVBf VEFTS0xPT1BfU0lNRDogXAorICBjYXNlIFNUX09NUF9URUFNU19ESVNUUklCVVRFOiBjYXNl IFNUX09NUF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVMX0RPOiBcCisgIGNhc2UgU1RfT01Q X1RFQU1TX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE9fU0lNRDogXAorICBjYXNlIFNUX09NUF9U RUFNU19ESVNUUklCVVRFX1NJTUQ6IGNhc2UgU1RfT01QX1RFQU1TX0xPT1AKKwogLyogQmxv Y2sgZW5kIHN0YXRlbWVudHMuICBFcnJvcnMgYXNzb2NpYXRlZCB3aXRoIGludGVyY2hhbmdp bmcgdGhlc2UKICAgIGFyZSBkZXRlY3RlZCBpbiBnZmNfbWF0Y2hfZW5kKCkuICAqLwogCkBA IC0yMzU3LDYgKzI0MTQsOSBAQCBnZmNfYXNjaWlfc3RhdGVtZW50IChnZmNfc3RhdGVtZW50 IHN0KQogICAgIGNhc2UgU1RfT01QX0JBUlJJRVI6CiAgICAgICBwID0gIiEkT01QIEJBUlJJ RVIiOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBTVF9PTVBfQkVHSU5fTUVUQURJUkVDVElW RToKKyAgICAgIHAgPSAiISRPTVAgQkVHSU4gTUVUQURJUkVDVElWRSI7CisgICAgICBicmVh azsKICAgICBjYXNlIFNUX09NUF9DQU5DRUw6CiAgICAgICBwID0gIiEkT01QIENBTkNFTCI7 CiAgICAgICBicmVhazsKQEAgLTI0NTAsNiArMjUxMCw5IEBAIGdmY19hc2NpaV9zdGF0ZW1l bnQgKGdmY19zdGF0ZW1lbnQgc3QpCiAgICAgY2FzZSBTVF9PTVBfRU5EX01BU1RFUl9UQVNL TE9PUF9TSU1EOgogICAgICAgcCA9ICIhJE9NUCBFTkQgTUFTVEVSIFRBU0tMT09QIFNJTUQi OwogICAgICAgYnJlYWs7CisgICAgY2FzZSBTVF9PTVBfRU5EX01FVEFESVJFQ1RJVkU6Cisg ICAgICBwID0gIiFPTVAgRU5EIE1FVEFESVJFQ1RJVkUiOworICAgICAgYnJlYWs7CiAgICAg Y2FzZSBTVF9PTVBfRU5EX09SREVSRUQ6CiAgICAgICBwID0gIiEkT01QIEVORCBPUkRFUkVE IjsKICAgICAgIGJyZWFrOwpAQCAtMjU5NCw2ICsyNjU3LDkgQEAgZ2ZjX2FzY2lpX3N0YXRl bWVudCAoZ2ZjX3N0YXRlbWVudCBzdCkKICAgICBjYXNlIFNUX09NUF9NQVNURVJfVEFTS0xP T1BfU0lNRDoKICAgICAgIHAgPSAiISRPTVAgTUFTVEVSIFRBU0tMT09QIFNJTUQiOwogICAg ICAgYnJlYWs7CisgICAgY2FzZSBTVF9PTVBfTUVUQURJUkVDVElWRToKKyAgICAgIHAgPSAi ISRPTVAgTUVUQURJUkVDVElWRSI7CisgICAgICBicmVhazsKICAgICBjYXNlIFNUX09NUF9P UkRFUkVEOgogICAgIGNhc2UgU1RfT01QX09SREVSRURfREVQRU5EOgogICAgICAgcCA9ICIh JE9NUCBPUkRFUkVEIjsKQEAgLTI4NDgsNiArMjkxNCw4IEBAIGFjY2VwdF9zdGF0ZW1lbnQg KGdmY19zdGF0ZW1lbnQgc3QpCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1RfRU5UUlk6 CisgICAgY2FzZSBTVF9PTVBfTUVUQURJUkVDVElWRToKKyAgICBjYXNlIFNUX09NUF9CRUdJ Tl9NRVRBRElSRUNUSVZFOgogICAgIGNhc2VfZXhlY3V0YWJsZToKICAgICBjYXNlX2V4ZWNf bWFya2VyczoKICAgICAgIGFkZF9zdGF0ZW1lbnQgKCk7CkBAIC01MTI0LDYgKzUxOTIsMTM4 IEBAIGxvb3A6CiAgIGFjY2VwdF9zdGF0ZW1lbnQgKHN0KTsKIH0KIAorLyogR2V0IHRoZSBj b3JyZXNwb25kaW5nIGVuZGluZyBzdGF0ZW1lbnQgdHlwZSBmb3IgdGhlIE9wZW5NUCBkaXJl Y3RpdmUKKyAgIE9NUF9TVC4gIElmIGl0IGRvZXMgbm90IGhhdmUgb25lLCByZXR1cm4gU1Rf Tk9ORS4gICovCisKK2dmY19zdGF0ZW1lbnQKK2dmY19vbXBfZW5kX3N0bXQgKGdmY19zdGF0 ZW1lbnQgb21wX3N0LAorCQkgIGJvb2wgb21wX2RvX3AsIGJvb2wgb21wX3N0cnVjdHVyZWRf cCkKK3sKKyAgaWYgKG9tcF9kb19wKQorICAgIHsKKyAgICAgIHN3aXRjaCAob21wX3N0KQor CXsKKwljYXNlIFNUX09NUF9ESVNUUklCVVRFOiByZXR1cm4gU1RfT01QX0VORF9ESVNUUklC VVRFOworCWNhc2UgU1RfT01QX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE86CisJICByZXR1cm4g U1RfT01QX0VORF9ESVNUUklCVVRFX1BBUkFMTEVMX0RPOworCWNhc2UgU1RfT01QX0RJU1RS SUJVVEVfUEFSQUxMRUxfRE9fU0lNRDoKKwkgIHJldHVybiBTVF9PTVBfRU5EX0RJU1RSSUJV VEVfUEFSQUxMRUxfRE9fU0lNRDsKKwljYXNlIFNUX09NUF9ESVNUUklCVVRFX1NJTUQ6CisJ ICByZXR1cm4gU1RfT01QX0VORF9ESVNUUklCVVRFX1NJTUQ7CisJY2FzZSBTVF9PTVBfRE86 IHJldHVybiBTVF9PTVBfRU5EX0RPOworCWNhc2UgU1RfT01QX0RPX1NJTUQ6IHJldHVybiBT VF9PTVBfRU5EX0RPX1NJTUQ7CisJY2FzZSBTVF9PTVBfTE9PUDogcmV0dXJuIFNUX09NUF9F TkRfTE9PUDsKKwljYXNlIFNUX09NUF9QQVJBTExFTF9ETzogcmV0dXJuIFNUX09NUF9FTkRf UEFSQUxMRUxfRE87CisJY2FzZSBTVF9PTVBfUEFSQUxMRUxfRE9fU0lNRDoKKwkgIHJldHVy biBTVF9PTVBfRU5EX1BBUkFMTEVMX0RPX1NJTUQ7CisJY2FzZSBTVF9PTVBfUEFSQUxMRUxf TE9PUDoKKwkgIHJldHVybiBTVF9PTVBfRU5EX1BBUkFMTEVMX0xPT1A7CisJY2FzZSBTVF9P TVBfU0lNRDogcmV0dXJuIFNUX09NUF9FTkRfU0lNRDsKKwljYXNlIFNUX09NUF9UQVJHRVRf UEFSQUxMRUxfRE86CisJICByZXR1cm4gU1RfT01QX0VORF9UQVJHRVRfUEFSQUxMRUxfRE87 CisJY2FzZSBTVF9PTVBfVEFSR0VUX1BBUkFMTEVMX0RPX1NJTUQ6CisJICByZXR1cm4gU1Rf T01QX0VORF9UQVJHRVRfUEFSQUxMRUxfRE9fU0lNRDsKKwljYXNlIFNUX09NUF9UQVJHRVRf UEFSQUxMRUxfTE9PUDoKKwkgIHJldHVybiBTVF9PTVBfRU5EX1RBUkdFVF9QQVJBTExFTF9M T09QOworCWNhc2UgU1RfT01QX1RBUkdFVF9TSU1EOiByZXR1cm4gU1RfT01QX0VORF9UQVJH RVRfU0lNRDsKKwljYXNlIFNUX09NUF9UQVJHRVRfVEVBTVNfRElTVFJJQlVURToKKwkgIHJl dHVybiBTVF9PTVBfRU5EX1RBUkdFVF9URUFNU19ESVNUUklCVVRFOworCWNhc2UgU1RfT01Q X1RBUkdFVF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVMX0RPOgorCSAgcmV0dXJuIFNUX09N UF9FTkRfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE87CisJY2FzZSBTVF9P TVBfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE9fU0lNRDoKKwkgIHJldHVy biBTVF9PTVBfRU5EX1RBUkdFVF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVMX0RPX1NJTUQ7 CisJY2FzZSBTVF9PTVBfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEVfU0lNRDoKKwkgIHJldHVy biBTVF9PTVBfRU5EX1RBUkdFVF9URUFNU19ESVNUUklCVVRFX1NJTUQ7CisJY2FzZSBTVF9P TVBfVEFSR0VUX1RFQU1TX0xPT1A6CisJICByZXR1cm4gU1RfT01QX0VORF9UQVJHRVRfVEVB TVNfTE9PUDsKKwljYXNlIFNUX09NUF9UQVNLTE9PUDogcmV0dXJuIFNUX09NUF9FTkRfVEFT S0xPT1A7CisJY2FzZSBTVF9PTVBfVEFTS0xPT1BfU0lNRDogcmV0dXJuIFNUX09NUF9FTkRf VEFTS0xPT1BfU0lNRDsKKwljYXNlIFNUX09NUF9NQVNLRURfVEFTS0xPT1A6IHJldHVybiBT VF9PTVBfRU5EX01BU0tFRF9UQVNLTE9PUDsKKwljYXNlIFNUX09NUF9NQVNLRURfVEFTS0xP T1BfU0lNRDoKKwkgIHJldHVybiBTVF9PTVBfRU5EX01BU0tFRF9UQVNLTE9PUF9TSU1EOwor CWNhc2UgU1RfT01QX01BU1RFUl9UQVNLTE9PUDogcmV0dXJuIFNUX09NUF9FTkRfTUFTVEVS X1RBU0tMT09QOworCWNhc2UgU1RfT01QX01BU1RFUl9UQVNLTE9PUF9TSU1EOgorCSAgcmV0 dXJuIFNUX09NUF9FTkRfTUFTVEVSX1RBU0tMT09QX1NJTUQ7CisJY2FzZSBTVF9PTVBfUEFS QUxMRUxfTUFTS0VEX1RBU0tMT09QOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfUEFSQUxMRUxf TUFTS0VEX1RBU0tMT09QOworCWNhc2UgU1RfT01QX1BBUkFMTEVMX01BU0tFRF9UQVNLTE9P UF9TSU1EOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfUEFSQUxMRUxfTUFTS0VEX1RBU0tMT09Q X1NJTUQ7CisJY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTVEVSX1RBU0tMT09QOgorCSAgcmV0 dXJuIFNUX09NUF9FTkRfUEFSQUxMRUxfTUFTVEVSX1RBU0tMT09QOworCWNhc2UgU1RfT01Q X1BBUkFMTEVMX01BU1RFUl9UQVNLTE9PUF9TSU1EOgorCSAgcmV0dXJuIFNUX09NUF9FTkRf UEFSQUxMRUxfTUFTVEVSX1RBU0tMT09QX1NJTUQ7CisJY2FzZSBTVF9PTVBfVEVBTVNfRElT VFJJQlVURToKKwkgIHJldHVybiBTVF9PTVBfRU5EX1RFQU1TX0RJU1RSSUJVVEU7CisJY2Fz ZSBTVF9PTVBfVEVBTVNfRElTVFJJQlVURV9QQVJBTExFTF9ETzoKKwkgIHJldHVybiBTVF9P TVBfRU5EX1RFQU1TX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE87CisJY2FzZSBTVF9PTVBfVEVB TVNfRElTVFJJQlVURV9QQVJBTExFTF9ET19TSU1EOgorCSAgcmV0dXJuIFNUX09NUF9FTkRf VEVBTVNfRElTVFJJQlVURV9QQVJBTExFTF9ET19TSU1EOworCWNhc2UgU1RfT01QX1RFQU1T X0RJU1RSSUJVVEVfU0lNRDoKKwkgIHJldHVybiBTVF9PTVBfRU5EX1RFQU1TX0RJU1RSSUJV VEVfU0lNRDsKKwljYXNlIFNUX09NUF9URUFNU19MT09QOgorCSAgcmV0dXJuIFNUX09NUF9F TkRfVEVBTVNfTE9PUDsKKwlkZWZhdWx0OgorCSAgYnJlYWs7CisJfQorICAgIH0KKworICBp ZiAob21wX3N0cnVjdHVyZWRfcCkKKyAgICB7CisgICAgICBzd2l0Y2ggKG9tcF9zdCkKKwl7 CisJY2FzZSBTVF9PTVBfUEFSQUxMRUw6CisJICByZXR1cm4gU1RfT01QX0VORF9QQVJBTExF TDsKKwljYXNlIFNUX09NUF9QQVJBTExFTF9NQVNLRUQ6CisJICByZXR1cm4gU1RfT01QX0VO RF9QQVJBTExFTF9NQVNLRUQ7CisJY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTVEVSOgorCSAg cmV0dXJuIFNUX09NUF9FTkRfUEFSQUxMRUxfTUFTVEVSOworCWNhc2UgU1RfT01QX1BBUkFM TEVMX1NFQ1RJT05TOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfUEFSQUxMRUxfU0VDVElPTlM7 CisJY2FzZSBTVF9PTVBfU0NPUEU6CisJICByZXR1cm4gU1RfT01QX0VORF9TQ09QRTsKKwlj YXNlIFNUX09NUF9TRUNUSU9OUzoKKwkgIHJldHVybiBTVF9PTVBfRU5EX1NFQ1RJT05TOwor CWNhc2UgU1RfT01QX09SREVSRUQ6CisJICByZXR1cm4gU1RfT01QX0VORF9PUkRFUkVEOwor CWNhc2UgU1RfT01QX0NSSVRJQ0FMOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfQ1JJVElDQUw7 CisJY2FzZSBTVF9PTVBfTUFTS0VEOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfTUFTS0VEOwor CWNhc2UgU1RfT01QX01BU1RFUjoKKwkgIHJldHVybiBTVF9PTVBfRU5EX01BU1RFUjsKKwlj YXNlIFNUX09NUF9TSU5HTEU6CisJICByZXR1cm4gU1RfT01QX0VORF9TSU5HTEU7CisJY2Fz ZSBTVF9PTVBfVEFSR0VUOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfVEFSR0VUOworCWNhc2Ug U1RfT01QX1RBUkdFVF9EQVRBOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfVEFSR0VUX0RBVEE7 CisJY2FzZSBTVF9PTVBfVEFSR0VUX1BBUkFMTEVMOgorCSAgcmV0dXJuIFNUX09NUF9FTkRf VEFSR0VUX1BBUkFMTEVMOworCWNhc2UgU1RfT01QX1RBUkdFVF9URUFNUzoKKwkgIHJldHVy biBTVF9PTVBfRU5EX1RBUkdFVF9URUFNUzsKKwljYXNlIFNUX09NUF9UQVNLOgorCSAgcmV0 dXJuIFNUX09NUF9FTkRfVEFTSzsKKwljYXNlIFNUX09NUF9UQVNLR1JPVVA6CisJICByZXR1 cm4gU1RfT01QX0VORF9UQVNLR1JPVVA7CisJY2FzZSBTVF9PTVBfVEVBTVM6CisJICByZXR1 cm4gU1RfT01QX0VORF9URUFNUzsKKwljYXNlIFNUX09NUF9URUFNU19ESVNUUklCVVRFOgor CSAgcmV0dXJuIFNUX09NUF9FTkRfVEVBTVNfRElTVFJJQlVURTsKKwljYXNlIFNUX09NUF9E SVNUUklCVVRFOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfRElTVFJJQlVURTsKKwljYXNlIFNU X09NUF9XT1JLU0hBUkU6CisJICByZXR1cm4gU1RfT01QX0VORF9XT1JLU0hBUkU7CisJY2Fz ZSBTVF9PTVBfUEFSQUxMRUxfV09SS1NIQVJFOgorCSAgcmV0dXJuIFNUX09NUF9FTkRfUEFS QUxMRUxfV09SS1NIQVJFOworCWNhc2UgU1RfT01QX0JFR0lOX01FVEFESVJFQ1RJVkU6CisJ ICByZXR1cm4gU1RfT01QX0VORF9NRVRBRElSRUNUSVZFOworCWRlZmF1bHQ6CisJICBicmVh azsKKwl9CisgICAgfQorCisgIHJldHVybiBTVF9OT05FOworfQogCiAvKiBQYXJzZSB0aGUg c3RhdGVtZW50cyBvZiBPcGVuTVAgZG8vcGFyYWxsZWwgZG8uICAqLwogCkBAIC01MTc0LDk0 ICs1Mzc0LDE2IEBAIHBhcnNlX29tcF9kbyAoZ2ZjX3N0YXRlbWVudCBvbXBfc3QpCiAgIHBv cF9zdGF0ZSAoKTsKIAogICBzdCA9IG5leHRfc3RhdGVtZW50ICgpOwotICBnZmNfc3RhdGVt ZW50IG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX0RPOwotICBzd2l0Y2ggKG9tcF9zdCkKLSAg ICB7Ci0gICAgY2FzZSBTVF9PTVBfRElTVFJJQlVURTogb21wX2VuZF9zdCA9IFNUX09NUF9F TkRfRElTVFJJQlVURTsgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfRElTVFJJQlVURV9QQVJB TExFTF9ETzoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX0RJU1RSSUJVVEVfUEFS QUxMRUxfRE87Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNUX09NUF9ESVNUUklCVVRFX1BB UkFMTEVMX0RPX1NJTUQ6Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9ESVNUUklC VVRFX1BBUkFMTEVMX0RPX1NJTUQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNUX09NUF9E SVNUUklCVVRFX1NJTUQ6Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9ESVNUUklC VVRFX1NJTUQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNUX09NUF9ETzogb21wX2VuZF9z dCA9IFNUX09NUF9FTkRfRE87IGJyZWFrOwotICAgIGNhc2UgU1RfT01QX0RPX1NJTUQ6IG9t cF9lbmRfc3QgPSBTVF9PTVBfRU5EX0RPX1NJTUQ7IGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X0xPT1A6IG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX0xPT1A7IGJyZWFrOwotICAgIGNhc2Ug U1RfT01QX1BBUkFMTEVMX0RPOiBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9QQVJBTExFTF9E TzsgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfUEFSQUxMRUxfRE9fU0lNRDoKLSAgICAgIG9t cF9lbmRfc3QgPSBTVF9PTVBfRU5EX1BBUkFMTEVMX0RPX1NJTUQ7Ci0gICAgICBicmVhazsK LSAgICBjYXNlIFNUX09NUF9QQVJBTExFTF9MT09QOgotICAgICAgb21wX2VuZF9zdCA9IFNU X09NUF9FTkRfUEFSQUxMRUxfTE9PUDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X1NJTUQ6IG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1NJTUQ7IGJyZWFrOwotICAgIGNhc2Ug U1RfT01QX1RBUkdFVF9QQVJBTExFTF9ETzoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBf RU5EX1RBUkdFVF9QQVJBTExFTF9ETzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X1RBUkdFVF9QQVJBTExFTF9ET19TSU1EOgotICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9F TkRfVEFSR0VUX1BBUkFMTEVMX0RPX1NJTUQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNU X09NUF9UQVJHRVRfUEFSQUxMRUxfTE9PUDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBf RU5EX1RBUkdFVF9QQVJBTExFTF9MT09QOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9P TVBfVEFSR0VUX1NJTUQ6IG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1RBUkdFVF9TSU1EOyBi cmVhazsKLSAgICBjYXNlIFNUX09NUF9UQVJHRVRfVEVBTVNfRElTVFJJQlVURToKLSAgICAg IG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1RBUkdFVF9URUFNU19ESVNUUklCVVRFOwotICAg ICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEVfUEFS QUxMRUxfRE86Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9UQVJHRVRfVEVBTVNf RElTVFJJQlVURV9QQVJBTExFTF9ETzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X1RBUkdFVF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVMX0RPX1NJTUQ6Ci0gICAgICBvbXBf ZW5kX3N0ID0gU1RfT01QX0VORF9UQVJHRVRfVEVBTVNfRElTVFJJQlVURV9QQVJBTExFTF9E T19TSU1EOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfVEFSR0VUX1RFQU1TX0RJ U1RSSUJVVEVfU0lNRDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1RBUkdFVF9U RUFNU19ESVNUUklCVVRFX1NJTUQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNUX09NUF9U QVJHRVRfVEVBTVNfTE9PUDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1RBUkdF VF9URUFNU19MT09QOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfVEFTS0xPT1A6 IG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1RBU0tMT09QOyBicmVhazsKLSAgICBjYXNlIFNU X09NUF9UQVNLTE9PUF9TSU1EOiBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9UQVNLTE9PUF9T SU1EOyBicmVhazsKLSAgICBjYXNlIFNUX09NUF9NQVNLRURfVEFTS0xPT1A6IG9tcF9lbmRf c3QgPSBTVF9PTVBfRU5EX01BU0tFRF9UQVNLTE9PUDsgYnJlYWs7Ci0gICAgY2FzZSBTVF9P TVBfTUFTS0VEX1RBU0tMT09QX1NJTUQ6Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VO RF9NQVNLRURfVEFTS0xPT1BfU0lNRDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X01BU1RFUl9UQVNLTE9PUDogb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfTUFTVEVSX1RBU0tM T09QOyBicmVhazsKLSAgICBjYXNlIFNUX09NUF9NQVNURVJfVEFTS0xPT1BfU0lNRDoKLSAg ICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX01BU1RFUl9UQVNLTE9PUF9TSU1EOwotICAg ICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTS0VEX1RBU0tMT09QOgot ICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfUEFSQUxMRUxfTUFTS0VEX1RBU0tMT09Q OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTS0VEX1RBU0tM T09QX1NJTUQ6Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9QQVJBTExFTF9NQVNL RURfVEFTS0xPT1BfU0lNRDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01QX1BBUkFM TEVMX01BU1RFUl9UQVNLTE9PUDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1BB UkFMTEVMX01BU1RFUl9UQVNLTE9PUDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X1BBUkFMTEVMX01BU1RFUl9UQVNLTE9PUF9TSU1EOgotICAgICAgb21wX2VuZF9zdCA9IFNU X09NUF9FTkRfUEFSQUxMRUxfTUFTVEVSX1RBU0tMT09QX1NJTUQ7Ci0gICAgICBicmVhazsK LSAgICBjYXNlIFNUX09NUF9URUFNU19ESVNUUklCVVRFOgotICAgICAgb21wX2VuZF9zdCA9 IFNUX09NUF9FTkRfVEVBTVNfRElTVFJJQlVURTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2Ug U1RfT01QX1RFQU1TX0RJU1RSSUJVVEVfUEFSQUxMRUxfRE86Ci0gICAgICBvbXBfZW5kX3N0 ID0gU1RfT01QX0VORF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVMX0RPOwotICAgICAgYnJl YWs7Ci0gICAgY2FzZSBTVF9PTVBfVEVBTVNfRElTVFJJQlVURV9QQVJBTExFTF9ET19TSU1E OgotICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfVEVBTVNfRElTVFJJQlVURV9QQVJB TExFTF9ET19TSU1EOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfVEVBTVNfRElT VFJJQlVURV9TSU1EOgotICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfVEVBTVNfRElT VFJJQlVURV9TSU1EOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfVEVBTVNfTE9P UDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1RFQU1TX0xPT1A7Ci0gICAgICBi cmVhazsKLSAgICBkZWZhdWx0OiBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gICAgfQorICBnZmNf c3RhdGVtZW50IG9tcF9lbmRfc3QgPSBnZmNfb21wX2VuZF9zdG10IChvbXBfc3QsIHRydWUs IGZhbHNlKTsKKyAgaWYgKG9tcF9zdCA9PSBTVF9OT05FKQorICAgIGdjY191bnJlYWNoYWJs ZSAoKTsKKworICAvKiBJZiBoYW5kbGluZyBhIG1ldGFkaXJlY3RpdmUgdmFyaWFudCwgdHJl YXQgJ29tcCBlbmQgbWV0YWRpcmVjdGl2ZScKKyAgICAgYXMgdGhlIGV4cGVjdGVkIGVuZCBz dGF0ZW1lbnQgZm9yIHRoZSBjdXJyZW50IGNvbnN0cnVjdC4gICovCisgIGlmIChzdCA9PSBT VF9PTVBfRU5EX01FVEFESVJFQ1RJVkUKKyAgICAgICYmIGdmY19zdGF0ZV9zdGFjay0+c3Rh dGUgPT0gQ09NUF9PTVBfQkVHSU5fTUVUQURJUkVDVElWRSkKKyAgICBzdCA9IG9tcF9lbmRf c3Q7CisKICAgaWYgKHN0ID09IG9tcF9lbmRfc3QpCiAgICAgewogICAgICAgaWYgKG5ld19z dC5vcCA9PSBFWEVDX09NUF9FTkRfTk9XQUlUKQpAQCAtNTQ5Niw3NyArNTYxOCw5IEBAIHBh cnNlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrIChnZmNfc3RhdGVtZW50IG9tcF9zdCwgYm9vbCB3 b3Jrc2hhcmVfc3RtdHNfb25seSkKICAgbnAtPm9wID0gY3AtPm9wOwogICBucC0+YmxvY2sg PSBOVUxMOwogCi0gIHN3aXRjaCAob21wX3N0KQotICAgIHsKLSAgICBjYXNlIFNUX09NUF9Q QVJBTExFTDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1BBUkFMTEVMOwotICAg ICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTS0VEOgotICAgICAgb21w X2VuZF9zdCA9IFNUX09NUF9FTkRfUEFSQUxMRUxfTUFTS0VEOwotICAgICAgYnJlYWs7Ci0g ICAgY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTVEVSOgotICAgICAgb21wX2VuZF9zdCA9IFNU X09NUF9FTkRfUEFSQUxMRUxfTUFTVEVSOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9P TVBfUEFSQUxMRUxfU0VDVElPTlM6Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9Q QVJBTExFTF9TRUNUSU9OUzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01QX1NDT1BF OgotICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfU0NPUEU7Ci0gICAgICBicmVhazsK LSAgICBjYXNlIFNUX09NUF9TRUNUSU9OUzoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBf RU5EX1NFQ1RJT05TOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfT1JERVJFRDoK LSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX09SREVSRUQ7Ci0gICAgICBicmVhazsK LSAgICBjYXNlIFNUX09NUF9DUklUSUNBTDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBf RU5EX0NSSVRJQ0FMOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfTUFTS0VEOgot ICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfTUFTS0VEOwotICAgICAgYnJlYWs7Ci0g ICAgY2FzZSBTVF9PTVBfTUFTVEVSOgotICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRf TUFTVEVSOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfU0lOR0xFOgotICAgICAg b21wX2VuZF9zdCA9IFNUX09NUF9FTkRfU0lOR0xFOwotICAgICAgYnJlYWs7Ci0gICAgY2Fz ZSBTVF9PTVBfVEFSR0VUOgotICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfVEFSR0VU OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfVEFSR0VUX0RBVEE6Ci0gICAgICBv bXBfZW5kX3N0ID0gU1RfT01QX0VORF9UQVJHRVRfREFUQTsKLSAgICAgIGJyZWFrOwotICAg IGNhc2UgU1RfT01QX1RBUkdFVF9QQVJBTExFTDoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9P TVBfRU5EX1RBUkdFVF9QQVJBTExFTDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X1RBUkdFVF9URUFNUzoKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX1RBUkdFVF9U RUFNUzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01QX1RBU0s6Ci0gICAgICBvbXBf ZW5kX3N0ID0gU1RfT01QX0VORF9UQVNLOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9P TVBfVEFTS0dST1VQOgotICAgICAgb21wX2VuZF9zdCA9IFNUX09NUF9FTkRfVEFTS0dST1VQ OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfVEVBTVM6Ci0gICAgICBvbXBfZW5k X3N0ID0gU1RfT01QX0VORF9URUFNUzsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1RfT01Q X1RFQU1TX0RJU1RSSUJVVEU6Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9URUFN U19ESVNUUklCVVRFOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVF9PTVBfRElTVFJJQlVU RToKLSAgICAgIG9tcF9lbmRfc3QgPSBTVF9PTVBfRU5EX0RJU1RSSUJVVEU7Ci0gICAgICBi cmVhazsKLSAgICBjYXNlIFNUX09NUF9XT1JLU0hBUkU6Ci0gICAgICBvbXBfZW5kX3N0ID0g U1RfT01QX0VORF9XT1JLU0hBUkU7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNUX09NUF9Q QVJBTExFTF9XT1JLU0hBUkU6Ci0gICAgICBvbXBfZW5kX3N0ID0gU1RfT01QX0VORF9QQVJB TExFTF9XT1JLU0hBUkU7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgZ2Nj X3VucmVhY2hhYmxlICgpOwotICAgIH0KKyAgb21wX2VuZF9zdCA9IGdmY19vbXBfZW5kX3N0 bXQgKG9tcF9zdCwgZmFsc2UsIHRydWUpOworICBpZiAob21wX3N0ID09IFNUX05PTkUpCisg ICAgZ2NjX3VucmVhY2hhYmxlICgpOwogCiAgIGJvb2wgYmxvY2tfY29uc3RydWN0ID0gZmFs c2U7CiAgIGdmY19uYW1lc3BhY2UgKm15X25zID0gTlVMTDsKQEAgLTU2NjUsNiArNTcxOSwx NCBAQCBwYXJzZV9vbXBfc3RydWN0dXJlZF9ibG9jayAoZ2ZjX3N0YXRlbWVudCBvbXBfc3Qs IGJvb2wgd29ya3NoYXJlX3N0bXRzX29ubHkpCiAJfQogICAgICAgZWxzZQogCXN0ID0gcGFy c2VfZXhlY3V0YWJsZSAoc3QpOworCisgICAgICAvKiBJZiBoYW5kbGluZyBhIG1ldGFkaXJl Y3RpdmUgdmFyaWFudCwgdHJlYXQgJ29tcCBlbmQgbWV0YWRpcmVjdGl2ZScKKwkgYXMgdGhl IGV4cGVjdGVkIGVuZCBzdGF0ZW1lbnQgZm9yIHRoZSBjdXJyZW50IGNvbnN0cnVjdC4gICov CisgICAgICBpZiAoc3QgPT0gU1RfT01QX0VORF9NRVRBRElSRUNUSVZFCisJICAmJiBnZmNf c3RhdGVfc3RhY2stPnByZXZpb3VzICE9IE5VTEwKKwkgICYmIGdmY19zdGF0ZV9zdGFjay0+ cHJldmlvdXMtPnN0YXRlID09IENPTVBfT01QX0JFR0lOX01FVEFESVJFQ1RJVkUpCisJc3Qg PSBvbXBfZW5kX3N0OworCiAgICAgICBpZiAoc3QgPT0gU1RfTk9ORSkKIAl1bmV4cGVjdGVk X2VvZiAoKTsKICAgICAgIGVsc2UgaWYgKHN0ID09IFNUX09NUF9TRUNUSU9OCkBAIC01NzM0 LDYgKzU3OTYsNzAgQEAgcGFyc2Vfb21wX3N0cnVjdHVyZWRfYmxvY2sgKGdmY19zdGF0ZW1l bnQgb21wX3N0LCBib29sIHdvcmtzaGFyZV9zdG10c19vbmx5KQogICByZXR1cm4gc3Q7CiB9 CiAKK3N0YXRpYyBnZmNfc3RhdGVtZW50CitwYXJzZV9vbXBfbWV0YWRpcmVjdGl2ZV9ib2R5 IChnZmNfc3RhdGVtZW50IG9tcF9zdCkKK3sKKyAgZ2ZjX29tcF9tZXRhZGlyZWN0aXZlX2Ns YXVzZSAqY2xhdXNlID0gbmV3X3N0LmV4dC5vbXBfbWV0YWRpcmVjdGl2ZV9jbGF1c2VzOwor ICBsb2N1cyBib2R5X2xvY3VzID0gZ2ZjX2N1cnJlbnRfbG9jdXM7CisKKyAgYWNjZXB0X3N0 YXRlbWVudCAob21wX3N0KTsKKworICBnZmNfc3RhdGVtZW50IG5leHRfc3QgPSBTVF9OT05F OworCisgIHdoaWxlIChjbGF1c2UpCisgICAgeworICAgICAgZ2ZjX2N1cnJlbnRfbG9jdXMg PSBib2R5X2xvY3VzOworICAgICAgZ2ZjX3N0YXRlX2RhdGEgczsKKyAgICAgIGJvb2wgd29y a3NoYXJlX3AgPSBjbGF1c2UtPnN0bXQgPT0gU1RfT01QX1dPUktTSEFSRQorCQkJIHx8IGNs YXVzZS0+c3RtdCA9PSBTVF9PTVBfUEFSQUxMRUxfV09SS1NIQVJFOworICAgICAgZW51bSBn ZmNfY29tcGlsZV9zdGF0ZSBuZXdfc3RhdGUgPQorCSAgKG9tcF9zdCA9PSBTVF9PTVBfTUVU QURJUkVDVElWRSkKKwkgICAgPyBDT01QX09NUF9NRVRBRElSRUNUSVZFIDogQ09NUF9PTVBf QkVHSU5fTUVUQURJUkVDVElWRTsKKworICAgICAgbmV3X3N0ID0gKmNsYXVzZS0+Y29kZTsK KyAgICAgIHB1c2hfc3RhdGUgKCZzLCBuZXdfc3RhdGUsIE5VTEwpOworCisgICAgICBnZmNf c3RhdGVtZW50IHN0OworICAgICAgYm9vbCBvbGRfaW5fbWV0YWRpcmVjdGl2ZV9ib2R5ID0g Z2ZjX2luX21ldGFkaXJlY3RpdmVfYm9keTsKKyAgICAgIGdmY19pbl9tZXRhZGlyZWN0aXZl X2JvZHkgPSB0cnVlOworCisgICAgICBnZmNfb21wX3JlZ2lvbl9jb3VudCsrOworICAgICAg c3dpdGNoIChjbGF1c2UtPnN0bXQpCisJeworCWNhc2Vfb21wX3N0cnVjdHVyZWRfYmxvY2s6 CisJICBzdCA9IHBhcnNlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrIChjbGF1c2UtPnN0bXQsIHdv cmtzaGFyZV9wKTsKKwkgIGJyZWFrOworCWNhc2Vfb21wX2RvOgorCSAgc3QgPSBwYXJzZV9v bXBfZG8gKGNsYXVzZS0+c3RtdCk7CisJICAvKiBUT0RPOiBEb2VzIHN0ID09IFNUX0lNUExJ RURfRU5ERE8gbmVlZCBzcGVjaWFsIGhhbmRsaW5nPyAgKi8KKwkgIGJyZWFrOworCWRlZmF1 bHQ6CisJICBhY2NlcHRfc3RhdGVtZW50IChjbGF1c2UtPnN0bXQpOworCSAgc3QgPSBwYXJz ZV9leGVjdXRhYmxlIChuZXh0X3N0YXRlbWVudCAoKSk7CisJICBicmVhazsKKwl9CisKKyAg ICAgIGdmY19pbl9tZXRhZGlyZWN0aXZlX2JvZHkgPSBvbGRfaW5fbWV0YWRpcmVjdGl2ZV9i b2R5OworCisgICAgICAqY2xhdXNlLT5jb2RlID0gKmdmY19zdGF0ZV9zdGFjay0+aGVhZDsK KyAgICAgIHBvcF9zdGF0ZSAoKTsKKworICAgICAgZ2ZjX2NvbW1pdF9zeW1ib2xzICgpOwor ICAgICAgZ2ZjX3dhcm5pbmdfY2hlY2sgKCk7CisgICAgICBpZiAoY2xhdXNlLT5uZXh0KQor CWdmY19jbGVhcl9uZXdfc3QgKCk7CisKKyAgICAgIC8qIFNhbml0eS1jaGVjayB0aGF0IGVh Y2ggY2xhdXNlIGZpbmlzaGVzIHBhcnNpbmcgYXQgdGhlIHNhbWUgcGxhY2UuICAqLworICAg ICAgaWYgKG5leHRfc3QgPT0gU1RfTk9ORSkKKwluZXh0X3N0ID0gc3Q7CisgICAgICBlbHNl CisJZ2NjX2Fzc2VydCAoc3QgPT0gbmV4dF9zdCk7CisKKyAgICAgIGNsYXVzZSA9IGNsYXVz ZS0+bmV4dDsKKyAgICB9CisKKyAgcmV0dXJuIG5leHRfc3Q7Cit9CiAKIC8qIEFjY2VwdCBh IHNlcmllcyBvZiBleGVjdXRhYmxlIHN0YXRlbWVudHMuICBXZSByZXR1cm4gdGhlIGZpcnN0 CiAgICBzdGF0ZW1lbnQgdGhhdCBkb2Vzbid0IGZpdCB0byB0aGUgY2FsbGVyLiAgQW55IGJs b2NrIHN0YXRlbWVudHMgYXJlCkBAIC01NzQ0LDEyICs1ODcwLDE5IEBAIHN0YXRpYyBnZmNf c3RhdGVtZW50CiBwYXJzZV9leGVjdXRhYmxlIChnZmNfc3RhdGVtZW50IHN0KQogewogICBp bnQgY2xvc2VfZmxhZzsKKyAgYm9vbCBvbmVfc3RtdF9wID0gZmFsc2U7CiAKICAgaWYgKHN0 ID09IFNUX05PTkUpCiAgICAgc3QgPSBuZXh0X3N0YXRlbWVudCAoKTsKIAogICBmb3IgKDs7 KQogICAgIHsKKyAgICAgIC8qIE9ubHkgcGFyc2Ugb25lIHN0YXRlbWVudCBmb3IgdGhlIGZv cm0gb2YgbWV0YWRpcmVjdGl2ZSB3aXRob3V0CisJIGFuIGV4cGxpY2l0IGJlZ2luLi5lbmQu ICAqLworICAgICAgaWYgKGdmY19zdGF0ZV9zdGFjay0+c3RhdGUgPT0gQ09NUF9PTVBfTUVU QURJUkVDVElWRSAmJiBvbmVfc3RtdF9wKQorCXJldHVybiBzdDsKKyAgICAgIG9uZV9zdG10 X3AgPSB0cnVlOworCiAgICAgICBjbG9zZV9mbGFnID0gY2hlY2tfZG9fY2xvc3VyZSAoKTsK ICAgICAgIGlmIChjbG9zZV9mbGFnKQogCXN3aXRjaCAoc3QpCkBAIC01ODU0LDY3ICs1OTg3 LDEzIEBAIHBhcnNlX2V4ZWN1dGFibGUgKGdmY19zdGF0ZW1lbnQgc3QpCiAJICBwYXJzZV9v YWNjX3N0cnVjdHVyZWRfYmxvY2sgKHN0KTsKIAkgIGJyZWFrOwogCi0JY2FzZSBTVF9PTVBf UEFSQUxMRUw6Ci0JY2FzZSBTVF9PTVBfUEFSQUxMRUxfTUFTS0VEOgotCWNhc2UgU1RfT01Q X1BBUkFMTEVMX01BU1RFUjoKLQljYXNlIFNUX09NUF9QQVJBTExFTF9TRUNUSU9OUzoKLQlj YXNlIFNUX09NUF9PUkRFUkVEOgotCWNhc2UgU1RfT01QX0NSSVRJQ0FMOgotCWNhc2UgU1Rf T01QX01BU0tFRDoKLQljYXNlIFNUX09NUF9NQVNURVI6Ci0JY2FzZSBTVF9PTVBfU0NPUEU6 Ci0JY2FzZSBTVF9PTVBfU0VDVElPTlM6Ci0JY2FzZSBTVF9PTVBfU0lOR0xFOgotCWNhc2Ug U1RfT01QX1RBUkdFVDoKLQljYXNlIFNUX09NUF9UQVJHRVRfREFUQToKLQljYXNlIFNUX09N UF9UQVJHRVRfUEFSQUxMRUw6Ci0JY2FzZSBTVF9PTVBfVEFSR0VUX1RFQU1TOgotCWNhc2Ug U1RfT01QX1RFQU1TOgotCWNhc2UgU1RfT01QX1RBU0s6Ci0JY2FzZSBTVF9PTVBfVEFTS0dS T1VQOgotCSAgc3QgPSBwYXJzZV9vbXBfc3RydWN0dXJlZF9ibG9jayAoc3QsIGZhbHNlKTsK LQkgIGNvbnRpbnVlOwotCi0JY2FzZSBTVF9PTVBfV09SS1NIQVJFOgotCWNhc2UgU1RfT01Q X1BBUkFMTEVMX1dPUktTSEFSRToKLQkgIHN0ID0gcGFyc2Vfb21wX3N0cnVjdHVyZWRfYmxv Y2sgKHN0LCB0cnVlKTsKKwljYXNlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrOgorCSAgc3QgPSBw YXJzZV9vbXBfc3RydWN0dXJlZF9ibG9jayAoc3QsCisJCQkJCSAgIHN0ID09IFNUX09NUF9X T1JLU0hBUkUKKwkJCQkJICAgfHwgc3QgPT0gU1RfT01QX1BBUkFMTEVMX1dPUktTSEFSRSk7 CiAJICBjb250aW51ZTsKIAotCWNhc2UgU1RfT01QX0RJU1RSSUJVVEU6Ci0JY2FzZSBTVF9P TVBfRElTVFJJQlVURV9QQVJBTExFTF9ETzoKLQljYXNlIFNUX09NUF9ESVNUUklCVVRFX1BB UkFMTEVMX0RPX1NJTUQ6Ci0JY2FzZSBTVF9PTVBfRElTVFJJQlVURV9TSU1EOgotCWNhc2Ug U1RfT01QX0RPOgotCWNhc2UgU1RfT01QX0RPX1NJTUQ6Ci0JY2FzZSBTVF9PTVBfTE9PUDoK LQljYXNlIFNUX09NUF9QQVJBTExFTF9ETzoKLQljYXNlIFNUX09NUF9QQVJBTExFTF9ET19T SU1EOgotCWNhc2UgU1RfT01QX1BBUkFMTEVMX0xPT1A6Ci0JY2FzZSBTVF9PTVBfUEFSQUxM RUxfTUFTS0VEX1RBU0tMT09QOgotCWNhc2UgU1RfT01QX1BBUkFMTEVMX01BU0tFRF9UQVNL TE9PUF9TSU1EOgotCWNhc2UgU1RfT01QX1BBUkFMTEVMX01BU1RFUl9UQVNLTE9PUDoKLQlj YXNlIFNUX09NUF9QQVJBTExFTF9NQVNURVJfVEFTS0xPT1BfU0lNRDoKLQljYXNlIFNUX09N UF9NQVNLRURfVEFTS0xPT1A6Ci0JY2FzZSBTVF9PTVBfTUFTS0VEX1RBU0tMT09QX1NJTUQ6 Ci0JY2FzZSBTVF9PTVBfTUFTVEVSX1RBU0tMT09QOgotCWNhc2UgU1RfT01QX01BU1RFUl9U QVNLTE9PUF9TSU1EOgotCWNhc2UgU1RfT01QX1NJTUQ6Ci0JY2FzZSBTVF9PTVBfVEFSR0VU X1BBUkFMTEVMX0RPOgotCWNhc2UgU1RfT01QX1RBUkdFVF9QQVJBTExFTF9ET19TSU1EOgot CWNhc2UgU1RfT01QX1RBUkdFVF9QQVJBTExFTF9MT09QOgotCWNhc2UgU1RfT01QX1RBUkdF VF9TSU1EOgotCWNhc2UgU1RfT01QX1RBUkdFVF9URUFNU19ESVNUUklCVVRFOgotCWNhc2Ug U1RfT01QX1RBUkdFVF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVMX0RPOgotCWNhc2UgU1Rf T01QX1RBUkdFVF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVMX0RPX1NJTUQ6Ci0JY2FzZSBT VF9PTVBfVEFSR0VUX1RFQU1TX0RJU1RSSUJVVEVfU0lNRDoKLQljYXNlIFNUX09NUF9UQVJH RVRfVEVBTVNfTE9PUDoKLQljYXNlIFNUX09NUF9UQVNLTE9PUDoKLQljYXNlIFNUX09NUF9U QVNLTE9PUF9TSU1EOgotCWNhc2UgU1RfT01QX1RFQU1TX0RJU1RSSUJVVEU6Ci0JY2FzZSBT VF9PTVBfVEVBTVNfRElTVFJJQlVURV9QQVJBTExFTF9ETzoKLQljYXNlIFNUX09NUF9URUFN U19ESVNUUklCVVRFX1BBUkFMTEVMX0RPX1NJTUQ6Ci0JY2FzZSBTVF9PTVBfVEVBTVNfRElT VFJJQlVURV9TSU1EOgotCWNhc2UgU1RfT01QX1RFQU1TX0xPT1A6CisJY2FzZV9vbXBfZG86 CiAJICBzdCA9IHBhcnNlX29tcF9kbyAoc3QpOwogCSAgaWYgKHN0ID09IFNUX0lNUExJRURf RU5ERE8pCiAJICAgIHJldHVybiBzdDsKQEAgLTU5MjgsNiArNjAwNywxOSBAQCBwYXJzZV9l eGVjdXRhYmxlIChnZmNfc3RhdGVtZW50IHN0KQogCSAgc3QgPSBwYXJzZV9vbXBfb2FjY19h dG9taWMgKHRydWUpOwogCSAgY29udGludWU7CiAKKwljYXNlIFNUX09NUF9NRVRBRElSRUNU SVZFOgorCWNhc2UgU1RfT01QX0JFR0lOX01FVEFESVJFQ1RJVkU6CisJICBzdCA9IHBhcnNl X29tcF9tZXRhZGlyZWN0aXZlX2JvZHkgKHN0KTsKKwkgIGNvbnRpbnVlOworCisJY2FzZSBT VF9PTVBfRU5EX01FVEFESVJFQ1RJVkU6CisJICBpZiAoZ2ZjX3N0YXRlX3N0YWNrLT5zdGF0 ZSA9PSBDT01QX09NUF9CRUdJTl9NRVRBRElSRUNUSVZFKQorCSAgICB7CisJICAgICAgc3Qg PSBuZXh0X3N0YXRlbWVudCAoKTsKKwkgICAgICByZXR1cm4gc3Q7CisJICAgIH0KKwkgIC8q IEZBTExUSFJVICovCisKIAlkZWZhdWx0OgogCSAgcmV0dXJuIHN0OwogCX0KQEAgLTY3MDAs NiArNjc5MiwxMCBAQCBnZmNfcGFyc2VfZmlsZSAodm9pZCkKIAogICBnZmNfc3RhdGVtZW50 X2xhYmVsID0gTlVMTDsKIAorICBnZmNfb21wX3JlZ2lvbl9jb3VudCA9IDA7CisgIGdmY19p bl9tZXRhZGlyZWN0aXZlX2JvZHkgPSBmYWxzZTsKKyAgZ2ZjX21hdGNoaW5nX29tcF9jb250 ZXh0X3NlbGVjdG9yID0gZmFsc2U7CisKICAgaWYgKHNldGptcCAoZW9mX2J1ZikpCiAgICAg cmV0dXJuIGZhbHNlOwkvKiBDb21lIGhlcmUgb24gdW5leHBlY3RlZCBFT0YgKi8KIApkaWZm IC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcGFyc2UuaCBiL2djYy9mb3J0cmFuL3BhcnNlLmgKaW5k ZXggNjZiMjc1ZGU4OWIuLjQzYmRkOTFhYTE0IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9w YXJzZS5oCisrKyBiL2djYy9mb3J0cmFuL3BhcnNlLmgKQEAgLTMxLDcgKzMxLDggQEAgZW51 bSBnZmNfY29tcGlsZV9zdGF0ZQogICBDT01QX1NUUlVDVFVSRSwgQ09NUF9VTklPTiwgQ09N UF9NQVAsCiAgIENPTVBfRE8sIENPTVBfU0VMRUNULCBDT01QX0ZPUkFMTCwgQ09NUF9XSEVS RSwgQ09NUF9DT05UQUlOUywgQ09NUF9FTlVNLAogICBDT01QX1NFTEVDVF9UWVBFLCBDT01Q X1NFTEVDVF9SQU5LLCBDT01QX09NUF9TVFJVQ1RVUkVEX0JMT0NLLCBDT01QX0NSSVRJQ0FM LAotICBDT01QX0RPX0NPTkNVUlJFTlQsIENPTVBfT01QX1NUUklDVExZX1NUUlVDVFVSRURf QkxPQ0sKKyAgQ09NUF9ET19DT05DVVJSRU5ULCBDT01QX09NUF9TVFJJQ1RMWV9TVFJVQ1RV UkVEX0JMT0NLLAorICBDT01QX09NUF9NRVRBRElSRUNUSVZFLCBDT01QX09NUF9CRUdJTl9N RVRBRElSRUNUSVZFCiB9OwogCiAvKiBTdGFjayBlbGVtZW50IGZvciB0aGUgY3VycmVudCBj b21waWxhdGlvbiBzdGF0ZS4gIFRoZXNlIHN0cnVjdHVyZXMKQEAgLTY3LDEwICs2OCwxNSBA QCBpbnQgZ2ZjX2NoZWNrX2RvX3ZhcmlhYmxlIChnZmNfc3ltdHJlZSAqKTsKIGJvb2wgZ2Zj X2ZpbmRfc3RhdGUgKGdmY19jb21waWxlX3N0YXRlKTsKIGdmY19zdGF0ZV9kYXRhICpnZmNf ZW5jbG9zaW5nX3VuaXQgKGdmY19jb21waWxlX3N0YXRlICopOwogY29uc3QgY2hhciAqZ2Zj X2FzY2lpX3N0YXRlbWVudCAoZ2ZjX3N0YXRlbWVudCk7CitnZmNfc3RhdGVtZW50IGdmY19v bXBfZW5kX3N0bXQgKGdmY19zdGF0ZW1lbnQsIGJvb2wgPSB0cnVlLCBib29sID0gdHJ1ZSk7 CiBtYXRjaCBnZmNfbWF0Y2hfZW51bSAodm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfZW51bWVy YXRvcl9kZWYgKHZvaWQpOwogdm9pZCBnZmNfZnJlZV9lbnVtX2hpc3RvcnkgKHZvaWQpOwog ZXh0ZXJuIGJvb2wgZ2ZjX21hdGNoaW5nX2Z1bmN0aW9uOworZXh0ZXJuIGJvb2wgZ2ZjX21h dGNoaW5nX29tcF9jb250ZXh0X3NlbGVjdG9yOworZXh0ZXJuIGJvb2wgZ2ZjX2luX21ldGFk aXJlY3RpdmVfYm9keTsKK2V4dGVybiBpbnQgZ2ZjX29tcF9yZWdpb25fY291bnQ7CisKIG1h dGNoIGdmY19tYXRjaF9wcmVmaXggKGdmY190eXBlc3BlYyAqKTsKIGJvb2wgaXNfb2FjYyAo Z2ZjX3N0YXRlX2RhdGEgKik7CiAjZW5kaWYgIC8qIEdGQ19QQVJTRV9IICAqLwpkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCmlu ZGV4IDBlZDMxOTcwZjhiLi4xYTA3YWVmNjc3MSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4v cmVzb2x2ZS5jCisrKyBiL2djYy9mb3J0cmFuL3Jlc29sdmUuYwpAQCAtMTE4MzQsNiArMTE4 MzQsMTcgQEAgZ2ZjX3Jlc29sdmVfY29kZSAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19uYW1lc3Bh Y2UgKm5zKQogCSAgZ2ZjX3Jlc29sdmVfZm9yYWxsIChjb2RlLCBucywgZm9yYWxsX3NhdmUp OwogCSAgZm9yYWxsX2ZsYWcgPSAyOwogCX0KKyAgICAgIGVsc2UgaWYgKGNvZGUtPm9wID09 IEVYRUNfT01QX01FVEFESVJFQ1RJVkUpCisJeworCSAgZ2ZjX29tcF9tZXRhZGlyZWN0aXZl X2NsYXVzZSAqY2xhdXNlCisJICAgID0gY29kZS0+ZXh0Lm9tcF9tZXRhZGlyZWN0aXZlX2Ns YXVzZXM7CisKKwkgIHdoaWxlIChjbGF1c2UpCisJICAgIHsKKwkgICAgICBnZmNfcmVzb2x2 ZV9jb2RlIChjbGF1c2UtPmNvZGUsIG5zKTsKKwkgICAgICBjbGF1c2UgPSBjbGF1c2UtPm5l eHQ7CisJICAgIH0KKwl9CiAgICAgICBlbHNlIGlmIChjb2RlLT5ibG9jaykKIAl7CiAJICBv bXBfd29ya3NoYXJlX3NhdmUgPSAtMTsKQEAgLTEyMzIyLDYgKzEyMzMzLDcgQEAgc3RhcnQ6 CiAJY2FzZSBFWEVDX09NUF9NQVNLRUQ6CiAJY2FzZSBFWEVDX09NUF9NQVNLRURfVEFTS0xP T1A6CiAJY2FzZSBFWEVDX09NUF9NQVNLRURfVEFTS0xPT1BfU0lNRDoKKwljYXNlIEVYRUNf T01QX01FVEFESVJFQ1RJVkU6CiAJY2FzZSBFWEVDX09NUF9PUkRFUkVEOgogCWNhc2UgRVhF Q19PTVBfU0NBTjoKIAljYXNlIEVYRUNfT01QX1NDT1BFOgpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vc3QuYyBiL2djYy9mb3J0cmFuL3N0LmMKaW5kZXggNmJmNzMwYzkwNjIuLmIxNWEw ODg1ZTJlIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9zdC5jCisrKyBiL2djYy9mb3J0cmFu L3N0LmMKQEAgLTI5Niw2ICsyOTYsMTAgQEAgZ2ZjX2ZyZWVfc3RhdGVtZW50IChnZmNfY29k ZSAqcCkKICAgICBjYXNlIEVYRUNfT01QX1RBU0tZSUVMRDoKICAgICAgIGJyZWFrOwogCisg ICAgY2FzZSBFWEVDX09NUF9NRVRBRElSRUNUSVZFOgorICAgICAgZ2ZjX2ZyZWVfb21wX21l dGFkaXJlY3RpdmVfY2xhdXNlcyAocC0+ZXh0Lm9tcF9tZXRhZGlyZWN0aXZlX2NsYXVzZXMp OworICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgZ2ZjX2ludGVybmFsX2Vy cm9yICgiZ2ZjX2ZyZWVfc3RhdGVtZW50KCk6IEJhZCBzdGF0ZW1lbnQiKTsKICAgICB9CmRp ZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9zeW1ib2wuYyBiL2djYy9mb3J0cmFuL3N5bWJvbC5j CmluZGV4IGViZDk5ODQ2NjEwLi44YTU2ZWUzMWIzMyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRy YW4vc3ltYm9sLmMKKysrIGIvZ2NjL2ZvcnRyYW4vc3ltYm9sLmMKQEAgLTI2MjQsMTAgKzI2 MjQsMTMgQEAgZnJlZV9jb21wb25lbnRzIChnZmNfY29tcG9uZW50ICpwKQogc3RhdGljIGlu dAogY29tcGFyZV9zdF9sYWJlbHMgKHZvaWQgKmExLCB2b2lkICpiMSkKIHsKLSAgaW50IGEg PSAoKGdmY19zdF9sYWJlbCAqKSBhMSktPnZhbHVlOwotICBpbnQgYiA9ICgoZ2ZjX3N0X2xh YmVsICopIGIxKS0+dmFsdWU7CisgIGdmY19zdF9sYWJlbCAqYSA9IChnZmNfc3RfbGFiZWwg KikgYTE7CisgIGdmY19zdF9sYWJlbCAqYiA9IChnZmNfc3RfbGFiZWwgKikgYjE7CiAKLSAg cmV0dXJuIChiIC0gYSk7CisgIGludCBhX3ZhbHVlID0gYS0+dmFsdWUgKyAxMDAwMCAqIGEt Pm9tcF9yZWdpb247CisgIGludCBiX3ZhbHVlID0gYi0+dmFsdWUgKyAxMDAwMCAqIGItPm9t cF9yZWdpb247CisKKyAgcmV0dXJuIChiX3ZhbHVlIC0gYV92YWx1ZSk7CiB9CiAKIApAQCAt MjY3Nyw2ICsyNjgwLDcgQEAgZ2ZjX2dldF9zdF9sYWJlbCAoaW50IGxhYmVsbm8pCiB7CiAg IGdmY19zdF9sYWJlbCAqbHA7CiAgIGdmY19uYW1lc3BhY2UgKm5zOworICBpbnQgb21wX3Jl Z2lvbiA9IGdmY19pbl9tZXRhZGlyZWN0aXZlX2JvZHkgPyBnZmNfb21wX3JlZ2lvbl9jb3Vu dCA6IDA7CiAKICAgaWYgKGdmY19jdXJyZW50X3N0YXRlICgpID09IENPTVBfREVSSVZFRCkK ICAgICBucyA9IGdmY19jdXJyZW50X2Jsb2NrICgpLT5mMmtfZGVyaXZlZDsKQEAgLTI2OTMs MTAgKzI2OTcsMTMgQEAgZ2ZjX2dldF9zdF9sYWJlbCAoaW50IGxhYmVsbm8pCiAgIGxwID0g bnMtPnN0X2xhYmVsczsKICAgd2hpbGUgKGxwKQogICAgIHsKLSAgICAgIGlmIChscC0+dmFs dWUgPT0gbGFiZWxubykKKyAgICAgIGludCBhID0gbHAtPnZhbHVlICsgMTAwMDAgKiBscC0+ b21wX3JlZ2lvbjsKKyAgICAgIGludCBiID0gbGFiZWxubyArIDEwMDAwICogb21wX3JlZ2lv bjsKKworICAgICAgaWYgKGEgPT0gYikKIAlyZXR1cm4gbHA7CiAKLSAgICAgIGlmIChscC0+ dmFsdWUgPCBsYWJlbG5vKQorICAgICAgaWYgKGEgPCBiKQogCWxwID0gbHAtPmxlZnQ7CiAg ICAgICBlbHNlCiAJbHAgPSBscC0+cmlnaHQ7CkBAIC0yNzA4LDYgKzI3MTUsNyBAQCBnZmNf Z2V0X3N0X2xhYmVsIChpbnQgbGFiZWxubykKICAgbHAtPmRlZmluZWQgPSBTVF9MQUJFTF9V TktOT1dOOwogICBscC0+cmVmZXJlbmNlZCA9IFNUX0xBQkVMX1VOS05PV047CiAgIGxwLT5u cyA9IG5zOworICBscC0+b21wX3JlZ2lvbiA9IG9tcF9yZWdpb247CiAKICAgZ2ZjX2luc2Vy dF9iYnQgKCZucy0+c3RfbGFiZWxzLCBscCwgY29tcGFyZV9zdF9sYWJlbHMpOwogCmRpZmYg LS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmMgYi9nY2MvZm9ydHJhbi90cmFucy1k ZWNsLmMKaW5kZXggY2I3ZjY4NGQ1MmMuLjY5ZWE3ZjAyODcxIDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi90cmFucy1kZWNsLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCkBA IC0zMjYsNyArMzI2LDEwIEBAIGdmY19nZXRfbGFiZWxfZGVjbCAoZ2ZjX3N0X2xhYmVsICog bHApCiAgICAgICBnY2NfYXNzZXJ0IChscCAhPSBOVUxMICYmIGxwLT52YWx1ZSA8PSBNQVhf TEFCRUxfVkFMVUUpOwogCiAgICAgICAvKiBCdWlsZCBhIG1hbmdsZWQgbmFtZSBmb3IgdGhl IGxhYmVsLiAgKi8KLSAgICAgIHNwcmludGYgKGxhYmVsX25hbWUsICJfX2xhYmVsXyUuNmQi LCBscC0+dmFsdWUpOworICAgICAgaWYgKGxwLT5vbXBfcmVnaW9uKQorCXNwcmludGYgKGxh YmVsX25hbWUsICJfX2xhYmVsXyVkXyUuNmQiLCBscC0+b21wX3JlZ2lvbiwgbHAtPnZhbHVl KTsKKyAgICAgIGVsc2UKKwlzcHJpbnRmIChsYWJlbF9uYW1lLCAiX19sYWJlbF8lLjZkIiwg bHAtPnZhbHVlKTsKIAogICAgICAgLyogQnVpbGQgdGhlIExBQkVMX0RFQ0wgbm9kZS4gICov CiAgICAgICBsYWJlbF9kZWNsID0gZ2ZjX2J1aWxkX2xhYmVsX2RlY2wgKGdldF9pZGVudGlm aWVyIChsYWJlbF9uYW1lKSk7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1vcGVu bXAuYyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jCmluZGV4IGQ4MjI5YTVhYzMwLi4z YmU0NTNhNTEzYSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmMKKysr IGIvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmMKQEAgLTcyMDcsNiArNzIwNyw4IEBAIGdm Y190cmFuc19vbXBfZGlyZWN0aXZlIChnZmNfY29kZSAqY29kZSkKICAgICBjYXNlIEVYRUNf T01QX01BU1RFUl9UQVNLTE9PUDoKICAgICBjYXNlIEVYRUNfT01QX01BU1RFUl9UQVNLTE9P UF9TSU1EOgogICAgICAgcmV0dXJuIGdmY190cmFuc19vbXBfbWFzdGVyX21hc2tlZF90YXNr bG9vcCAoY29kZSwgY29kZS0+b3ApOworICAgIGNhc2UgRVhFQ19PTVBfTUVUQURJUkVDVElW RToKKyAgICAgIHJldHVybiBnZmNfdHJhbnNfb21wX21ldGFkaXJlY3RpdmUgKGNvZGUpOwog ICAgIGNhc2UgRVhFQ19PTVBfT1JERVJFRDoKICAgICAgIHJldHVybiBnZmNfdHJhbnNfb21w X29yZGVyZWQgKGNvZGUpOwogICAgIGNhc2UgRVhFQ19PTVBfUEFSQUxMRUw6CkBAIC03Mjk4 LDYgKzczMDAsODcgQEAgZ2ZjX3RyYW5zX29tcF9kZWNsYXJlX3NpbWQgKGdmY19uYW1lc3Bh Y2UgKm5zKQogICAgIH0KIH0KIAorc3RhdGljIHRyZWUKK2dmY190cmFuc19vbXBfc2V0X3Nl bGVjdG9yIChnZmNfb21wX3NldF9zZWxlY3RvciAqZ2ZjX3NlbGVjdG9ycywgbG9jdXMgd2hl cmUpCit7CisgIHRyZWUgc2V0X3NlbGVjdG9ycyA9IE5VTExfVFJFRTsKKyAgZ2ZjX29tcF9z ZXRfc2VsZWN0b3IgKm9zczsKKworICBmb3IgKG9zcyA9IGdmY19zZWxlY3RvcnM7IG9zczsg b3NzID0gb3NzLT5uZXh0KQorICAgIHsKKyAgICAgIHRyZWUgc2VsZWN0b3JzID0gTlVMTF9U UkVFOworICAgICAgZ2ZjX29tcF9zZWxlY3RvciAqb3M7CisgICAgICBmb3IgKG9zID0gb3Nz LT50cmFpdF9zZWxlY3RvcnM7IG9zOyBvcyA9IG9zLT5uZXh0KQorCXsKKwkgIHRyZWUgcHJv cGVydGllcyA9IE5VTExfVFJFRTsKKwkgIGdmY19vbXBfdHJhaXRfcHJvcGVydHkgKm90cDsK KworCSAgZm9yIChvdHAgPSBvcy0+cHJvcGVydGllczsgb3RwOyBvdHAgPSBvdHAtPm5leHQp CisJICAgIHsKKwkgICAgICBzd2l0Y2ggKG90cC0+cHJvcGVydHlfa2luZCkKKwkJeworCQlj YXNlIENUWF9QUk9QRVJUWV9VU0VSOgorCQljYXNlIENUWF9QUk9QRVJUWV9FWFBSOgorCQkg IHsKKwkJICAgIGdmY19zZSBzZTsKKwkJICAgIGdmY19pbml0X3NlICgmc2UsIE5VTEwpOwor CQkgICAgZ2ZjX2NvbnZfZXhwciAoJnNlLCBvdHAtPmV4cHIpOworCQkgICAgcHJvcGVydGll cyA9IHRyZWVfY29ucyAoTlVMTF9UUkVFLCBzZS5leHByLAorCQkJCQkgICAgcHJvcGVydGll cyk7CisJCSAgfQorCQkgIGJyZWFrOworCQljYXNlIENUWF9QUk9QRVJUWV9JRDoKKwkJICBw cm9wZXJ0aWVzID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAob3RwLT5uYW1lKSwKKwkJ CQkJICBOVUxMX1RSRUUsIHByb3BlcnRpZXMpOworCQkgIGJyZWFrOworCQljYXNlIENUWF9Q Uk9QRVJUWV9OQU1FX0xJU1Q6CisJCSAgeworCQkgICAgdHJlZSBwcm9wID0gTlVMTF9UUkVF LCB2YWx1ZSA9IE5VTExfVFJFRTsKKwkJICAgIGlmIChvdHAtPmlzX25hbWUpCisJCSAgICAg IHByb3AgPSBnZXRfaWRlbnRpZmllciAob3RwLT5uYW1lKTsKKwkJICAgIGVsc2UKKwkJICAg ICAgeworCQkJdmFsdWUgPSBnZmNfY29udl9jb25zdGFudF90b190cmVlIChvdHAtPmV4cHIp OworCisJCQkvKiBUaGUgc3RyaW5nIGxlbmd0aCBpcyBleHBlY3RlZCB0byBpbmNsdWRlIHRo ZSBudWxsCisJCQkgICB0ZXJtaW5hdG9yIGluIGNvbnRleHQgc2VsZWN0b3JzLiAgVGhpcyBp cyBzYWZlIGFzCisJCQkgICBidWlsZF9zdHJpbmcgYWx3YXlzIG51bGwtdGVybWluYXRlcyBz dHJpbmdzLiAgKi8KKwkJCSsrVFJFRV9TVFJJTkdfTEVOR1RIICh2YWx1ZSk7CisJCSAgICAg IH0KKworCQkgICAgcHJvcGVydGllcyA9IHRyZWVfY29ucyAocHJvcCwgdmFsdWUsIHByb3Bl cnRpZXMpOworCQkgIH0KKwkJICBicmVhazsKKwkJY2FzZSBDVFhfUFJPUEVSVFlfU0lNRDoK KwkJICBwcm9wZXJ0aWVzID0gZ2ZjX3RyYW5zX29tcF9jbGF1c2VzIChOVUxMLCBvdHAtPmNs YXVzZXMsCisJCQkJCQkgICAgICB3aGVyZSwgdHJ1ZSk7CisJCSAgYnJlYWs7CisJCWRlZmF1 bHQ6CisJCSAgZ2NjX3VucmVhY2hhYmxlICgpOworCQl9CisJICAgIH0KKworCSAgaWYgKG9z LT5zY29yZSkKKwkgICAgeworCSAgICAgIGdmY19zZSBzZTsKKwkgICAgICBnZmNfaW5pdF9z ZSAoJnNlLCBOVUxMKTsKKwkgICAgICBnZmNfY29udl9leHByICgmc2UsIG9zLT5zY29yZSk7 CisJICAgICAgcHJvcGVydGllcyA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIgKCIgc2Nv cmUiKSwKKwkJCQkgICAgICBzZS5leHByLCBwcm9wZXJ0aWVzKTsKKwkgICAgfQorCisJICBz ZWxlY3RvcnMgPSB0cmVlX2NvbnMgKGdldF9pZGVudGlmaWVyIChvcy0+dHJhaXRfc2VsZWN0 b3JfbmFtZSksCisJCQkJIHByb3BlcnRpZXMsIHNlbGVjdG9ycyk7CisJfQorCisgICAgICBz ZXRfc2VsZWN0b3JzCisJPSB0cmVlX2NvbnMgKGdldF9pZGVudGlmaWVyIChvc3MtPnRyYWl0 X3NldF9zZWxlY3Rvcl9uYW1lKSwKKwkJICAgICBzZWxlY3RvcnMsIHNldF9zZWxlY3RvcnMp OworICAgIH0KKworICByZXR1cm4gc2V0X3NlbGVjdG9yczsKK30KKwogdm9pZAogZ2ZjX3Ry YW5zX29tcF9kZWNsYXJlX3ZhcmlhbnQgKGdmY19uYW1lc3BhY2UgKm5zKQogewpAQCAtNzM3 Myw3MyArNzQ1Niw4IEBAIGdmY190cmFuc19vbXBfZGVjbGFyZV92YXJpYW50IChnZmNfbmFt ZXNwYWNlICpucykKIAkgICAgICAmJiBzdHJjbXAgKG9kdi0+YmFzZV9wcm9jX3N5bXRyZWUt Pm5hbWUsIG5zLT5wcm9jX25hbWUtPm5hbWUpKSkKIAljb250aW51ZTsKIAotICAgICAgdHJl ZSBzZXRfc2VsZWN0b3JzID0gTlVMTF9UUkVFOwotICAgICAgZ2ZjX29tcF9zZXRfc2VsZWN0 b3IgKm9zczsKLQotICAgICAgZm9yIChvc3MgPSBvZHYtPnNldF9zZWxlY3RvcnM7IG9zczsg b3NzID0gb3NzLT5uZXh0KQotCXsKLQkgIHRyZWUgc2VsZWN0b3JzID0gTlVMTF9UUkVFOwot CSAgZ2ZjX29tcF9zZWxlY3RvciAqb3M7Ci0JICBmb3IgKG9zID0gb3NzLT50cmFpdF9zZWxl Y3RvcnM7IG9zOyBvcyA9IG9zLT5uZXh0KQotCSAgICB7Ci0JICAgICAgdHJlZSBwcm9wZXJ0 aWVzID0gTlVMTF9UUkVFOwotCSAgICAgIGdmY19vbXBfdHJhaXRfcHJvcGVydHkgKm90cDsK LQotCSAgICAgIGZvciAob3RwID0gb3MtPnByb3BlcnRpZXM7IG90cDsgb3RwID0gb3RwLT5u ZXh0KQotCQl7Ci0JCSAgc3dpdGNoIChvdHAtPnByb3BlcnR5X2tpbmQpCi0JCSAgICB7Ci0J CSAgICBjYXNlIENUWF9QUk9QRVJUWV9VU0VSOgotCQkgICAgY2FzZSBDVFhfUFJPUEVSVFlf RVhQUjoKLQkJICAgICAgewotCQkJZ2ZjX3NlIHNlOwotCQkJZ2ZjX2luaXRfc2UgKCZzZSwg TlVMTCk7Ci0JCQlnZmNfY29udl9leHByICgmc2UsIG90cC0+ZXhwcik7Ci0JCQlwcm9wZXJ0 aWVzID0gdHJlZV9jb25zIChOVUxMX1RSRUUsIHNlLmV4cHIsCi0JCQkJCQlwcm9wZXJ0aWVz KTsKLQkJICAgICAgfQotCQkgICAgICBicmVhazsKLQkJICAgIGNhc2UgQ1RYX1BST1BFUlRZ X0lEOgotCQkgICAgICBwcm9wZXJ0aWVzID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAo b3RwLT5uYW1lKSwKLQkJCQkJICAgICAgTlVMTF9UUkVFLCBwcm9wZXJ0aWVzKTsKLQkJICAg ICAgYnJlYWs7Ci0JCSAgICBjYXNlIENUWF9QUk9QRVJUWV9OQU1FX0xJU1Q6Ci0JCSAgICAg IHsKLQkJCXRyZWUgcHJvcCA9IE5VTExfVFJFRSwgdmFsdWUgPSBOVUxMX1RSRUU7Ci0JCQlp ZiAob3RwLT5pc19uYW1lKQotCQkJICBwcm9wID0gZ2V0X2lkZW50aWZpZXIgKG90cC0+bmFt ZSk7Ci0JCQllbHNlCi0JCQkgIHZhbHVlID0gZ2ZjX2NvbnZfY29uc3RhbnRfdG9fdHJlZSAo b3RwLT5leHByKTsKLQotCQkJcHJvcGVydGllcyA9IHRyZWVfY29ucyAocHJvcCwgdmFsdWUs IHByb3BlcnRpZXMpOwotCQkgICAgICB9Ci0JCSAgICAgIGJyZWFrOwotCQkgICAgY2FzZSBD VFhfUFJPUEVSVFlfU0lNRDoKLQkJICAgICAgcHJvcGVydGllcyA9IGdmY190cmFuc19vbXBf Y2xhdXNlcyAoTlVMTCwgb3RwLT5jbGF1c2VzLAotCQkJCQkJCSAgb2R2LT53aGVyZSwgdHJ1 ZSk7Ci0JCSAgICAgIGJyZWFrOwotCQkgICAgZGVmYXVsdDoKLQkJICAgICAgZ2NjX3VucmVh Y2hhYmxlICgpOwotCQkgICAgfQotCQl9Ci0KLQkgICAgICBpZiAob3MtPnNjb3JlKQotCQl7 Ci0JCSAgZ2ZjX3NlIHNlOwotCQkgIGdmY19pbml0X3NlICgmc2UsIE5VTEwpOwotCQkgIGdm Y19jb252X2V4cHIgKCZzZSwgb3MtPnNjb3JlKTsKLQkJICBwcm9wZXJ0aWVzID0gdHJlZV9j b25zIChnZXRfaWRlbnRpZmllciAoIiBzY29yZSIpLAotCQkJCQkgIHNlLmV4cHIsIHByb3Bl cnRpZXMpOwotCQl9Ci0KLQkgICAgICBzZWxlY3RvcnMgPSB0cmVlX2NvbnMgKGdldF9pZGVu dGlmaWVyIChvcy0+dHJhaXRfc2VsZWN0b3JfbmFtZSksCi0JCQkJICAgICBwcm9wZXJ0aWVz LCBzZWxlY3RvcnMpOwotCSAgICB9Ci0KLQkgIHNldF9zZWxlY3RvcnMKLQkgICAgPSB0cmVl X2NvbnMgKGdldF9pZGVudGlmaWVyIChvc3MtPnRyYWl0X3NldF9zZWxlY3Rvcl9uYW1lKSwK LQkJCSBzZWxlY3RvcnMsIHNldF9zZWxlY3RvcnMpOwotCX0KKyAgICAgIHRyZWUgc2V0X3Nl bGVjdG9ycyA9IGdmY190cmFuc19vbXBfc2V0X3NlbGVjdG9yIChvZHYtPnNldF9zZWxlY3Rv cnMsCisJCQkJCQkgICAgICAgb2R2LT53aGVyZSk7CiAKICAgICAgIGNvbnN0IGNoYXIgKnZh cmlhbnRfcHJvY19uYW1lID0gb2R2LT52YXJpYW50X3Byb2Nfc3ltdHJlZS0+bmFtZTsKICAg ICAgIGdmY19zeW1ib2wgKnZhcmlhbnRfcHJvY19zeW0gPSBvZHYtPnZhcmlhbnRfcHJvY19z eW10cmVlLT5uLnN5bTsKQEAgLTc1MDEsMyArNzUxOSw0MSBAQCBnZmNfdHJhbnNfb21wX2Rl Y2xhcmVfdmFyaWFudCAoZ2ZjX25hbWVzcGFjZSAqbnMpCiAJfQogICAgIH0KIH0KKwordHJl ZQorZ2ZjX3RyYW5zX29tcF9tZXRhZGlyZWN0aXZlIChnZmNfY29kZSAqY29kZSkKK3sKKyAg Z2ZjX29tcF9tZXRhZGlyZWN0aXZlX2NsYXVzZSAqY2xhdXNlID0gY29kZS0+ZXh0Lm9tcF9t ZXRhZGlyZWN0aXZlX2NsYXVzZXM7CisKKyAgdHJlZSBtZXRhZGlyZWN0aXZlX3RyZWUgPSBt YWtlX25vZGUgKE9NUF9NRVRBRElSRUNUSVZFKTsKKyAgU0VUX0VYUFJfTE9DQVRJT04gKG1l dGFkaXJlY3RpdmVfdHJlZSwgZ2ZjX2dldF9sb2NhdGlvbiAoJmNvZGUtPmxvYykpOworICBU UkVFX1RZUEUgKG1ldGFkaXJlY3RpdmVfdHJlZSkgPSB2b2lkX3R5cGVfbm9kZTsKKyAgT01Q X01FVEFESVJFQ1RJVkVfQ0xBVVNFUyAobWV0YWRpcmVjdGl2ZV90cmVlKSA9IE5VTExfVFJF RTsKKworICB0cmVlIHRyZWVfYm9keSA9IE5VTExfVFJFRTsKKworICB3aGlsZSAoY2xhdXNl KQorICAgIHsKKyAgICAgIHRyZWUgc2VsZWN0b3JzID0gZ2ZjX3RyYW5zX29tcF9zZXRfc2Vs ZWN0b3IgKGNsYXVzZS0+c2VsZWN0b3JzLAorCQkJCQkJICAgY2xhdXNlLT53aGVyZSk7Cisg ICAgICBnZmNfY29kZSAqbmV4dF9jb2RlID0gY2xhdXNlLT5jb2RlLT5uZXh0OworICAgICAg aWYgKG5leHRfY29kZSAmJiB0cmVlX2JvZHkgPT0gTlVMTF9UUkVFKQorCXRyZWVfYm9keSA9 IGdmY190cmFuc19jb2RlIChuZXh0X2NvZGUpOworCisgICAgICBpZiAobmV4dF9jb2RlKQor CWNsYXVzZS0+Y29kZS0+bmV4dCA9IE5VTEw7CisgICAgICB0cmVlIGRpcmVjdGl2ZSA9IGdm Y190cmFuc19jb2RlIChjbGF1c2UtPmNvZGUpOworICAgICAgaWYgKG5leHRfY29kZSkKKwlj bGF1c2UtPmNvZGUtPm5leHQgPSBuZXh0X2NvZGU7CisKKyAgICAgIHRyZWUgYm9keSA9IG5l eHRfY29kZSA/IHRyZWVfYm9keSA6IE5VTExfVFJFRTsKKyAgICAgIHRyZWUgdmFyaWFudCA9 IGJ1aWxkX3RyZWVfbGlzdCAoc2VsZWN0b3JzLCBidWlsZF90cmVlX2xpc3QgKGRpcmVjdGl2 ZSwgYm9keSkpOworICAgICAgT01QX01FVEFESVJFQ1RJVkVfQ0xBVVNFUyAobWV0YWRpcmVj dGl2ZV90cmVlKQorCT0gY2hhaW5vbiAoT01QX01FVEFESVJFQ1RJVkVfQ0xBVVNFUyAobWV0 YWRpcmVjdGl2ZV90cmVlKSwgdmFyaWFudCk7CisgICAgICBjbGF1c2UgPSBjbGF1c2UtPm5l eHQ7CisgICAgfQorCisgIC8qIFRPRE86IFJlc29sdmUgdGhlIG1ldGFkaXJlY3RpdmUgaGVy ZSBpZiBwb3NzaWJsZS4gICovCisKKyAgcmV0dXJuIG1ldGFkaXJlY3RpdmVfdHJlZTsKK30K ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuaCBiL2djYy9mb3J0cmFuL3Ry YW5zLXN0bXQuaAppbmRleCBlODI0Y2FmNGQwOC4uMDgzNTVlNTgyYzggMTAwNjQ0Ci0tLSBh L2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuaAorKysgYi9nY2MvZm9ydHJhbi90cmFucy1zdG10 LmgKQEAgLTcxLDYgKzcxLDcgQEAgdHJlZSBnZmNfdHJhbnNfZGVhbGxvY2F0ZSAoZ2ZjX2Nv ZGUgKik7CiB0cmVlIGdmY190cmFuc19vbXBfZGlyZWN0aXZlIChnZmNfY29kZSAqKTsKIHZv aWQgZ2ZjX3RyYW5zX29tcF9kZWNsYXJlX3NpbWQgKGdmY19uYW1lc3BhY2UgKik7CiB2b2lk IGdmY190cmFuc19vbXBfZGVjbGFyZV92YXJpYW50IChnZmNfbmFtZXNwYWNlICopOwordHJl ZSBnZmNfdHJhbnNfb21wX21ldGFkaXJlY3RpdmUgKGdmY19jb2RlICpjb2RlKTsKIHRyZWUg Z2ZjX3RyYW5zX29hY2NfZGlyZWN0aXZlIChnZmNfY29kZSAqKTsKIHRyZWUgZ2ZjX3RyYW5z X29hY2NfZGVjbGFyZSAoZ2ZjX25hbWVzcGFjZSAqKTsKIApkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vdHJhbnMuYyBiL2djYy9mb3J0cmFuL3RyYW5zLmMKaW5kZXggYTM3N2QwZWViMjQu LjAwN2VlNjVhMTY5IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy5jCisrKyBiL2dj Yy9mb3J0cmFuL3RyYW5zLmMKQEAgLTIxNjEsNiArMjE2MSw3IEBAIHRyYW5zX2NvZGUgKGdm Y19jb2RlICogY29kZSwgdHJlZSBjb25kKQogCWNhc2UgRVhFQ19PTVBfTUFTVEVSOgogCWNh c2UgRVhFQ19PTVBfTUFTVEVSX1RBU0tMT09QOgogCWNhc2UgRVhFQ19PTVBfTUFTVEVSX1RB U0tMT09QX1NJTUQ6CisJY2FzZSBFWEVDX09NUF9NRVRBRElSRUNUSVZFOgogCWNhc2UgRVhF Q19PTVBfT1JERVJFRDoKIAljYXNlIEVYRUNfT01QX1BBUkFMTEVMOgogCWNhc2UgRVhFQ19P TVBfUEFSQUxMRUxfRE86CmRpZmYgLS1naXQgYS9nY2Mvb21wLWdlbmVyYWwuYyBiL2djYy9v bXAtZ2VuZXJhbC5jCmluZGV4IDYzNDBkMTYwMGE2Li41YThhMzQ1NzNjOCAxMDA2NDQKLS0t IGEvZ2NjL29tcC1nZW5lcmFsLmMKKysrIGIvZ2NjL29tcC1nZW5lcmFsLmMKQEAgLTExOTgs NyArMTE5OCw3IEBAIG9tcF9jaGVja19jb250ZXh0X3NlbGVjdG9yIChsb2NhdGlvbl90IGxv YywgdHJlZSBjdHgpCiAJCSAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IFRSRUVfU1RSSU5HX1BP SU5URVIgKFRSRUVfVkFMVUUgKHQyKSk7CiAJCSAgICAgIGlmICghc3RyY21wIChzdHIsIHBy b3BzW2ldLnByb3BzW2pdKQogCQkJICAmJiAoKHNpemVfdCkgVFJFRV9TVFJJTkdfTEVOR1RI IChUUkVFX1ZBTFVFICh0MikpCi0JCQkgICAgICA9PSBzdHJsZW4gKHN0cikgKyAobGFuZ19H TlVfRm9ydHJhbiAoKSA/IDAgOiAxKSkpCisJCQkgICAgICA9PSBzdHJsZW4gKHN0cikgKyAx KSkKIAkJCWJyZWFrOwogCQkgICAgfQogCQkgIGVsc2UgaWYgKCFzdHJjbXAgKElERU5USUZJ RVJfUE9JTlRFUiAoVFJFRV9QVVJQT1NFICh0MikpLApAQCAtMTI0Nyw4ICsxMjQ3LDcgQEAg b21wX2NvbnRleHRfbmFtZV9saXN0X3Byb3AgKHRyZWUgcHJvcCkKICAgZWxzZQogICAgIHsK ICAgICAgIGNvbnN0IGNoYXIgKnJldCA9IFRSRUVfU1RSSU5HX1BPSU5URVIgKFRSRUVfVkFM VUUgKHByb3ApKTsKLSAgICAgIGlmICgoc2l6ZV90KSBUUkVFX1NUUklOR19MRU5HVEggKFRS RUVfVkFMVUUgKHByb3ApKQotCSAgPT0gc3RybGVuIChyZXQpICsgKGxhbmdfR05VX0ZvcnRy YW4gKCkgPyAwIDogMSkpCisgICAgICBpZiAoKHNpemVfdCkgVFJFRV9TVFJJTkdfTEVOR1RI IChUUkVFX1ZBTFVFIChwcm9wKSkgPT0gc3RybGVuIChyZXQpICsgMSkKIAlyZXR1cm4gcmV0 OwogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotLSAKMi4yNS4xCgo= --------------fGX6oySdFFbCF0HTil9TOV4j--