Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnHpR-004f7l-2s for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Feb 2026 14:56:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vnHpQ-005F8C-3B for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Feb 2026 14:56:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vnHpQ-005F7n-1I for pgsql-hackers@lists.postgresql.org; Tue, 03 Feb 2026 14:56:32 +0000 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vnHpM-00000000N9m-1dbA for pgsql-hackers@postgresql.org; Tue, 03 Feb 2026 14:56:31 +0000 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7d193b01c10so2305793a34.3 for ; Tue, 03 Feb 2026 06:56:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770130587; cv=none; d=google.com; s=arc-20240605; b=E0LixqKT4oZNK+PfgK8ssJnNIdmB9g61VF4VLT7/Qu4sX/heCh1DkiTWUa1fpQtxP/ TuJMC7mH4kEHDNPs002OqlxUOlNuInvevQs32aw43BYkJFX9+Vax+4DK5IdnQAyDlri4 bDa3W3iOkERnceLa1pP4sZqvg6GH3Ect58KwY4ZQNfDZzR5MQJsSBBqCwJOlLYlSnyf3 9CYerw2mZ5K/7uMpuYdJ9BTBk03aDSrUTnGeKCa9i20YGXA5qx5I9BmaggarvY4kPYgm cGXkM3y/j/dyCMVRQnzsm85hL65CReZTEx4u5LksC5r4/i47ZlOrAz3IPMi0XFJZC380 t3fQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=CZX6pNhp0AIHI2rEKJi/3MnAy/0x3d6WfcOYqEsnouI=; fh=Tccc45CwlcCAjWMSlPu2uE3opNnkOZKIL99ph2vFnLI=; b=SnnI23hRS0+30ywzS0QYe8218OtTDZPz7O2kY0Sl5vIw/tQ9HzbDt9gJixf7gRNNuA Ilx/lwhqf24jIIbnc3hoi/+O//5+joPOvZsyXO8N42xC+yr/ez4/SVw6eWT52rcbQ4g7 lUvId8J90Kd6CwwRp+QqnkK5Bte5xlMIVjhdAo6AZobdKScLO/62mlVLOFmklVWBV/3G qUybfoDJgUk7zgBTZmm+7V50SsFTQKpv7eg7jCibai6/krEM7Z+fPZZhMHGf2Z1EFuDL CIxeoLdVtLFu51007svIYJhXr18NfefxEb651q9cJC1vYuFGML4EwFhkrvVAV9VN9cOW Zfgw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1770130587; x=1770735387; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CZX6pNhp0AIHI2rEKJi/3MnAy/0x3d6WfcOYqEsnouI=; b=KMnONLDPTMb2B8x8vZ58OLxvavZM0mXr6/O/TFv1BjCyISBL6Iawn22D50W8/sIFeJ exSdiuJW1MC6er8jn34Nq+MfGi743hgShLk7AcYXcBt6cezoxZiZW1BrJ9h3YiXyTyxX XIKFW9EY8QSDAGPzREKfRRzedyTf4Xtzhr8l6WEw8W0592xBaKsnbI735zC6Qq+Amp8G yD4PDWH+LAsfZhfVLQSzjbYK9FGs1Pp12LWDhdzzgH9MUljbhQR0xrc+aPRf2N6hHskc idnrXl7i6AQ0KTf9buts2MtUQEs50iY3e5rYzxsSBSz5KJ2JfEjsjgDNqLJ9louv+Wmo V7EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770130587; x=1770735387; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CZX6pNhp0AIHI2rEKJi/3MnAy/0x3d6WfcOYqEsnouI=; b=Nn5l8kCjZ+azoV8xvwgUQT2d7JvLgXcX2mJIDIwssmZy+8LL+5AlGbA5Otqhbs/DzG /ZWMA/8wl/iUmOQQo2QJmoCgdqB3exuUAUC0lU8+lHsqIHjW447xuuCjbNq8RJN3e6yX hzlfgGY8WN5BlsdiZ7Aweu7w6hxQ4iWhRhIF1F/vORGD0h52Gc08nQl8Sth2rrAleFDl GlGn+/f1LGhn7JbksRxpOtga2W/LWlIvh+/8+QvR51CenD1Dtt6eHOOo5m6KtAZYLFf3 /rZ5asVwFyWKqukd3yR3TWYGl6PM2PReBSw5x3m6v0Vg5lZqgxa9SgSivFGU1BPM2uYp rKHQ== X-Gm-Message-State: AOJu0YyNOxMFvr+j8KqkRYqrznCxckVzfkrrFvAlLelFmXv0tHyHUal6 dNv08LLjSz3pmurFAaDT7Z+lR7Pd9oztjKvDx4MM3MCvawWDp9yz+XJJGlMs1j0xLRuZynO777e aPKDJk11zxl51saxsbIm7huGLJs3WuzgHlVdqfSaJiKJOxWgVH/9aIEv/xQ== X-Gm-Gg: AZuq6aKzTZJZPx77374a9jnqvcfxCoNHuP0fPqVxLM5MBF8tFtWR8BFbfzq9oVG5wuk Q3bEY2zjDs+i3A+PdFP7NGMdVy11ju5jfDN0eUzyVOBFDon8TttV1AUOng8Ab881rOdjvTcc9tS 8W1ytl/MwW9zOOJfETTzCj+WxPiBy4LIVvHXna1K332pvcqLdZFBGcAZUXoElBOm0egFRw4tIFJ RDpta7lR1/KtoSHQTNzjgBKaRWiXHKRDzYauXwqMU8AffvhTkXa/HIhrXuxePw89c5PS7fdZhh9 88ooTNfaA1laE0HWVDgT2Bf+vcP7jH17ZVxZAXlQYICvu9HnmttuaRSXMg== X-Received: by 2002:a05:6830:2654:b0:7cf:d168:1f3d with SMTP id 46e09a7af769-7d1a5385390mr8416517a34.37.1770130587208; Tue, 03 Feb 2026 06:56:27 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aleksander Alekseev Date: Tue, 3 Feb 2026 17:56:16 +0300 X-Gm-Features: AZwV_QiotxswXiPaPco5nTK-V-hYAGkBg10UlkEB7yU3Qc1zvpFR7RsmDK2RcEE Message-ID: Subject: Re: [PATCH] Refactor *_abbrev_convert() functions To: PostgreSQL Development Cc: John Naylor Content-Type: multipart/mixed; boundary="000000000000dbef120649eca482" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dbef120649eca482 Content-Type: text/plain; charset="UTF-8" Hi John, Many thanks for your feedback! > There's more we can do here. Above the stanzas changed in the patch > there is this, at least for varlena/bytea: > > hash = DatumGetUInt32(hash_any((unsigned char *) authoritative_data, > Min(len, PG_CACHE_LINE_SIZE))); > > This makes no sense to me: hash_any() calls hash_bytes() and turns the > result into a Datum, and then we just get it right back out of the > Datum again. I see similar patterns in files other than bytea.c and varlena.c. Implemented as a separate patch. > if (len > PG_CACHE_LINE_SIZE) > hash ^= DatumGetUInt32(hash_uint32((uint32) len)); > > Similar here, but instead of hash_bytes_uint32(), we may as well use > mumurhash32(). Ditto. It's worth noting that timetz_hash() uses a similar pattern but I choose to keep it as is. Changing it will break backward compatibility. Also it breaks our tests. Using hash_bytes_uint32() / hash_bytes_uint32_extended() directly in timetz_hash() / timetz_hash_extended() is safe though. Proposed as a separate patch. > addHyperLogLog says "typically generated using > hash_any()", but that function takes a uint32, not a Datum, so that > comment should probably be changed. hash_bytes() is global, so we can > use it directly. Makes sense. Implemented as an independent patch. -- Best regards, Aleksander Alekseev --000000000000dbef120649eca482 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0004-Improve-the-comment-for-addHyperLogLog.patch" Content-Disposition: attachment; filename="v2-0004-Improve-the-comment-for-addHyperLogLog.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml6q17463 RnJvbSBmNjc1MzYyMmU4OWVmYzYzMjE1MGZmZGQxYWFkZGNiNThlNDI3MTA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMyBGZWIgMjAyNiAxNzoyNDoxOSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgNC81XSBJbXByb3ZlIHRoZSBjb21tZW50IGZvciBhZGRIeXBlckxvZ0xvZygpCgpQ cmV2aW91c2x5IHRoZSBjb21tZW50IHN1Z2dlc3RlZCB0byB1c2UgaGFzaF9hbnkoKSB3aGljaCBy ZXR1cm4gdmFsdWUgaXMgRGF0dW0uClNpbmNlIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgYWRkSHlw ZXJMb2dMb2coKSBpcyBub3QgYSBEYXR1bSBidXQgcmF0aGVyIHVpbnQzMiwKcmVjb21tZW5kaW5n IGhhc2hfYnl0ZXMoKSBpcyBtb3JlIGFwcHJvcHJpYXRlLgoKQXV0aG9yOiBBbGVrc2FuZGVyIEFs ZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2VyZGF0YS5jb20+ClN1Z2dlc3RlZC1ieTogSm9obiBOYXls b3IgPGpvaG5jbmF5bG9ybHNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVE9ETyBGSVhNRQpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSjdjNlRNUGhEUlFNbWtVSFB2OG9PSzk3QjFt UjhOUlM2MURnanBkYVpVUEF3YWVaUSU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQv bGliL2h5cGVybG9nbG9nLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWIvaHlwZXJsb2dsb2cu YyBiL3NyYy9iYWNrZW5kL2xpYi9oeXBlcmxvZ2xvZy5jCmluZGV4IGM3NGYxMTIxN2VmLi4yYjgy ZmYxMmIyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGliL2h5cGVybG9nbG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvbGliL2h5cGVybG9nbG9nLmMKQEAgLTE1OCw3ICsxNTgsNyBAQCBmcmVlSHlw ZXJMb2dMb2coaHlwZXJMb2dMb2dTdGF0ZSAqY1N0YXRlKQogICogQWRkcyBlbGVtZW50IHRvIHRo ZSBlc3RpbWF0b3IsIGZyb20gY2FsbGVyLXN1cHBsaWVkIGhhc2guCiAgKgogICogSXQgaXMgY3Jp dGljYWwgdGhhdCB0aGUgaGFzaCB2YWx1ZSBwYXNzZWQgYmUgYW4gYWN0dWFsIGhhc2ggdmFsdWUs IHR5cGljYWxseQotICogZ2VuZXJhdGVkIHVzaW5nIGhhc2hfYW55KCkuICBUaGUgYWxnb3JpdGht IHJlbGllcyBvbiBhIHNwZWNpZmljIGJpdC1wYXR0ZXJuCisgKiBnZW5lcmF0ZWQgdXNpbmcgaGFz aF9ieXRlcygpLiAgVGhlIGFsZ29yaXRobSByZWxpZXMgb24gYSBzcGVjaWZpYyBiaXQtcGF0dGVy bgogICogb2JzZXJ2YWJsZSBpbiBjb25qdW5jdGlvbiB3aXRoIHN0b2NoYXN0aWMgYXZlcmFnaW5n LiAgVGhlcmUgbXVzdCBiZSBhCiAgKiB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiBiaXRzIGluIGhh c2ggdmFsdWVzIGZvciBlYWNoIGRpc3RpbmN0IG9yaWdpbmFsIHZhbHVlCiAgKiBvYnNlcnZlZC4K LS0gCjIuNDMuMAoK --000000000000dbef120649eca482 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0005-Avoid-unnecessary-type-casting-in-timetz_hash-tim.patch" Content-Disposition: attachment; filename="v2-0005-Avoid-unnecessary-type-casting-in-timetz_hash-tim.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml6q17484 RnJvbSAxOGU4NTE1NmJiNjRkOTgwZjI4NjdkM2EzNmRhNmYzNGIyNmJjYzE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMyBGZWIgMjAyNiAxNzo0Nzo0NSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgNS81XSBBdm9pZCB1bm5lY2Vzc2FyeSB0eXBlIGNhc3RpbmcgaW4gdGltZXR6X2hh c2goKSAvCiB0aW1ldHpfaGFzaF9leHRlbmRlZCgpCgpTaW1wbGlmeSB0aGUgY29kZSBieSBjYWxs aW5nIGhhc2hfYnl0ZXNfdWludDMyKCkgLyBoYXNoX2J5dGVzX3VpbnQzMl9leHRlbmRlZCgpCmRp cmVjdGx5LiBUaGlzIHJlbW92ZXMgdW5uZWNlc3NhcnkgdWludCAtPiBEYXR1bSAtPiB1aW50IGNh c3RpbmcuCgpBdXRob3I6IEFsZWtzYW5kZXIgQWxla3NlZXYgPGFsZWtzYW5kZXJAdGlnZXJkYXRh LmNvbT4KU3VnZ2VzdGVkLWJ5OiBKb2huIE5heWxvciA8am9obmNuYXlsb3Jsc0BnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBUT0RPIEZJWE1FCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0FKN2M2VE1QaERSUU1ta1VIUHY4b09LOTdCMW1SOE5SUzYxRGdqcGRhWlVQQXdhZVpRJTQwbWFp bC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jIHwgNiArKystLS0K IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9kYXRlLmMKaW5kZXggNjIxYjkxNzVjMTIuLjdlYzA4YjNiYjQ4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRl LmMKQEAgLTI2MzcsNyArMjYzNyw3IEBAIHRpbWV0el9oYXNoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ ICovCiAJdGhhc2ggPSBEYXR1bUdldFVJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwxKGhhc2hpbnQ4 LAogCQkJCQkJCQkJCQkgICBJbnQ2NEdldERhdHVtRmFzdChrZXktPnRpbWUpKSk7Ci0JdGhhc2gg Xj0gRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIoa2V5LT56b25lKSk7CisJdGhhc2ggXj0gaGFz aF9ieXRlc191aW50MzIoa2V5LT56b25lKTsKIAlQR19SRVRVUk5fVUlOVDMyKHRoYXNoKTsKIH0K IApAQCAtMjY1Miw4ICsyNjUyLDggQEAgdGltZXR6X2hhc2hfZXh0ZW5kZWQoUEdfRlVOQ1RJT05f QVJHUykKIAl0aGFzaCA9IERhdHVtR2V0VUludDY0KERpcmVjdEZ1bmN0aW9uQ2FsbDIoaGFzaGlu dDhleHRlbmRlZCwKIAkJCQkJCQkJCQkJICAgSW50NjRHZXREYXR1bUZhc3Qoa2V5LT50aW1lKSwK IAkJCQkJCQkJCQkJICAgc2VlZCkpOwotCXRoYXNoIF49IERhdHVtR2V0VUludDY0KGhhc2hfdWlu dDMyX2V4dGVuZGVkKGtleS0+em9uZSwKLQkJCQkJCQkJCQkJCSBEYXR1bUdldEludDY0KHNlZWQp KSk7CisJdGhhc2ggXj0gaGFzaF9ieXRlc191aW50MzJfZXh0ZW5kZWQoa2V5LT56b25lLAorCQkJ CQkJCQkJCURhdHVtR2V0SW50NjQoc2VlZCkpOwogCVBHX1JFVFVSTl9VSU5UNjQodGhhc2gpOwog fQogCi0tIAoyLjQzLjAKCg== --000000000000dbef120649eca482 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0003-Use-murmurhash32-instead-of-hash_uint32-where-app.patch" Content-Disposition: attachment; filename="v2-0003-Use-murmurhash32-instead-of-hash_uint32-where-app.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml6q17442 RnJvbSA5NDRhMTkwOWE0NjU5NDUyZDgwZDE1MTZhNGExODA4MjQ5MjhlMTUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMyBGZWIgMjAyNiAxNzoxMzoxNyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMy81XSBVc2UgbXVybXVyaGFzaDMyKCkgaW5zdGVhZCBvZiBoYXNoX3VpbnQzMigp IHdoZXJlCiBhcHByb3ByaWF0ZQoKQXZvaWQgdW5uZWNlc3NhcnkgdWludDMyIC0+IERhdHVtIC0+ IHVpbnQzMiBjYXN0aW5nIGFuZCB1c2UgYSBiZXR0ZXIgaGFzaApmdW5jdGlvbiB3aGVuIHBvc3Np YmxlLgoKQXV0aG9yOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2VyZGF0YS5j b20+ClN1Z2dlc3RlZC1ieTogSm9obiBOYXlsb3IgPGpvaG5jbmF5bG9ybHNAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogVE9ETyBGSVhNRQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB SjdjNlRNUGhEUlFNbWtVSFB2OG9PSzk3QjFtUjhOUlM2MURnanBkYVpVUEF3YWVaUSU0MG1haWwu Z21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyAgICB8IDIgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jICAgfCAyICstCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvdmFybGVuYS5jIHwgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggOWVkNjViZDY1YWMuLjk2OTg3YjE0 NWNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTY1MSw3ICs2NTEsNyBAQCBnbG9iYWxDaGFubmVs VGFibGVIYXNoKGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IHNpemUsIHZvaWQgKmFyZykKIAljb25z dCBHbG9iYWxDaGFubmVsS2V5ICprID0gKGNvbnN0IEdsb2JhbENoYW5uZWxLZXkgKikga2V5Owog CWRzaGFzaF9oYXNoIGg7CiAKLQloID0gRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIoay0+ZGJv aWQpKTsKKwloID0gbXVybXVyaGFzaDMyKGstPmRib2lkKTsKIAloIF49IGhhc2hfYnl0ZXMoKGNv bnN0IHVuc2lnbmVkIGNoYXIgKikgay0+Y2hhbm5lbCwKIAkJCQkJc3RybmxlbihrLT5jaGFubmVs LCBOQU1FREFUQUxFTikpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0 ZWEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jCmluZGV4IDMxYzg0OWJkMmExLi4x ZTI1NWYwMDU3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKQEAgLTExMTAsNyArMTExMCw3IEBAIGJ5 dGVhX2FiYnJldl9jb252ZXJ0KERhdHVtIG9yaWdpbmFsLCBTb3J0U3VwcG9ydCBzc3VwKQogCQkJ CQkgIE1pbihsZW4sIFBHX0NBQ0hFX0xJTkVfU0laRSkpOwogCiAJaWYgKGxlbiA+IFBHX0NBQ0hF X0xJTkVfU0laRSkKLQkJaGFzaCBePSBEYXR1bUdldFVJbnQzMihoYXNoX3VpbnQzMigodWludDMy KSBsZW4pKTsKKwkJaGFzaCBePSBtdXJtdXJoYXNoMzIoKHVpbnQzMikgbGVuKTsKIAogCWFkZEh5 cGVyTG9nTG9nKCZic3MtPmZ1bGxfY2FyZCwgaGFzaCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5j CmluZGV4IDcxN2YyNmM1NmZhLi4yNGNiNDdhZmU0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3ZhcmxlbmEuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5j CkBAIC0yMTEwLDcgKzIxMTAsNyBAQCB2YXJzdHJfYWJicmV2X2NvbnZlcnQoRGF0dW0gb3JpZ2lu YWwsIFNvcnRTdXBwb3J0IHNzdXApCiAJCQkJCSAgTWluKGxlbiwgUEdfQ0FDSEVfTElORV9TSVpF KSk7CiAKIAlpZiAobGVuID4gUEdfQ0FDSEVfTElORV9TSVpFKQotCQloYXNoIF49IERhdHVtR2V0 VUludDMyKGhhc2hfdWludDMyKCh1aW50MzIpIGxlbikpOworCQloYXNoIF49IG11cm11cmhhc2gz MigodWludDMyKSBsZW4pOwogCiAJYWRkSHlwZXJMb2dMb2coJnNzcy0+ZnVsbF9jYXJkLCBoYXNo KTsKIAotLSAKMi40My4wCgo= --000000000000dbef120649eca482 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0002-Avoid-unnecessary-type-casting-when-using-hash_an.patch" Content-Disposition: attachment; filename="v2-0002-Avoid-unnecessary-type-casting-when-using-hash_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml6q17421 RnJvbSA5OTA4Mzc1M2Q4MDJiYzgxZjNkZWJlYjA1ZjcwNzM4OTZkOGUxYzhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMyBGZWIgMjAyNiAxNjo0NToxMCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMi81XSBBdm9pZCB1bm5lY2Vzc2FyeSB0eXBlIGNhc3Rpbmcgd2hlbiB1c2luZyBo YXNoX2FueSgpCgpoYXNoX2FueSgpIGlzIG1lcmVseSBhIHdyYXBwZXIgZm9yIGhhc2hfYnl0ZXMo KS4gQ2FsbCBpdCBkaXJlY3RseSB3aGVuIHBvc3NpYmxlCmluIG9yZGVyIHRvIGF2b2lkIHVubmVj ZXNzYXJ5IHR5cGUgY2FzdGluZy4KCkF1dGhvcjogQWxla3NhbmRlciBBbGVrc2VldiA8YWxla3Nh bmRlckB0aWdlcmRhdGEuY29tPgpTdWdnZXN0ZWQtYnk6IEpvaG4gTmF5bG9yIDxqb2huY25heWxv cmxzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFRPRE8gRklYTUUKRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQUo3YzZUTVBoRFJRTW1rVUhQdjhvT0s5N0IxbVI4TlJTNjFEZ2pwZGFa VVBBd2FlWlElNDBtYWlsLmdtYWlsLmNvbQotLS0KIGNvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYyAg ICAgICAgICAgICAgICAgICB8IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9i ZXJub3VsbGkuYyB8IDQgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL3N5c3Rl bS5jICAgIHwgNCArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICAg ICAgfCA4ICsrKystLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9iaXRtYXBzZXQuYyAgICAgICAgICAg ICAgfCA0ICsrLS0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jICAgICAgICB8 IDQgKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMgICAgICAgICAgICAgIHwgNCAr Ky0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2luLmMgICAgICAgICAgfCAyICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jICAgICAgICAgfCA0ICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgICAgICAgICAgICB8IDQgKystLQogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgICAgICAgIHwgOCArKysrLS0tLQogMTEgZmlsZXMg Y2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Y29udHJpYi9sdHJlZS9sdHJlZV9vcC5jIGIvY29udHJpYi9sdHJlZS9sdHJlZV9vcC5jCmluZGV4 IGMxZmM3N2ZjODA0Li5hOWExYmNlMDg2MSAxMDA2NDQKLS0tIGEvY29udHJpYi9sdHJlZS9sdHJl ZV9vcC5jCisrKyBiL2NvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYwpAQCAtMTQ0LDcgKzE0NCw3IEBA IGhhc2hfbHRyZWUoUEdfRlVOQ1RJT05fQVJHUykKIAogCXdoaWxlIChhbiA+IDApCiAJewotCQl1 aW50MzIJCWxldmVsSGFzaCA9IERhdHVtR2V0VUludDMyKGhhc2hfYW55KCh1bnNpZ25lZCBjaGFy ICopIGFsLT5uYW1lLCBhbC0+bGVuKSk7CisJCXVpbnQzMgkJbGV2ZWxIYXNoID0gaGFzaF9ieXRl cygodW5zaWduZWQgY2hhciAqKSBhbC0+bmFtZSwgYWwtPmxlbik7CiAKIAkJLyoKIAkJICogQ29t YmluZSBoYXNoIHZhbHVlcyBvZiBzdWNjZXNzaXZlIGVsZW1lbnRzIGJ5IG11bHRpcGx5aW5nIHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL2Jlcm5vdWxsaS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL2Jlcm5vdWxsaS5jCmluZGV4IDdkODU2 MDQ2NGM4Li5mNzY4ZDQwMTQzZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl c2FtcGxlL2Jlcm5vdWxsaS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9i ZXJub3VsbGkuYwpAQCAtMjE0LDggKzIxNCw4IEBAIGJlcm5vdWxsaV9uZXh0c2FtcGxldHVwbGUo U2FtcGxlU2NhblN0YXRlICpub2RlLAogCiAJCWhhc2hpbnB1dFsxXSA9IHR1cG9mZnNldDsKIAot CQloYXNoID0gRGF0dW1HZXRVSW50MzIoaGFzaF9hbnkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikg aGFzaGlucHV0LAotCQkJCQkJCQkJICAgKGludCkgc2l6ZW9mKGhhc2hpbnB1dCkpKTsKKwkJaGFz aCA9IGhhc2hfYnl0ZXMoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgaGFzaGlucHV0LAorCQkJCQkJ ICAoaW50KSBzaXplb2YoaGFzaGlucHV0KSk7CiAJCWlmIChoYXNoIDwgc2FtcGxlci0+Y3V0b2Zm KQogCQkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2Ft cGxlL3N5c3RlbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL3N5c3RlbS5jCmlu ZGV4IGEyYjliYThlZWE5Li5kZTEzZGQ4Y2FiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RhYmxlc2FtcGxlL3N5c3RlbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNh bXBsZS9zeXN0ZW0uYwpAQCAtMjAyLDggKzIwMiw4IEBAIHN5c3RlbV9uZXh0c2FtcGxlYmxvY2so U2FtcGxlU2NhblN0YXRlICpub2RlLCBCbG9ja051bWJlciBuYmxvY2tzKQogCiAJCWhhc2hpbnB1 dFswXSA9IG5leHRibG9jazsKIAotCQloYXNoID0gRGF0dW1HZXRVSW50MzIoaGFzaF9hbnkoKGNv bnN0IHVuc2lnbmVkIGNoYXIgKikgaGFzaGlucHV0LAotCQkJCQkJCQkJICAgKGludCkgc2l6ZW9m KGhhc2hpbnB1dCkpKTsKKwkJaGFzaCA9IGhhc2hfYnl0ZXMoKGNvbnN0IHVuc2lnbmVkIGNoYXIg KikgaGFzaGlucHV0LAorCQkJCQkJICAoaW50KSBzaXplb2YoaGFzaGlucHV0KSk7CiAJCWlmICho YXNoIDwgc2FtcGxlci0+Y3V0b2ZmKQogCQkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5k ZXggNjU3YzU5MTYxOGQuLjllZDY1YmQ2NWFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTY1Miw4 ICs2NTIsOCBAQCBnbG9iYWxDaGFubmVsVGFibGVIYXNoKGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90 IHNpemUsIHZvaWQgKmFyZykKIAlkc2hhc2hfaGFzaCBoOwogCiAJaCA9IERhdHVtR2V0VUludDMy KGhhc2hfdWludDMyKGstPmRib2lkKSk7Ci0JaCBePSBEYXR1bUdldFVJbnQzMihoYXNoX2FueSgo Y29uc3QgdW5zaWduZWQgY2hhciAqKSBrLT5jaGFubmVsLAotCQkJCQkJCQkgc3RybmxlbihrLT5j aGFubmVsLCBOQU1FREFUQUxFTikpKTsKKwloIF49IGhhc2hfYnl0ZXMoKGNvbnN0IHVuc2lnbmVk IGNoYXIgKikgay0+Y2hhbm5lbCwKKwkJCQkJc3RybmxlbihrLT5jaGFubmVsLCBOQU1FREFUQUxF TikpOwogCiAJcmV0dXJuIGg7CiB9CkBAIC0zMjQ0LDggKzMyNDQsOCBAQCBub3RpZmljYXRpb25f aGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6ZSkKIAogCUFzc2VydChrZXlzaXplID09 IHNpemVvZihOb3RpZmljYXRpb24gKikpOwogCS8qIFdlIGRvbid0IGJvdGhlciB0byBpbmNsdWRl IHRoZSBwYXlsb2FkJ3MgdHJhaWxpbmcgbnVsbCBpbiB0aGUgaGFzaCAqLwotCXJldHVybiBEYXR1 bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBrLT5kYXRhLAotCQkJ CQkJCQkgICBrLT5jaGFubmVsX2xlbiArIGstPnBheWxvYWRfbGVuICsgMSkpOworCXJldHVybiBo YXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGstPmRhdGEsCisJCQkJCSAgay0+Y2hh bm5lbF9sZW4gKyBrLT5wYXlsb2FkX2xlbiArIDEpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvYml0bWFwc2V0LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9iaXRtYXBzZXQu YwppbmRleCBhNDc2NTg3NmMzMS4uZTZiNmFjMDVlNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL2JpdG1hcHNldC5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2JpdG1hcHNldC5jCkBA IC0xNDIwLDggKzE0MjAsOCBAQCBibXNfaGFzaF92YWx1ZShjb25zdCBCaXRtYXBzZXQgKmEpCiAK IAlpZiAoYSA9PSBOVUxMKQogCQlyZXR1cm4gMDsJCQkJLyogQWxsIGVtcHR5IHNldHMgaGFzaCB0 byAwICovCi0JcmV0dXJuIERhdHVtR2V0VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBj aGFyICopIGEtPndvcmRzLAotCQkJCQkJCQkgICBhLT5ud29yZHMgKiBzaXplb2YoYml0bWFwd29y ZCkpKTsKKwlyZXR1cm4gaGFzaF9ieXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSBhLT53b3Jk cywKKwkJCQkJICBhLT5ud29yZHMgKiBzaXplb2YoYml0bWFwd29yZCkpOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2Vu ZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYwppbmRleCAwYzUxM2Q2OTRlNy4uMmExOWJkMjE5OTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC00OTYsOCArNDk2LDggQEAgbGV4 ZW1lX2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpCiB7CiAJY29uc3QgTGV4ZW1l SGFzaEtleSAqbCA9IChjb25zdCBMZXhlbWVIYXNoS2V5ICopIGtleTsKIAotCXJldHVybiBEYXR1 bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBsLT5sZXhlbWUsCi0J CQkJCQkJCSAgIGwtPmxlbmd0aCkpOworCXJldHVybiBoYXNoX2J5dGVzKChjb25zdCB1bnNpZ25l ZCBjaGFyICopIGwtPmxleGVtZSwKKwkJCQkJICBsLT5sZW5ndGgpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvYnl0ZWEuYwppbmRleCBkODgwYjYyNjg4Yy4uMzFjODQ5YmQyYTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9i eXRlYS5jCkBAIC0xMTA2LDggKzExMDYsOCBAQCBieXRlYV9hYmJyZXZfY29udmVydChEYXR1bSBv cmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1cCkKIAkgKiBpbiBvcmRlciB0byBjb21wZW5zYXRlIGZv ciBjYXNlcyB3aGVyZSBkaWZmZXJlbmNlcyBhcmUgcGFzdAogCSAqIFBHX0NBQ0hFX0xJTkVfU0la RSBieXRlcywgc28gYXMgdG8gbGltaXQgdGhlIG92ZXJoZWFkIG9mIGhhc2hpbmcuCiAJICovCi0J aGFzaCA9IERhdHVtR2V0VUludDMyKGhhc2hfYW55KCh1bnNpZ25lZCBjaGFyICopIGF1dGhvcml0 YXRpdmVfZGF0YSwKLQkJCQkJCQkJICAgTWluKGxlbiwgUEdfQ0FDSEVfTElORV9TSVpFKSkpOwor CWhhc2ggPSBoYXNoX2J5dGVzKCh1bnNpZ25lZCBjaGFyICopIGF1dGhvcml0YXRpdmVfZGF0YSwK KwkJCQkJICBNaW4obGVuLCBQR19DQUNIRV9MSU5FX1NJWkUpKTsKIAogCWlmIChsZW4gPiBQR19D QUNIRV9MSU5FX1NJWkUpCiAJCWhhc2ggXj0gRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIoKHVp bnQzMikgbGVuKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2lu LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2luLmMKaW5kZXggZDcyYTY0NDFjNWUu LmY1ZGJkNTU4OWQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2lu LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX2dpbi5jCkBAIC0xMzMzLDcgKzEz MzMsNyBAQCBtYWtlX3RleHRfa2V5KGNoYXIgZmxhZywgY29uc3QgY2hhciAqc3RyLCBpbnQgbGVu KQogCXsKIAkJdWludDMyCQloYXNodmFsOwogCi0JCWhhc2h2YWwgPSBEYXR1bUdldFVJbnQzMiho YXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzdHIsIGxlbikpOworCQloYXNodmFsID0g aGFzaF9ieXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzdHIsIGxlbik7CiAJCXNucHJpbnRm KGhhc2hidWYsIHNpemVvZihoYXNoYnVmKSwgIiUwOHgiLCBoYXNodmFsKTsKIAkJc3RyID0gaGFz aGJ1ZjsKIAkJbGVuID0gODsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u Yl91dGlsLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jCmluZGV4IGUwODUw NDJmOTEyLi5kNTBkY2FiM2RkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25iX3V0aWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jCkBAIC0x NDUxLDggKzE0NTEsOCBAQCBKc29uYkhhc2hTY2FsYXJWYWx1ZShjb25zdCBKc29uYlZhbHVlICpz Y2FsYXJWYWwsIHVpbnQzMiAqaGFzaCkKIAkJCXRtcCA9IDB4MDE7CiAJCQlicmVhazsKIAkJY2Fz ZSBqYnZTdHJpbmc6Ci0JCQl0bXAgPSBEYXR1bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5z aWduZWQgY2hhciAqKSBzY2FsYXJWYWwtPnZhbC5zdHJpbmcudmFsLAotCQkJCQkJCQkJCSAgc2Nh bGFyVmFsLT52YWwuc3RyaW5nLmxlbikpOworCQkJdG1wID0gaGFzaF9ieXRlcygoY29uc3QgdW5z aWduZWQgY2hhciAqKSBzY2FsYXJWYWwtPnZhbC5zdHJpbmcudmFsLAorCQkJCQkJCSBzY2FsYXJW YWwtPnZhbC5zdHJpbmcubGVuKTsKIAkJCWJyZWFrOwogCQljYXNlIGpidk51bWVyaWM6CiAJCQkv KiBNdXN0IGhhc2ggZXF1YWwgbnVtZXJpY3MgdG8gZXF1YWwgaGFzaCBjb2RlcyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC92YXJsZW5hLmMKaW5kZXggNzU0NmNhYWNmOTEuLjcxN2YyNmM1NmZhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC92YXJsZW5hLmMKQEAgLTIxMDYsOCArMjEwNiw4IEBAIHZhcnN0cl9hYmJyZXZfY29udmVy dChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1cCkKIAkgKiBpbiBvcmRlciB0byBjb21w ZW5zYXRlIGZvciBjYXNlcyB3aGVyZSBkaWZmZXJlbmNlcyBhcmUgcGFzdAogCSAqIFBHX0NBQ0hF X0xJTkVfU0laRSBieXRlcywgc28gYXMgdG8gbGltaXQgdGhlIG92ZXJoZWFkIG9mIGhhc2hpbmcu CiAJICovCi0JaGFzaCA9IERhdHVtR2V0VUludDMyKGhhc2hfYW55KCh1bnNpZ25lZCBjaGFyICop IGF1dGhvcml0YXRpdmVfZGF0YSwKLQkJCQkJCQkJICAgTWluKGxlbiwgUEdfQ0FDSEVfTElORV9T SVpFKSkpOworCWhhc2ggPSBoYXNoX2J5dGVzKCh1bnNpZ25lZCBjaGFyICopIGF1dGhvcml0YXRp dmVfZGF0YSwKKwkJCQkJICBNaW4obGVuLCBQR19DQUNIRV9MSU5FX1NJWkUpKTsKIAogCWlmIChs ZW4gPiBQR19DQUNIRV9MSU5FX1NJWkUpCiAJCWhhc2ggXj0gRGF0dW1HZXRVSW50MzIoaGFzaF91 aW50MzIoKHVpbnQzMikgbGVuKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9mdW5jY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCmluZGV4 IDcwMWMyOTRiODhkLi42OGJiZjBiOTcxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvZnVuY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hl LmMKQEAgLTg5LDEzICs4OSwxMyBAQCBjZnVuY19oYXNoKGNvbnN0IHZvaWQgKmtleSwgU2l6ZSBr ZXlzaXplKQogCiAJQXNzZXJ0KGtleXNpemUgPT0gc2l6ZW9mKENhY2hlZEZ1bmN0aW9uSGFzaEtl eSkpOwogCS8qIEhhc2ggYWxsIHRoZSBmaXhlZCBmaWVsZHMgZXhjZXB0IGNhbGxSZXN1bHRUeXBl ICovCi0JaCA9IERhdHVtR2V0VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBjaGFyICop IGssCi0JCQkJCQkJCW9mZnNldG9mKENhY2hlZEZ1bmN0aW9uSGFzaEtleSwgY2FsbFJlc3VsdFR5 cGUpKSk7CisJaCA9IGhhc2hfYnl0ZXMoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgaywKKwkJCQkg ICBvZmZzZXRvZihDYWNoZWRGdW5jdGlvbkhhc2hLZXksIGNhbGxSZXN1bHRUeXBlKSk7CiAJLyog SW5jb3Jwb3JhdGUgaW5wdXQgYXJndW1lbnQgdHlwZXMgKi8KIAlpZiAoay0+bmFyZ3MgPiAwKQog CQloID0gaGFzaF9jb21iaW5lKGgsCi0JCQkJCQkgRGF0dW1HZXRVSW50MzIoaGFzaF9hbnkoKGNv bnN0IHVuc2lnbmVkIGNoYXIgKikgay0+YXJndHlwZXMsCi0JCQkJCQkJCQkJCQkgay0+bmFyZ3Mg KiBzaXplb2YoT2lkKSkpKTsKKwkJCQkJCSBoYXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFy ICopIGstPmFyZ3R5cGVzLAorCQkJCQkJCQkJay0+bmFyZ3MgKiBzaXplb2YoT2lkKSkpOwogCS8q IEluY29ycG9yYXRlIGNhbGxSZXN1bHRUeXBlIGlmIHByZXNlbnQgKi8KIAlpZiAoay0+Y2FsbFJl c3VsdFR5cGUpCiAJCWggPSBoYXNoX2NvbWJpbmUoaCwgaGFzaFJvd1R5cGUoay0+Y2FsbFJlc3Vs dFR5cGUpKTsKLS0gCjIuNDMuMAoK --000000000000dbef120649eca482 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Refactor-_abbrev_convert-functions.patch" Content-Disposition: attachment; filename="v2-0001-Refactor-_abbrev_convert-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ml6q173t0 RnJvbSBlNzJkMjY3NWZkODM2MGY1NzcyOWY2N2Q2MGJkNjMwYTVlYTJlMjAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTMgSmFuIDIwMjYgMTQ6NTE6MjEgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyIDEvNV0gUmVmYWN0b3IgKl9hYmJyZXZfY29udmVydCgpIGZ1bmN0aW9ucwoKTm93 IHdoZW4gYWxsIERhdHVtcyBhcmUgNjQtYml0IHZhbHVlcyB3ZSBjYW4gc2ltcGxpZnkgdGhlIGNv ZGUgYnkgdXNpbmcKbXVybXVyaGFzaDY0KCkuCgpBdXRob3I6IEFsZWtzYW5kZXIgQWxla3NlZXYg PGFsZWtzYW5kZXJAdGlnZXJkYXRhLmNvbT4KU3VnZ2VzdGVkLWJ5OiBKb2huIE5heWxvciA8am9o bmNuYXlsb3Jsc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKb2huIE5heWxvciA8am9obmNuYXls b3Jsc0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FKN2M2VE1Q aERSUU1ta1VIUHY4b09LOTdCMW1SOE5SUzYxRGdqcGRhWlVQQXdhZVpRJTQwbWFpbC5nbWFpbC5j b20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYyAgIHwgIDcgKy0tLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L21hYy5jICAgICB8IDExICsrKy0tLS0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvbmV0d29yay5jIHwgIDYgKy0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv bnVtZXJpYy5jIHwgIDUgKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMgICAgfCAg NiArLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgfCAgNyArLS0tLS0tCiA2 IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvYnl0ZWEuYwppbmRleCBmZDc2NjJkNDFlZS4uZDg4MGI2MjY4OGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9i eXRlYS5jCkBAIC0xMTE1LDEyICsxMTE1LDcgQEAgYnl0ZWFfYWJicmV2X2NvbnZlcnQoRGF0dW0g b3JpZ2luYWwsIFNvcnRTdXBwb3J0IHNzdXApCiAJYWRkSHlwZXJMb2dMb2coJmJzcy0+ZnVsbF9j YXJkLCBoYXNoKTsKIAogCS8qIEhhc2ggYWJicmV2aWF0ZWQga2V5ICovCi0JewotCQl1aW50MzIJ CXRtcDsKLQotCQl0bXAgPSBEYXR1bUdldFVJbnQzMihyZXMpIF4gKHVpbnQzMikgKERhdHVtR2V0 VUludDY0KHJlcykgPj4gMzIpOwotCQloYXNoID0gRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIo dG1wKSk7Ci0JfQorCWhhc2ggPSAodWludDMyKSBtdXJtdXJoYXNoNjQoRGF0dW1HZXRVSW50NjQo cmVzKSk7CiAKIAlhZGRIeXBlckxvZ0xvZygmYnNzLT5hYmJyX2NhcmQsIGhhc2gpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWFjLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbWFjLmMKaW5kZXggZjE0Njc1ZGVhNDAuLjA2NTg4NDZmMjc0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbWFjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYy5j CkBAIC00OTIsMTcgKzQ5MiwxMiBAQCBtYWNhZGRyX2FiYnJldl9jb252ZXJ0KERhdHVtIG9yaWdp bmFsLCBTb3J0U3VwcG9ydCBzc3VwKQogCXVzcy0+aW5wdXRfY291bnQgKz0gMTsKIAogCS8qCi0J ICogQ2FyZGluYWxpdHkgZXN0aW1hdGlvbi4gVGhlIGVzdGltYXRlIHVzZXMgdWludDMyLCBzbyBY T1IgdGhlIHR3byAzMi1iaXQKLQkgKiBoYWx2ZXMgdG9nZXRoZXIgdG8gcHJvZHVjZSBzbGlnaHRs eSBtb3JlIGVudHJvcHkuIFRoZSB0d28gemVyb2VkIGJ5dGVzCi0JICogd29uJ3QgaGF2ZSBhbnkg cHJhY3RpY2FsIGltcGFjdCBvbiB0aGlzIG9wZXJhdGlvbi4KKwkgKiBDYXJkaW5hbGl0eSBlc3Rp bWF0aW9uLiBUaGUgZXN0aW1hdGUgdXNlcyB1aW50MzIsIHNvIHdlIGhhc2ggdGhlIGZ1bGwKKwkg KiA2NC1iaXQgdmFsdWUgYW5kIHRha2UgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4K IAkgKi8KIAlpZiAodXNzLT5lc3RpbWF0aW5nKQogCXsKLQkJdWludDMyCQl0bXA7Ci0KLQkJdG1w ID0gRGF0dW1HZXRVSW50MzIocmVzKSBeICh1aW50MzIpIChEYXR1bUdldFVJbnQ2NChyZXMpID4+ IDMyKTsKLQotCQlhZGRIeXBlckxvZ0xvZygmdXNzLT5hYmJyX2NhcmQsIERhdHVtR2V0VUludDMy KGhhc2hfdWludDMyKHRtcCkpKTsKKwkJYWRkSHlwZXJMb2dMb2coJnVzcy0+YWJicl9jYXJkLCAo dWludDMyKSBtdXJtdXJoYXNoNjQoRGF0dW1HZXRVSW50NjQocmVzKSkpOwogCX0KIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbmV0d29yay5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L25ldHdvcmsuYwppbmRleCAzYTIwMDIwOTdkZC4uYzIyNmFmNWNhODAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L25ldHdvcmsuYwpAQCAtNzM5LDExICs3MzksNyBAQCBuZXR3b3JrX2FiYnJldl9j b252ZXJ0KERhdHVtIG9yaWdpbmFsLCBTb3J0U3VwcG9ydCBzc3VwKQogCS8qIEhhc2ggYWJicmV2 aWF0ZWQga2V5ICovCiAJaWYgKHVzcy0+ZXN0aW1hdGluZykKIAl7Ci0JCXVpbnQzMgkJdG1wOwot Ci0JCXRtcCA9IERhdHVtR2V0VUludDMyKHJlcykgXiAodWludDMyKSAoRGF0dW1HZXRVSW50NjQo cmVzKSA+PiAzMik7Ci0KLQkJYWRkSHlwZXJMb2dMb2coJnVzcy0+YWJicl9jYXJkLCBEYXR1bUdl dFVJbnQzMihoYXNoX3VpbnQzMih0bXApKSk7CisJCWFkZEh5cGVyTG9nTG9nKCZ1c3MtPmFiYnJf Y2FyZCwgKHVpbnQzMikgbXVybXVyaGFzaDY0KERhdHVtR2V0VUludDY0KHJlcykpKTsKIAl9CiAK IAlyZXR1cm4gcmVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKaW5kZXggODkxYWU2YmE3ZmUuLjZk NWUyYTM2NDRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKQEAgLTIzOTcsMTAgKzIzOTcsNyBA QCBudW1lcmljX2FiYnJldl9jb252ZXJ0X3Zhcihjb25zdCBOdW1lcmljVmFyICp2YXIsIE51bWVy aWNTb3J0U3VwcG9ydCAqbnNzKQogCiAJaWYgKG5zcy0+ZXN0aW1hdGluZykKIAl7Ci0JCXVpbnQz MgkJdG1wID0gKCh1aW50MzIpIHJlc3VsdAotCQkJCQkJICAgXiAodWludDMyKSAoKHVpbnQ2NCkg cmVzdWx0ID4+IDMyKSk7Ci0KLQkJYWRkSHlwZXJMb2dMb2coJm5zcy0+YWJicl9jYXJkLCBEYXR1 bUdldFVJbnQzMihoYXNoX3VpbnQzMih0bXApKSk7CisJCWFkZEh5cGVyTG9nTG9nKCZuc3MtPmFi YnJfY2FyZCwgKHVpbnQzMikgbXVybXVyaGFzaDY0KHJlc3VsdCkpOwogCX0KIAogCXJldHVybiBO dW1lcmljQWJicmV2R2V0RGF0dW0ocmVzdWx0KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC91dWlkLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jCmluZGV4IDZlZTM3 NTJhYzc4Li44ODg4MDJjMzAxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1 aWQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jCkBAIC0zOTYsMTEgKzM5Niw3 IEBAIHV1aWRfYWJicmV2X2NvbnZlcnQoRGF0dW0gb3JpZ2luYWwsIFNvcnRTdXBwb3J0IHNzdXAp CiAKIAlpZiAodXNzLT5lc3RpbWF0aW5nKQogCXsKLQkJdWludDMyCQl0bXA7Ci0KLQkJdG1wID0g RGF0dW1HZXRVSW50MzIocmVzKSBeICh1aW50MzIpIChEYXR1bUdldFVJbnQ2NChyZXMpID4+IDMy KTsKLQotCQlhZGRIeXBlckxvZ0xvZygmdXNzLT5hYmJyX2NhcmQsIERhdHVtR2V0VUludDMyKGhh c2hfdWludDMyKHRtcCkpKTsKKwkJYWRkSHlwZXJMb2dMb2coJnVzcy0+YWJicl9jYXJkLCAodWlu dDMyKSBtdXJtdXJoYXNoNjQoRGF0dW1HZXRVSW50NjQocmVzKSkpOwogCX0KIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYwppbmRleCA1NTJhYzBjNjFkMy4uNzU0NmNhYWNmOTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYwpAQCAtMjExNSwxMiArMjExNSw3IEBAIHZhcnN0cl9hYmJyZXZfY29u dmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1cCkKIAlhZGRIeXBlckxvZ0xvZygm c3NzLT5mdWxsX2NhcmQsIGhhc2gpOwogCiAJLyogSGFzaCBhYmJyZXZpYXRlZCBrZXkgKi8KLQl7 Ci0JCXVpbnQzMgkJdG1wOwotCi0JCXRtcCA9IERhdHVtR2V0VUludDMyKHJlcykgXiAodWludDMy KSAoRGF0dW1HZXRVSW50NjQocmVzKSA+PiAzMik7Ci0JCWhhc2ggPSBEYXR1bUdldFVJbnQzMiho YXNoX3VpbnQzMih0bXApKTsKLQl9CisJaGFzaCA9ICh1aW50MzIpIG11cm11cmhhc2g2NChEYXR1 bUdldFVJbnQ2NChyZXMpKTsKIAogCWFkZEh5cGVyTG9nTG9nKCZzc3MtPmFiYnJfY2FyZCwgaGFz aCk7CiAKLS0gCjIuNDMuMAoK --000000000000dbef120649eca482--