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 1psVkj-0001RN-TT for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Apr 2023 21:35:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1psVki-0005G7-O3 for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Apr 2023 21:35:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1psVkh-0005Fu-Tz for pgsql-hackers@lists.postgresql.org; Fri, 28 Apr 2023 21:35:40 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1psVkY-002Q25-3i for pgsql-hackers@lists.postgresql.org; Fri, 28 Apr 2023 21:35:38 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-1a66e7a52d3so3821265ad.0 for ; Fri, 28 Apr 2023 14:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20221208.gappssmtp.com; s=20221208; t=1682717729; x=1685309729; 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=/BUgciShT1T4jqYJ7O0vC/vnqXrzUrmgvLSbFp60uIM=; b=YaC7l88va9cm5u87kGrWawCVJjSw9/Rdj9gsfWXIcL8JIkzPAG8SG8ex8831CNiiw/ RZcc0po9rRZWtu+Z2H8gLoU/bdX80OHNiCkcOHcEWMf+OL/EKHo99mGHjkNq29JTPaH9 XsWsQ1OB6BMoWSLw9n6wEA2LQA/4ziL+g4UoAY2j79TDtyxQFtBz7oHDVUkw58XIWvzh JZansBlx4JITlOeiwGVbOZj0To0YOQBxEGzMngDhO4sEnVDkm7kk8/coUzwxyQkHT5DG j8aFUkE/8I4+8YzlrbEvuJPQgmZg0cIP0HmHu1ifec7DKGUDJs+C9ljANex9mY+sKk7A h1Cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682717729; x=1685309729; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=/BUgciShT1T4jqYJ7O0vC/vnqXrzUrmgvLSbFp60uIM=; b=DIsmC8Q6+Sbz6JfpiNqeSMKAOP3NDPqRlCVNfKc2+LAuQEFzc+/kfC30SLSE47SQ7W KP5L5TLufmxSSUtVG5mwhPXWDwM6RNMsGnAvr0vyYB7x3Zi3lf4r0KF4iZld/1vFDB9D 2E2W7oV7lIUhW3I/PCb1W4mh7aJ/Nc0Tr6EAILJCanHeSLntXVbDBCk82OPoDhpn3k12 fpJWYUCuhyZJwJHvEvMpvJYVQl4HqiXuwcX7w+shWDlx3GVs/IwXdV2Xv2oOWJqGaINw ciBJN93/mo1e5uE1W65TIdbAkCYUl1bZox52cuCRhYihA8ki42OThklozH+nsgEL8p4p giBw== X-Gm-Message-State: AC+VfDxb+59s76ZYY41+ut38o7erUyL+36q/OK+JIxMuTpxNYT+lXqR6 VxfYude8mJoo77oeTaIZa7zt2g== X-Google-Smtp-Source: ACHHUZ4bU+0yEsQ6DUpFSSkY1+EWQXJx8ZDCHyegcTuF+qr68DdJzcfoC51o1TaEI3jjq22tlFDGiQ== X-Received: by 2002:a17:902:ce8f:b0:1a9:5c3f:6a75 with SMTP id f15-20020a170902ce8f00b001a95c3f6a75mr7864186plg.69.1682717728520; Fri, 28 Apr 2023 14:35:28 -0700 (PDT) Received: from jeff-laptop.lan (c-73-170-46-202.hsd1.ca.comcast.net. [73.170.46.202]) by smtp.gmail.com with ESMTPSA id e5-20020a17090a630500b002478d21de2bsm1838194pjj.36.2023.04.28.14.35.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Apr 2023 14:35:27 -0700 (PDT) Message-ID: <654a49f7ff7461bcf47be4181430678d45f93858.camel@j-davis.com> Subject: Re: Order changes in PG16 since ICU introduction From: Jeff Davis To: Daniel Verite Cc: Andrew Gierth , Peter Eisentraut , Sandro Santilli , Tom Lane , Regina Obe , pgsql-hackers@lists.postgresql.org Date: Fri, 28 Apr 2023 14:35:25 -0700 In-Reply-To: <543e4ce6-8205-4aea-b54b-12b9ef747bf6@manitou-mail.org> References: <543e4ce6-8205-4aea-b54b-12b9ef747bf6@manitou-mail.org> Content-Type: multipart/mixed; boundary="=-dEx3XDo6xekZDYyMu2r0" User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-dEx3XDo6xekZDYyMu2r0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 2023-04-27 at 14:23 +0200, Daniel Verite wrote: > This should be pg_strcasecmp(...) =3D=3D 0 Good catch, thank you! Fixed in updated patches. > postgres=3D# create database lat9 locale 'fr_FR@euro' encoding LATIN9 > template > 'template0'; > ERROR:=C2=A0=C2=A0could not convert locale name "fr_FR@euro" to language = tag: > U_ILLEGAL_ARGUMENT_ERROR ICU 63 and earlier convert it without error to the language tag 'fr-FR- u-cu-eur', which is correct. ICU 64 removed support for transforming some locale variants, because apparently they think those variants are obsolete: https://unicode-org.atlassian.net/browse/ICU-22268 https://unicode-org.atlassian.net/browse/ICU-20187 (Aside: how obsolete are those variants?) It's frustrating that they'd remove such transformations from the canonicalization process. Fortunately, it looks like it's easy enough to do the transformation ourselves. The only problematic format is '...@VARIANT'. The other format 'fr_FR_EURO' doesn't seem to be a valid glibc locale name[1] and windows seems to use BCP 47[2]. And there don't seem to be a lot of variants to handle. ICU 63 only handles 3 variants, so that's what my patch does. Any unknown variant between 5 and 8 characters won't throw an error. There could be more problem cases, but I'm not sure how much of a practical problem they are. If we try to keep the meaning of LOCALE to only LC_COLLATE and LC_CTYPE, that will continue to be confusing for anyone that uses provider=3Dicu. Regards, Jeff Davis [1] https://www.gnu.org/software/libc/manual/html_node/Locale-Names.html [2] https://learn.microsoft.com/en-us/windows/win32/intl/locale-names --=-dEx3XDo6xekZDYyMu2r0 Content-Disposition: attachment; filename="v3-0001-ICU-do-not-convert-locale-C-to-en-US-u-va-posix.patch" Content-Type: text/x-patch; name="v3-0001-ICU-do-not-convert-locale-C-to-en-US-u-va-posix.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2YzAyNTFjNTg0ZWRlYTY0MTQ4NjA0ZGE1MmM4ZTU1ZTQzZmUzNmU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDIxIEFwciAyMDIzIDE0OjAzOjU3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MyAxLzRdIElD VTogZG8gbm90IGNvbnZlcnQgbG9jYWxlICdDJyB0byAnZW4tVVMtdS12YS1wb3NpeCcuCgpUaGUg Y29udmVyc2lvbiB3YXMgaW50ZW5kZWQgdG8gYmUgZm9yIGNvbnZlbmllbmNlLCBidXQgaXQncyBt b3JlCmxpa2VseSB0byBiZSBjb25mdXNpbmcgdGhhbiB1c2VmdWwuCgpUaGUgdXNlciBjYW4gc3Rp bGwgZGlyZWN0bHkgc3BlY2lmeSAnZW4tVVMtdS12YS1wb3NpeCcgaWYgZGVzaXJlZC4KCkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZjgzZjA4OWVlMWU5YWNkNWRiYmJmMzM1MzI5NGQy NGUxZjE5NmU5NS5jYW1lbEBqLWRhdmlzLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyAgICAgICAgICAgICB8IDE5ICstLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iaW4v aW5pdGRiL2luaXRkYi5jICAgICAgICAgICAgICAgICAgICAgICB8IDE3ICstLS0tLS0tLS0tLS0t LS0tCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAgICAgfCAgOCAr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwg IDQgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggNTFkZjU3MGNlOS4uNThjNGM0MjZi YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMjc4MiwyNiArMjc4MiwxMCBAQCBp Y3VfbGFuZ3VhZ2VfdGFnKGNvbnN0IGNoYXIgKmxvY19zdHIsIGludCBlbGV2ZWwpCiB7CiAjaWZk ZWYgVVNFX0lDVQogCVVFcnJvckNvZGUJIHN0YXR1czsKLQljaGFyCQkgbGFuZ1tVTE9DX0xBTkdf Q0FQQUNJVFldOwogCWNoYXIJCSpsYW5ndGFnOwogCXNpemVfdAkJIGJ1ZmxlbiA9IDMyOwkvKiBh cmJpdHJhcnkgc3RhcnRpbmcgYnVmZmVyIHNpemUgKi8KIAljb25zdCBib29sCSBzdHJpY3QgPSB0 cnVlOwogCi0Jc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCXVsb2NfZ2V0TGFuZ3VhZ2UobG9jX3N0 ciwgbGFuZywgVUxPQ19MQU5HX0NBUEFDSVRZLCAmc3RhdHVzKTsKLQlpZiAoVV9GQUlMVVJFKHN0 YXR1cykpCi0JewotCQlpZiAoZWxldmVsID4gMCkKLQkJCWVyZXBvcnQoZWxldmVsLAotCQkJCQko ZXJybXNnKCJjb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGZyb20gbG9jYWxlIFwiJXNcIjogJXMiLAot CQkJCQkJCWxvY19zdHIsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7Ci0JCXJldHVybiBOVUxMOwot CX0KLQotCS8qIEMvUE9TSVggbG9jYWxlcyBhcmVuJ3QgaGFuZGxlZCBieSB1bG9jX2dldExhbmd1 YWdlVGFnKCkgKi8KLQlpZiAoc3RyY21wKGxhbmcsICJjIikgPT0gMCB8fCBzdHJjbXAobGFuZywg InBvc2l4IikgPT0gMCkKLQkJcmV0dXJuIHBzdHJkdXAoImVuLVVTLXUtdmEtcG9zaXgiKTsKLQog CS8qCiAJICogQSBCQ1A0NyBsYW5ndWFnZSB0YWcgZG9lc24ndCBoYXZlIGEgY2xlYXJseS1kZWZp bmVkIHVwcGVyIGxpbWl0CiAJICogKGNmLiBSRkM1NjQ2IHNlY3Rpb24gNC40KS4gQWRkaXRpb25h bGx5LCBpbiBvbGRlciBJQ1UgdmVyc2lvbnMsCkBAIC0yODg5LDggKzI4NzMsNyBAQCBpY3VfdmFs aWRhdGVfbG9jYWxlKGNvbnN0IGNoYXIgKmxvY19zdHIpCiAKIAkvKiBjaGVjayBmb3Igc3BlY2lh bCBsYW5ndWFnZSBuYW1lICovCiAJaWYgKHN0cmNtcChsYW5nLCAiIikgPT0gMCB8fAotCQlzdHJj bXAobGFuZywgInJvb3QiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAidW5kIikgPT0gMCB8fAotCQlz dHJjbXAobGFuZywgImMiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAicG9zaXgiKSA9PSAwKQorCQlz dHJjbXAobGFuZywgInJvb3QiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAidW5kIikgPT0gMCkKIAkJ Zm91bmQgPSB0cnVlOwogCiAJLyogc2VhcmNoIGZvciBtYXRjaGluZyBsYW5ndWFnZSB3aXRoaW4g SUNVICovCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5p dGRiL2luaXRkYi5jCmluZGV4IDJjMjA4ZWFkMDEuLjQwODY4MzQ0NTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0y MjM4LDI0ICsyMjM4LDEwIEBAIGljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jX3N0cikK IHsKICNpZmRlZiBVU0VfSUNVCiAJVUVycm9yQ29kZQkgc3RhdHVzOwotCWNoYXIJCSBsYW5nW1VM T0NfTEFOR19DQVBBQ0lUWV07CiAJY2hhcgkJKmxhbmd0YWc7CiAJc2l6ZV90CQkgYnVmbGVuID0g MzI7CS8qIGFyYml0cmFyeSBzdGFydGluZyBidWZmZXIgc2l6ZSAqLwogCWNvbnN0IGJvb2wJIHN0 cmljdCA9IHRydWU7CiAKLQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0JdWxvY19nZXRMYW5ndWFn ZShsb2Nfc3RyLCBsYW5nLCBVTE9DX0xBTkdfQ0FQQUNJVFksICZzdGF0dXMpOwotCWlmIChVX0ZB SUxVUkUoc3RhdHVzKSkKLQl7Ci0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGZy b20gbG9jYWxlIFwiJXNcIjogJXMiLAotCQkJCSBsb2Nfc3RyLCB1X2Vycm9yTmFtZShzdGF0dXMp KTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JLyogQy9QT1NJWCBsb2NhbGVzIGFyZW4ndCBoYW5k bGVkIGJ5IHVsb2NfZ2V0TGFuZ3VhZ2VUYWcoKSAqLwotCWlmIChzdHJjbXAobGFuZywgImMiKSA9 PSAwIHx8IHN0cmNtcChsYW5nLCAicG9zaXgiKSA9PSAwKQotCQlyZXR1cm4gcHN0cmR1cCgiZW4t VVMtdS12YS1wb3NpeCIpOwotCiAJLyoKIAkgKiBBIEJDUDQ3IGxhbmd1YWdlIHRhZyBkb2Vzbid0 IGhhdmUgYSBjbGVhcmx5LWRlZmluZWQgdXBwZXIgbGltaXQKIAkgKiAoY2YuIFJGQzU2NDYgc2Vj dGlvbiA0LjQpLiBBZGRpdGlvbmFsbHksIGluIG9sZGVyIElDVSB2ZXJzaW9ucywKQEAgLTIzMjcs OCArMjMxMyw3IEBAIGljdV92YWxpZGF0ZV9sb2NhbGUoY29uc3QgY2hhciAqbG9jX3N0cikKIAog CS8qIGNoZWNrIGZvciBzcGVjaWFsIGxhbmd1YWdlIG5hbWUgKi8KIAlpZiAoc3RyY21wKGxhbmcs ICIiKSA9PSAwIHx8Ci0JCXN0cmNtcChsYW5nLCAicm9vdCIpID09IDAgfHwgc3RyY21wKGxhbmcs ICJ1bmQiKSA9PSAwIHx8Ci0JCXN0cmNtcChsYW5nLCAiYyIpID09IDAgfHwgc3RyY21wKGxhbmcs ICJwb3NpeCIpID09IDApCisJCXN0cmNtcChsYW5nLCAicm9vdCIpID09IDAgfHwgc3RyY21wKGxh bmcsICJ1bmQiKSA9PSAwKQogCQlmb3VuZCA9IHRydWU7CiAKIAkvKiBzZWFyY2ggZm9yIG1hdGNo aW5nIGxhbmd1YWdlIHdpdGhpbiBJQ1UgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvbGxhdGUuaWN1LnV0Zjgub3V0CmluZGV4IGI1YTIyMWIwMzAuLjk5ZjEyZDJlNzMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMTAy MCw2ICsxMDIwLDcgQEAgQ1JFQVRFIFJPTEUgcmVncmVzc190ZXN0X3JvbGU7CiBDUkVBVEUgU0NI RU1BIHRlc3Rfc2NoZW1hOwogLS0gV2UgbmVlZCB0byBkbyB0aGlzIHRoaXMgd2F5IHRvIGNvcGUg d2l0aCB2YXJ5aW5nIG5hbWVzIGZvciBlbmNvZGluZ3M6CiBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyBUTyBXQVJOSU5HOworU0VUIGljdV92YWxpZGF0aW9uX2xldmVsID0gZGlzYWJsZWQ7CiBkbyAk JAogQkVHSU4KICAgRVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICcgfHwKQEAgLTEwMzQsMTcgKzEwMzUsMjQgQEAgQkVHSU4KICAgICAgICAg ICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fCAnKTsnOwog RU5ECiAkJDsKK1JFU0VUIGljdV92YWxpZGF0aW9uX2xldmVsOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIENSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0gaWN1LCBsY19jb2xs YXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZHMgImxvY2FsZSIKIEVSUk9SOiAgcGFy YW1ldGVyICJsb2NhbGUiIG11c3QgYmUgc3BlY2lmaWVkCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4 IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgLS0gZmFpbHMK IEVSUk9SOiAgSUNVIGxvY2FsZSAibm9uc2Vuc2Utbm93aGVyZSIgaGFzIHVua25vd24gbGFuZ3Vh Z2UgIm5vbnNlbnNlIgogSElOVDogIFRvIGRpc2FibGUgSUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBz ZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVsIHRvIERJU0FCTEVELgorQ1JFQVRFIENP TExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IC0tIGZhaWxzCitF UlJPUjogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJjIiB0byBsYW5ndWFnZSB0YWc6 IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsg LS0gZmFpbHMKIEVSUk9SOiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgIkBjb2xTdHJl bmd0aD1wcmltYXJ5O25vbnNlbnNlPXllcyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJH VU1FTlRfRVJST1IKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7CiBDUkVBVEUg Q09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1w cmltYXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFdBUk5JTkc6ICBj b3VsZCBub3QgY29udmVydCBsb2NhbGUgbmFtZSAiQGNvbFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vu c2U9eWVzIiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgorQ1JFQVRF IENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IERST1AgQ09M TEFUSU9OIHRlc3R4OworV0FSTklORzogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJj IiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgorV0FSTklORzogIElD VSBsb2NhbGUgImMiIGhhcyB1bmtub3duIGxhbmd1YWdlICJjIgorSElOVDogIFRvIGRpc2FibGUg SUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBzZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVs IHRvIERJU0FCTEVELgogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxv Y2FsZSA9ICdub25zZW5zZS1ub3doZXJlJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OwogV0FSTklO RzogIElDVSBsb2NhbGUgIm5vbnNlbnNlLW5vd2hlcmUiIGhhcyB1bmtub3duIGxhbmd1YWdlICJu b25zZW5zZSIKIEhJTlQ6ICBUbyBkaXNhYmxlIElDVSBsb2NhbGUgdmFsaWRhdGlvbiwgc2V0IHBh cmFtZXRlciBpY3VfdmFsaWRhdGlvbl9sZXZlbCB0byBESVNBQkxFRC4KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggODVlMjY5NTFiNi4uZDk3NzhmYWFjYyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTM1OCw2ICsz NTgsNyBAQCBDUkVBVEUgU0NIRU1BIHRlc3Rfc2NoZW1hOwogCiAtLSBXZSBuZWVkIHRvIGRvIHRo aXMgdGhpcyB3YXkgdG8gY29wZSB3aXRoIHZhcnlpbmcgbmFtZXMgZm9yIGVuY29kaW5nczoKIFNF VCBjbGllbnRfbWluX21lc3NhZ2VzIFRPIFdBUk5JTkc7CitTRVQgaWN1X3ZhbGlkYXRpb25fbGV2 ZWwgPSBkaXNhYmxlZDsKIAogZG8gJCQKIEJFR0lOCkBAIC0zNzMsMTMgKzM3NCwxNiBAQCBCRUdJ TgogRU5ECiAkJDsKIAorUkVTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWw7CiBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOwogCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChwcm92aWRlciA9IGljdSwg bGNfY29sbGF0ZSA9ICdlbl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWRzICJsb2NhbGUiCiBDUkVB VEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5v d2hlcmUnKTsgLS0gZmFpbHMKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAnYycpOyAtLSBmYWlscwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsg LS0gZmFpbHMKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7CiBDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1wcmlt YXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKK0NSRUFURSBDT0xMQVRJ T04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9QIENPTExBVElPTiB0 ZXN0eDsKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAn bm9uc2Vuc2Utbm93aGVyZScpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFJFU0VUIGljdV92YWxp ZGF0aW9uX2xldmVsOwogCi0tIAoyLjM0LjEKCg== --=-dEx3XDo6xekZDYyMu2r0 Content-Disposition: attachment; filename*0=v3-0002-ICU-support-locale-C-with-the-same-behavior-as-li.pat; filename*1=ch Content-Type: text/x-patch; name="v3-0002-ICU-support-locale-C-with-the-same-behavior-as-li.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyMmE4YmE1NzQ4OTUzZmJjNTc3ZjdhZWI4ZDhkODVkMTg1MzY0ZmI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDI0IEFwciAyMDIzIDE1OjQ2OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MyAyLzRdIElD VTogc3VwcG9ydCBsb2NhbGUgIkMiIHdpdGggdGhlIHNhbWUgYmVoYXZpb3IgYXMKIGxpYmMuCgpU aGUgIkMiIGxvY2FsZSBkb2Vzbid0IGFjdHVhbGx5IHVzZSBhIHByb3ZpZGVyIGF0IGFsbCwgaXQn cyBhIHNwZWNpYWwKbG9jYWxlIHRoYXQgdXNlcyBtZW1jbXAoKSBhbmQgYnVpbHQtaW4gY2hhcmFj dGVyIGNsYXNzaWZpY2F0aW9uLiBNYWtlCml0IGJlaGF2ZSB0aGUgc2FtZSBpbiBJQ1UgYXMgbGli YyAoZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBhY3R1YWxseQptYWtlIHVzZSBvZiBlaXRoZXIgcHJv dmlkZXIpLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS84N3Y4aG9leGR2LmZzZkBu ZXdzLXNwdXIucmlkZGxlcy5vcmcudWsKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRp b25jbWRzLmMgICAgICAgICAgfCA0MyArKysrKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9k YmNvbW1hbmRzLmMgICAgICAgICAgICAgfCA0MiArKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYyAgICAgICAgICAgICB8IDg2ICsrKysrKysrKysrKysrLS0tLS0KIC4u Li9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0ICAgICB8IDEyICstLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwgIDcgKy0KIDUgZmls ZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbGxhdGlvbmNtZHMuYwppbmRleCBjOTFmZTY2ZDliLi43ZTY5YTg4OWZiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCkBAIC0yNjQsMjYgKzI2NCwzOSBAQCBEZWZp bmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1l dGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coInBhcmFtZXRlciBcImxvY2FsZVwiIG11c3Qg YmUgc3BlY2lmaWVkIikpKTsKIAotCQkJLyoKLQkJCSAqIER1cmluZyBiaW5hcnkgdXBncmFkZSwg cHJlc2VydmUgdGhlIGxvY2FsZSBzdHJpbmcuIE90aGVyd2lzZSwKLQkJCSAqIGNhbm9uaWNhbGl6 ZSB0byBhIGxhbmd1YWdlIHRhZy4KLQkJCSAqLwotCQkJaWYgKCFJc0JpbmFyeVVwZ3JhZGUpCisJ CQlpZiAocGdfc3RyY2FzZWNtcChjb2xsaWN1bG9jYWxlLCAiQyIpID09IDAgfHwKKwkJCQlwZ19z dHJjYXNlY21wKGNvbGxpY3Vsb2NhbGUsICJQT1NJWCIpID09IDApCiAJCQl7Ci0JCQkJY2hhciAq bGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoY29sbGljdWxvY2FsZSwKLQkJCQkJCQkJCQkJCSBp Y3VfdmFsaWRhdGlvbl9sZXZlbCk7Ci0KLQkJCQlpZiAobGFuZ3RhZyAmJiBzdHJjbXAoY29sbGlj dWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCQlpZiAoIWNvbGxpc2RldGVybWluaXN0aWMpCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycm1zZygibm9uZGV0ZXJtaW5pc3RpYyBjb2xs YXRpb25zIG5vdCBzdXBwb3J0ZWQgZm9yIEMgb3IgUE9TSVggbG9jYWxlIikpKTsKKwkJCQlpZiAo Y29sbGljdXJ1bGVzICE9IE5VTEwpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycm1z ZygiUlVMRVMgbm90IHN1cHBvcnRlZCBmb3IgQyBvciBQT1NJWCBsb2NhbGUiKSkpOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogRHVyaW5nIGJpbmFyeSB1cGdyYWRlLCBwcmVz ZXJ2ZSB0aGUgbG9jYWxlCisJCQkJICogc3RyaW5nLiBPdGhlcndpc2UsIGNhbm9uaWNhbGl6ZSB0 byBhIGxhbmd1YWdlIHRhZy4KKwkJCQkgKi8KKwkJCQlpZiAoIUlzQmluYXJ5VXBncmFkZSkKIAkJ CQl7Ci0JCQkJCWVyZXBvcnQoTk9USUNFLAotCQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJk IGZvcm0gXCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKLQkJCQkJCQkJCWxhbmd0YWcsIGNvbGxp Y3Vsb2NhbGUpKSk7CisJCQkJCWNoYXIgKmxhbmd0YWcgPSBpY3VfbGFuZ3VhZ2VfdGFnKGNvbGxp Y3Vsb2NhbGUsCisJCQkJCQkJCQkJCQkJIGljdV92YWxpZGF0aW9uX2xldmVsKTsKKworCQkJCQlp ZiAobGFuZ3RhZyAmJiBzdHJjbXAoY29sbGljdWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCQkJ eworCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJk IGZvcm0gXCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKKwkJCQkJCQkJCQlsYW5ndGFnLCBjb2xs aWN1bG9jYWxlKSkpOwogCi0JCQkJCWNvbGxpY3Vsb2NhbGUgPSBsYW5ndGFnOworCQkJCQkJY29s bGljdWxvY2FsZSA9IGxhbmd0YWc7CisJCQkJCX0KIAkJCQl9Ci0JCQl9CiAKLQkJCWljdV92YWxp ZGF0ZV9sb2NhbGUoY29sbGljdWxvY2FsZSk7CisJCQkJaWN1X3ZhbGlkYXRlX2xvY2FsZShjb2xs aWN1bG9jYWxlKTsKKwkJCX0KIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9kYmNvbW1hbmRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMK aW5kZXggMmUyNDJlZWZmMi4uOGVmMzM4NzFmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGJjb21tYW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMu YwpAQCAtMTA1OCwyNyArMTA1OCwzNyBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNv bnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coIklDVSBsb2NhbGUgbXVzdCBiZSBzcGVjaWZp ZWQiKSkpOwogCi0JCS8qCi0JCSAqIER1cmluZyBiaW5hcnkgdXBncmFkZSwgb3Igd2hlbiB0aGUg bG9jYWxlIGNhbWUgZnJvbSB0aGUgdGVtcGxhdGUKLQkJICogZGF0YWJhc2UsIHByZXNlcnZlIGxv Y2FsZSBzdHJpbmcuIE90aGVyd2lzZSwgY2Fub25pY2FsaXplIHRvIGEKLQkJICogbGFuZ3VhZ2Ug dGFnLgotCQkgKi8KLQkJaWYgKCFJc0JpbmFyeVVwZ3JhZGUgJiYgZGJpY3Vsb2NhbGUgIT0gc3Jj X2ljdWxvY2FsZSkKKwkJaWYgKHBnX3N0cmNhc2VjbXAoZGJpY3Vsb2NhbGUsICJDIikgPT0gMCB8 fAorCQkJcGdfc3RyY2FzZWNtcChkYmljdWxvY2FsZSwgIlBPU0lYIikgPT0gMCkKIAkJewotCQkJ Y2hhciAqbGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoZGJpY3Vsb2NhbGUsCi0JCQkJCQkJCQkJ CSBpY3VfdmFsaWRhdGlvbl9sZXZlbCk7Ci0KLQkJCWlmIChsYW5ndGFnICYmIHN0cmNtcChkYmlj dWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCWlmIChkYmljdXJ1bGVzICE9IE5VTEwpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJtc2coIklDVV9SVUxFUyBub3Qgc3VwcG9ydGVkIGZv ciBDIG9yIFBPU0lYIGxvY2FsZSIpKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICog RHVyaW5nIGJpbmFyeSB1cGdyYWRlLCBvciB3aGVuIHRoZSBsb2NhbGUgY2FtZSBmcm9tIHRoZQor CQkJICogdGVtcGxhdGUgZGF0YWJhc2UsIHByZXNlcnZlIGxvY2FsZSBzdHJpbmcuIE90aGVyd2lz ZSwKKwkJCSAqIGNhbm9uaWNhbGl6ZSB0byBhIGxhbmd1YWdlIHRhZy4KKwkJCSAqLworCQkJaWYg KCFJc0JpbmFyeVVwZ3JhZGUgJiYgZGJpY3Vsb2NhbGUgIT0gc3JjX2ljdWxvY2FsZSkKIAkJCXsK LQkJCQllcmVwb3J0KE5PVElDRSwKLQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJkIGZvcm0g XCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKLQkJCQkJCQkJbGFuZ3RhZywgZGJpY3Vsb2NhbGUp KSk7CisJCQkJY2hhciAqbGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoZGJpY3Vsb2NhbGUsCisJ CQkJCQkJCQkJCQkgaWN1X3ZhbGlkYXRpb25fbGV2ZWwpOworCisJCQkJaWYgKGxhbmd0YWcgJiYg c3RyY21wKGRiaWN1bG9jYWxlLCBsYW5ndGFnKSAhPSAwKQorCQkJCXsKKwkJCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCQkJKGVycm1zZygidXNpbmcgc3RhbmRhcmQgZm9ybSBcIiVzXCIgZm9yIGxv Y2FsZSBcIiVzXCIiLAorCQkJCQkJCQkJbGFuZ3RhZywgZGJpY3Vsb2NhbGUpKSk7CiAKLQkJCQlk YmljdWxvY2FsZSA9IGxhbmd0YWc7CisJCQkJCWRiaWN1bG9jYWxlID0gbGFuZ3RhZzsKKwkJCQl9 CiAJCQl9Ci0JCX0KIAotCQlpY3VfdmFsaWRhdGVfbG9jYWxlKGRiaWN1bG9jYWxlKTsKKwkJCWlj dV92YWxpZGF0ZV9sb2NhbGUoZGJpY3Vsb2NhbGUpOworCQl9CiAJfQogCWVsc2UKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggNThjNGM0MjZiYy4uM2UxOWIyMTEyMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMTI0Niw4ICsxMjQ2LDE1IEBAIGxvb2t1cF9jb2xs YXRpb25fY2FjaGUoT2lkIGNvbGxhdGlvbiwgYm9vbCBzZXRfZmxhZ3MpCiAJCX0KIAkJZWxzZQog CQl7Ci0JCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0gZmFsc2U7Ci0JCQljYWNoZV9lbnRy eS0+Y3R5cGVfaXNfYyA9IGZhbHNlOworCQkJRGF0dW0JCWRhdHVtOworCQkJY29uc3QgY2hhciAq Y29sbGljdWxvY2FsZTsKKworCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExP SUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlKTsKKwkJCWNvbGxpY3Vsb2Nh bGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKworCQkJY2FjaGVfZW50cnktPmNvbGxh dGVfaXNfYyA9ICgoc3RyY21wKGNvbGxpY3Vsb2NhbGUsICJDIikgPT0gMCkgfHwKKwkJCQkJCQkJ CQkgKHN0cmNtcChjb2xsaWN1bG9jYWxlLCAiUE9TSVgiKSA9PSAwKSk7CisJCQljYWNoZV9lbnRy eS0+Y3R5cGVfaXNfYyA9IGNhY2hlX2VudHJ5LT5jb2xsYXRlX2lzX2M7CiAJCX0KIAogCQljYWNo ZV9lbnRyeS0+ZmxhZ3NfdmFsaWQgPSB0cnVlOwpAQCAtMTI3OSwxNiArMTI4NiwyNyBAQCBsY19j b2xsYXRlX2lzX2MoT2lkIGNvbGxhdGlvbikKIAlpZiAoY29sbGF0aW9uID09IERFRkFVTFRfQ09M TEFUSU9OX09JRCkKIAl7CiAJCXN0YXRpYyBpbnQJcmVzdWx0ID0gLTE7Ci0JCWNoYXIJICAgKmxv Y2FsZXB0cjsKLQotCQlpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0lDVSkKLQkJCXJldHVybiBmYWxzZTsKKwkJY29uc3QgY2hhciAqbG9jYWxlcHRyOwogCiAJCWlm IChyZXN1bHQgPj0gMCkKIAkJCXJldHVybiAoYm9vbCkgcmVzdWx0OwotCQlsb2NhbGVwdHIgPSBz ZXRsb2NhbGUoTENfQ09MTEFURSwgTlVMTCk7Ci0JCWlmICghbG9jYWxlcHRyKQotCQkJZWxvZyhF UlJPUiwgImludmFsaWQgTENfQ09MTEFURSBzZXR0aW5nIik7CisKKwkJaWYgKGRlZmF1bHRfbG9j YWxlLnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCXsKKyNpZmRlZiBVU0VfSUNVCisJ CQlsb2NhbGVwdHIgPSBkZWZhdWx0X2xvY2FsZS5pbmZvLmljdS5sb2NhbGU7CisjZWxzZQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkgZXJybXNnKCJJQ1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIikp KTsKKyNlbmRpZgorCQl9CisJCWVsc2UKKwkJeworCQkJbG9jYWxlcHRyID0gc2V0bG9jYWxlKExD X0NPTExBVEUsIE5VTEwpOworCQkJaWYgKCFsb2NhbGVwdHIpCisJCQkJZWxvZyhFUlJPUiwgImlu dmFsaWQgTENfQ09MTEFURSBzZXR0aW5nIik7CisJCX0KIAogCQlpZiAoc3RyY21wKGxvY2FsZXB0 ciwgIkMiKSA9PSAwKQogCQkJcmVzdWx0ID0gdHJ1ZTsKQEAgLTEzMzIsMTYgKzEzNTAsMjcgQEAg bGNfY3R5cGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCWlmIChjb2xsYXRpb24gPT0gREVGQVVMVF9D T0xMQVRJT05fT0lEKQogCXsKIAkJc3RhdGljIGludAlyZXN1bHQgPSAtMTsKLQkJY2hhcgkgICAq bG9jYWxlcHRyOwotCi0JCWlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklE RVJfSUNVKQotCQkJcmV0dXJuIGZhbHNlOworCQljb25zdCBjaGFyICpsb2NhbGVwdHI7CiAKIAkJ aWYgKHJlc3VsdCA+PSAwKQogCQkJcmV0dXJuIChib29sKSByZXN1bHQ7Ci0JCWxvY2FsZXB0ciA9 IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7Ci0JCWlmICghbG9jYWxlcHRyKQotCQkJZWxvZyhF UlJPUiwgImludmFsaWQgTENfQ1RZUEUgc2V0dGluZyIpOworCisJCWlmIChkZWZhdWx0X2xvY2Fs ZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQl7CisjaWZkZWYgVVNFX0lDVQorCQkJ bG9jYWxlcHRyID0gZGVmYXVsdF9sb2NhbGUuaW5mby5pY3UubG9jYWxlOworI2Vsc2UKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJIGVycm1zZygiSUNVIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCIpKSk7 CisjZW5kaWYKKwkJfQorCQllbHNlCisJCXsKKwkJCWxvY2FsZXB0ciA9IHNldGxvY2FsZShMQ19D VFlQRSwgTlVMTCk7CisJCQlpZiAoIWxvY2FsZXB0cikKKwkJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBMQ19DVFlQRSBzZXR0aW5nIik7CisJCX0KIAogCQlpZiAoc3RyY21wKGxvY2FsZXB0ciwgIkMi KSA9PSAwKQogCQkJcmVzdWx0ID0gdHJ1ZTsKQEAgLTEzNzUsNyArMTQwNCwxNCBAQCBtYWtlX2lj dV9jb2xsYXRvcihjb25zdCBjaGFyICppY3Vsb2NzdHIsCiAjaWZkZWYgVVNFX0lDVQogCVVDb2xs YXRvciAgKmNvbGxhdG9yOwogCi0JY29sbGF0b3IgPSBwZ191Y29sX29wZW4oaWN1bG9jc3RyKTsK KwlpZiAocGdfc3RyY2FzZWNtcChpY3Vsb2NzdHIsICJDIikgPT0gMCB8fAorCQlwZ19zdHJjYXNl Y21wKGljdWxvY3N0ciwgIlBPU0lYIikgPT0gMCkKKwl7CisJCUFzc2VydChpY3VydWxlcyA9PSBO VUxMKTsKKwkJY29sbGF0b3IgPSBOVUxMOworCX0KKwllbHNlCisJCWNvbGxhdG9yID0gcGdfdWNv bF9vcGVuKGljdWxvY3N0cik7CiAKIAkvKgogCSAqIElmIHJ1bGVzIGFyZSBzcGVjaWZpZWQsIHdl IGV4dHJhY3QgdGhlIHJ1bGVzIG9mIHRoZSBzdGFuZGFyZCBjb2xsYXRpb24sCkBAIC0xNjUwLDYg KzE2ODYsMTAgQEAgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjaGFyIGNvbGxwcm92aWRl ciwgY29uc3QgY2hhciAqY29sbGNvbGxhdGUpCiB7CiAJY2hhcgkgICAqY29sbHZlcnNpb24gPSBO VUxMOwogCisJaWYgKHBnX3N0cmNhc2VjbXAoIkMiLCBjb2xsY29sbGF0ZSkgPT0gMCB8fAorCQlw Z19zdHJjYXNlY21wKCJQT1NJWCIsIGNvbGxjb2xsYXRlKSA9PSAwKQorCQlyZXR1cm4gTlVMTDsK KwogI2lmZGVmIFVTRV9JQ1UKIAlpZiAoY29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1Up CiAJewpAQCAtMTY2OCw5ICsxNzA4LDcgQEAgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihj aGFyIGNvbGxwcm92aWRlciwgY29uc3QgY2hhciAqY29sbGNvbGxhdGUpCiAJZWxzZQogI2VuZGlm CiAJCWlmIChjb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMgJiYKLQkJCXBnX3N0cmNh c2VjbXAoIkMiLCBjb2xsY29sbGF0ZSkgIT0gMCAmJgotCQkJcGdfc3RybmNhc2VjbXAoIkMuIiwg Y29sbGNvbGxhdGUsIDIpICE9IDAgJiYKLQkJCXBnX3N0cmNhc2VjbXAoIlBPU0lYIiwgY29sbGNv bGxhdGUpICE9IDApCisJCQlwZ19zdHJuY2FzZWNtcCgiQy4iLCBjb2xsY29sbGF0ZSwgMikgIT0g MCkKIAl7CiAjaWYgZGVmaW5lZChfX0dMSUJDX18pCiAJCS8qIFVzZSB0aGUgZ2xpYmMgdmVyc2lv biBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55dGhpbmcgYmV0dGVyLiAqLwpAQCAtMjQ1Nyw2ICsy NDk1LDE0IEBAIHBnX3Vjb2xfb3Blbihjb25zdCBjaGFyICpsb2Nfc3RyKQogCWlmIChsb2Nfc3Ry ID09IE5VTEwpCiAJCWVsb2coRVJST1IsICJvcGVuaW5nIGRlZmF1bHQgY29sbGF0b3IgaXMgbm90 IHN1cHBvcnRlZCIpOwogCisJLyoKKwkgKiBNdXN0IG5ldmVyIG9wZW4gc3BlY2lhbCB2YWx1ZXMg QyBvciBQT1NJWCwgd2hpY2ggYXJlIHRyZWF0ZWQgc3BlY2lhbGx5CisJICogYW5kIG5vdCBwYXNz ZWQgdG8gdGhlIHByb3ZpZGVyLgorCSAqLworCWlmIChwZ19zdHJjYXNlY21wKGxvY19zdHIsICJD IikgPT0gMCB8fAorCQlwZ19zdHJjYXNlY21wKGxvY19zdHIsICJQT1NJWCIpID09IDApCisJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIElDVSBsb2NhbGUgc3RyaW5nOiAlcyIsIGxvY19zdHIpOwor CiAJLyoKIAkgKiBJbiBJQ1UgdmVyc2lvbnMgNTQgYW5kIGVhcmxpZXIsICJ1bmQiIGlzIG5vdCBh IHJlY29nbml6ZWQgc3BlbGxpbmcgb2YKIAkgKiB0aGUgcm9vdCBsb2NhbGUuIElmIHRoZSBmaXJz dCBjb21wb25lbnQgb2YgdGhlIGxvY2FsZSBpcyAidW5kIiwgcmVwbGFjZQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKaW5kZXggOTlmMTJkMmU3My4u NTNhYjQ5NmJmZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRl LmljdS51dGY4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1 LnV0Zjgub3V0CkBAIC0xMDQyLDIxICsxMDQyLDIxIEBAIEVSUk9SOiAgcGFyYW1ldGVyICJsb2Nh bGUiIG11c3QgYmUgc3BlY2lmaWVkCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9 IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgLS0gZmFpbHMKIEVSUk9SOiAgSUNV IGxvY2FsZSAibm9uc2Vuc2Utbm93aGVyZSIgaGFzIHVua25vd24gbGFuZ3VhZ2UgIm5vbnNlbnNl IgogSElOVDogIFRvIGRpc2FibGUgSUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBzZXQgcGFyYW1ldGVy IGljdV92YWxpZGF0aW9uX2xldmVsIHRvIERJU0FCTEVELgotQ1JFQVRFIENPTExBVElPTiB0ZXN0 eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IC0tIGZhaWxzCi1FUlJPUjogIGNvdWxk IG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJjIiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9B UkdVTUVOVF9FUlJPUgorQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxv Y2FsZSA9ICdjJywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsgLS0gZmFpbHMKK0VSUk9SOiAgbm9u ZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zIG5vdCBzdXBwb3J0ZWQgZm9yIEMgb3IgUE9TSVggbG9j YWxlCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2Mn LCBydWxlcyA9ICcmViA8PCB3IDw8PCBXJyk7IC0tIGZhaWxzCitFUlJPUjogIFJVTEVTIG5vdCBz dXBwb3J0ZWQgZm9yIEMgb3IgUE9TSVggbG9jYWxlCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChw cm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1wcmltYXJ5O25vbnNlbnNlPXll cycpOyAtLSBmYWlscwogRVJST1I6ICBjb3VsZCBub3QgY29udmVydCBsb2NhbGUgbmFtZSAiQGNv bFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVzIiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdB TF9BUkdVTUVOVF9FUlJPUgogU0VUIGljdV92YWxpZGF0aW9uX2xldmVsID0gV0FSTklORzsKIENS RUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNvbFN0cmVu Z3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVzJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OwogV0FSTklO RzogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJAY29sU3RyZW5ndGg9cHJpbWFyeTtu b25zZW5zZT15ZXMiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SCi1D UkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2MnKTsgRFJP UCBDT0xMQVRJT04gdGVzdHg7Ci1XQVJOSU5HOiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxlIG5h bWUgImMiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SCi1XQVJOSU5H OiAgSUNVIGxvY2FsZSAiYyIgaGFzIHVua25vd24gbGFuZ3VhZ2UgImMiCi1ISU5UOiAgVG8gZGlz YWJsZSBJQ1UgbG9jYWxlIHZhbGlkYXRpb24sIHNldCBwYXJhbWV0ZXIgaWN1X3ZhbGlkYXRpb25f bGV2ZWwgdG8gRElTQUJMRUQuCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGlj dSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBX QVJOSU5HOiAgSUNVIGxvY2FsZSAibm9uc2Vuc2Utbm93aGVyZSIgaGFzIHVua25vd24gbGFuZ3Vh Z2UgIm5vbnNlbnNlIgogSElOVDogIFRvIGRpc2FibGUgSUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBz ZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVsIHRvIERJU0FCTEVELgogUkVTRVQgaWN1 X3ZhbGlkYXRpb25fbGV2ZWw7CitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGlj dSwgbG9jYWxlID0gJ2MnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CitDUkVBVEUgQ09MTEFUSU9O IHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ3Bvc2l4Jyk7IERST1AgQ09MTEFUSU9O IHRlc3R4OwogQ1JFQVRFIENPTExBVElPTiB0ZXN0NCBGUk9NIG5vbnNlbnNlOwogRVJST1I6ICBj b2xsYXRpb24gIm5vbnNlbnNlIiBmb3IgZW5jb2RpbmcgIlVURjgiIGRvZXMgbm90IGV4aXN0CiBD UkVBVEUgQ09MTEFUSU9OIHRlc3Q1IEZST00gdGVzdDA7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv bGxhdGUuaWN1LnV0Zjguc3FsCmluZGV4IGQ5Nzc4ZmFhY2MuLjYzZDUzNTJlZTYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCkBAIC0zNzksMTQgKzM3OSwxNyBA QCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChw cm92aWRlciA9IGljdSwgbGNfY29sbGF0ZSA9ICdlbl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWRz ICJsb2NhbGUiCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxl ID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgLS0gZmFpbHMKLUNSRUFURSBDT0xMQVRJT04gdGVzdHgg KHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyAtLSBmYWlscworQ1JFQVRFIENPTExBVElP TiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJywgZGV0ZXJtaW5pc3RpYyA9IGZh bHNlKTsgLS0gZmFpbHMKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBs b2NhbGUgPSAnYycsIHJ1bGVzID0gJyZWIDw8IHcgPDw8IFcnKTsgLS0gZmFpbHMKIENSRUFURSBD T0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNvbFN0cmVuZ3RoPXBy aW1hcnk7bm9uc2Vuc2U9eWVzJyk7IC0tIGZhaWxzCiBTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWwg PSBXQVJOSU5HOwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2Fs ZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsgRFJPUCBDT0xMQVRJT04g dGVzdHg7Ci1DUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0g J2MnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92 aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgRFJPUCBDT0xMQVRJT04g dGVzdHg7CiBSRVNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbDsKIAorQ1JFQVRFIENPTExBVElPTiB0 ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4 OworQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdwb3Np eCcpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKKwogQ1JFQVRFIENPTExBVElPTiB0ZXN0NCBGUk9N IG5vbnNlbnNlOwogQ1JFQVRFIENPTExBVElPTiB0ZXN0NSBGUk9NIHRlc3QwOwogCi0tIAoyLjM0 LjEKCg== --=-dEx3XDo6xekZDYyMu2r0 Content-Disposition: attachment; filename="v3-0003-ICU-fix-up-old-libc-style-locale-strings.patch" Content-Type: text/x-patch; name="v3-0003-ICU-fix-up-old-libc-style-locale-strings.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiMzNkYzU2OTYwMzc4YTEwNDdjY2Y5YzAzODdhMWZlMzMzOTEyMTQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDI4IEFwciAyMDIzIDEyOjIyOjQxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MyAzLzRdIElD VTogZml4IHVwIG9sZCBsaWJjLXN0eWxlIGxvY2FsZSBzdHJpbmdzLgoKQmVmb3JlIHRyYW5zZm9y bWluZyBhIGxvY2FsZSBzdHJpbmcgaW50byBhIGxhbmd1YWdlIHRhZywgZml4IHVwIG9sZApsaWJj LXN0eWxlIGxvY2FsZSBzdHJpbmdzIHN1Y2ggYXMgJ2RlX19QSE9ORUJPT0snIG9yCidmcl9GUkBF VVJPJy4gT2xkZXIgSUNVIHZlcnNpb25zIGRpZCB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBJQ1UK dmVyc2lvbiA2NCByZW1vdmVkIHRoYXQgc3VwcG9ydC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlLmMgICAgICAgICAgICAgfCA1OSArKysrKysrKysrKysrKysrLQogc3JjL2Jp bi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAgIHwgNjMgKysrKysrKysrKysr KysrKysrLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwg MTEgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwg IDcgKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCAzZTE5YjIxMTIyLi45ZjJjMTM5YjBi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC0yODEyLDYgKzI4MTIsNjAgQEAgaWN1 X3NldF9jb2xsYXRpb25fYXR0cmlidXRlcyhVQ29sbGF0b3IgKmNvbGxhdG9yLCBjb25zdCBjaGFy ICpsb2MsCiAJcGZyZWUobG93ZXJfc3RyKTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKmljdV92 YXJpYW50X21hcFtdWzJdID0geworCXsgIkBFVVJPIiwgICAiQGN1cnJlbmN5PUVVUiIgfSwKKwl7 ICJAUElOWUlOIiwgIkBjb2xsYXRpb249cGlueWluIiB9LAorCXsgIkBTVFJPS0UiLCAiQGNvbGxh dGlvbj1zdHJva2UiIH0sCit9OworCisjZGVmaW5lIElDVV9WQVJJQU5UX01BUF9TSVpFIFwKKwko c2l6ZW9mKGljdV92YXJpYW50X21hcCkvc2l6ZW9mKGljdV92YXJpYW50X21hcFswXSkpCisKKy8q CisgKiBJQ1UgdmVyc2lvbiA2NCByZW1vdmVkIHRoZSBhYmlsaXR5IHRvIHRyYW5zZm9ybSBsb2Nh bGUgc3RyaW5ncyBvZiB0aGUgZm9ybQorICogJy4uLkBWQVJJQU5UJyBpbnRvIHByb3BlciBsYW5n dWFnZSB0YWdzLiBQZXJmb3JtIHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tCisgKiB3aXRoaW4gUG9z dGdyZXMgc28gdGhhdCBJQ1Ugc3VwcG9ydHMgYW55IGxpYmMgbG9jYWxlIG5hbWUgY29uc2lzdGVu dGx5LAorICogcmVnYXJkbGVzcyBvZiB0aGUgSUNVIHZlcnNpb24uCisgKi8KK3N0YXRpYyBjaGFy ICoKK2ljdV9maXhfdmFyaWFudHMoY29uc3QgY2hhciAqbG9jX3N0cikKK3sKKwljb25zdCBjaGFy ICpvbGRfdmFyaWFudCA9IHN0cnJjaHIobG9jX3N0ciwgJ0AnKTsKKworCS8qCisJICogRXh0cmFj dCBhIHZhcmlhbnQgb2YgdGhlIGZvcm0gJy4uLkBWQVJJQU5UJywgYW5kIHJlcGxhY2Ugd2l0aAor CSAqIHRoZSBhcHByb3ByaWF0ZSAnLi4uQGtleXdvcmQ9dmFsdWUnIGlmIGZvdW5kIGluIHRoZSBt YXAuCisJICovCisJaWYgKG9sZF92YXJpYW50KQorCXsKKwkJc2l6ZV90IHByZWZpeF9sZW4gPSBv bGRfdmFyaWFudCAtIGxvY19zdHI7IC8qIGJ5dGVzIGJlZm9yZSB0aGUgJ0AnICovCisKKwkJZm9y IChpbnQgaSA9IDA7IGkgPCBJQ1VfVkFSSUFOVF9NQVBfU0laRTsgaSsrKQorCQl7CisJCQljb25z dCBjaGFyICptYXBfdmFyaWFudCA9IGljdV92YXJpYW50X21hcFtpXVswXTsKKwkJCWNvbnN0IGNo YXIgKm1hcF9yZXBsYWNlbWVudCA9IGljdV92YXJpYW50X21hcFtpXVsxXTsKKworCQkJaWYgKHBn X3N0cmNhc2VjbXAob2xkX3ZhcmlhbnQsIG1hcF92YXJpYW50KSA9PSAwKQorCQkJeworCQkJCXNp emVfdAkgcmVwbGFjZW1lbnRfbGVuID0gc3RybGVuKG1hcF9yZXBsYWNlbWVudCk7CisJCQkJc2l6 ZV90CSByZXN1bHRfbGVuOworCQkJCWNoYXIJKnJlc3VsdDsKKworCQkJCXJlc3VsdF9sZW4gPSBw cmVmaXhfbGVuICsgcmVwbGFjZW1lbnRfbGVuICsgMTsKKwkJCQlyZXN1bHQgPSBwYWxsb2MocmVz dWx0X2xlbik7CisKKwkJCQltZW1jcHkocmVzdWx0LCBsb2Nfc3RyLCBwcmVmaXhfbGVuKTsKKwkJ CQltZW1jcHkocmVzdWx0ICsgcHJlZml4X2xlbiwgbWFwX3JlcGxhY2VtZW50LCByZXBsYWNlbWVu dF9sZW4pOworCQkJCXJlc3VsdFtwcmVmaXhfbGVuICsgcmVwbGFjZW1lbnRfbGVuXSA9ICdcMCc7 CisKKwkJCQlyZXR1cm4gcmVzdWx0OworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIHBzdHJkdXAo bG9jX3N0cik7Cit9CisKICNlbmRpZgogCiAvKgpAQCAtMjgyOCw2ICsyODgyLDcgQEAgaWN1X2xh bmd1YWdlX3RhZyhjb25zdCBjaGFyICpsb2Nfc3RyLCBpbnQgZWxldmVsKQogewogI2lmZGVmIFVT RV9JQ1UKIAlVRXJyb3JDb2RlCSBzdGF0dXM7CisJY2hhcgkJKmZpeGVkX2xvY19zdHIgPSBpY3Vf Zml4X3ZhcmlhbnRzKGxvY19zdHIpOwogCWNoYXIJCSpsYW5ndGFnOwogCXNpemVfdAkJIGJ1Zmxl biA9IDMyOwkvKiBhcmJpdHJhcnkgc3RhcnRpbmcgYnVmZmVyIHNpemUgKi8KIAljb25zdCBib29s CSBzdHJpY3QgPSB0cnVlOwpAQCAtMjg0NCw3ICsyODk5LDcgQEAgaWN1X2xhbmd1YWdlX3RhZyhj b25zdCBjaGFyICpsb2Nfc3RyLCBpbnQgZWxldmVsKQogCQlpbnQzMl90CQlsZW47CiAKIAkJc3Rh dHVzID0gVV9aRVJPX0VSUk9SOwotCQlsZW4gPSB1bG9jX3RvTGFuZ3VhZ2VUYWcobG9jX3N0ciwg bGFuZ3RhZywgYnVmbGVuLCBzdHJpY3QsICZzdGF0dXMpOworCQlsZW4gPSB1bG9jX3RvTGFuZ3Vh Z2VUYWcoZml4ZWRfbG9jX3N0ciwgbGFuZ3RhZywgYnVmbGVuLCBzdHJpY3QsICZzdGF0dXMpOwog CiAJCS8qCiAJCSAqIElmIHRoZSByZXN1bHQgZml0cyBpbiB0aGUgYnVmZmVyIGV4YWN0bHkgKGxl biA9PSBidWZsZW4pLApAQCAtMjg2NCw2ICsyOTE5LDggQEAgaWN1X2xhbmd1YWdlX3RhZyhjb25z dCBjaGFyICpsb2Nfc3RyLCBpbnQgZWxldmVsKQogCQlicmVhazsKIAl9CiAKKwlwZnJlZShmaXhl ZF9sb2Nfc3RyKTsKKwogCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKIAl7CiAJCXBmcmVlKGxhbmd0 YWcpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgYi9zcmMvYmluL2luaXRk Yi9pbml0ZGIuYwppbmRleCA0MDg2ODM0NDU4Li42MDBjOGQ5M2YzIDEwMDY0NAotLS0gYS9zcmMv YmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwpAQCAtMjIy OSw2ICsyMjI5LDY0IEBAIGNoZWNrX2ljdV9sb2NhbGVfZW5jb2RpbmcoaW50IHVzZXJfZW5jKQog CXJldHVybiB0cnVlOwogfQogCisjaWZkZWYgVVNFX0lDVQorCitzdGF0aWMgY29uc3QgY2hhciAq aWN1X3ZhcmlhbnRfbWFwW11bMl0gPSB7CisJeyAiQEVVUk8iLCAgICJAY3VycmVuY3k9RVVSIiB9 LAorCXsgIkBQSU5ZSU4iLCAiQGNvbGxhdGlvbj1waW55aW4iIH0sCisJeyAiQFNUUk9LRSIsICJA Y29sbGF0aW9uPXN0cm9rZSIgfSwKK307CisKKyNkZWZpbmUgSUNVX1ZBUklBTlRfTUFQX1NJWkUg XAorCShzaXplb2YoaWN1X3ZhcmlhbnRfbWFwKS9zaXplb2YoaWN1X3ZhcmlhbnRfbWFwWzBdKSkK KworLyoKKyAqIElDVSB2ZXJzaW9uIDY0IHJlbW92ZWQgdGhlIGFiaWxpdHkgdG8gdHJhbnNmb3Jt IGxvY2FsZSBzdHJpbmdzIG9mIHRoZSBmb3JtCisgKiAnLi4uQFZBUklBTlQnIGludG8gcHJvcGVy IGxhbmd1YWdlIHRhZ3MuIFBlcmZvcm0gdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20KKyAqIHdpdGhp biBQb3N0Z3JlcyBzbyB0aGF0IElDVSBzdXBwb3J0cyBhbnkgbGliYyBsb2NhbGUgbmFtZSBjb25z aXN0ZW50bHksCisgKiByZWdhcmRsZXNzIG9mIHRoZSBJQ1UgdmVyc2lvbi4KKyAqLworc3RhdGlj IGNoYXIgKgoraWN1X2ZpeF92YXJpYW50cyhjb25zdCBjaGFyICpsb2Nfc3RyKQoreworCWNvbnN0 IGNoYXIgKm9sZF92YXJpYW50ID0gc3RycmNocihsb2Nfc3RyLCAnQCcpOworCisJLyoKKwkgKiBF eHRyYWN0IGEgdmFyaWFudCBvZiB0aGUgZm9ybSAnLi4uQFZBUklBTlQnLCBhbmQgcmVwbGFjZSB3 aXRoCisJICogdGhlIGFwcHJvcHJpYXRlICcuLi5Aa2V5d29yZD12YWx1ZScgaWYgZm91bmQgaW4g dGhlIG1hcC4KKwkgKi8KKwlpZiAob2xkX3ZhcmlhbnQpCisJeworCQlzaXplX3QgcHJlZml4X2xl biA9IG9sZF92YXJpYW50IC0gbG9jX3N0cjsgLyogYnl0ZXMgYmVmb3JlIHRoZSAnQCcgKi8KKwor CQlmb3IgKGludCBpID0gMDsgaSA8IElDVV9WQVJJQU5UX01BUF9TSVpFOyBpKyspCisJCXsKKwkJ CWNvbnN0IGNoYXIgKm1hcF92YXJpYW50ID0gaWN1X3ZhcmlhbnRfbWFwW2ldWzBdOworCQkJY29u c3QgY2hhciAqbWFwX3JlcGxhY2VtZW50ID0gaWN1X3ZhcmlhbnRfbWFwW2ldWzFdOworCisJCQlp ZiAocGdfc3RyY2FzZWNtcChvbGRfdmFyaWFudCwgbWFwX3ZhcmlhbnQpID09IDApCisJCQl7CisJ CQkJc2l6ZV90CSByZXBsYWNlbWVudF9sZW4gPSBzdHJsZW4obWFwX3JlcGxhY2VtZW50KTsKKwkJ CQlzaXplX3QJIHJlc3VsdF9sZW47CisJCQkJY2hhcgkqcmVzdWx0OworCisJCQkJcmVzdWx0X2xl biA9IHByZWZpeF9sZW4gKyByZXBsYWNlbWVudF9sZW4gKyAxOworCQkJCXJlc3VsdCA9IHBnX21h bGxvYyhyZXN1bHRfbGVuKTsKKworCQkJCW1lbWNweShyZXN1bHQsIGxvY19zdHIsIHByZWZpeF9s ZW4pOworCQkJCW1lbWNweShyZXN1bHQgKyBwcmVmaXhfbGVuLCBtYXBfcmVwbGFjZW1lbnQsIHJl cGxhY2VtZW50X2xlbik7CisJCQkJcmVzdWx0W3ByZWZpeF9sZW4gKyByZXBsYWNlbWVudF9sZW5d ID0gJ1wwJzsKKworCQkJCXJldHVybiByZXN1bHQ7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4g cGdfc3RyZHVwKGxvY19zdHIpOworfQorCisjZW5kaWYKKwogLyoKICAqIENvbnZlcnQgdG8gY2Fu b25pY2FsIEJDUDQ3IGxhbmd1YWdlIHRhZy4gTXVzdCBiZSBjb25zaXN0ZW50IHdpdGgKICAqIGlj dV9sYW5ndWFnZV90YWcoKS4KQEAgLTIyMzgsNiArMjI5Niw3IEBAIGljdV9sYW5ndWFnZV90YWco Y29uc3QgY2hhciAqbG9jX3N0cikKIHsKICNpZmRlZiBVU0VfSUNVCiAJVUVycm9yQ29kZQkgc3Rh dHVzOworCWNoYXIJCSpmaXhlZF9sb2Nfc3RyID0gaWN1X2ZpeF92YXJpYW50cyhsb2Nfc3RyKTsK IAljaGFyCQkqbGFuZ3RhZzsKIAlzaXplX3QJCSBidWZsZW4gPSAzMjsJLyogYXJiaXRyYXJ5IHN0 YXJ0aW5nIGJ1ZmZlciBzaXplICovCiAJY29uc3QgYm9vbAkgc3RyaWN0ID0gdHJ1ZTsKQEAgLTIy NTQsNyArMjMxMyw3IEBAIGljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jX3N0cikKIAkJ aW50MzJfdAkJbGVuOwogCiAJCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKLQkJbGVuID0gdWxvY190 b0xhbmd1YWdlVGFnKGxvY19zdHIsIGxhbmd0YWcsIGJ1Zmxlbiwgc3RyaWN0LCAmc3RhdHVzKTsK KwkJbGVuID0gdWxvY190b0xhbmd1YWdlVGFnKGZpeGVkX2xvY19zdHIsIGxhbmd0YWcsIGJ1Zmxl biwgc3RyaWN0LCAmc3RhdHVzKTsKIAogCQkvKgogCQkgKiBJZiB0aGUgcmVzdWx0IGZpdHMgaW4g dGhlIGJ1ZmZlciBleGFjdGx5IChsZW4gPT0gYnVmbGVuKSwKQEAgLTIyNzMsNiArMjMzMiw4IEBA IGljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jX3N0cikKIAkJYnJlYWs7CiAJfQogCisJ cGdfZnJlZShmaXhlZF9sb2Nfc3RyKTsKKwogCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKIAl7CiAJ CXBnX2ZyZWUobGFuZ3RhZyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvbGxhdGUuaWN1LnV0Zjgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRl LmljdS51dGY4Lm91dAppbmRleCA1M2FiNDk2YmZlLi41ZjViNjFkMDM2IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKQEAgLTEwNDgsMTUgKzEw NDgsMjYgQEAgQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICdjJywgcnVsZXMgPSAnJlYgPDwgdyA8PDwgVycpOwogRVJST1I6ICBSVUxFUyBub3Qgc3VwcG9y dGVkIGZvciBDIG9yIFBPU0lYIGxvY2FsZQogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsg LS0gZmFpbHMKIEVSUk9SOiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgIkBjb2xTdHJl bmd0aD1wcmltYXJ5O25vbnNlbnNlPXllcyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJH VU1FTlRfRVJST1IKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2Nh bGUgPSAnQEFTREYnKTsgLS0gZmFpbHMKK0VSUk9SOiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxl IG5hbWUgIkBBU0RGIiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgog U0VUIGljdV92YWxpZGF0aW9uX2xldmVsID0gV0FSTklORzsKIENSRUFURSBDT0xMQVRJT04gdGVz dHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNvbFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vu c2U9eWVzJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OwogV0FSTklORzogIGNvdWxkIG5vdCBjb252 ZXJ0IGxvY2FsZSBuYW1lICJAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMiIHRvIGxh bmd1YWdlIHRhZzogVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SCiBDUkVBVEUgQ09MTEFUSU9OIHRl c3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgRFJPUCBD T0xMQVRJT04gdGVzdHg7CiBXQVJOSU5HOiAgSUNVIGxvY2FsZSAibm9uc2Vuc2Utbm93aGVyZSIg aGFzIHVua25vd24gbGFuZ3VhZ2UgIm5vbnNlbnNlIgogSElOVDogIFRvIGRpc2FibGUgSUNVIGxv Y2FsZSB2YWxpZGF0aW9uLCBzZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVsIHRvIERJ U0FCTEVELgorQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICdAQVNERicpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKK1dBUk5JTkc6ICBjb3VsZCBub3QgY29u dmVydCBsb2NhbGUgbmFtZSAiQEFTREYiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FMX0FSR1VN RU5UX0VSUk9SCiBSRVNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbDsKIENSRUFURSBDT0xMQVRJT04g dGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9QIENPTExBVElPTiB0ZXN0 eDsKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAncG9z aXgnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CistLSB0ZXN0IHNwZWNpYWwgdmFyaWFudHMKK0NS RUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQEVVUk8nKTsg RFJPUCBDT0xMQVRJT04gdGVzdHg7CitOT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQt dS1jdS1ldXIiIGZvciBJQ1UgbG9jYWxlICJARVVSTyIKK0NSRUFURSBDT0xMQVRJT04gdGVzdHgg KHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQHBpbnlpbicpOyBEUk9QIENPTExBVElPTiB0ZXN0 eDsKK05PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11LWNvLXBpbnlpbiIgZm9yIElD VSBsb2NhbGUgIkBwaW55aW4iCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGlj dSwgbG9jYWxlID0gJ0BzdHJva2UnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CitOT1RJQ0U6ICB1 c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1jby1zdHJva2UiIGZvciBJQ1UgbG9jYWxlICJAc3Ry b2tlIgogQ1JFQVRFIENPTExBVElPTiB0ZXN0NCBGUk9NIG5vbnNlbnNlOwogRVJST1I6ICBjb2xs YXRpb24gIm5vbnNlbnNlIiBmb3IgZW5jb2RpbmcgIlVURjgiIGRvZXMgbm90IGV4aXN0CiBDUkVB VEUgQ09MTEFUSU9OIHRlc3Q1IEZST00gdGVzdDA7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxh dGUuaWN1LnV0Zjguc3FsCmluZGV4IDYzZDUzNTJlZTYuLmU0YmJkMmMwMDkgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCkBAIC0zODIsMTQgKzM4MiwyMSBAQCBD UkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNl LW5vd2hlcmUnKTsgLS0gZmFpbHMKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0g aWN1LCBsb2NhbGUgPSAnYycsIGRldGVybWluaXN0aWMgPSBmYWxzZSk7IC0tIGZhaWxzCiBDUkVB VEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2MnLCBydWxlcyA9 ICcmViA8PCB3IDw8PCBXJyk7IC0tIGZhaWxzCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92 aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1wcmltYXJ5O25vbnNlbnNlPXllcycp OyAtLSBmYWlscworQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2Fs ZSA9ICdAQVNERicpOyAtLSBmYWlscwogU0VUIGljdV92YWxpZGF0aW9uX2xldmVsID0gV0FSTklO RzsKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNv bFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVzJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4Owog Q1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdub25zZW5z ZS1ub3doZXJlJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OworQ1JFQVRFIENPTExBVElPTiB0ZXN0 eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAQVNERicpOyBEUk9QIENPTExBVElPTiB0ZXN0 eDsKIFJFU0VUIGljdV92YWxpZGF0aW9uX2xldmVsOwogCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4 IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2MnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBD UkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ3Bvc2l4Jyk7 IERST1AgQ09MTEFUSU9OIHRlc3R4OwogCistLSB0ZXN0IHNwZWNpYWwgdmFyaWFudHMKK0NSRUFU RSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQEVVUk8nKTsgRFJP UCBDT0xMQVRJT04gdGVzdHg7CitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGlj dSwgbG9jYWxlID0gJ0BwaW55aW4nKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CitDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0BzdHJva2UnKTsgRFJPUCBD T0xMQVRJT04gdGVzdHg7CisKIENSRUFURSBDT0xMQVRJT04gdGVzdDQgRlJPTSBub25zZW5zZTsK IENSRUFURSBDT0xMQVRJT04gdGVzdDUgRlJPTSB0ZXN0MDsKIAotLSAKMi4zNC4xCgo= --=-dEx3XDo6xekZDYyMu2r0 Content-Disposition: attachment; filename*0=v3-0004-Make-LOCALE-apply-to-ICU_LOCALE-for-CREATE-DATABA.pat; filename*1=ch Content-Type: text/x-patch; name="v3-0004-Make-LOCALE-apply-to-ICU_LOCALE-for-CREATE-DATABA.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwNjZlYWMwMzlmODZkOTVhZDg1M2FhMWU1ZGUyYjM0ZmRmNjg4ZjJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDI1IEFwciAyMDIzIDE1OjAxOjU1IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MyA0LzRdIE1h a2UgTE9DQUxFIGFwcGx5IHRvIElDVV9MT0NBTEUgZm9yIENSRUFURSBEQVRBQkFTRS4KCkxPQ0FM RSBpcyBub3cgYW4gYWxpYXMgZm9yIExDX0NPTExBVEUsIExDX0NUWVBFLCBhbmQgKGlmIHRoZSBw cm92aWRlcgppcyBJQ1UpIElDVV9MT0NBTEUuIFRoZSBJQ1UgcHJvdmlkZXIgYWNjZXB0cyBtb3Jl IGxvY2FsZSBuYW1lcyB0aGFuCmxpYmMgKGUuZy4gbGFuZ3VhZ2UgdGFncyBhbmQgbG9jYWxlIG5h bWVzIGNvbnRhaW5pbmcgY29sbGF0aW9uCmF0dHJpYnV0ZXMpLCBzbyBpbiBzb21lIGNhc2VzIExD X0NPTExBVEUsIExDX0NUWVBFLCBhbmQgSUNVX0xPQ0FMRQp3aWxsIHN0aWxsIG5lZWQgdG8gYmUg c3BlY2lmaWVkIHNlcGFyYXRlbHkuCgpQcmV2aW91c2x5LCBMT0NBTEUgYXBwbGllZCBvbmx5IHRv IExDX0NPTExBVEUgYW5kIExDX0NUWVBFIChhbmQKc2ltaWxhcmx5IGZvciAtLWxvY2FsZSBpbiBp bml0ZGIgYW5kIGNyZWF0ZWRiKS4gVGhhdCBjb3VsZCBsZWFkIHRvCmNvbmZ1c2lvbiB3aGVuIHRo ZSBwcm92aWRlciBpcyBpbXBsaWNpdCwgc3VjaCBhcyB3aGVuIGl0IGlzIGluaGVyaXRlZApmcm9t IHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZSwgb3Igd2hlbiBJQ1Ugd2FzIG1hZGUgZGVmYXVsdCBhdCBp bml0ZGIKdGltZSBpbiBjb21taXQgMjdiNjIzNzdiNC4KClJldmVydHMgaW5jb21wbGV0ZSBmaXgg NWNkMWE1YWY0ZC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMzM5MTkzMi4xNjgy MTA3MjA5QHNzcy5wZ2gucGEudXMKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFz ZS5zZ21sICAgICAgICAgfCAgNiArKy0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwg ICAgICAgICAgICAgICAgfCAgNSArKy0KIGRvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgICAg ICAgICAgICAgICAgICB8ICA3ICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25j bWRzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5j ICAgICAgICAgICAgIHwgMTUgKysrKysrLS0tCiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAzMSArKysrKysrKysrKystLS0tLS0tCiBzcmMvYmluL3Njcmlw dHMvY3JlYXRlZGIuYyAgICAgICAgICAgICAgICAgICAgfCAxMyArKystLS0tLQogc3JjL2Jpbi9z Y3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsICAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvdGVzdC9p Y3UvdC8wMTBfZGF0YWJhc2UucGwgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKystLS0tLQog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwgMjIgKysrKysr LS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNlLnNnbWwKaW5kZXggMTM3OTNiYjZiNy4u ODQ0NzczZmY0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFzZS5zZ21sCkBAIC0xNDUs OCArMTQ1LDEwIEBAIENSRUFURSBEQVRBQkFTRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bG9jYWxlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAg ICAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgaXMgYSBzaG9ydGN1dCBmb3Igc2V0dGluZyA8c3lt Ym9sPkxDX0NPTExBVEU8L3N5bWJvbD4KLSAgICAgICAgYW5kIDxzeW1ib2w+TENfQ1RZUEU8L3N5 bWJvbD4gYXQgb25jZS4KKyAgICAgICAgVGhpcyBpcyBhIHNob3J0Y3V0IGZvciBzZXR0aW5nIDxz eW1ib2w+TENfQ09MTEFURTwvc3ltYm9sPiwKKyAgICAgICAgPHN5bWJvbD5MQ19DVFlQRTwvc3lt Ym9sPiBhbmQgPHN5bWJvbD5JQ1VfTE9DQUxFPC9zeW1ib2w+IGF0CisgICAgICAgIG9uY2UuIFNv bWUgbG9jYWxlcyBhcmUgb25seSB2YWxpZCBmb3IgSUNVLCBhbmQgbXVzdCBiZSBzZXQgc2VwYXJh dGVseQorICAgICAgICB3aXRoIDxzeW1ib2w+SUNVX0xPQ0FMRTwvc3ltYm9sPi4KICAgICAgICA8 L3BhcmE+CiAgICAgICAgPHRpcD4KICAgICAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwK aW5kZXggZTIzNDE5YmE2Yy4uZTQ2NDdkNWNlNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVkYi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlZGIuc2dtbApAQCAt MTI0LDcgKzEyNCwxMCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDxsaXN0aXRl bT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2NhbGUgdG8gYmUgdXNl ZCBpbiB0aGlzIGRhdGFiYXNlLiAgVGhpcyBpcyBlcXVpdmFsZW50Ci0gICAgICAgIHRvIHNwZWNp ZnlpbmcgYm90aCA8b3B0aW9uPi0tbGMtY29sbGF0ZTwvb3B0aW9uPiBhbmQgPG9wdGlvbj4tLWxj LWN0eXBlPC9vcHRpb24+LgorICAgICAgICB0byBzcGVjaWZ5aW5nIDxvcHRpb24+LS1sYy1jb2xs YXRlPC9vcHRpb24+LAorICAgICAgICA8b3B0aW9uPi0tbGMtY3R5cGU8L29wdGlvbj4sIGFuZCA8 b3B0aW9uPi0taWN1LWxvY2FsZTwvb3B0aW9uPiB0byB0aGUKKyAgICAgICAgc2FtZSB2YWx1ZS4g U29tZSBsb2NhbGVzIGFyZSBvbmx5IHZhbGlkIGZvciBJQ1UgYW5kIG11c3QgYmUgc2V0IHdpdGgK KyAgICAgICAgPG9wdGlvbj4tLWljdS1sb2NhbGU8L29wdGlvbj4uCiAgICAgICAgPC9wYXJhPgog ICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2luaXRkYi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbApp bmRleCA4Nzk0NWI0YjYyLi5mODUwZGM0MDRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2luaXRkYi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwKQEAgLTExNiw5 ICsxMTYsMTAgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgIDxwYXJhPgogICAgVG8gY2hv b3NlIGEgZGlmZmVyZW50IGxvY2FsZSBmb3IgdGhlIGNsdXN0ZXIsIHVzZSB0aGUgb3B0aW9uCiAg ICA8b3B0aW9uPi0tbG9jYWxlPC9vcHRpb24+LiAgVGhlcmUgYXJlIGFsc28gaW5kaXZpZHVhbCBv cHRpb25zCi0gICA8b3B0aW9uPi0tbGMtKjwvb3B0aW9uPiAoc2VlIGJlbG93KSB0byBzZXQgdmFs dWVzIGZvciB0aGUgaW5kaXZpZHVhbCBsb2NhbGUKLSAgIGNhdGVnb3JpZXMuICBOb3RlIHRoYXQg aW5jb25zaXN0ZW50IHNldHRpbmdzIGZvciBkaWZmZXJlbnQgbG9jYWxlCi0gICBjYXRlZ29yaWVz IGNhbiBnaXZlIG5vbnNlbnNpY2FsIHJlc3VsdHMsIHNvIHRoaXMgc2hvdWxkIGJlIHVzZWQgd2l0 aCBjYXJlLgorICAgPG9wdGlvbj4tLWxjLSo8L29wdGlvbj4gYW5kIDxvcHRpb24+LS1pY3UtbG9j YWxlPC9vcHRpb24+IChzZWUgYmVsb3cpIHRvCisgICBzZXQgdmFsdWVzIGZvciB0aGUgaW5kaXZp ZHVhbCBsb2NhbGUgY2F0ZWdvcmllcy4gIE5vdGUgdGhhdCBpbmNvbnNpc3RlbnQKKyAgIHNldHRp bmdzIGZvciBkaWZmZXJlbnQgbG9jYWxlIGNhdGVnb3JpZXMgY2FuIGdpdmUgbm9uc2Vuc2ljYWwg cmVzdWx0cywgc28KKyAgIHRoaXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLgogICA8L3BhcmE+ CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKaW5kZXggN2U2OWE4 ODlmYi4uZTQ4MWYyMGRjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwpAQCAt Mjg4LDcgKzI4OCw3IEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJCQkJCWlmIChsYW5ndGFn ICYmIHN0cmNtcChjb2xsaWN1bG9jYWxlLCBsYW5ndGFnKSAhPSAwKQogCQkJCQl7CiAJCQkJCQll cmVwb3J0KE5PVElDRSwKLQkJCQkJCQkJKGVycm1zZygidXNpbmcgc3RhbmRhcmQgZm9ybSBcIiVz XCIgZm9yIGxvY2FsZSBcIiVzXCIiLAorCQkJCQkJCQkoZXJybXNnKCJ1c2luZyBzdGFuZGFyZCBm b3JtIFwiJXNcIiBmb3IgSUNVIGxvY2FsZSBcIiVzXCIiLAogCQkJCQkJCQkJCWxhbmd0YWcsIGNv bGxpY3Vsb2NhbGUpKSk7CiAKIAkJCQkJCWNvbGxpY3Vsb2NhbGUgPSBsYW5ndGFnOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGJjb21tYW5kcy5jCmluZGV4IDhlZjMzODcxZjAuLmI0NDdkYzU1ZjMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9kYmNvbW1hbmRzLmMKQEAgLTEwMTcsNyArMTAxNywxMiBAQCBjcmVhdGVkYihQYXJz ZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAlpZiAoZGJsb2Nwcm92 aWRlciA9PSAnXDAnKQogCQlkYmxvY3Byb3ZpZGVyID0gc3JjX2xvY3Byb3ZpZGVyOwogCWlmIChk YmljdWxvY2FsZSA9PSBOVUxMICYmIGRibG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkK LQkJZGJpY3Vsb2NhbGUgPSBzcmNfaWN1bG9jYWxlOworCXsKKwkJaWYgKGRsb2NhbGUgJiYgZGxv Y2FsZS0+YXJnKQorCQkJZGJpY3Vsb2NhbGUgPSBkZWZHZXRTdHJpbmcoZGxvY2FsZSk7CisJCWVs c2UKKwkJCWRiaWN1bG9jYWxlID0gc3JjX2ljdWxvY2FsZTsKKwl9CiAJaWYgKGRiaWN1cnVsZXMg PT0gTlVMTCAmJiBkYmxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCiAJCWRiaWN1cnVs ZXMgPSBzcmNfaWN1cnVsZXM7CiAKQEAgLTEwMzEsMTIgKzEwMzYsMTQgQEAgY3JlYXRlZGIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJaWYgKCFjaGVja19s b2NhbGUoTENfQ09MTEFURSwgZGJjb2xsYXRlLCAmY2Fub25uYW1lKSkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKLQkJCQkgZXJybXNn KCJpbnZhbGlkIGxvY2FsZSBuYW1lOiBcIiVzXCIiLCBkYmNvbGxhdGUpKSk7CisJCQkJIGVycm1z ZygiaW52YWxpZCBMQ19DT0xMQVRFIGxvY2FsZSBuYW1lOiBcIiVzXCIiLCBkYmNvbGxhdGUpLAor CQkJCSBlcnJoaW50KCJJZiB0aGUgbG9jYWxlIG5hbWUgaXMgc3BlY2lmaWMgdG8gSUNVLCB1c2Ug SUNVX0xPQ0FMRS4iKSkpOwogCWRiY29sbGF0ZSA9IGNhbm9ubmFtZTsKIAlpZiAoIWNoZWNrX2xv Y2FsZShMQ19DVFlQRSwgZGJjdHlwZSwgJmNhbm9ubmFtZSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0JCQkJIGVycm1zZygiaW52 YWxpZCBsb2NhbGUgbmFtZTogXCIlc1wiIiwgZGJjdHlwZSkpKTsKKwkJCQkgZXJybXNnKCJpbnZh bGlkIExDX0NUWVBFIGxvY2FsZSBuYW1lOiBcIiVzXCIiLCBkYmN0eXBlKSwKKwkJCQkgZXJyaGlu dCgiSWYgdGhlIGxvY2FsZSBuYW1lIGlzIHNwZWNpZmljIHRvIElDVSwgdXNlIElDVV9MT0NBTEUu IikpKTsKIAlkYmN0eXBlID0gY2Fub25uYW1lOwogCiAJY2hlY2tfZW5jb2RpbmdfbG9jYWxlX21h dGNoZXMoZW5jb2RpbmcsIGRiY29sbGF0ZSwgZGJjdHlwZSk7CkBAIC0xMDgwLDcgKzEwODcsNyBA QCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkK IAkJCQlpZiAobGFuZ3RhZyAmJiBzdHJjbXAoZGJpY3Vsb2NhbGUsIGxhbmd0YWcpICE9IDApCiAJ CQkJewogCQkJCQllcmVwb3J0KE5PVElDRSwKLQkJCQkJCQkoZXJybXNnKCJ1c2luZyBzdGFuZGFy ZCBmb3JtIFwiJXNcIiBmb3IgbG9jYWxlIFwiJXNcIiIsCisJCQkJCQkJKGVycm1zZygidXNpbmcg c3RhbmRhcmQgZm9ybSBcIiVzXCIgZm9yIElDVSBsb2NhbGUgXCIlc1wiIiwKIAkJCQkJCQkJCWxh bmd0YWcsIGRiaWN1bG9jYWxlKSkpOwogCiAJCQkJCWRiaWN1bG9jYWxlID0gbGFuZ3RhZzsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRi LmMKaW5kZXggNjAwYzhkOTNmMy4uN2UzMTZjOGJhOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0 ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTIxNTcsNyArMjE1 NywxMSBAQCBjaGVja19sb2NhbGVfbmFtZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2Fs ZSwgY2hhciAqKmNhbm9ubmFtZSkKIAlpZiAocmVzID09IE5VTEwpCiAJewogCQlpZiAoKmxvY2Fs ZSkKLQkJCXBnX2ZhdGFsKCJpbnZhbGlkIGxvY2FsZSBuYW1lIFwiJXNcIiIsIGxvY2FsZSk7CisJ CXsKKwkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBsb2NhbGUgbmFtZSBcIiVzXCIiLCBsb2NhbGUp OworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIklmIHRoZSBsb2NhbGUgbmFtZSBpcyBzcGVjaWZpYyB0 byBJQ1UsIHVzZSAtLWljdS1sb2NhbGUuIik7CisJCQlleGl0KDEpOworCQl9CiAJCWVsc2UKIAkJ ewogCQkJLyoKQEAgLTI0NTIsNyArMjQ1Niw3IEBAIHNldGxvY2FsZXModm9pZCkKIHsKIAljaGFy CSAgICpjYW5vbm5hbWU7CiAKLQkvKiBzZXQgZW1wdHkgbGNfKiB2YWx1ZXMgdG8gbG9jYWxlIGNv bmZpZyBpZiBzZXQgKi8KKwkvKiBzZXQgZW1wdHkgbGNfKiBhbmQgaWN1bG9jYWxlIHZhbHVlcyB0 byBsb2NhbGUgY29uZmlnIGlmIHNldCAqLwogCiAJaWYgKGxvY2FsZSkKIAl7CkBAIC0yNDY4LDYg KzI0NzIsOCBAQCBzZXRsb2NhbGVzKHZvaWQpCiAJCQlsY19tb25ldGFyeSA9IGxvY2FsZTsKIAkJ aWYgKCFsY19tZXNzYWdlcykKIAkJCWxjX21lc3NhZ2VzID0gbG9jYWxlOworCQlpZiAoIWljdV9s b2NhbGUgJiYgbG9jYWxlX3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCQlpY3VfbG9j YWxlID0gbG9jYWxlOwogCX0KIAogCS8qCkBAIC0yNTA0LDE0ICsyNTEwLDE4IEBAIHNldGxvY2Fs ZXModm9pZCkKIAkJCXByaW50ZihfKCJVc2luZyBkZWZhdWx0IElDVSBsb2NhbGUgXCIlc1wiLlxu IiksIGljdV9sb2NhbGUpOwogCQl9CiAKLQkJLyogY2Fub25pY2FsaXplIHRvIGEgbGFuZ3VhZ2Ug dGFnICovCi0JCWxhbmd0YWcgPSBpY3VfbGFuZ3VhZ2VfdGFnKGljdV9sb2NhbGUpOwotCQlwcmlu dGYoXygiVXNpbmcgbGFuZ3VhZ2UgdGFnIFwiJXNcIiBmb3IgSUNVIGxvY2FsZSBcIiVzXCIuXG4i KSwKLQkJCSAgIGxhbmd0YWcsIGljdV9sb2NhbGUpOwotCQlwZ19mcmVlKGljdV9sb2NhbGUpOwot CQlpY3VfbG9jYWxlID0gbGFuZ3RhZzsKLQotCQlpY3VfdmFsaWRhdGVfbG9jYWxlKGljdV9sb2Nh bGUpOworCQlpZiAocGdfc3RyY2FzZWNtcChpY3VfbG9jYWxlLCAiQyIpICE9IDAgJiYKKwkJCXBn X3N0cmNhc2VjbXAoaWN1X2xvY2FsZSwgIlBPU0lYIikgIT0gMCkKKwkJeworCQkJLyogY2Fub25p Y2FsaXplIHRvIGEgbGFuZ3VhZ2UgdGFnICovCisJCQlsYW5ndGFnID0gaWN1X2xhbmd1YWdlX3Rh ZyhpY3VfbG9jYWxlKTsKKwkJCXByaW50ZihfKCJVc2luZyBsYW5ndWFnZSB0YWcgXCIlc1wiIGZv ciBJQ1UgbG9jYWxlIFwiJXNcIi5cbiIpLAorCQkJCSAgIGxhbmd0YWcsIGljdV9sb2NhbGUpOwor CQkJcGdfZnJlZShpY3VfbG9jYWxlKTsKKwkJCWljdV9sb2NhbGUgPSBsYW5ndGFnOworCisJCQlp Y3VfdmFsaWRhdGVfbG9jYWxlKGljdV9sb2NhbGUpOworCQl9CiAKIAkJLyoKIAkJICogSW4gc3Vw cG9ydGVkIGJ1aWxkcywgdGhlIElDVSBsb2NhbGUgSUQgd2lsbCBiZSBvcGVuZWQgZHVyaW5nCkBA IC0zMzQzLDcgKzMzNTMsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJYnJl YWs7CiAJCQljYXNlIDg6CiAJCQkJbG9jYWxlID0gIkMiOwotCQkJCWxvY2FsZV9wcm92aWRlciA9 IENPTExQUk9WSURFUl9MSUJDOwogCQkJCWJyZWFrOwogCQkJY2FzZSA5OgogCQkJCXB3ZmlsZW5h bWUgPSBwZ19zdHJkdXAob3B0YXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9jcmVh dGVkYi5jIGIvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKaW5kZXggYjQyMDVjNGZhNS4uOWNh ODZhM2U1MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKKysrIGIvc3Jj L2Jpbi9zY3JpcHRzL2NyZWF0ZWRiLmMKQEAgLTE2NCwxNCArMTY0LDYgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQkJZXhpdCgxKTsKIAl9CiAKLQlpZiAobG9jYWxlKQotCXsKLQkJ aWYgKCFsY19jdHlwZSkKLQkJCWxjX2N0eXBlID0gbG9jYWxlOwotCQlpZiAoIWxjX2NvbGxhdGUp Ci0JCQlsY19jb2xsYXRlID0gbG9jYWxlOwotCX0KLQogCWlmIChlbmNvZGluZykKIAl7CiAJCWlm IChwZ19jaGFyX3RvX2VuY29kaW5nKGVuY29kaW5nKSA8IDApCkBAIC0yMTksNiArMjExLDExIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJYXBwZW5kUFFFeHBCdWZmZXIoJnNxbCwg IiBTVFJBVEVHWSAlcyIsIGZtdElkKHN0cmF0ZWd5KSk7CiAJaWYgKHRlbXBsYXRlKQogCQlhcHBl bmRQUUV4cEJ1ZmZlcigmc3FsLCAiIFRFTVBMQVRFICVzIiwgZm10SWQodGVtcGxhdGUpKTsKKwlp ZiAobG9jYWxlKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwgIiBMT0NBTEUgIik7 CisJCWFwcGVuZFN0cmluZ0xpdGVyYWxDb25uKCZzcWwsIGxvY2FsZSwgY29ubik7CisJfQogCWlm IChsY19jb2xsYXRlKQogCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwgIiBMQ19DT0xM QVRFICIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsIGIv c3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsCmluZGV4IGFmM2IxNDkyZTMuLjNkYjlm ZTkzMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVkYi5wbAorKysg Yi9zcmMvYmluL3NjcmlwdHMvdC8wMjBfY3JlYXRlZGIucGwKQEAgLTEyNiw3ICsxMjYsNyBAQCAk bm9kZS0+Y29tbWFuZF9jaGVja3NfYWxsKAogCTEsCiAJW3FyL14kL10sCiAJWwotCQlxci9eY3Jl YXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6IEVSUk9SOiAgaW52YWxpZCBs b2NhbGUgbmFtZXxeY3JlYXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6IEVS Uk9SOiAgbmV3IGNvbGxhdGlvbiBcKGZvbyc7IFNFTEVDVCAnMVwpIGlzIGluY29tcGF0aWJsZSB3 aXRoIHRoZSBjb2xsYXRpb24gb2YgdGhlIHRlbXBsYXRlIGRhdGFiYXNlL3MKKwkJcXIvXmNyZWF0 ZWRiOiBlcnJvcjogZGF0YWJhc2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIGludmFsaWQgTENf Q09MTEFURSBsb2NhbGUgbmFtZXxeY3JlYXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBm YWlsZWQ6IEVSUk9SOiAgbmV3IGNvbGxhdGlvbiBcKGZvbyc7IFNFTEVDVCAnMVwpIGlzIGluY29t cGF0aWJsZSB3aXRoIHRoZSBjb2xsYXRpb24gb2YgdGhlIHRlbXBsYXRlIGRhdGFiYXNlL3MKIAld LAogCSdjcmVhdGVkYiB3aXRoIGluY29ycmVjdCAtLWxjLWNvbGxhdGUnKTsKICRub2RlLT5jb21t YW5kX2NoZWNrc19hbGwoCkBAIC0xMzQsNyArMTM0LDcgQEAgJG5vZGUtPmNvbW1hbmRfY2hlY2tz X2FsbCgKIAkxLAogCVtxci9eJC9dLAogCVsKLQkJcXIvXmNyZWF0ZWRiOiBlcnJvcjogZGF0YWJh c2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIGludmFsaWQgbG9jYWxlIG5hbWV8XmNyZWF0ZWRi OiBlcnJvcjogZGF0YWJhc2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIG5ldyBMQ19DVFlQRSBc KGZvbyc7IFNFTEVDVCAnMVwpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBMQ19DVFlQRSBvZiB0 aGUgdGVtcGxhdGUgZGF0YWJhc2UvcworCQlxci9eY3JlYXRlZGI6IGVycm9yOiBkYXRhYmFzZSBj cmVhdGlvbiBmYWlsZWQ6IEVSUk9SOiAgaW52YWxpZCBMQ19DVFlQRSBsb2NhbGUgbmFtZXxeY3Jl YXRlZGI6IGVycm9yOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6IEVSUk9SOiAgbmV3IExDX0NU WVBFIFwoZm9vJzsgU0VMRUNUICcxXCkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIExDX0NUWVBF IG9mIHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZS9zCiAJXSwKIAknY3JlYXRlZGIgd2l0aCBpbmNvcnJl Y3QgLS1sYy1jdHlwZScpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pY3UvdC8wMTBfZGF0YWJh c2UucGwgYi9zcmMvdGVzdC9pY3UvdC8wMTBfZGF0YWJhc2UucGwKaW5kZXggNzE1YjFiZmZkNi4u ZGY0YWYwMGFmZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaWN1L3QvMDEwX2RhdGFiYXNlLnBsCisr KyBiL3NyYy90ZXN0L2ljdS90LzAxMF9kYXRhYmFzZS5wbApAQCAtNTEsMTYgKzUxLDIzIEBAIGIp LAogCSdzb3J0IGJ5IGV4cGxpY2l0IGNvbGxhdGlvbiB1cHBlciBmaXJzdCcpOwogCiAKLSMgVGVz dCBlcnJvciBjYXNlcyBpbiBDUkVBVEUgREFUQUJBU0UgaW52b2x2aW5nIGxvY2FsZS1yZWxhdGVk IG9wdGlvbnMKKyMgVGVzdCB0aGF0IExPQ0FMRT0nQycgd29ya3MgZm9yIElDVQogCi1teSAoJHJl dCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZTEtPnBzcWwoJ3Bvc3RncmVzJywKLQlxe0NSRUFU RSBEQVRBQkFTRSBkYmljdSBMT0NBTEVfUFJPVklERVIgaWN1IExPQ0FMRSAnQycgVEVNUExBVEUg dGVtcGxhdGUwIEVOQ09ESU5HIFVURjh9KTsKLWlzbnQoJHJldCwgMCwKLQkiSUNVIGxvY2FsZSBt dXN0IGJlIHNwZWNpZmllZCBmb3IgSUNVIHByb3ZpZGVyOiBleGl0IGNvZGUgbm90IDAiKTsKK215 ICRyZXQxID0gJG5vZGUxLT5wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgREFUQUJBU0UgZGJp Y3UyIExPQ0FMRV9QUk9WSURFUiBpY3UgTE9DQUxFICdDJyBURU1QTEFURSB0ZW1wbGF0ZTAgRU5D T0RJTkcgVVRGOH0pOworaXMoJHJldDEsIDAsCisJIkMgbG9jYWxlIHdvcmtzIGZvciBJQ1UiKTsK KworIyBUZXN0IHRoYXQgSUNVLXNwZWNpZmljIGxvY2FsZSBzdHJpbmcgbXVzdCBiZSBzcGVjaWZp ZWQgd2l0aCBJQ1VfTE9DQUxFLAorIyBub3QgTE9DQUxFCisKK215ICgkcmV0MiwgJHN0ZG91dCwg JHN0ZGVycikgPSAkbm9kZTEtPnBzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBEQVRBQkFTRSBk YmljdTMgTE9DQUxFX1BST1ZJREVSIGljdSBMT0NBTEUgJ0Bjb2xTdHJlbmd0aD1wcmltYXJ5JyBU RU1QTEFURSB0ZW1wbGF0ZTAgRU5DT0RJTkcgVVRGOH0pOworaXNudCgkcmV0MiwgMCwKKwkiSUNV LXNwZWNpZmljIGxvY2FsZSBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIElDVV9MT0NBTEU6IGV4aXQg Y29kZSBub3QgMCIpOwogbGlrZSgKIAkkc3RkZXJyLAotCXFyL0VSUk9SOiAgSUNVIGxvY2FsZSBt dXN0IGJlIHNwZWNpZmllZC8sCi0JIklDVSBsb2NhbGUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIElD VSBwcm92aWRlcjogZXJyb3IgbWVzc2FnZSIpOwotCisJcXIvRVJST1I6ICBpbnZhbGlkIExDX0NP TExBVEUgbG9jYWxlIG5hbWUvLAorCSJJQ1Utc3BlY2lmaWMgbG9jYWxlIG11c3QgYmUgc3BlY2lm aWVkIHdpdGggSUNVX0xPQ0FMRTogZXJyb3IgbWVzc2FnZSIpOwogCiBkb25lX3Rlc3RpbmcoKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CmluZGV4 IDVmNWI2MWQwMzYuLjU2NmU5MWQyZDkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMTIxMyw5ICsxMjEzLDkgQEAgU0VMRUNUICdjb3TD qScgPCAnY8O0dGUnIENPTExBVEUgInVuZC14LWljdSIsICdjb3TDqScgPiAnY8O0dGUnIENPTExB VEUgdGVzdGNvbGwKICgxIHJvdykKIAogQ1JFQVRFIENPTExBVElPTiB0ZXN0Y29sbF9sb3dlcl9m aXJzdCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sQ2FzZUZpcnN0PWxvd2VyJyk7Ci1O T1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rZi1sb3dlciIgZm9yIGxvY2FsZSAi QGNvbENhc2VGaXJzdD1sb3dlciIKK05PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11 LWtmLWxvd2VyIiBmb3IgSUNVIGxvY2FsZSAiQGNvbENhc2VGaXJzdD1sb3dlciIKIENSRUFURSBD T0xMQVRJT04gdGVzdGNvbGxfdXBwZXJfZmlyc3QgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAn QGNvbENhc2VGaXJzdD11cHBlcicpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5k LXUta2YtdXBwZXIiIGZvciBsb2NhbGUgIkBjb2xDYXNlRmlyc3Q9dXBwZXIiCitOT1RJQ0U6ICB1 c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rZi11cHBlciIgZm9yIElDVSBsb2NhbGUgIkBjb2xD YXNlRmlyc3Q9dXBwZXIiCiBTRUxFQ1QgJ2FhYScgPCAnQUFBJyBDT0xMQVRFIHRlc3Rjb2xsX2xv d2VyX2ZpcnN0LCAnYWFhJyA+ICdBQUEnIENPTExBVEUgdGVzdGNvbGxfdXBwZXJfZmlyc3Q7CiAg P2NvbHVtbj8gfCA/Y29sdW1uPyAKIC0tLS0tLS0tLS0rLS0tLS0tLS0tLQpAQCAtMTIyMyw3ICsx MjIzLDcgQEAgU0VMRUNUICdhYWEnIDwgJ0FBQScgQ09MTEFURSB0ZXN0Y29sbF9sb3dlcl9maXJz dCwgJ2FhYScgPiAnQUFBJyBDT0xMQVRFIHRlc3Rjb2wKICgxIHJvdykKIAogQ1JFQVRFIENPTExB VElPTiB0ZXN0Y29sbF9zaGlmdGVkIChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xBbHRl cm5hdGU9c2hpZnRlZCcpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kLXUta2Et c2hpZnRlZCIgZm9yIGxvY2FsZSAiQGNvbEFsdGVybmF0ZT1zaGlmdGVkIgorTk9USUNFOiAgdXNp bmcgc3RhbmRhcmQgZm9ybSAidW5kLXUta2Etc2hpZnRlZCIgZm9yIElDVSBsb2NhbGUgIkBjb2xB bHRlcm5hdGU9c2hpZnRlZCIKIFNFTEVDVCAnZGUtbHVnZScgPCAnZGVhbnphJyBDT0xMQVRFICJ1 bmQteC1pY3UiLCAnZGUtbHVnZScgPiAnZGVhbnphJyBDT0xMQVRFIHRlc3Rjb2xsX3NoaWZ0ZWQ7 CiAgP2NvbHVtbj8gfCA/Y29sdW1uPyAKIC0tLS0tLS0tLS0rLS0tLS0tLS0tLQpAQCAtMTI0MCwx MiArMTI0MCwxMiBAQCBTRUxFQ1QgJ0EtMjEnID4gJ0EtMTIzJyBDT0xMQVRFICJ1bmQteC1pY3Ui LCAnQS0yMScgPCAnQS0xMjMnIENPTExBVEUgdGVzdGNvbGxfbgogKDEgcm93KQogCiBDUkVBVEUg Q09MTEFUSU9OIHRlc3Rjb2xsX2Vycm9yMSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29s TnVtZXJpYz1sb3dlcicpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kLXUta24t bG93ZXIiIGZvciBsb2NhbGUgIkBjb2xOdW1lcmljPWxvd2VyIgorTk9USUNFOiAgdXNpbmcgc3Rh bmRhcmQgZm9ybSAidW5kLXUta24tbG93ZXIiIGZvciBJQ1UgbG9jYWxlICJAY29sTnVtZXJpYz1s b3dlciIKIEVSUk9SOiAgY291bGQgbm90IG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSAidW5kLXUt a24tbG93ZXIiOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKIC0tIHRlc3QgdGhhdCBhdHRyaWJ1 dGVzIG5vdCBoYW5kbGVkIGJ5IGljdV9zZXRfY29sbGF0aW9uX2F0dHJpYnV0ZXMoKQogLS0gKGhh bmRsZWQgYnkgdWNvbF9vcGVuKCkgZGlyZWN0bHkpIGFsc28gd29yawogQ1JFQVRFIENPTExBVElP TiB0ZXN0Y29sbF9kZV9waG9uZWJvb2sgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnZGVAY29s bGF0aW9uPXBob25lYm9vaycpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAiZGUtdS1j by1waG9uZWJrIiBmb3IgbG9jYWxlICJkZUBjb2xsYXRpb249cGhvbmVib29rIgorTk9USUNFOiAg dXNpbmcgc3RhbmRhcmQgZm9ybSAiZGUtdS1jby1waG9uZWJrIiBmb3IgSUNVIGxvY2FsZSAiZGVA Y29sbGF0aW9uPXBob25lYm9vayIKIFNFTEVDVCAnR29sZG1hbm4nIDwgJ0fDtnR6JyBDT0xMQVRF ICJkZS14LWljdSIsICdHb2xkbWFubicgPiAnR8O2dHonIENPTExBVEUgdGVzdGNvbGxfZGVfcGhv bmVib29rOwogID9jb2x1bW4/IHwgP2NvbHVtbj8gCiAtLS0tLS0tLS0tKy0tLS0tLS0tLS0KQEAg LTEyNTQsNyArMTI1NCw3IEBAIFNFTEVDVCAnR29sZG1hbm4nIDwgJ0fDtnR6JyBDT0xMQVRFICJk ZS14LWljdSIsICdHb2xkbWFubicgPiAnR8O2dHonIENPTExBVEUgdGVzCiAKIC0tIHJ1bGVzCiBD UkVBVEUgQ09MTEFUSU9OIHRlc3Rjb2xsX3J1bGVzMSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICcnLCBydWxlcyA9ICcmYSA8IGcnKTsKLU5PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVu ZCIgZm9yIGxvY2FsZSAiIgorTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3Ig SUNVIGxvY2FsZSAiIgogQ1JFQVRFIFRBQkxFIHRlc3Q3IChhIHRleHQpOwogLS0gZXhhbXBsZSBm cm9tIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvY29sbGF0aW9u L2N1c3RvbWl6YXRpb24vI3N5bnRheAogSU5TRVJUIElOVE8gdGVzdDcgVkFMVUVTICgnQWJlcm5h dGh5JyksICgnYXBwbGUnKSwgKCdiaXJkJyksICgnQm9zdG9uJyksICgnR3JhaGFtJyksICgnZ3Jl ZW4nKTsKQEAgLTEyODIsMTMgKzEyODIsMTMgQEAgU0VMRUNUICogRlJPTSB0ZXN0NyBPUkRFUiBC WSBhIENPTExBVEUgdGVzdGNvbGxfcnVsZXMxOwogCiBEUk9QIFRBQkxFIHRlc3Q3OwogQ1JFQVRF IENPTExBVElPTiB0ZXN0Y29sbF9ydWxlc3ggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJywg cnVsZXMgPSAnISF3cm9uZyEhJyk7Ci1OT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQi IGZvciBsb2NhbGUgIiIKK05PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIElD VSBsb2NhbGUgIiIKIEVSUk9SOiAgY291bGQgbm90IG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSAi dW5kIiB3aXRoIHJ1bGVzICIhIXdyb25nISEiOiBVX0lOVkFMSURfRk9STUFUX0VSUk9SCiAtLSBu b25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMKIENSRUFURSBDT0xMQVRJT04gY3Rlc3RfZGV0IChw cm92aWRlciA9IGljdSwgbG9jYWxlID0gJycsIGRldGVybWluaXN0aWMgPSB0cnVlKTsKLU5PVElD RTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIGxvY2FsZSAiIgorTk9USUNFOiAgdXNp bmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgSUNVIGxvY2FsZSAiIgogQ1JFQVRFIENPTExBVElP TiBjdGVzdF9ub25kZXQgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJywgZGV0ZXJtaW5pc3Rp YyA9IGZhbHNlKTsKLU5PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIGxvY2Fs ZSAiIgorTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgSUNVIGxvY2FsZSAi IgogQ1JFQVRFIFRBQkxFIHRlc3Q2IChhIGludCwgYiB0ZXh0KTsKIC0tIHNhbWUgc3RyaW5nIGlu IGRpZmZlcmVudCBub3JtYWwgZm9ybXMKIElOU0VSVCBJTlRPIHRlc3Q2IFZBTFVFUyAoMSwgVSYn XDAwRTRiYycpOwpAQCAtMTMzOCw5ICsxMzM4LDkgQEAgU0VMRUNUICogRlJPTSB0ZXN0NmEgV0hF UkUgYiA9IEFSUkFZWyfDpGJjJ10gQ09MTEFURSBjdGVzdF9ub25kZXQ7CiAoMiByb3dzKQogCiBD UkVBVEUgQ09MTEFUSU9OIGNhc2Vfc2Vuc2l0aXZlIChwcm92aWRlciA9IGljdSwgbG9jYWxlID0g JycpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgbG9jYWxlICIiCitO T1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQiIGZvciBJQ1UgbG9jYWxlICIiCiBDUkVB VEUgQ09MTEFUSU9OIGNhc2VfaW5zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAn QGNvbFN0cmVuZ3RoPXNlY29uZGFyeScsIGRldGVybWluaXN0aWMgPSBmYWxzZSk7Ci1OT1RJQ0U6 ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rcy1sZXZlbDIiIGZvciBsb2NhbGUgIkBjb2xT dHJlbmd0aD1zZWNvbmRhcnkiCitOT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1r cy1sZXZlbDIiIGZvciBJQ1UgbG9jYWxlICJAY29sU3RyZW5ndGg9c2Vjb25kYXJ5IgogU0VMRUNU ICdhYmMnIDw9ICdBQkMnIENPTExBVEUgY2FzZV9zZW5zaXRpdmUsICdhYmMnID49ICdBQkMnIENP TExBVEUgY2FzZV9zZW5zaXRpdmU7CiAgP2NvbHVtbj8gfCA/Y29sdW1uPyAKIC0tLS0tLS0tLS0r LS0tLS0tLS0tLQotLSAKMi4zNC4xCgo= --=-dEx3XDo6xekZDYyMu2r0--