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 1ohEGO-000648-El for pgsql-hackers@arkaria.postgresql.org; Sat, 08 Oct 2022 18:09:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ohEFN-0007NH-5i for pgsql-hackers@arkaria.postgresql.org; Sat, 08 Oct 2022 18:08:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ohEFM-0007Mp-KV for pgsql-hackers@lists.postgresql.org; Sat, 08 Oct 2022 18:08:24 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ohEFI-0005rz-9s for pgsql-hackers@postgresql.org; Sat, 08 Oct 2022 18:08:23 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 91FF421C2F27; Sat, 8 Oct 2022 21:08:18 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1665252498; bh=37qMtrPK+YfmgBKCGwhj0wH+6180UOntaZ+z+BpJ2lk=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=f2hOfQkOQeD0JC/qNr8MHBGQRBQH+XBhnOqZrnKx2yVPBcKtA+U19eFyIrGP9k6wG Z2s6HyEgRvBOiDJGSCf5i7OljdRvncuySVcPwspY0XdhfKwNHJFx4R4Ggw7jsJkMuw 5pZk0InzNTCFiPq6piLNiO09aPZxipNQeqAMe/ao= MIME-Version: 1.0 Date: Sat, 08 Oct 2022 21:08:18 +0300 From: Marina Polyakova To: Peter Eisentraut Cc: Kyotaro Horiguchi , pgsql-hackers@postgresql.org, pryzby@telsasoft.com, rjuju123@gmail.com, daniel@manitou-mail.org, AndrewBille@gmail.com, michael@paquier.xyz Subject: Re: ICU for global collation In-Reply-To: <73f18f58-5eaa-b09b-407d-a862a48635b1@enterprisedb.com> References: <1f86f120-7b02-68f6-a434-132d054afe33@enterprisedb.com> <38d2aac40a991b20adf032e509c6eff5@postgrespro.ru> <6dd6db0984d86a51b7255ba79f111971@postgrespro.ru> <20220915.155210.529619933474389138.horikyota.ntt@gmail.com> <65ef1a8a-1fc3-3dc3-c7aa-6b9f649014b2@enterprisedb.com> <9ba4cd1ea6ed6b7b15c0ff15e6f540cd@postgrespro.ru> <218b963e-dd66-626a-abd8-962afb587876@enterprisedb.com> <36737f855bf3c44e701097cafd0ee2c9@postgrespro.ru> <73f18f58-5eaa-b09b-407d-a862a48635b1@enterprisedb.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <79f410460c4fc9534000785adb8bf39a@postgrespro.ru> X-Sender: m.polyakova@postgrespro.ru Organization: Postgres Professional Content-Type: multipart/mixed; boundary="=_ec417554a484403da200d54442db9469" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_ec417554a484403da200d54442db9469 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2022-10-01 15:07, Peter Eisentraut wrote: > On 22.09.22 20:06, Marina Polyakova wrote: >> On 2022-09-21 17:53, Peter Eisentraut wrote: >>> Committed with that test, thanks.  I think that covers all the ICU >>> issues you reported for PG15 for now? >> >> I thought about the order of the ICU checks - if it is ok to check >> that the selected encoding is supported by ICU after printing all the >> locale & encoding information, why not to move almost all the ICU >> checks here?.. > > It's possible that we can do better, but I'm not going to add things > like that to PG 15 at this point unless it fixes a faulty behavior. Will PG 15 always have this order of ICU checks, is the current behaviour correct enough? On the other hand, there may be a better fix for PG 16+ and not all changes can be backported... On 2022-09-16 10:56, Peter Eisentraut wrote: > On 15.09.22 17:41, Marina Polyakova wrote: >> I agree with you. Here's another version of the patch. The >> locale/encoding checks and reports in initdb have been reordered, >> because now the encoding is set first and only then the ICU locale is >> checked. > > I committed something based on the first version of your patch. This > reordering of the messages here was a little too much surgery for me > at this point. For instance, there are also messages in #ifdef WIN32 > code that would need to be reordered as well. I kept the overall > structure of the code the same and just inserted the additional > proposed checks. > > If you want to pursue the reordering of the checks and messages > overall, a patch for the master branch could be considered. I've worked on this again (see attached patch) but I'm not sure if the messages of encoding mismatches are clear enough without the full locale information. For $ initdb -D data --icu-locale en --locale-provider icu compare the outputs: The database cluster will be initialized with this locale configuration: provider: icu ICU locale: en LC_COLLATE: de_DE.iso885915@euro LC_CTYPE: de_DE.iso885915@euro LC_MESSAGES: en_US.utf8 LC_MONETARY: de_DE.iso885915@euro LC_NUMERIC: de_DE.iso885915@euro LC_TIME: de_DE.iso885915@euro The default database encoding has been set to "UTF8". initdb: error: encoding mismatch initdb: detail: The encoding you selected (UTF8) and the encoding that the selected locale uses (LATIN9) do not match. This would lead to misbehavior in various character string processing functions. initdb: hint: Rerun initdb and either do not specify an encoding explicitly, or choose a matching combination. and Encoding "UTF8" implied by locale will be set as the default database encoding. initdb: error: encoding mismatch initdb: detail: The encoding you selected (UTF8) and the encoding that the selected locale uses (LATIN9) do not match. This would lead to misbehavior in various character string processing functions. initdb: hint: Rerun initdb and either do not specify an encoding explicitly, or choose a matching combination. The same without ICU, e.g. for $ initdb -D data the output with locale information: The database cluster will be initialized with this locale configuration: provider: libc LC_COLLATE: en_US.utf8 LC_CTYPE: de_DE.iso885915@euro LC_MESSAGES: en_US.utf8 LC_MONETARY: de_DE.iso885915@euro LC_NUMERIC: de_DE.iso885915@euro LC_TIME: de_DE.iso885915@euro The default database encoding has accordingly been set to "LATIN9". initdb: error: encoding mismatch initdb: detail: The encoding you selected (LATIN9) and the encoding that the selected locale uses (UTF8) do not match. This would lead to misbehavior in various character string processing functions. initdb: hint: Rerun initdb and either do not specify an encoding explicitly, or choose a matching combination. and the "shorter" version: Encoding "LATIN9" implied by locale will be set as the default database encoding. initdb: error: encoding mismatch initdb: detail: The encoding you selected (LATIN9) and the encoding that the selected locale uses (UTF8) do not match. This would lead to misbehavior in various character string processing functions. initdb: hint: Rerun initdb and either do not specify an encoding explicitly, or choose a matching combination. BTW, what did you mean that "there are also messages in #ifdef WIN32 code that would need to be reordered as well"?.. -- Marina Polyakova Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --=_ec417554a484403da200d54442db9469 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-diff_icu_options_check_order.patch Content-Disposition: attachment; filename=v2-diff_icu_options_check_order.patch; size=13946 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCA5NmI0NmNiYzAyMGVmOGI4NWI2ZDU0ZDNk NGNhOGFkMTE2Mjc3ODMyLi4yNDJkNjhmNTgyODdhZWI2Zjk1NjE5YzJjZThiNzhlMzg0MzNjZjE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCkBAIC0xMDMwLDYgKzEwMzAsMTEgQEAgY3Jl YXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAKIAlp ZiAoZGJsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQogCXsKKyNpZm5kZWYgVVNFX0lD VQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKKwkJCQkgZXJybXNnKCJJQ1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxk IikpKTsKKyNlbHNlCiAJCWlmICghKGlzX2VuY29kaW5nX3N1cHBvcnRlZF9ieV9pY3UoZW5jb2Rp bmcpKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLApAQCAtMTA0Niw2ICsxMDUxLDcgQEAgY3JlYXRlZGIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJCQkJCSBlcnJtc2coIklDVSBs b2NhbGUgbXVzdCBiZSBzcGVjaWZpZWQiKSkpOwogCiAJCWNoZWNrX2ljdV9sb2NhbGUoZGJpY3Vs b2NhbGUpOworI2VuZGlmCiAJfQogCWVsc2UKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMK aW5kZXggMmI0MmQ5Y2NkOGI3NTFiY2I1Y2RhM2ExZjRjNzgwM2E2OGJjMGE0YS4uNzQzZjExZTFk MWZkNjJkNTAwZmMyODQ2OTc2NDcyZDEzZTA4MDQ2YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2Nh bGUuYwpAQCAtMTk0NSwxNSArMTk0NSwxMiBAQCBpY3Vfc2V0X2NvbGxhdGlvbl9hdHRyaWJ1dGVz KFVDb2xsYXRvciAqY29sbGF0b3IsIGNvbnN0IGNoYXIgKmxvYykKIAl9CiB9CiAKLSNlbmRpZgkJ CQkJCQkvKiBVU0VfSUNVICovCi0KIC8qCiAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gbG9jYWxlIElE IGlzIHZhbGlkLCBhbmQgZXJlcG9ydChFUlJPUikgaWYgaXQgaXNuJ3QuCiAgKi8KIHZvaWQKIGNo ZWNrX2ljdV9sb2NhbGUoY29uc3QgY2hhciAqaWN1X2xvY2FsZSkKIHsKLSNpZmRlZiBVU0VfSUNV CiAJVUNvbGxhdG9yICAqY29sbGF0b3I7CiAJVUVycm9yQ29kZQlzdGF0dXM7CiAKQEAgLTE5Njcs MTMgKzE5NjQsMTAgQEAgY2hlY2tfaWN1X2xvY2FsZShjb25zdCBjaGFyICppY3VfbG9jYWxlKQog CWlmIChVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA8IDU0KQogCQlpY3Vfc2V0X2NvbGxhdGlvbl9h dHRyaWJ1dGVzKGNvbGxhdG9yLCBpY3VfbG9jYWxlKTsKIAl1Y29sX2Nsb3NlKGNvbGxhdG9yKTsK LSNlbHNlCi0JZXJlcG9ydChFUlJPUiwKLQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKLQkJCSBlcnJtc2coIklDVSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVp bGQiKSkpOwotI2VuZGlmCiB9CiAKKyNlbmRpZgkJCQkJCQkvKiBVU0VfSUNVICovCisKIC8qCiAg KiBUaGVzZSBmdW5jdGlvbnMgY29udmVydCBmcm9tL3RvIGxpYmMncyB3Y2hhcl90LCAqbm90KiBw Z193Y2hhcl90LgogICogVGhlcmVmb3JlIHdlIGtlZXAgdGhlbSBoZXJlIHJhdGhlciB0aGFuIHdp dGggdGhlIG1idXRpbHMgY29kZS4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5j IGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5kZXggZjYxYTA0MzA1NTkwYzdkMDllYzU5ZmUy MDJkNmYyMmMwYTYwNTgyNy4uNDdkZGU1NTJlMjE4MDU1ZjVkNzMwMDM3OTliNGNjYzdjOTZhNDlh NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0 ZGIvaW5pdGRiLmMKQEAgLTIwNDMsMjQgKzIwNDMsMzUgQEAgY2hlY2tfbG9jYWxlX2VuY29kaW5n KGNvbnN0IGNoYXIgKmxvY2FsZSwgaW50IHVzZXJfZW5jKQogfQogCiAvKgotICogY2hlY2sgaWYg dGhlIGNob3NlbiBlbmNvZGluZyBtYXRjaGVzIGlzIHN1cHBvcnRlZCBieSBJQ1UKKyAqIGNoZWNr IGlmIHRoZSBjaG9zZW4gbG9jYWxlIGFuZCBlbmNvZGluZyBhcmUgc3VwcG9ydGVkIGJ5IElDVQog ICoKICAqIHRoaXMgc2hvdWxkIG1hdGNoIHRoZSBzaW1pbGFyIGNoZWNrIGluIHRoZSBiYWNrZW5k IGNyZWF0ZWRiKCkgZnVuY3Rpb24KICAqLwotc3RhdGljIGJvb2wKLWNoZWNrX2ljdV9sb2NhbGVf ZW5jb2RpbmcoaW50IHVzZXJfZW5jKQorc3RhdGljIHZvaWQKK2NoZWNrX2ljdV9sb2NhbGVfZW5j b2Rpbmcodm9pZCkKIHsKLQlpZiAoIShpc19lbmNvZGluZ19zdXBwb3J0ZWRfYnlfaWN1KHVzZXJf ZW5jKSkpCisjaWZuZGVmIFVTRV9JQ1UKKwlwZ19mYXRhbCgiSUNVIGlzIG5vdCBzdXBwb3J0ZWQg aW4gdGhpcyBidWlsZCIpOworI2Vsc2UKKwlpZiAoIShpc19lbmNvZGluZ19zdXBwb3J0ZWRfYnlf aWN1KGVuY29kaW5naWQpKSkKIAl7CiAJCXBnX2xvZ19lcnJvcigiZW5jb2RpbmcgbWlzbWF0Y2gi KTsKIAkJcGdfbG9nX2Vycm9yX2RldGFpbCgiVGhlIGVuY29kaW5nIHlvdSBzZWxlY3RlZCAoJXMp IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGUgSUNVIHByb3ZpZGVyLiIsCi0JCQkJCQkJcGdfZW5j b2RpbmdfdG9fY2hhcih1c2VyX2VuYykpOworCQkJCQkJCXBnX2VuY29kaW5nX3RvX2NoYXIoZW5j b2RpbmdpZCkpOwogCQlwZ19sb2dfZXJyb3JfaGludCgiUmVydW4gJXMgYW5kIGVpdGhlciBkbyBu b3Qgc3BlY2lmeSBhbiBlbmNvZGluZyBleHBsaWNpdGx5LCAiCiAJCQkJCQkgICJvciBjaG9vc2Ug YSBtYXRjaGluZyBjb21iaW5hdGlvbi4iLAogCQkJCQkJICBwcm9nbmFtZSk7Ci0JCXJldHVybiBm YWxzZTsKKwkJZXhpdCgxKTsKIAl9Ci0JcmV0dXJuIHRydWU7CisKKwlpZiAoIWljdV9sb2NhbGUp CisJCXBnX2ZhdGFsKCJJQ1UgbG9jYWxlIG11c3QgYmUgc3BlY2lmaWVkIik7CisKKwkvKgorCSAq IEluIHN1cHBvcnRlZCBidWlsZHMsIHRoZSBJQ1UgbG9jYWxlIElEIHdpbGwgYmUgY2hlY2tlZCBi eSB0aGUgYmFja2VuZAorCSAqIGR1cmluZyBwb3N0LWJvb3RzdHJhcCBpbml0aWFsaXphdGlvbi4K KwkgKi8KKyNlbmRpZgogfQogCiAvKgpAQCAtMjExMywyMCArMjEyNCw2IEBAIHNldGxvY2FsZXMo dm9pZCkKIAljaGVja19sb2NhbGVfbmFtZShMQ19DVFlQRSwgbGNfbWVzc2FnZXMsICZjYW5vbm5h bWUpOwogCWxjX21lc3NhZ2VzID0gY2Fub25uYW1lOwogI2VuZGlmCi0KLQlpZiAobG9jYWxlX3By b3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCi0JewotCQlpZiAoIWljdV9sb2NhbGUpCi0JCQlw Z19mYXRhbCgiSUNVIGxvY2FsZSBtdXN0IGJlIHNwZWNpZmllZCIpOwotCi0JCS8qCi0JCSAqIElu IHN1cHBvcnRlZCBidWlsZHMsIHRoZSBJQ1UgbG9jYWxlIElEIHdpbGwgYmUgY2hlY2tlZCBieSB0 aGUKLQkJICogYmFja2VuZCBkdXJpbmcgcG9zdC1ib290c3RyYXAgaW5pdGlhbGl6YXRpb24uCi0J CSAqLwotI2lmbmRlZiBVU0VfSUNVCi0JCXBnX2ZhdGFsKCJJQ1UgaXMgbm90IHN1cHBvcnRlZCBp biB0aGlzIGJ1aWxkIik7Ci0jZW5kaWYKLQl9CiB9CiAKIC8qCkBAIC0yMjk3LDE4ICsyMjk0LDg2 IEBAIHNldHVwX2Jpbl9wYXRocyhjb25zdCBjaGFyICphcmd2MCkKIAljYW5vbmljYWxpemVfcGF0 aChzaGFyZV9wYXRoKTsKIH0KIAorc3RhdGljIHZvaWQKK3NldF9lbmNvZGluZyh2b2lkKQorewor CWludAkJCWN0eXBlX2VuYzsKKworCWlmIChlbmNvZGluZykKKwl7CisJCWVuY29kaW5naWQgPSBn ZXRfZW5jb2RpbmdfaWQoZW5jb2RpbmcpOworCQlyZXR1cm47CisJfQorCisJaWYgKGxvY2FsZV9w cm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCXsKKwkJZW5jb2RpbmdpZCA9IFBHX1VURjg7 CisJCXByaW50ZihfKCJFbmNvZGluZyBcIiVzXCIgaW1wbGllZCBieSBsb2NhbGUgd2lsbCBiZSBz ZXQgYXMgdGhlIGRlZmF1bHQgZGF0YWJhc2UgZW5jb2RpbmcuXG4iKSwKKwkJCSAgIHBnX2VuY29k aW5nX3RvX2NoYXIoZW5jb2RpbmdpZCkpOworCQlyZXR1cm47CisJfQorCisJY3R5cGVfZW5jID0g cGdfZ2V0X2VuY29kaW5nX2Zyb21fbG9jYWxlKGxjX2N0eXBlLCB0cnVlKTsKKworCWlmIChjdHlw ZV9lbmMgPT0gLTEpCisJeworCQkvKiBDb3VsZG4ndCByZWNvZ25pemUgdGhlIGxvY2FsZSdzIGNv ZGVzZXQgKi8KKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZmluZCBzdWl0YWJsZSBlbmNvZGlu ZyBmb3IgbG9jYWxlIFwiJXNcIiIsCisJCQkJCSBsY19jdHlwZSk7CisJCXBnX2xvZ19lcnJvcl9o aW50KCJSZXJ1biAlcyB3aXRoIHRoZSAtRSBvcHRpb24uIiwgcHJvZ25hbWUpOworCQlwZ19sb2df ZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJv Z25hbWUpOworCQlleGl0KDEpOworCX0KKworCWlmICghcGdfdmFsaWRfc2VydmVyX2VuY29kaW5n X2lkKGN0eXBlX2VuYykpCisJeworCQkvKgorCQkgKiBXZSByZWNvZ25pemVkIGl0LCBidXQgaXQn cyBub3QgYSBsZWdhbCBzZXJ2ZXIgZW5jb2RpbmcuIE9uIFdpbmRvd3MsCisJCSAqIFVURi04IHdv cmtzIHdpdGggYW55IGxvY2FsZSwgc28gd2UgY2FuIGZhbGwgYmFjayB0byBVVEYtOC4KKwkJICov CisjaWZkZWYgV0lOMzIKKwkJZW5jb2RpbmdpZCA9IFBHX1VURjg7CisJCXByaW50ZihfKCJFbmNv ZGluZyBcIiVzXCIgaW1wbGllZCBieSBsb2NhbGUgaXMgbm90IGFsbG93ZWQgYXMgYSBzZXJ2ZXIt c2lkZSBlbmNvZGluZy5cbiIKKwkJCQkgIlRoZSBkZWZhdWx0IGRhdGFiYXNlIGVuY29kaW5nIHdp bGwgYmUgc2V0IHRvIFwiJXNcIiBpbnN0ZWFkLlxuIiksCisJCQkgICBwZ19lbmNvZGluZ190b19j aGFyKGN0eXBlX2VuYyksCisJCQkgICBwZ19lbmNvZGluZ190b19jaGFyKGVuY29kaW5naWQpKTsK KwkJcmV0dXJuOworI2Vsc2UKKwkJcGdfbG9nX2Vycm9yKCJsb2NhbGUgXCIlc1wiIHJlcXVpcmVz IHVuc3VwcG9ydGVkIGVuY29kaW5nIFwiJXNcIiIsCisJCQkJCSBsY19jdHlwZSwgcGdfZW5jb2Rp bmdfdG9fY2hhcihjdHlwZV9lbmMpKTsKKwkJcGdfbG9nX2Vycm9yX2RldGFpbCgiRW5jb2Rpbmcg XCIlc1wiIGlzIG5vdCBhbGxvd2VkIGFzIGEgc2VydmVyLXNpZGUgZW5jb2RpbmcuIiwKKwkJCQkJ CQlwZ19lbmNvZGluZ190b19jaGFyKGN0eXBlX2VuYykpOworCQlwZ19sb2dfZXJyb3JfaGludCgi UmVydW4gJXMgd2l0aCBhIGRpZmZlcmVudCBsb2NhbGUgc2VsZWN0aW9uLiIsCisJCQkJCQkgIHBy b2duYW1lKTsKKwkJZXhpdCgxKTsKKyNlbmRpZgorCX0KKworCWVuY29kaW5naWQgPSBjdHlwZV9l bmM7CisJcHJpbnRmKF8oIkVuY29kaW5nIFwiJXNcIiBpbXBsaWVkIGJ5IGxvY2FsZSB3aWxsIGJl IHNldCBhcyB0aGUgZGVmYXVsdCBkYXRhYmFzZSBlbmNvZGluZy5cbiIpLAorCQkgICBwZ19lbmNv ZGluZ190b19jaGFyKGVuY29kaW5naWQpKTsKK30KKwogdm9pZAogc2V0dXBfbG9jYWxlX2VuY29k aW5nKHZvaWQpCiB7CiAJc2V0bG9jYWxlcygpOwogCisJc2V0X2VuY29kaW5nKCk7CisKKwlpZiAo IWNoZWNrX2xvY2FsZV9lbmNvZGluZyhsY19jdHlwZSwgZW5jb2RpbmdpZCkgfHwKKwkJIWNoZWNr X2xvY2FsZV9lbmNvZGluZyhsY19jb2xsYXRlLCBlbmNvZGluZ2lkKSkKKwkJZXhpdCgxKTsJCQkJ LyogY2hlY2tfbG9jYWxlX2VuY29kaW5nIHByaW50ZWQgdGhlIGVycm9yICovCisKKwlpZiAobG9j YWxlX3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCWNoZWNrX2ljdV9sb2NhbGVfZW5j b2RpbmcoKTsKKwogCWlmIChsb2NhbGVfcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMgJiYK IAkJc3RyY21wKGxjX2N0eXBlLCBsY19jb2xsYXRlKSA9PSAwICYmCiAJCXN0cmNtcChsY19jdHlw ZSwgbGNfdGltZSkgPT0gMCAmJgogCQlzdHJjbXAobGNfY3R5cGUsIGxjX251bWVyaWMpID09IDAg JiYKIAkJc3RyY21wKGxjX2N0eXBlLCBsY19tb25ldGFyeSkgPT0gMCAmJgotCQlzdHJjbXAobGNf Y3R5cGUsIGxjX21lc3NhZ2VzKSA9PSAwICYmCi0JCSghaWN1X2xvY2FsZSB8fCBzdHJjbXAobGNf Y3R5cGUsIGljdV9sb2NhbGUpID09IDApKQorCQlzdHJjbXAobGNfY3R5cGUsIGxjX21lc3NhZ2Vz KSA9PSAwKQogCQlwcmludGYoXygiVGhlIGRhdGFiYXNlIGNsdXN0ZXIgd2lsbCBiZSBpbml0aWFs aXplZCB3aXRoIGxvY2FsZSBcIiVzXCIuXG4iKSwgbGNfY3R5cGUpOwogCWVsc2UKIAl7CkBAIC0y MzI5LDY4ICsyMzk0LDYgQEAgc2V0dXBfbG9jYWxlX2VuY29kaW5nKHZvaWQpCiAJCQkgICBsY19u dW1lcmljLAogCQkJICAgbGNfdGltZSk7CiAJfQotCi0JaWYgKCFlbmNvZGluZyAmJiBsb2NhbGVf cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKLQl7Ci0JCWVuY29kaW5naWQgPSBQR19VVEY4 OwotCQlwcmludGYoXygiVGhlIGRlZmF1bHQgZGF0YWJhc2UgZW5jb2RpbmcgaGFzIGJlZW4gc2V0 IHRvIFwiJXNcIi5cbiIpLAotCQkJICAgcGdfZW5jb2RpbmdfdG9fY2hhcihlbmNvZGluZ2lkKSk7 Ci0JfQotCWVsc2UgaWYgKCFlbmNvZGluZykKLQl7Ci0JCWludAkJCWN0eXBlX2VuYzsKLQotCQlj dHlwZV9lbmMgPSBwZ19nZXRfZW5jb2RpbmdfZnJvbV9sb2NhbGUobGNfY3R5cGUsIHRydWUpOwot Ci0JCWlmIChjdHlwZV9lbmMgPT0gLTEpCi0JCXsKLQkJCS8qIENvdWxkbid0IHJlY29nbml6ZSB0 aGUgbG9jYWxlJ3MgY29kZXNldCAqLwotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZmluZCBz dWl0YWJsZSBlbmNvZGluZyBmb3IgbG9jYWxlIFwiJXNcIiIsCi0JCQkJCQkgbGNfY3R5cGUpOwot CQkJcGdfbG9nX2Vycm9yX2hpbnQoIlJlcnVuICVzIHdpdGggdGhlIC1FIG9wdGlvbi4iLCBwcm9n bmFtZSk7Ci0JCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUg aW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOwotCQkJZXhpdCgxKTsKLQkJfQotCQllbHNlIGlmICgh cGdfdmFsaWRfc2VydmVyX2VuY29kaW5nX2lkKGN0eXBlX2VuYykpCi0JCXsKLQkJCS8qCi0JCQkg KiBXZSByZWNvZ25pemVkIGl0LCBidXQgaXQncyBub3QgYSBsZWdhbCBzZXJ2ZXIgZW5jb2Rpbmcu IE9uCi0JCQkgKiBXaW5kb3dzLCBVVEYtOCB3b3JrcyB3aXRoIGFueSBsb2NhbGUsIHNvIHdlIGNh biBmYWxsIGJhY2sgdG8KLQkJCSAqIFVURi04LgotCQkJICovCi0jaWZkZWYgV0lOMzIKLQkJCWVu Y29kaW5naWQgPSBQR19VVEY4OwotCQkJcHJpbnRmKF8oIkVuY29kaW5nIFwiJXNcIiBpbXBsaWVk IGJ5IGxvY2FsZSBpcyBub3QgYWxsb3dlZCBhcyBhIHNlcnZlci1zaWRlIGVuY29kaW5nLlxuIgot CQkJCQkgIlRoZSBkZWZhdWx0IGRhdGFiYXNlIGVuY29kaW5nIHdpbGwgYmUgc2V0IHRvIFwiJXNc IiBpbnN0ZWFkLlxuIiksCi0JCQkJICAgcGdfZW5jb2RpbmdfdG9fY2hhcihjdHlwZV9lbmMpLAot CQkJCSAgIHBnX2VuY29kaW5nX3RvX2NoYXIoZW5jb2RpbmdpZCkpOwotI2Vsc2UKLQkJCXBnX2xv Z19lcnJvcigibG9jYWxlIFwiJXNcIiByZXF1aXJlcyB1bnN1cHBvcnRlZCBlbmNvZGluZyBcIiVz XCIiLAotCQkJCQkJIGxjX2N0eXBlLCBwZ19lbmNvZGluZ190b19jaGFyKGN0eXBlX2VuYykpOwot CQkJcGdfbG9nX2Vycm9yX2RldGFpbCgiRW5jb2RpbmcgXCIlc1wiIGlzIG5vdCBhbGxvd2VkIGFz IGEgc2VydmVyLXNpZGUgZW5jb2RpbmcuIiwKLQkJCQkJCQkJcGdfZW5jb2RpbmdfdG9fY2hhcihj dHlwZV9lbmMpKTsKLQkJCXBnX2xvZ19lcnJvcl9oaW50KCJSZXJ1biAlcyB3aXRoIGEgZGlmZmVy ZW50IGxvY2FsZSBzZWxlY3Rpb24uIiwKLQkJCQkJCQkgIHByb2duYW1lKTsKLQkJCWV4aXQoMSk7 Ci0jZW5kaWYKLQkJfQotCQllbHNlCi0JCXsKLQkJCWVuY29kaW5naWQgPSBjdHlwZV9lbmM7Ci0J CQlwcmludGYoXygiVGhlIGRlZmF1bHQgZGF0YWJhc2UgZW5jb2RpbmcgaGFzIGFjY29yZGluZ2x5 IGJlZW4gc2V0IHRvIFwiJXNcIi5cbiIpLAotCQkJCSAgIHBnX2VuY29kaW5nX3RvX2NoYXIoZW5j b2RpbmdpZCkpOwotCQl9Ci0JfQotCWVsc2UKLQkJZW5jb2RpbmdpZCA9IGdldF9lbmNvZGluZ19p ZChlbmNvZGluZyk7Ci0KLQlpZiAoIWNoZWNrX2xvY2FsZV9lbmNvZGluZyhsY19jdHlwZSwgZW5j b2RpbmdpZCkgfHwKLQkJIWNoZWNrX2xvY2FsZV9lbmNvZGluZyhsY19jb2xsYXRlLCBlbmNvZGlu Z2lkKSkKLQkJZXhpdCgxKTsJCQkJLyogY2hlY2tfbG9jYWxlX2VuY29kaW5nIHByaW50ZWQgdGhl IGVycm9yICovCi0KLQlpZiAobG9jYWxlX3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UgJiYK LQkJIWNoZWNrX2ljdV9sb2NhbGVfZW5jb2RpbmcoZW5jb2RpbmdpZCkpCi0JCWV4aXQoMSk7CiB9 CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsIGIvc3JjL2Jp bi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsCmluZGV4IDE2NGZjMTFjYmZmYzhjNDY2Zjg0ZDUxYzA3 MTA2YjYwMmQwMjJiYzYuLjNhNTE2NjQwOGNlMmVmNzgzMWQ3YmQ4MGUxZWM5NWNiODg2NzUxN2Eg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbAorKysgYi9zcmMvYmlu L2luaXRkYi90LzAwMV9pbml0ZGIucGwKQEAgLTEwMiwxMiArMTAyLDE0IEBAIGlmICgkRU5We3dp dGhfaWN1fSBlcSAneWVzJykKIAkJcXIvaW5pdGRiOiBlcnJvcjogSUNVIGxvY2FsZSBtdXN0IGJl IHNwZWNpZmllZC8sCiAJCSdsb2NhbGUgcHJvdmlkZXIgSUNVIHJlcXVpcmVzIC0taWN1LWxvY2Fs ZScpOwogCi0JY29tbWFuZF9vaygKKwljb21tYW5kX2xpa2UoCiAJCVsKIAkJCSdpbml0ZGInLCAg ICAgICAgICAgICAgICAnLS1uby1zeW5jJywKKwkJCSctQScsICAgICAgICAgICAgICAgICAgICAn dHJ1c3QnLAogCQkJJy0tbG9jYWxlLXByb3ZpZGVyPWljdScsICctLWljdS1sb2NhbGU9ZW4nLAog CQkJIiR0ZW1wZGlyL2RhdGEzIgogCQldLAorCQlxci9FbmNvZGluZyAiVVRGOCIgaW1wbGllZCBi eSBsb2NhbGUgd2lsbCBiZSBzZXQgYXMgdGhlIGRlZmF1bHQgZGF0YWJhc2UgZW5jb2RpbmcvLAog CQknb3B0aW9uIC0taWN1LWxvY2FsZScpOwogCiAJY29tbWFuZF9mYWlsc19saWtlKApAQCAtMTIz LDI4ICsxMjUsNDEgQEAgaWYgKCRFTlZ7d2l0aF9pY3V9IGVxICd5ZXMnKQogCQlbCiAJCQknaW5p dGRiJywgICAgICAgICAgICAgICAgJy0tbm8tc3luYycsCiAJCQknLS1sb2NhbGUtcHJvdmlkZXI9 aWN1JywgJy0tZW5jb2Rpbmc9U1FMX0FTQ0lJJywKLQkJCSctLWljdS1sb2NhbGU9ZW4nLCAiJHRl bXBkaXIvZGF0YVgiCisJCQkiJHRlbXBkaXIvZGF0YVgiCiAJCV0sCiAJCXFyL2Vycm9yOiBlbmNv ZGluZyBtaXNtYXRjaC8sCiAJCSdmYWlscyBmb3IgZW5jb2Rpbmcgbm90IHN1cHBvcnRlZCBieSBJ Q1UnKTsKIH0KIGVsc2UKIHsKLQljb21tYW5kX2ZhaWxzKAorCWNvbW1hbmRfZmFpbHNfbGlrZSgK IAkJWyAnaW5pdGRiJywgJy0tbm8tc3luYycsICctLWxvY2FsZS1wcm92aWRlcj1pY3UnLCAiJHRl bXBkaXIvZGF0YTIiIF0sCisJCXFyL2Vycm9yOiBJQ1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlz IGJ1aWxkLywKIAkJJ2xvY2FsZSBwcm92aWRlciBJQ1UgZmFpbHMgc2luY2Ugbm8gSUNVIHN1cHBv cnQnKTsKKworCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJWworCQkJJ2luaXRkYicsICAgICAgICAg ICAgICAgICctLW5vLXN5bmMnLAorCQkJJy0tbG9jYWxlLXByb3ZpZGVyPWljdScsICctLWVuY29k aW5nPVNRTF9BU0NJSScsCisJCQkiJHRlbXBkaXIvZGF0YTIiCisJCV0sCisJCXFyL2Vycm9yOiBJ Q1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkLywKKwkJJ2xvY2FsZSBwcm92aWRlciBJ Q1Ugd2l0aCBub3Qgc3VwcG9ydGVkIElDVSBlbmNvZGluZyBmYWlscyBzaW5jZSBubyBJQ1Ugc3Vw cG9ydCcKKwkpOwogfQogCi1jb21tYW5kX2ZhaWxzKAorY29tbWFuZF9mYWlsc19saWtlKAogCVsg J2luaXRkYicsICctLW5vLXN5bmMnLCAnLS1sb2NhbGUtcHJvdmlkZXI9eHl6JywgIiR0ZW1wZGly L2RhdGFYIiBdLAorCXFyL2Vycm9yOiB1bnJlY29nbml6ZWQgbG9jYWxlIHByb3ZpZGVyOiB4eXov LAogCSdmYWlscyBmb3IgaW52YWxpZCBsb2NhbGUgcHJvdmlkZXInKTsKIAotY29tbWFuZF9mYWls cygKK2NvbW1hbmRfZmFpbHNfbGlrZSgKIAlbCiAJCSdpbml0ZGInLCAgICAgICAgICAgICAgICAg Jy0tbm8tc3luYycsCiAJCSctLWxvY2FsZS1wcm92aWRlcj1saWJjJywgJy0taWN1LWxvY2FsZT1l bicsCiAJCSIkdGVtcGRpci9kYXRhWCIKIAldLAorCXFyL2Vycm9yOiAtLWljdS1sb2NhbGUgY2Fu bm90IGJlIHNwZWNpZmllZCB1bmxlc3MgbG9jYWxlIHByb3ZpZGVyICJpY3UiIGlzIGNob3Nlbi8s CiAJJ2ZhaWxzIGZvciBpbnZhbGlkIG9wdGlvbiBjb21iaW5hdGlvbicpOwogCiBkb25lX3Rlc3Rp bmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVkYi5wbCBiL3Ny Yy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVkYi5wbAppbmRleCBhNzRiZjNiMGQ4YmI5NjQyZDBi MjRmNTc4MWQ1Nzk0NzI3NDY2YTg4Li40NWI0NGZjZTQ2MDM3NjI0MGEyNjE3ZmEyMDdlNDRlNjg2 NDM5ZmFiIDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvdC8wMjBfY3JlYXRlZGIucGwKKysr IGIvc3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsCkBAIC0zMCwxMSArMzAsMTIgQEAg aWYgKCRFTlZ7d2l0aF9pY3V9IGVxICd5ZXMnKQogCSMgVGhpcyBmYWlscyBiZWNhdXNlIHRlbXBs YXRlMCB1c2VzIGxpYmMgcHJvdmlkZXIgYW5kIGhhcyBubyBJQ1UKIAkjIGxvY2FsZSBzZXQuICBJ dCB3b3VsZCBzdWNjZWVkIGlmIHRlbXBsYXRlMCB1c2VkIHRoZSBpY3UKIAkjIHByb3ZpZGVyLiAg WFhYIE1heWJlIHNwbGl0IGludG8gbXVsdGlwbGUgdGVzdHM/Ci0JJG5vZGUtPmNvbW1hbmRfZmFp bHMoCisJJG5vZGUtPmNvbW1hbmRfZmFpbHNfbGlrZSgKIAkJWwogCQkJJ2NyZWF0ZWRiJywgJy1U JywgJ3RlbXBsYXRlMCcsICctRScsICdVVEY4JywKIAkJCSctLWxvY2FsZS1wcm92aWRlcj1pY3Un LCAnZm9vYmFyNCcKIAkJXSwKKwkJcXIvRVJST1I6ICBJQ1UgbG9jYWxlIG11c3QgYmUgc3BlY2lm aWVkLywKIAkJJ2NyZWF0ZSBkYXRhYmFzZSB3aXRoIElDVSBmYWlscyB3aXRob3V0IElDVSBsb2Nh bGUgc3BlY2lmaWVkJyk7CiAKIAkkbm9kZS0+aXNzdWVzX3NxbF9saWtlKApAQCAtNDYsMTIgKzQ3 LDEzIEBAIGlmICgkRU5We3dpdGhfaWN1fSBlcSAneWVzJykKIAkJcXIvc3RhdGVtZW50OiBDUkVB VEUgREFUQUJBU0UgZm9vYmFyNSAuKiBMT0NBTEVfUFJPVklERVIgaWN1IElDVV9MT0NBTEUgJ2Vu Jy8sCiAJCSdjcmVhdGUgZGF0YWJhc2Ugd2l0aCBJQ1UgbG9jYWxlIHNwZWNpZmllZCcpOwogCi0J JG5vZGUtPmNvbW1hbmRfZmFpbHMoCisJJG5vZGUtPmNvbW1hbmRfZmFpbHNfbGlrZSgKIAkJWwog CQkJJ2NyZWF0ZWRiJywgJy1UJywgJ3RlbXBsYXRlMCcsICctRScsICdVVEY4JywKIAkJCSctLWxv Y2FsZS1wcm92aWRlcj1pY3UnLAogCQkJJy0taWN1LWxvY2FsZT1AY29sTnVtZXJpYz1sb3dlcics ICdmb29iYXJYJwogCQldLAorCQlxci9FUlJPUjogIGNvdWxkIG5vdCBvcGVuIGNvbGxhdG9yIGZv ciBsb2NhbGUvLAogCQknZmFpbHMgZm9yIGludmFsaWQgSUNVIGxvY2FsZScpOwogCiAJJG5vZGUt PmNvbW1hbmRfZmFpbHNfbGlrZSgKQEAgLTc4LDE4ICs4MCwzOSBAQCBpZiAoJEVOVnt3aXRoX2lj dX0gZXEgJ3llcycpCiB9CiBlbHNlCiB7Ci0JJG5vZGUtPmNvbW1hbmRfZmFpbHMoCisJJG5vZGUt PmNvbW1hbmRfZmFpbHNfbGlrZSgKIAkJWyAnY3JlYXRlZGInLCAnLVQnLCAndGVtcGxhdGUwJywg Jy0tbG9jYWxlLXByb3ZpZGVyPWljdScsICdmb29iYXI0JyBdLAorCQlxci9FUlJPUjogIElDVSBp cyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQvLAogCQknY3JlYXRlIGRhdGFiYXNlIHdpdGgg SUNVIGZhaWxzIHNpbmNlIG5vIElDVSBzdXBwb3J0Jyk7CisKKwkkbm9kZS0+Y29tbWFuZF9mYWls c19saWtlKAorCQlbCisJCQknY3JlYXRlZGInLCAgICAgICAgICAgICAnLVQnLAorCQkJJ3RlbXBs YXRlMCcsICAgICAgICAgICAgJy0tbG9jYWxlLXByb3ZpZGVyPWljdScsCisJCQknLS1lbmNvZGlu Zz1TUUxfQVNDSUknLCAnZm9vYmFyNCcKKwkJXSwKKwkJcXIvRVJST1I6ICBJQ1UgaXMgbm90IHN1 cHBvcnRlZCBpbiB0aGlzIGJ1aWxkLywKKwkJJ2NyZWF0ZSBkYXRhYmFzZSB3aXRoIElDVSBhbmQg bm90IHN1cHBvcnRlZCBJQ1UgZW5jb2RpbmcgZmFpbHMgc2luY2Ugbm8gSUNVIHN1cHBvcnQnCisJ KTsKIH0KIAogJG5vZGUtPmNvbW1hbmRfZmFpbHMoWyAnY3JlYXRlZGInLCAnZm9vYmFyMScgXSwK IAknZmFpbHMgaWYgZGF0YWJhc2UgYWxyZWFkeSBleGlzdHMnKTsKIAotJG5vZGUtPmNvbW1hbmRf ZmFpbHMoCiskbm9kZS0+Y29tbWFuZF9mYWlsc19saWtlKAogCVsgJ2NyZWF0ZWRiJywgJy1UJywg J3RlbXBsYXRlMCcsICctLWxvY2FsZS1wcm92aWRlcj14eXonLCAnZm9vYmFyWCcgXSwKKwlxci9F UlJPUjogIHVucmVjb2duaXplZCBsb2NhbGUgcHJvdmlkZXI6IHh5ei8sCiAJJ2ZhaWxzIGZvciBp bnZhbGlkIGxvY2FsZSBwcm92aWRlcicpOwogCiskbm9kZS0+Y29tbWFuZF9mYWlsc19saWtlKAor CVsKKwkJJ2NyZWF0ZWRiJywgICAgICAgICctVCcsCisJCSd0ZW1wbGF0ZTAnLCAgICAgICAnLS1s b2NhbGUtcHJvdmlkZXI9bGliYycsCisJCSctLWljdS1sb2NhbGU9ZW4nLCAnZm9vYmFyWCcKKwld LAorCXFyL0VSUk9SOiAgSUNVIGxvY2FsZSBjYW5ub3QgYmUgc3BlY2lmaWVkIHVubGVzcyBsb2Nh bGUgcHJvdmlkZXIgaXMgSUNVLywKKwknZmFpbHMgZm9yIGludmFsaWQgb3B0aW9uIGNvbWJpbmF0 aW9uJyk7CisKICMgQ2hlY2sgdXNlIG9mIHRlbXBsYXRlcyB3aXRoIHNoYXJlZCBkZXBlbmRlbmNp ZXMgY29waWVkIGZyb20gdGhlIHRlbXBsYXRlLgogbXkgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIp ID0gJG5vZGUtPnBzcWwoCiAJJ2Zvb2JhcjInLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcGdfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAppbmRleCBhODc1 OTQyMTIzNjRhYWFjMzMzN2VmMDcxODhkZDI5MWQ2MjI5OWQ3Li42ZThhZjM5OTc2OWZkYjI1N2E2 NTQ0NmIzYzQ3NmJiZmVjYTQ5ZjMzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19s b2NhbGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtMTA0LDggKzEw NCw4IEBAIGV4dGVybiBjaGFyICpnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKGNoYXIgY29s bHByb3ZpZGVyLCBjb25zdCBjaGFyICpjb2xsY29sCiAjaWZkZWYgVVNFX0lDVQogZXh0ZXJuIGlu dDMyX3QgaWN1X3RvX3VjaGFyKFVDaGFyICoqYnVmZl91Y2hhciwgY29uc3QgY2hhciAqYnVmZiwg c2l6ZV90IG5ieXRlcyk7CiBleHRlcm4gaW50MzJfdCBpY3VfZnJvbV91Y2hhcihjaGFyICoqcmVz dWx0LCBjb25zdCBVQ2hhciAqYnVmZl91Y2hhciwgaW50MzJfdCBsZW5fdWNoYXIpOwotI2VuZGlm CiBleHRlcm4gdm9pZCBjaGVja19pY3VfbG9jYWxlKGNvbnN0IGNoYXIgKmljdV9sb2NhbGUpOwor I2VuZGlmCiAKIC8qIFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0IGZyb20vdG8gbGliYydzIHdjaGFy X3QsICpub3QqIHBnX3djaGFyX3QgKi8KIGV4dGVybiBzaXplX3Qgd2NoYXIyY2hhcihjaGFyICp0 bywgY29uc3Qgd2NoYXJfdCAqZnJvbSwgc2l6ZV90IHRvbGVuLAo= --=_ec417554a484403da200d54442db9469--