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 1nSsHV-0002pU-RT for pgsql-hackers@arkaria.postgresql.org; Sat, 12 Mar 2022 03:19:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nSsHU-0001CS-NO for pgsql-hackers@arkaria.postgresql.org; Sat, 12 Mar 2022 03:19:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nSsHU-0001CI-8d for pgsql-hackers@lists.postgresql.org; Sat, 12 Mar 2022 03:19:00 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nSsHO-0004t2-DH for pgsql-hackers@lists.postgresql.org; Sat, 12 Mar 2022 03:18:58 +0000 Received: by mail-pj1-x102c.google.com with SMTP id mr24-20020a17090b239800b001bf0a375440so12671994pjb.4 for ; Fri, 11 Mar 2022 19:18:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to; bh=2Nt+XSzrLOKasgoZweJv2Wo5PrXqx4xdEhwjn2zgvOU=; b=wC0jfNz/ZhzMPLuGmqHFavF1/XVp1YLRGxVXxIhaIzCw/Lda4j7OkXoTV1YAPg5sq6 JHe6X71X0VaxoUMF9asJ83Aayd2T2qJ/FIpU4L0Y4PcE3Rv0FC2kkKzqiSytrF/qjU14 4Ym1LDfMtVLui1YuR3m0DG3Ea+srgHMVsKtfJdvIr/dDFkaDEfil271z9v8RSsvBRXTu YxMXVLSbf8QjHpVlyDN1VuprP55c/SbyvmnE/qMOijcstLrLCBMZoVcUn+qkjKIpM3KL CPlp/jKJWfAdHTVBmuEw5+SlPzhMgQNqB4htMTaDyb7HqifQX60EMX2Pi9OQR7+lulZ9 2osQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to; bh=2Nt+XSzrLOKasgoZweJv2Wo5PrXqx4xdEhwjn2zgvOU=; b=iZKzQexo+JcXKrJLGapPj1lZ/hYzuDhFZOBHU7+YxR4Z/q7VqWvbSWphEJKsEAWXDJ vAhU1WM2euNOGzfpxejVHd8dwUbGrdVhW9p4YRYUaKJ6O52ii46vjZYsQjcdLSvpCI4n DoJjdChvhd6s6gfRnAjDppSk4gxbA8/oQY6SQhWtF/Ngb3fQonUjR+p0/IFv2sQpJJCq 3Gazgf9E9QQXJ6GWll1Aq63I/ucVfBaNIgYT94BYt09gcuFweY/zXqhL5QWdUDSUhYPh RitAbBvRRaxann/zeNe8bjhKEcYVMNn4+5c6Be/OuqPIw62r5Ne3m4AyzQximQAcXWzL u5NA== X-Gm-Message-State: AOAM530x/dI6lQYUIv8YCujlJpgcV7OCS/ebrWddzElAdaF+JWrda/7a quv18K9z+ywzO7mODUXFEofa2A== X-Google-Smtp-Source: ABdhPJzqQ3NIQp3AW0qhukUeI1AHs2ZPNCPPH4qB0F+/Dxgmo5PyF9YtytCiAmhnFUuB+ibKoQMxSA== X-Received: by 2002:a17:902:ecd0:b0:151:dd64:c79b with SMTP id a16-20020a170902ecd000b00151dd64c79bmr13640534plh.79.1647055132150; Fri, 11 Mar 2022 19:18:52 -0800 (PST) Received: from [192.168.0.102] (204-195-6-69.wavecable.com. [204.195.6.69]) by smtp.googlemail.com with ESMTPSA id cv15-20020a17090afd0f00b001bedcbca1a9sm14583769pjb.57.2022.03.11.19.18.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 11 Mar 2022 19:18:51 -0800 (PST) Content-Type: multipart/mixed; boundary="------------GWbMwVsS0Ei3iah3I0e0QP9o" Message-ID: <71eabe81-3e69-0476-347a-c8342de5cd41@illuminatedcomputing.com> Date: Fri, 11 Mar 2022 19:18:50 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: range_agg with multirange inputs Content-Language: en-US To: Chapman Flack , pgsql-hackers@lists.postgresql.org References: <007ef255-35ef-fd26-679c-f97e7a7f30c2@illuminatedcomputing.com> <007ef255-35ef-fd26-679c-f97e7a7f30c2@illuminatedcomputing.com> <164592443404.882.11296254043197567171.pgcf@coridan.postgresql.org> <6556b959-f839-aee2-4b4b-0b5107c0db11@illuminatedcomputing.com> <621E912C.3020307@anastigmatix.net> <42454377-d914-0e22-37da-1b63ce3b9f9d@illuminatedcomputing.com> <622A7690.4020800@anastigmatix.net> From: Paul Jungwirth In-Reply-To: <622A7690.4020800@anastigmatix.net> 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. --------------GWbMwVsS0Ei3iah3I0e0QP9o Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/10/22 14:07, Chapman Flack wrote: > When I apply this patch, I get a func.sgml with two entries for > range_intersect_agg(anymultirange). Arg, fixed. > In range_agg_transfn, you've changed the message in the "must be called > with a range or multirange"; that seems like another good candidate to > be an elog. Agreed. Updated here. > I think your query finds aggregate declarations that share the same SQL > function declaration as their finalizer functions. That seems to be more > common. > > The query I used looks for cases where different SQL-declared functions > appear as finalizers of aggregates, but the different SQL declared functions > share the same internal C implementation. Okay, I see. I believe that is quite common for ordinary SQL functions. Sharing a prosrc seems even less remarkable than sharing an aggfinalfn. You're right there are no cases for other finalfns yet, but I don't think there is anything special about finalfns that would make this a weirder thing to do there than with ordinary functions. Still, noting it with a comment does seem helpful. I've updated the remark to match what you suggested. Thank you again for the review, and sorry for so many iterations! :-) Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------GWbMwVsS0Ei3iah3I0e0QP9o Content-Type: text/x-patch; charset=UTF-8; name="v4-0001-Add-range_agg-with-multirange-inputs.patch" Content-Disposition: attachment; filename="v4-0001-Add-range_agg-with-multirange-inputs.patch" Content-Transfer-Encoding: base64 RnJvbSBiNDA5ZDczMzMxMzJlMzRhOTI4ZWM4Y2MwZWNjYTBhMzQyMWI3MjY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMTAgRGVjIDIwMjEgMTY6MDQ6NTcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHY0XSBBZGQgcmFuZ2VfYWdnIHdpdGggbXVsdGlyYW5nZSBp bnB1dHMKCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDMwICsrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBl cy5jICAgICAgIHwgIDY5ICsrKysrKysrKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h Z2dyZWdhdGUuZGF0ICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgICAgICAgICAgICAgICB8ICAxMSArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9tdWx0aXJhbmdldHlwZXMub3V0IHwgMTAwICsrKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCAgICAgIHwgICAxICsKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwgICAgICB8ICAyMSArKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCAgICAgICAgICAgfCAgIDEg KwogOCBmaWxlcyBjaGFuZ2VkLCAyMzAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbAppbmRleCBkZjNjZDU5ODdiLi5hYjZjNGYwMDkzIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTIw MDEyLDggKzIwMDEyLDIzIEBAIFNFTEVDVCBOVUxMSUYodmFsdWUsICcobm9uZSknKSAuLi4K ICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgICA8ZW50cnk+Tm88L2VudHJ5PgogICAg ICAgPC9yb3c+CiAKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4 dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnJhbmdlX2FnZzwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5yYW5nZV9hZ2c8L2Z1bmN0aW9uPiAo IDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4KKyAgICAgICAgIDx0eXBlPmFueW11bHRp cmFuZ2U8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmFueW11bHRpcmFuZ2U8L3Jl dHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQ29t cHV0ZXMgdGhlIHVuaW9uIG9mIHRoZSBub24tbnVsbCBpbnB1dCB2YWx1ZXMuCisgICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgICAgPGVudHJ5Pk5vPC9lbnRyeT4KKyAgICAgIDwvcm93 PgorCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CiAg ICAgICAgICA8cHJpbWFyeT5yYW5nZV9pbnRlcnNlY3RfYWdnPC9wcmltYXJ5PgpAQCAtMjAw MjcsOCArMjAwNDIsMjMgQEAgU0VMRUNUIE5VTExJRih2YWx1ZSwgJyhub25lKScpIC4uLgog ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgIDxlbnRyeT5ObzwvZW50cnk+CiAgICAg ICA8L3Jvdz4KIAorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0 ZXJtPgorICAgICAgICAgPHByaW1hcnk+cmFuZ2VfaW50ZXJzZWN0X2FnZzwvcHJpbWFyeT4K KyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5yYW5nZV9pbnRlcnNl Y3RfYWdnPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+CisgICAg ICAgICA8dHlwZT5hbnltdWx0aXJhbmdlPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1 ZT5hbnltdWx0aXJhbmdlPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIENvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIG5vbi1u dWxsIGlucHV0IHZhbHVlcy4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+Tm88L2VudHJ5PgorICAgICAgPC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPGVu dHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJl Ij4KICAgICAgICAgPGluZGV4dGVybT4KICAgICAgICAgIDxwcmltYXJ5PnN0cmluZ19hZ2c8 L3ByaW1hcnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5n ZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzLmMKaW5k ZXggYzQ3NGIyNDQzMS4uYTZkMzc2YjA4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9t dWx0aXJhbmdldHlwZXMuYwpAQCAtMTM0NCwxMSArMTM0NCw5IEBAIHJhbmdlX2FnZ190cmFu c2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsb2coRVJST1IsICJyYW5nZV9hZ2dfdHJhbnNm biBjYWxsZWQgaW4gbm9uLWFnZ3JlZ2F0ZSBjb250ZXh0Iik7CiAKIAlybmd0eXBvaWQgPSBn ZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAxKTsKIAlpZiAoIXR5cGVfaXNf cmFuZ2Uocm5ndHlwb2lkKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkgZXJybXNnKCJyYW5nZV9hZ2cgbXVzdCBi ZSBjYWxsZWQgd2l0aCBhIHJhbmdlIikpKTsKKwkJZWxvZyhFUlJPUiwgInJhbmdlX2FnZyBt dXN0IGJlIGNhbGxlZCB3aXRoIGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSIpOwogCiAJaWYgKFBH X0FSR0lTTlVMTCgwKSkKIAkJc3RhdGUgPSBpbml0QXJyYXlSZXN1bHQocm5ndHlwb2lkLCBh Z2dDb250ZXh0LCBmYWxzZSk7CiAJZWxzZQpAQCAtMTM2Miw4ICsxMzYwLDExIEBAIHJhbmdl X2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIC8qCiAgKiByYW5nZV9hZ2df ZmluYWxmbjogdXNlIG91ciBpbnRlcm5hbCBhcnJheSB0byBtZXJnZSB0b3VjaGluZyByYW5n ZXMuCisgKgorICogU2hhcmVkIGJ5IHJhbmdlX2FnZ19maW5hbGZuKGFueXJhbmdlKSBhbmQK KyAqIG11bHRpcmFuZ2VfYWdnX2ZpbmFsZm4oYW55bXVsdGlyYW5nZSkuCiAgKi8KIERhdHVt CiByYW5nZV9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTM5Nyw4ICsx Mzk4LDY2IEBAIHJhbmdlX2FnZ19maW5hbGZuKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19S RVRVUk5fTVVMVElSQU5HRV9QKG1ha2VfbXVsdGlyYW5nZShtbHRybmd0eXBvaWQsIHR5cGNh Y2hlLT5ybmd0eXBlLCByYW5nZV9jb3VudCwgcmFuZ2VzKSk7CiB9CiAKKy8qCisgKiBtdWx0 aXJhbmdlX2FnZ190cmFuc2ZuOiBjb21iaW5lIGFkamFjZW50L292ZXJsYXBwaW5nIG11bHRp cmFuZ2VzLgorICoKKyAqIEFsbCB3ZSBkbyBoZXJlIGlzIGdhdGhlciB0aGUgaW5wdXQgbXVs dGlyYW5nZXMnIHJhbmdlcyBpbnRvIGFuIGFycmF5CisgKiBzbyB0aGF0IHRoZSBmaW5hbGZu IGNhbiBzb3J0IGFuZCBjb21iaW5lIHRoZW0uCisgKi8KK0RhdHVtCittdWx0aXJhbmdlX2Fn Z190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTWVtb3J5Q29udGV4dCBhZ2dDb250 ZXh0OworCU9pZAkJCW1sdHJuZ3R5cG9pZDsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7 CisJVHlwZUNhY2hlRW50cnkgKnJuZ3R5cGNhY2hlOworCUFycmF5QnVpbGRTdGF0ZSAqc3Rh dGU7CisJTXVsdGlyYW5nZVR5cGUgKmN1cnJlbnQ7CisJaW50MzIJCXJhbmdlX2NvdW50Owor CVJhbmdlVHlwZSAqKnJhbmdlczsKKwlpbnQzMgkJaTsKKworCWlmICghQWdnQ2hlY2tDYWxs Q29udGV4dChmY2luZm8sICZhZ2dDb250ZXh0KSkKKwkJZWxvZyhFUlJPUiwgIm11bHRpcmFu Z2VfYWdnX3RyYW5zZm4gY2FsbGVkIGluIG5vbi1hZ2dyZWdhdGUgY29udGV4dCIpOworCisJ bWx0cm5ndHlwb2lkID0gZ2V0X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywgMSk7 CisJaWYgKCF0eXBlX2lzX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkKSkKKwkJZWxvZyhFUlJP UiwgInJhbmdlX2FnZyBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgcmFuZ2Ugb3IgbXVsdGlyYW5n ZSIpOworCisJdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dldF90eXBjYWNoZShmY2luZm8sIG1s dHJuZ3R5cG9pZCk7CisJcm5ndHlwY2FjaGUgPSB0eXBjYWNoZS0+cm5ndHlwZTsKKworCWlm IChQR19BUkdJU05VTEwoMCkpCisJCXN0YXRlID0gaW5pdEFycmF5UmVzdWx0KHJuZ3R5cGNh Y2hlLT50eXBlX2lkLCBhZ2dDb250ZXh0LCBmYWxzZSk7CisJZWxzZQorCQlzdGF0ZSA9IChB cnJheUJ1aWxkU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwkvKiBza2lwIE5V TExzICovCisJaWYgKCFQR19BUkdJU05VTEwoMSkpCisJeworCQljdXJyZW50ID0gUEdfR0VU QVJHX01VTFRJUkFOR0VfUCgxKTsKKwkJbXVsdGlyYW5nZV9kZXNlcmlhbGl6ZShybmd0eXBj YWNoZSwgY3VycmVudCwgJnJhbmdlX2NvdW50LCAmcmFuZ2VzKTsKKwkJaWYgKHJhbmdlX2Nv dW50ID09IDApCisJCXsKKwkJCS8qCisJCQkgKiBBZGQgYW4gZW1wdHkgcmFuZ2Ugc28gd2Ug Z2V0IGFuIGVtcHR5IHJlc3VsdCAobm90IGEgbnVsbCByZXN1bHQpLgorCQkJICovCisJCQlh Y2N1bUFycmF5UmVzdWx0KHN0YXRlLAorCQkJCQkJCSBSYW5nZVR5cGVQR2V0RGF0dW0obWFr ZV9lbXB0eV9yYW5nZShybmd0eXBjYWNoZSkpLAorCQkJCQkJCSBmYWxzZSwgcm5ndHlwY2Fj aGUtPnR5cGVfaWQsIGFnZ0NvbnRleHQpOworCQl9CisJCWVsc2UKKwkJeworCQkJZm9yIChp ID0gMDsgaSA8IHJhbmdlX2NvdW50OyBpKyspCisJCQkJYWNjdW1BcnJheVJlc3VsdChzdGF0 ZSwgUmFuZ2VUeXBlUEdldERhdHVtKHJhbmdlc1tpXSksIGZhbHNlLCBybmd0eXBjYWNoZS0+ dHlwZV9pZCwgYWdnQ29udGV4dCk7CisJCX0KKwl9CisKKwlQR19SRVRVUk5fUE9JTlRFUihz dGF0ZSk7Cit9CisKIERhdHVtCiBtdWx0aXJhbmdlX2ludGVyc2VjdF9hZ2dfdHJhbnNmbihQ R19GVU5DVElPTl9BUkdTKQogewogCU1lbW9yeUNvbnRleHQgYWdnQ29udGV4dDsKQEAgLTE0 MTUsMTEgKzE0NzQsOSBAQCBtdWx0aXJhbmdlX2ludGVyc2VjdF9hZ2dfdHJhbnNmbihQR19G VU5DVElPTl9BUkdTKQogCQllbG9nKEVSUk9SLCAibXVsdGlyYW5nZV9pbnRlcnNlY3RfYWdn X3RyYW5zZm4gY2FsbGVkIGluIG5vbi1hZ2dyZWdhdGUgY29udGV4dCIpOwogCiAJbWx0cm5n dHlwb2lkID0gZ2V0X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywgMSk7CiAJaWYg KCF0eXBlX2lzX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkKSkKLQkJZXJlcG9ydChFUlJPUiwK LQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkgZXJybXNn KCJyYW5nZV9pbnRlcnNlY3RfYWdnIG11c3QgYmUgY2FsbGVkIHdpdGggYSBtdWx0aXJhbmdl IikpKTsKKwkJZWxvZyhFUlJPUiwgInJhbmdlX2FnZyBtdXN0IGJlIGNhbGxlZCB3aXRoIGEg cmFuZ2Ugb3IgbXVsdGlyYW5nZSIpOwogCiAJdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dldF90 eXBjYWNoZShmY2luZm8sIG1sdHJuZ3R5cG9pZCk7CiAKIAkvKiBzdHJpY3RuZXNzIGVuc3Vy ZXMgdGhlc2UgYXJlIG5vbi1udWxsICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0 ZS5kYXQKaW5kZXggMjg0M2Y0YjQxNS4uMTViNGU2NDYxYSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYWdncmVnYXRlLmRhdApAQCAtNTYyLDggKzU2MiwxMSBAQAogICBhZ2d0cmFuc3R5 cGUgPT4gJ2FueW11bHRpcmFuZ2UnIH0sCiB7IGFnZ2Zub2lkID0+ICdyYW5nZV9hZ2coYW55 cmFuZ2UpJywgYWdndHJhbnNmbiA9PiAncmFuZ2VfYWdnX3RyYW5zZm4nLAogICBhZ2dmaW5h bGZuID0+ICdyYW5nZV9hZ2dfZmluYWxmbicsIGFnZ2ZpbmFsZXh0cmEgPT4gJ3QnLAogICBh Z2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAoreyBhZ2dmbm9pZCA9PiAncmFuZ2VfYWdn KGFueW11bHRpcmFuZ2UpJywgYWdndHJhbnNmbiA9PiAnbXVsdGlyYW5nZV9hZ2dfdHJhbnNm bicsCisgIGFnZ2ZpbmFsZm4gPT4gJ211bHRpcmFuZ2VfYWdnX2ZpbmFsZm4nLCBhZ2dmaW5h bGV4dHJhID0+ICd0JywKKyAgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5hbCcgfSwKIAogIyBq c29uCiB7IGFnZ2Zub2lkID0+ICdqc29uX2FnZycsIGFnZ3RyYW5zZm4gPT4gJ2pzb25fYWdn X3RyYW5zZm4nLAogICBhZ2dmaW5hbGZuID0+ICdqc29uX2FnZ19maW5hbGZuJywgYWdndHJh bnN0eXBlID0+ICdpbnRlcm5hbCcgfSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IGJmODg4NTgxNzEuLjFmMGRhMDBhMjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApA QCAtMTA2MTEsOCArMTA2MTEsMTkgQEAKIHsgb2lkID0+ICc0MzAxJywgZGVzY3IgPT4gJ2Nv bWJpbmUgYWdncmVnYXRlIGlucHV0IGludG8gYSBtdWx0aXJhbmdlJywKICAgcHJvbmFtZSA9 PiAncmFuZ2VfYWdnJywgcHJva2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdmJywKICAg cHJvcmV0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsIHByb2FyZ3R5cGVzID0+ICdhbnlyYW5n ZScsCiAgIHByb3NyYyA9PiAnYWdncmVnYXRlX2R1bW15JyB9LAoreyBvaWQgPT4gJzgwMDAn LCBkZXNjciA9PiAnYWdncmVnYXRlIHRyYW5zaXRpb24gZnVuY3Rpb24nLAorICBwcm9uYW1l ID0+ICdtdWx0aXJhbmdlX2FnZ190cmFuc2ZuJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9y ZXR0eXBlID0+ICdpbnRlcm5hbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBhbnlt dWx0aXJhbmdlJywgcHJvc3JjID0+ICdtdWx0aXJhbmdlX2FnZ190cmFuc2ZuJyB9LAoreyBv aWQgPT4gJzgwMDEnLCBkZXNjciA9PiAnYWdncmVnYXRlIGZpbmFsIGZ1bmN0aW9uJywKKyAg cHJvbmFtZSA9PiAnbXVsdGlyYW5nZV9hZ2dfZmluYWxmbicsIHByb2lzc3RyaWN0ID0+ICdm JywKKyAgcHJvcmV0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsIHByb2FyZ3R5cGVzID0+ICdp bnRlcm5hbCBhbnltdWx0aXJhbmdlJywKKyAgcHJvc3JjID0+ICdyYW5nZV9hZ2dfZmluYWxm bicgfSwKK3sgb2lkID0+ICc4MDAyJywgZGVzY3IgPT4gJ2NvbWJpbmUgYWdncmVnYXRlIGlu cHV0IGludG8gYSBtdWx0aXJhbmdlJywKKyAgcHJvbmFtZSA9PiAncmFuZ2VfYWdnJywgcHJv a2luZCA9PiAnYScsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvcmV0dHlwZSA9PiAnYW55 bXVsdGlyYW5nZScsIHByb2FyZ3R5cGVzID0+ICdhbnltdWx0aXJhbmdlJywKKyAgcHJvc3Jj ID0+ICdhZ2dyZWdhdGVfZHVtbXknIH0sCiB7IG9pZCA9PiAnNDM4OCcsIGRlc2NyID0+ICdy YW5nZSBhZ2dyZWdhdGUgYnkgaW50ZXJzZWN0aW5nJywKICAgcHJvbmFtZSA9PiAnbXVsdGly YW5nZV9pbnRlcnNlY3RfYWdnX3RyYW5zZm4nLCBwcm9yZXR0eXBlID0+ICdhbnltdWx0aXJh bmdlJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVsdGlyYW5nZScs CiAgIHByb3NyYyA9PiAnbXVsdGlyYW5nZV9pbnRlcnNlY3RfYWdnX3RyYW5zZm4nIH0sCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKaW5k ZXggYmRlM2YyNDhhNy4uYWMyZWI4NGMzYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dApAQCAtMjc4Myw4ICsyNzgzLDcyIEBAIEZS T00gICAgKFZBTFVFUwogLS0tLS0tLS0tLS0tLS0tCiAge1thLGZdLFtnLGopfQogKDEgcm93 KQogCistLSByYW5nZV9hZ2cgd2l0aCBtdWx0aXJhbmdlIGlucHV0cworc2VsZWN0IHJhbmdl X2FnZyhubXIpIGZyb20gbnVtbXVsdGlyYW5nZV90ZXN0OworIHJhbmdlX2FnZyAKKy0tLS0t LS0tLS0tCisgeygsKX0KKygxIHJvdykKKworc2VsZWN0IHJhbmdlX2FnZyhubXIpIGZyb20g bnVtbXVsdGlyYW5nZV90ZXN0IHdoZXJlIGZhbHNlOworIHJhbmdlX2FnZyAKKy0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCByYW5nZV9hZ2cobnVsbDo6bnVtbXVsdGlyYW5n ZSkgZnJvbSBudW1tdWx0aXJhbmdlX3Rlc3Q7CisgcmFuZ2VfYWdnIAorLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworc2VsZWN0IHJhbmdlX2FnZyhubXIpIGZyb20gKHZhbHVlcyAoJ3t9 Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKKyByYW5nZV9hZ2cgCistLS0tLS0tLS0tLQor IHt9CisoMSByb3cpCisKK3NlbGVjdCByYW5nZV9hZ2cobm1yKSBmcm9tICh2YWx1ZXMgKCd7 fSc6Om51bW11bHRpcmFuZ2UpLCAoJ3t9Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKKyBy YW5nZV9hZ2cgCistLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK3NlbGVjdCByYW5nZV9h Z2cobm1yKSBmcm9tICh2YWx1ZXMgKCd7WzEsMl19Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1y KTsKKyByYW5nZV9hZ2cgCistLS0tLS0tLS0tLQorIHtbMSwyXX0KKygxIHJvdykKKworc2Vs ZWN0IHJhbmdlX2FnZyhubXIpIGZyb20gKHZhbHVlcyAoJ3tbMSwyXSwgWzUsNl19Jzo6bnVt bXVsdGlyYW5nZSkpIHQobm1yKTsKKyAgIHJhbmdlX2FnZyAgIAorLS0tLS0tLS0tLS0tLS0t Cisge1sxLDJdLFs1LDZdfQorKDEgcm93KQorCitzZWxlY3QgcmFuZ2VfYWdnKG5tcikgZnJv bSAodmFsdWVzICgne1sxLDJdLCBbMiwzXX0nOjpudW1tdWx0aXJhbmdlKSkgdChubXIpOwor IHJhbmdlX2FnZyAKKy0tLS0tLS0tLS0tCisge1sxLDNdfQorKDEgcm93KQorCitzZWxlY3Qg cmFuZ2VfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne1sxLDJdfSc6Om51bW11bHRpcmFuZ2Up LCAoJ3tbNSw2XX0nOjpudW1tdWx0aXJhbmdlKSkgdChubXIpOworICAgcmFuZ2VfYWdnICAg CistLS0tLS0tLS0tLS0tLS0KKyB7WzEsMl0sWzUsNl19CisoMSByb3cpCisKK3NlbGVjdCBy YW5nZV9hZ2cobm1yKSBmcm9tICh2YWx1ZXMgKCd7WzEsMl19Jzo6bnVtbXVsdGlyYW5nZSks ICgne1syLDNdfSc6Om51bW11bHRpcmFuZ2UpKSB0KG5tcik7CisgcmFuZ2VfYWdnIAorLS0t LS0tLS0tLS0KKyB7WzEsM119CisoMSByb3cpCisKKy0tCistLSByYW5nZV9pbnRlcnNlY3Rf YWdnIGZ1bmN0aW9uCistLQogc2VsZWN0IHJhbmdlX2ludGVyc2VjdF9hZ2cobm1yKSBmcm9t IG51bW11bHRpcmFuZ2VfdGVzdDsKICByYW5nZV9pbnRlcnNlY3RfYWdnIAogLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAge30KQEAgLTI3OTUsMTUgKzI4NTksNTEgQEAgc2VsZWN0IHJhbmdl X2ludGVyc2VjdF9hZ2cobm1yKSBmcm9tIG51bW11bHRpcmFuZ2VfdGVzdCB3aGVyZSBmYWxz ZTsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIAogKDEgcm93KQogCitzZWxlY3QgcmFuZ2Vf aW50ZXJzZWN0X2FnZyhudWxsOjpudW1tdWx0aXJhbmdlKSBmcm9tIG51bW11bHRpcmFuZ2Vf dGVzdDsKKyByYW5nZV9pbnRlcnNlY3RfYWdnIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK3NlbGVjdCByYW5nZV9pbnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFs dWVzICgne1sxLDNdfSc6Om51bW11bHRpcmFuZ2UpLCAoJ3tbNiwxMl19Jzo6bnVtbXVsdGly YW5nZSkpIHQobm1yKTsKKyByYW5nZV9pbnRlcnNlY3RfYWdnIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisge30KKygxIHJvdykKKworc2VsZWN0IHJhbmdlX2ludGVyc2VjdF9hZ2cobm1y KSBmcm9tICh2YWx1ZXMgKCd7WzEsNl19Jzo6bnVtbXVsdGlyYW5nZSksICgne1szLDEyXX0n OjpudW1tdWx0aXJhbmdlKSkgdChubXIpOworIHJhbmdlX2ludGVyc2VjdF9hZ2cgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB7WzMsNl19CisoMSByb3cpCisKK3NlbGVjdCByYW5nZV9p bnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne1sxLDZdLCBbMTAsMTJdfSc6Om51 bW11bHRpcmFuZ2UpLCAoJ3tbNCwxNF19Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKKyBy YW5nZV9pbnRlcnNlY3RfYWdnIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1s0LDZdLFsx MCwxMl19CisoMSByb3cpCisKIC0tIHRlc3Qgd2l0aCBqdXN0IG9uZSBpbnB1dDoKK3NlbGVj dCByYW5nZV9pbnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne30nOjpudW1tdWx0 aXJhbmdlKSkgdChubXIpOworIHJhbmdlX2ludGVyc2VjdF9hZ2cgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB7fQorKDEgcm93KQorCiBzZWxlY3QgcmFuZ2VfaW50ZXJzZWN0X2FnZyhu bXIpIGZyb20gKHZhbHVlcyAoJ3tbMSwyXX0nOjpudW1tdWx0aXJhbmdlKSkgdChubXIpOwog IHJhbmdlX2ludGVyc2VjdF9hZ2cgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB7WzEsMl19 CiAoMSByb3cpCiAKK3NlbGVjdCByYW5nZV9pbnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFs dWVzICgne1sxLDZdLCBbMTAsMTJdfSc6Om51bW11bHRpcmFuZ2UpKSB0KG5tcik7CisgcmFu Z2VfaW50ZXJzZWN0X2FnZyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtbMSw2XSxbMTAs MTJdfQorKDEgcm93KQorCiBzZWxlY3QgcmFuZ2VfaW50ZXJzZWN0X2FnZyhubXIpIGZyb20g bnVtbXVsdGlyYW5nZV90ZXN0IHdoZXJlIG5tciBAPiA0LjA7CiAgcmFuZ2VfaW50ZXJzZWN0 X2FnZyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHtbMyw1KX0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IDRjZTZjMDM5YjQuLjA0NmQyMDA2 ZDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAt MTkyLDggKzE5Miw5IEBAIFdIRVJFIHAxLm9pZCAhPSBwMi5vaWQgQU5ECiAgICAgcDEucHJv c3JjIE5PVCBMSUtFIEUncmFuZ2VcXF9jb25zdHJ1Y3Rvcl8nIEFORAogICAgIHAyLnByb3Ny YyBOT1QgTElLRSBFJ3JhbmdlXFxfY29uc3RydWN0b3JfJyBBTkQKICAgICBwMS5wcm9zcmMg Tk9UIExJS0UgRSdtdWx0aXJhbmdlXFxfY29uc3RydWN0b3JfJyBBTkQKICAgICBwMi5wcm9z cmMgTk9UIExJS0UgRSdtdWx0aXJhbmdlXFxfY29uc3RydWN0b3JfJyBBTkQKKyAgICBwMi5w cm9zcmMgTk9UIExJS0UgRSdyYW5nZVxcX2FnZ1xcX2ZpbmFsZm4nIEFORAogICAgIChwMS5w cm9hcmd0eXBlc1sxXSA8IHAyLnByb2FyZ3R5cGVzWzFdKQogT1JERVIgQlkgMSwgMjsKICAg ICAgICAgIHByb2FyZ3R5cGVzICAgICAgICAgfCAgICAgICBwcm9hcmd0eXBlcyAgICAgICAg CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVz LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKaW5kZXgg ZGYxZWRiNGQzMS4uMWFiY2FlZGRiNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvbXVsdGlyYW5nZXR5cGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0 aXJhbmdldHlwZXMuc3FsCkBAIC01NzEsMTIgKzU3MSwzMyBAQCBGUk9NICAgIChWQUxVRVMK ICAgICAgICAgICAoJ1tnLGgpJzo6dGV4dHJhbmdlKSwKICAgICAgICAgICAoJ1toLGopJzo6 dGV4dHJhbmdlKQogICAgICAgICApIHQocik7CiAKKy0tIHJhbmdlX2FnZyB3aXRoIG11bHRp cmFuZ2UgaW5wdXRzCitzZWxlY3QgcmFuZ2VfYWdnKG5tcikgZnJvbSBudW1tdWx0aXJhbmdl X3Rlc3Q7CitzZWxlY3QgcmFuZ2VfYWdnKG5tcikgZnJvbSBudW1tdWx0aXJhbmdlX3Rlc3Qg d2hlcmUgZmFsc2U7CitzZWxlY3QgcmFuZ2VfYWdnKG51bGw6Om51bW11bHRpcmFuZ2UpIGZy b20gbnVtbXVsdGlyYW5nZV90ZXN0Oworc2VsZWN0IHJhbmdlX2FnZyhubXIpIGZyb20gKHZh bHVlcyAoJ3t9Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKK3NlbGVjdCByYW5nZV9hZ2co bm1yKSBmcm9tICh2YWx1ZXMgKCd7fSc6Om51bW11bHRpcmFuZ2UpLCAoJ3t9Jzo6bnVtbXVs dGlyYW5nZSkpIHQobm1yKTsKK3NlbGVjdCByYW5nZV9hZ2cobm1yKSBmcm9tICh2YWx1ZXMg KCd7WzEsMl19Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKK3NlbGVjdCByYW5nZV9hZ2co bm1yKSBmcm9tICh2YWx1ZXMgKCd7WzEsMl0sIFs1LDZdfSc6Om51bW11bHRpcmFuZ2UpKSB0 KG5tcik7CitzZWxlY3QgcmFuZ2VfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne1sxLDJdLCBb MiwzXX0nOjpudW1tdWx0aXJhbmdlKSkgdChubXIpOworc2VsZWN0IHJhbmdlX2FnZyhubXIp IGZyb20gKHZhbHVlcyAoJ3tbMSwyXX0nOjpudW1tdWx0aXJhbmdlKSwgKCd7WzUsNl19Jzo6 bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKK3NlbGVjdCByYW5nZV9hZ2cobm1yKSBmcm9tICh2 YWx1ZXMgKCd7WzEsMl19Jzo6bnVtbXVsdGlyYW5nZSksICgne1syLDNdfSc6Om51bW11bHRp cmFuZ2UpKSB0KG5tcik7CisKKy0tCistLSByYW5nZV9pbnRlcnNlY3RfYWdnIGZ1bmN0aW9u CistLQogc2VsZWN0IHJhbmdlX2ludGVyc2VjdF9hZ2cobm1yKSBmcm9tIG51bW11bHRpcmFu Z2VfdGVzdDsKIHNlbGVjdCByYW5nZV9pbnRlcnNlY3RfYWdnKG5tcikgZnJvbSBudW1tdWx0 aXJhbmdlX3Rlc3Qgd2hlcmUgZmFsc2U7CitzZWxlY3QgcmFuZ2VfaW50ZXJzZWN0X2FnZyhu dWxsOjpudW1tdWx0aXJhbmdlKSBmcm9tIG51bW11bHRpcmFuZ2VfdGVzdDsKK3NlbGVjdCBy YW5nZV9pbnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne1sxLDNdfSc6Om51bW11 bHRpcmFuZ2UpLCAoJ3tbNiwxMl19Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKK3NlbGVj dCByYW5nZV9pbnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne1sxLDZdfSc6Om51 bW11bHRpcmFuZ2UpLCAoJ3tbMywxMl19Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKK3Nl bGVjdCByYW5nZV9pbnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne1sxLDZdLCBb MTAsMTJdfSc6Om51bW11bHRpcmFuZ2UpLCAoJ3tbNCwxNF19Jzo6bnVtbXVsdGlyYW5nZSkp IHQobm1yKTsKIC0tIHRlc3Qgd2l0aCBqdXN0IG9uZSBpbnB1dDoKK3NlbGVjdCByYW5nZV9p bnRlcnNlY3RfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne30nOjpudW1tdWx0aXJhbmdlKSkg dChubXIpOwogc2VsZWN0IHJhbmdlX2ludGVyc2VjdF9hZ2cobm1yKSBmcm9tICh2YWx1ZXMg KCd7WzEsMl19Jzo6bnVtbXVsdGlyYW5nZSkpIHQobm1yKTsKK3NlbGVjdCByYW5nZV9pbnRl cnNlY3RfYWdnKG5tcikgZnJvbSAodmFsdWVzICgne1sxLDZdLCBbMTAsMTJdfSc6Om51bW11 bHRpcmFuZ2UpKSB0KG5tcik7CiBzZWxlY3QgcmFuZ2VfaW50ZXJzZWN0X2FnZyhubXIpIGZy b20gbnVtbXVsdGlyYW5nZV90ZXN0IHdoZXJlIG5tciBAPiA0LjA7CiAKIGNyZWF0ZSB0YWJs ZSBudW1tdWx0aXJhbmdlX3Rlc3QyKG5tciBudW1tdWx0aXJhbmdlKTsKIGNyZWF0ZSBpbmRl eCBudW1tdWx0aXJhbmdlX3Rlc3QyX2hhc2hfaWR4IG9uIG51bW11bHRpcmFuZ2VfdGVzdDIg dXNpbmcgaGFzaCAobm1yKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29w cl9zYW5pdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwKaW5k ZXggMmIyOTI4NTFlMy4uYmJjZmZkYTIyOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvb3ByX3Nhbml0eS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nh bml0eS5zcWwKQEAgLTE1Miw4ICsxNTIsOSBAQCBXSEVSRSBwMS5vaWQgIT0gcDIub2lkIEFO RAogICAgIHAxLnByb3NyYyBOT1QgTElLRSBFJ3JhbmdlXFxfY29uc3RydWN0b3JfJyBBTkQK ICAgICBwMi5wcm9zcmMgTk9UIExJS0UgRSdyYW5nZVxcX2NvbnN0cnVjdG9yXycgQU5ECiAg ICAgcDEucHJvc3JjIE5PVCBMSUtFIEUnbXVsdGlyYW5nZVxcX2NvbnN0cnVjdG9yXycgQU5E CiAgICAgcDIucHJvc3JjIE5PVCBMSUtFIEUnbXVsdGlyYW5nZVxcX2NvbnN0cnVjdG9yXycg QU5ECisgICAgcDIucHJvc3JjIE5PVCBMSUtFIEUncmFuZ2VcXF9hZ2dcXF9maW5hbGZuJyBB TkQKICAgICAocDEucHJvYXJndHlwZXNbMV0gPCBwMi5wcm9hcmd0eXBlc1sxXSkKIE9SREVS IEJZIDEsIDI7CiAKIFNFTEVDVCBESVNUSU5DVCBwMS5wcm9hcmd0eXBlc1syXTo6cmVndHlw ZSwgcDIucHJvYXJndHlwZXNbMl06OnJlZ3R5cGUKLS0gCjIuMjUuMQoK --------------GWbMwVsS0Ei3iah3I0e0QP9o--