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 1vY8h3-00ETBj-0r for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 20:09:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vY8h1-002Eac-2V for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 20:09:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vY8h1-002EaT-0v for pgsql-hackers@lists.postgresql.org; Tue, 23 Dec 2025 20:09:16 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vY8gz-002NwC-0b for pgsql-hackers@postgresql.org; Tue, 23 Dec 2025 20:09:15 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-7aa9be9f03aso4483474b3a.2 for ; Tue, 23 Dec 2025 12:09:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1766520550; x=1767125350; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=DUdi/mhiLzx7dDeBL41NdDeFtrCJJYyD/r7abO/F7LM=; b=0v+C1FmoOO0kbeuEbUBQhJBtm77BeYD3HU1XNEh9vFE+PfFir512NMGdOeRFnWpITN kwmC62fDSWmYkRuj+GwY1Bqy7Gut3mpoBPr7B5qUB/rC0Itejjoa+PbsaFKFqQ4+/1Mm Ykb8ZeI0Obb15eVhPrJdiGv29hfxxPB0PVaic0KJ5EsJv14HaM8jy2adIBGvjNdgIrLz ldPI1FNIDwPSrWHPZd5bShUp7wWNm4utetBiU9U4cEJeuJAWMUYclfXMHlCxscdpoxAw Lt8i6D4zaCPaP5NDzqvMusI/2F8Pxrd+CmexVj6evI3tZHz93r+XhYtDV/ulloYTg7nZ FJcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766520550; x=1767125350; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=DUdi/mhiLzx7dDeBL41NdDeFtrCJJYyD/r7abO/F7LM=; b=UETFZ6ZV91LQHUY2hx5n4pb7P+VcS+iytF2oCdQjKuluG6Bu7y4SZf95GLaw+XXv6C rW3JjwkPbI3o8J74tGJPbh04rTibgP09eAv0cnFjJ+Rd6WBD1irPDvyRFvFLceAe9eSA bNRXv+qtAuDkwxrzHUUpO1ulcgakV5EFmPbSgxMxFxJMehWpO4diA+Xs5V8yow5H0a3o KuxSCvU3uYgTBDgIGQKt08P6NYIB3CKjw/SW+BCJi4U7aq3d0w6v7JhfEahgOg7pxEIT QbmGxoSfYhlc8UF/8hDqg5YV7Nuo8hZstt/lD/FjAWER7sh87bt+UI1bKVOIHOzF1LbD /1rQ== X-Forwarded-Encrypted: i=1; AJvYcCWGDkog5hcKz6oD0QXx3ou1FrlrtBFDsw1d/GI+X5BWZQhBRt3TP2FA8GImm0el5gn1VfPn+zHfHWOjKRGt@postgresql.org X-Gm-Message-State: AOJu0YyiLynlzbxVmazrDhxbtDIf9N0oF9L/nn4hxa7PSXWj0PTTkgHw tMMXtY9t5HmRZSTy6KF3n3Y9SWMoM35xcqjFXJZcrQeZdpcN5rI++ECQ4wSOr3ZgBw== X-Gm-Gg: AY/fxX7OWf5hA04iEncgkJ+d5i6RmPAQ29QgieeO3IyQoThACccJiUWbYIG/GtzSZcp ODK1sRS+U+pSC7Pl6iiCoRSYK2kfUtyCxopl3jXLrml8XXSxiKGVRgfokePxYFNol7lWwHukQ9d cJ1C55crBRp8PjQf3lMYATecORwBhP5wek7LmtclmQT6R8Q2SP85BHdhQrybBeED41uH+2OoxhW YDmFZmNssTKEtQya+UCbyKr5y9Ttmpe7S3TLzOnSpCF6bjdiqORZLhhh0KisExdPOKTXeE+kkFN JR7BLesCbzBIlFgfxi16Pi7NGgrTCM6XVa5kRLmCcorQWn6re7i6GfGmlT0tcVU3oIoD3EUhY+c Ama2/NTRNzAb2S81vV/S9ZV8lX+Wff2I9HqnJddTgTrGtDxwiVDCftElVmaMEQtFXcdrBaXSIYs vXUI8atbD2A8DPNNxlXr4XnmXwZRdtuHtvcY44I+Jrpqg= X-Google-Smtp-Source: AGHT+IGxxKX7gTEXhZ3khddu44d0qQCTs2au/3TN4zs04aPG1q/eN2/JqsCy8ELVYgiVrHcB7xmF4Q== X-Received: by 2002:a05:6a20:729e:b0:35e:9b66:9376 with SMTP id adf61e73a8af0-376aa1e747cmr14454619637.60.1766520549924; Tue, 23 Dec 2025 12:09:09 -0800 (PST) Received: from jeff-ws-bridge.lan (c-24-7-19-3.hsd1.ca.comcast.net. [24.7.19.3]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c1e7bd61b4csm12680772a12.18.2025.12.23.12.09.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Dec 2025 12:09:09 -0800 (PST) Message-ID: Subject: Re: Remaining dependency on setlocale() From: Jeff Davis To: Peter Eisentraut , Chao Li Cc: Thomas Munro , Tom Lane , pgsql-hackers@postgresql.org Date: Tue, 23 Dec 2025 12:09:08 -0800 In-Reply-To: References: <4c5da86af36a0d5e430eee3f60ce5e06f1b5cd34.camel@j-davis.com> <8186b28a1a39e61a0d833a4c25a8909ebbbabd48.camel@j-davis.com> <450ceb6260cad30d7afdf155d991a9caafee7c0d.camel@j-davis.com> <78edc741a168c54d57cc898a5877b6443527a2c8.camel@j-davis.com> <83F6E6A9-FF29-41C9-9E15-EA5360E912D0@gmail.com> <5f65b85740197ba6249ea507cddf609f84a6188b.camel@j-davis.com> <38f3f4a6-e95e-47a7-914f-110dd6191301@eisentraut.org> <0e186a9a92634f0c5675a618ff5685d00cd8f836.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-JS0OQCuulbc+G6N8yDpf" User-Agent: Evolution 3.52.3-0ubuntu1.1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-JS0OQCuulbc+G6N8yDpf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2025-12-17 at 11:39 +0100, Peter Eisentraut wrote: > For Metaphone, I found the reference implementation linked from its=20 > Wikipedia page, and it looks like our implementation is pretty > closely=20 > aligned to that.=C2=A0 That reference implementation also contains the= =20 > C-with-cedilla case explicitly.=C2=A0 The correct fix here would probably > be=20 > to change the implementation to work on wide characters.=C2=A0 But I thin= k > for the moment you could try a shortcut like, use pg_ascii_toupper(), > but if the encoding is LATIN1 (or LATIN9 or whichever other encodings > also contain C-with-cedilla at that code point), then explicitly=20 > uppercase that one as well.=C2=A0 This would preserve the existing > behavior. Done, attached new patches. Interestingly, WIN1256 encodes only the SMALL LETTER C WITH CEDILLA. I think, for the purposes here, we can still consider it to "uppercase" to \xc7, so that it can still be treated as the same sound. Technically I think that would be an improvement over the current code in this edge case, and suggests that case folding would be a better approach than uppercasing. Regards, Jeff Davis --=-JS0OQCuulbc+G6N8yDpf Content-Disposition: attachment; filename="v13-0001-fuzzystrmatch-use-pg_ascii_toupper.patch" Content-Type: text/x-patch; name="v13-0001-fuzzystrmatch-use-pg_ascii_toupper.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4MTYxY2E0OWFlMjA0NGUwMDRkM2YzNmMwNGY2MGIwM2U5N2Y0MDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDE5IE5vdiAyMDI1IDEzOjI0OjM4IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTMgMS8yXSBm dXp6eXN0cm1hdGNoOiB1c2UgcGdfYXNjaWlfdG91cHBlcigpLgoKZnV6enlzdHJtYXRjaCBpcyBk ZXNpZ25lZCBmb3IgQVNDSUksIHNvIG5vIG5lZWQgdG8gcmVseSBvbiB0aGUgZ2xvYmFsCkxDX0NU WVBFIHNldHRpbmcuCgpUT0RPOiB3aGF0IGFib3V0IFx4YzcgY2FzZT8gQWxzbywgd2hhdCBzaG91 bGQgdGhlIGJlaGF2aW9yIGJlIGZvcgpzb3VuZGV4KCk/CgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tLzQ1MGNlYjYyNjBjYWQzMGQ3YWZkZjE1NWQ5OTFhOWNhYWZlZTdjMGQuY2FtZWxA ai1kYXZpcy5jb20KLS0tCiBjb250cmliL2Z1enp5c3RybWF0Y2gvZG1ldGFwaG9uZS5jICAgIHwg NDUgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBjb250cmliL2Z1enp5c3RybWF0Y2gvZnV6 enlzdHJtYXRjaC5jIHwgNDMgKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFu Z2VkLCA2NyBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250 cmliL2Z1enp5c3RybWF0Y2gvZG1ldGFwaG9uZS5jIGIvY29udHJpYi9mdXp6eXN0cm1hdGNoL2Rt ZXRhcGhvbmUuYwppbmRleCAyMjdkOGIxMWRkYy4uOWE0ZTVhZTdlMGUgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvZnV6enlzdHJtYXRjaC9kbWV0YXBob25lLmMKKysrIGIvY29udHJpYi9mdXp6eXN0cm1h dGNoL2RtZXRhcGhvbmUuYwpAQCAtOTgsNiArOTgsNyBAQCBUaGUgcmVtYWluaW5nIGNvZGUgaXMg YXV0aG9yZWQgYnkgQW5kcmV3IER1bnN0YW4gPGFtZHVuc3RhbkBuY3NocC5vcmc+IGFuZAogCiAj aW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKIAogLyogdHVybiBvZmYgYXNzZXJ0aW9ucyBmb3IgZW1iZWRk ZWQgZnVuY3Rpb24gKi8KQEAgLTExNiw2ICsxMTcsOSBAQCBUaGUgcmVtYWluaW5nIGNvZGUgaXMg YXV0aG9yZWQgYnkgQW5kcmV3IER1bnN0YW4gPGFtZHVuc3RhbkBuY3NocC5vcmc+IGFuZAogI2lu Y2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKKyNkZWZpbmUgU01BTExfTEVU VEVSX0NfV0lUSF9DRURJTExBCQknXHhlNycKKyNkZWZpbmUgQ0FQSVRBTF9MRVRURVJfQ19XSVRI X0NFRElMTEEJJ1x4YzcnCisKIC8qIHByb3RvdHlwZSBmb3IgdGhlIG1haW4gZnVuY3Rpb24gd2Ug Z290IGZyb20gdGhlIHBlcmwgbW9kdWxlICovCiBzdGF0aWMgdm9pZCBEb3VibGVNZXRhcGhvbmUo Y2hhciAqc3RyLCBjaGFyICoqY29kZXMpOwogCkBAIC0yODIsOSArMjg2LDQ2IEBAIHN0YXRpYyB2 b2lkCiBNYWtlVXBwZXIobWV0YXN0cmluZyAqcykKIHsKIAljaGFyCSAgICppOworCWJvb2wJCWNf d2l0aF9jZWRpbGxhOworCisJLyoKKwkgKiBDIFdJVEggQ0VESUxMQSBzaG91bGQgYmUgdXBwZXJj YXNlZCwgYXMgd2VsbC4KKwkgKgorCSAqIFhYWDogT25seSB3b3JrcyBpbiBzaW5nbGUtYnl0ZSBl bmNvZGluZ3MgdGhhdCBlbmNvZGUgbG93ZXJjYXNlIEMgV0lUSAorCSAqIENFRElMTEEgYXMgXHhl Ny4gU2hvdWxkIGhhdmUgcHJvcGVyIG11bHRpYnl0ZSBzdXBwb3J0LgorCSAqCisJICogTkI6IFdJ TjEyNTYgZW5jb2RlcyBvbmx5IHRoZSBsb3dlcmNhc2UgQyBXSVRIIENFRElMTEEsIGJ1dCBmb3Ig dGhlCisJICogcHVycG9zZXMgb2YgbWV0YXBob25lLCB3ZSBjYW4gc3RpbGwgInVwcGVyY2FzZSIg aXQgdG8gXHhjNyBoZXJlIHNvIHRoYXQKKwkgKiBpdCdzIHJlY29nbml6ZWQgbGF0ZXIuCisJICov CisJc3dpdGNoIChHZXREYXRhYmFzZUVuY29kaW5nKCkpCisJeworCQljYXNlIFBHX0xBVElOMToK KwkJY2FzZSBQR19MQVRJTjI6CisJCWNhc2UgUEdfTEFUSU4zOgorCQljYXNlIFBHX0xBVElONToK KwkJY2FzZSBQR19MQVRJTjg6CisJCWNhc2UgUEdfTEFUSU45OgorCQljYXNlIFBHX0xBVElOMTA6 CisJCWNhc2UgUEdfV0lOMTI1MDoKKwkJY2FzZSBQR19XSU4xMjUyOgorCQljYXNlIFBHX1dJTjEy NTQ6CisJCWNhc2UgUEdfV0lOMTI1NjoKKwkJY2FzZSBQR19XSU4xMjU4OgorCQkJY193aXRoX2Nl ZGlsbGEgPSB0cnVlOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQljX3dpdGhfY2VkaWxsYSA9 IGZhbHNlOworCQkJYnJlYWs7CisJfQogCiAJZm9yIChpID0gcy0+c3RyOyAqaTsgaSsrKQotCQkq aSA9IHRvdXBwZXIoKHVuc2lnbmVkIGNoYXIpICppKTsKKwl7CisJCWlmIChjX3dpdGhfY2VkaWxs YSAmJiAqaSA9PSBTTUFMTF9MRVRURVJfQ19XSVRIX0NFRElMTEEpCisJCQkqaSA9IENBUElUQUxf TEVUVEVSX0NfV0lUSF9DRURJTExBOworCQllbHNlCisJCQkqaSA9IHBnX2FzY2lpX3RvdXBwZXIo KHVuc2lnbmVkIGNoYXIpICppKTsKKwl9CiB9CiAKIApAQCAtNDYzLDcgKzUwNCw3IEBAIERvdWJs ZU1ldGFwaG9uZShjaGFyICpzdHIsIGNoYXIgKipjb2RlcykKIAkJCQkJY3VycmVudCArPSAxOwog CQkJCWJyZWFrOwogCi0JCQljYXNlICdceGM3JzoJCS8qIEMgd2l0aCBjZWRpbGxhICovCisJCQlj YXNlIENBUElUQUxfTEVUVEVSX0NfV0lUSF9DRURJTExBOgogCQkJCU1ldGFwaEFkZChwcmltYXJ5 LCAiUyIpOwogCQkJCU1ldGFwaEFkZChzZWNvbmRhcnksICJTIik7CiAJCQkJY3VycmVudCArPSAx OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9mdXp6eXN0cm1hdGNoL2Z1enp5c3RybWF0Y2guYyBiL2Nv bnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMKaW5kZXggZTdjYzMxNGI3NjMuLjMx OTMwMmFmMGU0IDEwMDY0NAotLS0gYS9jb250cmliL2Z1enp5c3RybWF0Y2gvZnV6enlzdHJtYXRj aC5jCisrKyBiL2NvbnRyaWIvZnV6enlzdHJtYXRjaC9mdXp6eXN0cm1hdGNoLmMKQEAgLTYyLDcg KzYyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNvdW5kZXhfdGFibGUgPSAiMDEyMzAx MjAwMjI0NTUwMTI2MjMwMTAyMDIiOwogc3RhdGljIGNoYXIKIHNvdW5kZXhfY29kZShjaGFyIGxl dHRlcikKIHsKLQlsZXR0ZXIgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSBsZXR0ZXIpOworCWxl dHRlciA9IHBnX2FzY2lpX3RvdXBwZXIoKHVuc2lnbmVkIGNoYXIpIGxldHRlcik7CiAJLyogRGVm ZW5kIGFnYWluc3Qgbm9uLUFTQ0lJIGxldHRlcnMgKi8KIAlpZiAobGV0dGVyID49ICdBJyAmJiBs ZXR0ZXIgPD0gJ1onKQogCQlyZXR1cm4gc291bmRleF90YWJsZVtsZXR0ZXIgLSAnQSddOwpAQCAt MTIyLDE2ICsxMjIsMjEgQEAgc3RhdGljIGNvbnN0IGNoYXIgX2NvZGVzWzI2XSA9IHsKIHN0YXRp YyBpbnQKIGdldGNvZGUoY2hhciBjKQogewotCWlmIChpc2FscGhhKCh1bnNpZ25lZCBjaGFyKSBj KSkKLQl7Ci0JCWMgPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSBjKTsKLQkJLyogRGVmZW5kIGFn YWluc3Qgbm9uLUFTQ0lJIGxldHRlcnMgKi8KLQkJaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKQot CQkJcmV0dXJuIF9jb2Rlc1tjIC0gJ0EnXTsKLQl9CisJYyA9IHBnX2FzY2lpX3RvdXBwZXIoKHVu c2lnbmVkIGNoYXIpIGMpOworCS8qIERlZmVuZCBhZ2FpbnN0IG5vbi1BU0NJSSBsZXR0ZXJzICov CisJaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKQorCQlyZXR1cm4gX2NvZGVzW2MgLSAnQSddOwor CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBib29sCithc2NpaV9pc2FscGhhKGNoYXIgYykKK3sK KwlyZXR1cm4gKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB8fAorCQkoYyA+PSAnYScgJiYgYyA8PSAn eicpOworfQorCiAjZGVmaW5lIGlzdm93ZWwoYykJKGdldGNvZGUoYykgJiAxKQkvKiBBRUlPVSAq LwogCiAvKiBUaGVzZSBsZXR0ZXJzIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQgKi8KQEAg LTMwMSwxOCArMzA2LDE4IEBAIG1ldGFwaG9uZShQR19GVU5DVElPTl9BUkdTKQogICogYWNjZXNz aW5nIHRoZSBhcnJheSBkaXJlY3RseS4uLiAqLwogCiAvKiBMb29rIGF0IHRoZSBuZXh0IGxldHRl ciBpbiB0aGUgd29yZCAqLwotI2RlZmluZSBOZXh0X0xldHRlciAodG91cHBlcigodW5zaWduZWQg Y2hhcikgd29yZFt3X2lkeCsxXSkpCisjZGVmaW5lIE5leHRfTGV0dGVyIChwZ19hc2NpaV90b3Vw cGVyKCh1bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4KzFdKSkKIC8qIExvb2sgYXQgdGhlIGN1cnJl bnQgbGV0dGVyIGluIHRoZSB3b3JkICovCi0jZGVmaW5lIEN1cnJfTGV0dGVyICh0b3VwcGVyKCh1 bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4XSkpCisjZGVmaW5lIEN1cnJfTGV0dGVyIChwZ19hc2Np aV90b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4XSkpCiAvKiBHbyBOIGxldHRlcnMg YmFjay4gKi8KICNkZWZpbmUgTG9va19CYWNrX0xldHRlcihuKSBcCi0JKHdfaWR4ID49IChuKSA/ IHRvdXBwZXIoKHVuc2lnbmVkIGNoYXIpIHdvcmRbd19pZHgtKG4pXSkgOiAnXDAnKQorCSh3X2lk eCA+PSAobikgPyBwZ19hc2NpaV90b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4LShu KV0pIDogJ1wwJykKIC8qIFByZXZpb3VzIGxldHRlci4gIEkgZHVubm8sIHNob3VsZCB0aGlzIHJl dHVybiBudWxsIG9uIGZhaWx1cmU/ICovCiAjZGVmaW5lIFByZXZfTGV0dGVyIChMb29rX0JhY2tf TGV0dGVyKDEpKQogLyogTG9vayB0d28gbGV0dGVycyBkb3duLiAgSXQgbWFrZXMgc3VyZSB5b3Ug ZG9uJ3Qgd2FsayBvZmYgdGhlIHN0cmluZy4gKi8KICNkZWZpbmUgQWZ0ZXJfTmV4dF9MZXR0ZXIg XAotCShOZXh0X0xldHRlciAhPSAnXDAnID8gdG91cHBlcigodW5zaWduZWQgY2hhcikgd29yZFt3 X2lkeCsyXSkgOiAnXDAnKQotI2RlZmluZSBMb29rX0FoZWFkX0xldHRlcihuKSB0b3VwcGVyKCh1 bnNpZ25lZCBjaGFyKSBMb29rYWhlYWQod29yZCt3X2lkeCwgbikpCisJKE5leHRfTGV0dGVyICE9 ICdcMCcgPyBwZ19hc2NpaV90b3VwcGVyKCh1bnNpZ25lZCBjaGFyKSB3b3JkW3dfaWR4KzJdKSA6 ICdcMCcpCisjZGVmaW5lIExvb2tfQWhlYWRfTGV0dGVyKG4pIHBnX2FzY2lpX3RvdXBwZXIoKHVu c2lnbmVkIGNoYXIpIExvb2thaGVhZCh3b3JkK3dfaWR4LCBuKSkKIAogCiAvKiBBbGxvd3MgdXMg dG8gc2FmZWx5IGxvb2sgYWhlYWQgYW4gYXJiaXRyYXJ5ICMgb2YgbGV0dGVycyAqLwpAQCAtMzQw LDcgKzM0NSw3IEBAIExvb2thaGVhZChjaGFyICp3b3JkLCBpbnQgaG93X2ZhcikKICNkZWZpbmUg UGhvbmVfTGVuCShwX2lkeCkKIAogLyogTm90ZSBpcyBhIGxldHRlciBpcyBhICdicmVhaycgaW4g dGhlIHdvcmQgKi8KLSNkZWZpbmUgSXNicmVhayhjKQkoIWlzYWxwaGEoKHVuc2lnbmVkIGNoYXIp IChjKSkpCisjZGVmaW5lIElzYnJlYWsoYykJKCFhc2NpaV9pc2FscGhhKCh1bnNpZ25lZCBjaGFy KSAoYykpKQogCiAKIHN0YXRpYyB2b2lkCkBAIC0zNzksNyArMzg0LDcgQEAgX21ldGFwaG9uZShj aGFyICp3b3JkLAkJCS8qIElOICovCiAKIAkvKi0tIFRoZSBmaXJzdCBwaG9uZW1lIGhhcyB0byBi ZSBwcm9jZXNzZWQgc3BlY2lhbGx5LiAtLSovCiAJLyogRmluZCBvdXIgZmlyc3QgbGV0dGVyICov Ci0JZm9yICg7ICFpc2FscGhhKCh1bnNpZ25lZCBjaGFyKSAoQ3Vycl9MZXR0ZXIpKTsgd19pZHgr KykKKwlmb3IgKDsgIWFzY2lpX2lzYWxwaGEoKHVuc2lnbmVkIGNoYXIpIChDdXJyX0xldHRlcikp OyB3X2lkeCsrKQogCXsKIAkJLyogT24gdGhlIG9mZiBjaGFuY2Ugd2Ugd2VyZSBnaXZlbiBub3Ro aW5nIGJ1dCBjcmFwLi4uICovCiAJCWlmIChDdXJyX0xldHRlciA9PSAnXDAnKQpAQCAtNDc4LDcg KzQ4Myw3IEBAIF9tZXRhcGhvbmUoY2hhciAqd29yZCwJCQkvKiBJTiAqLwogCQkgKi8KIAogCQkv KiBJZ25vcmUgbm9uLWFscGhhcyAqLwotCQlpZiAoIWlzYWxwaGEoKHVuc2lnbmVkIGNoYXIpIChD dXJyX0xldHRlcikpKQorCQlpZiAoIWFzY2lpX2lzYWxwaGEoKHVuc2lnbmVkIGNoYXIpIChDdXJy X0xldHRlcikpKQogCQkJY29udGludWU7CiAKIAkJLyogRHJvcCBkdXBsaWNhdGVzLCBleGNlcHQg Q0MgKi8KQEAgLTczMSw3ICs3MzYsNyBAQCBfc291bmRleChjb25zdCBjaGFyICppbnN0ciwgY2hh ciAqb3V0c3RyKQogCUFzc2VydChvdXRzdHIpOwogCiAJLyogU2tpcCBsZWFkaW5nIG5vbi1hbHBo YWJldGljIGNoYXJhY3RlcnMgKi8KLQl3aGlsZSAoKmluc3RyICYmICFpc2FscGhhKCh1bnNpZ25l ZCBjaGFyKSAqaW5zdHIpKQorCXdoaWxlICgqaW5zdHIgJiYgIWFzY2lpX2lzYWxwaGEoKHVuc2ln bmVkIGNoYXIpICppbnN0cikpCiAJCSsraW5zdHI7CiAKIAkvKiBJZiBubyBzdHJpbmcgbGVmdCwg cmV0dXJuIGFsbC16ZXJvZXMgYnVmZmVyICovCkBAIC03NDIsMTIgKzc0NywxMiBAQCBfc291bmRl eChjb25zdCBjaGFyICppbnN0ciwgY2hhciAqb3V0c3RyKQogCX0KIAogCS8qIFRha2UgdGhlIGZp cnN0IGxldHRlciBhcyBpcyAqLwotCSpvdXRzdHIrKyA9IChjaGFyKSB0b3VwcGVyKCh1bnNpZ25l ZCBjaGFyKSAqaW5zdHIrKyk7CisJKm91dHN0cisrID0gKGNoYXIpIHBnX2FzY2lpX3RvdXBwZXIo KHVuc2lnbmVkIGNoYXIpICppbnN0cisrKTsKIAogCWNvdW50ID0gMTsKIAl3aGlsZSAoKmluc3Ry ICYmIGNvdW50IDwgU09VTkRFWF9MRU4pCiAJewotCQlpZiAoaXNhbHBoYSgodW5zaWduZWQgY2hh cikgKmluc3RyKSAmJgorCQlpZiAoYXNjaWlfaXNhbHBoYSgodW5zaWduZWQgY2hhcikgKmluc3Ry KSAmJgogCQkJc291bmRleF9jb2RlKCppbnN0cikgIT0gc291bmRleF9jb2RlKCooaW5zdHIgLSAx KSkpCiAJCXsKIAkJCSpvdXRzdHIgPSBzb3VuZGV4X2NvZGUoKmluc3RyKTsKLS0gCjIuNDMuMAoK --=-JS0OQCuulbc+G6N8yDpf Content-Disposition: attachment; filename="v13-0002-Control-LC_COLLATE-with-GUC.patch" Content-Type: text/x-patch; name="v13-0002-Control-LC_COLLATE-with-GUC.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1ZDhkMjIwNzdhYWE2YjczNjVjNTJiMDE2YWQwZTIyMjk2YjY4YjA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDI0IE5vdiAyMDI1IDE0OjAwOjUyIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTMgMi8yXSBD b250cm9sIExDX0NPTExBVEUgd2l0aCBHVUMuCgpOb3cgdGhhdCB0aGUgZ2xvYmFsIExDX0NPTExB VEUgc2V0dGluZyBpcyBub3QgdXNlZCBmb3IgYW55IGluLWNvcmUKcHVycG9zZSBhdCBhbGwgKHNl ZSBjb21taXQgNWU2ZTQyZTQ0ZiksIGFsbG93IGl0IHRvIGJlIHNldCB3aXRoIGEKR1VDLiBUaGlz IG1heSBiZSB1c2VmdWwgZm9yIGV4dGVuc2lvbnMgb3IgcHJvY2VkdXJhbCBsYW5ndWFnZXMgdGhh dApzdGlsbCBkZXBlbmQgb24gdGhlIGdsb2JhbCBMQ19DT0xMQVRFIHNldHRpbmcuCgpUT0RPOiBu ZWVkcyBkaXNjdXNzaW9uCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzQ1MGNlYjYy NjBjYWQzMGQ3YWZkZjE1NWQ5OTFhOWNhYWZlZTdjMGQuY2FtZWxAai1kYXZpcy5jb20KLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgICAgICAgICAgICAgfCA1OSArKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAg ICAgfCAgMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAg fCAgOSArKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8 ICAyICsKIHNyYy9iaW4vaW5pdGRiL2luaXRkYi5jICAgICAgICAgICAgICAgICAgICAgICB8ICAz ICsKIHNyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oICAgICAgICAgICAgICAgICB8ICAyICsK IHNyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oICAgICAgICAgICAgICAgICB8ICAxICsKIDcg ZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUu YwppbmRleCBlZTA4YWMwNDViNy4uNmRmYmU4YWY0N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9j YWxlLmMKQEAgLTgxLDYgKzgxLDcgQEAgZXh0ZXJuIHBnX2xvY2FsZV90IGNyZWF0ZV9wZ19sb2Nh bGVfbGliYyhPaWQgY29sbGlkLCBNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIGNoYXIg KmdldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb25fbGliYyhjb25zdCBjaGFyICpjb2xsY29sbGF0 ZSk7CiAKIC8qIEdVQyBzZXR0aW5ncyAqLworY2hhcgkgICAqbG9jYWxlX2NvbGxhdGU7CiBjaGFy CSAgICpsb2NhbGVfbWVzc2FnZXM7CiBjaGFyCSAgICpsb2NhbGVfbW9uZXRhcnk7CiBjaGFyCSAg ICpsb2NhbGVfbnVtZXJpYzsKQEAgLTM2OSw2ICszNzAsNjQgQEAgYXNzaWduX2xvY2FsZV90aW1l KGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpCiAJQ3VycmVudExDVGltZVZhbGlkID0g ZmFsc2U7CiB9CiAKKy8qCisgKiBXZSBhbGxvdyBMQ19DT0xMQVRFIHRvIGFjdHVhbGx5IGJlIHNl dCBnbG9iYWxseS4KKyAqCisgKiBOb3RlOiB3ZSBub3JtYWxseSBkaXNhbGxvdyB2YWx1ZSA9ICIi IGJlY2F1c2UgaXQgd291bGRuJ3QgaGF2ZSBjb25zaXN0ZW50CisgKiBzZW1hbnRpY3MgKGl0J2Qg ZWZmZWN0aXZlbHkganVzdCB1c2UgdGhlIHByZXZpb3VzIHZhbHVlKS4gIEhvd2V2ZXIsIHRoaXMK KyAqIGlzIHRoZSB2YWx1ZSBwYXNzZWQgZm9yIFBHQ19TX0RFRkFVTFQsIHNvIGRvbid0IGNvbXBs YWluIGluIHRoYXQgY2FzZSwKKyAqIG5vdCBldmVuIGlmIHRoZSBhdHRlbXB0ZWQgc2V0dGluZyBm YWlscyBkdWUgdG8gaW52YWxpZCBlbnZpcm9ubWVudCB2YWx1ZS4KKyAqIFRoZSBpZGVhIHRoZXJl IGlzIGp1c3QgdG8gYWNjZXB0IHRoZSBlbnZpcm9ubWVudCBzZXR0aW5nICppZiBwb3NzaWJsZSoK KyAqIGR1cmluZyBzdGFydHVwLCB1bnRpbCB3ZSBjYW4gcmVhZCB0aGUgcHJvcGVyIHZhbHVlIGZy b20gcG9zdGdyZXNxbC5jb25mLgorICovCitib29sCitjaGVja19sb2NhbGVfY29sbGF0ZShjaGFy ICoqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCit7CisJaW50CQkJbG9j YWxlX2VuYzsKKwlpbnQJCQlkYl9lbmM7CisKKwlpZiAoKipuZXd2YWwgPT0gJ1wwJykKKwl7CisJ CWlmIChzb3VyY2UgPT0gUEdDX1NfREVGQVVMVCkKKwkJCXJldHVybiB0cnVlOworCQllbHNlCisJ CQlyZXR1cm4gZmFsc2U7CisJfQorCisJbG9jYWxlX2VuYyA9IHBnX2dldF9lbmNvZGluZ19mcm9t X2xvY2FsZSgqbmV3dmFsLCB0cnVlKTsKKwlkYl9lbmMgPSBHZXREYXRhYmFzZUVuY29kaW5nKCk7 CisKKwlpZiAoIShsb2NhbGVfZW5jID09IGRiX2VuYyB8fAorCQkgIGxvY2FsZV9lbmMgPT0gUEdf U1FMX0FTQ0lJIHx8CisJCSAgZGJfZW5jID09IFBHX1NRTF9BU0NJSSB8fAorCQkgIGxvY2FsZV9l bmMgPT0gLTEpKQorCXsKKwkJaWYgKHNvdXJjZSA9PSBQR0NfU19GSUxFKQorCQl7CisJCQlndWNf ZnJlZSgqbmV3dmFsKTsKKwkJCSpuZXd2YWwgPSBndWNfc3RyZHVwKExPRywgIkMiKTsKKwkJCWlm ICghKm5ld3ZhbCkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJZWxzZSBpZiAoc291cmNlICE9 IFBHQ19TX1RFU1QpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycm1zZygiZW5j b2RpbmcgbWlzbWF0Y2giKSwKKwkJCQkJIGVycmRldGFpbCgiTG9jYWxlIFwiJXNcIiB1c2VzIGVu Y29kaW5nIFwiJXNcIiwgd2hpY2ggZG9lcyBub3QgbWF0Y2ggZGF0YWJhc2UgZW5jb2RpbmcgXCIl c1wiLiIsCisJCQkJCQkJICAgKm5ld3ZhbCwgcGdfZW5jb2RpbmdfdG9fY2hhcihsb2NhbGVfZW5j KSwgcGdfZW5jb2RpbmdfdG9fY2hhcihkYl9lbmMpKSkpOworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorCisJcmV0dXJuIGNoZWNrX2xvY2FsZShMQ19DT0xMQVRFLCAqbmV3dmFsLCBOVUxMKTsK K30KKwordm9pZAorYXNzaWduX2xvY2FsZV9jb2xsYXRlKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9p ZCAqZXh0cmEpCit7CisJKHZvaWQpIHBnX3Blcm1fc2V0bG9jYWxlKExDX0NPTExBVEUsIG5ld3Zh bCk7Cit9CisKIC8qCiAgKiBXZSBhbGxvdyBMQ19NRVNTQUdFUyB0byBhY3R1YWxseSBiZSBzZXQg Z2xvYmFsbHkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5p dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IGI3ZTk0Y2E0NWJk Li5lZWUwYjk3MTU5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5p dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtNDA0LDYgKzQw NCw4IEBAIENoZWNrTXlEYXRhYmFzZShjb25zdCBjaGFyICpuYW1lLCBib29sIGFtX3N1cGVydXNl ciwgYm9vbCBvdmVycmlkZV9hbGxvd19jb25uZWN0CiAJICogdGhlIHBnX2RhdGFiYXNlIHR1cGxl LgogCSAqLwogCVNldERhdGFiYXNlRW5jb2RpbmcoZGJmb3JtLT5lbmNvZGluZyk7CisJLyogUmVz ZXQgbGNfY29sbGF0ZSB0byBjaGVjayBlbmNvZGluZywgYW5kIGZhbGwgYmFjayB0byBDIGlmIG5l Y2Vzc2FyeSAqLworCVNldENvbmZpZ09wdGlvbigibGNfY29sbGF0ZSIsIGxvY2FsZV9jb2xsYXRl LCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfRklMRSk7CiAJLyogUmVjb3JkIGl0IGFzIGEgR1VDIGlu dGVybmFsIG9wdGlvbiwgdG9vICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXJ2ZXJfZW5jb2Rpbmci LCBHZXREYXRhYmFzZUVuY29kaW5nTmFtZSgpLAogCQkJCQlQR0NfSU5URVJOQUwsIFBHQ19TX0RZ TkFNSUNfREVGQVVMVCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19w YXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0 CmluZGV4IGFjMGM3YzM2YzU2Li5jZjc2NzVhYTJiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTE0NjYsNiArMTQ2NiwxNSBAQAogICBib290X3ZhbCA9 PiAnUEdfS1JCX1NSVlRBQicsCiB9LAogCit7IG5hbWUgPT4gJ2xjX2NvbGxhdGUnLCB0eXBlID0+ ICdzdHJpbmcnLCBjb250ZXh0ID0+ICdQR0NfU1VTRVQnLCBncm91cCA9PiAnQ0xJRU5UX0NPTk5f TE9DQUxFJywKKyAgc2hvcnRfZGVzYyA9PiAnU2V0cyB0aGUgbG9jYWxlIGZvciB0ZXh0IG9yZGVy aW5nIGluIGV4dGVuc2lvbnMuJywKKyAgbG9uZ19kZXNjID0+ICdBbiBlbXB0eSBzdHJpbmcgbWVh bnMgdXNlIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHNldHRpbmcuJywKKyAgdmFyaWFibGUgPT4gJ2xv Y2FsZV9jb2xsYXRlJywKKyAgYm9vdF92YWwgPT4gJyIiJywKKyAgY2hlY2tfaG9vayA9PiAnY2hl Y2tfbG9jYWxlX2NvbGxhdGUnLAorICBhc3NpZ25faG9vayA9PiAnYXNzaWduX2xvY2FsZV9jb2xs YXRlJywKK30sCisKIHsgbmFtZSA9PiAnbGNfbWVzc2FnZXMnLCB0eXBlID0+ICdzdHJpbmcnLCBj b250ZXh0ID0+ICdQR0NfU1VTRVQnLCBncm91cCA9PiAnQ0xJRU5UX0NPTk5fTE9DQUxFJywKICAg c2hvcnRfZGVzYyA9PiAnU2V0cyB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggbWVzc2FnZXMgYXJlIGRp c3BsYXllZC4nLAogICBsb25nX2Rlc2MgPT4gJ0FuIGVtcHR5IHN0cmluZyBtZWFucyB1c2UgdGhl IG9wZXJhdGluZyBzeXN0ZW0gc2V0dGluZy4nLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGRjOWUyMjU1ZjhhLi4xOTMzMmUzOWU4MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNzk4 LDYgKzc5OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBl bmNvZGluZwogCiAjIFRoZXNlIHNldHRpbmdzIGFyZSBpbml0aWFsaXplZCBieSBpbml0ZGIsIGJ1 dCB0aGV5IGNhbiBiZSBjaGFuZ2VkLgorI2xjX2NvbGxhdGUgPSAnJyAgICAgICAgICAgICAgICAg ICAgICAgICMgbG9jYWxlIGZvciB0ZXh0IG9yZGVyaW5nIChvbmx5IGFmZmVjdHMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGV4dGVuc2lvbnMpCiAjbGNfbWVzc2Fn ZXMgPSAnJyAgICAgICAgICAgICAgICAgICAgICAgIyBsb2NhbGUgZm9yIHN5c3RlbSBlcnJvciBt ZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmdz CiAjbGNfbW9uZXRhcnkgPSAnQycgICAgICAgICAgICAgICAgICAgICAgIyBsb2NhbGUgZm9yIG1v bmV0YXJ5IGZvcm1hdHRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIv c3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5kZXggOTJmZTJmNTMxZjcuLjhiMmU3YmZhYjZmIDEw MDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2luaXRkYi9p bml0ZGIuYwpAQCAtMTMxMiw2ICsxMzEyLDkgQEAgc2V0dXBfY29uZmlnKHZvaWQpCiAJY29uZmxp bmVzID0gcmVwbGFjZV9ndWNfdmFsdWUoY29uZmxpbmVzLCAic2hhcmVkX2J1ZmZlcnMiLAogCQkJ CQkJCQkgIHJlcGx0b2ssIGZhbHNlKTsKIAorCWNvbmZsaW5lcyA9IHJlcGxhY2VfZ3VjX3ZhbHVl KGNvbmZsaW5lcywgImxjX2NvbGxhdGUiLAorCQkJCQkJCQkgIGxjX2NvbGxhdGUsIGZhbHNlKTsK KwogCWNvbmZsaW5lcyA9IHJlcGxhY2VfZ3VjX3ZhbHVlKGNvbmZsaW5lcywgImxjX21lc3NhZ2Vz IiwKIAkJCQkJCQkJICBsY19tZXNzYWdlcywgZmFsc2UpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9ndWNfaG9va3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oCmlu ZGV4IGZiZTBiMWUyZTNkLi5mM2JmYzhkZmI3ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvZ3VjX2hvb2tzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKQEAgLTY2 LDYgKzY2LDggQEAgZXh0ZXJuIGJvb2wgY2hlY2tfaHVnZV9wYWdlX3NpemUoaW50ICpuZXd2YWws IHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4gdm9pZCBhc3NpZ25faW9f bWV0aG9kKGludCBuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiBib29sIGNoZWNrX2lvX21h eF9jb25jdXJyZW5jeShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNl KTsKIGV4dGVybiBjb25zdCBjaGFyICpzaG93X2luX2hvdF9zdGFuZGJ5KHZvaWQpOworZXh0ZXJu IGJvb2wgY2hlY2tfbG9jYWxlX2NvbGxhdGUoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBH dWNTb3VyY2Ugc291cmNlKTsKK2V4dGVybiB2b2lkIGFzc2lnbl9sb2NhbGVfY29sbGF0ZShjb25z dCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiBib29sIGNoZWNrX2xvY2FsZV9t ZXNzYWdlcyhjaGFyICoqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpOwog ZXh0ZXJuIHZvaWQgYXNzaWduX2xvY2FsZV9tZXNzYWdlcyhjb25zdCBjaGFyICpuZXd2YWwsIHZv aWQgKmV4dHJhKTsKIGV4dGVybiBib29sIGNoZWNrX2xvY2FsZV9tb25ldGFyeShjaGFyICoqbmV3 dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApp bmRleCA4NjAxNmI5MzQ0ZS4uMDk2ZWExZTQ5NjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3BnX2xvY2FsZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oCkBAIC00 MSw2ICs0MSw3IEBACiAjZGVmaW5lIFVOSUNPREVfQ0FTRU1BUF9CVUZTWgkoVU5JQ09ERV9DQVNF TUFQX0xFTiAqIE1BWF9NVUxUSUJZVEVfQ0hBUl9MRU4pCiAKIC8qIEdVQyBzZXR0aW5ncyAqLwor ZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKmxvY2FsZV9jb2xsYXRlOwogZXh0ZXJuIFBHRExMSU1Q T1JUIGNoYXIgKmxvY2FsZV9tZXNzYWdlczsKIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpsb2Nh bGVfbW9uZXRhcnk7CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqbG9jYWxlX251bWVyaWM7Ci0t IAoyLjQzLjAKCg== --=-JS0OQCuulbc+G6N8yDpf--