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 1pJOxx-0007vV-8O for pgsql-hackers@arkaria.postgresql.org; Sun, 22 Jan 2023 01:16:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pJOxv-0008Vm-Lj for pgsql-hackers@arkaria.postgresql.org; Sun, 22 Jan 2023 01:16:11 +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 1pJOxu-0008Vd-Vx for pgsql-hackers@lists.postgresql.org; Sun, 22 Jan 2023 01:16:11 +0000 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pJOxp-0000gk-FG for pgsql-hackers@postgresql.org; Sun, 22 Jan 2023 01:16:09 +0000 Received: by mail-pg1-x533.google.com with SMTP id e10so6687316pgc.9 for ; Sat, 21 Jan 2023 17:16:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20210112.gappssmtp.com; s=20210112; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=47LlLeMbCa2gUVsZmG6bAKzb+XVd3IgmUZTeRd/NQP0=; b=MlqpgBOqXWk0zp/1gtogAuHNFlczVKxXO/1CHQ57AIrnX35sO/yn1Cfs+/cggbPaE3 y3NE+8KXEiQYwkDUNIdogAlehTDUZg54bD0sDw4hWeAnlgKl7LJu5mycN8IgO2WGauBk vZ7SfPnEfV+faUEPjny8BEoIzDp/wL4mrHZ0ElDSNlnN72AJkL8M9xkAFKVyuQuyr/JL +n19uHe81M3cwKcpu6clcCY1eQMD9We36lthoi8Yxgq3Ynue73ygIbgQXr945EJLoVR5 b48ocoA+CcbzkFeNrW957nHeQf1JHJddbsb0Zv+44x+SqrLgwVBS/fmkzDypQ1wQTVXv kG5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=47LlLeMbCa2gUVsZmG6bAKzb+XVd3IgmUZTeRd/NQP0=; b=2Y97J7X2JyJJ2+yd8OBWimMeSnWmglCT4WnzZYhtlaU73td6Ijs9swKLFbgB8/fagC LpF7wUKdscUVMyJyFWihGb1DgTAMSR+CmjBTcrKj56C2kVUj1+8Eqz0O7DPdRPweKZxF /7lHo7anovTTAnv2ZgF3I4+QPwnXo2DR3bEbIV85B8QVgJsixtVQwr3R9K5ZGwuCfJIg /dEaaadw8ovoak4KHhQV+b3spLDKFrWVYp+1/7VzT493zPvbhx2lplaEBWchtJ3zVEp4 +DNQSWDys67bKF8aiGwRCq1ID9SKpaSFMeEmFtlqZyhEE4u2lHc3d7ypHMoP4n4lp2a+ +V3g== X-Gm-Message-State: AFqh2krMfO2JPwlTkvRc1tFH/XxAL3khnNa2543pfOhttszDRbfA8O5/ Tp8oz7snASUvYp1NqKtcG5qne+A92IahaHxA X-Google-Smtp-Source: AMrXdXvKlHyLEuduAJKiAz0H8nXh2q5B3yNVe0qta//l6jelstMuACGMw0e3RUURrGUKOCku0dIjbg== X-Received: by 2002:aa7:9116:0:b0:577:272f:fdb with SMTP id 22-20020aa79116000000b00577272f0fdbmr18877282pfh.29.1674350163453; Sat, 21 Jan 2023 17:16:03 -0800 (PST) Received: from jeff-laptop.lan (c-73-231-146-4.hsd1.ca.comcast.net. [73.231.146.4]) by smtp.gmail.com with ESMTPSA id q16-20020aa78430000000b0058baf8694e1sm16885338pfn.71.2023.01.21.17.16.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Jan 2023 17:16:02 -0800 (PST) Message-ID: Subject: GUCs to control abbreviated sort keys From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Sat, 21 Jan 2023 17:16:01 -0800 Content-Type: multipart/mixed; boundary="=-sX9zwNOXyAimvHLw5WBQ" 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 --=-sX9zwNOXyAimvHLw5WBQ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The attached patch adds GUCs to control the use of the abbreviated keys optimization when sorting. Also, I changed the TRUST_STRXFRM from a #define into a GUC. One reason for these GUCs is to make it easier to diagnose any issues that come up with my collation work. Another is that I observed cases with ICU where the abbreviated keys optimization resulted in a ~8-10% regression, and it would be good to have some basic control over it. I made them developer options because they are more about diagnosing and I don't expect users to change these in production. If the issues with abbreviated keys get more complex (where maybe we need to consider costing each provider?), we can make it more user-facing. This is fairly simple, so I plan to commit soon. --=20 Jeff Davis PostgreSQL Contributor Team - AWS --=-sX9zwNOXyAimvHLw5WBQ Content-Disposition: attachment; filename*0=v1-0001-Introduce-GUCs-to-control-abbreviated-keys-sort-o.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0001-Introduce-GUCs-to-control-abbreviated-keys-sort-o.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3Njk5ZjI4NjM0ZjA0NzcyYzcxOGFjNDY1YmJiZmY0OGI4NDlmMmJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBT YXQsIDIxIEphbiAyMDIzIDEyOjQ0OjA3IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MV0gSW50cm9k dWNlIEdVQ3MgdG8gY29udHJvbCBhYmJyZXZpYXRlZCBrZXlzIHNvcnQKIG9wdGltaXphdGlvbi4K ClRoZSBzZXR0aW5nIHNvcnRfYWJicmV2aWF0ZWRfa2V5cyB0dXJucyB0aGUgb3B0aW1pemF0aW9u IG9uIG9yIG9mZgpvdmVyYWxsLiBUaGUgb3B0aW1pemF0aW9uIHJlbGllcyBvbiBjb2xsYXRpb24g cHJvdmlkZXJzLCB3aGljaCBhcmUKY29tcGxleCBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgcGVyZm9y bWFuY2Ugb2YgdGhlIG9wdGltaXphdGlvbiBtYXkgcmVseQpvbiBtYW55IGZhY3RvcnMuIEludHJv ZHVjaW5nIGEgR1VDIGFsbG93cyBlYXNpZXIgZGlhZ25vc2lzIHdoZW4gdGhpcwpvcHRpbWl6YXRp b24gcmVzdWx0cyBpbiB3b3JzZSBwZXJmb3JhbW5jZS4KClRoZSBzZXR0aW5nIHRydXN0X3N0cnhm cm0gcmVwbGFjZXMgdGhlIGRlZmluZSBUUlVTVF9TVFJYRlJNLCBhbGxvd2luZwp1c2VycyB0byBl eHBlcmltZW50IHdpdGggdGhlIGFiYnJldmlhdGVkIGtleXMgb3B0aW1pemF0aW9uIHdoZW4gdXNp bmcKdGhlIGxpYmMgcHJvdmlkZXIuIFByZXZpb3VzbHksIHRoZSBvcHRpbWl6YXRpb24gb25seSBh cHBsaWVkIHRvCmNvbGxhdGlvbnMgdXNpbmcgdGhlIElDVSBwcm92aWRlciB1bmxlc3Mgc3BlY2lh bGx5IGNvbXBpbGVkLiBCeQpkZWZhdWx0LCBhbGxvd2VkIG9ubHkgZm9yIHN1cGVydXNlcnMgKGJl Y2F1c2UgYW4gaW5jb3JyZWN0IHNldHRpbmcKY291bGQgbGVhZCB0byB3cm9uZyByZXN1bHRzKSwg YnV0IGNhbiBiZSBncmFudGVkIHRvIG90aGVycy4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvdmFybGVuYS5jICAgICAgICAgICAgfCAxMCArKystLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICB8IDI0ICsrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyB8IDE3ICsrKysrKy0tLQog NCBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bAppbmRleCBkYzliNzhiMGI3Li40N2VlM2VjNmU3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0xMTI0OCw2ICsx MTI0OCw0NiBAQCBkeW5hbWljX2xpYnJhcnlfcGF0aCA9ICdDOlx0b29sc1xwb3N0Z3Jlc3FsO0g6 XG15X3Byb2plY3RcbGliOyRsaWJkaXInCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc29ydC1hYmJyZXZpYXRlZC1r ZXlzIiB4cmVmbGFiZWw9InNvcnRfYWJicmV2aWF0ZWRfa2V5cyI+CisgICAgICA8dGVybT48dmFy bmFtZT5zb3J0X2FiYnJldmlhdGVkX2tleXM8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c29ydF9hYmJy ZXZpYXRlZF9rZXlzPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4K KyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgIDxwYXJhPgorICAgICAgICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSB1c2Ugb2YgYWJicmV2 aWF0ZWQgc29ydCBrZXlzLCBhbiBvcHRpbWl6YXRpb24sCisgICAgICAgIGlmIGFwcGxpY2FibGUu IFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LiBEaXNhYmxpbmcgbWF5Cisg ICAgICAgIGJlIHVzZWZ1bCB0byBkaWFnbm9zZSBwcm9ibGVtcyBvciBtZWFzdXJlIHBlcmZvcm1h bmNlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy10cnVzdC1zdHJ4ZnJtIiB4cmVmbGFi ZWw9InRydXN0X3N0cnhmcm0iPgorICAgICAgPHRlcm0+PHZhcm5hbWU+dHJ1c3Rfc3RyeGZybTwv dmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAg ICA8cHJpbWFyeT48dmFybmFtZT50cnVzdF9zdHJ4ZnJtPC92YXJuYW1lPiBjb25maWd1cmF0aW9u IHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgor ICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBBYmJyZXZpYXRlZCBrZXlz LCBhIHNvcnQgb3B0aW1pemF0aW9uLCBkZXBlbmRzIG9uIGNvcnJlY3QgYmVoYXZpb3Igb2YKKyAg ICAgICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb24gPGZ1bmN0aW9uPnN0cnhmcm0oKTwv ZnVuY3Rpb24+IHdoZW4KKyAgICAgICAgdXNpbmcgYSBjb2xsYXRpb24gd2l0aCB0aGUgPGxpdGVy YWw+bGliYzwvbGl0ZXJhbD4gcHJvdmlkZXIuIE9uIHNvbWUKKyAgICAgICAgcGxhdGZvcm1zIDxm dW5jdGlvbj5zdHJ4ZnJtKCk8L2Z1bmN0aW9uPiBkb2VzIG5vdCByZXR1cm4gcmVzdWx0cworICAg ICAgICBjb25zaXN0ZW50IHdpdGggPGZ1bmN0aW9uPnN0cmNvbGwoKTwvZnVuY3Rpb24+LCB3aGlj aCBtZWFucyB0aGUKKyAgICAgICAgb3B0aW1pemF0aW9uIGNvdWxkIHJldHVybiB3cm9uZyByZXN1 bHRzLiBTZXQgdG8KKyAgICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gaWYgY2VydGFpbiB0 aGF0IDxmdW5jdGlvbj5zdHJ4ZnJtKCk8L2Z1bmN0aW9uPgorICAgICAgICBjYW4gYmUgdHJ1c3Rl ZC4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPi4gVGhpcyBzZXR0aW5nIGhhcyBubworICAg ICAgICBlZmZlY3QgaWYgPHhyZWYgbGlua2VuZD0iZ3VjLXNvcnQtYWJicmV2aWF0ZWQta2V5cyIv PiBpcyBzZXQgdG8KKyAgICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICAgIDwv cGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2 YXJsaXN0ZW50cnkgaWQ9Imd1Yy10cmFjZS1sb2NrcyIgeHJlZmxhYmVsPSJ0cmFjZV9sb2NrcyI+ CiAgICAgICA8dGVybT48dmFybmFtZT50cmFjZV9sb2NrczwvdmFybmFtZT4gKDx0eXBlPmJvb2xl YW48L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC92YXJsZW5hLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCmluZGV4 IDMzZmZkYjAxM2EuLjhiNWI0NjcyMDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwpAQCAtNDUs NiArNDUsOSBAQAogLyogR1VDIHZhcmlhYmxlICovCiBpbnQJCQlieXRlYV9vdXRwdXQgPSBCWVRF QV9PVVRQVVRfSEVYOwogCisvKiBHVUMgdG8gZW5hYmxlIHVzZSBvZiBzdHJ4ZnJtKCkgZm9yIGFi YnJldmlhdGVkIGtleXMgKi8KK2Jvb2wJCXRydXN0X3N0cnhmcm0gPSBmYWxzZTsKKwogdHlwZWRl ZiBzdHJ1Y3QgdmFybGVuYSB1bmtub3duOwogdHlwZWRlZiBzdHJ1Y3QgdmFybGVuYSBWYXJTdHJp bmc7CiAKQEAgLTIwOTIsNyArMjA5NSw3IEBAIHZhcnN0cl9zb3J0c3VwcG9ydChTb3J0U3VwcG9y dCBzc3VwLCBPaWQgdHlwaWQsIE9pZCBjb2xsaWQpCiAJICogb3RoZXIgbGliYyBvdGhlciB0aGFu IEN5Z3dpbiBoYXMgc28gZmFyIGJlZW4gc2hvd24gdG8gaGF2ZSBhIHByb2JsZW0sCiAJICogd2Ug dGFrZSB0aGUgY29uc2VydmF0aXZlIGNvdXJzZSBvZiBhY3Rpb24gZm9yIHJpZ2h0IG5vdyBhbmQg ZGlzYWJsZQogCSAqIHRoaXMgY2F0ZWdvcmljYWxseS4gIChVc2VycyB3aG8gYXJlIGNlcnRhaW4g dGhpcyBpc24ndCBhIHByb2JsZW0gb24KLQkgKiB0aGVpciBzeXN0ZW0gY2FuIGRlZmluZSBUUlVT VF9TVFJYRlJNLikKKwkgKiB0aGVpciBzeXN0ZW0gY2FuIHNldCB0aGUgdHJ1c3Rfc3RyeGZybSBH VUMgdG8gdHJ1ZS4pCiAJICoKIAkgKiBFdmVuIGFwYXJ0IGZyb20gdGhlIHJpc2sgb2YgYnJva2Vu IGxvY2FsZXMsIGl0J3MgcG9zc2libGUgdGhhdCB0aGVyZQogCSAqIGFyZSBwbGF0Zm9ybXMgd2hl cmUgdGhlIHVzZSBvZiBhYmJyZXZpYXRlZCBrZXlzIHNob3VsZCBiZSBkaXNhYmxlZCBhdApAQCAt MjEwNSwxMCArMjEwOCw5IEBAIHZhcnN0cl9zb3J0c3VwcG9ydChTb3J0U3VwcG9ydCBzc3VwLCBP aWQgdHlwaWQsIE9pZCBjb2xsaWQpCiAJICogY2F0ZWdvcmljYWxseSwgd2UgbWF5IHN0aWxsIHdh bnQgb3IgbmVlZCB0byBkaXNhYmxlIGl0IGZvciBwYXJ0aWN1bGFyCiAJICogcGxhdGZvcm1zLgog CSAqLwotI2lmbmRlZiBUUlVTVF9TVFJYRlJNCi0JaWYgKCFjb2xsYXRlX2MgJiYgIShsb2NhbGUg JiYgbG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKSkKKwlpZiAoIXRydXN0X3N0 cnhmcm0gJiYgIWNvbGxhdGVfYyAmJgorCQkhKGxvY2FsZSAmJiBsb2NhbGUtPnByb3ZpZGVyID09 IENPTExQUk9WSURFUl9JQ1UpKQogCQlhYmJyZXZpYXRlID0gZmFsc2U7Ci0jZW5kaWYKIAogCS8q CiAJICogSWYgd2UncmUgdXNpbmcgYWJicmV2aWF0ZWQga2V5cywgb3IgaWYgd2UncmUgdXNpbmcg YSBsb2NhbGUtYXdhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNGFjODA4 ZWQyMi4uZmQ0YTAyZmJmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEw Miw2ICsxMDIsOCBAQCBleHRlcm4gYm9vbCB0cmFjZV9zeW5jc2NhbjsKICNpZmRlZiBERUJVR19C T1VOREVEX1NPUlQKIGV4dGVybiBib29sIG9wdGltaXplX2JvdW5kZWRfc29ydDsKICNlbmRpZgor ZXh0ZXJuIGJvb2wgc29ydF9hYmJyZXZpYXRlZF9rZXlzOworZXh0ZXJuIGJvb2wgdHJ1c3Rfc3Ry eGZybTsKIAogLyoKICAqIE9wdGlvbnMgZm9yIGVudW0gdmFsdWVzIGRlZmluZWQgaW4gdGhpcyBt b2R1bGUuCkBAIC0xNjczLDYgKzE2NzUsMjggQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3Vy ZU5hbWVzQm9vbFtdID0KIAl9LAogI2VuZGlmCiAKKwl7CisJCXsic29ydF9hYmJyZXZpYXRlZF9r ZXlzIiwgUEdDX1VTRVJTRVQsIERFVkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJF bmFibGVzIHRoZSB1c2Ugb2YgYWJicmV2aWF0ZWQgc29ydCBrZXlzLiIpLAorCQkJTlVMTCwKKwkJ CUdVQ19OT1RfSU5fU0FNUExFIHwgR1VDX0VYUExBSU4KKwkJfSwKKwkJJnNvcnRfYWJicmV2aWF0 ZWRfa2V5cywKKwkJdHJ1ZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKKwl7CisJCXsidHJ1 c3Rfc3RyeGZybSIsIFBHQ19TVVNFVCwgREVWRUxPUEVSX09QVElPTlMsCisJCSBnZXR0ZXh0X25v b3AoIkFsbG93IHVzZSBvZiBzdHJ4ZnJtKCkgZm9yIGFiYnJldmlhdGVkIGtleXMgb3B0aW1pemF0 aW9uIGZvciBsaWJjIHByb3ZpZGVyLiIpLAorCQkgTlVMTCwKKwkJIEdVQ19OT1RfSU5fU0FNUExF CisJCX0sCisJCSZ0cnVzdF9zdHJ4ZnJtLAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAor CX0sCisKICNpZmRlZiBXQUxfREVCVUcKIAl7CiAJCXsid2FsX2RlYnVnIiwgUEdDX1NVU0VULCBE RVZFTE9QRVJfT1BUSU9OUywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFu dHMuYwppbmRleCBlYjZjZmNmZDAwLi5iYTE2Nzc5Zjk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv c29ydC90dXBsZXNvcnR2YXJpYW50cy5jCkBAIC0zNyw2ICszNyw4IEBACiAjZGVmaW5lIERBVFVN X1NPUlQJCTIKICNkZWZpbmUgQ0xVU1RFUl9TT1JUCTMKIAorYm9vbCBzb3J0X2FiYnJldmlhdGVk X2tleXMgPSB0cnVlOworCiBzdGF0aWMgdm9pZCByZW1vdmVhYmJyZXZfaGVhcChUdXBsZXNvcnRz dGF0ZSAqc3RhdGUsIFNvcnRUdXBsZSAqc3R1cHMsCiAJCQkJCQkJICBpbnQgY291bnQpOwogc3Rh dGljIHZvaWQgcmVtb3ZlYWJicmV2X2NsdXN0ZXIoVHVwbGVzb3J0c3RhdGUgKnN0YXRlLCBTb3J0 VHVwbGUgKnN0dXBzLApAQCAtMTg1LDcgKzE4Nyw4IEBAIHR1cGxlc29ydF9iZWdpbl9oZWFwKFR1 cGxlRGVzYyB0dXBEZXNjLAogCQlzb3J0S2V5LT5zc3VwX251bGxzX2ZpcnN0ID0gbnVsbHNGaXJz dEZsYWdzW2ldOwogCQlzb3J0S2V5LT5zc3VwX2F0dG5vID0gYXR0TnVtc1tpXTsKIAkJLyogQ29u dmV5IGlmIGFiYnJldmlhdGlvbiBvcHRpbWl6YXRpb24gaXMgYXBwbGljYWJsZSBpbiBwcmluY2lw bGUgKi8KLQkJc29ydEtleS0+YWJicmV2aWF0ZSA9IChpID09IDAgJiYgYmFzZS0+aGF2ZURhdHVt MSk7CisJCWlmIChzb3J0X2FiYnJldmlhdGVkX2tleXMpCisJCQlzb3J0S2V5LT5hYmJyZXZpYXRl ID0gKGkgPT0gMCAmJiBiYXNlLT5oYXZlRGF0dW0xKTsKIAogCQlQcmVwYXJlU29ydFN1cHBvcnRG cm9tT3JkZXJpbmdPcChzb3J0T3BlcmF0b3JzW2ldLCBzb3J0S2V5KTsKIAl9CkBAIC0yOTUsNyAr Mjk4LDggQEAgdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVEZXNjIHR1cERlc2MsCiAJCQko c2NhbktleS0+c2tfZmxhZ3MgJiBTS19CVF9OVUxMU19GSVJTVCkgIT0gMDsKIAkJc29ydEtleS0+ c3N1cF9hdHRubyA9IHNjYW5LZXktPnNrX2F0dG5vOwogCQkvKiBDb252ZXkgaWYgYWJicmV2aWF0 aW9uIG9wdGltaXphdGlvbiBpcyBhcHBsaWNhYmxlIGluIHByaW5jaXBsZSAqLwotCQlzb3J0S2V5 LT5hYmJyZXZpYXRlID0gKGkgPT0gMCAmJiBiYXNlLT5oYXZlRGF0dW0xKTsKKwkJaWYgKHNvcnRf YWJicmV2aWF0ZWRfa2V5cykKKwkJCXNvcnRLZXktPmFiYnJldmlhdGUgPSAoaSA9PSAwICYmIGJh c2UtPmhhdmVEYXR1bTEpOwogCiAJCUFzc2VydChzb3J0S2V5LT5zc3VwX2F0dG5vICE9IDApOwog CkBAIC0zNzksNyArMzgzLDggQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9u IGhlYXBSZWwsCiAJCQkoc2NhbktleS0+c2tfZmxhZ3MgJiBTS19CVF9OVUxMU19GSVJTVCkgIT0g MDsKIAkJc29ydEtleS0+c3N1cF9hdHRubyA9IHNjYW5LZXktPnNrX2F0dG5vOwogCQkvKiBDb252 ZXkgaWYgYWJicmV2aWF0aW9uIG9wdGltaXphdGlvbiBpcyBhcHBsaWNhYmxlIGluIHByaW5jaXBs ZSAqLwotCQlzb3J0S2V5LT5hYmJyZXZpYXRlID0gKGkgPT0gMCAmJiBiYXNlLT5oYXZlRGF0dW0x KTsKKwkJaWYgKHNvcnRfYWJicmV2aWF0ZWRfa2V5cykKKwkJCXNvcnRLZXktPmFiYnJldmlhdGUg PSAoaSA9PSAwICYmIGJhc2UtPmhhdmVEYXR1bTEpOwogCiAJCUFzc2VydChzb3J0S2V5LT5zc3Vw X2F0dG5vICE9IDApOwogCkBAIC00OTksNyArNTA0LDggQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4 X2dpc3QoUmVsYXRpb24gaGVhcFJlbCwKIAkJc29ydEtleS0+c3N1cF9udWxsc19maXJzdCA9IGZh bHNlOwogCQlzb3J0S2V5LT5zc3VwX2F0dG5vID0gaSArIDE7CiAJCS8qIENvbnZleSBpZiBhYmJy ZXZpYXRpb24gb3B0aW1pemF0aW9uIGlzIGFwcGxpY2FibGUgaW4gcHJpbmNpcGxlICovCi0JCXNv cnRLZXktPmFiYnJldmlhdGUgPSAoaSA9PSAwICYmIGJhc2UtPmhhdmVEYXR1bTEpOworCQlpZiAo c29ydF9hYmJyZXZpYXRlZF9rZXlzKQorCQkJc29ydEtleS0+YWJicmV2aWF0ZSA9IChpID09IDAg JiYgYmFzZS0+aGF2ZURhdHVtMSk7CiAKIAkJQXNzZXJ0KHNvcnRLZXktPnNzdXBfYXR0bm8gIT0g MCk7CiAKQEAgLTU3Myw3ICs1NzksOCBAQCB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oT2lkIGRhdHVt VHlwZSwgT2lkIHNvcnRPcGVyYXRvciwgT2lkIHNvcnRDb2xsYXRpb24sCiAJICogY2FuJ3QsIGJl Y2F1c2UgYSBkYXR1bSBzb3J0IG9ubHkgc3RvcmVzIGEgc2luZ2xlIGNvcHkgb2YgdGhlIGRhdHVt OyB0aGUKIAkgKiAidHVwbGUiIGZpZWxkIG9mIGVhY2ggU29ydFR1cGxlIGlzIE5VTEwuCiAJICov Ci0JYmFzZS0+c29ydEtleXMtPmFiYnJldmlhdGUgPSAhdHlwYnl2YWw7CisJaWYgKHNvcnRfYWJi cmV2aWF0ZWRfa2V5cykKKwkJYmFzZS0+c29ydEtleXMtPmFiYnJldmlhdGUgPSAhdHlwYnl2YWw7 CiAKIAlQcmVwYXJlU29ydFN1cHBvcnRGcm9tT3JkZXJpbmdPcChzb3J0T3BlcmF0b3IsIGJhc2Ut PnNvcnRLZXlzKTsKIAotLSAKMi4zNC4xCgo= --=-sX9zwNOXyAimvHLw5WBQ--