Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pTMCW-0000IM-F5 for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Feb 2023 12:20:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pTMCT-0007lB-Nz for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Feb 2023 12:20:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pTMCS-0007jE-8f for pgsql-hackers@lists.postgresql.org; Sat, 18 Feb 2023 12:20:21 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pTMC3-00068O-Hf for pgsql-hackers@lists.postgresql.org; Sat, 18 Feb 2023 12:20:18 +0000 Received: by mail-ed1-x52b.google.com with SMTP id ec30so2421330edb.10 for ; Sat, 18 Feb 2023 04:19:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=Tc/aZ+nN9zSZmK8RvJQy1sr02QQKXDjzunNnR3aT5ZA=; b=Xq+Y2/3T/LxvgdMX0Et3gCTMMnZJ8uPaA4dw9nW4oan7nz3EErscEq1V3KRc9In1Cm BrKAp+is6yQho9t33r18PsU6rR/A55+1psDoBujLV/t65hUFCBSju0H5cC0Tk5im3Ft7 8AvRybfk8II2euTwQP9gBxHwEjJXl9aOWsVFe2dJwaZe8+Tl+zmcTbMfYXiU732Kyp1x Opzx84J/jXI8w7M/6rSChQ1yk7eihGkCXIxln1olibd67ha5bkf0IpAl6xNYTSy9QhfT ZJPX6jQVufhi6cLdP5gvM1Ob7RZC7iivx29Y2IHfkppO+akmC2QFiCF6EregsVBwd7Ko Sp3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Tc/aZ+nN9zSZmK8RvJQy1sr02QQKXDjzunNnR3aT5ZA=; b=lHzbohj0Q5D47076l5KXySyJ9d1rmtFQ49tyuN17qp/RtJtd6RsSUPPmC9lBCwLC1C hro+cMk78iRhn5OEjW0OxMjT0o+vCNcqnKjUHbJWfZUOEHWj6PGyQIiMQLFEAM2WylVh C4fvN4ATBKauku4kGcrMadrg8XHLboZLVbW1FuQlK133UAGDtGmykSBhExjPnTQNOiBU N25xmX76X+lKVd21V3FQA3BLqnXqjOJ+SQ+D4ICkeQgyqdB7aDzIVf03+s3ahB/ihpRO wwB193hSOCo443tCbHgU2r/MYtbGrzBXDpQVXhO7pYnIpXoZosK9MQI05UwaA9Md+yFe Or9A== X-Gm-Message-State: AO0yUKWE6SEzAKpiu1qbi8W6+Sg5UrWF9goghECrKSBTUjvObZZL1yGX GJHcC7nC8WaTmCFIQO+sRKWu04RCrFpUUMC93WWsbJ865W+BxvkOsQ+/3K2TA8Xo2b2jT+QERKN AafxSY4D4LeM2yb372PWxEDF6XGccOJb4VUUva0RxupKvAJwSfMKmKBI2PA2Qpt9PjcHr6F1hjZ 90DHx33j1vIOHi27wRp/1nLuLJZ9mbUf89Oupx9B8CyR8pBz8Y1gxw X-Google-Smtp-Source: AK7set8fEFjRn/hf8+gPoCYQWDNgeKT3i/LQGdsWdhhjoq+dFDv6z9eSymUtfbF5CcuDG+87l67ntQ== X-Received: by 2002:aa7:de09:0:b0:4ac:746e:2edf with SMTP id h9-20020aa7de09000000b004ac746e2edfmr4221567edv.9.1676722792831; Sat, 18 Feb 2023 04:19:52 -0800 (PST) Received: from [10.137.0.17] (ip-86-49-228-162.bb.vodafone.cz. [86.49.228.162]) by smtp.gmail.com with ESMTPSA id f8-20020a1709067f8800b008af2a7438acsm3316278ejr.188.2023.02.18.04.19.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 18 Feb 2023 04:19:51 -0800 (PST) Content-Type: multipart/mixed; boundary="------------HR8dHIjo0owgmXMkVKjGj7Ix" Message-ID: <9f73f798-1dac-c75d-d834-aa012ba13b65@enterprisedb.com> Date: Sat, 18 Feb 2023 13:19:49 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: PATCH: Using BRIN indexes for sorted output To: Justin Pryzby Cc: Andres Freund , Greg Stark , Matthias van de Meent , Zhihong Yu , pgsql-hackers@lists.postgresql.org References: <1607e037-8c5b-1626-9f98-496f067b9eb5@enterprisedb.com> <0695af03-8bd3-f032-47aa-0657135ce45d@enterprisedb.com> <87964cda-e440-8759-2838-bc4628072a18@enterprisedb.com> <14568731-ac91-ce2d-1477-0e2504c72775@enterprisedb.com> <20221206185143.ivy3afwmkhloksgv@awork3.anarazel.de> <4e679562-fd9a-33a3-ce71-cd7a27525f8e@enterprisedb.com> <20230216161016.GV1653@telsasoft.com> Content-Language: en-US From: Tomas Vondra In-Reply-To: <20230216161016.GV1653@telsasoft.com> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2/16/23 17:10, Justin Pryzby wrote: > On Thu, Feb 16, 2023 at 03:07:59PM +0100, Tomas Vondra wrote: >> Rebased version of the patches, fixing only minor conflicts. > > Per cfbot, the patch fails on 32 bit builds. > +ERROR: count mismatch: 0 != 1000 > > And causes warnings in mingw cross-compile. > There was a silly mistake in trying to store block numbers as bigint when sorting the ranges, instead of uint32. That happens to work on 64-bit systems, but on 32-bit systems it produces bogus block. The attached should fix that - it passes on 32-bit arm, even with valgrind and all that. > On Sun, Oct 23, 2022 at 11:32:37PM -0500, Justin Pryzby wrote: >> I think new GUCs should be enabled during patch development. >> Maybe in a separate 0002 patch "for CI only not for commit". >> That way "make check" at least has a chance to hit that new code >> paths. >> >> Also, note that indxpath.c had the var initialized to true. > > In your patch, the amstats guc is still being set to false during > startup by the guc machinery. And the tests crash everywhere if it's > set to on: > > TRAP: failed Assert("(nmatches_unique >= 1) && (nmatches_unique <= unique[nvalues-1])"), File: "../src/backend/access/brin/brin_minmax.c", Line: 644, PID: 25519 > Right, that was a silly thinko in building the stats, and I found a couple more issues nearby. Should be fixed in the attached version. >> . Some typos in your other patches: "heuristics heuristics". ste. >> lest (least). > > These are still present. Thanks for reminding me, those should be fixed too now. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0001-Allow-index-AMs-to-build-and-use-custom-sta-20230218.patch" Content-Disposition: attachment; filename*0="0001-Allow-index-AMs-to-build-and-use-custom-sta-20230218.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YjMzMDdjMjdiMzVlY2UxMTlmZWFiNDg5MWYwMzc0OTI1MGU0NTRiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAxNyBPY3QgMjAyMiAxODozOToyOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDEvMTBdIEFsbG93IGluZGV4IEFNcyB0byBidWlsZCBhbmQgdXNlIGN1 c3RvbSBzdGF0aXN0aWNzCgpTb21lIGluZGV4aW5nIEFNcyB3b3JrIHZlcnkgZGlmZmVyZW50 bHkgYW5kIGVzdGltYXRpbmcgdGhlbSB1c2luZwpleGlzdGluZyBzdGF0aXN0aWNzIGlzIHBy b2JsZW1hdGljLCBwcm9kdWNpbmcgdW5yZWxpYWJsZSBjb3N0aW5nLiBUaGlzCmFwcGxpZXMg ZS5nLiB0byBCUklOLCB3aGljaCByZWxpZXMgb24gcGFnZSByYW5nZXMsIG5vdCB0dXBsZSBw b2ludGVycy4KClRoaXMgYWRkcyBhbiBvcHRpb25hbCBBTSBwcm9jZWR1cmUsIGFsbG93aW5n IHRoZSBvcGZhbWlseSB0byBidWlsZApjdXN0b20gc3RhdGlzdGljcywgc3RvcmUgdGhlbSBp biBwZ19zdGF0aXN0aWMgYW5kIHRoZW4gdXNlIHRoZW0gZHVyaW5nCnBsYW5uaW5nLiBCeSBk ZWZhdWx0IHRoaXMgaXMgZGlzYWJsZWQsIGJ1dCBtYXkgYmUgZW5hYmxlZCBieSBzZXR0aW5n CgogICBTRVQgZW5hYmxlX2luZGV4YW1fc3RhdHMgPSB0cnVlOwoKVGhlbiBBTkFMWVpFIHdp bGwgY2FsbCB0aGUgb3B0aW9uYWwgcHJvY2VkdXJlIGZvciBhbGwgaW5kZXhlcy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyAgICAgICAgIHwgODk2ICsr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAg ICAgICAgICAgIHwgMTQ5ICsrLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9z dGF0cy5jICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j ICAgICAgICAgICAgICB8ICA1OSArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgICAgICAgIHwgIDQxICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmgg ICAgICAgICAgICAgICAgICAgICB8ICA2MyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5f aW50ZXJuYWwuaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdCAgICAgICAgICAgICB8ICA2NCArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3RhdGlzdGljLmggICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogMTcgZmlsZXMgY2hhbmdl ZCwgMTI5OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYwppbmRleCBkZTE0MjdhMWUwZS4uZThiZjIwYTZiYWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMKQEAgLTk1LDYgKzk1LDcgQEAgYnJpbmhhbmRsZXIoUEdfRlVOQ1RJT05f QVJHUykKIAlhbXJvdXRpbmUtPmFtc3RyYXRlZ2llcyA9IDA7CiAJYW1yb3V0aW5lLT5hbXN1 cHBvcnQgPSBCUklOX0xBU1RfT1BUSU9OQUxfUFJPQ05VTTsKIAlhbXJvdXRpbmUtPmFtb3B0 c3Byb2NudW0gPSBCUklOX1BST0NOVU1fT1BUSU9OUzsKKwlhbXJvdXRpbmUtPmFtc3RhdHNw cm9jbnVtID0gQlJJTl9QUk9DTlVNX1NUQVRJU1RJQ1M7CiAJYW1yb3V0aW5lLT5hbWNhbm9y ZGVyID0gZmFsc2U7CiAJYW1yb3V0aW5lLT5hbWNhbm9yZGVyYnlvcCA9IGZhbHNlOwogCWFt cm91dGluZS0+YW1jYW5iYWNrd2FyZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW5fbWlubWF4LmMKaW5kZXggMjQzMTU5MWJlNjUuLjZiMGYzMDM1MDRkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKQEAgLTEwLDE3ICsxMCwyMyBAQAog ICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9icmluLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2JyaW5faW50ZXJuYWwuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv YnJpbl9yZXZtYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MvYnJpbl90dXBsZS5oIgogI2luY2x1 ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9zdHJhdG51bS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1 Y3QgTWlubWF4T3BhcXVlCiB7CkBAIC0yNTMsNiArMjU5LDg5NiBAQCBicmluX21pbm1heF91 bmlvbihQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9WT0lEKCk7CiB9CiAKKy8qIEZJ WE1FIGNvcHkgb2YgYSBwcml2YXRlIHN0cnVjdCBmcm9tIGJyaW4uYyAqLwordHlwZWRlZiBz dHJ1Y3QgQnJpbk9wYXF1ZQoreworCUJsb2NrTnVtYmVyIGJvX3BhZ2VzUGVyUmFuZ2U7CisJ QnJpblJldm1hcCAqYm9fcm1BY2Nlc3M7CisJQnJpbkRlc2MgICAqYm9fYmRlc2M7Cit9IEJy aW5PcGFxdWU7CisKKy8qCisgKiBDb21wYXJlIHJhbmdlcyBieSBtaW52YWwgKGNvbGxhdGlv biBhbmQgb3BlcmF0b3IgYXJlIHRha2VuIGZyb20gdGhlIGV4dHJhCisgKiBhcmd1bWVudCwg d2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgVHlwZUNhY2hlRW50cnkpLgorICovCitzdGF0aWMg aW50CityYW5nZV9taW52YWxfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZv aWQgKmFyZykKK3sKKwlCcmluUmFuZ2UgKnJhID0gKihCcmluUmFuZ2UgKiopIGE7CisJQnJp blJhbmdlICpyYiA9ICooQnJpblJhbmdlICoqKSBiOworCVR5cGVDYWNoZUVudHJ5ICp0eXBl bnRyeSA9IChUeXBlQ2FjaGVFbnRyeSAqKSBhcmc7CisJRm1nckluZm8gICAqY21wZnVuYyA9 ICZ0eXBlbnRyeS0+Y21wX3Byb2NfZmluZm87CisJRGF0dW0JYzsKKwlpbnQJCXI7CisKKwlj ID0gRnVuY3Rpb25DYWxsMkNvbGwoY21wZnVuYywgdHlwZW50cnktPnR5cGNvbGxhdGlvbiwK KwkJCQkJCSAgcmEtPm1pbl92YWx1ZSwgcmItPm1pbl92YWx1ZSk7CisJciA9IERhdHVtR2V0 SW50MzIoYyk7CisKKwlpZiAociAhPSAwKQorCQlyZXR1cm4gcjsKKworCWlmIChyYS0+Ymxr bm9fc3RhcnQgPCByYi0+Ymxrbm9fc3RhcnQpCisJCXJldHVybiAtMTsKKwllbHNlCisJCXJl dHVybiAxOworfQorCisvKgorICogQ29tcGFyZSByYW5nZXMgYnkgbWF4dmFsIChjb2xsYXRp b24gYW5kIG9wZXJhdG9yIGFyZSB0YWtlbiBmcm9tIHRoZSBleHRyYQorICogYXJndW1lbnQs IHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIFR5cGVDYWNoZUVudHJ5KS4KKyAqLworc3RhdGlj IGludAorcmFuZ2VfbWF4dmFsX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2 b2lkICphcmcpCit7CisJQnJpblJhbmdlICpyYSA9ICooQnJpblJhbmdlICoqKSBhOworCUJy aW5SYW5nZSAqcmIgPSAqKEJyaW5SYW5nZSAqKikgYjsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlw ZW50cnkgPSAoVHlwZUNhY2hlRW50cnkgKikgYXJnOworCUZtZ3JJbmZvICAgKmNtcGZ1bmMg PSAmdHlwZW50cnktPmNtcF9wcm9jX2ZpbmZvOworCURhdHVtCWM7CisJaW50CQlyOworCisJ YyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGNtcGZ1bmMsIHR5cGVudHJ5LT50eXBjb2xsYXRpb24s CisJCQkJCQkgIHJhLT5tYXhfdmFsdWUsIHJiLT5tYXhfdmFsdWUpOworCXIgPSBEYXR1bUdl dEludDMyKGMpOworCisJaWYgKHIgIT0gMCkKKwkJcmV0dXJuIHI7CisKKwlpZiAocmEtPmJs a25vX3N0YXJ0IDwgcmItPmJsa25vX3N0YXJ0KQorCQlyZXR1cm4gLTE7CisJZWxzZQorCQly ZXR1cm4gMTsKK30KKworLyogY29tcGFyZSB2YWx1ZXMgdXNpbmcgYW4gb3BlcmF0b3IgZnJv bSB0eXBjYWNoZSAqLworc3RhdGljIGludAorcmFuZ2VfdmFsdWVzX2NtcChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCit7CisJRGF0dW0JZGEgPSAqIChEYXR1 bSAqKSBhOworCURhdHVtCWRiID0gKiAoRGF0dW0gKikgYjsKKwlUeXBlQ2FjaGVFbnRyeSAq dHlwZW50cnkgPSAoVHlwZUNhY2hlRW50cnkgKikgYXJnOworCUZtZ3JJbmZvICAgKmNtcGZ1 bmMgPSAmdHlwZW50cnktPmNtcF9wcm9jX2ZpbmZvOworCURhdHVtCWM7CisKKwljID0gRnVu Y3Rpb25DYWxsMkNvbGwoY21wZnVuYywgdHlwZW50cnktPnR5cGNvbGxhdGlvbiwKKwkJCQkJ CSAgZGEsIGRiKTsKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihjKTsKK30KKworLyoKKyAqIG1p bnZhbF9lbmQKKyAqCQlEZXRlcm1pbmUgZmlyc3QgaW5kZXggc28gdGhhdCAobWludmFsID4g dmFsdWUpLgorICoKKyAqIFRoZSBhcnJheSBvZiByYW5nZXMgaXMgZXhwZWN0ZWQgdG8gYmUg c29ydGVkIGJ5IG1pbnZhbHVlLCBzbyB0aGlzIGlzIHRoZSBmaXJzdAorICogcmFuZ2UgdGhh dCBjYW4ndCBwb3NzaWJseSBpbnRlcnNlY3Qgd2l0aCBhIHJhbmdlIGhhdmluZyAidmFsdWUi IGFzIG1heHZhbC4KKyAqLworc3RhdGljIGludAorbWludmFsX2VuZChCcmluUmFuZ2UgKipy YW5nZXMsIGludCBucmFuZ2VzLCBEYXR1bSB2YWx1ZSwgVHlwZUNhY2hlRW50cnkgKnR5cGNh Y2hlKQoreworCWludAkJc3RhcnQgPSAwLAorCQkJZW5kID0gKG5yYW5nZXMgLSAxKTsKKwor CS8vIGV2ZXJ5dGhpbmcgbWF0Y2hlcworCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZSwg JnJhbmdlc1tlbmRdLT5taW5fdmFsdWUsIHR5cGNhY2hlKSA+PSAwKQorCQlyZXR1cm4gbnJh bmdlczsKKworCS8vIG5vIG1hdGNoZXMKKwlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWUs ICZyYW5nZXNbc3RhcnRdLT5taW5fdmFsdWUsIHR5cGNhY2hlKSA8IDApCisJCXJldHVybiAw OworCisJd2hpbGUgKChlbmQgLSBzdGFydCkgPiAwKQorCXsKKwkJaW50IG1pZHBvaW50Owor CQlpbnQgcjsKKworCQltaWRwb2ludCA9IHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7CisK KwkJciA9IHJhbmdlX3ZhbHVlc19jbXAoJnZhbHVlLCAmcmFuZ2VzW21pZHBvaW50XS0+bWlu X3ZhbHVlLCB0eXBjYWNoZSk7CisKKwkJaWYgKHIgPj0gMCkKKwkJCXN0YXJ0ID0gbWlkcG9p bnQgKyAxOworCQllbHNlCisJCQllbmQgPSBtaWRwb2ludDsKKwl9CisKKwlBc3NlcnQocmFu Z2VzW3N0YXJ0XS0+bWluX3ZhbHVlID4gdmFsdWUpOworCUFzc2VydChyYW5nZXNbc3RhcnQt MV0tPm1pbl92YWx1ZSA8PSB2YWx1ZSk7CisKKwlyZXR1cm4gc3RhcnQ7Cit9CisKKworLyoK KyAqIGxvd2VyX2JvdW5kCisgKgkJRGV0ZXJtaW5lIGZpcnN0IGluZGV4IHNvIHRoYXQgKHZh bHVlc1tpbmRleF0gPj0gdmFsdWUpLgorICoKKyAqIFRoZSBhcnJheSBvZiB2YWx1ZXMgaXMg c29ydGVkLCBhbmQgdGhpcyByZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSB0aGF0CisgKiBleGNl ZWRzIChvciBpcyBlcXVhbCkgdG8gdGhlIG1pbnZhbHVlLgorICovCitzdGF0aWMgaW50Cits b3dlcl9ib3VuZChEYXR1bSAqdmFsdWVzLCBpbnQgbnZhbHVlcywgRGF0dW0gbWludmFsdWUs IFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSkKK3sKKwlpbnQJCXN0YXJ0ID0gMCwKKwkJCWVu ZCA9IChudmFsdWVzIC0gMSk7CisKKwkvKiBhbGwgdmFsdWVzIGV4Y2VlZCBtaW52YWx1ZSAt IHJldHVybiB0aGUgZmlyc3QgZWxlbWVudCAqLworCWlmIChyYW5nZV92YWx1ZXNfY21wKCZt aW52YWx1ZSwgJnZhbHVlc1tzdGFydF0sIHR5cGNhY2hlKSA8PSAwKQorCQlyZXR1cm4gMDsK KworCS8qIG5vdGhpbmcgbWF0Y2hlcyAtIHJldHVybiB0aGUgZWxlbWVudCBhZnRlciB0aGUg bGFzdCBvbmUgKi8KKwlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmbWludmFsdWUsICZ2YWx1ZXNb ZW5kXSwgdHlwY2FjaGUpID4gMCkKKwkJcmV0dXJuIG52YWx1ZXM7CisKKwkvKgorCSAqIE5v dyB3ZSBrbm93IHRoZSBsb3dlciBib3VuZGFyeSBpcyBzb21ld2hlcmUgaW4gdGhlIGFycmF5 IChhbmQgd2Uga25vdworCSAqIGl0J3Mgbm90IHRoZSBmaXJzdCBlbGVtZW50LCBiZWNhdXNl IHRoYXQncyBjb3ZlcmVkIGJ5IHRoZSBmaXJzdCBjaGVjaworCSAqIGFib3ZlKS4gU28gZG8g YSBiaW5hcnkgc2VhcmNoLgorCSAqLworCXdoaWxlICgoZW5kIC0gc3RhcnQpID4gMCkKKwl7 CisJCWludAltaWRwb2ludDsKKwkJaW50CXI7CisKKwkJbWlkcG9pbnQgPSBzdGFydCArIChl bmQgLSBzdGFydCkgLyAyOworCisJCXIgPSByYW5nZV92YWx1ZXNfY21wKCZtaW52YWx1ZSwg JnZhbHVlc1ttaWRwb2ludF0sIHR5cGNhY2hlKTsKKworCQlpZiAociA8PSAwKQkvKiBtaW52 YWx1ZSA+PSBtaWRwb2ludCAqLworCQkJZW5kID0gbWlkcG9pbnQ7CisJCWVsc2UJCS8qIG1p ZHBvaW50IDwgbWludmFsdWUgKi8KKwkJCXN0YXJ0ID0gKG1pZHBvaW50ICsgMSk7CisJfQor CisJQXNzZXJ0KHJhbmdlX3ZhbHVlc19jbXAoJm1pbnZhbHVlLCAmdmFsdWVzW3N0YXJ0XSwg dHlwY2FjaGUpIDw9IDApOworCUFzc2VydChyYW5nZV92YWx1ZXNfY21wKCZtaW52YWx1ZSwg JnZhbHVlc1tzdGFydC0xXSwgdHlwY2FjaGUpID4gMCk7CisKKwlyZXR1cm4gc3RhcnQ7Cit9 CisKKy8qCisgKiB1cHBlcl9ib3VuZAorICoJCURldGVybWluZSBsYXN0IGluZGV4IHNvIHRo YXQgKHZhbHVlc1tpbmRleF0gPD0gbWF4dmFsdWUpLgorICoKKyAqIFRoZSBhcnJheSBvZiB2 YWx1ZXMgaXMgc29ydGVkLCBhbmQgdGhpcyByZXR1cm5zIHRoZSBsYXN0IHZhbHVlIHRoYXQK KyAqIGRvZXMgbm90IGV4Y2VlZCAob3IgaXMgZXF1YWwpIHRvIHRoZSBtYXh2YWx1ZS4KKyAq Lworc3RhdGljIGludAordXBwZXJfYm91bmQoRGF0dW0gKnZhbHVlcywgaW50IG52YWx1ZXMs IERhdHVtIG1heHZhbHVlLCBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUpCit7CisJaW50CQlz dGFydCA9IDAsCisJCQllbmQgPSAobnZhbHVlcyAtIDEpOworCisJLyogZXZlcnl0aGluZyBt YXRjaGVzLCByZXR1cm4gdGhlIGxhc3QgZWxlbWVudCAqLworCWlmIChyYW5nZV92YWx1ZXNf Y21wKCZ2YWx1ZXNbZW5kXSwgJm1heHZhbHVlLCB0eXBjYWNoZSkgPD0gMCkKKwkJcmV0dXJu IChudmFsdWVzIC0gMSk7CisKKwkvKiBub3RoaW5nIG1hdGNoZXMsIHJldHVybiB0aGUgZWxl bWVudCBiZWZvcmUgdGhlIGZpcnN0IG9uZSAqLworCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2 YWx1ZXNbc3RhcnRdLCAmbWF4dmFsdWUsIHR5cGNhY2hlKSA+IDApCisJCXJldHVybiAtMTsK KworCS8qCisJICogTm93IHdlIGtub3cgdGhlIGxvd2VyIGJvdW5kYXJ5IGlzIHNvbWV3aGVy ZSBpbiB0aGUgYXJyYXkgKGFuZCB3ZSBrbm93CisJICogaXQncyBub3QgdGhlIGxhc3QgZWxl bWVudCwgYmVjYXVzZSB0aGF0J3MgY292ZXJlZCBieSB0aGUgZmlyc3QgY2hlY2sKKwkgKiBh Ym92ZSkuIFNvIGRvIGEgYmluYXJ5IHNlYXJjaC4KKwkgKi8KKwl3aGlsZSAoKGVuZCAtIHN0 YXJ0KSA+IDApCisJeworCQlpbnQgbWlkcG9pbnQ7CisJCWludCByOworCisJCW1pZHBvaW50 ID0gc3RhcnQgKyAoZW5kIC0gc3RhcnQpIC8gMjsKKworCQkvKiBFbnN1cmUgd2UgYWx3YXlz IG1vdmUgKGl0IG1pZ2h0IGJlIGVxdWFsIHRvIHN0YXJ0IGR1ZSB0byByb3VuZGluZykuICov CisJCW1pZHBvaW50ID0gTWF4KHN0YXJ0KzEsIG1pZHBvaW50KTsKKworCQlyID0gcmFuZ2Vf dmFsdWVzX2NtcCgmdmFsdWVzW21pZHBvaW50XSwgJm1heHZhbHVlLCB0eXBjYWNoZSk7CisK KwkJaWYgKHIgPD0gMCkJCQkvKiB2YWx1ZSA8PSBtYXh2YWx1ZSAqLworCQkJc3RhcnQgPSBt aWRwb2ludDsKKwkJZWxzZQkJCQkvKiB2YWx1ZSA+IG1heHZhbHVlICovCisJCQllbmQgPSBt aWRwb2ludCAtIDE7CisJfQorCisJQXNzZXJ0KHJhbmdlX3ZhbHVlc19jbXAoJnZhbHVlc1tz dGFydF0sICZtYXh2YWx1ZSwgdHlwY2FjaGUpIDw9IDApOworCUFzc2VydChyYW5nZV92YWx1 ZXNfY21wKCZ2YWx1ZXNbc3RhcnQrMV0sICZtYXh2YWx1ZSwgdHlwY2FjaGUpID4gMCk7CisK KwlyZXR1cm4gc3RhcnQ7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9jb3VudF9vdmVybGFw cworICoJCUNhbGN1bGF0ZSBudW1iZXIgb2Ygb3ZlcmxhcHMuCisgKgorICogVGhpcyB1c2Vz IHRoZSBtaW5yYW5nZXMgdG8gcXVpY2tseSBlbGltaW5hdGUgcmFuZ2VzIHRoYXQgY2FuJ3Qg cG9zc2libHkKKyAqIGludGVyc2VjdC4gV2Ugc2ltcGx5IHdhbGsgbWlucmFuZ2VzIHVudGls IG1pbnZhbCA+IGN1cnJlbnQgbWF4dmFsLCBhbmQKKyAqIHdlJ3JlIGRvbmUuCisgKgorICog VW5saWtlIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzMiwgdGhpcyBkb2VzIG5vdCBoYXZl IGlzc3VlcyB3aXRoIHdpZGUKKyAqIHJhbmdlcywgc28gdGhpcyBpcyB3aGF0IHdlIHNob3Vs ZCB1c2UuCisgKi8KK3N0YXRpYyB2b2lkCiticmluX21pbm1heF9jb3VudF9vdmVybGFwcyhC cmluUmFuZ2UgKiptaW5yYW5nZXMsIGludCBucmFuZ2VzLAorCQkJCQkJICAgVHlwZUNhY2hl RW50cnkgKnR5cGNhY2hlLCBCcmluTWlubWF4U3RhdHMgKnN0YXRzKQoreworCWludDY0CW5v dmVybGFwczsKKworCW5vdmVybGFwcyA9IDA7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBucmFu Z2VzOyBpKyspCisJeworCQlEYXR1bQltYXh2YWwgPSBtaW5yYW5nZXNbaV0tPm1heF92YWx1 ZTsKKworCQkvKgorCQkgKiBEZXRlcm1pbmUgaW5kZXggb2YgdGhlIGZpcnN0IHJhbmdlIHdp dGggKG1pbnZhbCA+IGN1cnJlbnQgbWF4dmFsKQorCQkgKiBieSBiaW5hcnkgc2VhcmNoLiBX ZSBrbm93IGFsbCBvdGhlciByYW5nZXMgY2FuJ3Qgb3ZlcmxhcCB0aGUKKwkJICogY3VycmVu dCBvbmUuIFdlIHNpbXBseSBzdWJ0cmFjdCBpbmRleGVzIHRvIGNvdW50IHJhbmdlcy4KKwkJ ICovCisJCWludAkJaWR4ID0gbWludmFsX2VuZChtaW5yYW5nZXMsIG5yYW5nZXMsIG1heHZh bCwgdHlwY2FjaGUpOworCisJCS8qIC0xIGJlY2F1c2Ugd2UgZG9uJ3QgY291bnQgdGhlIHJh bmdlIGFzIGludGVyc2VjdGluZyB3aXRoIGl0c2VsZiAqLworCQlub3ZlcmxhcHMgKz0gKGlk eCAtIGkgLSAxKTsKKwl9CisKKwkvKgorCSAqIFdlIG9ubHkgY291bnQgMS8yIHRoZSByYW5n ZXMgKG1pbnZhbCA+IGN1cnJlbnQgbWludmFsKSwgc28gdGhlIHRvdGFsCisJICogbnVtYmVy IG9mIG92ZXJsYXBzIGlzIHR3aWNlIHdoYXQgd2UgY291bnRlZC4KKwkgKi8KKwlub3Zlcmxh cHMgKj0gMjsKKworCXN0YXRzLT5hdmdfb3ZlcmxhcHMgPSAoZG91YmxlKSBub3ZlcmxhcHMg LyBucmFuZ2VzOworfQorCisvKgorICogYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jh bmdlcworICoJCU1hdGNoIHR1cGxlcyB0byByYW5nZXMsIGNvdW50IGF2ZXJhZ2UgbnVtYmVy IG9mIHJhbmdlcyBwZXIgdHVwbGUuCisgKgorICogQWx0ZXJuYXRpdmUgdG8gYnJpbl9taW5t YXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlczIsIGxldmVyYWdpbmcgb3JkZXJpbmcKKyAqIG9m IHZhbHVlcywgbm90IHJhbmdlcy4KKyAqCisgKiBYWFggVGhpcyBzZWVtcyBsaWtlIHRoZSBv cHRpbWFsIHdheSB0byBkbyB0aGlzLgorICovCitzdGF0aWMgdm9pZAorYnJpbl9taW5tYXhf bWF0Y2hfdHVwbGVzX3RvX3JhbmdlcyhCcmluUmFuZ2VzICpyYW5nZXMsCisJCQkJCQkJCSAg IGludCBudW1yb3dzLCBIZWFwVHVwbGUgKnJvd3MsCisJCQkJCQkJCSAgIGludCBudmFsdWVz LCBEYXR1bSAqdmFsdWVzLAorCQkJCQkJCQkgICBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUs CisJCQkJCQkJCSAgIEJyaW5NaW5tYXhTdGF0cyAqc3RhdHMpCit7CisJaW50NjQJbm1hdGNo ZXMgPSAwOworCWludDY0CW5tYXRjaGVzX3VuaXF1ZSA9IDA7CisJaW50NjQJbnZhbHVlc191 bmlxdWUgPSAwOworCisJaW50NjQgICp1bmlxdWUgPSAoaW50NjQgKikgcGFsbG9jMChzaXpl b2YoaW50NjQpICogbnZhbHVlcyk7CisKKwkvKgorCSAqIEJ1aWxkIHJ1bm5pbmcgY291bnQg b2YgdW5pcXVlIHZhbHVlcy4gV2Uga25vdyB0aGVyZSBhcmUgdW5pcXVlW2ldCisJICogdW5p cXVlIHZhbHVlcyBpbiB2YWx1ZXMgYXJyYXkgdXAgdG8gaW5kZXggImkiLgorCSAqLworCXVu aXF1ZVswXSA9IDE7CisJZm9yIChpbnQgaSA9IDE7IGkgPCBudmFsdWVzOyBpKyspCisJewor CQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmdmFsdWVzW2ktMV0sICZ2YWx1ZXNbaV0sIHR5cGNh Y2hlKSA9PSAwKQorCQkJdW5pcXVlW2ldID0gdW5pcXVlW2ktMV07CisJCWVsc2UKKwkJCXVu aXF1ZVtpXSA9IHVuaXF1ZVtpLTFdICsgMTsKKwl9CisKKwludmFsdWVzX3VuaXF1ZSA9IHVu aXF1ZVtudmFsdWVzLTFdOworCisJLyoKKwkgKiBXYWxrIHRoZSByYW5nZXMsIGZvciBlYWNo IHJhbmdlIGRldGVybWluZSB0aGUgZmlyc3QvbGFzdCBtYXBwaW5nCisJICogdmFsdWUuIFVz ZSB0aGUgInVuaXF1ZSIgYXJyYXkgdG8gY291bnQgdGhlIHVuaXF1ZSB2YWx1ZXMuCisJICov CisJZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZXMtPm5yYW5nZXM7IGkrKykKKwl7CisJCWlu dAkJc3RhcnQsCisJCQkJZW5kLAorCQkJCW52YWx1ZXNfbWF0Y2gsCisJCQkJbnVuaXF1ZV9t YXRjaDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCXN0YXJ0ID0gbG93ZXJf Ym91bmQodmFsdWVzLCBudmFsdWVzLCByYW5nZXMtPnJhbmdlc1tpXS5taW5fdmFsdWUsIHR5 cGNhY2hlKTsKKwkJZW5kID0gdXBwZXJfYm91bmQodmFsdWVzLCBudmFsdWVzLCByYW5nZXMt PnJhbmdlc1tpXS5tYXhfdmFsdWUsIHR5cGNhY2hlKTsKKworCQkvKiBpZiBub3RoaW5nIG1h dGNoZXMgKGUuZy4gZW5kPTApLCBza2lwIHRoaXMgcmFuZ2UgKi8KKwkJaWYgKGVuZCA8PSBz dGFydCkKKwkJCWNvbnRpbnVlOworCisJCW52YWx1ZXNfbWF0Y2ggPSAoZW5kIC0gc3RhcnQg KyAxKTsKKwkJbnVuaXF1ZV9tYXRjaCA9ICh1bmlxdWVbZW5kXSAtIHVuaXF1ZVtzdGFydF0g KyAxKTsKKworCQlBc3NlcnQoKG52YWx1ZXNfbWF0Y2ggPj0gMSkgJiYgKG52YWx1ZXNfbWF0 Y2ggPD0gbnZhbHVlcykpOworCQlBc3NlcnQoKG51bmlxdWVfbWF0Y2ggPj0gMSkgJiYgKG51 bmlxdWVfbWF0Y2ggPD0gdW5pcXVlW252YWx1ZXMtMV0pKTsKKworCQlubWF0Y2hlcyArPSBu dmFsdWVzX21hdGNoOworCQlubWF0Y2hlc191bmlxdWUgKz0gbnVuaXF1ZV9tYXRjaDsKKwl9 CisKKwlBc3NlcnQobm1hdGNoZXMgPj0gMCk7CisJQXNzZXJ0KG5tYXRjaGVzX3VuaXF1ZSA+ PSAwKTsKKworCXN0YXRzLT5hdmdfbWF0Y2hlcyA9IChkb3VibGUpIG5tYXRjaGVzIC8gbnVt cm93czsKKwlzdGF0cy0+YXZnX21hdGNoZXNfdW5pcXVlID0gKGRvdWJsZSkgbm1hdGNoZXNf dW5pcXVlIC8gbnZhbHVlc191bmlxdWU7Cit9CisKKy8qCisgKiBicmluX21pbm1heF92YWx1 ZV9zdGF0cworICoJCUNhbGN1bGF0ZSBzdGF0aXN0aWNzIGFib3V0IG1pbnZhbC9tYXh2YWwg dmFsdWVzLgorICoKKyAqIFdlIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IHZh bHVlcywgYW5kIGFsc28gY29ycmVsYXRpb24gd2l0aCByZXNwZWN0CisgKiB0byBibGtub19z dGFydC4gV2UgZG9uJ3QgY2FsY3VsYXRlIHRoZSByZWd1bGFyIGNvcnJlbGF0aW9uIGNvZWZm aWNpZW50LCBiZWNhdXNlCisgKiBvdXIgZ29hbCBpcyB0byBlc3RpbWF0ZSBob3cgc2VxdWVu dGlhbCB0aGUgYWNjZXNzZXMgYXJlLiBUaGUgcmVndWxhciBjb3JyZWxhdGlvbgorICogd291 bGQgcHJvZHVjZSAwIGZvciBjeWNsaWNhbCBkYXRhIHNldHMgbGlrZSBtb2QoaSwxMDAwMDAw KSwgYnV0IGl0IG1heSBiZSBxdWl0ZQorICogc2VxdWFudGlhbCBhY2Nlc3MuIE1heWJlIGl0 IHNob3VsZCBiZSBjYWxsZWQgZGlmZmVyZW50bHksIG5vdCBjb3JyZWxhdGlvbj8KKyAqCisg KiBYWFggTWF5YmUgdGhpcyBzaG91bGQgY2FsY3VsYXRlIG1pbnZhbCB2cy4gbWF4dmFsIGNv cnJlbGF0aW9uIHRvbz8KKyAqCisgKiBYWFggSSBkb24ndCBrbm93IGhvdyBpbXBvcnRhbnQg dGhlIHNlcXVlbnRpYWxpdHkgaXMgLSBCUklOIGdlbmVyYWxseSB1c2VzIDFNQgorICogcGFn ZSByYW5nZXMsIHdoaWNoIGlzIHByZXR0eSBzZXF1ZW50aWFsIGFuZCB0aGUgb25lIHJhbmRv bSBzZWVrIGluIGJldHdlZW4gaXMKKyAqIGxpa2VseSBnb2luZyB0byBiZSBuZWdsaWdpYmxl LiBNYXliZSBmb3Igc21hbGwgcGFnZSByYW5nZXMgaXQnbGwgbWF0dGVyLCB0aG91Z2guCisg Ki8KK3N0YXRpYyB2b2lkCiticmluX21pbm1heF92YWx1ZV9zdGF0cyhCcmluUmFuZ2UgKipt aW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdlcywKKwkJCQkJCWludCBucmFuZ2VzLCBU eXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsCisJCQkJCQlCcmluTWlubWF4U3RhdHMgKnN0YXRz KQoreworCS8qICovCisJaW50NjQJbWludmFsX25kaXN0ID0gMSwKKwkJCW1heHZhbF9uZGlz dCA9IDEsCisJCQltaW52YWxfY29yciA9IDAsCisJCQltYXh2YWxfY29yciA9IDA7CisKKwlm b3IgKGludCBpID0gMTsgaSA8IG5yYW5nZXM7IGkrKykKKwl7CisJCWlmIChyYW5nZV92YWx1 ZXNfY21wKCZtaW5yYW5nZXNbaS0xXS0+bWluX3ZhbHVlLCAmbWlucmFuZ2VzW2ldLT5taW5f dmFsdWUsIHR5cGNhY2hlKSAhPSAwKQorCQkJbWludmFsX25kaXN0Kys7CisKKwkJaWYgKHJh bmdlX3ZhbHVlc19jbXAoJm1heHJhbmdlc1tpLTFdLT5tYXhfdmFsdWUsICZtYXhyYW5nZXNb aV0tPm1heF92YWx1ZSwgdHlwY2FjaGUpICE9IDApCisJCQltYXh2YWxfbmRpc3QrKzsKKwor CQkvKiBpcyBpdCBpbW1lZGlhdGVseSBzZXF1ZW50aWFsPyAqLworCQlpZiAobWlucmFuZ2Vz W2ktMV0tPmJsa25vX2VuZCArIDEgPT0gbWlucmFuZ2VzW2ldLT5ibGtub19zdGFydCkKKwkJ CW1pbnZhbF9jb3JyKys7CisKKwkJLyogaXMgaXQgaW1tZWRpYXRlbHkgc2VxdWVudGlhbD8g Ki8KKwkJaWYgKG1heHJhbmdlc1tpLTFdLT5ibGtub19lbmQgKyAxID09IG1heHJhbmdlc1tp XS0+Ymxrbm9fc3RhcnQpCisJCQltYXh2YWxfY29ycisrOworCX0KKworCXN0YXRzLT5taW52 YWxfbmRpc3RpbmN0ID0gbWludmFsX25kaXN0OworCXN0YXRzLT5tYXh2YWxfbmRpc3RpbmN0 ID0gbWF4dmFsX25kaXN0OworCisJc3RhdHMtPm1pbnZhbF9jb3JyZWxhdGlvbiA9IChkb3Vi bGUpIG1pbnZhbF9jb3JyIC8gbnJhbmdlczsKKwlzdGF0cy0+bWF4dmFsX2NvcnJlbGF0aW9u ID0gKGRvdWJsZSkgbWF4dmFsX2NvcnIgLyBucmFuZ2VzOworfQorCisvKgorICogYnJpbl9t aW5tYXhfaW5jcmVtZW50X3N0YXRzCisgKgkJQ2FsY3VsYXRlIHRoZSBpbmNyZW1lbnQgc2l6 ZSBmb3IgbWludmFsL21heHZhbCBzdGVwcy4KKyAqCisgKiBDYWxjdWxhdGVzIHRoZSBtaW52 YWwvbWF4dmFsIGluY3JlbWVudCBzaXplLCBpLmUuIG51bWJlciBvZiByb3dzIHRoYXQgbmVl ZAorICogdG8gYmUgYWRkZWQgdG8gdGhlIHNvcnQuIFRoaXMgc2VydmVzIGFzIGFuIGlucHV0 IHRvIGNhbGN1bGF0aW9uIG9mIGEgZ29vZAorICogd2F0ZXJtYXJrIHN0ZXAuCisgKi8KK3N0 YXRpYyB2b2lkCiticmluX21pbm1heF9pbmNyZW1lbnRfc3RhdHMoQnJpblJhbmdlICoqbWlu cmFuZ2VzLCBCcmluUmFuZ2UgKiptYXhyYW5nZXMsCisJCQkJCQkJaW50IG5yYW5nZXMsIERh dHVtICp2YWx1ZXMsIGludCBudmFsdWVzLAorCQkJCQkJCVR5cGVDYWNoZUVudHJ5ICp0eXBj YWNoZSwgQnJpbk1pbm1heFN0YXRzICpzdGF0cykKK3sKKwkvKiAqLworCWludDY0CW1pbnZh bF9uZGlzdCA9IDEsCisJCQltYXh2YWxfbmRpc3QgPSAxOworCisJZG91YmxlCXN1bV9taW52 YWwgPSAwLAorCQkJc3VtX21heHZhbCA9IDAsCisJCQltYXhfbWludmFsID0gMCwKKwkJCW1h eF9tYXh2YWwgPSAwOworCisJZm9yIChpbnQgaSA9IDE7IGkgPCBucmFuZ2VzOyBpKyspCisJ eworCQlpZiAocmFuZ2VfdmFsdWVzX2NtcCgmbWlucmFuZ2VzW2ktMV0tPm1pbl92YWx1ZSwg Jm1pbnJhbmdlc1tpXS0+bWluX3ZhbHVlLCB0eXBjYWNoZSkgIT0gMCkKKwkJeworCQkJZG91 YmxlCXA7CisJCQlpbnQJCXN0YXJ0ID0gdXBwZXJfYm91bmQodmFsdWVzLCBudmFsdWVzLCBt aW5yYW5nZXNbaS0xXS0+bWluX3ZhbHVlLCB0eXBjYWNoZSk7CisJCQlpbnQJCWVuZCA9IHVw cGVyX2JvdW5kKHZhbHVlcywgbnZhbHVlcywgbWlucmFuZ2VzW2ldLT5taW5fdmFsdWUsIHR5 cGNhY2hlKTsKKworCQkJLyoKKwkJCSAqIE1heWJlIHRoZXJlIGFyZSBubyBtYXRjaGluZyBy b3dzLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBjb3VudAorCQkJICogdGhpcyBhcyBkaXN0aW5j dCBtaW52YWwgKGV2ZW4gdGhvdWdoIHRoZSBzYW1wbGUgaW5jcmVhc2UgaXMgMCkuCisJCQkg Ki8KKwkJCW1pbnZhbF9uZGlzdCsrOworCisJCQlBc3NlcnQoZW5kID49IHN0YXJ0KTsKKwor CQkJLyogbm8gc2FtcGxlIHJvd3MgbWF0Y2ggdGhpcywgc28gc2tpcCAqLworCQkJaWYgKGVu ZCA9PSBzdGFydCkKKwkJCQljb250aW51ZTsKKworCQkJcCA9IChkb3VibGUpIChlbmQgLSBz dGFydCkgLyBudmFsdWVzOworCisJCQltYXhfbWludmFsID0gTWF4KG1heF9taW52YWwsIHAp OworCQkJc3VtX21pbnZhbCArPSBwOworCQl9CisKKwkJaWYgKHJhbmdlX3ZhbHVlc19jbXAo Jm1heHJhbmdlc1tpLTFdLT5tYXhfdmFsdWUsICZtYXhyYW5nZXNbaV0tPm1heF92YWx1ZSwg dHlwY2FjaGUpICE9IDApCisJCXsKKwkJCWRvdWJsZQlwOworCQkJaW50CQlzdGFydCA9IHVw cGVyX2JvdW5kKHZhbHVlcywgbnZhbHVlcywgbWF4cmFuZ2VzW2ktMV0tPm1heF92YWx1ZSwg dHlwY2FjaGUpOworCQkJaW50CQllbmQgPSB1cHBlcl9ib3VuZCh2YWx1ZXMsIG52YWx1ZXMs IG1heHJhbmdlc1tpXS0+bWF4X3ZhbHVlLCB0eXBjYWNoZSk7CisKKwkJCS8qCisJCQkgKiBN YXliZSB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgcm93cywgYnV0IHdlIHN0aWxsIG5lZWQgdG8g Y291bnQKKwkJCSAqIHRoaXMgYXMgZGlzdGluY3QgbWF4dmFsIChldmVuIHRob3VnaCB0aGUg c2FtcGxlIGluY3JlYXNlIGlzIDApLgorCQkJICovCisJCQltYXh2YWxfbmRpc3QrKzsKKwor CQkJQXNzZXJ0KGVuZCA+PSBzdGFydCk7CisKKwkJCS8qIG5vIHNhbXBsZSByb3dzIG1hdGNo IHRoaXMsIHNvIHNraXAgKi8KKwkJCWlmIChlbmQgPT0gc3RhcnQpCisJCQkJY29udGludWU7 CisKKwkJCXAgPSAoZG91YmxlKSAoZW5kIC0gc3RhcnQpIC8gbnZhbHVlczsKKworCQkJbWF4 X21heHZhbCA9IE1heChtYXhfbWF4dmFsLCBwKTsKKwkJCXN1bV9tYXh2YWwgKz0gcDsKKwkJ fQorCX0KKworCXN0YXRzLT5taW52YWxfaW5jcmVtZW50X2F2ZyA9IChzdW1fbWludmFsIC8g bWludmFsX25kaXN0KTsKKwlzdGF0cy0+bWludmFsX2luY3JlbWVudF9tYXggPSBtYXhfbWlu dmFsOworCisJc3RhdHMtPm1heHZhbF9pbmNyZW1lbnRfYXZnID0gKHN1bV9tYXh2YWwgLyBt YXh2YWxfbmRpc3QpOworCXN0YXRzLT5tYXh2YWxfaW5jcmVtZW50X21heCA9IG1heF9tYXh2 YWw7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9zdGF0cworICoJCUNhbGN1bGF0ZSBjdXN0 b20gc3RhdGlzdGljcyBmb3IgYSBCUklOIG1pbm1heCBpbmRleC4KKyAqCisgKiBBdCB0aGUg bW9tZW50IHRoaXMgY2FsY3VsYXRlczoKKyAqCisgKiAgLSBudW1iZXIgb2Ygc3VtbWFyaXpl ZC9ub3Qtc3VtbWFyaXplZCBhbmQgYWxsL2hhcyBudWxscyByYW5nZXMKKyAqICAtIGF2ZXJh Z2UgbnVtYmVyIG9mIG92ZXJsYXBzIGZvciBhIHJhbmdlCisgKiAgLSBhdmVyYWdlIG51bWJl ciBvZiByb3dzIG1hdGNoaW5nIGEgcmFuZ2UKKyAqICAtIG51bWJlciBvZiBkaXN0aW5jdCBt aW52YWwvbWF4dmFsIHZhbHVlcworICoKKyAqIFhYWCBUaGlzIGNvdWxkIGFsc28gY2FsY3Vs YXRlIGNvcnJlbGF0aW9uIG9mIHRoZSByYW5nZSBtaW52YWwsIHNvIHRoYXQKKyAqIHdlIGNh biBlc3RpbWF0ZSBob3cgbXVjaCByYW5kb20gSS9PIHdpbGwgaGFwcGVuIGR1cmluZyB0aGUg QnJpblNvcnQuCisgKiBBbmQgcGVyaGFwcyB3ZSBzaG91bGQgYWxzbyBzb3J0IHRoZSByYW5n ZXMgYnkgKG1pbnZhbCxibG9ja19zdGFydCkgdG8KKyAqIG1ha2UgdGhpcyBhcyBzZXF1ZW50 aWFsIGFzIHBvc3NpYmxlPworICoKKyAqIFhYWCBBbm90aGVyIGludGVyZXN0aW5nIHN0YXRp c3RpY3MgbWlnaHQgYmUgdGhlIG51bWJlciBvZiByYW5nZXMgd2l0aAorICogdGhlIHNhbWUg bWludmFsIChvciBudW1iZXIgb2YgZGlzdGluY3QgbWludmFsIHZhbHVlcyksIGJlY2F1c2Ug dGhhdCdzCisgKiBlc3NlbnRpYWxseSB3aGF0IHdlIG5lZWQgdG8gZXN0aW1hdGUgaG93IG1h bnkgcmFuZ2VzIHdpbGwgYmUgcmVhZCBpbgorICogb25lIGJyaW5zb3J0IHN0ZXAuIEluIGZh Y3QsIGtub3dpbmcgdGhlIG51bWJlciBvZiBkaXN0aW5jdCBtaW52YWwKKyAqIHZhbHVlcyB0 ZWxscyB1cyB0aGUgbnVtYmVyIG9mIEJyaW5Tb3J0IGxvb3BzLgorICoKKyAqIFhYWCBXZSBt aWdodCBhbHNvIGNhbGN1bGF0ZSBhIGhpc3RvZ3JhbSBvZiBtaW52YWwvbWF4dmFsIHZhbHVl cy4KKyAqCisgKiBYWFggSSB3b25kZXIgaWYgd2UgY291bGQgdHJhY2sgZm9yIGVhY2ggcmFu Z2UgdHJhY2sgcHJvYmFiaWxpdGllczoKKyAqCisgKiAtIFAxID0gUCh2IDw9IG1pbnZhbCkK KyAqIC0gUDIgPSBQKHggPD0gTWF4KG1heHZhbCkpIGZvciBNYXgobWF4dmFsKSBvdmVyIHBy ZWNlZGluZyByYW5nZXMKKyAqCisgKiBUaGF0IHdvdWxkIGFsbG93IHVzIHRvIGVzdGltYXRl IGhvdyBtYW55IHJhbmdlcyB3ZSdsbCBoYXZlIHRvIHJlYWQgdG8gcHJvZHVjZQorICogYSBw YXJ0aWN1bGFyIG51bWJlciBvZiByb3dzLCBiZWNhdXNlIHdlIG5lZWQgdGhlIGZpcnN0IHBy b2JhYmlsaXR5IHRvIGV4Y2VlZAorICogdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygcm93cyAo ZnJhY3Rpb24gb2YgdGhlIHRhYmxlKToKKyAqCisgKiAgICAgKGxpbWl0IHJvd3MgLyByZWx0 dXBsZXMpIDw9IFAodiA8PSBtaW52YWwpCisgKgorICogYW5kIHRoZW4gdGhlIHNlY29uZCBw cm9iYWJpbGl0eSB3b3VsZCBzYXkgaG93IG1hbnkgcm93cyB3ZSdsbCBwcm9jZXNzIChlaXRo ZXIKKyAqIHNvcnQgb3Igc3BpbGwpLiBBbmQgaW52ZXJzZWx5IGZvciB0aGUgREVTQyBvcmRl cmluZy4KKyAqCisgKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFAxIGZvciB0d28gcmFuZ2Vz IGlzIGhvdyBtdWNoIHdlJ2QgaGF2ZSB0byBzb3J0CisgKiBpZiB3ZSBtb3ZlZCB0aGUgd2F0 ZXJtYXJrIGJldHdlZW4gdGhlIHJhbmdlcyAoZmlyc3QgbWludmFsIHRvIHNlY29uZCBvbmUp LgorICogVGhlIChQMiAtIFAxKSBmb3IgdGhlIG5ldyB3YXRlcm1hcmsgcmFuZ2UgbWVhc3Vy ZXMgdGhlIG51bWJlciBvZiByb3dzIGluCisgKiB0aGUgdHVwbGVzdG9yZS4gV2UnbGwgbmVl ZCB0byBhZ2dyZWdhdGUgdGhpcywgdGhvdWdoLCB3ZSBjYW4ndCBrZWVwIHRoZQorICogd2hv bGUgZGF0YSAtIHByb2JhYmx5IGF2ZXJhZ2UvbWVkaWFuL21heCBmb3IgdGhlIGRpZmZlcmVu Y2VzIHdvdWxkIGJlIG5pY2UuCisgKiBNaWdodCBiZSB0cmlja3kgZm9yIGRpZmZlcmVudCB3 YXRlcm1hcmsgc3RlcCB2YWx1ZXMsIHRob3VnaC4KKyAqCisgKiBUaGlzIHdvdWxkIGFsc28g YWxsb3cgZXN0aW1hdGluZyBob3cgbWFueSByb3dzIHdpbGwgc3BpbGwgZnJvbSBlYWNoIHJh bmdlLAorICogYmVjYXVzZSB3ZSBoYXZlIGFuIGVzdGltYXRlIGhvdyBtYW55IHJvd3MgbWF0 Y2ggYSByYW5nZSBvbiBhdmVyYWdlLCBhbmQKKyAqIHdlIGNhbiBjb21wYXJlIGl0IHRvIHRo ZSBkaWZmZXJlbmNlIGJldHdlZW4gUDEuCisgKgorICogT25lIGlzc3VlIGlzIHdlIGRvbid0 IGhhdmUgYWN0dWFsIHR1cGxlcyBmcm9tIHRoZSByYW5nZXMsIHNvIHdlIGNhbid0CisgKiBt ZWFzdXJlIGV4YWN0bHkgaG93IG1hbnkgcm93cyB3b3VsZCB3ZSBhZGQuIEJ1dCB3ZSBjYW4g bWF0Y2ggdGhlIHNhbXBsZQorICogYW5kIGF0IGxlYXN0IGVzdGltYXRlIHRoZSB0aGUgcHJv YmFiaWxpdHkgZGlmZmVyZW5jZS4KKyAqCisgKiBBY3R1YWxseSAtIHdlIGRvIGtub3cgdGhl IHR1cGxlcyAqYXJlKiBpbiB0aG9zZSByYW5nZXMsIGJlY2F1c2UgaWYgd2UKKyAqIGFzc3Vt ZSB0aGUgdHVwbGUgaXMgaW4gc29tZSBvdGhlciByYW5nZSwgdGhhdCByYW5nZSB3b3VsZCBo YXZlIHRvIGhhdmUKKyAqIGEgbWluaW1hbC9tYXhpbWFsIHZhbHVlIHNvIHRoYXQgdGhlIHZh bHVlIGlzIGNvbnNpc3RlbnQuIFdoaWNoIG1lYW5zCisgKiB0aGUgcmFuZ2UgaGFzIHRvIGJl IGJldHdlZW4gdGhvc2UgcmFuZ2VzLiBPZiBjb3Vyc2UsIHRoaXMgb25seSBlc3RpbWF0ZXMK KyAqIHRoZSByb3dzIHdlJ2QgZ29pbmcgdG8gYWRkIHRvIHRoZSB0dXBsZXNvcnQgLSB0aGVy ZSBtaWdodCBiZSBtb3JlIHJvd3MKKyAqIHdlIHJlYWQgYW5kIHNwaWxsIHRvIHR1cGxlc3Rv cmUsIGJ1dCB0aGF0J3Mgc29tZXRoaW5nIHdlIGNhbiBlc3RpbWF0ZQorICogdXNpbmcgYXZl cmFnZSB0dXBsZXMgcGVyIHJhbmdlLgorICovCitEYXR1bQorYnJpbl9taW5tYXhfc3RhdHMo UEdfRlVOQ1RJT05fQVJHUykKK3sKKwlSZWxhdGlvbgkJaGVhcFJlbCA9IChSZWxhdGlvbikg UEdfR0VUQVJHX1BPSU5URVIoMCk7CisJUmVsYXRpb24JCWluZGV4UmVsID0gKFJlbGF0aW9u KSBQR19HRVRBUkdfUE9JTlRFUigxKTsKKwlBdHRyTnVtYmVyCQlhdHRudW0gPSBQR19HRVRB UkdfSU5UMTYoMik7CS8qIGluZGV4IGF0dG51bSAqLworCUF0dHJOdW1iZXIJCWhlYXBfYXR0 bnVtID0gUEdfR0VUQVJHX0lOVDE2KDMpOworCUV4cHIJCSAgICpleHByID0gKEV4cHIgKikg UEdfR0VUQVJHX1BPSU5URVIoNCk7CisJSGVhcFR1cGxlCSAgICpyb3dzID0gKEhlYXBUdXBs ZSAqKSBQR19HRVRBUkdfUE9JTlRFUig1KTsKKwlpbnQJCQkJbnVtcm93cyA9IFBHX0dFVEFS R19JTlQzMig2KTsKKworCUJyaW5PcGFxdWUgKm9wYXF1ZTsKKwlCbG9ja051bWJlciBuYmxv Y2tzOworCUJsb2NrTnVtYmVyCW5yYW5nZXM7CisJQmxvY2tOdW1iZXIJaGVhcEJsazsKKwlC cmluTWVtVHVwbGUgKmR0dXA7CisJQnJpblR1cGxlICAqYnR1cCA9IE5VTEw7CisJU2l6ZQkJ YnR1cHN6ID0gMDsKKwlCdWZmZXIJCWJ1ZiA9IEludmFsaWRCdWZmZXI7CisJQnJpblJhbmdl cyAgKnJhbmdlczsKKwlCbG9ja051bWJlcglwYWdlc1BlclJhbmdlOworCUJyaW5EZXNjCSAg ICpiZGVzYzsKKwlCcmluTWlubWF4U3RhdHMgKnN0YXRzOworCisJT2lkCQkJCXR5cG9pZDsK KwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisJQnJpblJhbmdlCSAgKiptaW5yYW5nZXMs CisJCQkJICAqKm1heHJhbmdlczsKKwlpbnQ2NAkJCXByZXZfbWluX2luZGV4OworCisJLyog ZXhwcmVzc2lvbiBzdGF0cyAqLworCUVTdGF0ZQkgICAqZXN0YXRlOworCUV4cHJDb250ZXh0 ICplY29udGV4dDsKKwlFeHByU3RhdGUgICpleHByc3RhdGU7CisJVHVwbGVUYWJsZVNsb3Qg KnNsb3Q7CisKKwkvKiBhdHRudW0gb3IgZXhwcmVzc2lvbiBoYXMgdG8gYmUgc3VwcGxpZWQg Ki8KKwlBc3NlcnQoQXR0cmlidXRlTnVtYmVySXNWYWxpZChoZWFwX2F0dG51bSkgfHwgKGV4 cHIgIT0gTlVMTCkpOworCisJLyogYnV0IG5vdCBib3RoIG9mIHRoZW0gYXQgdGhlIHNhbWUg dGltZSAqLworCUFzc2VydCghKEF0dHJpYnV0ZU51bWJlcklzVmFsaWQoaGVhcF9hdHRudW0p ICYmIChleHByICE9IE5VTEwpKSk7CisKKwkvKgorCSAqIE1vc3RseSB3aGF0IGJyaW5iZWdp bnNjYW4gZG9lcyB0byBpbml0aWFsaXplIEJyaW5PcGFxdWUsIGV4Y2VwdCB0aGF0CisJICog d2UgdXNlIGFjdGl2ZSBzbmFwc2hvdCBpbnN0ZWFkIG9mIHRoZSBzY2FuIHNuYXBzaG90Lgor CSAqLworCW9wYXF1ZSA9IHBhbGxvY19vYmplY3QoQnJpbk9wYXF1ZSk7CisJb3BhcXVlLT5i b19ybUFjY2VzcyA9IGJyaW5SZXZtYXBJbml0aWFsaXplKGluZGV4UmVsLAorCQkJCQkJCQkJ CQkgICAmb3BhcXVlLT5ib19wYWdlc1BlclJhbmdlLAorCQkJCQkJCQkJCQkgICBHZXRBY3Rp dmVTbmFwc2hvdCgpKTsKKwlvcGFxdWUtPmJvX2JkZXNjID0gYnJpbl9idWlsZF9kZXNjKGlu ZGV4UmVsKTsKKworCWJkZXNjID0gb3BhcXVlLT5ib19iZGVzYzsKKwlwYWdlc1BlclJhbmdl ID0gb3BhcXVlLT5ib19wYWdlc1BlclJhbmdlOworCisJLyogbWFrZSBzdXJlIHRoZSBwcm92 aWRlZCBhdHRudW0gaXMgdmFsaWQgKi8KKwlBc3NlcnQoKGF0dG51bSA+IDApICYmIChhdHRu dW0gPD0gYmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzKSk7CisKKwkvKgorCSAqIFdlIG5lZWQg dG8ga25vdyB0aGUgc2l6ZSBvZiB0aGUgdGFibGUgc28gdGhhdCB3ZSBrbm93IGhvdyBsb25n IHRvIGl0ZXJhdGUKKwkgKiBvbiB0aGUgcmV2bWFwIChhbmQgdG8gcHJlLWFsbG9jYXRlIHRo ZSBhcnJheXMpLgorCSAqLworCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tz KGhlYXBSZWwpOworCisJLyoKKwkgKiBIb3cgbWFueSByYW5nZXMgY2FuIHRoZXJlIGJlPyBX ZSBzaW1wbHkgbG9vayBhdCB0aGUgbnVtYmVyIG9mIHBhZ2VzLAorCSAqIGRpdmlkZSBpdCBi eSB0aGUgcGFnZXNfcGVyX3JhbmdlLgorCSAqCisJICogWFhYIFdlIG5lZWQgdG8gYmUgY2Fy ZWZ1bCBub3QgdG8gb3ZlcmZsb3cgbnJhbmdlcywgc28gd2UganVzdCBkaXZpZGUKKwkgKiBh bmQgdGhlbiBtYXliZSBhZGQgMSBmb3IgcGFydGlhbCByYW5nZXMuCisJICovCisJbnJhbmdl cyA9IChuYmxvY2tzIC8gcGFnZXNQZXJSYW5nZSk7CisJaWYgKG5ibG9ja3MgJSBwYWdlc1Bl clJhbmdlICE9IDApCisJCW5yYW5nZXMgKz0gMTsKKworCS8qIGFsbG9jYXRlIGZvciBzcGFj ZSwgYW5kIGFsc28gZm9yIHRoZSBhbHRlcm5hdGl2ZSBvcmRlcmluZyAqLworCXJhbmdlcyA9 IHBhbGxvYzAob2Zmc2V0b2YoQnJpblJhbmdlcywgcmFuZ2VzKSArIG5yYW5nZXMgKiBzaXpl b2YoQnJpblJhbmdlKSk7CisJcmFuZ2VzLT5ucmFuZ2VzID0gMDsKKworCS8qIGFsbG9jYXRl IGFuIGluaXRpYWwgaW4tbWVtb3J5IHR1cGxlLCBvdXQgb2YgdGhlIHBlci1yYW5nZSBtZW1j eHQgKi8KKwlkdHVwID0gYnJpbl9uZXdfbWVtdHVwbGUoYmRlc2MpOworCisJLyogcmVzdWx0 IHN0YXRzICovCisJc3RhdHMgPSBwYWxsb2MwKHNpemVvZihCcmluTWlubWF4U3RhdHMpKTsK KwlTRVRfVkFSU0laRShzdGF0cywgc2l6ZW9mKEJyaW5NaW5tYXhTdGF0cykpOworCisJLyoK KwkgKiBOb3cgc2NhbiB0aGUgcmV2bWFwLiAgV2Ugc3RhcnQgYnkgcXVlcnlpbmcgZm9yIGhl YXAgcGFnZSAwLAorCSAqIGluY3JlbWVudGluZyBieSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHBl ciByYW5nZTsgdGhpcyBnaXZlcyB1cyBhIGZ1bGwKKwkgKiB2aWV3IG9mIHRoZSB0YWJsZS4K KwkgKgorCSAqIFhYWCBXZSBjb3VudCB0aGUgcmFuZ2VzLCBhbmQgY291bnQgdGhlIHNwZWNp YWwgdHlwZXMgKG5vdCBzdW1tYXJpemVkLAorCSAqIGFsbC1udWxsIGFuZCBoYXMtbnVsbCku IFRoZSByZWd1bGFyIHJhbmdlcyBhcmUgYWNjdW11bGF0ZWQgaW50byBhbgorCSAqIGFycmF5 LCBzbyB0aGF0IHdlIGNhbiBjYWxjdWxhdGUgYWRkaXRpb25hbCBzdGF0aXN0aWNzIChvdmVy bGFwcywgaGl0cworCSAqIGZvciBzYW1wbGUgdHVwbGVzLCBldGMpLgorCSAqCisJICogWFhY IFRoaXMgbmVlZHMgcmV0aGlua2luZyB0byBtYWtlIGl0IHdvcmsgd2l0aCBsYXJnZSBpbmRl eGVzIHdpdGggbW9yZQorCSAqIHJhbmdlcyB0aGFuIHdlIGNhbiBmaXQgaW50byBtZW1vcnkg KHdvcmtfbWVtL21haW50ZW5hbmNlX3dvcmtfbWVtKS4KKwkgKi8KKwlmb3IgKGhlYXBCbGsg PSAwOyBoZWFwQmxrIDwgbmJsb2NrczsgaGVhcEJsayArPSBwYWdlc1BlclJhbmdlKQorCXsK KwkJYm9vbAkJZ290dHVwbGUgPSBmYWxzZTsKKwkJQnJpblR1cGxlICAqdHVwOworCQlPZmZz ZXROdW1iZXIgb2ZmOworCQlTaXplCQlzaXplOworCisJCXN0YXRzLT5uX3JhbmdlcysrOwor CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJdHVwID0gYnJpbkdldFR1cGxlRm9y SGVhcEJsb2NrKG9wYXF1ZS0+Ym9fcm1BY2Nlc3MsIGhlYXBCbGssICZidWYsCisJCQkJCQkJ CQkgICAmb2ZmLCAmc2l6ZSwgQlVGRkVSX0xPQ0tfU0hBUkUsCisJCQkJCQkJCQkgICBHZXRB Y3RpdmVTbmFwc2hvdCgpKTsKKwkJaWYgKHR1cCkKKwkJeworCQkJZ290dHVwbGUgPSB0cnVl OworCQkJYnR1cCA9IGJyaW5fY29weV90dXBsZSh0dXAsIHNpemUsIGJ0dXAsICZidHVwc3op OworCQkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCX0KKworCQkv KiBSYW5nZXMgd2l0aCBubyBpbmRleGVkIHR1cGxlIGFyZSBpZ25vcmVkIGZvciBvdmVybGFw IGFuYWx5c2lzLiAqLworCQlpZiAoIWdvdHR1cGxlKQorCQl7CisJCQljb250aW51ZTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCWR0dXAgPSBicmluX2RlZm9ybV90dXBsZShiZGVzYywgYnR1 cCwgZHR1cCk7CisJCQlpZiAoZHR1cC0+YnRfcGxhY2Vob2xkZXIpCisJCQl7CisJCQkJLyog UGxhY2Vob2xkZXJzIGNhbiBiZSBpZ25vcmVkIHRvbywgYXMgaWYgbm90IHN1bW1hcml6ZWQu ICovCisJCQkJY29udGludWU7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJQnJpblZhbHVl cyAqYnZhbDsKKworCQkJCWJ2YWwgPSAmZHR1cC0+YnRfY29sdW1uc1thdHRudW0gLSAxXTsK KworCQkJCS8qIE9LIHRoaXMgcmFuZ2UgaXMgc3VtbWFyaXplZCAqLworCQkJCXN0YXRzLT5u X3N1bW1hcml6ZWQrKzsKKworCQkJCWlmIChidmFsLT5idl9hbGxudWxscykKKwkJCQkJc3Rh dHMtPm5fYWxsX251bGxzKys7CisKKwkJCQlpZiAoYnZhbC0+YnZfaGFzbnVsbHMpCisJCQkJ CXN0YXRzLT5uX2hhc19udWxscysrOworCisJCQkJaWYgKCFidmFsLT5idl9hbGxudWxscykK KwkJCQl7CisJCQkJCUJyaW5SYW5nZSAgKnJhbmdlOworCisJCQkJCXJhbmdlID0gJnJhbmdl cy0+cmFuZ2VzW3Jhbmdlcy0+bnJhbmdlcysrXTsKKworCQkJCQlyYW5nZS0+Ymxrbm9fc3Rh cnQgPSBoZWFwQmxrOworCQkJCQlyYW5nZS0+Ymxrbm9fZW5kID0gaGVhcEJsayArIChwYWdl c1BlclJhbmdlIC0gMSk7CisKKwkJCQkJcmFuZ2UtPm1pbl92YWx1ZSA9IGJ2YWwtPmJ2X3Zh bHVlc1swXTsKKwkJCQkJcmFuZ2UtPm1heF92YWx1ZSA9IGJ2YWwtPmJ2X3ZhbHVlc1sxXTsK KwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlpZiAoYnVmICE9IEludmFsaWRCdWZmZXIpCisJ CVJlbGVhc2VCdWZmZXIoYnVmKTsKKworCS8qIGlmIHdlIGhhdmUgbm8gcmVndWxhciByYW5n ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAocmFuZ2VzLT5ucmFuZ2VzID09IDApCisJCWdvdG8g Y2xlYW51cDsKKworCS8qCisJICogQnVpbGQgYXV4aWxpYXJ5IGluZm8gdG8gb3B0aW1pemUg dGhlIGNhbGN1bGF0aW9uLgorCSAqCisJICogV2UgaGF2ZSByYW5nZXMgaW4gdGhlIGJsb2Nr bnVtIG9yZGVyLCBidXQgdGhhdCBpcyBub3QgdmVyeSB1c2VmdWwgd2hlbgorCSAqIGNhbGN1 bGF0aW5nIHdoaWNoIHJhbmdlcyBpbnRlcnN0ZWN0IC0gd2UgY291bGQgY3Jvc3MtY2hlY2sg ZXZlcnkgcmFuZ2UKKwkgKiBhZ2FpbnN0IGV2ZXJ5IG90aGVyIHJhbmdlLCBidXQgdGhhdCdz IE8oTl4yKSBhbmQgdGh1cyBtYXkgZ2V0IGV4dHJlbWVseQorCSAqIGV4cGVuc2l2ZSBwcmV0 dHkgcXVpY2spLgorCSAqCisJICogVG8gbWFrZSB0aGF0IGNoZWFwZXIsIHdlJ2xsIGJ1aWxk IHR3byBvcmRlcmluZ3MsIGFsbG93aW5nIHVzIHRvIHF1aWNrbHkKKwkgKiBlbGltaW5hdGUg cmFuZ2VzIHRoYXQgY2FuJ3QgcG9zc2libHkgb3ZlcmxhcDoKKwkgKgorCSAqIC0gbWlucmFu Z2VzID0gcmFuZ2VzIG9yZGVyZWQgYnkgbWluX3ZhbHVlCisJICogLSBtYXhyYW5nZXMgPSBy YW5nZXMgb3JkZXJlZCBieSBtYXhfdmFsdWUKKwkgKgorCSAqIFRvIGNvdW50IGludGVyc2Vj dGlvbnMsIHdlJ2xsIHRoZW4gd2FsayBtYXhyYW5nZXMgKGkuZS4gcmFuZ2VzIG9yZGVyZWQK KwkgKiBieSBtYXh2YWwpLCBhbmQgZm9yIGVhY2ggZm9sbG93aW5nIHJhbmdlIHdlJ2xsIGNo ZWNrIGlmIGl0IG92ZXJsYXBzLgorCSAqIElmIHllcywgd2UnbGwgcHJvY2VlZCB0byB0aGUg bmV4dCBvbmUsIHVudGlsIHdlIGZpbmQgYSByYW5nZSB0aGF0IGRvZXMKKwkgKiBub3Qgb3Zl cmxhcC4gQnV0IHRoZXJlIG1pZ2h0IGJlIGEgbGF0ZXIgcGFnZSBvdmVybGFwcGluZyAtIGJ1 dCB3ZSBjYW4KKwkgKiB1c2UgYSBtaW5faW5kZXhfbG93ZXN0IHRyYWNraW5nIHRoZSBtaW5p bXVtIG1pbl9pbmRleCBmb3IgImZ1dHVyZSIKKwkgKiByYW5nZXMgdG8gcXVpY2tseSBkZWNp ZGUgaWYgdGhlcmUgYXJlIHN1Y2ggcmFuZ2VzLiBJZiB0aGVyZSBhcmUgbm9uZSwKKwkgKiB3 ZSBjYW4gdGVybWluYXRlIChhbmQgcHJvY2VlZCB0byB0aGUgbmV4dCBtYXhyYW5nZXMgZWxl bWVudCksIGVsc2Ugd2UKKwkgKiBoYXZlIHRvIHByb2Nlc3MgYWRkaXRpb25hbCByYW5nZXMu CisJICoKKwkgKiBOb3RlOiBUaGlzIG9ubHkgY291bnRzIG92ZXJsYXBzIHdpdGggcmFuZ2Vz IHdpdGggbWF4X3ZhbHVlIGhpZ2hlciB0aGFuCisJICogdGhlIGN1cnJlbnQgb25lIC0gd2Ug d2FudCB0byBjb3VudCBhbGwsIGJ1dCB0aGUgb3ZlcmxhcHMgd2l0aCBwcmVjZWRpbmcKKwkg KiByYW5nZXMgaGF2ZSBhbHJlYWR5IGJlZW4gY291bnRlZCB3aGVuIHByb2Nlc3NpbmcgdGhv c2UgcHJlY2VkaW5nIHJhbmdlcy4KKwkgKiBUaGF0IGlzLCB3ZSdsbCBlbmQgdXAgd2l0aCBj b3VudGluZyBlYWNoIG92ZXJsYXAganVzdCBmb3Igb25lIG9mIHRob3NlCisJICogcmFuZ2Vz LCBzbyB3ZSBnZXQgb25seSAxLzIgdGhlIGNvdW50LgorCSAqCisJICogTm90ZTogV2UgZG9u J3QgY291bnQgdGhlIHJhbmdlIGFzIG92ZXJsYXBwaW5nIHdpdGggaXRzZWxmLiBUaGlzIG5l ZWRzCisJICogdG8gYmUgY29uc2lkZXJlZCBsYXRlciwgd2hlbiBhcHBseWluZyB0aGUgc3Rh dGlzdGljcy4KKwkgKgorCSAqCisJICogWFhYIFRoaXMgd2lsbCBub3Qgd29yayBmb3IgdmVy eSBtYW55IHJhbmdlcyAtIHdlIGNhbiBoYXZlIHVwIHRvIDJeMzIgb2YKKwkgKiB0aGVtLCBz byBhbGxvY2F0aW5nIGEgfjMyQiBzdHJ1Y3QgZm9yIGVhY2ggd291bGQgbmVlZCBhIGxvdCBv ZiBtZW1vcnkuCisJICogTm90IHN1cmUgd2hhdCB0byBkbyBhYm91dCB0aGF0LCBwZXJoYXBz IHdlIGNvdWxkIHNhbXBsZSBhIGNvdXBsZSByYW5nZXMKKwkgKiBhbmQgZG8gc29tZSBjYWxj dWxhdGlvbnMgYmFzZWQgb24gdGhhdD8gVGhhdCBpcywgd2UgY291bGQgcHJvY2VzcyBhbGwK KwkgKiByYW5nZXMgdXAgdG8gc29tZSBudW1iZXIgKHNheSwgc3RhdGlzdGljc190YXJnZXQg KiAzMDAsIGFzIGZvciByb3dzKSwgYW5kCisJICogdGhlbiBzYW1wbGUgcmFuZ2VzIGZvciBs YXJnZXIgdGFibGVzLiBUaGVuIHNvcnQgdGhlIHNhbXBsZWQgcmFuZ2VzLCBhbmQKKwkgKiB3 YWxrIHRocm91Z2ggYWxsIHJhbmdlcyBvbmNlLCBjb21wYXJpbmcgdGhlbSB0byB0aGUgc2Ft cGxlIGFuZCBjb3VudGluZworCSAqIG92ZXJsYXBzIChoYXZpbmcgdGhlbSBzb3J0ZWQgc2hv dWxkIGFsbG93IG1ha2luZyB0aGlzIHF1aXRlIGVmZmljaWVudCwKKwkgKiBJIHRoaW5rIC0g Zm9sbG93aW5nIGFsZ29yaXRobSBzaW1pbGFyIHRvIHRoZSBvbmUgaW1wbGVtZW50ZWQgaGVy ZSkuCisJICovCisKKwkvKiBpbmZvIGFib3V0IG9yZGVyaW5nIGZvciB0aGUgZGF0YSB0eXBl ICovCisJdHlwb2lkID0gZ2V0X2F0dHR5cGUoUmVsYXRpb25HZXRSZWxpZChpbmRleFJlbCks IGF0dG51bSk7CisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBvaWQsIFRZUEVD QUNIRV9DTVBfUFJPQ19GSU5GTyk7CisKKwkvKiBzaG91bGRuJ3QgaGFwcGVuLCBJIHRoaW5r IC0gd2UgdXNlIHRoaXMgdG8gYnVpbGQgdGhlIGluZGV4ICovCisJQXNzZXJ0KE9pZElzVmFs aWQodHlwY2FjaGUtPmNtcF9wcm9jX2ZpbmZvLmZuX29pZCkpOworCisJbWlucmFuZ2VzID0g KEJyaW5SYW5nZSAqKikgcGFsbG9jMChyYW5nZXMtPm5yYW5nZXMgKiBzaXplb2YoQnJpblJh bmdlcyAqKSk7CisJbWF4cmFuZ2VzID0gKEJyaW5SYW5nZSAqKikgcGFsbG9jMChyYW5nZXMt Pm5yYW5nZXMgKiBzaXplb2YoQnJpblJhbmdlcyAqKSk7CisKKwkvKgorCSAqIEJ1aWxkIGFu ZCBzb3J0IHRoZSByYW5nZXMgbWluX3ZhbHVlIC8gbWF4X3ZhbHVlIChqdXN0IHBvaW50ZXJz CisJICogdG8gdGhlIG1haW4gYXJyYXkpLiBUaGVuIGdvIGFuZCBhc3NpZ24gdGhlIG1pbl9p bmRleCB0byBlYWNoCisJICogcmFuZ2UsIGFuZCBmaW5hbGx5IHdhbGsgdGhlIG1heHJhbmdl cyBhcnJheSBiYWNrd2FyZHMgYW5kIHRyYWNrCisJICogdGhlIG1pbl9pbmRleF9sb3dlc3Qg YXMgbWluaW11bSBvZiAiZnV0dXJlIiBpbmRleGVzLgorCSAqLworCWZvciAoaW50IGkgPSAw OyBpIDwgcmFuZ2VzLT5ucmFuZ2VzOyBpKyspCisJeworCQltaW5yYW5nZXNbaV0gPSAmcmFu Z2VzLT5yYW5nZXNbaV07CisJCW1heHJhbmdlc1tpXSA9ICZyYW5nZXMtPnJhbmdlc1tpXTsK Kwl9CisKKwlxc29ydF9hcmcobWlucmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsIHNpemVvZihC cmluUmFuZ2UgKiksCisJCQkgIHJhbmdlX21pbnZhbF9jbXAsIHR5cGNhY2hlKTsKKworCXFz b3J0X2FyZyhtYXhyYW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgc2l6ZW9mKEJyaW5SYW5nZSAq KSwKKwkJCSAgcmFuZ2VfbWF4dmFsX2NtcCwgdHlwY2FjaGUpOworCisJLyoKKwkgKiBVcGRh dGUgdGhlIG1pbl9pbmRleCBmb3IgZWFjaCByYW5nZS4gSWYgdGhlIHZhbHVlcyBhcmUgZXF1 YWwsIGJlIHN1cmUgdG8KKwkgKiBwaWNrIHRoZSBsb3dlc3QgaW5kZXggd2l0aCB0aGF0IG1p bl92YWx1ZS4KKwkgKi8KKwltaW5yYW5nZXNbMF0tPm1pbl9pbmRleCA9IDA7CisJZm9yIChp bnQgaSA9IDE7IGkgPCByYW5nZXMtPm5yYW5nZXM7IGkrKykKKwl7CisJCWlmIChyYW5nZV92 YWx1ZXNfY21wKCZtaW5yYW5nZXNbaV0tPm1pbl92YWx1ZSwgJm1pbnJhbmdlc1tpLTFdLT5t aW5fdmFsdWUsIHR5cGNhY2hlKSA9PSAwKQorCQkJbWlucmFuZ2VzW2ldLT5taW5faW5kZXgg PSBtaW5yYW5nZXNbaS0xXS0+bWluX2luZGV4OworCQllbHNlCisJCQltaW5yYW5nZXNbaV0t Pm1pbl9pbmRleCA9IGk7CisJfQorCisJLyoKKwkgKiBXYWxrIHRoZSBtYXhyYW5nZXMgYmFj a3dhcmQgYW5kIGFzc2lnbiB0aGUgbWluX2luZGV4X2xvd2VzdCBhcworCSAqIGEgcnVubmlu ZyBtaW5pbXVtLgorCSAqLworCXByZXZfbWluX2luZGV4ID0gcmFuZ2VzLT5ucmFuZ2VzOwor CWZvciAoaW50IGkgPSAocmFuZ2VzLT5ucmFuZ2VzIC0gMSk7IGkgPj0gMDsgaS0tKQorCXsK KwkJbWF4cmFuZ2VzW2ldLT5taW5faW5kZXhfbG93ZXN0ID0gTWluKG1heHJhbmdlc1tpXS0+ bWluX2luZGV4LAorCQkJCQkJCQkJCQkgcHJldl9taW5faW5kZXgpOworCQlwcmV2X21pbl9p bmRleCA9IG1heHJhbmdlc1tpXS0+bWluX2luZGV4X2xvd2VzdDsKKwl9CisKKwkvKiBjYWxj dWxhdGUgYXZlcmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHBpbmcgcmFuZ2VzIGZvciBhbnkgcmFu Z2UgKi8KKwlicmluX21pbm1heF9jb3VudF9vdmVybGFwcyhtaW5yYW5nZXMsIHJhbmdlcy0+ bnJhbmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKKworCS8qIGNhbGN1bGF0ZSBtaW52YWwvbWF4 dmFsIHN0YXRzIChkaXN0aW5jdCB2YWx1ZXMgYW5kIGNvcnJlbGF0aW9uKSAqLworCWJyaW5f bWlubWF4X3ZhbHVlX3N0YXRzKG1pbnJhbmdlcywgbWF4cmFuZ2VzLAorCQkJCQkJCXJhbmdl cy0+bnJhbmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKKworCS8qCisJICogSWYgcHJvY2Vzc2lu ZyBleHByZXNzaW9uLCBwcmVwYXJlIGNvbnRleHQgdG8gZXZhbHVhdGUgaXQuCisJICoKKwkg KiBYWFggY2xlYW51cCAvIHJlZmFjdG9yaW5nIG5lZWRlZAorCSAqLworCWlmIChleHByKQor CXsKKwkJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCQllY29udGV4dCA9IEdl dFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCQkvKiBOZWVkIGEgc2xvdCB0byBo b2xkIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUsIHRvbyAqLworCQlzbG90ID0gTWFrZVNpbmds ZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbCksCisJCQkJCQkJCQkJ JlRUU09wc0hlYXBUdXBsZSk7CisKKwkJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBzY2Fu IHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCisJCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IHNsb3Q7CisKKwkJZXhwcnN0YXRlID0gRXhlY1ByZXBhcmVFeHByKGV4 cHIsIGVzdGF0ZSk7CisJfQorCisJLyogbWF0Y2ggdHVwbGVzIHRvIHJhbmdlcyAqLworCXsK KwkJaW50CQludmFsdWVzID0gMDsKKwkJRGF0dW0gICp2YWx1ZXMgPSAoRGF0dW0gKikgcGFs bG9jMChudW1yb3dzICogc2l6ZW9mKERhdHVtKSk7CisKKwkJVHVwbGVEZXNjCXRkZXNjID0g UmVsYXRpb25HZXREZXNjcihoZWFwUmVsKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IG51 bXJvd3M7IGkrKykKKwkJeworCQkJYm9vbAlpc251bGw7CisJCQlEYXR1bQl2YWx1ZTsKKwor CQkJaWYgKCFleHByKQorCQkJCXZhbHVlID0gaGVhcF9nZXRhdHRyKHJvd3NbaV0sIGhlYXBf YXR0bnVtLCB0ZGVzYywgJmlzbnVsbCk7CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkg KiBSZXNldCB0aGUgcGVyLXR1cGxlIGNvbnRleHQgZWFjaCB0aW1lLCB0byByZWNsYWltIGFu eSBjcnVmdAorCQkJCSAqIGxlZnQgYmVoaW5kIGJ5IGV2YWx1YXRpbmcgdGhlIHByZWRpY2F0 ZSBvciBpbmRleCBleHByZXNzaW9ucy4KKwkJCQkgKi8KKwkJCQlSZXNldEV4cHJDb250ZXh0 KGVjb250ZXh0KTsKKworCQkJCS8qIFNldCB1cCBmb3IgcHJlZGljYXRlIG9yIGV4cHJlc3Np b24gZXZhbHVhdGlvbiAqLworCQkJCUV4ZWNTdG9yZUhlYXBUdXBsZShyb3dzW2ldLCBzbG90 LCBmYWxzZSk7CisKKwkJCQl2YWx1ZSA9IEV4ZWNFdmFsRXhwcihleHByc3RhdGUsCisJCQkJ CQkJCQkgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLAorCQkJCQkJCQkJICZpc251 bGwpOworCQkJfQorCisJCQlpZiAoIWlzbnVsbCkKKwkJCQl2YWx1ZXNbbnZhbHVlcysrXSA9 IHZhbHVlOworCQl9CisKKwkJcXNvcnRfYXJnKHZhbHVlcywgbnZhbHVlcywgc2l6ZW9mKERh dHVtKSwgcmFuZ2VfdmFsdWVzX2NtcCwgdHlwY2FjaGUpOworCisJCS8qIG9wdGltaXplZCBh bGdvcml0aG0gKi8KKwkJYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlcyhyYW5n ZXMsCisJCQkJCQkJCQkJICAgbnVtcm93cywgcm93cywgbnZhbHVlcywgdmFsdWVzLAorCQkJ CQkJCQkJCSAgIHR5cGNhY2hlLCBzdGF0cyk7CisKKwkJYnJpbl9taW5tYXhfaW5jcmVtZW50 X3N0YXRzKG1pbnJhbmdlcywgbWF4cmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsCisJCQkJCQkJ CQl2YWx1ZXMsIG52YWx1ZXMsIHR5cGNhY2hlLCBzdGF0cyk7CisJfQorCisJLyogWFhYIGNs ZWFudXAgLyByZWZhY3RvcmluZyBuZWVkZWQgKi8KKwlpZiAoZXhwcikKKwl7CisJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCUZyZWVFeGVjdXRvclN0YXRlKGVz dGF0ZSk7CisJfQorCisJLyoKKwkgKiBQb3NzaWJseSBxdWl0ZSBsYXJnZSwgc28gcmVsZWFz ZSBleHBsaWNpdGx5IGFuZCBkb24ndCByZWx5CisJICogb24gdGhlIG1lbW9yeSBjb250ZXh0 IHRvIGRpc2NhcmQgdGhpcy4KKwkgKi8KKwlwZnJlZShtaW5yYW5nZXMpOworCXBmcmVlKG1h eHJhbmdlcyk7CisKK2NsZWFudXA6CisJLyogcG9zc2libHkgcXVpdGUgbGFyZ2UsIHNvIHJl bGVhc2UgZXhwbGljaXRseSAqLworCXBmcmVlKHJhbmdlcyk7CisKKwkvKiBmcmVlIHRoZSBC cmluT3BhcXVlLCBqdXN0IGxpa2UgYnJpbmVuZHNjYW4oKSB3b3VsZCAqLworCWJyaW5SZXZt YXBUZXJtaW5hdGUob3BhcXVlLT5ib19ybUFjY2Vzcyk7CisJYnJpbl9mcmVlX2Rlc2Mob3Bh cXVlLT5ib19iZGVzYyk7CisKKwlQR19SRVRVUk5fUE9JTlRFUihzdGF0cyk7Cit9CisKIC8q CiAgKiBDYWNoZSBhbmQgcmV0dXJuIHRoZSBwcm9jZWR1cmUgZm9yIHRoZSBnaXZlbiBzdHJh dGVneS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggNjU3NTA5NThiYjIuLjk4 NGE3Zjg1Y2RhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0xNiw2ICsxNiw3IEBA CiAKICNpbmNsdWRlIDxtYXRoLmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MvYnJpbl9pbnRlcm5h bC5oIgogI2luY2x1ZGUgImFjY2Vzcy9kZXRvYXN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dl bmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgpAQCAtMzAsNiArMzEsNyBA QAogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5k ZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNw YWNlLmgiCkBAIC04MSw2ICs4Myw3IEBAIHR5cGVkZWYgc3RydWN0IEFubEluZGV4RGF0YQog CiAvKiBEZWZhdWx0IHN0YXRpc3RpY3MgdGFyZ2V0IChHVUMgcGFyYW1ldGVyKSAqLwogaW50 CQkJZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldCA9IDEwMDsKK2Jvb2wJCWVuYWJsZV9pbmRl eGFtX3N0YXRzID0gZmFsc2U7CiAKIC8qIEEgZmV3IHZhcmlhYmxlcyB0aGF0IGRvbid0IHNl ZW0gd29ydGggcGFzc2luZyBhcm91bmQgYXMgcGFyYW1ldGVycyAqLwogc3RhdGljIE1lbW9y eUNvbnRleHQgYW5sX2NvbnRleHQgPSBOVUxMOwpAQCAtOTIsNyArOTUsNyBAQCBzdGF0aWMg dm9pZCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsCiAJCQkJCQkgICBBY3F1aXJl U2FtcGxlUm93c0Z1bmMgYWNxdWlyZWZ1bmMsIEJsb2NrTnVtYmVyIHJlbHBhZ2VzLAogCQkJ CQkJICAgYm9vbCBpbmgsIGJvb2wgaW5fb3V0ZXJfeGFjdCwgaW50IGVsZXZlbCk7CiBzdGF0 aWMgdm9pZCBjb21wdXRlX2luZGV4X3N0YXRzKFJlbGF0aW9uIG9uZXJlbCwgZG91YmxlIHRv dGFscm93cywKLQkJCQkJCQkJQW5sSW5kZXhEYXRhICppbmRleGRhdGEsIGludCBuaW5kZXhl cywKKwkJCQkJCQkJQW5sSW5kZXhEYXRhICppbmRleGRhdGEsIFJlbGF0aW9uICppbmRleFJl bHMsIGludCBuaW5kZXhlcywKIAkJCQkJCQkJSGVhcFR1cGxlICpyb3dzLCBpbnQgbnVtcm93 cywKIAkJCQkJCQkJTWVtb3J5Q29udGV4dCBjb2xfY29udGV4dCk7CiBzdGF0aWMgVmFjQXR0 clN0YXRzICpleGFtaW5lX2F0dHJpYnV0ZShSZWxhdGlvbiBvbmVyZWwsIGludCBhdHRudW0s CkBAIC00NTMsMTUgKzQ1Niw0OSBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWws IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQl7CiAJCQlBbmxJbmRleERhdGEgKnRoaXNkYXRh ID0gJmluZGV4ZGF0YVtpbmRdOwogCQkJSW5kZXhJbmZvICAqaW5kZXhJbmZvOworCQkJYm9v bAkJY29sbGVjdEFtU3RhdHM7CisJCQlPaWQJCQlyZWdwcm9jOwogCiAJCQl0aGlzZGF0YS0+ aW5kZXhJbmZvID0gaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oSXJlbFtpbmRdKTsKIAkJ CXRoaXNkYXRhLT50dXBsZUZyYWN0ID0gMS4wOyAvKiBmaXggbGF0ZXIgaWYgcGFydGlhbCAq LwotCQkJaWYgKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMICYmIHZhX2NvbHMg PT0gTklMKQorCisJCQkvKgorCQkJICogU2hvdWxkIHdlIGNvbGxlY3QgQU0tc3BlY2lmaWMg c3RhdGlzdGljcyBmb3IgYW55IG9mIHRoZSBjb2x1bW5zPworCQkJICoKKwkJCSAqIElmIEFN LXNwZWNpZmljIHN0YXRpc3RpY3MgYXJlIGVuYWJsZWQgKHVzaW5nIGEgR1VDKSwgc2VlIGlm IHdlCisJCQkgKiBoYXZlIGFuIG9wdGlvbmFsIHN1cHBvcnQgcHJvY2VkdXJlIHRvIGJ1aWxk IHRoZSBzdGF0aXN0aWNzLgorCQkJICoKKwkJCSAqIElmIHRoZXJlJ3MgYW55IHN1Y2ggYXR0 cmlidXRlLCB3ZSBqdXN0IGZvcmNlIGJ1aWxkaW5nIHN0YXRzCisJCQkgKiBldmVuIGZvciBy ZWd1bGFyIGluZGV4IGtleXMgKG5vdCBqdXN0IGV4cHJlc3Npb25zKSBhbmQgaW5kZXhlcwor CQkJICogd2l0aG91dCBwcmVkaWNhdGVzLiBJdCdkIGJlIGdvb2QgdG8gb25seSBidWlsZCB0 aGUgQU0gc3RhdHMsIGJ1dAorCQkJICogZm9yIG5vdyB0aGlzIGlzIGdvb2QgZW5vdWdoLgor CQkJICoKKwkJCSAqIFhYWCBUaGUgR1VDIGlzIHRoZXJlIG1vcmVzdGx5IHRvIG1ha2UgaXQg ZWFzaWVyIHRvIGVuYWJsZS9kaXNhYmxlCisJCQkgKiB0aGlzIGR1cmluZyBkZXZlbG9wbWVu dC4KKwkJCSAqCisJCQkgKiBGSVhNRSBPbmx5IGJ1aWxkIHRoZSBBTSBzdGF0aXN0aWNzLCBu b3QgdGhlIG90aGVyIHN0YXRzLiBBbmQgb25seQorCQkJICogZG8gdGhhdCBmb3IgdGhlIGtl eXMgd2l0aCB0aGUgb3B0aW9uYWwgcHJvY2VkdXJlLiBub3QgYWxsIG9mIHRoZW0uCisJCQkg Ki8KKwkJCWNvbGxlY3RBbVN0YXRzID0gZmFsc2U7CisJCQlpZiAoZW5hYmxlX2luZGV4YW1f c3RhdHMgJiYgKElyZWxbaW5kXS0+cmRfaW5kYW0tPmFtc3RhdHNwcm9jbnVtICE9IDApKQor CQkJeworCQkJCWZvciAoaW50IGogPSAwOyBqIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0 dHJzOyBqKyspCisJCQkJeworCQkJCQlyZWdwcm9jID0gaW5kZXhfZ2V0cHJvY2lkKElyZWxb aW5kXSwgKGorMSksIElyZWxbaW5kXS0+cmRfaW5kYW0tPmFtc3RhdHNwcm9jbnVtKTsKKwkJ CQkJaWYgKE9pZElzVmFsaWQocmVncHJvYykpCisJCQkJCXsKKwkJCQkJCWNvbGxlY3RBbVN0 YXRzID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlp ZiAoKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMIHx8IGNvbGxlY3RBbVN0YXRz KSAmJiB2YV9jb2xzID09IE5JTCkKIAkJCXsKIAkJCQlMaXN0Q2VsbCAgICppbmRleHByX2l0 ZW0gPSBsaXN0X2hlYWQoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyk7CiAKIAkJCQl0aGlz ZGF0YS0+dmFjYXR0cnN0YXRzID0gKFZhY0F0dHJTdGF0cyAqKikKLQkJCQkJcGFsbG9jKGlu ZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyAqIHNpemVvZihWYWNBdHRyU3RhdHMgKikpOwor CQkJCQlwYWxsb2MwKGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyAqIHNpemVvZihWYWNB dHRyU3RhdHMgKikpOwogCQkJCXRjbnQgPSAwOwogCQkJCWZvciAoaSA9IDA7IGkgPCBpbmRl eEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKIAkJCQl7CkBAIC00ODIsNiArNTE5LDEy IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJCQkJCQlpZiAodGhpc2RhdGEtPnZhY2F0dHJzdGF0c1t0Y250XSAhPSBOVUxMKQog CQkJCQkJCXRjbnQrKzsKIAkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCXRoaXNk YXRhLT52YWNhdHRyc3RhdHNbdGNudF0gPQorCQkJCQkJCWV4YW1pbmVfYXR0cmlidXRlKEly ZWxbaW5kXSwgaSArIDEsIE5VTEwpOworCQkJCQkJdGNudCsrOworCQkJCQl9CiAJCQkJfQog CQkJCXRoaXNkYXRhLT5hdHRyX2NudCA9IHRjbnQ7CiAJCQl9CkBAIC01ODcsNyArNjMwLDcg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAogCQlpZiAobmluZGV4ZXMgPiAwKQogCQkJY29tcHV0ZV9pbmRleF9zdGF0cyhvbmVy ZWwsIHRvdGFscm93cywKLQkJCQkJCQkJaW5kZXhkYXRhLCBuaW5kZXhlcywKKwkJCQkJCQkJ aW5kZXhkYXRhLCBJcmVsLCBuaW5kZXhlcywKIAkJCQkJCQkJcm93cywgbnVtcm93cywKIAkJ CQkJCQkJY29sX2NvbnRleHQpOwogCkBAIC04MjEsMTIgKzg2NCw5MyBAQCBkb19hbmFseXpl X3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCWFubF9jb250 ZXh0ID0gTlVMTDsKIH0KIAorLyoKKyAqIGNvbXB1dGVfaW5kZXhhbV9zdGF0cworICoJCUNh bGwgdGhlIG9wdGlvbmFsIHByb2NlZHVyZSB0byBjb21wdXRlIEFNLXNwZWNpZmljIHN0YXRp c3RpY3MuCisgKgorICogV2Ugc2ltcGx5IGNhbGwgdGhlIHByb2NlZHVyZSwgd2hpY2ggaXMg ZXhwZWN0ZWQgdG8gcHJvZHVjZSBhIGJ5dGVhIHZhbHVlLgorICoKKyAqIEF0IHRoZSBtb21l bnQgdGhpcyBvbmx5IGRlYWxzIHdpdGggQlJJTiBpbmRleGVzLCBhbmQgYmFpbHMgb3V0IGZv ciBvdGhlcgorICogYWNjZXNzIG1ldGhvZHMsIGJ1dCBpdCBzaG91bGQgYmUgZ2VuZXJpYyAt IHVzZSBzb21ldGhpbmcgbGlrZSBhbW9wdHNwcm9jbnVtCisgKiBhbmQganVzdCBjaGVjayBp ZiB0aGUgcHJvY2VkdXJlIGV4aXN0cy4KKyAqLworc3RhdGljIHZvaWQKK2NvbXB1dGVfaW5k ZXhhbV9zdGF0cyhSZWxhdGlvbiBvbmVyZWwsCisJCQkJCSAgUmVsYXRpb24gaW5kZXhSZWws IEluZGV4SW5mbyAqaW5kZXhJbmZvLAorCQkJCQkgIGRvdWJsZSB0b3RhbHJvd3MsIEFubElu ZGV4RGF0YSAqaW5kZXhkYXRhLAorCQkJCQkgIEhlYXBUdXBsZSAqcm93cywgaW50IG51bXJv d3MpCit7CisJaW50CQlleHByaWR4OworCisJaWYgKCFlbmFibGVfaW5kZXhhbV9zdGF0cykK KwkJcmV0dXJuOworCisJLyogaWdub3JlIGluZGV4IEFNcyB3aXRob3V0IHRoZSBvcHRpb25h bCBwcm9jZWR1cmUgKi8KKwlpZiAoaW5kZXhSZWwtPnJkX2luZGFtLT5hbXN0YXRzcHJvY251 bSA9PSAwKQorCQlyZXR1cm47CisKKwkvKgorCSAqIExvb2sgYXQgYXR0cmlidXRlcywgYW5k IGNhbGN1bGF0ZSBzdGF0cyBmb3IgdGhvc2UgdGhhdCBoYXZlIHRoZQorCSAqIG9wdGlvbmFs IHN0YXRzIHByb2MgZm9yIHRoZSBvcGZhbWlseS4KKwkgKi8KKwlleHByaWR4ID0gMDsKKwlm b3IgKGludCBpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQor CXsKKwkJQXR0ck51bWJlcgkJYXR0bm8gPSAoaSArIDEpOworCQlBdHRyTnVtYmVyCQlhdHRu dW0gPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbaV07CS8qIGhlYXAgYXR0bnVt ICovCisJCVJlZ1Byb2NlZHVyZQlyZWdwcm9jOworCQlGbWdySW5mbwkgICAqc3RhdHNwcm9j OworCQlEYXR1bQkJCWRhdHVtOworCQlWYWNBdHRyU3RhdHMgICAqc3RhdHM7CisJCU1lbW9y eUNvbnRleHQJb2xkY3h0OworCQlOb2RlCQkgICAqZXhwciA9IE5VTEw7CisKKwkJaWYgKCFB dHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKGF0dG51bSkpCisJCXsKKwkJCWV4cHIgPSAoTm9kZSAq KSBsaXN0X250aChSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWwpLAorCQkJ CQkJCQkJIGV4cHJpZHgpOworCQkJZXhwcmlkeCsrOworCQl9CisKKwkJLyogZG8gdGhpcyBm aXJzdCwgYXMgaXQgZG9lc24ndCBmYWlsIHdoZW4gcHJvYyBub3QgZGVmaW5lZCAqLworCQly ZWdwcm9jID0gaW5kZXhfZ2V0cHJvY2lkKGluZGV4UmVsLCBhdHRubywgaW5kZXhSZWwtPnJk X2luZGFtLT5hbXN0YXRzcHJvY251bSk7CisKKwkJLyogaWdub3JlIG9wY2xhc3NlcyB3aXRo b3V0IHRoZSBvcHRpb25hbCBwcm9jZWR1cmUgKi8KKwkJaWYgKCFSZWdQcm9jZWR1cmVJc1Zh bGlkKHJlZ3Byb2MpKQorCQkJY29udGludWU7CisKKwkJc3RhdHNwcm9jID0gaW5kZXhfZ2V0 cHJvY2luZm8oaW5kZXhSZWwsIGF0dG5vLCBpbmRleFJlbC0+cmRfaW5kYW0tPmFtc3RhdHNw cm9jbnVtKTsKKwkJQXNzZXJ0KHN0YXRzcHJvYyAhPSBOVUxMKTsKKworCQlzdGF0cyA9IGlu ZGV4ZGF0YS0+dmFjYXR0cnN0YXRzW2ldOworCisJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhzdGF0cy0+YW5sX2NvbnRleHQpOworCisJCS8qIGNhbGwgdGhlIHByb2MsIGxl dCB0aGUgQU0gY2FsY3VsYXRlIHdoYXRldmVyIGl0IHdhbnRzICovCisJCS8qIFhYWCBtYXli ZSB3ZSBzaG91bGQganVzdCBwYXNzIHRoZSBpbmRleCBhdHRubyBhbmQgbGVhdmUgdGhlCisJ CSAqIGV4cHJlc3Npb24gaGFuZGxpbmcgdXAgdG8gdGhlIHByb2NlZHVyZT8gKi8KKwkJZGF0 dW0gPSBGdW5jdGlvbkNhbGw3Q29sbChzdGF0c3Byb2MsCisJCQkJCQkJCSAgSW52YWxpZE9p ZCwgLyogRklYTUUgY29ycmVjdCBjb2xsYXRpb24gKi8KKwkJCQkJCQkJICBQb2ludGVyR2V0 RGF0dW0ob25lcmVsKSwKKwkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0oaW5kZXhSZWwpLAor CQkJCQkJCQkgIEludDE2R2V0RGF0dW0oYXR0bm8pLAorCQkJCQkJCQkgIEludDE2R2V0RGF0 dW0oYXR0bnVtKSwKKwkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0oZXhwciksCisJCQkJCQkJ CSAgUG9pbnRlckdldERhdHVtKHJvd3MpLAorCQkJCQkJCQkgIEludDMyR2V0RGF0dW0obnVt cm93cykpOworCisJCXN0YXRzLT5zdGFpbmRleGFtID0gZGF0dW07CisKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJfQorfQorCiAvKgogICogQ29tcHV0ZSBzdGF0aXN0 aWNzIGFib3V0IGluZGV4ZXMgb2YgYSByZWxhdGlvbgogICovCiBzdGF0aWMgdm9pZAogY29t cHV0ZV9pbmRleF9zdGF0cyhSZWxhdGlvbiBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCi0J CQkJCUFubEluZGV4RGF0YSAqaW5kZXhkYXRhLCBpbnQgbmluZGV4ZXMsCisJCQkJCUFubElu ZGV4RGF0YSAqaW5kZXhkYXRhLCBSZWxhdGlvbiAqaW5kZXhSZWxzLCBpbnQgbmluZGV4ZXMs CiAJCQkJCUhlYXBUdXBsZSAqcm93cywgaW50IG51bXJvd3MsCiAJCQkJCU1lbW9yeUNvbnRl eHQgY29sX2NvbnRleHQpCiB7CkBAIC04NDYsNiArOTcwLDcgQEAgY29tcHV0ZV9pbmRleF9z dGF0cyhSZWxhdGlvbiBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCiAJewogCQlBbmxJbmRl eERhdGEgKnRoaXNkYXRhID0gJmluZGV4ZGF0YVtpbmRdOwogCQlJbmRleEluZm8gICppbmRl eEluZm8gPSB0aGlzZGF0YS0+aW5kZXhJbmZvOworCQlSZWxhdGlvbglpbmRleFJlbCA9IGlu ZGV4UmVsc1tpbmRdOwogCQlpbnQJCQlhdHRyX2NudCA9IHRoaXNkYXRhLT5hdHRyX2NudDsK IAkJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJCUVTdGF0ZQkgICAqZXN0YXRlOwpAQCAtODU4 LDYgKzk4MywxMyBAQCBjb21wdXRlX2luZGV4X3N0YXRzKFJlbGF0aW9uIG9uZXJlbCwgZG91 YmxlIHRvdGFscm93cywKIAkJCQkJcm93bm87CiAJCWRvdWJsZQkJdG90YWxpbmRleHJvd3M7 CiAKKwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIEJSSU4gaW5kZXgsIHRyeSBjYWxsaW5nIGEg cHJvY2VkdXJlIHRvIGNvbGxlY3QKKwkJICogZXh0cmEgb3BmYW1pbHktc3BlY2lmaWMgc3Rh dGlzdGljcyAoaWYgcHJvY2VkdXJlIGRlZmluZWQpLgorCQkgKi8KKwkJY29tcHV0ZV9pbmRl eGFtX3N0YXRzKG9uZXJlbCwgaW5kZXhSZWwsIGluZGV4SW5mbywgdG90YWxyb3dzLAorCQkJ CQkJCSAgdGhpc2RhdGEsIHJvd3MsIG51bXJvd3MpOworCiAJCS8qIElnbm9yZSBpbmRleCBp ZiBubyBjb2x1bW5zIHRvIGFuYWx5emUgYW5kIG5vdCBwYXJ0aWFsICovCiAJCWlmIChhdHRy X2NudCA9PSAwICYmIGluZGV4SW5mby0+aWlfUHJlZGljYXRlID09IE5JTCkKIAkJCWNvbnRp bnVlOwpAQCAtMTY2MSw2ICsxNzkzLDEzIEBAIHVwZGF0ZV9hdHRzdGF0cyhPaWQgcmVsaWQs IGJvb2wgaW5oLCBpbnQgbmF0dHMsIFZhY0F0dHJTdGF0cyAqKnZhY2F0dHJzdGF0cykKIAkJ dmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX3N0YW51bGxmcmFjIC0gMV0gPSBGbG9hdDRHZXRE YXR1bShzdGF0cy0+c3RhbnVsbGZyYWMpOwogCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNf c3Rhd2lkdGggLSAxXSA9IEludDMyR2V0RGF0dW0oc3RhdHMtPnN0YXdpZHRoKTsKIAkJdmFs dWVzW0FudW1fcGdfc3RhdGlzdGljX3N0YWRpc3RpbmN0IC0gMV0gPSBGbG9hdDRHZXREYXR1 bShzdGF0cy0+c3RhZGlzdGluY3QpOworCisJCS8qIG9wdGlvbmFsIEFNLXNwZWNpZmljIHN0 YXRzICovCisJCWlmIChEYXR1bUdldFBvaW50ZXIoc3RhdHMtPnN0YWluZGV4YW0pICE9IE5V TEwpCisJCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNfc3RhaW5kZXhhbSAtIDFdID0gc3Rh dHMtPnN0YWluZGV4YW07CisJCWVsc2UKKwkJCW51bGxzW0FudW1fcGdfc3RhdGlzdGljX3N0 YWluZGV4YW0gLSAxXSA9IHRydWU7CisKIAkJaSA9IEFudW1fcGdfc3RhdGlzdGljX3N0YWtp bmQxIC0gMTsKIAkJZm9yIChrID0gMDsgayA8IFNUQVRJU1RJQ19OVU1fU0xPVFM7IGsrKykK IAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0 cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCmluZGV4IDU3 MmQ5YjQ0NjQzLi45N2ZlZTc3ZWE1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9leHRlbmRlZF9zdGF0cy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0 ZW5kZWRfc3RhdHMuYwpAQCAtMjM3MCw2ICsyMzcwLDggQEAgc2VyaWFsaXplX2V4cHJfc3Rh dHMoQW5sRXhwckRhdGEgKmV4cHJkYXRhLCBpbnQgbmV4cHJzKQogCQl2YWx1ZXNbQW51bV9w Z19zdGF0aXN0aWNfc3RhbnVsbGZyYWMgLSAxXSA9IEZsb2F0NEdldERhdHVtKHN0YXRzLT5z dGFudWxsZnJhYyk7CiAJCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19zdGF3aWR0aCAtIDFd ID0gSW50MzJHZXREYXR1bShzdGF0cy0+c3Rhd2lkdGgpOwogCQl2YWx1ZXNbQW51bV9wZ19z dGF0aXN0aWNfc3RhZGlzdGluY3QgLSAxXSA9IEZsb2F0NEdldERhdHVtKHN0YXRzLT5zdGFk aXN0aW5jdCk7CisJCW51bGxzW0FudW1fcGdfc3RhdGlzdGljX3N0YWluZGV4YW0gLSAxXSA9 IHRydWU7CisKIAkJaSA9IEFudW1fcGdfc3RhdGlzdGljX3N0YWtpbmQxIC0gMTsKIAkJZm9y IChrID0gMDsgayA8IFNUQVRJU1RJQ19OVU1fU0xPVFM7IGsrKykKIAkJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvc2VsZnVuY3MuYwppbmRleCBmZTM3ZTY1YWYwMy4uY2MyZjNlZjAxMmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC03ODM0LDYgKzc4MzQsNyBAQCBicmluY29z dGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsIGRvdWJsZSBs b29wX2NvdW50LAogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxpc3RDZWxsICAgKmw7CiAJVmFy aWFibGVTdGF0RGF0YSB2YXJkYXRhOworCWRvdWJsZQkJYXZlcmFnZU92ZXJsYXBzOwogCiAJ QXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwogCkBAIC03ODgxLDYgKzc4 ODIsNyBAQCBicmluY29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGgg KnBhdGgsIGRvdWJsZSBsb29wX2NvdW50LAogCSAqIGNvcnJlbGF0aW9uIHN0YXRpc3RpY3Ms IHdlIHdpbGwga2VlcCBpdCBhcyAwLgogCSAqLwogCSppbmRleENvcnJlbGF0aW9uID0gMDsK KwlhdmVyYWdlT3ZlcmxhcHMgPSAwLjA7CiAKIAlmb3JlYWNoKGwsIHBhdGgtPmluZGV4Y2xh dXNlcykKIAl7CkBAIC03ODkwLDYgKzc4OTIsMzYgQEAgYnJpbmNvc3Rlc3RpbWF0ZShQbGFu bmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAkJ LyogYXR0ZW1wdCB0byBsb29rdXAgc3RhdHMgaW4gcmVsYXRpb24gZm9yIHRoaXMgaW5kZXgg Y29sdW1uICovCiAJCWlmIChhdHRudW0gIT0gMCkKIAkJeworCQkJLyoKKwkJCSAqIElmIEFN LXNwZWNpZmljIHN0YXRpc3RpY3MgYXJlIGVuYWJsZWQsIHRyeSBsb29raW5nIHVwIHRoZSBz dGF0cworCQkJICogZm9yIHRoZSBpbmRleCBrZXkuIFdlIG9ubHkgaGF2ZSB0aGlzIGZvciBt aW5tYXggb3BjbGFzc2VzLCBzbworCQkJICogd2UganVzdCBjYXN0IGl0IGxpa2UgdGhhdC4g QnV0IG90aGVyIEJSSU4gb3BjbGFzc2VzIG1pZ2h0IG5lZWQKKwkJCSAqIG90aGVyIHN0YXRz IHNvIGVpdGhlciB3ZSBuZWVkIHRvIGFic3RyYWN0IHRoaXMgc29tZWhvdywgb3IgbWF5YmUK KwkJCSAqIGp1c3QgY29sbGVjdCBhIHN1ZmZpY2llbnRseSBnZW5lcmljIHN0YXRzIGZvciBh bGwgQlJJTiBpbmRleGVzLgorCQkJICoKKwkJCSAqIFhYWCBNYWtlIHRoaXMgbm9uLW1pbm1h eCBzcGVjaWZpYy4KKwkJCSAqLworCQkJaWYgKGVuYWJsZV9pbmRleGFtX3N0YXRzKQorCQkJ eworCQkJCUJyaW5NaW5tYXhTdGF0cyAgKmFtc3RhdHMKKwkJCQkJPSAoQnJpbk1pbm1heFN0 YXRzICopIGdldF9hdHRpbmRleGFtKGluZGV4LT5pbmRleG9pZCwgYXR0bnVtKTsKKworCQkJ CWlmIChhbXN0YXRzKQorCQkJCXsKKwkJCQkJZWxvZyhERUJVRzEsICJmb3VuZCBBTSBzdGF0 czogYXR0bnVtICVkIG5fcmFuZ2VzICVsbGQgbl9zdW1tYXJpemVkICVsbGQgbl9hbGxfbnVs bHMgJWxsZCBuX2hhc19udWxscyAlbGxkIGF2Z19vdmVybGFwcyAlZiIsCisJCQkJCQkgYXR0 bnVtLCAobG9uZyBsb25nKWFtc3RhdHMtPm5fcmFuZ2VzLCAobG9uZyBsb25nKWFtc3RhdHMt Pm5fc3VtbWFyaXplZCwKKwkJCQkJCSAobG9uZyBsb25nKWFtc3RhdHMtPm5fYWxsX251bGxz LCAobG9uZyBsb25nKWFtc3RhdHMtPm5faGFzX251bGxzLAorCQkJCQkJIGFtc3RhdHMtPmF2 Z19vdmVybGFwcyk7CisKKwkJCQkJLyoKKwkJCQkJICogVGhlIG9ubHkgdGhpbmcgd2UgdXNl IGF0IHRoZSBtb21lbnQgaXMgdGhlIGF2ZXJhZ2UgbnVtYmVyCisJCQkJCSAqIG9mIG92ZXJs YXBzIGZvciBhIHNpbmdsZSByYW5nZS4gVXNlIHRoZSBvdGhlciBzdHVmZiB0b28uCisJCQkJ CSAqLworCQkJCQlhdmVyYWdlT3ZlcmxhcHMgPSBNYXgoYXZlcmFnZU92ZXJsYXBzLAorCQkJ CQkJCQkJCSAgMS4wICsgYW1zdGF0cy0+YXZnX292ZXJsYXBzKTsKKwkJCQl9CisJCQl9CisK IAkJCS8qIFNpbXBsZSB2YXJpYWJsZSAtLSBsb29rIHRvIHN0YXRzIGZvciB0aGUgdW5kZXJs eWluZyB0YWJsZSAqLwogCQkJaWYgKGdldF9yZWxhdGlvbl9zdGF0c19ob29rICYmCiAJCQkJ KCpnZXRfcmVsYXRpb25fc3RhdHNfaG9vaykgKHJvb3QsIHJ0ZSwgYXR0bnVtLCAmdmFyZGF0 YSkpCkBAIC03OTcwLDYgKzgwMDIsMTQgQEAgYnJpbmNvc3Rlc3RpbWF0ZShQbGFubmVySW5m byAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAkJCQkJCQkJ CQkJIGJhc2VyZWwtPnJlbGlkLAogCQkJCQkJCQkJCQkgSk9JTl9JTk5FUiwgTlVMTCk7CiAK KwkvKgorCSAqIFhYWCBDYW4gd2UgY29tYmluZSBxdWFsU2VsZWN0aXZpdHkgd2l0aCB0aGUg YXZlcmFnZSBudW1iZXIgb2YgbWF0Y2hpbmcKKwkgKiByYW5nZXMgcGVyIHZhbHVlPyBxdWFs U2VsZWN0aXZpdHkgZXN0aW1hdGVzIGhvdyBtYW55IHR1cGxlcyBhciB3ZQorCSAqIGdvaW5n IHRvIG1hdGNoLCBhbmQgYXZlcmFnZSBudW1iZXIgb2YgbWF0Y2hlcyBzYXlzIGhvdyBtYW55 IHJhbmdlcworCSAqIHdpbGwgZWFjaCBvZiB0aG9zZSBtYXRjaCBvbiBhdmVyYWdlLiBXZSBk b24ndCBrbm93IGhvdyBtYW55IHdpbGwKKwkgKiBiZSBkdXBsaWNhdGUsIGJ1dCBpdCBnaXZl cyB1cyBhIHdvcnN0LWNhc2UgZXN0aW1hdGUsIGF0IGxlYXN0LgorCSAqLworCiAJLyoKIAkg KiBOb3cgY2FsY3VsYXRlIHRoZSBtaW5pbXVtIHBvc3NpYmxlIHJhbmdlcyB3ZSBjb3VsZCBt YXRjaCB3aXRoIGlmIGFsbCBvZgogCSAqIHRoZSByb3dzIHdlcmUgaW4gdGhlIHBlcmZlY3Qg b3JkZXIgaW4gdGhlIHRhYmxlJ3MgaGVhcC4KQEAgLTc5ODYsNiArODAyNiwyNSBAQCBicmlu Y29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsIGRvdWJs ZSBsb29wX2NvdW50LAogCWVsc2UKIAkJZXN0aW1hdGVkUmFuZ2VzID0gTWluKG1pbmltYWxS YW5nZXMgLyAqaW5kZXhDb3JyZWxhdGlvbiwgaW5kZXhSYW5nZXMpOwogCisJZWxvZyhERUJV RzEsICJiZWZvcmUgaW5kZXggQU0gc3RhdHM6IGNlc3RpbWF0ZWRSYW5nZXMgPSAlZiIsIGVz dGltYXRlZFJhbmdlcyk7CisKKwkvKgorCSAqIElmIHdlIGZvdW5kIHNvbWUgQU0gc3RhdHMs IGxvb2sgYXQgYXZlcmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHBpbmcgcmFuZ2VzLAorCSAqIGFu ZCBhcHBseSB0aGF0IHRvIHRoZSBjdXJyZW50bHkgZXN0aW1hdGVkIHJhbmdlcy4KKwkgKgor CSAqIFhYWCBXZSBwcmV0dHkgbXVjaCBjb21iaW5lIHRoaXMgd2l0aCBjb3JyZWxhdGlvbiBp bmZvIChiZWNhdXNlIGl0IHdhcworCSAqIGFscmVhZHkgYXBwbGllZCBpbiB0aGUgZXN0aW1h dGVkUmFuZ2VzIGZvcm11bGEgYWJvdmUpLCB3aGljaCBtaWdodCBiZQorCSAqIG92ZXJseSBw ZXNzaW1pc3RpYy4gVGhlIG92ZXJsYXBzIHN0YXRzIHNlZW1zIHNvbWV3aGF0IHJlZHVuZGFu dCB3aXRoCisJICogdGhlIGNvcnJlbGF0aW9uLCBzbyBtYXliZSB3ZSBzaG91bGQgZG8ganVz dCBvbmU/IFRoZSBBTSBzdGF0cyBzZWVtcworCSAqIGxpa2UgYSBtb3JlIHJlbGlhYmxlIGlu Zm9ybWF0aW9uLCBiZWNhdXNlIHRoZSBjb3JyZWxhdGlvbiBpcyBub3QgdmVyeQorCSAqIHNl bnNpdGl2ZSB0byBvdXRsaWVycywgZm9yIGV4YW1wbGUuIFNvIG1heWJlIGxldCdzIHByZWZl ciB0aGF0LCBhbmQKKwkgKiBvbmx5IHVzZSB0aGUgY29ycmVsYXRpb24gYXMgZmFsbGJhY2sg d2hlbiBBTSBzdGF0cyBhcmUgbm90IGF2YWlsYWJsZT8KKwkgKi8KKwlpZiAoYXZlcmFnZU92 ZXJsYXBzID4gMC4wKQorCQllc3RpbWF0ZWRSYW5nZXMgPSBNaW4oZXN0aW1hdGVkUmFuZ2Vz ICogYXZlcmFnZU92ZXJsYXBzLCBpbmRleFJhbmdlcyk7CisKKwllbG9nKERFQlVHMSwgImFm dGVyIGluZGV4IEFNIHN0YXRzOiBjZXN0aW1hdGVkUmFuZ2VzID0gJWYiLCBlc3RpbWF0ZWRS YW5nZXMpOworCiAJLyogd2UgZXhwZWN0IHRvIHZpc2l0IHRoaXMgcG9ydGlvbiBvZiB0aGUg dGFibGUgKi8KIAlzZWxlYyA9IGVzdGltYXRlZFJhbmdlcyAvIGluZGV4UmFuZ2VzOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IGMwNzM4MjA1MWQ2Li5lNDFh YWJkZWFlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTMxMzgs NiArMzEzOCw0NyBAQCBnZXRfYXR0YXZnd2lkdGgoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0 dG51bSkKIAlyZXR1cm4gMDsKIH0KIAorCisvKgorICogZ2V0X2F0dHN0YWluZGV4YW0KKyAq CisgKgkgIEdpdmVuIHRoZSB0YWJsZSBhbmQgYXR0cmlidXRlIG51bWJlciBvZiBhIGNvbHVt biwgZ2V0IHRoZSBpbmRleCBBTQorICoJICBzdGF0aXN0aWNzLiAgUmV0dXJuIE5VTEwgaWYg bm8gZGF0YSBhdmFpbGFibGUuCisgKgorICogQ3VycmVudGx5IHRoaXMgaXMgb25seSBjb25z dWx0ZWQgZm9yIGluZGl2aWR1YWwgdGFibGVzLCBub3QgZm9yIGluaGVyaXRhbmNlCisgKiB0 cmVlcywgc28gd2UgZG9uJ3QgbmVlZCBhbiAiaW5oIiBwYXJhbWV0ZXIuCisgKi8KK2J5dGVh ICoKK2dldF9hdHRpbmRleGFtKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pCit7CisJ SGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTMoU1RBVFJFTEFUVElOSCwK KwkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCSBJbnQxNkdldERhdHVt KGF0dG51bSksCisJCQkJCQkgQm9vbEdldERhdHVtKGZhbHNlKSk7CisJaWYgKEhlYXBUdXBs ZUlzVmFsaWQodHApKQorCXsKKwkJRGF0dW0JdmFsOworCQlieXRlYSAgKnJldHZhbCA9IE5V TEw7CisJCWJvb2wJaXNudWxsOworCisJCXZhbCA9IFN5c0NhY2hlR2V0QXR0cihTVEFUUkVM QVRUSU5ILCB0cCwKKwkJCQkJCQkgIEFudW1fcGdfc3RhdGlzdGljX3N0YWluZGV4YW0sCisJ CQkJCQkJICAmaXNudWxsKTsKKworCQlpZiAoIWlzbnVsbCkKKwkJCXJldHZhbCA9IChieXRl YSAqKSBQR19ERVRPQVNUX0RBVFVNKHZhbCk7CisKKwkJLy8gc3RhaW5kZXhhbSA9ICgoRm9y bV9wZ19zdGF0aXN0aWMpIEdFVFNUUlVDVCh0cCkpLT5zdGFpbmRleGFtOworCQlSZWxlYXNl U3lzQ2FjaGUodHApOworCisJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dXJuIE5VTEw7 Cit9CisKIC8qCiAgKiBnZXRfYXR0c3RhdHNzbG90CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYwppbmRleCA0M2I5ZDkyNjYwMC4uNjc2ODdkMTU4ZTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0xMDAyLDYgKzEwMDIsMTYgQEAgc3Ry dWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVM TCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImVuYWJsZV9pbmRleGFtX3N0YXRzIiwgUEdD X1VTRVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCisJCQlnZXR0ZXh0X25vb3AoIkVuYWJs ZXMgdGhlIHBsYW5uZXIncyB1c2Ugb2YgaW5kZXggQU0gc3RhdHMuIiksCisJCQlOVUxMLAor CQkJR1VDX0VYUExBSU4KKwkJfSwKKwkJJmVuYWJsZV9pbmRleGFtX3N0YXRzLAorCQlmYWxz ZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQl7ImdlcW8iLCBQR0NfVVNFUlNF VCwgUVVFUllfVFVOSU5HX0dFUU8sCiAJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgZ2VuZXRp YyBxdWVyeSBvcHRpbWl6YXRpb24uIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggZDA2MDc0Yjg2ZjYuLjQ3ZTgwYWQxNTBj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC0zNzUsNiArMzc1LDcgQEAKICNlbmFibGVfaGFzaGFnZyA9IG9uCiAjZW5hYmxl X2hhc2hqb2luID0gb24KICNlbmFibGVfaW5jcmVtZW50YWxfc29ydCA9IG9uCisjZW5hYmxl X2luZGV4YW1fc3RhdHMgPSBvZmYKICNlbmFibGVfaW5kZXhzY2FuID0gb24KICNlbmFibGVf aW5kZXhvbmx5c2NhbiA9IG9uCiAjZW5hYmxlX21hdGVyaWFsID0gb24KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBp LmgKaW5kZXggNGYxZjY3YjRkMDMuLmUzZWFiNzI1YWU1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvYW1hcGkuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaApA QCAtMjE2LDYgKzIxNiw4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4QW1Sb3V0aW5lCiAJdWlu dDE2CQlhbXN1cHBvcnQ7CiAJLyogb3BjbGFzcyBvcHRpb25zIHN1cHBvcnQgZnVuY3Rpb24g bnVtYmVyIG9yIDAgKi8KIAl1aW50MTYJCWFtb3B0c3Byb2NudW07CisJLyogb3BjbGFzcyBz dGF0aXN0aWNzIHN1cHBvcnQgZnVuY3Rpb24gbnVtYmVyIG9yIDAgKi8KKwl1aW50MTYJCWFt c3RhdHNwcm9jbnVtOwogCS8qIGRvZXMgQU0gc3VwcG9ydCBPUkRFUiBCWSBpbmRleGVkIGNv bHVtbidzIHZhbHVlPyAqLwogCWJvb2wJCWFtY2Fub3JkZXI7CiAJLyogZG9lcyBBTSBzdXBw b3J0IE9SREVSIEJZIHJlc3VsdCBvZiBhbiBvcGVyYXRvciBvbiBpbmRleGVkIGNvbHVtbj8g Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvYnJpbi5oCmluZGV4IGVkNjZmMWIzZDUxLi4xZDIxYjgxNmZjZCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvYnJpbi5oCkBAIC0zNCw2ICszNCw2OSBAQCB0eXBlZGVmIHN0cnVjdCBCcmluU3RhdHNE YXRhCiAJQmxvY2tOdW1iZXIgcmV2bWFwTnVtUGFnZXM7CiB9IEJyaW5TdGF0c0RhdGE7CiAK Ky8qCisgKiBJbmZvIGFib3V0IHJhbmdlcyBmb3IgQlJJTiBTb3J0LgorICovCit0eXBlZGVm IHN0cnVjdCBCcmluUmFuZ2UKK3sKKwlCbG9ja051bWJlciBibGtub19zdGFydDsKKwlCbG9j a051bWJlciBibGtub19lbmQ7CisKKwlEYXR1bQltaW5fdmFsdWU7CisJRGF0dW0JbWF4X3Zh bHVlOworCWJvb2wJaGFzX251bGxzOworCWJvb2wJYWxsX251bGxzOworCWJvb2wJbm90X3N1 bW1hcml6ZWQ7CisKKwkvKgorCSAqIEluZGV4IG9mIHRoZSByYW5nZSB3aGVuIG9yZGVyZWQg YnkgbWluX3ZhbHVlIChpZiB0aGVyZSBhcmUgbXVsdGlwbGUKKwkgKiByYW5nZXMgd2l0aCB0 aGUgc2FtZSBtaW5fdmFsdWUsIGl0J3MgdGhlIGxvd2VzdCBvbmUpLgorCSAqLworCXVpbnQz MgltaW5faW5kZXg7CisKKwkvKgorCSAqIE1pbmltdW0gbWluX2luZGV4IGZyb20gYWxsIHJh bmdlcyB3aXRoIGhpZ2hlciBtYXhfdmFsdWUgKGkuZS4gd2hlbgorCSAqIHNvcnRlZCBieSBt YXhfdmFsdWUpLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcmFuZ2VzIHdpdGggdGhlIHNhbWUK KwkgKiBtYXhfdmFsdWUsIGl0IGRlcGVuZHMgb24gdGhlIG9yZGVyaW5nIChpLmUuIHRoZSBy YW5nZXMgbWF5IGdldAorCSAqIGRpZmZlcmVudCBtaW5faW5kZXhfbG93ZXN0LCBkZXBlbmRp bmcgb24gdGhlIGV4YWN0IG9yZGVyaW5nKS4KKwkgKi8KKwl1aW50MzIJbWluX2luZGV4X2xv d2VzdDsKK30gQnJpblJhbmdlOworCit0eXBlZGVmIHN0cnVjdCBCcmluUmFuZ2VzCit7CisJ aW50CQkJbnJhbmdlczsKKwlCcmluUmFuZ2UJcmFuZ2VzW0ZMRVhJQkxFX0FSUkFZX01FTUJF Ul07Cit9IEJyaW5SYW5nZXM7CisKK3R5cGVkZWYgc3RydWN0IEJyaW5NaW5tYXhTdGF0cwor eworCWludDMyCQl2bF9sZW5fOwkJLyogdmFybGVuYSBoZWFkZXIgKGRvIG5vdCB0b3VjaCBk aXJlY3RseSEpICovCisJaW50NjQJCW5fcmFuZ2VzOworCWludDY0CQluX3N1bW1hcml6ZWQ7 CisJaW50NjQJCW5fYWxsX251bGxzOworCWludDY0CQluX2hhc19udWxsczsKKworCS8qIGF2 ZXJhZ2UgbnVtYmVyIG9mIG92ZXJsYXBwaW5nIHJhbmdlcyAqLworCWRvdWJsZQkJYXZnX292 ZXJsYXBzOworCisJLyogYXZlcmFnZSBudW1iZXIgb2YgbWF0Y2hpbmcgcmFuZ2VzIChwZXIg dmFsdWUpICovCisJZG91YmxlCQlhdmdfbWF0Y2hlczsKKwlkb3VibGUJCWF2Z19tYXRjaGVz X3VuaXF1ZTsKKworCS8qIG1pbnZhbC9tYXh2YWwgc3RhdHMgKG5kaXN0aW5jdCwgY29ycmVs YXRpb24gdG8gYmxrbm8pICovCisJaW50NjQJCW1pbnZhbF9uZGlzdGluY3Q7CisJaW50NjQJ CW1heHZhbF9uZGlzdGluY3Q7CisJZG91YmxlCQltaW52YWxfY29ycmVsYXRpb247CisJZG91 YmxlCQltYXh2YWxfY29ycmVsYXRpb247CisKKwkvKiBtaW52YWwvbWF4dmFsIGluY3JlbWVu dCBzdGF0cyAqLworCWRvdWJsZQkJbWludmFsX2luY3JlbWVudF9hdmc7CisJZG91YmxlCQlt aW52YWxfaW5jcmVtZW50X21heDsKKwlkb3VibGUJCW1heHZhbF9pbmNyZW1lbnRfYXZnOwor CWRvdWJsZQkJbWF4dmFsX2luY3JlbWVudF9tYXg7CisKK30gQnJpbk1pbm1heFN0YXRzOwog CiAjZGVmaW5lIEJSSU5fREVGQVVMVF9QQUdFU19QRVJfUkFOR0UJMTI4CiAjZGVmaW5lIEJy aW5HZXRQYWdlc1BlclJhbmdlKHJlbGF0aW9uKSBcCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50 ZXJuYWwuaAppbmRleCA5N2RkYzkyNWIyNy4uZWFjNzk2ZTZmNDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2JyaW5faW50ZXJuYWwuaApAQCAtNzUsNiArNzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBC cmluRGVzYwogI2RlZmluZSBCUklOX1BST0NOVU1fT1BUSU9OUyAJCTUJLyogb3B0aW9uYWwg Ki8KIC8qIHByb2NlZHVyZSBudW1iZXJzIHVwIHRvIDEwIGFyZSByZXNlcnZlZCBmb3IgQlJJ TiBmdXR1cmUgZXhwYW5zaW9uICovCiAjZGVmaW5lIEJSSU5fRklSU1RfT1BUSU9OQUxfUFJP Q05VTSAxMQorI2RlZmluZSBCUklOX1BST0NOVU1fU1RBVElTVElDUwkJMTEJLyogb3B0aW9u YWwgKi8KICNkZWZpbmUgQlJJTl9MQVNUX09QVElPTkFMX1BST0NOVU0JMTUKIAogI3VuZGVm IEJSSU5fREVCVUcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9j LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCA1Yjk1MDEy OWRlMC4uOWJiZDFmMTRmMTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAg LTgwNCw2ICs4MDQsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQn IH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2J5dGVhJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFt cHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2J5dGVhJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFtcHJvY251bSA9 PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIGJsb29tIGJ5 dGVhCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnYnl0ZWEnLApAQCAtODM1LDYgKzgzNyw4IEBACiAgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2No YXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdjaGFyJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2NoYXJfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdjaGFyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdj aGFyJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMn IH0sCiAKICMgYmxvb20gImNoYXIiCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdjaGFyJywKQEAgLTg2NCw2ICs4NjgsOCBA QAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFt ZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnNCcsIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9uYW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCisgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIGJsb29tIG5hbWUKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL25hbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLApAQCAt ODkzLDYgKzg5OSw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdpbnQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1w cm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdpbnQ4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1wcm9jbnVtID0+ ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdp bnQyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICcxJywK QEAgLTkwNSw2ICs5MTMsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3Rl bnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnaW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50Mics IGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50MicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251 bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnaW50NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAn MScsCkBAIC05MTcsNiArOTI3LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25z aXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2lu dDQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXBy b2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBt aW5tYXggbXVsdGkgaW50ZWdlcjogaW50MiwgaW50NCwgaW50OAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J2ludDInLApAQCAtMTAzNCw2ICsxMDQ2LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1h eF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGV4dF9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAogICBhbXByb2NyaWdodHR5cGUgPT4g J3RleHQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9u JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGV4dF9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RleHQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXBy b2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBi bG9vbSB0ZXh0CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90ZXh0X2Jsb29tX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICd0ZXh0JywKQEAgLTEwNjIsNiArMTA3Niw4IEBACiAgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL29pZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmlu X21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL29pZF9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn b2lkJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMn IH0sCiAKICMgbWlubWF4IG11bHRpIG9pZAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lk X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKQEAgLTExMTAs NiArMTEyNiw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ3RpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCisg IGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgYmxvb20gdGlkCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi90aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCkBA IC0xMTYwLDYgKzExNzgsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfc3RhdHMnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTE3Myw2ICsxMTk0LDkgQEAKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2Nu dW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdmbG9hdDgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9 PiAnMTEnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIG1pbm1h eCBtdWx0aSBmbG9hdAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X211 bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLApAQCAtMTI2MSw2ICsxMjg1 LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNh ZGRyJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlv bicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNh ZGRyJywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3Rh dHMnIH0sCiAKICMgbWlubWF4IG11bHRpIG1hY2FkZHIKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL21hY2FkZHJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNh ZGRyJywKQEAgLTEzMTQsNiArMTM0MSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9t YWNhZGRyOF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9tYWNhZGRyOF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnMTEnLAor ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBt YWNhZGRyOAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X211bHRp X29wcycsCkBAIC0xMzY2LDYgKzEzOTYsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5p b24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcs IGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAog CiAjIG1pbm1heCBtdWx0aSBpbmV0CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3Jr X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCkBAIC0xNDM2 LDYgKzE0NjgsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX21pbm1heF9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdi cGNoYXInLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9z dGF0cycgfSwKIAogIyBibG9vbSBjaGFyYWN0ZXIKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L2JwY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKQEAgLTE0 NjcsNiArMTUwMiw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICd0aW1lJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9j bnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9j ZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0 aW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ICcxMScs IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgbWlubWF4IG11bHRpIHRp bWUgd2l0aG91dCB0aW1lIHpvbmUKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKQEAgLTE1MTcsNiAr MTU1NCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXN0YW1wJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywKKyAgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF9zdGF0cycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRp bWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzEnLApAQCAt MTUzMCw2ICsxNTcwLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9j ID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Rh dGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAor ICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICcxMScs CisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZGF0 ZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnMScsCkBA IC0xNTQyLDYgKzE1ODUsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3Rl bnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUn LCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdkYXRlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9j bnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgbWlu bWF4IG11bHRpIGRhdGV0aW1lIChkYXRlLCB0aW1lc3RhbXAsIHRpbWVzdGFtcHR6KQogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsCkBAIC0x NjY4LDYgKzE3MTMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ ICdicmluX21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVsdGkgaW50ZXJ2YWwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX21pbm1heF9tdWx0aV9vcHMnLApAQCAt MTcyMSw2ICsxNzY5LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfc3RhdHMnIH0sCiAKICMgbWlubWF4IG11bHRpIHRpbWUgd2l0aCB0aW1lIHpvbmUKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RpbWV0eicsCkBAIC0xNzcxLDYgKzE4MjIsOCBAQAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9iaXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdiaXQnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2JpdCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9iaXRfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdiaXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Jp dCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9 LAogCiAjIG1pbm1heCBiaXQgdmFyeWluZwogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFy Yml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndmFyYml0JywKQEAgLTE3ODUs NiArMTgzOCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi92YXJiaXRfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICd2YXJiaXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4g J3ZhcmJpdCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi92YXJiaXRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICd2YXJiaXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3Zh cmJpdCcsIGFtcHJvY251bSA9PiAnMTEnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0 YXRzJyB9LAogCiAjIG1pbm1heCBudW1lcmljCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9u dW1lcmljX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCkBAIC0x Nzk5LDYgKzE4NTUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKIAogIyBtaW5tYXggbXVsdGkgbnVtZXJpYwogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ251bWVyaWMnLApAQCAtMTg1MSw2ICsxOTEwLDggQEAKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVp ZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1aWQnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1aWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1 aWQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9zdGF0cycg fSwKIAogIyBtaW5tYXggbXVsdGkgdXVpZAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVp ZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1aWQnLApAQCAtMTky NCw2ICsxOTg1LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xzbl9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1h eF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xzbl9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn cGdfbHNuJywgYW1wcm9jbnVtID0+ICcxMScsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf c3RhdHMnIH0sCiAKICMgbWlubWF4IG11bHRpIHBnX2xzbgogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vcGdfbHNuX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdf bHNuJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDY2YjczYzM5MDBkLi5jNDQ3 ODRhMGQwNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NDk2LDYgKzg0OTYs MTAgQEAKIHsgb2lkID0+ICczMzg2JywgZGVzY3IgPT4gJ0JSSU4gbWlubWF4IHN1cHBvcnQn LAogICBwcm9uYW1lID0+ICdicmluX21pbm1heF91bmlvbicsIHByb3JldHR5cGUgPT4gJ2Jv b2wnLAogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwgaW50ZXJuYWwnLCBw cm9zcmMgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBvaWQgPT4gJzk4MDAnLCBkZXNj ciA9PiAnQlJJTiBtaW5tYXggc3VwcG9ydCcsCisgIHByb25hbWUgPT4gJ2JyaW5fbWlubWF4 X3N0YXRzJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRl cm5hbCBpbnRlcm5hbCBpbnQyIGludDIgaW50ZXJuYWwgaW50NCcsCisgIHByb3NyYyA9PiAn YnJpbl9taW5tYXhfc3RhdHMnIH0sCiAKICMgQlJJTiBtaW5tYXggbXVsdGkKIHsgb2lkID0+ ICc0NjE2JywgZGVzY3IgPT4gJ0JSSU4gbXVsdGkgbWlubWF4IHN1cHBvcnQnLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWMuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3RhdGlzdGljLmgKaW5kZXggODc3MGM1YjRjNjAuLmQzZDBiY2UyNTdh IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpYy5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljLmgKQEAgLTEyMSw2ICsxMjEsMTEg QEAgQ0FUQUxPRyhwZ19zdGF0aXN0aWMsMjYxOSxTdGF0aXN0aWNSZWxhdGlvbklkKQogCWFu eWFycmF5CXN0YXZhbHVlczM7CiAJYW55YXJyYXkJc3RhdmFsdWVzNDsKIAlhbnlhcnJheQlz dGF2YWx1ZXM1OworCisJLyoKKwkgKiBTdGF0aXN0aWNzIGNhbGN1bGF0ZWQgYnkgaW5kZXgg QU0gKGUuZy4gQlJJTiBmb3IgcmFuZ2VzLCBldGMuKS4KKwkgKi8KKwlieXRlYQkJc3RhaW5k ZXhhbTsKICNlbmRpZgogfSBGb3JtRGF0YV9wZ19zdGF0aXN0aWM7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv dmFjdXVtLmgKaW5kZXggNjg5ZGJiNzcwMjQuLmRiYTQxMWNhY2Y3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaApAQCAtMTU1LDYgKzE1NSw3IEBAIHR5cGVkZWYgc3RydWN0IFZhY0F0dHJT dGF0cwogCWZsb2F0NAkgICAqc3RhbnVtYmVyc1tTVEFUSVNUSUNfTlVNX1NMT1RTXTsKIAlp bnQJCQludW12YWx1ZXNbU1RBVElTVElDX05VTV9TTE9UU107CiAJRGF0dW0JICAgKnN0YXZh bHVlc1tTVEFUSVNUSUNfTlVNX1NMT1RTXTsKKwlEYXR1bQkJc3RhaW5kZXhhbTsJCS8qIGlu ZGV4LXNwZWNpZmljIHN0YXRzIChhcyBieXRlYSkgKi8KIAogCS8qCiAJICogVGhlc2UgZmll bGRzIGRlc2NyaWJlIHRoZSBzdGF2YWx1ZXNbbl0gZWxlbWVudCB0eXBlcy4gVGhleSB3aWxs IGJlCkBAIC0yOTksNiArMzAwLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCB2YWN1dW1f bXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB2YWN1 dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2U7CiBleHRlcm4gUEdETExJTVBPUlQgaW50 IHZhY3V1bV9mYWlsc2FmZV9hZ2U7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IHZhY3V1bV9t dWx0aXhhY3RfZmFpbHNhZmVfYWdlOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxl X2luZGV4YW1fc3RhdHM7CiAKIC8qIFZhcmlhYmxlcyBmb3IgY29zdC1iYXNlZCBwYXJhbGxl bCB2YWN1dW0gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDMyICpWYWN1 dW1TaGFyZWRDb3N0QmFsYW5jZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xz eXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNGY1NDE4 Yjk3MjguLmZjZWY5MWQzMDZkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTg1LDYg KzE4NSw3IEBAIGV4dGVybiBPaWQJZ2V0QmFzZVR5cGUoT2lkIHR5cGlkKTsKIGV4dGVybiBP aWQJZ2V0QmFzZVR5cGVBbmRUeXBtb2QoT2lkIHR5cGlkLCBpbnQzMiAqdHlwbW9kKTsKIGV4 dGVybiBpbnQzMiBnZXRfdHlwYXZnd2lkdGgoT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpOwog ZXh0ZXJuIGludDMyIGdldF9hdHRhdmd3aWR0aChPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0 bnVtKTsKK2V4dGVybiBieXRlYSAqZ2V0X2F0dGluZGV4YW0oT2lkIHJlbGlkLCBBdHRyTnVt YmVyIGF0dG51bSk7CiBleHRlcm4gYm9vbCBnZXRfYXR0c3RhdHNzbG90KEF0dFN0YXRzU2xv dCAqc3Nsb3QsIEhlYXBUdXBsZSBzdGF0c3R1cGxlLAogCQkJCQkJCSBpbnQgcmVxa2luZCwg T2lkIHJlcW9wLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHZvaWQgZnJlZV9hdHRzdGF0c3Nsb3Qo QXR0U3RhdHNTbG90ICpzc2xvdCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmll d3Mub3V0CmluZGV4IDAwMWM2ZTdlYjlkLi5iN2ZkYTZmYzgyOCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTExNyw2ICsxMTcsNyBAQCBzZWxlY3Qg bmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxl JSc7CiAgZW5hYmxlX2hhc2hhZ2cgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfaGFz aGpvaW4gICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0ICAg ICAgICB8IG9uCisgZW5hYmxlX2luZGV4YW1fc3RhdHMgICAgICAgICAgIHwgb2ZmCiAgZW5h YmxlX2luZGV4b25seXNjYW4gICAgICAgICAgIHwgb24KICBlbmFibGVfaW5kZXhzY2FuICAg ICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9tYXRlcmlhbCAgICAgICAgICAgICAgICB8IG9u CkBAIC0xMzIsNyArMTMzLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0 aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAg ICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24K ICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDIxIHJvd3MpCisoMjIg cm93cykKIAogLS0gVGVzdCB0aGF0IHRoZSBwZ190aW1lem9uZV9uYW1lcyBhbmQgcGdfdGlt ZXpvbmVfYWJicmV2cyB2aWV3cyBhcmUKIC0tIG1vcmUtb3ItbGVzcyB3b3JraW5nLiAgV2Ug Y2FuJ3QgdGVzdCB0aGVpciBjb250ZW50cyBpbiBhbnkgZ3JlYXQgZGV0YWlsCi0tIAoyLjM5 LjEKCg== --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0002-wip-introduce-debug_brin_stats-20230218.patch" Content-Disposition: attachment; filename="0002-wip-introduce-debug_brin_stats-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSAwODFiYTZlYzkwMzRkZWZmMDdiMGI5ZjMyZmM0Njc2MTRhYTE1ZTIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAxNzo0Njo1MSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDIvMTBdIHdpcDogaW50cm9kdWNlIGRlYnVnX2JyaW5fc3RhdHMKCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyB8IDgwICsrKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMgICB8IDE4ICsrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggNmIwZjMwMzUwNGQu LmI3MTA2YmE2YmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X21pbm1heC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMK QEAgLTI4LDYgKzI4LDEwIEBACiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKK2Jv b2wgZGVidWdfYnJpbl9zdGF0cyA9IGZhbHNlOworI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0 IE1pbm1heE9wYXF1ZQogewogCU9pZAkJCWNhY2hlZF9zdWJ0eXBlOwpAQCAtNDkzLDYgKzQ5 NywxMyBAQCBicmluX21pbm1heF9jb3VudF9vdmVybGFwcyhCcmluUmFuZ2UgKiptaW5yYW5n ZXMsIGludCBucmFuZ2VzLAogewogCWludDY0CW5vdmVybGFwczsKIAorI2lmZGVmIERFQlVH X0JSSU5fU1RBVFMKKwlUaW1lc3RhbXBUegkJc3RhcnRfdHM7CisKKwlpZiAoZGVidWdfYnJp bl9zdGF0cykKKwkJc3RhcnRfdHMgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisjZW5kaWYK KwogCW5vdmVybGFwcyA9IDA7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBucmFuZ2VzOyBpKysp CiAJewpAQCAtNTE1LDYgKzUyNiwxNiBAQCBicmluX21pbm1heF9jb3VudF9vdmVybGFwcyhC cmluUmFuZ2UgKiptaW5yYW5nZXMsIGludCBucmFuZ2VzLAogCSAqLwogCW5vdmVybGFwcyAq PSAyOwogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFUUworCWlmIChkZWJ1Z19icmluX3N0YXRz KQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9taW5tYXhfY291bnRfb3Zlcmxh cHMgLS0tLS0iKTsKKwkJZWxvZyhXQVJOSU5HLCAibm92ZXJsYXBzID0gJWxkIiwgbm92ZXJs YXBzKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAlbGQiLCBUaW1lc3RhbXBEaWZm ZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJCQkJCUdldEN1cnJlbnRUaW1l c3RhbXAoKSkpOworCX0KKyNlbmRpZgorCiAJc3RhdHMtPmF2Z19vdmVybGFwcyA9IChkb3Vi bGUpIG5vdmVybGFwcyAvIG5yYW5nZXM7CiB9CiAKQEAgLTU0MCw2ICs1NjEsMTMgQEAgYnJp bl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlcyhCcmluUmFuZ2VzICpyYW5nZXMsCiAK IAlpbnQ2NCAgKnVuaXF1ZSA9IChpbnQ2NCAqKSBwYWxsb2MwKHNpemVvZihpbnQ2NCkgKiBu dmFsdWVzKTsKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlUaW1lc3RhbXBUegkJc3Rh cnRfdHM7CisKKwlpZiAoZGVidWdfYnJpbl9zdGF0cykKKwkJc3RhcnRfdHMgPSBHZXRDdXJy ZW50VGltZXN0YW1wKCk7CisjZW5kaWYKKwogCS8qCiAJICogQnVpbGQgcnVubmluZyBjb3Vu dCBvZiB1bmlxdWUgdmFsdWVzLiBXZSBrbm93IHRoZXJlIGFyZSB1bmlxdWVbaV0KIAkgKiB1 bmlxdWUgdmFsdWVzIGluIHZhbHVlcyBhcnJheSB1cCB0byBpbmRleCAiaSIuCkBAIC01ODgs NiArNjE2LDE4IEBAIGJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXMoQnJpblJh bmdlcyAqcmFuZ2VzLAogCUFzc2VydChubWF0Y2hlcyA+PSAwKTsKIAlBc3NlcnQobm1hdGNo ZXNfdW5pcXVlID49IDApOwogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFUUworCWlmIChkZWJ1 Z19icmluX3N0YXRzKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9taW5tYXhf bWF0Y2hfdHVwbGVzX3RvX3JhbmdlcyAtLS0tLSIpOworCQllbG9nKFdBUk5JTkcsICJubWF0 Y2hlcyA9ICVsZCAlZiIsIG5tYXRjaGVzLCAoZG91YmxlKSBubWF0Y2hlcyAvIG51bXJvd3Mp OworCQllbG9nKFdBUk5JTkcsICJubWF0Y2hlcyB1bmlxdWUgPSAlbGQgJWxkICVmIiwgbm1h dGNoZXNfdW5pcXVlLCBudmFsdWVzX3VuaXF1ZSwKKwkJCShkb3VibGUpIG5tYXRjaGVzX3Vu aXF1ZSAvIG52YWx1ZXNfdW5pcXVlKTsKKwkJZWxvZyhXQVJOSU5HLCAiZHVyYXRpb24gPSAl bGQiLCBUaW1lc3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLAorCQkJCQkJ CQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpKSk7CisJfQorI2VuZGlmCisKIAlzdGF0cy0+YXZn X21hdGNoZXMgPSAoZG91YmxlKSBubWF0Y2hlcyAvIG51bXJvd3M7CiAJc3RhdHMtPmF2Z19t YXRjaGVzX3VuaXF1ZSA9IChkb3VibGUpIG5tYXRjaGVzX3VuaXF1ZSAvIG52YWx1ZXNfdW5p cXVlOwogfQpAQCAtNjE5LDYgKzY1OSwxMyBAQCBicmluX21pbm1heF92YWx1ZV9zdGF0cyhC cmluUmFuZ2UgKiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdlcywKIAkJCW1pbnZh bF9jb3JyID0gMCwKIAkJCW1heHZhbF9jb3JyID0gMDsKIAorI2lmZGVmIERFQlVHX0JSSU5f U1RBVFMKKwlUaW1lc3RhbXBUegkJc3RhcnRfdHM7CisKKwlpZiAoZGVidWdfYnJpbl9zdGF0 cykKKwkJc3RhcnRfdHMgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisjZW5kaWYKKwogCWZv ciAoaW50IGkgPSAxOyBpIDwgbnJhbmdlczsgaSsrKQogCXsKIAkJaWYgKHJhbmdlX3ZhbHVl c19jbXAoJm1pbnJhbmdlc1tpLTFdLT5taW5fdmFsdWUsICZtaW5yYW5nZXNbaV0tPm1pbl92 YWx1ZSwgdHlwY2FjaGUpICE9IDApCkBAIC02NDEsNiArNjg4LDE5IEBAIGJyaW5fbWlubWF4 X3ZhbHVlX3N0YXRzKEJyaW5SYW5nZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoqbWF4cmFu Z2VzLAogCiAJc3RhdHMtPm1pbnZhbF9jb3JyZWxhdGlvbiA9IChkb3VibGUpIG1pbnZhbF9j b3JyIC8gbnJhbmdlczsKIAlzdGF0cy0+bWF4dmFsX2NvcnJlbGF0aW9uID0gKGRvdWJsZSkg bWF4dmFsX2NvcnIgLyBucmFuZ2VzOworCisjaWZkZWYgREVCVUdfQlJJTl9TVEFUUworCWlm IChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9t aW5tYXhfdmFsdWVfc3RhdHMgLS0tLS0iKTsKKwkJZWxvZyhXQVJOSU5HLCAibWludmFsIG5k aXN0aW5jdCAiIElOVDY0X0ZPUk1BVCAiIGNvcnJlbGF0aW9uICVmIiwKKwkJCSBzdGF0cy0+ bWludmFsX25kaXN0aW5jdCwgc3RhdHMtPm1pbnZhbF9jb3JyZWxhdGlvbik7CisJCWVsb2co V0FSTklORywgIm1heHZhbCBuZGlzdGluY3QgIiBJTlQ2NF9GT1JNQVQgIiBjb3JyZWxhdGlv biAlZiIsCisJCQkgc3RhdHMtPm1heHZhbF9uZGlzdGluY3QsIHN0YXRzLT5tYXh2YWxfY29y cmVsYXRpb24pOworCQllbG9nKFdBUk5JTkcsICJkdXJhdGlvbiA9ICVsZCIsIFRpbWVzdGFt cERpZmZlcmVuY2VNaWxsaXNlY29uZHMoc3RhcnRfdHMsCisJCQkJCQkJCQkJR2V0Q3VycmVu dFRpbWVzdGFtcCgpKSk7CisJfQorI2VuZGlmCiB9CiAKIC8qCkBAIC02NjUsNiArNzI1LDEz IEBAIGJyaW5fbWlubWF4X2luY3JlbWVudF9zdGF0cyhCcmluUmFuZ2UgKiptaW5yYW5nZXMs IEJyaW5SYW5nZSAqKm1heHJhbmdlcywKIAkJCW1heF9taW52YWwgPSAwLAogCQkJbWF4X21h eHZhbCA9IDA7CiAKKyNpZmRlZiBERUJVR19CUklOX1NUQVRTCisJVGltZXN0YW1wVHoJCXN0 YXJ0X3RzOworCisJaWYgKGRlYnVnX2JyaW5fc3RhdHMpCisJCXN0YXJ0X3RzID0gR2V0Q3Vy cmVudFRpbWVzdGFtcCgpOworI2VuZGlmCisKIAlmb3IgKGludCBpID0gMTsgaSA8IG5yYW5n ZXM7IGkrKykKIAl7CiAJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZtaW5yYW5nZXNbaS0xXS0+ bWluX3ZhbHVlLCAmbWlucmFuZ2VzW2ldLT5taW5fdmFsdWUsIHR5cGNhY2hlKSAhPSAwKQpA QCAtNzE2LDYgKzc4MywxOSBAQCBicmluX21pbm1heF9pbmNyZW1lbnRfc3RhdHMoQnJpblJh bmdlICoqbWlucmFuZ2VzLCBCcmluUmFuZ2UgKiptYXhyYW5nZXMsCiAJCX0KIAl9CiAKKyNp ZmRlZiBERUJVR19CUklOX1NUQVRTCisJaWYgKGRlYnVnX2JyaW5fc3RhdHMpCisJeworCQll bG9nKFdBUk5JTkcsICItLS0tLSBicmluX21pbm1heF9pbmNyZW1lbnRfc3RhdHMgLS0tLS0i KTsKKwkJZWxvZyhXQVJOSU5HLCAibWludmFsIG5kaXN0aW5jdCAlbGQgc3VtICVmIG1heCAl ZiBhdmcgJWYiLAorCQkJIG1pbnZhbF9uZGlzdCwgc3VtX21pbnZhbCwgbWF4X21pbnZhbCwg c3VtX21pbnZhbCAvIG1pbnZhbF9uZGlzdCk7CisJCWVsb2coV0FSTklORywgIm1heHZhbCBu ZGlzdGluY3QgJWxkIHN1bSAlZiBtYXggJWYgYXZnICVmIiwKKwkJCSBtYXh2YWxfbmRpc3Qs IHN1bV9tYXh2YWwsIG1heF9tYXh2YWwsIHN1bV9tYXh2YWwgLyBtYXh2YWxfbmRpc3QpOwor CQllbG9nKFdBUk5JTkcsICJkdXJhdGlvbiA9ICVsZCIsIFRpbWVzdGFtcERpZmZlcmVuY2VN aWxsaXNlY29uZHMoc3RhcnRfdHMsCisJCQkJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgp KSk7CisJfQorI2VuZGlmCisKIAlzdGF0cy0+bWludmFsX2luY3JlbWVudF9hdmcgPSAoc3Vt X21pbnZhbCAvIG1pbnZhbF9uZGlzdCk7CiAJc3RhdHMtPm1pbnZhbF9pbmNyZW1lbnRfbWF4 ID0gbWF4X21pbnZhbDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRl eCA2NzY4N2QxNThlNi4uZjhkMDYyOTZmYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCkBAIC05Niw2ICs5NiwxMCBAQCBleHRlcm4gYm9vbCBpZ25vcmVfY2hlY2tz dW1fZmFpbHVyZTsKIGV4dGVybiBib29sIGlnbm9yZV9pbnZhbGlkX3BhZ2VzOwogZXh0ZXJu IGJvb2wgc3luY2hyb25pemVfc2Vxc2NhbnM7CiAKKyNpZmRlZiBERUJVR19CUklOX1NUQVRT CitleHRlcm4gYm9vbCBkZWJ1Z19icmluX3N0YXRzOworI2VuZGlmCisKICNpZmRlZiBUUkFD RV9TWU5DU0NBTgogZXh0ZXJuIGJvb2wgdHJhY2Vfc3luY3NjYW47CiAjZW5kaWYKQEAgLTEy MzAsNiArMTIzNCwyMCBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29s W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorI2lmZGVmIERFQlVHX0JSSU5fU1RB VFMKKwkvKiB0aGlzIGlzIHVuZG9jdW1lbnRlZCBiZWNhdXNlIG5vdCBleHBvc2VkIGluIGEg c3RhbmRhcmQgYnVpbGQgKi8KKwl7CisJCXsiZGVidWdfYnJpbl9zdGF0cyIsIFBHQ19VU0VS U0VULCBERVZFTE9QRVJfT1BUSU9OUywKKwkJCWdldHRleHRfbm9vcCgiUHJpbnQgaW5mbyBh Ym91dCBjYWxjdWxhdGVkIEJSSU4gc3RhdGlzdGljcy4iKSwKKwkJCU5VTEwsCisJCQlHVUNf Tk9UX0lOX1NBTVBMRQorCQl9LAorCQkmZGVidWdfYnJpbl9zdGF0cywKKwkJZmFsc2UsCisJ CU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorI2VuZGlmCisKIAl7CiAJCXsiZXhpdF9vbl9lcnJv ciIsIFBHQ19VU0VSU0VULCBFUlJPUl9IQU5ETElOR19PUFRJT05TLAogCQkJZ2V0dGV4dF9u b29wKCJUZXJtaW5hdGUgc2Vzc2lvbiBvbiBhbnkgZXJyb3IuIiksCi0tIAoyLjM5LjEKCg== --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0003-wip-introduce-debug_brin_cross_check-20230218.patch" Content-Disposition: attachment; filename="0003-wip-introduce-debug_brin_cross_check-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSBiM2Q4ODJlZWUxNmEwYWIyOWZkNTRjNWU0N2FlYzQ0MmM3YTBmMDJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAyMDo0NzozMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDMvMTBdIHdpcDogaW50cm9kdWNlIGRlYnVnX2JyaW5fY3Jvc3NfY2hl Y2sKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyB8IDU3NCAr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICB8ICAxMCArCiAyIGZpbGVzIGNoYW5nZWQsIDU4NCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggYjcxMDZiYTZi YTkuLmVkMTM4ZjFmODlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX21pbm1heC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4 LmMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKIGJvb2wg ZGVidWdfYnJpbl9zdGF0cyA9IGZhbHNlOworYm9vbCBkZWJ1Z19icmluX2Nyb3NzX2NoZWNr ID0gZmFsc2U7CiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgTWlubWF4T3BhcXVlCkBAIC0z NDAsNiArMzQxLDUwIEBAIHJhbmdlX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qg dm9pZCAqYiwgdm9pZCAqYXJnKQogCXJldHVybiBEYXR1bUdldEludDMyKGMpOwogfQogCisj aWZkZWYgREVCVUdfQlJJTl9TVEFUUworLyoKKyAqIG1heHZhbF9zdGFydAorICoJCURldGVy bWluZSBmaXJzdCBpbmRleCBzbyB0aGF0IChtYXh2YWx1ZSA+PSB2YWx1ZSkuCisgKgorICog VGhlIGFycmF5IG9mIHJhbmdlcyBpcyBleHBlY3RlZCB0byBiZSBzb3J0ZWQgYnkgbWF4dmFs dWUsIHNvIHRoaXMgaXMgdGhlIGZpcnN0CisgKiByYW5nZSB0aGF0IGNhbiBwb3NzaWJseSBp bnRlcnNlY3Qgd2l0aCByYW5nZSBoYXZpbmcgInZhbHVlIiBhcyBtaW52YWwuCisgKi8KK3N0 YXRpYyBpbnQKK21heHZhbF9zdGFydChCcmluUmFuZ2UgKipyYW5nZXMsIGludCBucmFuZ2Vz LCBEYXR1bSB2YWx1ZSwgVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlKQoreworCWludAkJc3Rh cnQgPSAwLAorCQkJZW5kID0gKG5yYW5nZXMgLSAxKTsKKworCS8vIGV2ZXJ5dGhpbmcgbWF0 Y2hlcworCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZSwgJnJhbmdlc1tzdGFydF0tPm1h eF92YWx1ZSwgdHlwY2FjaGUpIDw9IDApCisJCXJldHVybiAwOworCisJLy8gbm8gbWF0Y2hl cworCWlmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZSwgJnJhbmdlc1tlbmRdLT5tYXhfdmFs dWUsIHR5cGNhY2hlKSA+IDApCisJCXJldHVybiBucmFuZ2VzOworCisJd2hpbGUgKChlbmQg LSBzdGFydCkgPiAwKQorCXsKKwkJaW50CSBtaWRwb2ludDsKKwkJaW50CSByOworCisJCW1p ZHBvaW50ID0gc3RhcnQgKyAoZW5kIC0gc3RhcnQpIC8gMjsKKworCQlyID0gcmFuZ2VfdmFs dWVzX2NtcCgmdmFsdWUsICZyYW5nZXNbbWlkcG9pbnRdLT5tYXhfdmFsdWUsIHR5cGNhY2hl KTsKKworCQlpZiAociA8PSAwKQorCQkJZW5kID0gbWlkcG9pbnQ7CisJCWVsc2UKKwkJCXN0 YXJ0ID0gKG1pZHBvaW50ICsgMSk7CisJfQorCisJQXNzZXJ0KHJhbmdlc1tzdGFydF0tPm1h eF92YWx1ZSA+PSB2YWx1ZSk7CisJQXNzZXJ0KHJhbmdlc1tzdGFydC0xXS0+bWF4X3ZhbHVl IDwgdmFsdWUpOworCisJcmV0dXJuIHN0YXJ0OworfQorI2VuZGlmCisKIC8qCiAgKiBtaW52 YWxfZW5kCiAgKgkJRGV0ZXJtaW5lIGZpcnN0IGluZGV4IHNvIHRoYXQgKG1pbnZhbCA+IHZh bHVlKS4KQEAgLTYzMiw2ICs2NzcsMzE2IEBAIGJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190 b19yYW5nZXMoQnJpblJhbmdlcyAqcmFuZ2VzLAogCXN0YXRzLT5hdmdfbWF0Y2hlc191bmlx dWUgPSAoZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1ZTsKIH0KIAor I2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKKy8qCisgKiBTaW1wbGUgaGlzdG9ncmFtLCB3aXRo IGJpbnMgdHJhY2tpbmcgdmFsdWUgYW5kIHR3byBvdmVybGFwIGNvdW50cy4KKyAqCisgKiBY WFggTWF5YmUgd2Ugc2hvdWxkIGhhdmUgdHdvIHNlcGFyYXRlIGhpc3RvZ3JhbXMsIG9uZSBm b3IgYWxsIGNvdW50cyBhbmQKKyAqIGFub3RoZXIgb25lIGZvciAidW5pcXVlIiB2YWx1ZXMu CisgKgorICogWFhYIFNlcmlhbGl6ZSB0aGUgaGlzdG9ncmFtLiBUaGVyZSBtaWdodCBiZSBh IGRhdGEgc2V0IHdoZXJlIHdlIGhhdmUgdmVyeQorICogbWFueSBkaXN0aW5jdCBidWNrZXRz ICh2YWx1ZXMgaGF2aW5nIHZlcnkgZGlmZmVyZW50IG51bWJlciBvZiBtYXRjaGluZworICog cmFuZ2VzKSAtIG5vdCBzdXJlIGlmIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIHVwcGVyIGxpbWl0 IChidXQgaGFyZCB0byBzYXkgZm9yCisgKiBvdGhlciBvcGNsYXNzZXMsIGxpa2UgYmxvb20p LiBBbmQgd2UgZG9uJ3Qgd2FudCBhcmJpdHJhcmlseSBsYXJnZSBoaXN0b2dyYW0sCisgKiB0 byBrZWVwIHRoZSBzdGF0aXN0aWNzIGZhaXJseSBzbWFsbCwgSSBndWVzcy4gU28gd2UnZCBu ZWVkIHRvIHBpY2sgYSBzdWJzZXQsCisgKiBtZXJnZSBidWNrZXRzIHdpdGggInNpbWlsYXIi IGNvdW50cywgb3IgYXBwcm94aW1hdGUgaXQgc29tZWhvdy4gRm9yIG5vdyB3ZQorICogZG9u J3Qgc2VyaWFsaXplIGl0LCBiZWNhdXNlIHdlIGRvbid0IHVzZSB0aGUgaGlzdG9ncmFtLgor ICovCit0eXBlZGVmIHN0cnVjdCBoaXN0b2dyYW1fYmluX3QKK3sKKwlpbnQ2NAl2YWx1ZTsK KwlpbnQ2NAljb3VudDsKK30gaGlzdG9ncmFtX2Jpbl90OworCit0eXBlZGVmIHN0cnVjdCBo aXN0b2dyYW1fdAoreworCWludAkJCQluYmluczsKKwlpbnQJCQkJbmJpbnNfbWF4OworCWhp c3RvZ3JhbV9iaW5fdAliaW5zW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Cit9IGhpc3RvZ3Jh bV90OworCisjZGVmaW5lIEhJU1RPR1JBTV9CSU5TX1NUQVJUIDMyCisKKy8qIGFsbG9jYXRl IGhpc3RvZ3JhbSB3aXRoIGRlZmF1bHQgbnVtYmVyIG9mIGJpbnMgKi8KK3N0YXRpYyBoaXN0 b2dyYW1fdCAqCitoaXN0b2dyYW1faW5pdCh2b2lkKQoreworCWhpc3RvZ3JhbV90ICpoaXN0 OworCisJaGlzdCA9IChoaXN0b2dyYW1fdCAqKSBwYWxsb2MwKG9mZnNldG9mKGhpc3RvZ3Jh bV90LCBiaW5zKSArCisJCQkJCQkJCSAgIHNpemVvZihoaXN0b2dyYW1fYmluX3QpICogSElT VE9HUkFNX0JJTlNfU1RBUlQpOworCWhpc3QtPm5iaW5zX21heCA9IEhJU1RPR1JBTV9CSU5T X1NUQVJUOworCisJcmV0dXJuIGhpc3Q7Cit9CisKKy8qCisgKiBoaXN0b2dyYW1fYWRkCisg KgkJCSBBZGQgYSBoaXQgZm9yIGEgcGFydGljdWxhciB2YWx1ZSB0byB0aGUgaGlzdG9ncmFt LgorICoKKyAqIFhYWCBXZSBkb24ndCBzb3J0IHRoZSBiaW5zLCBzbyBqdXN0IGRvIGJpbmFy eSBzb3J0LiBGb3IgbGFyZ2UgbnVtYmVyIG9mIHZhbHVlcworICogdGhpcyBtaWdodCBiZSBh biBpc3N1ZSwgZm9yIHNtYWxsIG51bWJlciBvZiB2YWx1ZXMgYSBsaW5lYXIgc2VhcmNoIGlz IGZpbmUuCisgKi8KK3N0YXRpYyBoaXN0b2dyYW1fdCAqCitoaXN0b2dyYW1fYWRkKGhpc3Rv Z3JhbV90ICpoaXN0LCBpbnQgdmFsdWUpCit7CisJYm9vbAlmb3VuZCA9IGZhbHNlOworCWhp c3RvZ3JhbV9iaW5fdCAqYmluOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBoaXN0LT5uYmlu czsgaSsrKQorCXsKKwkJaWYgKGhpc3QtPmJpbnNbaV0udmFsdWUgPT0gdmFsdWUpCisJCXsK KwkJCWJpbiA9ICZoaXN0LT5iaW5zW2ldOworCQkJZm91bmQgPSB0cnVlOworCQl9CisJfQor CisJaWYgKCFmb3VuZCkKKwl7CisJCWlmIChoaXN0LT5uYmlucyA9PSBoaXN0LT5uYmluc19t YXgpCisJCXsKKwkJCWludAkJbmJpbnMgPSAoMiAqIGhpc3QtPm5iaW5zX21heCk7CisKKwkJ CWhpc3QgPSByZXBhbGxvYyhoaXN0LCBvZmZzZXRvZihoaXN0b2dyYW1fdCwgYmlucykgKwor CQkJCQkJCXNpemVvZihoaXN0b2dyYW1fYmluX3QpICogbmJpbnMpOworCQkJaGlzdC0+bmJp bnNfbWF4ID0gbmJpbnM7CisJCX0KKworCQlBc3NlcnQoaGlzdC0+bmJpbnMgPCBoaXN0LT5u Ymluc19tYXgpOworCisJCWJpbiA9ICZoaXN0LT5iaW5zW2hpc3QtPm5iaW5zKytdOworCQli aW4tPnZhbHVlID0gdmFsdWU7CisJCWJpbi0+Y291bnQgPSAwOworCX0KKworCWJpbi0+Y291 bnQgKz0gMTsKKworCUFzc2VydChiaW4tPnZhbHVlID09IHZhbHVlKTsKKwlBc3NlcnQoYmlu LT5jb3VudCA+PSAwKTsKKworCXJldHVybiBoaXN0OworfQorCisvKiB1c2VkIHRvIHNvcnQg aGlzdG9ncmFtIGJpbnMgYnkgdmFsdWUgKi8KK3N0YXRpYyBpbnQKK2hpc3RvZ3JhbV9iaW5f Y21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCit7CisJaGlzdG9ncmFtX2Jpbl90 ICpiYSA9IChoaXN0b2dyYW1fYmluX3QgKikgYTsKKwloaXN0b2dyYW1fYmluX3QgKmJiID0g KGhpc3RvZ3JhbV9iaW5fdCAqKSBiOworCisJaWYgKGJhLT52YWx1ZSA8IGJiLT52YWx1ZSkK KwkJcmV0dXJuIC0xOworCisJaWYgKGJiLT52YWx1ZSA8IGJhLT52YWx1ZSkKKwkJcmV0dXJu IDE7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2hpc3RvZ3JhbV9wcmludCho aXN0b2dyYW1fdCAqaGlzdCkKK3sKKwlyZXR1cm47CisKKwllbG9nKFdBUk5JTkcsICItLS0t LSBoaXN0b2dyYW0gLS0tLS0iKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGhpc3QtPm5iaW5z OyBpKyspCisJeworCQllbG9nKFdBUk5JTkcsICJiaW4gJWQgdmFsdWUgJWxkIGNvdW50ICVs ZCIsCisJCQkJaSwgaGlzdC0+Ymluc1tpXS52YWx1ZSwgaGlzdC0+Ymluc1tpXS5jb3VudCk7 CisJfQorfQorCisvKgorICogYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlczIK KyAqCQlNYXRjaCB0dXBsZXMgdG8gcmFuZ2VzLCBjb3VudCBhdmVyYWdlIG51bWJlciBvZiBy YW5nZXMgcGVyIHR1cGxlLgorICoKKyAqIE1hdGNoIHNhbXBsZSB0dXBsZXMgdG8gdGhlIHJh bmdlcywgc28gdGhhdCB3ZSBjYW4gY291bnQgaG93IG1hbnkgcmFuZ2VzCisgKiBhIHZhbHVl IG1hdGNoZXMgb24gYXZlcmFnZS4gVGhpcyBtaWdodCBzZWVtIHJlZHVuZGFudCB0byB0aGUg bnVtYmVyIG9mCisgKiBvdmVybGFwcywgYmVjYXVzZSB0aGUgdmFsdWUgaXMgfmF2Z19vdmVy bGFwcy8yLgorICoKKyAqIEltYWdpbmUgcmFuZ2VzIGFycmFuZ2VkIGluICJzaGlmdGVkIiB1 bmlmb3JtbHkgYnkgMS9vdmVybGFwcywgZS5nLiB3aXRoIDMKKyAqIG92ZXJsYXBzIFswLDEw MF0sIFszMywxMzNdLCBbNjYsIDE2Nl0gYW5kIHNvIG9uLiBBIHJhbmRvbSB2YWx1ZSB3aWxs IGhpdAorICogb25seSBoYWxmIG9mIHRoZXJlIHJhbmdlcywgdGh1cyAxLzIuIFRoaXMgY2Fu IGJlIGV4dGVuZGVkIHRvIHJhbmRvbWx5CisgKiBvdmVybGFwcGluZyByYW5nZXMuCisgKgor ICogSG93ZXZlciwgd2UgbWF5IG5vdCBiZSBhYmxlIHRvIGNvdW50IG92ZXJsYXBzIGZvciBz b21lIG9wY2xhc3NlcyAoZS5nLiBmb3IKKyAqIGJsb29tIHJhbmdlcyksIGluIHdoaWNoIGNh c2Ugd2UgaGF2ZSBhdCBsZWFzdCB0aGlzLgorICoKKyAqIFRoaXMgc2ltcGx5IHdhbGtzIHRo ZSB2YWx1ZXMsIGFuZCBkZXRlcm1pbmVzIG1hdGNoaW5nIHJhbmdlcyBieSBsb29raW5nCisg KiBmb3IgbG93ZXIvdXBwZXIgYm91bmQgaW4gcmFuZ2VzIG9yZGVyZWQgYnkgbWludmFsL21h eHZhbC4KKyAqCisgKiBYWFggVGhlIG90aGVyIHF1ZXN0aW9uIGlzIHdoYXQgdG8gZG8gYWJv dXQgZHVwbGljYXRlIHZhbHVlcy4gSWYgd2UgaGF2ZSBhCisgKiB2ZXJ5IGZyZXF1ZW50IHZh bHVlIGluIHRoZSBzYW1wbGUsIGl0J3MgbGlrZWx5IGluIG1hbnkgcGxhY2VzL3Jhbmdlcy4g V2hpY2gKKyAqIHdpbGwgc2tldyB0aGUgYXZlcmFnZSwgYmVjYXVzZSBpdCdsbCBiZSBhZGRl ZCByZXBlYXRlZGx5LiBTbyB3ZSBhbHNvIGNvdW50CisgKiBhdmdfcmFuZ2VzIGZvciB1bmlx dWUgdmFsdWVzLgorICoKKyAqIFhYWCBUaGUgcmVsYXRpb25zaGlwIHRoYXQgKGF2ZXJhZ2Vf bWF0Y2hlcyB+IGF2ZXJhZ2Vfb3ZlcmxhcHMvMikgb25seQorICogd29ya3MgZm9yIG1pbm1h eCBvcGNsYXNzLCBhbmQgY2FuJ3QgYmUgZXh0ZW5kZWQgdG8gbWlubWF4LW11bHRpLiBUaGUK KyAqIG92ZXJsYXBzIGNhbiBvbmx5IGNvbnNpZGVyIHRoZSB0d28gZXh0cmVtZSB2YWx1ZXMg KGVzc2VudGlhbGx5IHRyZWF0aW5nCisgKiB0aGUgc3VtbWFyeSBhcyBhIHNpbmdsZSBtaW5t YXggcmFuZ2UpLCBiZWNhdXNlIHRoYXQncyB3aGF0IGJyaW5zb3J0CisgKiBuZWVkcy4gQnV0 IHRoZSBtaW5tYXgtbXVsdGkgcmFuZ2UgbWF5IGhhdmUgImdhcHMiIChraW5kYSB0aGUgd2hv bGUgcG9pbnQKKyAqIG9mIHRoZXNlIG9wY2xhc3NlcyksIHdoaWNoIGFmZmVjdHMgbWF0Y2hp bmcgdHVwbGVzIHRvIHJhbmdlcy4KKyAqCisgKiBYWFggVGhpcyBhbHNvIGJ1aWxkcyBoaXN0 b2dyYW1zIG9mIHRoZSBudW1iZXIgb2YgbWF0Y2hlcywgYm90aCBmb3IgdGhlCisgKiByYXcg YW5kIHVuaXF1ZSB2YWx1ZXMuIEF0IHRoZSBtb21lbnQgd2UgZG9uJ3QgZG8gYW55dGhpbmcg d2l0aCB0aGUKKyAqIHJlc3VsdHMsIHRob3VnaCAoZXhjZXB0IGZvciBwcmludGluZyB0aG9z ZSkuCisgKi8KK3N0YXRpYyB2b2lkCiticmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFu Z2VzMihCcmluUmFuZ2VzICpyYW5nZXMsCisJCQkJCQkJCQlCcmluUmFuZ2UgKiptaW5yYW5n ZXMsIEJyaW5SYW5nZSAqKm1heHJhbmdlcywKKwkJCQkJCQkJCWludCBudW1yb3dzLCBIZWFw VHVwbGUgKnJvd3MsCisJCQkJCQkJCQlpbnQgbnZhbHVlcywgRGF0dW0gKnZhbHVlcywKKwkJ CQkJCQkJCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKKwkJCQkJCQkJCUJyaW5NaW5tYXhT dGF0cyAqc3RhdHMpCit7CisJaW50NjQJbm1hdGNoZXMgPSAwOworCWludDY0CW5tYXRjaGVz X3VuaXF1ZSA9IDA7CisJaW50NjQJbm1hdGNoZXNfdmFsdWUgPSAwOworCWludDY0CW52YWx1 ZXNfdW5pcXVlID0gMDsKKworCWhpc3RvZ3JhbV90CSAgICpoaXN0ID0gaGlzdG9ncmFtX2lu aXQoKTsKKwloaXN0b2dyYW1fdAkgICAqaGlzdF91bmlxdWUgPSBoaXN0b2dyYW1faW5pdCgp OworCVRpbWVzdGFtcFR6CQlzdGFydF90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwor CWZvciAoaW50IGkgPSAwOyBpIDwgbnZhbHVlczsgaSsrKQorCXsKKwkJaW50CQlzdGFydDsK KwkJaW50CQllbmQ7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkg KiBTYW1lIHZhbHVlIGFzIHByZWNlZGluZywgc28ganVzdCB1c2UgdGhlIHByZWNlZGluZyBj b3VudC4KKwkJICogV2UgZG9uJ3QgaW5jcmVtZW50IHRoZSB1bmlxdWUgY291bnRlcnMsIGJl Y2F1c2UgdGhpcyBpcworCQkgKiBhIGR1cGxpY2F0ZS4KKwkJICovCisJCWlmICgoaSA+IDAp ICYmIChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZXNbaS0xXSwgJnZhbHVlc1tpXSwgdHlwY2Fj aGUpID09IDApKQorCQl7CisJCQlubWF0Y2hlcyArPSBubWF0Y2hlc192YWx1ZTsKKwkJCWhp c3QgPSBoaXN0b2dyYW1fYWRkKGhpc3QsIG5tYXRjaGVzX3ZhbHVlKTsKKwkJCWNvbnRpbnVl OworCQl9CisKKwkJbm1hdGNoZXNfdmFsdWUgPSAwOworCisJCXN0YXJ0ID0gbWF4dmFsX3N0 YXJ0KG1heHJhbmdlcywgcmFuZ2VzLT5ucmFuZ2VzLCB2YWx1ZXNbaV0sIHR5cGNhY2hlKTsK KwkJZW5kID0gbWludmFsX2VuZChtaW5yYW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgdmFsdWVz W2ldLCB0eXBjYWNoZSk7CisKKwkJZm9yIChpbnQgaiA9IHN0YXJ0OyBqIDwgcmFuZ2VzLT5u cmFuZ2VzOyBqKyspCisJCXsKKwkJCWlmIChtYXhyYW5nZXNbal0tPm1pbl9pbmRleCA+PSBl bmQpCisJCQkJY29udGludWU7CisKKwkJCWlmIChtYXhyYW5nZXNbal0tPm1pbl9pbmRleF9s b3dlc3QgPj0gZW5kKQorCQkJCWJyZWFrOworCisJCQlubWF0Y2hlc192YWx1ZSsrOworCQl9 CisKKwkJaGlzdCA9IGhpc3RvZ3JhbV9hZGQoaGlzdCwgbm1hdGNoZXNfdmFsdWUpOworCQlo aXN0X3VuaXF1ZSA9IGhpc3RvZ3JhbV9hZGQoaGlzdF91bmlxdWUsIG5tYXRjaGVzX3ZhbHVl KTsKKworCQlubWF0Y2hlcyArPSBubWF0Y2hlc192YWx1ZTsKKwkJbm1hdGNoZXNfdW5pcXVl ICs9IG5tYXRjaGVzX3ZhbHVlOworCQludmFsdWVzX3VuaXF1ZSsrOworCX0KKworCWlmIChk ZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAiLS0tLS0gYnJpbl9taW5t YXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlczIgLS0tLS0iKTsKKwkJZWxvZyhXQVJOSU5HLCAi bm1hdGNoZXMgPSAlbGQgJWYiLCBubWF0Y2hlcywgKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1y b3dzKTsKKwkJZWxvZyhXQVJOSU5HLCAibm1hdGNoZXMgdW5pcXVlID0gJWxkICVsZCAlZiIs CisJCQkgbm1hdGNoZXNfdW5pcXVlLCBudmFsdWVzX3VuaXF1ZSwgKGRvdWJsZSkgbm1hdGNo ZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWUpOworCQllbG9nKFdBUk5JTkcsICJkdXJhdGlv biA9ICVsZCIsIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoc3RhcnRfdHMsCisJ CQkJCQkJCQkJR2V0Q3VycmVudFRpbWVzdGFtcCgpKSk7CisJfQorCisJaWYgKHN0YXRzLT5h dmdfbWF0Y2hlcyAhPSAoZG91YmxlKSBubWF0Y2hlcyAvIG51bXJvd3MpCisJCWVsb2coRVJS T1IsICJicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzMjogYXZnX21hdGNoZXMg bWlzbWF0Y2ggJWYgIT0gJWYiLAorCQkJIHN0YXRzLT5hdmdfbWF0Y2hlcywgKGRvdWJsZSkg bm1hdGNoZXMgLyBudW1yb3dzKTsKKworCWlmIChzdGF0cy0+YXZnX21hdGNoZXNfdW5pcXVl ICE9IChkb3VibGUpIG5tYXRjaGVzX3VuaXF1ZSAvIG52YWx1ZXNfdW5pcXVlKQorCQllbG9n KEVSUk9SLCAiYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3JhbmdlczI6IGF2Z19tYXRj aGVzX3VuaXF1ZSBtaXNtYXRjaCAlZiAhPSAlZiIsCisJCQkgc3RhdHMtPmF2Z19tYXRjaGVz X3VuaXF1ZSwgKGRvdWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZhbHVlc191bmlxdWUpOwor CisJcGdfcXNvcnQoaGlzdC0+YmlucywgaGlzdC0+bmJpbnMsIHNpemVvZihoaXN0b2dyYW1f YmluX3QpLCBoaXN0b2dyYW1fYmluX2NtcCk7CisJcGdfcXNvcnQoaGlzdF91bmlxdWUtPmJp bnMsIGhpc3RfdW5pcXVlLT5uYmlucywgc2l6ZW9mKGhpc3RvZ3JhbV9iaW5fdCksIGhpc3Rv Z3JhbV9iaW5fY21wKTsKKworCWhpc3RvZ3JhbV9wcmludChoaXN0KTsKKwloaXN0b2dyYW1f cHJpbnQoaGlzdF91bmlxdWUpOworCisJcGZyZWUoaGlzdCk7CisJcGZyZWUoaGlzdF91bmlx dWUpOworfQorCisvKgorICogYnJpbl9taW5tYXhfbWF0Y2hfdHVwbGVzX3RvX3Jhbmdlc19i cnV0ZWZvcmNlCisgKgkJTWF0Y2ggdHVwbGVzIHRvIHJhbmdlcywgY291bnQgYXZlcmFnZSBu dW1iZXIgb2YgcmFuZ2VzIHBlciB0dXBsZS4KKyAqCisgKiBCcnV0ZWZvcmNlIGFwcHJvYWNo LCB1c2VkIG1vc3RseSBmb3IgY3Jvc3MtY2hlY2tpbmcuCisgKi8KK3N0YXRpYyB2b2lkCiti cmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzX2JydXRlZm9yY2UoQnJpblJhbmdl cyAqcmFuZ2VzLAorCQkJCQkJCQkJCQkgIGludCBudW1yb3dzLCBIZWFwVHVwbGUgKnJvd3Ms CisJCQkJCQkJCQkJCSAgaW50IG52YWx1ZXMsIERhdHVtICp2YWx1ZXMsCisJCQkJCQkJCQkJ CSAgVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLAorCQkJCQkJCQkJCQkgIEJyaW5NaW5tYXhT dGF0cyAqc3RhdHMpCit7CisJaW50NjQJbm1hdGNoZXMgPSAwOworCWludDY0CW5tYXRjaGVz X3VuaXF1ZSA9IDA7CisJaW50NjQJbnZhbHVlc191bmlxdWUgPSAwOworCisJVGltZXN0YW1w VHoJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBudmFsdWVzOyBpKyspCisJeworCQlib29sCWlzX3VuaXF1ZTsKKwkJaW50NjQJ bm1hdGNoZXNfdmFsdWUgPSAwOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJ LyogaXMgdGhpcyBhIG5ldyB2YWx1ZT8gKi8KKwkJaXNfdW5pcXVlID0gKChpID09IDApIHx8 IChyYW5nZV92YWx1ZXNfY21wKCZ2YWx1ZXNbaS0xXSwgJnZhbHVlc1tpXSwgdHlwY2FjaGUp ICE9IDApKTsKKworCQkvKiBjb3VudCB1bmlxdWUgdmFsdWVzICovCisJCW52YWx1ZXNfdW5p cXVlICs9IChpc191bmlxdWUpID8gMSA6IDA7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBy YW5nZXMtPm5yYW5nZXM7IGorKykKKwkJeworCQkJaWYgKHJhbmdlX3ZhbHVlc19jbXAoJnZh bHVlc1tpXSwgJnJhbmdlcy0+cmFuZ2VzW2pdLm1pbl92YWx1ZSwgdHlwY2FjaGUpIDwgMCkK KwkJCQljb250aW51ZTsKKworCQkJaWYgKHJhbmdlX3ZhbHVlc19jbXAoJnZhbHVlc1tpXSwg JnJhbmdlcy0+cmFuZ2VzW2pdLm1heF92YWx1ZSwgdHlwY2FjaGUpID4gMCkKKwkJCQljb250 aW51ZTsKKworCQkJbm1hdGNoZXNfdmFsdWUrKzsKKwkJfQorCisJCW5tYXRjaGVzICs9IG5t YXRjaGVzX3ZhbHVlOworCQlubWF0Y2hlc191bmlxdWUgKz0gKGlzX3VuaXF1ZSkgPyBubWF0 Y2hlc192YWx1ZSA6IDA7CisJfQorCisJaWYgKGRlYnVnX2JyaW5fc3RhdHMpCisJeworCQll bG9nKFdBUk5JTkcsICItLS0tLSBicmluX21pbm1heF9tYXRjaF90dXBsZXNfdG9fcmFuZ2Vz X2JydXRlZm9yY2UgLS0tLS0iKTsKKwkJZWxvZyhXQVJOSU5HLCAibm1hdGNoZXMgPSAlbGQg JWYiLCBubWF0Y2hlcywgKGRvdWJsZSkgbm1hdGNoZXMgLyBudW1yb3dzKTsKKwkJZWxvZyhX QVJOSU5HLCAibm1hdGNoZXMgdW5pcXVlID0gJWxkICVsZCAlZiIsIG5tYXRjaGVzX3VuaXF1 ZSwgbnZhbHVlc191bmlxdWUsCisJCQkgKGRvdWJsZSkgbm1hdGNoZXNfdW5pcXVlIC8gbnZh bHVlc191bmlxdWUpOworCQllbG9nKFdBUk5JTkcsICJkdXJhdGlvbiA9ICVsZCIsIFRpbWVz dGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoc3RhcnRfdHMsCisJCQkJCQkJCQkJR2V0Q3Vy cmVudFRpbWVzdGFtcCgpKSk7CisJfQorCisJaWYgKHN0YXRzLT5hdmdfbWF0Y2hlcyAhPSAo ZG91YmxlKSBubWF0Y2hlcyAvIG51bXJvd3MpCisJCWVsb2coRVJST1IsICJicmluX21pbm1h eF9tYXRjaF90dXBsZXNfdG9fcmFuZ2VzX2JydXRlZm9yY2U6IGF2Z19tYXRjaGVzIG1pc21h dGNoICVmICE9ICVmIiwKKwkJCSBzdGF0cy0+YXZnX21hdGNoZXMsIChkb3VibGUpIG5tYXRj aGVzIC8gbnVtcm93cyk7CisKKwlpZiAoc3RhdHMtPmF2Z19tYXRjaGVzX3VuaXF1ZSAhPSAo ZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1ZSkKKwkJZWxvZyhFUlJP UiwgImJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190b19yYW5nZXNfYnJ1dGVmb3JjZTogYXZn X21hdGNoZXNfdW5pcXVlIG1pc21hdGNoICVmICE9ICVmIiwKKwkJCSBzdGF0cy0+YXZnX21h dGNoZXNfdW5pcXVlLCAoZG91YmxlKSBubWF0Y2hlc191bmlxdWUgLyBudmFsdWVzX3VuaXF1 ZSk7Cit9CisjZW5kaWYKKwogLyoKICAqIGJyaW5fbWlubWF4X3ZhbHVlX3N0YXRzCiAgKgkJ Q2FsY3VsYXRlIHN0YXRpc3RpY3MgYWJvdXQgbWludmFsL21heHZhbCB2YWx1ZXMuCkBAIC04 MDMsNiArMTE1OCwxOTggQEAgYnJpbl9taW5tYXhfaW5jcmVtZW50X3N0YXRzKEJyaW5SYW5n ZSAqKm1pbnJhbmdlcywgQnJpblJhbmdlICoqbWF4cmFuZ2VzLAogCXN0YXRzLT5tYXh2YWxf aW5jcmVtZW50X21heCA9IG1heF9tYXh2YWw7CiB9CiAKKyNpZmRlZiBERUJVR19CUklOX1NU QVRTCisvKgorICogYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyCisgKgkJQ2FsY3VsYXRl IG51bWJlciBvZiBvdmVybGFwcy4KKyAqCisgKiBUaGlzIHVzZXMgdGhlIG1pbnJhbmdlcy9t YXhyYW5nZXMgdG8gcXVpY2tseSBlbGltaW5hdGUgcmFuZ2VzIHRoYXQgY2FuJ3QKKyAqIHBv c3NpYmx5IGludGVyc2VjdC4KKyAqCisgKiBYWFggU2VlbXMgcmF0aGVyIGNvbXBsaWNhdGVk IGFuZCB3b3JrcyBwb29ybHkgZm9yIHdpZGUgcmFuZ2VzICh3aXRoIG91dGxpZXIKKyAqIHZh bHVlcyksIGJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzIGlzIGxpa2VseSBiZXR0ZXIuCisg Ki8KK3N0YXRpYyB2b2lkCiticmluX21pbm1heF9jb3VudF9vdmVybGFwczIoQnJpblJhbmdl cyAqcmFuZ2VzLAorCQkJCQkJICAgQnJpblJhbmdlICoqbWlucmFuZ2VzLCBCcmluUmFuZ2Ug KiptYXhyYW5nZXMsCisJCQkJCQkgICBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIEJyaW5N aW5tYXhTdGF0cyAqc3RhdHMpCit7CisJaW50NjQJCQlub3ZlcmxhcHM7CisJVGltZXN0YW1w VHoJCXN0YXJ0X3RzID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyoKKwkgKiBXYWxr IHRoZSByYW5nZXMgb3JkZXJlZCBieSBtYXhfdmFsdWVzLCBzZWUgaG93IG1hbnkgcmFuZ2Vz IG92ZXJsYXAuCisJICoKKwkgKiBPbmNlIHdlIGdldCB0byBhIHN0YXRlIHdoZXJlIChtaW5f dmFsdWUgPiBjdXJyZW50Lm1heF92YWx1ZSkgZm9yCisJICogYWxsIGZ1dHVyZSByYW5nZXMs IHdlIGtub3cgbm9uZSBvZiB0aGVtIGNhbiBvdmVybGFwIGFuZCB3ZSBjYW4KKwkgKiB0ZXJt aW5hdGUuIFRoaXMgaXMgd2hhdCBtaW5faW5kZXhfbG93ZXN0IGlzIGZvci4KKwkgKgorCSAq IFhYWCBJZiB0aGVyZSBhcmUgdmVyeSB3aWRlIHJhbmdlcyAod2l0aCBvdXRsaWVyIG1pbi9t YXggdmFsdWVzKSwKKwkgKiB0aGUgbWluX2luZGV4X2xvd2VzdCBpcyBnb2luZyB0byBiZSBw cmV0dHkgdXNlbGVzcywgYmVjYXVzZSB0aGUKKwkgKiByYW5nZSB3aWxsIGJlIHNvcnRlZCBh dCB0aGUgdmVyeSBlbmQgYnkgbWF4X3ZhbHVlLCBidXQgd2lsbCBoYXZlCisJICogdmVyeSBs b3cgbWluX2luZGV4LCBzbyB0aGlzIHdvbid0IHdvcmsuCisJICoKKwkgKiBYWFggV2UgY291 bGQgY29sbGVjdCBhIG1vcmUgZWxhYm9yYXRlIHN0dWZmLCBsaWtlIGZvciBleGFtcGxlIGEK KwkgKiBoaXN0b2dyYW0gb2YgbnVtYmVyIG9mIG92ZXJsYXBzLCBvciBtYXhpbXVtIG51bWJl ciBvZiBvdmVybGFwcy4KKwkgKiBTbyB3ZSdkIGhhdmUgYXZlcmFnZSwgYnV0IHRoZW4gYWxz byBhbiBpbmZvIGlmIHRoZXJlIGFyZSBzb21lCisJICogcmFuZ2VzIHdpdGggdmVyeSBtYW55 IG92ZXJsYXBzLgorCSAqLworCW5vdmVybGFwcyA9IDA7CisJZm9yIChpbnQgaSA9IDA7IGkg PCByYW5nZXMtPm5yYW5nZXM7IGkrKykKKwl7CisJCWludAkJCWlkeCA9IChpICsgMSk7CisJ CUJyaW5SYW5nZSAqcmEgPSBtYXhyYW5nZXNbaV07CisJCXVpbnQ2NAkJbWluX2luZGV4ID0g cmEtPm1pbl9pbmRleDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisjaWZkZWYg Tk9UX1VTRUQKKwkJLyoKKwkJICogWFhYIE5vdCBuZWVkZWQsIHdlIGNhbiBqdXN0IGNvdW50 ICJmdXR1cmUiIHJhbmdlcyBhbmQgdGhlbgorCQkgKiB3ZSBqdXN0IG11bHRpcGx5IGJ5IDIu CisJCSAqLworCisJCS8qCisJCSAqIFdoYXQncyB0aGUgZmlyc3QgcmFuZ2UgdGhhdCBtaWdo dCBvdmVybGFwIHdpdGggdGhpcyBvbmU/CisJCSAqIG5lZWRzIHRvIGhhdmUgbWF4dmFsID4g Y3VycmVudC5taW52YWwuCisJCSAqLworCQl3aGlsZSAoaWR4ID4gMCkKKwkJeworCQkJQnJp blJhbmdlICpyYiA9IG1heHJhbmdlc1tpZHggLSAxXTsKKworCQkJLyogdGhlIHJhbmdlIGlz IGJlZm9yZSB0aGUgY3VycmVudCBvbmUsIHNvIGNhbid0IGludGVyc2VjdCAqLworCQkJaWYg KHJhbmdlX3ZhbHVlc19jbXAoJnJiLT5tYXhfdmFsdWUsICZyYS0+bWluX3ZhbHVlLCB0eXBj YWNoZSkgPCAwKQorCQkJCWJyZWFrOworCisJCQlpZHgtLTsKKwkJfQorI2VuZGlmCisKKwkJ LyoKKwkJICogRmluZCB0aGUgZmlyc3QgbWluX2luZGV4IHRoYXQgaXMgaGlnaGVyIHRoYW4g dGhlIG1heF92YWx1ZSwKKwkJICogc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB0aGF0IGluc3Rl YWQgb2YgdGhlIHZhbHVlcyBpbiB0aGUKKwkJICogbmV4dCBsb29wLiBUaGVyZSBzaG91bGQg YmUgZmV3ZXIgdmFsdWUgY29tcGFyaXNvbnMgdGhhbiBpbgorCQkgKiB0aGUgbmV4dCBsb29w LCBzbyB3ZSdsbCBzYXZlIG9uIGZ1bmN0aW9uIGNhbGxzLgorCQkgKi8KKwkJd2hpbGUgKG1p bl9pbmRleCA8IHJhbmdlcy0+bnJhbmdlcykKKwkJeworCQkJaWYgKHJhbmdlX3ZhbHVlc19j bXAoJm1pbnJhbmdlc1ttaW5faW5kZXhdLT5taW5fdmFsdWUsCisJCQkJCQkJCSAmcmEtPm1h eF92YWx1ZSwgdHlwY2FjaGUpID4gMCkKKwkJCQlicmVhazsKKworCQkJbWluX2luZGV4Kys7 CisJCX0KKworCQkvKgorCQkgKiBXYWxrIHRoZSBmb2xsb3dpbmcgcmFuZ2VzIChvcmRlcmVk IGJ5IG1heF92YWx1ZSksIGFuZCBjaGVjaworCQkgKiBpZiBpdCBvdmVybGFwcy4gSWYgaXQg bWF0Y2hlcywgd2UgbG9vayBhdCB0aGUgbmV4dCBvbmUuIElmCisJCSAqIG5vdCwgd2UgY2hl Y2sgaWYgdGhlcmUgY2FuIGJlIG1vcmUgcmFuZ2VzLgorCQkgKi8KKwkJZm9yIChpbnQgaiA9 IGlkeDsgaiA8IHJhbmdlcy0+bnJhbmdlczsgaisrKQorCQl7CisJCQlCcmluUmFuZ2UgKnJi ID0gbWF4cmFuZ2VzW2pdOworCisJCQkvKiB0aGUgcmFuZ2Ugb3ZlcmxhcHMgLSBqdXN0IGNv bnRpbnVlIHdpdGggdGhlIG5leHQgb25lICovCisJCQkvLyBpZiAocmFuZ2VfdmFsdWVzX2Nt cCgmcmItPm1pbl92YWx1ZSwgJnJhLT5tYXhfdmFsdWUsIHR5cGNhY2hlKSA8PSAwKQorCQkJ aWYgKHJiLT5taW5faW5kZXggPCBtaW5faW5kZXgpCisJCQl7CisJCQkJbm92ZXJsYXBzKys7 CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBBcmUgdGhlcmUgYW55IGZ1 dHVyZSByYW5nZXMgdGhhdCBtaWdodCBvdmVybGFwPyBXZSBjYW4KKwkJCSAqIGNoZWNrIHRo ZSBtaW5faW5kZXhfbG93ZXN0IHRvIGRlY2lkZSBxdWlja2x5LgorCQkJICovCisJCQkgaWYg KHJiLT5taW5faW5kZXhfbG93ZXN0ID49IG1pbl9pbmRleCkKKwkJCQkJYnJlYWs7CisJCX0K Kwl9CisKKwkvKgorCSAqIFdlIG9ubHkgY291bnQgaW50ZXJzZWN0IGZvciAiZm9sbG93aW5n IiByYW5nZXMgd2hlbiBvcmRlcmVkIGJ5IG1heHZhbCwKKwkgKiBzbyB3ZSBvbmx5IHNlZSAx LzIgdGhlIG92ZXJsYXBzLiBTbyBkb3VibGUgdGhlIHJlc3VsdC4KKwkgKi8KKwlub3Zlcmxh cHMgKj0gMjsKKworCWlmIChkZWJ1Z19icmluX3N0YXRzKQorCXsKKwkJZWxvZyhXQVJOSU5H LCAiLS0tLS0gYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHMyIC0tLS0tIik7CisJCWVsb2co V0FSTklORywgIm5vdmVybGFwcyA9ICVsZCIsIG5vdmVybGFwcyk7CisJCWVsb2coV0FSTklO RywgImR1cmF0aW9uID0gJWxkIiwgVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyhz dGFydF90cywKKwkJCQkJCQkJCQlHZXRDdXJyZW50VGltZXN0YW1wKCkpKTsKKwl9CisKKwlp ZiAoc3RhdHMtPmF2Z19vdmVybGFwcyAhPSAoZG91YmxlKSBub3ZlcmxhcHMgLyByYW5nZXMt Pm5yYW5nZXMpCisJCWVsb2coRVJST1IsICJicmluX21pbm1heF9jb3VudF9vdmVybGFwczI6 IG1pc21hdGNoICVmICE9ICVmIiwKKwkJCSBzdGF0cy0+YXZnX292ZXJsYXBzLCAoZG91Ymxl KSBub3ZlcmxhcHMgLyByYW5nZXMtPm5yYW5nZXMpOworfQorCisvKgorICogYnJpbl9taW5t YXhfY291bnRfb3ZlcmxhcHNfYnJ1dGVmb3JjZQorICoJCUNhbGN1bGF0ZSBudW1iZXIgb2Yg b3ZlcmxhcHMgYnkgYnJ1dGUgZm9yY2UuCisgKgorICogQWN0dWFsbHkgY29tcGFyZXMgZXZl cnkgcmFuZ2UgdG8gZXZlcnkgb3RoZXIgcmFuZ2UuIFF1aXRlIGV4cGVuc2l2ZSwgdXNlZAor ICogcHJpbWFyaWx5IHRvIGNyb3NzLWNoZWNrIHRoZSBvdGhlciBhbGdvcml0aG1zLgorICov CitzdGF0aWMgdm9pZAorYnJpbl9taW5tYXhfY291bnRfb3ZlcmxhcHNfYnJ1dGVmb3JjZShC cmluUmFuZ2VzICpyYW5nZXMsCisJCQkJCQkJCQkgIFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZSwKKwkJCQkJCQkJCSAgQnJpbk1pbm1heFN0YXRzICpzdGF0cykKK3sKKwlpbnQ2NAkJCW5v dmVybGFwczsKKwlUaW1lc3RhbXBUegkJc3RhcnRfdHMgPSBHZXRDdXJyZW50VGltZXN0YW1w KCk7CisKKwkvKgorCSAqIEJydXRlIGZvcmNlIGNhbGN1bGF0aW9uIG9mIG92ZXJsYXBwaW5n IHJhbmdlcywgY29tcGFyaW5nIGVhY2gKKwkgKiByYW5nZSB0byBldmVyeSBvdGhlciByYW5n ZSAtIGJvdW5kIHRvIGJlIHByZXR0eSBleHBlbnNpdmUsIGFzCisJICogaXQncyBwcmV0dHkg bXVjaCBPKE5eMikuIEtlcHQgbW9zdGx5IGZvciBlYXN5IGNyb3NzLWNoZWNrIHdpdGgKKwkg KiB0aGUgcHJlY2VkaW5nICJvcHRpbWl6ZWQiIGNvZGUuCisJICovCisJbm92ZXJsYXBzID0g MDsKKwlmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlcy0+bnJhbmdlczsgaSsrKQorCXsKKwkJ QnJpblJhbmdlICpyYSA9ICZyYW5nZXMtPnJhbmdlc1tpXTsKKworCQlmb3IgKGludCBqID0g MDsgaiA8IHJhbmdlcy0+bnJhbmdlczsgaisrKQorCQl7CisJCQlCcmluUmFuZ2UgKnJiID0g JnJhbmdlcy0+cmFuZ2VzW2pdOworCisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJ CQlpZiAoaSA9PSBqKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAocmFuZ2VfdmFsdWVzX2Nt cCgmcmEtPm1heF92YWx1ZSwgJnJiLT5taW5fdmFsdWUsIHR5cGNhY2hlKSA8IDApCisJCQkJ Y29udGludWU7CisKKwkJCWlmIChyYW5nZV92YWx1ZXNfY21wKCZyYi0+bWF4X3ZhbHVlLCAm cmEtPm1pbl92YWx1ZSwgdHlwY2FjaGUpIDwgMCkKKwkJCQljb250aW51ZTsKKworI2lmIDAK KwkJCWVsb2coREVCVUcxLCAiWyVsZCwlbGRdIG92ZXJsYXBzIFslbGQsJWxkXSIsCisJCQkJ IHJhLT5taW5fdmFsdWUsIHJhLT5tYXhfdmFsdWUsCisJCQkJIHJiLT5taW5fdmFsdWUsIHJi LT5tYXhfdmFsdWUpOworI2VuZGlmCisKKwkJCW5vdmVybGFwcysrOworCQl9CisJfQorCisJ aWYgKGRlYnVnX2JyaW5fc3RhdHMpCisJeworCQllbG9nKFdBUk5JTkcsICItLS0tLSBicmlu X21pbm1heF9jb3VudF9vdmVybGFwc19icnV0ZWZvcmNlIC0tLS0tIik7CisJCWVsb2coV0FS TklORywgIm5vdmVybGFwcyA9ICVsZCIsIG5vdmVybGFwcyk7CisJCWVsb2coV0FSTklORywg ImR1cmF0aW9uID0gJWxkIiwgVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyhzdGFy dF90cywKKwkJCQkJCQkJCQlHZXRDdXJyZW50VGltZXN0YW1wKCkpKTsKKwl9CisKKwlpZiAo c3RhdHMtPmF2Z19vdmVybGFwcyAhPSAoZG91YmxlKSBub3ZlcmxhcHMgLyByYW5nZXMtPm5y YW5nZXMpCisJCWVsb2coRVJST1IsICJicmluX21pbm1heF9jb3VudF9vdmVybGFwczI6IG1p c21hdGNoICVmICE9ICVmIiwKKwkJCSBzdGF0cy0+YXZnX292ZXJsYXBzLCAoZG91YmxlKSBu b3ZlcmxhcHMgLyByYW5nZXMtPm5yYW5nZXMpOworfQorI2VuZGlmCisKIC8qCiAgKiBicmlu X21pbm1heF9zdGF0cwogICoJCUNhbGN1bGF0ZSBjdXN0b20gc3RhdGlzdGljcyBmb3IgYSBC UklOIG1pbm1heCBpbmRleC4KQEAgLTgxNCw2ICsxMzYxLDExIEBAIGJyaW5fbWlubWF4X2lu Y3JlbWVudF9zdGF0cyhCcmluUmFuZ2UgKiptaW5yYW5nZXMsIEJyaW5SYW5nZSAqKm1heHJh bmdlcywKICAqICAtIGF2ZXJhZ2UgbnVtYmVyIG9mIHJvd3MgbWF0Y2hpbmcgYSByYW5nZQog ICogIC0gbnVtYmVyIG9mIGRpc3RpbmN0IG1pbnZhbC9tYXh2YWwgdmFsdWVzCiAgKgorICog VGhlcmUgYXJlIG11bHRpcGxlIHdheXMgdG8gY2FsY3VsYXRlIHNvbWUgb2YgdGhlIG1ldHJp Y3MsIHNvIHRvIGFsbG93CisgKiBjcm9zcy1jaGVja2luZyBkdXJpbmcgZGV2ZWxvcG1lbnQg aXQncyBwb3NzaWJsZSB0byBydW4gYW5kIGNvbXBhcmUgYWxsLgorICogVG8gZG8gdGhhdCwg ZGVmaW5lIFNUQVRTX0NST1NTX0NIRUNLLiBUaGVyZSdzIGFsc28gU1RBVFNfREVCVUcgZGVm aW5lCisgKiB0aGF0IHNpbXBseSBwcmludHMgdGhlIGNhbGN1bGF0ZWQgcmVzdWx0cy4KKyAq CiAgKiBYWFggVGhpcyBjb3VsZCBhbHNvIGNhbGN1bGF0ZSBjb3JyZWxhdGlvbiBvZiB0aGUg cmFuZ2UgbWludmFsLCBzbyB0aGF0CiAgKiB3ZSBjYW4gZXN0aW1hdGUgaG93IG11Y2ggcmFu ZG9tIEkvTyB3aWxsIGhhcHBlbiBkdXJpbmcgdGhlIEJyaW5Tb3J0LgogICogQW5kIHBlcmhh cHMgd2Ugc2hvdWxkIGFsc28gc29ydCB0aGUgcmFuZ2VzIGJ5IChtaW52YWwsYmxvY2tfc3Rh cnQpIHRvCkBAIC0xMTM1LDYgKzE2ODcsMTQgQEAgYnJpbl9taW5tYXhfc3RhdHMoUEdfRlVO Q1RJT05fQVJHUykKIAkvKiBjYWxjdWxhdGUgYXZlcmFnZSBudW1iZXIgb2Ygb3ZlcmxhcHBp bmcgcmFuZ2VzIGZvciBhbnkgcmFuZ2UgKi8KIAlicmluX21pbm1heF9jb3VudF9vdmVybGFw cyhtaW5yYW5nZXMsIHJhbmdlcy0+bnJhbmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKIAorI2lm ZGVmIERFQlVHX0JSSU5fU1RBVFMKKwlpZiAoZGVidWdfYnJpbl9jcm9zc19jaGVjaykKKwl7 CisJCWJyaW5fbWlubWF4X2NvdW50X292ZXJsYXBzMihyYW5nZXMsIG1pbnJhbmdlcywgbWF4 cmFuZ2VzLCB0eXBjYWNoZSwgc3RhdHMpOworCQlicmluX21pbm1heF9jb3VudF9vdmVybGFw c19icnV0ZWZvcmNlKHJhbmdlcywgdHlwY2FjaGUsIHN0YXRzKTsKKwl9CisjZW5kaWYKKwog CS8qIGNhbGN1bGF0ZSBtaW52YWwvbWF4dmFsIHN0YXRzIChkaXN0aW5jdCB2YWx1ZXMgYW5k IGNvcnJlbGF0aW9uKSAqLwogCWJyaW5fbWlubWF4X3ZhbHVlX3N0YXRzKG1pbnJhbmdlcywg bWF4cmFuZ2VzLAogCQkJCQkJCXJhbmdlcy0+bnJhbmdlcywgdHlwY2FjaGUsIHN0YXRzKTsK QEAgLTEyMDAsNiArMTc2MCwyMCBAQCBicmluX21pbm1heF9zdGF0cyhQR19GVU5DVElPTl9B UkdTKQogCQkJCQkJCQkJCSAgIG51bXJvd3MsIHJvd3MsIG52YWx1ZXMsIHZhbHVlcywKIAkJ CQkJCQkJCQkgICB0eXBjYWNoZSwgc3RhdHMpOwogCisjaWZkZWYgREVCVUdfQlJJTl9TVEFU UworCQlpZiAoZGVidWdfYnJpbl9jcm9zc19jaGVjaykKKwkJeworCQkJYnJpbl9taW5tYXhf bWF0Y2hfdHVwbGVzX3RvX3JhbmdlczIocmFuZ2VzLCBtaW5yYW5nZXMsIG1heHJhbmdlcywK KwkJCQkJCQkJCQkJCW51bXJvd3MsIHJvd3MsIG52YWx1ZXMsIHZhbHVlcywKKwkJCQkJCQkJ CQkJCXR5cGNhY2hlLCBzdGF0cyk7CisKKwkJCWJyaW5fbWlubWF4X21hdGNoX3R1cGxlc190 b19yYW5nZXNfYnJ1dGVmb3JjZShyYW5nZXMsCisJCQkJCQkJCQkJCQkJCSAgbnVtcm93cywg cm93cywKKwkJCQkJCQkJCQkJCQkJICBudmFsdWVzLCB2YWx1ZXMsCisJCQkJCQkJCQkJCQkJ CSAgdHlwY2FjaGUsIHN0YXRzKTsKKwkJfQorI2VuZGlmCisKIAkJYnJpbl9taW5tYXhfaW5j cmVtZW50X3N0YXRzKG1pbnJhbmdlcywgbWF4cmFuZ2VzLCByYW5nZXMtPm5yYW5nZXMsCiAJ CQkJCQkJCQl2YWx1ZXMsIG52YWx1ZXMsIHR5cGNhY2hlLCBzdGF0cyk7CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBmOGQwNjI5NmZiMS4uMWQ1NzYzNDNl Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC05OCw2ICs5OCw3 IEBAIGV4dGVybiBib29sIHN5bmNocm9uaXplX3NlcXNjYW5zOwogCiAjaWZkZWYgREVCVUdf QlJJTl9TVEFUUwogZXh0ZXJuIGJvb2wgZGVidWdfYnJpbl9zdGF0czsKK2V4dGVybiBib29s IGRlYnVnX2JyaW5fY3Jvc3NfY2hlY2s7CiAjZW5kaWYKIAogI2lmZGVmIFRSQUNFX1NZTkNT Q0FOCkBAIC0xMjQ2LDYgKzEyNDcsMTUgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3Vy ZU5hbWVzQm9vbFtdID0KIAkJZmFsc2UsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsK KwkJeyJkZWJ1Z19icmluX2Nyb3NzX2NoZWNrIiwgUEdDX1VTRVJTRVQsIERFVkVMT1BFUl9P UFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJDcm9zcy1jaGVjayBjYWxjdWxhdGlvbiBvZiBC UklOIHN0YXRpc3RpY3MuIiksCisJCQlOVUxMCisJCX0sCisJCSZkZWJ1Z19icmluX2Nyb3Nz X2NoZWNrLAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAjZW5kaWYKIAog CXsKLS0gCjIuMzkuMQoK --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0004-Allow-BRIN-indexes-to-produce-sorted-output-20230218.patch" Content-Disposition: attachment; filename*0="0004-Allow-BRIN-indexes-to-produce-sorted-output-20230218.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYTkyMGEzZWQwZWJhNzhmMGE0ZjdmYjkwM2VlYWYzNDMyZWQ3MjVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA5IE9jdCAyMDIyIDExOjMzOjM3ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAwNC8xMF0gQWxsb3cgQlJJTiBpbmRleGVzIHRvIHByb2R1Y2Ugc29ydGVk IG91dHB1dAoKU29tZSBCUklOIGluZGV4ZXMgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZSBzb3J0 ZWQgb3V0cHV0LCBieSB1c2luZyB0aGUKcmFuZ2UgaW5mb3JtYXRpb24gdG8gc29ydCB0dXBs ZXMgaW5jcmVtZW50YWxseS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkKaW50ZXJlc3RpbmcgZm9y IExJTUlUIHF1ZXJpZXMsIHdoaWNoIG9ubHkgbmVlZCB0byBzY2FuIHRoZSBmaXJzdCBmZXcK cm93cywgYW5kIGFsdGVybmF0aXZlIHBsYW5zIChlLmcuIFNlcSBTY2FuICsgU29ydCkgaGF2 ZSBhIHZlcnkgaGlnaApzdGFydHVwIGNvc3QuCgpPZiBjb3Vyc2UsIGlmIHRoZXJlIGFyZSBl LmcuIEJUUkVFIGluZGV4ZXMgdGhpcyBpcyBnb2luZyB0byBiZSBzbG93ZXIsCmJ1dCBwZW9w bGUgYXJlIHVubGlrZWx5IHRvIGhhdmUgYm90aCBpbmRleCB0eXBlcyBvbiB0aGUgc2FtZSBj b2x1bW4uCgpUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIHVzZSBlbmFibGVfYnJpbnNv cnQgR1VDIHRvIGVuYWJsZSBpdC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X21pbm1heC5jICAgICAgICAgfCAgNDAyICsrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAgNDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv TWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgIDEwICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJyaW5Tb3J0LmMgICAgICAgICAgIHwgMTYxMiArKysrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAgICAgIHwgIDI1 NCArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgICAgICAgICB8 ICAxODMgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMgICAgICAg ICB8ICAgNDkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAg ICAgIHwgIDI2MCArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAg ICAgICAgICB8ICAgMTkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUu YyAgICAgICAgIHwgICA1NyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyAgICAgICAgICAgfCAgIDI4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNv cnQuYyAgICAgICAgICAgIHwgICAxMiArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDM1IC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2lu dGVybmFsLmggICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bXByb2MuZGF0ICAgICAgICAgICAgIHwgICA2NCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlQnJpblNvcnQuaCAgICAgICAgICAgfCAgIDQ3ICsKIHNyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAxMDggKysKIHNyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMTEgKwogc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAzMiArCiBzcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvY29zdC5oICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNs dWRlL29wdGltaXplci9wYXRobm9kZS5oICAgICAgICAgICAgICB8ICAgIDkgKwogc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMv aW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgIDMgKy0K IDI4IGZpbGVzIGNoYW5nZWQsIDMyMTggaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQnJpblNv cnQuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCmluZGV4IGVkMTM4 ZjFmODlkLi4xMTgxYzllNzM4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbl9taW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21p bm1heC5jCkBAIC0xNiw2ICsxNiwxMCBAQAogI2luY2x1ZGUgImFjY2Vzcy9icmluX3R1cGxl LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0 bnVtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlYW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCkBAIC00 Myw2ICs0Nyw5IEBAIHN0YXRpYyBGbWdySW5mbyAqbWlubWF4X2dldF9zdHJhdGVneV9wcm9j aW5mbyhCcmluRGVzYyAqYmRlc2MsIHVpbnQxNiBhdHRubywKIAkJCQkJCQkJCQkJICBPaWQg c3VidHlwZSwgdWludDE2IHN0cmF0ZWd5bnVtKTsKIAogCisvKiBwcmludCBpbmZvIGFib3V0 IHJhbmdlcyAqLworI2RlZmluZSBCUklOU09SVF9ERUJVRworCiBEYXR1bQogYnJpbl9taW5t YXhfb3BjaW5mbyhQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTgwMyw2ICsxODEwLDQwMSBA QCBjbGVhbnVwOgogCVBHX1JFVFVSTl9QT0lOVEVSKHN0YXRzKTsKIH0KIAorLyoKKyAqIGJy aW5fbWlubWF4X3JhbmdlX3R1cGRlc2MKKyAqCQlDcmVhdGUgYSB0dXBsZSBkZXNjcmlwdG9y IHRvIHN0b3JlIEJyaW5SYW5nZSBkYXRhLgorICovCitzdGF0aWMgVHVwbGVEZXNjCiticmlu X21pbm1heF9yYW5nZV90dXBkZXNjKEJyaW5EZXNjICpicmRlc2MsIEF0dHJOdW1iZXIgYXR0 bnVtKQoreworCVR1cGxlRGVzYwl0dXBkZXNjOworCUF0dHJOdW1iZXIJYXR0bm8gPSAxOwor CisJLyogZXhwZWN0IG1pbmltdW0gYW5kIG1heGltdW0gKi8KKwlBc3NlcnQoYnJkZXNjLT5i ZF9pbmZvW2F0dG51bSAtIDFdLT5vaV9uc3RvcmVkID09IDIpOworCisJdHVwZGVzYyA9IENy ZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDcpOworCisJLyogYmxrbm9fc3RhcnQgKi8KKwlUdXBs ZURlc2NJbml0RW50cnkodHVwZGVzYywgYXR0bm8rKywgTlVMTCwgSU5UNE9JRCwgLTEsIDAp OworCisJLyogYmxrbm9fZW5kIChjb3VsZCBiZSBjYWxjdWxhdGVkIGFzIGJsa25vX3N0YXJ0 ICsgcGFnZXNfcGVyX3JhbmdlKSAqLworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCBh dHRubysrLCBOVUxMLCBJTlQ0T0lELCAtMSwgMCk7CisKKwkvKiBoYXNfbnVsbHMgKi8KKwlU dXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgYXR0bm8rKywgTlVMTCwgQk9PTE9JRCwgLTEs IDApOworCisJLyogYWxsX251bGxzICovCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2Ms IGF0dG5vKyssIE5VTEwsIEJPT0xPSUQsIC0xLCAwKTsKKworCS8qIG5vdF9zdW1tYXJpemVk ICovCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIGF0dG5vKyssIE5VTEwsIEJPT0xP SUQsIC0xLCAwKTsKKworCS8qIG1pbl92YWx1ZSAqLworCVR1cGxlRGVzY0luaXRFbnRyeSh0 dXBkZXNjLCBhdHRubysrLCBOVUxMLAorCQkJCQkgICBicmRlc2MtPmJkX2luZm9bYXR0bnVt IC0gMV0tPm9pX3R5cGNhY2hlWzBdLT50eXBlX2lkLAorCQkJCQkJCQkgICAtMSwgMCk7CisK KwkvKiBtYXhfdmFsdWUgKi8KKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgYXR0bm8r KywgTlVMTCwKKwkJCQkJICAgYnJkZXNjLT5iZF9pbmZvW2F0dG51bSAtIDFdLT5vaV90eXBj YWNoZVswXS0+dHlwZV9pZCwKKwkJCQkJCQkJICAgLTEsIDApOworCisJcmV0dXJuIHR1cGRl c2M7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9zY2FuX2luaXQKKyAqCQlQcmVwYXJlIHRo ZSBCcmluUmFuZ2VTY2FuRGVzYyBpbmNsdWRpbmcgdGhlIHNvcnRpbmcgaW5mbyBldGMuCisg KgorICogV2Ugd2FudCB0byBoYXZlIHRoZSByYW5nZXMgaW4gcm91Z2hseSB0aGlzIG9yZGVy CisgKgorICogLSBub3Qtc3VtbWFyaXplZAorICogLSBzdW1tYXJpemVkLCBub24tbnVsbCB2 YWx1ZXMKKyAqIC0gc3VtbWFyaXplZCwgYWxsLW51bGxzCisgKgorICogV2UgZG8gaXQgdGhp cyB3YXksIGJlY2F1c2UgdGhlIG5vdC1zdW1tYXJpemVkIHJhbmdlcyBuZWVkIHRvIGJlCisg KiBzY2FubmVkIGFsd2F5cyAoYm90aCB0byBwcm9kdWNlIE5VTEwgYW5kIG5vbi1OVUxMIHZh bHVlcyksIGFuZAorICogd2UgbmVlZCB0byByZWFkIGFsbCBvZiB0aGVtIGludG8gdGhlIHR1 cGxlc29ydCBiZWZvcmUgcHJvZHVjaW5nCisgKiBhbnl0aGluZy4gU28gcGxhY2luZyB0aGVt IGF0IHRoZSBiZWdpbm5pbmcgaXMgcmVhc29uYWJsZS4KKyAqCisgKiBUaGUgYWxsLW51bGxz IHJhbmdlcyBhcmUgcGxhY2VkIGxhc3QsIGJlY2F1c2Ugd2hlbiBwcm9jZXNzaW5nCisgKiBO VUxMcyB3ZSBuZWVkIHRvIHNjYW4gZXZlcnl0aGluZyBhbnl3YXkgKHNvbWUgb2YgdGhlIHJh bmdlcyBtaWdodAorICogaGF2ZSBoYXNfbnVsbHM9dHJ1ZSkuIEJ1dCBmb3Igbm9uLU5VTEwg dmFsdWVzIHdlIGNhbiBhYm9ydCBvbmNlCisgKiB3ZSBoaXQgdGhlIGZpcnN0IGFsbC1udWxs cyByYW5nZS4KKyAqCisgKiBUaGUgcmVndWxhciByYW5nZXMgYXJlIHNvcnRlZCBieSBibGtu b19zdGFydCwgdG8gbWFrZSBpdCBtYXliZQorICogYSBiaXQgbW9yZSBzZXF1ZW50aWFsIChi dXQgdGhpcyBvbmx5IGhlbHBzIGlmIHRoZXJlIGFyZSByYW5nZXMKKyAqIHdpdGggdGhlIHNh bWUgbWludmFsKS4KKyAqLworc3RhdGljIEJyaW5SYW5nZVNjYW5EZXNjICoKK2JyaW5fbWlu bWF4X3NjYW5faW5pdChCcmluRGVzYyAqYmRlc2MsIE9pZCBjb2xsYXRpb24sIEF0dHJOdW1i ZXIgYXR0bnVtLCBib29sIGFzYykKK3sKKwlCcmluUmFuZ2VTY2FuRGVzYyAgKnNjYW47CisK KwkvKiBzb3J0IGJ5IChub3Rfc3VtbWFyaXplZCwgbWludmFsLCBibGtub19zdGFydCwgYWxs X251bGxzKSAqLworCUF0dHJOdW1iZXIJCQlrZXlzWzRdOworCU9pZAkJCQkJY29sbGF0aW9u c1s0XTsKKwlib29sCQkJCW51bGxzRmlyc3RbNF07CisJT2lkCQkJCQlvcGVyYXRvcnNbNF07 CisJT2lkCQkJCQl0eXBpZDsKKwlUeXBlQ2FjaGVFbnRyeQkgICAqdHlwY2FjaGU7CisKKwkv KiB3ZSBleHBlY3QgdG8gaGF2ZSBtaW4vbWF4IHZhbHVlIGZvciBlYWNoIHJhbmdlLCBzYW1l IHR5cGUgZm9yIGJvdGggKi8KKwlBc3NlcnQoYmRlc2MtPmJkX2luZm9bYXR0bnVtIC0gMV0t Pm9pX25zdG9yZWQgPT0gMik7CisJQXNzZXJ0KGJkZXNjLT5iZF9pbmZvW2F0dG51bSAtIDFd LT5vaV90eXBjYWNoZVswXS0+dHlwZV9pZCA9PQorCQkgICBiZGVzYy0+YmRfaW5mb1thdHRu dW0gLSAxXS0+b2lfdHlwY2FjaGVbMV0tPnR5cGVfaWQpOworCisJc2NhbiA9IChCcmluUmFu Z2VTY2FuRGVzYyAqKSBwYWxsb2MwKHNpemVvZihCcmluUmFuZ2VTY2FuRGVzYykpOworCisJ LyogYnVpbGQgdHVwbGUgZGVzY3JpcHRvciBmb3IgcmFuZ2UgZGF0YSAqLworCXNjYW4tPnRk ZXNjID0gYnJpbl9taW5tYXhfcmFuZ2VfdHVwZGVzYyhiZGVzYywgYXR0bnVtKTsKKworCS8q IGluaXRpYWxpemUgb3JkZXJpbmcgaW5mbyAqLworCWtleXNbMF0gPSA1OwkJCQkvKiBub3Rf c3VtbWFyaXplZCAqLworCWtleXNbMV0gPSA0OwkJCQkvKiBhbGxfbnVsbHMgKi8KKwlrZXlz WzJdID0gKGFzYykgPyA2IDogNzsJLyogbWluX3ZhbHVlIChhc2MpIG9yIG1heF92YWx1ZSAo ZGVzYykgKi8KKwlrZXlzWzNdID0gMTsJCQkJLyogYmxrbm9fc3RhcnQgKi8KKworCWNvbGxh dGlvbnNbMF0gPSBJbnZhbGlkT2lkOwkvKiBGSVhNRSAqLworCWNvbGxhdGlvbnNbMV0gPSBJ bnZhbGlkT2lkOwkvKiBGSVhNRSAqLworCWNvbGxhdGlvbnNbMl0gPSBjb2xsYXRpb247CS8q IEZJWE1FICovCisJY29sbGF0aW9uc1szXSA9IEludmFsaWRPaWQ7CS8qIEZJWE1FICovCisK KwkvKiB1bnJlbGF0ZWQgdG8gdGhlIG9yZGVyaW5nIGRlc2lyZWQgYnkgdGhlIHVzZXIgKi8K KwludWxsc0ZpcnN0WzBdID0gZmFsc2U7CisJbnVsbHNGaXJzdFsxXSA9IGZhbHNlOworCW51 bGxzRmlyc3RbMl0gPSBmYWxzZTsKKwludWxsc0ZpcnN0WzNdID0gZmFsc2U7CisKKwkvKiBs b29rdXAgc29ydCBvcGVyYXRvciBmb3IgdGhlIGJvb2xlYW4gdHlwZSAodXNlZCBmb3Igbm90 X3N1bW1hcml6ZWQpICovCisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShCT09MT0lE LCBUWVBFQ0FDSEVfR1RfT1BSKTsKKwlvcGVyYXRvcnNbMF0gPSB0eXBjYWNoZS0+Z3Rfb3By OworCisJLyogbG9va3VwIHNvcnQgb3BlcmF0b3IgZm9yIHRoZSBib29sZWFuIHR5cGUgKHVz ZWQgZm9yIGFsbF9udWxscykgKi8KKwl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKEJP T0xPSUQsIFRZUEVDQUNIRV9MVF9PUFIpOworCW9wZXJhdG9yc1sxXSA9IHR5cGNhY2hlLT5s dF9vcHI7CisKKwkvKiBsb29rdXAgc29ydCBvcGVyYXRvciBmb3IgdGhlIG1pbi9tYXggdHlw ZSAqLworCXR5cGlkID0gYmRlc2MtPmJkX2luZm9bYXR0bnVtIC0gMV0tPm9pX3R5cGNhY2hl WzBdLT50eXBlX2lkOworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUodHlwaWQsIFRZ UEVDQUNIRV9MVF9PUFIgfCBUWVBFQ0FDSEVfR1RfT1BSKTsKKwlvcGVyYXRvcnNbMl0gPSAo YXNjKSA/IHR5cGNhY2hlLT5sdF9vcHIgOiB0eXBjYWNoZS0+Z3Rfb3ByOworCisJLyogbG9v a3VwIHNvcnQgb3BlcmF0b3IgZm9yIHRoZSBiaWdpbnQgdHlwZSAodXNlZCBmb3IgYmxrbm9f c3RhcnQpICovCisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShJTlQ0T0lELCBUWVBF Q0FDSEVfTFRfT1BSKTsKKwlvcGVyYXRvcnNbM10gPSB0eXBjYWNoZS0+bHRfb3ByOworCisJ LyoKKwkgKiBYWFggYmV0dGVyIHRvIGtlZXAgdGhpcyBzbWFsbCBlbm91Z2ggdG8gZml0IGlu dG8gTDIvTDMsIGxhcmdlIHZhbHVlcworCSAqIG9mIHdvcmtfbWVtIG1heSBlYXNpbHkgbWFr ZSB0aGlzIHNsb3dlci4KKwkgKi8KKwlzY2FuLT5yYW5nZXMgPSB0dXBsZXNvcnRfYmVnaW5f aGVhcChzY2FuLT50ZGVzYywKKwkJCQkJCQkJCQk0LCAvKiBua2V5cyAqLworCQkJCQkJCQkJ CWtleXMsCisJCQkJCQkJCQkJb3BlcmF0b3JzLAorCQkJCQkJCQkJCWNvbGxhdGlvbnMsCisJ CQkJCQkJCQkJbnVsbHNGaXJzdCwKKwkJCQkJCQkJCQl3b3JrX21lbSwKKwkJCQkJCQkJCQlO VUxMLAorCQkJCQkJCQkJCVRVUExFU09SVF9SQU5ET01BQ0NFU1MpOworCisJc2Nhbi0+c2xv dCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChzY2FuLT50ZGVzYywKKwkJCQkJCQkJCQkg ICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCisJcmV0dXJuIHNjYW47Cit9CisKKy8qCisgKiBi cmluX21pbm1heF9zY2FuX2FkZF90dXBsZQorICoJCUZvcm0gYW5kIHN0b3JlIGEgdHVwbGUg cmVwcmVzZW50aW5nIHRoZSBCUklOIHJhbmdlIHRvIHRoZSB0dXBsZXN0b3JlLgorICovCitz dGF0aWMgdm9pZAorYnJpbl9taW5tYXhfc2Nhbl9hZGRfdHVwbGUoQnJpblJhbmdlU2NhbkRl c2MgKnNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCQkJICAgQmxvY2tOdW1iZXIg YmxvY2tfc3RhcnQsIEJsb2NrTnVtYmVyIGJsb2NrX2VuZCwKKwkJCQkJCSAgIGJvb2wgaGFz X251bGxzLCBib29sIGFsbF9udWxscywgYm9vbCBub3Rfc3VtbWFyaXplZCwKKwkJCQkJCSAg IERhdHVtIG1pbl92YWx1ZSwgRGF0dW0gbWF4X3ZhbHVlKQoreworCUV4ZWNDbGVhclR1cGxl KHNsb3QpOworCisJbWVtc2V0KHNsb3QtPnR0c19pc251bGwsIGZhbHNlLCA3ICogc2l6ZW9m KGJvb2wpKTsKKworCXNsb3QtPnR0c192YWx1ZXNbMF0gPSBVSW50MzJHZXREYXR1bShibG9j a19zdGFydCk7CisJc2xvdC0+dHRzX3ZhbHVlc1sxXSA9IFVJbnQzMkdldERhdHVtKGJsb2Nr X2VuZCk7CisJc2xvdC0+dHRzX3ZhbHVlc1syXSA9IEJvb2xHZXREYXR1bShoYXNfbnVsbHMp OworCXNsb3QtPnR0c192YWx1ZXNbM10gPSBCb29sR2V0RGF0dW0oYWxsX251bGxzKTsKKwlz bG90LT50dHNfdmFsdWVzWzRdID0gQm9vbEdldERhdHVtKG5vdF9zdW1tYXJpemVkKTsKKwlz bG90LT50dHNfdmFsdWVzWzVdID0gbWluX3ZhbHVlOworCXNsb3QtPnR0c192YWx1ZXNbNl0g PSBtYXhfdmFsdWU7CisKKwlpZiAoYWxsX251bGxzIHx8IG5vdF9zdW1tYXJpemVkKQorCXsK KwkJc2xvdC0+dHRzX2lzbnVsbFs1XSA9IHRydWU7CisJCXNsb3QtPnR0c19pc251bGxbNl0g PSB0cnVlOworCX0KKworCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShzbG90KTsKKworCXR1cGxl c29ydF9wdXR0dXBsZXNsb3Qoc2Nhbi0+cmFuZ2VzLCBzbG90KTsKKworCXNjYW4tPm5yYW5n ZXMrKzsKK30KKworI2lmZGVmIEJSSU5TT1JUX0RFQlVHCisvKgorICogYnJpbl9taW5tYXhf c2Nhbl9uZXh0CisgKgkJUmV0dXJuIHRoZSBuZXh0IEJSSU4gcmFuZ2UgaW5mb3JtYXRpb24g ZnJvbSB0aGUgdHVwbGVzdG9yZS4KKyAqCisgKiBSZXR1cm5zIE5VTEwgd2hlbiB0aGVyZSBh cmUgbm8gbW9yZSByYW5nZXMuCisgKi8KK3N0YXRpYyBCcmluUmFuZ2UgKgorYnJpbl9taW5t YXhfc2Nhbl9uZXh0KEJyaW5SYW5nZVNjYW5EZXNjICpzY2FuKQoreworCWlmICh0dXBsZXNv cnRfZ2V0dHVwbGVzbG90KHNjYW4tPnJhbmdlcywgdHJ1ZSwgZmFsc2UsIHNjYW4tPnNsb3Qs IE5VTEwpKQorCXsKKwkJYm9vbAkJaXNudWxsOworCQlCcmluUmFuZ2UgICpyYW5nZSA9IChC cmluUmFuZ2UgKikgcGFsbG9jKHNpemVvZihCcmluUmFuZ2UpKTsKKworCQlyYW5nZS0+Ymxr bm9fc3RhcnQgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwgMSwgJmlzbnVsbCk7CisJCXJh bmdlLT5ibGtub19lbmQgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwgMiwgJmlzbnVsbCk7 CisJCXJhbmdlLT5oYXNfbnVsbHMgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwgMywgJmlz bnVsbCk7CisJCXJhbmdlLT5hbGxfbnVsbHMgPSBzbG90X2dldGF0dHIoc2Nhbi0+c2xvdCwg NCwgJmlzbnVsbCk7CisJCXJhbmdlLT5ub3Rfc3VtbWFyaXplZCA9IHNsb3RfZ2V0YXR0cihz Y2FuLT5zbG90LCA1LCAmaXNudWxsKTsKKwkJcmFuZ2UtPm1pbl92YWx1ZSA9IHNsb3RfZ2V0 YXR0cihzY2FuLT5zbG90LCA2LCAmaXNudWxsKTsKKwkJcmFuZ2UtPm1heF92YWx1ZSA9IHNs b3RfZ2V0YXR0cihzY2FuLT5zbG90LCA3LCAmaXNudWxsKTsKKworCQlyZXR1cm4gcmFuZ2U7 CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9zY2FuX2R1 bXAKKyAqCQlQcmludCBpbmZvIGFib3V0IGFsbCBwYWdlIHJhbmdlcyBzdG9yZWQgaW4gdGhl IHR1cGxlc3RvcmUuCisgKi8KK3N0YXRpYyB2b2lkCiticmluX21pbm1heF9zY2FuX2R1bXAo QnJpblJhbmdlU2NhbkRlc2MgKnNjYW4pCit7CisJQnJpblJhbmdlICpyYW5nZTsKKworCWlm ICghbWVzc2FnZV9sZXZlbF9pc19pbnRlcmVzdGluZyhXQVJOSU5HKSkKKwkJcmV0dXJuOwor CisJZWxvZyhXQVJOSU5HLCAiPT09PT0gZHVtcGluZyA9PT09PSIpOworCXdoaWxlICgocmFu Z2UgPSBicmluX21pbm1heF9zY2FuX25leHQoc2NhbikpICE9IE5VTEwpCisJeworCQllbG9n KFdBUk5JTkcsICJbJXUgJXVdIGhhc19udWxscyAlZCBhbGxfbnVsbHMgJWQgbm90X3N1bW1h cml6ZWQgJWQgdmFsdWVzIFslbGQgJWxkXSIsCisJCQkgcmFuZ2UtPmJsa25vX3N0YXJ0LCBy YW5nZS0+Ymxrbm9fZW5kLAorCQkJIHJhbmdlLT5oYXNfbnVsbHMsIHJhbmdlLT5hbGxfbnVs bHMsIHJhbmdlLT5ub3Rfc3VtbWFyaXplZCwKKwkJCSByYW5nZS0+bWluX3ZhbHVlLCByYW5n ZS0+bWF4X3ZhbHVlKTsKKworCQlwZnJlZShyYW5nZSk7CisJfQorCisJLyogcmVzZXQgdGhl IHR1cGxlc3RvcmUsIHNvIHRoYXQgd2UgY2FuIHN0YXJ0IHNjYW5uaW5nIGFnYWluICovCisJ dHVwbGVzb3J0X3Jlc2NhbihzY2FuLT5yYW5nZXMpOworfQorI2VuZGlmCisKK3N0YXRpYyB2 b2lkCiticmluX21pbm1heF9zY2FuX2ZpbmFsaXplKEJyaW5SYW5nZVNjYW5EZXNjICpzY2Fu KQoreworCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzY2FuLT5yYW5nZXMpOworfQorCisvKgor ICogYnJpbl9taW5tYXhfcmFuZ2VzCisgKgkJTG9hZCB0aGUgQlJJTiByYW5nZXMgYW5kIHNv cnQgdGhlbS4KKyAqLworRGF0dW0KK2JyaW5fbWlubWF4X3JhbmdlcyhQR19GVU5DVElPTl9B UkdTKQoreworCUluZGV4U2NhbkRlc2MJc2NhbiA9IChJbmRleFNjYW5EZXNjKSBQR19HRVRB UkdfUE9JTlRFUigwKTsKKwlBdHRyTnVtYmVyCQlhdHRudW0gPSBQR19HRVRBUkdfSU5UMTYo MSk7CisJYm9vbAkJCWFzYyA9IFBHX0dFVEFSR19CT09MKDIpOworCU9pZAkJCQljb2xsb2lk ID0gUEdfR0VUX0NPTExBVElPTigpOworCUJyaW5PcGFxdWUgKm9wYXF1ZTsKKwlSZWxhdGlv bglpbmRleFJlbDsKKwlSZWxhdGlvbgloZWFwUmVsOworCUJsb2NrTnVtYmVyIG5ibG9ja3M7 CisJQmxvY2tOdW1iZXIJaGVhcEJsazsKKwlPaWQJCQloZWFwT2lkOworCUJyaW5NZW1UdXBs ZSAqZHR1cDsKKwlCcmluVHVwbGUgICpidHVwID0gTlVMTDsKKwlTaXplCQlidHVwc3ogPSAw OworCUJ1ZmZlcgkJYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwlCbG9ja051bWJlcglwYWdlc1Bl clJhbmdlOworCUJyaW5EZXNjCSAgICpiZGVzYzsKKwlCcmluUmFuZ2VTY2FuRGVzYyAqYnJz Y2FuOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCisJLyoKKwkgKiBEZXRlcm1pbmUgaG93 IG1hbnkgQlJJTiByYW5nZXMgY291bGQgdGhlcmUgYmUsIGFsbG9jYXRlIHNwYWNlIGFuZCBy ZWFkCisJICogYWxsIHRoZSBtaW4vbWF4IHZhbHVlcy4KKwkgKi8KKwlvcGFxdWUgPSAoQnJp bk9wYXF1ZSAqKSBzY2FuLT5vcGFxdWU7CisJYmRlc2MgPSBvcGFxdWUtPmJvX2JkZXNjOwor CXBhZ2VzUGVyUmFuZ2UgPSBvcGFxdWUtPmJvX3BhZ2VzUGVyUmFuZ2U7CisKKwlpbmRleFJl bCA9IGJkZXNjLT5iZF9pbmRleDsKKworCS8qIG1ha2Ugc3VyZSB0aGUgcHJvdmlkZWQgYXR0 bnVtIGlzIHZhbGlkICovCisJQXNzZXJ0KChhdHRudW0gPiAwKSAmJiAoYXR0bnVtIDw9IGJk ZXNjLT5iZF90dXBkZXNjLT5uYXR0cykpOworCisJLyoKKwkgKiBXZSBuZWVkIHRvIGtub3cg dGhlIHNpemUgb2YgdGhlIHRhYmxlIHNvIHRoYXQgd2Uga25vdyBob3cgbG9uZyB0byBpdGVy YXRlCisJICogb24gdGhlIHJldm1hcCAoYW5kIHRvIHByZS1hbGxvY2F0ZSB0aGUgYXJyYXlz KS4KKwkgKi8KKwloZWFwT2lkID0gSW5kZXhHZXRSZWxhdGlvbihSZWxhdGlvbkdldFJlbGlk KGluZGV4UmVsKSwgZmFsc2UpOworCWhlYXBSZWwgPSB0YWJsZV9vcGVuKGhlYXBPaWQsIEFj Y2Vzc1NoYXJlTG9jayk7CisJbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3Mo aGVhcFJlbCk7CisJdGFibGVfY2xvc2UoaGVhcFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwor CS8qIGFsbG9jYXRlIGFuIGluaXRpYWwgaW4tbWVtb3J5IHR1cGxlLCBvdXQgb2YgdGhlIHBl ci1yYW5nZSBtZW1jeHQgKi8KKwlkdHVwID0gYnJpbl9uZXdfbWVtdHVwbGUoYmRlc2MpOwor CisJLyogaW5pdGlhbGl6ZSB0aGUgc2NhbiBkZXNjcmliaW5nIHNjYW4gb2YgcmFuZ2VzIHNv cnRlZCBieSBtaW52YWwgKi8KKwlicnNjYW4gPSBicmluX21pbm1heF9zY2FuX2luaXQoYmRl c2MsIGNvbGxvaWQsIGF0dG51bSwgYXNjKTsKKworCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QoYnJzY2FuLT50ZGVzYywgJlRUU09wc1ZpcnR1YWwpOworCisJLyoKKwkgKiBO b3cgc2NhbiB0aGUgcmV2bWFwLiAgV2Ugc3RhcnQgYnkgcXVlcnlpbmcgZm9yIGhlYXAgcGFn ZSAwLAorCSAqIGluY3JlbWVudGluZyBieSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHBlciByYW5n ZTsgdGhpcyBnaXZlcyB1cyBhIGZ1bGwKKwkgKiB2aWV3IG9mIHRoZSB0YWJsZS4KKwkgKgor CSAqIFhYWCBUaGUgc29ydCBtYXkgYmUgcXVpdGUgZXhwZW5zaXZlLCBlLmcuIGZvciBzbWFs bCBCUklOIHJhbmdlcy4gTWF5YmUKKwkgKiB3ZSBjb3VsZCBvcHRpbWl6ZSB0aGlzIHNvbWVo b3c/IEZvciBleGFtcGxlLCB3ZSBrbm93IHRoZSBub3Qtc3VtbWFyaXplZAorCSAqIHJhbmdl cyBhcmUgYWx3YXlzIGdvaW5nIHRvIGJlIGZpcnN0LCBhbmQgYWxsLW51bGwgcmFuZ2VzIGxh c3QsIHNvIG1heWJlCisJICogd2UgY291bGQgc3Rhc2ggdGhvc2Ugc29tZXdoZXJlLCBhbmQg bm90IHNvcnQgdGhlbT8gQnV0IHRoZXJlIGFyZSBsaWtlbHkKKwkgKiBvbmx5IHZlcnkgZmV3 IHN1Y2ggcmFuZ2VzLCBpbiBtb3N0IGNhc2VzLiBNb3Jlb3ZlciwgaG93IHdvdWxkIHdlIHRo ZW4KKwkgKiBwcmVwZW5kL2FwcGVuZCB0aG9zZSByYW5nZXMgdG8gdGhlIHNvcnRlZCBvbmVz PyBQcm9iYWJseSB3b3VsZCBoYXZlIHRvCisJICogc3RvcmUgdGhlbSBpbiBhIHR1cGxlc3Rv cmUsIG9yIHNvbWV0aGluZy4KKwkgKgorCSAqIFhYWCBTZWVtcyB0aGF0IGhhdmluZyBsYXJn ZSB3b3JrX21lbSBjYW4gYmUgcXVpdGUgZGV0cmltZW50YWwsIGJlY2F1c2UKKwkgKiB0aGVu IGl0IG92ZXJmbG93cyBMMi9MMyBjYWNoZXMsIG1ha2luZyB0aGUgc29ydCBtdWNoIHNsb3dl ci4KKwkgKgorCSAqIFhYWCBJZiB0aGVyZSBhcmUgb3RoZXIgaW5kZXhlcywgd291bGQgYmUg Z3JlYXQgdG8gZmlsdGVyIHRoZSByYW5nZXMsIHNvCisJICogdGhhdCB3ZSBvbmx5IHNvcnQg dGhlIGludGVyZXN0aW5nIG9uZXMgLSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcmFuZ2VzLAor CSAqIG1ha2VzIHRoZSBzb3J0IGZhc3Rlci4KKwkgKgorCSAqIFhYWCBBbm90aGVyIG9wdGlv biBpcyBtYWtpbmcgdGhpcyBpbmNyZW1lbnRhbCAtIGUuZy4gb25seSBhc2sgZm9yIHRoZQor CSAqIGZpcnN0IDEwMDAgcmFuZ2VzLCB1c2luZyBhIHRvcC1OIHNvcnQuIEFuZCB0aGVuIGlm IGl0J3Mgbm90IGVub3VnaCB3ZQorCSAqIGNvdWxkIHJlcXVlc3QgYW5vdGhlciBjaHVuay4g QnV0IHRoZSBzZWNvbmQgcmVxdWVzdCB3b3VsZCBoYXZlIHRvIGJlCisJICogcmF0aGVyIHVu bGlrZWx5IChiZWNhdXNlIHF1aXRlIGV4cGVuc2l2ZSksIGFuZCB0aGUgdG9wLU4gc29ydCBk b2VzIG5vdAorCSAqIHNlZW0gYWxsIHRoYXQgZmFzdGVyIChhcyBsb25nIGFzIHdlIGRvbid0 IG92ZXJmbG93IEwyL0wzKS4KKwkgKi8KKwlmb3IgKGhlYXBCbGsgPSAwOyBoZWFwQmxrIDwg bmJsb2NrczsgaGVhcEJsayArPSBwYWdlc1BlclJhbmdlKQorCXsKKwkJYm9vbAkJZ290dHVw bGUgPSBmYWxzZTsKKwkJQnJpblR1cGxlICAqdHVwOworCQlPZmZzZXROdW1iZXIgb2ZmOwor CQlTaXplCQlzaXplOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJdHVwID0g YnJpbkdldFR1cGxlRm9ySGVhcEJsb2NrKG9wYXF1ZS0+Ym9fcm1BY2Nlc3MsIGhlYXBCbGss ICZidWYsCisJCQkJCQkJCQkgICAmb2ZmLCAmc2l6ZSwgQlVGRkVSX0xPQ0tfU0hBUkUsCisJ CQkJCQkJCQkgICBzY2FuLT54c19zbmFwc2hvdCk7CisJCWlmICh0dXApCisJCXsKKwkJCWdv dHR1cGxlID0gdHJ1ZTsKKwkJCWJ0dXAgPSBicmluX2NvcHlfdHVwbGUodHVwLCBzaXplLCBi dHVwLCAmYnR1cHN6KTsKKwkJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0sp OworCQl9CisKKwkJLyoKKwkJICogUmFuZ2VzIHdpdGggbm8gaW5kZXhlZCB0dXBsZSBtYXkg Y29udGFpbiBhbnl0aGluZy4KKwkJICovCisJCWlmICghZ290dHVwbGUpCisJCXsKKwkJCWJy aW5fbWlubWF4X3NjYW5fYWRkX3R1cGxlKGJyc2Nhbiwgc2xvdCwKKwkJCQkJCQkJCSAgIGhl YXBCbGssIGhlYXBCbGsgKyAocGFnZXNQZXJSYW5nZSAtIDEpLAorCQkJCQkJCQkJICAgZmFs c2UsIGZhbHNlLCB0cnVlLCAwLCAwKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWR0dXAgPSBi cmluX2RlZm9ybV90dXBsZShiZGVzYywgYnR1cCwgZHR1cCk7CisJCQlpZiAoZHR1cC0+YnRf cGxhY2Vob2xkZXIpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBQbGFjZWhvbGRlciB0dXBsZXMg YXJlIHRyZWF0ZWQgYXMgaWYgbm90IHN1bW1hcml6ZWQuCisJCQkJICoKKwkJCQkgKiBYWFgg SXMgdGhpcyBjb3JyZWN0PworCQkJCSAqLworCQkJCWJyaW5fbWlubWF4X3NjYW5fYWRkX3R1 cGxlKGJyc2Nhbiwgc2xvdCwKKwkJCQkJCQkJCQkgICBoZWFwQmxrLCBoZWFwQmxrICsgKHBh Z2VzUGVyUmFuZ2UgLSAxKSwKKwkJCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UsIHRydWUsIDAs IDApOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCUJyaW5WYWx1ZXMgKmJ2YWw7CisKKwkJ CQlidmFsID0gJmR0dXAtPmJ0X2NvbHVtbnNbYXR0bnVtIC0gMV07CisKKwkJCQlicmluX21p bm1heF9zY2FuX2FkZF90dXBsZShicnNjYW4sIHNsb3QsCisJCQkJCQkJCQkJICAgaGVhcEJs aywgaGVhcEJsayArIChwYWdlc1BlclJhbmdlIC0gMSksCisJCQkJCQkJCQkJICAgYnZhbC0+ YnZfaGFzbnVsbHMsIGJ2YWwtPmJ2X2FsbG51bGxzLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBi dmFsLT5idl92YWx1ZXNbMF0sIGJ2YWwtPmJ2X3ZhbHVlc1sxXSk7CisJCQl9CisJCX0KKwl9 CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCisJaWYgKGJ1ZiAh PSBJbnZhbGlkQnVmZmVyKQorCQlSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkvKiBkbyB0aGUg c29ydCBhbmQgYW55IG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3NpbmcgKi8KKwlicmluX21pbm1h eF9zY2FuX2ZpbmFsaXplKGJyc2Nhbik7CisKKyNpZmRlZiBCUklOU09SVF9ERUJVRworCWJy aW5fbWlubWF4X3NjYW5fZHVtcChicnNjYW4pOworI2VuZGlmCisKKwlQR19SRVRVUk5fUE9J TlRFUihicnNjYW4pOworfQorCiAvKgogICogQ2FjaGUgYW5kIHJldHVybiB0aGUgcHJvY2Vk dXJlIGZvciB0aGUgZ2l2ZW4gc3RyYXRlZ3kuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CmluZGV4IGU1N2JkYTdiNjJkLi4xNTNlNDFiODU2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYwpAQCAtODUsNiArODUsOCBAQCBzdGF0aWMgdm9pZCBzaG93X3NvcnRfa2V5cyhTb3J0 U3RhdGUgKnNvcnRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCQkJICAgRXhwbGFpblN0 YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X2luY3JlbWVudGFsX3NvcnRfa2V5cyhJbmNy ZW1lbnRhbFNvcnRTdGF0ZSAqaW5jcnNvcnRzdGF0ZSwKIAkJCQkJCQkJCSAgIExpc3QgKmFu Y2VzdG9ycywgRXhwbGFpblN0YXRlICplcyk7CitzdGF0aWMgdm9pZCBzaG93X2JyaW5zb3J0 X2tleXMoQnJpblNvcnRTdGF0ZSAqc29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJ CQkJICAgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X21lcmdlX2FwcGVu ZF9rZXlzKE1lcmdlQXBwZW5kU3RhdGUgKm1zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJ CQkJCQkgICBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfYWdnX2tleXMo QWdnU3RhdGUgKmFzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLApAQCAtMTEwMCw2ICsxMTAyLDcg QEAgRXhwbGFpblByZVNjYW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBCaXRtYXBzZXQg KipyZWxzX3VzZWQpCiAJCWNhc2UgVF9JbmRleFNjYW46CiAJCWNhc2UgVF9JbmRleE9ubHlT Y2FuOgogCQljYXNlIFRfQml0bWFwSGVhcFNjYW46CisJCWNhc2UgVF9CcmluU29ydDoKIAkJ Y2FzZSBUX1RpZFNjYW46CiAJCWNhc2UgVF9UaWRSYW5nZVNjYW46CiAJCWNhc2UgVF9TdWJx dWVyeVNjYW46CkBAIC0xMjYyLDYgKzEyNjUsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQljYXNlIFRfSW5kZXhPbmx5U2NhbjoK IAkJCXBuYW1lID0gc25hbWUgPSAiSW5kZXggT25seSBTY2FuIjsKIAkJCWJyZWFrOworCQlj YXNlIFRfQnJpblNvcnQ6CisJCQlwbmFtZSA9IHNuYW1lID0gIkJSSU4gU29ydCI7CisJCQli cmVhazsKIAkJY2FzZSBUX0JpdG1hcEluZGV4U2NhbjoKIAkJCXBuYW1lID0gc25hbWUgPSAi Qml0bWFwIEluZGV4IFNjYW4iOwogCQkJYnJlYWs7CkBAIC0xNTA4LDYgKzE1MTQsMTYgQEAg RXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJ CQlFeHBsYWluU2NhblRhcmdldCgoU2NhbiAqKSBpbmRleG9ubHlzY2FuLCBlcyk7CiAJCQl9 CiAJCQlicmVhazsKKwkJY2FzZSBUX0JyaW5Tb3J0OgorCQkJeworCQkJCUJyaW5Tb3J0ICAq YnJpbnNvcnQgPSAoQnJpblNvcnQgKikgcGxhbjsKKworCQkJCUV4cGxhaW5JbmRleFNjYW5E ZXRhaWxzKGJyaW5zb3J0LT5pbmRleGlkLAorCQkJCQkJCQkJCWJyaW5zb3J0LT5pbmRleG9y ZGVyZGlyLAorCQkJCQkJCQkJCWVzKTsKKwkJCQlFeHBsYWluU2NhblRhcmdldCgoU2NhbiAq KSBicmluc29ydCwgZXMpOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9CaXRtYXBJbmRl eFNjYW46CiAJCQl7CiAJCQkJQml0bWFwSW5kZXhTY2FuICpiaXRtYXBpbmRleHNjYW4gPSAo Qml0bWFwSW5kZXhTY2FuICopIHBsYW47CkBAIC0xNzkwLDYgKzE4MDYsMTggQEAgRXhwbGFp bk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQlFeHBs YWluUHJvcGVydHlGbG9hdCgiSGVhcCBGZXRjaGVzIiwgTlVMTCwKIAkJCQkJCQkJCSBwbGFu c3RhdGUtPmluc3RydW1lbnQtPm50dXBsZXMyLCAwLCBlcyk7CiAJCQlicmVhazsKKwkJY2Fz ZSBUX0JyaW5Tb3J0OgorCQkJc2hvd19zY2FuX3F1YWwoKChCcmluU29ydCAqKSBwbGFuKS0+ aW5kZXhxdWFsb3JpZywKKwkJCQkJCSAgICJJbmRleCBDb25kIiwgcGxhbnN0YXRlLCBhbmNl c3RvcnMsIGVzKTsKKwkJCWlmICgoKEJyaW5Tb3J0ICopIHBsYW4pLT5pbmRleHF1YWxvcmln KQorCQkJCXNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQgYnkgSW5k ZXggUmVjaGVjayIsIDIsCisJCQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CisJCQlzaG93 X3NjYW5fcXVhbChwbGFuLT5xdWFsLCAiRmlsdGVyIiwgcGxhbnN0YXRlLCBhbmNlc3RvcnMs IGVzKTsKKwkJCXNob3dfYnJpbnNvcnRfa2V5cyhjYXN0Tm9kZShCcmluU29ydFN0YXRlLCBw bGFuc3RhdGUpLCBhbmNlc3RvcnMsIGVzKTsKKwkJCWlmIChwbGFuLT5xdWFsKQorCQkJCXNo b3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQgYnkgRmlsdGVyIiwgMSwK KwkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQml0 bWFwSW5kZXhTY2FuOgogCQkJc2hvd19zY2FuX3F1YWwoKChCaXRtYXBJbmRleFNjYW4gKikg cGxhbiktPmluZGV4cXVhbG9yaWcsCiAJCQkJCQkgICAiSW5kZXggQ29uZCIsIHBsYW5zdGF0 ZSwgYW5jZXN0b3JzLCBlcyk7CkBAIC0yMzg5LDYgKzI0MTcsMjEgQEAgc2hvd19pbmNyZW1l bnRhbF9zb3J0X2tleXMoSW5jcmVtZW50YWxTb3J0U3RhdGUgKmluY3Jzb3J0c3RhdGUsCiAJ CQkJCQkgYW5jZXN0b3JzLCBlcyk7CiB9CiAKKy8qCisgKiBTaG93IHRoZSBzb3J0IGtleXMg Zm9yIGEgQlJJTiBTb3J0IG5vZGUuCisgKi8KK3N0YXRpYyB2b2lkCitzaG93X2JyaW5zb3J0 X2tleXMoQnJpblNvcnRTdGF0ZSAqc29ydHN0YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxh aW5TdGF0ZSAqZXMpCit7CisJQnJpblNvcnQJICAgKnBsYW4gPSAoQnJpblNvcnQgKikgc29y dHN0YXRlLT5zcy5wcy5wbGFuOworCisJc2hvd19zb3J0X2dyb3VwX2tleXMoKFBsYW5TdGF0 ZSAqKSBzb3J0c3RhdGUsICJTb3J0IEtleSIsCisJCQkJCQkgcGxhbi0+bnVtQ29scywgMCwg cGxhbi0+c29ydENvbElkeCwKKwkJCQkJCSBwbGFuLT5zb3J0T3BlcmF0b3JzLCBwbGFuLT5j b2xsYXRpb25zLAorCQkJCQkJIHBsYW4tPm51bGxzRmlyc3QsCisJCQkJCQkgYW5jZXN0b3Jz LCBlcyk7Cit9CisKIC8qCiAgKiBMaWtld2lzZSwgZm9yIGEgTWVyZ2VBcHBlbmQgbm9kZS4K ICAqLwpAQCAtMzgwOSw2ICszODUyLDcgQEAgRXhwbGFpblRhcmdldFJlbChQbGFuICpwbGFu LCBJbmRleCBydGksIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCWNhc2UgVF9Gb3JlaWduU2NhbjoK IAkJY2FzZSBUX0N1c3RvbVNjYW46CiAJCWNhc2UgVF9Nb2RpZnlUYWJsZToKKwkJY2FzZSBU X0JyaW5Tb3J0OgogCQkJLyogQXNzZXJ0IGl0J3Mgb24gYSByZWFsIHJlbGF0aW9uICovCiAJ CQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CiAJCQlvYmplY3RuYW1l ID0gZ2V0X3JlbF9uYW1lKHJ0ZS0+cmVsaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQppbmRl eCAxMTExOGQwY2UwMi4uYmNhYTJjZThlMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCkBA IC0zOCw2ICszOCw3IEBAIE9CSlMgPSBcCiAJbm9kZUJpdG1hcEhlYXBzY2FuLm8gXAogCW5v ZGVCaXRtYXBJbmRleHNjYW4ubyBcCiAJbm9kZUJpdG1hcE9yLm8gXAorCW5vZGVCcmluU29y dC5vIFwKIAlub2RlQ3Rlc2Nhbi5vIFwKIAlub2RlQ3VzdG9tLm8gXAogCW5vZGVGb3JlaWdu c2Nhbi5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9k ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggNGQyODhi YzhkNDEuLjkzZDEwMDc4MDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUu YwpAQCAtNzksNiArNzksNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVCaXRtYXBIZWFw c2Nhbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uaCIKICNp bmNsdWRlICJleGVjdXRvci9ub2RlQml0bWFwT3IuaCIKKyNpbmNsdWRlICJleGVjdXRvci9u b2RlQnJpblNvcnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQ3Rlc2Nhbi5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL25vZGVDdXN0b20uaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2Rl Rm9yZWlnbnNjYW4uaCIKQEAgLTIyNiw2ICsyMjcsMTEgQEAgRXhlY0luaXROb2RlKFBsYW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCQkJCQkJCQkgZXN0 YXRlLCBlZmxhZ3MpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0JyaW5Tb3J0OgorCQkJcmVz dWx0ID0gKFBsYW5TdGF0ZSAqKSBFeGVjSW5pdEJyaW5Tb3J0KChCcmluU29ydCAqKSBub2Rl LAorCQkJCQkJCQkJCQkJCWVzdGF0ZSwgZWZsYWdzKTsKKwkJCWJyZWFrOworCiAJCWNhc2Ug VF9CaXRtYXBJbmRleFNjYW46CiAJCQlyZXN1bHQgPSAoUGxhblN0YXRlICopIEV4ZWNJbml0 Qml0bWFwSW5kZXhTY2FuKChCaXRtYXBJbmRleFNjYW4gKikgbm9kZSwKIAkJCQkJCQkJCQkJ CQkJICAgZXN0YXRlLCBlZmxhZ3MpOwpAQCAtNjM5LDYgKzY0NSwxMCBAQCBFeGVjRW5kTm9k ZShQbGFuU3RhdGUgKm5vZGUpCiAJCQlFeGVjRW5kSW5kZXhPbmx5U2NhbigoSW5kZXhPbmx5 U2NhblN0YXRlICopIG5vZGUpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0JyaW5Tb3J0U3Rh dGU6CisJCQlFeGVjRW5kQnJpblNvcnQoKEJyaW5Tb3J0U3RhdGUgKikgbm9kZSk7CisJCQli cmVhazsKKwogCQljYXNlIFRfQml0bWFwSW5kZXhTY2FuU3RhdGU6CiAJCQlFeGVjRW5kQml0 bWFwSW5kZXhTY2FuKChCaXRtYXBJbmRleFNjYW5TdGF0ZSAqKSBub2RlKTsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgYi9zcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAppbmRleCA2NWY5NDU3YzliMS4uZWQ3ZjM4 YTEzOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCkBAIC0yNiw2ICsyNiw3IEBA IGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ25vZGVCaXRtYXBIZWFwc2Nhbi5jJywK ICAgJ25vZGVCaXRtYXBJbmRleHNjYW4uYycsCiAgICdub2RlQml0bWFwT3IuYycsCisgICdu b2RlQnJpblNvcnQuYycsCiAgICdub2RlQ3Rlc2Nhbi5jJywKICAgJ25vZGVDdXN0b20uYycs CiAgICdub2RlRm9yZWlnbnNjYW4uYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQnJpblNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29y dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45NTA1ZWFmYzU0 OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29y dC5jCkBAIC0wLDAgKzEsMTYxMiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog bm9kZUJyaW5Tb3J0LmMKKyAqCSAgUm91dGluZXMgdG8gc3VwcG9ydCBzb3J0ZWQgc2NhbiBv ZiByZWxhdGlvbnMgdXNpbmcgYSBCUklOIGluZGV4CisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBUaGUgb3ZlcmFsbCBhbGdvcml0aG0g aXMgcm91Z2hseSB0aGlzOgorICoKKyAqIDApIGluaXRpYWxpemUgYSB0dXBsZXN0b3JlIGFu ZCBhIHR1cGxlc29ydAorICoKKyAqIDEpIGZldGNoIGxpc3Qgb2YgcGFnZSByYW5nZXMgZnJv bSB0aGUgQlJJTiBpbmRleCwgc29ydGVkIGJ5IG1pbnZhbAorICogICAgKHdpdGggdGhlIG5v dC1zdW1tYXJpemVkIHJhbmdlcyBmaXJzdCwgYW5kIGFsbC1udWxsIHJhbmdlcyBsYXN0KQor ICoKKyAqIDIpIGZvciBOVUxMUyBGSVJTVCBvcmRlcmluZywgd2FsayBhbGwgcmFuZ2VzIHRo YXQgbWF5IGNvbnRhaW4gTlVMTAorICogICAgdmFsdWVzIGFuZCBvdXRwdXQgdGhlbSAoYW5k IHJldHVybiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0KQorICoKKyAqIDMpIHdoaWxl IHRoZXJlIGFyZSByYW5nZXMgaW4gdGhlIGxpc3QsIGRvIHRoaXM6CisgKgorICogICBhKSBn ZXQgbmV4dCAoZGlzdGluY3QpIG1pbnZhbCBmcm9tIHRoZSBsaXN0LCBjYWxsIGl0IHdhdGVy bWFyaworICoKKyAqICAgYikgaWYgdGhlcmUgYXJlIGFueSB0dXBsZXMgaW4gdGhlIHR1cGxl c3RvcmUsIG1vdmUgdGhlbSB0byB0dXBsZXNvcnQKKyAqCisgKiAgIGMpIHByb2Nlc3MgYWxs IHJhbmdlcyB3aXRoIChtaW52YWwgPCB3YXRlcm1hcmspIC0gcmVhZCB0dXBsZXMgYW5kIGZl ZWQKKyAqICAgICAgdGhlbSBlaXRoZXIgaW50byB0dXBsZXN0b3JlICh3aGVuIHZhbHVlIDwg d2F0ZXJtYXJrKSBvciB0dXBsZXN0b3JlCisgKgorICogICBkKSBzb3J0IHRoZSB0dXBsZXN0 b3JlLCBvdXRwdXQgYWxsIHRoZSB0dXBsZXMKKyAqCisgKiA0KSBpZiBzb21lIHR1cGxlcyBy ZW1haW4gaW4gdGhlIHR1cGxlc3RvcmUsIHNvcnQgYW5kIG91dHB1dCB0aGVtCisgKgorICog NSkgZm9yIE5VTExTIExBU1Qgb3JkZXJpbmcsIHdhbGsgYWxsIHJhbmdlcyB0aGF0IG1heSBj b250YWluIE5VTEwKKyAqICAgIHZhbHVlcyBhbmQgb3V0cHV0IHRoZW0gKGFuZCByZXR1cm4g dG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdCkKKyAqCisgKgorICogRm9yIERFU0Mgb3Jk ZXJpbmdzIHRoZSBwcm9jZXNzIGlzIGFsbW9zdCB0aGUgc2FtZSwgZXhjZXB0IHRoYXQgd2Ug bG9vaworICogYXQgbWF4dmFsIGFuZCB1c2UgJz4nIG9wZXJhdG9yIChidXQgdGhhdCdzIHRy YW5zcGFyZW50KS4KKyAqCisgKiBUaGVyZSdzIGEgY291cGxlIHBvc3NpYmxlIHRoaW5ncyB0 aGF0IG1pZ2h0IGJlIGRvbmUgaW4gZGlmZmVyZW50IHdheXM6CisgKgorICogMSkgTm90IHVz aW5nIHR1cGxlc3RvcmUsIGFuZCBmZWVkaW5nIHR1cGxlcyBvbmx5IHRvIGEgdHVwbGVzb3J0 LiBUaGVuCisgKiB3aGlsZSBwcm9kdWNpbmcgdGhlIHR1cGxlcywgd2UnZCBvbmx5IG91dHB1 dCB0dXBsZXMgdXAgdG8gdGhlIGN1cnJlbnQKKyAqIHdhdGVybWFyaywgYW5kIHRoZW4gd2Un ZCBrZWVwIHRoZSByZW1haW5pbmcgdHVwbGVzIGZvciB0aGUgbmV4dCByb3VuZC4KKyAqIEVp dGhlciB3ZSdkIG5lZWQgdG8gdHJhbnNmZXIgdGhlbSBpbnRvIGEgc2Vjb25kIHR1cGxlc29y dCwgb3IgYWxsb3cKKyAqICJyZW9wZW5pbmciIHRoZSB0dXBsZXNvcnQgYW5kIGFkZGluZyBt b3JlIHR1cGxlcy4gQW5kIHRoZW4gb25seSB0aGUKKyAqIHBhcnQgc2luY2UgdGhlIHdhdGVy bWFyayB3b3VsZCBnZXQgc29ydGVkIChwb3NzaWJseSB1c2luZyBhIG1lcmdlLXNvcnQKKyAq IHdpdGggdGhlIGFscmVhZHkgc29ydGVkIHBhcnQpLgorICoKKyAqCisgKiAyKSBUaGUgb3Ro ZXIgcXVlc3Rpb24gaXMgd2hhdCB0byBkbyB3aXRoIE5VTEwgdmFsdWVzIC0gYXQgdGhlIG1v bWVudCB3ZQorICoganVzdCByZWFkIHRoZSByYW5nZXMsIG91dHB1dCB0aGUgTlVMTCB0dXBs ZXMgYW5kIHRoYXQncyBpdCAtIHdlJ3JlIG5vdAorICogcmV0YWluaW5nIGFueSBub24tTlVM TCB0dXBsZXMsIHNvIHRoYXQgd2UnbGwgcmVhZCB0aGUgcmFuZ2VzIGFnYWluIGluCisgKiB0 aGUgc2Vjb25kIHJhbmdlLiBUaGUgbG9naWMgaGVyZSBpcyB0aGF0IGVpdGhlciB0aGVyZSBh cmUgdmVyeSBmZXcKKyAqIHN1Y2ggcmFuZ2VzLCBzbyBpdCdzIHdvbid0IGNvc3QgbXVjaCB0 byBqdXN0IHJlLXJlYWQgdGhlbS4gT3IgbWF5YmUKKyAqIHRoZXJlIGFyZSB2ZXJ5IG1hbnkg c3VjaCByYW5nZXMsIGFuZCB3ZSdkIGRvIGEgbG90IG9mIHNwaWxsaW5nIHRvIHRoZQorICog dHVwbGVzdG9yZSwgYW5kIGl0J3Mgbm90IG11Y2ggbW9yZSBleHBlbnNpdmUgdG8ganVzdCBy ZS1yZWFkIHRoZSBzb3VyY2UKKyAqIGRhdGEuIFRoZXJlIGFyZSBjb3VudGVyLWV4YW1wbGVz LCB0aG91Z2ggLSBlLmcuLCB0aGVyZSBtaWdodCBiZSBtYW55CisgKiBoYXNfbnVsbHMgcmFu Z2VzLCBidXQgd2l0aCB2ZXJ5IGZldyBub24tTlVMTCB0dXBsZXMuIEluIHRoaXMgY2FzZSBp dAorICogbWlnaHQgYmUgYmV0dGVyIHRvIGFjdHVhbGx5IHNwaWxsIHRoZSB0dXBsZXMgaW5z dGVhZCBvZiByZS1yZWFkaW5nIGFsbAorICogdGhlIHJhbmdlcy4gTWF5YmUgdGhpcyBpcyBz b21ldGhpbmcgd2UgY2FuIGRvIGF0IHJ1bi10aW1lLCBvciBtYXliZSB3ZQorICogY291bGQg ZXN0aW1hdGUgdGhpcyBhdCBwbGFubmluZyB0aW1lLiBXZSBkbyBrbm93IHRoZSBudWxsX2Zy YWMgZm9yIHRoZQorICogY29sdW1uLCBzbyB3ZSBrbm93IHRoZSBudW1iZXIgb2YgTlVMTCBy b3dzLiBBbmQgd2UgYWxzbyBrbm93IHRoZSBudW1iZXIKKyAqIG9mIGFsbF9udWxscyBhbmQg aGFzX251bGxzIHJhbmdlcy4gV2UgY2FuIGVzdGltYXRlIHRoZSBudW1iZXIgb2Ygcm93cwor ICogcGVyIHJhbmdlLCBhbmQgd2UgY2FuIGVzdGltYXRlIGhvdyBtYW55IG5vbi1OVUxMIHJv d3MgYXJlIGluIHRoZQorICogaGFzX251bGxzIHJhbmdlcyAod2UgZG9uJ3QgbmVlZCB0byBy ZS1yZWFkIGFsbC1udWxscyByYW5nZXMpLiBUaGVyZSdzCisgKiBhbHNvIHRoZSBmaWx0ZXIs IHdoaWNoIG1heSByZWR1Y2UgdGhlIGFtb3VudCBvZiByb3dzIHRvIHN0b3JlLgorICoKKyAq IFNvIHdlJ2QgbmVlZCB0byBjb21wYXJlIHR3byBtZXRyaWNzIGNhbGN1bGF0ZWQgcm91Z2hs eSBsaWtlIHRoaXM6CisgKgorICogICBjb3N0KHJlLXJlYWRpbmcgaGFzLW51bGxzIHJhbmdl cykKKyAqICAgICAgPSBjb3N0KHJhbmRvbV9wYWdlX2Nvc3QgKiBuX2hhc19udWxscyArIHNl cV9wYWdlX2Nvc3QgKiBwYWdlc19wZXJfcmFuZ2UpCisgKgorICogICBjb3N0KHNwaWxsaW5n IG5vbi1OVUxMIHJvd3MgZnJvbSBoYXMtbnVsbHMgcmFuZ2VzKQorICogICAgICA9IGNvc3Qo bnVtcm93cyAqIHdpZHRoIC8gQkxDS1NaICogc2VxX3BhZ2VfY29zdCAqIDIpCisgKgorICog d2hlcmUgbnVtcm93cyBpcyB0aGUgbnVtYmVyIG9mIG5vbi1OVUxMIHJvd3MgaW4gaGFzX251 bGwgcmFuZ2VzLCB3aGljaAorICogY2FuIGJlIGNhbGN1bGF0ZWQgbGlrZSB0aGlzOgorICoK KyAqICAgLy8gZXN0aW1hdGVkIG51bWJlciBvZiByb3dzIGluIGhhcy1udWxsIHJhbmdlcwor ICogICByb3dzX2luX2hhc19udWxscyA9IChyZWx0dXBsZXMgLyByZWxwYWdlcykgKiBwYWdl c19wZXJfcmFuZ2UgKiBuX2hhc19udWxscworICoKKyAqICAgLy8gbnVtYmVyIG9mIE5VTEwg cm93cyBpbiB0aGUgaGFzLW51bGxzIHJhbmdlcworICogICBudWxsc19pbl9yYW5nZXMgPSBy ZWx0dXBsZXMgKiBudWxsX2ZyYWMgLSBuX2FsbF9udWxscyAqIChyZWx0dXBsZXMgLyByZWxw YWdlcykKKyAqCisgKiAgIC8vIG51bXJvd3MgaXMgdGhlIGRpZmZlcmVuY2UsIG11bHRpcGxp ZWQgYnkgc2VsZWN0aXZpdHkgb2YgdGhlIGluZGV4CisgKiAgIC8vIGZpbHRlciBjb25kaXRp b24gKHZhbHVlIGJldHdlZW4gMC4wIGFuZCAxLjApCisgKiAgIG51bXJvd3MgPSAocm93c19p bl9oYXNfbnVsbHMgLSBudWxsc19pbl9yYW5nZXMpICogc2VsZWN0aXZpdHkKKyAqCisgKiBU aGlzIGlnbm9yZXMgbm9uLXN1bW1hcml6ZWQgcmFuZ2VzLCBidXQgdGhlcmUgc2hvdWxkIGJl IG9ubHkgdmVyeSBmZXcgb2YKKyAqIHRob3NlLCBzbyBpdCBzaG91bGQgbm90IG1ha2UgYSBo dWdlIGRpZmZlcmVuY2UuIE90aGVyd2lzZSB3ZSBjYW4gZGl2aWRlCisgKiB0aGVtIGJldHdl ZW4gcmVndWxhciwgaGFzLW51bGxzIGFuZCBhbGwtbnVsbHMgcGFnZXMgdG8ga2VlcCB0aGUg cmF0aW8uCisgKgorICoKKyAqIDMpIEhvdyBsYXJnZSBzdGVwIHRvIG1ha2Ugd2hlbiB1cGRh dGluZyB0aGUgd2F0ZXJtYXJrPworICoKKyAqIFdoZW4gdXBkYXRpbmcgdGhlIHdhdGVybWFy aywgb25lIG9wdGlvbiBpcyB0byBzaW1wbHkgcHJvY2VlZCB0byB0aGUgbmV4dAorICogZGlz dGluY3QgbWludmFsIHZhbHVlLCB3aGljaCBpcyB0aGUgc21hbGxlc3QgcG9zc2libGUgc3Rl cCB3ZSBjYW4gbWFrZS4KKyAqIFRoaXMgbWF5IGJlIGJvdGggZmluZSBhbmQgdmVyeSBpbmVm ZmljaWVudCwgZGVwZW5kaW5nIG9uIGhvdyBtYW55IHJvd3MKKyAqIGVuZCB1cCBpbiB0aGUg dHVwbGVzb3J0IGFuZCBob3cgbWFueSByb3dzIHdlIGVuZCB1cCBzcGlsbGluZyAocG9zc2li bHkKKyAqIHJlcGVhdGVkbHkgdG8gdGhlIHR1cGxlc3RvcmUpLgorICoKKyAqIFdoZW4gaGF2 aW5nIHRvIHNvcnQgbGFyZ2UgbnVtYmVyIG9mIHJvd3MsIGl0J3MgaW5lZmZpY2llbnQgdG8g cnVuIG1hbnkKKyAqIHRpbnkgc29ydHMsIGV2ZW4gaWYgaXQgcHJvZHVjZXMgY29ycmVjdCBy ZXN1bHQuIEZvciBleGFtcGxlIHdoZW4gc29ydGluZworICogMU0gcm93cywgd2UgbWF5IHNw bGl0IHRoaXMgYXMgZWl0aGVyIChhKSAxMDAwMDB4IHNvcnRzIG9mIDEwIHJvd3MsIG9yCisg KiAoYikgMTAwMCBzb3J0cyBvZiAxMDAwIHJvd3MuIFRoZSAoYikgb3B0aW9uIGlzIGFsbW9z dCBjZXJ0YWlubHkgbW9yZQorICogZWZmaWNpZW50LiBNYXliZSBzb3J0cyBvZiAxMGsgcm93 cyB3b3VsZCBiZSBldmVuIGJldHRlciwgaWYgaXQgZml0cworICogaW50byB3b3JrX21lbS4K KyAqCisgKiBUaGlzIGdldHMgYmFjayB0byBob3cgbGFyZ2UgdGhlIHBhZ2UgcmFuZ2VzIGFy ZSwgYW5kIGlmL2hvdyBtdWNoIHRoZXkKKyAqIG92ZXJsYXAuIFdpdGggdGlueSByYW5nZXMg KGUuZy4gYSBzaW5nbGUtcGFnZSByYW5nZXMpLCBhIHNpbmdsZSByYW5nZQorICogY2FuIG9u bHkgYWRkIGFzIG1hbnkgcm93cyBhcyB3ZSBjYW4gZml0IG9uIGEgc2luZ2xlIHBhZ2UuIFNv IHdlIG5lZWQKKyAqIG1vcmUgcmFuZ2VzIGJ5IGRlZmF1bHQgLSBob3cgbWFueSB3YXRlcm1h cmsgc3RlcHMgdGhhdCBpcyBkZXBlbmRzIG9uCisgKiBob3cgbWFueSBkaXN0aW5jdCBtaW52 YWwgdmFsdWVzIGFyZSB0aGVyZSAuLi4KKyAqCisgKiBUaGVuIHRoZXJlJ3Mgb3ZlcmxhcHMg LSBpZiByYW5nZXMgZG8gbm90IG92ZXJsYXAsIHdlJ3JlIGRvbmUgYW5kIHdlJ2xsCisgKiBh ZGQgdGhlIHdob2xlIHJhbmdlIGJlY2F1c2UgdGhlIG5leHQgd2F0ZXJtYXJrIGlzIGFib3Zl IG1heHZhbC4gQnV0CisgKiB3aGVuIHRoZSByYW5nZXMgb3ZlcmxhcCwgd2UnbGwgb25seSBh ZGQgdGhlIGZpcnN0IHBhcnQgKGFzc3VtaW5nIHRoZQorICogbWludmFsIG9mIHRoZSBuZXh0 IHJhbmdlIGlzIHRoZSB3YXRlcm1hcmspLiBBc3N1bWUgMTAgb3ZlcmxhcHBpbmcKKyAqIHJh bmdlcyAtIGltYWdpbmUgZm9yIGV4YW1wbGUgcmFuZ2VzIHNoaWZ0ZWQgYnkgMTAlLCBzbyBz b21ldGhpbmcgbGlrZQorICoKKyAqICAgWzAsMTAwXSBbMTAsMTEwXSwgWzIwLDEyMF0sIFsz MCwgMTMwXSwgLi4uLCBbOTAsIDE5MF0KKyAqCisgKiBJbiB0aGUgZmlyc3Qgc3RlcCB3ZSB1 c2Ugd2F0ZXJtYXJrPTEwIGFuZCBsb2FkIHRoZSBmaXJzdCByYW5nZSwgd2l0aAorICogbWF5 YmUgMTAwMCByb3dzIGluIHRvdGFsLiBCdXQgYXNzdW1pbmcgdW5pZm9ybSBkaXN0cmlidXRp b24sIG9ubHkgYWJvdXQKKyAqIDEwMCByb3dzIHdpbGwgZ28gaW50byB0aGUgdHVwbGVzb3J0 LCB0aGUgcmVtYWluaW5nIDkwMCByb3dzIHdpbGwgZ28gaW50bworICogdGhlIHR1cGxlc3Rv cmUgKGFzc3VtaW5nIHVuaWZvcm0gZGlzdHJpYnV0aW9uKS4gVGhlbiBpbiB0aGUgc2Vjb25k IHN0ZXAKKyAqIHdlIHNvcnQgYW5vdGhlciAxMDAgcm93cyBhbmQgdGhlIHJlbWFpbmluZyA4 MDAgcm93cyB3aWxsIGJlIG1vdmVkIGludG8KKyAqIGEgbmV3IHR1cGxlc3RvcmUuIEFuZCBz byBvbiBhbmQgc28gb24uCisgKgorICogVGhpcyBtZWFucyB0aGF0IGluY3JlbWVudGluZyB0 aGUgd2F0ZXJtYXJrcyBieSBzaW5nbGUgc3RlcHMgbWF5IGJlCisgKiBxdWl0ZSBpbmVmZmlj aWVudCwgYW5kIHdlIG5lZWQgdG8gcmVmbGVjdCBib3RoIHRoZSByYW5nZSBzaXplIGFuZAor ICogaG93IG11Y2ggdGhlIHJhbmdlcyBvdmVybGFwLgorICoKKyAqIEluIGZhY3QsIG1heWJl IHdlIHNob3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBzdGVwIGFzIG51bWJlciBvZiBtaW52YWwK KyAqIHZhbHVlcyB0byBza2lwLCBidXQgaG93IG1hbnkgcmFuZ2VzIHdvdWxkIHRoYXQgbWVh biByZWFkaW5nLiBCZWNhdXNlCisgKiBpZiB3ZSBoYXZlIGEgbWludmFsIHdpdGggbWFueSBk dXBsaWNhdGVzLCB0aGF0IG1heSBsb2FkIG1hbnkgcm93cy4KKyAqIE9yIGV2ZW4gYmV0dGVy LCB3ZSBjb3VsZCBsb29rIGF0IGhvdyBtYW55IHJvd3Mgd291bGQgdGhhdCBtZWFuIGxvYWRp bmcKKyAqIGludG8gdGhlIHR1cGxlc3RvcmUgLSBpZiB3ZSB0cmFjayBQKHg8bWludmFsKSBm b3IgZWFjaCByYW5nZSAoZS5nLiBieQorICogY2FsY3VsYXRpbmcgYXZlcmFnZSB2YWx1ZSBk dXJpbmcgQU5BTFlaRSwgb3IgcGVyaGFwcyBieSBlc3RpbWF0aW5nCisgKiBpdCBmcm9tIHBl ci1jb2x1bW4gc3RhdHMpLCB0aGVuIHdlIGtub3cgdGhlIGluY3JlbWVudCBpcyBnb2luZyB0 byBiZQorICogYWJvdXQKKyAqCisgKiAgICAgUCh4IDwgbWludmFsW2ldKSAtIFAoeCA8IG1p bnZhbFtpLTFdKQorICoKKyAqIGFuZCB3ZSBjYW4gc3RvcCBvbmNlIHdlJ2QgZXhjZWVkIHdv cmtfbWVtICh3aXRoIHNvbWUgc2xhY2spLiBTZWUgY29tbWVudAorICogZm9yIGJyaW5fbWlu bWF4X3N0YXRzKCkgZm9yIG1vcmUgdGhvdWdodHMuCisgKgorICoKKyAqIDQpIExJTUlUL09G RlNFVCB2cy4gZnVsbCBzb3J0CisgKgorICogVGhlcmUncyBvbmUgY2FzZSB3aGVyZSB2ZXJ5 IHNtYWxsIHNvcnRzIG1heSBiZSBhY3R1YWxseSBvcHRpbWFsLCBhbmQKKyAqIHRoYXQncyBx dWVyaWVzIHRoYXQgbmVlZCB0byBwcm9jZXNzIG9ubHkgdmVyeSBmZXcgcm93cyAtIHNheSwg TElNSVQKKyAqIHF1ZXJpZXMgd2l0aCB2ZXJ5IHNtYWxsIGJvdW5kLgorICoKKyAqCisgKiBG SVhNRSBoYW5kbGluZyBvZiBvdGhlciBicmluIG9wY2xhc3NlcyAobWlubWF4LW11bHRpKQor ICoKKyAqIEZJWE1FIGltcHJvdmUgY29zdGluZworICoKKyAqCisgKiBJbXByb3ZlbWVudCBp ZGVhczoKKyAqCisgKiAxKSBtdWx0aXBsZSB0dXBsZXN0b3JlcyBmb3Igb3ZlcmxhcHBpbmcg cmFuZ2VzCisgKgorICogV2hlbiB0aGVyZSBhcmUgbWFueSBvdmVybGFwcGluZyByYW5nZXMg KHNvIHRoYXQgbWF4dmFsID4gY3VycmVudC5tYXh2YWwpLAorICogd2UncmUgbG9hZGluZyBh bGwgdGhlICJmdXR1cmUiIHR1cGxlcyBpbnRvIGEgbmV3IHR1cGxlc3RvcmUuIEhvd2V2ZXIs IGlmCisgKiB0aGVyZSBhcmUgbXVsdGlwbGUgc3VjaCByYW5nZXMgKGltYWdpbmUgcmFuZ2Vz ICJzaGlmdGluZyIgYnkgMTAlLCB3aGljaAorICogZ2l2ZXMgdXMgOSBtb3JlIHJhbmdlcyks IHdlIGtub3cgaW4gdGhlIG5leHQgcm91bmQgd2UnbGwgb25seSBuZWVkIHJvd3MKKyAqIHVu dGlsIHRoZSBuZXh0IG1heHZhbC4gV2UnbGwgbm90IHNvcnQgdGhlc2Ugcm93cywgYnV0IHdl J2xsIHN0aWxsIHNodWZmbGUKKyAqIHRoZW0gYXJvdW5kIHVudGlsIHdlIGdldCB0byB0aGUg cHJvcGVyIHJhbmdlIChzbyBhYm91dCAxMHggZWFjaCByb3cpLgorICogTWF5YmUgd2Ugc2hv dWxkIHByZS1hbGxvY2F0ZSB0aGUgdHVwbGVzdG9yZXMgKG9yIG1heWJlIGV2ZW4gdHVwbGVz b3J0cykKKyAqIGZvciBmdXR1cmUgcmFuZ2VzLCBhbmQgcm91dGUgdGhlIHR1cGxlcyB0byB0 aGUgY29ycmVjdCBvbmU/IE1heWJlIHdlCisgKiBjb3VsZCBiZSBhIGJpdCBzbWFydGVyIGFu ZCBkaXNjYXJkIHR1cGxlcyBvbmNlIHdlIGhhdmUgZW5vdWdoIHJvd3MgZm9yCisgKiB0aGUg cHJlY2VkaW5nIHJhbmdlcyAoc2F5LCB3aXRoIExJTUlUIHF1ZXJpZXMpLiBXZSdkIGFsc28g bmVlZCB0byB3b3JyeQorICogYWJvdXQgd29ya19tZW0sIHRob3VnaCAtIHdlIGNhbid0IGp1 c3QgdXNlIG1hbnkgdHVwbGVzdG9yZXMsIGVhY2ggd2l0aAorICogd2hvbGUgd29ya19tZW0u IFNvIHdlJ2QgcHJvYmFibHkgdXNlIGUuZy4gd29ya19tZW0vMiBmb3IgdGhlIG5leHQgb25l LAorICogYW5kIHRoZW4gLzQsIC84IGV0Yy4gZm9yIHRoZSBmb2xsb3dpbmcgb25lcy4gVGhh dCdzIHdvcmtfbWVtIGluIHRvdGFsLgorICogQW5kIHRoZXJlJ2QgbmVlZCB0byBiZSBzb21l IGxpbWl0IG9uIG51bWJlciBvZiB0dXBsZXN0b3JlcywgSSBndWVzcy4KKyAqCisgKiAyKSBo YW5kbGluZyBOVUxMIHZhbHVlcworICoKKyAqIFdlIG5lZWQgdG8gaGFuZGxlIE5VTExTIEZJ UlNUIC8gTlVMTFMgTEFTVCBjYXNlcy4gVGhlIHF1ZXN0aW9uIGlzIGhvdworICogdG8gZG8g dGhhdCAtIHRoZSBlYXNpZXN0IHdheSBpcyB0byBzaW1wbHkgZG8gYSBzZXBhcmF0ZSBzY2Fu IG9mIHJhbmdlcworICogdGhhdCBtaWdodCBjb250YWluIE5VTEwgdmFsdWVzLCBwcm9jZXNz aW5nIGp1c3Qgcm93cyB3aXRoIE5VTExzLCBhbmQKKyAqIGRpc2NhcmRpbmcgb3RoZXIgcm93 cy4gQW5kIHRoZW4gcHJvY2VzcyBub24tTlVMTCB2YWx1ZXMgYXMgY3VycmVudGx5LgorICog VGhlIE5VTEwgc2NhbiB3b3VsZCBoYXBwZW4gYmVmb3JlL2FmdGVyIHRoaXMgcmVndWxhciBw aGFzZS4KKyAqCisgKiBCeXQgbWF5YmUgd2UgY291bGQgYmUgc21hcnRlciwgYW5kIG5vdCBk byBzZXBhcmF0ZSBzY2Fucy4gV2hlbiByZWFkaW5nCisgKiBhIHBhZ2UsIHdlIG1pZ2h0IHN0 YXNoIHRoZSB0dXBsZSBpbiBhIHR1cGxlc3RvcmUsIHNvIHRoYXQgd2UgY2FuIHJlYWQKKyAq IGl0IHRoZSBuZXh0IHJvdW5kLiBPYnZpb3VzbHksIHRoaXMgbWlnaHQgYmUgZXhwZW5zaXZl IGlmIHdlIG5lZWQgdG8KKyAqIGtlZXAgdG9vIG1hbnkgcm93cywgc28gdGhlIHR1cGxlc3Rv cmUgd291bGQgZ3JvdyB0b28gbGFyZ2UgLSBpbiB0aGF0CisgKiBjYXNlIGl0IG1pZ2h0IGJl IGJldHRlciB0byBqdXN0IGRvIHRoZSB0d28gc2NhbnMuCisgKgorICogMykgcGFyYWxsZWxp c20KKyAqCisgKiBQcmVzdW1hYmx5IHdlIGNvdWxkIGRvIGEgcGFyYWxsZWwgdmVyc2lvbiBv ZiB0aGlzLiBUaGUgbGVhZGVyIG9yIGZpcnN0CisgKiB3b3JrZXIgd291bGQgcHJlcGFyZSB0 aGUgcmFuZ2UgaW5mb3JtYXRpb24sIGFuZCB0aGUgd29ya2VycyB3b3VsZCB0aGVuCisgKiBn cmFiIHJhbmdlcyAoaW4gYSBraW5kYSByb3VuZCByb2JpbiBtYW5uZXIpLCBzb3J0IHRoZW0g aW5kZXBlbmRlbnRseSwKKyAqIGFuZCB0aGVuIHRoZSByZXN1bHRzIHdvdWxkIGJlIG1lcmdl ZCBieSBHYXRoZXIgTWVyZ2UuCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworLyoKKyAqIElOVEVSRkFDRSBST1VUSU5FUworICoJCUV4ZWNCcmluU29ydAkJ CXNjYW5zIGEgcmVsYXRpb24gdXNpbmcgYW4gaW5kZXgKKyAqCQlJbmRleE5leHQJCQkJcmV0 cmlldmUgbmV4dCB0dXBsZSB1c2luZyBpbmRleAorICoJCUV4ZWNJbml0QnJpblNvcnQJCWNy ZWF0ZXMgYW5kIGluaXRpYWxpemVzIHN0YXRlIGluZm8uCisgKgkJRXhlY1JlU2NhbkJyaW5T b3J0CQlyZXNjYW5zIHRoZSBpbmRleGVkIHJlbGF0aW9uLgorICoJCUV4ZWNFbmRCcmluU29y dAkJCXJlbGVhc2VzIGFsbCBzdG9yYWdlLgorICoJCUV4ZWNCcmluU29ydE1hcmtQb3MJCW1h cmtzIHNjYW4gcG9zaXRpb24uCisgKgkJRXhlY0JyaW5Tb3J0UmVzdHJQb3MJcmVzdG9yZXMg c2NhbiBwb3NpdGlvbi4KKyAqCQlFeGVjQnJpblNvcnRFc3RpbWF0ZQllc3RpbWF0ZXMgRFNN IHNwYWNlIG5lZWRlZCBmb3IgcGFyYWxsZWwgaW5kZXggc2NhbgorICoJCUV4ZWNCcmluU29y dEluaXRpYWxpemVEU00gaW5pdGlhbGl6ZSBEU00gZm9yIHBhcmFsbGVsIEJyaW5Tb3J0Cisg KgkJRXhlY0JyaW5Tb3J0UmVJbml0aWFsaXplRFNNIHJlaW5pdGlhbGl6ZSBEU00gZm9yIGZy ZXNoIHNjYW4KKyAqCQlFeGVjQnJpblNvcnRJbml0aWFsaXplV29ya2VyIGF0dGFjaCB0byBE U00gaW5mbyBpbiBwYXJhbGxlbCB3b3JrZXIKKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgi CisKKyNpbmNsdWRlICJhY2Nlc3MvYnJpbi5oIgorI2luY2x1ZGUgImFjY2Vzcy9icmluX2lu dGVybmFsLmgiCisjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgorI2luY2x1ZGUgImFjY2Vz cy9yZWxzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19hbS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZWJ1Zy5oIgorI2lu Y2x1ZGUgImV4ZWN1dG9yL25vZGVCcmluU29ydC5oIgorI2luY2x1ZGUgImxpYi9wYWlyaW5n aGVhcC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVG dW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorCisKK3N0YXRpYyBUdXBsZVRh YmxlU2xvdCAqSW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpOworc3RhdGljIGJvb2wg SW5kZXhSZWNoZWNrKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIFR1cGxlVGFibGVTbG90ICpzbG90 KTsKK3N0YXRpYyB2b2lkIEV4ZWNJbml0QnJpblNvcnRSYW5nZXMoQnJpblNvcnQgKm5vZGUs IEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0ZSk7CisKKyNpZmRlZiBERUJVR19CUklOX1NPUlQK K2Jvb2wgZGVidWdfYnJpbl9zb3J0ID0gZmFsc2U7CisjZW5kaWYKKworLyogZG8gdmFyaW91 cyBjb25zaXN0ZW5jeSBjaGVja3MgKi8KK3N0YXRpYyB2b2lkCitBc3NlcnRDaGVja1Jhbmdl cyhCcmluU29ydFN0YXRlICpub2RlKQoreworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcK KworI2VuZGlmCit9CisKKy8qCisgKiBicmluc29ydF9zdGFydF90aWRzY2FuCisgKgkJU3Rh cnQgc2Nhbm5pbmcgdHVwbGVzIGZyb20gYSBnaXZlbiBwYWdlIHJhbmdlLgorICoKKyAqIFdl IG9wZW4gYSBUSUQgcmFuZ2Ugc2NhbiBmb3IgdGhlIGdpdmVuIHJhbmdlLCBhbmQgaW5pdGlh bGl6ZSB0aGUgdHVwbGVzb3J0LgorICogT3B0aW9uYWxseSwgd2UgdXBkYXRlIHRoZSB3YXRl cm1hcmsgKHdpdGggZWl0aGVyIGhpZ2gvbG93IHZhbHVlKS4gV2Ugb25seQorICogbmVlZCB0 byBkbyB0aGlzIGZvciB0aGUgbWFpbiBwYWdlIHJhbmdlLCBub3QgZm9yIHRoZSBpbnRlcnNl Y3RpbmcgcmFuZ2VzLgorICoKKyAqIFhYWCBNYXliZSB3ZSBzaG91bGQgaW5pdGlhbGl6ZSB0 aGUgdGlkc2NhbiBvbmx5IG9uY2UsIGFuZCB0aGVuIGRvIHJlc2NhbgorICogZm9yIHRoZSBm b2xsb3dpbmcgcmFuZ2VzPyBBbmQgc2ltaWxhcmx5IGZvciB0aGUgdHVwbGVzb3J0PworICov CitzdGF0aWMgdm9pZAorYnJpbnNvcnRfc3RhcnRfdGlkc2NhbihCcmluU29ydFN0YXRlICpu b2RlKQoreworCUJyaW5Tb3J0ICAgKnBsYW4gPSAoQnJpblNvcnQgKikgbm9kZS0+c3MucHMu cGxhbjsKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCUJyaW5S YW5nZSAgKnJhbmdlID0gbm9kZS0+YnNfcmFuZ2U7CisKKwkvKiBUaGVyZSBtdXN0IG5vdCBi ZSBhbnkgVElEIHNjYW4gaW4gcHJvZ3Jlc3MgeWV0LiAqLworCUFzc2VydChub2RlLT5zcy5z c19jdXJyZW50U2NhbkRlc2MgPT0gTlVMTCk7CisKKwkvKiBJbml0aWFsaXplIHRoZSBUSUQg cmFuZ2Ugc2NhbiwgZm9yIHRoZSBwcm92aWRlZCBibG9jayByYW5nZS4gKi8KKwlpZiAobm9k ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID09IE5VTEwpCisJeworCQlUYWJsZVNjYW5EZXNj CQl0c2NhbmRlc2M7CisJCUl0ZW1Qb2ludGVyRGF0YQkJbWludGlkLAorCQkJCQkJCW1heHRp ZDsKKworCQlJdGVtUG9pbnRlclNldEJsb2NrTnVtYmVyKCZtaW50aWQsIHJhbmdlLT5ibGtu b19zdGFydCk7CisJCUl0ZW1Qb2ludGVyU2V0T2Zmc2V0TnVtYmVyKCZtaW50aWQsIDApOwor CisJCUl0ZW1Qb2ludGVyU2V0QmxvY2tOdW1iZXIoJm1heHRpZCwgcmFuZ2UtPmJsa25vX2Vu ZCk7CisJCUl0ZW1Qb2ludGVyU2V0T2Zmc2V0TnVtYmVyKCZtYXh0aWQsIE1heEhlYXBUdXBs ZXNQZXJQYWdlKTsKKworCQllbG9nKERFQlVHMSwgImxvYWRpbmcgcmFuZ2UgYmxvY2tzIFsl dSwgJXVdIiwKKwkJCSByYW5nZS0+Ymxrbm9fc3RhcnQsIHJhbmdlLT5ibGtub19lbmQpOwor CisJCXRzY2FuZGVzYyA9IHRhYmxlX2JlZ2luc2Nhbl90aWRyYW5nZShub2RlLT5zcy5zc19j dXJyZW50UmVsYXRpb24sCisJCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJ CQkJCQkJCQkgJm1pbnRpZCwgJm1heHRpZCk7CisJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyA9IHRzY2FuZGVzYzsKKwl9CisKKwlpZiAobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUg PT0gTlVMTCkKKwl7CisJCVR1cGxlRGVzYwl0dXBEZXNjID0gKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlRGVzYyk7CisKKwkJbm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUgPSB0dXBsZXNv cnRfYmVnaW5faGVhcCh0dXBEZXNjLAorCQkJCQkJCQkJCQkJCXBsYW4tPm51bUNvbHMsCisJ CQkJCQkJCQkJCQkJcGxhbi0+c29ydENvbElkeCwKKwkJCQkJCQkJCQkJCQlwbGFuLT5zb3J0 T3BlcmF0b3JzLAorCQkJCQkJCQkJCQkJCXBsYW4tPmNvbGxhdGlvbnMsCisJCQkJCQkJCQkJ CQkJcGxhbi0+bnVsbHNGaXJzdCwKKwkJCQkJCQkJCQkJCQl3b3JrX21lbSwKKwkJCQkJCQkJ CQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJCVRVUExFU09SVF9OT05FKTsKKwl9CisKKwlpZiAo bm9kZS0+YnNfdHVwbGVzdG9yZSA9PSBOVUxMKQorCXsKKwkJbm9kZS0+YnNfdHVwbGVzdG9y ZSA9IHR1cGxlc3RvcmVfYmVnaW5faGVhcChmYWxzZSwgZmFsc2UsIHdvcmtfbWVtKTsKKwl9 Cit9CisKKy8qCisgKiBicmluc29ydF9lbmRfdGlkc2NhbgorICoJCUZpbmlzaCB0aGUgVElE IHJhbmdlIHNjYW4uCisgKi8KK3N0YXRpYyB2b2lkCiticmluc29ydF9lbmRfdGlkc2NhbihC cmluU29ydFN0YXRlICpub2RlKQoreworCS8qIGdldCB0aGUgZmlyc3QgcmFuZ2UsIHJlYWQg YWxsIHR1cGxlcyB1c2luZyBhIHRpZCByYW5nZSBzY2FuICovCisJaWYgKG5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxMKQorCXsKKwkJdGFibGVfZW5kc2Nhbihub2RlLT5z cy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2Mg PSBOVUxMOworCX0KK30KKworLyoKKyAqIGJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsKKyAq CQlBZHZhbmNlIHRoZSB3YXRlcm1hcmsgdG8gdGhlIG5leHQgbWludmFsIChvciBtYXh2YWwg Zm9yIERFU0MpLgorICoKKyAqIFdlIGNvdWxkIGNvdWxkIGFjdHVhbGx5IGFkdmFuY2UgdGhl IHdhdGVybWFyayBieSBtdWx0aXBsZSBzdGVwcyAobm90IHRvCisgKiB0aGUgaW1tZWRpYXRl bHkgZm9sbG93aW5nIG1pbnZhbCwgYnV0IGEgY291cGxlIG1vcmUpLCB0byBhY2N1bXVsYXRl IG1vcmUKKyAqIHJvd3MgaW4gdGhlIHR1cGxlc29ydC4gVGhlIG51bWJlciBvZiBzdGVwcyB3 ZSBtYWtlIGNvcnJlbGF0ZXMgd2l0aCB0aGUKKyAqIGFtb3VudCBvZiBkYXRhIHdlIHNvcnQg aW4gYSBnaXZlbiBzdGVwLCBidXQgd2UgZG9uJ3Qga25vdyBpbiBhZHZhbmNlCisgKiBob3cg bWFueSByb3dzIChvciBieXRlcykgd2lsbCB0aGF0IGFjdHVhbGx5IGJlLiBXZSBjb3VsZCBk byBzb21lIHNpbXBsZQorICogaGV1cmlzdGljcyAobWVhc3VyZSBwYXN0IHNvcnRzIGFuZCBl eHRyYXBvbGF0ZSkuCisgKgorICogWFhYIFdpdGggYSBzZXBhcmF0ZSBfc2V0IGFuZCBfZW1w dHkgZmxhZ3MsIHdlIGRvbid0IHJlYWxseSBuZWVkIHRvIHBhc3MKKyAqIGEgc2VwYXJhdGUg ImZpcnN0IiBwYXJhbWV0ZXIgLSAic2V0PWZhbHNlIiBoYXMgdGhlIHNhbWUgbWVhbmluZy4K KyAqLworc3RhdGljIHZvaWQKK2JyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsoQnJpblNvcnRT dGF0ZSAqbm9kZSwgYm9vbCBhc2MpCit7CisJaW50CQljbXA7CisJYm9vbAlmb3VuZCA9IGZh bHNlOworCisJdHVwbGVzb3J0X21hcmtwb3Mobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzKTsKKwor CXdoaWxlICh0dXBsZXNvcnRfZ2V0dHVwbGVzbG90KG5vZGUtPmJzX3NjYW4tPnJhbmdlcywg dHJ1ZSwgZmFsc2UsIG5vZGUtPmJzX3NjYW4tPnNsb3QsIE5VTEwpKQorCXsKKwkJYm9vbAlp c251bGw7CisJCURhdHVtCXZhbHVlOworCQlib29sCWFsbF9udWxsczsKKwkJYm9vbAlub3Rf c3VtbWFyaXplZDsKKworCQlhbGxfbnVsbHMgPSBEYXR1bUdldEJvb2woc2xvdF9nZXRhdHRy KG5vZGUtPmJzX3NjYW4tPnNsb3QsIDQsICZpc251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwp OworCisJCW5vdF9zdW1tYXJpemVkID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihub2Rl LT5ic19zY2FuLT5zbG90LCA1LCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKwor CQkvKiB3ZSBpZ25vcmUgcmFuZ2VzIHRoYXQgYXJlIGVpdGhlciBhbGxfbnVsbHMgb3Igbm90 IHN1bW1hcml6ZWQgKi8KKwkJaWYgKGFsbF9udWxscyB8fCBub3Rfc3VtbWFyaXplZCkKKwkJ CWNvbnRpbnVlOworCisJCS8qIHVzZSBlaXRoZXIgbWludmFsIG9yIG1heHZhbCwgZGVwZW5k aW5nIG9uIHRoZSBBU0MgLyBERVNDICovCisJCWlmIChhc2MpCisJCQl2YWx1ZSA9IHNsb3Rf Z2V0YXR0cihub2RlLT5ic19zY2FuLT5zbG90LCA2LCAmaXNudWxsKTsKKwkJZWxzZQorCQkJ dmFsdWUgPSBzbG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgNywgJmlzbnVsbCk7 CisKKwkJaWYgKCFub2RlLT5ic193YXRlcm1hcmtfc2V0KQorCQl7CisJCQlub2RlLT5ic193 YXRlcm1hcmtfc2V0ID0gdHJ1ZTsKKwkJCW5vZGUtPmJzX3dhdGVybWFyayA9IHZhbHVlOwor CQkJY29udGludWU7CisJCX0KKworCQljbXAgPSBBcHBseVNvcnRDb21wYXJhdG9yKG5vZGUt PmJzX3dhdGVybWFyaywgZmFsc2UsIHZhbHVlLCBmYWxzZSwKKwkJCQkJCQkJICAmbm9kZS0+ YnNfc29ydHN1cHBvcnQpOworCisJCWlmIChjbXAgPCAwKQorCQl7CisJCQlub2RlLT5ic193 YXRlcm1hcmtfc2V0ID0gdHJ1ZTsKKwkJCW5vZGUtPmJzX3dhdGVybWFyayA9IHZhbHVlOwor CQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwl0dXBsZXNvcnRfcmVz dG9yZXBvcyhub2RlLT5ic19zY2FuLT5yYW5nZXMpOworCisJbm9kZS0+YnNfd2F0ZXJtYXJr X2VtcHR5ID0gKCFmb3VuZCk7Cit9CisKKy8qCisgKiBicmluc29ydF9sb2FkX3R1cGxlcwor ICoJCUxvYWQgdHVwbGVzIGZyb20gdGhlIFRJRCByYW5nZSBzY2FuLCBhZGQgdGhlbSB0byB0 dXBsZXNvcnQvc3RvcmUuCisgKgorICogV2hlbiBjYWxsZWQgZm9yIHRoZSAiY3VycmVudCIg cmFuZ2UsIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIHdhdGVybWFyaywKKyAqIHdlIGtu b3cgdGhlIHR1cGxlIGdvZXMgaW50byB0aGUgdHVwbGVzb3J0LiBTbyB3aXRoIGNoZWNrX3dh dGVybWFyayB3ZQorICogc2tpcCB0aGUgY29tcGFyYXRvciBjYWxsIHRvIHNhdmUgQ1BVIGNv c3QuCisgKi8KK3N0YXRpYyB2b2lkCiticmluc29ydF9sb2FkX3R1cGxlcyhCcmluU29ydFN0 YXRlICpub2RlLCBib29sIGNoZWNrX3dhdGVybWFyaywgYm9vbCBudWxsX3Byb2Nlc3Npbmcp Cit7CisJQnJpblNvcnQJICAgKnBsYW4gPSAoQnJpblNvcnQgKikgbm9kZS0+c3MucHMucGxh bjsKKwlUYWJsZVNjYW5EZXNjCXNjYW47CisJRVN0YXRlCQkgICAqZXN0YXRlOworCVNjYW5E aXJlY3Rpb24JZGlyZWN0aW9uOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCUJyaW5SYW5n ZQkgICAqcmFuZ2UgPSBub2RlLT5ic19yYW5nZTsKKwlQcm9qZWN0aW9uSW5mbyAqcHJvaklu Zm87CisKKwllc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKKwlkaXJlY3Rpb24gPSBlc3Rh dGUtPmVzX2RpcmVjdGlvbjsKKwlwcm9qSW5mbyA9IG5vZGUtPmJzX1Byb2pJbmZvOworCisJ c2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Q7CisKKwlBc3NlcnQobm9kZS0+YnNf cmFuZ2UgIT0gTlVMTCk7CisKKwkvKgorCSAqIElmIHdlJ3JlIG5vdCBwcm9jZXNzaWduIE5V TExTLCBhbmQgdGhpcyBpcyBhbGwtbnVsbHMgcmFuZ2UsIHdlIGNhbgorCSAqIGp1c3Qgc2tp cCBpdCAtIHdlIHdvbid0IGZpbmQgYW55IG5vbi1OVUxMIHR1cGxlcyBpbiBpdC4KKwkgKgor CSAqIFhYWCBTaG91bGRuJ3QgaGFwcGVuLCB0aGFua3MgdG8gbG9naWMgaW4gYnJpbnNvcnRf bmV4dF9yYW5nZSgpLgorCSAqLworCWlmICghbnVsbF9wcm9jZXNzaW5nICYmIHJhbmdlLT5h bGxfbnVsbHMpCisJCXJldHVybjsKKworCS8qCisJICogU2ltaWxhcmx5LCBpZiB3ZSdyZSBw cm9jZXNzaW5nIE5VTExzIGFuZCB0aGlzIHJhbmdlIGRvZXMgbm90IGhhdmUKKwkgKiBoYXNf bnVsbHMgZmxhZywgd2UgY2FuIHNraXAgaXQuCisJICoKKwkgKiBYWFggU2hvdWxkbid0IGhh cHBlbiwgdGhhbmtzIHRvIGxvZ2ljIGluIGJyaW5zb3J0X25leHRfcmFuZ2UoKS4KKwkgKi8K KwlpZiAobnVsbF9wcm9jZXNzaW5nICYmICEocmFuZ2UtPmhhc19udWxscyB8fCByYW5nZS0+ bm90X3N1bW1hcml6ZWQgfHwgcmFuZ2UtPmFsbF9udWxscykpCisJCXJldHVybjsKKworCWJy aW5zb3J0X3N0YXJ0X3RpZHNjYW4obm9kZSk7CisKKwlzY2FuID0gbm9kZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjOworCisJLyoKKwkgKiBSZWFkIHR1cGxlcywgZXZhbHVhdGUgdGhlIGZp bHRlciAoc28gdGhhdCB3ZSBkb24ndCBrZWVwIHR1cGxlcyBvbmx5IHRvCisJICogZGlzY2Fy ZCB0aGVtIGxhdGVyKSwgYW5kIGRlY2lkZSBpZiBpdCBnb2VzIGludG8gdGhlIGN1cnJlbnQg cmFuZ2UKKwkgKiAodHVwbGVzb3J0KSBvciBvdmVyZmxvdyAodHVwbGVzdG9yZSkuCisJICov CisJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3RfdGlkcmFuZ2Uoc2NhbiwgZGlyZWN0 aW9uLCBzbG90KSkKKwl7CisJCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwkJRXhwclN0YXRl ICAqcXVhbDsKKworCQkvKgorCQkgKiBGZXRjaCBkYXRhIGZyb20gbm9kZQorCQkgKi8KKwkJ cXVhbCA9IG5vZGUtPmJzX3F1YWw7CisJCWVjb250ZXh0ID0gbm9kZS0+c3MucHMucHNfRXhw ckNvbnRleHQ7CisKKwkJLyoKKwkJICogcGxhY2UgdGhlIGN1cnJlbnQgdHVwbGUgaW50byB0 aGUgZXhwciBjb250ZXh0CisJCSAqLworCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBz bG90OworCisJCS8qCisJCSAqIGNoZWNrIHRoYXQgdGhlIGN1cnJlbnQgdHVwbGUgc2F0aXNm aWVzIHRoZSBxdWFsLWNsYXVzZQorCQkgKgorCQkgKiBjaGVjayBmb3Igbm9uLW51bGwgcXVh bCBoZXJlIHRvIGF2b2lkIGEgZnVuY3Rpb24gY2FsbCB0byBFeGVjUXVhbCgpCisJCSAqIHdo ZW4gdGhlIHF1YWwgaXMgbnVsbCAuLi4gc2F2ZXMgb25seSBhIGZldyBjeWNsZXMsIGJ1dCB0 aGV5IGFkZCB1cAorCQkgKiAuLi4KKwkJICoKKwkJICogWFhYIERvbmUgaGVyZSwgYmVjYXVz ZSBpbiBFeGVjU2NhbiB3ZSdsbCBnZXQgZGlmZmVyZW50IHNsb3QgdHlwZQorCQkgKiAobWlu aW1hbCB0dXBsZSB2cy4gYnVmZmVyZWQgdHVwbGUpLiBTY2FuIGV4cGVjdHMgc2xvdCB3aGls ZSByZWFkaW5nCisJCSAqIGZyb20gdGhlIHRhYmxlIChsaWtlIGhlcmUpLCBidXQgd2UncmUg c3Rhc2hpbmcgaXQgaW50byBhIHR1cGxlc29ydC4KKwkJICoKKwkJICogWFhYIE1heWJlIHdl IGNvdWxkIGVsaW1pbmF0ZSBtYW55IHR1cGxlcyBieSBsZXZlcmFnaW5nIHRoZSBCUklOCisJ CSAqIHJhbmdlLCBieSBleGVjdXRpbmcgdGhlIGNvbnNpc3RlbnQgZnVuY3Rpb24uIEJ1dCB3 ZSBkb24ndCBoYXZlCisJCSAqIHRoZSBxdWFsIGluIGFwcHJvcHJpYXRlIGZvcm1hdCBhdCB0 aGUgbW9tZW50LCBzbyB3ZSdkIHByZXByb2Nlc3MKKwkJICogdGhlIGtleXMgc2ltaWxhcmx5 IHRvIGJyaW5nZXRiaXRtYXAoKS4gSW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQKKwkJICogcHJv YmFibHkgZXZhbHVhdGUgdGhlIHN0dWZmIHdoaWxlIGJ1aWxkaW5nIHRoZSByYW5nZXM/IEFs dGhvdWdoLAorCQkgKiBpZiB0aGUgImNvbnNpc3RlbnQiIGZ1bmN0aW9uIGlzIGV4cGVuc2l2 ZSwgaXQgbWlnaHQgYmUgY2hlYXBlcgorCQkgKiB0byBkbyB0aGF0IGluY3JlbWVudGFsbHks IGFzIHdlIG5lZWQgdGhlIHJhbmdlcy4gV291bGQgYmUgYSB3aW4KKwkJICogZm9yIExJTUlU IHF1ZXJpZXMsIGZvciBleGFtcGxlLgorCQkgKgorCQkgKiBYWFggSG93ZXZlciwgbWF5YmUg d2UgY291bGQgYWxzbyBsZXZlcmFnZSBvdGhlciBiaXRtYXAgaW5kZXhlcywKKwkJICogcGFy dGljdWxhcmx5IGZvciBCUklOIGluZGV4ZXMgYmVjYXVzZSB0aGF0IG1ha2VzIGl0IHNpbXBs ZXIgdG8KKwkJICogZWxpbWluYXRlIHRoZSByYW5nZXMgaW5jcmVtZW50YWxseSAtIHdlIGtu b3cgd2hpY2ggcmFuZ2VzIHRvCisJCSAqIGxvYWQgZnJvbSB0aGUgaW5kZXgsIHdoaWxlIGZv ciBvdGhlciBpbmRleGVzIChlLmcuIGJ0cmVlKSB3ZQorCQkgKiBoYXZlIHRvIHJlYWQgdGhl IHdob2xlIGluZGV4IGFuZCBidWlsZCBhIGJpdG1hcCBpbiBvcmRlciB0byBoYXZlCisJCSAq IGEgYml0bWFwIGZvciBhbnkgcmFuZ2UuIEFsdGhvdWdoLCBpZiB0aGUgY29uZGl0aW9uIGlz IHZlcnkKKwkJICogc2VsZWN0aXZlLCB3ZSBtYXkgbmVlZCB0byByZWFkIG9ubHkgYSBzbWFs bCBmcmFjdGlvbiBvZiB0aGUKKwkJICogaW5kZXgsIHNvIG1heWJlIHRoYXQncyBPSy4KKwkJ ICovCisJCWlmIChxdWFsID09IE5VTEwgfHwgRXhlY1F1YWwocXVhbCwgZWNvbnRleHQpKQor CQl7CisJCQlpbnQJCWNtcCA9IDA7CS8qIG1hdHRlcnMgZm9yIGNoZWNrX3dhdGVybWFyaz1m YWxzZSAqLworCQkJRGF0dW0JdmFsdWU7CisJCQlib29sCWlzbnVsbDsKKwkJCVR1cGxlVGFi bGVTbG90ICp0bXBzbG90OworCisJCQlpZiAocHJvakluZm8pCisJCQkJdG1wc2xvdCA9IEV4 ZWNQcm9qZWN0KHByb2pJbmZvKTsKKwkJCWVsc2UKKwkJCQl0bXBzbG90ID0gc2xvdDsKKwor CQkJdmFsdWUgPSBzbG90X2dldGF0dHIodG1wc2xvdCwgcGxhbi0+c29ydENvbElkeFswXSwg JmlzbnVsbCk7CisKKwkJCS8qCisJCQkgKiBIYW5kbGUgTlVMTCB2YWx1ZXMgLSBzdGFzaCB0 aGVtIGludG8gdGhlIHR1cGxlc3RvcmUsIGFuZCB0aGVuCisJCQkgKiB3ZSdsbCBvdXRwdXQg dGhlbSBpbiAicHJvY2VzcyIgc3RhZ2UuCisJCQkgKgorCQkJICogWFhYIENhbiB3ZSBiZSBh IGJpdCBzbWFydGVyIGZvciBMSU1JVCBxdWVyaWVzIGFuZCBzdG9wIHJlYWRpbmcKKwkJCSAq IHJvd3Mgb25jZSB3ZSBnZXQgdGhlIG51bWJlciB3ZSBuZWVkIHRvIHByb2R1Y2U/IFByb2Jh Ymx5IG5vdCwKKwkJCSAqIGJlY2F1c2UgdGhlIG9yZGVyaW5nIG1heSByZWZlcmVuY2Ugb3Ro ZXIgY29sdW1ucyAod2hpY2ggd2UgbWF5CisJCQkgKiBzYXRpc2Z5IHRocm91Z2ggSW5jcmVt ZW50YWxTb3J0KS4gQnV0IGFsbCBOVUxMIGNvbHVtbnMgYXJlCisJCQkgKiBjb25zaWRlcmVk IGVxdWFsLCBzbyB3ZSBuZWVkIGFsbCB0aGUgcm93cyB0byBwcm9wZXJseSBjb21wYXJlCisJ CQkgKiB0aGUgb3RoZXIga2V5cy4KKwkJCSAqLworCQkJaWYgKG51bGxfcHJvY2Vzc2luZykK KwkJCXsKKwkJCQkvKiBTdGFzaCBpdCB0byB0aGUgdHVwbGVzdG9yZSAod2hlbiBOVUxMLCBv ciBpZ25vcmUKKwkJCQkgKiBpdCAod2hlbiBub3QtTlVMTCkuICovCisJCQkJaWYgKGlzbnVs bCkKKwkJCQkJdHVwbGVzdG9yZV9wdXR0dXBsZXNsb3Qobm9kZS0+YnNfdHVwbGVzdG9yZSwg dG1wc2xvdCk7CisKKwkJCQkvKiBOVUxMIG9yIG5vdCwgd2UncmUgZG9uZSAqLworCQkJCWNv bnRpbnVlOworCQkJfQorCisJCQkvKiB3ZSdyZSBub3QgcHJvY2Vzc2luZyBOVUxMIHZhbHVl cywgc28gaWdub3JlIE5VTExzICovCisJCQlpZiAoaXNudWxsKQorCQkJCWNvbnRpbnVlOwor CisJCQkvKgorCQkJICogT3RoZXJ3aXNlIGNvbXBhcmUgdG8gd2F0ZXJtYXJrLCBhbmQgc3Rh c2ggaXQgZWl0aGVyIHRvIHRoZQorCQkJICogdHVwbGVzb3J0IG9yIHR1cGxlc3RvcmUuCisJ CQkgKi8KKwkJCWlmIChjaGVja193YXRlcm1hcmsgJiYgbm9kZS0+YnNfd2F0ZXJtYXJrX3Nl dCAmJiAhbm9kZS0+YnNfd2F0ZXJtYXJrX2VtcHR5KQorCQkJCWNtcCA9IEFwcGx5U29ydENv bXBhcmF0b3IodmFsdWUsIGZhbHNlLAorCQkJCQkJCQkJCSAgbm9kZS0+YnNfd2F0ZXJtYXJr LCBmYWxzZSwKKwkJCQkJCQkJCQkgICZub2RlLT5ic19zb3J0c3VwcG9ydCk7CisKKwkJCWlm IChjbXAgPD0gMCkKKwkJCQl0dXBsZXNvcnRfcHV0dHVwbGVzbG90KG5vZGUtPmJzX3R1cGxl c29ydHN0YXRlLCB0bXBzbG90KTsKKwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFhY WCBXZSBjYW4gYmUgYSBiaXQgc21hcnRlciBmb3IgTElNSVQgcXVlcmllcyAtIG9uY2Ugd2UK KwkJCQkgKiBrbm93IHdlIGhhdmUgbW9yZSByb3dzIGluIHRoZSB0dXBsZXNvcnQgdGhhbiB3 ZSBuZWVkIHRvCisJCQkJICogb3V0cHV0LCB3ZSBjYW4gc3RvcCBzcGlsbGluZyAtIHRob3Nl IHJvd3MgYXJlIG5vdCBnb2luZworCQkJCSAqIHRvIGJlIG5lZWRlZC4gV2UgY2FuIGRpc2Nh cmQgdGhlIHR1cGxlc29ydCAobm8gbmVlZCB0bworCQkJCSAqIHJlc3BpbGwpIGFuZCBzdG9w IHNwaWxsaW5nLgorCQkJCSAqLworCQkJCXR1cGxlc3RvcmVfcHV0dHVwbGVzbG90KG5vZGUt PmJzX3R1cGxlc3RvcmUsIHRtcHNsb3QpOworCQkJfQorCQl9CisKKwkJRXhlY0NsZWFyVHVw bGUoc2xvdCk7CisJfQorCisJRXhlY0NsZWFyVHVwbGUoc2xvdCk7CisKKwlicmluc29ydF9l bmRfdGlkc2Nhbihub2RlKTsKK30KKworLyoKKyAqIGJyaW5zb3J0X2xvYWRfc3BpbGxfdHVw bGVzCisgKgkJTG9hZCB0dXBsZXMgZnJvbSB0aGUgc3BpbGwgdHVwbGVzdG9yZSwgYW5kIGVp dGhlciBzdGFzaCB0aGVtIGludG8KKyAqCQlhIHR1cGxlc29ydCBvciBhIG5ldyB0dXBsZXN0 b3JlLgorICoKKyAqIEFmdGVyIHByb2Nlc3NpbmcgdGhlIGxhc3QgcmFuZ2UsIHdlIHdhbnQg dG8gcHJvY2VzcyBhbGwgcmVtYWluaW5nIHJhbmdlcywKKyAqIHNvIHdpdGggY2hlY2tfd2F0 ZXJtYXJrPWZhbHNlIHdlIHNraXAgdGhlIGNoZWNrLgorICovCitzdGF0aWMgdm9pZAorYnJp bnNvcnRfbG9hZF9zcGlsbF90dXBsZXMoQnJpblNvcnRTdGF0ZSAqbm9kZSwgYm9vbCBjaGVj a193YXRlcm1hcmspCit7CisJQnJpblNvcnQgICAqcGxhbiA9IChCcmluU29ydCAqKSBub2Rl LT5zcy5wcy5wbGFuOworCVR1cGxlc3RvcmVzdGF0ZSAqdHVwc3RvcmU7CisJVHVwbGVUYWJs ZVNsb3QgKnNsb3Q7CisJUHJvamVjdGlvbkluZm8gKnByb2pJbmZvOworCisJcHJvakluZm8g PSBub2RlLT5ic19Qcm9qSW5mbzsKKworCWlmIChub2RlLT5ic190dXBsZXN0b3JlID09IE5V TEwpCisJCXJldHVybjsKKworCS8qIHN0YXJ0IHNjYW5uaW5nIHRoZSBleGlzdGluZyB0dXBs ZXN0b3JlIChYWFggbmVlZGVkPykgKi8KKwl0dXBsZXN0b3JlX3Jlc2Nhbihub2RlLT5ic190 dXBsZXN0b3JlKTsKKworCS8qCisJICogQ3JlYXRlIGEgbmV3IHR1cGxlc3RvcmUsIGZvciB0 dXBsZXMgdGhhdCBleGNlZWQgdGhlIHdhdGVybWFyayBhbmQgc28KKwkgKiBzaG91bGQgbm90 IGJlIGluY2x1ZGVkIGluIHRoZSBjdXJyZW50IHNvcnQuCisJICovCisJdHVwc3RvcmUgPSB0 dXBsZXN0b3JlX2JlZ2luX2hlYXAoZmFsc2UsIGZhbHNlLCB3b3JrX21lbSk7CisKKwkvKgor CSAqIFdlIG5lZWQgYSBzbG90IGZvciBtaW5pbWFsIHR1cGxlcy4gVGhlIHNjYW4gc2xvdCB1 c2VzIGJ1ZmZlcmVkIHR1cGxlcywKKwkgKiBzbyBpdCdkIHRyaWdnZXIgYW4gZXJyb3IgaW4g dGhlIGxvb3AuCisJICovCisJaWYgKHByb2pJbmZvKQorCQlzbG90ID0gbm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90OworCWVsc2UKKwlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFi bGVTbG90KFJlbGF0aW9uR2V0RGVzY3Iobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uKSwK KwkJCQkJCQkJCSZUVFNPcHNNaW5pbWFsVHVwbGUpOworCisJd2hpbGUgKHR1cGxlc3RvcmVf Z2V0dHVwbGVzbG90KG5vZGUtPmJzX3R1cGxlc3RvcmUsIHRydWUsIHRydWUsIHNsb3QpKQor CXsKKwkJaW50CQljbXAgPSAwOwkvKiBtYXR0ZXJzIGZvciBjaGVja193YXRlcm1hcms9ZmFs c2UgKi8KKwkJYm9vbAlpc251bGw7CisJCURhdHVtCXZhbHVlOworCisJCXZhbHVlID0gc2xv dF9nZXRhdHRyKHNsb3QsIHBsYW4tPnNvcnRDb2xJZHhbMF0sICZpc251bGwpOworCisJCS8q IFdlIHNob3VsZG4ndCBoYXZlIE5VTEwgdmFsdWVzIGluIHRoZSBzcGlsbCwgYXQgbGVhc3Qg bm90IG5vdy4gKi8KKwkJQXNzZXJ0KCFpc251bGwpOworCisJCWlmIChjaGVja193YXRlcm1h cmsgJiYgbm9kZS0+YnNfd2F0ZXJtYXJrX3NldCAmJiAhbm9kZS0+YnNfd2F0ZXJtYXJrX2Vt cHR5KQorCQkJY21wID0gQXBwbHlTb3J0Q29tcGFyYXRvcih2YWx1ZSwgZmFsc2UsCisJCQkJ CQkJCQkgIG5vZGUtPmJzX3dhdGVybWFyaywgZmFsc2UsCisJCQkJCQkJCQkgICZub2RlLT5i c19zb3J0c3VwcG9ydCk7CisKKwkJaWYgKGNtcCA8PSAwKQorCQkJdHVwbGVzb3J0X3B1dHR1 cGxlc2xvdChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSwgc2xvdCk7CisJCWVsc2UKKwkJewor CQkJLyoKKwkJCSAqIFhYWCBXZSBjYW4gYmUgYSBiaXQgc21hcnRlciBmb3IgTElNSVQgcXVl cmllcyAtIG9uY2Ugd2UKKwkJCSAqIGtub3cgd2UgaGF2ZSBtb3JlIHJvd3MgaW4gdGhlIHR1 cGxlc29ydCB0aGFuIHdlIG5lZWQgdG8KKwkJCSAqIG91dHB1dCwgd2UgY2FuIHN0b3Agc3Bp bGxpbmcgLSB0aG9zZSByb3dzIGFyZSBub3QgZ29pbmcKKwkJCSAqIHRvIGJlIG5lZWRlZC4g V2UgY2FuIGRpc2NhcmQgdGhlIHR1cGxlc29ydCAobm8gbmVlZCB0bworCQkJICogcmVzcGls bCkgYW5kIHN0b3Agc3BpbGxpbmcuCisJCQkgKi8KKwkJCXR1cGxlc3RvcmVfcHV0dHVwbGVz bG90KHR1cHN0b3JlLCBzbG90KTsKKwkJfQorCX0KKworCS8qCisJICogRGlzY2FyZCB0aGUg ZXhpc3RpbmcgdHVwbGVzdG9yZSAodGhhdCB3ZSBqdXN0IHByb2Nlc3NlZCksIHVzZSB0aGUg bmV3CisJICogb25lIGluc3RlYWQuCisJICovCisJdHVwbGVzdG9yZV9lbmQobm9kZS0+YnNf dHVwbGVzdG9yZSk7CisJbm9kZS0+YnNfdHVwbGVzdG9yZSA9IHR1cHN0b3JlOworCisJaWYg KCFwcm9qSW5mbykKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKK30K Kworc3RhdGljIGJvb2wKK2JyaW5zb3J0X25leHRfcmFuZ2UoQnJpblNvcnRTdGF0ZSAqbm9k ZSwgYm9vbCBhc2MpCit7CisJLyogRklYTUUgZnJlZSB0aGUgY3VycmVudCBic19yYW5nZSwg aWYgYW55ICovCisJbm9kZS0+YnNfcmFuZ2UgPSBOVUxMOworCisJLyoKKwkgKiBNYXJrIHRo ZSBwb3NpdGlvbiwgc28gdGhhdCB3ZSBjYW4gcmVzdG9yZSBpdCBpbiBjYXNlIHdlIHJlYWNo IHRoZQorCSAqIGN1cnJlbnQgd2F0ZXJtYXJrLgorCSAqLworCXR1cGxlc29ydF9tYXJrcG9z KG5vZGUtPmJzX3NjYW4tPnJhbmdlcyk7CisKKwkvKgorCSAqIEdldCB0aGUgbmV4dCByYW5n ZSBhbmQgcmV0dXJuIGl0LCB1bmxlc3Mgd2UgY2FuIHByb3ZlIGl0J3MgdGhlIGxhc3QKKwkg KiByYW5nZSB0aGF0IGNhbiBwb3NzaWJseSBtYXRjaCB0aGUgY3VycmVudCBjb25kaXRvbiAo dGhhbmtzIHRvIGhvdyB3ZQorCSAqIG9yZGVyIHRoZSByYW5nZXMpLgorCSAqCisJICogQWxz byBza2lwIHJhbmdlcyB0aGF0IGNhbid0IHBvc3NpYmx5IG1hdGNoIChlLmcuIGJlY2F1c2Ug d2UgYXJlIGluCisJICogTlVMTCBwcm9jZXNzaW5nLCBhbmQgdGhlIHJhbmdlIGhhcyBubyBO VUxMcykuCisJICovCisJd2hpbGUgKHR1cGxlc29ydF9nZXR0dXBsZXNsb3Qobm9kZS0+YnNf c2Nhbi0+cmFuZ2VzLCB0cnVlLCBmYWxzZSwgbm9kZS0+YnNfc2Nhbi0+c2xvdCwgTlVMTCkp CisJeworCQlib29sCQlpc251bGw7CisJCURhdHVtCQl2YWx1ZTsKKworCQlCcmluUmFuZ2Ug ICpyYW5nZSA9IChCcmluUmFuZ2UgKikgcGFsbG9jKHNpemVvZihCcmluUmFuZ2UpKTsKKwor CQlyYW5nZS0+Ymxrbm9fc3RhcnQgPSBEYXR1bUdldFVJbnQzMihzbG90X2dldGF0dHIobm9k ZS0+YnNfc2Nhbi0+c2xvdCwgMSwgJmlzbnVsbCkpOworCQlyYW5nZS0+Ymxrbm9fZW5kID0g RGF0dW1HZXRVSW50MzIoc2xvdF9nZXRhdHRyKG5vZGUtPmJzX3NjYW4tPnNsb3QsIDIsICZp c251bGwpKTsKKwkJcmFuZ2UtPmhhc19udWxscyA9IERhdHVtR2V0Qm9vbChzbG90X2dldGF0 dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgMywgJmlzbnVsbCkpOworCQlyYW5nZS0+YWxsX251 bGxzID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihub2RlLT5ic19zY2FuLT5zbG90LCA0 LCAmaXNudWxsKSk7CisJCXJhbmdlLT5ub3Rfc3VtbWFyaXplZCA9IERhdHVtR2V0Qm9vbChz bG90X2dldGF0dHIobm9kZS0+YnNfc2Nhbi0+c2xvdCwgNSwgJmlzbnVsbCkpOworCQlyYW5n ZS0+bWluX3ZhbHVlID0gc2xvdF9nZXRhdHRyKG5vZGUtPmJzX3NjYW4tPnNsb3QsIDYsICZp c251bGwpOworCQlyYW5nZS0+bWF4X3ZhbHVlID0gc2xvdF9nZXRhdHRyKG5vZGUtPmJzX3Nj YW4tPnNsb3QsIDcsICZpc251bGwpOworCisJCS8qCisJCSAqIE5vdC1zdW1tYXJpemVkIHJh bmdlcyBtYXRjaCBpcnJlc3BlY3RlZGx5IG9mIHRoZSB3YXRlcm1hcmsgKGlmCisJCSAqIGl0 J3Mgc2V0IGF0IGFsbCkuCisJCSAqLworCQlpZiAocmFuZ2UtPm5vdF9zdW1tYXJpemVkKQor CQl7CisJCQlub2RlLT5ic19yYW5nZSA9IHJhbmdlOworCQkJcmV0dXJuIHRydWU7CisJCX0K KworCQkvKgorCQkgKiBUaGUgcmFuZ2UgaXMgc3VtbWFyaXplZCwgYnV0IG1heWJlIHRoZSB3 YXRlcm1hcmsgaXMgbm90PyBUaGF0CisJCSAqIHdvdWxkIG1lYW4gd2UncmUgcHJvY2Vzc2lu ZyBOVUxMIHZhbHVlcywgc28gd2Ugc2tpcCByYW5nZXMgdGhhdAorCQkgKiBjYW4ndCBwb3Nz aWJseSBtYXRjaCAoaS5lLiB3aXRoIGFsbF9udWxscz1oYXNfbnVsbHM9ZmFsc2UpLgorCQkg Ki8KKwkJaWYgKCFub2RlLT5ic193YXRlcm1hcmtfc2V0KQorCQl7CisJCQlpZiAocmFuZ2Ut PmFsbF9udWxscyB8fCByYW5nZS0+aGFzX251bGxzKQorCQkJeworCQkJCW5vZGUtPmJzX3Jh bmdlID0gcmFuZ2U7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisKKwkJCS8qIHVwZGF0ZSB0 aGUgcG9zaXRpb24gYW5kIHRyeSB0aGUgbmV4dCByYW5nZSAqLworCQkJdHVwbGVzb3J0X21h cmtwb3Mobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzKTsKKwkJCXBmcmVlKHJhbmdlKTsKKworCQkJ Y29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBXYXRlcm1hcmsgaXMgc2V0LCBidXQgaXQn cyBlbXB0eSAtIGV2ZXJ5dGhpbmcgbWF0Y2hlcyAoZXhjZXB0CisJCSAqIGZvciBOVUxMLW9u bHkgcmFuZ2VzLCBiZWNhdXNlIHdlJ3JlIGRlZmluaXRlbHkgbm90IHByb2Nlc3NpbmcKKwkJ ICogTlVMTFMsIGJlY2F1c2UgdGhlbiB3ZSB3b3VsZG4ndCBoYXZlIHdhdGVybWFyayBzZXQp LgorCQkgKi8KKwkJaWYgKG5vZGUtPmJzX3dhdGVybWFya19lbXB0eSkKKwkJeworCQkJbm9k ZS0+YnNfcmFuZ2UgPSByYW5nZTsKKwkJCXJldHVybiB0cnVlOworCQl9CisKKwkJLyoKKwkJ ICogU28gbm93IHdlIGhhdmUgYSBzdW1tYXJpemVkIHJhbmdlLCBhbmQgd2Uga25vdyB0aGUg d2F0ZXJtYXJrCisJCSAqIGlzIHNldCB0b28gKHNvIHdlJ3JlIG5vdCBwcm9jZXNzaW5nIE5V TExzKS4gV2UgcGxhY2UgdGhlIHJhbmdlcworCQkgKiB3aXRoIG9ubHkgbnVsbHMgbGFzdCwg c28gb25jZSB3ZSBoaXQgb25lIHdlJ3JlIGRvbmUuCisJCSAqLworCQlpZiAocmFuZ2UtPmFs bF9udWxscykKKwkJeworCQkJcGZyZWUocmFuZ2UpOworCQkJcmV0dXJuIGZhbHNlOwkvKiBu byBtb3JlIG1hdGNoaW5nIHJhbmdlcyAqLworCQl9CisKKwkJLyoKKwkJICogQ29tcGFyZSB0 aGUgcmFuZ2UgdG8gdGhlIHdhdGVybWFyaywgdXNpbmcgZWl0aGVyIHRoZSBtaW52YWwgb3IK KwkJICogbWF4dmFsLCBkZXBlbmRpbmcgb24gQVNDL0RFU0Mgb3JkZXJpbmcuIElmIHRoZSBy YW5nZSBwcmVjZWRlcyB0aGUKKwkJICogd2F0ZXJtYXJrLCByZXR1cm4gaXQuIE90aGVyd2lz ZSBhYm9ydCwgYWxsIHRoZSBmdXR1cmUgcmFuZ2VzIGFyZQorCQkgKiBlaXRoZXIgbm90IG1h dGNoaW5nIHRoZSB3YXRlcm1hcmsgKHRoYW5rcyB0byBvcmRlcmluZykgb3IgY29udGFpbgor CQkgKiBvbmx5IE5VTEwgdmFsdWVzLgorCQkgKi8KKworCQkvKiB1c2UgbWludmFsIG9yIG1h eHZhbCwgZGVwZW5kaW5nIG9uIEFTQyAvIERFU0MgKi8KKwkJdmFsdWUgPSAoYXNjKSA/IHJh bmdlLT5taW5fdmFsdWUgOiByYW5nZS0+bWF4X3ZhbHVlOworCisJCS8qCisJCSAqIGNvbXBh cmUgaXQgdG8gdGhlIGN1cnJlbnQgd2F0ZXJtYXJrIChpZiBzZXQpCisJCSAqCisJCSAqIFhY WCBXZSBkb24ndCB1c2UgKC4uLiA8PSAwKSBoZXJlLCBiZWNhdXNlIHRoZW4gd2UnZCBsb2Fk IHJhbmdlcworCQkgKiB3aXRoIHRoYXQgbWludmFsIChhbmQgdGhlcmUgbWlnaHQgYmUgbXVs dGlwbGUpLCBidXQgbW9zdCBvZiB0aGUKKwkJICogcm93cyB3b3VsZCBnbyBpbnRvIHRoZSB0 dXBsZXN0b3JlLCBiZWNhdXNlIG9ubHkgcm93cyBtYXRjaGluZyB0aGUKKwkJICogbWludmFs IGV4YWN0bHkgd291bGQgYmUgbG9hZGVkIGludG8gdHVwbGVzb3J0LgorCQkgKi8KKwkJaWYg KEFwcGx5U29ydENvbXBhcmF0b3IodmFsdWUsIGZhbHNlLAorCQkJCQkJCQkgbm9kZS0+YnNf d2F0ZXJtYXJrLCBmYWxzZSwKKwkJCQkJCQkJICZub2RlLT5ic19zb3J0c3VwcG9ydCkgPCAw KQorCQl7CisJCQlub2RlLT5ic19yYW5nZSA9IHJhbmdlOworCQkJcmV0dXJuIHRydWU7CisJ CX0KKworCQlwZnJlZShyYW5nZSk7CisJCWJyZWFrOworCX0KKworCS8qIG5vdCBhIG1hdGNo aW5nIHJhbmdlLCB3ZSdyZSBkb25lICovCisJdHVwbGVzb3J0X3Jlc3RvcmVwb3Mobm9kZS0+ YnNfc2Nhbi0+cmFuZ2VzKTsKKworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wK K2JyaW5zb3J0X3JhbmdlX3dpdGhfbnVsbHMoQnJpblNvcnRTdGF0ZSAqbm9kZSkKK3sKKwlC cmluUmFuZ2UgKnJhbmdlID0gbm9kZS0+YnNfcmFuZ2U7CisKKwlpZiAocmFuZ2UtPmFsbF9u dWxscyB8fCByYW5nZS0+aGFzX251bGxzIHx8IHJhbmdlLT5ub3Rfc3VtbWFyaXplZCkKKwkJ cmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkCiticmlu c29ydF9yZXNjYW4oQnJpblNvcnRTdGF0ZSAqbm9kZSkKK3sKKwl0dXBsZXNvcnRfcmVzY2Fu KG5vZGUtPmJzX3NjYW4tPnJhbmdlcyk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlJbmRl eE5leHQKKyAqCisgKgkJUmV0cmlldmUgYSB0dXBsZSBmcm9tIHRoZSBCcmluU29ydCBub2Rl J3MgY3VycmVudFJlbGF0aW9uCisgKgkJdXNpbmcgdGhlIGluZGV4IHNwZWNpZmllZCBpbiB0 aGUgQnJpblNvcnRTdGF0ZSBpbmZvcm1hdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3Rh dGljIFR1cGxlVGFibGVTbG90ICoKK0luZGV4TmV4dChCcmluU29ydFN0YXRlICpub2RlKQor eworCUJyaW5Tb3J0ICAgKnBsYW4gPSAoQnJpblNvcnQgKikgbm9kZS0+c3MucHMucGxhbjsK KwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbjsKKwlJbmRl eFNjYW5EZXNjIHNjYW5kZXNjOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCWJvb2wJCW51 bGxzRmlyc3Q7CisJYm9vbAkJYXNjOworCisJLyoKKwkgKiBleHRyYWN0IG5lY2Vzc2FyeSBp bmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQorCSAqLworCWVzdGF0ZSA9IG5vZGUt PnNzLnBzLnN0YXRlOworCWRpcmVjdGlvbiA9IGVzdGF0ZS0+ZXNfZGlyZWN0aW9uOworCisJ LyogZmxpcCBkaXJlY3Rpb24gaWYgdGhpcyBpcyBhbiBvdmVyYWxsIGJhY2t3YXJkIHNjYW4g Ki8KKwkvKiBYWFggRm9yIEJSSU4gaW5kZXhlcyB0aGlzIGlzIGFsd2F5cyBmb3J3YXJkIGRp cmVjdGlvbiAqLworCS8vIGlmIChTY2FuRGlyZWN0aW9uSXNCYWNrd2FyZCgoKEJyaW5Tb3J0 ICopIG5vZGUtPnNzLnBzLnBsYW4pLT5pbmRleG9yZGVyZGlyKSkKKwlpZiAoZmFsc2UpCisJ eworCQlpZiAoU2NhbkRpcmVjdGlvbklzRm9yd2FyZChkaXJlY3Rpb24pKQorCQkJZGlyZWN0 aW9uID0gQmFja3dhcmRTY2FuRGlyZWN0aW9uOworCQllbHNlIGlmIChTY2FuRGlyZWN0aW9u SXNCYWNrd2FyZChkaXJlY3Rpb24pKQorCQkJZGlyZWN0aW9uID0gRm9yd2FyZFNjYW5EaXJl Y3Rpb247CisJfQorCXNjYW5kZXNjID0gbm9kZS0+aXNzX1NjYW5EZXNjOworCXNsb3QgPSBu b2RlLT5zcy5zc19TY2FuVHVwbGVTbG90OworCisJbnVsbHNGaXJzdCA9IHBsYW4tPm51bGxz Rmlyc3RbMF07CisJYXNjID0gU2NhbkRpcmVjdGlvbklzRm9yd2FyZChwbGFuLT5pbmRleG9y ZGVyZGlyKTsKKworCWlmIChzY2FuZGVzYyA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogV2Ug cmVhY2ggaGVyZSBpZiB0aGUgaW5kZXggc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdl J3JlCisJCSAqIHNlcmlhbGx5IGV4ZWN1dGluZyBhbiBpbmRleCBzY2FuIHRoYXQgd2FzIHBs YW5uZWQgdG8gYmUgcGFyYWxsZWwuCisJCSAqLworCQlzY2FuZGVzYyA9IGluZGV4X2JlZ2lu c2Nhbihub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCisJCQkJCQkJCSAgIG5vZGUtPmlz c19SZWxhdGlvbkRlc2MsCisJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJ CQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJCQkJICAgbm9kZS0+aXNzX051 bU9yZGVyQnlLZXlzKTsKKworCQlub2RlLT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKKwor CQkvKgorCQkgKiBJZiBubyBydW4tdGltZSBrZXlzIHRvIGNhbGN1bGF0ZSBvciB0aGV5IGFy ZSByZWFkeSwgZ28gYWhlYWQgYW5kCisJCSAqIHBhc3MgdGhlIHNjYW5rZXlzIHRvIHRoZSBp bmRleCBBTS4KKwkJICovCisJCWlmIChub2RlLT5pc3NfTnVtUnVudGltZUtleXMgPT0gMCB8 fCBub2RlLT5pc3NfUnVudGltZUtleXNSZWFkeSkKKwkJCWluZGV4X3Jlc2NhbihzY2FuZGVz YywKKwkJCQkJCSBub2RlLT5pc3NfU2NhbktleXMsIG5vZGUtPmlzc19OdW1TY2FuS2V5cywK KwkJCQkJCSBub2RlLT5pc3NfT3JkZXJCeUtleXMsIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5 cyk7CisKKwkJLyoKKwkJICogTG9hZCBpbmZvIGFib3V0IEJSSU4gcmFuZ2VzLCBzb3J0IHRo ZW0gdG8gbWF0Y2ggdGhlIGRlc2lyZWQgb3JkZXJpbmcuCisJCSAqLworCQlFeGVjSW5pdEJy aW5Tb3J0UmFuZ2VzKHBsYW4sIG5vZGUpOworCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JU X1NUQVJUOworCX0KKworCS8qCisJICogb2ssIG5vdyB0aGF0IHdlIGhhdmUgd2hhdCB3ZSBu ZWVkLCBmZXRjaCB0aGUgbmV4dCB0dXBsZS4KKwkgKi8KKwl3aGlsZSAobm9kZS0+YnNfcGhh c2UgIT0gQlJJTlNPUlRfRklOSVNIRUQpCisJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCisJCWVsb2coREVCVUcxLCAicGhhc2UgPSAlZCIsIG5vZGUtPmJzX3BoYXNlKTsKKwor CQlBc3NlcnRDaGVja1Jhbmdlcyhub2RlKTsKKworCQlzd2l0Y2ggKG5vZGUtPmJzX3BoYXNl KQorCQl7CisJCQljYXNlIEJSSU5TT1JUX1NUQVJUOgorCisJCQkJZWxvZyhERUJVRzEsICJw aGFzZSA9IFNUQVJUIik7CisKKwkJCQkvKgorCQkJCSAqIElmIHdlIGhhdmUgTlVMTFMgRklS U1QsIG1vdmUgdG8gdGhhdCBzdGFnZS4gT3RoZXJ3aXNlCisJCQkJICogc3RhcnQgc2Nhbm5p bmcgcmVndWxhciByYW5nZXMuCisJCQkJICovCisJCQkJaWYgKG51bGxzRmlyc3QpCisJCQkJ CW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9OVUxMUzsKKwkJCQllbHNlCisJCQkJ eworCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfUkFOR0U7CisKKwkJCQkJ Lyogc2V0IHRoZSBmaXJzdCB3YXRlcm1hcmsgKi8KKwkJCQkJYnJpbnNvcnRfdXBkYXRlX3dh dGVybWFyayhub2RlLCBhc2MpOworCQkJCX0KKworCQkJCWJyZWFrOworCisJCQljYXNlIEJS SU5TT1JUX0xPQURfUkFOR0U6CisJCQkJeworCQkJCQllbG9nKERFQlVHMSwgInBoYXNlID0g TE9BRF9SQU5HRSIpOworCisJCQkJCS8qCisJCQkJCSAqIExvYWQgdHVwbGVzIG1hdGNoaW5n IHRoZSBuZXcgd2F0ZXJtYXJrIGZyb20gdGhlIGV4aXN0aW5nCisJCQkJCSAqIHNwaWxsIHR1 cGxlc3RvcmUuIFdlIGRvIHRoaXMgYmVmb3JlIGxvYWRpbmcgdHVwbGVzIGZyb20KKwkJCQkJ ICogdGhlIG5leHQgY2h1bmsgb2YgcmFuZ2VzLCBiZWNhdXNlIHRob3NlIHdpbGwgYWRkIHR1 cGxlcworCQkJCQkgKiB0byB0aGUgc3BpbGwsIGFuZCB3ZSdkIGVuZCB1cCBwcm9jZXNzaW5n IHRob3NlIHR3aWNlLgorCQkJCQkgKi8KKwkJCQkJYnJpbnNvcnRfbG9hZF9zcGlsbF90dXBs ZXMobm9kZSwgdHJ1ZSk7CisKKwkJCQkJLyoKKwkJCQkJICogTG9hZCB0dXBsZXMgZnJvbSBy YW5nZXMsIHVudGlsIHdlIGZpbmQgYSByYW5nZSB0aGF0IGhhcworCQkJCQkgKiBtaW5fdmFs dWUgPj0gd2F0ZXJtYXJrLgorCQkJCQkgKgorCQkJCQkgKiBYWFggSW4gZmFjdCwgd2UgYXJl IGd1YXJhbnRlZWQgdG8gZmluZCBhbiBleGFjdCBtYXRjaAorCQkJCQkgKiBmb3IgdGhlIHdh dGVybWFyaywgYmVjYXVzZSBvZiBob3cgd2UgcGljayB0aGUgd2F0ZXJtYXJrLgorCQkJCQkg Ki8KKwkJCQkJd2hpbGUgKGJyaW5zb3J0X25leHRfcmFuZ2Uobm9kZSwgYXNjKSkKKwkJCQkJ CWJyaW5zb3J0X2xvYWRfdHVwbGVzKG5vZGUsIHRydWUsIGZhbHNlKTsKKworCQkJCQkvKgor CQkJCQkgKiBJZiB3ZSBoYXZlIGxvYWRlZCBhbnkgdHVwbGVzIGludG8gdGhlIHR1cGxlc29y dCwgdHJ5CisJCQkJCSAqIHNvcnRpbmcgaXQgYW5kIG1vdmUgdG8gcHJvZHVjaW5nIHRoZSB0 dXBsZXMuCisJCQkJCSAqCisJCQkJCSAqIFhYWCBUaGUgcmFuZ2UgbWlnaHQgaGF2ZSBubyBy b3dzIG1hdGNoaW5nIHRoZSBjdXJyZW50CisJCQkJCSAqIHdhdGVybWFyaywgaW4gd2hpY2gg Y2FzZSB0aGUgdHVwbGVzb3J0IGlzIGVtcHR5LgorCQkJCQkgKi8KKwkJCQkJaWYgKG5vZGUt PmJzX3R1cGxlc29ydHN0YXRlKQorCQkJCQl7CisjaWZkZWYgREVCVUdfQlJJTl9TT1JUCisJ CQkJCQl0dXBsZXNvcnRfcmVzZXRfc3RhdHMobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUpOwor I2VuZGlmCisKKwkJCQkJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChub2RlLT5ic190dXBsZXNv cnRzdGF0ZSk7CisKKyNpZmRlZiBERUJVR19CUklOX1NPUlQKKwkJCQkJCWlmIChkZWJ1Z19i cmluX3NvcnQpCisJCQkJCQl7CisJCQkJCQkJVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uIHN0 YXRzOworCisJCQkJCQkJbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKFR1cGxlc29ydEluc3Ry dW1lbnRhdGlvbikpOworCQkJCQkJCXR1cGxlc29ydF9nZXRfc3RhdHMobm9kZS0+YnNfdHVw bGVzb3J0c3RhdGUsICZzdGF0cyk7CisKKwkJCQkJCQl0dXBsZXNvcnRfZ2V0X3N0YXRzKG5v ZGUtPmJzX3R1cGxlc29ydHN0YXRlLCAmc3RhdHMpOworCisJCQkJCQkJZWxvZyhXQVJOSU5H LCAibWV0aG9kOiAlcyAgc3BhY2U6ICVsZCBrQiAoJXMpIiwKKwkJCQkJCQkJIHR1cGxlc29y dF9tZXRob2RfbmFtZShzdGF0cy5zb3J0TWV0aG9kKSwKKwkJCQkJCQkJIHN0YXRzLnNwYWNl VXNlZCwKKwkJCQkJCQkJIHR1cGxlc29ydF9zcGFjZV90eXBlX25hbWUoc3RhdHMuc3BhY2VU eXBlKSk7CisJCQkJCQl9CisjZW5kaWYKKwkJCQkJfQorCisJCQkJCW5vZGUtPmJzX3BoYXNl ID0gQlJJTlNPUlRfUFJPQ0VTU19SQU5HRTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQlj YXNlIEJSSU5TT1JUX1BST0NFU1NfUkFOR0U6CisKKwkJCQllbG9nKERFQlVHMSwgInBoYXNl IEJSSU5TT1JUX1BST0NFU1NfUkFOR0UiKTsKKworCQkJCXNsb3QgPSBub2RlLT5zcy5wcy5w c19SZXN1bHRUdXBsZVNsb3Q7CisKKwkJCQkvKiByZWFkIHR1cGxlcyBmcm9tIHRoZSB0dXBs ZXNvcnQgcmFuZ2UsIGFuZCBvdXRwdXQgdGhlbSAqLworCQkJCWlmIChub2RlLT5ic190dXBs ZXNvcnRzdGF0ZSAhPSBOVUxMKQorCQkJCXsKKwkJCQkJaWYgKHR1cGxlc29ydF9nZXR0dXBs ZXNsb3Qobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUsCisJCQkJCQkJCQkJU2NhbkRpcmVjdGlv bklzRm9yd2FyZChkaXJlY3Rpb24pLAorCQkJCQkJCQkJCWZhbHNlLCBzbG90LCBOVUxMKSkK KwkJCQkJCXJldHVybiBzbG90OworCisJCQkJCS8qIG9uY2Ugd2UncmUgZG9uZSB3aXRoIHRo ZSB0dXBsZXNvcnQsIHJlc2V0IGl0ICovCisJCQkJCXR1cGxlc29ydF9yZXNldChub2RlLT5i c190dXBsZXNvcnRzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBOb3cgdGhhdCB3 ZSBwcm9jZXNzZWQgdHVwbGVzIGZyb20gdGhlIGxhc3QgcmFuZ2UgYmF0Y2gsCisJCQkJICog c2VlIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiBpZiB3ZSBzaG91bGQgdHJ5IHVwZGF0aW5n CisJCQkJICogdGhlIHdhdGVybWFyayBvbmNlIGFnYWluLiBJZiB0aGUgd2F0ZXJtYXJrIGlz IG5vdCBzZXQsCisJCQkJICogd2UndmUgYWxyZWFkeSBwcm9jZXNzZWQgdGhlIGxhc3QgcmFu Z2UuCisJCQkJICovCisJCQkJaWYgKG5vZGUtPmJzX3dhdGVybWFya19lbXB0eSkKKwkJCQl7 CisJCQkJCWlmIChudWxsc0ZpcnN0KQorCQkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09S VF9GSU5JU0hFRDsKKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQlicmluc29ydF9yZXNjYW4o bm9kZSk7CisJCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfTlVMTFM7CisJ CQkJCQlub2RlLT5ic193YXRlcm1hcmtfc2V0ID0gZmFsc2U7CisJCQkJCQlub2RlLT5ic193 YXRlcm1hcmtfZW1wdHkgPSBmYWxzZTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJ eworCQkJCQkvKiB1cGR0ZSB0aGUgd2F0ZXJtYXJrIGFuZCB0cnkgcmVhZGluZyBtb3JlIHJh bmdlcyAqLworCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURfUkFOR0U7CisJ CQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9kZSwgYXNjKTsKKwkJCQl9CisKKwkJ CQlicmVhazsKKworCQkJY2FzZSBCUklOU09SVF9MT0FEX05VTExTOgorCQkJCXsKKwkJCQkJ ZWxvZyhERUJVRzEsICJwaGFzZSA9IExPQURfTlVMTFMiKTsKKworCQkJCQkvKgorCQkJCQkg KiBUcnkgbG9hZGluZyBhbm90aGVyIHJhbmdlLiBJZiB0aGVyZSBhcmUgbm8gbW9yZSByYW5n ZXMsCisJCQkJCSAqIHdlJ3JlIGRvbmUgYW5kIHdlIG1vdmUgZWl0aGVyIHRvIGxvYWRpbmcg cmVndWxhciByYW5nZXMuCisJCQkJCSAqIE90aGVyd2lzZSBjaGVjayBpZiB0aGlzIHJhbmdl IGNhbiBjb250YWluIE5VTEwgdmFsdWVzLgorCQkJCQkgKiBJZiB5ZXMsIHByb2Nlc3MgdGhl IHJhbmdlLiBJZiBub3QsIHRyeSBsb2FkaW5nIGFub3RoZXIKKwkJCQkJICogb25lIGZyb20g dGhlIGxpc3QuCisJCQkJCSAqLworCQkJCQl3aGlsZSAodHJ1ZSkKKwkJCQkJeworCQkJCQkJ Lyogbm8gbW9yZSByYW5nZXMgLSB0ZXJtaW5hdGUgb3IgbG9hZCByZWd1bGFyIHJhbmdlcyAq LworCQkJCQkJaWYgKCFicmluc29ydF9uZXh0X3JhbmdlKG5vZGUsIGFzYykpCisJCQkJCQl7 CisJCQkJCQkJaWYgKG51bGxzRmlyc3QpCisJCQkJCQkJeworCQkJCQkJCQlicmluc29ydF9y ZXNjYW4obm9kZSk7CisJCQkJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9S QU5HRTsKKwkJCQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCBhc2MpOwor CQkJCQkJCX0KKwkJCQkJCQllbHNlCisJCQkJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNP UlRfRklOSVNIRUQ7CisKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKworCQkJCQkJLyogSWYg dGhpcyByYW5nZSAobWF5KSBoYXZlIG51bGxzLCBwcm9jZXMgdGhlbSAqLworCQkJCQkJaWYg KGJyaW5zb3J0X3JhbmdlX3dpdGhfbnVsbHMobm9kZSkpCisJCQkJCQkJYnJlYWs7CisJCQkJ CX0KKworCQkJCQlpZiAobm9kZS0+YnNfcmFuZ2UgPT0gTlVMTCkKKwkJCQkJCWJyZWFrOwor CisJCQkJCS8qCisJCQkJCSAqIFRoZXJlIHNob3VsZCBiZSBub3RoaW5nIGxlZnQgaW4gdGhl IHR1cGxlc3RvcmUsIGJlY2F1c2UKKwkJCQkJICogd2UgZmx1c2ggdGhhdCBhdCB0aGUgZW5k IG9mIHByb2Nlc3NpbmcgcmVndWxhciB0dXBsZXMsCisJCQkJCSAqIGFuZCB3ZSBkb24ndCBy ZXRhaW4gdHVwbGVzIGJldHdlZW4gTlVMTCByYW5nZXMuCisJCQkJCSAqLworCQkJCQkvLyBB c3NlcnQobm9kZS0+YnNfdHVwbGVzdG9yZSA9PSBOVUxMKTsKKworCQkJCQkvKgorCQkJCQkg KiBMb2FkIHRoZSBuZXh0IHVucHJvY2Vzc2VkIC8gTlVMTCByYW5nZS4gV2UgZG9uJ3QgbmVl ZCB0bworCQkJCQkgKiBjaGVjayB3YXRlcm1hcmsgd2hpbGUgcHJvY2Vzc2luZyBOVUxMUy4K KwkJCQkJICovCisJCQkJCWJyaW5zb3J0X2xvYWRfdHVwbGVzKG5vZGUsIGZhbHNlLCB0cnVl KTsKKworCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX1BST0NFU1NfTlVMTFM7CisJ CQkJCWJyZWFrOworCQkJCX0KKworCQkJCWJyZWFrOworCisJCQljYXNlIEJSSU5TT1JUX1BS T0NFU1NfTlVMTFM6CisKKwkJCQllbG9nKERFQlVHMSwgInBoYXNlID0gTE9BRF9OVUxMUyIp OworCisJCQkJc2xvdCA9IG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdDsKKworCQkJ CUFzc2VydChub2RlLT5ic190dXBsZXN0b3JlICE9IE5VTEwpOworCisJCQkJLyogcmVhZCB0 dXBsZXMgZnJvbSB0aGUgdHVwbGVzb3J0IHJhbmdlLCBhbmQgb3V0cHV0IHRoZW0gKi8KKwkJ CQlpZiAobm9kZS0+YnNfdHVwbGVzdG9yZSAhPSBOVUxMKQorCQkJCXsKKworCQkJCQl3aGls ZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3Qobm9kZS0+YnNfdHVwbGVzdG9yZSwgdHJ1ZSwg dHJ1ZSwgc2xvdCkpCisJCQkJCQlyZXR1cm4gc2xvdDsKKworCQkJCQl0dXBsZXN0b3JlX2Vu ZChub2RlLT5ic190dXBsZXN0b3JlKTsKKwkJCQkJbm9kZS0+YnNfdHVwbGVzdG9yZSA9IE5V TEw7CisKKwkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9MT0FEX05VTExTOwkvKiBs b2FkIG5leHQgcmFuZ2UgKi8KKwkJCQl9CisKKwkJCQlicmVhazsKKworCQkJY2FzZSBCUklO U09SVF9GSU5JU0hFRDoKKwkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBCcmluU29ydCBw aGFzZTogRklOSVNIRUQiKTsKKwkJCQlicmVhazsKKwkJfQorCX0KKworCS8qCisJICogaWYg d2UgZ2V0IGhlcmUgaXQgbWVhbnMgdGhlIGluZGV4IHNjYW4gZmFpbGVkIHNvIHdlIGFyZSBh dCB0aGUgZW5kIG9mCisJICogdGhlIHNjYW4uLgorCSAqLworCW5vZGUtPmlzc19SZWFjaGVk RW5kID0gdHJ1ZTsKKwlyZXR1cm4gRXhlY0NsZWFyVHVwbGUoc2xvdCk7Cit9CisKKy8qCisg KiBJbmRleFJlY2hlY2sgLS0gYWNjZXNzIG1ldGhvZCByb3V0aW5lIHRvIHJlY2hlY2sgYSB0 dXBsZSBpbiBFdmFsUGxhblF1YWwKKyAqLworc3RhdGljIGJvb2wKK0luZGV4UmVjaGVjayhC cmluU29ydFN0YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlFeHByQ29u dGV4dCAqZWNvbnRleHQ7CisKKwkvKgorCSAqIGV4dHJhY3QgbmVjZXNzYXJ5IGluZm9ybWF0 aW9uIGZyb20gaW5kZXggc2NhbiBub2RlCisJICovCisJZWNvbnRleHQgPSBub2RlLT5zcy5w cy5wc19FeHByQ29udGV4dDsKKworCS8qIERvZXMgdGhlIHR1cGxlIG1lZXQgdGhlIGluZGV4 cXVhbCBjb25kaXRpb24/ICovCisJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsK KwlyZXR1cm4gRXhlY1F1YWxBbmRSZXNldChub2RlLT5pbmRleHF1YWxvcmlnLCBlY29udGV4 dCk7Cit9CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNCcmluU29ydChub2RlKQorICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY0JyaW5Tb3J0 KFBsYW5TdGF0ZSAqcHN0YXRlKQoreworCUJyaW5Tb3J0U3RhdGUgKm5vZGUgPSBjYXN0Tm9k ZShCcmluU29ydFN0YXRlLCBwc3RhdGUpOworCisJLyoKKwkgKiBJZiB3ZSBoYXZlIHJ1bnRp bWUga2V5cyBhbmQgdGhleSd2ZSBub3QgYWxyZWFkeSBiZWVuIHNldCB1cCwgZG8gaXQgbm93 LgorCSAqLworCWlmIChub2RlLT5pc3NfTnVtUnVudGltZUtleXMgIT0gMCAmJiAhbm9kZS0+ aXNzX1J1bnRpbWVLZXlzUmVhZHkpCisJCUV4ZWNSZVNjYW4oKFBsYW5TdGF0ZSAqKSBub2Rl KTsKKworCXJldHVybiBFeGVjU2Nhbigmbm9kZS0+c3MsCisJCQkJCShFeGVjU2NhbkFjY2Vz c010ZCkgSW5kZXhOZXh0LAorCQkJCQkoRXhlY1NjYW5SZWNoZWNrTXRkKSBJbmRleFJlY2hl Y2spOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1JlU2NhbkJyaW5Tb3J0KG5vZGUp CisgKgorICoJCVJlY2FsY3VsYXRlcyB0aGUgdmFsdWVzIG9mIGFueSBzY2FuIGtleXMgd2hv c2UgdmFsdWUgZGVwZW5kcyBvbgorICoJCWluZm9ybWF0aW9uIGtub3duIGF0IHJ1bnRpbWUs IHRoZW4gcmVzY2FucyB0aGUgaW5kZXhlZCByZWxhdGlvbi4KKyAqCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KK3ZvaWQKK0V4ZWNSZVNjYW5CcmluU29ydChCcmluU29ydFN0YXRlICpub2RlKQor eworCS8qCisJICogSWYgd2UgYXJlIGRvaW5nIHJ1bnRpbWUga2V5IGNhbGN1bGF0aW9ucyAo aWUsIGFueSBvZiB0aGUgaW5kZXgga2V5CisJICogdmFsdWVzIHdlcmVuJ3Qgc2ltcGxlIENv bnN0cyksIGNvbXB1dGUgdGhlIG5ldyBrZXkgdmFsdWVzLiAgQnV0IGZpcnN0LAorCSAqIHJl c2V0IHRoZSBjb250ZXh0IHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5IGFzIGVhY2ggb3V0ZXIg dHVwbGUgaXMKKwkgKiBzY2FubmVkLiAgTm90ZSB0aGlzIGFzc3VtZXMgdGhhdCB3ZSB3aWxs IHJlY2FsY3VsYXRlICphbGwqIHJ1bnRpbWUga2V5cworCSAqIG9uIGVhY2ggY2FsbC4KKwkg Ki8KKwlpZiAobm9kZS0+aXNzX051bVJ1bnRpbWVLZXlzICE9IDApCisJeworCQlFeHByQ29u dGV4dCAqZWNvbnRleHQgPSBub2RlLT5pc3NfUnVudGltZUNvbnRleHQ7CisKKwkJUmVzZXRF eHByQ29udGV4dChlY29udGV4dCk7CisJCUV4ZWNJbmRleEV2YWxSdW50aW1lS2V5cyhlY29u dGV4dCwKKwkJCQkJCQkJIG5vZGUtPmlzc19SdW50aW1lS2V5cywKKwkJCQkJCQkJIG5vZGUt Pmlzc19OdW1SdW50aW1lS2V5cyk7CisJfQorCW5vZGUtPmlzc19SdW50aW1lS2V5c1JlYWR5 ID0gdHJ1ZTsKKworCS8qIHJlc2V0IGluZGV4IHNjYW4gKi8KKwlpZiAobm9kZS0+aXNzX1Nj YW5EZXNjKQorCQlpbmRleF9yZXNjYW4obm9kZS0+aXNzX1NjYW5EZXNjLAorCQkJCQkgbm9k ZS0+aXNzX1NjYW5LZXlzLCBub2RlLT5pc3NfTnVtU2NhbktleXMsCisJCQkJCSBub2RlLT5p c3NfT3JkZXJCeUtleXMsIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cyk7CisJbm9kZS0+aXNz X1JlYWNoZWRFbmQgPSBmYWxzZTsKKworCUV4ZWNTY2FuUmVTY2FuKCZub2RlLT5zcyk7Cit9 CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNFbmRCcmluU29ydAorICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCit2b2lkCitFeGVjRW5kQnJpblNvcnQoQnJpblNvcnRTdGF0ZSAqbm9kZSkKK3sK KwlSZWxhdGlvbglpbmRleFJlbGF0aW9uRGVzYzsKKwlJbmRleFNjYW5EZXNjIEluZGV4U2Nh bkRlc2M7CisKKwkvKgorCSAqIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQor CSAqLworCWluZGV4UmVsYXRpb25EZXNjID0gbm9kZS0+aXNzX1JlbGF0aW9uRGVzYzsKKwlJ bmRleFNjYW5EZXNjID0gbm9kZS0+aXNzX1NjYW5EZXNjOworCisJLyoKKwkgKiBjbGVhciBv dXQgdHVwbGUgdGFibGUgc2xvdHMKKwkgKi8KKwlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpOworCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwor CisJLyoKKwkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRpZG4n dCBvcGVuIGl0KQorCSAqLworCWlmIChJbmRleFNjYW5EZXNjKQorCQlpbmRleF9lbmRzY2Fu KEluZGV4U2NhbkRlc2MpOworCWlmIChpbmRleFJlbGF0aW9uRGVzYykKKwkJaW5kZXhfY2xv c2UoaW5kZXhSZWxhdGlvbkRlc2MsIE5vTG9jayk7CisKKwlpZiAobm9kZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjICE9IE5VTEwpCisJCXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjKTsKKworCWlmIChub2RlLT5ic190dXBsZXN0b3JlICE9IE5VTEwpCisJ CXR1cGxlc3RvcmVfZW5kKG5vZGUtPmJzX3R1cGxlc3RvcmUpOworCW5vZGUtPmJzX3R1cGxl c3RvcmUgPSBOVUxMOworCisJaWYgKG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlICE9IE5VTEwp CisJCXR1cGxlc29ydF9lbmQobm9kZS0+YnNfdHVwbGVzb3J0c3RhdGUpOworCW5vZGUtPmJz X3R1cGxlc29ydHN0YXRlID0gTlVMTDsKKworCWlmIChub2RlLT5ic19zY2FuLT5yYW5nZXMg IT0gTlVMTCkKKwkJdHVwbGVzb3J0X2VuZChub2RlLT5ic19zY2FuLT5yYW5nZXMpOworCW5v ZGUtPmJzX3NjYW4tPnJhbmdlcyA9IE5VTEw7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlF eGVjQnJpblNvcnRNYXJrUG9zCisgKgorICogTm90ZTogd2UgYXNzdW1lIHRoYXQgbm8gY2Fs bGVyIGF0dGVtcHRzIHRvIHNldCBhIG1hcmsgYmVmb3JlIGhhdmluZyByZWFkCisgKiBhdCBs ZWFzdCBvbmUgdHVwbGUuICBPdGhlcndpc2UsIGlzc19TY2FuRGVzYyBtaWdodCBzdGlsbCBi ZSBOVUxMLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjQnJpblNvcnRNYXJrUG9z KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCit7CisJRVN0YXRlCSAgICplc3RhdGUgPSBub2RlLT5z cy5wcy5zdGF0ZTsKKwlFUFFTdGF0ZSAgICplcHFzdGF0ZSA9IGVzdGF0ZS0+ZXNfZXBxX2Fj dGl2ZTsKKworCWlmIChlcHFzdGF0ZSAhPSBOVUxMKQorCXsKKwkJLyoKKwkJICogV2UgYXJl IGluc2lkZSBhbiBFdmFsUGxhblF1YWwgcmVjaGVjay4gIElmIGEgdGVzdCB0dXBsZSBleGlz dHMgZm9yCisJCSAqIHRoaXMgcmVsYXRpb24sIHRoZW4gd2Ugc2hvdWxkbid0IGFjY2VzcyB0 aGUgaW5kZXggYXQgYWxsLiAgV2Ugd291bGQKKwkJICogaW5zdGVhZCBuZWVkIHRvIHNhdmUs IGFuZCBsYXRlciByZXN0b3JlLCB0aGUgc3RhdGUgb2YgdGhlCisJCSAqIHJlbHN1YnNfZG9u ZSBmbGFnLCBzbyB0aGF0IHJlLWZldGNoaW5nIHRoZSB0ZXN0IHR1cGxlIGlzIHBvc3NpYmxl LgorCQkgKiBIb3dldmVyLCBnaXZlbiB0aGUgYXNzdW1wdGlvbiB0aGF0IG5vIGNhbGxlciBz ZXRzIGEgbWFyayBhdCB0aGUKKwkJICogc3RhcnQgb2YgdGhlIHNjYW4sIHdlIGNhbiBvbmx5 IGdldCBoZXJlIHdpdGggcmVsc3Vic19kb25lW2ldCisJCSAqIGFscmVhZHkgc2V0LCBhbmQg c28gbm8gc3RhdGUgbmVlZCBiZSBzYXZlZC4KKwkJICovCisJCUluZGV4CQlzY2FucmVsaWQg PSAoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZDsKKworCQlBc3NlcnQo c2NhbnJlbGlkID4gMCk7CisJCWlmIChlcHFzdGF0ZS0+cmVsc3Vic19zbG90W3NjYW5yZWxp ZCAtIDFdICE9IE5VTEwgfHwKKwkJCWVwcXN0YXRlLT5yZWxzdWJzX3Jvd21hcmtbc2NhbnJl bGlkIC0gMV0gIT0gTlVMTCkKKwkJeworCQkJLyogVmVyaWZ5IHRoZSBjbGFpbSBhYm92ZSAq LworCQkJaWYgKCFlcHFzdGF0ZS0+cmVsc3Vic19kb25lW3NjYW5yZWxpZCAtIDFdKQorCQkJ CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIEV4ZWNCcmluU29ydE1hcmtQb3MgY2FsbCBpbiBF UFEgcmVjaGVjayIpOworCQkJcmV0dXJuOworCQl9CisJfQorCisJaW5kZXhfbWFya3Bvcyhu b2RlLT5pc3NfU2NhbkRlc2MpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0luZGV4 UmVzdHJQb3MKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY0JyaW5Tb3J0UmVzdHJQ b3MoQnJpblNvcnRTdGF0ZSAqbm9kZSkKK3sKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUt PnNzLnBzLnN0YXRlOworCUVQUVN0YXRlICAgKmVwcXN0YXRlID0gZXN0YXRlLT5lc19lcHFf YWN0aXZlOworCisJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSAhPSBOVUxMKQorCXsKKwkJ LyogU2VlIGNvbW1lbnRzIGluIEV4ZWNJbmRleE1hcmtQb3MgKi8KKwkJSW5kZXgJCXNjYW5y ZWxpZCA9ICgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkOworCisJCUFz c2VydChzY2FucmVsaWQgPiAwKTsKKwkJaWYgKGVwcXN0YXRlLT5yZWxzdWJzX3Nsb3Rbc2Nh bnJlbGlkIC0gMV0gIT0gTlVMTCB8fAorCQkJZXBxc3RhdGUtPnJlbHN1YnNfcm93bWFya1tz Y2FucmVsaWQgLSAxXSAhPSBOVUxMKQorCQl7CisJCQkvKiBWZXJpZnkgdGhlIGNsYWltIGFi b3ZlICovCisJCQlpZiAoIWVwcXN0YXRlLT5yZWxzdWJzX2RvbmVbc2NhbnJlbGlkIC0gMV0p CisJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgRXhlY0JyaW5Tb3J0UmVzdHJQb3MgY2Fs bCBpbiBFUFEgcmVjaGVjayIpOworCQkJcmV0dXJuOworCQl9CisJfQorCisJaW5kZXhfcmVz dHJwb3Mobm9kZS0+aXNzX1NjYW5EZXNjKTsKK30KKworLyoKKyAqIHNvbWV3aGF0IGNyaXBw bGVkIHZlcnNvbiBvZiBicmluZ2V0Yml0bWFwCisgKgorICogWFhYIFdlIGRvbid0IGNhbGwg Y29uc2lzdGVudCBmdW5jdGlvbiAob3IgYW55IG90aGVyIGZ1bmN0aW9uKSwgc28gdW5saWtl CisgKiBicmluZ2V0Yml0bWFwIHdlIGRvbid0IHNldCBhIHNlcGFyYXRlIG1lbW9yeSBjb250 ZXh0LiBJZiB3ZSBlbmQgdXAgZmlsdGVyaW5nCisgKiB0aGUgcmFuZ2VzIHNvbWVob3cgKGUu Zy4gYnkgV0hFUkUgY29uZGl0aW9ucyksIHRoaXMgbWlnaHQgYmUgbmVjZXNzYXJ5LgorICoK KyAqIFhYWCBTaG91bGQgYmUgcGFydCBvZiBvcGNsYXNzLCB0byBzb21ld2hlcmUgaW4gYnJp bl9taW5tYXguYyBldGMuCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjSW5pdEJyaW5Tb3J0UmFu Z2VzKEJyaW5Tb3J0ICpub2RlLCBCcmluU29ydFN0YXRlICpwbGFuc3RhdGUpCit7CisJSW5k ZXhTY2FuRGVzYwlzY2FuID0gcGxhbnN0YXRlLT5pc3NfU2NhbkRlc2M7CisJUmVsYXRpb24J aW5kZXhSZWwgPSBwbGFuc3RhdGUtPmlzc19SZWxhdGlvbkRlc2M7CisJaW50CQkJYXR0bm87 CisJRm1nckluZm8gICAqcmFuZ2Vwcm9jOworCUJyaW5SYW5nZVNjYW5EZXNjICpicnNjYW47 CisJYm9vbAkJYXNjOworCisJLyogQlJJTiBTb3J0IG9ubHkgYWxsb3dzIE9SREVSIEJZIHVz aW5nIGEgc2luZ2xlIGNvbHVtbiAqLworCUFzc2VydChub2RlLT5udW1Db2xzID09IDEpOwor CisJYXR0bm8gPSBub2RlLT5hdHRudW1zWzBdOworCisJLyoKKwkgKiBNYWtlIHN1cmUgd2Ug bWF0Y2hlZCB0aGUgc29ydCBrZXkgLSBpZiBub3QsIHdlIHNob3VsZCBub3QgaGF2ZSBnb3QK KwkgKiB0byB0aGlzIHBsYWNlIGF0IGFsbCAodHJ5IHNvcnRpbmcgdXNpbmcgdGhpcyBpbmRl eCkuCisJICovCisJQXNzZXJ0KEF0dHJOdW1iZXJJc0ZvclVzZXJEZWZpbmVkQXR0cihhdHRu bykpOworCisJLyoKKwkgKiBnZXQgcHJvY2VkdXJlIHRvIGdlbmVyYXRlIHNvcnQgcmFuZ2Vz CisJICoKKwkgKiBGSVhNRSB3ZSBjYW4ndCByZWx5IG9uIGEgcGFydGljdWxhciBwcm9jbnVt IHRvIGlkZW50aWZ5IHdoaWNoIG9wY2xhc3MKKwkgKiBhbGxvd3MgYnVpbGRpbmcgc29ydCBy YW5nZXMsIGJlY2F1c2UgdGhlIG9wdGluYWwgcHJvY251bXMgYXJlIG5vdAorCSAqIHVuaXF1 ZSAoZS5nLiBpbmNsdXNpb25fb3BzIGhhdmUgMTIgdG9vKS4gU28gd2UgcHJvYmFibHkgbmVl ZCBhIGZsYWcKKwkgKiBmb3IgdGhlIG9wY2xhc3MuCisJICovCisJcmFuZ2Vwcm9jID0gaW5k ZXhfZ2V0cHJvY2luZm8oaW5kZXhSZWwsIGF0dG5vLCBCUklOX1BST0NOVU1fUkFOR0VTKTsK KworCS8qCisJICogU2hvdWxkIG5vdCBnZXQgaGVyZSB3aXRob3V0IGEgcHJvYywgdGhhbmtz IHRvIHRoZSBjaGVjayBiZWZvcmUKKwkgKiBidWlsZGluZyB0aGUgQnJpblNvcnQgcGF0aC4K KwkgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChyYW5nZXByb2MtPmZuX29pZCkpOworCisJbWVt c2V0KCZwbGFuc3RhdGUtPmJzX3NvcnRzdXBwb3J0LCAwLCBzaXplb2YoU29ydFN1cHBvcnRE YXRhKSk7CisKKwlwbGFuc3RhdGUtPmJzX3NvcnRzdXBwb3J0LnNzdXBfY29sbGF0aW9uID0g bm9kZS0+Y29sbGF0aW9uc1swXTsKKwlwbGFuc3RhdGUtPmJzX3NvcnRzdXBwb3J0LnNzdXBf Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7IC8vIEZJWE1FCisKKwlQcmVwYXJlU29ydFN1 cHBvcnRGcm9tT3JkZXJpbmdPcChub2RlLT5zb3J0T3BlcmF0b3JzWzBdLCAmcGxhbnN0YXRl LT5ic19zb3J0c3VwcG9ydCk7CisKKwkvKgorCSAqIERldGVybWluZSBpZiB0aGlzIEFTQyBv ciBERVNDIHNvcnQsIHNvIHRoYXQgd2UgY2FuIHJlcXVlc3QgdGhlCisJICogcmFuZ2VzIGlu IHRoZSBhcHByb3ByaWF0ZSBvcmRlciAob3JkZXJlZCBlaXRoZXIgYnkgbWludmFsIGZvcgor CSAqIEFTQywgb3IgYnkgbWF4dmFsIGZvciBERVNDKS4KKwkgKi8KKwlhc2MgPSBTY2FuRGly ZWN0aW9uSXNGb3J3YXJkKG5vZGUtPmluZGV4b3JkZXJkaXIpOworCisJLyoKKwkgKiBBc2sg dGhlIG9wY2xhc3MgdG8gcHJvZHVjZSByYW5nZXMgaW4gYXBwcm9wcmlhdGUgb3JkZXJpbmcu CisJICoKKwkgKiBYWFggUGFzcyBpbmZvIGFib3V0IEFTQy9ERVNDLCBOVUxMUyBGSVJTVC9M QVNULgorCSAqLworCWJyc2NhbiA9IChCcmluUmFuZ2VTY2FuRGVzYyAqKSBEYXR1bUdldFBv aW50ZXIoRnVuY3Rpb25DYWxsM0NvbGwocmFuZ2Vwcm9jLAorCQkJCQkJCQkJCQlub2RlLT5j b2xsYXRpb25zWzBdLAorCQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oc2NhbiksCisJCQkJ CQkJCQkJCUludDE2R2V0RGF0dW0oYXR0bm8pLAorCQkJCQkJCQkJCQlCb29sR2V0RGF0dW0o YXNjKSkpOworCisJLyogYWxsb2NhdGUgZm9yIHNwYWNlLCBhbmQgYWxzbyBmb3IgdGhlIGFs dGVybmF0aXZlIG9yZGVyaW5nICovCisJcGxhbnN0YXRlLT5ic19zY2FuID0gYnJzY2FuOwor fQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0luaXRCcmluU29ydAorICoKKyAqCQlJbml0 aWFsaXplcyB0aGUgaW5kZXggc2NhbidzIHN0YXRlIGluZm9ybWF0aW9uLCBjcmVhdGVzCisg KgkJc2NhbiBrZXlzLCBhbmQgb3BlbnMgdGhlIGJhc2UgYW5kIGluZGV4IHJlbGF0aW9ucy4K KyAqCisgKgkJTm90ZTogaW5kZXggc2NhbnMgaGF2ZSAyIHNldHMgb2Ygc3RhdGUgaW5mb3Jt YXRpb24gYmVjYXVzZQorICoJCQkgIHdlIGhhdmUgdG8ga2VlcCB0cmFjayBvZiB0aGUgYmFz ZSByZWxhdGlvbiBhbmQgdGhlCisgKgkJCSAgaW5kZXggcmVsYXRpb24uCisgKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KK0JyaW5Tb3J0U3RhdGUgKgorRXhlY0luaXRCcmluU29ydChCcmluU29ydCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCit7CisJQnJpblNvcnRTdGF0ZSAq aW5kZXhzdGF0ZTsKKwlSZWxhdGlvbgljdXJyZW50UmVsYXRpb247CisJTE9DS01PREUJbG9j a21vZGU7CisKKwkvKgorCSAqIGNyZWF0ZSBzdGF0ZSBzdHJ1Y3R1cmUKKwkgKi8KKwlpbmRl eHN0YXRlID0gbWFrZU5vZGUoQnJpblNvcnRTdGF0ZSk7CisJaW5kZXhzdGF0ZS0+c3MucHMu cGxhbiA9IChQbGFuICopIG5vZGU7CisJaW5kZXhzdGF0ZS0+c3MucHMuc3RhdGUgPSBlc3Rh dGU7CisJaW5kZXhzdGF0ZS0+c3MucHMuRXhlY1Byb2NOb2RlID0gRXhlY0JyaW5Tb3J0Owor CisJLyoKKwkgKiBNaXNjZWxsYW5lb3VzIGluaXRpYWxpemF0aW9uCisJICoKKwkgKiBjcmVh dGUgZXhwcmVzc2lvbiBjb250ZXh0IGZvciBub2RlCisJICovCisJRXhlY0Fzc2lnbkV4cHJD b250ZXh0KGVzdGF0ZSwgJmluZGV4c3RhdGUtPnNzLnBzKTsKKworCS8qCisJICogb3BlbiB0 aGUgc2NhbiByZWxhdGlvbgorCSAqLworCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2Nh blJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisKKwlp bmRleHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CisJ aW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gaGVhcCBz Y2FuIGhlcmUgKi8KKworCS8qCisJICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJvbSB0aGUgcmVs YXRpb24gZGVzY3JpcHRvci4KKwkgKi8KKwlFeGVjSW5pdFNjYW5UdXBsZVNsb3QoZXN0YXRl LCAmaW5kZXhzdGF0ZS0+c3MsCisJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IoY3VycmVudFJl bGF0aW9uKSwKKwkJCQkJCSAgdGFibGVfc2xvdF9jYWxsYmFja3MoY3VycmVudFJlbGF0aW9u KSk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgcmVzdWx0IHR5cGUgYW5kIHByb2plY3Rpb24u CisJICovCisJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RUTCgmaW5kZXhzdGF0ZS0+c3MucHMs ICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCS8vIEV4ZWNJbml0UmVzdWx0VHlwZVRMKCZpbmRl eHN0YXRlLT5zcy5wcyk7CisJLy8gRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbygmaW5k ZXhzdGF0ZS0+c3MpOworCS8vIEV4ZWNJbml0UmVzdWx0U2xvdCgmaW5kZXhzdGF0ZS0+c3Mu cHMsICZUVFNPcHNWaXJ0dWFsKTsKKworCWluZGV4c3RhdGUtPmJzX1Byb2pJbmZvID0gRXhl Y0J1aWxkUHJvamVjdGlvbkluZm8oKChQbGFuICopIG5vZGUpLT50YXJnZXRsaXN0LAorCQkJ CQkJCQkJCQkJCSAgaW5kZXhzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQsCisJCQkJCQkJ CQkJCQkJICBpbmRleHN0YXRlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QsCisJCQkJCQkJ CQkJCQkJICAmaW5kZXhzdGF0ZS0+c3MucHMsCisJCQkJCQkJCQkJCQkJICBpbmRleHN0YXRl LT5zcy5zc19TY2FuVHVwbGVTbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yKTsKKworCS8qCisJ ICogaW5pdGlhbGl6ZSBjaGlsZCBleHByZXNzaW9ucworCSAqCisJICogTm90ZTogd2UgZG9u J3QgaW5pdGlhbGl6ZSBhbGwgb2YgdGhlIGluZGV4cXVhbCBleHByZXNzaW9uLCBvbmx5IHRo ZQorCSAqIHN1Yi1wYXJ0cyBjb3JyZXNwb25kaW5nIHRvIHJ1bnRpbWUga2V5cyAoc2VlIGJl bG93KS4gIExpa2V3aXNlIGZvcgorCSAqIGluZGV4b3JkZXJieSwgaWYgYW55LiAgQnV0IHRo ZSBpbmRleHF1YWxvcmlnIGV4cHJlc3Npb24gaXMgYWx3YXlzCisJICogaW5pdGlhbGl6ZWQg ZXZlbiB0aG91Z2ggaXQgd2lsbCBvbmx5IGJlIHVzZWQgaW4gc29tZSB1bmNvbW1vbiBjYXNl cyAtLS0KKwkgKiB3b3VsZCBiZSBuaWNlIHRvIGltcHJvdmUgdGhhdC4gIChQcm9ibGVtIGlz IHRoYXQgYW55IFN1YlBsYW5zIHByZXNlbnQKKwkgKiBpbiB0aGUgZXhwcmVzc2lvbiBtdXN0 IGJlIGZvdW5kIG5vdy4uLikKKwkgKi8KKwlpbmRleHN0YXRlLT5zcy5wcy5xdWFsID0KKwkJ RXhlY0luaXRRdWFsKG5vZGUtPnNjYW4ucGxhbi5xdWFsLCAoUGxhblN0YXRlICopIGluZGV4 c3RhdGUpOworCWluZGV4c3RhdGUtPmluZGV4cXVhbG9yaWcgPQorCQlFeGVjSW5pdFF1YWwo bm9kZS0+aW5kZXhxdWFsb3JpZywgKFBsYW5TdGF0ZSAqKSBpbmRleHN0YXRlKTsKKworCS8q CisJICogSWYgd2UgYXJlIGp1c3QgZG9pbmcgRVhQTEFJTiAoaWUsIGFyZW4ndCBnb2luZyB0 byBydW4gdGhlIHBsYW4pLCBzdG9wCisJICogaGVyZS4gIFRoaXMgYWxsb3dzIGFuIGluZGV4 LWFkdmlzb3IgcGx1Z2luIHRvIEVYUExBSU4gYSBwbGFuIGNvbnRhaW5pbmcKKwkgKiByZWZl cmVuY2VzIHRvIG5vbmV4aXN0ZW50IGluZGV4ZXMuCisJICovCisJaWYgKGVmbGFncyAmIEVY RUNfRkxBR19FWFBMQUlOX09OTFkpCisJCXJldHVybiBpbmRleHN0YXRlOworCisJLyogT3Bl biB0aGUgaW5kZXggcmVsYXRpb24uICovCisJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5v ZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKKwlpbmRleHN0YXRl LT5pc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9k ZSk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQor CSAqLworCWluZGV4c3RhdGUtPmlzc19SdW50aW1lS2V5c1JlYWR5ID0gZmFsc2U7CisJaW5k ZXhzdGF0ZS0+aXNzX1J1bnRpbWVLZXlzID0gTlVMTDsKKwlpbmRleHN0YXRlLT5pc3NfTnVt UnVudGltZUtleXMgPSAwOworCisJLyoKKwkgKiBidWlsZCB0aGUgaW5kZXggc2NhbiBrZXlz IGZyb20gdGhlIGluZGV4IHF1YWxpZmljYXRpb24KKwkgKi8KKwlFeGVjSW5kZXhCdWlsZFNj YW5LZXlzKChQbGFuU3RhdGUgKikgaW5kZXhzdGF0ZSwKKwkJCQkJCSAgIGluZGV4c3RhdGUt Pmlzc19SZWxhdGlvbkRlc2MsCisJCQkJCQkgICBub2RlLT5pbmRleHF1YWwsCisJCQkJCQkg ICBmYWxzZSwKKwkJCQkJCSAgICZpbmRleHN0YXRlLT5pc3NfU2NhbktleXMsCisJCQkJCQkg ICAmaW5kZXhzdGF0ZS0+aXNzX051bVNjYW5LZXlzLAorCQkJCQkJICAgJmluZGV4c3RhdGUt Pmlzc19SdW50aW1lS2V5cywKKwkJCQkJCSAgICZpbmRleHN0YXRlLT5pc3NfTnVtUnVudGlt ZUtleXMsCisJCQkJCQkgICBOVUxMLAkvKiBubyBBcnJheUtleXMgKi8KKwkJCQkJCSAgIE5V TEwpOworCisJLyoKKwkgKiBJZiB3ZSBoYXZlIHJ1bnRpbWUga2V5cywgd2UgbmVlZCBhbiBF eHByQ29udGV4dCB0byBldmFsdWF0ZSB0aGVtLiBUaGUKKwkgKiBub2RlJ3Mgc3RhbmRhcmQg Y29udGV4dCB3b24ndCBkbyBiZWNhdXNlIHdlIHdhbnQgdG8gcmVzZXQgdGhhdCBjb250ZXh0 CisJICogZm9yIGV2ZXJ5IHR1cGxlLiAgU28sIGJ1aWxkIGFub3RoZXIgY29udGV4dCBqdXN0 IGxpa2UgdGhlIG90aGVyIG9uZS4uLgorCSAqIC10Z2wgNy8xMS8wMAorCSAqLworCWlmIChp bmRleHN0YXRlLT5pc3NfTnVtUnVudGltZUtleXMgIT0gMCkKKwl7CisJCUV4cHJDb250ZXh0 ICpzdGRlY29udGV4dCA9IGluZGV4c3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCisJ CUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZpbmRleHN0YXRlLT5zcy5wcyk7CisJ CWluZGV4c3RhdGUtPmlzc19SdW50aW1lQ29udGV4dCA9IGluZGV4c3RhdGUtPnNzLnBzLnBz X0V4cHJDb250ZXh0OworCQlpbmRleHN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4dCA9IHN0 ZGVjb250ZXh0OworCX0KKwllbHNlCisJeworCQlpbmRleHN0YXRlLT5pc3NfUnVudGltZUNv bnRleHQgPSBOVUxMOworCX0KKworCWluZGV4c3RhdGUtPmJzX3R1cGxlc29ydHN0YXRlID0g TlVMTDsKKwlpbmRleHN0YXRlLT5ic19xdWFsID0gaW5kZXhzdGF0ZS0+c3MucHMucXVhbDsK KwlpbmRleHN0YXRlLT5zcy5wcy5xdWFsID0gTlVMTDsKKwkvLyBFeGVjSW5pdFJlc3VsdFR1 cGxlU2xvdFRMKCZpbmRleHN0YXRlLT5zcy5wcywgJlRUU09wc01pbmltYWxUdXBsZSk7CisK KwkvKgorCSAqIGFsbCBkb25lLgorCSAqLworCXJldHVybiBpbmRleHN0YXRlOworfQorCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJCQkJCVBhcmFsbGVsIFNjYW4gU3VwcG9ydAorICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjQnJpblNvcnRFc3RpbWF0ZQor ICoKKyAqCQlDb21wdXRlIHRoZSBhbW91bnQgb2Ygc3BhY2Ugd2UnbGwgbmVlZCBpbiB0aGUg cGFyYWxsZWwKKyAqCQlxdWVyeSBEU00sIGFuZCBpbmZvcm0gcGN4dC0+ZXN0aW1hdG9yIGFi b3V0IG91ciBuZWVkcy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY0JyaW5Tb3J0 RXN0aW1hdGUoQnJpblNvcnRTdGF0ZSAqbm9kZSwKKwkJCQkJICBQYXJhbGxlbENvbnRleHQg KnBjeHQpCit7CisJRVN0YXRlCSAgICplc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKKwor CW5vZGUtPmlzc19Qc2NhbkxlbiA9IGluZGV4X3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShub2Rl LT5pc3NfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90 KTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIG5vZGUtPmlz c19Qc2Nhbkxlbik7CisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZURT TQorICoKKyAqCQlTZXQgdXAgYSBwYXJhbGxlbCBpbmRleCBzY2FuIGRlc2NyaXB0b3IuCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNCcmluU29ydEluaXRpYWxpemVEU00oQnJp blNvcnRTdGF0ZSAqbm9kZSwKKwkJCQkJCSAgIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKK3sK KwlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCVBhcmFsbGVsSW5k ZXhTY2FuRGVzYyBwaXNjYW47CisKKwlwaXNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQt PnRvYywgbm9kZS0+aXNzX1BzY2FuTGVuKTsKKwlpbmRleF9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCisJCQkJCQkJCSAgbm9kZS0+aXNz X1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJ CQkgIHBpc2Nhbik7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5w bGFuLT5wbGFuX25vZGVfaWQsIHBpc2Nhbik7CisJbm9kZS0+aXNzX1NjYW5EZXNjID0KKwkJ aW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwkJCQkJCQkJIG5vZGUtPmlzc19SZWxhdGlvbkRlc2MsCisJCQkJCQkJCSBub2RlLT5pc3Nf TnVtU2NhbktleXMsCisJCQkJCQkJCSBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCisJCQkJ CQkJCSBwaXNjYW4pOworCisJLyoKKwkgKiBJZiBubyBydW4tdGltZSBrZXlzIHRvIGNhbGN1 bGF0ZSBvciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5kIHBhc3MKKwkgKiB0aGUgc2Nh bmtleXMgdG8gdGhlIGluZGV4IEFNLgorCSAqLworCWlmIChub2RlLT5pc3NfTnVtUnVudGlt ZUtleXMgPT0gMCB8fCBub2RlLT5pc3NfUnVudGltZUtleXNSZWFkeSkKKwkJaW5kZXhfcmVz Y2FuKG5vZGUtPmlzc19TY2FuRGVzYywKKwkJCQkJIG5vZGUtPmlzc19TY2FuS2V5cywgbm9k ZS0+aXNzX051bVNjYW5LZXlzLAorCQkJCQkgbm9kZS0+aXNzX09yZGVyQnlLZXlzLCBub2Rl LT5pc3NfTnVtT3JkZXJCeUtleXMpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0Jy aW5Tb3J0UmVJbml0aWFsaXplRFNNCisgKgorICoJCVJlc2V0IHNoYXJlZCBzdGF0ZSBiZWZv cmUgYmVnaW5uaW5nIGEgZnJlc2ggc2Nhbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAor RXhlY0JyaW5Tb3J0UmVJbml0aWFsaXplRFNNKEJyaW5Tb3J0U3RhdGUgKm5vZGUsCisJCQkJ CQkJIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKK3sKKwlpbmRleF9wYXJhbGxlbHJlc2Nhbihu b2RlLT5pc3NfU2NhbkRlc2MpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0JyaW5T b3J0SW5pdGlhbGl6ZVdvcmtlcgorICoKKyAqCQlDb3B5IHJlbGV2YW50IGluZm9ybWF0aW9u IGZyb20gVE9DIGludG8gcGxhbnN0YXRlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitF eGVjQnJpblNvcnRJbml0aWFsaXplV29ya2VyKEJyaW5Tb3J0U3RhdGUgKm5vZGUsCisJCQkJ CQkJICBQYXJhbGxlbFdvcmtlckNvbnRleHQgKnB3Y3h0KQoreworCVBhcmFsbGVsSW5kZXhT Y2FuRGVzYyBwaXNjYW47CisKKwlwaXNjYW4gPSBzaG1fdG9jX2xvb2t1cChwd2N4dC0+dG9j LCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIGZhbHNlKTsKKwlub2RlLT5pc3Nf U2NhbkRlc2MgPQorCQlpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLAorCQkJCQkJCQkgbm9kZS0+aXNzX1JlbGF0aW9uRGVzYywKKwkJCQkJ CQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJCQkJIG5vZGUtPmlzc19OdW1PcmRl ckJ5S2V5cywKKwkJCQkJCQkJIHBpc2Nhbik7CisKKwkvKgorCSAqIElmIG5vIHJ1bi10aW1l IGtleXMgdG8gY2FsY3VsYXRlIG9yIHRoZXkgYXJlIHJlYWR5LCBnbyBhaGVhZCBhbmQgcGFz cworCSAqIHRoZSBzY2Fua2V5cyB0byB0aGUgaW5kZXggQU0uCisJICovCisJaWYgKG5vZGUt Pmlzc19OdW1SdW50aW1lS2V5cyA9PSAwIHx8IG5vZGUtPmlzc19SdW50aW1lS2V5c1JlYWR5 KQorCQlpbmRleF9yZXNjYW4obm9kZS0+aXNzX1NjYW5EZXNjLAorCQkJCQkgbm9kZS0+aXNz X1NjYW5LZXlzLCBub2RlLT5pc3NfTnVtU2NhbktleXMsCisJCQkJCSBub2RlLT5pc3NfT3Jk ZXJCeUtleXMsIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cyk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCA3OTE4YmI2ZjBkYi4uODZmOTFlNjU3N2Mg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtNzkxLDYgKzc5 MSwyNjAgQEAgY29zdF9pbmRleChJbmRleFBhdGggKnBhdGgsIFBsYW5uZXJJbmZvICpyb290 LCBkb3VibGUgbG9vcF9jb3VudCwKIAlwYXRoLT5wYXRoLnRvdGFsX2Nvc3QgPSBzdGFydHVw X2Nvc3QgKyBydW5fY29zdDsKIH0KIAordm9pZAorY29zdF9icmluc29ydChCcmluU29ydFBh dGggKnBhdGgsIFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgbG9vcF9jb3VudCwKKwkJICAg Ym9vbCBwYXJ0aWFsX3BhdGgpCit7CisJSW5kZXhPcHRJbmZvICppbmRleCA9IHBhdGgtPmlw YXRoLmluZGV4aW5mbzsKKwlSZWxPcHRJbmZvICpiYXNlcmVsID0gaW5kZXgtPnJlbDsKKwlh bWNvc3Rlc3RpbWF0ZV9mdW5jdGlvbiBhbWNvc3Rlc3RpbWF0ZTsKKwlMaXN0CSAgICpxcHF1 YWxzOworCUNvc3QJCXN0YXJ0dXBfY29zdCA9IDA7CisJQ29zdAkJcnVuX2Nvc3QgPSAwOwor CUNvc3QJCWNwdV9ydW5fY29zdCA9IDA7CisJQ29zdAkJaW5kZXhTdGFydHVwQ29zdDsKKwlD b3N0CQlpbmRleFRvdGFsQ29zdDsKKwlTZWxlY3Rpdml0eSBpbmRleFNlbGVjdGl2aXR5Owor CWRvdWJsZQkJaW5kZXhDb3JyZWxhdGlvbiwKKwkJCQljc3F1YXJlZDsKKwlkb3VibGUJCXNw Y19zZXFfcGFnZV9jb3N0LAorCQkJCXNwY19yYW5kb21fcGFnZV9jb3N0OworCUNvc3QJCW1p bl9JT19jb3N0LAorCQkJCW1heF9JT19jb3N0OworCVF1YWxDb3N0CXFwcXVhbF9jb3N0Owor CUNvc3QJCWNwdV9wZXJfdHVwbGU7CisJZG91YmxlCQl0dXBsZXNfZmV0Y2hlZDsKKwlkb3Vi bGUJCXBhZ2VzX2ZldGNoZWQ7CisJZG91YmxlCQlyYW5kX2hlYXBfcGFnZXM7CisJZG91Ymxl CQlpbmRleF9wYWdlczsKKworCS8qIFNob3VsZCBvbmx5IGJlIGFwcGxpZWQgdG8gYmFzZSBy ZWxhdGlvbnMgKi8KKwlBc3NlcnQoSXNBKGJhc2VyZWwsIFJlbE9wdEluZm8pICYmCisJCSAg IElzQShpbmRleCwgSW5kZXhPcHRJbmZvKSk7CisJQXNzZXJ0KGJhc2VyZWwtPnJlbGlkID4g MCk7CisJQXNzZXJ0KGJhc2VyZWwtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKKworCS8q CisJICogTWFyayB0aGUgcGF0aCB3aXRoIHRoZSBjb3JyZWN0IHJvdyBlc3RpbWF0ZSwgYW5k IGlkZW50aWZ5IHdoaWNoIHF1YWxzCisJICogd2lsbCBuZWVkIHRvIGJlIGVuZm9yY2VkIGFz IHFwcXVhbHMuICBXZSBuZWVkIG5vdCBjaGVjayBhbnkgcXVhbHMgdGhhdAorCSAqIGFyZSBp bXBsaWVkIGJ5IHRoZSBpbmRleCdzIHByZWRpY2F0ZSwgc28gd2UgY2FuIHVzZSBpbmRyZXN0 cmljdGluZm8gbm90CisJICogYmFzZXJlc3RyaWN0aW5mbyBhcyB0aGUgbGlzdCBvZiByZWxl dmFudCByZXN0cmljdGlvbiBjbGF1c2VzIGZvciB0aGUKKwkgKiByZWwuCisJICovCisJaWYg KHBhdGgtPmlwYXRoLnBhdGgucGFyYW1faW5mbykKKwl7CisJCXBhdGgtPmlwYXRoLnBhdGgu cm93cyA9IHBhdGgtPmlwYXRoLnBhdGgucGFyYW1faW5mby0+cHBpX3Jvd3M7CisJCS8qIHFw cXVhbHMgY29tZSBmcm9tIHRoZSByZWwncyByZXN0cmljdGlvbiBjbGF1c2VzIGFuZCBwcGlf Y2xhdXNlcyAqLworCQlxcHF1YWxzID0gbGlzdF9jb25jYXQoZXh0cmFjdF9ub25pbmRleF9j b25kaXRpb25zKHBhdGgtPmlwYXRoLmluZGV4aW5mby0+aW5kcmVzdHJpY3RpbmZvLAorCQkJ CQkJCQkJCQkJCQkgIHBhdGgtPmlwYXRoLmluZGV4Y2xhdXNlcyksCisJCQkJCQkJICBleHRy YWN0X25vbmluZGV4X2NvbmRpdGlvbnMocGF0aC0+aXBhdGgucGF0aC5wYXJhbV9pbmZvLT5w cGlfY2xhdXNlcywKKwkJCQkJCQkJCQkJCQkJICBwYXRoLT5pcGF0aC5pbmRleGNsYXVzZXMp KTsKKwl9CisJZWxzZQorCXsKKwkJcGF0aC0+aXBhdGgucGF0aC5yb3dzID0gYmFzZXJlbC0+ cm93czsKKwkJLyogcXBxdWFscyBjb21lIGZyb20ganVzdCB0aGUgcmVsJ3MgcmVzdHJpY3Rp b24gY2xhdXNlcyAqLworCQlxcHF1YWxzID0gZXh0cmFjdF9ub25pbmRleF9jb25kaXRpb25z KHBhdGgtPmlwYXRoLmluZGV4aW5mby0+aW5kcmVzdHJpY3RpbmZvLAorCQkJCQkJCQkJCQkg IHBhdGgtPmlwYXRoLmluZGV4Y2xhdXNlcyk7CisJfQorCisJaWYgKCFlbmFibGVfaW5kZXhz Y2FuKQorCQlzdGFydHVwX2Nvc3QgKz0gZGlzYWJsZV9jb3N0OworCS8qIHdlIGRvbid0IG5l ZWQgdG8gY2hlY2sgZW5hYmxlX2luZGV4b25seXNjYW47IGluZHhwYXRoLmMgZG9lcyB0aGF0 ICovCisKKwkvKgorCSAqIENhbGwgaW5kZXgtYWNjZXNzLW1ldGhvZC1zcGVjaWZpYyBjb2Rl IHRvIGVzdGltYXRlIHRoZSBwcm9jZXNzaW5nIGNvc3QKKwkgKiBmb3Igc2Nhbm5pbmcgdGhl IGluZGV4LCBhcyB3ZWxsIGFzIHRoZSBzZWxlY3Rpdml0eSBvZiB0aGUgaW5kZXggKGllLAor CSAqIHRoZSBmcmFjdGlvbiBvZiBtYWluLXRhYmxlIHR1cGxlcyB3ZSB3aWxsIGhhdmUgdG8g cmV0cmlldmUpIGFuZCBpdHMKKwkgKiBjb3JyZWxhdGlvbiB0byB0aGUgbWFpbi10YWJsZSB0 dXBsZSBvcmRlci4gIFdlIG5lZWQgYSBjYXN0IGhlcmUgYmVjYXVzZQorCSAqIHBhdGhub2Rl cy5oIHVzZXMgYSB3ZWFrIGZ1bmN0aW9uIHR5cGUgdG8gYXZvaWQgaW5jbHVkaW5nIGFtYXBp LmguCisJICovCisJYW1jb3N0ZXN0aW1hdGUgPSAoYW1jb3N0ZXN0aW1hdGVfZnVuY3Rpb24p IGluZGV4LT5hbWNvc3Rlc3RpbWF0ZTsKKwlhbWNvc3Rlc3RpbWF0ZShyb290LCAmcGF0aC0+ aXBhdGgsIGxvb3BfY291bnQsCisJCQkJICAgJmluZGV4U3RhcnR1cENvc3QsICZpbmRleFRv dGFsQ29zdCwKKwkJCQkgICAmaW5kZXhTZWxlY3Rpdml0eSwgJmluZGV4Q29ycmVsYXRpb24s CisJCQkJICAgJmluZGV4X3BhZ2VzKTsKKworCS8qCisJICogU2F2ZSBhbWNvc3Rlc3RpbWF0 ZSdzIHJlc3VsdHMgZm9yIHBvc3NpYmxlIHVzZSBpbiBiaXRtYXAgc2NhbiBwbGFubmluZy4K KwkgKiBXZSBkb24ndCBib3RoZXIgdG8gc2F2ZSBpbmRleFN0YXJ0dXBDb3N0IG9yIGluZGV4 Q29ycmVsYXRpb24sIGJlY2F1c2UgYQorCSAqIGJpdG1hcCBzY2FuIGRvZXNuJ3QgY2FyZSBh Ym91dCBlaXRoZXIuCisJICovCisJcGF0aC0+aXBhdGguaW5kZXh0b3RhbGNvc3QgPSBpbmRl eFRvdGFsQ29zdDsKKwlwYXRoLT5pcGF0aC5pbmRleHNlbGVjdGl2aXR5ID0gaW5kZXhTZWxl Y3Rpdml0eTsKKworCS8qIGFsbCBjb3N0cyBmb3IgdG91Y2hpbmcgaW5kZXggaXRzZWxmIGlu Y2x1ZGVkIGhlcmUgKi8KKwlzdGFydHVwX2Nvc3QgKz0gaW5kZXhTdGFydHVwQ29zdDsKKwly dW5fY29zdCArPSBpbmRleFRvdGFsQ29zdCAtIGluZGV4U3RhcnR1cENvc3Q7CisKKwkvKiBl c3RpbWF0ZSBudW1iZXIgb2YgbWFpbi10YWJsZSB0dXBsZXMgZmV0Y2hlZCAqLworCXR1cGxl c19mZXRjaGVkID0gY2xhbXBfcm93X2VzdChpbmRleFNlbGVjdGl2aXR5ICogYmFzZXJlbC0+ dHVwbGVzKTsKKworCS8qIGZldGNoIGVzdGltYXRlZCBwYWdlIGNvc3RzIGZvciB0YWJsZXNw YWNlIGNvbnRhaW5pbmcgdGFibGUgKi8KKwlnZXRfdGFibGVzcGFjZV9wYWdlX2Nvc3RzKGJh c2VyZWwtPnJlbHRhYmxlc3BhY2UsCisJCQkJCQkJICAmc3BjX3JhbmRvbV9wYWdlX2Nvc3Qs CisJCQkJCQkJICAmc3BjX3NlcV9wYWdlX2Nvc3QpOworCisJLyotLS0tLS0tLS0tCisJICog RXN0aW1hdGUgbnVtYmVyIG9mIG1haW4tdGFibGUgcGFnZXMgZmV0Y2hlZCwgYW5kIGNvbXB1 dGUgSS9PIGNvc3QuCisJICoKKwkgKiBXaGVuIHRoZSBpbmRleCBvcmRlcmluZyBpcyB1bmNv cnJlbGF0ZWQgd2l0aCB0aGUgdGFibGUgb3JkZXJpbmcsCisJICogd2UgdXNlIGFuIGFwcHJv eGltYXRpb24gcHJvcG9zZWQgYnkgTWFja2VydCBhbmQgTG9obWFuIChzZWUKKwkgKiBpbmRl eF9wYWdlc19mZXRjaGVkKCkgZm9yIGRldGFpbHMpIHRvIGNvbXB1dGUgdGhlIG51bWJlciBv ZiBwYWdlcworCSAqIGZldGNoZWQsIGFuZCB0aGVuIGNoYXJnZSBzcGNfcmFuZG9tX3BhZ2Vf Y29zdCBwZXIgcGFnZSBmZXRjaGVkLgorCSAqCisJICogV2hlbiB0aGUgaW5kZXggb3JkZXJp bmcgaXMgZXhhY3RseSBjb3JyZWxhdGVkIHdpdGggdGhlIHRhYmxlIG9yZGVyaW5nCisJICog KGp1c3QgYWZ0ZXIgYSBDTFVTVEVSLCBmb3IgZXhhbXBsZSksIHRoZSBudW1iZXIgb2YgcGFn ZXMgZmV0Y2hlZCBzaG91bGQKKwkgKiBiZSBleGFjdGx5IHNlbGVjdGl2aXR5ICogdGFibGVf c2l6ZS4gIFdoYXQncyBtb3JlLCBhbGwgYnV0IHRoZSBmaXJzdAorCSAqIHdpbGwgYmUgc2Vx dWVudGlhbCBmZXRjaGVzLCBub3QgdGhlIHJhbmRvbSBmZXRjaGVzIHRoYXQgb2NjdXIgaW4g dGhlCisJICogdW5jb3JyZWxhdGVkIGNhc2UuICBTbyBpZiB0aGUgbnVtYmVyIG9mIHBhZ2Vz IGlzIG1vcmUgdGhhbiAxLCB3ZQorCSAqIG91Z2h0IHRvIGNoYXJnZQorCSAqCQlzcGNfcmFu ZG9tX3BhZ2VfY29zdCArIChwYWdlc19mZXRjaGVkIC0gMSkgKiBzcGNfc2VxX3BhZ2VfY29z dAorCSAqIEZvciBwYXJ0aWFsbHktY29ycmVsYXRlZCBpbmRleGVzLCB3ZSBvdWdodCB0byBj aGFyZ2Ugc29tZXdoZXJlIGJldHdlZW4KKwkgKiB0aGVzZSB0d28gZXN0aW1hdGVzLiAgV2Ug Y3VycmVudGx5IGludGVycG9sYXRlIGxpbmVhcmx5IGJldHdlZW4gdGhlCisJICogZXN0aW1h dGVzIGJhc2VkIG9uIHRoZSBjb3JyZWxhdGlvbiBzcXVhcmVkIChYWFggaXMgdGhhdCBhcHBy b3ByaWF0ZT8pLgorCSAqCisJICogSWYgaXQncyBhbiBpbmRleC1vbmx5IHNjYW4sIHRoZW4g d2Ugd2lsbCBub3QgbmVlZCB0byBmZXRjaCBhbnkgaGVhcAorCSAqIHBhZ2VzIGZvciB3aGlj aCB0aGUgdmlzaWJpbGl0eSBtYXAgc2hvd3MgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZS4KKwkg KiBIZW5jZSwgcmVkdWNlIHRoZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIGhlYXAgZmV0Y2hlcyBh Y2NvcmRpbmdseS4KKwkgKiBXZSB1c2UgdGhlIG1lYXN1cmVkIGZyYWN0aW9uIG9mIHRoZSBl bnRpcmUgaGVhcCB0aGF0IGlzIGFsbC12aXNpYmxlLAorCSAqIHdoaWNoIG1pZ2h0IG5vdCBi ZSBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgdG8gdGhlIHN1YnNldCBvZiB0aGUgaGVhcAorCSAq IHRoYXQgdGhpcyBxdWVyeSB3aWxsIGZldGNoOyBidXQgaXQncyBub3QgY2xlYXIgaG93IHRv IGRvIGJldHRlci4KKwkgKi0tLS0tLS0tLS0KKwkgKi8KKwlpZiAobG9vcF9jb3VudCA+IDEp CisJeworCQkvKgorCQkgKiBGb3IgcmVwZWF0ZWQgaW5kZXhzY2FucywgdGhlIGFwcHJvcHJp YXRlIGVzdGltYXRlIGZvciB0aGUKKwkJICogdW5jb3JyZWxhdGVkIGNhc2UgaXMgdG8gc2Nh bGUgdXAgdGhlIG51bWJlciBvZiB0dXBsZXMgZmV0Y2hlZCBpbgorCQkgKiB0aGUgTWFja2Vy dCBhbmQgTG9obWFuIGZvcm11bGEgYnkgdGhlIG51bWJlciBvZiBzY2Fucywgc28gdGhhdCB3 ZQorCQkgKiBlc3RpbWF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIGZldGNoZWQgYnkgYWxsIHRo ZSBzY2FuczsgdGhlbgorCQkgKiBwcm8tcmF0ZSB0aGUgY29zdHMgZm9yIG9uZSBzY2FuLiAg SW4gdGhpcyBjYXNlIHdlIGFzc3VtZSBhbGwgdGhlCisJCSAqIGZldGNoZXMgYXJlIHJhbmRv bSBhY2Nlc3Nlcy4KKwkJICovCisJCXBhZ2VzX2ZldGNoZWQgPSBpbmRleF9wYWdlc19mZXRj aGVkKHR1cGxlc19mZXRjaGVkICogbG9vcF9jb3VudCwKKwkJCQkJCQkJCQkJYmFzZXJlbC0+ cGFnZXMsCisJCQkJCQkJCQkJCShkb3VibGUpIGluZGV4LT5wYWdlcywKKwkJCQkJCQkJCQkJ cm9vdCk7CisKKwkJcmFuZF9oZWFwX3BhZ2VzID0gcGFnZXNfZmV0Y2hlZDsKKworCQltYXhf SU9fY29zdCA9IChwYWdlc19mZXRjaGVkICogc3BjX3JhbmRvbV9wYWdlX2Nvc3QpIC8gbG9v cF9jb3VudDsKKworCQkvKgorCQkgKiBJbiB0aGUgcGVyZmVjdGx5IGNvcnJlbGF0ZWQgY2Fz ZSwgdGhlIG51bWJlciBvZiBwYWdlcyB0b3VjaGVkIGJ5CisJCSAqIGVhY2ggc2NhbiBpcyBz ZWxlY3Rpdml0eSAqIHRhYmxlX3NpemUsIGFuZCB3ZSBjYW4gdXNlIHRoZSBNYWNrZXJ0CisJ CSAqIGFuZCBMb2htYW4gZm9ybXVsYSBhdCB0aGUgcGFnZSBsZXZlbCB0byBlc3RpbWF0ZSBo b3cgbXVjaCB3b3JrIGlzCisJCSAqIHNhdmVkIGJ5IGNhY2hpbmcgYWNyb3NzIHNjYW5zLiAg V2Ugc3RpbGwgYXNzdW1lIGFsbCB0aGUgZmV0Y2hlcyBhcmUKKwkJICogcmFuZG9tLCB0aG91 Z2gsIHdoaWNoIGlzIGFuIG92ZXJlc3RpbWF0ZSB0aGF0J3MgaGFyZCB0byBjb3JyZWN0IGZv cgorCQkgKiB3aXRob3V0IGRvdWJsZS1jb3VudGluZyB0aGUgY2FjaGUgZWZmZWN0cy4gIChC dXQgaW4gbW9zdCBjYXNlcworCQkgKiB3aGVyZSBzdWNoIGEgcGxhbiBpcyBhY3R1YWxseSBp bnRlcmVzdGluZywgb25seSBvbmUgcGFnZSB3b3VsZCBnZXQKKwkJICogZmV0Y2hlZCBwZXIg c2NhbiBhbnl3YXksIHNvIGl0IHNob3VsZG4ndCBtYXR0ZXIgbXVjaC4pCisJCSAqLworCQlw YWdlc19mZXRjaGVkID0gY2VpbChpbmRleFNlbGVjdGl2aXR5ICogKGRvdWJsZSkgYmFzZXJl bC0+cGFnZXMpOworCisJCXBhZ2VzX2ZldGNoZWQgPSBpbmRleF9wYWdlc19mZXRjaGVkKHBh Z2VzX2ZldGNoZWQgKiBsb29wX2NvdW50LAorCQkJCQkJCQkJCQliYXNlcmVsLT5wYWdlcywK KwkJCQkJCQkJCQkJKGRvdWJsZSkgaW5kZXgtPnBhZ2VzLAorCQkJCQkJCQkJCQlyb290KTsK KworCQltaW5fSU9fY29zdCA9IChwYWdlc19mZXRjaGVkICogc3BjX3JhbmRvbV9wYWdlX2Nv c3QpIC8gbG9vcF9jb3VudDsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogTm9ybWFsIGNh c2U6IGFwcGx5IHRoZSBNYWNrZXJ0IGFuZCBMb2htYW4gZm9ybXVsYSwgYW5kIHRoZW4KKwkJ ICogaW50ZXJwb2xhdGUgYmV0d2VlbiB0aGF0IGFuZCB0aGUgY29ycmVsYXRpb24tZGVyaXZl ZCByZXN1bHQuCisJCSAqLworCQlwYWdlc19mZXRjaGVkID0gaW5kZXhfcGFnZXNfZmV0Y2hl ZCh0dXBsZXNfZmV0Y2hlZCwKKwkJCQkJCQkJCQkJYmFzZXJlbC0+cGFnZXMsCisJCQkJCQkJ CQkJCShkb3VibGUpIGluZGV4LT5wYWdlcywKKwkJCQkJCQkJCQkJcm9vdCk7CisKKwkJcmFu ZF9oZWFwX3BhZ2VzID0gcGFnZXNfZmV0Y2hlZDsKKworCQkvKiBtYXhfSU9fY29zdCBpcyBm b3IgdGhlIHBlcmZlY3RseSB1bmNvcnJlbGF0ZWQgY2FzZSAoY3NxdWFyZWQ9MCkgKi8KKwkJ bWF4X0lPX2Nvc3QgPSBwYWdlc19mZXRjaGVkICogc3BjX3JhbmRvbV9wYWdlX2Nvc3Q7CisK KwkJLyogbWluX0lPX2Nvc3QgaXMgZm9yIHRoZSBwZXJmZWN0bHkgY29ycmVsYXRlZCBjYXNl IChjc3F1YXJlZD0xKSAqLworCQlwYWdlc19mZXRjaGVkID0gY2VpbChpbmRleFNlbGVjdGl2 aXR5ICogKGRvdWJsZSkgYmFzZXJlbC0+cGFnZXMpOworCisJCWlmIChwYWdlc19mZXRjaGVk ID4gMCkKKwkJeworCQkJbWluX0lPX2Nvc3QgPSBzcGNfcmFuZG9tX3BhZ2VfY29zdDsKKwkJ CWlmIChwYWdlc19mZXRjaGVkID4gMSkKKwkJCQltaW5fSU9fY29zdCArPSAocGFnZXNfZmV0 Y2hlZCAtIDEpICogc3BjX3NlcV9wYWdlX2Nvc3Q7CisJCX0KKwkJZWxzZQorCQkJbWluX0lP X2Nvc3QgPSAwOworCX0KKworCWlmIChwYXJ0aWFsX3BhdGgpCisJeworCQkvKgorCQkgKiBF c3RpbWF0ZSB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgcmVxdWlyZWQgdG8gc2Nh biBpbmRleC4gVXNlCisJCSAqIHRoZSBudW1iZXIgb2YgaGVhcCBwYWdlcyBjb21wdXRlZCBj b25zaWRlcmluZyBoZWFwIGZldGNoZXMgd29uJ3QgYmUKKwkJICogc2VxdWVudGlhbCBhcyBm b3IgcGFyYWxsZWwgc2NhbnMgdGhlIHBhZ2VzIGFyZSBhY2Nlc3NlZCBpbiByYW5kb20KKwkJ ICogb3JkZXIuCisJCSAqLworCQlwYXRoLT5pcGF0aC5wYXRoLnBhcmFsbGVsX3dvcmtlcnMg PSBjb21wdXRlX3BhcmFsbGVsX3dvcmtlcihiYXNlcmVsLAorCQkJCQkJCQkJCQkJCQkJICBy YW5kX2hlYXBfcGFnZXMsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4X3BhZ2VzLAorCQkJCQkJ CQkJCQkJCQkJICBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyKTsKKworCQkvKgor CQkgKiBGYWxsIG91dCBpZiB3b3JrZXJzIGNhbid0IGJlIGFzc2lnbmVkIGZvciBwYXJhbGxl bCBzY2FuLCBiZWNhdXNlIGluCisJCSAqIHN1Y2ggYSBjYXNlIHRoaXMgcGF0aCB3aWxsIGJl IHJlamVjdGVkLiAgU28gdGhlcmUgaXMgbm8gYmVuZWZpdCBpbgorCQkgKiBkb2luZyBleHRy YSBjb21wdXRhdGlvbi4KKwkJICovCisJCWlmIChwYXRoLT5pcGF0aC5wYXRoLnBhcmFsbGVs X3dvcmtlcnMgPD0gMCkKKwkJCXJldHVybjsKKworCQlwYXRoLT5pcGF0aC5wYXRoLnBhcmFs bGVsX2F3YXJlID0gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIE5vdyBpbnRlcnBvbGF0ZSBiYXNl ZCBvbiBlc3RpbWF0ZWQgaW5kZXggb3JkZXIgY29ycmVsYXRpb24gdG8gZ2V0IHRvdGFsCisJ ICogZGlzayBJL08gY29zdCBmb3IgbWFpbiB0YWJsZSBhY2Nlc3Nlcy4KKwkgKi8KKwljc3F1 YXJlZCA9IGluZGV4Q29ycmVsYXRpb24gKiBpbmRleENvcnJlbGF0aW9uOworCisJcnVuX2Nv c3QgKz0gbWF4X0lPX2Nvc3QgKyBjc3F1YXJlZCAqIChtaW5fSU9fY29zdCAtIG1heF9JT19j b3N0KTsKKworCS8qCisJICogRXN0aW1hdGUgQ1BVIGNvc3RzIHBlciB0dXBsZS4KKwkgKgor CSAqIFdoYXQgd2Ugd2FudCBoZXJlIGlzIGNwdV90dXBsZV9jb3N0IHBsdXMgdGhlIGV2YWx1 YXRpb24gY29zdHMgb2YgYW55CisJICogcXVhbCBjbGF1c2VzIHRoYXQgd2UgaGF2ZSB0byBl dmFsdWF0ZSBhcyBxcHF1YWxzLgorCSAqLworCWNvc3RfcXVhbF9ldmFsKCZxcHF1YWxfY29z dCwgcXBxdWFscywgcm9vdCk7CisKKwlzdGFydHVwX2Nvc3QgKz0gcXBxdWFsX2Nvc3Quc3Rh cnR1cDsKKwljcHVfcGVyX3R1cGxlID0gY3B1X3R1cGxlX2Nvc3QgKyBxcHF1YWxfY29zdC5w ZXJfdHVwbGU7CisKKwljcHVfcnVuX2Nvc3QgKz0gY3B1X3Blcl90dXBsZSAqIHR1cGxlc19m ZXRjaGVkOworCisJLyogdGxpc3QgZXZhbCBjb3N0cyBhcmUgcGFpZCBwZXIgb3V0cHV0IHJv dywgbm90IHBlciB0dXBsZSBzY2FubmVkICovCisJc3RhcnR1cF9jb3N0ICs9IHBhdGgtPmlw YXRoLnBhdGgucGF0aHRhcmdldC0+Y29zdC5zdGFydHVwOworCWNwdV9ydW5fY29zdCArPSBw YXRoLT5pcGF0aC5wYXRoLnBhdGh0YXJnZXQtPmNvc3QucGVyX3R1cGxlICogcGF0aC0+aXBh dGgucGF0aC5yb3dzOworCisJLyogQWRqdXN0IGNvc3RpbmcgZm9yIHBhcmFsbGVsaXNtLCBp ZiB1c2VkLiAqLworCWlmIChwYXRoLT5pcGF0aC5wYXRoLnBhcmFsbGVsX3dvcmtlcnMgPiAw KQorCXsKKwkJZG91YmxlCQlwYXJhbGxlbF9kaXZpc29yID0gZ2V0X3BhcmFsbGVsX2Rpdmlz b3IoJnBhdGgtPmlwYXRoLnBhdGgpOworCisJCXBhdGgtPmlwYXRoLnBhdGgucm93cyA9IGNs YW1wX3Jvd19lc3QocGF0aC0+aXBhdGgucGF0aC5yb3dzIC8gcGFyYWxsZWxfZGl2aXNvcik7 CisKKwkJLyogVGhlIENQVSBjb3N0IGlzIGRpdmlkZWQgYW1vbmcgYWxsIHRoZSB3b3JrZXJz LiAqLworCQljcHVfcnVuX2Nvc3QgLz0gcGFyYWxsZWxfZGl2aXNvcjsKKwl9CisKKwlydW5f Y29zdCArPSBjcHVfcnVuX2Nvc3Q7CisKKwlwYXRoLT5pcGF0aC5wYXRoLnN0YXJ0dXBfY29z dCA9IHN0YXJ0dXBfY29zdDsKKwlwYXRoLT5pcGF0aC5wYXRoLnRvdGFsX2Nvc3QgPSBzdGFy dHVwX2Nvc3QgKyBydW5fY29zdDsKK30KKwogLyoKICAqIGV4dHJhY3Rfbm9uaW5kZXhfY29u ZGl0aW9ucwogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2lu ZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4 IDcyMWEwNzUyMDE4Li4xMzI3MThmYjczNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9pbmR4cGF0aC5jCkBAIC0xNywxMiArMTcsMTYgQEAKIAogI2luY2x1ZGUgPG1hdGguaD4K IAorI2luY2x1ZGUgImFjY2Vzcy9icmluX2ludGVybmFsLmgiCisjaW5jbHVkZSAiYWNjZXNz L3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFz cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRl ICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKQEAgLTMyLDEwICszNiwxMyBAQAogI2luY2x1ZGUg Im9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1 bmNzLmgiCiAKIAorYm9vbAkJZW5hYmxlX2JyaW5zb3J0ID0gdHJ1ZTsKKwogLyogWFhYIHNl ZSBQYXJ0Q29sbE1hdGNoZXNFeHByQ29sbCAqLwogI2RlZmluZSBJbmRleENvbGxNYXRjaGVz RXhwckNvbGwoaWR4Y29sbGF0aW9uLCBleHByY29sbGF0aW9uKSBcCiAJKChpZHhjb2xsYXRp b24pID09IEludmFsaWRPaWQgfHwgKGlkeGNvbGxhdGlvbikgPT0gKGV4cHJjb2xsYXRpb24p KQpAQCAtMTEwMyw2ICsxMTEwLDE4MiBAQCBidWlsZF9pbmRleF9wYXRocyhQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQl9CiAJfQogCisJLyoKKwkgKiBJZiB0aGlz IGlzIGEgQlJJTiBpbmRleCB3aXRoIHN1aXRhYmxlIG9wY2xhc3MgKG1pbm1heCBvciBzdWNo KSwgd2UgbWF5CisJICogdHJ5IGRvaW5nIEJSSU4gc29ydC4gQlJJTiBpbmRleGVzIGFyZSBu b3Qgb3JkZXJlZCBhbmQgYW1jYW5vcmRlcmJ5b3AKKwkgKiBpcyBzZXQgdG8gZmFsc2UsIHNv IHdlIHByb2JhYmx5IHdpbGwgbmVlZCBzb21lIG5ldyBvcGNsYXNzIGZsYWcgdG8KKwkgKiBt YXJrIGluZGV4ZXMgdGhhdCBzdXBwb3J0IHRoaXMuCisJICovCisJaWYgKGVuYWJsZV9icmlu c29ydCAmJiBwYXRoa2V5c19wb3NzaWJseV91c2VmdWwpCisJeworCQlMaXN0Q2VsbCAqbGM7 CisJCVJlbGF0aW9uIHJlbDIgPSByZWxhdGlvbl9vcGVuKGluZGV4LT5pbmRleG9pZCwgTm9M b2NrKTsKKwkJaW50CQkgaWR4OworCisJCS8qCisJCSAqIFRyeSBnZW5lcmF0aW5nIHNvcnRl ZCBwYXRocyBmb3IgZWFjaCBrZXkgd2l0aCB0aGUgcmlnaHQgb3BjbGFzcy4KKwkJICovCisJ CWlkeCA9IC0xOworCQlmb3JlYWNoKGxjLCBpbmRleC0+aW5kZXh0bGlzdCkKKwkJeworCQkJ VGFyZ2V0RW50cnkJICAgKmluZGV4dGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7 CisJCQlCcmluU29ydFBhdGggICAqYnBhdGg7CisJCQlPaWQJCQkJcmFuZ2Vwcm9jOworCQkJ QXR0ck51bWJlcgkJYXR0bnVtOworCisJCQlpZHgrKzsKKwkJCWF0dG51bSA9IChpZHggKyAx KTsKKworCisJCQkvKiBYWFggaWdub3JlIG5vbi1CUklOIGluZGV4ZXMgKi8KKwkJCWlmIChy ZWwyLT5yZF9yZWwtPnJlbGFtICE9IEJSSU5fQU1fT0lEKQorCQkJCWNvbnRpbnVlOworCisJ CQkvKgorCQkJICogWFhYIElnbm9yZSBrZXlzIG5vdCB1c2luZyBhbiBvcGNsYXNzIHdpdGgg dGhlICJyYW5nZXMiIHByb2MuCisJCQkgKiBGb3Igbm93IHdlIG9ubHkgZG8gdGhpcyBmb3Ig c29tZSBtaW5tYXggb3BjbGFzc2VzLCBidXQgYWRkaW5nCisJCQkgKiBpdCB0byBhbGwgbWlu bWF4IGlzIHNpbXBsZSwgYW5kIGFkZGluZyBpdCB0byBtaW5tYXgtbXVsdGkKKwkJCSAqIHNo b3VsZCBub3QgYmUgdmVyeSBoYXJkLgorCQkJICovCisJCQlyYW5nZXByb2MgPSBpbmRleF9n ZXRwcm9jaWQocmVsMiwgYXR0bnVtLCBCUklOX1BST0NOVU1fUkFOR0VTKTsKKwkJCWlmICgh T2lkSXNWYWxpZChyYW5nZXByb2MpKQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICog WFhYIHN0dWZmIGV4dHJhY3RlZCBmcm9tIGJ1aWxkX2luZGV4X3BhdGhrZXlzLCBleGNlcHQg dGhhdCB3ZQorCQkJICogb25seSBkZWFsIHdpdGggYSBzaW5nbGUgaW5kZXgga2V5IChwcm9k dWNpbmcgYSBzaW5nbGUgcGF0aGtleSksCisJCQkgKiBzbyB3ZSBvbmx5IHNvcnQgb24gYSBz aW5nbGUgY29sdW1uLiBJIGd1ZXNzIHdlIGNvdWxkIHVzZSBtb3JlCisJCQkgKiBpbmRleCBr ZXlzIGFuZCBzb3J0IG9uIG1vcmUgZXhwcmVzc2lvbnM/IFdvdWxkIHRoYXQgbWVhbiB0aGVz ZQorCQkJICoga2V5cyBuZWVkIHRvIGJlIHJhdGhlciB3ZWxsIGNvcnJlbGF0ZWQ/IEluIGFu eSBjYXNlLCBpdCBzZWVtcworCQkJICogcmF0aGVyIGNvbXBsZXggdG8gaW1wbGVtZW50LCBz byBJIGxlYXZlIGl0IGFzIGEgcG9zc2libGUKKwkJCSAqIGZ1dHVyZSBpbXByb3ZlbWVudC4K KwkJCSAqCisJCQkgKiBYWFggVGhpcyBjb3VsZCBhbHNvIHVzZSB0aGUgb3RoZXIgQlJJTiBr ZXlzIChldmVuIGZyb20gb3RoZXIKKwkJCSAqIGluZGV4ZXMpIGluIGEgZGlmZmVyZW50IHdh eSAtIHdlIG1pZ2h0IHVzZSB0aGUgb3RoZXIgcmFuZ2VzCisJCQkgKiB0byBxdWlja2x5IGVs aW1pbmF0ZSBzb21lIG9mIHRoZSBjaHVua3MsIGVzc2VudGlhbGx5IGxpa2UgYQorCQkJICog Yml0bWFwLCBidXQgbWF5YmUgd2l0aG91dCB1c2luZyB0aGUgYml0bWFwLiBPciB3ZSBtaWdo dCB1c2UKKwkJCSAqIG90aGVyIGluZGV4ZXMgdGhyb3VnaCBiaXRtYXBzLgorCQkJICoKKwkJ CSAqIFhYWCBUaGlzIGZha2VzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIGJlY2F1c2Ugd2Ug ZG9uJ3Qgc3RvcmUKKwkJCSAqIHRoZSBidHJlZSBvcGNsYXNzIGluIHRoZSBpbmRleCwgaW5z dGVhZCB3ZSB1c2UgdGhlIGRlZmF1bHQKKwkJCSAqIG9uZSBmb3IgdGhlIGtleSBkYXRhIHR5 cGUuIEFuZCBCUklOIGRvZXMgbm90IGFsbG93IHNwZWNpZnlpbmcKKwkJCSAqCisJCQkgKiBY WFggV2UgZG9uJ3QgYWRkIHRoZSBwYXRoIHRvIHJlc3VsdCwgYmVjYXVzZSB0aGlzIGZ1bmN0 aW9uIGlzCisJCQkgKiBzdXBwb3NlZCB0byBnZW5lcmF0ZSBJbmRleFBhdGhzLiBJbnN0ZWFk LCB3ZSBqdXN0IGFkZCB0aGUgcGF0aAorCQkJICogdXNpbmcgYWRkX3BhdGgoKS4gV2Ugc2hv dWxkIGJlIGJ1aWxkaW5nIHRoaXMgaW4gYSBkaWZmZXJlbnQKKwkJCSAqIHBsYWNlLCBwZXJo YXBzIGluIGNyZWF0ZV9pbmRleF9wYXRocygpIG9yIHNvLgorCQkJICoKKwkJCSAqIFhYWCBC eSBidWlsZGluZyBpdCBlbHNld2hlcmUsIHdlIGNvdWxkIGFsc28gbGV2ZXJhZ2UgdGhlIGlu ZGV4CisJCQkgKiBwYXRocyB3ZSd2ZSBidWlsdCBoZXJlLCBwYXJ0aWN1bGFybHkgdGhlIGJp dG1hcCBpbmRleCBwYXRocywKKwkJCSAqIHdoaWNoIHdlIGNvdWxkIHVzZSB0byBlbGltaW5h dGUgbWFueSBvZiB0aGUgcmFuZ2VzLgorCQkJICoKKwkJCSAqIFhYWCBXZSBkb24ndCBoYXZl IGFueSBleHBsaWNpdCBvcmRlcmluZyBhc3NvY2lhdGVkIHdpdGggdGhlCisJCQkgKiBCUklO IGluZGV4LCBlLmcuIHdlIGRvbid0IGhhdmUgQVNDL0RFU0MgYW5kIE5VTExTIEZJUlNUL0xB U1QuCisJCQkgKiBTbyB0aGlzIGlzIG5vdCBlbmNvZGVkIGluIHRoZSBpbmRleCwgYW5kIHdl IGNhbiBzYXRpc2Z5IGFsbAorCQkJICogdGhlc2UgY2FzZXMgLSBidXQgd2UgbmVlZCB0byBh ZGQgcGF0aHMgZm9yIGVhY2ggY29tYmluYXRpb24uCisJCQkgKiBJIHdvbmRlciBpZiB0aGVy ZSdzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgorCQkJICovCisKKwkJCS8qIEFTQyBOVUxM UyBMQVNUICovCisJCQlpbmRleF9wYXRoa2V5cyA9IGJ1aWxkX2luZGV4X3BhdGhrZXlzX2Jy aW4ocm9vdCwgaW5kZXgsIGluZGV4dGxlLAorCQkJCQkJCQkJCQkJCSAgIGlkeCwKKwkJCQkJ CQkJCQkJCQkgICBmYWxzZSwJLyogcmV2ZXJzZV9zb3J0ICovCisJCQkJCQkJCQkJCQkJICAg ZmFsc2UpOwkvKiBudWxsc19maXJzdCAqLworCisJCQl1c2VmdWxfcGF0aGtleXMgPSB0cnVu Y2F0ZV91c2VsZXNzX3BhdGhrZXlzKHJvb3QsIHJlbCwKKwkJCQkJCQkJCQkJCQkJaW5kZXhf cGF0aGtleXMpOworCisJCQlpZiAodXNlZnVsX3BhdGhrZXlzICE9IE5JTCkKKwkJCXsKKwkJ CQlicGF0aCA9IGNyZWF0ZV9icmluc29ydF9wYXRoKHJvb3QsIGluZGV4LAorCQkJCQkJCQkJ CQkgaW5kZXhfY2xhdXNlcywKKwkJCQkJCQkJCQkJIHVzZWZ1bF9wYXRoa2V5cywKKwkJCQkJ CQkJCQkJIEZvcndhcmRTY2FuRGlyZWN0aW9uLAorCQkJCQkJCQkJCQkgaW5kZXhfb25seV9z Y2FuLAorCQkJCQkJCQkJCQkgb3V0ZXJfcmVsaWRzLAorCQkJCQkJCQkJCQkgbG9vcF9jb3Vu dCwKKwkJCQkJCQkJCQkJIGZhbHNlKTsKKworCQkJCS8qIGNoZWF0IGFuZCBhZGQgaXQgYW55 d2F5ICovCisJCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBicGF0aCk7CisJCQl9CisKKwkJ CS8qIERFU0MgTlVMTFMgTEFTVCAqLworCQkJaW5kZXhfcGF0aGtleXMgPSBidWlsZF9pbmRl eF9wYXRoa2V5c19icmluKHJvb3QsIGluZGV4LCBpbmRleHRsZSwKKwkJCQkJCQkJCQkJCQkg ICBpZHgsCisJCQkJCQkJCQkJCQkJICAgdHJ1ZSwJLyogcmV2ZXJzZV9zb3J0ICovCisJCQkJ CQkJCQkJCQkJICAgZmFsc2UpOwkvKiBudWxsc19maXJzdCAqLworCisJCQl1c2VmdWxfcGF0 aGtleXMgPSB0cnVuY2F0ZV91c2VsZXNzX3BhdGhrZXlzKHJvb3QsIHJlbCwKKwkJCQkJCQkJ CQkJCQkJaW5kZXhfcGF0aGtleXMpOworCisJCQlpZiAodXNlZnVsX3BhdGhrZXlzICE9IE5J TCkKKwkJCXsKKwkJCQlicGF0aCA9IGNyZWF0ZV9icmluc29ydF9wYXRoKHJvb3QsIGluZGV4 LAorCQkJCQkJCQkJCQkgaW5kZXhfY2xhdXNlcywKKwkJCQkJCQkJCQkJIHVzZWZ1bF9wYXRo a2V5cywKKwkJCQkJCQkJCQkJIEJhY2t3YXJkU2NhbkRpcmVjdGlvbiwKKwkJCQkJCQkJCQkJ IGluZGV4X29ubHlfc2NhbiwKKwkJCQkJCQkJCQkJIG91dGVyX3JlbGlkcywKKwkJCQkJCQkJ CQkJIGxvb3BfY291bnQsCisJCQkJCQkJCQkJCSBmYWxzZSk7CisKKwkJCQkvKiBjaGVhdCBh bmQgYWRkIGl0IGFueXdheSAqLworCQkJCWFkZF9wYXRoKHJlbCwgKFBhdGggKikgYnBhdGgp OworCQkJfQorCisJCQkvKiBBU0MgTlVMTFMgRklSU1QgKi8KKwkJCWluZGV4X3BhdGhrZXlz ID0gYnVpbGRfaW5kZXhfcGF0aGtleXNfYnJpbihyb290LCBpbmRleCwgaW5kZXh0bGUsCisJ CQkJCQkJCQkJCQkJICAgaWR4LAorCQkJCQkJCQkJCQkJCSAgIGZhbHNlLAkvKiByZXZlcnNl X3NvcnQgKi8KKwkJCQkJCQkJCQkJCQkgICB0cnVlKTsJLyogbnVsbHNfZmlyc3QgKi8KKwor CQkJdXNlZnVsX3BhdGhrZXlzID0gdHJ1bmNhdGVfdXNlbGVzc19wYXRoa2V5cyhyb290LCBy ZWwsCisJCQkJCQkJCQkJCQkJCWluZGV4X3BhdGhrZXlzKTsKKworCQkJaWYgKHVzZWZ1bF9w YXRoa2V5cyAhPSBOSUwpCisJCQl7CisJCQkJYnBhdGggPSBjcmVhdGVfYnJpbnNvcnRfcGF0 aChyb290LCBpbmRleCwKKwkJCQkJCQkJCQkJIGluZGV4X2NsYXVzZXMsCisJCQkJCQkJCQkJ CSB1c2VmdWxfcGF0aGtleXMsCisJCQkJCQkJCQkJCSBGb3J3YXJkU2NhbkRpcmVjdGlvbiwK KwkJCQkJCQkJCQkJIGluZGV4X29ubHlfc2NhbiwKKwkJCQkJCQkJCQkJIG91dGVyX3JlbGlk cywKKwkJCQkJCQkJCQkJIGxvb3BfY291bnQsCisJCQkJCQkJCQkJCSBmYWxzZSk7CisKKwkJ CQkvKiBjaGVhdCBhbmQgYWRkIGl0IGFueXdheSAqLworCQkJCWFkZF9wYXRoKHJlbCwgKFBh dGggKikgYnBhdGgpOworCQkJfQorCisJCQkvKiBERVNDIE5VTExTIEZJUlNUICovCisJCQlp bmRleF9wYXRoa2V5cyA9IGJ1aWxkX2luZGV4X3BhdGhrZXlzX2JyaW4ocm9vdCwgaW5kZXgs IGluZGV4dGxlLAorCQkJCQkJCQkJCQkJCSAgIGlkeCwKKwkJCQkJCQkJCQkJCQkgICB0cnVl LAkvKiByZXZlcnNlX3NvcnQgKi8KKwkJCQkJCQkJCQkJCQkgICB0cnVlKTsJLyogbnVsbHNf Zmlyc3QgKi8KKworCQkJdXNlZnVsX3BhdGhrZXlzID0gdHJ1bmNhdGVfdXNlbGVzc19wYXRo a2V5cyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCWluZGV4X3BhdGhrZXlzKTsKKworCQkJ aWYgKHVzZWZ1bF9wYXRoa2V5cyAhPSBOSUwpCisJCQl7CisJCQkJYnBhdGggPSBjcmVhdGVf YnJpbnNvcnRfcGF0aChyb290LCBpbmRleCwKKwkJCQkJCQkJCQkJIGluZGV4X2NsYXVzZXMs CisJCQkJCQkJCQkJCSB1c2VmdWxfcGF0aGtleXMsCisJCQkJCQkJCQkJCSBCYWNrd2FyZFNj YW5EaXJlY3Rpb24sCisJCQkJCQkJCQkJCSBpbmRleF9vbmx5X3NjYW4sCisJCQkJCQkJCQkJ CSBvdXRlcl9yZWxpZHMsCisJCQkJCQkJCQkJCSBsb29wX2NvdW50LAorCQkJCQkJCQkJCQkg ZmFsc2UpOworCisJCQkJLyogY2hlYXQgYW5kIGFkZCBpdCBhbnl3YXkgKi8KKwkJCQlhZGRf cGF0aChyZWwsIChQYXRoICopIGJwYXRoKTsKKwkJCX0KKwkJfQorCisJCXJlbGF0aW9uX2Ns b3NlKHJlbDIsIE5vTG9jayk7CisJfQorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMKaW5kZXggYzRlN2Y5N2Y2ODcuLjEwZWEy M2E1MDFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5 cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMKQEAgLTI3 LDYgKzI3LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMuaCIKICNpbmNsdWRlICJw YXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIAogc3RhdGljIGJvb2wgcGF0aGtl eV9pc19yZWR1bmRhbnQoUGF0aEtleSAqbmV3X3BhdGhrZXksIExpc3QgKnBhdGhrZXlzKTsK QEAgLTYyMiw2ICs2MjMsNTQgQEAgYnVpbGRfaW5kZXhfcGF0aGtleXMoUGxhbm5lckluZm8g KnJvb3QsCiAJcmV0dXJuIHJldHZhbDsKIH0KIAorCitMaXN0ICoKK2J1aWxkX2luZGV4X3Bh dGhrZXlzX2JyaW4oUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkgIEluZGV4T3B0SW5mbyAq aW5kZXgsCisJCQkJCQkgIFRhcmdldEVudHJ5ICAqdGxlLAorCQkJCQkJICBpbnQgaWR4LAor CQkJCQkJICBib29sIHJldmVyc2Vfc29ydCwKKwkJCQkJCSAgYm9vbCBudWxsc19maXJzdCkK K3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisJUGF0aEtleQkJICAgKmNwYXRoa2V5 OworCU9pZAkJCQlzb3J0b3BmYW1pbHk7CisKKwkvKgorCSAqIEdldCBkZWZhdWx0IGJ0cmVl IG9wZmFtaWx5IGZvciB0aGUgdHlwZSwgZXh0cmFjdGVkIGZyb20gdGhlCisJICogZW50cnkg aW4gaW5kZXggdGFyZ2V0bGlzdC4KKwkgKgorCSAqIFhYWCBJcyB0aGVyZSBhIGJldHRlciAv IG1vcmUgY29ycmVjdCB3YXkgdG8gZG8gdGhpcz8KKwkgKi8KKwl0eXBjYWNoZSA9IGxvb2t1 cF90eXBlX2NhY2hlKGV4cHJUeXBlKChOb2RlICopIHRsZS0+ZXhwciksCisJCQkJCQkJCSBU WVBFQ0FDSEVfQlRSRUVfT1BGQU1JTFkpOworCXNvcnRvcGZhbWlseSA9IHR5cGNhY2hlLT5i dHJlZV9vcGY7CisKKwkvKgorCSAqIE9LLCB0cnkgdG8gbWFrZSBhIGNhbm9uaWNhbCBwYXRo a2V5IGZvciB0aGlzIHNvcnQga2V5LiAgTm90ZSB3ZSdyZQorCSAqIHVuZGVybmVhdGggYW55 IG91dGVyIGpvaW5zLCBzbyBudWxsYWJsZV9yZWxpZHMgc2hvdWxkIGJlIE5VTEwuCisJICov CisJY3BhdGhrZXkgPSBtYWtlX3BhdGhrZXlfZnJvbV9zb3J0aW5mbyhyb290LAorCQkJCQkJ CQkJCSAgdGxlLT5leHByLAorCQkJCQkJCQkJCSAgc29ydG9wZmFtaWx5LAorCQkJCQkJCQkJ CSAgaW5kZXgtPm9wY2ludHlwZVtpZHhdLAorCQkJCQkJCQkJCSAgaW5kZXgtPmluZGV4Y29s bGF0aW9uc1tpZHhdLAorCQkJCQkJCQkJCSAgcmV2ZXJzZV9zb3J0LAorCQkJCQkJCQkJCSAg bnVsbHNfZmlyc3QsCisJCQkJCQkJCQkJICAwLAorCQkJCQkJCQkJCSAgaW5kZXgtPnJlbC0+ cmVsaWRzLAorCQkJCQkJCQkJCSAgZmFsc2UpOworCisJLyoKKwkgKiBUaGVyZSBtYXkgYmUg bm8gcGF0aGtleSBpZiB3ZSBoYXZlbid0IG1hdGNoZWQgYW55IHNvcnRrZXksIGluIHdoaWNo CisJICogY2FzZSBpZ25vcmUgaXQuCisJICovCisJaWYgKCFjcGF0aGtleSkKKwkJcmV0dXJu IE5JTDsKKworCXJldHVybiBsaXN0X21ha2UxKGNwYXRoa2V5KTsKK30KKwogLyoKICAqIHBh cnRrZXlfaXNfYm9vbF9jb25zdGFudF9mb3JfcXVlcnkKICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMTM0MTMwNDc2ZTQuLjJhN2JlMmM0ODkx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xOCw2 ICsxOCw3IEBACiAKICNpbmNsdWRlIDxtYXRoLmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MvZ2Vu YW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfY2xhc3MuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgpAQCAtNDEsNiArNDIs NyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwYXJ0aXRp b25pbmcvcGFydHBydW5lLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAKIAogLyoKQEAgLTEyNCw2ICsxMjYsOCBAQCBzdGF0aWMg U2FtcGxlU2NhbiAqY3JlYXRlX3NhbXBsZXNjYW5fcGxhbihQbGFubmVySW5mbyAqcm9vdCwg UGF0aCAqYmVzdF9wYXRoLAogCQkJCQkJCQkJCSAgTGlzdCAqdGxpc3QsIExpc3QgKnNjYW5f Y2xhdXNlcyk7CiBzdGF0aWMgU2NhbiAqY3JlYXRlX2luZGV4c2Nhbl9wbGFuKFBsYW5uZXJJ bmZvICpyb290LCBJbmRleFBhdGggKmJlc3RfcGF0aCwKIAkJCQkJCQkJICAgTGlzdCAqdGxp c3QsIExpc3QgKnNjYW5fY2xhdXNlcywgYm9vbCBpbmRleG9ubHkpOworc3RhdGljIEJyaW5T b3J0ICpjcmVhdGVfYnJpbnNvcnRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQnJpblNvcnRQ YXRoICpiZXN0X3BhdGgsCisJCQkJCQkJCQkgIExpc3QgKnRsaXN0LCBMaXN0ICpzY2FuX2Ns YXVzZXMpOwogc3RhdGljIEJpdG1hcEhlYXBTY2FuICpjcmVhdGVfYml0bWFwX3NjYW5fcGxh bihQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJICAgQml0bWFwSGVhcFBhdGggKmJl c3RfcGF0aCwKIAkJCQkJCQkJCQkJICAgTGlzdCAqdGxpc3QsIExpc3QgKnNjYW5fY2xhdXNl cyk7CkBAIC0xOTEsNiArMTk1LDkgQEAgc3RhdGljIEluZGV4T25seVNjYW4gKm1ha2VfaW5k ZXhvbmx5c2NhbihMaXN0ICpxcHRsaXN0LCBMaXN0ICpxcHF1YWwsCiAJCQkJCQkJCQkJIExp c3QgKmluZGV4b3JkZXJieSwKIAkJCQkJCQkJCQkgTGlzdCAqaW5kZXh0bGlzdCwKIAkJCQkJ CQkJCQkgU2NhbkRpcmVjdGlvbiBpbmRleHNjYW5kaXIpOworc3RhdGljIEJyaW5Tb3J0ICpt YWtlX2JyaW5zb3J0KExpc3QgKnFwdGxpc3QsIExpc3QgKnFwcXVhbCwgSW5kZXggc2NhbnJl bGlkLAorCQkJCQkJCSAgIE9pZCBpbmRleGlkLCBMaXN0ICppbmRleHF1YWwsIExpc3QgKmlu ZGV4cXVhbG9yaWcsCisJCQkJCQkJICAgU2NhbkRpcmVjdGlvbiBpbmRleHNjYW5kaXIpOwog c3RhdGljIEJpdG1hcEluZGV4U2NhbiAqbWFrZV9iaXRtYXBfaW5kZXhzY2FuKEluZGV4IHNj YW5yZWxpZCwgT2lkIGluZGV4aWQsCiAJCQkJCQkJCQkJCSAgTGlzdCAqaW5kZXhxdWFsLAog CQkJCQkJCQkJCQkgIExpc3QgKmluZGV4cXVhbG9yaWcpOwpAQCAtNDEwLDYgKzQxNyw5IEBA IGNyZWF0ZV9wbGFuX3JlY3Vyc2UoUGxhbm5lckluZm8gKnJvb3QsIFBhdGggKmJlc3RfcGF0 aCwgaW50IGZsYWdzKQogCQljYXNlIFRfQ3VzdG9tU2NhbjoKIAkJCXBsYW4gPSBjcmVhdGVf c2Nhbl9wbGFuKHJvb3QsIGJlc3RfcGF0aCwgZmxhZ3MpOwogCQkJYnJlYWs7CisJCWNhc2Ug VF9CcmluU29ydDoKKwkJCXBsYW4gPSBjcmVhdGVfc2Nhbl9wbGFuKHJvb3QsIGJlc3RfcGF0 aCwgZmxhZ3MpOworCQkJYnJlYWs7CiAJCWNhc2UgVF9IYXNoSm9pbjoKIAkJY2FzZSBUX01l cmdlSm9pbjoKIAkJY2FzZSBUX05lc3RMb29wOgpAQCAtNzc2LDYgKzc4NiwxMyBAQCBjcmVh dGVfc2Nhbl9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBQYXRoICpiZXN0X3BhdGgsIGludCBm bGFncykKIAkJCQkJCQkJCQkJCSAgIHNjYW5fY2xhdXNlcyk7CiAJCQlicmVhazsKIAorCQlj YXNlIFRfQnJpblNvcnQ6CisJCQlwbGFuID0gKFBsYW4gKikgY3JlYXRlX2JyaW5zb3J0X3Bs YW4ocm9vdCwKKwkJCQkJCQkJCQkJCSAoQnJpblNvcnRQYXRoICopIGJlc3RfcGF0aCwKKwkJ CQkJCQkJCQkJCSB0bGlzdCwKKwkJCQkJCQkJCQkJCSBzY2FuX2NsYXVzZXMpOworCQkJYnJl YWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0 eXBlOiAlZCIsCiAJCQkJIChpbnQpIGJlc3RfcGF0aC0+cGF0aHR5cGUpOwpAQCAtMzE4NSw2 ICszMjAyLDIyMyBAQCBjcmVhdGVfaW5kZXhzY2FuX3BsYW4oUGxhbm5lckluZm8gKnJvb3Qs CiAJcmV0dXJuIHNjYW5fcGxhbjsKIH0KIAorLyoKKyAqIGNyZWF0ZV9icmluc29ydF9wbGFu CisgKgkgIFJldHVybnMgYSBicmluc29ydCBwbGFuIGZvciB0aGUgYmFzZSByZWxhdGlvbiBz Y2FubmVkIGJ5ICdiZXN0X3BhdGgnCisgKgkgIHdpdGggcmVzdHJpY3Rpb24gY2xhdXNlcyAn c2Nhbl9jbGF1c2VzJyBhbmQgdGFyZ2V0bGlzdCAndGxpc3QnLgorICoKKyAqIFRoaXMgaXMg bW9zdGx5IGEgc2xpZ2hseSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgY3JlYXRlX2luZGV4c2Nh bl9wbGFuLCB3aXRoCisgKiB0aGUgdW5lY2Vzc2FyeSBwYXJ0cyByZW1vdmVkICh3ZSBkb24n dCBzdXBwb3J0IGluZGV4b25seSBzY2Fucywgb3IgcmVvcmRlcmluZworICogYW5kIHNpbWls YXIgc3R1ZmYpLgorICovCitzdGF0aWMgQnJpblNvcnQgKgorY3JlYXRlX2JyaW5zb3J0X3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCSBCcmluU29ydFBhdGggKmJlc3RfcGF0aCwK KwkJCQkJIExpc3QgKnRsaXN0LAorCQkJCQkgTGlzdCAqc2Nhbl9jbGF1c2VzKQoreworCUJy aW5Tb3J0ICAgKmJyaW5zb3J0X3BsYW47CisJTGlzdAkgICAqaW5kZXhjbGF1c2VzID0gYmVz dF9wYXRoLT5pcGF0aC5pbmRleGNsYXVzZXM7CisJSW5kZXgJCWJhc2VyZWxpZCA9IGJlc3Rf cGF0aC0+aXBhdGgucGF0aC5wYXJlbnQtPnJlbGlkOworCUluZGV4T3B0SW5mbyAqaW5kZXhp bmZvID0gYmVzdF9wYXRoLT5pcGF0aC5pbmRleGluZm87CisJT2lkCQkJaW5kZXhvaWQgPSBp bmRleGluZm8tPmluZGV4b2lkOworCVJlbGF0aW9uCWluZGV4UmVsOworCUxpc3QJICAgKmlu ZGV4cHJzOworCUxpc3QJICAgKnFwcXVhbDsKKwlMaXN0CSAgICpzdHJpcHBlZF9pbmRleHF1 YWxzOworCUxpc3QJICAgKmZpeGVkX2luZGV4cXVhbHM7CisJTGlzdENlbGwgICAqbDsKKwor CUxpc3QJICAgKnBhdGhrZXlzID0gYmVzdF9wYXRoLT5pcGF0aC5wYXRoLnBhdGhrZXlzOwor CisJLyogaXQgc2hvdWxkIGJlIGEgYmFzZSByZWwuLi4gKi8KKwlBc3NlcnQoYmFzZXJlbGlk ID4gMCk7CisJQXNzZXJ0KGJlc3RfcGF0aC0+aXBhdGgucGF0aC5wYXJlbnQtPnJ0ZWtpbmQg PT0gUlRFX1JFTEFUSU9OKTsKKworCS8qCisJICogRXh0cmFjdCB0aGUgaW5kZXggcXVhbCBl eHByZXNzaW9ucyAoc3RyaXBwZWQgb2YgUmVzdHJpY3RJbmZvcykgZnJvbSB0aGUKKwkgKiBJ bmRleENsYXVzZXMgbGlzdCwgYW5kIHByZXBhcmUgYSBjb3B5IHdpdGggaW5kZXggVmFycyBz dWJzdGl0dXRlZCBmb3IKKwkgKiB0YWJsZSBWYXJzLiAgKFRoaXMgc3RlcCBhbHNvIGRvZXMg cmVwbGFjZV9uZXN0bG9vcF9wYXJhbXMgb24gdGhlCisJICogZml4ZWRfaW5kZXhxdWFscy4p CisJICovCisJZml4X2luZGV4cXVhbF9yZWZlcmVuY2VzKHJvb3QsICZiZXN0X3BhdGgtPmlw YXRoLAorCQkJCQkJCSAmc3RyaXBwZWRfaW5kZXhxdWFscywKKwkJCQkJCQkgJmZpeGVkX2lu ZGV4cXVhbHMpOworCisJLyoKKwkgKiBUaGUgcXBxdWFsIGxpc3QgbXVzdCBjb250YWluIGFs bCByZXN0cmljdGlvbnMgbm90IGF1dG9tYXRpY2FsbHkgaGFuZGxlZAorCSAqIGJ5IHRoZSBp bmRleCwgb3RoZXIgdGhhbiBwc2V1ZG9jb25zdGFudCBjbGF1c2VzIHdoaWNoIHdpbGwgYmUg aGFuZGxlZAorCSAqIGJ5IGEgc2VwYXJhdGUgZ2F0aW5nIHBsYW4gbm9kZS4gIEFsbCB0aGUg cHJlZGljYXRlcyBpbiB0aGUgaW5kZXhxdWFscworCSAqIHdpbGwgYmUgY2hlY2tlZCAoZWl0 aGVyIGJ5IHRoZSBpbmRleCBpdHNlbGYsIG9yIGJ5IG5vZGVJbmRleHNjYW4uYyksCisJICog YnV0IGlmIHRoZXJlIGFyZSBhbnkgInNwZWNpYWwiIG9wZXJhdG9ycyBpbnZvbHZlZCB0aGVu IHRoZXkgbXVzdCBiZQorCSAqIGluY2x1ZGVkIGluIHFwcXVhbC4gIFRoZSB1cHNob3QgaXMg dGhhdCBxcHF1YWwgbXVzdCBjb250YWluCisJICogc2Nhbl9jbGF1c2VzIG1pbnVzIHdoYXRl dmVyIGFwcGVhcnMgaW4gaW5kZXhxdWFscy4KKwkgKgorCSAqIGlzX3JlZHVuZGFudF93aXRo X2luZGV4Y2xhdXNlcygpIGRldGVjdHMgY2FzZXMgd2hlcmUgYSBzY2FuIGNsYXVzZSBpcwor CSAqIHByZXNlbnQgaW4gdGhlIGluZGV4Y2xhdXNlcyBsaXN0IG9yIGlzIGdlbmVyYXRlZCBm cm9tIHRoZSBzYW1lCisJICogRXF1aXZhbGVuY2VDbGFzcyBhcyBzb21lIGluZGV4Y2xhdXNl LCBhbmQgaXMgdGhlcmVmb3JlIHJlZHVuZGFudCB3aXRoCisJICogaXQsIHRob3VnaCBub3Qg ZXF1YWwuICAoVGhlIGxhdHRlciBoYXBwZW5zIHdoZW4gaW5keHBhdGguYyBwcmVmZXJzIGEK KwkgKiBkaWZmZXJlbnQgZGVyaXZlZCBlcXVhbGl0eSB0aGFuIHdoYXQgZ2VuZXJhdGVfam9p bl9pbXBsaWVkX2VxdWFsaXRpZXMKKwkgKiBwaWNrZWQgZm9yIGEgcGFyYW1ldGVyaXplZCBz Y2FuJ3MgcHBpX2NsYXVzZXMuKSAgTm90ZSB0aGF0IGl0IHdpbGwgbm90CisJICogbWF0Y2gg dG8gbG9zc3kgaW5kZXggY2xhdXNlcywgd2hpY2ggaXMgY3JpdGljYWwgYmVjYXVzZSB3ZSBo YXZlIHRvCisJICogaW5jbHVkZSB0aGUgb3JpZ2luYWwgY2xhdXNlIGluIHFwcXVhbCBpbiB0 aGF0IGNhc2UuCisJICoKKwkgKiBJbiBzb21lIHNpdHVhdGlvbnMgKHBhcnRpY3VsYXJseSB3 aXRoIE9SJ2QgaW5kZXggY29uZGl0aW9ucykgd2UgbWF5CisJICogaGF2ZSBzY2FuX2NsYXVz ZXMgdGhhdCBhcmUgbm90IGVxdWFsIHRvLCBidXQgYXJlIGxvZ2ljYWxseSBpbXBsaWVkIGJ5 LAorCSAqIHRoZSBpbmRleCBxdWFsczsgc28gd2UgYWxzbyB0cnkgYSBwcmVkaWNhdGVfaW1w bGllZF9ieSgpIGNoZWNrIHRvIHNlZQorCSAqIGlmIHdlIGNhbiBkaXNjYXJkIHF1YWxzIHRo YXQgd2F5LiAgKHByZWRpY2F0ZV9pbXBsaWVkX2J5IGFzc3VtZXMgaXRzCisJICogZmlyc3Qg aW5wdXQgY29udGFpbnMgb25seSBpbW11dGFibGUgZnVuY3Rpb25zLCBzbyB3ZSBoYXZlIHRv IGNoZWNrCisJICogdGhhdC4pCisJICoKKwkgKiBOb3RlOiBpZiB5b3UgY2hhbmdlIHRoaXMg Yml0IG9mIGNvZGUgeW91IHNob3VsZCBhbHNvIGxvb2sgYXQKKwkgKiBleHRyYWN0X25vbmlu ZGV4X2NvbmRpdGlvbnMoKSBpbiBjb3N0c2l6ZS5jLgorCSAqLworCXFwcXVhbCA9IE5JTDsK Kwlmb3JlYWNoKGwsIHNjYW5fY2xhdXNlcykKKwl7CisJCVJlc3RyaWN0SW5mbyAqcmluZm8g PSBsZmlyc3Rfbm9kZShSZXN0cmljdEluZm8sIGwpOworCisJCWlmIChyaW5mby0+cHNldWRv Y29uc3RhbnQpCisJCQljb250aW51ZTsJCQkvKiB3ZSBtYXkgZHJvcCBwc2V1ZG9jb25zdGFu dHMgaGVyZSAqLworCQlpZiAoaXNfcmVkdW5kYW50X3dpdGhfaW5kZXhjbGF1c2VzKHJpbmZv LCBpbmRleGNsYXVzZXMpKQorCQkJY29udGludWU7CQkJLyogZHVwIG9yIGRlcml2ZWQgZnJv bSBzYW1lIEVxdWl2YWxlbmNlQ2xhc3MgKi8KKwkJaWYgKCFjb250YWluX211dGFibGVfZnVu Y3Rpb25zKChOb2RlICopIHJpbmZvLT5jbGF1c2UpICYmCisJCQlwcmVkaWNhdGVfaW1wbGll ZF9ieShsaXN0X21ha2UxKHJpbmZvLT5jbGF1c2UpLCBzdHJpcHBlZF9pbmRleHF1YWxzLAor CQkJCQkJCQkgZmFsc2UpKQorCQkJY29udGludWU7CQkJLyogcHJvdmFibHkgaW1wbGllZCBi eSBpbmRleHF1YWxzICovCisJCXFwcXVhbCA9IGxhcHBlbmQocXBxdWFsLCByaW5mbyk7CisJ fQorCisJLyogU29ydCBjbGF1c2VzIGludG8gYmVzdCBleGVjdXRpb24gb3JkZXIgKi8KKwlx cHF1YWwgPSBvcmRlcl9xdWFsX2NsYXVzZXMocm9vdCwgcXBxdWFsKTsKKworCS8qIFJlZHVj ZSBSZXN0cmljdEluZm8gbGlzdCB0byBiYXJlIGV4cHJlc3Npb25zOyBpZ25vcmUgcHNldWRv Y29uc3RhbnRzICovCisJcXBxdWFsID0gZXh0cmFjdF9hY3R1YWxfY2xhdXNlcyhxcHF1YWws IGZhbHNlKTsKKworCS8qCisJICogV2UgaGF2ZSB0byByZXBsYWNlIGFueSBvdXRlci1yZWxh dGlvbiB2YXJpYWJsZXMgd2l0aCBuZXN0bG9vcCBwYXJhbXMgaW4KKwkgKiB0aGUgaW5kZXhx dWFsb3JpZywgcXBxdWFsLCBhbmQgaW5kZXhvcmRlcmJ5b3JpZyBleHByZXNzaW9ucy4gIEEg Yml0CisJICogYW5ub3lpbmcgdG8gaGF2ZSB0byBkbyB0aGlzIHNlcGFyYXRlbHkgZnJvbSB0 aGUgcHJvY2Vzc2luZyBpbgorCSAqIGZpeF9pbmRleHF1YWxfcmVmZXJlbmNlcyAtLS0gcmV0 aGluayB0aGlzIHdoZW4gZ2VuZXJhbGl6aW5nIHRoZSBpbm5lcgorCSAqIGluZGV4c2NhbiBz dXBwb3J0LiAgQnV0IG5vdGUgd2UgY2FuJ3QgcmVhbGx5IGRvIHRoaXMgZWFybGllciBiZWNh dXNlCisJICogaXQnZCBicmVhayB0aGUgY29tcGFyaXNvbnMgdG8gcHJlZGljYXRlcyBhYm92 ZSAuLi4gKG9yIHdvdWxkIGl0PyAgVGhvc2UKKwkgKiB3b3VsZG4ndCBoYXZlIG91dGVyIHJl ZnMpCisJICovCisJaWYgKGJlc3RfcGF0aC0+aXBhdGgucGF0aC5wYXJhbV9pbmZvKQorCXsK KwkJc3RyaXBwZWRfaW5kZXhxdWFscyA9IChMaXN0ICopCisJCQlyZXBsYWNlX25lc3Rsb29w X3BhcmFtcyhyb290LCAoTm9kZSAqKSBzdHJpcHBlZF9pbmRleHF1YWxzKTsKKwkJcXBxdWFs ID0gKExpc3QgKikKKwkJCXJlcGxhY2VfbmVzdGxvb3BfcGFyYW1zKHJvb3QsIChOb2RlICop IHFwcXVhbCk7CisJfQorCisJLyogRmluYWxseSByZWFkeSB0byBidWlsZCB0aGUgcGxhbiBu b2RlICovCisJYnJpbnNvcnRfcGxhbiA9IG1ha2VfYnJpbnNvcnQodGxpc3QsCisJCQkJCQkJ CSAgcXBxdWFsLAorCQkJCQkJCQkgIGJhc2VyZWxpZCwKKwkJCQkJCQkJICBpbmRleG9pZCwK KwkJCQkJCQkJICBmaXhlZF9pbmRleHF1YWxzLAorCQkJCQkJCQkgIHN0cmlwcGVkX2luZGV4 cXVhbHMsCisJCQkJCQkJCSAgYmVzdF9wYXRoLT5pcGF0aC5pbmRleHNjYW5kaXIpOworCisJ QXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdGhrZXlzKSA9PSAxKTsKKworCWlmIChwYXRoa2V5cyAh PSBOSUwpCisJeworCQkvKgorCQkgKiBDb21wdXRlIHNvcnQgY29sdW1uIGluZm8sIGFuZCBh ZGp1c3QgdGhlIEFwcGVuZCdzIHRsaXN0IGFzIG5lZWRlZC4KKwkJICogQmVjYXVzZSB3ZSBw YXNzIGFkanVzdF90bGlzdF9pbl9wbGFjZSA9IHRydWUsIHdlIG1heSBpZ25vcmUgdGhlCisJ CSAqIGZ1bmN0aW9uIHJlc3VsdDsgaXQgbXVzdCBiZSB0aGUgc2FtZSBwbGFuIG5vZGUuICBI b3dldmVyLCB3ZSB0aGVuCisJCSAqIG5lZWQgdG8gZGV0ZWN0IHdoZXRoZXIgYW55IHRsaXN0 IGVudHJpZXMgd2VyZSBhZGRlZC4KKwkJICovCisJCSh2b2lkKSBwcmVwYXJlX3NvcnRfZnJv bV9wYXRoa2V5cygoUGxhbiAqKSBicmluc29ydF9wbGFuLCBwYXRoa2V5cywKKwkJCQkJCQkJ CQkgIGJlc3RfcGF0aC0+aXBhdGgucGF0aC5wYXJlbnQtPnJlbGlkcywKKwkJCQkJCQkJCQkg IE5VTEwsCisJCQkJCQkJCQkJICB0cnVlLAorCQkJCQkJCQkJCSAgJmJyaW5zb3J0X3BsYW4t Pm51bUNvbHMsCisJCQkJCQkJCQkJICAmYnJpbnNvcnRfcGxhbi0+c29ydENvbElkeCwKKwkJ CQkJCQkJCQkgICZicmluc29ydF9wbGFuLT5zb3J0T3BlcmF0b3JzLAorCQkJCQkJCQkJCSAg JmJyaW5zb3J0X3BsYW4tPmNvbGxhdGlvbnMsCisJCQkJCQkJCQkJICAmYnJpbnNvcnRfcGxh bi0+bnVsbHNGaXJzdCk7CisJCS8vdGxpc3Rfd2FzX2NoYW5nZWQgPSAob3JpZ190bGlzdF9s ZW5ndGggIT0gbGlzdF9sZW5ndGgocGxhbi0+cGxhbi50YXJnZXRsaXN0KSk7CisJCWZvciAo aW50IGkgPSAwOyBpIDwgYnJpbnNvcnRfcGxhbi0+bnVtQ29sczsgaSsrKQorCQkJZWxvZyhE RUJVRzEsICIlZCA9PiAlZCAlZCAlZCAlZCIsIGksCisJCQkJIGJyaW5zb3J0X3BsYW4tPnNv cnRDb2xJZHhbaV0sCisJCQkJIGJyaW5zb3J0X3BsYW4tPnNvcnRPcGVyYXRvcnNbaV0sCisJ CQkJIGJyaW5zb3J0X3BsYW4tPmNvbGxhdGlvbnNbaV0sCisJCQkJIGJyaW5zb3J0X3BsYW4t Pm51bGxzRmlyc3RbaV0pOworCX0KKworCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJmJyaW5z b3J0X3BsYW4tPnNjYW4ucGxhbiwgJmJlc3RfcGF0aC0+aXBhdGgucGF0aCk7CisKKwkvKgor CSAqIE5vdyBsb29rdXAgdGhlIGluZGV4IGF0dG51bXMgZm9yIHNvcnQgZXhwcmVzc2lvbnMu CisJICoKKwkgKiBEZXRlcm1pbmUgaW5kZXggYXR0bnVtIHdlJ3JlIGludGVyZXN0ZWQgaW4u IHNvcnRDb2xJZHggaXMgYW4gaW5kZXggaW50bworCSAqIHRoZSB0YXJnZXQgbGlzdCwgc28g d2UgbmVlZCB0byBncmFiIHRoZSBleHByZXNzaW9uIGFuZCB0cnkgdG8gbWF0Y2ggaXQKKwkg KiB0byB0aGUgaW5kZXguIFRoZSBleHByZXNzaW9uIG1heSBiZSBlaXRoZXIgcGxhaW4gVmFy IChpbiB3aGljaCBjYXNlIHdlCisJICogbWF0Y2ggaXQgdG8gaW5ka2V5cyB2YWx1ZSksIG9y IGFuIGV4cHJlc3Npb24gKGluIHdoaWNoIGNhc2Ugd2UgbWF0Y2ggaXQKKwkgKiB0byBpbmRl eHBycykuCisJICoKKwkgKiBYWFggV2UndmUgYWxyZWFkeSBtYXRjaGVkIHRoZSBzb3J0IGtl eSB0byB0aGUgaW5kZXgsIG90aGVyd2lzZSB3ZSB3b3VsZAorCSAqIG5vdCBnZXQgaGVyZS4g U28gbWF5YmUgd2UgY291bGQganVzdCByZW1lbWJlciBpdCwgc29tZWhvdz8gQWxzbywgd2Ug bXVzdAorCSAqIGtlZXAgdGhlIGRlY2lzaW9ucyBtYWRlIGluIHRoZXNlIHR3byBwbGFjZXMg Y29uc2lzdGVudCAtIGlmIHdlIGZhaWwgdG8KKwkgKiBtYXRjaCBhIHNvcnQga2V5IGhlcmUg KHdoaWNoIHdlIG1hdGNoZWQgYmVmb3JlKSwgd2UgaGF2ZSBhIHByb2JsZW0uCisJICoKKwkg KiBGSVhNRSBsb2NrIG1vZGUgZm9yIGluZGV4X29wZW4KKwkgKi8KKwlpbmRleFJlbCA9IGlu ZGV4X29wZW4oaW5kZXhvaWQsIE5vTG9jayk7CisJaW5kZXhwcnMgPSBSZWxhdGlvbkdldElu ZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWwpOworCisJYnJpbnNvcnRfcGxhbi0+YXR0bnVtcwor CQk9IChBdHRyTnVtYmVyICopIHBhbGxvYzAoc2l6ZW9mKEF0dHJOdW1iZXIpICogYnJpbnNv cnRfcGxhbi0+bnVtQ29scyk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IGJyaW5zb3J0X3Bs YW4tPm51bUNvbHM7IGkrKykKKwl7CisJCVRhcmdldEVudHJ5ICp0bGU7CisJCWludAkJCWV4 cHJpZHggPSAwOwkvKiBleHByZXNzaW9uIGluZGV4ICovCisKKwkJdGxlID0gbGlzdF9udGgo YnJpbnNvcnRfcGxhbi0+c2Nhbi5wbGFuLnRhcmdldGxpc3QsCisJCQkJCSAgIGJyaW5zb3J0 X3BsYW4tPnNvcnRDb2xJZHhbaV0gLSAxKTsJLyogRklYTUUgcHJvcGVyIGNvbGlkeCAqLwor CisJCS8qIGZpbmQgdGhlIGluZGV4IGtleSBtYXRjaGluZyB0aGUgZXhwcmVzc2lvbiBmcm9t IHRoZSB0YXJnZXQgZW50cnkgKi8KKwkJZm9yIChpbnQgaiA9IDA7IGogPCBpbmRleFJlbC0+ cmRfaW5kZXgtPmluZG5hdHRzOyBqKyspCisJCXsKKwkJCUF0dHJOdW1iZXIgaW5ka2V5ID0g aW5kZXhSZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2pdOworCisJCQlpZiAoQXR0cmli dXRlTnVtYmVySXNWYWxpZChpbmRrZXkpKQorCQkJeworCQkJCVZhciAqdmFyID0gKFZhciAq KSB0bGUtPmV4cHI7CisKKwkJCQlpZiAoIUlzQSh0bGUtPmV4cHIsIFZhcikpCisJCQkJCWNv bnRpbnVlOworCisJCQkJaWYgKHZhci0+dmFyYXR0bm8gPT0gaW5ka2V5KQorCQkJCXsKKwkJ CQkJYnJpbnNvcnRfcGxhbi0+YXR0bnVtc1tpXSA9IChqICsgMSk7CisJCQkJCWJyZWFrOwor CQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlOb2RlICpleHByID0gKE5vZGUgKikg bGlzdF9udGgoaW5kZXhwcnMsIGV4cHJpZHgpOworCisJCQkJaWYgKGVxdWFsKGV4cHIsIHRs ZS0+ZXhwcikpCisJCQkJeworCQkJCQlicmluc29ydF9wbGFuLT5hdHRudW1zW2ldID0gKGog KyAxKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZXhwcmlkeCsrOworCQkJfQorCQl9 CisJfQorCisJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIE5vTG9jayk7CisKKwlyZXR1cm4gYnJp bnNvcnRfcGxhbjsKK30KKwogLyoKICAqIGNyZWF0ZV9iaXRtYXBfc2Nhbl9wbGFuCiAgKgkg IFJldHVybnMgYSBiaXRtYXAgc2NhbiBwbGFuIGZvciB0aGUgYmFzZSByZWxhdGlvbiBzY2Fu bmVkIGJ5ICdiZXN0X3BhdGgnCkBAIC01NTM5LDYgKzU3NzMsMzEgQEAgbWFrZV9pbmRleHNj YW4oTGlzdCAqcXB0bGlzdCwKIAlyZXR1cm4gbm9kZTsKIH0KIAorc3RhdGljIEJyaW5Tb3J0 ICoKK21ha2VfYnJpbnNvcnQoTGlzdCAqcXB0bGlzdCwKKwkJCSAgIExpc3QgKnFwcXVhbCwK KwkJCSAgIEluZGV4IHNjYW5yZWxpZCwKKwkJCSAgIE9pZCBpbmRleGlkLAorCQkJICAgTGlz dCAqaW5kZXhxdWFsLAorCQkJICAgTGlzdCAqaW5kZXhxdWFsb3JpZywKKwkJCSAgIFNjYW5E aXJlY3Rpb24gaW5kZXhzY2FuZGlyKQoreworCUJyaW5Tb3J0ICAqbm9kZSA9IG1ha2VOb2Rl KEJyaW5Tb3J0KTsKKwlQbGFuCSAgICpwbGFuID0gJm5vZGUtPnNjYW4ucGxhbjsKKworCXBs YW4tPnRhcmdldGxpc3QgPSBxcHRsaXN0OworCXBsYW4tPnF1YWwgPSBxcHF1YWw7CisJcGxh bi0+bGVmdHRyZWUgPSBOVUxMOworCXBsYW4tPnJpZ2h0dHJlZSA9IE5VTEw7CisJbm9kZS0+ c2Nhbi5zY2FucmVsaWQgPSBzY2FucmVsaWQ7CisJbm9kZS0+aW5kZXhpZCA9IGluZGV4aWQ7 CisJbm9kZS0+aW5kZXhxdWFsID0gaW5kZXhxdWFsOworCW5vZGUtPmluZGV4cXVhbG9yaWcg PSBpbmRleHF1YWxvcmlnOworCW5vZGUtPmluZGV4b3JkZXJkaXIgPSBpbmRleHNjYW5kaXI7 CisKKwlyZXR1cm4gbm9kZTsKK30KKwogc3RhdGljIEluZGV4T25seVNjYW4gKgogbWFrZV9p bmRleG9ubHlzY2FuKExpc3QgKnFwdGxpc3QsCiAJCQkJICAgTGlzdCAqcXBxdWFsLApAQCAt NzE3NSw2ICs3NDM0LDcgQEAgaXNfcHJvamVjdGlvbl9jYXBhYmxlX3BhdGgoUGF0aCAqcGF0 aCkKIAkJY2FzZSBUX01lbW9pemU6CiAJCWNhc2UgVF9Tb3J0OgogCQljYXNlIFRfSW5jcmVt ZW50YWxTb3J0OgorCQljYXNlIFRfQnJpblNvcnQ6CiAJCWNhc2UgVF9VbmlxdWU6CiAJCWNh c2UgVF9TZXRPcDoKIAkJY2FzZSBUX0xvY2tSb3dzOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jCmluZGV4IDVjYzgzNjZhZjY2Li5jZTdjYmNlMDJhMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtNzA4LDYgKzcwOCwyNSBAQCBzZXRf cGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQp CiAJCQkJcmV0dXJuIHNldF9pbmRleG9ubHlzY2FuX3JlZmVyZW5jZXMocm9vdCwgc3BsYW4s IHJ0b2Zmc2V0KTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfQnJpblNvcnQ6CisJCQl7 CisJCQkJQnJpblNvcnQgICpzcGxhbiA9IChCcmluU29ydCAqKSBwbGFuOworCisJCQkJc3Bs YW4tPnNjYW4uc2NhbnJlbGlkICs9IHJ0b2Zmc2V0OworCQkJCXNwbGFuLT5zY2FuLnBsYW4u dGFyZ2V0bGlzdCA9CisJCQkJCWZpeF9zY2FuX2xpc3Qocm9vdCwgc3BsYW4tPnNjYW4ucGxh bi50YXJnZXRsaXN0LAorCQkJCQkJCQkgIHJ0b2Zmc2V0LCBOVU1fRVhFQ19UTElTVChwbGFu KSk7CisJCQkJc3BsYW4tPnNjYW4ucGxhbi5xdWFsID0KKwkJCQkJZml4X3NjYW5fbGlzdChy b290LCBzcGxhbi0+c2Nhbi5wbGFuLnF1YWwsCisJCQkJCQkJCSAgcnRvZmZzZXQsIE5VTV9F WEVDX1FVQUwocGxhbikpOworCQkJCXNwbGFuLT5pbmRleHF1YWwgPQorCQkJCQlmaXhfc2Nh bl9saXN0KHJvb3QsIHNwbGFuLT5pbmRleHF1YWwsCisJCQkJCQkJCSAgcnRvZmZzZXQsIDEp OworCQkJCXNwbGFuLT5pbmRleHF1YWxvcmlnID0KKwkJCQkJZml4X3NjYW5fbGlzdChyb290 LCBzcGxhbi0+aW5kZXhxdWFsb3JpZywKKwkJCQkJCQkJICBydG9mZnNldCwgTlVNX0VYRUNf UVVBTChwbGFuKSk7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0JpdG1hcEluZGV4U2Nh bjoKIAkJCXsKIAkJCQlCaXRtYXBJbmRleFNjYW4gKnNwbGFuID0gKEJpdG1hcEluZGV4U2Nh biAqKSBwbGFuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0 aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXgg ZDc0OWI1MDU3ODUuLjQ3OGQ1NjIzNGE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9wYXRobm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3BhdGhub2RlLmMKQEAgLTEwMjgsNiArMTAyOCw2MyBAQCBjcmVhdGVfaW5kZXhfcGF0aChQ bGFubmVySW5mbyAqcm9vdCwKIAlyZXR1cm4gcGF0aG5vZGU7CiB9CiAKKworLyoKKyAqIGNy ZWF0ZV9icmluc29ydF9wYXRoCisgKgkgIENyZWF0ZXMgYSBwYXRoIG5vZGUgZm9yIHNvcnRl ZCBicmluIHNvcnQgc2Nhbi4KKyAqCisgKiAnaW5kZXgnIGlzIGEgdXNhYmxlIGluZGV4Lgor ICogJ2luZGV4Y2xhdXNlcycgaXMgYSBsaXN0IG9mIEluZGV4Q2xhdXNlIG5vZGVzIHJlcHJl c2VudGluZyBjbGF1c2VzCisgKgkJCXRvIGJlIGVuZm9yY2VkIGFzIHF1YWwgY29uZGl0aW9u cyBpbiB0aGUgc2Nhbi4KKyAqICdpbmRleG9yZGVyYnlzJyBpcyBhIGxpc3Qgb2YgYmFyZSBl eHByZXNzaW9ucyAobm8gUmVzdHJpY3RJbmZvcykKKyAqCQkJdG8gYmUgdXNlZCBhcyBpbmRl eCBvcmRlcmluZyBvcGVyYXRvcnMgaW4gdGhlIHNjYW4uCisgKiAnaW5kZXhvcmRlcmJ5Y29s cycgaXMgYW4gaW50ZWdlciBsaXN0IG9mIGluZGV4IGNvbHVtbiBudW1iZXJzICh6ZXJvIGJh c2VkKQorICoJCQl0aGUgb3JkZXJpbmcgb3BlcmF0b3JzIGNhbiBiZSB1c2VkIHdpdGguCisg KiAncGF0aGtleXMnIGRlc2NyaWJlcyB0aGUgb3JkZXJpbmcgb2YgdGhlIHBhdGguCisgKiAn aW5kZXhzY2FuZGlyJyBpcyBGb3J3YXJkU2NhbkRpcmVjdGlvbiBvciBCYWNrd2FyZFNjYW5E aXJlY3Rpb24KKyAqCQkJZm9yIGFuIG9yZGVyZWQgaW5kZXgsIG9yIE5vTW92ZW1lbnRTY2Fu RGlyZWN0aW9uIGZvcgorICoJCQlhbiB1bm9yZGVyZWQgaW5kZXguCisgKiAnaW5kZXhvbmx5 JyBpcyB0cnVlIGlmIGFuIGluZGV4LW9ubHkgc2NhbiBpcyB3YW50ZWQuCisgKiAncmVxdWly ZWRfb3V0ZXInIGlzIHRoZSBzZXQgb2Ygb3V0ZXIgcmVsaWRzIGZvciBhIHBhcmFtZXRlcml6 ZWQgcGF0aC4KKyAqICdsb29wX2NvdW50JyBpcyB0aGUgbnVtYmVyIG9mIHJlcGV0aXRpb25z IG9mIHRoZSBpbmRleHNjYW4gdG8gZmFjdG9yIGludG8KKyAqCQllc3RpbWF0ZXMgb2YgY2Fj aGluZyBiZWhhdmlvci4KKyAqICdwYXJ0aWFsX3BhdGgnIGlzIHRydWUgaWYgY29uc3RydWN0 aW5nIGEgcGFyYWxsZWwgaW5kZXggc2NhbiBwYXRoLgorICoKKyAqIFJldHVybnMgdGhlIG5l dyBwYXRoIG5vZGUuCisgKi8KK0JyaW5Tb3J0UGF0aCAqCitjcmVhdGVfYnJpbnNvcnRfcGF0 aChQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJIEluZGV4T3B0SW5mbyAqaW5kZXgsCisJCQkJ CSBMaXN0ICppbmRleGNsYXVzZXMsCisJCQkJCSBMaXN0ICpwYXRoa2V5cywKKwkJCQkJIFNj YW5EaXJlY3Rpb24gaW5kZXhzY2FuZGlyLAorCQkJCQkgYm9vbCBpbmRleG9ubHksCisJCQkJ CSBSZWxpZHMgcmVxdWlyZWRfb3V0ZXIsCisJCQkJCSBkb3VibGUgbG9vcF9jb3VudCwKKwkJ CQkJIGJvb2wgcGFydGlhbF9wYXRoKQoreworCUJyaW5Tb3J0UGF0aCAgKnBhdGhub2RlID0g bWFrZU5vZGUoQnJpblNvcnRQYXRoKTsKKwlSZWxPcHRJbmZvICpyZWwgPSBpbmRleC0+cmVs OworCisJcGF0aG5vZGUtPmlwYXRoLnBhdGgucGF0aHR5cGUgPSBUX0JyaW5Tb3J0OworCXBh dGhub2RlLT5pcGF0aC5wYXRoLnBhcmVudCA9IHJlbDsKKwlwYXRobm9kZS0+aXBhdGgucGF0 aC5wYXRodGFyZ2V0ID0gcmVsLT5yZWx0YXJnZXQ7CisJcGF0aG5vZGUtPmlwYXRoLnBhdGgu cGFyYW1faW5mbyA9IGdldF9iYXNlcmVsX3BhcmFtcGF0aGluZm8ocm9vdCwgcmVsLAorCQkJ CQkJCQkJCQkJCQkgIHJlcXVpcmVkX291dGVyKTsKKwlwYXRobm9kZS0+aXBhdGgucGF0aC5w YXJhbGxlbF9hd2FyZSA9IGZhbHNlOworCXBhdGhub2RlLT5pcGF0aC5wYXRoLnBhcmFsbGVs X3NhZmUgPSByZWwtPmNvbnNpZGVyX3BhcmFsbGVsOworCXBhdGhub2RlLT5pcGF0aC5wYXRo LnBhcmFsbGVsX3dvcmtlcnMgPSAwOworCXBhdGhub2RlLT5pcGF0aC5wYXRoLnBhdGhrZXlz ID0gcGF0aGtleXM7CisKKwlwYXRobm9kZS0+aXBhdGguaW5kZXhpbmZvID0gaW5kZXg7CisJ cGF0aG5vZGUtPmlwYXRoLmluZGV4Y2xhdXNlcyA9IGluZGV4Y2xhdXNlczsKKwlwYXRobm9k ZS0+aXBhdGguaW5kZXhzY2FuZGlyID0gaW5kZXhzY2FuZGlyOworCisJY29zdF9icmluc29y dChwYXRobm9kZSwgcm9vdCwgbG9vcF9jb3VudCwgcGFydGlhbF9wYXRoKTsKKworCXJldHVy biBwYXRobm9kZTsKK30KKwogLyoKICAqIGNyZWF0ZV9iaXRtYXBfaGVhcF9wYXRoCiAgKgkg IENyZWF0ZXMgYSBwYXRoIG5vZGUgZm9yIGEgYml0bWFwIHNjYW4uCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDFkNTc2MzQzZWNkLi43NzVkMjIwZmNlOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEwMSw2ICsxMDEsMTAgQEAg ZXh0ZXJuIGJvb2wgZGVidWdfYnJpbl9zdGF0czsKIGV4dGVybiBib29sIGRlYnVnX2JyaW5f Y3Jvc3NfY2hlY2s7CiAjZW5kaWYKIAorI2lmZGVmIERFQlVHX0JSSU5fU09SVAorZXh0ZXJu IGJvb2wgZGVidWdfYnJpbl9zb3J0OworI2VuZGlmCisKICNpZmRlZiBUUkFDRV9TWU5DU0NB TgogZXh0ZXJuIGJvb2wgdHJhY2Vfc3luY3NjYW47CiAjZW5kaWYKQEAgLTEwMTcsNiArMTAy MSwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQlm YWxzZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImVuYWJsZV9icmluc29y dCIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9ELAorCQkJZ2V0dGV4dF9ub29w KCJFbmFibGVzIHRoZSBwbGFubmVyJ3MgdXNlIG9mIEJSSU4gc29ydCBwbGFucy4iKSwKKwkJ CU5VTEwsCisJCQlHVUNfRVhQTEFJTgorCQl9LAorCQkmZW5hYmxlX2JyaW5zb3J0LAorCQl0 cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCXsiZ2VxbyIsIFBHQ19VU0VS U0VULCBRVUVSWV9UVU5JTkdfR0VRTywKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxlcyBnZW5l dGljIHF1ZXJ5IG9wdGltaXphdGlvbi4iKSwKQEAgLTEyNTgsNiArMTI3MiwyMCBAQCBzdHJ1 Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCX0sCiAjZW5kaWYKIAor I2lmZGVmIERFQlVHX0JSSU5fU09SVAorCS8qIHRoaXMgaXMgdW5kb2N1bWVudGVkIGJlY2F1 c2Ugbm90IGV4cG9zZWQgaW4gYSBzdGFuZGFyZCBidWlsZCAqLworCXsKKwkJeyJkZWJ1Z19i cmluX3NvcnQiLCBQR0NfVVNFUlNFVCwgREVWRUxPUEVSX09QVElPTlMsCisJCQlnZXR0ZXh0 X25vb3AoIlByaW50IGluZm8gYWJvdXQgQlJJTiBzb3J0aW5nLiIpLAorCQkJTlVMTCwKKwkJ CUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZkZWJ1Z19icmluX3NvcnQsCisJCWZhbHNl LAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKyNlbmRpZgorCiAJewogCQl7ImV4aXRfb25f ZXJyb3IiLCBQR0NfVVNFUlNFVCwgRVJST1JfSEFORExJTkdfT1BUSU9OUywKIAkJCWdldHRl eHRfbm9vcCgiVGVybWluYXRlIHNlc3Npb24gb24gYW55IGVycm9yLiIpLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDQ3ZTgw YWQxNTBjLi4xMGI5N2U5NmJjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzcxLDYgKzM3MSw3IEBACiAKICNlbmFibGVf YXN5bmNfYXBwZW5kID0gb24KICNlbmFibGVfYml0bWFwc2NhbiA9IG9uCisjZW5hYmxlX2Jy aW5zb3J0ID0gb2ZmCiAjZW5hYmxlX2dhdGhlcm1lcmdlID0gb24KICNlbmFibGVfaGFzaGFn ZyA9IG9uCiAjZW5hYmxlX2hhc2hqb2luID0gb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxl c29ydC5jCmluZGV4IDljYTk4MzVhYWI2Li43NTBlZTAxNmZkNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9zb3J0L3R1cGxlc29ydC5jCkBAIC0yNTc0LDYgKzI1NzQsMTggQEAgdHVwbGVzb3J0X2dl dF9zdGF0cyhUdXBsZXNvcnRzdGF0ZSAqc3RhdGUsCiAJfQogfQogCisvKgorICogdHVwbGVz b3J0X3Jlc2V0X3N0YXRzIC0gcmVzZXQgc3VtbWFyeSBzdGF0aXN0aWNzCisgKgorICogVGhp cyBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0dXBsZXNvcnRfcGVyZm9ybXNvcnQoKSBzdGFydHMu CisgKi8KK3ZvaWQKK3R1cGxlc29ydF9yZXNldF9zdGF0cyhUdXBsZXNvcnRzdGF0ZSAqc3Rh dGUpCit7CisJc3RhdGUtPmlzTWF4U3BhY2VEaXNrID0gZmFsc2U7CisJc3RhdGUtPm1heFNw YWNlID0gMDsKK30KKwogLyoKICAqIENvbnZlcnQgVHVwbGVzb3J0TWV0aG9kIHRvIGEgc3Ry aW5nLgogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2JyaW4uaAppbmRleCAxZDIxYjgxNmZjZC4uY2RmYTc0MjFhZTkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2JyaW4uaApAQCAtMzQsNDEgKzM0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJp blN0YXRzRGF0YQogCUJsb2NrTnVtYmVyIHJldm1hcE51bVBhZ2VzOwogfSBCcmluU3RhdHNE YXRhOwogCi0vKgotICogSW5mbyBhYm91dCByYW5nZXMgZm9yIEJSSU4gU29ydC4KLSAqLwot dHlwZWRlZiBzdHJ1Y3QgQnJpblJhbmdlCi17Ci0JQmxvY2tOdW1iZXIgYmxrbm9fc3RhcnQ7 Ci0JQmxvY2tOdW1iZXIgYmxrbm9fZW5kOwotCi0JRGF0dW0JbWluX3ZhbHVlOwotCURhdHVt CW1heF92YWx1ZTsKLQlib29sCWhhc19udWxsczsKLQlib29sCWFsbF9udWxsczsKLQlib29s CW5vdF9zdW1tYXJpemVkOwotCi0JLyoKLQkgKiBJbmRleCBvZiB0aGUgcmFuZ2Ugd2hlbiBv cmRlcmVkIGJ5IG1pbl92YWx1ZSAoaWYgdGhlcmUgYXJlIG11bHRpcGxlCi0JICogcmFuZ2Vz IHdpdGggdGhlIHNhbWUgbWluX3ZhbHVlLCBpdCdzIHRoZSBsb3dlc3Qgb25lKS4KLQkgKi8K LQl1aW50MzIJbWluX2luZGV4OwotCi0JLyoKLQkgKiBNaW5pbXVtIG1pbl9pbmRleCBmcm9t IGFsbCByYW5nZXMgd2l0aCBoaWdoZXIgbWF4X3ZhbHVlIChpLmUuIHdoZW4KLQkgKiBzb3J0 ZWQgYnkgbWF4X3ZhbHVlKS4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIHJhbmdlcyB3aXRoIHRo ZSBzYW1lCi0JICogbWF4X3ZhbHVlLCBpdCBkZXBlbmRzIG9uIHRoZSBvcmRlcmluZyAoaS5l LiB0aGUgcmFuZ2VzIG1heSBnZXQKLQkgKiBkaWZmZXJlbnQgbWluX2luZGV4X2xvd2VzdCwg ZGVwZW5kaW5nIG9uIHRoZSBleGFjdCBvcmRlcmluZykuCi0JICovCi0JdWludDMyCW1pbl9p bmRleF9sb3dlc3Q7Ci19IEJyaW5SYW5nZTsKLQotdHlwZWRlZiBzdHJ1Y3QgQnJpblJhbmdl cwotewotCWludAkJCW5yYW5nZXM7Ci0JQnJpblJhbmdlCXJhbmdlc1tGTEVYSUJMRV9BUlJB WV9NRU1CRVJdOwotfSBCcmluUmFuZ2VzOwotCiB0eXBlZGVmIHN0cnVjdCBCcmluTWlubWF4 U3RhdHMKIHsKIAlpbnQzMgkJdmxfbGVuXzsJCS8qIHZhcmxlbmEgaGVhZGVyIChkbyBub3Qg dG91Y2ggZGlyZWN0bHkhKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Jy aW5faW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmgKaW5k ZXggZWFjNzk2ZTZmNDcuLjZkZDNmM2UzYzExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvYnJpbl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2lu dGVybmFsLmgKQEAgLTc2LDYgKzc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkRlc2MKIC8q IHByb2NlZHVyZSBudW1iZXJzIHVwIHRvIDEwIGFyZSByZXNlcnZlZCBmb3IgQlJJTiBmdXR1 cmUgZXhwYW5zaW9uICovCiAjZGVmaW5lIEJSSU5fRklSU1RfT1BUSU9OQUxfUFJPQ05VTSAx MQogI2RlZmluZSBCUklOX1BST0NOVU1fU1RBVElTVElDUwkJMTEJLyogb3B0aW9uYWwgKi8K KyNkZWZpbmUgQlJJTl9QUk9DTlVNX1JBTkdFUyAJCTEyCS8qIG9wdGlvbmFsICovCiAjZGVm aW5lIEJSSU5fTEFTVF9PUFRJT05BTF9QUk9DTlVNCTE1CiAKICN1bmRlZiBCUklOX0RFQlVH CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKaW5kZXggOWJiZDFmMTRmMTIuLmI0OTk2 OTliMzUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CkBAIC04MDYsNiArODA2 LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFtcHJvY251bSA9PiAnNCcs IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9ieXRlYV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5dGVhJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0 ZWFfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ICdicmlu X21pbm1heF9yYW5nZXMnIH0sCiAKICMgYmxvb20gYnl0ZWEKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2J5dGVhX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCkBA IC04MzksNiArODQxLDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9j bnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2NoYXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdj aGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVtID0+ICcxMScs IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9jaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCisgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnMTInLCBhbXByb2MgPT4g J2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBibG9vbSAiY2hhciIKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2NoYXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NoYXIn LApAQCAtODcwLDYgKzg3NCw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFt cHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnbmFtZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAn MTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vbmFtZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLAor ICBhbXByb2NyaWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9j ID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgYmxvb20gbmFtZQogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbmFtZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFt ZScsCkBAIC05MDEsNiArOTA3LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4Jywg YW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdpbnQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn aW50OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnMTIn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDIn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzEnLApAQCAt OTE1LDYgKzkyMyw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251 bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn aW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnMTEn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAor ICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9j ID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTkyOSw2ICs5 MzksOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzQn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDQnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9j ID0+ICdicmluX21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2lu dGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfcmFuZ2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbnRlZ2VyOiBpbnQyLCBp bnQ0LCBpbnQ4CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0 aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50MicsCkBAIC0xMDQ4LDYgKzEwNjAsOCBA QAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dGV4dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0ZXh0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICd0ZXh0JywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFu Z2VzJyB9LAogCiAjIGJsb29tIHRleHQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLApAQCAtMTA3OCw2ICsxMDky LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzQnLCBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vb2lkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL29pZF9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn b2lkJywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFuZ2Vz JyB9LAogCiAjIG1pbm1heCBtdWx0aSBvaWQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL29p ZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCkBAIC0xMTI4 LDYgKzExNDQsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9 PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi90aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlk X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlkJywKKyAgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ICdicmluX21pbm1h eF9yYW5nZXMnIH0sCiAKICMgYmxvb20gdGlkCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90 aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCkBAIC0xMTgxLDYgKzEx OTksOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0 NCcsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRz JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdmbG9hdDQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcs IGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3Jhbmdlcycg fSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcs IGFtcHJvY251bSA9PiAnMScsCkBAIC0xMTk3LDYgKzEyMTgsOSBAQAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9h dDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnMTEn LAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDgn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnMTInLAor ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXggbXVsdGkg ZmxvYXQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKQEAgLTEyODgsNiArMTMxMiw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnbWFjYWRkcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcicsIGFt cHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ21hY2FkZHInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBh bXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0s CiAKICMgbWlubWF4IG11bHRpIG1hY2FkZHIKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21h Y2FkZHJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywK QEAgLTEzNDQsNiArMTM3MSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRy OF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFj YWRkcjhfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCisgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRpIG1hY2Fk ZHI4CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyOF9taW5tYXhfbXVsdGlfb3Bz JywKQEAgLTEzOTgsNiArMTQyOCw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcs IGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251 bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J2luZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzEy JywgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRp IGluZXQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlubWF4X211bHRpX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKQEAgLTE0NzEsNiArMTUwMyw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdicGNoYXInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJv Y251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnYnBjaGFyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXByb2Nu dW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMg Ymxvb20gY2hhcmFjdGVyCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfYmxvb21f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCkBAIC0xNTA0LDYgKzE1MzksOCBA QAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICd0aW1lJywgYW1wcm9jbnVtID0+ICcxMicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcmFu Z2VzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB0aW1lIHdpdGhvdXQgdGltZSB6b25lCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAndGltZScsCkBAIC0xNTU3LDYgKzE1OTQsOSBAQAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l c3RhbXAnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY251bSA9 PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0aW1lc3RhbXAnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJv Y251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0 YW1wdHonLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTU3Myw2ICsxNjEzLDkgQEAKIHsgYW1w cm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6 JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0 aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3JhbmdlcycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTE1ODcsNiArMTYzMCw4IEBACiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRl dGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmlu X21pbm1heF9zdGF0cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZGF0ZScsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3JhbmdlcycgfSwKIAogIyBtaW5tYXggbXVsdGkgZGF0ZXRpbWUgKGRhdGUsIHRpbWVzdGFt cCwgdGltZXN0YW1wdHopCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5t YXhfbXVsdGlfb3BzJywKQEAgLTE3MTYsNiArMTc2MSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVy dmFsJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAn MTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdp bnRlcnZhbCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NudW0g PT4gJzEyJywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlu bWF4IG11bHRpIGludGVydmFsCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9t aW5tYXhfbXVsdGlfb3BzJywKQEAgLTE3NzIsNiArMTgyMCw5IEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l dHonLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWV0eicsIGFtcHJvY251bSA9PiAnMTEn LAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vdGltZXR6X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6 JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0gPT4gJzEyJywK KyAgYW1wcm9jID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IG11bHRp IHRpbWUgd2l0aCB0aW1lIHpvbmUKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9t aW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCkBAIC0xODI0 LDYgKzE4NzUsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JpdCcsIGFtcHJvY251bSA9 PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9iaXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdiaXQnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2JpdCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0 X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKKyAgYW1wcm9jcmlnaHR0 eXBlID0+ICdiaXQnLCBhbXByb2NudW0gPT4gJzEyJywgYW1wcm9jID0+ICdicmluX21pbm1h eF9yYW5nZXMnIH0sCiAKICMgbWlubWF4IGJpdCB2YXJ5aW5nCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi92YXJiaXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd2YXJiaXQn LApAQCAtMTg0MSw2ICsxODk0LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJp dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndmFyYml0JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi92YXJiaXRf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd2YXJiaXQnLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ3ZhcmJpdCcsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXggbnVtZXJpYwogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vbnVtZXJpY19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251 bWVyaWMnLApAQCAtMTg1OCw2ICsxOTE0LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L251bWVyaWNfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9udW1lcmljX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCisg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAnMTInLAorICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXggbXVsdGkgbnVt ZXJpYwogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5tYXhfbXVsdGlfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLApAQCAtMTkxMiw2ICsxOTcxLDggQEAK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9j ID0+ICdicmluX21pbm1heF91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1 aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dXVpZCcsIGFtcHJvY251bSA9PiAnMTInLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3Jhbmdl cycgfSwKIAogIyBtaW5tYXggbXVsdGkgdXVpZAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dXVpZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1aWQnLApAQCAt MTk4OCw2ICsyMDQ5LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xzbl9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfc3RhdHMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3JhbmdlcycgfSwKIAogIyBtaW5tYXggbXVsdGkgcGdfbHNuCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9wZ19sc25fbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdwZ19sc24nLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYzQ0Nzg0YTBkMDcu Ljg0ZWMzMjU5YmU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTUzMDksNyAr NTMwOSw3IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X251bXNjYW5zJywgcHJvdm9s YXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUgPT4gJ2lu dDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9u dW1zY2FucycgfSwKLXsgb2lkID0+ICc5OTc2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHRp bWUgb2YgdGhlIGxhc3Qgc2NhbiBmb3IgdGFibGUvaW5kZXgnLAoreyBvaWQgPT4gJzg5MTIn LCBkZXNjciA9PiAnc3RhdGlzdGljczogdGltZSBvZiB0aGUgbGFzdCBzY2FuIGZvciB0YWJs ZS9pbmRleCcsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2xhc3RzY2FuJywgcHJvdm9s YXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUgPT4gJ3Rp bWVzdGFtcHR6JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfbGFzdHNjYW4nIH0sCkBAIC04NTAwLDYgKzg1MDAsOSBAQAogICBwcm9uYW1lID0+ ICdicmluX21pbm1heF9zdGF0cycsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0 eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwgaW50MiBpbnQyIGludGVybmFsIGludDQnLAog ICBwcm9zcmMgPT4gJ2JyaW5fbWlubWF4X3N0YXRzJyB9LAoreyBvaWQgPT4gJzk4MDEnLCBk ZXNjciA9PiAnQlJJTiBtaW5tYXggc3VwcG9ydCcsCisgIHByb25hbWUgPT4gJ2JyaW5fbWlu bWF4X3JhbmdlcycsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBwcm9hcmd0eXBlcyA9PiAn aW50ZXJuYWwgaW50MiBib29sJywgcHJvc3JjID0+ICdicmluX21pbm1heF9yYW5nZXMnIH0s CiAKICMgQlJJTiBtaW5tYXggbXVsdGkKIHsgb2lkID0+ICc0NjE2JywgZGVzY3IgPT4gJ0JS SU4gbXVsdGkgbWlubWF4IHN1cHBvcnQnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3Ivbm9kZUJyaW5Tb3J0LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQnJpblNv cnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2NhYzU5OWQ4 MTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQnJpblNv cnQuaApAQCAtMCwwICsxLDQ3IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBu b2RlQnJpblNvcnQuaAorICoKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2Yg Q2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCcmluU29ydC5o CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgTk9ERUJSSU5fU09S VF9ICisjZGVmaW5lIE5PREVCUklOX1NPUlRfSAorCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFt LmgiCisjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCisjaW5jbHVkZSAibm9kZXMvZXhl Y25vZGVzLmgiCisKK2V4dGVybiBCcmluU29ydFN0YXRlICpFeGVjSW5pdEJyaW5Tb3J0KEJy aW5Tb3J0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncyk7CitleHRlcm4gdm9p ZCBFeGVjRW5kQnJpblNvcnQoQnJpblNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBF eGVjQnJpblNvcnRNYXJrUG9zKEJyaW5Tb3J0U3RhdGUgKm5vZGUpOworZXh0ZXJuIHZvaWQg RXhlY0JyaW5Tb3J0UmVzdHJQb3MoQnJpblNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9p ZCBFeGVjUmVTY2FuQnJpblNvcnQoQnJpblNvcnRTdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9p ZCBFeGVjQnJpblNvcnRFc3RpbWF0ZShCcmluU29ydFN0YXRlICpub2RlLCBQYXJhbGxlbENv bnRleHQgKnBjeHQpOworZXh0ZXJuIHZvaWQgRXhlY0JyaW5Tb3J0SW5pdGlhbGl6ZURTTShC cmluU29ydFN0YXRlICpub2RlLCBQYXJhbGxlbENvbnRleHQgKnBjeHQpOworZXh0ZXJuIHZv aWQgRXhlY0JyaW5Tb3J0UmVJbml0aWFsaXplRFNNKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIFBh cmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRlcm4gdm9pZCBFeGVjQnJpblNvcnRJbml0aWFs aXplV29ya2VyKEJyaW5Tb3J0U3RhdGUgKm5vZGUsCisJCQkJCQkJCQkJICBQYXJhbGxlbFdv cmtlckNvbnRleHQgKnB3Y3h0KTsKKworLyoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSBleHBv cnRlZCB0byBzaGFyZSBjb2RlIHdpdGggbm9kZUluZGV4b25seXNjYW4uYyBhbmQKKyAqIG5v ZGVCaXRtYXBCcmluU29ydC5jCisgKi8KK2V4dGVybiB2b2lkIEV4ZWNJbmRleEJ1aWxkU2Nh bktleXMoUGxhblN0YXRlICpwbGFuc3RhdGUsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkg ICBMaXN0ICpxdWFscywgYm9vbCBpc29yZGVyYnksCisJCQkJCQkJCSAgIFNjYW5LZXkgKnNj YW5LZXlzLCBpbnQgKm51bVNjYW5LZXlzLAorCQkJCQkJCQkgICBJbmRleFJ1bnRpbWVLZXlJ bmZvICoqcnVudGltZUtleXMsIGludCAqbnVtUnVudGltZUtleXMsCisJCQkJCQkJCSAgIElu ZGV4QXJyYXlLZXlJbmZvICoqYXJyYXlLZXlzLCBpbnQgKm51bUFycmF5S2V5cyk7CitleHRl cm4gdm9pZCBFeGVjSW5kZXhFdmFsUnVudGltZUtleXMoRXhwckNvbnRleHQgKmVjb250ZXh0 LAorCQkJCQkJCQkJIEluZGV4UnVudGltZUtleUluZm8gKnJ1bnRpbWVLZXlzLCBpbnQgbnVt UnVudGltZUtleXMpOworZXh0ZXJuIGJvb2wgRXhlY0luZGV4RXZhbEFycmF5S2V5cyhFeHBy Q29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkJCSAgIEluZGV4QXJyYXlLZXlJbmZvICphcnJh eUtleXMsIGludCBudW1BcnJheUtleXMpOworZXh0ZXJuIGJvb2wgRXhlY0luZGV4QWR2YW5j ZUFycmF5S2V5cyhJbmRleEFycmF5S2V5SW5mbyAqYXJyYXlLZXlzLCBpbnQgbnVtQXJyYXlL ZXlzKTsKKworI2VuZGlmCQkJCQkJCS8qIE5PREVCUklOX1NPUlRfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAppbmRleCAyMGY0YzhiMzVmMy4uZWZlMjY5MzhkMGEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCkBAIC0xNTY1LDYgKzE1NjUsMTE0IEBAIHR5cGVkZWYgc3RydWN0IElu ZGV4U2NhblN0YXRlCiAJU2l6ZQkJaXNzX1BzY2FuTGVuOwogfSBJbmRleFNjYW5TdGF0ZTsK IAordHlwZWRlZiBlbnVtIHsKKwlCUklOU09SVF9TVEFSVCwKKwlCUklOU09SVF9MT0FEX1JB TkdFLAorCUJSSU5TT1JUX1BST0NFU1NfUkFOR0UsCisJQlJJTlNPUlRfTE9BRF9OVUxMUywK KwlCUklOU09SVF9QUk9DRVNTX05VTExTLAorCUJSSU5TT1JUX0ZJTklTSEVECit9IEJyaW5T b3J0UGhhc2U7CisKK3R5cGVkZWYgc3RydWN0IEJyaW5SYW5nZVNjYW5EZXNjCit7CisJLyog cmFuZ2UgaW5mbyB0dXBsZSBkZXNjcmlwdG9yICovCisJVHVwbGVEZXNjCQl0ZGVzYzsKKwor CS8qIHJhbmdlcywgc29ydGVkIGJ5IG1pbnZhbCwgYmxrbm9fc3RhcnQgKi8KKwlUdXBsZXNv cnRzdGF0ZSAqcmFuZ2VzOworCisJLyogbnVtYmVyIG9mIHJhbmdlcyBpbiB0aGUgdHVwbGVz b3J0ICovCisJaW50NjQJCQlucmFuZ2VzOworCisJLyogZGlzdGluY3QgbWludmFsIChzb3J0 ZWQpICovCisJVHVwbGVzdG9yZXN0YXRlICptaW52YWxzOworCisJLyogc2xvdCBmb3IgYWNj ZXNzaW5nIHRoZSB0dXBsZXNvcnQvdHVwbGVzdG9yZSAqLworCVR1cGxlVGFibGVTbG90ICAq c2xvdDsKKworfSBCcmluUmFuZ2VTY2FuRGVzYzsKKworLyoKKyAqIEluZm8gYWJvdXQgcmFu Z2VzIGZvciBCUklOIFNvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEJyaW5SYW5nZQorewor CUJsb2NrTnVtYmVyIGJsa25vX3N0YXJ0OworCUJsb2NrTnVtYmVyIGJsa25vX2VuZDsKKwor CURhdHVtCW1pbl92YWx1ZTsKKwlEYXR1bQltYXhfdmFsdWU7CisJYm9vbAloYXNfbnVsbHM7 CisJYm9vbAlhbGxfbnVsbHM7CisJYm9vbAlub3Rfc3VtbWFyaXplZDsKKworCS8qCisJICog SW5kZXggb2YgdGhlIHJhbmdlIHdoZW4gb3JkZXJlZCBieSBtaW5fdmFsdWUgKGlmIHRoZXJl IGFyZSBtdWx0aXBsZQorCSAqIHJhbmdlcyB3aXRoIHRoZSBzYW1lIG1pbl92YWx1ZSwgaXQn cyB0aGUgbG93ZXN0IG9uZSkuCisJICovCisJdWludDMyCW1pbl9pbmRleDsKKworCS8qCisJ ICogTWluaW11bSBtaW5faW5kZXggZnJvbSBhbGwgcmFuZ2VzIHdpdGggaGlnaGVyIG1heF92 YWx1ZSAoaS5lLiB3aGVuCisJICogc29ydGVkIGJ5IG1heF92YWx1ZSkuIElmIHRoZXJlIGFy ZSBtdWx0aXBsZSByYW5nZXMgd2l0aCB0aGUgc2FtZQorCSAqIG1heF92YWx1ZSwgaXQgZGVw ZW5kcyBvbiB0aGUgb3JkZXJpbmcgKGkuZS4gdGhlIHJhbmdlcyBtYXkgZ2V0CisJICogZGlm ZmVyZW50IG1pbl9pbmRleF9sb3dlc3QsIGRlcGVuZGluZyBvbiB0aGUgZXhhY3Qgb3JkZXJp bmcpLgorCSAqLworCXVpbnQzMgltaW5faW5kZXhfbG93ZXN0OworfSBCcmluUmFuZ2U7CisK K3R5cGVkZWYgc3RydWN0IEJyaW5SYW5nZXMKK3sKKwlpbnQJCQlucmFuZ2VzOworCUJyaW5S YW5nZQlyYW5nZXNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gQnJpblJhbmdlczsKKwor dHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnRTdGF0ZQoreworCVNjYW5TdGF0ZQlzczsJCQkJLyog aXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KKwlFeHByU3RhdGUgICppbmRleHF1YWxv cmlnOworCUxpc3QJICAgKmluZGV4b3JkZXJieW9yaWc7CisJc3RydWN0IFNjYW5LZXlEYXRh ICppc3NfU2NhbktleXM7CisJaW50CQkJaXNzX051bVNjYW5LZXlzOworCXN0cnVjdCBTY2Fu S2V5RGF0YSAqaXNzX09yZGVyQnlLZXlzOworCWludAkJCWlzc19OdW1PcmRlckJ5S2V5czsK KwlJbmRleFJ1bnRpbWVLZXlJbmZvICppc3NfUnVudGltZUtleXM7CisJaW50CQkJaXNzX051 bVJ1bnRpbWVLZXlzOworCWJvb2wJCWlzc19SdW50aW1lS2V5c1JlYWR5OworCUV4cHJDb250 ZXh0ICppc3NfUnVudGltZUNvbnRleHQ7CisJUmVsYXRpb24JaXNzX1JlbGF0aW9uRGVzYzsK KwlzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEgKmlzc19TY2FuRGVzYzsKKworCS8qIFRoZXNl IGFyZSBuZWVkZWQgZm9yIHJlLWNoZWNraW5nIE9SREVSIEJZIGV4cHIgb3JkZXJpbmcgKi8K KwlwYWlyaW5naGVhcCAqaXNzX1Jlb3JkZXJRdWV1ZTsKKwlib29sCQlpc3NfUmVhY2hlZEVu ZDsKKwlEYXR1bQkgICAqaXNzX09yZGVyQnlWYWx1ZXM7CisJYm9vbAkgICAqaXNzX09yZGVy QnlOdWxsczsKKwlTb3J0U3VwcG9ydCBpc3NfU29ydFN1cHBvcnQ7CisJYm9vbAkgICAqaXNz X09yZGVyQnlUeXBCeVZhbHM7CisJaW50MTYJICAgKmlzc19PcmRlckJ5VHlwTGVuczsKKwlT aXplCQlpc3NfUHNjYW5MZW47CisKKwkvKiAqLworCUJyaW5SYW5nZVNjYW5EZXNjICpic19z Y2FuOworCUJyaW5SYW5nZQkgICAqYnNfcmFuZ2U7CisJRXhwclN0YXRlCSAgICpic19xdWFs OworCURhdHVtCQkJYnNfd2F0ZXJtYXJrOworCWJvb2wJCQlic193YXRlcm1hcmtfc2V0Owor CWJvb2wJCQlic193YXRlcm1hcmtfZW1wdHk7CisJQnJpblNvcnRQaGFzZQlic19waGFzZTsK KwlTb3J0U3VwcG9ydERhdGEJYnNfc29ydHN1cHBvcnQ7CisJUHJvamVjdGlvbkluZm8gKmJz X1Byb2pJbmZvOworCisJLyoKKwkgKiBXZSBuZWVkIHR3byB0dXBsZXNvcnQgaW5zdGFuY2Vz IC0gb25lIGZvciBjdXJyZW50IHJhbmdlLCBvbmUgZm9yCisJICogc3BpbGwtb3ZlciB0dXBs ZXMgZnJvbSB0aGUgb3ZlcmxhcHBpbmcgcmFuZ2VzCisJICovCisJdm9pZAkJICAgKmJzX3R1 cGxlc29ydHN0YXRlOworCVR1cGxlc3RvcmVzdGF0ZSAqYnNfdHVwbGVzdG9yZTsKK30gQnJp blNvcnRTdGF0ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJIEluZGV4T25seVNjYW5T dGF0ZSBpbmZvcm1hdGlvbgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggZDYxYTYy ZGExOTYuLjNkOTNiMmFjNzE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTY5MCw2 ICsxNjkwLDE3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4UGF0aAogCVNlbGVjdGl2aXR5IGlu ZGV4c2VsZWN0aXZpdHk7CiB9IEluZGV4UGF0aDsKIAorLyoKKyAqIHJlYWQgc29ydGVkIGRh dGEgZnJvbSBicmluIGluZGV4CisgKgorICogV2UgdXNlIEluZGV4UGF0aCwgYmVjYXVzZSB0 aGF0J3Mgd2hhdCBhbWNvc3Rlc3RpbWF0ZSBpcyBleHBlY3RpbmcsIGJ1dAorICogd2UgdHlw ZWRlZiBpdCBhcyBhIHNlcGFyYXRlIHN0cnVjdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQnJp blNvcnRQYXRoCit7CisJSW5kZXhQYXRoCWlwYXRoOworfSBCcmluU29ydFBhdGg7CisKIC8q CiAgKiBFYWNoIEluZGV4Q2xhdXNlIHJlZmVyZW5jZXMgYSBSZXN0cmljdEluZm8gbm9kZSBm cm9tIHRoZSBxdWVyeSdzIFdIRVJFCiAgKiBvciBKT0lOIGNvbmRpdGlvbnMsIGFuZCBzaG93 cyBob3cgdGhhdCByZXN0cmljdGlvbiBjYW4gYmUgYXBwbGllZCB0bwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaAppbmRleCA2NTliZDA1YzBjMS4uMzQxZGZjNTc4MjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCkBAIC01MDEsNiArNTAxLDM4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4T25s eVNjYW4KIAlTY2FuRGlyZWN0aW9uIGluZGV4b3JkZXJkaXI7CS8qIGZvcndhcmQgb3IgYmFj a3dhcmQgb3IgZG9uJ3QgY2FyZSAqLwogfSBJbmRleE9ubHlTY2FuOwogCisvKgorICogWFhY IERvZXMgaXQgbWFrZSBzZW5zZSAoaXMgaXQgcG9zc2libGUpIHRvIGhhdmUgYSBzb3J0IGJ5 IG1vcmUgdGhhbiBvbmUKKyAqIGNvbHVtbiwgdXNpbmcgYSBCUklOIGluZGV4PworICovCit0 eXBlZGVmIHN0cnVjdCBCcmluU29ydAoreworCVNjYW4JCXNjYW47CisJT2lkCQkJaW5kZXhp ZDsJCS8qIE9JRCBvZiBpbmRleCB0byBzY2FuICovCisJTGlzdAkgICAqaW5kZXhxdWFsOwkJ LyogbGlzdCBvZiBpbmRleCBxdWFscyAodXN1YWxseSBPcEV4cHJzKSAqLworCUxpc3QJICAg KmluZGV4cXVhbG9yaWc7CS8qIHRoZSBzYW1lIGluIG9yaWdpbmFsIGZvcm0gKi8KKwlTY2Fu RGlyZWN0aW9uIGluZGV4b3JkZXJkaXI7CS8qIGZvcndhcmQgb3IgYmFja3dhcmQgb3IgZG9u J3QgY2FyZSAqLworCisJLyogbnVtYmVyIG9mIHNvcnQta2V5IGNvbHVtbnMgKi8KKwlpbnQJ CQludW1Db2xzOworCisJLyogYXR0bnVtcyBpbiB0aGUgaW5kZXggKi8KKwlBdHRyTnVtYmVy ICphdHRudW1zIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpKTsKKworCS8qIHRo ZWlyIGluZGV4ZXMgaW4gdGhlIHRhcmdldCBsaXN0ICovCisJQXR0ck51bWJlciAqc29ydENv bElkeCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CisKKwkvKiBPSURzIG9m IG9wZXJhdG9ycyB0byBzb3J0IHRoZW0gYnkgKi8KKwlPaWQJCSAgICpzb3J0T3BlcmF0b3Jz IHBnX25vZGVfYXR0cihhcnJheV9zaXplKG51bUNvbHMpKTsKKworCS8qIE9JRHMgb2YgY29s bGF0aW9ucyAqLworCU9pZAkJICAgKmNvbGxhdGlvbnMgcGdfbm9kZV9hdHRyKGFycmF5X3Np emUobnVtQ29scykpOworCisJLyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCisJ Ym9vbAkgICAqbnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7 CisKK30gQnJpblNvcnQ7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQliaXRtYXAgaW5k ZXggc2NhbiBub2RlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nv c3QuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKaW5kZXggNmNmNDk3MDVkM2Eu LjFmZWQ0MzY0NWE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5o CisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKQEAgLTcwLDYgKzcwLDcgQEAg ZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX3BhcmFsbGVsX2hhc2g7CiBleHRlcm4g UEdETExJTVBPUlQgYm9vbCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmc7CiBleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBlbmFibGVfcHJlc29ydGVkX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RM TElNUE9SVCBib29sIGVuYWJsZV9hc3luY19hcHBlbmQ7CitleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBlbmFibGVfYnJpbnNvcnQ7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbnN0cmFp bnRfZXhjbHVzaW9uOwogCiBleHRlcm4gZG91YmxlIGluZGV4X3BhZ2VzX2ZldGNoZWQoZG91 YmxlIHR1cGxlc19mZXRjaGVkLCBCbG9ja051bWJlciBwYWdlcywKQEAgLTgwLDYgKzgxLDgg QEAgZXh0ZXJuIHZvaWQgY29zdF9zYW1wbGVzY2FuKFBhdGggKnBhdGgsIFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpiYXNlcmVsLAogCQkJCQkJCVBhcmFtUGF0aEluZm8gKnBh cmFtX2luZm8pOwogZXh0ZXJuIHZvaWQgY29zdF9pbmRleChJbmRleFBhdGggKnBhdGgsIFBs YW5uZXJJbmZvICpyb290LAogCQkJCQkgICBkb3VibGUgbG9vcF9jb3VudCwgYm9vbCBwYXJ0 aWFsX3BhdGgpOworZXh0ZXJuIHZvaWQgY29zdF9icmluc29ydChCcmluU29ydFBhdGggKnBh dGgsIFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJICBkb3VibGUgbG9vcF9jb3VudCwgYm9v bCBwYXJ0aWFsX3BhdGgpOwogZXh0ZXJuIHZvaWQgY29zdF9iaXRtYXBfaGVhcF9zY2FuKFBh dGggKnBhdGgsIFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpiYXNlcmVsLAogCQkJ CQkJCQkgIFBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm8sCiAJCQkJCQkJCSAgUGF0aCAqYml0 bWFwcXVhbCwgZG91YmxlIGxvb3BfY291bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhub2RlLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUu aAppbmRleCA2OWJlNzAxYjE2Ny4uMDNlY2M5ODgwMDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL29wdGltaXplci9wYXRobm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9w YXRobm9kZS5oCkBAIC00OSw2ICs0OSwxNSBAQCBleHRlcm4gSW5kZXhQYXRoICpjcmVhdGVf aW5kZXhfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCVJlbGlkcyByZXF1aXJl ZF9vdXRlciwKIAkJCQkJCQkJCWRvdWJsZSBsb29wX2NvdW50LAogCQkJCQkJCQkJYm9vbCBw YXJ0aWFsX3BhdGgpOworZXh0ZXJuIEJyaW5Tb3J0UGF0aCAqY3JlYXRlX2JyaW5zb3J0X3Bh dGgoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQlJbmRleE9wdEluZm8gKmluZGV4LAor CQkJCQkJCQkJTGlzdCAqaW5kZXhjbGF1c2VzLAorCQkJCQkJCQkJTGlzdCAqcGF0aGtleXMs CisJCQkJCQkJCQlTY2FuRGlyZWN0aW9uIGluZGV4c2NhbmRpciwKKwkJCQkJCQkJCWJvb2wg aW5kZXhvbmx5LAorCQkJCQkJCQkJUmVsaWRzIHJlcXVpcmVkX291dGVyLAorCQkJCQkJCQkJ ZG91YmxlIGxvb3BfY291bnQsCisJCQkJCQkJCQlib29sIHBhcnRpYWxfcGF0aCk7CiBleHRl cm4gQml0bWFwSGVhcFBhdGggKmNyZWF0ZV9iaXRtYXBfaGVhcF9wYXRoKFBsYW5uZXJJbmZv ICpyb290LAogCQkJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQkJCSAg IFBhdGggKmJpdG1hcHF1YWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aHMuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IDczNmQ3OGVh NGMzLi4zZTFjOTQ1NzYyOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bh dGhzLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKQEAgLTIxMiw2ICsy MTIsOSBAQCBleHRlcm4gUGF0aCAqZ2V0X2NoZWFwZXN0X2ZyYWN0aW9uYWxfcGF0aF9mb3Jf cGF0aGtleXMoTGlzdCAqcGF0aHMsCiBleHRlcm4gUGF0aCAqZ2V0X2NoZWFwZXN0X3BhcmFs bGVsX3NhZmVfdG90YWxfaW5uZXIoTGlzdCAqcGF0aHMpOwogZXh0ZXJuIExpc3QgKmJ1aWxk X2luZGV4X3BhdGhrZXlzKFBsYW5uZXJJbmZvICpyb290LCBJbmRleE9wdEluZm8gKmluZGV4 LAogCQkJCQkJCQkgIFNjYW5EaXJlY3Rpb24gc2NhbmRpcik7CitleHRlcm4gTGlzdCAqYnVp bGRfaW5kZXhfcGF0aGtleXNfYnJpbihQbGFubmVySW5mbyAqcm9vdCwgSW5kZXhPcHRJbmZv ICppbmRleCwKKwkJCQkJCQkJICBUYXJnZXRFbnRyeSAqdGxlLCBpbnQgaWR4LAorCQkJCQkJ CQkgIGJvb2wgcmV2ZXJzZV9zb3J0LCBib29sIG51bGxzX2ZpcnN0KTsKIGV4dGVybiBMaXN0 ICpidWlsZF9wYXJ0aXRpb25fcGF0aGtleXMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnBhcnRyZWwsCiAJCQkJCQkJCQkgIFNjYW5EaXJlY3Rpb24gc2NhbmRpciwgYm9vbCAq cGFydGlhbGtleXMpOwogZXh0ZXJuIExpc3QgKmJ1aWxkX2V4cHJlc3Npb25fcGF0aGtleShQ bGFubmVySW5mbyAqcm9vdCwgRXhwciAqZXhwciwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5k ZXggMTI1NzhlNDJiYzMuLjQ1NDEzZGFjMWE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy90dXBsZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApA QCAtMzY3LDYgKzM2Nyw3IEBAIGV4dGVybiB2b2lkIHR1cGxlc29ydF9yZXNldChUdXBsZXNv cnRzdGF0ZSAqc3RhdGUpOwogCiBleHRlcm4gdm9pZCB0dXBsZXNvcnRfZ2V0X3N0YXRzKFR1 cGxlc29ydHN0YXRlICpzdGF0ZSwKIAkJCQkJCQkJVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9u ICpzdGF0cyk7CitleHRlcm4gdm9pZCB0dXBsZXNvcnRfcmVzZXRfc3RhdHMoVHVwbGVzb3J0 c3RhdGUgKnN0YXRlKTsKIGV4dGVybiBjb25zdCBjaGFyICp0dXBsZXNvcnRfbWV0aG9kX25h bWUoVHVwbGVzb3J0TWV0aG9kIG0pOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnR1cGxlc29ydF9z cGFjZV90eXBlX25hbWUoVHVwbGVzb3J0U3BhY2VUeXBlIHQpOwogCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IGI3ZmRhNmZjODI4Li4zMDhlOTEyYzIx YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTExMyw2 ICsxMTMsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJl IG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0KICBlbmFibGVfYXN5bmNfYXBwZW5kICAgICAgICAgICAgfCBvbgogIGVu YWJsZV9iaXRtYXBzY2FuICAgICAgICAgICAgICB8IG9uCisgZW5hYmxlX2JyaW5zb3J0ICAg ICAgICAgICAgICAgIHwgb24KICBlbmFibGVfZ2F0aGVybWVyZ2UgICAgICAgICAgICAgfCBv bgogIGVuYWJsZV9oYXNoYWdnICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2hhc2hq b2luICAgICAgICAgICAgICAgIHwgb24KQEAgLTEzMyw3ICsxMzQsNyBAQCBzZWxlY3QgbmFt ZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7 CiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfc29ydCAg ICAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV90aWRzY2FuICAgICAgICAgICAgICAg ICB8IG9uCi0oMjIgcm93cykKKygyMyByb3dzKQogCiAtLSBUZXN0IHRoYXQgdGhlIHBnX3Rp bWV6b25lX25hbWVzIGFuZCBwZ190aW1lem9uZV9hYmJyZXZzIHZpZXdzIGFyZQogLS0gbW9y ZS1vci1sZXNzIHdvcmtpbmcuICBXZSBjYW4ndCB0ZXN0IHRoZWlyIGNvbnRlbnRzIGluIGFu eSBncmVhdCBkZXRhaWwKLS0gCjIuMzkuMQoK --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0005-wip-brinsort-explain-stats-20230218.patch" Content-Disposition: attachment; filename="0005-wip-brinsort-explain-stats-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSA4NjE2YzdkZTEyOWMzMDNkN2JiODFjNzc0MTRiZjY0NmRiNGQ2N2I4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyOSBPY3QgMjAyMiAyMjowMTowMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDUvMTBdIHdpcDogYnJpbnNvcnQgZXhwbGFpbiBzdGF0cwoKU2hvdyBz b21lIGludGVybmFsIHN0YXRzIGFib3V0IEJSSU4gU29ydCBpbiBFWFBMQUlOIG91dHB1dC4K LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICB8IDEzMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNv cnQuYyB8ICA2NiArKysrKysrKysrKy0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggICAgICAgfCAgMzkgKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAx NTNlNDFiODU2Zi4uOTFkY2Y3ZDY2NjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAg LTg3LDYgKzg3LDggQEAgc3RhdGljIHZvaWQgc2hvd19pbmNyZW1lbnRhbF9zb3J0X2tleXMo SW5jcmVtZW50YWxTb3J0U3RhdGUgKmluY3Jzb3J0c3RhdGUsCiAJCQkJCQkJCQkgICBMaXN0 ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd19icmlu c29ydF9rZXlzKEJyaW5Tb3J0U3RhdGUgKnNvcnRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAog CQkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAqZXMpOworc3RhdGljIHZvaWQgc2hvd19icmluc29y dF9zdGF0cyhCcmluU29ydFN0YXRlICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKKwkJ CQkJCQkJRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X21lcmdlX2FwcGVu ZF9rZXlzKE1lcmdlQXBwZW5kU3RhdGUgKm1zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJ CQkJCQkgICBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfYWdnX2tleXMo QWdnU3RhdGUgKmFzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLApAQCAtMTgxNCw2ICsxODE2LDcg QEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywK IAkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsKIAkJCXNob3dfc2Nhbl9xdWFsKHBsYW4t PnF1YWwsICJGaWx0ZXIiLCBwbGFuc3RhdGUsIGFuY2VzdG9ycywgZXMpOwogCQkJc2hvd19i cmluc29ydF9rZXlzKGNhc3ROb2RlKEJyaW5Tb3J0U3RhdGUsIHBsYW5zdGF0ZSksIGFuY2Vz dG9ycywgZXMpOworCQkJc2hvd19icmluc29ydF9zdGF0cyhjYXN0Tm9kZShCcmluU29ydFN0 YXRlLCBwbGFuc3RhdGUpLCBhbmNlc3RvcnMsIGVzKTsKIAkJCWlmIChwbGFuLT5xdWFsKQog CQkJCXNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQgYnkgRmlsdGVy IiwgMSwKIAkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsKQEAgLTI0MzIsNiArMjQzNSwx MzUgQEAgc2hvd19icmluc29ydF9rZXlzKEJyaW5Tb3J0U3RhdGUgKnNvcnRzdGF0ZSwgTGlz dCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQkJIGFuY2VzdG9ycywgZXMp OwogfQogCitzdGF0aWMgdm9pZAorc2hvd19icmluc29ydF9zdGF0cyhCcmluU29ydFN0YXRl ICpzb3J0c3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICplcykKK3sKKwlC cmluU29ydFN0YXRzICAqc3RhdHMgPSAmc29ydHN0YXRlLT5ic19zdGF0czsKKworCWlmIChz b3J0c3RhdGUtPmJzX3NjYW4gIT0gTlVMTCAmJgorCQlzb3J0c3RhdGUtPmJzX3NjYW4tPnJh bmdlcyAhPSBOVUxMKQorCXsKKwkJVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uIHN0YXRzOwor CisJCW1lbXNldCgmc3RhdHMsIDAsIHNpemVvZihUdXBsZXNvcnRJbnN0cnVtZW50YXRpb24p KTsKKwkJdHVwbGVzb3J0X2dldF9zdGF0cyhzb3J0c3RhdGUtPmJzX3NjYW4tPnJhbmdlcywg JnN0YXRzKTsKKworCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCWFwcGVuZFN0cmluZ0lu Zm8oZXMtPnN0ciwgIlJhbmdlczogIiBJTlQ2NF9GT1JNQVQgIiAgQnVpbGQgdGltZTogIiBJ TlQ2NF9GT1JNQVQgIiAgTWV0aG9kOiAlcyAgU3BhY2U6ICVsZCBrQiAoJXMpXG4iLAorCQkJ CQkJIHNvcnRzdGF0ZS0+YnNfc2Nhbi0+bnJhbmdlcywKKwkJCQkJCSBzb3J0c3RhdGUtPmJz X3N0YXRzLnJhbmdlc19idWlsZF9tcywKKwkJCQkJCSB0dXBsZXNvcnRfbWV0aG9kX25hbWUo c3RhdHMuc29ydE1ldGhvZCksCisJCQkJCQkgc3RhdHMuc3BhY2VVc2VkLAorCQkJCQkJIHR1 cGxlc29ydF9zcGFjZV90eXBlX25hbWUoc3RhdHMuc3BhY2VUeXBlKSk7CisJfQorCisJaWYg KHN0YXRzLT5zb3J0X2NvdW50ID4gMCkKKwl7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIo IlJhbmdlcyBQcm9jZXNzZWQiLCBOVUxMLCAoaW50NjQpCisJCQkJCQkJICAgc3RhdHMtPnJh bmdlX2NvdW50LCBlcyk7CisKKwkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRf VEVYVCkKKwkJeworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU29ydHMiLCBOVUxMLCAo aW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT5zb3J0X2NvdW50LCBlcyk7CisKKwkJCUV4cGxh aW5JbmRlbnRUZXh0KGVzKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIlR1cGxl cyBTb3J0ZWQ6ICIgSU5UNjRfRk9STUFUICIgIFBlci1zb3J0OiAiIElOVDY0X0ZPUk1BVCAg IiAgRGlyZWN0OiAiIElOVDY0X0ZPUk1BVCAiICBTcGlsbGVkOiAiIElOVDY0X0ZPUk1BVCAi ICBSZXNwaWxsZWQ6ICIgSU5UNjRfRk9STUFUICJcbiIsCisJCQkJCQkJIHN0YXRzLT5udHVw bGVzX3R1cGxlc29ydF9hbGwsCisJCQkJCQkJIHN0YXRzLT5udHVwbGVzX3R1cGxlc29ydF9h bGwgLyBzdGF0cy0+c29ydF9jb3VudCwKKwkJCQkJCQkgc3RhdHMtPm50dXBsZXNfdHVwbGVz b3J0X2RpcmVjdCwKKwkJCQkJCQkgc3RhdHMtPm50dXBsZXNfc3BpbGxlZCwKKwkJCQkJCQkg c3RhdHMtPm50dXBsZXNfcmVzcGlsbGVkKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUV4cGxh aW5PcGVuR3JvdXAoIlNvcnRzIiwgIlNvcnRzIiwgdHJ1ZSwgZXMpOworCisJCQlFeHBsYWlu UHJvcGVydHlJbnRlZ2VyKCJDb3VudCIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3Rh dHMtPnNvcnRfY291bnQsIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiVHVw bGVzIHBlciBzb3J0IiwgTlVMTCwgKGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+bnR1cGxl c190dXBsZXNvcnRfYWxsIC8gc3RhdHMtPnNvcnRfY291bnQsIGVzKTsKKworCQkJRXhwbGFp blByb3BlcnR5SW50ZWdlcigiU29ydGVkIHR1cGxlcyAoYWxsKSIsIE5VTEwsIChpbnQ2NCkK KwkJCQkJCQkJICAgc3RhdHMtPm50dXBsZXNfdHVwbGVzb3J0X2FsbCwgZXMpOworCisJCQlF eHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTb3J0ZWQgdHVwbGVzIChkaXJlY3QpIiwgTlVMTCwg KGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+bnR1cGxlc190dXBsZXNvcnRfZGlyZWN0LCBl cyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNwaWxsZWQgdHVwbGVzIiwgTlVM TCwgKGludDY0KQorCQkJCQkJCQkgICBzdGF0cy0+bnR1cGxlc19zcGlsbGVkLCBlcyk7CisK KwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlJlc3BpbGxlZCB0dXBsZXMiLCBOVUxMLCAo aW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT5udHVwbGVzX3Jlc3BpbGxlZCwgZXMpOworCisJ CQlFeHBsYWluQ2xvc2VHcm91cCgiU29ydHMiLCAiU29ydHMiLCB0cnVlLCBlcyk7CisJCX0K Kwl9CisKKwlpZiAoc3RhdHMtPnNvcnRfY291bnRfaW5fbWVtb3J5ID4gMCkKKwl7CisJCWlm IChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCisJCXsKKwkJCUV4cGxhaW5J bmRlbnRUZXh0KGVzKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIlNvcnRzIChp bi1tZW1vcnkpICBDb3VudDogIiBJTlQ2NF9GT1JNQVQgIiAgU3BhY2UgVG90YWw6ICIgSU5U NjRfRk9STUFUICAiIGtCICBNYXhpbXVtOiAiIElOVDY0X0ZPUk1BVCAiIGtCICBBdmVyYWdl OiAiIElOVDY0X0ZPUk1BVCAiIGtCXG4iLAorCQkJCQkJCSBzdGF0cy0+c29ydF9jb3VudF9p bl9tZW1vcnksCisJCQkJCQkJIHN0YXRzLT50b3RhbF9zcGFjZV91c2VkX2luX21lbW9yeSwK KwkJCQkJCQkgc3RhdHMtPm1heF9zcGFjZV91c2VkX2luX21lbW9yeSwKKwkJCQkJCQkgc3Rh dHMtPnRvdGFsX3NwYWNlX3VzZWRfaW5fbWVtb3J5IC8gc3RhdHMtPnNvcnRfY291bnRfaW5f bWVtb3J5KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUV4cGxhaW5PcGVuR3JvdXAoIkluLU1l bW9yeSBTb3J0cyIsICJJbi1NZW1vcnkgU29ydHMiLCB0cnVlLCBlcyk7CisKKwkJCUV4cGxh aW5Qcm9wZXJ0eUludGVnZXIoIkNvdW50IiwgTlVMTCwgKGludDY0KQorCQkJCQkJCQkgICBz dGF0cy0+c29ydF9jb3VudF9pbl9tZW1vcnksIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5 SW50ZWdlcigiQXZlcmFnZSBzcGFjZSIsICJrQiIsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3Rh dHMtPnRvdGFsX3NwYWNlX3VzZWRfaW5fbWVtb3J5IC8gc3RhdHMtPnNvcnRfY291bnRfaW5f bWVtb3J5LCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk1heGltdW0gc3Bh Y2UiLCAia0IiLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT5tYXhfc3BhY2VfdXNlZF9p bl9tZW1vcnksIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiVG90YWwgc3Bh Y2UiLCAia0IiLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT50b3RhbF9zcGFjZV91c2Vk X2luX21lbW9yeSwgZXMpOworCisJCQlFeHBsYWluQ2xvc2VHcm91cCgiSW4tTWVtb3J5IFNv cnRzIiwgIkluLU1lbW9yeSBTb3J0cyIsIHRydWUsIGVzKTsKKwkJfQorCX0KKworCWlmIChz dGF0cy0+c29ydF9jb3VudF9vbl9kaXNrID4gMCkKKwl7CisJCWlmIChlcy0+Zm9ybWF0ID09 IEVYUExBSU5fRk9STUFUX1RFWFQpCisJCXsKKwkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsK KwkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIlNvcnRzIChvbi1kaXNrKSAgQ291bnQ6 ICIgSU5UNjRfRk9STUFUICIgIFNwYWNlIFRvdGFsOiAiIElOVDY0X0ZPUk1BVCAgIiBrQiAg TWF4aW11bTogIiBJTlQ2NF9GT1JNQVQgIiBrQiAgQXZlcmFnZTogIiBJTlQ2NF9GT1JNQVQg IiBrQlxuIiwKKwkJCQkJCQkgc3RhdHMtPnNvcnRfY291bnRfb25fZGlzaywKKwkJCQkJCQkg c3RhdHMtPnRvdGFsX3NwYWNlX3VzZWRfb25fZGlzaywKKwkJCQkJCQkgc3RhdHMtPm1heF9z cGFjZV91c2VkX29uX2Rpc2ssCisJCQkJCQkJIHN0YXRzLT50b3RhbF9zcGFjZV91c2VkX29u X2Rpc2sgLyBzdGF0cy0+c29ydF9jb3VudF9vbl9kaXNrKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCUV4cGxhaW5PcGVuR3JvdXAoIk9uLURpc2sgU29ydHMiLCAiT24tRGlzayBTb3J0cyIs IHRydWUsIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiQ291bnQiLCBOVUxM LCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT5zb3J0X2NvdW50X29uX2Rpc2ssIGVzKTsK KworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiQXZlcmFnZSBzcGFjZSIsICJrQiIsIChp bnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMtPnRvdGFsX3NwYWNlX3VzZWRfb25fZGlzayAvIHN0 YXRzLT5zb3J0X2NvdW50X29uX2Rpc2ssIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50 ZWdlcigiTWF4aW11bSBzcGFjZSIsICJrQiIsIChpbnQ2NCkKKwkJCQkJCQkJICAgc3RhdHMt Pm1heF9zcGFjZV91c2VkX29uX2Rpc2ssIGVzKTsKKworCQkJRXhwbGFpblByb3BlcnR5SW50 ZWdlcigiVG90YWwgc3BhY2UiLCAia0IiLCAoaW50NjQpCisJCQkJCQkJCSAgIHN0YXRzLT50 b3RhbF9zcGFjZV91c2VkX29uX2Rpc2ssIGVzKTsKKworCQkJRXhwbGFpbkNsb3NlR3JvdXAo Ik9uLURpc2sgU29ydHMiLCAiT24tRGlzayBTb3J0cyIsIHRydWUsIGVzKTsKKwkJfQorCX0K K30KKwogLyoKICAqIExpa2V3aXNlLCBmb3IgYSBNZXJnZUFwcGVuZCBub2RlLgogICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jCmluZGV4IDk1MDVlYWZjNTQ4Li42MTRk MjhjODNiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKQEAgLTQ1MCw2 ICs0NTAsOCBAQCBicmluc29ydF9sb2FkX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBi b29sIGNoZWNrX3dhdGVybWFyaywgYm9vbCBudWxsX3Byb2NlcwogCWlmIChudWxsX3Byb2Nl c3NpbmcgJiYgIShyYW5nZS0+aGFzX251bGxzIHx8IHJhbmdlLT5ub3Rfc3VtbWFyaXplZCB8 fCByYW5nZS0+YWxsX251bGxzKSkKIAkJcmV0dXJuOwogCisJbm9kZS0+YnNfc3RhdHMucmFu Z2VfY291bnQrKzsKKwogCWJyaW5zb3J0X3N0YXJ0X3RpZHNjYW4obm9kZSk7CiAKIAlzY2Fu ID0gbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOwpAQCAtNTM0LDcgKzUzNiwxMCBAQCBi cmluc29ydF9sb2FkX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBib29sIGNoZWNrX3dh dGVybWFyaywgYm9vbCBudWxsX3Byb2NlcwogCQkJCS8qIFN0YXNoIGl0IHRvIHRoZSB0dXBs ZXN0b3JlICh3aGVuIE5VTEwsIG9yIGlnbm9yZQogCQkJCSAqIGl0ICh3aGVuIG5vdC1OVUxM KS4gKi8KIAkJCQlpZiAoaXNudWxsKQorCQkJCXsKIAkJCQkJdHVwbGVzdG9yZV9wdXR0dXBs ZXNsb3Qobm9kZS0+YnNfdHVwbGVzdG9yZSwgdG1wc2xvdCk7CisJCQkJCW5vZGUtPmJzX3N0 YXRzLm50dXBsZXNfc3BpbGxlZCsrOworCQkJCX0KIAogCQkJCS8qIE5VTEwgb3Igbm90LCB3 ZSdyZSBkb25lICovCiAJCQkJY29udGludWU7CkBAIC01NTQsNyArNTU5LDEyIEBAIGJyaW5z b3J0X2xvYWRfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wgY2hlY2tfd2F0ZXJt YXJrLCBib29sIG51bGxfcHJvY2VzCiAJCQkJCQkJCQkJICAmbm9kZS0+YnNfc29ydHN1cHBv cnQpOwogCiAJCQlpZiAoY21wIDw9IDApCisJCQl7CiAJCQkJdHVwbGVzb3J0X3B1dHR1cGxl c2xvdChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSwgdG1wc2xvdCk7CisJCQkJbm9kZS0+YnNf c3RhdHMubnR1cGxlc190dXBsZXNvcnRfZGlyZWN0Kys7CisJCQkJbm9kZS0+YnNfc3RhdHMu bnR1cGxlc190dXBsZXNvcnRfYWxsKys7CisJCQkJbm9kZS0+YnNfc3RhdHMubnR1cGxlc190 dXBsZXNvcnQrKzsKKwkJCX0KIAkJCWVsc2UKIAkJCXsKIAkJCQkvKgpAQCAtNTY1LDYgKzU3 NSw3IEBAIGJyaW5zb3J0X2xvYWRfdHVwbGVzKEJyaW5Tb3J0U3RhdGUgKm5vZGUsIGJvb2wg Y2hlY2tfd2F0ZXJtYXJrLCBib29sIG51bGxfcHJvY2VzCiAJCQkJICogcmVzcGlsbCkgYW5k IHN0b3Agc3BpbGxpbmcuCiAJCQkJICovCiAJCQkJdHVwbGVzdG9yZV9wdXR0dXBsZXNsb3Qo bm9kZS0+YnNfdHVwbGVzdG9yZSwgdG1wc2xvdCk7CisJCQkJbm9kZS0+YnNfc3RhdHMubnR1 cGxlc19zcGlsbGVkKys7CiAJCQl9CiAJCX0KIApAQCAtNjMzLDcgKzY0NCwxMSBAQCBicmlu c29ydF9sb2FkX3NwaWxsX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBib29sIGNoZWNr X3dhdGVybWFyaykKIAkJCQkJCQkJCSAgJm5vZGUtPmJzX3NvcnRzdXBwb3J0KTsKIAogCQlp ZiAoY21wIDw9IDApCisJCXsKIAkJCXR1cGxlc29ydF9wdXR0dXBsZXNsb3Qobm9kZS0+YnNf dHVwbGVzb3J0c3RhdGUsIHNsb3QpOworCQkJbm9kZS0+YnNfc3RhdHMubnR1cGxlc190dXBs ZXNvcnRfYWxsKys7CisJCQlub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29ydCsrOwor CQl9CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTY0NCw2ICs2NTksNyBAQCBicmluc29ydF9s b2FkX3NwaWxsX3R1cGxlcyhCcmluU29ydFN0YXRlICpub2RlLCBib29sIGNoZWNrX3dhdGVy bWFyaykKIAkJCSAqIHJlc3BpbGwpIGFuZCBzdG9wIHNwaWxsaW5nLgogCQkJICovCiAJCQl0 dXBsZXN0b3JlX3B1dHR1cGxlc2xvdCh0dXBzdG9yZSwgc2xvdCk7CisJCQlub2RlLT5ic19z dGF0cy5udHVwbGVzX3Jlc3BpbGxlZCsrOwogCQl9CiAJfQogCkBAIC05MzMsMjMgKzk0OSw0 MCBAQCBJbmRleE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSkKIAkJCQkJICovCiAJCQkJCWlm IChub2RlLT5ic190dXBsZXNvcnRzdGF0ZSkKIAkJCQkJewotI2lmZGVmIERFQlVHX0JSSU5f U09SVAorCQkJCQkJVHVwbGVzb3J0SW5zdHJ1bWVudGF0aW9uIHN0YXRzOworCisJCQkJCQkv KgorCQkJCQkJICogUmVzZXQgdHVwbGVzb3J0IHN0YXRpc3RpY3MgYmV0d2VlbiBydW5zLCBv dGhlcndpc2UKKwkJCQkJCSAqIHdlJ2xsIGtlZXAgcmUtdXNpbmcgc3RhdHMgZnJvbSB0aGUg bGFyZ2VzdCBydW4uCisJCQkJCQkgKi8KIAkJCQkJCXR1cGxlc29ydF9yZXNldF9zdGF0cyhu b2RlLT5ic190dXBsZXNvcnRzdGF0ZSk7Ci0jZW5kaWYKIAogCQkJCQkJdHVwbGVzb3J0X3Bl cmZvcm1zb3J0KG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlKTsKIAotI2lmZGVmIERFQlVHX0JS SU5fU09SVAotCQkJCQkJaWYgKGRlYnVnX2JyaW5fc29ydCkKLQkJCQkJCXsKLQkJCQkJCQlU dXBsZXNvcnRJbnN0cnVtZW50YXRpb24gc3RhdHM7CisJCQkJCQlub2RlLT5ic19zdGF0cy5z b3J0X2NvdW50Kys7CisJCQkJCQlub2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29ydCA9 IDA7CiAKLQkJCQkJCQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2YoVHVwbGVzb3J0SW5zdHJ1 bWVudGF0aW9uKSk7Ci0JCQkJCQkJdHVwbGVzb3J0X2dldF9zdGF0cyhub2RlLT5ic190dXBs ZXNvcnRzdGF0ZSwgJnN0YXRzKTsKKwkJCQkJCXR1cGxlc29ydF9nZXRfc3RhdHMobm9kZS0+ YnNfdHVwbGVzb3J0c3RhdGUsICZzdGF0cyk7CiAKLQkJCQkJCQl0dXBsZXNvcnRfZ2V0X3N0 YXRzKG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlLCAmc3RhdHMpOworCQkJCQkJaWYgKHN0YXRz LnNwYWNlVHlwZSA9PSBTT1JUX1NQQUNFX1RZUEVfRElTSykKKwkJCQkJCXsKKwkJCQkJCQlu b2RlLT5ic19zdGF0cy5zb3J0X2NvdW50X29uX2Rpc2srKzsKKwkJCQkJCQlub2RlLT5ic19z dGF0cy50b3RhbF9zcGFjZV91c2VkX29uX2Rpc2sgKz0gc3RhdHMuc3BhY2VVc2VkOworCQkJ CQkJCW5vZGUtPmJzX3N0YXRzLm1heF9zcGFjZV91c2VkX29uX2Rpc2sgPSBNYXgobm9kZS0+ YnNfc3RhdHMubWF4X3NwYWNlX3VzZWRfb25fZGlzaywKKwkJCQkJCQkJCQkJCQkJCQkJCXN0 YXRzLnNwYWNlVXNlZCk7CisJCQkJCQl9CisJCQkJCQllbHNlIGlmIChzdGF0cy5zcGFjZVR5 cGUgPT0gU09SVF9TUEFDRV9UWVBFX01FTU9SWSkKKwkJCQkJCXsKKwkJCQkJCQlub2RlLT5i c19zdGF0cy5zb3J0X2NvdW50X2luX21lbW9yeSsrOworCQkJCQkJCW5vZGUtPmJzX3N0YXRz LnRvdGFsX3NwYWNlX3VzZWRfaW5fbWVtb3J5ICs9IHN0YXRzLnNwYWNlVXNlZDsKKwkJCQkJ CQlub2RlLT5ic19zdGF0cy5tYXhfc3BhY2VfdXNlZF9pbl9tZW1vcnkgPSBNYXgobm9kZS0+ YnNfc3RhdHMubWF4X3NwYWNlX3VzZWRfaW5fbWVtb3J5LAorCQkJCQkJCQkJCQkJCQkJCQkJ ICBzdGF0cy5zcGFjZVVzZWQpOworCQkJCQkJfQogCi0JCQkJCQkJZWxvZyhXQVJOSU5HLCAi bWV0aG9kOiAlcyAgc3BhY2U6ICVsZCBrQiAoJXMpIiwKKyNpZmRlZiBERUJVR19CUklOX1NP UlQKKwkJCQkJCWlmIChkZWJ1Z19icmluX3NvcnQpCisJCQkJCQl7CisJCQkJCQkJZWxvZyhX QVJOSU5HLCAibWV0aG9kOiAlcyAgc3BhY2U6ICIgSU5UNjRfRk9STUFUICIga0IgKCVzKSIs CiAJCQkJCQkJCSB0dXBsZXNvcnRfbWV0aG9kX25hbWUoc3RhdHMuc29ydE1ldGhvZCksCiAJ CQkJCQkJCSBzdGF0cy5zcGFjZVVzZWQsCiAJCQkJCQkJCSB0dXBsZXNvcnRfc3BhY2VfdHlw ZV9uYW1lKHN0YXRzLnNwYWNlVHlwZSkpOwpAQCAtMTIxOSw5ICsxMjUyLDEwIEBAIEV4ZWNF bmRCcmluU29ydChCcmluU29ydFN0YXRlICpub2RlKQogCQl0dXBsZXNvcnRfZW5kKG5vZGUt PmJzX3R1cGxlc29ydHN0YXRlKTsKIAlub2RlLT5ic190dXBsZXNvcnRzdGF0ZSA9IE5VTEw7 CiAKLQlpZiAobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzICE9IE5VTEwpCisJaWYgKG5vZGUtPmJz X3NjYW4gIT0gTlVMTCAmJgorCQlub2RlLT5ic19zY2FuLT5yYW5nZXMgIT0gTlVMTCkKIAkJ dHVwbGVzb3J0X2VuZChub2RlLT5ic19zY2FuLT5yYW5nZXMpOwotCW5vZGUtPmJzX3NjYW4t PnJhbmdlcyA9IE5VTEw7CisJbm9kZS0+YnNfc2NhbiA9IE5VTEw7CiB9CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTEzMTEsNiArMTM0NSw3IEBAIEV4ZWNJbml0QnJpblNvcnRSYW5nZXMoQnJp blNvcnQgKm5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0ZSkKIAlGbWdySW5mbyAgICpy YW5nZXByb2M7CiAJQnJpblJhbmdlU2NhbkRlc2MgKmJyc2NhbjsKIAlib29sCQlhc2M7CisJ VGltZXN0YW1wVHoJc3RhcnRfdHM7CiAKIAkvKiBCUklOIFNvcnQgb25seSBhbGxvd3MgT1JE RVIgQlkgdXNpbmcgYSBzaW5nbGUgY29sdW1uICovCiAJQXNzZXJ0KG5vZGUtPm51bUNvbHMg PT0gMSk7CkBAIC0xMzU1LDE1ICsxMzkwLDE4IEBAIEV4ZWNJbml0QnJpblNvcnRSYW5nZXMo QnJpblNvcnQgKm5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0ZSkKIAogCS8qCiAJICog QXNrIHRoZSBvcGNsYXNzIHRvIHByb2R1Y2UgcmFuZ2VzIGluIGFwcHJvcHJpYXRlIG9yZGVy aW5nLgotCSAqCi0JICogWFhYIFBhc3MgaW5mbyBhYm91dCBBU0MvREVTQywgTlVMTFMgRklS U1QvTEFTVC4KIAkgKi8KKwlzdGFydF90cyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwog CWJyc2NhbiA9IChCcmluUmFuZ2VTY2FuRGVzYyAqKSBEYXR1bUdldFBvaW50ZXIoRnVuY3Rp b25DYWxsM0NvbGwocmFuZ2Vwcm9jLAogCQkJCQkJCQkJCQlub2RlLT5jb2xsYXRpb25zWzBd LAogCQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oc2NhbiksCiAJCQkJCQkJCQkJCUludDE2 R2V0RGF0dW0oYXR0bm8pLAogCQkJCQkJCQkJCQlCb29sR2V0RGF0dW0oYXNjKSkpOwogCisJ cGxhbnN0YXRlLT5ic19zdGF0cy5yYW5nZXNfYnVpbGRfbXMKKwkJPSBUaW1lc3RhbXBEaWZm ZXJlbmNlTWlsbGlzZWNvbmRzKHN0YXJ0X3RzLCBHZXRDdXJyZW50VGltZXN0YW1wKCkpOwor CiAJLyogYWxsb2NhdGUgZm9yIHNwYWNlLCBhbmQgYWxzbyBmb3IgdGhlIGFsdGVybmF0aXZl IG9yZGVyaW5nICovCiAJcGxhbnN0YXRlLT5ic19zY2FuID0gYnJzY2FuOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCBlZmUyNjkzOGQwYS4uMmE5ODI4NmUxMWEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC0xNjI4LDYgKzE2MjgsNDQgQEAgdHlwZWRlZiBzdHJ1Y3Qg QnJpblJhbmdlcwogCUJyaW5SYW5nZQlyYW5nZXNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsK IH0gQnJpblJhbmdlczsKIAordHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnRTdGF0cworeworCS8q IG51bWJlciBvZiBzb3J0cyAqLworCWludDY0CXNvcnRfY291bnQ7CisKKwkvKiBudW1iZXIg b2YgcmFuZ2VzIGxvYWRlZCAqLworCWludDY0CXJhbmdlX2NvdW50OworCisJLyogdHVwbGVz IGluIHRoZSBjdXJyZW50IHR1cGxlc29ydCAqLworCWludDY0CW50dXBsZXNfdHVwbGVzb3J0 OworCisJLyogdHVwbGVzIHdyaXR0ZW4gZGlyZWN0bHkgdG8gdHVwbGVzb3J0ICovCisJaW50 NjQJbnR1cGxlc190dXBsZXNvcnRfZGlyZWN0OworCisJLyogdHVwbGVzIHdyaXR0ZW4gdG8g dHVwbGVzb3J0IChhbGwpICovCisJaW50NjQJbnR1cGxlc190dXBsZXNvcnRfYWxsOworCisJ LyogdHVwbGVzIHdyaXR0ZW4gdG8gdHVwbGVzdG9yZSAqLworCWludDY0CW50dXBsZXNfc3Bp bGxlZDsKKworCS8qIHR1cGxlcyBjb3BpZWQgZnJvbSBvbGQgdG8gbmV3IHR1cGxlc3RvcmUg Ki8KKwlpbnQ2NAludHVwbGVzX3Jlc3BpbGxlZDsKKworCS8qIG51bWJlciBvZiBpbi1tZW1v cnkvb24tZGlzayBzb3J0cyAqLworCWludDY0CXNvcnRfY291bnRfaW5fbWVtb3J5OworCWlu dDY0CXNvcnRfY291bnRfb25fZGlzazsKKworCS8qIHRvdGFsL21heGltdW0gYW1vdW50IG9m IHNwYWNlIHVzZWQgYnkgZWl0aGVyIHNvcnQgKi8KKwlpbnQ2NAl0b3RhbF9zcGFjZV91c2Vk X2luX21lbW9yeTsKKwlpbnQ2NAl0b3RhbF9zcGFjZV91c2VkX29uX2Rpc2s7CisJaW50NjQJ bWF4X3NwYWNlX3VzZWRfaW5fbWVtb3J5OworCWludDY0CW1heF9zcGFjZV91c2VkX29uX2Rp c2s7CisKKwkvKiB0aW1lIHRvIGJ1aWxkIHJhbmdlcyAobWlsbGlzZWNvbmRzKSAqLworCWlu dDY0CXJhbmdlc19idWlsZF9tczsKKworfSBCcmluU29ydFN0YXRzOworCiB0eXBlZGVmIHN0 cnVjdCBCcmluU29ydFN0YXRlCiB7CiAJU2NhblN0YXRlCXNzOwkJCQkvKiBpdHMgZmlyc3Qg ZmllbGQgaXMgTm9kZVRhZyAqLwpAQCAtMTY2NCw2ICsxNzAyLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQnJpblNvcnRTdGF0ZQogCUJyaW5Tb3J0UGhhc2UJYnNfcGhhc2U7CiAJU29ydFN1cHBv cnREYXRhCWJzX3NvcnRzdXBwb3J0OwogCVByb2plY3Rpb25JbmZvICpic19Qcm9qSW5mbzsK KwlCcmluU29ydFN0YXRzCWJzX3N0YXRzOwogCiAJLyoKIAkgKiBXZSBuZWVkIHR3byB0dXBs ZXNvcnQgaW5zdGFuY2VzIC0gb25lIGZvciBjdXJyZW50IHJhbmdlLCBvbmUgZm9yCi0tIAoy LjM5LjEKCg== --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0006-wip-multiple-watermark-steps-20230218.patch" Content-Disposition: attachment; filename="0006-wip-multiple-watermark-steps-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSBmYTJiYjZlZGYzYTliNmQ1ZmI5MjI0MDI5NDA5NDc0OTYxMjk0N2MzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAyMCBPY3QgMjAyMiAxMzowMzowMCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDYvMTBdIHdpcDogbXVsdGlwbGUgd2F0ZXJtYXJrIHN0ZXBzCgpBbGxv dyBpbmNyZW1lbnRpbmcgdGhlIG1pbnZhbCB3YXRlcm1hcmsgZmFzdGVyLCBieSBza2lwcGlu ZyBzb21lIG1pbnZhbAp2YWx1ZXMuIFRoaXMgYWxsb3dzIHNvcnRpbmcgbW9yZSBkYXRhIGF0 IG9uY2UgKGluc3RlYWQgb2YgbWFueSB0aW55CnNvcnRzLCB3aGljaCBpcyBpbmVmZmljaWVu dCkuIFRoaXMgYWxzbyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygcm93cyB3ZQpuZWVkIHRvIHNw aWxsIChhbmQgcG9zc2libHkgdHJhbnNmZXIgbXVsdGlwbGUgdGltZXMpLgoKVG8gdXNlIGEg ZGlmZmVyZW50IHdhdGVybWFyayBzdGVwLCB1c2UgYSBuZXcgR1VDOgoKICBTRVQgYnJpbnNv cnRfd2F0ZXJtYXJrX3N0ZXAgPSAxNgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgIHwgIDMgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5j IHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jIHwgMTIgKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY4IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmlu ZGV4IDkxZGNmN2Q2NjYwLi5kODRiMTE4YWM3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwpAQCAtNDcsNiArNDcsNyBAQCBFeHBsYWluT25lUXVlcnlfaG9va190eXBlIEV4cGxhaW5P bmVRdWVyeV9ob29rID0gTlVMTDsKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRy b2wgaW4gZXhwbGFpbl9nZXRfaW5kZXhfbmFtZSgpICovCiBleHBsYWluX2dldF9pbmRleF9u YW1lX2hvb2tfdHlwZSBleHBsYWluX2dldF9pbmRleF9uYW1lX2hvb2sgPSBOVUxMOwogCitl eHRlcm4gaW50IGJyaW5zb3J0X3dhdGVybWFya19zdGVwOwogCiAvKiBPUi1hYmxlIGZsYWdz IGZvciBFeHBsYWluWE1MVGFnKCkgKi8KICNkZWZpbmUgWF9PUEVOSU5HIDAKQEAgLTI0NTcs NiArMjQ1OCw4IEBAIHNob3dfYnJpbnNvcnRfc3RhdHMoQnJpblNvcnRTdGF0ZSAqc29ydHN0 YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQkJCQkgdHVwbGVz b3J0X3NwYWNlX3R5cGVfbmFtZShzdGF0cy5zcGFjZVR5cGUpKTsKIAl9CiAKKwlFeHBsYWlu UHJvcGVydHlJbnRlZ2VyKCJTdGVwIiwgTlVMTCwgKGludDY0KSBicmluc29ydF93YXRlcm1h cmtfc3RlcCwgZXMpOworCiAJaWYgKHN0YXRzLT5zb3J0X2NvdW50ID4gMCkKIAl7CiAJCUV4 cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlJhbmdlcyBQcm9jZXNzZWQiLCBOVUxMLCAoaW50NjQp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQnJpblNvcnQuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jCmluZGV4IDYxNGQyOGM4M2IxLi4x NWQxNTc5NzczNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5T b3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMKQEAgLTI0 OCw2ICsyNDgsMTQgQEAgc3RhdGljIHZvaWQgRXhlY0luaXRCcmluU29ydFJhbmdlcyhCcmlu U29ydCAqbm9kZSwgQnJpblNvcnRTdGF0ZSAqcGxhbnN0YXRlKTsKIGJvb2wgZGVidWdfYnJp bl9zb3J0ID0gZmFsc2U7CiAjZW5kaWYKIAorLyoKKyAqIEhvdyBtYW55IGRpc3RpbmN0IG1p bnZhbCB2YWx1ZXMgdG8gbG9vayBmb3J3YXJkIGZvciB0aGUgbmV4dCB3YXRlcm1hcms/Cisg KgorICogVGhlIHNtYWxsZXN0IHN0ZXAgd2UgY2FuIGRvIGlzIDEsIHdoaWNoIG1lYW5zIHRo ZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcKKyAqICh3aGlsZSBkaXN0aW5jdCkgbWludmFsLgor ICovCitpbnQgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgPSAxOworCiAvKiBkbyB2YXJpb3Vz IGNvbnNpc3RlbmN5IGNoZWNrcyAqLwogc3RhdGljIHZvaWQKIEFzc2VydENoZWNrUmFuZ2Vz KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCkBAIC0zNTEsMTEgKzM1OSwyNCBAQCBicmluc29ydF9l bmRfdGlkc2NhbihCcmluU29ydFN0YXRlICpub2RlKQogICogYSBzZXBhcmF0ZSAiZmlyc3Qi IHBhcmFtZXRlciAtICJzZXQ9ZmFsc2UiIGhhcyB0aGUgc2FtZSBtZWFuaW5nLgogICovCiBz dGF0aWMgdm9pZAotYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpu b2RlLCBib29sIGFzYykKK2JyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsoQnJpblNvcnRTdGF0 ZSAqbm9kZSwgYm9vbCBmaXJzdCwgYm9vbCBhc2MsIGludCBzdGVwcykKIHsKIAlpbnQJCWNt cDsKKworCS8qIGFzc3VtZSB3ZSBoYXZlbid0IGZvdW5kIGEgd2F0ZXJtYXJrICovCiAJYm9v bAlmb3VuZCA9IGZhbHNlOwogCisJQXNzZXJ0KHN0ZXBzID4gMCk7CisKKwkvKgorCSAqIElm IHRoZSB3YXRlcm1hcmsgaXMgZW1wdHksIGVpdGhlciB0aGlzIGlzIHRoZSBmaXJzdCBjYWxs IChpbgorCSAqIHdoaWNoIGNhc2Ugd2UganVzdCB1c2UgdGhlIGZpcnN0IChvciByYXRoZXIg c2Vjb25kKSB2YWx1ZS4KKwkgKiBPdGhlcndpc2UgaXQgbWVhbnMgd2UndmUgcmVhY2hlZCB0 aGUgZW5kLCBzbyBubyBwb2ludCBpbiBsb29raW5nCisJICogZm9yIG1vcmUgd2F0ZXJtYXJr cy4KKwkgKi8KKwlpZiAobm9kZS0+YnNfd2F0ZXJtYXJrX2VtcHR5ICYmICFmaXJzdCkKKwkJ cmV0dXJuOworCiAJdHVwbGVzb3J0X21hcmtwb3Mobm9kZS0+YnNfc2Nhbi0+cmFuZ2VzKTsK IAogCXdoaWxlICh0dXBsZXNvcnRfZ2V0dHVwbGVzbG90KG5vZGUtPmJzX3NjYW4tPnJhbmdl cywgdHJ1ZSwgZmFsc2UsIG5vZGUtPmJzX3NjYW4tPnNsb3QsIE5VTEwpKQpAQCAtMzgxLDIy ICs0MDIsNDggQEAgYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpu b2RlLCBib29sIGFzYykKIAkJZWxzZQogCQkJdmFsdWUgPSBzbG90X2dldGF0dHIobm9kZS0+ YnNfc2Nhbi0+c2xvdCwgNywgJmlzbnVsbCk7CiAKKwkJLyoKKwkJICogSGFzIHRvIGJlIHRo ZSBmaXJzdCBjYWxsIChvdGhlcndpc2Ugd2Ugd291bGQgbm90IGdldCBoZXJlLCBiZWNhdXNl IHdlCisJCSAqIHRlcm1pbmF0ZSBhZnRlciBic193YXRlcm1hcmtfc2V0IGdldHMgZmxpcHBl ZCBiYWNrIHRvIGZhbHNlKSwgc28gd2UKKwkJICoganVzdCBzZXQgdGhlIHZhbHVlLiBCdXQg d2UgZG9uJ3QgY291bnQgdGhpcyBhcyBhIHN0ZXAsIGJlY2F1c2UgdGhhdAorCQkgKiBqdXN0 IHBpY2tzIHRoZSBmaXJzdCBtaW52YWwgdmFsdWUsIGFzIHdlIGNlcnRhaW5seSBuZWVkIHRv IGRvIGF0IGxlYXN0CisJCSAqIG9uZSBtb3JlIHN0ZXAuCisJCSAqCisJCSAqIFhYWCBBY3R1 YWxseSwgZG8gd2UgbmVlZCB0byBtYWtlIGFub3RoZXIgc3RlcD8gTWF5YmUgdGhlcmUgYXJl IGVub3VnaAorCQkgKiBub3Qtc3VtbWFyaXplZCByYW5nZXM/IEFsdGhvdWdoLCB3ZSBkb24n dCBrbm93IHdoYXQgdmFsdWVzIGFyZSBpbgorCQkgKiB0aG9zZSwgcmFuZ2VzLCBhbmQgd2l0 aCBpbmNyZWFzaW5nIGRhdGEgd2UgbWlnaHQgZWFzaWx5IGVuZCB1cCBqdXN0CisJCSAqIHdy aXRpbmcgYWxsIG9mIGl0IGludG8gdGhlIHNwaWxsIHR1cGxlc3RvcmUuIFNvIG1ha2luZyBv bmUgbW9yZSBzdGVwCisJCSAqIHNlZW1zIGxpa2UgYSBiZXR0ZXIgaWRlYSAtIHdlJ2xsIGF0 IGxlYXN0IGJlIGFibGUgdG8gcHJvZHVjZSBzb21ldGhpbmcKKwkJICogd2hpY2ggaXMgZ29v ZCBmb3IgTElNSVQgcXVlcmllcy4KKwkJICovCiAJCWlmICghbm9kZS0+YnNfd2F0ZXJtYXJr X3NldCkKIAkJeworCQkJQXNzZXJ0KGZpcnN0KTsKIAkJCW5vZGUtPmJzX3dhdGVybWFya19z ZXQgPSB0cnVlOwogCQkJbm9kZS0+YnNfd2F0ZXJtYXJrID0gdmFsdWU7CisJCQlmb3VuZCA9 IHRydWU7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCWNtcCA9IEFwcGx5U29ydENvbXBhcmF0 b3Iobm9kZS0+YnNfd2F0ZXJtYXJrLCBmYWxzZSwgdmFsdWUsIGZhbHNlLAogCQkJCQkJCQkg ICZub2RlLT5ic19zb3J0c3VwcG9ydCk7CiAKLQkJaWYgKGNtcCA8IDApCisJCS8qCisJCSAq IFZhbHVlcyBzaG91bGQgbm90IGRlY3JlYXNlIChvciB3aGF0ZXZlciB0aGUgb3BlcmF0b3Ig c2F5cywgbWlnaHQKKwkJICogYmUgYSBERVNDIHNvcnQpLgorCQkgKi8KKwkJQXNzZXJ0KGNt cCA8PSAwKTsKKworCQlpZiAoY21wIDwgMCkJLyogbmV3IHdhdGVybWFyayB2YWx1ZSAqLwog CQl7CiAJCQlub2RlLT5ic193YXRlcm1hcmtfc2V0ID0gdHJ1ZTsKIAkJCW5vZGUtPmJzX3dh dGVybWFyayA9IHZhbHVlOwogCQkJZm91bmQgPSB0cnVlOwotCQkJYnJlYWs7CisKKwkJCXN0 ZXBzLS07CisKKwkJCWlmIChzdGVwcyA9PSAwKQorCQkJCWJyZWFrOwogCQl9CiAJfQogCkBA IC05MTMsNyArOTYwLDcgQEAgSW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJCQkJ CW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9SQU5HRTsKIAogCQkJCQkvKiBzZXQg dGhlIGZpcnN0IHdhdGVybWFyayAqLwotCQkJCQlicmluc29ydF91cGRhdGVfd2F0ZXJtYXJr KG5vZGUsIGFzYyk7CisJCQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9kZSwgdHJ1 ZSwgYXNjLCBicmluc29ydF93YXRlcm1hcmtfc3RlcCk7CiAJCQkJfQogCiAJCQkJYnJlYWs7 CkBAIC0xMDM0LDcgKzEwODEsNyBAQCBJbmRleE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSkK IAkJCQl7CiAJCQkJCS8qIHVwZHRlIHRoZSB3YXRlcm1hcmsgYW5kIHRyeSByZWFkaW5nIG1v cmUgcmFuZ2VzICovCiAJCQkJCW5vZGUtPmJzX3BoYXNlID0gQlJJTlNPUlRfTE9BRF9SQU5H RTsKLQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCBhc2MpOworCQkJCQli cmluc29ydF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGZhbHNlLCBhc2MsIGJyaW5zb3J0X3dh dGVybWFya19zdGVwKTsKIAkJCQl9CiAKIAkJCQlicmVhazsKQEAgLTEwNTksNyArMTEwNiw3 IEBAIEluZGV4TmV4dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJCQkJCXsKIAkJCQkJCQkJ YnJpbnNvcnRfcmVzY2FuKG5vZGUpOwogCQkJCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5T T1JUX0xPQURfUkFOR0U7Ci0JCQkJCQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9k ZSwgYXNjKTsKKwkJCQkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCB0cnVl LCBhc2MsIGJyaW5zb3J0X3dhdGVybWFya19zdGVwKTsKIAkJCQkJCQl9CiAJCQkJCQkJZWxz ZQogCQkJCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0ZJTklTSEVEOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA3NzVkMjIwZmNlOS4uYzM2YjAxNzUz NDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC05NSw2ICs5NSw3 IEBAIGV4dGVybiBjaGFyICp0ZW1wX3RhYmxlc3BhY2VzOwogZXh0ZXJuIGJvb2wgaWdub3Jl X2NoZWNrc3VtX2ZhaWx1cmU7CiBleHRlcm4gYm9vbCBpZ25vcmVfaW52YWxpZF9wYWdlczsK IGV4dGVybiBib29sIHN5bmNocm9uaXplX3NlcXNjYW5zOworZXh0ZXJuIGludAlicmluc29y dF93YXRlcm1hcmtfc3RlcDsKIAogI2lmZGVmIERFQlVHX0JSSU5fU1RBVFMKIGV4dGVybiBi b29sIGRlYnVnX2JyaW5fc3RhdHM7CkBAIC0zNTMzLDYgKzM1MzQsMTcgQEAgc3RydWN0IGNv bmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9 LAogCisJeworCQl7ImJyaW5zb3J0X3dhdGVybWFya19zdGVwIiwgUEdDX1VTRVJTRVQsIERF VkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJzZXRzIHRoZSBzdGVwIGZvciBi cmluc29ydCB3YXRlcm1hcmsgaW5jcmVtZW50cyIpLAorCQkJTlVMTCwKKwkJCUdVQ19OT1Rf SU5fU0FNUExFCisJCX0sCisJCSZicmluc29ydF93YXRlcm1hcmtfc3RlcCwKKwkJMSwgMSwg SU5UX01BWCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBt YXJrZXIgKi8KIAl7CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMCwgMCwg MCwgTlVMTCwgTlVMTCwgTlVMTAotLSAKMi4zOS4xCgo= --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0007-wip-adjust-watermark-step-20230218.patch" Content-Disposition: attachment; filename="0007-wip-adjust-watermark-step-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSBmNTc5YmVmYzFmNzBmZWU5OWZhY2EzNGNiYzlmMTk2NTczYjAzYWE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyMiBPY3QgMjAyMiAwMDowNjoyOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDcvMTBdIHdpcDogYWRqdXN0IHdhdGVybWFyayBzdGVwCgpMb29rIGF0 IGF2YWlsYWJsZSBzdGF0aXN0aWNzIC0gbnVtYmVyIG9mIHBvc3NpYmxlIHdhdGVybWFyayB2 YWx1ZXMsCm51bWJlciBvZiByb3dzLCB3b3JrX21lbSwgZXRjLiBhbmQgcGljayBhIGdvb2Qg d2F0ZXJtYXJrX3N0ZXAgdmFsdWUuCgpUbyBjYWxjdWxhdGUgc3RlcCB1c2luZyBzdGF0aXN0 aWNzLCBzZXQgdGhlIEdVQyB0byAwOgoKICAgU0VUIGJyaW5zb3J0X3dhdGVybWFya19zdGVw ID0gMDsKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCAg NiArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jICAgICB8IDIxICsr KystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCA3MCAr KysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAg ICAgICAgIHwgIDUgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAg ICB8ICAzICsrCiA2IGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBkODRiMTE4YWM3My4uN2Vk MmM5NWRkMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTI0NDAsNiArMjQ0MCw3 IEBAIHN0YXRpYyB2b2lkCiBzaG93X2JyaW5zb3J0X3N0YXRzKEJyaW5Tb3J0U3RhdGUgKnNv cnRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKQogewogCUJyaW5T b3J0U3RhdHMgICpzdGF0cyA9ICZzb3J0c3RhdGUtPmJzX3N0YXRzOworCUJyaW5Tb3J0ICAg KnBsYW4gPSAoQnJpblNvcnQgKikgc29ydHN0YXRlLT5zcy5wcy5wbGFuOwogCiAJaWYgKHNv cnRzdGF0ZS0+YnNfc2NhbiAhPSBOVUxMICYmCiAJCXNvcnRzdGF0ZS0+YnNfc2Nhbi0+cmFu Z2VzICE9IE5VTEwpCkBAIC0yNDYyLDYgKzI0NjMsOSBAQCBzaG93X2JyaW5zb3J0X3N0YXRz KEJyaW5Tb3J0U3RhdGUgKnNvcnRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3Rh dGUgKmVzKQogCiAJaWYgKHN0YXRzLT5zb3J0X2NvdW50ID4gMCkKIAl7CisJCUV4cGxhaW5Q cm9wZXJ0eUludGVnZXIoIkF2ZXJhZ2UgU3RlcCIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkg ICBzdGF0cy0+d2F0ZXJtYXJrX3VwZGF0ZXNfc3RlcHMgLyBzdGF0cy0+d2F0ZXJtYXJrX3Vw ZGF0ZXNfY291bnQsIGVzKTsKKwogCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJSYW5nZXMg UHJvY2Vzc2VkIiwgTlVMTCwgKGludDY0KQogCQkJCQkJCSAgIHN0YXRzLT5yYW5nZV9jb3Vu dCwgZXMpOwogCkBAIC0yNTAzLDYgKzI1MDcsOCBAQCBzaG93X2JyaW5zb3J0X3N0YXRzKEJy aW5Tb3J0U3RhdGUgKnNvcnRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUg KmVzKQogCQkJRXhwbGFpbkNsb3NlR3JvdXAoIlNvcnRzIiwgIlNvcnRzIiwgdHJ1ZSwgZXMp OwogCQl9CiAJfQorCWVsc2UKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiSW5pdGlhbCBT dGVwIiwgTlVMTCwgKGludDY0KSBwbGFuLT53YXRlcm1hcmtfc3RlcCwgZXMpOwogCiAJaWYg KHN0YXRzLT5zb3J0X2NvdW50X2luX21lbW9yeSA+IDApCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQnJpblNvcnQuYwppbmRleCAxNWQxNTc5NzczNS4uZjgzNTYyMDJiNzcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jCkBAIC0yNDgsMTQgKzI0OCw2IEBAIHN0 YXRpYyB2b2lkIEV4ZWNJbml0QnJpblNvcnRSYW5nZXMoQnJpblNvcnQgKm5vZGUsIEJyaW5T b3J0U3RhdGUgKnBsYW5zdGF0ZSk7CiBib29sIGRlYnVnX2JyaW5fc29ydCA9IGZhbHNlOwog I2VuZGlmCiAKLS8qCi0gKiBIb3cgbWFueSBkaXN0aW5jdCBtaW52YWwgdmFsdWVzIHRvIGxv b2sgZm9yd2FyZCBmb3IgdGhlIG5leHQgd2F0ZXJtYXJrPwotICoKLSAqIFRoZSBzbWFsbGVz dCBzdGVwIHdlIGNhbiBkbyBpcyAxLCB3aGljaCBtZWFucyB0aGUgaW1tZWRpYXRlbHkgZm9s bG93aW5nCi0gKiAod2hpbGUgZGlzdGluY3QpIG1pbnZhbC4KLSAqLwotaW50IGJyaW5zb3J0 X3dhdGVybWFya19zdGVwID0gMTsKLQogLyogZG8gdmFyaW91cyBjb25zaXN0ZW5jeSBjaGVj a3MgKi8KIHN0YXRpYyB2b2lkCiBBc3NlcnRDaGVja1JhbmdlcyhCcmluU29ydFN0YXRlICpu b2RlKQpAQCAtMzU5LDkgKzM1MSwxMSBAQCBicmluc29ydF9lbmRfdGlkc2NhbihCcmluU29y dFN0YXRlICpub2RlKQogICogYSBzZXBhcmF0ZSAiZmlyc3QiIHBhcmFtZXRlciAtICJzZXQ9 ZmFsc2UiIGhhcyB0aGUgc2FtZSBtZWFuaW5nLgogICovCiBzdGF0aWMgdm9pZAotYnJpbnNv cnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29ydFN0YXRlICpub2RlLCBib29sIGZpcnN0LCBi b29sIGFzYywgaW50IHN0ZXBzKQorYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhCcmluU29y dFN0YXRlICpub2RlLCBib29sIGZpcnN0LCBib29sIGFzYykKIHsKIAlpbnQJCWNtcDsKKwlC cmluU29ydCAgICpwbGFuID0gKEJyaW5Tb3J0ICopIG5vZGUtPnNzLnBzLnBsYW47CisJaW50 CQkJc3RlcHMgPSBwbGFuLT53YXRlcm1hcmtfc3RlcDsKIAogCS8qIGFzc3VtZSB3ZSBoYXZl bid0IGZvdW5kIGEgd2F0ZXJtYXJrICovCiAJYm9vbAlmb3VuZCA9IGZhbHNlOwpAQCAtNDQ5 LDYgKzQ0Myw5IEBAIGJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsoQnJpblNvcnRTdGF0ZSAq bm9kZSwgYm9vbCBmaXJzdCwgYm9vbCBhc2MsIGludCBzdGVwcykKIAogCXR1cGxlc29ydF9y ZXN0b3JlcG9zKG5vZGUtPmJzX3NjYW4tPnJhbmdlcyk7CiAKKwlub2RlLT5ic19zdGF0cy53 YXRlcm1hcmtfdXBkYXRlc19jb3VudCsrOworCW5vZGUtPmJzX3N0YXRzLndhdGVybWFya191 cGRhdGVzX3N0ZXBzICs9IHBsYW4tPndhdGVybWFya19zdGVwOworCiAJbm9kZS0+YnNfd2F0 ZXJtYXJrX2VtcHR5ID0gKCFmb3VuZCk7CiB9CiAKQEAgLTk2MCw3ICs5NTcsNyBAQCBJbmRl eE5leHQoQnJpblNvcnRTdGF0ZSAqbm9kZSkKIAkJCQkJbm9kZS0+YnNfcGhhc2UgPSBCUklO U09SVF9MT0FEX1JBTkdFOwogCiAJCQkJCS8qIHNldCB0aGUgZmlyc3Qgd2F0ZXJtYXJrICov Ci0JCQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9kZSwgdHJ1ZSwgYXNjLCBicmlu c29ydF93YXRlcm1hcmtfc3RlcCk7CisJCQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmso bm9kZSwgdHJ1ZSwgYXNjKTsKIAkJCQl9CiAKIAkJCQlicmVhazsKQEAgLTEwODEsNyArMTA3 OCw3IEBAIEluZGV4TmV4dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJCXsKIAkJCQkJLyog dXBkdGUgdGhlIHdhdGVybWFyayBhbmQgdHJ5IHJlYWRpbmcgbW9yZSByYW5nZXMgKi8KIAkJ CQkJbm9kZS0+YnNfcGhhc2UgPSBCUklOU09SVF9MT0FEX1JBTkdFOwotCQkJCQlicmluc29y dF91cGRhdGVfd2F0ZXJtYXJrKG5vZGUsIGZhbHNlLCBhc2MsIGJyaW5zb3J0X3dhdGVybWFy a19zdGVwKTsKKwkJCQkJYnJpbnNvcnRfdXBkYXRlX3dhdGVybWFyayhub2RlLCBmYWxzZSwg YXNjKTsKIAkJCQl9CiAKIAkJCQlicmVhazsKQEAgLTExMDYsNyArMTEwMyw3IEBAIEluZGV4 TmV4dChCcmluU29ydFN0YXRlICpub2RlKQogCQkJCQkJCXsKIAkJCQkJCQkJYnJpbnNvcnRf cmVzY2FuKG5vZGUpOwogCQkJCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0xPQURf UkFOR0U7Ci0JCQkJCQkJCWJyaW5zb3J0X3VwZGF0ZV93YXRlcm1hcmsobm9kZSwgdHJ1ZSwg YXNjLCBicmluc29ydF93YXRlcm1hcmtfc3RlcCk7CisJCQkJCQkJCWJyaW5zb3J0X3VwZGF0 ZV93YXRlcm1hcmsobm9kZSwgdHJ1ZSwgYXNjKTsKIAkJCQkJCQl9CiAJCQkJCQkJZWxzZQog CQkJCQkJCQlub2RlLT5ic19waGFzZSA9IEJSSU5TT1JUX0ZJTklTSEVEOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDJhN2JlMmM0ODkxLi4wMWNm ZTNmNWI1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRl cGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpA QCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaW5jbHVkZSAiYWNj ZXNzL2JyaW4uaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nl c3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKQEAgLTMyMyw2 ICszMjQsMTQgQEAgc3RhdGljIEdhdGhlck1lcmdlICpjcmVhdGVfZ2F0aGVyX21lcmdlX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCSBHYXRoZXJNZXJnZVBhdGggKmJl c3RfcGF0aCk7CiAKIAorLyoKKyAqIEhvdyBtYW55IGRpc3RpbmN0IG1pbnZhbCB2YWx1ZXMg dG8gbG9vayBmb3J3YXJkIGZvciB0aGUgbmV4dCB3YXRlcm1hcms/CisgKgorICogVGhlIHNt YWxsZXN0IHN0ZXAgd2UgY2FuIGRvIGlzIDEsIHdoaWNoIG1lYW5zIHRoZSBpbW1lZGlhdGVs eSBmb2xsb3dpbmcKKyAqICh3aGlsZSBkaXN0aW5jdCkgbWludmFsLgorICovCitpbnQgYnJp bnNvcnRfd2F0ZXJtYXJrX3N0ZXAgPSAwOworCiAvKgogICogY3JlYXRlX3BsYW4KICAqCSAg Q3JlYXRlcyB0aGUgYWNjZXNzIHBsYW4gZm9yIGEgcXVlcnkgYnkgcmVjdXJzaXZlbHkgcHJv Y2Vzc2luZyB0aGUKQEAgLTM0MTYsNiArMzQyNSw2NyBAQCBjcmVhdGVfYnJpbnNvcnRfcGxh bihQbGFubmVySW5mbyAqcm9vdCwKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2sp OwogCisJLyoKKwkgKiBkZXRlcm1pbmUgd2F0ZXJtYXJrIHN0ZXAgKGhvdyBmYXN0IHRvIGFk dmFuY2UpCisJICoKKwkgKiBJZiB0aGUgYnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgaXMgc2V0 IHRvIGEgbm9uLXplcm8gdmFsdWUsIHdlIGp1c3QgdXNlCisJICogdGhhdCB2YWx1ZSBkaXJl Y3RseS4gT3RoZXJ3aXNlIHdlIHBpY2sgYSB2YWx1ZSB1c2luZyBzb21lIHNpbXBsZQorCSAq IGhldXJpc3RpY3MgLSB3ZSBkb24ndCB3YW50IHRoZSByb3dzIHRvIGV4Y2VlZCB3b3JrX21l bSwgYW5kIHdlIGxlYXZlCisJICogYSBiaXQgc2xhY2sgKGJlY2F1c2Ugd2UncmUgYWRkaW5n IGJhdGNoZXMgb2Ygcm93cywgbm90IHJvdyBieSByb3cpLgorCSAqCisJICogVGhpcyBoYXMg YSB3ZWFrbmVzcywgYmVjYXVzZSBpdCBhc3N1bWVzIHdlIGluY3JlbWVudGFsbHkgYWRkIHRo ZSBzYW1lCisJICogbnVtYmVyIG9mIHJvd3MgaW50byB0aGUgInNvcnQiIHNldCAtIGJ1dCBp bWFnaW5lIHZlcnkgd2lkZSBvdmVybGFwcGluZworCSAqIHJhbmdlcyAoZS5nLiByYW5kb20g ZGF0YSBvbiB0aGUgc2FtZSBkb21haW4pLiBNb3N0IG9mIHRoZW0gd2lsbCBoYXZlCisJICog YWJvdXQgdGhlIHNhbWUgbWludmFsLCBzbyB0aGUgc29ydCBncm93cyBvbmx5IHZlcnkgc2xv d2x5LiBVbnRpbCB0aGUKKwkgKiB2ZXJ5IGxhc3QgcmFuZ2UsIHRoYXQgcmVtb3ZlcyB0aGUg d2F0ZXJtYXJrIGFuZCBvbmx5IHRoZW4gZG8gbW9zdCBvZgorCSAqIHRoZSByb3dzIGdldCB0 byB0aGUgdHVwbGVzb3J0LgorCSAqCisJICogWFhYIEJ1dCBtYXliZSB3ZSBjYW4gbG9vayBh dCB0aGUgb3RoZXIgc3RhdGlzdGljcyB3ZSBoYXZlLCBsaWtlIG51bWJlcgorCSAqIG9mIG92 ZXJsYXBzIGFuZCBhdmVyYWdlIHJhbmdlIHNlbGVjdGl2aXR5ICglIG9mIHR1cGxlcyBtYXRj aGluZyksIGFuZAorCSAqIGRlZHVjZSBzb21ldGhpbmcgZnJvbSB0aGF0PworCSAqCisJICog WFhYIENvdWxkIHdlIG1heWJlIGFkanVzdCB0aGUgd2F0ZXJtYXJrIHN0ZXAgYWRhcHRpdmVs eSBhdCBydW50aW1lPworCSAqIFRoYXQgaXMsIHdoZW4gd2UgZ2V0IHRvIHRoZSAic29ydCIg c3RlcCwgbWF5YmUgY2hlY2sgaG93IG1hbnkgcm93cworCSAqIGFyZSB0aGVyZSwgYW5kIGlm IHRoZXJlIGFyZSBvbmx5IGZldyB0aGVuIHRyeSBpbmNyZWFzaW5nIHRoZSBzdGVwPworCSAq LworCWJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwID0gYnJpbnNvcnRfd2F0ZXJtYXJr X3N0ZXA7CisKKwlpZiAoYnJpbnNvcnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPT0gMCkKKwl7 CisJCUJyaW5NaW5tYXhTdGF0cyAqYW1zdGF0czsKKworCQkvKiovCisJCUNhcmRpbmFsaXR5 CQlyb3dzID0gYnJpbnNvcnRfcGxhbi0+c2Nhbi5wbGFuLnBsYW5fcm93czsKKworCQkvKiBl c3RpbWF0ZSByb3dzaXplIGluIHRoZSB0dXBsZXNvcnQgKi8KKwkJaW50CQkJCXdpZHRoID0g YnJpbnNvcnRfcGxhbi0+c2Nhbi5wbGFuLnBsYW5fd2lkdGg7CisJCWludAkJCQl0dXB3aWR0 aCA9IChNQVhBTElHTih3aWR0aCkgKyBNQVhBTElHTihTaXplb2ZIZWFwVHVwbGVIZWFkZXIp KTsKKworCQkvKiBEb24ndCBvdmVyZmxvdyB3b3JrX21lbSAodXNlIG9ubHkgaGFsZiB0byBh YnNvcmIgdmFyaWF0aW9ucy4gKi8KKwkJaW50CQkJCW1heHJvd3MgPSAod29ya19tZW0gKiAx MDI0TCAvIHR1cHdpZHRoIC8gMik7CisKKwkJLyogSWYgdGhpcyBpcyBhIExJTUlUIHF1ZXJ5 LCBhaW0gb25seSBmb3IgdGhlIHJlcXVpcmVkIG51bWJlciBvZiByb3dzLiAqLworCQlpZiAo cm9vdC0+bGltaXRfdHVwbGVzID4gMCkKKwkJCW1heHJvd3MgPSBNaW4obWF4cm93cywgcm9v dC0+bGltaXRfdHVwbGVzKTsKKworCQkvKiBVc2UgdGhlIGF0dG51bSBjYWxjdWxhdGVkIGFi b3ZlLiAqLworCQlhbXN0YXRzID0gKEJyaW5NaW5tYXhTdGF0cyAqKSBnZXRfYXR0aW5kZXhh bShicmluc29ydF9wbGFuLT5pbmRleGlkLAorCQkJCQkJCQkJCQkJCSBicmluc29ydF9wbGFu LT5hdHRudW1zWzBdKTsKKworCQlpZiAoYW1zdGF0cykKKwkJeworCQkJZG91YmxlCXBjdF9w ZXJfc3RlcCA9IE1heChhbXN0YXRzLT5taW52YWxfaW5jcmVtZW50X2F2ZywKKwkJCQkJCQkJ CSAgIGFtc3RhdHMtPm1heHZhbF9pbmNyZW1lbnRfYXZnKTsKKwkJCWRvdWJsZQlyb3dzX3Bl cl9zdGVwID0gTWF4KDEuMCwgcGN0X3Blcl9zdGVwICogcm93cyk7CisKKwkJCWJyaW5zb3J0 X3BsYW4tPndhdGVybWFya19zdGVwID0gKGludCkgKG1heHJvd3MgLyByb3dzX3Blcl9zdGVw KTsKKwkJfQorCisJCS8qIHNvbWUgcm91Z2ggc2FmZXR5IGVzdGltYXRlcyAqLworCQlicmlu c29ydF9wbGFuLT53YXRlcm1hcmtfc3RlcCA9IE1heChicmluc29ydF9wbGFuLT53YXRlcm1h cmtfc3RlcCwgMSk7CisJCWJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwID0gTWluKGJy aW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwLCA4MTkyKTsKKwl9CisKIAlyZXR1cm4gYnJp bnNvcnRfcGxhbjsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRl eCBjMzZiMDE3NTM0NC4uMWJjMzliMzc2MDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25m aWd1cmVOYW1lc0ludFtdID0KIAkJCUdVQ19OT1RfSU5fU0FNUExFCiAJCX0sCiAJCSZicmlu c29ydF93YXRlcm1hcmtfc3RlcCwKLQkJMSwgMSwgSU5UX01BWCwKKwkJMCwgMCwgSU5UX01B WCwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggMmE5ODI4NmUxMWEuLjA2ZGM2NDE2ZDk5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApA QCAtMTY2NCw2ICsxNjY0LDEwIEBAIHR5cGVkZWYgc3RydWN0IEJyaW5Tb3J0U3RhdHMKIAkv KiB0aW1lIHRvIGJ1aWxkIHJhbmdlcyAobWlsbGlzZWNvbmRzKSAqLwogCWludDY0CXJhbmdl c19idWlsZF9tczsKIAorCS8qIG51bWJlci9zdW0gb2Ygd2F0ZXJtYXJrIHVwZGF0ZSBzdGVw cyAqLworCWludDY0CXdhdGVybWFya191cGRhdGVzX3N0ZXBzOworCWludDY0CXdhdGVybWFy a191cGRhdGVzX2NvdW50OworCiB9IEJyaW5Tb3J0U3RhdHM7CiAKIHR5cGVkZWYgc3RydWN0 IEJyaW5Tb3J0U3RhdGUKQEAgLTE2OTYsNiArMTcwMCw3IEBAIHR5cGVkZWYgc3RydWN0IEJy aW5Tb3J0U3RhdGUKIAlCcmluUmFuZ2VTY2FuRGVzYyAqYnNfc2NhbjsKIAlCcmluUmFuZ2UJ ICAgKmJzX3JhbmdlOwogCUV4cHJTdGF0ZQkgICAqYnNfcXVhbDsKKwlpbnQJCQkJYnNfd2F0 ZXJtYXJrX3N0ZXA7CiAJRGF0dW0JCQlic193YXRlcm1hcms7CiAJYm9vbAkJCWJzX3dhdGVy bWFya19zZXQ7CiAJYm9vbAkJCWJzX3dhdGVybWFya19lbXB0eTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKaW5kZXggMzQxZGZjNTc4MjYuLjY1OWE2ZDExMGVlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaApAQCAtNTMxLDYgKzUzMSw5IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5Tb3J0CiAJ LyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCiAJYm9vbAkgICAqbnVsbHNGaXJz dCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CiAKKwkvKiBudW1iZXIgb2Yg d2F0ZXJtYXJrIHN0ZXBzIHRvIG1ha2UgKi8KKwlpbnQJCQl3YXRlcm1hcmtfc3RlcDsKKwog fSBCcmluU29ydDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQotLSAKMi4zOS4xCgo= --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0008-wip-adaptive-watermark-step-20230218.patch" Content-Disposition: attachment; filename="0008-wip-adaptive-watermark-step-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSA3MTZhNzI3ZjdjNTZmYWIwMDM1MDRjYmJkYjBlMjYwMjYwZjQ2NDMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyMiBPY3QgMjAyMiAwMTozOTozOSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDgvMTBdIHdpcDogYWRhcHRpdmUgd2F0ZXJtYXJrIHN0ZXAKCkFub3Ro ZXIgb3B0aW9uIGl0IHRvIGFkanVzdCB0aGUgd2F0ZXJtYXJrIHN0ZXAgYmFzZWQgb24gcGFz dCB0dXBsZXNvcnQKZXhlY3V0aW9ucywgYW5kIGVpdGhlciBpbmNyZWFzZSBvciBkZWNyZWFz ZSB0aGUgc3RlcCwgYmFzZWQgb24gd2hldGhlcgp0aGUgc29ydCB3YXMgaW4tbWVtb3J5IG9y IG9uLWRpc2ssIGV0Yy4KClRvIGRvIHRoaXMsIHNldCB0aGUgR1VDIHRvIC0xOgoKICBTRVQg YnJpbnNvcnRfd2F0ZXJtYXJrX3N0ZXAgPSAtMTsKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX21pbm1heC5jICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVCcmluU29ydC5jICAgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8ICAyMSArLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaCAgICAgICAgICAgfCAgIDMgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjA2 IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX21pbm1heC5jCmluZGV4IDExODFjOWU3Mzg4Li5jZmE1Njk4NmUyYiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCkBAIC00Nyw5ICs0Nyw2IEBAIHN0 YXRpYyBGbWdySW5mbyAqbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5mbyhCcmluRGVzYyAq YmRlc2MsIHVpbnQxNiBhdHRubywKIAkJCQkJCQkJCQkJICBPaWQgc3VidHlwZSwgdWludDE2 IHN0cmF0ZWd5bnVtKTsKIAogCi0vKiBwcmludCBpbmZvIGFib3V0IHJhbmdlcyAqLwotI2Rl ZmluZSBCUklOU09SVF9ERUJVRwotCiBEYXR1bQogYnJpbl9taW5tYXhfb3BjaW5mbyhQR19G VU5DVElPTl9BUkdTKQogewpAQCAtMTk4OSw3ICsxOTg2LDcgQEAgYnJpbl9taW5tYXhfc2Nh bl9hZGRfdHVwbGUoQnJpblJhbmdlU2NhbkRlc2MgKnNjYW4sIFR1cGxlVGFibGVTbG90ICpz bG90LAogCXNjYW4tPm5yYW5nZXMrKzsKIH0KIAotI2lmZGVmIEJSSU5TT1JUX0RFQlVHCisj aWZkZWYgQlJJTl9TT1JUX0RFQlVHCiAvKgogICogYnJpbl9taW5tYXhfc2Nhbl9uZXh0CiAg KgkJUmV0dXJuIHRoZSBuZXh0IEJSSU4gcmFuZ2UgaW5mb3JtYXRpb24gZnJvbSB0aGUgdHVw bGVzdG9yZS4KQEAgLTIxOTgsNyArMjE5NSw3IEBAIGJyaW5fbWlubWF4X3JhbmdlcyhQR19G VU5DVElPTl9BUkdTKQogCS8qIGRvIHRoZSBzb3J0IGFuZCBhbnkgbmVjZXNzYXJ5IHBvc3Qt cHJvY2Vzc2luZyAqLwogCWJyaW5fbWlubWF4X3NjYW5fZmluYWxpemUoYnJzY2FuKTsKIAot I2lmZGVmIEJSSU5TT1JUX0RFQlVHCisjaWZkZWYgQlJJTl9TT1JUX0RFQlVHCiAJYnJpbl9t aW5tYXhfc2Nhbl9kdW1wKGJyc2Nhbik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJyaW5Tb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQnJpblNvcnQuYwppbmRleCBmODM1NjIwMmI3Ny4uMDg1MDdmMmI1ZDkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCcmluU29ydC5jCkBAIC0yMTgsNiArMjE4LDggQEAKICAqCQlF eGVjQnJpblNvcnRSZUluaXRpYWxpemVEU00gcmVpbml0aWFsaXplIERTTSBmb3IgZnJlc2gg c2NhbgogICoJCUV4ZWNCcmluU29ydEluaXRpYWxpemVXb3JrZXIgYXR0YWNoIHRvIERTTSBp bmZvIGluIHBhcmFsbGVsIHdvcmtlcgogICovCisjaW5jbHVkZSA8bWF0aC5oPgorCiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9icmluLmgiCkBAIC0yNDgs NiArMjUwLDE0IEBAIHN0YXRpYyB2b2lkIEV4ZWNJbml0QnJpblNvcnRSYW5nZXMoQnJpblNv cnQgKm5vZGUsIEJyaW5Tb3J0U3RhdGUgKnBsYW5zdGF0ZSk7CiBib29sIGRlYnVnX2JyaW5f c29ydCA9IGZhbHNlOwogI2VuZGlmCiAKKy8qCisgKiBIb3cgbWFueSBkaXN0aW5jdCBtaW52 YWwgdmFsdWVzIHRvIGxvb2sgZm9yd2FyZCBmb3IgdGhlIG5leHQgd2F0ZXJtYXJrPworICoK KyAqIFRoZSBzbWFsbGVzdCBzdGVwIHdlIGNhbiBkbyBpcyAxLCB3aGljaCBtZWFucyB0aGUg aW1tZWRpYXRlbHkgZm9sbG93aW5nCisgKiAod2hpbGUgZGlzdGluY3QpIG1pbnZhbC4KKyAq LworaW50CWJyaW5zb3J0X3dhdGVybWFya19zdGVwID0gMDsKKwogLyogZG8gdmFyaW91cyBj b25zaXN0ZW5jeSBjaGVja3MgKi8KIHN0YXRpYyB2b2lkCiBBc3NlcnRDaGVja1JhbmdlcyhC cmluU29ydFN0YXRlICpub2RlKQpAQCAtODU5LDYgKzg2OSwxNzUgQEAgYnJpbnNvcnRfcmVz Y2FuKEJyaW5Tb3J0U3RhdGUgKm5vZGUpCiAJdHVwbGVzb3J0X3Jlc2Nhbihub2RlLT5ic19z Y2FuLT5yYW5nZXMpOwogfQogCisvKgorICogTG9vayBhdCB0aGUgdHVwbGVzb3J0IHN0YXRp c3RpY3MsIGFuZCBtYXliZSBpbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUKKyAqIHdhdGVybWFy ayBzdGVwLiBJZiB0aGUgbGFzdCBzb3J0IHdhcyBpbi1tZW1vcnksIHdlIGRlY3JlYXNlIHRo ZSBzdGVwLgorICogSWYgdGhlIHNvcnQgd2FzIGluLW1lbW9yeSwgYnV0IHdlIHVzZWQgbGVz cyB0aGFuIHdvcmtfbWVtLzMsIGluY3JlbWVudAorICogdGhlIHN0ZXAgdmFsdWUuCisgKgor ICogWFhYIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlaGF2ZSBkaWZmZXJlbnRseSBmb3IgTElN SVQgcXVlcmllcywgc28gdGhhdAorICogd2UgZG9uJ3QgbG9hZCB0b28gbWFueSByb3dzIHVu bmVjZXNzYXJpbHkuIFdlIGFscmVhZHkgY29uc2lkZXIgdGhhdCBpbgorICogY3JlYXRlX2Jy aW5zb3J0X3BsYW4sIGJ1dCBtYXliZSB3ZSBzaG91bGQgbGltaXQgaW5jcmVtZW50cyB0byB0 aGUgc3RlcAorICogdmFsdWUgaGVyZSB0b28gLSBzYXksIGJ5IHRyYWNraW5nIGhvdyBtYW55 IHJvd3MgYXJlIHdlIHN1cHBvc2VkIHRvCisgKiBwcm9kdWNlLCBhbmQgbGltaXRpbmcgdGhl IHdhdGVybWFyayBzbyB0aGF0IHdlIGRvbid0IHByb2Nlc3MgdG9vIG1hbnkKKyAqIHJvd3Mg aW4gZnV0dXJlIHN0ZXBzLgorICoKKyAqIFhYWCBXZSBtaWdodCBhbHNvIHRyYWNrIHRoZSBu dW1iZXIgb2Ygcm93cyBpbiB0aGUgc29ydCBhbmQgc3BhY2UgdXNlZCwKKyAqIHRvIGNhbGN1 bGF0ZSBtb3JlIGFjY3VyYXRlIGVzdGltYXRlIG9mIHJvdyB3aWR0aC4gQW5kIHRoZW4gdXNl IHRoYXQgdG8KKyAqIGNhbGN1bGF0ZSBudW1iZXIgb2Ygcm93cyB0aGF0IGZpdCBpbnRvIHdv cmtfbWVtLiBCdXQgdGhlIG51bWJlciBvZiByb3dzCisgKiB0aGF0IGdvIGludG8gdHVwbGVz b3J0IChwZXIgcmFuZ2UpIGFkZGVkIHdvdWxkIHN0aWxsIHJlbWFpbiBmYWlybHkKKyAqIGlu YWNjdXJhdGUsIHNvIG5vdCBzdXJlIGhvdyBnb29kIHRoaXMgd291ZCBiZS4KKyAqLworc3Rh dGljIHZvaWQKK2JyaW5zb3J0X2FkanVzdF93YXRlcm1hcmtfc3RlcChCcmluU29ydFN0YXRl ICpub2RlLCBUdXBsZXNvcnRJbnN0cnVtZW50YXRpb24gKnN0YXRzKQoreworCUJyaW5Tb3J0 ICAgKnBsYW4gPSAoQnJpblNvcnQgKikgbm9kZS0+c3MucHMucGxhbjsKKworCWlmIChicmlu c29ydF93YXRlcm1hcmtfc3RlcCAhPSAtMSkKKwkJcmV0dXJuOworCisJaWYgKHN0YXRzLT5z cGFjZVR5cGUgPT0gU09SVF9TUEFDRV9UWVBFX0RJU0spCisJeworCQkvKgorCQkgKiBXZSBk b24ndCBrbm93IGhvdyBtdWNoIHRvIGRlY3JlYXNlIHRoZSBzdGVwIChoYXJkIHRvIGVzdGlt YXRlCisJCSAqIGR1ZSB0byBzcGFjZSBuZWVkZWQgZm9yIGluLW1lbW9yeSBhbmQgb24tZGlz ayBzb3J0cyBpcyBub3QKKwkJICogZWFzaWx5IGNvbXBhcmFibGUsIHNvIHdlIGp1c3QgY3V0 IHRoZSBzdGVwIGluIGhhbGYuIEZvciB0aGUKKwkJICogaW4tbWVtb3J5IHNvcnQsIHdlIHRo ZW4gY2FuIGRvIGJldHRlciBlc3RpbWF0ZSBhbmQgaW5jcmVhc2UKKwkJICogdGhlIHN0ZXAg bW9yZSBhY2N1cmF0ZWx5LgorCQkgKi8KKwkJcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSBNYXgo MSwgcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgLyAyKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJ ICogQWRqdXN0IHRoZSBzdGVwIGJhc2VkIG9uIHRoZSBsYXN0IHNvcnQgLSB3ZSBzaG9vdCBm b3IgMi8zIG9mCisJCSAqIHdvcmtfbWVtLCB0byBrZWVwIHNvbWUgc2xhY2sgKGFuZCBub3Qg c3dpdGNoIHRvIG9uLWRpc2sgc29ydAorCQkgKiBkdWUgdG8gbWlub3IgZGlmZmVyZW5jZXMp LiBXZSBjYWxjdWxhdGUgdGhlIGF2ZXJhZ2Ugcm93IHdpZHRoCisJCSAqIHVzaW5nIHNwYWNl IHVzZWQgYW5kIG51bWJlciBvZiByb3dzIGluIHRoZSB0dXBsZXNvcnQsIG51bWJlcgorCQkg KiBvZiByb3dzIHdlIGNvdWxkIGZpdCBpbnRvIHdvcmtfbWVtLCBhbmQgaG93IG1hbnkgc3Rl cHMgd291bGQKKwkJICogdGhhdCBtZWFuIChhc3N1bWluZyBudW1iZXIgb2Ygcm93cyBpcyBw cm9wb3J0aW9uYWwgdG8gdGhlCisJCSAqIG51bWJlciBvZiBzdGVwcykuCisJCSAqCisJCSAq IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUgbnVtYmVyIG9mIHJvd3Mgd2UncmUg c3VwcG9zZWQKKwkJICogdG8gcHJvZHVjZSAoYW5kIGhvdyBtYW55IHdlIGFscmVhZHkgcHJv ZHVjZWQpLiBDb25zaWRlciBmb3IKKwkJICogZXhhbXBsZSBhIHF1ZXJ5IHdpdGggTElNSVQg MTAwMCwgYW5kIHRoYXQgd2UgcHJvZHVjZSA5OTkgcm93cworCQkgKiBpbiB0aGUgZmlyc3Qg c29ydCwgc28gdGhhdCB3ZSBuZWVkIG9ubHkgMSBtb3JlIHJvdy4gSXQgd291bGQKKwkJICog YmUgc2lsbHkgdG8gcGljayB0aGUgc3RlcHMgd2l0aCB0aGUgZ29hbCB0byAiZmlsbCB3b3Jr X21lbSIKKwkJICogaW5zdGVhZCBvZiBqdXN0IGVub3VnaCB0byBwcm9kdWNlIHRoZSBvbmUg cm93LgorCQkgKgorCQkgKiBYWFggSW4gcHJpbmNpcGxlLCB3ZSBkb24ndCBrbm93IGhvdyBt YW55IHJvd3Mgd2lsbCBuZWVkIHRvIGJlCisJCSAqIHJlYWQgZnJvbSB0aGUgdGFibGUgLSB0 aGVyZSBtYXkgYmUgaW50ZXJlc3Rpbmcgcm93cyBhbHJlYWR5IGluCisJCSAqIHRoZSB0dXBs ZXN0b3JlIChpbiB3aGljaCBjYXNlIHdlIGNvdWxkIGRvIGEgc21hbGxlciBzdGVwKS4gQnV0 CisJCSAqIHdlIGRvbid0IGtub3cgaG93IG1hbnkgc3VjaCByb3dzIGFyZSB0aGVyZSAtIG1h eWJlIGlmIHdlIGhhZAorCQkgKiBtdWx0aXBsZSBzbWFsbGVyIHR1cGxlc3RvcmVzLCB3aGlj aCB3b3VsZCBhbHNvIHJlZHVjZSB0aGUKKwkJICogYW1vdW50IG9mICJyZXNwaWxsIiB3ZSBu ZWVkIHRvIGRvLgorCQkgKi8KKwkJaW50CQlucm93c19yZW1haW5pbmc7CisJCWludAkJc3Rl cCA9IHBsYW4tPndhdGVybWFya19zdGVwOworCQlpbnQJCXN0ZXBfbWF4ID0gcGxhbi0+d2F0 ZXJtYXJrX3N0ZXAgKiAyOworCisJCS8qIG51bWJlciBvZiByZW1haW5pbmcgcm93cyB3ZSdy ZSBleHBlY3RlZCB0byBwcm9kdWNlICovCisJCW5yb3dzX3JlbWFpbmluZyA9IE1heCgxLjAs IHBsYW4tPnN0ZXBfbWF4cm93cyAtIG5vZGUtPmJzX3N0YXRzLm50dXBsZXNfdHVwbGVzb3J0 X2FsbCk7CisKKwkJLyoKKwkJICogSWYgd2Ugc29ydGVkIGFueSByb3dzLCBjYWxjdWxhdGUg aG93IG1hbnkgc2ltaWxhciByb3dzIHdlIGNhbiBmaXQKKwkJICogaW50byB3b3JrX21lbS4g V2UgcmVzdHJpY3Qgb3Vyc2VsdmVzIHRvIDIvMyBvZiB3b3JrX21lbSwgdG8gbGVhdmUKKwkJ ICogYSBiaXQgb2Ygc2xhY2sgc3BhY2UuCisJCSAqCisJCSAqIFhYWCBIb3BlZnVsbHkgdGhl IGF2ZXJhZ2Ugd2lkdGggaXMgc29tZXdoYXQgYWNjdXJhdGUsIGJ1dCBtYXliZQorCQkgKiB3 ZSBzaG91bGQgcmVtZW1iZXIgdGhlIHdpZHRoIHdlIG9yaWdpbmFsbHkgZXhwZWN0ZWQsIGFu ZCBjb21iaW5lCisJCSAqIHRoYXQgc29tZWhvdy4gTWF5YmUgd2Ugc2hvdWxkIG5vdCB1c2Ug anVzdCB0aGUgbGFzdCB0dXBsZXNvcnQsCisJCSAqIGJ1dCBpbnN0ZWFkIGFjY3VtdWxhdGUg YXZlcmFnZSBmcm9tIGFsbCBwcmVjZWRpbmcgc29ydHMgYW5kCisJCSAqIGNvbWJpbmUgdGhl bSBzb21laG93IChzYXksIHVzaW5nIHdlaWdodGVkIGF2ZXJhZ2Ugd2l0aCBvbGRlcgorCQkg KiB2YWx1ZXMgaGF2aW5nIGxlc3MgaW5mbHVlbmNlKS4KKwkJICovCisJCWlmIChub2RlLT5i c19zdGF0cy5udHVwbGVzX3R1cGxlc29ydCA+IDApCisJCXsKKwkJCWludAkJbnJvd3Nfd21l bTsKKwkJCWludAkJYXZnd2lkdGg7CisKKwkJCS8qIGF2ZXJhZ2UgdHVwbGUgd2lkdGgsIGNh bGN1bGF0ZWQgZnJvbSBsYXN0IHNvcnQgKi8KKwkJCWF2Z3dpZHRoID0gKHN0YXRzLT5zcGFj ZVVzZWQgKiAxMDI0TCAvIG5vZGUtPmJzX3N0YXRzLm50dXBsZXNfdHVwbGVzb3J0KTsKKwor CQkJLyoKKwkJCSAqIENhbGN1bGF0ZSB0aGUgbnVtZXIgb2Ygcm93cyB0byBmaXQgaW50byAy LzMgb2Ygd29ya19tZW0sIGJ1dAorCQkJICogY2FwIHRvIHRoZSBudW1iZXIgb2Ygcm93cyB3 ZSdyZSBleHBlY3RlZCB0byBwcm9kdWNlLgorCQkJICovCisJCQlucm93c193bWVtID0gTWlu KG5yb3dzX3JlbWFpbmluZywgKDIgKiAxMDI0TCAqIHdvcmtfbWVtIC8gMykgLyBhdmd3aWR0 aCk7CisKKwkJCS8qIHNjYWxlIHRoZSBudW1iZXIgb2Ygc3RlcHMgdG8gcHJvZHVjZSB0aGUg bnVtYmVyIG9mIHJvd3MgKi8KKwkJCXN0ZXAgPSBzdGVwICogKChkb3VibGUpIChucm93c193 bWVtICogYXZnd2lkdGgpIC8gKHN0YXRzLT5zcGFjZVVzZWQgKiAxMDI0TCkpOworCisJCQkv KiByZW1lbWJlciB0aGlzIGFzIHRoZSBtYXgsIHNvIHRoYXQgd2UgZG9uJ3Qgb3ZlcmZsb3cg d29ya19tZW0gKi8KKwkJCXN0ZXBfbWF4ID0gTWluKHN0ZXAsIHN0ZXBfbWF4KTsKKworCQkJ LyogaG93ZXZlciwgbWFrZSBzdXJlIHdlIGRvbid0IGdyb3cgdG9vIGZhc3QgLSBjYXAgdG8g MnggKi8KKwkJCXN0ZXAgPSBNaW4oc3RlcCwgc3RlcF9tYXgpOworCQl9CisKKwkJLyoKKwkJ ICogTm93IGNhbGN1bGF0ZSBhdmVyYWdlIHN0ZXAgc2l6ZSB1c2luZyBkYXRhIGZyb20gYWxs IHNvcnRzIHdlIGRpZAorCQkgKiB1cCB0byBub3cuIFRoZW4gd2UgY2FsY3VsYXRlIHRoZSBu dW1iZXIgb2Ygc3RlcHMgd2UgZXhwZWN0IHRvIGJlCisJCSAqIG5lY2Vzc2FyeS4KKwkJICoK KwkJICogSWYgd2UgaGFkIGNhbGN1bGF0ZWQgYXZlcmFnZSBudW1iZXIgb2Ygcm93cyBwZXIg c3RlcCBmcm9tIEFNIHN0YXRzLAorCQkgKiBjb25zaWRlciB0aGF0IHRvby4gSXQncyBwb3Nz aWJsZSB0aGUgYmF0Y2ggaGFkIGp1c3Qgb25lIHJvdywgd2hpY2gKKwkJICogbWlnaHQgcmVz dWx0IGluIHZlcnkgaGlnaCBlc3RpbWF0ZSBvZiBzdGVwcyAtIGl0J2QgYmUgc2lsbHkgdG8K KwkJICoganVtcCBlLmcuIGZyb20gMSB0byAxMDAwIGJhc2VkIG9uIHRoaXMgdW5yZWxpYWJs ZSBzdGF0aXN0aWNzLiBUbworCQkgKiBwcmV2ZW50IHRoYXQsIHdlIGNvbWJpbmUgdGhlIHR3 byByb3dzX3Blcl9zdGVwIHNvdXJjZXMgYXMgd2VpZ2h0ZWQKKwkJICogc3VtLCB1c2luZyB0 aGUgb2JzZXJ2ZWQgdnMuIHRhcmdldCBudW1iZXIgb2Ygcm93cyBhcyB3ZWlnaHQuIFRoZQor CQkgKiBjbG9zZXIgd2UncmUgdG8gdGhlIHRhcmdldCwgdGhlIG1vcmUgcmVsaWFibGUgdmFs dWUgZnJvbSBwYXN0CisJCSAqIGV4ZWN1dGlvbnMgaXMuCisJCSAqCisJCSAqIEJ1dCB3ZSBk b24ndCB3YW50IHRvIG92ZXJmbG93IHdvcmtfbWVtLCBzbyBjYXAgYnkgc3RlcF9tYXguCisJ CSAqLworCQlpZiAobm9kZS0+YnNfc3RhdHMubnR1cGxlc190dXBsZXNvcnRfYWxsID4gMCkK KwkJeworCQkJZG91YmxlCQlyb3dzX3Blcl9zdGVwOworCisJCQkvKiBhdmVyYWdlIG51bWJl ciBvZiByb3dzIHdlIHByb2R1Y2VkIHBlciBzdGVwIHNvIGZhciAqLworCQkJcm93c19wZXJf c3RlcCA9IChkb3VibGUpIG5vZGUtPmJzX3N0YXRzLm50dXBsZXNfdHVwbGVzb3J0X2FsbCAv IG5vZGUtPmJzX3N0YXRzLndhdGVybWFya191cGRhdGVzX3N0ZXBzOworCisJCQkvKgorCQkJ ICogSWYgd2UgaGF2ZSBBTSBzdGF0cyB3aXRoIGF2ZXJhZ2UgbnVtYmVyIG9mIHJvd3MgcGVy IHN0ZXAsIGNvbnNpZGVyCisJCQkgKiB0aGF0IHRvbyAtIGFwcHJveGltYXRlIGRlcGVuZGlu ZyBvbiB3aGF0IGZyYWN0aW9uIG9mIHJvd3Mgd2UgYWxyZWFkeQorCQkJICogcHJvZHVjZWQg KHdpdGggaGlnaGVyIGZyYWN0aW9uIG9mIHJvd3MgcHJvZHVjZWQgd2UgcHJlZmVyIHRoZSBs b2NhbAorCQkJICogYXZlcmFnZSwgYXMgb3Bwb3NlZCB0byB0aGUgZ2xvYmFsIGF2ZXJhZ2Ug ZnJvbSBpbmRleCBBTSBzdGF0cykuCisJCQkgKi8KKwkJCWlmIChwbGFuLT5yb3dzX3Blcl9z dGVwID4gMCkKKwkJCXsKKwkJCQkvKiBudW1iZXIgb2Ygcm93cyB3ZSBhbHJlYWR5IHByb2R1 Y2VkIChhcyBhIGZyYWN0aW9uKSAqLworCQkJCWRvdWJsZSB3ZWlnaHQgPSAoZG91YmxlKSBu b2RlLT5ic19zdGF0cy5udHVwbGVzX3R1cGxlc29ydF9hbGwgLyBwbGFuLT5zdGVwX21heHJv d3M7CisKKwkJCQkvKiBwYXJhbm9pYSAqLworCQkJCXdlaWdodCA9IE1pbigxLjAsIHdlaWdo dCk7CisKKwkJCQkvKgorCQkJCSAqIEFwcHJveGltYXRlIGJldHdlZW4gaW5kZXggQU0gYW5k ICJsb2NhbCIgYXZlcmFnZSBjYWxjdWxhdGVkCisJCQkJICogZnJvbSBwYXN0IGV4ZWN1dGlv bnMuIFRoZSBjbG9zZXIgd2UgZ2V0IHRvIHRhcmdldCByb3dzLCB0aGUKKwkJCQkgKiBtb3Jl IHdlIGlnbm9yZSB0aGUgaW5kZXggQU0gc3RhdHMuCisJCQkJICovCisJCQkJcm93c19wZXJf c3RlcCA9IHdlaWdodCAqIHJvd3NfcGVyX3N0ZXAgKyAoMSAtIHdlaWdodCkgKiBwbGFuLT5y b3dzX3Blcl9zdGVwOworCQkJfQorCisJCQkvKiBhcHByb3hpbWF0ZSB0aGUgc3RlcHMgYmV0 d2VlbiAqLworCQkJc3RlcCA9IE1heChzdGVwLCBjZWlsKChkb3VibGUpIG5yb3dzX3JlbWFp bmluZyAvIHJvd3NfcGVyX3N0ZXApKTsKKworCQkJLyoKKwkJCSAqIEJ1dCBkb24ndCBvdmVy ZmxvdyB0aGUgY3VycmVudCBtYXggKHdoaWNoIGlzIHNldCBlaXRoZXIKKwkJCSAqIGFzIDJ4 IHN0YXJ0aW5nIHZhbHVlLCBvciBmcm9tIHdvcmtfbWVtLgorCQkJICovCisJCQlzdGVwID0g TWluKHN0ZXAsIHN0ZXBfbWF4KTsKKwkJfQorCisJCXBsYW4tPndhdGVybWFya19zdGVwID0g c3RlcDsKKworCX0KKworCXBsYW4tPndhdGVybWFya19zdGVwID0gTWF4KDEsIHBsYW4tPndh dGVybWFya19zdGVwKTsKKwlwbGFuLT53YXRlcm1hcmtfc3RlcCA9IE1pbig4MTkyLCBwbGFu LT53YXRlcm1hcmtfc3RlcCk7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlJbmRleE5leHQK ICAqCkBAIC05OTcsMTMgKzExNzYsMjEgQEAgSW5kZXhOZXh0KEJyaW5Tb3J0U3RhdGUgKm5v ZGUpCiAKIAkJCQkJCS8qCiAJCQkJCQkgKiBSZXNldCB0dXBsZXNvcnQgc3RhdGlzdGljcyBi ZXR3ZWVuIHJ1bnMsIG90aGVyd2lzZQotCQkJCQkJICogd2UnbGwga2VlcCByZS11c2luZyBz dGF0cyBmcm9tIHRoZSBsYXJnZXN0IHJ1bi4KKwkJCQkJCSAqIHdlJ2xsIGtlZXAgcmUtdXNp bmcgc3RhdHMgZnJvbSB0aGUgbGFyZ2VzdCBydW4sIHdoaWNoCisJCQkJCQkgKiB3b3VsZCB0 aGVuIGNvbmZ1c2UgdGhlIGFkYXB0aXZlIGFkanVzdG1lbnQgb2YgdGhlCisJCQkJCQkgKiB3 YXRlcm1hcmsgc3RlcC4KIAkJCQkJCSAqLwogCQkJCQkJdHVwbGVzb3J0X3Jlc2V0X3N0YXRz KG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlKTsKIAogCQkJCQkJdHVwbGVzb3J0X3BlcmZvcm1z b3J0KG5vZGUtPmJzX3R1cGxlc29ydHN0YXRlKTsKIAogCQkJCQkJbm9kZS0+YnNfc3RhdHMu c29ydF9jb3VudCsrOworCisJCQkJCQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2YoVHVwbGVz b3J0SW5zdHJ1bWVudGF0aW9uKSk7CisJCQkJCQl0dXBsZXNvcnRfZ2V0X3N0YXRzKG5vZGUt PmJzX3R1cGxlc29ydHN0YXRlLCAmc3RhdHMpOworCisJCQkJCQlicmluc29ydF9hZGp1c3Rf d2F0ZXJtYXJrX3N0ZXAobm9kZSwgJnN0YXRzKTsKKwogCQkJCQkJbm9kZS0+YnNfc3RhdHMu bnR1cGxlc190dXBsZXNvcnQgPSAwOwogCiAJCQkJCQl0dXBsZXNvcnRfZ2V0X3N0YXRzKG5v ZGUtPmJzX3R1cGxlc29ydHN0YXRlLCAmc3RhdHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDAxY2ZlM2Y1YjU4Li44OWZiOTg5ZmE1ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzI0LDEzICsz MjQsOCBAQCBzdGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQ bGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9w YXRoKTsKIAogCi0vKgotICogSG93IG1hbnkgZGlzdGluY3QgbWludmFsIHZhbHVlcyB0byBs b29rIGZvcndhcmQgZm9yIHRoZSBuZXh0IHdhdGVybWFyaz8KLSAqCi0gKiBUaGUgc21hbGxl c3Qgc3RlcCB3ZSBjYW4gZG8gaXMgMSwgd2hpY2ggbWVhbnMgdGhlIGltbWVkaWF0ZWx5IGZv bGxvd2luZwotICogKHdoaWxlIGRpc3RpbmN0KSBtaW52YWwuCi0gKi8KLWludCBicmluc29y dF93YXRlcm1hcmtfc3RlcCA9IDA7CisvKiBkZWZpbmVkIGluIG5vZGVCcmluU29ydC5jICov CitleHRlcm4gaW50IGJyaW5zb3J0X3dhdGVybWFya19zdGVwOwogCiAvKgogICogY3JlYXRl X3BsYW4KQEAgLTM0NDksOCArMzQ0NCwxNCBAQCBjcmVhdGVfYnJpbnNvcnRfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwKIAkgKiBhcmUgdGhlcmUsIGFuZCBpZiB0aGVyZSBhcmUgb25seSBm ZXcgdGhlbiB0cnkgaW5jcmVhc2luZyB0aGUgc3RlcD8KIAkgKi8KIAlicmluc29ydF9wbGFu LT53YXRlcm1hcmtfc3RlcCA9IGJyaW5zb3J0X3dhdGVybWFya19zdGVwOworCWJyaW5zb3J0 X3BsYW4tPnJvd3NfcGVyX3N0ZXAgPSAtMTsKIAotCWlmIChicmluc29ydF9wbGFuLT53YXRl cm1hcmtfc3RlcCA9PSAwKQorCWlmIChyb290LT5saW1pdF90dXBsZXMgPiAwKQorCQlicmlu c29ydF9wbGFuLT5zdGVwX21heHJvd3MgPSByb290LT5saW1pdF90dXBsZXM7CisJZWxzZQor CQlicmluc29ydF9wbGFuLT5zdGVwX21heHJvd3MgPSBicmluc29ydF9wbGFuLT5zY2FuLnBs YW4ucGxhbl9yb3dzOworCisJaWYgKGJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwIDw9 IDApCiAJewogCQlCcmluTWlubWF4U3RhdHMgKmFtc3RhdHM7CiAKQEAgLTM0NzgsNyArMzQ3 OSw5IEBAIGNyZWF0ZV9icmluc29ydF9wbGFuKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJ CQkJICAgYW1zdGF0cy0+bWF4dmFsX2luY3JlbWVudF9hdmcpOwogCQkJZG91YmxlCXJvd3Nf cGVyX3N0ZXAgPSBNYXgoMS4wLCBwY3RfcGVyX3N0ZXAgKiByb3dzKTsKIAotCQkJYnJpbnNv cnRfcGxhbi0+d2F0ZXJtYXJrX3N0ZXAgPSAoaW50KSAobWF4cm93cyAvIHJvd3NfcGVyX3N0 ZXApOworCQkJYnJpbnNvcnRfcGxhbi0+cm93c19wZXJfc3RlcCA9IHJvd3NfcGVyX3N0ZXA7 CisKKwkJCWJyaW5zb3J0X3BsYW4tPndhdGVybWFya19zdGVwID0gKGludCkgY2VpbChtYXhy b3dzIC8gcm93c19wZXJfc3RlcCk7CiAJCX0KIAogCQkvKiBzb21lIHJvdWdoIHNhZmV0eSBl c3RpbWF0ZXMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggMWJj MzliMzc2MDYuLjEyMDI1MDg2N2Q0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYwpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJl TmFtZXNJbnRbXSA9CiAJCQlHVUNfTk9UX0lOX1NBTVBMRQogCQl9LAogCQkmYnJpbnNvcnRf d2F0ZXJtYXJrX3N0ZXAsCi0JCTAsIDAsIElOVF9NQVgsCisJCTAsIC0xLCBJTlRfTUFYLAog CQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAw NmRjNjQxNmQ5OS4uYTMwNTkzMTQwNTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0x NzEzLDcgKzE3MTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCcmluU29ydFN0YXRlCiAJICogV2Ug bmVlZCB0d28gdHVwbGVzb3J0IGluc3RhbmNlcyAtIG9uZSBmb3IgY3VycmVudCByYW5nZSwg b25lIGZvcgogCSAqIHNwaWxsLW92ZXIgdHVwbGVzIGZyb20gdGhlIG92ZXJsYXBwaW5nIHJh bmdlcwogCSAqLwotCXZvaWQJCSAgICpic190dXBsZXNvcnRzdGF0ZTsKKwlUdXBsZXNvcnRz dGF0ZSAgKmJzX3R1cGxlc29ydHN0YXRlOwogCVR1cGxlc3RvcmVzdGF0ZSAqYnNfdHVwbGVz dG9yZTsKIH0gQnJpblNvcnRTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCA2 NTlhNmQxMTBlZS4uYjBjZmYxZDAyZDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC01 MzMsNyArNTMzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblNvcnQKIAogCS8qIG51bWJlciBv ZiB3YXRlcm1hcmsgc3RlcHMgdG8gbWFrZSAqLwogCWludAkJCXdhdGVybWFya19zdGVwOwot CisJaW50CQkJc3RlcF9tYXhyb3dzOworCWludAkJCXJvd3NfcGVyX3N0ZXA7CiB9IEJyaW5T b3J0OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCi0tIAoyLjM5LjEKCg== --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0009-wip-add-brin_sort.sql-test-20230218.patch" Content-Disposition: attachment; filename="0009-wip-add-brin_sort.sql-test-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSBhOGEwZTlhNzQ5ODViOWM1NDU1NDFjMjA2MGE1MzYxNWRlODYxMjA1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAzIEZlYiAyMDIzIDEzOjE5OjI0ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAwOS8xMF0gd2lwOiBhZGQgYnJpbl9zb3J0LnNxbCB0ZXN0CgotLS0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0Lm91dCAgICAgICB8IDU0MyArKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X2V4cHJzLm91 dCB8IDc4OCArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YnJpbl9zb3J0X211bHRpLm91dCB8IDU0NSArKysrKysrKysrKysKIC4uLi9leHBlY3RlZC9i cmluX3NvcnRfbXVsdGlfZXhwcnMub3V0ICAgICAgICB8IDc4NCArKysrKysrKysrKysrKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICA2 ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydC5zcWwgICAgICAgICAgICB8IDIz OCArKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9leHBycy5zcWwgICAg ICB8IDM3MyArKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydF9tdWx0 aS5zcWwgICAgICB8IDIzNSArKysrKysKIC4uLi9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVs dGlfZXhwcnMuc3FsICAgICB8IDM2OSArKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAzODgx IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2JyaW5fc29ydC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9leHBycy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aS5vdXQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9tdWx0aV9l eHBycy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9icmlu X3NvcnQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJp bl9zb3J0X2V4cHJzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2JyaW5fc29ydF9tdWx0aS5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGlfZXhwcnMuc3FsCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnQub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9icmluX3NvcnQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4wZTIwN2NmNGY2ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0Lm91dApAQCAtMCwwICsxLDU0MyBAQAorLS0gZnVu Y3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29ydC1yZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3Ms IG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dzX2V4cGVjdGVkIGludCwgcF9kZXNjIGJvb2xl YW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZQorICAgIHZfY3VycyByZWZjdXJzb3I7 CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZfcHJldiByZWNvcmQ7CisgICAgdl9icmluX3Nv cnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAgICB2X2NvdW50IGludCA6PSAwOworYmVnaW4K KworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRoZSBwX3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50 IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdkaXNjYXJkIHBsYW5zJzsKKworICAgIE9QRU4g dl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQoJ2V4cGxhaW4gJXMnLCBwX3Nx bCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisg ICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBF TkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6OnRleHQgTElLRSAnJUJSSU4gU29ydCUnIFRI RU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0X2ZvdW5kIDo9IHRydWU7CisgICAgICAgICAg ICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2 X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmluX3NvcnRfZm91bmQgVEhFTgorICAgICAgICBS QUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDogbm90IGZvdW5kJzsKKyAgICBFTkQgSUY7CisK KyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KHBfc3FsKTsK KworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAg ICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJ RjsKKworICAgICAgICBJRiB2X3ByZXYgSVMgTk9UIE5VTEwgVEhFTgorICAgICAgICAgICAg SUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBBTkQgTk9UIHBfZGVzYyBUSEVOCisgICAgICAg ICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlID4gJSAoYXNj KScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAg ICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jvdy52YWwgQU5EIHBfZGVzYyBUSEVOCisgICAg ICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdvcmRlcmluZyBtaXNtYXRjaCAlIDwgJSAo ZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7Cisg ICAgICAgIEVORCBJRjsKKworICAgICAgICB2X3ByZXYgOj0gdl9yb3c7CisgICAgICAgIHZf Y291bnQgOj0gdl9jb3VudCArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1 cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBfcm93c19leHBlY3RlZCBUSEVOCisgICAgICAg IFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlzbWF0Y2g6ICUgIT0gJScsIHZfY291bnQsIHBf cm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7CisKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdz cWw7CitjcmVhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRf dmFsIGJpZ2ludCwgdGV4dF92YWwgdGV4dCwgaW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZh Y3Rvcj0xMCk7CistLSBzZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0 X3Rlc3QKK3NlbGVjdAorCWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qg b3Bwb3NpdGUKKwlscGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwkn MTAuMC4wLjAnOjppbmV0ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkp OworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBvbiBpbmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0 ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5n IGJyaW4gKGludF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRl eCBicmluX3NvcnRfdGVzdF9iaWdpbnRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJy aW4gKGJpZ2ludF92YWwpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRl eCBicmluX3NvcnRfdGVzdF90ZXh0X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmlu ICh0ZXh0X3ZhbCkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRlIGluZGV4IGJy aW5fc29ydF90ZXN0X2luZXRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKGlu ZXRfdmFsIGluZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworLS0g Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKK3NldCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdp bnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBzZW1pLXJhbmRvbSBkYXRh IChzZXF1ZW50aWFsICsgcmFuZG9tbmVzcykKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90 ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAwICog cmFuZG9tKCkpOjppbnQsCisJLShpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2Ft ZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKGkgKyAoMTAwICogcmFu ZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAu MC4wJzo6aW5ldCArIChpICsgMTAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2 YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEw MCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50 X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBiaWdpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2lu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor IAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5l dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSB0ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3Zh bCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCistLSByYW5kb20gZGF0YQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0 X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJKDEwMDAgKiBy YW5kb20oKSk6OmludCwKKwktKCgxMDAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFz IGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoKDEwMDAgKiByYW5kb20oKSk6 OmludCk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjpp bmV0ICsgKDEwMDAgKiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwKSBzKGkpOworcmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVzdDsKK3ZhY3V1bSBhbmFs eXplIGJyaW5fc29ydF90ZXN0OworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBp bnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg aW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50 X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCisgCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor IAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwnLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRf dmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4 dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9leHBycy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2JyaW5fc29ydF9leHBycy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjg3ZTU4YTEwODgzCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX3NvcnRfZXhwcnMub3V0CkBAIC0wLDAgKzEs Nzg4IEBACistLSBmdW5jdGlvbiB0byB2ZXJpZnkgdmFyaW91cyBzb3J0LXJlbGF0ZWQgZGF0 YSAodG90YWwgcm93cywgb3JkZXJpbmcpCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyhwX3NxbCB0ZXh0LCBwX3Jvd3NfZXhwZWN0ZWQgaW50 LCBwX2Rlc2MgYm9vbGVhbikgcmV0dXJucyB2b2lkIGFzICQkCitkZWNsYXJlCisgICAgdl9j dXJzIHJlZmN1cnNvcjsKKyAgICB2X3JvdyByZWNvcmQ7CisgICAgdl9wcmV2IHJlY29yZDsK KyAgICB2X2JyaW5fc29ydF9mb3VuZCBib29sIDo9IGZhbHNlOworICAgIHZfY291bnQgaW50 IDo9IDA7CitiZWdpbgorCisgICAgLS0gbmVlZGVkIGJlY2F1c2UgdGhlIHBfc3FsIHF1ZXJ5 IGhhcyBkaWZmZXJlbnQgZGF0YSB0eXBlcworICAgIGV4ZWN1dGUgJ2Rpc2NhcmQgcGxhbnMn OworCisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdCgnZXhw bGFpbiAlcycsIHBfc3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElO VE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVY SVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJRiB2X3Jvdzo6dGV4dCBMSUtFICcl QlJJTiBTb3J0JScgVEhFTgorICAgICAgICAgICAgdl9icmluX3NvcnRfZm91bmQgOj0gdHJ1 ZTsKKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsK KworICAgIENMT1NFIHZfY3VyczsKKworICAgIElGIE5PVCB2X2JyaW5fc29ydF9mb3VuZCBU SEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnQlJJTiBTb3J0OiBub3QgZm91bmQnOwor ICAgIEVORCBJRjsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBm b3JtYXQocF9zcWwpOworCisgICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2 X3JvdzsKKworICAgICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsK KyAgICAgICAgRU5EIElGOworCisgICAgICAgIElGIHZfcHJldiBJUyBOT1QgTlVMTCBUSEVO CisgICAgICAgICAgICBJRiB2X3ByZXYudmFsID4gdl9yb3cudmFsIEFORCBOT1QgcF9kZXNj IFRIRU4KKyAgICAgICAgICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21h dGNoICUgPiAlIChhc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAg RU5EIElGOworICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA8IHZfcm93LnZhbCBBTkQgcF9k ZXNjIFRIRU4KKyAgICAgICAgICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1p c21hdGNoICUgPCAlIChkZXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAg ICAgIEVORCBJRjsKKyAgICAgICAgRU5EIElGOworCisgICAgICAgIHZfcHJldiA6PSB2X3Jv dzsKKyAgICAgICAgdl9jb3VudCA6PSB2X2NvdW50ICsgMTsKKyAgICBFTkQgTE9PUDsKKwor ICAgIENMT1NFIHZfY3VyczsKKworICAgIElGIHZfY291bnQgIT0gcF9yb3dzX2V4cGVjdGVk IFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdjb3VudCBtaXNtYXRjaDogJSAhPSAl Jywgdl9jb3VudCwgcF9yb3dzX2V4cGVjdGVkOworICAgIEVORCBJRjsKKworZW5kOworJCQg bGFuZ3VhZ2UgcGxwZ3NxbDsKK2NyZWF0ZSB0YWJsZSBicmluX3NvcnRfdGVzdCAoaW50X3Zh bCBpbnQsIGJpZ2ludF92YWwgYmlnaW50LCB0ZXh0X3ZhbCB0ZXh0LCBpbmV0X3ZhbCBpbmV0 KSB3aXRoIChmaWxsZmFjdG9yPTEwKTsKKy0tIHNlcXVlbnRpYWwgdmFsdWVzCitpbnNlcnQg aW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSwKKwktaSwJLS0gc2FtZSBhcyBpbnQs IGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoaTo6dGV4dCB8fCBtZDUoaTo6dGV4dCks IDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyBpCitmcm9tIGdlbmVyYXRlX3Nlcmll cygxLDEwMDApIHMoaSk7CistLSBjcmVhdGUgYnJpbiBpbmRleGVzIG9uIGluZGl2aWR1YWwg Y29sdW1ucworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X2ludF9pZHggb24gYnJpbl9z b3J0X3Rlc3QgdXNpbmcgYnJpbiAoKGludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3Jh bmdlPTEpOworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X2JpZ2ludF9pZHggb24gYnJp bl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAoKGJpZ2ludF92YWwgKyAxKSkgd2l0aCAocGFnZXNf cGVyX3JhbmdlPTEpOworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X3RleHRfaWR4IG9u IGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKCgneCcgfHwgdGV4dF92YWwpKSB3aXRoIChw YWdlc19wZXJfcmFuZ2U9MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW5ldF9p ZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAoKGluZXRfdmFsICsgMSkgaW5ldF9t aW5tYXhfb3BzKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7CistLSAKK3ZhY3V1bSBhbmFs eXplIGJyaW5fc29ydF90ZXN0Oworc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworIAorLS0g bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScs IDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEp IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixi b29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxz ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVz c2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRy dWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAK Ky0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcn IHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4 JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCist LSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitFUlJP UjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24g YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEg YXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eScnIHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRf dmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRl c2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQor IAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRl c2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1p c21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJS T1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9u IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMx IGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSBzZW1pLXJh bmRvbSBkYXRhIChzZXF1ZW50aWFsICsgcmFuZG9tbmVzcykKK3RydW5jYXRlIHRhYmxlIGJy aW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWkg KyAoMTAwICogcmFuZG9tKCkpOjppbnQsCisJLShpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50 KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKGkgKyAo MTAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyks CisJJzEwLjAuMC4wJzo6aW5ldCArIChpICsgMTAwICogcmFuZG9tKCk6OmludCkKK2Zyb20g Z2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0 X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKyAKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsK KyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBm YWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29y dDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVl KTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikg bGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJP UjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24g YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEg YXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg LSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScs IDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VS Uk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAz MSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJp Z2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmln aW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCistLSBtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRl eHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0 Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4 dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg KyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGlu ZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91 bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmlu Zyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRy dWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJ TiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29y dF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlT RQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkg ZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0gcmFuZG9tIGRhdGEKK3Ry dW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rl c3QKK3NlbGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRv bSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxw YWQoKCgxMDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAs ICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zy b20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9z b3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKyAKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAw LCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwv cGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJv b2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NR TCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVh bikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitF UlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUg MzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo YmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChi aWdpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24K K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAx KScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsK K0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGlu ZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo YmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklO IFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNF CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCistLSBt YXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8 IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGlt aXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRl cmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlz bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJB SVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8 fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkg bGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4 dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0t IG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRj aGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3Qg Zm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRl cmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAs IHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3Bn U1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29s ZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0g MSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorZHJvcCB0YWJsZSBicmlu X3NvcnRfdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJp bl9zb3J0X211bHRpLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0 X211bHRpLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjJm YTgzMzFkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2JyaW5fc29ydF9tdWx0aS5vdXQKQEAgLTAsMCArMSw1NDUgQEAKKy0tIGZ1bmN0aW9uIHRv IHZlcmlmeSB2YXJpb3VzIHNvcnQtcmVsYXRlZCBkYXRhICh0b3RhbCByb3dzLCBvcmRlcmlu ZykKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHBfc3FsIHRleHQsIHBfcm93c19leHBlY3RlZCBpbnQsIHBfZGVzYyBib29sZWFuKSByZXR1 cm5zIHZvaWQgYXMgJCQKK2RlY2xhcmUKKyAgICB2X2N1cnMgcmVmY3Vyc29yOworICAgIHZf cm93IHJlY29yZDsKKyAgICB2X3ByZXYgcmVjb3JkOworICAgIHZfYnJpbl9zb3J0X2ZvdW5k IGJvb2wgOj0gZmFsc2U7CisgICAgdl9jb3VudCBpbnQgOj0gMDsKK2JlZ2luCisKKyAgICAt LSBuZWVkZWQgYmVjYXVzZSB0aGUgcF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5 cGVzCisgICAgZXhlY3V0ZSAnZGlzY2FyZCBwbGFucyc7CisKKyAgICBPUEVOIHZfY3VycyBO TyBTQ1JPTEwgRk9SIEVYRUNVVEUgZm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwpOworCisg ICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJ RiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOwor CisgICAgICAgIElGIHZfcm93Ojp0ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAg ICAgICAgICB2X2JyaW5fc29ydF9mb3VuZCA6PSB0cnVlOworICAgICAgICAgICAgRVhJVDsK KyAgICAgICAgRU5EIElGOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOwor CisgICAgSUYgTk9UIHZfYnJpbl9zb3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhD RVBUSU9OICdCUklOIFNvcnQ6IG5vdCBmb3VuZCc7CisgICAgRU5EIElGOworCisgICAgT1BF TiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisKKyAgICBM T09QCisgICAgICAgIEZFVENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5P VCBGT1VORCBUSEVOCisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAg ICAgICAgSUYgdl9wcmV2IElTIE5PVCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJl di52YWwgPiB2X3Jvdy52YWwgQU5EIE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAg IFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3By ZXYudmFsLCB2X3Jvdy52YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBJ RiB2X3ByZXYudmFsIDwgdl9yb3cudmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAg ICAgIFJBSVNFIEVYQ0VQVElPTiAnb3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywg dl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBF TkQgSUY7CisKKyAgICAgICAgdl9wcmV2IDo9IHZfcm93OworICAgICAgICB2X2NvdW50IDo9 IHZfY291bnQgKyAxOworICAgIEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisg ICAgSUYgdl9jb3VudCAhPSBwX3Jvd3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBF WENFUFRJT04gJ2NvdW50IG1pc21hdGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhw ZWN0ZWQ7CisgICAgRU5EIElGOworCitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworY3Jl YXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwgYmlnaW50X3ZhbCBiaWdp bnQsIHRleHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGggKGZpbGxmYWN0b3I9MTAp OworLS0gc2VxdWVudGlhbCB2YWx1ZXMKK2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0Citz ZWxlY3QKKwlpLAorCS1pLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRl CisJbHBhZChpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4w Jzo6aW5ldCArIGkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKy0tIGNy ZWF0ZSBicmluIGluZGV4ZXMgb24gaW5kaXZpZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5kZXgg YnJpbl9zb3J0X3Rlc3RfbXVsdGlfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4g KGludF92YWwsIGJpZ2ludF92YWwsIHRleHRfdmFsLCBpbmV0X3ZhbCBpbmV0X21pbm1heF9v cHMpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKy0tIAordmFjdXVtIGFuYWx5emUgYnJp bl9zb3J0X3Rlc3Q7CitzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisgCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50 X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFs IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworIAorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycs IDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs JywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBp bmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0 ZXh0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gc2VtaS1yYW5kb20gZGF0YSAoc2VxdWVu dGlhbCArIHJhbmRvbW5lc3MpCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsKK2lu c2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRvbSgp KTo6aW50LAorCS0oaSArICgxMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMgaW50 LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgpKTo6 aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6Omlu ZXQgKyAoaSArIDEwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3Nlcmllcygx LDEwMDApIHMoaSk7CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OwordmFjdXVtIGFu YWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVj a19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBi aWdpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdp bnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwg bGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKyAKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsJywgMTAwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBk ZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4 dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4 dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0 ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0 OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCSgxMDAwICogcmFuZG9t KCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQs IGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgxMDAwICogcmFuZG9tKCkpOjppbnQp Ojp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCAr ICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkg cyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7Cit2YWN1dW0gYW5hbHl6ZSBi cmluX3NvcnRfdGVzdDsKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCcsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSBpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92 YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBi aWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92 YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmln aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFs IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworIAorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MnLCAx MDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKyAKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOwor IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0 ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBk ZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7 CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor Citkcm9wIHRhYmxlIGJyaW5fc29ydF90ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9icmluX3NvcnRfbXVsdGlfZXhwcnMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9icmluX3NvcnRfbXVsdGlfZXhwcnMub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZTlmNGVhMzE4MgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9zb3J0X211bHRpX2V4cHJzLm91 dApAQCAtMCwwICsxLDc4NCBAQAorLS0gZnVuY3Rpb24gdG8gdmVyaWZ5IHZhcmlvdXMgc29y dC1yZWxhdGVkIGRhdGEgKHRvdGFsIHJvd3MsIG9yZGVyaW5nKQorY3JlYXRlIG9yIHJlcGxh Y2UgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcocF9zcWwgdGV4dCwgcF9yb3dz X2V4cGVjdGVkIGludCwgcF9kZXNjIGJvb2xlYW4pIHJldHVybnMgdm9pZCBhcyAkJAorZGVj bGFyZQorICAgIHZfY3VycyByZWZjdXJzb3I7CisgICAgdl9yb3cgcmVjb3JkOworICAgIHZf cHJldiByZWNvcmQ7CisgICAgdl9icmluX3NvcnRfZm91bmQgYm9vbCA6PSBmYWxzZTsKKyAg ICB2X2NvdW50IGludCA6PSAwOworYmVnaW4KKworICAgIC0tIG5lZWRlZCBiZWNhdXNlIHRo ZSBwX3NxbCBxdWVyeSBoYXMgZGlmZmVyZW50IGRhdGEgdHlwZXMKKyAgICBleGVjdXRlICdk aXNjYXJkIHBsYW5zJzsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VU RSBmb3JtYXQoJ2V4cGxhaW4gJXMnLCBwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZF VENIIHZfY3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisg ICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9yb3c6 OnRleHQgTElLRSAnJUJSSU4gU29ydCUnIFRIRU4KKyAgICAgICAgICAgIHZfYnJpbl9zb3J0 X2ZvdW5kIDo9IHRydWU7CisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7Cisg ICAgRU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiBOT1Qgdl9icmlu X3NvcnRfZm91bmQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ0JSSU4gU29ydDog bm90IGZvdW5kJzsKKyAgICBFTkQgSUY7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwg Rk9SIEVYRUNVVEUgZm9ybWF0KHBfc3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0gg dl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAg ICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJRiB2X3ByZXYgSVMg Tk9UIE5VTEwgVEhFTgorICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA+IHZfcm93LnZhbCBB TkQgTk9UIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdv cmRlcmluZyBtaXNtYXRjaCAlID4gJSAoYXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsK KyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPCB2X3Jv dy52YWwgQU5EIHBfZGVzYyBUSEVOCisgICAgICAgICAgICAgICAgUkFJU0UgRVhDRVBUSU9O ICdvcmRlcmluZyBtaXNtYXRjaCAlIDwgJSAoZGVzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52 YWw7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICB2 X3ByZXYgOj0gdl9yb3c7CisgICAgICAgIHZfY291bnQgOj0gdl9jb3VudCArIDE7CisgICAg RU5EIExPT1A7CisKKyAgICBDTE9TRSB2X2N1cnM7CisKKyAgICBJRiB2X2NvdW50ICE9IHBf cm93c19leHBlY3RlZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnY291bnQgbWlz bWF0Y2g6ICUgIT0gJScsIHZfY291bnQsIHBfcm93c19leHBlY3RlZDsKKyAgICBFTkQgSUY7 CisKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitjcmVhdGUgdGFibGUgYnJpbl9zb3J0 X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4dF92YWwgdGV4dCwg aW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7CistLSBzZXF1ZW50aWFsIHZh bHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWksCisJLWksCS0t IHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKGk6OnRleHQgfHwg bWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgaQorZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworLS0gY3JlYXRlIGJyaW4gaW5kZXhlcyBv biBpbmRpdmlkdWFsIGNvbHVtbnMKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbnRf aWR4IG9uIGJyaW5fc29ydF90ZXN0IHVzaW5nIGJyaW4gKChpbnRfdmFsICsgMSksIChiaWdp bnRfdmFsICsgMSksICgneCcgfHwgdGV4dF92YWwpLCAoaW5ldF92YWwgKyAxKSBpbmV0X21p bm1heF9vcHMpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK3ZhY3V1bSBhbmFseXplIGJy aW5fc29ydF90ZXN0Oworc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworIAorLS0gbWF0Y2hp bmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUp OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcs IDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAs IGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0 IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQs aW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FM IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFu KSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VS Uk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAz MSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6 ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0 IFJBSVNFCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7Cisg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEp JywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo YmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChi aWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4g U29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1h dGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9j aGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRl eHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwg dGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1p dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNt YXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8 IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBs aW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGlt aXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBu b3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19v cmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorIAorLS0g bWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAx MDAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19v cmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmlu ZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBm b3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xl YW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBC UklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJB SVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCistLSBzZW1pLXJhbmRvbSBk YXRhIChzZXF1ZW50aWFsICsgcmFuZG9tbmVzcykKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29y dF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAw ICogcmFuZG9tKCkpOjppbnQsCisJLShpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0g c2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKGkgKyAoMTAwICog cmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEw LjAuMC4wJzo6aW5ldCArIChpICsgMTAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7 Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKyAKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAx KScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBicmlu c29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUp OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7 CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxp bmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90 IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQ TC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIs Ym9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKK0VS Uk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAz MSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJS SU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJ U0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQor IAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs ICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up OworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAs IGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9w Z1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9v bGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9SOiAg QlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmlu c29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBS QUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5v dCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCistLSBtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFs KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hpbmcg ZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcn eCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo Jyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3Zh bCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAg UEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2Vy LGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5k CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco dGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHBy ZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg LSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0 LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOwor RVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5l IDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0 OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVj a19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRl eHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50 ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRl IHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3Nl bGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6 aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgx MDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyks CisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rl c3Q7Cit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKyAKKy0tIG1hdGNoaW5nIGV4 cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwg KyAxKScsIDEwMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKyBi cmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxz ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4p IGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDog bm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVn ZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK K0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGlu ZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjog IEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQg UkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAx KSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJ TiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29y dF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlT RQorIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEw MDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQ TC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIs Ym9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKK0VSUk9S OiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBi cmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBh dCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2lu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50 X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6 IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCisgCistLSBtYXRjaGlu ZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRf dmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKyBicmluc29ydF9jaGVja19vcmRlcmluZyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gbWlzbWF0Y2hp bmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd5JycgfHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNv cnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92 YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0 X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQg MTAwJywgMTAwLCBmYWxzZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05U RVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxp bnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEw MCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZvdW5kCitDT05URVhU OiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcodGV4dCxpbnRl Z2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQs aW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CitFUlJPUjogIEJSSU4gU29ydDogbm90IGZv dW5kCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcodGV4dCxpbnRlZ2VyLGJvb2xlYW4pIGxpbmUgMzEgYXQgUkFJU0UKKyAKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworIGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CisgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIHRydWUpOworIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQK K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0 ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUp OworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1 bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQsaW50ZWdlcixib29sZWFuKSBs aW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK0VSUk9SOiAgQlJJTiBT b3J0OiBub3QgZm91bmQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyh0ZXh0LGludGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3Vu ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KHRleHQsaW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0 IDEwMCcsIDEwMCwgZmFsc2UpOworRVJST1I6ICBCUklOIFNvcnQ6IG5vdCBmb3VuZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHRleHQs aW50ZWdlcixib29sZWFuKSBsaW5lIDMxIGF0IFJBSVNFCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCB0cnVlKTsKK0VSUk9SOiAgQlJJTiBTb3J0OiBub3QgZm91bmQKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyh0ZXh0LGlu dGVnZXIsYm9vbGVhbikgbGluZSAzMSBhdCBSQUlTRQorZHJvcCB0YWJsZSBicmluX3NvcnRf dGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDE1ZTAxNWIzZDY0 Li4zOWFmMTViYjVkOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0x MzEsMyArMTMxLDkgQEAgdGVzdDogZmFzdF9kZWZhdWx0CiAjIHJ1biB0YWJsZXNwYWNlIHRl c3QgYXQgdGhlIGVuZCBiZWNhdXNlIGl0IGRyb3BzIHRoZSB0YWJsZXNwYWNlIGNyZWF0ZWQg ZHVyaW5nCiAjIHNldHVwIHRoYXQgb3RoZXIgdGVzdHMgbWF5IHVzZS4KIHRlc3Q6IHRhYmxl c3BhY2UKKworIyB0cnkgc29ydGluZyB1c2luZyBCUklOIGluZGV4Cit0ZXN0OiBicmluX3Nv cnQKK3Rlc3Q6IGJyaW5fc29ydF9tdWx0aQordGVzdDogYnJpbl9zb3J0X2V4cHJzCit0ZXN0 OiBicmluX3NvcnRfbXVsdGlfZXhwcnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2JyaW5fc29ydC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnQuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNDQ1OGJkYzM4Ngot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fc29ydC5zcWwK QEAgLTAsMCArMSwyMzggQEAKKy0tIGZ1bmN0aW9uIHRvIHZlcmlmeSB2YXJpb3VzIHNvcnQt cmVsYXRlZCBkYXRhICh0b3RhbCByb3dzLCBvcmRlcmluZykKK2NyZWF0ZSBvciByZXBsYWNl IGZ1bmN0aW9uIGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKHBfc3FsIHRleHQsIHBfcm93c19l eHBlY3RlZCBpbnQsIHBfZGVzYyBib29sZWFuKSByZXR1cm5zIHZvaWQgYXMgJCQKK2RlY2xh cmUKKyAgICB2X2N1cnMgcmVmY3Vyc29yOworICAgIHZfcm93IHJlY29yZDsKKyAgICB2X3By ZXYgcmVjb3JkOworICAgIHZfYnJpbl9zb3J0X2ZvdW5kIGJvb2wgOj0gZmFsc2U7CisgICAg dl9jb3VudCBpbnQgOj0gMDsKK2JlZ2luCisKKyAgICAtLSBuZWVkZWQgYmVjYXVzZSB0aGUg cF9zcWwgcXVlcnkgaGFzIGRpZmZlcmVudCBkYXRhIHR5cGVzCisgICAgZXhlY3V0ZSAnZGlz Y2FyZCBwbGFucyc7CisKKyAgICBPUEVOIHZfY3VycyBOTyBTQ1JPTEwgRk9SIEVYRUNVVEUg Zm9ybWF0KCdleHBsYWluICVzJywgcF9zcWwpOworCisgICAgTE9PUAorICAgICAgICBGRVRD SCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAg ICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisgICAgICAgIElGIHZfcm93Ojp0 ZXh0IExJS0UgJyVCUklOIFNvcnQlJyBUSEVOCisgICAgICAgICAgICB2X2JyaW5fc29ydF9m b3VuZCA6PSB0cnVlOworICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAg IEVORCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgTk9UIHZfYnJpbl9z b3J0X2ZvdW5kIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdCUklOIFNvcnQ6IG5v dCBmb3VuZCc7CisgICAgRU5EIElGOworCisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZP UiBFWEVDVVRFIGZvcm1hdChwX3NxbCk7CisKKyAgICBMT09QCisgICAgICAgIEZFVENIIHZf Y3VycyBJTlRPIHZfcm93OworCisgICAgICAgIElGIE5PVCBGT1VORCBUSEVOCisgICAgICAg ICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgdl9wcmV2IElTIE5P VCBOVUxMIFRIRU4KKyAgICAgICAgICAgIElGIHZfcHJldi52YWwgPiB2X3Jvdy52YWwgQU5E IE5PVCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnb3Jk ZXJpbmcgbWlzbWF0Y2ggJSA+ICUgKGFzYyknLCB2X3ByZXYudmFsLCB2X3Jvdy52YWw7Cisg ICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBJRiB2X3ByZXYudmFsIDwgdl9yb3cu dmFsIEFORCBwX2Rlc2MgVEhFTgorICAgICAgICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAn b3JkZXJpbmcgbWlzbWF0Y2ggJSA8ICUgKGRlc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFs OworICAgICAgICAgICAgRU5EIElGOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgdl9w cmV2IDo9IHZfcm93OworICAgICAgICB2X2NvdW50IDo9IHZfY291bnQgKyAxOworICAgIEVO RCBMT09QOworCisgICAgQ0xPU0Ugdl9jdXJzOworCisgICAgSUYgdl9jb3VudCAhPSBwX3Jv d3NfZXhwZWN0ZWQgVEhFTgorICAgICAgICBSQUlTRSBFWENFUFRJT04gJ2NvdW50IG1pc21h dGNoOiAlICE9ICUnLCB2X2NvdW50LCBwX3Jvd3NfZXhwZWN0ZWQ7CisgICAgRU5EIElGOwor CitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworCitjcmVhdGUgdGFibGUgYnJpbl9zb3J0 X3Rlc3QgKGludF92YWwgaW50LCBiaWdpbnRfdmFsIGJpZ2ludCwgdGV4dF92YWwgdGV4dCwg aW5ldF92YWwgaW5ldCkgd2l0aCAoZmlsbGZhY3Rvcj0xMCk7CisKKy0tIHNlcXVlbnRpYWwg dmFsdWVzCitpbnNlcnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJaSwKKwktaSwJ LS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoaTo6dGV4dCB8 fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6OmluZXQgKyBpCitmcm9t IGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisKKy0tIGNyZWF0ZSBicmluIGluZGV4 ZXMgb24gaW5kaXZpZHVhbCBjb2x1bW5zCitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3Rf aW50X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmluIChpbnRfdmFsKSB3aXRoIChw YWdlc19wZXJfcmFuZ2U9MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfYmlnaW50 X2lkeCBvbiBicmluX3NvcnRfdGVzdCB1c2luZyBicmluIChiaWdpbnRfdmFsKSB3aXRoIChw YWdlc19wZXJfcmFuZ2U9MSk7CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfdGV4dF9p ZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAodGV4dF92YWwpIHdpdGggKHBhZ2Vz X3Blcl9yYW5nZT0xKTsKK2NyZWF0ZSBpbmRleCBicmluX3NvcnRfdGVzdF9pbmV0X2lkeCBv biBicmluX3NvcnRfdGVzdCB1c2luZyBicmluIChpbmV0X3ZhbCBpbmV0X21pbm1heF9vcHMp IHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKworLS0gCit2YWN1dW0gYW5hbHl6ZSBicmlu X3NvcnRfdGVzdDsKKworc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92 YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBi aWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92 YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJp Z2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBi aWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92 YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCB0cnVlKTsKKworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0 X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGlu ZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCcsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MnLCAxMDAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4 dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGlt aXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0 ZXh0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworCistLSBzZW1pLXJhbmRvbSBk YXRhIChzZXF1ZW50aWFsICsgcmFuZG9tbmVzcykKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29y dF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWkgKyAoMTAw ICogcmFuZG9tKCkpOjppbnQsCisJLShpICsgKDEwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0g c2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKGkgKyAoMTAwICog cmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEw LjAuMC4wJzo6aW5ldCArIChpICsgMTAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKworcmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVz dDsKKwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFs IGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJp Z2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3Zh bCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEw MCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJp Z2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3Zh bCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmlnaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIHRydWUpOworCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0 X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGlu ZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKwor IAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwnLCAxMDAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBkZXNjJywgMTAw MCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRl eHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxp bWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg dGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92 YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworLS0gcmFuZG9tIGRhdGEK K3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0 X3Rlc3QKK3NlbGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJh bmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQor CWxwYWQoKCgxMDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwg NDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkK K2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKworcmVpbmRleCB0YWJsZSBi cmluX3NvcnRfdGVzdDsKKwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKyAK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1 ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworCisgCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBs aW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEw MCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3Zh bCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgdHJ1ZSk7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFs JywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92 YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRl eHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKK2Ry b3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9icmluX3NvcnRfZXhwcnMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9z b3J0X2V4cHJzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZGUxZjFlN2Q4ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9i cmluX3NvcnRfZXhwcnMuc3FsCkBAIC0wLDAgKzEsMzczIEBACistLSBmdW5jdGlvbiB0byB2 ZXJpZnkgdmFyaW91cyBzb3J0LXJlbGF0ZWQgZGF0YSAodG90YWwgcm93cywgb3JkZXJpbmcp CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyhw X3NxbCB0ZXh0LCBwX3Jvd3NfZXhwZWN0ZWQgaW50LCBwX2Rlc2MgYm9vbGVhbikgcmV0dXJu cyB2b2lkIGFzICQkCitkZWNsYXJlCisgICAgdl9jdXJzIHJlZmN1cnNvcjsKKyAgICB2X3Jv dyByZWNvcmQ7CisgICAgdl9wcmV2IHJlY29yZDsKKyAgICB2X2JyaW5fc29ydF9mb3VuZCBi b29sIDo9IGZhbHNlOworICAgIHZfY291bnQgaW50IDo9IDA7CitiZWdpbgorCisgICAgLS0g bmVlZGVkIGJlY2F1c2UgdGhlIHBfc3FsIHF1ZXJ5IGhhcyBkaWZmZXJlbnQgZGF0YSB0eXBl cworICAgIGV4ZWN1dGUgJ2Rpc2NhcmQgcGxhbnMnOworCisgICAgT1BFTiB2X2N1cnMgTk8g U0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdCgnZXhwbGFpbiAlcycsIHBfc3FsKTsKKworICAg IExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYg Tk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKwor ICAgICAgICBJRiB2X3Jvdzo6dGV4dCBMSUtFICclQlJJTiBTb3J0JScgVEhFTgorICAgICAg ICAgICAgdl9icmluX3NvcnRfZm91bmQgOj0gdHJ1ZTsKKyAgICAgICAgICAgIEVYSVQ7Cisg ICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3VyczsKKwor ICAgIElGIE5PVCB2X2JyaW5fc29ydF9mb3VuZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQ VElPTiAnQlJJTiBTb3J0OiBub3QgZm91bmQnOworICAgIEVORCBJRjsKKworICAgIE9QRU4g dl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQocF9zcWwpOworCisgICAgTE9P UAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBOT1Qg Rk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisgICAg ICAgIElGIHZfcHJldiBJUyBOT1QgTlVMTCBUSEVOCisgICAgICAgICAgICBJRiB2X3ByZXYu dmFsID4gdl9yb3cudmFsIEFORCBOT1QgcF9kZXNjIFRIRU4KKyAgICAgICAgICAgICAgICBS QUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPiAlIChhc2MpJywgdl9wcmV2 LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAgICAgSUYg dl9wcmV2LnZhbCA8IHZfcm93LnZhbCBBTkQgcF9kZXNjIFRIRU4KKyAgICAgICAgICAgICAg ICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPCAlIChkZXNjKScsIHZf cHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5E IElGOworCisgICAgICAgIHZfcHJldiA6PSB2X3JvdzsKKyAgICAgICAgdl9jb3VudCA6PSB2 X2NvdW50ICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3VyczsKKworICAg IElGIHZfY291bnQgIT0gcF9yb3dzX2V4cGVjdGVkIFRIRU4KKyAgICAgICAgUkFJU0UgRVhD RVBUSU9OICdjb3VudCBtaXNtYXRjaDogJSAhPSAlJywgdl9jb3VudCwgcF9yb3dzX2V4cGVj dGVkOworICAgIEVORCBJRjsKKworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKKworY3Jl YXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwgYmlnaW50X3ZhbCBiaWdp bnQsIHRleHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGggKGZpbGxmYWN0b3I9MTAp OworCistLSBzZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QK K3NlbGVjdAorCWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3Np dGUKKwlscGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4w LjAnOjppbmV0ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCist LSBjcmVhdGUgYnJpbiBpbmRleGVzIG9uIGluZGl2aWR1YWwgY29sdW1ucworY3JlYXRlIGlu ZGV4IGJyaW5fc29ydF90ZXN0X2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJp biAoKGludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3JlYXRlIGlu ZGV4IGJyaW5fc29ydF90ZXN0X2JpZ2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcg YnJpbiAoKGJpZ2ludF92YWwgKyAxKSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworY3Jl YXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X3RleHRfaWR4IG9uIGJyaW5fc29ydF90ZXN0IHVz aW5nIGJyaW4gKCgneCcgfHwgdGV4dF92YWwpKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7 CitjcmVhdGUgaW5kZXggYnJpbl9zb3J0X3Rlc3RfaW5ldF9pZHggb24gYnJpbl9zb3J0X3Rl c3QgdXNpbmcgYnJpbiAoKGluZXRfdmFsICsgMSkgaW5ldF9taW5tYXhfb3BzKSB3aXRoIChw YWdlc19wZXJfcmFuZ2U9MSk7CisKKy0tIAordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rl c3Q7CisKK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKyAKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAx KScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNt YXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKworCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkg ZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChi aWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJp Z2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsK KworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGRlc2MgbGlt aXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAK Ky0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFs KSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8 IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1p dCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0 ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gn JyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcn eScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVl KTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjJywgMTAw MCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Np b24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEp JywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAt IDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor CisKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNzKQordHJ1 bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3NvcnRfdGVz dAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAoMTAwICog cmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9wcG9zaXRl CisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1KGk6OnRl eHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiByYW5kb20o KTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCityZWluZGV4 IHRhYmxlIGJyaW5fc29ydF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVz dDsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0 cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBk ZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKyAKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK Ky0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRf dmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScn IHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCistLSBtYXRjaGluZyBleHByZXNz aW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAx KScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg KyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsK KworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg LSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRl IHRhYmxlIGJyaW5fc29ydF90ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3Nl bGVjdAorCSgxMDAwICogcmFuZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6 aW50KSwJLS0gc2FtZSBhcyBpbnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgx MDAwICogcmFuZG9tKCkpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyks CisJJzEwLjAuMC4wJzo6aW5ldCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKTsKKworcmVpbmRleCB0YWJsZSBicmluX3NvcnRf dGVzdDsKKwordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKyAKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOwor CistLSBtaXNtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkg bGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsIC0gMSkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKworCisgCistLSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSknLCAxMDAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRf dmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs ICsgMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAt IDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEp IGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1 ZSk7CisKKyAKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8 IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAx MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgn J3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRf dmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3knJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVzYycsIDEwMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4 JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgn J3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5ICgnJ3knJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwIG9mZnNldCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCB0cnVlKTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSknLCAxMDAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAxKSBk ZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYyBsaW1pdCAx MDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoaW5ldF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5n IGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0 X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IHRydWUpOworCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGkuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvYnJpbl9zb3J0X211bHRpLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZDA1NDRhZDcwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGkuc3FsCkBAIC0wLDAgKzEsMjM1IEBACist LSBmdW5jdGlvbiB0byB2ZXJpZnkgdmFyaW91cyBzb3J0LXJlbGF0ZWQgZGF0YSAodG90YWwg cm93cywgb3JkZXJpbmcpCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBicmluc29ydF9j aGVja19vcmRlcmluZyhwX3NxbCB0ZXh0LCBwX3Jvd3NfZXhwZWN0ZWQgaW50LCBwX2Rlc2Mg Ym9vbGVhbikgcmV0dXJucyB2b2lkIGFzICQkCitkZWNsYXJlCisgICAgdl9jdXJzIHJlZmN1 cnNvcjsKKyAgICB2X3JvdyByZWNvcmQ7CisgICAgdl9wcmV2IHJlY29yZDsKKyAgICB2X2Jy aW5fc29ydF9mb3VuZCBib29sIDo9IGZhbHNlOworICAgIHZfY291bnQgaW50IDo9IDA7Citi ZWdpbgorCisgICAgLS0gbmVlZGVkIGJlY2F1c2UgdGhlIHBfc3FsIHF1ZXJ5IGhhcyBkaWZm ZXJlbnQgZGF0YSB0eXBlcworICAgIGV4ZWN1dGUgJ2Rpc2NhcmQgcGxhbnMnOworCisgICAg T1BFTiB2X2N1cnMgTk8gU0NST0xMIEZPUiBFWEVDVVRFIGZvcm1hdCgnZXhwbGFpbiAlcycs IHBfc3FsKTsKKworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7 CisKKyAgICAgICAgSUYgTk9UIEZPVU5EIFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAg ICAgIEVORCBJRjsKKworICAgICAgICBJRiB2X3Jvdzo6dGV4dCBMSUtFICclQlJJTiBTb3J0 JScgVEhFTgorICAgICAgICAgICAgdl9icmluX3NvcnRfZm91bmQgOj0gdHJ1ZTsKKyAgICAg ICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsKKworICAgIENM T1NFIHZfY3VyczsKKworICAgIElGIE5PVCB2X2JyaW5fc29ydF9mb3VuZCBUSEVOCisgICAg ICAgIFJBSVNFIEVYQ0VQVElPTiAnQlJJTiBTb3J0OiBub3QgZm91bmQnOworICAgIEVORCBJ RjsKKworICAgIE9QRU4gdl9jdXJzIE5PIFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQocF9z cWwpOworCisgICAgTE9PUAorICAgICAgICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKwor ICAgICAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAg RU5EIElGOworCisgICAgICAgIElGIHZfcHJldiBJUyBOT1QgTlVMTCBUSEVOCisgICAgICAg ICAgICBJRiB2X3ByZXYudmFsID4gdl9yb3cudmFsIEFORCBOT1QgcF9kZXNjIFRIRU4KKyAg ICAgICAgICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPiAl IChhc2MpJywgdl9wcmV2LnZhbCwgdl9yb3cudmFsOworICAgICAgICAgICAgRU5EIElGOwor ICAgICAgICAgICAgSUYgdl9wcmV2LnZhbCA8IHZfcm93LnZhbCBBTkQgcF9kZXNjIFRIRU4K KyAgICAgICAgICAgICAgICBSQUlTRSBFWENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUg PCAlIChkZXNjKScsIHZfcHJldi52YWwsIHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJ RjsKKyAgICAgICAgRU5EIElGOworCisgICAgICAgIHZfcHJldiA6PSB2X3JvdzsKKyAgICAg ICAgdl9jb3VudCA6PSB2X2NvdW50ICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NF IHZfY3VyczsKKworICAgIElGIHZfY291bnQgIT0gcF9yb3dzX2V4cGVjdGVkIFRIRU4KKyAg ICAgICAgUkFJU0UgRVhDRVBUSU9OICdjb3VudCBtaXNtYXRjaDogJSAhPSAlJywgdl9jb3Vu dCwgcF9yb3dzX2V4cGVjdGVkOworICAgIEVORCBJRjsKKworZW5kOworJCQgbGFuZ3VhZ2Ug cGxwZ3NxbDsKKworY3JlYXRlIHRhYmxlIGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwg YmlnaW50X3ZhbCBiaWdpbnQsIHRleHRfdmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGgg KGZpbGxmYWN0b3I9MTApOworCistLSBzZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8g YnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQg YXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwg JzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwKSBzKGkpOworCistLSBjcmVhdGUgYnJpbiBpbmRleGVzIG9uIGluZGl2aWR1YWwgY29s dW1ucworY3JlYXRlIGluZGV4IGJyaW5fc29ydF90ZXN0X211bHRpX2lkeCBvbiBicmluX3Nv cnRfdGVzdCB1c2luZyBicmluIChpbnRfdmFsLCBiaWdpbnRfdmFsLCB0ZXh0X3ZhbCwgaW5l dF92YWwgaW5ldF9taW5tYXhfb3BzKSB3aXRoIChwYWdlc19wZXJfcmFuZ2U9MSk7CisKKy0t IAordmFjdXVtIGFuYWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKK3NldCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCcsIDEw MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGlu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNj JywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3Zh bCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg ZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRlc2MgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJy aW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycsIDEwMDAsIHRydWUpOwor CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2lu dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBk ZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRf Y2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4 dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRy dWUpOworCisKKy0tIHNlbWktcmFuZG9tIGRhdGEgKHNlcXVlbnRpYWwgKyByYW5kb21uZXNz KQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNlcnQgaW50byBicmluX3Nv cnRfdGVzdAorc2VsZWN0CisJaSArICgxMDAgKiByYW5kb20oKSk6OmludCwKKwktKGkgKyAo MTAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0IGxlYXN0IG9w cG9zaXRlCisJbHBhZCgoaSArICgxMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQgfHwgbWQ1 KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKGkgKyAxMDAgKiBy YW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCity ZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmluX3Nv cnRfdGVzdDsKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsJywg MTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGRl c2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbnRf dmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSBpbnRfdmFsIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbnRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbnRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGludF92YWwgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAx MDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgYmln aW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgYmlnaW50X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgYmln aW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBiaWdpbnRfdmFs IGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFsIGRlc2MnLCAxMDAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgbGltaXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBp bmV0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBk ZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9y ZGVyIGJ5IGluZXRfdmFsIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgdGV4dF92YWwnLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSB0ZXh0X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29y dF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAnLCAx MDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0 ZXh0X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKKworLS0gcmFuZG9tIGRhdGEKK3RydW5jYXRlIHRhYmxlIGJyaW5fc29ydF90 ZXN0OworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAorCSgxMDAwICogcmFu ZG9tKCkpOjppbnQsCisJLSgoMTAwMCAqIHJhbmRvbSgpKTo6aW50KSwJLS0gc2FtZSBhcyBp bnQsIGJ1dCBhdCBsZWFzdCBvcHBvc2l0ZQorCWxwYWQoKCgxMDAwICogcmFuZG9tKCkpOjpp bnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0KSwgNDAsICcwJyksCisJJzEwLjAuMC4wJzo6aW5l dCArICgxMDAwICogcmFuZG9tKCk6OmludCkKK2Zyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMTAw MCkgcyhpKTsKKworcmVpbmRleCB0YWJsZSBicmluX3NvcnRfdGVzdDsKKwordmFjdXVtIGFu YWx5emUgYnJpbl9zb3J0X3Rlc3Q7CisKKyAKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCcsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW50X3ZhbCBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IGludF92YWwgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW50X3ZhbCBsaW1pdCAxMDAgb2Zm c2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgaW50X3ZhbCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBp bnRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwnLCAxMDAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFs IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYycs IDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2lu dF92YWwgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tf b3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IGJpZ2ludF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBiaWdpbnRfdmFsIGFzIHZh bCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGJpZ2ludF92YWwgbGltaXQgMTAwIG9m ZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IGJpZ2ludF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgYmlnaW50X3ZhbCBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsK KworIAorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5ldF92YWwg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwnLCAxMDAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3Zh bCBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBkZXNjJywg MTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IGluZXRfdmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IGluZXRfdmFs IGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgaW5ldF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgaW5ldF92YWwgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCBpbmV0X3ZhbCBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSBpbmV0X3ZhbCBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEw MCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgaW5l dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgaW5ldF92YWwgZGVz YyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKyAKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgdGV4dF92YWwgZGVzYycsIDEwMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCB0ZXh0X3ZhbCBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSB0ZXh0X3ZhbCBsaW1pdCAxMDAnLCAxMDAs IGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRf dmFsIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgdGV4dF92YWwgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgdGV4dF92YWwgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IHRleHRfdmFsIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IHRleHRfdmFsIGRlc2MgbGltaXQgMTAwIG9mZnNl dCAxMDAnLCAxMDAsIHRydWUpOworCisKK2Ryb3AgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGlfZXhwcnMu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9zb3J0X211bHRpX2V4cHJzLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjk5Yzc5NzkzMjYKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluX3NvcnRfbXVsdGlf ZXhwcnMuc3FsCkBAIC0wLDAgKzEsMzY5IEBACistLSBmdW5jdGlvbiB0byB2ZXJpZnkgdmFy aW91cyBzb3J0LXJlbGF0ZWQgZGF0YSAodG90YWwgcm93cywgb3JkZXJpbmcpCitjcmVhdGUg b3IgcmVwbGFjZSBmdW5jdGlvbiBicmluc29ydF9jaGVja19vcmRlcmluZyhwX3NxbCB0ZXh0 LCBwX3Jvd3NfZXhwZWN0ZWQgaW50LCBwX2Rlc2MgYm9vbGVhbikgcmV0dXJucyB2b2lkIGFz ICQkCitkZWNsYXJlCisgICAgdl9jdXJzIHJlZmN1cnNvcjsKKyAgICB2X3JvdyByZWNvcmQ7 CisgICAgdl9wcmV2IHJlY29yZDsKKyAgICB2X2JyaW5fc29ydF9mb3VuZCBib29sIDo9IGZh bHNlOworICAgIHZfY291bnQgaW50IDo9IDA7CitiZWdpbgorCisgICAgLS0gbmVlZGVkIGJl Y2F1c2UgdGhlIHBfc3FsIHF1ZXJ5IGhhcyBkaWZmZXJlbnQgZGF0YSB0eXBlcworICAgIGV4 ZWN1dGUgJ2Rpc2NhcmQgcGxhbnMnOworCisgICAgT1BFTiB2X2N1cnMgTk8gU0NST0xMIEZP UiBFWEVDVVRFIGZvcm1hdCgnZXhwbGFpbiAlcycsIHBfc3FsKTsKKworICAgIExPT1AKKyAg ICAgICAgRkVUQ0ggdl9jdXJzIElOVE8gdl9yb3c7CisKKyAgICAgICAgSUYgTk9UIEZPVU5E IFRIRU4KKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKworICAgICAgICBJ RiB2X3Jvdzo6dGV4dCBMSUtFICclQlJJTiBTb3J0JScgVEhFTgorICAgICAgICAgICAgdl9i cmluX3NvcnRfZm91bmQgOj0gdHJ1ZTsKKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVO RCBJRjsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3VyczsKKworICAgIElGIE5P VCB2X2JyaW5fc29ydF9mb3VuZCBUSEVOCisgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnQlJJ TiBTb3J0OiBub3QgZm91bmQnOworICAgIEVORCBJRjsKKworICAgIE9QRU4gdl9jdXJzIE5P IFNDUk9MTCBGT1IgRVhFQ1VURSBmb3JtYXQocF9zcWwpOworCisgICAgTE9PUAorICAgICAg ICBGRVRDSCB2X2N1cnMgSU5UTyB2X3JvdzsKKworICAgICAgICBJRiBOT1QgRk9VTkQgVEhF TgorICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworCisgICAgICAgIElGIHZf cHJldiBJUyBOT1QgTlVMTCBUSEVOCisgICAgICAgICAgICBJRiB2X3ByZXYudmFsID4gdl9y b3cudmFsIEFORCBOT1QgcF9kZXNjIFRIRU4KKyAgICAgICAgICAgICAgICBSQUlTRSBFWENF UFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPiAlIChhc2MpJywgdl9wcmV2LnZhbCwgdl9y b3cudmFsOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAgICAgSUYgdl9wcmV2LnZh bCA8IHZfcm93LnZhbCBBTkQgcF9kZXNjIFRIRU4KKyAgICAgICAgICAgICAgICBSQUlTRSBF WENFUFRJT04gJ29yZGVyaW5nIG1pc21hdGNoICUgPCAlIChkZXNjKScsIHZfcHJldi52YWws IHZfcm93LnZhbDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5EIElGOworCisg ICAgICAgIHZfcHJldiA6PSB2X3JvdzsKKyAgICAgICAgdl9jb3VudCA6PSB2X2NvdW50ICsg MTsKKyAgICBFTkQgTE9PUDsKKworICAgIENMT1NFIHZfY3VyczsKKworICAgIElGIHZfY291 bnQgIT0gcF9yb3dzX2V4cGVjdGVkIFRIRU4KKyAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdj b3VudCBtaXNtYXRjaDogJSAhPSAlJywgdl9jb3VudCwgcF9yb3dzX2V4cGVjdGVkOworICAg IEVORCBJRjsKKworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKKworY3JlYXRlIHRhYmxl IGJyaW5fc29ydF90ZXN0IChpbnRfdmFsIGludCwgYmlnaW50X3ZhbCBiaWdpbnQsIHRleHRf dmFsIHRleHQsIGluZXRfdmFsIGluZXQpIHdpdGggKGZpbGxmYWN0b3I9MTApOworCistLSBz ZXF1ZW50aWFsIHZhbHVlcworaW5zZXJ0IGludG8gYnJpbl9zb3J0X3Rlc3QKK3NlbGVjdAor CWksCisJLWksCS0tIHNhbWUgYXMgaW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFk KGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0 ICsgaQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOworCistLSBjcmVhdGUg YnJpbiBpbmRleGVzIG9uIGluZGl2aWR1YWwgY29sdW1ucworY3JlYXRlIGluZGV4IGJyaW5f c29ydF90ZXN0X2ludF9pZHggb24gYnJpbl9zb3J0X3Rlc3QgdXNpbmcgYnJpbiAoKGludF92 YWwgKyAxKSwgKGJpZ2ludF92YWwgKyAxKSwgKCd4JyB8fCB0ZXh0X3ZhbCksIChpbmV0X3Zh bCArIDEpIGluZXRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworCit2 YWN1dW0gYW5hbHl6ZSBicmluX3NvcnRfdGVzdDsKKworc2V0IGVuYWJsZV9zZXFzY2FuID0g b2ZmOworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRf dGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0 cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAr IDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsK Kworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGxp bWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEw MCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEwMDAsIGZhbHNl KTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBk ZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCcs IDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGlu dF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKyAKKy0tIG1hdGNoaW5nIGV4cHJl c3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92 YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qg b3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVj dCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBsaW1p dCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsg MSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAx KSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0g MSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVy IGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxl Y3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgbGlt aXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZz ZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFs KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92 YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAwJywg MTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBi eSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwg dGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK Ky0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3Zh bCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRf dmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScn IHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCistLSBtYXRjaGluZyBleHByZXNz aW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgKyAx KScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg KyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5f c29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsK KworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNjJywgMTAwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0 X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3Zh bCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRy dWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwg LSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworLS0gc2VtaS1yYW5kb20gZGF0YSAoc2Vx dWVudGlhbCArIHJhbmRvbW5lc3MpCit0cnVuY2F0ZSB0YWJsZSBicmluX3NvcnRfdGVzdDsK K2luc2VydCBpbnRvIGJyaW5fc29ydF90ZXN0CitzZWxlY3QKKwlpICsgKDEwMCAqIHJhbmRv bSgpKTo6aW50LAorCS0oaSArICgxMDAgKiByYW5kb20oKSk6OmludCksCS0tIHNhbWUgYXMg aW50LCBidXQgYXQgbGVhc3Qgb3Bwb3NpdGUKKwlscGFkKChpICsgKDEwMCAqIHJhbmRvbSgp KTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6dGV4dCksIDQwLCAnMCcpLAorCScxMC4wLjAuMCc6 OmluZXQgKyAoaSArIDEwMCAqIHJhbmRvbSgpOjppbnQpCitmcm9tIGdlbmVyYXRlX3Nlcmll cygxLDEwMDApIHMoaSk7CisKK3JlaW5kZXggdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CisKK3Zh Y3V1bSBhbmFseXplIGJyaW5fc29ydF90ZXN0OworCisgCistLSBtYXRjaGluZyBleHByZXNz aW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCAr IDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkn LCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bnRfdmFsICsgMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hl Y2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVz YyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgKyAx KSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0 Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCAtIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwg ZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCcs IDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3Qg KGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50 X3ZhbCAtIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQg MTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3Nl bGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRl c2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdz ZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2Mg bGltaXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVy aW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK Ky0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjJywg MTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0 IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygn c2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFs c2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92 YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3Zh bCAtIDEpIGRlc2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCist LSBtYXRjaGluZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3Qg YnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFz IHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkg ZGVzYycsIDEwMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmco J3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQgMTAwJywgMTAwLCBmYWxzZSk7 CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4 dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0 ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNv cnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgbGltaXQg MTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKCcneCcnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRf dmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4 dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRf dmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4 dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNr X29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRlc2MgbGltaXQgMTAw JywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRl ciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBm YWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoJyd4Jycg fHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5ICgnJ3kn JyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7 CisKKyAKKy0tIG1hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgZGVzYycsIDEwMDAs IHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5l dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92 YWwgKyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAwLCB0 cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRf dmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFs ICsgMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAw IG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBleHByZXNzaW9u CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKScs IDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChp bmV0X3ZhbCAtIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2No ZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgbGltaXQgMTAwJywgMTAwLCBmYWxz ZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwg KyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAx KSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29y dF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgLSAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKwor CistLSByYW5kb20gZGF0YQordHJ1bmNhdGUgdGFibGUgYnJpbl9zb3J0X3Rlc3Q7CitpbnNl cnQgaW50byBicmluX3NvcnRfdGVzdAorc2VsZWN0CisJKDEwMDAgKiByYW5kb20oKSk6Omlu dCwKKwktKCgxMDAwICogcmFuZG9tKCkpOjppbnQpLAktLSBzYW1lIGFzIGludCwgYnV0IGF0 IGxlYXN0IG9wcG9zaXRlCisJbHBhZCgoKDEwMDAgKiByYW5kb20oKSk6OmludCk6OnRleHQg fHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSwKKwknMTAuMC4wLjAnOjppbmV0ICsgKDEwMDAg KiByYW5kb20oKTo6aW50KQorZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpOwor CityZWluZGV4IHRhYmxlIGJyaW5fc29ydF90ZXN0OworCit2YWN1dW0gYW5hbHl6ZSBicmlu X3NvcnRfdGVzdDsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBi cmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpJywgMTAwMCwgZmFsc2UpOwor c2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2Mn LCAxMDAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxl Y3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW50X3ZhbCArIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmlu X3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCArIDEpIGRlc2MgbGltaXQgMTAwJywgMTAw LCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGlu dF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3Zh bCArIDEpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJp bnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9t IGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbnRfdmFsICsgMSkgZGVzYyBsaW1pdCAxMDAg b2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24K K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkg YXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKScsIDEw MDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92 YWwgLSAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rl c3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3Nl bGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGludF92YWwgLSAxKSBkZXNjIGxp bWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmlu Zygnc2VsZWN0IChpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3Jk ZXIgYnkgKGludF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2Up Oworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGludF92YWwgKyAx KSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW50X3ZhbCAtIDEpIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisKKyAKKy0tIG1hdGNo aW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkg KGJpZ2ludF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVj a19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9z b3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjJywgMTAwMCwgdHJ1ZSk7 CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFs ICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwg KyAxKSBsaW1pdCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19v cmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0 X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdp bnRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2lu dF92YWwgKyAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGJpZ2ludF92YWwgKyAxKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoYmlnaW50X3ZhbCArIDEpIGRlc2Mg bGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCistLSBtaXNtYXRjaGluZyBl eHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmln aW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdp bnRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3Jk ZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90 ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYycsIDEwMDAsIHRydWUpOworCitz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEp IGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkg bGltaXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoYmlnaW50X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChiaWdpbnRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAnLCAxMDAsIHRydWUp OworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoYmlnaW50X3Zh bCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChiaWdpbnRfdmFs IC0gMSkgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmlu c29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChiaWdpbnRfdmFsICsgMSkgYXMgdmFsIGZy b20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGJpZ2ludF92YWwgLSAxKSBkZXNjIGxpbWl0 IDEwMCBvZmZzZXQgMTAwJywgMTAwLCB0cnVlKTsKKworIAorLS0gbWF0Y2hpbmcgZXhwcmVz c2lvbgorc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4Jycg fHwgdGV4dF92YWwpJywgMTAwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29y ZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3Nv cnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MnLCAxMDAwLCB0cnVl KTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8 IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4Jycg fHwgdGV4dF92YWwpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJv bSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGRlc2MgbGlt aXQgMTAwJywgMTAwLCB0cnVlKTsKKworc2VsZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5n KCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVz dCBvcmRlciBieSAoJyd4JycgfHwgdGV4dF92YWwpIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywg MTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo Jyd4JycgfHwgdGV4dF92YWwpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgZGVzYyBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwg dHJ1ZSk7CisKKy0tIG1pc21hdGNoaW5nIGV4cHJlc3Npb24KK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKScsIDEwMDAsIGZh bHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8 fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScn IHx8IHRleHRfdmFsKSBkZXNjJywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9j aGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRleHRfdmFsKSBsaW1pdCAxMDAn LCAxMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0 ICgnJ3gnJyB8fCB0ZXh0X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIg YnkgKCcneScnIHx8IHRleHRfdmFsKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisK K3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0ICgnJ3gnJyB8fCB0ZXh0 X3ZhbCkgYXMgdmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKCcneScnIHx8IHRl eHRfdmFsKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJy aW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKCcneCcnIHx8IHRleHRfdmFsKSBhcyB2 YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoJyd5JycgfHwgdGV4dF92YWwpIGRl c2MgbGltaXQgMTAwIG9mZnNldCAxMDAnLCAxMDAsIHRydWUpOworCisgCistLSBtYXRjaGlu ZyBleHByZXNzaW9uCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAo aW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5l dF92YWwgKyAxKScsIDEwMDAsIGZhbHNlKTsKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRl cmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0 IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGRlc2MnLCAxMDAwLCB0cnVlKTsKKworc2VsZWN0 IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFs IGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsICsgMSkgbGltaXQgMTAw JywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKK3NlbGVjdCBi cmluc29ydF9jaGVja19vcmRlcmluZygnc2VsZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBm cm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5IChpbmV0X3ZhbCArIDEpIGxpbWl0IDEwMCBv ZmZzZXQgMTAwJywgMTAwLCBmYWxzZSk7CitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJp bmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBv cmRlciBieSAoaW5ldF92YWwgKyAxKSBkZXNjIGxpbWl0IDEwMCBvZmZzZXQgMTAwJywgMTAw LCB0cnVlKTsKKworLS0gbWlzbWF0Y2hpbmcgZXhwcmVzc2lvbgorc2VsZWN0IGJyaW5zb3J0 X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20gYnJp bl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSknLCAxMDAwLCBmYWxzZSk7Citz ZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVjdCAoaW5ldF92YWwgKyAxKSBh cyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAoaW5ldF92YWwgLSAxKSBkZXNj JywgMTAwMCwgdHJ1ZSk7CisKK3NlbGVjdCBicmluc29ydF9jaGVja19vcmRlcmluZygnc2Vs ZWN0IChpbmV0X3ZhbCArIDEpIGFzIHZhbCBmcm9tIGJyaW5fc29ydF90ZXN0IG9yZGVyIGJ5 IChpbmV0X3ZhbCAtIDEpIGxpbWl0IDEwMCcsIDEwMCwgZmFsc2UpOworc2VsZWN0IGJyaW5z b3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMgdmFsIGZyb20g YnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBsaW1pdCAxMDAn LCAxMDAsIHRydWUpOworCitzZWxlY3QgYnJpbnNvcnRfY2hlY2tfb3JkZXJpbmcoJ3NlbGVj dCAoaW5ldF92YWwgKyAxKSBhcyB2YWwgZnJvbSBicmluX3NvcnRfdGVzdCBvcmRlciBieSAo aW5ldF92YWwgLSAxKSBsaW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgZmFsc2UpOworc2Vs ZWN0IGJyaW5zb3J0X2NoZWNrX29yZGVyaW5nKCdzZWxlY3QgKGluZXRfdmFsICsgMSkgYXMg dmFsIGZyb20gYnJpbl9zb3J0X3Rlc3Qgb3JkZXIgYnkgKGluZXRfdmFsIC0gMSkgZGVzYyBs aW1pdCAxMDAgb2Zmc2V0IDEwMCcsIDEwMCwgdHJ1ZSk7CisKKworZHJvcCB0YWJsZSBicmlu X3NvcnRfdGVzdDsKLS0gCjIuMzkuMQoK --------------HR8dHIjo0owgmXMkVKjGj7Ix Content-Type: text/x-patch; charset=UTF-8; name="0010-wip-test-generator-script-20230218.patch" Content-Disposition: attachment; filename="0010-wip-test-generator-script-20230218.patch" Content-Transfer-Encoding: base64 RnJvbSBjMmMyZWViOGViOTNlNmJjYjhmYjFmMmU3YmIyYzYyMzQ3NDFiYWYwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCA2IEZlYiAyMDIzIDAzOjQyOjUyICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAxMC8xMF0gd2lwOiB0ZXN0IGdlbmVyYXRvciBzY3JpcHQKCi0tLQogYnJp bi10ZXN0LnB5IHwgMzg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM4NiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgYnJpbi10ZXN0LnB5CgpkaWZmIC0tZ2l0IGEvYnJpbi10ZXN0LnB5 IGIvYnJpbi10ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5jOTBlYzc5OGJlYQotLS0gL2Rldi9udWxsCisrKyBiL2JyaW4tdGVzdC5weQpAQCAtMCww ICsxLDM4NiBAQAoraW1wb3J0IHBzeWNvcGcyCitpbXBvcnQgcHN5Y29wZzIuZXh0cmFzCitp bXBvcnQgcmFuZG9tCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHJlCisKK2Zy b20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1l YW4KKworY29scyA9IFsoJ2ludF92YWwnLCAnaW50NF9taW5tYXhfb3BzJyksCisJCSgnYmln aW50X3ZhbCcsICdpbnQ4X21pbm1heF9vcHMnKSwKKwkJKCd0ZXh0X3ZhbCcsICd0ZXh0X21p bm1heF9vcHMnKSwKKwkJKCdpbmV0X3ZhbCcsICdpbmV0X21pbm1heF9vcHMnKSwKKwkJKCco aW50X3ZhbCsxKScsICdpbnQ0X21pbm1heF9vcHMnKSwKKwkJKCcoYmlnaW50X3ZhbCsxKScs ICdpbnQ4X21pbm1heF9vcHMnKSwKKwkJKCIoJ3gnIHx8IHRleHRfdmFsKSIsICd0ZXh0X21p bm1heF9vcHMnKSwKKwkJKCcoaW5ldF92YWwgKyAxKScsICdpbmV0X21pbm1heF9vcHMnKSwK KwkJKCcoaW50X3ZhbCsyKScsICdpbnQ0X21pbm1heF9vcHMnKSwKKwkJKCcoYmlnaW50X3Zh bCsyKScsICdpbnQ4X21pbm1heF9vcHMnKSwKKwkJKCIoJ3knIHx8IHRleHRfdmFsKSIsICd0 ZXh0X21pbm1heF9vcHMnKSwKKwkJKCcoaW5ldF92YWwgKyAyKScsICdpbmV0X21pbm1heF9v cHMnKV0KKworIyByYW5kb21seSByZW9yZGVyIHRoZSB0YWJsZSBjb2x1bW5zCisjdGFibGVf Y29scyA9IFsoJ2ludF92YWwgaW50JywgJ2knLCAnaSArICUoc2tldylkICogcmFuZG9tKCkn LCAnaSArIDEwMDAwMDAgKiByYW5kb20oKScpLAorIwkJCSAgKCdiaWdpbnRfdmFsIGJpZ2lu dCcsICctaScsICctaSAtIDEwMCAqIHJhbmRvbSgpJywgJy0xIC0gMTAwMDAwMCAqIHJhbmRv bSgpJyksCisjCQkJICAoJ2luZXRfdmFsIGluZXQnLCAiJzEwLjAuMC4wJzo6aW5ldCArIGki LCAiJzEwLjAuMC4wJzo6aW5ldCArIGkgKiAxMDAgKiByYW5kb20oKTo6aW50IiwgIicxMC4w LjAuMCc6OmluZXQgKyBpICsgMTAwMDAwMCAqIHJhbmRvbSgpOjppbnQiKSwKKyMJCQkgICgn dGV4dF92YWwgdGV4dCcsICJscGFkKGk6OnRleHQgfHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAn KSIsICJscGFkKChpICsgMTAwKnJhbmRvbSgpOjppbnQpOjp0ZXh0IHx8IG1kNShpOjp0ZXh0 KSwgNDAsICcwJykiLCAibHBhZCgoaSArIDEwMDAwMDAqcmFuZG9tKCk6OmludCk6OnRleHQg fHwgbWQ1KGk6OnRleHQpLCA0MCwgJzAnKSIpXQorCit0YWJsZV9jb2xzID0gWygnaW50X3Zh bCBpbnQnLCAnaSArICUocmFuZG9tbmVzcylkICogcmFuZG9tKCknKSwKKwkJCSAgKCdiaWdp bnRfdmFsIGJpZ2ludCcsICctaSAtICUocmFuZG9tbmVzcylkICogcmFuZG9tKCknKSwKKwkJ CSAgKCdpbmV0X3ZhbCBpbmV0JywgIicxMC4wLjAuMCc6OmluZXQgKyBpICsgJShyYW5kb21u ZXNzKWQgKiByYW5kb20oKTo6aW50IiksCisJCQkgICgndGV4dF92YWwgdGV4dCcsICJscGFk KChpICsgJShyYW5kb21uZXNzKWQgKiByYW5kb20oKTo6aW50KTo6dGV4dCB8fCBtZDUoaTo6 dGV4dCksIDQwLCAnMCcpIildCisKKworZGVmIGV4ZWN1dGVfcXVlcnkoY3VyLCBxdWVyeSwg ZmV0Y2hfcmVzdWx0ID0gRmFsc2UpOgorCisJY3VyLmV4ZWN1dGUocXVlcnkpCisKKwlpZiBm ZXRjaF9yZXN1bHQ6CisJCXJldHVybiBjdXIuZmV0Y2hhbGwoKQorCisKKyMgcmVjcmVhdGUg dGhlIHRhYmxlIHdpdGggdGhlIGNvbHVtbnMgaW4gcmFuZG9taXplZCBvcmRlcgorZGVmIHJl Y3JlYXRlX3RhYmxlKGNvbm4sIG5yb3dzLCByYW5kb21uZXNzLCBmaWxsZmFjdG9yKToKKwor CXJhbmRvbS5zaHVmZmxlKHRhYmxlX2NvbHMpCisKKwljdXIgPSBjb25uLmN1cnNvcigpCisK KwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ0JFR0lOJykKKworCWV4ZWN1dGVfcXVlcnkoY3VyLCAn RFJPUCBUQUJMRSBJRiBFWElTVFMgdGVzdF90YWJsZScpCisKKwlleGVjdXRlX3F1ZXJ5KGN1 ciwgJ0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlICglcykgd2l0aCAoZmlsbGZhY3Rvcj0lZCkn ICUgKCcsICcuam9pbihbdlswXSBmb3IgdiBpbiB0YWJsZV9jb2xzXSksIGZpbGxmYWN0b3Ip KQorCXByaW50KCdDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoJXMpIHdpdGggKGZpbGxmYWN0 b3I9JWQpJyAlICgnLCAnLmpvaW4oW3ZbMF0gZm9yIHYgaW4gdGFibGVfY29sc10pLCBmaWxs ZmFjdG9yKSkKKworCWluc2VydF9zcWwgPSAnSU5TRVJUIElOVE8gdGVzdF90YWJsZSBTRUxF Q1QgJXMgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwlZCkgcyhpKScgJSAoJywgJy5qb2luKFt2 WzFdIGZvciB2IGluIHRhYmxlX2NvbHNdKSwgbnJvd3MpCisJaW5zZXJ0X3NxbCA9IGluc2Vy dF9zcWwgJSB7J3JhbmRvbW5lc3MnIDogaW50KG5yb3dzICogcmFuZG9tbmVzcyksICdyb3dz JyA6IG5yb3dzfQorCisJcHJpbnQoaW5zZXJ0X3NxbCkKKworCWV4ZWN1dGVfcXVlcnkoY3Vy LCBpbnNlcnRfc3FsKQorCisJZXhlY3V0ZV9xdWVyeShjdXIsICdDT01NSVQnKQorCisJY3Vy LmNsb3NlKCkKKworCitkZWYgY3JlYXRlX2luZGV4ZXMoY29ubiwgcGFnZXNfcGVyX3Jhbmdl KToKKworCWN1ciA9IGNvbm4uY3Vyc29yKCkKKworCW51bV9pbmRleGVzID0gcmFuZG9tLnJh bmRpbnQoMSxsZW4oY29scykpCisKKwkjIHJhbmRvbWx5IHBpY2sgY29sdW1ucyB0byBpbmRl eAorCWluZGV4ZWQgPSByYW5kb20uc2FtcGxlKGNvbHMsIG51bV9pbmRleGVzKQorCisJZm9y IGMgaW4gaW5kZXhlZDoKKwkJIyBmID0gcmFuZG9tLnJhbmRvbSgpCisJCSMgbnVtX3BhZ2Vz ID0gMSArIGludChmICogZiAqIGYgKiAyNTYpCisJCWluZGV4X3NxbCA9ICdDUkVBVEUgSU5E RVggT04gdGVzdF90YWJsZSBVU0lORyBicmluICglcyAlcykgV0lUSCAocGFnZXNfcGVyX3Jh bmdlPSVkKScgJSAoY1swXSwgY1sxXSwgcGFnZXNfcGVyX3JhbmdlKQorCQlwcmludChpbmRl eF9zcWwpCisJCWV4ZWN1dGVfcXVlcnkoY3VyLCBpbmRleF9zcWwpCisKKwljdXIuY2xvc2Uo KQorCisJcmV0dXJuIGluZGV4ZWQKKworCitkZWYgYnJpbnNvcnRfaW5fZXhwbGFpbihjdXIs IHF1ZXJ5KToKKworCWN1ci5leGVjdXRlKCdleHBsYWluICcgKyBxdWVyeSkKKwlmb3IgciBp biBjdXIuZmV0Y2hhbGwoKToKKwkJaWYgJ0JSSU4gU29ydCcgaW4gclsnUVVFUlkgUExBTidd OgorCQkJcmV0dXJuIFRydWUKKworCXJldHVybiBGYWxzZQorCisKK2RlZiBjb21wYXJlX2Rl ZmF1bHQoYSwgYik6CisJaWYgYSA8IGI6CisJCXJldHVybiAtMQorCWVsaWYgYSA+IGI6CisJ CXJldHVybiAxCisJcmV0dXJuIDAKKworCitkZWYgY29tcGFyZV9pbmV0KGEsIGIpOgorCWEg PSBbaW50KHYpIGZvciB2IGluIGEuc3BsaXQoJy4nKV0KKwliID0gW2ludCh2KSBmb3IgdiBp biBiLnNwbGl0KCcuJyldCisKKwlmb3IgcCBpbiByYW5nZSgwLDQpOgorCQlyID0gY29tcGFy ZV9kZWZhdWx0KGFbcF0sIGJbcF0pCisJCWlmIHIgIT0gMDoKKwkJCXJldHVybiByCisKKwly ZXR1cm4gcgorCisKK2RlZiBjaGVja19vcmRlcmluZyhjb25uLCBjb25maWcsIHF1ZXJ5LCBl eHBlY3RlZF9yb3dzLCBzZWxlY3Rfc3Rhciwgc2VsZWN0X2xpc3QsIHNvcnRfbGlzdCwgaXNf ZGVzYyk6CisKKwljdXIgPSBjb25uLmN1cnNvcigpCisKKwlkYXRhID0gZXhlY3V0ZV9xdWVy eShjdXIsIHF1ZXJ5LCBUcnVlKQorCisJaWYgbGVuKGRhdGEpICE9IGV4cGVjdGVkX3Jvd3M6 CisJCXByaW50KCdFUlJPUjogdW5leHBlY3RlZCBudW1iZXIgb2Ygcm93cyAlcyAlcycgJSAo ZXhwZWN0ZWRfcm93cywgbGVuKGRhdGEpKSkKKwkJc3lzLmV4aXQoMSkKKworCSMgd2hhdCBw cmVmaXggd2UgY2FuIGNoZWNrIG9yZGVyaW5nIGZvciAoc29tZSBzb3J0IGNvbHVtbnMgbWF5 IG5vdCBiZQorCSMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCwgYW5kIHdlIG5lZWQgYSBjb250 aW51b3VzIHByZWZpeCkKKwlwcmVmaXggPSBbXQorCWluZGV4ZXMgPSBbXQorCXNvcnRfb3Jk ZXIgPSB7fQorCWZvciBzIGluIHNvcnRfbGlzdDoKKwkJaWYgc2VsZWN0X3N0YXI6CisJCQlp ZiBzWzBdIG5vdCBpbiBbeCBmb3IgeCBpbiB0YWJsZV9jb2xzXToKKwkJCQlicmVhaworCisJ CQlpZHggPSBbeCBmb3IgeCBpbiB0YWJsZV9jb2xzXS5pbmRleChzWzBdKQorCQllbHNlOgor CQkJaWYgcyBub3QgaW4gc2VsZWN0X2xpc3Q6CisJCQkJYnJlYWsKKworCQkJaWR4ID0gc2Vs ZWN0X2xpc3QuaW5kZXgocykKKworCQlpZiBpZHggaXMgTm9uZToKKwkJCWJyZWFrCisKKwkJ c29ydF9pZHggPSBzb3J0X2xpc3QuaW5kZXgocykKKworCQlwcmVmaXguYXBwZW5kKHMpCisJ CWluZGV4ZXMuYXBwZW5kKGlkeCkKKwkJIyBzb3J0X29yZGVyLnVwZGF0ZSh7c2VsZWN0X2xp c3QuaW5kZXgocykgOiBpc19kZXNjW3NvcnRfbGlzdC5pbmRleChzKV19KQorCQlzb3J0X29y ZGVyLnVwZGF0ZSh7aWR4IDogaXNfZGVzY1tzb3J0X2lkeF19KQorCisJIyBwcmludCgiUFJF RklYIiwgaW5kZXhlcywgcHJlZml4KQorCisJaWYgbGVuKHByZWZpeCkgIT0gMDoKKwkJcHJl diA9IE5vbmUKKwkJZm9yIHJvdyBpbiBkYXRhOgorCQkJaWYgcHJldiBpcyBub3QgTm9uZToK KworCQkJCWZvciBpZHggaW4gaW5kZXhlczoKKworCQkJCQlpZiBzZWxlY3RfbGlzdFtpZHhd WzFdID09ICdpbmV0X21pbm1heF9vcHMnOgorCQkJCQkJciA9IGNvbXBhcmVfaW5ldChwcmV2 W2lkeF0sIHJvd1tpZHhdKQorCQkJCQllbHNlOgorCQkJCQkJciA9IGNvbXBhcmVfZGVmYXVs dChwcmV2W2lkeF0sIHJvd1tpZHhdKQorCisJCQkJCWlmIHNvcnRfb3JkZXJbaWR4XToKKwkJ CQkJCXIgPSAtcgorCisJCQkJCWlmIHIgPiAwOgorCQkJCQkJcHJpbnQoIkVSUk9SOiBpbmNv cnJlY3Qgb3JkZXJpbmcgJXMgPiAlcyIgJSAocHJldltpZHhdLCByb3dbaWR4XSkpCisJCQkJ CQlzeXMuZXhpdCgxKQorCisJCQkJCWlmIHIgPCAwOgorCQkJCQkJYnJlYWsKKworCQkJcHJl diA9IHJvdworCisJY3VyLmNsb3NlKCkKKworCitkZWYgcnVuX3F1ZXJpZXMoY29ubiwgY29u ZmlnLCBpbmRleGVkX2NvbHMsIG51bV9xdWVyaWVzID0gMTAwMCk6CisKKwlucXVlcnkgPSAw CisKKwl3aGlsZSBucXVlcnkgPCBudW1fcXVlcmllczoKKwkJaWYgcnVuX3F1ZXJ5KGNvbm4s IGNvbmZpZywgaW5kZXhlZF9jb2xzKToKKwkJCW5xdWVyeSArPSAxCisKKworZGVmIHF1ZXJ5 X3RpbWluZyhjdXIsIHF1ZXJ5KToKKworCXJ1bnMgPSBbXQorCisJIyBnZXQgZXhwbGFpbiBw bGFuIGFuZCBjb3N0cyBmcm9tIHRoZSBmaXJzdCBub2RlCisJciA9IGV4ZWN1dGVfcXVlcnko Y3VyLCAnZXhwbGFpbiAoYW5hbHl6ZSwgdGltaW5nIG9mZikgJXMnICUgKHF1ZXJ5LCksIFRy dWUpCisJcHJpbnQoIiIpCisJcHJpbnQoIlxuIi5qb2luKFsnICAgICcgKyB4WzBdIGZvciB4 IGluIHJdKSkKKwlwcmludCgiIikKKworCXN5cy5zdGRvdXQuZmx1c2goKQorCisJciA9IHJl LnNlYXJjaCgnY29zdD0oW15cc10qKVwuXC4oW15cc10qKScsIHJbMF1bMF0pCisJY29zdHMg PSBbZmxvYXQoci5ncm91cHMoKVswXSksIGZsb2F0KHIuZ3JvdXBzKClbMV0pXQorCisJZm9y IHIgaW4gcmFuZ2UoMCwxKToKKwkJcyA9IHRpbWUudGltZSgpCisJCWV4ZWN1dGVfcXVlcnko Y3VyLCBxdWVyeSkKKwkJZCA9IHRpbWUudGltZSgpCisJCXJ1bnMuYXBwZW5kKGQtcykKKwor CSMgcHJpbnQoInJ1bnMgJXMgPT4gbWVhbiAlcyIgJSAoc3RyKHJ1bnMpLCBtZWFuKHJ1bnMp KSkKKworCXN5cy5zdGRvdXQuZmx1c2goKQorCisJcmV0dXJuIChtZWFuKHJ1bnMpLCBjb3N0 cykKKworCitkZWYgY2hlY2tfdGltaW5nKGNvbm4sIGNvbmZpZywgcXVlcnkpOgorCisJY3Vy ID0gY29ubi5jdXJzb3IoKQorCisJIyBnZXQgdGltaW5nIGZvciBhIHNpbXBsZSBwbGFuIHdp dGhvdXQgYSBCUklOIHNvcnQKKworCWV4ZWN1dGVfcXVlcnkoY3VyLCAnc2V0IGVuYWJsZV9z ZXFzY2FuID0gb24nKQorCWV4ZWN1dGVfcXVlcnkoY3VyLCAnc2V0IGVuYWJsZV9icmluc29y dCA9IG9mZicpCisKKwkoc2Vxc2Nhbl90aW1lLCBzZXFzY2FuX2Nvc3RzKSA9IHF1ZXJ5X3Rp bWluZyhjdXIsIHF1ZXJ5KQorCisJIyBnZXQgdGltaW5nIGZvciBhIHNpbXBsZSBwbGFuIHdp dGggYSBCUklOIHNvcnQKKwlleGVjdXRlX3F1ZXJ5KGN1ciwgJ3NldCBlbmFibGVfc2Vxc2Nh biA9IG9mZicpCisJZXhlY3V0ZV9xdWVyeShjdXIsICdzZXQgZW5hYmxlX2JyaW5zb3J0ID0g b24nKQorCWV4ZWN1dGVfcXVlcnkoY3VyLCBxdWVyeSkKKworCShicmluc29ydF90aW1lLCBi cmluc29ydF9jb3N0cykgPSBxdWVyeV90aW1pbmcoY3VyLCBxdWVyeSkKKworCXByaW50ICgi dGltaW5nIiwgJ3Jvd3MnLCBjb25maWdbJ25yb3dzJ10sICdwYWdlc19wZXJfcmFuZ2UnLCBj b25maWdbJ3BhZ2VzX3Blcl9yYW5nZSddLCAncmFuZG9tbmVzcycsIGNvbmZpZ1sncmFuZG9t bmVzcyddLCAnZmlsbGZhY3RvcicsIGNvbmZpZ1snZmlsbGZhY3RvciddLCAnd29ya19tZW0n LCBjb25maWdbJ3dvcmtfbWVtJ10sICd3YXRlcm1hcmtfc3RlcCcsIGNvbmZpZ1snd2F0ZXJt YXJrX3N0ZXAnXSwgJ2xpbWl0JywgY29uZmlnWydsaW1pdCddLCAnb2Zmc2V0JywgY29uZmln WydvZmZzZXQnXSwgInNlcXNjYW4iLCBzZXFzY2FuX3RpbWUsICJicmluc29ydCIsIGJyaW5z b3J0X3RpbWUsICJjb3N0cyBzZXFzY2FuIiwgc2Vxc2Nhbl9jb3N0c1swXSwgc2Vxc2Nhbl9j b3N0c1sxXSwgImJyaW5zb3J0IiwgYnJpbnNvcnRfY29zdHNbMF0sIGJyaW5zb3J0X2Nvc3Rz WzFdKQorCSMgcHJpbnQgKCJicmluc29ydCB0aW1pbmciLCBicmluc29ydF90aW1lLCAiY29z dHMiLCBicmluc29ydF9jb3N0c1swXSwgYnJpbnNvcnRfY29zdHNbMV0pCisKKwlpZiAoc2Vx c2Nhbl9jb3N0c1sxXSAqIDEuMSA8IGJyaW5zb3J0X2Nvc3RzWzFdKSBhbmQgKHNlcXNjYW5f dGltZSA+IGJyaW5zb3J0X3RpbWUgKiAxLjEpOgorCQlwcmludCAoIkNPU1RJTkcgSVNTVUUg KCVmIDwgJWYpICYmICglZiA+ICVmKSIgJSAoc2Vxc2Nhbl9jb3N0c1sxXSwgYnJpbnNvcnRf Y29zdHNbMV0sIHNlcXNjYW5fdGltZSwgYnJpbnNvcnRfdGltZSkpCisKKwlpZiAoc2Vxc2Nh bl9jb3N0c1sxXSA+IGJyaW5zb3J0X2Nvc3RzWzFdICogMS4xKSBhbmQgKHNlcXNjYW5fdGlt ZSAqIDEuMSA8IGJyaW5zb3J0X3RpbWUpOgorCQlwcmludCAoIkNPU1RJTkcgSVNTVUUgKCVm ID4gJWYpICYmICglZiA8ICVmKSIgJSAoc2Vxc2Nhbl9jb3N0c1sxXSwgYnJpbnNvcnRfY29z dHNbMV0sIHNlcXNjYW5fdGltZSwgYnJpbnNvcnRfdGltZSkpCisKKwlzeXMuc3Rkb3V0LmZs dXNoKCkKKworCitkZWYgcnVuX3F1ZXJ5KGNvbm4sIGNvbmZpZywgaW5kZXhlZF9jb2xzKToK KworCWxpbWl0X3Jvd3MgPSBjb25maWdbJ25yb3dzJ10KKwlvZmZzZXRfcm93cyA9IDAKKwor CWN1ciA9IGNvbm4uY3Vyc29yKGN1cnNvcl9mYWN0b3J5PXBzeWNvcGcyLmV4dHJhcy5SZWFs RGljdEN1cnNvcikKKworCSMgcmFuZG9tIGNvbHVtbnMgdG8gcmVmZXJlbmNlIGluIHRoZSBT RUxFQ1QgbGlzdCwgbWF5IG5vdCBpbmNsdWRlIHNvcnQgY29sdW1uKHMpCisJc2VsZWN0X2xp c3QgPSByYW5kb20uc2FtcGxlKGNvbHMsIHJhbmRvbS5yYW5kaW50KDEsbGVuKGNvbHMpKSkK KworCSMgYnV0IG1heWJlIGp1c3QgZG8gc2VsZWN0ICosIHNvIHRoYXQgd2UgZG9uJ3QgZG8g YSBwcm9qZWN0aW9uCisJc2VsZWN0X3N0YXIgPSBGYWxzZQorCWlmIHJhbmRvbS5yYW5kb20o KSA8IDAuNToKKwkJc2VsZWN0X3N0YXIgPSBUcnVlCisJCXNlbGVjdF9saXN0ID0gWygnKics IE5vbmUpXQorCisJIyByYW5kb20gY29sdW1ucyB0byByZWZlcmVuY2UgaW4gdGhlIE9SREVS IEJZIGNsYXVzZQorCXNvcnRfbGlzdCA9IHJhbmRvbS5zYW1wbGUoY29scywgcmFuZG9tLnJh bmRpbnQoMSxsZW4oY29scykpKQorCisJIyBnZW5lcmF0ZSByYW5kb20gQVNDIC8gREVTQyBt b2RpZmllcnMKKwlpc19kZXNjID0gW10KKwlvcmRlcl9ieSA9IFtdCisJZm9yIHMgaW4gcmFu Z2UoMCxsZW4oc29ydF9saXN0KSk6CisJCWRlc2MgPSByYW5kb20uY2hvaWNlKFtUcnVlLCBG YWxzZV0pCisJCWlzX2Rlc2MuYXBwZW5kKGRlc2MpCisJCXggPSBzb3J0X2xpc3Rbc11bMF0K KwkJaWYgZGVzYzoKKwkJCXggPSB4ICsgJyBERVNDJworCQlvcmRlcl9ieS5hcHBlbmQoeCkK KworCXF1ZXJ5ID0gJ1NFTEVDVCAlcyBGUk9NIHRlc3RfdGFibGUgT1JERVIgQlkgJXMnICUg KCcsICcuam9pbihbdlswXSBmb3IgdiBpbiBzZWxlY3RfbGlzdF0pLCAnLCAnLmpvaW4ob3Jk ZXJfYnkpKQorCisJIyByYW5kb21seSBhZGQgTElNSVQgYW5kIE9GRlNFVCBjbGF1c2UocykK KwlpZiByYW5kb20ucmFuZG9tKCkgPCAwLjU6CisKKwkJbGltaXRfcm93cyA9IDEgKyBpbnQo cG93KHJhbmRvbS5yYW5kb20oKSwgMykgKiByYW5kb20ucmFuZGludCgxLGNvbmZpZ1snbnJv d3MnXSkpCisJCXF1ZXJ5ID0gcXVlcnkgKyAnIExJTUlUICVkJyAlIChsaW1pdF9yb3dzLCk7 CisKKwkJaWYgbGltaXRfcm93cyA8IGNvbmZpZ1snbnJvd3MnXSBhbmQgcmFuZG9tLnJhbmRv bSgpIDwgMC41OgorCisJCQlvZmZzZXRfcm93cyA9IGludChwb3cocmFuZG9tLnJhbmRvbSgp LCAzKSAqIHJhbmRvbS5yYW5kaW50KDEsY29uZmlnWyducm93cyddIC0gbGltaXRfcm93cykp CisJCQlxdWVyeSA9IHF1ZXJ5ICsgJyBPRkZTRVQgJWQnICUgKG9mZnNldF9yb3dzLCk7CisK KwlleHBlY3RlZF9yb3dzID0gbWluKGxpbWl0X3Jvd3MsIGNvbmZpZ1snbnJvd3MnXSAtIG9m ZnNldF9yb3dzKQorCisJIyB3YXRlcm1hcmtfc3RlcCA9IHJhbmRvbS5yYW5kaW50KC0xLCAz KQorCXdhdGVybWFya19zdGVwID0gcmFuZG9tLmNob2ljZShbLTEsIDAsIDEsIDgsIDMyLCAx MjhdKQorCWV4ZWN1dGVfcXVlcnkoY3VyLCAnU0VUIGJyaW5zb3J0X3dhdGVybWFya19zdGVw ID0gJWQnICUgKHdhdGVybWFya19zdGVwLCkpCisKKwlmID0gcmFuZG9tLnJhbmRvbSgpCisJ I3dvcmtfbWVtX2tiID0gNjQgKyBpbnQoKGYgKiBmICogZikgKiByYW5kb20ucmFuZGludCg2 NCwgMzI3NjgpKQorCXdvcmtfbWVtX2tiID0gcmFuZG9tLmNob2ljZShbNjQsIDEwMjQsIDQw OTYsIDMyNzY4XSkKKworCWV4ZWN1dGVfcXVlcnkoY3VyLCAiU0VUIHdvcmtfbWVtID0gJyVk a0InIiAlICh3b3JrX21lbV9rYiwpKQorCisJY29uZmlnID0gY29uZmlnLmNvcHkoKQorCWNv bmZpZy51cGRhdGUoeyd3b3JrX21lbScgOiB3b3JrX21lbV9rYn0pCisJY29uZmlnLnVwZGF0 ZSh7J3dhdGVybWFya19zdGVwJyA6IHdhdGVybWFya19zdGVwfSkKKwljb25maWcudXBkYXRl KHsnbGltaXQnIDogbGltaXRfcm93c30pCisJY29uZmlnLnVwZGF0ZSh7J29mZnNldCcgOiBv ZmZzZXRfcm93c30pCisKKwkjIGRvIHdlIGV4cGVjdCBicmluc29ydCBvciBub3Q/IG9ubHkg d2hlbiB0aGUgZmlyc3QgT1JERVIgQlkgaXMgaW5kZXhlZAorCWlmIHNvcnRfbGlzdFswXSBp biBpbmRleGVkX2NvbHM6CisKKwkJcHJpbnQoJy0tLS0tLS0tLS0tLS0tJywgZGF0ZXRpbWUu bm93KCksICctLS0tLS0tLS0tLS0tLScpCisJCXByaW50KCJTUUw6IiwgcXVlcnkpCisJCXBy aW50KCJDT05GSUc6IiwgY29uZmlnKQorCisJCWlmIGJyaW5zb3J0X2luX2V4cGxhaW4oY3Vy LCBxdWVyeSk6CisJCQljaGVja19vcmRlcmluZyhjb25uLCBjb25maWcsIHF1ZXJ5LCBleHBl Y3RlZF9yb3dzLCBzZWxlY3Rfc3Rhciwgc2VsZWN0X2xpc3QsIHNvcnRfbGlzdCwgaXNfZGVz YykKKwkJCWNoZWNrX3RpbWluZyhjb25uLCBjb25maWcsIHF1ZXJ5KQorCQllbHNlOgorCQkJ cHJpbnQoIkVSUk9SOiBCUklOIFNvcnQgbm90IGluIHBsYW4iKQorCQkJc3lzLmV4aXQoMSkK KworCQlyZXN1bHQgPSBUcnVlCisKKwllbHNlOgorCisJCWlmIGJyaW5zb3J0X2luX2V4cGxh aW4oY3VyLCBxdWVyeSk6CisJCQlwcmludCgiRVJST1I6IEJSSU4gU29ydCBpbiBwbGFuIikK KwkJCXN5cy5leGl0KDEpCisKKwkJcmVzdWx0ID0gRmFsc2UKKworCWN1ci5jbG9zZSgpCisK KwlyZXR1cm4gcmVzdWx0CisKKworZGVmIHNldHVwX2Nvbm5lY3Rpb24oY29ubik6CisJY3Vy ID0gY29ubi5jdXJzb3IoKQorCisJIyBmb3JjZSBpbmRleCBhY2Nlc3MKKwlleGVjdXRlX3F1 ZXJ5KGN1ciwgJ1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZicpCisJZXhlY3V0ZV9xdWVyeShj dXIsICdTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDAnKQorCisJY3Vy LmNsb3NlKCkKKworCitydW5faWQgPSAwCisKK3doaWxlIFRydWU6CisKKwlydW5faWQgKz0g MQorCisJY29uZmlnID0ge30KKworCWNvbm4gPSBwc3ljb3BnMi5jb25uZWN0KCdob3N0PWxv Y2FsaG9zdCBwb3J0PTU0MzIgZGJuYW1lPXRlc3QgdXNlcj11c2VyJykKKworCXNldHVwX2Nv bm5lY3Rpb24oY29ubikKKworCXByaW50KCc9PT09PT09PT09IHJ1biAlZCA9PT09PT09PT09 JyAlIChydW5faWQsKSkKKworCSMgZGF0YSBkaXN0cmlidXRpb24gKDEgLSBzZXF1ZW50aWFs LCAzIC0gcmFuZG9tKQorCWNvbmZpZ1sncmFuZG9tbmVzcyddID0gcmFuZG9tLmNob2ljZShb MCwgMC4wNSwgMC4xLCAwLjI1LCAwLjUsIDEuMF0pCisKKwkjIHJhbmRvbSBmaWxsZmFjdG9y LCBza2V3ZWQgY2xvc2VyIHRvIDEwJQorCWNvbmZpZ1snZmlsbGZhY3RvciddID0gMTAgKyBp bnQocG93KHJhbmRvbS5yYW5kb20oKSwzKSAqIDkwKQorCisJIyByYW5kb20gbnVtYmVyIG9m IHJvd3MKKwljb25maWdbJ25yb3dzJ10gPSByYW5kb20uY2hvaWNlKFsxMDAwMDAsIDEwMDAw MDBdKQorCisJIyBwYWdlcyBwZXIgQlJJTiByYW5nZSAoZm9yIGFsbCBpbmRleGVzKQorCWNv bmZpZ1sncGFnZXNfcGVyX3JhbmdlJ10gPSByYW5kb20uY2hvaWNlKFsxLCAzMiwgMTI4XSkK KworCXJlY3JlYXRlX3RhYmxlKGNvbm4sIGNvbmZpZ1snbnJvd3MnXSwgY29uZmlnWydyYW5k b21uZXNzJ10sIGNvbmZpZ1snZmlsbGZhY3RvciddKQorCisJaW5kZXhlZF9jb2xzID0gY3Jl YXRlX2luZGV4ZXMoY29ubiwgY29uZmlnWydwYWdlc19wZXJfcmFuZ2UnXSkKKworCXJ1bl9x dWVyaWVzKGNvbm4sIGNvbmZpZywgaW5kZXhlZF9jb2xzKQorCisJY29ubi5jbG9zZSgpCi0t IAoyLjM5LjEKCg== --------------HR8dHIjo0owgmXMkVKjGj7Ix--