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 1wHk0D-007TPO-1F for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 15:05:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wHk0C-000ImG-1b for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 15:05: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 1wHk0B-000Im7-2v for pgsql-hackers@lists.postgresql.org; Tue, 28 Apr 2026 15:05:32 +0000 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wHk05-00000003CmC-2xBR for pgsql-hackers@lists.postgresql.org; Tue, 28 Apr 2026 15:05:30 +0000 Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-7de4a9cb8eeso5214881a34.0 for ; Tue, 28 Apr 2026 08:05:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777388725; cv=none; d=google.com; s=arc-20240605; b=IZKNGV1WIUC/ibg9qtcIT7TZnGr8RS5peZENNAR2eN2UyrecSqv/O/LY7bvb/vGkYS F7WXO9qUhVhd1NOc8ML1ZfKoDjNg08Od7rQkMH/S1IvesGsEQgy0PKiqzO/vyVYrTyL8 iEMGJhfEs34fjrVhcJq/lDer+5y1uKq2Y0wHefTsvvRKGO6//Jmfm4XnxeNel+h3QdDs foKyzKARbldFckIrJEp5cCZ0/UUiK6w/5AN6sdTtSQpL4yMU6v1qGVTYzD1LHfncgYRE ZGHwJcQpgWmaq3J8HUqbwTo+dXcq9Wuu54gBan9Pyg71UORc+JvVEUTABZyZeOldUs3G jV8A== 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=yWqUg03CJi2OerKtdVodl+cnDW6JVkchoGgL5aEY2P4=; fh=PDhzRmLFhJQgKl2kpY6iqaoiggk+rKjB8rXL7ERgOws=; b=kQMuxxviiY3VI7QPiyl+3GbQV/YQzWw1lZTOKxk+XS2E2dgsfU464D7Y1cDHYlFFAM xdYwjQmecePOpTWCKi6iDRxgy7WXEfNHsz42gx1EbiaSQvF95GUQeYo2XXtWsGxkoag/ RbMQCjFlrY9z/NE5Ti+MCXUiZLu3BeDvO/u/bkLBDDKN0xqIq/fgx4XeEMI4OkZRi+YR g6dDrxIdhYpbhx/z52KHNxaHBYdP1WOdFbmaombQOjljBMVTvf7/4sbNgZV1B6DZPxkj 4UT+xYwqSlDIKHD0gc0nzE/fpWI2xEDfKrIKw2eZygBwToCf1I6sLlaxV8NDTu4GlqNw LX1Q==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777388725; x=1777993525; darn=lists.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=yWqUg03CJi2OerKtdVodl+cnDW6JVkchoGgL5aEY2P4=; b=n3v6hreE59tLE0L5kDGN56yr0qb0xd9ta0PaVjYa7V8U6rHW8rPwf9gorbipiNQLDd 4o17OwYX12+wQAnhB16VCZ5hrnL12Dy+QXZO/Gi5IIKtD2oOBYinpHIUmGg/d9GOiu3c MT6p+gYfhA8gqcXjcpowlFnqYkw8naVM4hgAikRXCxq00FwOzHXcDeAHU1+lA4lOHzP6 j92HlRxNX7Au7AzvpNIBEtnG4eExgVjA+RMgTP6lp8t9A1XDlctXGw6G4P2qsKPmoKuG UkjpxvmlEu0ffs3pm+7QH+pC/kOaPJIn87okG88YIbkRYCCLkPkUtXrxe8OYrANZYqXk MRyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777388725; x=1777993525; 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=yWqUg03CJi2OerKtdVodl+cnDW6JVkchoGgL5aEY2P4=; b=fb5xwXZM5FVgSmoNJEVv3+pTvTz+1YxTIUFkTTLpfKkW2RIz6Qi2MSfRfv9mKJhLLv lJJdrjXJNRlgFlYRPwWimtaxJaVQ/GHDHrkW8xwo/lMXieHtd6MAXyWXr8Os2WXPaOg6 q0YmiZ3MTTCwv7rWBKd5FBXjHrKeKyWZT0DLupOyjdSMvtl0LWK4e1Zbn1D/CH8RPdZ+ A+614opvbvjQ9BLa4q88COi3rkuoGTgmrUSNXgQC8+Fy8w2eosp6u4s0lFzatQj+nIAR Jrk/h3azNL2+V7YG11AXh+IHBXWaDxU8c5hM34R5zV7nvG7eisJ3NXs2ZP8g0PsizYRr 1Fnw== X-Gm-Message-State: AOJu0YxJgLZi4BAdgxzd3/DEsKjELjS3AZLcon3Cl+hfTGdSsIAUwUeQ mQHi/1RE4PlbBIrcpoi9yse4T8VIWIVXewCOCyvA4QQ7gbM7O1PhH02FBFfxq7wsSZizaIMW2p/ WaPyZObwC5+yegpFYJNzG1zVdsPH12e4= X-Gm-Gg: AeBDieuOcQ7M3BCrBzWu6zDPwbLK6aSqqPp3vlNVqOGP6j9bjxmlshVxyDNaLuYZu3Q ADBaPGfyMvZ3+QdjYz+shlzL0GpNrORvssTw78B2vRE2P8azmNUzPY/ch2ssgO+iH8VfhB6sBGt IodYDKiTqi3hOHEJsESEugbkB8s9o7zOPKFJ7m6E7T25Dpzak01FIiiA8jQta9R9OPyvoPfBA9I l31QyjYCUIs0ozRE89wB1FRa7Snat/okEfd+s+SAr7Hp9oVgAVYRGXhUsKiGlfH3G0exeywgRHV om7J/om/HqJH/o2eVcpVhWxe4K7C+mc+AnOxbY5yEkiUvRheVMEvUi9xaelmBw== X-Received: by 2002:a05:6830:82d1:b0:7dc:cd0b:58bc with SMTP id 46e09a7af769-7de99fde2e6mr2205735a34.7.1777388725311; Tue, 28 Apr 2026 08:05:25 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ashutosh Bapat Date: Tue, 28 Apr 2026 20:35:11 +0530 X-Gm-Features: AVHnY4Lmvwm6IIaLU1RgFsbeJoIKqlOpv9PXChRaMWZILSpVu41VLHNfCVI7EQQ Message-ID: Subject: Re: [Patch]Add Graph* node support to expression_tree_mutator To: SATYANARAYANA NARLAPURAM Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000099b71e0650868fb0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000099b71e0650868fb0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 23, 2026 at 12:18=E2=80=AFPM Ashutosh Bapat wrote: > > > Why is MUTATE not called on GraphElementPattern::labelexpr and > GraphElementPattern::quantifier? The walker didn't WALK labelexpr and quantifier either. Given that labelexpr is a boolean expression it needs to be WALKed. quantifier is IntList which is ignored by other nodes as well when WALKing. But we need to copy quantifier in mutator otherwise the mutated expression will point to the same IntList as the original node. Other nodes also copy the OidLists and IntLists when mutating them. I have modified the test query to cover the label expression mutator. raw_expression_walker didn't cover labelexpr either. Added it there. The label expression at that stage contains ColumnRef and BoolExpr which are already covered by raw expression tree walker. --=20 Best Wishes, Ashutosh Bapat --00000000000099b71e0650868fb0 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260428-0001-Handle-nodes-that-may-appear-in-GraphPatte.patch" Content-Disposition: attachment; filename="v20260428-0001-Handle-nodes-that-may-appear-in-GraphPatte.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moirceql0 RnJvbSBmMGM3Mzg0ZWUzN2NmMGI2NGQ1NGVmYjUzYjJkOTc2MDBlYmRiOTI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzYXR5YW5hcmF5YW5hIG5hcmxhcHVyYW0gPHNhdHlhbmFybGFw dXJhbUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjEgQXByIDIwMjYgMTQ6MzM6MzMgKzAwMDAKU3Vi amVjdDogW1BBVENIIHYyMDI2MDQyOCAzLzNdIEhhbmRsZSBub2RlcyB0aGF0IG1heSBhcHBlYXIg aW4gR3JhcGhQYXR0ZXJuCiBleHByZXNzaW9uIHRyZWVzCgpleHByZXNzaW9uX3RyZWVfbXV0YXRv cl9pbXBsKCkgd2FzIG1pc3NpbmcgY2FzZSBoYW5kbGVycyBmb3IgVF9HcmFwaFBhdHRlcm4sClRf R3JhcGhFbGVtZW50UGF0dGVybiwgYW5kIFRfR3JhcGhQcm9wZXJ0eVJlZi4gIFRoZSBjb3JyZXNw b25kaW5nCmV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbCgpIGFscmVhZHkgaGFuZGxlZCBhbGwg dGhyZWUgbm9kZSB0eXBlcywgYnV0IHRoZQptdXRhdG9yIGRpZCBub3QsIGNhdXNpbmcgYW4gInVu cmVjb2duaXplZCBub2RlIHR5cGUgIiBlcnJvciB3aGVuZXZlciBhCkdSQVBIX1RBQkxFIGFwcGVh cmVkIGluIGFuIGV4cHJlc3Npb24gdHJlZS4KCldoaWxlIGF0IGl0IGFsc28gdXBkYXRlIHJhd19l eHByZXNzaW9uX3RyZWVfd2Fsa2VyKCkgYW5kCmV4cHJlc3Npb25fdHJlZV93YWxrZXIoKSB0byBo YW5kbGUgbWlzc2luZyBub2RlcyB0aGF0IG1heSBhcHBlYXIgaW4gR3JhcGhQYXR0ZXJuCmV4cHJl c3Npb24gdHJlZXMuIFdoZW4gcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXIoKSBpcyBjYWxsZWQs CkdyYXBoRWxlbWVudFBhdHRlcm46OmxhYmVsZXhwciBkb2VzIGNvbnRhaW5zIENvbHVtblJlZnMg aW5zdGVhZCBvZgpHcmFwaExhYmVsUmVmcy4gSGVuY2UgdGhvc2UgYXJlIG5vdCBoYW5kbGVkIGlu IHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyKCkuCgpSZXBvcnRlZCBieTogU2F0eWFuYXJheWFu YSBOYXJsYXB1cmFtIDxzYXR5YW5hcmxhcHVyYW1AZ21haWwuY29tPgpBdXRob3I6IFNhdHlhbmFy YXlhbmEgTmFybGFwdXJhbSA8c2F0eWFuYXJsYXB1cmFtQGdtYWlsLmNvbT4KQXV0aG9yOiBBc2h1 dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQgYnk6IEFz aHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBSGcrUURjOTdXRlRTa1hnPWdf WkFIOEduWTJnSnJ2cTcyY3MrWWpxRUF1WmdYbmtBUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9i YWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgIHwgNDUgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0IHwgMTUg KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxlLnNxbCAgICAgIHwgIDkg KysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMKaW5kZXggN2VkYmQ1YjcyMjUuLmRiMmVmZjM0M2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpA QCAtMjEzNSw2ICsyMTM1LDcgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5v ZGUsCiAJCWNhc2UgVF9SYW5nZVRibFJlZjoKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJ Y2FzZSBUX0NURVNlYXJjaENsYXVzZToKKwkJY2FzZSBUX0dyYXBoTGFiZWxSZWY6CiAJCWNhc2Ug VF9HcmFwaFByb3BlcnR5UmVmOgogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoKIAkJCS8qIHBy aW1pdGl2ZSBub2RlIHR5cGVzIHdpdGggbm8gZXhwcmVzc2lvbiBzdWJub2RlcyAqLwpAQCAtMjY5 OCw2ICsyNjk5LDggQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJ CQl7CiAJCQkJR3JhcGhFbGVtZW50UGF0dGVybiAqZ2VwID0gKEdyYXBoRWxlbWVudFBhdHRlcm4g Kikgbm9kZTsKIAorCQkJCWlmIChXQUxLKGdlcC0+bGFiZWxleHByKSkKKwkJCQkJcmV0dXJuIHRy dWU7CiAJCQkJaWYgKFdBTEsoZ2VwLT5zdWJleHByKSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJ aWYgKFdBTEsoZ2VwLT53aGVyZUNsYXVzZSkpCkBAIC0zODE0LDYgKzM4MTcsNDYgQEAgZXhwcmVz c2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCQkJCXJldHVybiAoTm9kZSAqKSBu ZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9HcmFwaExhYmVsUmVmOgorCQkJewor CQkJCUdyYXBoTGFiZWxSZWYgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBub2Rl LCBHcmFwaExhYmVsUmVmKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJ CWJyZWFrOworCQljYXNlIFRfR3JhcGhQcm9wZXJ0eVJlZjoKKwkJCXsKKwkJCQlHcmFwaFByb3Bl cnR5UmVmICpuZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgbm9kZSwgR3JhcGhQcm9w ZXJ0eVJlZik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsK KwkJY2FzZSBUX0dyYXBoRWxlbWVudFBhdHRlcm46CisJCQl7CisJCQkJR3JhcGhFbGVtZW50UGF0 dGVybiAqZ2VwID0gKEdyYXBoRWxlbWVudFBhdHRlcm4gKikgbm9kZTsKKwkJCQlHcmFwaEVsZW1l bnRQYXR0ZXJuICpuZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgZ2VwLCBHcmFwaEVs ZW1lbnRQYXR0ZXJuKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+bGFiZWxleHByLCBnZXAtPmxhYmVs ZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+c3ViZXhwciwgZ2VwLT5zdWJleHBy LCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT53aGVyZUNsYXVzZSwgZ2VwLT53aGVyZUNs YXVzZSwgTm9kZSAqKTsKKwkJCQluZXdub2RlLT5xdWFudGlmaWVyID0gbGlzdF9jb3B5KGdlcC0+ cXVhbnRpZmllcik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVh azsKKwkJY2FzZSBUX0dyYXBoUGF0dGVybjoKKwkJCXsKKwkJCQlHcmFwaFBhdHRlcm4gKmdwID0g KEdyYXBoUGF0dGVybiAqKSBub2RlOworCQkJCUdyYXBoUGF0dGVybiAqbmV3bm9kZTsKKworCQkJ CUZMQVRDT1BZKG5ld25vZGUsIGdwLCBHcmFwaFBhdHRlcm4pOworCQkJCU1VVEFURShuZXdub2Rl LT5wYXRoX3BhdHRlcm5fbGlzdCwgZ3AtPnBhdGhfcGF0dGVybl9saXN0LCBMaXN0ICopOworCQkJ CU1VVEFURShuZXdub2RlLT53aGVyZUNsYXVzZSwgZ3AtPndoZXJlQ2xhdXNlLCBOb2RlICopOwor CQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50 KSBub2RlVGFnKG5vZGUpKTsKQEAgLTQ3OTYsNiArNDgzOSw4IEBAIHJhd19leHByZXNzaW9uX3Ry ZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCXsKIAkJCQlHcmFwaEVsZW1lbnRQYXR0ZXJu ICpnZXAgPSAoR3JhcGhFbGVtZW50UGF0dGVybiAqKSBub2RlOwogCisJCQkJaWYgKFdBTEsoZ2Vw LT5sYWJlbGV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAoV0FMSyhnZXAtPnN1YmV4 cHIpKQogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAoV0FMSyhnZXAtPndoZXJlQ2xhdXNlKSkK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ncmFwaF90YWJsZS5vdXQKaW5kZXggMTJiODcwNmI1 ZjMuLjgwMzhmY2QzOWI3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dy YXBoX3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxl Lm91dApAQCAtMTAzMiw0ICsxMDMyLDE5IEBAIFNFTEVDVCBzbmFtZSwgZG5hbWUgRlJPTSBHUkFQ SF9UQUJMRSAoZzEgTUFUQ0ggKHNyYyktPihkZXN0KSBXSEVSRSBzcmMudnByb3AxID4KIEVSUk9S OiAgc3VicXVlcmllcyB3aXRoaW4gR1JBUEhfVEFCTEUgcmVmZXJlbmNlIGFyZSBub3Qgc3VwcG9y dGVkCiBTRUxFQ1Qgc25hbWUsIGRuYW1lIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChzcmMp LT4oZGVzdCkgV0hFUkUgb3V0X2RlZ3JlZShzcmMudm5hbWUpID4gKFNFTEVDVCBtYXgob3V0X2Rl Z3JlZShubmFtZSkpIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChub2RlKSBDT0xVTU5TIChu b2RlLnZuYW1lIEFTIG5uYW1lKSkpIENPTFVNTlMoc3JjLnZuYW1lIEFTIHNuYW1lLCBkZXN0LnZu YW1lIEFTIGRuYW1lKSk7CiBFUlJPUjogIHN1YnF1ZXJpZXMgd2l0aGluIEdSQVBIX1RBQkxFIHJl ZmVyZW5jZSBhcmUgbm90IHN1cHBvcnRlZAorLS0gR1JBUEhfVEFCTEUgc3VicXVlcnkgaW4gSEFW SU5HIGNsYXVzZQorU0VMRUNUIHNyYy52bmFtZSwgY291bnQoKikKKyAgRlJPTSB2MSBBUyBzcmMK KyAgR1JPVVAgQlkgc3JjLnZuYW1lCisgIEhBVklORyBjb3VudCgqKSA+PSAoU0VMRUNUIGNvdW50 KCopCisgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAo YSBJUyB2bDEgfCB2bDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDT0xVTU5TIChhLnZuYW1lIEFTIG4pKQorICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBu ID0gc3JjLnZuYW1lKTsKKyB2bmFtZSB8IGNvdW50IAorLS0tLS0tLSstLS0tLS0tCisgdjEzICAg fCAgICAgMQorIHYxMiAgIHwgICAgIDEKKyB2MTEgICB8ICAgICAxCisoMyByb3dzKQorCiAtLSBs ZWF2ZSB0aGUgb2JqZWN0cyBiZWhpbmQgZm9yIHBnX3VwZ3JhZGUvcGdfZHVtcCB0ZXN0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsCmluZGV4IGE1ZGY0NjQ3YjZhLi5hMzY4MWM2YzBl ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxlLnNxbApAQCAtNTkwLDQgKzU5MCwxMyBA QCBTRUxFQ1QgKiBGUk9NIGN1c3RvbWVycyBjbyBXSEVSRSBjby5jdXN0b21lcl9pZCA9IChTRUxF Q1QgY3VzdG9tZXJfaWQgRlJPTSBHUkFQSAogU0VMRUNUIHNuYW1lLCBkbmFtZSBGUk9NIEdSQVBI X1RBQkxFIChnMSBNQVRDSCAoc3JjKS0+KGRlc3QpIFdIRVJFIHNyYy52cHJvcDEgPiAoU0VMRUNU IG1heCh2MS52cHJvcDEpIEZST00gdjEpIENPTFVNTlMoc3JjLnZuYW1lIEFTIHNuYW1lLCBkZXN0 LnZuYW1lIEFTIGRuYW1lKSk7CiBTRUxFQ1Qgc25hbWUsIGRuYW1lIEZST00gR1JBUEhfVEFCTEUg KGcxIE1BVENIIChzcmMpLT4oZGVzdCkgV0hFUkUgb3V0X2RlZ3JlZShzcmMudm5hbWUpID4gKFNF TEVDVCBtYXgob3V0X2RlZ3JlZShubmFtZSkpIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChu b2RlKSBDT0xVTU5TIChub2RlLnZuYW1lIEFTIG5uYW1lKSkpIENPTFVNTlMoc3JjLnZuYW1lIEFT IHNuYW1lLCBkZXN0LnZuYW1lIEFTIGRuYW1lKSk7CiAKKy0tIEdSQVBIX1RBQkxFIHN1YnF1ZXJ5 IGluIEhBVklORyBjbGF1c2UKK1NFTEVDVCBzcmMudm5hbWUsIGNvdW50KCopCisgIEZST00gdjEg QVMgc3JjCisgIEdST1VQIEJZIHNyYy52bmFtZQorICBIQVZJTkcgY291bnQoKikgPj0gKFNFTEVD VCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBHUkFQSF9UQUJMRSAoZzEg TUFUQ0ggKGEgSVMgdmwxIHwgdmwyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ09MVU1OUyAoYS52bmFtZSBBUyBuKSkKKyAgICAgICAgICAgICAgICAgICAgICAg V0hFUkUgbiA9IHNyYy52bmFtZSk7CisKIC0tIGxlYXZlIHRoZSBvYmplY3RzIGJlaGluZCBmb3Ig cGdfdXBncmFkZS9wZ19kdW1wIHRlc3RzCi0tIAoyLjM0LjEKCg== --00000000000099b71e0650868fb0--