Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ioRZ8-0000t7-RI for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jan 2020 12:33:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1ioRZ7-0003QF-9z for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jan 2020 12:33:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ioRZ6-0003My-2p for pgsql-hackers@lists.postgresql.org; Mon, 06 Jan 2020 12:33:01 +0000 Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ioRZ2-0005d2-Uj for pgsql-hackers@postgresql.org; Mon, 06 Jan 2020 12:32:58 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id B41C321D73 for ; Mon, 6 Jan 2020 07:32:55 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Mon, 06 Jan 2020 07:32:55 -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=J4L2dW/QcGrUG4ZWpUbrufzf5wWIu aTC8oRGfwjQdOY=; b=ZhpwNoifSWsarRWATv0H3BvOQoQKq0lu3Owfgvqe2QtmQ AD/IpmjyJAQOCUeoA0ECpT1IWz8/uaL1fywe4UFKGjleP3+Epudo913Kf8Dtc8MV g9CZSlVjXuDmZ230Gpb4FTQqomzqF7RnOTrMsK1PFTtHqtg3cZVyS5VXiepFTXem p0TxHfKkgcPIOZRQF8dEi9wnQHE1yHUPUgbJngL4yQ37lZj3f8RZx65KHdN0EMVG JgL9kXmyVHVagoAixwBtv+ApzA3PNv2BmcZ5s8hnDgiLic47huSRxkfwERtdoPuq 3LEMlC9BZ6dXQ/Xq3VkdVrXuwAbr/AdaCYZK0/CWw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedrvdehtddggeefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhuffvohfkffgfgggtsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomheqnecuffhomhgrihhnpe dvnhguqhhurggurhgrnhhtrdgtohhmnecukfhppeelfedrvdegfedrudekjedrudeggeen ucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsedvnh guqhhurggurhgrnhhtrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Received: from april.pezone.net (p5df3bb90.dip0.t-ipconnect.de [93.243.187.144]) by mail.messagingengine.com (Postfix) with ESMTPA id F21EA3060741 for ; Mon, 6 Jan 2020 07:32:54 -0500 (EST) From: Peter Eisentraut Subject: ALTER TABLE ... SET STORAGE does not propagate to indexes To: pgsql-hackers Organization: 2ndQuadrant Message-ID: <9765d72b-37c0-06f5-e349-2a580aafd989@2ndquadrant.com> Date: Mon, 6 Jan 2020 13:32:53 +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="------------AEFA68D318256455A59CACA7" 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. --------------AEFA68D318256455A59CACA7 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit ALTER TABLE ... SET STORAGE does not propagate to indexes, even though indexes created afterwards get the new storage setting. So depending on the order of commands, you can get inconsistent storage settings between indexes and tables. For example: create table foo1 (a text); alter table foo1 alter column a set storage external; create index foo1i on foo1(a); insert into foo1 values(repeat('a', 10000)); ERROR: index row requires 10016 bytes, maximum size is 8191 (Storage "external" disables compression.) but create table foo1 (a text); create index foo1i on foo1(a); alter table foo1 alter column a set storage external; insert into foo1 values(repeat('a', 10000)); -- no error Also, this second state cannot be reproduced by pg_dump, so a possible effect is that such a database would fail to restore. Attached is a patch that attempts to fix this by propagating the storage change to existing indexes. This triggers a few regression test failures (going from no error to error), which I attempted to fix up, but I haven't analyzed what the tests were trying to do, so it might need another look. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------AEFA68D318256455A59CACA7 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Propagate-ALTER-TABLE-.-SET-STORAGE-to-indexes.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Propagate-ALTER-TABLE-.-SET-STORAGE-to-indexes.patch" RnJvbSA4NWYxOWQzMWEyZGVmMmUyYjk4ZDY2OWRhYTRiZDRhM2EyYzJjMDlmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA2IEphbiAyMDIwIDExOjU0OjAzICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gUHJvcGFnYXRlIEFMVEVSIFRBQkxFIC4uLiBTRVQgU1RPUkFHRSB0byBpbmRl eGVzCgotLS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC90b2FzdC5vdXQgfCAg NCArLS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvdG9hc3Quc3FsICAgICAgfCAgNCAr LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgfCAzMyArKysr KysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVt Lm91dCAgICAgfCAgNCArLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwgICAg ICAgICAgfCAgNCArLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0 ZWQvdG9hc3Qub3V0IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3RvYXN0Lm91 dAppbmRleCA5MWE5YTFlODZkLi4yYmFhMDZmMzA0IDEwMDY0NAotLS0gYS9jb250cmliL3Rl c3RfZGVjb2RpbmcvZXhwZWN0ZWQvdG9hc3Qub3V0CisrKyBiL2NvbnRyaWIvdGVzdF9kZWNv ZGluZy9leHBlY3RlZC90b2FzdC5vdXQKQEAgLTMwNSw4ICszMDUsOCBAQCBBTFRFUiBUQUJM RSB0b2FzdGVkX3NldmVyYWwgUkVQTElDQSBJREVOVElUWSBGVUxMOwogQUxURVIgVEFCTEUg dG9hc3RlZF9zZXZlcmFsIEFMVEVSIENPTFVNTiB0b2FzdGVkX2tleSBTRVQgU1RPUkFHRSBF WFRFUk5BTDsKIEFMVEVSIFRBQkxFIHRvYXN0ZWRfc2V2ZXJhbCBBTFRFUiBDT0xVTU4gdG9h c3RlZF9jb2wxIFNFVCBTVE9SQUdFIEVYVEVSTkFMOwogQUxURVIgVEFCTEUgdG9hc3RlZF9z ZXZlcmFsIEFMVEVSIENPTFVNTiB0b2FzdGVkX2NvbDIgU0VUIFNUT1JBR0UgRVhURVJOQUw7 Ci1JTlNFUlQgSU5UTyB0b2FzdGVkX3NldmVyYWwodG9hc3RlZF9rZXkpIFZBTFVFUyhyZXBl YXQoJzk4NzY1NDMyMTAnLCAxMDAwMCkpOwotU0VMRUNUIHBnX2NvbHVtbl9zaXplKHRvYXN0 ZWRfa2V5KSA+IDJeMTYgRlJPTSB0b2FzdGVkX3NldmVyYWw7CitJTlNFUlQgSU5UTyB0b2Fz dGVkX3NldmVyYWwodG9hc3RlZF9rZXkpIFZBTFVFUyhyZXBlYXQoJzk4NzY1NDMyMTAnLCAy NjkpKTsKK1NFTEVDVCBwZ19jb2x1bW5fc2l6ZSh0b2FzdGVkX2tleSkgPiAyXjExIEZST00g dG9hc3RlZF9zZXZlcmFsOwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQogIHQKZGlmZiAtLWdp dCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvdG9hc3Quc3FsIGIvY29udHJpYi90ZXN0 X2RlY29kaW5nL3NxbC90b2FzdC5zcWwKaW5kZXggZWYxMWQyYmZmZi4uNWNmNmI4N2IzYSAx MDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC90b2FzdC5zcWwKKysrIGIv Y29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC90b2FzdC5zcWwKQEAgLTI3OSw4ICsyNzksOCBA QCBDUkVBVEUgVEFCTEUgdG9hc3RlZF9zZXZlcmFsICgKIEFMVEVSIFRBQkxFIHRvYXN0ZWRf c2V2ZXJhbCBBTFRFUiBDT0xVTU4gdG9hc3RlZF9jb2wxIFNFVCBTVE9SQUdFIEVYVEVSTkFM OwogQUxURVIgVEFCTEUgdG9hc3RlZF9zZXZlcmFsIEFMVEVSIENPTFVNTiB0b2FzdGVkX2Nv bDIgU0VUIFNUT1JBR0UgRVhURVJOQUw7CiAKLUlOU0VSVCBJTlRPIHRvYXN0ZWRfc2V2ZXJh bCh0b2FzdGVkX2tleSkgVkFMVUVTKHJlcGVhdCgnOTg3NjU0MzIxMCcsIDEwMDAwKSk7Ci1T RUxFQ1QgcGdfY29sdW1uX3NpemUodG9hc3RlZF9rZXkpID4gMl4xNiBGUk9NIHRvYXN0ZWRf c2V2ZXJhbDsKK0lOU0VSVCBJTlRPIHRvYXN0ZWRfc2V2ZXJhbCh0b2FzdGVkX2tleSkgVkFM VUVTKHJlcGVhdCgnOTg3NjU0MzIxMCcsIDI2OSkpOworU0VMRUNUIHBnX2NvbHVtbl9zaXpl KHRvYXN0ZWRfa2V5KSA+IDJeMTEgRlJPTSB0b2FzdGVkX3NldmVyYWw7CiAKIFNFTEVDVCBy ZWdleHBfcmVwbGFjZShkYXRhLCAnXiguezEwMH0pLiooLnsxMDB9KSQnLCAnXDEuLlwyJykg RlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBO VUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcx Jyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMWM0Mzk0YWJlYS4uYzRi YzA1OGUyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTY5MDAsNiArNjkw MCw3IEBAIEFURXhlY1NldFN0b3JhZ2UoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xO YW1lLCBOb2RlICpuZXdWYWx1ZSwgTE9DS01PREUgbG9jCiAJRm9ybV9wZ19hdHRyaWJ1dGUg YXR0cnR1cGxlOwogCUF0dHJOdW1iZXIJYXR0bnVtOwogCU9iamVjdEFkZHJlc3MgYWRkcmVz czsKKwlMaXN0Q2VsbCAgICpsYzsKIAogCUFzc2VydChJc0EobmV3VmFsdWUsIFN0cmluZykp OwogCXN0b3JhZ2Vtb2RlID0gc3RyVmFsKG5ld1ZhbHVlKTsKQEAgLTY5NTksNiArNjk2MCwz OCBAQCBBVEV4ZWNTZXRTdG9yYWdlKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFt ZSwgTm9kZSAqbmV3VmFsdWUsIExPQ0tNT0RFIGxvYwogCiAJaGVhcF9mcmVldHVwbGUodHVw bGUpOwogCisJLyoKKwkgKiBBcHBseSB0aGUgY2hhbmdlIHRvIGluZGV4ZXMgYXMgd2VsbC4K KwkgKgorCSAqIFhYWCBzaG91bGQgcHJvYmFibHkgdXNlIHBnX2luZGV4LmluZGtleSB0byBm aW5kIHRoZSByaWdodCBjb2x1bW5zLCBub3QKKwkgKiB0aGUgY29sdW1uIG5hbWUKKwkgKi8K Kwlmb3JlYWNoKGxjLCBSZWxhdGlvbkdldEluZGV4TGlzdChyZWwpKQorCXsKKwkJT2lkICAg ICAgICAgaW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJUmVsYXRpb24gICAgaW5kcmVs OworCisJCWluZHJlbCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIGxvY2ttb2RlKTsKKworCQl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weUF0dE5hbWUoUmVsYXRpb25HZXRSZWxpZChpbmRy ZWwpLCBjb2xOYW1lKTsKKworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCXsK KwkJCWF0dHJ0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHR1cGxlKTsK KwkJCWF0dHJ0dXBsZS0+YXR0c3RvcmFnZSA9IG5ld3N0b3JhZ2U7CisKKwkJCUNhdGFsb2dU dXBsZVVwZGF0ZShhdHRyZWxhdGlvbiwgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKKworCQkJ SW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJ CQkgIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkJCSAgYXR0cnR1cGxlLT5hdHRu dW0pOworCisJCQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisJCX0KKworCQlpbmRleF9jbG9z ZShpbmRyZWwsIGxvY2ttb2RlKTsKKwl9CisKIAl0YWJsZV9jbG9zZShhdHRyZWxhdGlvbiwg Um93RXhjbHVzaXZlTG9jayk7CiAKIAlPYmplY3RBZGRyZXNzU3ViU2V0KGFkZHJlc3MsIFJl bGF0aW9uUmVsYXRpb25JZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdmFjdXVtLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVtLm91dApp bmRleCA5OTk2ZDg4MmQxLi5lMmI5Y2Q5NTRkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3ZhY3V1bS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC92YWN1dW0ub3V0CkBAIC05OCw3ICs5OCw3IEBAIENSRUFURSBUQUJMRSBub19pbmRleF9j bGVhbnVwIChpIElOVCBQUklNQVJZIEtFWSwgdCBURVhUKTsKIENSRUFURSBJTkRFWCBub19p bmRleF9jbGVhbnVwX2lkeCBPTiBub19pbmRleF9jbGVhbnVwKHQpOwogQUxURVIgVEFCTEUg bm9faW5kZXhfY2xlYW51cCBBTFRFUiBDT0xVTU4gdCBTRVQgU1RPUkFHRSBFWFRFUk5BTDsK IElOU0VSVCBJTlRPIG5vX2luZGV4X2NsZWFudXAoaSwgdCkgVkFMVUVTIChnZW5lcmF0ZV9z ZXJpZXMoMSwzMCksCi0gICAgcmVwZWF0KCcxMjM0NTY3ODkwJywzMDApKTsKKyAgICByZXBl YXQoJzEyMzQ1Njc4OTAnLDI2OSkpOwogLS0gaW5kZXggY2xlYW51cCBvcHRpb24gaXMgaWdu b3JlZCBpZiBWQUNVVU0gRlVMTAogVkFDVVVNIChJTkRFWF9DTEVBTlVQIFRSVUUsIEZVTEwg VFJVRSkgbm9faW5kZXhfY2xlYW51cDsKIFZBQ1VVTSAoRlVMTCBUUlVFKSBub19pbmRleF9j bGVhbnVwOwpAQCAtMTEyLDcgKzExMiw3IEBAIEFMVEVSIFRBQkxFIG5vX2luZGV4X2NsZWFu dXAgU0VUICh2YWN1dW1faW5kZXhfY2xlYW51cCA9IHRydWUpOwogVkFDVVVNIG5vX2luZGV4 X2NsZWFudXA7CiAtLSBQYXJhbWV0ZXIgaXMgc2V0IGZvciBib3RoIHRoZSBwYXJlbnQgdGFi bGUgYW5kIGl0cyB0b2FzdCByZWxhdGlvbi4KIElOU0VSVCBJTlRPIG5vX2luZGV4X2NsZWFu dXAoaSwgdCkgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsNjApLAotICAgIHJlcGVhdCgn MTIzNDU2Nzg5MCcsMzAwKSk7CisgICAgcmVwZWF0KCcxMjM0NTY3ODkwJywyNjkpKTsKIERF TEVURSBGUk9NIG5vX2luZGV4X2NsZWFudXAgV0hFUkUgaSA8IDQ1OwogLS0gT25seSB0b2Fz dCBpbmRleCBpcyBjbGVhbmVkIHVwLgogQUxURVIgVEFCTEUgbm9faW5kZXhfY2xlYW51cCBT RVQgKHZhY3V1bV9pbmRleF9jbGVhbnVwID0gZmFsc2UsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC92YWN1dW0uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVt LnNxbAppbmRleCA2OTk4N2Y3NWU5Li5hYWFjZGZlMDgyIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC92YWN1dW0uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Zh Y3V1bS5zcWwKQEAgLTgxLDcgKzgxLDcgQEAgQ1JFQVRFIFRBQkxFIG5vX2luZGV4X2NsZWFu dXAgKGkgSU5UIFBSSU1BUlkgS0VZLCB0IFRFWFQpOwogQ1JFQVRFIElOREVYIG5vX2luZGV4 X2NsZWFudXBfaWR4IE9OIG5vX2luZGV4X2NsZWFudXAodCk7CiBBTFRFUiBUQUJMRSBub19p bmRleF9jbGVhbnVwIEFMVEVSIENPTFVNTiB0IFNFVCBTVE9SQUdFIEVYVEVSTkFMOwogSU5T RVJUIElOVE8gbm9faW5kZXhfY2xlYW51cChpLCB0KSBWQUxVRVMgKGdlbmVyYXRlX3Nlcmll cygxLDMwKSwKLSAgICByZXBlYXQoJzEyMzQ1Njc4OTAnLDMwMCkpOworICAgIHJlcGVhdCgn MTIzNDU2Nzg5MCcsMjY5KSk7CiAtLSBpbmRleCBjbGVhbnVwIG9wdGlvbiBpcyBpZ25vcmVk IGlmIFZBQ1VVTSBGVUxMCiBWQUNVVU0gKElOREVYX0NMRUFOVVAgVFJVRSwgRlVMTCBUUlVF KSBub19pbmRleF9jbGVhbnVwOwogVkFDVVVNIChGVUxMIFRSVUUpIG5vX2luZGV4X2NsZWFu dXA7CkBAIC05NSw3ICs5NSw3IEBAIENSRUFURSBJTkRFWCBub19pbmRleF9jbGVhbnVwX2lk eCBPTiBub19pbmRleF9jbGVhbnVwKHQpOwogVkFDVVVNIG5vX2luZGV4X2NsZWFudXA7CiAt LSBQYXJhbWV0ZXIgaXMgc2V0IGZvciBib3RoIHRoZSBwYXJlbnQgdGFibGUgYW5kIGl0cyB0 b2FzdCByZWxhdGlvbi4KIElOU0VSVCBJTlRPIG5vX2luZGV4X2NsZWFudXAoaSwgdCkgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsNjApLAotICAgIHJlcGVhdCgnMTIzNDU2Nzg5MCcs MzAwKSk7CisgICAgcmVwZWF0KCcxMjM0NTY3ODkwJywyNjkpKTsKIERFTEVURSBGUk9NIG5v X2luZGV4X2NsZWFudXAgV0hFUkUgaSA8IDQ1OwogLS0gT25seSB0b2FzdCBpbmRleCBpcyBj bGVhbmVkIHVwLgogQUxURVIgVEFCTEUgbm9faW5kZXhfY2xlYW51cCBTRVQgKHZhY3V1bV9p bmRleF9jbGVhbnVwID0gZmFsc2UsCi0tIAoyLjI0LjEKCg== --------------AEFA68D318256455A59CACA7--