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 1kZVAi-0007EA-EK for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Nov 2020 08:26:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kZVAh-00061S-D3 for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Nov 2020 08:26:35 +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 1kZURu-00052H-WC for pgsql-hackers@lists.postgresql.org; Mon, 02 Nov 2020 07:40:19 +0000 Received: from wforward3-smtp.messagingengine.com ([64.147.123.22]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kZURr-0008Oe-NP for pgsql-hackers@postgresql.org; Mon, 02 Nov 2020 07:40:17 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailforward.west.internal (Postfix) with ESMTP id CFC386A3 for ; Mon, 2 Nov 2020 02:40:13 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Mon, 02 Nov 2020 02:40:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=1nqJZA3+gZNc7o6nGwNAdzK2BK4yE PwVqFX9YLwx/Ws=; b=riTkjrOJREooYF+NqykcPvc9DsPCi1u2i5Ox6qZmq306m eT/i/3oQtHIq/YuPgNlEtoK0RSTEQC154plL+CRx9XDkQNAhIdjtrqlGDVaS3r+F 6LnuTfvAuCqJb7lx2qoNvG1kcqmWk6ht39Sh6bfWCzodao/ewZHrhsswCFBjBOYY YaZX8ycJ6gZ3sbM8VtHylAkvFaXUv8r7kgSWTkCj2BZc1Vrzh9UUDrN/IzOZ+AEl m3WwWIcWvAJECAF4whjEhSCbki019uwKSiQcGGCsgd06NLfjpNGRfGSVnvcmsf6A ERQV+8AixSAO1wC4qmz/g9gUYZksTt0DYtXQnnT9g== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedruddttddguddutdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepvffhufhokffffgggtgesmhdtre ertdefjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdr vghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrth htvghrnhepleefjefghfettedvkedvheeuhfehjeefgeeggfehhfeuleeltddvffehleej feevnecukfhppeekjedrudejjedrjedurddvvdejnecuvehluhhsthgvrhfuihiivgeptd enucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsegv nhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Received: from april.pezone.net (p57b147e3.dip0.t-ipconnect.de [87.177.71.227]) by mail.messagingengine.com (Postfix) with ESMTPA id 8C8143064682 for ; Mon, 2 Nov 2020 02:40:12 -0500 (EST) To: pgsql-hackers From: Peter Eisentraut Subject: hash_array_extended() needs to pass down collation Organization: EnterpriseDB Message-ID: <32c1fdae-95c6-5dc6-058a-a90330a3b621@enterprisedb.com> Date: Mon, 2 Nov 2020 08:40:11 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------459A47F7F6FB2A41E2781496" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------459A47F7F6FB2A41E2781496 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit I noticed that hash_array_extended() does not pass down the collation to the element's collation function, unlike hash_array(). As a consequence, hash partitioning using text arrays as partition key fails. The attached patch fixes this. I propose to backpatch this. --------------459A47F7F6FB2A41E2781496 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Enable-hash-partitioning-of-text-arrays.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Enable-hash-partitioning-of-text-arrays.patch" RnJvbSAxNzFjNThiYzM3YzIxMWNhYjExZjZiNTg4MjIwZTllNzczZjY3ZTY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyIE5vdiAyMDIwIDA4OjI0OjI4ICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gRW5hYmxlIGhhc2ggcGFydGl0aW9uaW5nIG9mIHRleHQgYXJyYXlzCgpoYXNo X2FycmF5X2V4dGVuZGVkKCkgbmVlZHMgdG8gcGFzcyBQR19HRVRfQ09MTEFUSU9OKCkgdG8g dGhlIGhhc2gKZnVuY3Rpb24gb2YgdGhlIGVsZW1lbnQgdHlwZS4gIE90aGVyd2lzZSwgdGhl IGhhc2ggZnVuY3Rpb24gb2YgYQpjb2xsYXRpb24tYXdhcmUgZGF0YSB0eXBlIHN1Y2ggYXMg dGV4dCB3aWxsIGVycm9yIG91dCwgc2luY2UgdGhlCmludHJvZHVjdGlvbiBvZiBub25kZXRl cm1pbmlzdGljIGNvbGxhdGlvbiBtYWRlIGhhc2ggZnVuY3Rpb25zIHJlcXVpcmUKYSBjb2xs YXRpb24sIHRvby4KClRoZSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYmVmb3JlIHRo aXMgY2hhbmdlLCBoYXNoIHBhcnRpdGlvbmluZwp1c2luZyBhbiBhcnJheSBvdmVyIHRleHQg aW4gdGhlIHBhcnRpdGlvbiBrZXkgd291bGQgbm90IHdvcmsuCi0tLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2FycmF5ZnVuY3MuYyAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9yZWdyZXNz L2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0ICAgICB8IDUwICsrKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsICAgICB8 IDI2ICsrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1 bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCmluZGV4IDM5MjQ0 NWVhMDMuLmE3ZWE3NjU2YzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9h cnJheWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwpA QCAtNDA3MSw3ICs0MDcxLDcgQEAgaGFzaF9hcnJheV9leHRlbmRlZChQR19GVU5DVElPTl9B UkdTKQogCXR5cGFsaWduID0gdHlwZW50cnktPnR5cGFsaWduOwogCiAJSW5pdEZ1bmN0aW9u Q2FsbEluZm9EYXRhKCpsb2NmY2luZm8sICZ0eXBlbnRyeS0+aGFzaF9leHRlbmRlZF9wcm9j X2ZpbmZvLCAyLAotCQkJCQkJCSBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKKwkJCQkJCQkg UEdfR0VUX0NPTExBVElPTigpLCBOVUxMLCBOVUxMKTsKIAogCS8qIExvb3Agb3ZlciBzb3Vy Y2UgZGF0YSAqLwogCW5pdGVtcyA9IEFycmF5R2V0Tkl0ZW1zKG5kaW1zLCBkaW1zKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0Cmlu ZGV4IDJiODZjZTkwMjguLjcwMTMzZGY4MDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMTIxNSw2ICsxMjE1LDMwIEBA IFNFTEVDVCAqIEZST00gdGVzdDYgV0hFUkUgYiA9ICfDpGJjJyBDT0xMQVRFIGN0ZXN0X25v bmRldDsKICAyIHwgYcyIYmMKICgyIHJvd3MpCiAKKy0tIHNhbWUgd2l0aCBhcnJheXMKK0NS RUFURSBUQUJMRSB0ZXN0NmEgKGEgaW50LCBiIHRleHRbXSk7CitJTlNFUlQgSU5UTyB0ZXN0 NmEgVkFMVUVTICgxLCBBUlJBWVtVJidcMDBFNGJjJ10pOworSU5TRVJUIElOVE8gdGVzdDZh IFZBTFVFUyAoMiwgQVJSQVlbVSYnXDAwNjFcMDMwOGJjJ10pOworU0VMRUNUICogRlJPTSB0 ZXN0NmE7CisgYSB8ICAgYiAgIAorLS0tKy0tLS0tLS0KKyAxIHwge8OkYmN9CisgMiB8IHth zIhiY30KKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdDZhIFdIRVJFIGIgPSBBUlJB WVsnw6RiYyddIENPTExBVEUgY3Rlc3RfZGV0OworIGEgfCAgIGIgICAKKy0tLSstLS0tLS0t CisgMSB8IHvDpGJjfQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q2YSBXSEVSRSBi ID0gQVJSQVlbJ8OkYmMnXSBDT0xMQVRFIGN0ZXN0X25vbmRldDsKKyBhIHwgICBiICAgCist LS0rLS0tLS0tLQorIDEgfCB7w6RiY30KKyAyIHwge2HMiGJjfQorKDIgcm93cykKKwogQ1JF QVRFIENPTExBVElPTiBjYXNlX3NlbnNpdGl2ZSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICcnKTsKIENSRUFURSBDT0xMQVRJT04gY2FzZV9pbnNlbnNpdGl2ZSAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9c2Vjb25kYXJ5JywgZGV0ZXJtaW5pc3RpYyA9 IGZhbHNlKTsKIFNFTEVDVCAnYWJjJyA8PSAnQUJDJyBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZl LCAnYWJjJyA+PSAnQUJDJyBDT0xMQVRFIGNhc2Vfc2Vuc2l0aXZlOwpAQCAtMTg0Miw2ICsx ODY2LDE5IEBAIFNFTEVDVCAoU0VMRUNUIGNvdW50KCopIEZST00gdGVzdDIyXzApID0gKFNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3QyMl8xKTsKICB0CiAoMSByb3cpCiAKKy0tIHNhbWUg d2l0aCBhcnJheXMKK0NSRUFURSBUQUJMRSB0ZXN0MjJhIChhIGludCwgYiB0ZXh0W10gQ09M TEFURSBjYXNlX3NlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIEhBU0ggKGIpOworQ1JFQVRFIFRB QkxFIHRlc3QyMmFfMCBQQVJUSVRJT04gT0YgdGVzdDIyYSBGT1IgVkFMVUVTIFdJVEggKE1P RFVMVVMgMiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRlc3QyMmFfMSBQQVJUSVRJ T04gT0YgdGVzdDIyYSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEp OworSU5TRVJUIElOVE8gdGVzdDIyYSBWQUxVRVMgKDEsIEFSUkFZWydkZWYnXSk7CitJTlNF UlQgSU5UTyB0ZXN0MjJhIFZBTFVFUyAoMiwgQVJSQVlbJ0RFRiddKTsKKy0tIHRoZXkgZW5k IHVwIGluIGRpZmZlcmVudCBwYXJ0aXRpb25zCitTRUxFQ1QgKFNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3QyMmFfMCkgPSAoU0VMRUNUIGNvdW50KCopIEZST00gdGVzdDIyYV8xKTsKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKIENSRUFURSBUQUJMRSB0ZXN0 MjMgKGEgaW50LCBiIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJT04g QlkgSEFTSCAoYik7CiBDUkVBVEUgVEFCTEUgdGVzdDIzXzAgUEFSVElUSU9OIE9GIHRlc3Qy MyBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOwogQ1JFQVRFIFRB QkxFIHRlc3QyM18xIFBBUlRJVElPTiBPRiB0ZXN0MjMgRk9SIFZBTFVFUyBXSVRIIChNT0RV TFVTIDIsIFJFTUFJTkRFUiAxKTsKQEAgLTE4NTQsNiArMTg5MSwxOSBAQCBTRUxFQ1QgKFNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3QyM18wKSA8PiAoU0VMRUNUIGNvdW50KCopIEZST00g dGVzdDIzXzEpOwogIHQKICgxIHJvdykKIAorLS0gc2FtZSB3aXRoIGFycmF5cworQ1JFQVRF IFRBQkxFIHRlc3QyM2EgKGEgaW50LCBiIHRleHRbXSBDT0xMQVRFIGNhc2VfaW5zZW5zaXRp dmUpIFBBUlRJVElPTiBCWSBIQVNIIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjNhXzAgUEFS VElUSU9OIE9GIHRlc3QyM2EgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAwKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjNhXzEgUEFSVElUSU9OIE9GIHRlc3QyM2EgRk9S IFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKK0lOU0VSVCBJTlRPIHRl c3QyM2EgVkFMVUVTICgxLCBBUlJBWVsnZGVmJ10pOworSU5TRVJUIElOVE8gdGVzdDIzYSBW QUxVRVMgKDIsIEFSUkFZWydERUYnXSk7CistLSB0aGV5IGVuZCB1cCBpbiB0aGUgc2FtZSBw YXJ0aXRpb24gKGJ1dCBpdCdzIHBsYXRmb3JtLWRlcGVuZGVudCB3aGljaCBvbmUpCitTRUxF Q1QgKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QyM2FfMCkgPD4gKFNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3QyM2FfMSk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCiBDUkVBVEUgVEFCTEUgdGVzdDMwIChhIGludCwgYiBjaGFyKDMpIENPTExBVEUgY2Fz ZV9pbnNlbnNpdGl2ZSkgUEFSVElUSU9OIEJZIExJU1QgKGIpOwogQ1JFQVRFIFRBQkxFIHRl c3QzMF8xIFBBUlRJVElPTiBPRiB0ZXN0MzAgRk9SIFZBTFVFUyBJTiAoJ2FiYycpOwogSU5T RVJUIElOVE8gdGVzdDMwIFZBTFVFUyAoMSwgJ2FiYycpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbAppbmRleCA2N2RlN2Q5Nzk0Li45Y2VlM2QwMDQy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbApAQCAt NDgzLDYgKzQ4MywxNCBAQCBDUkVBVEUgVEFCTEUgdGVzdDYgKGEgaW50LCBiIHRleHQpOwog U0VMRUNUICogRlJPTSB0ZXN0NiBXSEVSRSBiID0gJ8OkYmMnIENPTExBVEUgY3Rlc3RfZGV0 OwogU0VMRUNUICogRlJPTSB0ZXN0NiBXSEVSRSBiID0gJ8OkYmMnIENPTExBVEUgY3Rlc3Rf bm9uZGV0OwogCistLSBzYW1lIHdpdGggYXJyYXlzCitDUkVBVEUgVEFCTEUgdGVzdDZhIChh IGludCwgYiB0ZXh0W10pOworSU5TRVJUIElOVE8gdGVzdDZhIFZBTFVFUyAoMSwgQVJSQVlb VSYnXDAwRTRiYyddKTsKK0lOU0VSVCBJTlRPIHRlc3Q2YSBWQUxVRVMgKDIsIEFSUkFZW1Um J1wwMDYxXDAzMDhiYyddKTsKK1NFTEVDVCAqIEZST00gdGVzdDZhOworU0VMRUNUICogRlJP TSB0ZXN0NmEgV0hFUkUgYiA9IEFSUkFZWyfDpGJjJ10gQ09MTEFURSBjdGVzdF9kZXQ7CitT RUxFQ1QgKiBGUk9NIHRlc3Q2YSBXSEVSRSBiID0gQVJSQVlbJ8OkYmMnXSBDT0xMQVRFIGN0 ZXN0X25vbmRldDsKKwogQ1JFQVRFIENPTExBVElPTiBjYXNlX3NlbnNpdGl2ZSAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICcnKTsKIENSRUFURSBDT0xMQVRJT04gY2FzZV9pbnNlbnNp dGl2ZSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9c2Vjb25kYXJ5 JywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsKIApAQCAtNjg1LDYgKzY5MywxNSBAQCBDUkVB VEUgVEFCTEUgdGVzdDIyXzEgUEFSVElUSU9OIE9GIHRlc3QyMiBGT1IgVkFMVUVTIFdJVEgg KE1PRFVMVVMgMiwgUkVNQUlOREVSCiAtLSB0aGV5IGVuZCB1cCBpbiBkaWZmZXJlbnQgcGFy dGl0aW9ucwogU0VMRUNUIChTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0MjJfMCkgPSAoU0VM RUNUIGNvdW50KCopIEZST00gdGVzdDIyXzEpOwogCistLSBzYW1lIHdpdGggYXJyYXlzCitD UkVBVEUgVEFCTEUgdGVzdDIyYSAoYSBpbnQsIGIgdGV4dFtdIENPTExBVEUgY2FzZV9zZW5z aXRpdmUpIFBBUlRJVElPTiBCWSBIQVNIIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjJhXzAg UEFSVElUSU9OIE9GIHRlc3QyMmEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJ TkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjJhXzEgUEFSVElUSU9OIE9GIHRlc3QyMmEg Rk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKK0lOU0VSVCBJTlRP IHRlc3QyMmEgVkFMVUVTICgxLCBBUlJBWVsnZGVmJ10pOworSU5TRVJUIElOVE8gdGVzdDIy YSBWQUxVRVMgKDIsIEFSUkFZWydERUYnXSk7CistLSB0aGV5IGVuZCB1cCBpbiBkaWZmZXJl bnQgcGFydGl0aW9ucworU0VMRUNUIChTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0MjJhXzAp ID0gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QyMmFfMSk7CisKIENSRUFURSBUQUJMRSB0 ZXN0MjMgKGEgaW50LCBiIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJ T04gQlkgSEFTSCAoYik7CiBDUkVBVEUgVEFCTEUgdGVzdDIzXzAgUEFSVElUSU9OIE9GIHRl c3QyMyBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApOwogQ1JFQVRF IFRBQkxFIHRlc3QyM18xIFBBUlRJVElPTiBPRiB0ZXN0MjMgRk9SIFZBTFVFUyBXSVRIIChN T0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKQEAgLTY5Myw2ICs3MTAsMTUgQEAgQ1JFQVRFIFRB QkxFIHRlc3QyM18xIFBBUlRJVElPTiBPRiB0ZXN0MjMgRk9SIFZBTFVFUyBXSVRIIChNT0RV TFVTIDIsIFJFTUFJTkRFUgogLS0gdGhleSBlbmQgdXAgaW4gdGhlIHNhbWUgcGFydGl0aW9u IChidXQgaXQncyBwbGF0Zm9ybS1kZXBlbmRlbnQgd2hpY2ggb25lKQogU0VMRUNUIChTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0MjNfMCkgPD4gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3QyM18xKTsKIAorLS0gc2FtZSB3aXRoIGFycmF5cworQ1JFQVRFIFRBQkxFIHRlc3QyM2Eg KGEgaW50LCBiIHRleHRbXSBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUpIFBBUlRJVElPTiBC WSBIQVNIIChiKTsKK0NSRUFURSBUQUJMRSB0ZXN0MjNhXzAgUEFSVElUSU9OIE9GIHRlc3Qy M2EgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBU QUJMRSB0ZXN0MjNhXzEgUEFSVElUSU9OIE9GIHRlc3QyM2EgRk9SIFZBTFVFUyBXSVRIIChN T0RVTFVTIDIsIFJFTUFJTkRFUiAxKTsKK0lOU0VSVCBJTlRPIHRlc3QyM2EgVkFMVUVTICgx LCBBUlJBWVsnZGVmJ10pOworSU5TRVJUIElOVE8gdGVzdDIzYSBWQUxVRVMgKDIsIEFSUkFZ WydERUYnXSk7CistLSB0aGV5IGVuZCB1cCBpbiB0aGUgc2FtZSBwYXJ0aXRpb24gKGJ1dCBp dCdzIHBsYXRmb3JtLWRlcGVuZGVudCB3aGljaCBvbmUpCitTRUxFQ1QgKFNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3QyM2FfMCkgPD4gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3QyM2Ff MSk7CisKIENSRUFURSBUQUJMRSB0ZXN0MzAgKGEgaW50LCBiIGNoYXIoMykgQ09MTEFURSBj YXNlX2luc2Vuc2l0aXZlKSBQQVJUSVRJT04gQlkgTElTVCAoYik7CiBDUkVBVEUgVEFCTEUg dGVzdDMwXzEgUEFSVElUSU9OIE9GIHRlc3QzMCBGT1IgVkFMVUVTIElOICgnYWJjJyk7CiBJ TlNFUlQgSU5UTyB0ZXN0MzAgVkFMVUVTICgxLCAnYWJjJyk7Ci0tIAoyLjI4LjAKCg== --------------459A47F7F6FB2A41E2781496--