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 1rPNgF-00BAqn-RN for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jan 2024 14:11:13 +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 1rPNgE-00FewT-W9 for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jan 2024 14:11:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rPNgD-00FewL-1Y for pgsql-hackers@lists.postgresql.org; Mon, 15 Jan 2024 14:11:10 +0000 Received: from out3-smtp.messagingengine.com ([66.111.4.27]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rPNg6-001wQ7-NB for pgsql-hackers@lists.postgresql.org; Mon, 15 Jan 2024 14:11:08 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id E3AC45C0161; Mon, 15 Jan 2024 09:10:59 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Mon, 15 Jan 2024 09:10:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1705327859; x= 1705414259; bh=Aa/qy32FDChPkCJD1io1fHs4zTgbD+0kjb/ScTLnIvA=; b=O FuA6vskYbimOYQi9pomxKyDsQRLPZKI/yRkYlMQh80z2RB8vyOeuJYkyAkn624PH YnrTdjbuHyw8Z7S7LH2lDCquwphV71ZBsc6JAPPlXKA7SIrl0Z8ElreDehGxOVAv 9VLUJ2GxgnSPTk4zaEaXYT9kDsIywIiTl8HRlsW2r3OF1VOvFDYoTCwSIvJXta3Q 3qWKrxXl00MxiQDR3wnR3jv2+tZA9DQf+78W6MRMD3Q2BEwyc0RiokpHmjHk6KBT cS4Z4mXM/GxavINfGuLt6Hpni7s1jafKKgGn5+wTODUN84DrIkVWuMlk+u+HFOD8 180wqjRraz6vk2orEn7Pg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1705327859; x=1705414259; bh=Aa/qy32FDChPkCJD1io1fHs4zTgb D+0kjb/ScTLnIvA=; b=TCLC7f8xqn6zjPEeq7ha/5tE8GBigJVR7mCw5QqrP8fs 97OVlKI6RTb1gdxGUzsuRDgQZbxz75aLYJ5/tvE/SVG3SBVj6jjCcFs0dhRIOlTa htn+YMKHwd/gwX6cg6OVYFvdGEd+uIpLCrkUXgTUjPHUUhnKlyv0A86DipZMj1/7 3EwYohAajye1qDNActDEfzx/mwXO2uXAwWzjZSQ6Vmvzyvyq+NEVZVP3rl3e5Kmn Pu/PKlF/L6HVjwTWJ3FH/PXRpJRBC9GU8han35DUO7PEIQ0+3rOKqVPUmm6Hr72W g8MnPcWdt2w6a4ItWR8KuX9X+hB5C8s7oUGrsaw1LQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdejuddgiedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertddvjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhgqe enucggtffrrghtthgvrhhnpeektdeutdfhvdfhveeigfffteegvdejvdfhhfevfeevgfdt gfelgeehieevhffgieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrih hlfhhrohhmpehpvghtvghrsegvihhsvghnthhrrghuthdrohhrgh X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 15 Jan 2024 09:10:58 -0500 (EST) Content-Type: multipart/mixed; boundary="------------YEDrB009eKsmFLwHmDEbVC6H" Message-ID: Date: Mon, 15 Jan 2024 15:10:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: More new SQL/JSON item methods Content-Language: en-US To: Jeevan Chalke Cc: Andrew Dunstan , PostgreSQL Hackers References: <6d4feb29-6ced-a7b0-2c15-42d3e8e201f7@eisentraut.org> From: Peter Eisentraut In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------YEDrB009eKsmFLwHmDEbVC6H Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Attached are two small fixup patches for your patch set. In the first one, I simplified the grammar for the .decimal() method. It seemed a bit overkill to build a whole list structure when all we need are 0, 1, or 2 arguments. Per SQL standard, the precision and scale arguments are unsigned integers, so unary plus and minus signs are not supported. So my patch removes that support, but I didn't adjust the regression tests for that. Also note that in your 0002 patch, the datetime precision is similarly unsigned, so that's consistent. By the way, in your 0002 patch, don't see the need for the separate datetime_method grammar rule. You can fold that into accessor_op. Overall, I think it would be better if you combined all three of these patches into one. Right now, you have arranged these as incremental features, and as a result of that, the additions to the JsonPathItemType enum and the grammar keywords etc. are ordered in the way you worked on these features, I guess. It would be good to maintain a bit of sanity to put all of this together and order all the enums and everything else for example in the order they are in the sql_features.txt file (which is alphabetical, I suppose). At this point I suspect we'll end up committing this whole feature set together anyway, so we might as well organize it that way. --------------YEDrB009eKsmFLwHmDEbVC6H Content-Type: text/plain; charset=UTF-8; name="0001-fixup-Implement-jsonpath-.number-.decimal-pr.patch.nocfbot" Content-Disposition: attachment; filename*0="0001-fixup-Implement-jsonpath-.number-.decimal-pr.patch.nocf"; filename*1="bot" Content-Transfer-Encoding: base64 RnJvbSA4MWUzMzBhMjQzZDg1ZGZmN2Y2NGFkZjE3ODE1MjU4ZTI3NjRlYTAxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAxNSBKYW4gMjAyNCAxNDoxMTozNiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMS8yXSBmaXh1cCEgSW1wbGVtZW50IGpzb25wYXRoIC5udW1iZXIoKSwgLmRl Y2ltYWwoW3ByZWNpc2lvbgogWywgc2NhbGVdXSksIC5iaWdpbnQoKSwgYW5kIC5pbnRlZ2Vy KCkgbWV0aG9kcwoKLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZ3JhbS55 IHwgNDMgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBp bnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbnBhdGhfZ3JhbS55IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25wYXRoX2dyYW0ueQppbmRleCAyNGMzMTA0N2ZmZC4uOWMwNmMzZjZjYjkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueQpAQCAtODksOSArODksOSBAQCBzdGF0 aWMgYm9vbCBtYWtlSXRlbUxpa2VSZWdleChKc29uUGF0aFBhcnNlSXRlbSAqZXhwciwKICV0 eXBlCTx2YWx1ZT4JCXNjYWxhcl92YWx1ZSBwYXRoX3ByaW1hcnkgZXhwciBhcnJheV9hY2Nl c3NvcgogCQkJCQlhbnlfcGF0aCBhY2Nlc3Nvcl9vcCBrZXkgcHJlZGljYXRlIGRlbGltaXRl ZF9wcmVkaWNhdGUKIAkJCQkJaW5kZXhfZWxlbSBzdGFydHNfd2l0aF9pbml0aWFsIGV4cHJf b3JfcHJlZGljYXRlCi0JCQkJCWRhdGV0aW1lX3RlbXBsYXRlIG9wdF9kYXRldGltZV90ZW1w bGF0ZSBjc3ZfZWxlbQorCQkJCQlkYXRldGltZV90ZW1wbGF0ZSBvcHRfZGF0ZXRpbWVfdGVt cGxhdGUKIAotJXR5cGUJPGVsZW1zPgkJYWNjZXNzb3JfZXhwciBjc3ZfbGlzdCBvcHRfY3N2 X2xpc3QKKyV0eXBlCTxlbGVtcz4JCWFjY2Vzc29yX2V4cHIKIAogJXR5cGUJPGluZGV4cz4J aW5kZXhfbGlzdAogCkBAIC0yNTIsMzkgKzI1MiwxMiBAQCBhY2Nlc3Nvcl9vcDoKIAl8ICcu JyBEQVRFVElNRV9QICcoJyBvcHRfZGF0ZXRpbWVfdGVtcGxhdGUgJyknCiAJCQkJCQkJCQl7 ICQkID0gbWFrZUl0ZW1VbmFyeShqcGlEYXRldGltZSwgJDQpOyB9CiAJfCAnPycgJygnIHBy ZWRpY2F0ZSAnKScJCQl7ICQkID0gbWFrZUl0ZW1VbmFyeShqcGlGaWx0ZXIsICQzKTsgfQot CXwgJy4nIERFQ0lNQUxfUCAnKCcgb3B0X2Nzdl9saXN0ICcpJwotCXsKLQkJaWYgKGxpc3Rf bGVuZ3RoKCQ0KSA9PSAwKQotCQkJJCQgPSBtYWtlSXRlbUJpbmFyeShqcGlEZWNpbWFsLCBO VUxMLCBOVUxMKTsKLQkJZWxzZSBpZiAobGlzdF9sZW5ndGgoJDQpID09IDEpCi0JCQkkJCA9 IG1ha2VJdGVtQmluYXJ5KGpwaURlY2ltYWwsIGxpbml0aWFsKCQ0KSwgTlVMTCk7Ci0JCWVs c2UgaWYgKGxpc3RfbGVuZ3RoKCQ0KSA9PSAyKQotCQkJJCQgPSBtYWtlSXRlbUJpbmFyeShq cGlEZWNpbWFsLCBsaW5pdGlhbCgkNCksIGxzZWNvbmQoJDQpKTsKLQkJZWxzZQotCQkJZXJl dHVybihlc2NvbnRleHQsIGZhbHNlLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCi0JCQkJCSBlcnJtc2coImludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlICVz IiwgImpzb25wYXRoIiksCi0JCQkJCSBlcnJkZXRhaWwoIi5kZWNpbWFsKCkgY2FuIG9ubHkg aGF2ZSBhbiBvcHRpb25hbCBwcmVjaXNpb25bLHNjYWxlXS4iKSkpOwotCX0KLQk7Ci0KLWNz dl9lbGVtOgotCUlOVF9QCi0JCXsgJCQgPSBtYWtlSXRlbU51bWVyaWMoJiQxKTsgfQotCXwg JysnIElOVF9QICVwcmVjIFVNSU5VUwotCQl7ICQkID0gbWFrZUl0ZW1VbmFyeShqcGlQbHVz LCBtYWtlSXRlbU51bWVyaWMoJiQyKSk7IH0KLQl8ICctJyBJTlRfUCAlcHJlYyBVTUlOVVMK LQkJeyAkJCA9IG1ha2VJdGVtVW5hcnkoanBpTWludXMsIG1ha2VJdGVtTnVtZXJpYygmJDIp KTsgfQotCTsKLQotY3N2X2xpc3Q6Ci0JY3N2X2VsZW0JCQkJCQl7ICQkID0gbGlzdF9tYWtl MSgkMSk7IH0KLQl8IGNzdl9saXN0ICcsJyBjc3ZfZWxlbQkJCXsgJCQgPSBsYXBwZW5kKCQx LCAkMyk7IH0KLQk7Ci0KLW9wdF9jc3ZfbGlzdDoKLQljc3ZfbGlzdAkJCQkJCXsgJCQgPSAk MTsgfQotCXwgLyogRU1QVFkgKi8JCQkJCXsgJCQgPSBOVUxMOyB9CisJfCAnLicgREVDSU1B TF9QICcoJyAnKScKKwkJeyAkJCA9IG1ha2VJdGVtQmluYXJ5KGpwaURlY2ltYWwsIE5VTEws IE5VTEwpOyB9CisJfCAnLicgREVDSU1BTF9QICcoJyBJTlRfUCAnKScKKwkJeyAkJCA9IG1h a2VJdGVtQmluYXJ5KGpwaURlY2ltYWwsIG1ha2VJdGVtTnVtZXJpYygmJDQpLCBOVUxMKTsg fQorCXwgJy4nIERFQ0lNQUxfUCAnKCcgSU5UX1AgJywnIElOVF9QICcpJworCQl7ICQkID0g bWFrZUl0ZW1CaW5hcnkoanBpRGVjaW1hbCwgbWFrZUl0ZW1OdW1lcmljKCYkNCksIG1ha2VJ dGVtTnVtZXJpYygmJDYpKTsgfQogCTsKIAogZGF0ZXRpbWVfdGVtcGxhdGU6Ci0tIAoyLjQz LjAKCg== --------------YEDrB009eKsmFLwHmDEbVC6H Content-Type: text/plain; charset=UTF-8; name="0002-fixup-Implement-jsonpath-.number-.decimal-pr.patch.nocfbot" Content-Disposition: attachment; filename*0="0002-fixup-Implement-jsonpath-.number-.decimal-pr.patch.nocf"; filename*1="bot" Content-Transfer-Encoding: base64 RnJvbSBmMmY5MTc2NTQ4ZDM2ZDNiMDJiZDNiYWYxZDVhZmRmMGE4NGE4NGIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAxNSBKYW4gMjAyNCAxNDoxOToyMiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBmaXh1cCEgSW1wbGVtZW50IGpzb25wYXRoIC5udW1iZXIoKSwgLmRl Y2ltYWwoW3ByZWNpc2lvbgogWywgc2NhbGVdXSksIC5iaWdpbnQoKSwgYW5kIC5pbnRlZ2Vy KCkgbWV0aG9kcwoKLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5j IHwgNDggKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTYg aW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29ucGF0aF9leGVjLmMKaW5kZXggYTM2MWM0NTZjNTQuLjA5MmJjZGE0NWVlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKQEAgLTExMTgsOCArMTExOCw3IEBA IGV4ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwg SnNvblBhdGhJdGVtICpqc3AsCiAJCQkJY2hhcgkgICAqbnVtc3RyID0gTlVMTDsKIAogCQkJ CWlmICh1bndyYXAgJiYgSnNvbmJUeXBlKGpiKSA9PSBqYnZBcnJheSkKLQkJCQkJcmV0dXJu IGV4ZWN1dGVJdGVtVW53cmFwVGFyZ2V0QXJyYXkoY3h0LCBqc3AsIGpiLCBmb3VuZCwKLQkJ CQkJCQkJCQkJCQkJZmFsc2UpOworCQkJCQlyZXR1cm4gZXhlY3V0ZUl0ZW1VbndyYXBUYXJn ZXRBcnJheShjeHQsIGpzcCwgamIsIGZvdW5kLCBmYWxzZSk7CiAKIAkJCQlpZiAoamItPnR5 cGUgPT0gamJ2TnVtZXJpYykKIAkJCQl7CkBAIC0xMTMxLDggKzExMzAsNyBAQCBleGVjdXRl SXRlbU9wdFVud3JhcFRhcmdldChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRo SXRlbSAqanNwLAogCQkJCQkJCQkJCQkJCSBqc3BPcGVyYXRpb25OYW1lKGpzcC0+dHlwZSkp KSkpOwogCiAJCQkJCWlmIChqc3AtPnR5cGUgPT0ganBpRGVjaW1hbCkKLQkJCQkJCW51bXN0 ciA9IERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LAot CQkJCQkJCQkJCQkJCQkJCQkgTnVtZXJpY0dldERhdHVtKG51bSkpKTsKKwkJCQkJCW51bXN0 ciA9IERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LCBO dW1lcmljR2V0RGF0dW0obnVtKSkpOwogCQkJCQlyZXMgPSBqcGVyT2s7CiAJCQkJfQogCQkJ CWVsc2UgaWYgKGpiLT50eXBlID09IGpidlN0cmluZykKQEAgLTExNDQsMTAgKzExNDIsOCBA QCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQs IEpzb25QYXRoSXRlbSAqanNwLAogCiAJCQkJCW51bXN0ciA9IHBuc3RyZHVwKGpiLT52YWwu c3RyaW5nLnZhbCwgamItPnZhbC5zdHJpbmcubGVuKTsKIAotCQkJCQlub2VyciA9IERpcmVj dElucHV0RnVuY3Rpb25DYWxsU2FmZShudW1lcmljX2luLCBudW1zdHIsCi0JCQkJCQkJCQkJ CQkJCUludmFsaWRPaWQsIC0xLAotCQkJCQkJCQkJCQkJCQkoTm9kZSAqKSAmZXNjb250ZXh0 LAotCQkJCQkJCQkJCQkJCQkmZGF0dW0pOworCQkJCQlub2VyciA9IERpcmVjdElucHV0RnVu Y3Rpb25DYWxsU2FmZShudW1lcmljX2luLCBudW1zdHIsIEludmFsaWRPaWQsIC0xLAorCQkJ CQkJCQkJCQkJCQkoTm9kZSAqKSAmZXNjb250ZXh0LCAmZGF0dW0pOwogCiAJCQkJCWlmICgh bm9lcnIgfHwgZXNjb250ZXh0LmVycm9yX29jY3VycmVkKQogCQkJCQkJUkVUVVJOX0VSUk9S KGVyZXBvcnQoRVJST1IsCkBAIC0xMTk1LDggKzExOTEsNyBAQCBleGVjdXRlSXRlbU9wdFVu d3JhcFRhcmdldChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNw LAogCQkJCQlpZiAoZWxlbS50eXBlICE9IGpwaU51bWVyaWMpCiAJCQkJCQllbG9nKEVSUk9S LCAiaW52YWxpZCBqc29ucGF0aCBpdGVtIHR5cGUgZm9yIC5kZWNpbWFsKCkgcHJlY2lzaW9u Iik7CiAKLQkJCQkJcHJlY2lzaW9uID0gbnVtZXJpY19pbnQ0X29wdF9lcnJvcihqc3BHZXRO dW1lcmljKCZlbGVtKSwKLQkJCQkJCQkJCQkJCQkgICAmaGF2ZV9lcnJvcik7CisJCQkJCXBy ZWNpc2lvbiA9IG51bWVyaWNfaW50NF9vcHRfZXJyb3IoanNwR2V0TnVtZXJpYygmZWxlbSks ICZoYXZlX2Vycm9yKTsKIAkJCQkJaWYgKGhhdmVfZXJyb3IpCiAJCQkJCQlSRVRVUk5fRVJS T1IoZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJCQkJIChlcnJjb2RlKEVSUkNPREVfTk9OX05V TUVSSUNfU1FMX0pTT05fSVRFTSksCkBAIC0xMjA5LDggKzEyMDQsNyBAQCBleGVjdXRlSXRl bU9wdFVud3JhcFRhcmdldChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRl bSAqanNwLAogCQkJCQkJaWYgKGVsZW0udHlwZSAhPSBqcGlOdW1lcmljKQogCQkJCQkJCWVs b2coRVJST1IsICJpbnZhbGlkIGpzb25wYXRoIGl0ZW0gdHlwZSBmb3IgLmRlY2ltYWwoKSBz Y2FsZSIpOwogCi0JCQkJCQlzY2FsZSA9IG51bWVyaWNfaW50NF9vcHRfZXJyb3IoanNwR2V0 TnVtZXJpYygmZWxlbSksCi0JCQkJCQkJCQkJCQkJICAgJmhhdmVfZXJyb3IpOworCQkJCQkJ c2NhbGUgPSBudW1lcmljX2ludDRfb3B0X2Vycm9yKGpzcEdldE51bWVyaWMoJmVsZW0pLCAm aGF2ZV9lcnJvcik7CiAJCQkJCQlpZiAoaGF2ZV9lcnJvcikKIAkJCQkJCQlSRVRVUk5fRVJS T1IoZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJCQkJCSAoZXJyY29kZShFUlJDT0RFX05PTl9O VU1FUklDX1NRTF9KU09OX0lURU0pLApAQCAtMTIyOCw4ICsxMjIyLDcgQEAgZXhlY3V0ZUl0 ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0 ZW0gKmpzcCwKIAkJCQkJZGF0dW1zWzFdID0gQ1N0cmluZ0dldERhdHVtKHNzdHIpOwogCQkJ CQlhcnJ0eXBtb2QgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihkYXR1bXMsIDIsIENTVFJJ TkdPSUQpOwogCi0JCQkJCWR0eXBtb2QgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWN0 eXBtb2RpbiwKLQkJCQkJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKGFycnR5cG1vZCkpOwor CQkJCQlkdHlwbW9kID0gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljdHlwbW9kaW4sIFBv aW50ZXJHZXREYXR1bShhcnJ0eXBtb2QpKTsKIAogCQkJCQkvKiBDb252ZXJ0IG51bXN0ciB0 byBOdW1lcmljIHdpdGggdHlwbW9kICovCiAJCQkJCUFzc2VydChudW1zdHIgIT0gTlVMTCk7 CkBAIC0xMjYyLDggKzEyNTUsNyBAQCBleGVjdXRlSXRlbU9wdFVud3JhcFRhcmdldChKc29u UGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqanNwLAogCQkJCURhdHVtCQlk YXR1bTsKIAogCQkJCWlmICh1bndyYXAgJiYgSnNvbmJUeXBlKGpiKSA9PSBqYnZBcnJheSkK LQkJCQkJcmV0dXJuIGV4ZWN1dGVJdGVtVW53cmFwVGFyZ2V0QXJyYXkoY3h0LCBqc3AsIGpi LCBmb3VuZCwKLQkJCQkJCQkJCQkJCQkJZmFsc2UpOworCQkJCQlyZXR1cm4gZXhlY3V0ZUl0 ZW1VbndyYXBUYXJnZXRBcnJheShjeHQsIGpzcCwgamIsIGZvdW5kLCBmYWxzZSk7CiAKIAkJ CQlpZiAoamItPnR5cGUgPT0gamJ2TnVtZXJpYykKIAkJCQl7CkBAIC0xMjg4LDEwICsxMjgw LDggQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAq Y3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRl eHQgPSB7VF9FcnJvclNhdmVDb250ZXh0fTsKIAkJCQkJYm9vbAkJbm9lcnI7CiAKLQkJCQkJ bm9lcnIgPSBEaXJlY3RJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoaW50OGluLCB0bXAsCi0JCQkJ CQkJCQkJCQkJCUludmFsaWRPaWQsIC0xLAotCQkJCQkJCQkJCQkJCQkoTm9kZSAqKSAmZXNj b250ZXh0LAotCQkJCQkJCQkJCQkJCQkmZGF0dW0pOworCQkJCQlub2VyciA9IERpcmVjdElu cHV0RnVuY3Rpb25DYWxsU2FmZShpbnQ4aW4sIHRtcCwgSW52YWxpZE9pZCwgLTEsCisJCQkJ CQkJCQkJCQkJCShOb2RlICopICZlc2NvbnRleHQsICZkYXR1bSk7CiAKIAkJCQkJaWYgKCFu b2VyciB8fCBlc2NvbnRleHQuZXJyb3Jfb2NjdXJyZWQpCiAJCQkJCQlSRVRVUk5fRVJST1Io ZXJlcG9ydChFUlJPUiwKQEAgLTEzMDksOCArMTI5OSw3IEBAIGV4ZWN1dGVJdGVtT3B0VW53 cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBhdGhJdGVtICpqc3As CiAKIAkJCQlqYiA9ICZqYnY7CiAJCQkJamItPnR5cGUgPSBqYnZOdW1lcmljOwotCQkJCWpi LT52YWwubnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhEaXJlY3RGdW5jdGlvbkNhbGwxKGlu dDhfbnVtZXJpYywKLQkJCQkJCQkJCQkJCQkJCQkJICBkYXR1bSkpOworCQkJCWpiLT52YWwu bnVtZXJpYyA9IERhdHVtR2V0TnVtZXJpYyhEaXJlY3RGdW5jdGlvbkNhbGwxKGludDhfbnVt ZXJpYywgZGF0dW0pKTsKIAogCQkJCXJlcyA9IGV4ZWN1dGVOZXh0SXRlbShjeHQsIGpzcCwg TlVMTCwgamIsIGZvdW5kLCB0cnVlKTsKIAkJCX0KQEAgLTEzMjIsOCArMTMxMSw3IEBAIGV4 ZWN1dGVJdGVtT3B0VW53cmFwVGFyZ2V0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNv blBhdGhJdGVtICpqc3AsCiAJCQkJRGF0dW0JCWRhdHVtOwogCiAJCQkJaWYgKHVud3JhcCAm JiBKc29uYlR5cGUoamIpID09IGpidkFycmF5KQotCQkJCQlyZXR1cm4gZXhlY3V0ZUl0ZW1V bndyYXBUYXJnZXRBcnJheShjeHQsIGpzcCwgamIsIGZvdW5kLAotCQkJCQkJCQkJCQkJCQlm YWxzZSk7CisJCQkJCXJldHVybiBleGVjdXRlSXRlbVVud3JhcFRhcmdldEFycmF5KGN4dCwg anNwLCBqYiwgZm91bmQsIGZhbHNlKTsKIAogCQkJCWlmIChqYi0+dHlwZSA9PSBqYnZOdW1l cmljKQogCQkJCXsKQEAgLTEzNDMsMTUgKzEzMzEsMTIgQEAgZXhlY3V0ZUl0ZW1PcHRVbndy YXBUYXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwK IAkJCQllbHNlIGlmIChqYi0+dHlwZSA9PSBqYnZTdHJpbmcpCiAJCQkJewogCQkJCQkvKiBj YXN0IHN0cmluZyBhcyBpbnRlZ2VyICovCi0JCQkJCWNoYXIJICAgKnRtcCA9IHBuc3RyZHVw KGpiLT52YWwuc3RyaW5nLnZhbCwKLQkJCQkJCQkJCQkJICAgamItPnZhbC5zdHJpbmcubGVu KTsKKwkJCQkJY2hhcgkgICAqdG1wID0gcG5zdHJkdXAoamItPnZhbC5zdHJpbmcudmFsLCBq Yi0+dmFsLnN0cmluZy5sZW4pOwogCQkJCQlFcnJvclNhdmVDb250ZXh0IGVzY29udGV4dCA9 IHtUX0Vycm9yU2F2ZUNvbnRleHR9OwogCQkJCQlib29sCQlub2VycjsKIAotCQkJCQlub2Vy ciA9IERpcmVjdElucHV0RnVuY3Rpb25DYWxsU2FmZShpbnQ0aW4sIHRtcCwKLQkJCQkJCQkJ CQkJCQkJSW52YWxpZE9pZCwgLTEsCi0JCQkJCQkJCQkJCQkJCShOb2RlICopICZlc2NvbnRl eHQsCi0JCQkJCQkJCQkJCQkJCSZkYXR1bSk7CisJCQkJCW5vZXJyID0gRGlyZWN0SW5wdXRG dW5jdGlvbkNhbGxTYWZlKGludDRpbiwgdG1wLCBJbnZhbGlkT2lkLCAtMSwKKwkJCQkJCQkJ CQkJCQkJKE5vZGUgKikgJmVzY29udGV4dCwgJmRhdHVtKTsKIAogCQkJCQlpZiAoIW5vZXJy IHx8IGVzY29udGV4dC5lcnJvcl9vY2N1cnJlZCkKIAkJCQkJCVJFVFVSTl9FUlJPUihlcmVw b3J0KEVSUk9SLApAQCAtMTM2OSw4ICsxMzU0LDcgQEAgZXhlY3V0ZUl0ZW1PcHRVbndyYXBU YXJnZXQoSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKmpzcCwKIAog CQkJCWpiID0gJmpidjsKIAkJCQlqYi0+dHlwZSA9IGpidk51bWVyaWM7Ci0JCQkJamItPnZh bC5udW1lcmljID0gRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NF9u dW1lcmljLAotCQkJCQkJCQkJCQkJCQkJCQkgIGRhdHVtKSk7CisJCQkJamItPnZhbC5udW1l cmljID0gRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NF9udW1lcmlj LCBkYXR1bSkpOwogCiAJCQkJcmVzID0gZXhlY3V0ZU5leHRJdGVtKGN4dCwganNwLCBOVUxM LCBqYiwgZm91bmQsIHRydWUpOwogCQkJfQotLSAKMi40My4wCgo= --------------YEDrB009eKsmFLwHmDEbVC6H--