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 1wRDfN-002Bk6-2m for pgsql-hackers@arkaria.postgresql.org; Sun, 24 May 2026 18:35:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wRDfL-00HCgh-2d for pgsql-hackers@arkaria.postgresql.org; Sun, 24 May 2026 18:35:12 +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 1wRDfL-00HCgY-0A for pgsql-hackers@lists.postgresql.org; Sun, 24 May 2026 18:35:12 +0000 Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wRDfI-00000000ana-1G68 for pgsql-hackers@lists.postgresql.org; Sun, 24 May 2026 18:35:11 +0000 Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-3937014be0cso28394741fa.0 for ; Sun, 24 May 2026 11:35:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779647705; cv=none; d=google.com; s=arc-20240605; b=WiSWbo47TdXuUYrKEDODnx4joth9DzjdfkdoIWzvwp9Yd8zn+kx7eOXXrCnpfQiKn5 0hXK3eE6TjU88Dk+x/yEg2sNV7gemC8QuOABRQ4c4/QtGxpH8JQedpxMkTmVDbiwLVDC JEnVh6wwYcytXRKU6uCA70TQCnG2k14riOb8uSJhnKPv6v4uk8OAw2aLc7eHT+qgn7JV 6q7xyIOmHIMYJQH1122Af8YxfQOCM7V0Nz1Q8p8RXARmHJUo4Vv0l0yBXEv7Rj2UVfoZ ffoEn2pko7GtlpvBsiRifcavPH2fmLzmAt3BWAkq81JcvOWZyFgp1wl0RaAZnBirl3dS THVw== 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=+sl2a6DTXhamltyn47lI44W4+u47g9cdwT5os+lEUa4=; fh=V5mHBUaQ8mbIWdEGRyuLKevuduy5/cJP/BkKsI8jAwA=; b=WXTabW+XN1Z1ElYcmjcaH9XLhqiLrfKcYwpN80ECLSy8G+DOagWhHOh3rzSQbTn+5/ KPxdyiuOooLSK7sCKY8aOVC+mqUULOWsxUNf3ltAQSDb9bUoEgocn7Y1AkpkcQd6bO1d 79hmAln9AUVsQZLk94mcnkHr7PfeQe3loTaXxWm0B2qjVIjM6q52CDuEqpVlhilOwaWu y+rnZDcf+rjKlatVAai6TPA2o7UWCLsS0FCRHMO+/SDKL/V8ERdI+wvBWN5B+qr1FmDq 54rrffZgRy4uygjiPa3PnDcUtBRpFYL5YlOMxjOCvfJgAnqfkqJkBpWNFsbs4pxQVbtd KTsA==; darn=lists.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=1779647705; x=1780252505; darn=lists.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=+sl2a6DTXhamltyn47lI44W4+u47g9cdwT5os+lEUa4=; b=B922LHI6PqUDEZKPx+Y6jAifFMo96h6uZ+ClQpJ9RdI+dv9nGX/xyIvsidFNdTDkxu qhq+cfprC8aZAVIzHltdVp/Os4HjLuME2Fl8yTgHeP4Mg0pXdzcMbP6k2M1QCRB7sKuW gI4pdH0PwP/joNq8PoESz3zp6SkViF6vwfHSQhmq+TyTHkQ6+9FTEXCNoiEJMxfMdk/Q C3M+jRIBE9vUfOL8Xj5gMEA2MnyjPERCg2545oelt2xjDIItwbvmGNjg4KDK12Nzvadr cWuLFpcj+zjqX9j3kPHIaFkT2KuxKD7xJep2LBbUOfjlgaimuUNhnJN0y6TMlizQmNcC r9HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779647705; x=1780252505; 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=+sl2a6DTXhamltyn47lI44W4+u47g9cdwT5os+lEUa4=; b=liMRya7uVhyGKOZd/mLZ6RjmN1bFX9UN5fYXpAFRcfYZcjtS72f07nw4GEYTxdDXpy e+fFnR1xOwoN+drM6SVUsc5CyQIpypySgIhZRqcfZ+/VCye+dHYmgNVBIAjsqXmXzhI2 da2fuaxTr2W3ipAc4Ty9kNBePTd4mZcE2rBPQBDKET4YzxA9qnze2j6B3j+5iSJ/hEsN fo1s/IobFX6VU+JGVRbvL+MqASABQ9O+w3uLBlqqI+glNVIZEEFqRR0Rgzt1IeIJAcw+ YK8qUIluvzSPW6ELbK9e46s3vbzcHcUS9Nwt1KJ0j0Mx8SgZMmFDItj+FCxmOB2tlmEr wAmA== X-Gm-Message-State: AOJu0Yzel98A/DOf7LvYc9dBKJc+9Gz+HdQp9OKb+8UFsJ6HBWqH6cdU rAB4pfp0ahppcXeZYSiKZNpiKXmjcW4TM80Ycd/AEwBlFnqMFPHlueU8kx3nehOqlAk59+A5/m+ X7AYnnn8r7iFi2G1HHwec1JQHTRBfvCy6Rxh2SFg= X-Gm-Gg: Acq92OFLa0TVzjjoZCgI8qgHUWZcxK0jhIAl4aHTH55ELtG5uW5iSF6Zv4ZWJBt5t/t bN3959kB39aC5vrf8O6LeMwMTyJ1SchI6AbijlDr18JDZDbHEkh5ZKUwbIkjJdaRH0kwvFVv/OS geooD8Oo49gQs8dIuKyr3jdYTXSIFphGMfXUiofKvsXldOXH/7kpv2JVuAs3HyIidD8wn4YbPDX M9fjyK7KXaokgWq7326DKz/5zVNkeyGdmROwORKkcdyMu4JOoomX6Swfsl1a/VnBZ6iJwHASBAd Bg6Xz8JO3XA0bbUu9Yy5bJ1gcn0edWv4M31VkqF5yg== X-Received: by 2002:a05:651c:1989:b0:394:898:a351 with SMTP id 38308e7fff4ca-395d8cc2598mr33916841fa.13.1779647705063; Sun, 24 May 2026 11:35:05 -0700 (PDT) MIME-Version: 1.0 References: <00d52d6f-ae9e-40df-80d3-9e96a23efa70@tantorlabs.com> In-Reply-To: <00d52d6f-ae9e-40df-80d3-9e96a23efa70@tantorlabs.com> From: =?UTF-8?Q?Enrique_S=C3=A1nchez?= Date: Sun, 24 May 2026 20:34:52 +0200 X-Gm-Features: AVHnY4LivNqvjE_X5h3SBllDNnU5EtCv6dlIHcy-eDDIMZOVUN68SXwTW74-G5A Message-ID: Subject: Re: Extended statistics improvement: multi-column MCV missing values To: Ilia Evdokimov Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000049491e0652948523" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000049491e0652948523 Content-Type: multipart/alternative; boundary="00000000000049491d0652948521" --00000000000049491d0652948521 Content-Type: text/plain; charset="UTF-8" Hi Ilia, > 1. Cap selectivity with the last MCV item's frequency I've attached a draft patch. It's split into 4 commits to make it easier to review. It adds the MCV cap for AND (equality, IN, ANY) clauses. Looking forward to your feedback. On 5/19/26 0:13, Ilia Evdokimov wrote: > Postgres only uses multi-column MCVs when the value we are looking for is > in the list. If not, it falls back into individual independent statistics > to estimate selectivity. > However, a miss in a multi-column MCV list still yields valuable > information that it currently throws away: we know that the combination's > frequency is strictly bounded by the frequency of the last (least common) > item in that MCV list. > > LGTM. If the multicolumn MCV statistics exists and the clause combination > is absent from the MCV-list, we can use the least frequent MCV item as an > upper bound. BTW, this only applies to AND-clauses. > Given that the inclusion-exclusion principle (P(A OR B) = P(A) + P(B) - P(A AND B)) is used to calculate OR paths, we could use the same cap to improve the overlap estimation (P(A AND B)). 2. Estimate selectivity as Postgres does for single-column values not in > MCVs > > ============================================================================= > While that significantly improves estimations, we could mirror what > Postgres already does for individual MCVs. Quote from the official > documentation: > > The approach is to use the fact that the value is not in the list, > combined with the knowledge of the frequencies for all of the MCVs: > > That is, add up all the frequencies for the MCVs and subtract them from > one, then divide by the number of other distinct values. > > To achieve this, we need to store an ndistinct estimation alongside the > MCVs that can be used for partial or entire column match. > > P(1, 1, 1) = (1 - sum(MCVs)) / (ndistinct(col_a, col_b, col_c) - > MCV_list_size) > ... > I think this is a cheap way to prevent bad estimations. The storage > overhead of adding an ndistinct field is trivial compared to the MCV list > itself, and the O(1) arithmetic during planning adds no measurable > overhead. I look forward to your feedback before drafting a patch. > > For this, the ndistinct extended statistics already exist. If both MCV and > ndistinct statistics are present on the same column set, the formula is > correct. There are already places in the code that compute ndistinct for > columns without extended ndistinct statistics (see estimate_num_groups) - > but it is worth thinking carefully about whether the added complexity is > justified before going down that path. > I think that the implementation would look similar to the attached patch. The only added complexity is getting the ndistinct estimation. There are 2 ways: - Rely on the extended ndistinct statistic if it exists - Calculate the ndistinct(col_a, col_b, col_c) statistic as part of the MCV. The storage cost is negligible compared to the MCV list and it keeps the MCV statistic complete, so it doesn't need to check if the ndistinct statistic exists. That would be a change on the MCV struct, meaning a change in the mcvlist->type. I can start working on a proposal for this second part. Let me know what you think. Best regards, Enrique. --00000000000049491d0652948521 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Ilia,

