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 1pjPFy-0005P2-Fx for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Apr 2023 18:50:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pjPFx-00060w-An for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Apr 2023 18:50:17 +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 1pjPFw-00060n-Ro for pgsql-hackers@lists.postgresql.org; Mon, 03 Apr 2023 18:50:17 +0000 Received: from mail-yw1-x1129.google.com ([2607:f8b0:4864:20::1129]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pjPFs-0006tS-HU for pgsql-hackers@lists.postgresql.org; Mon, 03 Apr 2023 18:50:15 +0000 Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-545e907790fso454348457b3.3 for ; Mon, 03 Apr 2023 11:50:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680547811; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2iuFMW5lpt0exBHKkwA5+q2FGdA92gQL5knaxB2K/Ck=; b=TFXdq6F7BjH9rvG5HPMX484ObjK1EfgyXIe1aeJODNv3eCJ0OMYAdcVlPHucilqmRi z7CksldbQUsY4T0Vr3U43DGDsTR05Jp7ejXwTnjHrZFZJSO+wgQ7IRiaSH6rdBAPGNbl CwC+ksfpjisInzT4Pnicu2Z65goHWNqSd9AW1A4IEogE/E6wcDDDhwk/d5jKL04qXFMq EAsocWx9edExYuyOHh8JIEwMTETusDYOk7y5OwqjEwVGJEuJ1lGKv1Ud8smiKAd0V8ce c7MvtltJhokA6DRZOkEfhLo4xFyhmkvM3d7kQYGo7ETFIDe0dUoukOY1+LTgPGBrgon+ 6kwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680547811; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2iuFMW5lpt0exBHKkwA5+q2FGdA92gQL5knaxB2K/Ck=; b=P8+9XpfQcYYYliWgHImop9E2rdXzuzkQ4Q7HLihFxIX8kAbNOFs7aGWhilFJBEWsBD zgIY3AMeAqMvVzBsVc519J1p5XUdR9WOjGCsIEh/0kJEjyRvgGEvrX15EzKAIWasyvr8 2XeyehOEw8M3kxc0oG+UN06MAON2iDHvsiSwupwIG7RtJ8Zc9emDXirbvp4NK3UvyvYj cA7IB6UEGa3UYjX3gsn0EiV8oh5l3jZKXI49ukuH0i6XON4S43KHmyefWGSiDC7q0iLq 008rlA3DK0JqEzcGBdEbixbkCwE+hXmRL0QKazk4HvKyRfALGX8/dyyQj1oT7D283mjU /o8g== X-Gm-Message-State: AAQBX9c6G+9YFkoFlpQjBTCuEYlBBF20V4wgb5avDjA9YyEQKKk3lTS0 u/x9/VPYLOeaA9MXubNBw+I13bCtqu8FEF+HkI6YCMF8h1c= X-Google-Smtp-Source: AKy350Ymid2alVTvOeER9N1CY93X9MRsYJzSJzwd+3DO4rRFLLYUKke84CREPLqWvph1dhYmgHOKFxepe+RYxCVqESA= X-Received: by 2002:a81:4321:0:b0:549:17fe:17c5 with SMTP id q33-20020a814321000000b0054917fe17c5mr2844868ywa.9.1680547811644; Mon, 03 Apr 2023 11:50:11 -0700 (PDT) MIME-Version: 1.0 References: <20230208063316.atjv6uxb7owm77s6@jrouhaud> <1244928.1680543451@sss.pgh.pa.us> In-Reply-To: <1244928.1680543451@sss.pgh.pa.us> From: Pavel Stehule Date: Mon, 3 Apr 2023 20:49:35 +0200 Message-ID: Subject: Re: possible proposal plpgsql GET DIAGNOSTICS oid = PG_ROUTINE_OID To: Tom Lane Cc: Kirk Wolak , Julien Rouhaud , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000057a8e105f8730788" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000057a8e105f8730788 Content-Type: multipart/alternative; boundary="00000000000057a8df05f8730786" --00000000000057a8df05f8730786 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi po 3. 4. 2023 v 19:37 odes=C3=ADlatel Tom Lane napsal: > Pavel Stehule writes: > > po 27. 3. 2023 v 5:36 odes=C3=ADlatel Kirk Wolak nap= sal: > >> I have marked the item Ready for Commiter... > > > Thank you for doc and for review > > I'm kind of surprised there was any interest in this proposal at all, > TBH, but apparently there is some. Still, I think you over-engineered > it by doing more than the original proposal of making the function OID > available. The other things can be had by casting the OID to regproc > or regprocedure, so I'd be inclined to add just one new keyword not > three. Besides, your implementation is a bit inconsistent: relying > on fn_signature could return a result that is stale or doesn't conform > to the current search_path. > ok There is reduced patch + regress tests Regards Pavel > regards, tom lane > --00000000000057a8df05f8730786 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi


po 3. 4. 2023 v=C2=A019:37 odes=C3= =ADlatel Tom Lane <tgl@sss.pgh.pa.us> napsal:
Pavel Stehule <pavel.stehule@gmail.com> writes:
> po 27. 3. 2023 v 5:36 odes=C3=ADlatel Kirk Wolak <wolakk@gmail.com> napsal:
>> I have marked the item Ready for Commiter...

> Thank you for doc and for review

I'm kind of surprised there was any interest in this proposal at all, TBH, but apparently there is some.=C2=A0 Still, I think you over-engineered=
it by doing more than the original proposal of making the function OID
available.=C2=A0 The other things can be had by casting the OID to regproc<= br> or regprocedure, so I'd be inclined to add just one new keyword not
three.=C2=A0 Besides, your implementation is a bit inconsistent: relying on fn_signature could return a result that is stale or doesn't conform<= br> to the current search_path.

ok

There is reduced patch=C2=A0+ regress tests

=
Regards

Pavel

<= div>

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 regards, tom lane
--00000000000057a8df05f8730786-- --00000000000057a8e105f8730788 Content-Type: text/x-patch; charset="US-ASCII"; name="plpgsql-get-routine-oid.patch" Content-Disposition: attachment; filename="plpgsql-get-routine-oid.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lg16qv480 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGxw Z3NxbC5zZ21sCmluZGV4IDdjOGE0OWZlNDMuLjRkZjFiNzE5MDQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9wbHBnc3FsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbApAQCAt MTYzOSw2ICsxNjM5LDExIEBAIEdFVCBESUFHTk9TVElDUyBpbnRlZ2VyX3ZhciA9IFJPV19DT1VO VDsKICAgICAgICAgIDxlbnRyeT5saW5lKHMpIG9mIHRleHQgZGVzY3JpYmluZyB0aGUgY3VycmVu dCBjYWxsIHN0YWNrCiAgICAgICAgICAgKHNlZSA8eHJlZiBsaW5rZW5kPSJwbHBnc3FsLWNhbGwt c3RhY2siLz4pPC9lbnRyeT4KICAgICAgICAgPC9yb3c+CisgICAgICAgIDxyb3c+CisgICAgICAg ICA8ZW50cnk+PGxpdGVyYWw+UEdfQ1VSUkVOVF9ST1VUSU5FX09JRDwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwvdHlwZT48L2VudHJ5PgorICAgICAgICAgPGVu dHJ5Pm9pZCBvZiB0aGUgZnVuY3Rpb24gY3VycmVudGx5IHJ1bm5pbmc8L2VudHJ5PgorICAgICAg ICA8L3Jvdz4KICAgICAgICA8L3Rib2R5PgogICAgICAgPC90Z3JvdXA+CiAgICAgIDwvdGFibGU+ CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdz cWwvc3JjL3BsX2V4ZWMuYwppbmRleCBiMGEyY2FjMjI3Li5lZDlkMjYyNThiIDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9w bF9leGVjLmMKQEAgLTI0NzUsNiArMjQ3NSwxMiBAQCBleGVjX3N0bXRfZ2V0ZGlhZyhQTHBnU1FM X2V4ZWNzdGF0ZSAqZXN0YXRlLCBQTHBnU1FMX3N0bXRfZ2V0ZGlhZyAqc3RtdCkKIAkJCQl9CiAJ CQkJYnJlYWs7CiAKKwkJCWNhc2UgUExQR1NRTF9HRVRESUFHX0NVUlJFTlRfUk9VVElORV9PSUQ6 CisJCQkJZXhlY19hc3NpZ25fdmFsdWUoZXN0YXRlLCB2YXIsCisJCQkJCQkJCSAgT2JqZWN0SWRH ZXREYXR1bShlc3RhdGUtPmZ1bmMtPmZuX29pZCksCisJCQkJCQkJCSAgZmFsc2UsIE9JRE9JRCwg LTEpOworCQkJCSAgYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBkaWFnbm9zdGljIGl0ZW0ga2luZDogJWQiLAogCQkJCQkgZGlhZ19pdGVtLT5raW5k KTsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9mdW5jcy5jIGIvc3JjL3BsL3Bs cGdzcWwvc3JjL3BsX2Z1bmNzLmMKaW5kZXggNWE2ZWFkY2NkNS4uNGViZjM5MzY0NiAxMDA2NDQK LS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2Z1bmNzLmMKKysrIGIvc3JjL3BsL3BscGdzcWwv c3JjL3BsX2Z1bmNzLmMKQEAgLTMyNSw2ICszMjUsOCBAQCBwbHBnc3FsX2dldGRpYWdfa2luZG5h bWUoUExwZ1NRTF9nZXRkaWFnX2tpbmQga2luZCkKIAkJCXJldHVybiAiVEFCTEVfTkFNRSI7CiAJ CWNhc2UgUExQR1NRTF9HRVRESUFHX1NDSEVNQV9OQU1FOgogCQkJcmV0dXJuICJTQ0hFTUFfTkFN RSI7CisJCWNhc2UgUExQR1NRTF9HRVRESUFHX0NVUlJFTlRfUk9VVElORV9PSUQ6CisJCQlyZXR1 cm4gIlBHX0NVUlJFTlRfUk9VVElORV9PSUQiOwogCX0KIAogCXJldHVybiAidW5rbm93biI7CmRp ZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55IGIvc3JjL3BsL3BscGdzcWwv c3JjL3BsX2dyYW0ueQppbmRleCBlZGViNzJjMzgwLi42ZTgxY2Y3NzRkIDEwMDY0NAotLS0gYS9z cmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9n cmFtLnkKQEAgLTMxOCw2ICszMTgsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFt ZXRlcnMoUExwZ1NRTF9zdG10X3JhaXNlICpzdG10KTsKICV0b2tlbiA8a2V5d29yZD4JS19PUgog JXRva2VuIDxrZXl3b3JkPglLX1BFUkZPUk0KICV0b2tlbiA8a2V5d29yZD4JS19QR19DT05URVhU CisldG9rZW4gPGtleXdvcmQ+CUtfUEdfQ1VSUkVOVF9ST1VUSU5FX09JRAogJXRva2VuIDxrZXl3 b3JkPglLX1BHX0RBVEFUWVBFX05BTUUKICV0b2tlbiA8a2V5d29yZD4JS19QR19FWENFUFRJT05f Q09OVEVYVAogJXRva2VuIDxrZXl3b3JkPglLX1BHX0VYQ0VQVElPTl9ERVRBSUwKQEAgLTEwMzUs NiArMTAzNiw3IEBAIHN0bXRfZ2V0ZGlhZwk6IEtfR0VUIGdldGRpYWdfYXJlYV9vcHQgS19ESUFH Tk9TVElDUyBnZXRkaWFnX2xpc3QgJzsnCiAJCQkJCQkJCQlicmVhazsKIAkJCQkJCQkJLyogdGhl c2UgZmllbGRzIGFyZSBhbGxvd2VkIGluIGVpdGhlciBjYXNlICovCiAJCQkJCQkJCWNhc2UgUExQ R1NRTF9HRVRESUFHX0NPTlRFWFQ6CisJCQkJCQkJCWNhc2UgUExQR1NRTF9HRVRESUFHX0NVUlJF TlRfUk9VVElORV9PSUQ6CiAJCQkJCQkJCQlicmVhazsKIAkJCQkJCQkJZGVmYXVsdDoKIAkJCQkJ CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgZGlhZ25vc3RpYyBpdGVtIGtpbmQ6ICVkIiwK QEAgLTExMjMsNiArMTEyNSw5IEBAIGdldGRpYWdfaXRlbSA6CiAJCQkJCQllbHNlIGlmICh0b2tf aXNfa2V5d29yZCh0b2ssICZ5eWx2YWwsCiAJCQkJCQkJCQkJCQlLX1JFVFVSTkVEX1NRTFNUQVRF LCAicmV0dXJuZWRfc3Fsc3RhdGUiKSkKIAkJCQkJCQkkJCA9IFBMUEdTUUxfR0VURElBR19SRVRV Uk5FRF9TUUxTVEFURTsKKwkJCQkJCWVsc2UgaWYgKHRva19pc19rZXl3b3JkKHRvaywgJnl5bHZh bCwKKwkJCQkJCQkJCQkJCUtfUEdfQ1VSUkVOVF9ST1VUSU5FX09JRCwgInBnX2N1cnJlbnRfcm91 dGluZV9vaWQiKSkKKwkJCQkJCQkkJCA9IFBMUEdTUUxfR0VURElBR19DVVJSRU5UX1JPVVRJTkVf T0lEOwogCQkJCQkJZWxzZQogCQkJCQkJCXl5ZXJyb3IoInVucmVjb2duaXplZCBHRVQgRElBR05P U1RJQ1MgaXRlbSIpOwogCQkJCQl9CkBAIC0yNTIzLDYgKzI1MjgsNyBAQCB1bnJlc2VydmVkX2tl eXdvcmQJOgogCQkJCXwgS19PUEVOCiAJCQkJfCBLX09QVElPTgogCQkJCXwgS19QRVJGT1JNCisJ CQkJfCBLX1BHX0NVUlJFTlRfUk9VVElORV9PSUQKIAkJCQl8IEtfUEdfQ09OVEVYVAogCQkJCXwg S19QR19EQVRBVFlQRV9OQU1FCiAJCQkJfCBLX1BHX0VYQ0VQVElPTl9DT05URVhUCmRpZmYgLS1n aXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaCBiL3NyYy9wbC9w bHBnc3FsL3NyYy9wbF91bnJlc2VydmVkX2t3bGlzdC5oCmluZGV4IDQ2NmJkYzdhMjAuLmI1Njlk NzU3MDggMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF91bnJlc2VydmVkX2t3bGlz dC5oCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF91bnJlc2VydmVkX2t3bGlzdC5oCkBAIC04 MSw2ICs4MSw3IEBAIFBHX0tFWVdPUkQoIm9wZW4iLCBLX09QRU4pCiBQR19LRVlXT1JEKCJvcHRp b24iLCBLX09QVElPTikKIFBHX0tFWVdPUkQoInBlcmZvcm0iLCBLX1BFUkZPUk0pCiBQR19LRVlX T1JEKCJwZ19jb250ZXh0IiwgS19QR19DT05URVhUKQorUEdfS0VZV09SRCgicGdfY3VycmVudF9y b3V0aW5lX29pZCIsIEtfUEdfQ1VSUkVOVF9ST1VUSU5FX09JRCkKIFBHX0tFWVdPUkQoInBnX2Rh dGF0eXBlX25hbWUiLCBLX1BHX0RBVEFUWVBFX05BTUUpCiBQR19LRVlXT1JEKCJwZ19leGNlcHRp b25fY29udGV4dCIsIEtfUEdfRVhDRVBUSU9OX0NPTlRFWFQpCiBQR19LRVlXT1JEKCJwZ19leGNl cHRpb25fZGV0YWlsIiwgS19QR19FWENFUFRJT05fREVUQUlMKQpkaWZmIC0tZ2l0IGEvc3JjL3Bs L3BscGdzcWwvc3JjL3BscGdzcWwuaCBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmgKaW5k ZXggMzU1YzlmNjc4ZC4uMjU4Y2U0ZGVjNyAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3Jj L3BscGdzcWwuaAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxwZ3NxbC5oCkBAIC0xNTcsNyAr MTU3LDggQEAgdHlwZWRlZiBlbnVtIFBMcGdTUUxfZ2V0ZGlhZ19raW5kCiAJUExQR1NRTF9HRVRE SUFHX0RBVEFUWVBFX05BTUUsCiAJUExQR1NRTF9HRVRESUFHX01FU1NBR0VfVEVYVCwKIAlQTFBH U1FMX0dFVERJQUdfVEFCTEVfTkFNRSwKLQlQTFBHU1FMX0dFVERJQUdfU0NIRU1BX05BTUUKKwlQ TFBHU1FMX0dFVERJQUdfU0NIRU1BX05BTUUsCisJUExQR1NRTF9HRVRESUFHX0NVUlJFTlRfUk9V VElORV9PSUQKIH0gUExwZ1NRTF9nZXRkaWFnX2tpbmQ7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BscGdzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wbHBnc3FsLm91dAppbmRleCAyZDI2YmUxYTgxLi41NmVkNGUxNGJmIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BscGdzcWwub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGxwZ3NxbC5vdXQKQEAgLTU3OTgsMyArNTc5OCwyOSBAQCBFTkQ7ICQk IExBTkdVQUdFIHBscGdzcWw7CiBFUlJPUjogICJ4IiBpcyBub3QgYSBzY2FsYXIgdmFyaWFibGUK IExJTkUgMzogICBHRVQgRElBR05PU1RJQ1MgeCA9IFJPV19DT1VOVDsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0KKy0tIENoZWNrIHBnX2N1cnJlbnRfcm91dGluZV9vaWQKKy0tCist LSBOb3RlOiB0aGUgcmVzdWx0IGNhbm5vdCBiZSBkaXNwbGF5ZWQsIGJ1dCB3ZSBjYW4gY2hlY2sg c28KKy0tIHRoZSByZWxhdGVkIHZhbHVlIGlzIGFzc2lnbmVkIHdpdGhvdXQgZXJyb3JzLgorLS0K K0RPICQkCitERUNMQVJFCisgIGZuX29pZCBvaWQ7CitCRUdJTgorICBHRVQgRElBR05PU1RJQ1Mg Zm5fb2lkID0gUEdfQ1VSUkVOVF9ST1VUSU5FX09JRDsKKyAgUkFJU0UgTk9USUNFICdvayc7CitF TkQ7CiskJDsKK05PVElDRTogIG9rCitETyAkJAorREVDTEFSRQorICBmbl9vaWQgb2lkOworQkVH SU4KKyAgUkFJU0UgRVhDRVBUSU9OICdlcnJvcic7CitFWENFUFRJT04gV0hFTiBvdGhlcnMgVEhF TgorICBHRVQgU1RBQ0tFRCBESUFHTk9TVElDUyBmbl9vaWQgPSBQR19DVVJSRU5UX1JPVVRJTkVf T0lEOworICBSQUlTRSBOT1RJQ0UgJ29rJzsKK0VORDsKKyQkOworTk9USUNFOiAgb2sKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BscGdzcWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGxwZ3NxbC5zcWwKaW5kZXggOTgzNjVlMDg3Zi4uOGZiNTZiOTNlZiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxwZ3NxbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGxwZ3NxbC5zcWwKQEAgLTQ3MzEsMyArNDczMSwyOSBAQCBCRUdJTgogICBHRVQgRElB R05PU1RJQ1MgeCA9IFJPV19DT1VOVDsKICAgUkVUVVJOOwogRU5EOyAkJCBMQU5HVUFHRSBwbHBn c3FsOworCistLQorLS0gQ2hlY2sgcGdfY3VycmVudF9yb3V0aW5lX29pZAorLS0KKy0tIE5vdGU6 IHRoZSByZXN1bHQgY2Fubm90IGJlIGRpc3BsYXllZCwgYnV0IHdlIGNhbiBjaGVjayBzbworLS0g dGhlIHJlbGF0ZWQgdmFsdWUgaXMgYXNzaWduZWQgd2l0aG91dCBlcnJvcnMuCistLQorRE8gJCQK K0RFQ0xBUkUKKyAgZm5fb2lkIG9pZDsKK0JFR0lOCisgIEdFVCBESUFHTk9TVElDUyBmbl9vaWQg PSBQR19DVVJSRU5UX1JPVVRJTkVfT0lEOworICBSQUlTRSBOT1RJQ0UgJ29rJzsKK0VORDsKKyQk OworCitETyAkJAorREVDTEFSRQorICBmbl9vaWQgb2lkOworQkVHSU4KKyAgUkFJU0UgRVhDRVBU SU9OICdlcnJvcic7CitFWENFUFRJT04gV0hFTiBvdGhlcnMgVEhFTgorICBHRVQgU1RBQ0tFRCBE SUFHTk9TVElDUyBmbl9vaWQgPSBQR19DVVJSRU5UX1JPVVRJTkVfT0lEOworICBSQUlTRSBOT1RJ Q0UgJ29rJzsKK0VORDsKKyQkOwo= --00000000000057a8e105f8730788--