Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4qPG-002byn-2V for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 01:18:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4qPF-003RFl-0p for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 01:18:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4qPE-003RFc-2K for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 01:18:05 +0000 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4qPD-00000000iD2-0itk for pgsql-hackers@postgresql.org; Tue, 24 Mar 2026 01:18:04 +0000 Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-5a126c8aab9so3916269e87.0 for ; Mon, 23 Mar 2026 18:18:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774315082; cv=none; d=google.com; s=arc-20240605; b=gRF5L87jQpwq+U102f6MnwoJAe4sdP1IlPi5JhsVkgywNoYa5tzylOa2skdb7+aMiU vAsCQ09cAy6xlFUadh61vCvBWR9pol3ruAX2Ns6crb6AivjhaM6MrssvLTG+O7GsWKK1 HfkC8vBlIyFhOpRClaCNxL+WAX+DYUaySX/haBfUe3LZF6WAAZ9p6IWupifykOAIFldI ZoXjEN32ljfau288h3Vv39tYGvKrFqS9Q4wadvxvlasiB8xW31CVX1+NcwJQsNMCD88+ wxdCAropgfcUow+bYfeJYUV+yqLJXj4fS9ubm9LpooWuOEFiQyZ3pb2wrVZAi+VWngO8 O5SQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=y19SgCB9F94VNif1twBYF8zD4jbJ+O4DC/ACbZ7TRBQ=; fh=cYPv+oEyycBxvxtRf+/5t8X1Utn8+/qLzDEPFW1tk0Y=; b=IuNxWVMjez1Y/ZnaaZ6Xqr1ZBxnMLuMCPsW4WBZIkInSvtWLp1EZsqGSc5Q1tqPzs8 n8a2ptILSkbSxqHvxGPMJcIrw2wo2cBNiNga+HLOkNPD3s2IG9qN2xdqeNZD8UUCID0s 49HlB8HLqmoeJnsv7ds+0IfdAQvFchkuEHc7cOamzM/k+eRMOSbjfdQfA/ZqlkDKFEX6 /jrwhLHcZM3f3ZJjT/LB2fO/Jqb6DTuhqfyrVRQS+7UyJ8wpJwoFmPoplbsVWKkdIqMG 4ZiVf74s9DMPwwScXIHMmwl5y2I5THMmB+scJR4YJcisDxBJAFQE4BnEAJPrcu2ZWPeD rjrQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774315082; x=1774919882; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=y19SgCB9F94VNif1twBYF8zD4jbJ+O4DC/ACbZ7TRBQ=; b=KGlCyDEMJqF3pkorJS4d9mYQWRLRQAnturJv7IRTAKr20dYoZdAiVe3aerFPrfXje1 YnnF3LkmPJsKgBvk1nj8SzTpSPmVekGfhvFfpfu2/a65CQ2U4am/bCTCW8OeBmqRfb0G phgPU1XxtZj1TlFViBK89zPXUa0gCjRkPJ7mul96UsKCAS5t9xaiFo8PBIj904qJ5krE kZZMZxNPZ8jWVuDdRL2fu6vdL7zT5qSkx/HSoKHQaPJZCSxtHK1YKBIcyIwGEhPZnpwz HhYzRzO4vMKZHK+EINA5pxA5aZJzbKAzmSraI8HDN8IZNcbiX0drkw8AHp6jjr+1V0ns 3wqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774315082; x=1774919882; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=y19SgCB9F94VNif1twBYF8zD4jbJ+O4DC/ACbZ7TRBQ=; b=Zv95uVm4/7DiyWU6kCrUIYjx0EXd4JZwpycyIm1Y9QpLDytOU8UpaSM/bG2W3vst+F rM1rpUO6wSolveg6nIUFCxV2jIMPD5mfqmncBSfWM4PYFdPfrVAC62s7u0GvwnKbzz85 zWLYf7UIL/NSbBLKXQ0UIEo1rMX2bYYhQI28PiAWo90btkexRcjchNMI6fHegr5DlEFF Kj7nKkJFlzaIQ/I4JjNH+ydGc6yd+810ey57c+YwU1hN6E17rViYq1lzoHHJqN9QbLyg +WTlhAi+b8IktdPnkxV86YuflC+y1IdQzsLvCWSc7MSM8q/zfsv7OetZCveFQpDQWkoe No3A== X-Gm-Message-State: AOJu0Yx/zHBX4sDpjQwhhqpixmg7UNJgYswObDlH4v7ilbr2szqBKm67 rY2uoXEx5GmOPqkD7id/iOVsVQArORfVtXLJUXdJ3OinwDHRZMQlCZAQpgjizlcjLlBxEcglB+p YIoQBMrBMnc6tos8KO2Ow54i8w48UL5Lu1Q== X-Gm-Gg: ATEYQzzDIab64gYeB9xz9/R4YbNLlf3/GkvQ0ZRhk9vmRTyHmB1GkhIYpFzr3xBruuN fAtdSjIlL6zH+OYT8/Xt53Mvqgagiwv6l/aAt/y/ZnS24djr1r+XlyvM1G2Cmhz9uk1D1AoLXG+ 6r+EVc8yGCzAM73Z5cHK4HFICTSc2LeEO9/1Flq/4U8yEnZCDzdgR7ctWy7svZT9UORiHWYxAoV UaaPZFlYitf7TJlPmdmiZjLqDQ2S9MVX8LMLvcdIvH5tKQd6cc2wsSKmcUM37C9Na8ipz+XJP28 qes4DdiE X-Received: by 2002:a05:6512:6d3:b0:5a1:64ff:a6fa with SMTP id 2adb3069b0e04-5a285af8c79mr4199738e87.16.1774315081312; Mon, 23 Mar 2026 18:18:01 -0700 (PDT) MIME-Version: 1.0 References: <1791665551.452444.1761209220211.ref@mail.yahoo.com> <1895971769.8343.1761240853939@mail.yahoo.com> <574624399.175025.1761290201491@mail.yahoo.com> <953203149.383019.1761345585325@mail.yahoo.com> <6F76FA61-E2DC-44EF-9504-889D9BDB4EBD@yandex-team.ru> <1154454839.957923.1761604611424@mail.yahoo.com> <87ldkv8cog.fsf@wibble.ilmari.org> <87ikfz7zcu.fsf@wibble.ilmari.org> <9CB824CC-70DC-4165-AC6A-9664F47209EE@yandex-team.ru> <878qbn51kb.fsf@wibble.ilmari.org> In-Reply-To: From: Masahiko Sawada Date: Mon, 23 Mar 2026 18:17:24 -0700 X-Gm-Features: AQROBzDA27avzvLx3i1-7VAX7sRLIIOgND62-6xGyubItvAQ0SYQO1ovDCL3mbg Message-ID: Subject: Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions To: Aleksander Alekseev Cc: pgsql-hackers , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= , Andrey Borodin Content-Type: multipart/mixed; boundary="000000000000244065064dbaec90" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000244065064dbaec90 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 20, 2026 at 7:24=E2=80=AFAM Aleksander Alekseev wrote: > > Hi, > > > > Also, a small nitpick is that we can use uint32 instead of uint64 for > > > 'bits_buffer'. I've attached the updated patch as well as the > > > difference from the previous version. > > > > Then I suggest using uint32 for the bits_buffer variable in > > base32hex_encode() too. Also we should use 1U instead of 1ULL with > > uint32. > > CI is not happy with the new test: > > ``` > SELECT decode('=E3=81=82', 'base32hex'); -- error > -ERROR: invalid symbol "=E3=81=82" found while decoding base32hex sequen= ce > +ERROR: invalid symbol "=C3=A3" found while decoding base32hex sequence > ``` > > Although it passes locally. My best guess is that something is off > with the database encoding on CI and that we shouldn't use this test. > We have a similar test which uses ASCII symbols only. Good catch. Yes, we should not use this test depending on the database encoding and it seems we can omit this test in the first place. The patch looks basically good to me. I've made some changes to the regression test part as I want to have round-trip tests. I've merged the tests checking the sortability to the existing tests and added round-trip tests. With this change, we can test round-trip tests and sortability tests with random UUID value in every test run while minimizing the test time. Feedback is very welcome. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com --000000000000244065064dbaec90 Content-Type: application/x-patch; name="v11-0001-Add-base32hex-support-to-encode-and-decode-funct.patch" Content-Disposition: attachment; filename="v11-0001-Add-base32hex-support-to-encode-and-decode-funct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn3o1ydb0 RnJvbSA5NDYwYWQyNTQ4MzY5YWZjZDdmZTZjM2YzZTc3OTQxNTU4OWViZWI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFdlZCwgMjkgT2N0IDIwMjUgMTU6NTM6MTIgKzA0MDAKU3ViamVjdDogW1BBVENIIHYxMV0g QWRkIGJhc2UzMmhleCBzdXBwb3J0IHRvIGVuY29kZSgpIGFuZCBkZWNvZGUoKSBmdW5jdGlvbnMu Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlzIGFkZHMgc3VwcG9ydCBmb3Ig YmFzZTMyaGV4IGVuY29kaW5nIGFuZCBkZWNvZGluZywgYXMgZGVmaW5lZCBpbgpSRkMgNDY0OCBT ZWN0aW9uIDcuIFVubGlrZSBzdGFuZGFyZCBiYXNlMzIsIGJhc2UzMmhleCB1c2VzIHRoZQpleHRl bmRlZCBoZXggYWxwaGFiZXQgKDAtOSwgQS1WKSB3aGljaCBwcmVzZXJ2ZXMgdGhlIGxleGljb2dy YXBoaWNhbApvcmRlciBvZiB0aGUgZW5jb2RlZCBkYXRhLgoKVGhpcyBpcyBwYXJ0aWN1bGFybHkg dXNlZnVsIGZvciByZXByZXNlbnRpbmcgVVVJRHY3IHZhbHVlcyBpbiBhCmNvbXBhY3Qgc3RyaW5n IGZvcm1hdCB3aGlsZSBtYWludGFpbmluZyB0aGVpciB0aW1lLW9yZGVyZWQgc29ydApwcm9wZXJ0 eS4KClRoZSBlbmNvZGUoKSBmdW5jdGlvbiBwcm9kdWNlcyBvdXRwdXQgcGFkZGVkIHdpdGggJz0n LCB3aGlsZSBkZWNvZGUoKQphY2NlcHRzIGJvdGggcGFkZGVkIGFuZCB1bnBhZGRlZCBpbnB1dC4g Rm9sbG93aW5nIHRoZSBiZWhhdmlvciBvZgpvdGhlciBlbmNvZGluZyB0eXBlcywgZGVjb2Rpbmcg aXMgY2FzZS1pbnNlbnNpdGl2ZS4KClN1Z2dlc3RlZC1ieTogU2VyZ2V5IFByb2tob3JlbmtvIDxz ZXJnZXlwcm9raG9yZW5rb0B5YWhvby5jb20uYXU+CkF1dGhvcjogQW5kcmV5IEJvcm9kaW4gPHg0 bW1tQHlhbmRleC10ZWFtLnJ1PgpDby1hdXRob3JlZC1ieTogQWxla3NhbmRlciBBbGVrc2VldiA8 YWxla3NhbmRlckB0aWdlcmRhdGEuY29tPgpSZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRhIDxz YXdhZGEubXNoa0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiDQmNC70YzRjyDQp9C10YDQtNCw0LrQ vtCyIDxpLmNoZXJkYWtvdi5wZ0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBDaGVuZ3hpIFN1biA8 Y2hlbmd4aXN1bjkyQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9D QUo3YzZUT3JhbXIxVVRMY3lCMTI4TFdNcWl0YTFZNyUzRGFycTNLSGFVJTNEcWlrZjV5S09RJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWJpbmFyeXN0cmluZy5z Z21sIHwgIDI3ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYyAgICAgICAgICAg fCAxNTMgKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3RyaW5ncy5vdXQgICAgfCAxMzMgKysrKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdXVpZC5vdXQgICAgICAgfCAgMTggKystCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdHJpbmdzLnNxbCAgICAgICAgIHwgIDQ3ICsrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3V1aWQuc3FsICAgICAgICAgICAgfCAgIDggKy0KIDYgZmlsZXMgY2hhbmdlZCwgMzczIGluc2Vy dGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtYmluYXJ5c3RyaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWJpbmFyeXN0 cmluZy5zZ21sCmluZGV4IGIyNTYzODFlMDFmLi4zZjc3ZjZkMjBiMCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2Z1bmMvZnVuYy1iaW5hcnlzdHJpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv ZnVuYy9mdW5jLWJpbmFyeXN0cmluZy5zZ21sCkBAIC03MjksNiArNzI5LDcgQEAKICAgICAgICA8 cGFyYW1ldGVyPmZvcm1hdDwvcGFyYW1ldGVyPiB2YWx1ZXMgYXJlOgogICAgICAgIDxsaW5rIGxp bmtlbmQ9ImVuY29kZS1mb3JtYXQtYmFzZTY0Ij48bGl0ZXJhbD5iYXNlNjQ8L2xpdGVyYWw+PC9s aW5rPiwKICAgICAgICA8bGluayBsaW5rZW5kPSJlbmNvZGUtZm9ybWF0LWJhc2U2NHVybCI+PGxp dGVyYWw+YmFzZTY0dXJsPC9saXRlcmFsPjwvbGluaz4sCisgICAgICAgPGxpbmsgbGlua2VuZD0i ZW5jb2RlLWZvcm1hdC1iYXNlMzJoZXgiPjxsaXRlcmFsPmJhc2UzMmhleDwvbGl0ZXJhbD48L2xp bms+LAogICAgICAgIDxsaW5rIGxpbmtlbmQ9ImVuY29kZS1mb3JtYXQtZXNjYXBlIj48bGl0ZXJh bD5lc2NhcGU8L2xpdGVyYWw+PC9saW5rPiwKICAgICAgICA8bGluayBsaW5rZW5kPSJlbmNvZGUt Zm9ybWF0LWhleCI+PGxpdGVyYWw+aGV4PC9saXRlcmFsPjwvbGluaz4uCiAgICAgICA8L3BhcmE+ CkBAIC04MDQsNiArODA1LDMyIEBACiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJlbmNvZGUtZm9ybWF0LWJhc2UzMmhleCI+Cisg ICAgIDx0ZXJtPmJhc2UzMmhleAorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT5i YXNlMzJoZXggZm9ybWF0PC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+PC90ZXJtPgorICAg ICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGxpdGVyYWw+YmFzZTMyaGV4 PC9saXRlcmFsPiBmb3JtYXQgaXMgdGhhdCBvZgorICAgICAgIDx1bGluayB1cmw9Imh0dHBzOi8v ZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNDY0OCNzZWN0aW9uLTciPgorICAgICAg IFJGQyA0NjQ4IFNlY3Rpb24gNzwvdWxpbms+LiAgSXQgdXNlcyB0aGUgZXh0ZW5kZWQgaGV4IGFs cGhhYmV0CisgICAgICAgKDxsaXRlcmFsPjA8L2xpdGVyYWw+LTxsaXRlcmFsPjk8L2xpdGVyYWw+ IGFuZAorICAgICAgIDxsaXRlcmFsPkE8L2xpdGVyYWw+LTxsaXRlcmFsPlY8L2xpdGVyYWw+KSB3 aGljaCBwcmVzZXJ2ZXMgdGhlIGxleGljb2dyYXBoaWNhbAorICAgICAgIHNvcnQgb3JkZXIgb2Yg dGhlIGVuY29kZWQgZGF0YS4gVGhlIDxmdW5jdGlvbj5lbmNvZGU8L2Z1bmN0aW9uPiBmdW5jdGlv bgorICAgICAgIHByb2R1Y2VzIG91dHB1dCBwYWRkZWQgd2l0aCA8bGl0ZXJhbD4nPSc8L2xpdGVy YWw+LCB3aGlsZSA8ZnVuY3Rpb24+ZGVjb2RlPC9mdW5jdGlvbj4KKyAgICAgICBhY2NlcHRzIGJv dGggcGFkZGVkIGFuZCB1bnBhZGRlZCBpbnB1dC4gRGVjb2RpbmcgaXMgY2FzZS1pbnNlbnNpdGl2 ZSBhbmQgaWdub3JlcworICAgICAgIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgZm9ybWF0IGlzIHVzZWZ1bCBmb3IgZW5jb2Rp bmcgVVVJRHMgaW4gYSBjb21wYWN0LCBzb3J0YWJsZSBmb3JtYXQ6CisgICAgICAgPGxpdGVyYWw+ c3Vic3RyaW5nKGVuY29kZSh1dWlkX3ZhbHVlOjpieXRlYSwgJ2Jhc2UzMmhleCcpIEZST00gMSBG T1IgMjYpPC9saXRlcmFsPgorICAgICAgIHByb2R1Y2VzIGEgMjYtY2hhcmFjdGVyIHN0cmluZyBj b21wYXJlZCB0byB0aGUgc3RhbmRhcmQgMzYtY2hhcmFjdGVyCisgICAgICAgVVVJRCByZXByZXNl bnRhdGlvbi4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImVuY29kZS1mb3JtYXQtZXNjYXBlIj4KICAg ICAgPHRlcm0+ZXNjYXBlCiAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvZW5jb2RlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZW5jb2RlLmMKaW5k ZXggZjVmODM1ZTk0NGEuLjMzNGZhMDgwYjk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvZW5jb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2VuY29kZS5jCkBAIC02 NSw4ICs2NSw4IEBAIGJpbmFyeV9lbmNvZGUoUEdfRlVOQ1RJT05fQVJHUykKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJ CQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZW5jb2Rpbmc6IFwiJXNcIiIsIG5hbWVidWYpLAotCQkJ CSBlcnJoaW50KCJWYWxpZCBlbmNvZGluZ3MgYXJlIFwiJXNcIiwgXCIlc1wiLCBcIiVzXCIsIGFu ZCBcIiVzXCIuIiwKLQkJCQkJCSAiYmFzZTY0IiwgImJhc2U2NHVybCIsICJlc2NhcGUiLCAiaGV4 IikpKTsKKwkJCQkgZXJyaGludCgiVmFsaWQgZW5jb2RpbmdzIGFyZSBcIiVzXCIsIFwiJXNcIiwg XCIlc1wiLCBcIiVzXCIsIGFuZCBcIiVzXCIuIiwKKwkJCQkJCSAiYmFzZTY0IiwgImJhc2U2NHVy bCIsICJiYXNlMzJoZXgiLCAiZXNjYXBlIiwgImhleCIpKSk7CiAKIAlkYXRhcHRyID0gVkFSREFU QV9BTlkoZGF0YSk7CiAJZGF0YWxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKGRhdGEpOwpAQCAtMTE1 LDggKzExNSw4IEBAIGJpbmFyeV9kZWNvZGUoUEdfRlVOQ1RJT05fQVJHUykKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJ CQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZW5jb2Rpbmc6IFwiJXNcIiIsIG5hbWVidWYpLAotCQkJ CSBlcnJoaW50KCJWYWxpZCBlbmNvZGluZ3MgYXJlIFwiJXNcIiwgXCIlc1wiLCBcIiVzXCIsIGFu ZCBcIiVzXCIuIiwKLQkJCQkJCSAiYmFzZTY0IiwgImJhc2U2NHVybCIsICJlc2NhcGUiLCAiaGV4 IikpKTsKKwkJCQkgZXJyaGludCgiVmFsaWQgZW5jb2RpbmdzIGFyZSBcIiVzXCIsIFwiJXNcIiwg XCIlc1wiLCBcIiVzXCIsIGFuZCBcIiVzXCIuIiwKKwkJCQkJCSAiYmFzZTY0IiwgImJhc2U2NHVy bCIsICJiYXNlMzJoZXgiLCAiZXNjYXBlIiwgImhleCIpKSk7CiAKIAlkYXRhcHRyID0gVkFSREFU QV9BTlkoZGF0YSk7CiAJZGF0YWxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKGRhdGEpOwpAQCAtODI1 LDYgKzgyNSwxNDUgQEAgZXNjX2RlY19sZW4oY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVu KQogCXJldHVybiBsZW47CiB9CiAKKy8qCisgKiBCQVNFMzJIRVgKKyAqLworCitzdGF0aWMgY29u c3QgY2hhciBiYXNlMzJoZXhfdGFibGVbXSA9ICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFS U1RVViI7CisKK3N0YXRpYyB1aW50NjQKK2Jhc2UzMmhleF9lbmNfbGVuKGNvbnN0IGNoYXIgKnNy Yywgc2l6ZV90IHNyY2xlbikKK3sKKwkvKiA1IGJ5dGVzIGVuY29kZSB0byA4IGNoYXJhY3RlcnMs IHJvdW5kIHVwIHRvIG11bHRpcGxlIG9mIDggZm9yIHBhZGRpbmcgKi8KKwlyZXR1cm4gKCh1aW50 NjQpIHNyY2xlbiArIDQpIC8gNSAqIDg7Cit9CisKK3N0YXRpYyB1aW50NjQKK2Jhc2UzMmhleF9k ZWNfbGVuKGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbikKK3sKKwkvKiBEZWNvZGUgbGVu Z3RoIGlzIChzcmNsZW4gKiA1KSAvIDgsIGJ1dCB3ZSBtYXkgaGF2ZSBwYWRkaW5nICovCisJcmV0 dXJuICgodWludDY0KSBzcmNsZW4gKiA1KSAvIDg7Cit9CisKK3N0YXRpYyB1aW50NjQKK2Jhc2Uz MmhleF9lbmNvZGUoY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLCBjaGFyICpkc3QpCit7 CisJY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNy YzsKKwl1aW50MzIJCWJpdHNfYnVmZmVyID0gMDsKKwlpbnQJCQliaXRzX2luX2J1ZmZlciA9IDA7 CisJdWludDY0CQlvdXRwdXRfcG9zID0gMDsKKwlzaXplX3QJCWk7CisKKwlmb3IgKGkgPSAwOyBp IDwgc3JjbGVuOyBpKyspCisJeworCQkvKiBBZGQgOCBiaXRzIHRvIHRoZSBidWZmZXIgKi8KKwkJ Yml0c19idWZmZXIgPSAoYml0c19idWZmZXIgPDwgOCkgfCBkYXRhW2ldOworCQliaXRzX2luX2J1 ZmZlciArPSA4OworCisJCS8qIEV4dHJhY3QgNS1iaXQgY2h1bmtzIHdoaWxlIHdlIGhhdmUgZW5v dWdoIGJpdHMgKi8KKwkJd2hpbGUgKGJpdHNfaW5fYnVmZmVyID49IDUpCisJCXsKKwkJCWJpdHNf aW5fYnVmZmVyIC09IDU7CisJCQkvKiBFeHRyYWN0IHRvcCA1IGJpdHMgKi8KKwkJCWRzdFtvdXRw dXRfcG9zKytdID0gYmFzZTMyaGV4X3RhYmxlWyhiaXRzX2J1ZmZlciA+PiBiaXRzX2luX2J1ZmZl cikgJiAweDFGXTsKKwkJCS8qIENsZWFyIHRoZSBleHRyYWN0ZWQgYml0cyBieSBtYXNraW5nICov CisJCQliaXRzX2J1ZmZlciAmPSAoKDFVIDw8IGJpdHNfaW5fYnVmZmVyKSAtIDEpOworCQl9CisJ fQorCisJLyogSGFuZGxlIHJlbWFpbmluZyBiaXRzIChpZiBhbnkpICovCisJaWYgKGJpdHNfaW5f YnVmZmVyID4gMCkKKwkJZHN0W291dHB1dF9wb3MrK10gPSBiYXNlMzJoZXhfdGFibGVbKGJpdHNf YnVmZmVyIDw8ICg1IC0gYml0c19pbl9idWZmZXIpKSAmIDB4MUZdOworCisJLyogQWRkIHBhZGRp bmcgdG8gbWFrZSBsZW5ndGggYSBtdWx0aXBsZSBvZiA4IChwZXIgUkZDIDQ2NDgpICovCisJd2hp bGUgKG91dHB1dF9wb3MgJSA4ICE9IDApCisJCWRzdFtvdXRwdXRfcG9zKytdID0gJz0nOworCisJ cmV0dXJuIG91dHB1dF9wb3M7Cit9CisKK3N0YXRpYyB1aW50NjQKK2Jhc2UzMmhleF9kZWNvZGUo Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuLCBjaGFyICpkc3QpCit7CisJY29uc3QgY2hh ciAqc3JjZW5kID0gc3JjICsgc3JjbGVuLAorCQkJICAgKnMgPSBzcmM7CisJdWludDMyCQliaXRz X2J1ZmZlciA9IDA7CisJaW50CQkJYml0c19pbl9idWZmZXIgPSAwOworCXVpbnQ2NAkJb3V0cHV0 X3BvcyA9IDA7CisJaW50CQkJcG9zID0gMDsJCS8qIHBvc2l0aW9uIHdpdGhpbiA4LWNoYXJhY3Rl ciBncm91cCAoMC03KSAqLworCWJvb2wJCWVuZCA9IGZhbHNlOwkvKiBoYXZlIHdlIHNlZW4gcGFk ZGluZz8gKi8KKworCXdoaWxlIChzIDwgc3JjZW5kKQorCXsKKwkJY2hhcgkJYyA9ICpzKys7CisJ CWludAkJCXZhbDsKKworCQkvKiBTa2lwIHdoaXRlc3BhY2UgKi8KKwkJaWYgKGMgPT0gJyAnIHx8 IGMgPT0gJ1x0JyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInKQorCQkJY29udGludWU7CisKKwkJ aWYgKGMgPT0gJz0nKQorCQl7CisJCQkvKgorCQkJICogVGhlIGZpcnN0IHBhZGRpbmcgaXMgb25s eSB2YWxpZCBhdCBwb3NpdGlvbnMgMiwgNCwgNSwgb3IgNworCQkJICogd2l0aGluIGFuIDgtY2hh cmFjdGVyIGdyb3VwIChjb3JyZXNwb25kaW5nIHRvIDEsIDIsIDMsIG9yIDQKKwkJCSAqIGlucHV0 IGJ5dGVzKS4gV2Ugb25seSBjaGVjayB0aGUgcG9zaXRpb24gZm9yIHRoZSBmaXJzdCAnPScKKwkJ CSAqIGNoYXJhY3Rlci4KKwkJCSAqLworCQkJaWYgKCFlbmQpCisJCQl7CisJCQkJaWYgKHBvcyAh PSAyICYmIHBvcyAhPSA0ICYmIHBvcyAhPSA1ICYmIHBvcyAhPSA3KQorCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCQkJCSBlcnJtc2coInVuZXhwZWN0ZWQgXCI9XCIgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4 IHNlcXVlbmNlIikpKTsKKwkJCQllbmQgPSB0cnVlOworCQkJfQorCQkJcG9zKys7CisJCQljb250 aW51ZTsKKwkJfQorCisJCS8qIE5vIGRhdGEgY2hhcmFjdGVycyBhbGxvd2VkIGFmdGVyIHBhZGRp bmcgKi8KKwkJaWYgKGVuZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIHN5bWJv bCBcIiUuKnNcIiBmb3VuZCB3aGlsZSBkZWNvZGluZyBiYXNlMzJoZXggc2VxdWVuY2UiLAorCQkJ CQkJCXBnX21ibGVuX3JhbmdlKHMgLSAxLCBzcmNlbmQpLCBzIC0gMSkpKTsKKworCQkvKiBEZWNv ZGUgYmFzZTMyaGV4IGNoYXJhY3RlciAoMC05LCBBLVYsIGNhc2UtaW5zZW5zaXRpdmUpICovCisJ CWlmIChjID49ICcwJyAmJiBjIDw9ICc5JykKKwkJCXZhbCA9IGMgLSAnMCc7CisJCWVsc2UgaWYg KGMgPj0gJ0EnICYmIGMgPD0gJ1YnKQorCQkJdmFsID0gYyAtICdBJyArIDEwOworCQllbHNlIGlm IChjID49ICdhJyAmJiBjIDw9ICd2JykKKwkJCXZhbCA9IGMgLSAnYScgKyAxMDsKKwkJZWxzZQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCisJCQkJCSBlcnJtc2coImludmFsaWQgc3ltYm9sIFwiJS4qc1wiIGZvdW5kIHdo aWxlIGRlY29kaW5nIGJhc2UzMmhleCBzZXF1ZW5jZSIsCisJCQkJCQkJcGdfbWJsZW5fcmFuZ2Uo cyAtIDEsIHNyY2VuZCksIHMgLSAxKSkpOworCisJCS8qIEFkZCA1IGJpdHMgdG8gYnVmZmVyICov CisJCWJpdHNfYnVmZmVyID0gKGJpdHNfYnVmZmVyIDw8IDUpIHwgdmFsOworCQliaXRzX2luX2J1 ZmZlciArPSA1OworCQlwb3MrKzsKKworCQkvKiBFeHRyYWN0IDgtYml0IGJ5dGVzIHdoZW4gd2Ug aGF2ZSBlbm91Z2ggYml0cyAqLworCQl3aGlsZSAoYml0c19pbl9idWZmZXIgPj0gOCkKKwkJewor CQkJYml0c19pbl9idWZmZXIgLT0gODsKKwkJCWRzdFtvdXRwdXRfcG9zKytdID0gKHVuc2lnbmVk IGNoYXIpIChiaXRzX2J1ZmZlciA+PiBiaXRzX2luX2J1ZmZlcik7CisJCQkvKiBDbGVhciB0aGUg ZXh0cmFjdGVkIGJpdHMgKi8KKwkJCWJpdHNfYnVmZmVyICY9ICgoMVUgPDwgYml0c19pbl9idWZm ZXIpIC0gMSk7CisJCX0KKworCQkvKiBSZXNldCBwb3NpdGlvbiBhZnRlciBlYWNoIGNvbXBsZXRl IDgtY2hhcmFjdGVyIGdyb3VwICovCisJCWlmIChwb3MgPT0gOCkKKwkJCXBvcyA9IDA7CisJfQor CisJcmV0dXJuIG91dHB1dF9wb3M7Cit9CisKIC8qCiAgKiBDb21tb24KICAqLwpAQCAtODU0LDYg Kzk5MywxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAJCQlwZ19iYXNlNjR1cmxfZW5jX2xlbiwg cGdfYmFzZTY0dXJsX2RlY19sZW4sIHBnX2Jhc2U2NHVybF9lbmNvZGUsIHBnX2Jhc2U2NHVybF9k ZWNvZGUKIAkJfQogCX0sCisJeworCQkiYmFzZTMyaGV4IiwKKwkJeworCQkJYmFzZTMyaGV4X2Vu Y19sZW4sIGJhc2UzMmhleF9kZWNfbGVuLCBiYXNlMzJoZXhfZW5jb2RlLCBiYXNlMzJoZXhfZGVj b2RlCisJCX0KKwl9LAogCXsKIAkJImVzY2FwZSIsCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RyaW5ncy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N0cmluZ3Mub3V0CmluZGV4IGYzODY4OGI1YzM3Li41OWM0NjNhZTUxNCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdHJpbmdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3N0cmluZ3Mub3V0CkBAIC0yNjAwLDE0ICsyNjAwLDE0MSBAQCBTRUxFQ1Qg ZGVjb2RlKGVuY29kZSgnXHgxMjM0NTY3ODkwYWJjZGVmMDAnLCAnZXNjYXBlJyksICdlc2NhcGUn KTsKIC0tIHJlcG9ydCBhbiBlcnJvciB3aXRoIGEgaGludCBsaXN0aW5nIHZhbGlkIGVuY29kaW5n cyB3aGVuIGFuIGludmFsaWQgZW5jb2RpbmcgaXMgc3BlY2lmaWVkCiBTRUxFQ1QgZW5jb2RlKCdc eDAxJzo6Ynl0ZWEsICdpbnZhbGlkJyk7ICAtLSBlcnJvcgogRVJST1I6ICB1bnJlY29nbml6ZWQg ZW5jb2Rpbmc6ICJpbnZhbGlkIgotSElOVDogIFZhbGlkIGVuY29kaW5ncyBhcmUgImJhc2U2NCIs ICJiYXNlNjR1cmwiLCAiZXNjYXBlIiwgYW5kICJoZXgiLgorSElOVDogIFZhbGlkIGVuY29kaW5n cyBhcmUgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiYmFzZTMyaGV4IiwgImVzY2FwZSIsIGFuZCAi aGV4Ii4KIFNFTEVDVCBkZWNvZGUoJzAwJywgJ2ludmFsaWQnKTsgICAgICAgICAgIC0tIGVycm9y CiBFUlJPUjogIHVucmVjb2duaXplZCBlbmNvZGluZzogImludmFsaWQiCi1ISU5UOiAgVmFsaWQg ZW5jb2RpbmdzIGFyZSAiYmFzZTY0IiwgImJhc2U2NHVybCIsICJlc2NhcGUiLCBhbmQgImhleCIu CitISU5UOiAgVmFsaWQgZW5jb2RpbmdzIGFyZSAiYmFzZTY0IiwgImJhc2U2NHVybCIsICJiYXNl MzJoZXgiLCAiZXNjYXBlIiwgYW5kICJoZXgiLgogLS0KLS0tIGJhc2U2NHVybCBlbmNvZGluZy9k ZWNvZGluZworLS0gYmFzZTMyaGV4IGVuY29kaW5nL2RlY29kaW5nCiAtLQogU0VUIGJ5dGVhX291 dHB1dCBUTyBoZXg7CitTRUxFQ1QgZW5jb2RlKCcnLCAnYmFzZTMyaGV4Jyk7ICAtLSAnJworIGVu Y29kZSAKKy0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBlbmNvZGUoJ1x4MTEnLCAnYmFz ZTMyaGV4Jyk7ICAtLSAnMjQ9PT09PT0nCisgIGVuY29kZSAgCistLS0tLS0tLS0tCisgMjQ9PT09 PT0KKygxIHJvdykKKworU0VMRUNUIGVuY29kZSgnXHgxMTIyJywgJ2Jhc2UzMmhleCcpOyAgLS0g JzI0SDA9PT09JworICBlbmNvZGUgIAorLS0tLS0tLS0tLQorIDI0SDA9PT09CisoMSByb3cpCisK K1NFTEVDVCBlbmNvZGUoJ1x4MTEyMjMzJywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2PT09Jwor ICBlbmNvZGUgIAorLS0tLS0tLS0tLQorIDI0SDM2PT09CisoMSByb3cpCisKK1NFTEVDVCBlbmNv ZGUoJ1x4MTEyMjMzNDQnLCAnYmFzZTMyaGV4Jyk7ICAtLSAnMjRIMzZIMD0nCisgIGVuY29kZSAg CistLS0tLS0tLS0tCisgMjRIMzZIMD0KKygxIHJvdykKKworU0VMRUNUIGVuY29kZSgnXHgxMTIy MzM0NDU1JywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2SDJMJworICBlbmNvZGUgIAorLS0tLS0t LS0tLQorIDI0SDM2SDJMCisoMSByb3cpCisKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMjMzNDQ1NTY2 JywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2SDJMQ089PT09PT0nCisgICAgICBlbmNvZGUgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDI0SDM2SDJMQ089PT09PT0KKygxIHJvdykKKworU0VM RUNUIGRlY29kZSgnJywgJ2Jhc2UzMmhleCcpOyAgLS0gJycKKyBkZWNvZGUgCistLS0tLS0tLQor IFx4CisoMSByb3cpCisKK1NFTEVDVCBkZWNvZGUoJzI0PT09PT09JywgJ2Jhc2UzMmhleCcpOyAg LS0gXHgxMQorIGRlY29kZSAKKy0tLS0tLS0tCisgXHgxMQorKDEgcm93KQorCitTRUxFQ1QgZGVj b2RlKCcyNEgwPT09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMgorIGRlY29kZSAKKy0tLS0t LS0tCisgXHgxMTIyCisoMSByb3cpCisKK1NFTEVDVCBkZWNvZGUoJzI0SDM2PT09JywgJ2Jhc2Uz MmhleCcpOyAgLS0gXHgxMTIyMzMKKyAgZGVjb2RlICAKKy0tLS0tLS0tLS0KKyBceDExMjIzMwor KDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgwPScsICdiYXNlMzJoZXgnKTsgIC0tIFx4 MTEyMjMzNDQKKyAgIGRlY29kZSAgIAorLS0tLS0tLS0tLS0tCisgXHgxMTIyMzM0NAorKDEgcm93 KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgyTCcsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMz NDQ1NQorICAgIGRlY29kZSAgICAKKy0tLS0tLS0tLS0tLS0tCisgXHgxMTIyMzM0NDU1CisoMSBy b3cpCisKK1NFTEVDVCBkZWNvZGUoJzI0SDM2SDJMQ089PT09PT0nLCAnYmFzZTMyaGV4Jyk7ICAt LSBceDExMjIzMzQ0NTU2NgorICAgICBkZWNvZGUgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFx4 MTEyMjMzNDQ1NTY2CisoMSByb3cpCisKK1NFTEVDVCBkZWNvZGUoJzI0JywgJ2Jhc2UzMmhleCcp OyAgLS0gT0ssIHBhZGRpbmcgYD1gIGFyZSBvcHRpb25hbAorIGRlY29kZSAKKy0tLS0tLS0tCisg XHgxMQorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcxMT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBP Sywgbm9uLXplcm8gcGFkZGluZyBiaXRzIGFyZSBhY2NlcHRlZCAoY29uc2lzdGVudCB3aXRoIGJh c2U2NCkKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4MDgKKygxIHJvdykKKworU0VMRUNUIGRlY29k ZSgnMjRoMzZoMmxjbycsICdiYXNlMzJoZXgnKTsgIC0tIE9LLCB0aGUgZW5jb2RpbmcgaXMgY2Fz ZS1pbnNlbnNpdGl2ZQorICAgICBkZWNvZGUgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFx4MTEy MjMzNDQ1NTY2CisoMSByb3cpCisKK1NFTEVDVCBkZWNvZGUoJz0nLCAnYmFzZTMyaGV4Jyk7ICAt LSBlcnJvcgorRVJST1I6ICB1bmV4cGVjdGVkICI9IiB3aGlsZSBkZWNvZGluZyBiYXNlMzJoZXgg c2VxdWVuY2UKK1NFTEVDVCBkZWNvZGUoJ1cnLCAnYmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgorRVJS T1I6ICBpbnZhbGlkIHN5bWJvbCAiVyIgZm91bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNl cXVlbmNlCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgwPTI0JywgJ2Jhc2UzMmhleCcpOyAtLSBlcnJv cgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAiMiIgZm91bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMy aGV4IHNlcXVlbmNlCistLSBDaGVjayByb3VuZC10cmlwIGNhcGFiaWxpdHkgb2YgYmFzZTMyaGV4 IGVuY29kaW5nIGZvciBtdWx0aXBsZSByYW5kb20gVVVJRHMuCitETyAkJAorREVDTEFSRQorICB2 MSB1dWlkOworICB2MiB1dWlkOworQkVHSU4KKyAgRk9SIGkgSU4gMS4uMTAgTE9PUAorICAgIHYx IDo9IGdlbl9yYW5kb21fdXVpZCgpOworICAgIHYyIDo9IGRlY29kZShlbmNvZGUodjE6OmJ5dGVh LCAnYmFzZTMyaGV4JyksICdiYXNlMzJoZXgnKTo6dXVpZDsKKworICAgIElGIHYxICE9IHYyIFRI RU4KKyAgICAgIFJBSVNFIE5PVElDRSAnYmFzZTMyaGV4IGVuY29kaW5nIHJvdW5kLXRyaXAgZmFp bGVkLCBleHBlY3RlZCAlIGdvdCAlJywgdjEsIHYyOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7 CitFTkQ7CiskJDsKKy0tCistLSBiYXNlNjR1cmwgZW5jb2RpbmcvZGVjb2RpbmcKKy0tCiAtLSBT aW1wbGUgZW5jb2RpbmcvZGVjb2RpbmcKIFNFTEVDVCBlbmNvZGUoJ1x4NjliNzNlZmYnLCAnYmFz ZTY0dXJsJyk7ICAtLSBhYmMtX3cKICBlbmNvZGUgCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3V1aWQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91 dAppbmRleCBkMTU3ZWY3ZDBiMy4uMTQyYzUyOWU2OTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 dWlkLm91dApAQCAtMTMsNyArMTMsOCBAQCBDUkVBVEUgVEFCTEUgZ3VpZDIKIENSRUFURSBUQUJM RSBndWlkMwogKAogCWlkIFNFUklBTCwKLQlndWlkX2ZpZWxkIFVVSUQKKwlndWlkX2ZpZWxkIFVV SUQsCisJZ3VpZF9lbmNvZGVkIHRleHQgR0VORVJBVEVEIEFMV0FZUyBBUyAoZW5jb2RlKGd1aWRf ZmllbGQ6OmJ5dGVhLCAnYmFzZTMyaGV4JykpIFNUT1JFRAogKTsKIC0tIGluc2VydGluZyBpbnZh bGlkIGRhdGEgdGVzdHMKIC0tIHRvbyBsb25nCkBAIC0yMjYsMTEgKzIyNywyMCBAQCBTRUxFQ1Qg Y291bnQoRElTVElOQ1QgZ3VpZF9maWVsZCkgRlJPTSBndWlkMTsKICgxIHJvdykKIAogLS0gdGVz dCBzb3J0YWJpbGl0eSBvZiB2NworSU5TRVJUIElOVE8gZ3VpZDMgKGd1aWRfZmllbGQpIFZBTFVF UyAoJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCc6OnV1aWQpOwogSU5TRVJU IElOVE8gZ3VpZDMgKGd1aWRfZmllbGQpIFNFTEVDVCB1dWlkdjcoKSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMCk7CitJTlNFUlQgSU5UTyBndWlkMyAoZ3VpZF9maWVsZCkgVkFMVUVTICgnZmZm ZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZmJzo6dXVpZCk7CiBTRUxFQ1QgYXJyYXlf YWdnKGlkIE9SREVSIEJZIGd1aWRfZmllbGQpIEZST00gZ3VpZDM7Ci0gICAgICAgYXJyYXlfYWdn ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHsxLDIsMyw0LDUsNiw3LDgsOSwx MH0KKyAgICAgICAgICBhcnJheV9hZ2cgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgezEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfQorKDEgcm93KQorCistLSBt YWtlIHN1cmUgYmFzZTMyaGV4IGVuY29kaW5nIHdvcmtzIHdpdGggVVVJRHMgYW5kIHByZXNlcnZl cyBvcmRlcmluZworU0VMRUNUIGFycmF5X2FnZyhpZCBPUkRFUiBCWSBndWlkX2VuY29kZWQpIEZS T00gZ3VpZDM7CisgICAgICAgICAgYXJyYXlfYWdnICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMn0KICgxIHJvdykK IAogLS0gQ2hlY2sgdGhlIHRpbWVzdGFtcCBvZmZzZXRzIGZvciB2Ny4KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0cmluZ3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Ry aW5ncy5zcWwKaW5kZXggZDhhMDk3Mzc2NjguLmRlYzJiZDdjNWU4IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdHJpbmdzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z dHJpbmdzLnNxbApAQCAtODM1LDEwICs4MzUsNTUgQEAgU0VMRUNUIGVuY29kZSgnXHgwMSc6OmJ5 dGVhLCAnaW52YWxpZCcpOyAgLS0gZXJyb3IKIFNFTEVDVCBkZWNvZGUoJzAwJywgJ2ludmFsaWQn KTsgICAgICAgICAgIC0tIGVycm9yCiAKIC0tCi0tLSBiYXNlNjR1cmwgZW5jb2RpbmcvZGVjb2Rp bmcKKy0tIGJhc2UzMmhleCBlbmNvZGluZy9kZWNvZGluZwogLS0KIFNFVCBieXRlYV9vdXRwdXQg VE8gaGV4OwogCitTRUxFQ1QgZW5jb2RlKCcnLCAnYmFzZTMyaGV4Jyk7ICAtLSAnJworU0VMRUNU IGVuY29kZSgnXHgxMScsICdiYXNlMzJoZXgnKTsgIC0tICcyND09PT09PScKK1NFTEVDVCBlbmNv ZGUoJ1x4MTEyMicsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgwPT09PScKK1NFTEVDVCBlbmNvZGUo J1x4MTEyMjMzJywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2PT09JworU0VMRUNUIGVuY29kZSgn XHgxMTIyMzM0NCcsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgwPScKK1NFTEVDVCBlbmNvZGUo J1x4MTEyMjMzNDQ1NScsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgyTCcKK1NFTEVDVCBlbmNv ZGUoJ1x4MTEyMjMzNDQ1NTY2JywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2SDJMQ089PT09PT0n CisKK1NFTEVDVCBkZWNvZGUoJycsICdiYXNlMzJoZXgnKTsgIC0tICcnCitTRUxFQ1QgZGVjb2Rl KCcyND09PT09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEKK1NFTEVDVCBkZWNvZGUoJzI0SDA9 PT09JywgJ2Jhc2UzMmhleCcpOyAgLS0gXHgxMTIyCitTRUxFQ1QgZGVjb2RlKCcyNEgzNj09PScs ICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgwPScsICdi YXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzNDQKK1NFTEVDVCBkZWNvZGUoJzI0SDM2SDJMJywgJ2Jh c2UzMmhleCcpOyAgLS0gXHgxMTIyMzM0NDU1CitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgyTENPPT09 PT09JywgJ2Jhc2UzMmhleCcpOyAgLS0gXHgxMTIyMzM0NDU1NjYKKworU0VMRUNUIGRlY29kZSgn MjQnLCAnYmFzZTMyaGV4Jyk7ICAtLSBPSywgcGFkZGluZyBgPWAgYXJlIG9wdGlvbmFsCitTRUxF Q1QgZGVjb2RlKCcxMT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBPSywgbm9uLXplcm8gcGFkZGluZyBi aXRzIGFyZSBhY2NlcHRlZCAoY29uc2lzdGVudCB3aXRoIGJhc2U2NCkKK1NFTEVDVCBkZWNvZGUo JzI0aDM2aDJsY28nLCAnYmFzZTMyaGV4Jyk7ICAtLSBPSywgdGhlIGVuY29kaW5nIGlzIGNhc2Ut aW5zZW5zaXRpdmUKK1NFTEVDVCBkZWNvZGUoJz0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgor U0VMRUNUIGRlY29kZSgnVycsICdiYXNlMzJoZXgnKTsgIC0tIGVycm9yCitTRUxFQ1QgZGVjb2Rl KCcyNEgzNkgwPTI0JywgJ2Jhc2UzMmhleCcpOyAtLSBlcnJvcgorCistLSBDaGVjayByb3VuZC10 cmlwIGNhcGFiaWxpdHkgb2YgYmFzZTMyaGV4IGVuY29kaW5nIGZvciBtdWx0aXBsZSByYW5kb20g VVVJRHMuCitETyAkJAorREVDTEFSRQorICB2MSB1dWlkOworICB2MiB1dWlkOworQkVHSU4KKyAg Rk9SIGkgSU4gMS4uMTAgTE9PUAorICAgIHYxIDo9IGdlbl9yYW5kb21fdXVpZCgpOworICAgIHYy IDo9IGRlY29kZShlbmNvZGUodjE6OmJ5dGVhLCAnYmFzZTMyaGV4JyksICdiYXNlMzJoZXgnKTo6 dXVpZDsKKworICAgIElGIHYxICE9IHYyIFRIRU4KKyAgICAgIFJBSVNFIE5PVElDRSAnYmFzZTMy aGV4IGVuY29kaW5nIHJvdW5kLXRyaXAgZmFpbGVkLCBleHBlY3RlZCAlIGdvdCAlJywgdjEsIHYy OworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7CitFTkQ7CiskJDsKKworCistLQorLS0gYmFzZTY0 dXJsIGVuY29kaW5nL2RlY29kaW5nCistLQorCiAtLSBTaW1wbGUgZW5jb2RpbmcvZGVjb2RpbmcK IFNFTEVDVCBlbmNvZGUoJ1x4NjliNzNlZmYnLCAnYmFzZTY0dXJsJyk7ICAtLSBhYmMtX3cKIFNF TEVDVCBkZWNvZGUoJ2FiYy1fdycsICdiYXNlNjR1cmwnKTsgICAgICAtLSBceDY5YjczZWZmCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3V1aWQuc3FsCmluZGV4IGY1MTJmNGRlYTFkLi5mMmZmMDBmNWRkZCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvdXVpZC5zcWwKQEAgLTEzLDcgKzEzLDggQEAgQ1JFQVRFIFRBQkxFIGd1aWQyCiBDUkVBVEUg VEFCTEUgZ3VpZDMKICgKIAlpZCBTRVJJQUwsCi0JZ3VpZF9maWVsZCBVVUlECisJZ3VpZF9maWVs ZCBVVUlELAorCWd1aWRfZW5jb2RlZCB0ZXh0IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGVuY29kZShn dWlkX2ZpZWxkOjpieXRlYSwgJ2Jhc2UzMmhleCcpKSBTVE9SRUQKICk7CiAKIC0tIGluc2VydGlu ZyBpbnZhbGlkIGRhdGEgdGVzdHMKQEAgLTExNiw5ICsxMTcsMTQgQEAgSU5TRVJUIElOVE8gZ3Vp ZDEgKGd1aWRfZmllbGQpIFZBTFVFUyAodXVpZHY3KElOVEVSVkFMICcxIGRheScpKTsKIFNFTEVD VCBjb3VudChESVNUSU5DVCBndWlkX2ZpZWxkKSBGUk9NIGd1aWQxOwogCiAtLSB0ZXN0IHNvcnRh YmlsaXR5IG9mIHY3CitJTlNFUlQgSU5UTyBndWlkMyAoZ3VpZF9maWVsZCkgVkFMVUVTICgnMDAw MDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJzo6dXVpZCk7CiBJTlNFUlQgSU5UTyBn dWlkMyAoZ3VpZF9maWVsZCkgU0VMRUNUIHV1aWR2NygpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwKTsKK0lOU0VSVCBJTlRPIGd1aWQzIChndWlkX2ZpZWxkKSBWQUxVRVMgKCdmZmZmZmZmZi1m ZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYnOjp1dWlkKTsKIFNFTEVDVCBhcnJheV9hZ2coaWQg T1JERVIgQlkgZ3VpZF9maWVsZCkgRlJPTSBndWlkMzsKIAorLS0gbWFrZSBzdXJlIGJhc2UzMmhl eCBlbmNvZGluZyB3b3JrcyB3aXRoIFVVSURzIGFuZCBwcmVzZXJ2ZXMgb3JkZXJpbmcKK1NFTEVD VCBhcnJheV9hZ2coaWQgT1JERVIgQlkgZ3VpZF9lbmNvZGVkKSBGUk9NIGd1aWQzOworCiAtLSBD aGVjayB0aGUgdGltZXN0YW1wIG9mZnNldHMgZm9yIHY3LgogLS0KIC0tIGdlbmVyYXRlIFVVSUR2 NyB2YWx1ZXMgd2l0aCB0aW1lc3RhbXBzIHJhbmdpbmcgZnJvbSAxOTcwICh0aGUgVW5peCBlcG9j aCB5ZWFyKQotLSAKMi41My4wCgo= --000000000000244065064dbaec90--