> 1. Cap selectivity with = the last MCV item's frequency

I've attached a draft patch. It's split into 4 co= mmits to make it easier to review. It adds the MCV cap for AND (equality, I= N, ANY) clauses. Looking forward to your feedback.

On 5/19/26 0:13,=C2=A0Ilia Evdokimov=C2=A0wrote:
=20
Postgres only uses multi-column MCVs when the value we are looking for is in the list. If not, it falls back into individual independent statistics to estimate selectivity.
However, a miss in a multi-column MCV list still yields valuable information that it currently throws away: we know that the combination's frequency is strictly bounded by the frequency of the last (least common) item in that MCV list.

LGTM. If the multicolumn MCV statistics exists and the clause combination is absent from the MCV-list, we can use the least frequent MCV item as an upper bound. BTW, this only applies to AND-clauses.

Given that the inclusion-exclusion principle (P(A OR B) =3D P(A) += P(B) - P(A AND B)) is used to calculate OR paths, we could use the same ca= p to improve the overlap estimation (P(A AND B)).

2. Estimate selectivity as Postgres does for single-column values not in MCVs
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D
While that significantly improves estimations, we could mirror what Postgres already does for individual MCVs. Quote from the official documentation:
> The approach is to use the fact that the value is not in the list, combined with the knowledge of the frequencies for all of the MCVs:
> That is, add up all the frequencies for the MCVs and subtract them from one, then divide by the number of other distinct values.

To achieve this, we need to store an ndistinct estimation alongside the MCVs that can be used for partial or entire column match.

P(1, 1, 1) =3D (1 - sum(MCVs)) / (ndistinct(col_a, col_b, col_c) - MCV_list_size)
...
I think this is a cheap way to prevent bad estimations. The storage overhead of adding an ndistinct field is trivial compared to the MCV list itself, and the O(1) arithmetic during planning adds no measurable overhead. I look forward to your feedback before drafting a patch.

For this, the ndistinct extended statistics already exist. If both MCV and ndistinct statistics are present on the same column set, the formula is correct. There are already places in the code that compute ndistinct for columns without extended ndistinct statistics (see estimate_num_groups) - but it is worth thinking carefully about whether the added complexity is justified before going down that path.

I think that the implementation would look similar to the= attached patch. The only added=C2=A0complexity is getting the ndistinct es= timation. There are 2 ways:
- Rely on the extended ndistinct statistic i= f it exists
- Calculate the ndistinct(col_a, col_b, col_c) statistic as = part of the MCV. The storage cost is negligible compared to the MCV list an= d it keeps the MCV statistic complete, so it doesn't need to check if t= he ndistinct statistic exists. That would be a change on the MCV struct, me= aning a change in the mcvlist->type.

I can start working on a proposal for this second part. Let me know wh= at you think.

