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.94.2) (envelope-from ) id 1ttnsG-00HD5m-8W for pgsql-bugs@arkaria.postgresql.org; Sun, 16 Mar 2025 13:17:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ttnsE-00E73q-QR for pgsql-bugs@arkaria.postgresql.org; Sun, 16 Mar 2025 13:17:50 +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.94.2) (envelope-from ) id 1ttYsv-003CQg-G4 for pgsql-bugs@lists.postgresql.org; Sat, 15 Mar 2025 21:17:33 +0000 Received: from out-02.pe-bsn.jellyfish.systems ([66.29.159.80]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ttYss-0032A5-38 for pgsql-bugs@lists.postgresql.org; Sat, 15 Mar 2025 21:17:32 +0000 Received: from prod-lbout-phx.jellyfish.systems (bsn-02-6.privateemail.com [198.54.118.197]) by pe-bsn.jellyfish.systems (Postfix) with ESMTPA id 4ZFYwT2N5yz30Px; Sat, 15 Mar 2025 21:17:29 +0000 (UTC) Received: from MTA-14.privateemail.com (unknown [10.50.14.30]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by BSN-02.privateemail.com (Postfix) with ESMTPS id 4ZFYwT1TWVz3hhTl; Sat, 15 Mar 2025 17:17:29 -0400 (EDT) Received: from mta-14.privateemail.com (localhost [127.0.0.1]) by mta-14.privateemail.com (Postfix) with ESMTP id 4ZFYwT0Bkdz3hhTj; Sat, 15 Mar 2025 17:17:29 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=viktorh.net; s=default; t=1742073449; bh=vu1txuLzVNITXRif5mx979Nc5cKQnLBQwsBG3/R62V4=; h=Date:From:To:Cc:In-Reply-To:References:Subject:From; b=p4qwsqwzP8D9cB5F76fREdYg2A+ozfRT0GtKNUrFVp5we7j38DVgbtDAhIBZz3qep bvfnsOd75pImSQDQOGrqpJjubcUJkiiHk5ErJm6oGH6BfA4/pA2IPME7zoLn2vfTcJ GN/FXlCt+meesF1UkB6YaAoYJncOtUEJTzNZlGGAdLTGZQ/R9xaIcF/K0kvVNk0GnZ rpQ0jtJH0a3Uo56jjlvQft29m3gfvVDt+72Fzhq3nQI5dFPkWK+2s9tsyzo+4uuaX7 wUE44TWWzthnZUEMt11crDKVJtKQ1XHr7gs+z67+sye14E6es51wjpqg26oNCIs3Co NZKVq5yzKUsEA== Received: from [192.168.1.100] (unknown [143.58.148.107]) by mta-14.privateemail.com (Postfix) with ESMTPA; Sat, 15 Mar 2025 17:17:26 -0400 (EDT) Date: Sat, 15 Mar 2025 21:17:16 +0000 From: Viktor Holmberg To: Tom Lane Cc: Daniel Gustafsson , pgsql-bugs@lists.postgresql.org Message-ID: In-Reply-To: <3481904.1742055723@sss.pgh.pa.us> References: <790bc1f9-74dc-4b50-94d2-8147315b1556@Spark> <51C655A4-46FB-4A40-BAE5-26A76B31D3EE@yesql.se> <3052531.1741961784@sss.pgh.pa.us> <3074065.1741965229@sss.pgh.pa.us> <3080651.1741969122@sss.pgh.pa.us> <742add6c-02ac-42e4-97a3-f2ebd1520d64@Spark> <3481904.1742055723@sss.pgh.pa.us> Subject: Re: ISN extension - wrong volatility level for isn_weak() function X-Readdle-Message-ID: b08ed3b6-eba7-47f5-b354-5e4ec1fb8632@Spark MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="67d5ee61_1befd79f_5a54" X-Virus-Scanned: ClamAV using ClamSMTP List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --67d5ee61_1befd79f_5a54 Content-Type: multipart/alternative; boundary="67d5ee61_7fdcc233_5a54" --67d5ee61_7fdcc233_5a54 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Oh, sorry=21 Don=E2=80=99t know what I was doing there - not used to this= patch based workflow. Here comes the real patch. This now uses the GUC - that was a lot easier than I thought. One thing I couldn=E2=80=99t figure out:=C2=A0Should I add some sort of c= hange log somewhere, describing what changed in version 1.3 of the ISN ex= tension=3F If so, where=3F /Viktor Holmberg On 15 Mar 2025 at 16:22 +0000, Tom Lane , wrote: > Viktor Holmberg writes: > > On 14 Mar 2025 at 16:18 +0000, Tom Lane , wrote:= > > > No, we'd need to create an update script that uses ALTER =46UNCTION= . > > > Extension scripts are basically frozen once shipped. > > > Ah, thanks for the clarification. I=E2=80=99ve attached a patch that = fixes the volatility. I thought it best to at least get some feedback on = that before I try to dust off my C knowledge and try to fix the GUC stuff= . > > Uh .. looks like you attached a patch for something else altogether. > > If you want a sample extension-updating patch to look at, you > could see 44ba2920644903d7dfceda810e5facdbcbab58a8, or lots of > other examples. > > regards, tom lane --67d5ee61_7fdcc233_5a54 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Oh, sorry= =21 Don=E2=80=99t know what I was doing there - not used to this patch ba= sed workflow. Here comes the real patch.
This now uses the GUC - that wa= s a lot easier than I thought.
One thing I couldn=E2=80=99t fi= gure out:&=23160;Should = I add some sort of change log somewhere, describing what changed in versi= on 1.3 of the ISN extension=3F If so, where=3F

/Viktor Holmberg
On 15 Mar 2025 at 16:22 +0000, Tom = Lane <tgl=40sss.pgh.pa.us>, wrote:
Viktor Holmberg <v=40viktorh.net> writes:
On 14 Mar 2025 at 16:18 +0000, Tom Lane <= ;tgl=40sss.pgh.pa.us>, wrote:
No, we'd need to create an update script th= at uses ALTER =46UNCTION.
Extension scripts are basically frozen once shipped.

Ah, thanks for the clarification. I=E2=80=99= ve attached a patch that fixes the volatility. I thought it best to at le= ast get some feedback on that before I try to dust off my C knowledge and= try to fix the GUC stuff.

Uh .. looks like you attached a patch for something else altogether.

If you want a sample extension-updating patch to look at, you
could see 44ba2920644903d7dfceda810e5facdbcbab58a8, or lots of
other examples.

regards, tom lane
--67d5ee61_7fdcc233_5a54-- --67d5ee61_1befd79f_5a54 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-isn-extension-Make-weak-mode-a-GUC-setting.patch" RnJvbSBkMzkxOTA1MTUzNjcyOWYzYjE3NzkyYmVkZmM5MmRkMWNhYzE1MDViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWt0b3IgSG9sbWJlcmcgPHZAdmlrdG9yaC5uZXQ+CkRhdGU6 IFNhdCwgMTUgTWFyIDIwMjUgMjE6MDc6MDEgKzAwMDAKU3ViamVjdDogW1BBVENIXSBpc24gZXh0 ZW5zaW9uOiBNYWtlIHdlYWsgbW9kZSBhIEdVQyBzZXR0aW5nCgppc25fd2VhayBtb2RlIHVzZWQg dG8gYmUgc2V0dGFibGUgb25seSB1c2luZyB0aGUgaXNuX3dlYWsoYm9vbGVhbikgZnVuY3Rpb24u ClRoaXMgd2Fzbid0IG9wdGltYWwsIGFzIHRoaXMgbWVhbnMgaXQgZG9lc24ndCByZXNwZWN0IHRy YW5zYWN0aW9ucy4KClRoaXMgY2hhbmdlIG1ha2VzIHRoZSBpc24ud2VhayBhIEdVQyBwYXJhbWV0 ZXIgaW5zdGVhZC4KClRoZSBpc25fd2VhayBmdW5jdGlvbnMgYXJlIHJldGFpbmVkIGZvciBiYWNr d2FyZHMgY29tcGF0aWJpbGl0eS4KVGhlIGFsc28gaGFkIGEgYnVnIHdoZXJlIHRoZXkgd2VyZSBt YXJrZWQgSU1NVVRBQkxFLCB3aGVuIGluIGZhY3QKdGhleSBhcmUgVk9MQVRJTEUuIFRoaXMgaXMg YWxzbyBmaXhlZC4KLS0tCiBjb250cmliL2lzbi9NYWtlZmlsZSAgICAgICAgICB8ICAgMiArLQog Y29udHJpYi9pc24vZXhwZWN0ZWQvaXNuLm91dCAgfCAgMTEgKysrCiBjb250cmliL2lzbi9pc24t LTEuMi0tMS4zLnNxbCB8ICAgNyArKwogY29udHJpYi9pc24vaXNuLmMgICAgICAgICAgICAgfCAg MTggKysrLS0KIGNvbnRyaWIvaXNuL2lzbi5jb250cm9sICAgICAgIHwgICAyICstCiBjb250cmli L2lzbi9pc24uaCAgICAgICAgICAgICB8ICAgMSAtCiBjb250cmliL2lzbi9zcWwvaXNuLnNxbCAg ICAgICB8ICAgNSArKwogZG9jL3NyYy9zZ21sL2lzbi5zZ21sICAgICAgICAgfCAxMzkgKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0 aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9pc24v aXNuLS0xLjItLTEuMy5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL2lzbi9NYWtlZmlsZSBiL2Nv bnRyaWIvaXNuL01ha2VmaWxlCmluZGV4IDEwMzc1MDZjNzA1Li4zNWQ5MjQ5ZjNhNyAxMDA2NDQK LS0tIGEvY29udHJpYi9pc24vTWFrZWZpbGUKKysrIGIvY29udHJpYi9pc24vTWFrZWZpbGUKQEAg LTQsNyArNCw3IEBAIE1PRFVMRVMgPSBpc24KIAogRVhURU5TSU9OID0gaXNuCiBEQVRBID0gaXNu LS0xLjEuc3FsIGlzbi0tMS4xLS0xLjIuc3FsIFwKLQlpc24tLTEuMC0tMS4xLnNxbAorCWlzbi0t MS4wLS0xLjEuc3FsIGlzbi0tMS4yLS0xLjMuc3FsCiBQR0ZJTEVERVNDID0gImlzbiAtIGRhdGEg dHlwZXMgZm9yIGludGVybmF0aW9uYWwgcHJvZHVjdCBudW1iZXJpbmcgc3RhbmRhcmRzIgogCiAj IHRoZSBvdGhlciAuaCBmaWxlcyBhcmUgZGF0YSB0YWJsZXMsIHdlIGRvbid0IGluc3RhbGwgdGhv c2UKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaXNuL2V4cGVjdGVkL2lzbi5vdXQgYi9jb250cmliL2lz bi9leHBlY3RlZC9pc24ub3V0CmluZGV4IDJmMDViN2ViODYxLi5iN2FkZGI1MDhkZCAxMDA2NDQK LS0tIGEvY29udHJpYi9pc24vZXhwZWN0ZWQvaXNuLm91dAorKysgYi9jb250cmliL2lzbi9leHBl Y3RlZC9pc24ub3V0CkBAIC0yNzksNiArMjc5LDE3IEBAIEZST00gKFZBTFVFUyAoJzk3ODAxMjM0 NTY3ODYnLCAnVVBDJyksCiAgOTc3MTIzNDU2NzAwMyB8IElTU04gIHwgdCAgfCAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICB8IAogKDMgcm93cykKIAorU0VMRUNUICcyMjIyMjIyMjIyMjIxJzo6ZWFu MTM7CitFUlJPUjogIGludmFsaWQgY2hlY2sgZGlnaXQgZm9yIEVBTjEzIG51bWJlcjogIjIyMjIy MjIyMjIyMjEiLCBzaG91bGQgYmUgMgorTElORSAxOiBTRUxFQ1QgJzIyMjIyMjIyMjIyMjEnOjpl YW4xMzsKKyAgICAgICAgICAgICAgIF4KK1NFVCBpc24ud2VhayBUTyBUUlVFOworU0VMRUNUICcy MjIyMjIyMjIyMjIxJzo6ZWFuMTM7CisgICAgICBlYW4xMyAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLQorIDIyMi0yMjIyMjIyMjItMiEKKygxIHJvdykKKwogLS0KIC0tIGNsZWFudXAKIC0tCmRp ZmYgLS1naXQgYS9jb250cmliL2lzbi9pc24tLTEuMi0tMS4zLnNxbCBiL2NvbnRyaWIvaXNuL2lz bi0tMS4yLS0xLjMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4y NmQxNjYyYzJiOAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvaXNuL2lzbi0tMS4yLS0xLjMu c3FsCkBAIC0wLDAgKzEsNyBAQAorQUxURVIgRlVOQ1RJT04gaXNuX3dlYWsoKSBWT0xBVElMRTsK K0FMVEVSIEZVTkNUSU9OIGlzbl93ZWFrKGJvb2xlYW4pIFZPTEFUSUxFOworCitDT01NRU5UIE9O IEZVTkNUSU9OIGlzbl93ZWFrKGJvb2xlYW4pIElTCisnU2V0cyB0aGUgd2VhayBpbnB1dCBtb2Rl LCBhbmQgcmV0dXJucyB0aGUgbmV3IHNldHRpbmcuIFRoaXMgZnVuY3Rpb24gaXMgcmV0YWluZWQg Zm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFRoZSByZWNvbW1lbmRlZCB3YXkgdG8gc2V0IHdl YWsgbW9kZSBpcyB2aWEgdGhlIGlzbi53ZWFrIEdVQyBwYXJhbWV0ZXIuJzsKK0NPTU1FTlQgT04g RlVOQ1RJT04gaXNuX3dlYWsoKSBJUworJ1JldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRo ZSB3ZWFrIG1vZGUuIFRoaXMgZnVuY3Rpb24gaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBh dGliaWxpdHkuIFVzZXJzIHNob3VsZCBjaGVjayB0aGUgdmFsdWUgb2YgaXNuLndlYWsgaW5zdGVh ZC4nOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9pc24vaXNuLmMgYi9jb250cmliL2lzbi9pc24uYwpp bmRleCBkYjc2NWVlNDkwZC4uODJjMjM5ZjBlYzEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaXNuL2lz bi5jCisrKyBiL2NvbnRyaWIvaXNuL2lzbi5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi VVBDLmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImlzbi5oIgorI2luY2x1ZGUgInV0 aWxzL2d1Yy5oIgogCiBQR19NT0RVTEVfTUFHSUM7CiAKQEAgLTkyOSw2ICs5MzAsMTggQEAgX1BH X2luaXQodm9pZCkKIAkJaWYgKCFjaGVja190YWJsZShVUENfcmFuZ2UsIFVQQ19pbmRleCkpCiAJ CQllbG9nKEVSUk9SLCAiVVBDIGZhaWxlZCBjaGVjayIpOwogCX0KKworCS8qIERlZmluZSBhIEdV QyB2YXJpYWJsZSBmb3Igd2VhayBtb2RlLiAqLworCURlZmluZUN1c3RvbUJvb2xWYXJpYWJsZSgi aXNuLndlYWsiLAorCQkJCQkJCSAiQWNjZXB0IGludmFsaWQgaXNucyIsCisJCQkJCQkJICJXaGVu IGVuYWJsZWQsIGludmFsaWQgbnVtYmVycyBhcmUgYWNjZXB0ZWQgYnV0IGZsYWdnZWQgd2l0aCBh biBleGNsYW1hdGlvbiBtYXJrICghKSwgaW5kaWNhdGluZyBhbiBpbmNvcnJlY3QgY2hlY2sgZGln aXQuIiwKKwkJCQkJCQkgJmdfd2VhaywKKwkJCQkJCQkgZmFsc2UsCisJCQkJCQkJIFBHQ19VU0VS U0VULAorCQkJCQkJCSAwLAorCQkJCQkJCSBOVUxMLAorCQkJCQkJCSBOVUxMLAorCQkJCQkJCSBO VUxMKTsKIH0KIAogLyogaXNuX291dApAQCAtMTEwOSwxNyArMTEyMiwxMiBAQCBtYWtlX3ZhbGlk KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIC8qIHRoaXMgZnVuY3Rpb24gdGVtcG9yYXJpbHkgc2V0cyB3 ZWFrIGlucHV0IGZsYWcKICAqICh0byBsb3NlIHRoZSBzdHJpY3RuZXNzIG9mIGNoZWNrIGRpZ2l0 IGFjY2VwdGFuY2UpCi0gKiBJdCdzIGEgaGVscGVyIGZ1bmN0aW9uLCBub3QgaW50ZW5kZWQgdG8g YmUgdXNlZCEhCiAgKi8KIFBHX0ZVTkNUSU9OX0lORk9fVjEoYWNjZXB0X3dlYWtfaW5wdXQpOwog RGF0dW0KIGFjY2VwdF93ZWFrX2lucHV0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jaWZkZWYgSVNO X1dFQUtfTU9ERQogCWdfd2VhayA9IFBHX0dFVEFSR19CT09MKDApOwotI2Vsc2UKLQkvKiBmdW5j dGlvbiBoYXMgbm8gZWZmZWN0ICovCi0jZW5kaWYJCQkJCQkJLyogSVNOX1dFQUtfTU9ERSAqLwog CVBHX1JFVFVSTl9CT09MKGdfd2Vhayk7CiB9CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaXNuL2lz bi5jb250cm9sIGIvY29udHJpYi9pc24vaXNuLmNvbnRyb2wKaW5kZXggMWNiNWUyYjIzNDAuLmU3 ZGFlYTUyYjg0IDEwMDY0NAotLS0gYS9jb250cmliL2lzbi9pc24uY29udHJvbAorKysgYi9jb250 cmliL2lzbi9pc24uY29udHJvbApAQCAtMSw2ICsxLDYgQEAKICMgaXNuIGV4dGVuc2lvbgogY29t bWVudCA9ICdkYXRhIHR5cGVzIGZvciBpbnRlcm5hdGlvbmFsIHByb2R1Y3QgbnVtYmVyaW5nIHN0 YW5kYXJkcycKLWRlZmF1bHRfdmVyc2lvbiA9ICcxLjInCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4z JwogbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvaXNuJwogcmVsb2NhdGFibGUgPSB0cnVlCiB0 cnVzdGVkID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9pc24vaXNuLmggYi9jb250cmliL2lz bi9pc24uaAppbmRleCAwMzhlYjM2MmMzOS4uMzk5ODk2YWQ0MTcgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvaXNuL2lzbi5oCisrKyBiL2NvbnRyaWIvaXNuL2lzbi5oCkBAIC0xOCw3ICsxOCw2IEBACiAj aW5jbHVkZSAiZm1nci5oIgogCiAjdW5kZWYgSVNOX0RFQlVHCi0jZGVmaW5lIElTTl9XRUFLX01P REUKIAogLyoKICAqCXVpbnQ2NCBpcyB0aGUgaW50ZXJuYWwgc3RvcmFnZSBmb3JtYXQgZm9yIElT TnMuCmRpZmYgLS1naXQgYS9jb250cmliL2lzbi9zcWwvaXNuLnNxbCBiL2NvbnRyaWIvaXNuL3Nx bC9pc24uc3FsCmluZGV4IDJjMmVhMDc3ZDFlLi4zMTU0ZGM3YThlNyAxMDA2NDQKLS0tIGEvY29u dHJpYi9pc24vc3FsL2lzbi5zcWwKKysrIGIvY29udHJpYi9pc24vc3FsL2lzbi5zcWwKQEAgLTEy MCw2ICsxMjAsMTEgQEAgRlJPTSAoVkFMVUVTICgnOTc4MDEyMzQ1Njc4NicsICdVUEMnKSwKICAg ICAgIEFTIGEoc3RyLHR5cCksCiAgICAgIExBVEVSQUwgcGdfaW5wdXRfZXJyb3JfaW5mbyhhLnN0 ciwgYS50eXApIGFzIGVycmluZm87CiAKK1NFTEVDVCAnMjIyMjIyMjIyMjIyMSc6OmVhbjEzOwor U0VUIGlzbi53ZWFrIFRPIFRSVUU7CitTRUxFQ1QgJzIyMjIyMjIyMjIyMjEnOjplYW4xMzsKKwor CiAtLQogLS0gY2xlYW51cAogLS0KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9pc24uc2dtbCBi L2RvYy9zcmMvc2dtbC9pc24uc2dtbAppbmRleCA0NWE4NjdkOThjMi4uNzVkNWFmZDI2YjIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pc24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaXNuLnNn bWwKQEAgLTIyNCwxNSArMjI0LDcyIEBACiAgIDwvcGFyYT4KICA8L3NlY3QyPgogCisgPHNlY3Qy IGlkPSJpc24tZ3VjLXBhcmFtcyI+CisgIDx0aXRsZT5HVUMgUGFyYW1ldGVyczwvdGl0bGU+Cisg IDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtaXNuLXdlYWsiPgorICAg IDx0ZXJtPgorICAgICA8dmFybmFtZT5pc24ud2VhazwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48 L3R5cGU+KQorICAgICA8aW5kZXh0ZXJtPgorICAgICAgPHByaW1hcnk+PHZhcm5hbWU+aXNuLndl YWs8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICA8L2lu ZGV4dGVybT4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFNldHMgdGhlIHdlYWsgaW5wdXQgbW9kZS4gRGVmYXVsdDogZmFsc2UgKHN0cm9uZyBtb2RlKQor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zh cmlhYmxlbGlzdD4KKyAgPHBhcmE+CisgICA8Zmlyc3R0ZXJtPldlYWs8L2ZpcnN0dGVybT4gbW9k ZSBpcyB1c2VkIHRvIGJlIGFibGUgdG8gaW5zZXJ0IGludmFsaWQgZGF0YQorICAgaW50byBhIHRh YmxlLiBJbnZhbGlkIG1lYW5zIHRoZSBjaGVjayBkaWdpdCBpcyB3cm9uZywgbm90IHRoYXQgdGhl cmUgYXJlCisgICBtaXNzaW5nIG51bWJlcnMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdo eSB3b3VsZCB5b3Ugd2FudCB0byB1c2UgdGhlIHdlYWsgbW9kZT8gV2VsbCwgaXQgY291bGQgYmUg dGhhdAorICAgeW91IGhhdmUgYSBodWdlIGNvbGxlY3Rpb24gb2YgSVNCTiBudW1iZXJzLCBhbmQg dGhhdCB0aGVyZSBhcmUgc28gbWFueSBvZgorICAgdGhlbSB0aGF0IGZvciB3ZWlyZCByZWFzb25z IHNvbWUgaGF2ZSB0aGUgd3JvbmcgY2hlY2sgZGlnaXQgKHBlcmhhcHMgdGhlCisgICBudW1iZXJz IHdlcmUgc2Nhbm5lZCBmcm9tIGEgcHJpbnRlZCBsaXN0IGFuZCB0aGUgT0NSIGdvdCB0aGUgbnVt YmVycyB3cm9uZywKKyAgIHBlcmhhcHMgdGhlIG51bWJlcnMgd2VyZSBtYW51YWxseSBjYXB0dXJl ZC4uLiB3aG8ga25vd3MpLiBBbnl3YXksIHRoZSBwb2ludAorICAgaXMgeW91IG1pZ2h0IHdhbnQg dG8gY2xlYW4gdGhlIG1lc3MgdXAsIGJ1dCB5b3Ugc3RpbGwgd2FudCB0byBiZSBhYmxlIHRvCisg ICBoYXZlIGFsbCB0aGUgbnVtYmVycyBpbiB5b3VyIGRhdGFiYXNlIGFuZCBtYXliZSB1c2UgYW4g ZXh0ZXJuYWwgdG9vbCB0bworICAgbG9jYXRlIHRoZSBpbnZhbGlkIG51bWJlcnMgaW4gdGhlIGRh dGFiYXNlIHNvIHlvdSBjYW4gdmVyaWZ5IHRoZQorICAgaW5mb3JtYXRpb24gYW5kIHZhbGlkYXRl IGl0IG1vcmUgZWFzaWx5OyBzbyBmb3IgZXhhbXBsZSB5b3UnZCB3YW50IHRvCisgICBzZWxlY3Qg YWxsIHRoZSBpbnZhbGlkIG51bWJlcnMgaW4gdGhlIHRhYmxlLgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBXaGVuIHlvdSBpbnNlcnQgaW52YWxpZCBudW1iZXJzIGluIGEgdGFibGUgdXNpbmcg dGhlIHdlYWsgbW9kZSwgdGhlIG51bWJlcgorICAgd2lsbCBiZSBpbnNlcnRlZCB3aXRoIHRoZSBj b3JyZWN0ZWQgY2hlY2sgZGlnaXQsIGJ1dCBpdCB3aWxsIGJlIGRpc3BsYXllZAorICAgd2l0aCBh biBleGNsYW1hdGlvbiBtYXJrICg8bGl0ZXJhbD4hPC9saXRlcmFsPikgYXQgdGhlIGVuZCwgZm9y IGV4YW1wbGUKKyAgIDxsaXRlcmFsPjAtMTEtMDAwMzIyLTUhPC9saXRlcmFsPi4gIFRoaXMgaW52 YWxpZCBtYXJrZXIgY2FuIGJlIGNoZWNrZWQgd2l0aAorICAgdGhlIDxmdW5jdGlvbj5pc192YWxp ZDwvZnVuY3Rpb24+IGZ1bmN0aW9uIGFuZCBjbGVhcmVkIHdpdGggdGhlCisgICA8ZnVuY3Rpb24+ bWFrZV92YWxpZDwvZnVuY3Rpb24+IGZ1bmN0aW9uLgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBZb3UgY2FuIGFsc28gZm9yY2UgdGhlIGluc2VydGlvbiBvZiBpbnZhbGlkIG51bWJlcnMgZXZl biB3aGVuIG5vdCBpbiB0aGUKKyAgIHdlYWsgbW9kZSwgYnkgYXBwZW5kaW5nIHRoZSA8bGl0ZXJh bD4hPC9saXRlcmFsPiBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUKKyAgIG51bWJlci4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgQW5vdGhlciBzcGVjaWFsIGZlYXR1cmUgaXMgdGhhdCBk dXJpbmcgaW5wdXQsIHlvdSBjYW4gd3JpdGUKKyAgIDxsaXRlcmFsPj88L2xpdGVyYWw+IGluIHBs YWNlIG9mIHRoZSBjaGVjayBkaWdpdCwgYW5kIHRoZSBjb3JyZWN0IGNoZWNrIGRpZ2l0CisgICB3 aWxsIGJlIGluc2VydGVkIGF1dG9tYXRpY2FsbHkuCisgIDwvcGFyYT4KKzwvc2VjdDI+CisKICA8 c2VjdDIgaWQ9Imlzbi1mdW5jcy1vcHMiPgogICA8dGl0bGU+RnVuY3Rpb25zIGFuZCBPcGVyYXRv cnM8L3RpdGxlPgogCiAgIDxwYXJhPgogICAgVGhlIDxmaWxlbmFtZT5pc248L2ZpbGVuYW1lPiBt b2R1bGUgcHJvdmlkZXMgdGhlIHN0YW5kYXJkIGNvbXBhcmlzb24gb3BlcmF0b3JzLAotICAgcGx1 cyBCLXRyZWUgYW5kIGhhc2ggaW5kZXhpbmcgc3VwcG9ydCBmb3IgYWxsIHRoZXNlIGRhdGEgdHlw ZXMuICBJbgotICAgYWRkaXRpb24gdGhlcmUgYXJlIHNldmVyYWwgc3BlY2lhbGl6ZWQgZnVuY3Rp b25zOyBzaG93biBpbiA8eHJlZiBsaW5rZW5kPSJpc24tZnVuY3Rpb25zIi8+LgotICAgSW4gdGhp cyB0YWJsZSwKLSAgIDx0eXBlPmlzbjwvdHlwZT4gbWVhbnMgYW55IG9uZSBvZiB0aGUgbW9kdWxl J3MgZGF0YSB0eXBlcy4KKyAgIHBsdXMgQi10cmVlIGFuZCBoYXNoIGluZGV4aW5nIHN1cHBvcnQg Zm9yIGFsbCB0aGVzZSBkYXRhIHR5cGVzLiBJbgorICAgYWRkaXRpb24sIHRoZXJlIGFyZSBzZXZl cmFsIHNwZWNpYWxpemVkIGZ1bmN0aW9ucywgc2hvd24gaW4gPHhyZWYgbGlua2VuZD0iaXNuLWZ1 bmN0aW9ucyIvPi4KKyAgIEluIHRoaXMgdGFibGUsIDx0eXBlPmlzbjwvdHlwZT4gbWVhbnMgYW55 IG9uZSBvZiB0aGUgbW9kdWxlJ3MgZGF0YSB0eXBlcy4KICAgPC9wYXJhPgogCiAgIDx0YWJsZSBp ZD0iaXNuLWZ1bmN0aW9ucyI+CkBAIC0yNTIsODkgKzMwOSw1MyBAQAogICAgICA8dGJvZHk+CiAg ICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJmdW5jX3NpZ25hdHVyZSI+Ci0gICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+aXNuX3dl YWs8L3ByaW1hcnk+PC9pbmRleHRlcm0+Ci0gICAgICAgIDxmdW5jdGlvbj5pc25fd2VhazwvZnVu Y3Rpb24+ICggPHR5cGU+Ym9vbGVhbjwvdHlwZT4gKQotICAgICAgICA8cmV0dXJudmFsdWU+Ym9v bGVhbjwvcmV0dXJudmFsdWU+CisgICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+bWFrZV92YWxp ZDwvcHJpbWFyeT48L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPm1ha2VfdmFsaWQ8L2Z1 bmN0aW9uPiAoIDx0eXBlPmlzbjwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+aXNuPC9y ZXR1cm52YWx1ZT4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFNldHMg dGhlIHdlYWsgaW5wdXQgbW9kZSwgYW5kIHJldHVybnMgbmV3IHNldHRpbmcuCisgICAgICAgIFZh bGlkYXRlcyBhbiBpbnZhbGlkIG51bWJlciAoY2xlYXJzIHRoZSBpbnZhbGlkIGZsYWcpLgogICAg ICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+CiAKICAgICAgIDxyb3c+CiAgICAgICAg PGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJl Ij4KLSAgICAgICAgPGZ1bmN0aW9uPmlzbl93ZWFrPC9mdW5jdGlvbj4gKCkKKyAgICAgICAgPGlu ZGV4dGVybT48cHJpbWFyeT5pc192YWxpZDwvcHJpbWFyeT48L2luZGV4dGVybT4KKyAgICAgICAg PGZ1bmN0aW9uPmlzX3ZhbGlkPC9mdW5jdGlvbj4gKCA8dHlwZT5pc248L3R5cGU+ICkKICAgICAg ICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAg ICAgICA8cGFyYT4KLSAgICAgICAgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIHdl YWsgbW9kZS4KKyAgICAgICAgQ2hlY2tzIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIGludmFsaWQg ZmxhZy4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCiAgICAgICA8cm93 PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5j X3NpZ25hdHVyZSI+Ci0gICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+bWFrZV92YWxpZDwvcHJp bWFyeT48L2luZGV4dGVybT4KLSAgICAgICAgPGZ1bmN0aW9uPm1ha2VfdmFsaWQ8L2Z1bmN0aW9u PiAoIDx0eXBlPmlzbjwvdHlwZT4gKQotICAgICAgICA8cmV0dXJudmFsdWU+aXNuPC9yZXR1cm52 YWx1ZT4KKyAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5pc25fd2VhazwvcHJpbWFyeT48L2lu ZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPmlzbl93ZWFrPC9mdW5jdGlvbj4gKCA8dHlwZT5i b29sZWFuPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1 ZT4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFZhbGlkYXRlcyBhbiBp bnZhbGlkIG51bWJlciAoY2xlYXJzIHRoZSBpbnZhbGlkIGZsYWcpLgorICAgICAgICBTZXRzIHRo ZSB3ZWFrIGlucHV0IG1vZGUsIGFuZCByZXR1cm5zIHRoZSBuZXcgc2V0dGluZy4KKyAgICAgICAg VGhpcyBmdW5jdGlvbiBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gCisg ICAgICAgIFRoZSByZWNvbW1lbmRlZCB3YXkgdG8gc2V0IHdlYWsgbW9kZSBpcyB2aWEgdGhlIDx2 YXJuYW1lPmlzbi53ZWFrPC92YXJuYW1lPiBHVUMgcGFyYW1ldGVyLgogICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICAgPC9yb3c+CiAKICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5IHJvbGU9 ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KLSAgICAgICAg PGluZGV4dGVybT48cHJpbWFyeT5pc192YWxpZDwvcHJpbWFyeT48L2luZGV4dGVybT4KLSAgICAg ICAgPGZ1bmN0aW9uPmlzX3ZhbGlkPC9mdW5jdGlvbj4gKCA8dHlwZT5pc248L3R5cGU+ICkKKyAg ICAgICAgPGZ1bmN0aW9uPmlzbl93ZWFrPC9mdW5jdGlvbj4gKCkKICAgICAgICAgPHJldHVybnZh bHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4K LSAgICAgICAgQ2hlY2tzIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIGludmFsaWQgZmxhZy4KKyAg ICAgICAgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIHdlYWsgbW9kZS4KKyAgICAg ICAgVGhpcyBmdW5jdGlvbiBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4K KyAgICAgICAgVXNlcnMgc2hvdWxkIGNoZWNrIHRoZSB2YWx1ZSBvZiA8dmFybmFtZT5pc24ud2Vh azwvdmFybmFtZT4gaW5zdGVhZC4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93 PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgotCi0gIDxwYXJhPgot ICAgPGZpcnN0dGVybT5XZWFrPC9maXJzdHRlcm0+IG1vZGUgaXMgdXNlZCB0byBiZSBhYmxlIHRv IGluc2VydCBpbnZhbGlkIGRhdGEKLSAgIGludG8gYSB0YWJsZS4gSW52YWxpZCBtZWFucyB0aGUg Y2hlY2sgZGlnaXQgaXMgd3JvbmcsIG5vdCB0aGF0IHRoZXJlIGFyZQotICAgbWlzc2luZyBudW1i ZXJzLgotICA8L3BhcmE+Ci0KLSAgPHBhcmE+Ci0gICBXaHkgd291bGQgeW91IHdhbnQgdG8gdXNl IHRoZSB3ZWFrIG1vZGU/IFdlbGwsIGl0IGNvdWxkIGJlIHRoYXQKLSAgIHlvdSBoYXZlIGEgaHVn ZSBjb2xsZWN0aW9uIG9mIElTQk4gbnVtYmVycywgYW5kIHRoYXQgdGhlcmUgYXJlIHNvIG1hbnkg b2YKLSAgIHRoZW0gdGhhdCBmb3Igd2VpcmQgcmVhc29ucyBzb21lIGhhdmUgdGhlIHdyb25nIGNo ZWNrIGRpZ2l0IChwZXJoYXBzIHRoZQotICAgbnVtYmVycyB3ZXJlIHNjYW5uZWQgZnJvbSBhIHBy aW50ZWQgbGlzdCBhbmQgdGhlIE9DUiBnb3QgdGhlIG51bWJlcnMgd3JvbmcsCi0gICBwZXJoYXBz IHRoZSBudW1iZXJzIHdlcmUgbWFudWFsbHkgY2FwdHVyZWQuLi4gd2hvIGtub3dzKS4gQW55d2F5 LCB0aGUgcG9pbnQKLSAgIGlzIHlvdSBtaWdodCB3YW50IHRvIGNsZWFuIHRoZSBtZXNzIHVwLCBi dXQgeW91IHN0aWxsIHdhbnQgdG8gYmUgYWJsZSB0bwotICAgaGF2ZSBhbGwgdGhlIG51bWJlcnMg aW4geW91ciBkYXRhYmFzZSBhbmQgbWF5YmUgdXNlIGFuIGV4dGVybmFsIHRvb2wgdG8KLSAgIGxv Y2F0ZSB0aGUgaW52YWxpZCBudW1iZXJzIGluIHRoZSBkYXRhYmFzZSBzbyB5b3UgY2FuIHZlcmlm eSB0aGUKLSAgIGluZm9ybWF0aW9uIGFuZCB2YWxpZGF0ZSBpdCBtb3JlIGVhc2lseTsgc28gZm9y IGV4YW1wbGUgeW91J2Qgd2FudCB0bwotICAgc2VsZWN0IGFsbCB0aGUgaW52YWxpZCBudW1iZXJz IGluIHRoZSB0YWJsZS4KLSAgPC9wYXJhPgotCi0gIDxwYXJhPgotICAgV2hlbiB5b3UgaW5zZXJ0 IGludmFsaWQgbnVtYmVycyBpbiBhIHRhYmxlIHVzaW5nIHRoZSB3ZWFrIG1vZGUsIHRoZSBudW1i ZXIKLSAgIHdpbGwgYmUgaW5zZXJ0ZWQgd2l0aCB0aGUgY29ycmVjdGVkIGNoZWNrIGRpZ2l0LCBi dXQgaXQgd2lsbCBiZSBkaXNwbGF5ZWQKLSAgIHdpdGggYW4gZXhjbGFtYXRpb24gbWFyayAoPGxp dGVyYWw+ITwvbGl0ZXJhbD4pIGF0IHRoZSBlbmQsIGZvciBleGFtcGxlCi0gICA8bGl0ZXJhbD4w LTExLTAwMDMyMi01ITwvbGl0ZXJhbD4uICBUaGlzIGludmFsaWQgbWFya2VyIGNhbiBiZSBjaGVj a2VkIHdpdGgKLSAgIHRoZSA8ZnVuY3Rpb24+aXNfdmFsaWQ8L2Z1bmN0aW9uPiBmdW5jdGlvbiBh bmQgY2xlYXJlZCB3aXRoIHRoZQotICAgPGZ1bmN0aW9uPm1ha2VfdmFsaWQ8L2Z1bmN0aW9uPiBm dW5jdGlvbi4KLSAgPC9wYXJhPgotCi0gIDxwYXJhPgotICAgWW91IGNhbiBhbHNvIGZvcmNlIHRo ZSBpbnNlcnRpb24gb2YgaW52YWxpZCBudW1iZXJzIGV2ZW4gd2hlbiBub3QgaW4gdGhlCi0gICB3 ZWFrIG1vZGUsIGJ5IGFwcGVuZGluZyB0aGUgPGxpdGVyYWw+ITwvbGl0ZXJhbD4gY2hhcmFjdGVy IGF0IHRoZSBlbmQgb2YgdGhlCi0gICBudW1iZXIuCi0gIDwvcGFyYT4KLQotICA8cGFyYT4KLSAg IEFub3RoZXIgc3BlY2lhbCBmZWF0dXJlIGlzIHRoYXQgZHVyaW5nIGlucHV0LCB5b3UgY2FuIHdy aXRlCi0gICA8bGl0ZXJhbD4/PC9saXRlcmFsPiBpbiBwbGFjZSBvZiB0aGUgY2hlY2sgZGlnaXQs IGFuZCB0aGUgY29ycmVjdCBjaGVjayBkaWdpdAotICAgd2lsbCBiZSBpbnNlcnRlZCBhdXRvbWF0 aWNhbGx5LgotICA8L3BhcmE+CiAgPC9zZWN0Mj4KIAogIDxzZWN0MiBpZD0iaXNuLWV4YW1wbGVz Ij4KQEAgLTM2NiwxMSArMzg3LDExIEBAIFNFTEVDVCBpc3NuKCczMjUxMjMxPycpOwogU0VMRUNU IGlzbW4oJzk3OTA0NzIxMzU0Mj8nKTsKIAogLS1Vc2luZyB0aGUgd2VhayBtb2RlOgotU0VMRUNU IGlzbl93ZWFrKHRydWUpOworU0VUIGlzbi53ZWFrIFRPIHRydWU7CiBJTlNFUlQgSU5UTyB0ZXN0 IFZBTFVFUygnOTc4LTAtMTEtMDAwNTMzLTQnKTsKIElOU0VSVCBJTlRPIHRlc3QgVkFMVUVTKCc5 NzgwMTQxMjE5MzA3Jyk7CiBJTlNFUlQgSU5UTyB0ZXN0IFZBTFVFUygnMi0yMDUtMDA4NzYtWCcp OwotU0VMRUNUIGlzbl93ZWFrKGZhbHNlKTsKK1NFVCBpc24ud2VhayBUTyBmYWxzZTsKIAogU0VM RUNUIGlkIEZST00gdGVzdCBXSEVSRSBOT1QgaXNfdmFsaWQoaWQpOwogVVBEQVRFIHRlc3QgU0VU IGlkID0gbWFrZV92YWxpZChpZCkgV0hFUkUgaWQgPSAnMi0yMDUtMDA4NzYtWCEnOwotLSAKMi40 OC4xCgo= --67d5ee61_1befd79f_5a54--