Best regards,
Enrique.
--00000000000049491d0652948521-- --00000000000049491e0652948523 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0004-Extend-multi-column-MCV-cap-to-AND-clauses-inside-OR.patch" Content-Disposition: attachment; filename="v1-0004-Extend-multi-column-MCV-cap-to-AND-clauses-inside-OR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpk46z990 RnJvbSAxNDVjNTZmZjY1Nzg1ZWI1NTllNzIwZjNjMDRiOTA4YTU3YzYxOTQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnJpcXVlIFNhbmNoZXogQ2FyZG9zbyA8ZW5yaXF1ZWVzYW5j aHpAZ21haWwuY29tPgpEYXRlOiBTdW4sIDI0IE1heSAyMDI2IDE5OjA5OjI2ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCA0LzRdIEV4dGVuZCBtdWx0aS1jb2x1bW4gTUNWIGNhcCB0byBBTkQgY2xhdXNl cyBpbnNpZGUgT1IKIGV4cHJlc3Npb25zCgotLS0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0 ZW5kZWRfc3RhdHMuYyAgICAgICB8IDEyICsrKy0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2 LmMgICAgICAgICAgICAgICAgICB8IDY4ICsrKysrKysrKysrKysrKy0tLS0KIC4uLi9zdGF0aXN0 aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmggICAgICB8ICAzICstCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgICAgICAgfCAxNiArKysrLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgICAgICAgIHwgIDggKystCiA1IGZpbGVzIGNoYW5n ZWQsIDkwIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3Rp Y3MvZXh0ZW5kZWRfc3RhdHMuYwppbmRleCBkYTZmNjMxNTY5OC4uZmM2Zjc5MDViYjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYworKysgYi9zcmMv YmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKQEAgLTE5MTUsNyArMTkxNSw4IEBA IHN0YXRleHRfbWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExp c3QgKmNsYXVzZXMsIGludCB2YXJSZWxpCiAJCQkJCQkJb3ZlcmxhcF9iYXNlc2VsLAogCQkJCQkJ CW1jdl90b3RhbHNlbCwKIAkJCQkJCQljbGF1c2Vfc2VsLAotCQkJCQkJCW92ZXJsYXBfc2VsOwor CQkJCQkJCW92ZXJsYXBfc2VsLAorCQkJCQkJCWNsYXVzZV9jYXA7CiAKIAkJCQkvKgogCQkJCSAq ICJTaW1wbGUiIHNlbGVjdGl2aXR5IG9mIHRoZSBuZXh0IGNsYXVzZSBhbmQgaXRzIG92ZXJsYXAK QEAgLTE5NDUsNyArMTk0Niw4IEBAIHN0YXRleHRfbWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHko UGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsIGludCB2YXJSZWxpCiAJCQkJCQkJCQkJ CQkJJm1jdl9iYXNlc2VsLAogCQkJCQkJCQkJCQkJCSZvdmVybGFwX21jdnNlbCwKIAkJCQkJCQkJ CQkJCQkmb3ZlcmxhcF9iYXNlc2VsLAotCQkJCQkJCQkJCQkJCSZtY3ZfdG90YWxzZWwpOworCQkJ CQkJCQkJCQkJCSZtY3ZfdG90YWxzZWwsCisJCQkJCQkJCQkJCQkJJmNsYXVzZV9jYXApOwogCiAJ CQkJLyoKIAkJCQkgKiBDb21iaW5lIHRoZSBzaW1wbGUgYW5kIG11bHRpLWNvbHVtbiBlc3RpbWF0 ZXMuCkBAIC0xOTU5LDExICsxOTYxLDE3IEBAIHN0YXRleHRfbWN2X2NsYXVzZWxpc3Rfc2VsZWN0 aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsIGludCB2YXJSZWxpCiAJCQkJ aWYgKGJtc19pc19tZW1iZXIobGlzdGlkeCwgc2ltcGxlX2NsYXVzZXMpKQogCQkJCQljbGF1c2Vf c2VsID0gc2ltcGxlX3NlbDsKIAkJCQllbHNlCisJCQkJewogCQkJCQljbGF1c2Vfc2VsID0gbWN2 X2NvbWJpbmVfc2VsZWN0aXZpdGllcyhzaW1wbGVfc2VsLAogCQkJCQkJCQkJCQkJCQkgICBtY3Zf c2VsLAogCQkJCQkJCQkJCQkJCQkgICBtY3ZfYmFzZXNlbCwKIAkJCQkJCQkJCQkJCQkJICAgbWN2 X3RvdGFsc2VsKTsKIAorCQkJCQkvKiBDYXAgdGhlIGNvbnRyaWJ1dGlvbiBvZiB2YWx1ZXMgbm90 IGZvdW5kIGluIHRoZSBNQ1YuICovCisJCQkJCWlmIChjbGF1c2Vfc2VsID4gY2xhdXNlX2NhcCkK KwkJCQkJCWNsYXVzZV9zZWwgPSBjbGF1c2VfY2FwOworCQkJCX0KKwogCQkJCW92ZXJsYXBfc2Vs ID0gbWN2X2NvbWJpbmVfc2VsZWN0aXZpdGllcyhvdmVybGFwX3NpbXBsZV9zZWwsCiAJCQkJCQkJ CQkJCQkJCW92ZXJsYXBfbWN2c2VsLAogCQkJCQkJCQkJCQkJCQlvdmVybGFwX2Jhc2VzZWwsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jIGIvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9tY3YuYwppbmRleCA2Mjc2MWM1OGUzMy4uZGY3NTA4NzM5MWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9tY3YuYwpAQCAtMTU3Nyw2ICsxNTc3LDQwIEBAIG1jdl9jYXBfbXVsdGlwbGllcihMaXN0ICpj bGF1c2VzKQogCXJldHVybiBtdWx0aXBsaWVyOwogfQogCisvKgorICogbWN2X2NvbXB1dGVfY2Fw CisgKgkJQ29tcHV0ZSBhIHNlbGVjdGl2aXR5IGNhcCBiYXNlZCBvbiB0aGUgbGVhc3QgY29tbW9u IE1DViBmcmVxdWVuY3kuCisgKgorICogV2hlbiBvbmUgZXF1YWxpdHkvSU4gY2xhdXNlIGNvdmVy cyBlYWNoIE1DViBkaW1lbnNpb24sIHZhbHVlIGNvbWJpbmF0aW9ucworICogbm90IGZvdW5kIGlu IHRoZSBNQ1YgY2FuJ3QgYmUgbW9yZSBmcmVxdWVudCB0aGFuIHRoZSBsZWFzdCBjb21tb24gdHJh Y2tlZAorICogY29tYmluYXRpb24uICBUaGUgY2FwIGlzOiBtYXRjaGVkIE1DViBmcmVxdWVuY3kg cGx1cyB0aGUgbnVtYmVyIG9mCisgKiBub24tTUNWIGNvbWJpbmF0aW9ucyB0aW1lcyB0aGUgbGVh c3QgY29tbW9uIE1DViBmcmVxdWVuY3kuCisgKgorICogUmV0dXJucyAxLjAgKG5vIGNhcCkgd2hl biB0aGUgY2xhdXNlcyBkb24ndCBmdWxseSBjb3ZlciBhbGwgZGltZW5zaW9ucworICogb3IgY29u dGFpbiB1bnN1cHBvcnRlZCBjbGF1c2UgdHlwZXMuCisgKi8KK3N0YXRpYyBTZWxlY3Rpdml0eQor bWN2X2NvbXB1dGVfY2FwKE1DVkxpc3QgKm1jdiwgTGlzdCAqY2xhdXNlcywgU2VsZWN0aXZpdHkg bWN2X3NlbCwKKwkJCQkJIGludDY0IG1hdGNoZWRfY291bnQpCit7CisJaW50NjQJCWNhcF9tdWx0 OworCWludDY0CQlub25fbWN2X211bHQ7CisJU2VsZWN0aXZpdHkgY2FwOworCisJaWYgKGxpc3Rf bGVuZ3RoKGNsYXVzZXMpICE9IG1jdi0+bmRpbWVuc2lvbnMpCisJCXJldHVybiAxLjA7CisKKwlj YXBfbXVsdCA9IG1jdl9jYXBfbXVsdGlwbGllcihjbGF1c2VzKTsKKwlub25fbWN2X211bHQgPSBj YXBfbXVsdCAtIG1hdGNoZWRfY291bnQ7CisKKwlpZiAobm9uX21jdl9tdWx0IDw9IDApCisJCXJl dHVybiAxLjA7CisKKwljYXAgPSBtY3Zfc2VsICsgbm9uX21jdl9tdWx0ICogbWN2LT5pdGVtc1tt Y3YtPm5pdGVtcyAtIDFdLmZyZXF1ZW5jeTsKKwlDTEFNUF9QUk9CQUJJTElUWShjYXApOworCXJl dHVybiBjYXA7Cit9CisKIC8qCiAgKiBtYXRjaCB0aGUgYXR0cmlidXRlL2V4cHJlc3Npb24gdG8g YSBkaW1lbnNpb24gb2YgdGhlIHN0YXRpc3RpYwogICoKQEAgLTIxNDQsMTcgKzIxNzgsNyBAQCBt Y3ZfY2xhdXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwgU3RhdGlzdGljRXh0 SW5mbyAqc3RhdCwKIAkgKiBjb21iaW5hdGlvbiBpcyBub3QgYW1vbmcgdGhlIG1vc3QgY29tbW9u LCBzbyBpdCBjYW4ndCBiZSBtb3JlIGZyZXF1ZW50CiAJICogdGhhbiB0aGUgbGVhc3QgY29tbW9u IHRyYWNrZWQgY29tYmluYXRpb24uCiAJICovCi0JaWYgKG1jdi0+bmRpbWVuc2lvbnMgPT0gbGlz dF9sZW5ndGgoY2xhdXNlcykpCi0JewotCQlpbnQ2NAkJY2FwX211bHQgPSBtY3ZfY2FwX211bHRp cGxpZXIoY2xhdXNlcyk7Ci0JCWludDY0CQlub25fbWN2X211bHQgPSBjYXBfbXVsdCAtIG1hdGNo ZWRfY291bnQ7Ci0KLQkJaWYgKG5vbl9tY3ZfbXVsdCA+IDApCi0JCXsKLQkJCSpjYXAgPSBzICsg bm9uX21jdl9tdWx0ICogbWN2LT5pdGVtc1ttY3YtPm5pdGVtcyAtIDFdLmZyZXF1ZW5jeTsKLQkJ CUNMQU1QX1BST0JBQklMSVRZKCpjYXApOwotCQl9Ci0JfQorCSpjYXAgPSBtY3ZfY29tcHV0ZV9j YXAobWN2LCBjbGF1c2VzLCBzLCBtYXRjaGVkX2NvdW50KTsKIAogCXJldHVybiBzOwogfQpAQCAt MjIwMiwxMSArMjIyNiwxNiBAQCBTZWxlY3Rpdml0eQogbWN2X2NsYXVzZV9zZWxlY3Rpdml0eV9v cihQbGFubmVySW5mbyAqcm9vdCwgU3RhdGlzdGljRXh0SW5mbyAqc3RhdCwKIAkJCQkJCSAgTUNW TGlzdCAqbWN2LCBOb2RlICpjbGF1c2UsIGJvb2wgKipvcl9tYXRjaGVzLAogCQkJCQkJICBTZWxl Y3Rpdml0eSAqYmFzZXNlbCwgU2VsZWN0aXZpdHkgKm92ZXJsYXBfbWN2c2VsLAotCQkJCQkJICBT ZWxlY3Rpdml0eSAqb3ZlcmxhcF9iYXNlc2VsLCBTZWxlY3Rpdml0eSAqdG90YWxzZWwpCisJCQkJ CQkgIFNlbGVjdGl2aXR5ICpvdmVybGFwX2Jhc2VzZWwsIFNlbGVjdGl2aXR5ICp0b3RhbHNlbCwK KwkJCQkJCSAgU2VsZWN0aXZpdHkgKmNsYXVzZV9jYXApCiB7CiAJU2VsZWN0aXZpdHkgcyA9IDAu MDsKIAlib29sCSAgICpuZXdfbWF0Y2hlczsKIAlpbnQJCQlpOworCWludDY0CQltYXRjaGVkX2Nv dW50ID0gMDsKKworCS8qIGRlZmF1bHQ6IG5vIGNhcCBvbiBjbGF1c2Ugc2VsZWN0aXZpdHkgKi8K KwkqY2xhdXNlX2NhcCA9IDEuMDsKIAogCS8qIGJ1aWxkIHRoZSBPUi1tYXRjaGVzIGJpdG1hcCwg aWYgbm90IGJ1aWx0IGFscmVhZHkgKi8KIAlpZiAoKm9yX21hdGNoZXMgPT0gTlVMTCkKQEAgLTIy MzMsNiArMjI2Miw3IEBAIG1jdl9jbGF1c2Vfc2VsZWN0aXZpdHlfb3IoUGxhbm5lckluZm8gKnJv b3QsIFN0YXRpc3RpY0V4dEluZm8gKnN0YXQsCiAJCXsKIAkJCXMgKz0gbWN2LT5pdGVtc1tpXS5m cmVxdWVuY3k7CiAJCQkqYmFzZXNlbCArPSBtY3YtPml0ZW1zW2ldLmJhc2VfZnJlcXVlbmN5Owor CQkJbWF0Y2hlZF9jb3VudCsrOwogCiAJCQlpZiAoKCpvcl9tYXRjaGVzKVtpXSkKIAkJCXsKQEAg LTIyNDcsNiArMjI3NywyMCBAQCBtY3ZfY2xhdXNlX3NlbGVjdGl2aXR5X29yKFBsYW5uZXJJbmZv ICpyb290LCBTdGF0aXN0aWNFeHRJbmZvICpzdGF0LAogCiAJcGZyZWUobmV3X21hdGNoZXMpOwog CisJLyoKKwkgKiBXaGVuIHRoZXJlIGlzIG9uZSBlcXVhbGl0eS9JTiBjbGF1c2UgcGVyIE1DViBk aW1lbnNpb24sIGNhcCB0aGUKKwkgKiBjb250cmlidXRpb24gb2YgdmFsdWUgY29tYmluYXRpb25z IG5vdCBmb3VuZCBpbiB0aGUgTUNWLiAgRWFjaCBzdWNoCisJICogY29tYmluYXRpb24gaXMgbm90 IGFtb25nIHRoZSBtb3N0IGNvbW1vbiwgc28gaXQgY2FuJ3QgYmUgbW9yZSBmcmVxdWVudAorCSAq IHRoYW4gdGhlIGxlYXN0IGNvbW1vbiB0cmFja2VkIGNvbWJpbmF0aW9uLgorCSAqLworCWlmIChp c19hbmRjbGF1c2UoY2xhdXNlKSkKKwl7CisJCUJvb2xFeHByICAgKmJleHByID0gKEJvb2xFeHBy ICopIGNsYXVzZTsKKworCQkqY2xhdXNlX2NhcCA9IG1jdl9jb21wdXRlX2NhcChtY3YsIGJleHBy LT5hcmdzLCBzLAorCQkJCQkJCQkJCQkJbWF0Y2hlZF9jb3VudCk7CisJfQorCiAJcmV0dXJuIHM7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNf aW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJu YWwuaAppbmRleCAwMWI1ZjY3Yjg0My4uMTBmNDFmODc1NjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVk ZS9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgKQEAgLTE0MCw2ICsxNDAsNyBA QCBleHRlcm4gU2VsZWN0aXZpdHkgbWN2X2NsYXVzZV9zZWxlY3Rpdml0eV9vcihQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJIFNlbGVjdGl2aXR5ICpiYXNlc2VsLAogCQkJCQkJCQkJCQkg U2VsZWN0aXZpdHkgKm92ZXJsYXBfbWN2c2VsLAogCQkJCQkJCQkJCQkgU2VsZWN0aXZpdHkgKm92 ZXJsYXBfYmFzZXNlbCwKLQkJCQkJCQkJCQkJIFNlbGVjdGl2aXR5ICp0b3RhbHNlbCk7CisJCQkJ CQkJCQkJCSBTZWxlY3Rpdml0eSAqdG90YWxzZWwsCisJCQkJCQkJCQkJCSBTZWxlY3Rpdml0eSAq Y2xhdXNlX2NhcCk7CiAKICNlbmRpZgkJCQkJCQkvKiBFWFRFTkRFRF9TVEFUU19JTlRFUk5BTF9I ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKaW5kZXggN2VhMjQ0Zjc4 NTEuLmM3MTI2NzliNTczIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0 YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0 CkBAIC0yOTMxLDcgKzI5MzEsNyBAQCBEUk9QIFRBQkxFIG1jdl9saXN0c19wYXJ0aWFsOwogLS0g UChhPTApPTAuNSBhbmQgUChiPTApPTAuNSwgc28gdGhlIGluZGVwZW5kZW5jZSBlc3RpbWF0ZSBp cyAwLjI1ICogTi4KIC0tIEFmdGVyIGJ1aWxkaW5nIE1DViBzdGF0aXN0aWNzIHRoZSBjYXAgbGlt aXRzIHRoZSBjb21iaW5lZCBlc3RpbWF0ZSB0byB0aGUKIC0tIGxlYXN0LWNvbW1vbiBNQ1YgZnJl cXVlbmN5LCBlbGltaW5hdGluZyBtb3N0IG9mIHRoZSBvdmVyLWVzdGltYXRpb24uCi1DUkVBVEUg VEFCTEUgbWN2X2NhcCAoYSBJTlQsIGIgSU5UKSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBv ZmYpOworQ1JFQVRFIFRBQkxFIG1jdl9jYXAgKGEgSU5ULCBiIElOVCwgYyBJTlQgREVGQVVMVCAw KSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYpOwogSU5TRVJUIElOVE8gbWN2X2NhcAog ICAgIFNFTEVDVCAwLCBiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDk5KSBiLCBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwKSByOwogSU5TRVJUIElOVE8gbWN2X2NhcApAQCAtMjk3OSw2ICsyOTc5LDIw IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gbWN2 X2NhcCBXSEVSRSBhID0gMCBBTkQgYiBJTiAoCiAgICAgICAgMjAwIHwgICAgICAwCiAoMSByb3cp CiAKKy0tIHBhcnRpYWwgTUNWIG1hdGNoIGluc2lkZSBPUiAoYT0wLCBiPTk5KQorU0VMRUNUICog RlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBtY3ZfY2FwIFdIRVJFIGMg PSAxIE9SIChhID0gMCBBTkQgYiBJTiAoMCwgOTkpKScpOworIGVzdGltYXRlZCB8IGFjdHVhbCAK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICAgMjAwIHwgICAgMTAwCisoMSByb3cpCisKKy0t IG5vIE1DViBtYXRjaCBpbnNpZGUgT1IKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jv d3MoJ1NFTEVDVCAqIEZST00gbWN2X2NhcCBXSEVSRSBjID0gMSBPUiAoYSA9IDAgQU5EIGIgPSAw KScpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICAg MTAwIHwgICAgICAwCisoMSByb3cpCisKIERST1AgVEFCTEUgbWN2X2NhcDsKIC0tIGNoZWNrIHRo ZSBhYmlsaXR5IHRvIHVzZSBtdWx0aXBsZSBNQ1YgbGlzdHMKIENSRUFURSBUQUJMRSBtY3ZfbGlz dHNfbXVsdGkgKApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKaW5kZXggOGUwYjhjMGViNWMu LjkyNmRmYWE0ZTZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKQEAgLTE0NjgsNyAr MTQ2OCw3IEBAIERST1AgVEFCTEUgbWN2X2xpc3RzX3BhcnRpYWw7CiAtLSBQKGE9MCk9MC41IGFu ZCBQKGI9MCk9MC41LCBzbyB0aGUgaW5kZXBlbmRlbmNlIGVzdGltYXRlIGlzIDAuMjUgKiBOLgog LS0gQWZ0ZXIgYnVpbGRpbmcgTUNWIHN0YXRpc3RpY3MgdGhlIGNhcCBsaW1pdHMgdGhlIGNvbWJp bmVkIGVzdGltYXRlIHRvIHRoZQogLS0gbGVhc3QtY29tbW9uIE1DViBmcmVxdWVuY3ksIGVsaW1p bmF0aW5nIG1vc3Qgb2YgdGhlIG92ZXItZXN0aW1hdGlvbi4KLUNSRUFURSBUQUJMRSBtY3ZfY2Fw IChhIElOVCwgYiBJTlQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZik7CitDUkVBVEUg VEFCTEUgbWN2X2NhcCAoYSBJTlQsIGIgSU5ULCBjIElOVCBERUZBVUxUIDApIFdJVEggKGF1dG92 YWN1dW1fZW5hYmxlZCA9IG9mZik7CiAKIElOU0VSVCBJTlRPIG1jdl9jYXAKICAgICBTRUxFQ1Qg MCwgYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA5OSkgYiwgZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MCkgcjsKQEAgLTE0OTcsNiArMTQ5NywxMiBAQCBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRl ZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1jdl9jYXAgV0hFUkUgYSA9IDAgQU5EIGIgSU4gKAogLS0g bm8gTUNWIG1hdGNoCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1Qg KiBGUk9NIG1jdl9jYXAgV0hFUkUgYSA9IDAgQU5EIGIgSU4gKDAsIDEwMCknKTsKIAorLS0gcGFy dGlhbCBNQ1YgbWF0Y2ggaW5zaWRlIE9SIChhPTAsIGI9OTkpCitTRUxFQ1QgKiBGUk9NIGNoZWNr X2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1jdl9jYXAgV0hFUkUgYyA9IDEgT1IgKGEg PSAwIEFORCBiIElOICgwLCA5OSkpJyk7CisKKy0tIG5vIE1DViBtYXRjaCBpbnNpZGUgT1IKK1NF TEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gbWN2X2NhcCBX SEVSRSBjID0gMSBPUiAoYSA9IDAgQU5EIGIgPSAwKScpOworCiBEUk9QIFRBQkxFIG1jdl9jYXA7 CiAKIC0tIGNoZWNrIHRoZSBhYmlsaXR5IHRvIHVzZSBtdWx0aXBsZSBNQ1YgbGlzdHMKLS0gCjIu NDMuMAoK --00000000000049491e0652948523 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-Cap-selectivity-when-values-are-not-in-multi-column-.patch" Content-Disposition: attachment; filename="v1-0001-Cap-selectivity-when-values-are-not-in-multi-column-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpk46z9u3 RnJvbSA0MmEzNmU2ZDk4ZDc2NDJlODc1MDBkZThmMTM4ZTFmNTQxNjBmZTU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnJpcXVlIFNhbmNoZXogQ2FyZG9zbyA8ZW5yaXF1ZWVzYW5j aHpAZ21haWwuY29tPgpEYXRlOiBTdW4sIDI0IE1heSAyMDI2IDAxOjAzOjE0ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAxLzRdIENhcCBzZWxlY3Rpdml0eSB3aGVuIHZhbHVlcyBhcmUgbm90IGluIG11 bHRpLWNvbHVtbiBtY3YKClNlbGVjdGl2aXR5IGNhbid0IGJlID4gbGFzdCBNQ1YgaXRlbSAobGVh c3QgY29tbW9uKSBzZWxlY3Rpdml0eSB3aGVuCnRoZXkgYXJlIEFORCBjbGF1c2VzIGFuZCBjb3Zl ciBhbGwgdGhlIE1DViBkaW1lbnNpb25zLgotLS0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0 ZW5kZWRfc3RhdHMuYyAgICAgICB8IDExICsrKy0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2 LmMgICAgICAgICAgICAgICAgICB8IDQzICsrKysrKysrKysrKysrLQogLi4uL3N0YXRpc3RpY3Mv ZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaCAgICAgIHwgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCAgICAgICB8IDUyICsrKysrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwgICAgICAgICAgICB8IDM0ICsrKysrKysr KysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNDAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMgYi9z cmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggMmI4MzM1NWQyNmUu LmY4YzM4NjUzYmY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVk X3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBA IC0xOTg5LDYgKzE5ODksNyBAQCBzdGF0ZXh0X21jdl9jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBs YW5uZXJJbmZvICpyb290LCBMaXN0ICpjbGF1c2VzLCBpbnQgdmFyUmVsaQogCQkJCQkJbWN2X3Nl bCwKIAkJCQkJCW1jdl9iYXNlc2VsLAogCQkJCQkJbWN2X3RvdGFsc2VsLAorCQkJCQkJbWN2X2Nh cCwKIAkJCQkJCXN0YXRfc2VsOwogCiAJCQkvKgpAQCAtMjAwNiw3ICsyMDA3LDggQEAgc3RhdGV4 dF9tY3ZfY2xhdXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqY2xh dXNlcywgaW50IHZhclJlbGkKIAkJCW1jdl9zZWwgPSBtY3ZfY2xhdXNlbGlzdF9zZWxlY3Rpdml0 eShyb290LCBzdGF0LCBzdGF0X2NsYXVzZXMsCiAJCQkJCQkJCQkJCQkgdmFyUmVsaWQsIGpvaW50 eXBlLCBzamluZm8sCiAJCQkJCQkJCQkJCQkgcmVsLCAmbWN2X2Jhc2VzZWwsCi0JCQkJCQkJCQkJ CQkgJm1jdl90b3RhbHNlbCk7CisJCQkJCQkJCQkJCQkgJm1jdl90b3RhbHNlbCwKKwkJCQkJCQkJ CQkJCSAmbWN2X2NhcCk7CiAKIAkJCS8qIENvbWJpbmUgdGhlIHNpbXBsZSBhbmQgbXVsdGktY29s dW1uIGVzdGltYXRlcy4gKi8KIAkJCXN0YXRfc2VsID0gbWN2X2NvbWJpbmVfc2VsZWN0aXZpdGll cyhzaW1wbGVfc2VsLApAQCAtMjAxNCw2ICsyMDE2LDEzIEBAIHN0YXRleHRfbWN2X2NsYXVzZWxp c3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsIGludCB2YXJS ZWxpCiAJCQkJCQkJCQkJCQkgbWN2X2Jhc2VzZWwsCiAJCQkJCQkJCQkJCQkgbWN2X3RvdGFsc2Vs KTsKIAorCQkJLyoKKwkJCSAqIENhcCB0byB0aGUgbGVhc3QgY29tbW9uIE1DViBmcmVxdWVuY3kg d2hlbiBubyBNQ1YgaXRlbXMKKwkJCSAqIG1hdGNoZWQuCisJCQkgKi8KKwkJCWlmIChzdGF0X3Nl bCA+IG1jdl9jYXApCisJCQkJc3RhdF9zZWwgPSBtY3ZfY2FwOworCiAJCQkvKiBGYWN0b3IgdGhp cyBpbnRvIHRoZSBvdmVyYWxsIHJlc3VsdCAqLwogCQkJc2VsICo9IHN0YXRfc2VsOwogCQl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jIGIvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9tY3YuYwppbmRleCAwYjdkYTYwNWE0Yy4uZGY3MGQwMGNjM2QgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9tY3YuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInN0YXRpc3RpY3Mvc3RhdGlzdGlj cy5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90 b3MuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxm dW5jcy5oIgpAQCAtMTUyMyw2ICsxNTI0LDMyIEBAIHBnX21jdl9saXN0X3NlbmQoUEdfRlVOQ1RJ T05fQVJHUykKIAlyZXR1cm4gYnl0ZWFzZW5kKGZjaW5mbyk7CiB9CiAKKy8qCisgKiBtY3ZfaXNf YWxsX2VxdWFsaXR5X2NsYXVzZXMKKyAqCQlDaGVjayBpZiBhbGwgY2xhdXNlcyBhcmUgc2ltcGxl IGVxdWFsaXR5IGNvbmRpdGlvbnMgKE9wRXhwciB3aXRoIGVxc2VsCisgKgkJcmVzdHJpY3Rpb24g ZXN0aW1hdG9yKS4gIFRoaXMgbWlycm9ycyB0aGUgY2hlY2sgZG9uZSBieQorICoJCWRlcGVuZGVu Y3lfaXNfY29tcGF0aWJsZV9jbGF1c2UoKSBpbiBkZXBlbmRlbmNpZXMuYy4KKyAqLworc3RhdGlj IGJvb2wKK21jdl9pc19hbGxfZXF1YWxpdHlfY2xhdXNlcyhMaXN0ICpjbGF1c2VzKQoreworCUxp c3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgY2xhdXNlcykKKwl7CisJCU5vZGUJICAgKmNs YXVzZSA9IChOb2RlICopIGxmaXJzdChsYyk7CisKKwkJaWYgKElzQShjbGF1c2UsIFJlc3RyaWN0 SW5mbykpCisJCQljbGF1c2UgPSAoTm9kZSAqKSAoKFJlc3RyaWN0SW5mbyAqKSBjbGF1c2UpLT5j bGF1c2U7CisKKwkJaWYgKCFpc19vcGNsYXVzZShjbGF1c2UpIHx8CisJCQlnZXRfb3BycmVzdCgo KE9wRXhwciAqKSBjbGF1c2UpLT5vcG5vKSAhPSBGX0VRU0VMKQorCQkJcmV0dXJuIGZhbHNlOwor CX0KKworCXJldHVybiB0cnVlOworfQorCiAvKgogICogbWF0Y2ggdGhlIGF0dHJpYnV0ZS9leHBy ZXNzaW9uIHRvIGEgZGltZW5zaW9uIG9mIHRoZSBzdGF0aXN0aWMKICAqCkBAIC0yMDQ3LDcgKzIw NzQsOCBAQCBtY3ZfY2xhdXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwgU3Rh dGlzdGljRXh0SW5mbyAqc3RhdCwKIAkJCQkJCSAgIExpc3QgKmNsYXVzZXMsIGludCB2YXJSZWxp ZCwKIAkJCQkJCSAgIEpvaW5UeXBlIGpvaW50eXBlLCBTcGVjaWFsSm9pbkluZm8gKnNqaW5mbywK IAkJCQkJCSAgIFJlbE9wdEluZm8gKnJlbCwKLQkJCQkJCSAgIFNlbGVjdGl2aXR5ICpiYXNlc2Vs LCBTZWxlY3Rpdml0eSAqdG90YWxzZWwpCisJCQkJCQkgICBTZWxlY3Rpdml0eSAqYmFzZXNlbCwg U2VsZWN0aXZpdHkgKnRvdGFsc2VsLAorCQkJCQkJICAgU2VsZWN0aXZpdHkgKmNhcCkKIHsKIAlp bnQJCQlpOwogCU1DVkxpc3QgICAgKm1jdjsKQEAgLTIwNTcsNiArMjA4NSw5IEBAIG1jdl9jbGF1 c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBTdGF0aXN0aWNFeHRJbmZvICpz dGF0LAogCS8qIG1hdGNoL21pc21hdGNoIGJpdG1hcCBmb3IgZWFjaCBNQ1YgaXRlbSAqLwogCWJv b2wJICAgKm1hdGNoZXMgPSBOVUxMOwogCisJLyogZGVmYXVsdDogbm8gY2FwIG9uIGNvbWJpbmVk IHNlbGVjdGl2aXR5ICovCisJKmNhcCA9IDEuMDsKKwogCS8qIGxvYWQgdGhlIE1DViBsaXN0IHN0 b3JlZCBpbiB0aGUgc3RhdGlzdGljcyBvYmplY3QgKi8KIAltY3YgPSBzdGF0ZXh0X21jdl9sb2Fk KHN0YXQtPnN0YXRPaWQsIHJ0ZS0+aW5oKTsKIApAQCAtMjA3OCw2ICsyMTA5LDE2IEBAIG1jdl9j bGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBTdGF0aXN0aWNFeHRJbmZv ICpzdGF0LAogCQl9CiAJfQogCisJLyoKKwkgKiBXaGVuIG5vIE1DViBpdGVtIG1hdGNoZWQgYW5k IHRoZXJlIGlzIG9uZSBlcXVhbGl0eSBjbGF1c2UgcGVyIE1DVgorCSAqIGRpbWVuc2lvbiwgY2Fw IHRoZSBzZWxlY3Rpdml0eSB0byB0aGUgbGVhc3QgY29tbW9uIE1DViBmcmVxdWVuY3kuIFRoZQor CSAqIGNvbWJpbmF0aW9uIGlzIG5vdCBhbW9uZyB0aGUgbW9zdCBjb21tb24sIHNvIGl0IGNhbid0 IGJlIG1vcmUgZnJlcXVlbnQKKwkgKiB0aGFuIHRoZSBsZWFzdCBjb21tb24gdHJhY2tlZCBjb21i aW5hdGlvbi4KKwkgKi8KKwlpZiAocyA9PSAwLjAgJiYgbWN2LT5uZGltZW5zaW9ucyA9PSBsaXN0 X2xlbmd0aChjbGF1c2VzKSAmJgorCQltY3ZfaXNfYWxsX2VxdWFsaXR5X2NsYXVzZXMoY2xhdXNl cykpCisJCSpjYXAgPSBtY3YtPml0ZW1zW21jdi0+bml0ZW1zIC0gMV0uZnJlcXVlbmN5OworCiAJ cmV0dXJuIHM7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5k ZWRfc3RhdHNfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3Rh dHNfaW50ZXJuYWwuaAppbmRleCBjNzc1NDQyZjJlZS4uMDFiNWY2N2I4NDMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaAorKysgYi9z cmMvaW5jbHVkZS9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgKQEAgLTEyOSw3 ICsxMjksOCBAQCBleHRlcm4gU2VsZWN0aXZpdHkgbWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHko UGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8s CiAJCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJCQkgIFNlbGVjdGl2aXR5 ICpiYXNlc2VsLAotCQkJCQkJCQkJCQkgIFNlbGVjdGl2aXR5ICp0b3RhbHNlbCk7CisJCQkJCQkJ CQkJCSAgU2VsZWN0aXZpdHkgKnRvdGFsc2VsLAorCQkJCQkJCQkJCQkgIFNlbGVjdGl2aXR5ICpj YXApOwogCiBleHRlcm4gU2VsZWN0aXZpdHkgbWN2X2NsYXVzZV9zZWxlY3Rpdml0eV9vcihQbGFu bmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJIFN0YXRpc3RpY0V4dEluZm8gKnN0YXQsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKaW5kZXggMzcwNzBjMWE4OTYuLjFjYTI2 NjY5YmIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0yOTI4 LDYgKzI5MjgsNTggQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNU ICogRlJPTSBtY3ZfbGlzdHNfcGFydGlhbCBXSEVSRSAoYSA9IDAKICgxIHJvdykKIAogRFJPUCBU QUJMRSBtY3ZfbGlzdHNfcGFydGlhbDsKKy0tIFAoYT0wKT0wLjUgYW5kIFAoYj0wKT0wLjUsIHNv IHRoZSBpbmRlcGVuZGVuY2UgZXN0aW1hdGUgaXMgMC4yNSAqIE4uCistLSBBZnRlciBidWlsZGlu ZyBNQ1Ygc3RhdGlzdGljcyB0aGUgY2FwIGxpbWl0cyB0aGUgY29tYmluZWQgZXN0aW1hdGUgdG8g dGhlCistLSBsZWFzdC1jb21tb24gTUNWIGZyZXF1ZW5jeSwgZWxpbWluYXRpbmcgbW9zdCBvZiB0 aGUgb3Zlci1lc3RpbWF0aW9uLgorQ1JFQVRFIFRBQkxFIG1jdl9jYXAgKGEgSU5ULCBiIElOVCkg V0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmKTsKK0lOU0VSVCBJTlRPIG1jdl9jYXAKKyAg ICBTRUxFQ1QgMCwgYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA5OSkgYiwgZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMCkgcjsKK0lOU0VSVCBJTlRPIG1jdl9jYXAKKyAgICBTRUxFQ1QgYSwgMCBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA5OSkgYSwgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgcjsKK0FO QUxZWkUgbWN2X2NhcDsKKy0tIHdpdGhvdXQgTUNWIHN0YXRpc3RpY3M6IGluZGVwZW5kZW5jZSBn aXZlcyAwLjUgKiAwLjUgKiAxOTgwMCA9IDQ5NTAgcm93cworU0VMRUNUICogRlJPTSBjaGVja19l c3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBtY3ZfY2FwIFdIRVJFIGEgPSAwIEFORCBiID0g MCcpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAgICA0 OTUwIHwgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jv d3MoJ1NFTEVDVCAqIEZST00gbWN2X2NhcCBXSEVSRSBhID0gMCBBTkQgYiBJTiAoMCwgOTkpJyk7 CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDUwMDAg fCAgICAxMDAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygn U0VMRUNUICogRlJPTSBtY3ZfY2FwIFdIRVJFIGEgPSAwIEFORCBiIElOICgwLCAxMDApJyk7Cisg ZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDQ5NTAgfCAg ICAgIDAKKygxIHJvdykKKworQ1JFQVRFIFNUQVRJU1RJQ1MgbWN2X2NhcF9zdGF0cyAobWN2KSBP TiBhLCBiIEZST00gbWN2X2NhcDsKK0FOQUxZWkUgbWN2X2NhcDsKKy0tIHdpdGggTUNWIHN0YXRp c3RpY3M6IGJvdW5kZWQgYnkgbGVhc3QgTUNWIGZyZXF1ZW5jeQorU0VMRUNUICogRlJPTSBjaGVj a19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBtY3ZfY2FwIFdIRVJFIGEgPSAwIEFORCBi ID0gMCcpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICAg ICAgMTAwIHwgICAgICAwCisoMSByb3cpCisKKy0tIElOL0FOWSBlcXVhbGl0eSBjbGF1c2VzIGFy ZSBub3Qgc3VwcG9ydGVkLCBwYXJ0aWFsIE1DViBtYXRjaCAoYT0wLCBiPTk5KQorU0VMRUNUICog RlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBtY3ZfY2FwIFdIRVJFIGEg PSAwIEFORCBiIElOICgwLCA5OSknKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0t LSstLS0tLS0tLQorICAgICAgNTA1MCB8ICAgIDEwMAorKDEgcm93KQorCistLSBJTi9BTlkgZXF1 YWxpdHkgY2xhdXNlcyBhcmUgbm90IHN1cHBvcnRlZCwgbm8gTUNWIG1hdGNoCitTRUxFQ1QgKiBG Uk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1jdl9jYXAgV0hFUkUgYSA9 IDAgQU5EIGIgSU4gKDAsIDEwMCknKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0t LSstLS0tLS0tLQorICAgICAgNDk1MCB8ICAgICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIG1j dl9jYXA7CiAtLSBjaGVjayB0aGUgYWJpbGl0eSB0byB1c2UgbXVsdGlwbGUgTUNWIGxpc3RzCiBD UkVBVEUgVEFCTEUgbWN2X2xpc3RzX211bHRpICgKIAlhIElOVEVHRVIsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3RhdHNfZXh0LnNxbAppbmRleCAzY2M2MDEyYjgyMi4uMGY2NzM2M2NkNmQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RhdHNfZXh0LnNxbApAQCAtMTQ2NSw2ICsxNDY1LDQwIEBAIFNFTEVDVCAqIEZST00g Y2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gbWN2X2xpc3RzX3BhcnRpYWwgV0hF UkUgKGEgPSAwCiAKIERST1AgVEFCTEUgbWN2X2xpc3RzX3BhcnRpYWw7CiAKKy0tIFAoYT0wKT0w LjUgYW5kIFAoYj0wKT0wLjUsIHNvIHRoZSBpbmRlcGVuZGVuY2UgZXN0aW1hdGUgaXMgMC4yNSAq IE4uCistLSBBZnRlciBidWlsZGluZyBNQ1Ygc3RhdGlzdGljcyB0aGUgY2FwIGxpbWl0cyB0aGUg Y29tYmluZWQgZXN0aW1hdGUgdG8gdGhlCistLSBsZWFzdC1jb21tb24gTUNWIGZyZXF1ZW5jeSwg ZWxpbWluYXRpbmcgbW9zdCBvZiB0aGUgb3Zlci1lc3RpbWF0aW9uLgorQ1JFQVRFIFRBQkxFIG1j dl9jYXAgKGEgSU5ULCBiIElOVCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmKTsKKwor SU5TRVJUIElOVE8gbWN2X2NhcAorICAgIFNFTEVDVCAwLCBiIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDk5KSBiLCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSByOworCitJTlNFUlQgSU5UTyBtY3Zf Y2FwCisgICAgU0VMRUNUIGEsIDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgOTkpIGEsIGdlbmVy YXRlX3NlcmllcygxLCAxMDApIHI7CisKK0FOQUxZWkUgbWN2X2NhcDsKKworLS0gd2l0aG91dCBN Q1Ygc3RhdGlzdGljczogaW5kZXBlbmRlbmNlIGdpdmVzIDAuNSAqIDAuNSAqIDE5ODAwID0gNDk1 MCByb3dzCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9N IG1jdl9jYXAgV0hFUkUgYSA9IDAgQU5EIGIgPSAwJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gbWN2X2NhcCBXSEVSRSBhID0gMCBBTkQgYiBJ TiAoMCwgOTkpJyk7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVD VCAqIEZST00gbWN2X2NhcCBXSEVSRSBhID0gMCBBTkQgYiBJTiAoMCwgMTAwKScpOworCitDUkVB VEUgU1RBVElTVElDUyBtY3ZfY2FwX3N0YXRzIChtY3YpIE9OIGEsIGIgRlJPTSBtY3ZfY2FwOwor QU5BTFlaRSBtY3ZfY2FwOworCistLSB3aXRoIE1DViBzdGF0aXN0aWNzOiBib3VuZGVkIGJ5IGxl YXN0IE1DViBmcmVxdWVuY3kKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NF TEVDVCAqIEZST00gbWN2X2NhcCBXSEVSRSBhID0gMCBBTkQgYiA9IDAnKTsKKworLS0gSU4vQU5Z IGVxdWFsaXR5IGNsYXVzZXMgYXJlIG5vdCBzdXBwb3J0ZWQsIHBhcnRpYWwgTUNWIG1hdGNoIChh PTAsIGI9OTkpCitTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBG Uk9NIG1jdl9jYXAgV0hFUkUgYSA9IDAgQU5EIGIgSU4gKDAsIDk5KScpOworCistLSBJTi9BTlkg ZXF1YWxpdHkgY2xhdXNlcyBhcmUgbm90IHN1cHBvcnRlZCwgbm8gTUNWIG1hdGNoCitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1jdl9jYXAgV0hFUkUg YSA9IDAgQU5EIGIgSU4gKDAsIDEwMCknKTsKKworRFJPUCBUQUJMRSBtY3ZfY2FwOworCiAtLSBj aGVjayB0aGUgYWJpbGl0eSB0byB1c2UgbXVsdGlwbGUgTUNWIGxpc3RzCiBDUkVBVEUgVEFCTEUg bWN2X2xpc3RzX211bHRpICgKIAlhIElOVEVHRVIsCi0tIAoyLjQzLjAKCg== --00000000000049491e0652948523 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0002-Add-support-for-IN-ANY-clauses-in-multi-column-MCV-c.patch" Content-Disposition: attachment; filename="v1-0002-Add-support-for-IN-ANY-clauses-in-multi-column-MCV-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpk46z9r2 RnJvbSAzYmRkNDgzODJmZGNmMGJkOGVhYWE2YTMyOGNkZThhNDdlZWVlMWFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnJpcXVlIFNhbmNoZXogQ2FyZG9zbyA8ZW5yaXF1ZWVzYW5j aHpAZ21haWwuY29tPgpEYXRlOiBTdW4sIDI0IE1heSAyMDI2IDEzOjMyOjI0ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAyLzRdIEFkZCBzdXBwb3J0IGZvciBJTi9BTlkgY2xhdXNlcyBpbiBtdWx0aS1j b2x1bW4gTUNWIGNhcAoKRXh0ZW5kIHRoZSBNQ1YtYmFzZWQgY2FwIHRvIGhhbmRsZSBJTiBhbmQg QU5ZIGNsYXVzZXMsIGFsbG93aW5nIHRoZQpzZWxlY3Rpdml0eSBjYXAgdG8gYXBwbHkgd2hlbiB0 aGVzZSBjbGF1c2VzIGFyZSB1c2VkIGFsb25nc2lkZSBlcXVhbGl0eQpmaWx0ZXJzLgotLS0KIHNy Yy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMgICAgICAgICAgICB8IDYwICsrKysrKysrKysrKysr KysrKystLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCB8ICA2 ICstLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgIHwgIDQgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3Rp Y3MvbWN2LmMKaW5kZXggZGY3MGQwMGNjM2QuLjJlNzVmMTlkOGJkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2 LmMKQEAgLTE1MjUsMTQgKzE1MjUsMTkgQEAgcGdfbWN2X2xpc3Rfc2VuZChQR19GVU5DVElPTl9B UkdTKQogfQogCiAvKgotICogbWN2X2lzX2FsbF9lcXVhbGl0eV9jbGF1c2VzCi0gKgkJQ2hlY2sg aWYgYWxsIGNsYXVzZXMgYXJlIHNpbXBsZSBlcXVhbGl0eSBjb25kaXRpb25zIChPcEV4cHIgd2l0 aCBlcXNlbAotICoJCXJlc3RyaWN0aW9uIGVzdGltYXRvcikuICBUaGlzIG1pcnJvcnMgdGhlIGNo ZWNrIGRvbmUgYnkKLSAqCQlkZXBlbmRlbmN5X2lzX2NvbXBhdGlibGVfY2xhdXNlKCkgaW4gZGVw ZW5kZW5jaWVzLmMuCisgKiBtY3ZfY2FwX211bHRpcGxpZXIKKyAqCQlDb21wdXRlIGEgbXVsdGlw bGllciBmb3IgY2FwcGluZyBjb21iaW5lZCBzZWxlY3Rpdml0eSB0byB0aGUgbGVhc3QKKyAqCQlj b21tb24gTUNWIGZyZXF1ZW5jeSB3aGVuIG5vIE1DViBpdGVtcyBtYXRjaGVkLgorICoKKyAqIFJl dHVybnMgMCBpZiB0aGUgY2FwIHNob3VsZCBub3QgYmUgYXBwbGllZCAodW5zdXBwb3J0ZWQgY2xh dXNlIHR5cGVzKS4KKyAqIFJldHVybnMgPj0gMSBhcyB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IHZh bHVlIGNvbWJpbmF0aW9ucyB0aGUgY2xhdXNlcworICogY291bGQgbWF0Y2g6IDEgZm9yIGVhY2gg ZXF1YWxpdHkgY2xhdXNlLCBOIGZvciBlYWNoIElOL0FOWSBjbGF1c2Ugd2l0aAorICogTiBlbGVt ZW50cy4KICAqLwotc3RhdGljIGJvb2wKLW1jdl9pc19hbGxfZXF1YWxpdHlfY2xhdXNlcyhMaXN0 ICpjbGF1c2VzKQorc3RhdGljIGludDY0CittY3ZfY2FwX211bHRpcGxpZXIoTGlzdCAqY2xhdXNl cykKIHsKKwlpbnQ2NAkJbXVsdGlwbGllciA9IDE7CiAJTGlzdENlbGwgICAqbGM7CiAKIAlmb3Jl YWNoKGxjLCBjbGF1c2VzKQpAQCAtMTU0MiwxMiArMTU0NywzNCBAQCBtY3ZfaXNfYWxsX2VxdWFs aXR5X2NsYXVzZXMoTGlzdCAqY2xhdXNlcykKIAkJaWYgKElzQShjbGF1c2UsIFJlc3RyaWN0SW5m bykpCiAJCQljbGF1c2UgPSAoTm9kZSAqKSAoKFJlc3RyaWN0SW5mbyAqKSBjbGF1c2UpLT5jbGF1 c2U7CiAKLQkJaWYgKCFpc19vcGNsYXVzZShjbGF1c2UpIHx8Ci0JCQlnZXRfb3BycmVzdCgoKE9w RXhwciAqKSBjbGF1c2UpLT5vcG5vKSAhPSBGX0VRU0VMKQotCQkJcmV0dXJuIGZhbHNlOworCQlp ZiAoaXNfb3BjbGF1c2UoY2xhdXNlKSkKKwkJeworCQkJLyogU2ltcGxlIGVxdWFsaXR5OiBmYWN0 b3IgMSAqLworCQkJaWYgKGdldF9vcHJyZXN0KCgoT3BFeHByICopIGNsYXVzZSktPm9wbm8pICE9 IEZfRVFTRUwpCisJCQkJcmV0dXJuIDA7CisJCX0KKwkJZWxzZSBpZiAoSXNBKGNsYXVzZSwgU2Nh bGFyQXJyYXlPcEV4cHIpKQorCQl7CisJCQlTY2FsYXJBcnJheU9wRXhwciAqc2FvcCA9IChTY2Fs YXJBcnJheU9wRXhwciAqKSBjbGF1c2U7CisJCQlOb2RlCSAgICphcmc7CisJCQlBcnJheVR5cGUg ICphcnI7CisKKwkJCS8qIE9ubHkgQU5ZL0lOIHdpdGggZXF1YWxpdHkgb3BlcmF0b3IgKi8KKwkJ CWlmICghc2FvcC0+dXNlT3IgfHwgZ2V0X29wcnJlc3Qoc2FvcC0+b3BubykgIT0gRl9FUVNFTCkK KwkJCQlyZXR1cm4gMDsKKworCQkJYXJnID0gKE5vZGUgKikgbHNlY29uZChzYW9wLT5hcmdzKTsK KwkJCWlmICghSXNBKGFyZywgQ29uc3QpIHx8ICgoQ29uc3QgKikgYXJnKS0+Y29uc3Rpc251bGwp CisJCQkJcmV0dXJuIDA7CisKKwkJCWFyciA9IERhdHVtR2V0QXJyYXlUeXBlUCgoKENvbnN0ICop IGFyZyktPmNvbnN0dmFsdWUpOworCQkJbXVsdGlwbGllciAqPSBBcnJheUdldE5JdGVtcyhBUlJf TkRJTShhcnIpLCBBUlJfRElNUyhhcnIpKTsKKwkJfQorCQllbHNlCisJCQlyZXR1cm4gMDsJCQkv KiB1bnN1cHBvcnRlZCBjbGF1c2UgdHlwZSAqLwogCX0KIAotCXJldHVybiB0cnVlOworCXJldHVy biBtdWx0aXBsaWVyOwogfQogCiAvKgpAQCAtMjExNSw5ICsyMTQyLDE2IEBAIG1jdl9jbGF1c2Vs aXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBTdGF0aXN0aWNFeHRJbmZvICpzdGF0 LAogCSAqIGNvbWJpbmF0aW9uIGlzIG5vdCBhbW9uZyB0aGUgbW9zdCBjb21tb24sIHNvIGl0IGNh bid0IGJlIG1vcmUgZnJlcXVlbnQKIAkgKiB0aGFuIHRoZSBsZWFzdCBjb21tb24gdHJhY2tlZCBj b21iaW5hdGlvbi4KIAkgKi8KLQlpZiAocyA9PSAwLjAgJiYgbWN2LT5uZGltZW5zaW9ucyA9PSBs aXN0X2xlbmd0aChjbGF1c2VzKSAmJgotCQltY3ZfaXNfYWxsX2VxdWFsaXR5X2NsYXVzZXMoY2xh dXNlcykpCi0JCSpjYXAgPSBtY3YtPml0ZW1zW21jdi0+bml0ZW1zIC0gMV0uZnJlcXVlbmN5Owor CWlmIChzID09IDAuMCAmJiBtY3YtPm5kaW1lbnNpb25zID09IGxpc3RfbGVuZ3RoKGNsYXVzZXMp KQorCXsKKwkJaW50NjQJCWNhcF9tdWx0ID0gbWN2X2NhcF9tdWx0aXBsaWVyKGNsYXVzZXMpOwor CisJCWlmIChjYXBfbXVsdCA+IDApCisJCXsKKwkJCSpjYXAgPSBjYXBfbXVsdCAqIG1jdi0+aXRl bXNbbWN2LT5uaXRlbXMgLSAxXS5mcmVxdWVuY3k7CisJCQlDTEFNUF9QUk9CQUJJTElUWSgqY2Fw KTsKKwkJfQorCX0KIAogCXJldHVybiBzOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0 c19leHQub3V0CmluZGV4IDFjYTI2NjY5YmIxLi44MmFkOWVkYjU2OCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAtMjk2NSwxOCArMjk2NSwxOCBAQCBTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1jdl9jYXAgV0hFUkUg YSA9IDAgQU5EIGIgPSAwJwogICAgICAgIDEwMCB8ICAgICAgMAogKDEgcm93KQogCi0tLSBJTi9B TlkgZXF1YWxpdHkgY2xhdXNlcyBhcmUgbm90IHN1cHBvcnRlZCwgcGFydGlhbCBNQ1YgbWF0Y2gg KGE9MCwgYj05OSkKKy0tIHBhcnRpYWwgTUNWIG1hdGNoIChhPTAsIGI9OTkpCiBTRUxFQ1QgKiBG Uk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1jdl9jYXAgV0hFUkUgYSA9 IDAgQU5EIGIgSU4gKDAsIDk5KScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0t Ky0tLS0tLS0tCiAgICAgICA1MDUwIHwgICAgMTAwCiAoMSByb3cpCiAKLS0tIElOL0FOWSBlcXVh bGl0eSBjbGF1c2VzIGFyZSBub3Qgc3VwcG9ydGVkLCBubyBNQ1YgbWF0Y2gKKy0tIG5vIE1DViBt YXRjaAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBt Y3ZfY2FwIFdIRVJFIGEgPSAwIEFORCBiIElOICgwLCAxMDApJyk7CiAgZXN0aW1hdGVkIHwgYWN0 dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgIDQ5NTAgfCAgICAgIDAKKyAgICAgICAy MDAgfCAgICAgIDAKICgxIHJvdykKIAogRFJPUCBUQUJMRSBtY3ZfY2FwOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3N0YXRzX2V4dC5zcWwKaW5kZXggMGY2NzM2M2NkNmQuLjhlMGI4YzBlYjVjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3N0YXRzX2V4dC5zcWwKQEAgLTE0OTEsMTAgKzE0OTEsMTAgQEAgQU5BTFlaRSBtY3Zf Y2FwOwogLS0gd2l0aCBNQ1Ygc3RhdGlzdGljczogYm91bmRlZCBieSBsZWFzdCBNQ1YgZnJlcXVl bmN5CiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1j dl9jYXAgV0hFUkUgYSA9IDAgQU5EIGIgPSAwJyk7CiAKLS0tIElOL0FOWSBlcXVhbGl0eSBjbGF1 c2VzIGFyZSBub3Qgc3VwcG9ydGVkLCBwYXJ0aWFsIE1DViBtYXRjaCAoYT0wLCBiPTk5KQorLS0g cGFydGlhbCBNQ1YgbWF0Y2ggKGE9MCwgYj05OSkKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gbWN2X2NhcCBXSEVSRSBhID0gMCBBTkQgYiBJTiAoMCwg OTkpJyk7CiAKLS0tIElOL0FOWSBlcXVhbGl0eSBjbGF1c2VzIGFyZSBub3Qgc3VwcG9ydGVkLCBu byBNQ1YgbWF0Y2gKKy0tIG5vIE1DViBtYXRjaAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0 ZWRfcm93cygnU0VMRUNUICogRlJPTSBtY3ZfY2FwIFdIRVJFIGEgPSAwIEFORCBiIElOICgwLCAx MDApJyk7CiAKIERST1AgVEFCTEUgbWN2X2NhcDsKLS0gCjIuNDMuMAoK --00000000000049491e0652948523 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0003-Extend-multicolumn-MCV-cap-to-partial-IN-ANY-matches.patch" Content-Disposition: attachment; filename="v1-0003-Extend-multicolumn-MCV-cap-to-partial-IN-ANY-matches.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpk46z9o1 RnJvbSBmYzM2OTI4MDY2MmM5MTgzY2NjNTBhYzRkZWQxNDRhY2FkZDg0YzE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnJpcXVlIFNhbmNoZXogQ2FyZG9zbyA8ZW5yaXF1ZWVzYW5j aHpAZ21haWwuY29tPgpEYXRlOiBTdW4sIDI0IE1heSAyMDI2IDE0OjQwOjM5ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAzLzRdIEV4dGVuZCBtdWx0aWNvbHVtbiBNQ1YgY2FwIHRvIHBhcnRpYWwgSU4v QU5ZIG1hdGNoZXMKCi0tLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5j IHwgIDUgKy0tLS0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMgICAgICAgICAgICB8IDE3 ICsrKysrKysrKystLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5v dXQgfCAgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRz LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggZjhjMzg2 NTNiZjkuLmRhNmY2MzE1Njk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4 dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0 cy5jCkBAIC0yMDE2LDEwICsyMDE2LDcgQEAgc3RhdGV4dF9tY3ZfY2xhdXNlbGlzdF9zZWxlY3Rp dml0eShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqY2xhdXNlcywgaW50IHZhclJlbGkKIAkJCQkJ CQkJCQkJCSBtY3ZfYmFzZXNlbCwKIAkJCQkJCQkJCQkJCSBtY3ZfdG90YWxzZWwpOwogCi0JCQkv KgotCQkJICogQ2FwIHRvIHRoZSBsZWFzdCBjb21tb24gTUNWIGZyZXF1ZW5jeSB3aGVuIG5vIE1D ViBpdGVtcwotCQkJICogbWF0Y2hlZC4KLQkJCSAqLworCQkJLyogQ2FwIHRoZSBjb250cmlidXRp b24gb2YgdmFsdWVzIG5vdCBmb3VuZCBpbiB0aGUgTUNWLiAqLwogCQkJaWYgKHN0YXRfc2VsID4g bWN2X2NhcCkKIAkJCQlzdGF0X3NlbCA9IG1jdl9jYXA7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0YXRpc3RpY3MvbWN2LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCmluZGV4 IDJlNzVmMTlkOGJkLi42Mjc2MWM1OGUzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9tY3YuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCkBAIC0xNTI2LDgg KzE1MjYsOCBAQCBwZ19tY3ZfbGlzdF9zZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIC8qCiAgKiBt Y3ZfY2FwX211bHRpcGxpZXIKLSAqCQlDb21wdXRlIGEgbXVsdGlwbGllciBmb3IgY2FwcGluZyBj b21iaW5lZCBzZWxlY3Rpdml0eSB0byB0aGUgbGVhc3QKLSAqCQljb21tb24gTUNWIGZyZXF1ZW5j eSB3aGVuIG5vIE1DViBpdGVtcyBtYXRjaGVkLgorICogCQlDb21wdXRlIGEgbXVsdGlwbGllciBm b3IgY2FwcGluZyBjb21iaW5lZCBzZWxlY3Rpdml0eSB0byB0aGUgbGVhc3QKKyAqIAkJY29tbW9u IE1DViBmcmVxdWVuY3kuCiAgKgogICogUmV0dXJucyAwIGlmIHRoZSBjYXAgc2hvdWxkIG5vdCBi ZSBhcHBsaWVkICh1bnN1cHBvcnRlZCBjbGF1c2UgdHlwZXMpLgogICogUmV0dXJucyA+PSAxIGFz IHRoZSBudW1iZXIgb2YgZGlzdGluY3QgdmFsdWUgY29tYmluYXRpb25zIHRoZSBjbGF1c2VzCkBA IC0yMTA1LDYgKzIxMDUsNyBAQCBtY3ZfY2xhdXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5m byAqcm9vdCwgU3RhdGlzdGljRXh0SW5mbyAqc3RhdCwKIAkJCQkJCSAgIFNlbGVjdGl2aXR5ICpj YXApCiB7CiAJaW50CQkJaTsKKwlpbnQ2NAkJbWF0Y2hlZF9jb3VudCA9IDA7CiAJTUNWTGlzdCAg ICAqbWN2OwogCVNlbGVjdGl2aXR5IHMgPSAwLjA7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcm9v dC0+c2ltcGxlX3J0ZV9hcnJheVtyZWwtPnJlbGlkXTsKQEAgLTIxMzMsMjIgKzIxMzQsMjQgQEAg bWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIFN0YXRpc3RpY0V4 dEluZm8gKnN0YXQsCiAJCXsKIAkJCSpiYXNlc2VsICs9IG1jdi0+aXRlbXNbaV0uYmFzZV9mcmVx dWVuY3k7CiAJCQlzICs9IG1jdi0+aXRlbXNbaV0uZnJlcXVlbmN5OworCQkJbWF0Y2hlZF9jb3Vu dCsrOwogCQl9CiAJfQogCiAJLyoKLQkgKiBXaGVuIG5vIE1DViBpdGVtIG1hdGNoZWQgYW5kIHRo ZXJlIGlzIG9uZSBlcXVhbGl0eSBjbGF1c2UgcGVyIE1DVgotCSAqIGRpbWVuc2lvbiwgY2FwIHRo ZSBzZWxlY3Rpdml0eSB0byB0aGUgbGVhc3QgY29tbW9uIE1DViBmcmVxdWVuY3kuIFRoZQorCSAq IFdoZW4gdGhlcmUgaXMgb25lIGVxdWFsaXR5L0lOIGNsYXVzZSBwZXIgTUNWIGRpbWVuc2lvbiwg Y2FwIHRoZQorCSAqIGNvbnRyaWJ1dGlvbiBvZiB2YWx1ZSBjb21iaW5hdGlvbnMgbm90IGZvdW5k IGluIHRoZSBNQ1YuICBFYWNoIHN1Y2gKIAkgKiBjb21iaW5hdGlvbiBpcyBub3QgYW1vbmcgdGhl IG1vc3QgY29tbW9uLCBzbyBpdCBjYW4ndCBiZSBtb3JlIGZyZXF1ZW50CiAJICogdGhhbiB0aGUg bGVhc3QgY29tbW9uIHRyYWNrZWQgY29tYmluYXRpb24uCiAJICovCi0JaWYgKHMgPT0gMC4wICYm IG1jdi0+bmRpbWVuc2lvbnMgPT0gbGlzdF9sZW5ndGgoY2xhdXNlcykpCisJaWYgKG1jdi0+bmRp bWVuc2lvbnMgPT0gbGlzdF9sZW5ndGgoY2xhdXNlcykpCiAJewogCQlpbnQ2NAkJY2FwX211bHQg PSBtY3ZfY2FwX211bHRpcGxpZXIoY2xhdXNlcyk7CisJCWludDY0CQlub25fbWN2X211bHQgPSBj YXBfbXVsdCAtIG1hdGNoZWRfY291bnQ7CiAKLQkJaWYgKGNhcF9tdWx0ID4gMCkKKwkJaWYgKG5v bl9tY3ZfbXVsdCA+IDApCiAJCXsKLQkJCSpjYXAgPSBjYXBfbXVsdCAqIG1jdi0+aXRlbXNbbWN2 LT5uaXRlbXMgLSAxXS5mcmVxdWVuY3k7CisJCQkqY2FwID0gcyArIG5vbl9tY3ZfbXVsdCAqIG1j di0+aXRlbXNbbWN2LT5uaXRlbXMgLSAxXS5mcmVxdWVuY3k7CiAJCQlDTEFNUF9QUk9CQUJJTElU WSgqY2FwKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3RhdHNfZXh0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApp bmRleCA4MmFkOWVkYjU2OC4uN2VhMjQ0Zjc4NTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N0YXRzX2V4dC5vdXQKQEAgLTI5NjksNyArMjk2OSw3IEBAIFNFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gbWN2X2NhcCBXSEVSRSBhID0gMCBBTkQgYiA9 IDAnCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIG1j dl9jYXAgV0hFUkUgYSA9IDAgQU5EIGIgSU4gKDAsIDk5KScpOwogIGVzdGltYXRlZCB8IGFjdHVh bCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICA1MDUwIHwgICAgMTAwCisgICAgICAgMjAw IHwgICAgMTAwCiAoMSByb3cpCiAKIC0tIG5vIE1DViBtYXRjaAotLSAKMi40My4wCgo= --00000000000049491e0652948523--