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 1w7DYd-00557d-0S for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 14:25:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7DYb-003epm-2O for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 14:25:34 +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.96) (envelope-from ) id 1w7DYb-003epe-0i for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 14:25:33 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w7DYY-000000020SZ-2bmt for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 14:25:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1774880729; bh=gsYB9wvZlE0TxOTGS0PMz+E+0TBbsGSi3VANLdOppFM=; h=Message-ID:Date:User-Agent:To:From:Subject:From; b=Wf6ZkeW6tas97j/Kz/F+48T2KHY37IOgnZLkZKAEJ/YhQuOLTpfnqn4rLaKptZ0g7 CxCX6+Bm63Z8roGT3uDlMVXIrAtv5F8uwcZn46/LnPOGcgamngOB5CrguwnfvzkJXV Wy0+F9mOdk6ekf+upDkVP7MxpA4FDMii/JgQL3x9vyEsYw966ROMJI6qZBXcVLhjui TK2i4ouEluHrhYU1P2C3JxYNSgzIDKpLWtA1dH60ObjC0Zp+o1yzaB4BtrHWK8nm/E ch7qgdpaoZolNbGAVaDxlPJ10hUC044FpwImuNRTjELpJVL868Zj8Kv+wUtEKXYXnB 8QpUDOQpFq0vA== Received: from [172.30.48.30] (debian11-template.l.postgrespro.ru [192.168.2.254]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.melnikov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 684F75FFC2 for ; Mon, 30 Mar 2026 17:25:29 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------mJ2jFdR1OLu9lpfaphpgldeh" Message-ID: Date: Mon, 30 Mar 2026 17:25:29 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: PostgreSQL Hackers From: "Anton A. Melnikov" Subject: [BUG] Excessive memory usage with update on STORED generated columns. X-KSMG-AntiPhishing: NotDetected, bases: 2026/03/30 11:25:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2026/03/30 05:24:00 #28352470 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------mJ2jFdR1OLu9lpfaphpgldeh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi! My colleagues found that a queries like that: \timing DROP TABLE IF EXISTS t; CREATE TABLE t ( id int, a int, b int, g text GENERATED ALWAYS AS ( lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') || lpad((CASE WHEN a <> 0 THEN a ELSE b END)::text, 10, '0') ) STORED ); INSERT INTO t SELECT 1, 100, 0 FROM generate_series(1, 1000000); UPDATE t SET id = 2; -- < problem query lead to excessive memory consumption up to 10Gb in this example and query execution time up to ~1,5min. Bisect shows that the problem appeared after commit 83ea6c540 (Virtual generated columns). Before this commit the update query took only ~8s and the memory consumption did not exceed 150Mb for this backend. MemoryContextStats reports only a small amount of memory usage, while malloc_stats() confirms large allocations outside PostgreSQL memory contexts. With help of massif tool i found repeated allocations originating from: ExecInitGenerated → build_column_default → stringToNode This indicates that generated expressions are reparsed multiple times, once per row to be updated instead of being reused. There is a problem call stack during UPDATE t SET id = 2; execution: see attached bt.txt, please. Before the above-mentioned commit, ExecInitGenerated() was effectively invoked once per ResultRelInfo, so this behavior was not observable. I would like to propose a fix that add a caching of the the parsed expression trees (Node *) in ResultRelInfo, so that build_column_default() and stringToNode() are executed at most once per attribute per query. With this fix, the query execution time and memory consumption return to normal: postgres=# UPDATE t SET id = 2; UPDATE 1000000 Time: 11522,621 ms (00:11,523) A patch for this approach for current master is attached here. Would be glad for any feedback. Best regards, -- Anton A. Melnikov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------mJ2jFdR1OLu9lpfaphpgldeh Content-Type: text/plain; charset=UTF-8; name="bt.txt" Content-Disposition: attachment; filename="bt.txt" Content-Transfer-Encoding: base64 KGdkYikgYnQgZnVsbAojMCAgRXhlY0luaXRHZW5lcmF0ZWQgKHJlc3VsdFJlbEluZm89MHg1 NTZjOWQyM2ZhNDgsIGVzdGF0ZT0weDU1NmM5ZDIzZjUwMCwgY21kdHlwZT1DTURfVVBEQVRF KSBhdCBub2RlTW9kaWZ5VGFibGUuYzo0ODgKICAgICAgICBleHByID0gMHg2NmRlYTFjMAog ICAgICAgIGF0dGdlbmVyYXRlZCA9IDExNSAncycKICAgICAgICBpID0gMwogICAgICAgIHJl bCA9IDB4N2Y2ZmNhNTAyNGY4CiAgICAgICAgdHVwZGVzYyA9IDB4N2Y2ZmNhNTAyNzA4CiAg ICAgICAgbmF0dHMgPSA0CiAgICAgICAgcmlfR2VuZXJhdGVkRXhwcnMgPSAweDU1NmM5ZDIy MTJhOAogICAgICAgIHJpX051bUdlbmVyYXRlZE5lZWRlZCA9IDAKICAgICAgICB1cGRhdGVk Q29scyA9IDB4NTU2YzlkMTFjMjU4CiAgICAgICAgb2xkQ29udGV4dCA9IDB4NTU2YzlkMjNm NDAwCiMxICAweDAwMDA1NTZjNzIwYmIxZDkgaW4gRXhlY0NvbXB1dGVTdG9yZWRHZW5lcmF0 ZWQgKHJlc3VsdFJlbEluZm89MHg1NTZjOWQyM2ZhNDgsIGVzdGF0ZT0weDU1NmM5ZDIzZjUw MCwgc2xvdD0weDU1NmM5ZDIyMDk0OCwgY21kdHlwZT1DTURfVVBEQVRFKSBhdCBub2RlTW9k aWZ5VGFibGUuYzo1NzkKICAgICAgICByZWwgPSAweDdmNmZjYTUwMjRmOAogICAgICAgIHR1 cGRlc2MgPSAweDdmNmZjYTUwMjcwOAogICAgICAgIG5hdHRzID0gNAogICAgICAgIGVjb250 ZXh0ID0gMHg1NTZjOWQyMjExOTgKICAgICAgICByaV9HZW5lcmF0ZWRFeHBycyA9IDB4NTU2 YzlkMjIwOWMwCiAgICAgICAgb2xkQ29udGV4dCA9IDB4N2Y2ZmNhNTAyNzA4CiAgICAgICAg dmFsdWVzID0gMHgwCiAgICAgICAgbnVsbHMgPSAweDAKIzIgIDB4MDAwMDU1NmM3MjBjMzll ZCBpbiBFeGVjVXBkYXRlUHJlcGFyZVNsb3QgKHJlc3VsdFJlbEluZm89MHg1NTZjOWQyM2Zh NDgsIHNsb3Q9MHg1NTZjOWQyMjA5NDgsIGVzdGF0ZT0weDU1NmM5ZDIzZjUwMCkgYXQgbm9k ZU1vZGlmeVRhYmxlLmM6MjE4MQogICAgICAgIHJlc3VsdFJlbGF0aW9uRGVzYyA9IDB4N2Y2 ZmNhNTAyNGY4CiMzICAweDAwMDA1NTZjNzIwYzMyN2UgaW4gRXhlY1VwZGF0ZUFjdCAoY29u dGV4dD0weDdmZmY2NmRlYTU1MCwgcmVzdWx0UmVsSW5mbz0weDU1NmM5ZDIzZmE0OCwgdHVw bGVpZD0weDdmZmY2NmRlYTUxYSwgb2xkdHVwbGU9MHgwLCBzbG90PTB4NTU2YzlkMjIwOTQ4 LCBjYW5TZXRUYWc9dHJ1ZSwgdXBkYXRlQ3h0PTB4N2ZmZjY2ZGVhNDA0KSBhdCBub2RlTW9k aWZ5VGFibGUuYzoyMjE4CiAgICAgICAgZXN0YXRlID0gMHg1NTZjOWQyM2Y1MDAKICAgICAg ICByZXN1bHRSZWxhdGlvbkRlc2MgPSAweDdmNmZjYTUwMjRmOAogICAgICAgIHBhcnRpdGlv bl9jb25zdHJhaW50X2ZhaWxlZCA9IGZhbHNlCiAgICAgICAgcmVzdWx0ID0gMjYzNjI1NTM2 OAojNCAgMHgwMDAwNTU2YzcyMGMwNzU4IGluIEV4ZWNVcGRhdGUgKGNvbnRleHQ9MHg3ZmZm NjZkZWE1NTAsIHJlc3VsdFJlbEluZm89MHg1NTZjOWQyM2ZhNDgsIHR1cGxlaWQ9MHg3ZmZm NjZkZWE1MWEsIG9sZHR1cGxlPTB4MCwgb2xkU2xvdD0weDU1NmM5ZDIyMDgzOCwgc2xvdD0w eDU1NmM5ZDIyMDk0OCwgY2FuU2V0VGFnPXRydWUpIGF0IG5vZGVNb2RpZnlUYWJsZS5jOjI1 NjAKICAgICAgICBsb2NrZWR0aWQgPSB7aXBfYmxraWQgPSB7YmlfaGkgPSAwLCBiaV9sbyA9 IDB9LCBpcF9wb3NpZCA9IDZ9CiAgICAgICAgZXN0YXRlID0gMHg1NTZjOWQyM2Y1MDAKICAg ICAgICByZXN1bHRSZWxhdGlvbkRlc2MgPSAweDdmNmZjYTUwMjRmOAogICAgICAgIHVwZGF0 ZUN4dCA9IHtjcm9zc1BhcnRVcGRhdGUgPSBmYWxzZSwgdXBkYXRlSW5kZXhlcyA9IFRVX05v bmUsIGxvY2ttb2RlID0gTG9ja1R1cGxlS2V5U2hhcmV9CiAgICAgICAgcmVzdWx0ID0gMjYz NjI1MzUxMgojNSAgMHgwMDAwNTU2YzcyMGJkY2Q3IGluIEV4ZWNNb2RpZnlUYWJsZSAocHN0 YXRlPTB4NTU2YzlkMjNmODM4KSBhdCBub2RlTW9kaWZ5VGFibGUuYzo0NzI3CiAgICAgICAg bm9kZSA9IDB4NTU2YzlkMjNmODM4CiAgICAgICAgY29udGV4dCA9IHttdHN0YXRlID0gMHg1 NTZjOWQyM2Y4MzgsIGVwcXN0YXRlID0gMHg1NTZjOWQyM2Y5MjAsIGVzdGF0ZSA9IDB4NTU2 YzlkMjNmNTAwLCBwbGFuU2xvdCA9IDB4NTU2YzlkMjQxMzU4LCB0bWZkID0ge2N0aWQgPSB7 aXBfYmxraWQgPSB7YmlfaGkgPSAyNCwgYmlfbG8gPSAwfSwgaXBfcG9zaWQgPSAwfSwgeG1h eCA9IDI2MzYzNzk5MjAsIGNtYXggPSAyMTg2OCwgdHJhdmVyc2VkID0gMjI2fSwgY3BEZWxl dGVkU2xvdCA9IDB4MCwgY3BVcGRhdGVSZXR1cm5pbmdTbG90ID0gMHg3ZmZmNjZkZWE1YjB9 CiAgICAgICAgZXN0YXRlID0gMHg1NTZjOWQyM2Y1MDAKICAgICAgICBvcGVyYXRpb24gPSBD TURfVVBEQVRFCiAgICAgICAgcmVzdWx0UmVsSW5mbyA9IDB4NTU2YzlkMjNmYTQ4CiAgICAg ICAgc3VicGxhbnN0YXRlID0gMHg1NTZjOWQyM2ZkMjgKICAgICAgICBzbG90ID0gMHg1NTZj OWQyMjA5NDgKICAgICAgICBvbGRTbG90ID0gMHg1NTZjOWQyMjA4MzgKICAgICAgICB0dXBs ZV9jdGlkID0ge2lwX2Jsa2lkID0ge2JpX2hpID0gMCwgYmlfbG8gPSAwfSwgaXBfcG9zaWQg PSA2fQogICAgICAgIG9sZHR1cGRhdGEgPSB7dF9sZW4gPSA4LCB0X3NlbGYgPSB7aXBfYmxr aWQgPSB7YmlfaGkgPSAwLCBiaV9sbyA9IDB9LCBpcF9wb3NpZCA9IDczMjh9LCB0X3RhYmxl T2lkID0gMCwgdF9kYXRhID0gMHgwfQogICAgICAgIG9sZHR1cGxlID0gMHgwCiAgICAgICAg dHVwbGVpZCA9IDB4N2ZmZjY2ZGVhNTFhCiAgICAgICAgdHVwbG9jayA9IGZhbHNlCiM2ICAw eDAwMDA1NTZjNzIwNzhkZTIgaW4gRXhlY1Byb2NOb2RlRmlyc3QgKG5vZGU9MHg1NTZjOWQy M2Y4MzgpIGF0IGV4ZWNQcm9jbm9kZS5jOjQ3MApObyBsb2NhbHMuCiM3ICAweDAwMDA1NTZj NzIwNzAwODIgaW4gRXhlY1Byb2NOb2RlIChub2RlPTB4NTU2YzlkMjNmODM4KSBhdCAuLi8u Li8uLi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oOjMyMApObyBsb2NhbHMuCiM4 ICAweDAwMDA1NTZjNzIwNmFkOTMgaW4gRXhlY3V0ZVBsYW4gKHF1ZXJ5RGVzYz0weDU1NmM5 ZDIzODhkMCwgb3BlcmF0aW9uPUNNRF9VUERBVEUsIHNlbmRUdXBsZXM9ZmFsc2UsIG51bWJl clR1cGxlcz0wLCBkaXJlY3Rpb249Rm9yd2FyZFNjYW5EaXJlY3Rpb24sIGRlc3Q9MHg1NTZj OWQyNDJhYjApIGF0IGV4ZWNNYWluLmM6MTcyNgogICAgICAgIGVzdGF0ZSA9IDB4NTU2Yzlk MjNmNTAwCiAgICAgICAgcGxhbnN0YXRlID0gMHg1NTZjOWQyM2Y4MzgKICAgICAgICB1c2Vf cGFyYWxsZWxfbW9kZSA9IGZhbHNlCiAgICAgICAgc2xvdCA9IDB4NTU2YzlkMTVlNDI4CiAg ICAgICAgY3VycmVudF90dXBsZV9jb3VudCA9IDAKIzkgIDB4MDAwMDU1NmM3MjA2YWMyMiBp biBzdGFuZGFyZF9FeGVjdXRvclJ1biAocXVlcnlEZXNjPTB4NTU2YzlkMjM4OGQwLCBkaXJl Y3Rpb249Rm9yd2FyZFNjYW5EaXJlY3Rpb24sIGNvdW50PTApIGF0IGV4ZWNNYWluLmM6MzY4 CiAgICAgICAgZXN0YXRlID0gMHg1NTZjOWQyM2Y1MDAKICAgICAgICBvcGVyYXRpb24gPSBD TURfVVBEQVRFCiAgICAgICAgZGVzdCA9IDB4NTU2YzlkMjQyYWIwCiAgICAgICAgc2VuZFR1 cGxlcyA9IGZhbHNlCiAgICAgICAgb2xkY29udGV4dCA9IDB4NTU2YzlkMjM4N2QwCiMxMCAw eDAwMDA1NTZjNzIwNmFhN2EgaW4gRXhlY3V0b3JSdW4gKHF1ZXJ5RGVzYz0weDU1NmM5ZDIz ODhkMCwgZGlyZWN0aW9uPUZvcndhcmRTY2FuRGlyZWN0aW9uLCBjb3VudD0wKSBhdCBleGVj TWFpbi5jOjMwNQpObyBsb2NhbHMuCiMxMSAweDAwMDA1NTZjNzIzYmVlMjMgaW4gUHJvY2Vz c1F1ZXJ5IChwbGFuPTB4NTU2YzlkMjQxYTg4LCBzb3VyY2VUZXh0PTB4NTU2YzlkMTFhZDUw ICJVUERBVEUgdCBTRVQgaWQgPSAyOyIsIHBhcmFtcz0weDAsIHF1ZXJ5RW52PTB4MCwgZGVz dD0weDU1NmM5ZDI0MmFiMCwgcWM9MHg3ZmZmNjZkZWE5YTgpIGF0IHBxdWVyeS5jOjE2MQog ICAgICAgIHF1ZXJ5RGVzYyA9IDB4NTU2YzlkMjM4OGQwCiMxMiAweDAwMDA1NTZjNzIzYmRl NjYgaW4gUG9ydGFsUnVuTXVsdGkgKHBvcnRhbD0weDU1NmM5ZDFiZDhiMCwgaXNUb3BMZXZl bD10cnVlLCBzZXRIb2xkU25hcHNob3Q9ZmFsc2UsIGRlc3Q9MHg1NTZjOWQyNDJhYjAsIGFs dGRlc3Q9MHg1NTZjOWQyNDJhYjAsIHFjPTB4N2ZmZjY2ZGVhOWE4KSBhdCBwcXVlcnkuYzox MjY4CiAgICAgICAgcHN0bXQgPSAweDU1NmM5ZDI0MWE4OAogICAgICAgIHN0bXRsaXN0X2l0 ZW1fX3N0YXRlID0ge2wgPSAweDU1NmM5ZDI0MmE2MCwgaSA9IDB9CiAgICAgICAgYWN0aXZl X3NuYXBzaG90X3NldCA9IHRydWUKICAgICAgICBzdG10bGlzdF9pdGVtID0gMHg1NTZjOWQy NDJhNzgKIzEzIDB4MDAwMDU1NmM3MjNiZDRmMyBpbiBQb3J0YWxSdW4gKHBvcnRhbD0weDU1 NmM5ZDFiZDhiMCwgY291bnQ9OTIyMzM3MjAzNjg1NDc3NTgwNywgaXNUb3BMZXZlbD10cnVl LCBkZXN0PTB4NTU2YzlkMjQyYWIwLCBhbHRkZXN0PTB4NTU2YzlkMjQyYWIwLCBxYz0weDdm ZmY2NmRlYTlhOCkgYXQgcHF1ZXJ5LmM6NzgzCiAgICAgICAgX3NhdmVfZXhjZXB0aW9uX3N0 YWNrID0gMHg3ZmZmNjZkZWFiNTAKICAgICAgICBfc2F2ZV9jb250ZXh0X3N0YWNrID0gMHgw CiAgICAgICAgX2xvY2FsX3NpZ2ptcF9idWYgPSB7e19fam1wYnVmID0gezkzOTI0MjY0MjQ5 MDQwLCA1ODA3NDkzNzMzNjI3ODUxMDkzLCA5MzkyNDI1NDIwNzE4NCwgMTQwNzM0OTE5MjU5 ODA4LCAwLCAwLCA1ODA3NDkzNzMzOTkyNzU1NTQxLCA0MTM4OTY4NzEyNTk3OTU3OTd9LCBf X21hc2tfd2FzX3NhdmVkID0gMCwgX19zYXZlZF9tYXNrID0ge19fdmFsID0gezkzOTI0MjYz ODYyMjI1LCA1ODA3NDkzNzMzOTkwNjU4Mzg5LCA0MTM4OTY4NzA2NzQwMzUwMjksIDI0MTYs IDEyOCwgMTk4MTU3Mjg2MDAsIDAsIDkzOTI0OTgxMjE2MjcyLCA5MzkyNDk4MDAxMDA2NCwg MjYzNTg1NjIwOCwgMTEyLCA5MzkyNDk4MDAxMDA2NCwgOTM5MjQ5ODEyMjIwNjQsIDE0MDcz NDkxOTI1NjI4OCwgOTM5MjQyNjM5MjcyMzIsIDE0MDczNDkxOTI1NjI4OH19fX0KICAgICAg ICBfZG9fcmV0aHJvdyA9IGZhbHNlCiAgICAgICAgcmVzdWx0ID0gZmFsc2UKICAgICAgICBu cHJvY2Vzc2VkID0gOTM5MjQ5ODEyMjIwNjQKICAgICAgICBzYXZlVG9wVHJhbnNhY3Rpb25S ZXNvdXJjZU93bmVyID0gMHg1NTZjOWQxNWFhMzgKICAgICAgICBzYXZlVG9wVHJhbnNhY3Rp b25Db250ZXh0ID0gMHg1NTZjOWQxY2ZjZDAKICAgICAgICBzYXZlQWN0aXZlUG9ydGFsID0g MHgwCiAgICAgICAgc2F2ZVJlc291cmNlT3duZXIgPSAweDU1NmM5ZDE1YWEzOAogICAgICAg IHNhdmVQb3J0YWxDb250ZXh0ID0gMHgwCiAgICAgICAgc2F2ZU1lbW9yeUNvbnRleHQgPSAw eDU1NmM5ZDFjZmNkMAojMTQgMHgwMDAwNTU2YzcyM2I4MjE2IGluIGV4ZWNfc2ltcGxlX3F1 ZXJ5IChxdWVyeV9zdHJpbmc9MHg1NTZjOWQxMWFkNTAgIlVQREFURSB0IFNFVCBpZCA9IDI7 IikgYXQgcG9zdGdyZXMuYzoxMjc4CiAgICAgICAgY21kdGFnbGVuID0gNgogICAgICAgIHNu YXBzaG90X3NldCA9IHRydWUKICAgICAgICBwZXJfcGFyc2V0cmVlX2NvbnRleHQgPSAweDAK ICAgICAgICBwbGFudHJlZV9saXN0ID0gMHg1NTZjOWQyNDJhNjAKICAgICAgICBwYXJzZXRy ZWUgPSAweDU1NmM5ZDExYjhiOAogICAgICAgIGNvbW1hbmRUYWcgPSBDTURUQUdfVVBEQVRF CiAgICAgICAgcWMgPSB7Y29tbWFuZFRhZyA9IENNRFRBR19VTktOT1dOLCBucHJvY2Vzc2Vk ID0gMH0KICAgICAgICBxdWVyeXRyZWVfbGlzdCA9IDB4NTU2YzlkMTFjMzc4CiAgICAgICAg cG9ydGFsID0gMHg1NTZjOWQxYmQ4YjAKICAgICAgICByZWNlaXZlciA9IDB4NTU2YzlkMjQy YWIwCiAgICAgICAgZm9ybWF0ID0gMAogICAgICAgIGNtZHRhZ25hbWUgPSAweDU1NmM3Mjdi NjUxYSAiVVBEQVRFIgogICAgICAgIHBhcnNldHJlZV9pdGVtX19zdGF0ZSA9IHtsID0gMHg1 NTZjOWQxMWI4ZTgsIGkgPSAwfQogICAgICAgIGRlc3QgPSBEZXN0UmVtb3RlCiAgICAgICAg b2xkY29udGV4dCA9IDB4NTU2YzlkMWNmY2QwCiAgICAgICAgcGFyc2V0cmVlX2xpc3QgPSAw eDU1NmM5ZDExYjhlOAogICAgICAgIHBhcnNldHJlZV9pdGVtID0gMHg1NTZjOWQxMWI5MDAK ICAgICAgICBzYXZlX2xvZ19zdGF0ZW1lbnRfc3RhdHMgPSBmYWxzZQogICAgICAgIHdhc19s b2dnZWQgPSBmYWxzZQogICAgICAgIHVzZV9pbXBsaWNpdF9ibG9jayA9IGZhbHNlCiAgICAg ICAgbXNlY19zdHIgPSAiXDAwMFwyNTJcMzM2ZlwzNzdcMTc3XDAwMFwwMDBcMDY1V2BybFVc MDAwXDAwMCBcMjUyXDMzNmZcMDI0XDAwMFwwMDBcMDAwUFwyNTVcMDIxXDIzNWxVXDAwMCIK IzE1IDB4MDAwMDU1NmM3MjNiNzQ0OSBpbiBQb3N0Z3Jlc01haW4gKGRibmFtZT0weDU1NmM5 ZDE1OTA1OCAicG9zdGdyZXMiLCB1c2VybmFtZT0weDU1NmM5ZDE1OTAzOCAicG9zdGdyZXMi KSBhdCBwb3N0Z3Jlcy5jOjQ4MTAKICAgICAgICBxdWVyeV9zdHJpbmcgPSAweDU1NmM5ZDEx YWQ1MCAiVVBEQVRFIHQgU0VUIGlkID0gMjsiCiAgICAgICAgZmlyc3RjaGFyID0gODEKICAg ICAgICBpbnB1dF9tZXNzYWdlID0ge2RhdGEgPSAweDU1NmM5ZDExYWQ1MCAiVVBEQVRFIHQg U0VUIGlkID0gMjsiLCBsZW4gPSAyMSwgbWF4bGVuID0gMTAyNCwgY3Vyc29yID0gMjF9CiAg ICAgICAgbG9jYWxfc2lnam1wX2J1ZiA9IHt7X19qbXBidWYgPSB7OTM5MjQyNjQyNDkwNDAs IDU4MDc0OTM3MzM3OTU2MjMyNTMsIDkzOTI0MjU0MjA3MTg0LCAxNDA3MzQ5MTkyNTk4MDgs IDAsIDAsIDU4MDc0OTM3MzM2MDQ3ODI0MjEsIDQxMzg5Njg3MzkyMDI5NTI1M30sIF9fbWFz a193YXNfc2F2ZWQgPSAxLCBfX3NhdmVkX21hc2sgPSB7X192YWwgPSB7NDE5NDMwNCwgOTM5 MjQ5Nzk5NzU4MDgsIDkzOTI0OTgwMjg5NTYwLCAxNDA3MzQ5MTkyNTcwNTYsIDkzOTI0MjYz OTI2OTQ0LCAxNDA3MzQ5MTkyNTcxMzYsIDkzOTI0OTc5OTc1ODA4LCA5MzkyNDk3OTk3NTgw OCwgOTM5MjQ5Nzk5NzU4MDgsIDE0MDczNDkxOTI1NzA4OCwgOTM5MjQyNjExMjM0OTQsIDAs IDkzOTI0OTc5OTc1ODA4LCAxNDA3MzQ5MTkyNTcxMzYsIDkzOTI0MjYxMjM2ODc5LCA3MTM1 NDYyNTcxMn19fX0KICAgICAgICBzZW5kX3JlYWR5X2Zvcl9xdWVyeSA9IGZhbHNlCiAgICAg ICAgaWRsZV9pbl90cmFuc2FjdGlvbl90aW1lb3V0X2VuYWJsZWQgPSBmYWxzZQogICAgICAg IGlkbGVfc2Vzc2lvbl90aW1lb3V0X2VuYWJsZWQgPSBmYWxzZQojMTYgMHgwMDAwNTU2Yzcy M2FmMmUzIGluIEJhY2tlbmRNYWluIChzdGFydHVwX2RhdGE9MHg3ZmZmNjZkZWFjYzgsIHN0 YXJ0dXBfZGF0YV9sZW49MjQpIGF0IGJhY2tlbmRfc3RhcnR1cC5jOjEyNAogICAgICAgIGJz ZGF0YSA9IDB4N2ZmZjY2ZGVhY2M4CiMxNyAweDAwMDA1NTZjNzIyOGExZDkgaW4gcG9zdG1h c3Rlcl9jaGlsZF9sYXVuY2ggKGNoaWxkX3R5cGU9Ql9CQUNLRU5ELCBjaGlsZF9zbG90PTEs IHN0YXJ0dXBfZGF0YT0weDdmZmY2NmRlYWNjOCwgc3RhcnR1cF9kYXRhX2xlbj0yNCwgY2xp ZW50X3NvY2s9MHg3ZmZmNjZkZWFkMjgpIGF0IGxhdW5jaF9iYWNrZW5kLmM6MjYzCiAgICAg ICAgcGlkID0gMAojMTggMHgwMDAwNTU2YzcyMjkxNDgyIGluIEJhY2tlbmRTdGFydHVwIChj bGllbnRfc29jaz0weDdmZmY2NmRlYWQyOCkgYXQgcG9zdG1hc3Rlci5jOjM2MDYKICAgICAg ICBibiA9IDB4NTU2YzlkMTQ5ZTA4CiAgICAgICAgcGlkID0gNjQKICAgICAgICBzdGFydHVw X2RhdGEgPSB7Y2FuQWNjZXB0Q29ubmVjdGlvbnMgPSBDQUNfT0ssIHNvY2tldF9jcmVhdGVk ID0gODI4MTkyNzM2NTM2NDk3LCBmb3JrX3N0YXJ0ZWQgPSA4MjgxOTI3MzY1MzY1MDB9CiAg ICAgICAgY2FjID0gQ0FDX09LCiMxOSAweDAwMDA1NTZjNzIyOGYzOTkgaW4gU2VydmVyTG9v cCAoKSBhdCBwb3N0bWFzdGVyLmM6MTcxMwogICAgICAgIHMgPSB7c29jayA9IDksIHJhZGRy ID0ge2FkZHIgPSB7c3NfZmFtaWx5ID0gMSwgX19zc19wYWRkaW5nID0gIlwwMDBcMDAwXDAw MFwwMDBcMDAwXDAwMFlcMzIwelwzMjZvXDE3N1wwMDBcMDAwYFwyNTZcMzM2ZiIsICdcMDAw JyA8cmVwZWF0cyAxMiB0aW1lcz4sICJcMzc3XDM3N1wzNzdcMzc3XDAwMFwwMDBcMDAwXDAw MFwzNTZcMzEwXDM0N1lcMDAwXDAwMFwwMDBcMDAwXDI1MHdGXDMyN29cMTc3XDAwMFwwMDBc MjUwXDI1NlwzMzZmXDM3N1wxNzdcMDAwXDAwMHpcMzYwXDAwNlwzMjdvXDE3N1wwMDBcMDAw XDAwMFwyNTZcMzM2ZlwzNzdcMTc3XDAwMFwwMDBcMDIwXDI1NlwzMzZmXDM3N1wxNzdcMDAw XDAwMFwzNjEhSVwzMjdvXDE3N1wwMDBcMDAwXGZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBc MDAwXDAzMFwzNDNcMzcwXDMyM29cMTc3XDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFww MDBcMDAwIiwgX19zc19hbGlnbiA9IDB9LCBzYWxlbiA9IDJ9fQogICAgICAgIGkgPSAwCiAg ICAgICAgbm93ID0gMTc3NDg3NzUzMQogICAgICAgIGxhc3RfbG9ja2ZpbGVfcmVjaGVja190 aW1lID0gMTc3NDg3NzUyNQogICAgICAgIGxhc3RfdG91Y2hfdGltZSA9IDE3NzQ4NzYzODQK ICAgICAgICBldmVudHMgPSB7e3BvcyA9IDIsIGV2ZW50cyA9IDIsIGZkID0gNywgdXNlcl9k YXRhID0gMHgwfSwge3BvcyA9IDAsIGV2ZW50cyA9IDAsIGZkID0gMSwgdXNlcl9kYXRhID0g MHgwfSwge3BvcyA9IC0xLCBldmVudHMgPSAwLCBmZCA9IDE3MjU4Njk2MjQsIHVzZXJfZGF0 YSA9IDB4N2Y2ZmQ2NzFmNGE4fSwge3BvcyA9IC02ODc0NzAzMzYsIGV2ZW50cyA9IDMyNjIz LCBmZCA9IDMyODE2LCB1c2VyX2RhdGEgPSAweGZmZmZmZmZmZmZmZmZmYjB9LCB7cG9zID0g MTcyNTg3MTc3NiwgZXZlbnRzID0gMzI3NjcsIGZkID0gMCwgdXNlcl9kYXRhID0gMHgwfSwg e3BvcyA9IC02OTY1NjEzMjQsIGV2ZW50cyA9IDMyNjIzLCBmZCA9IDMyNzY4LCB1c2VyX2Rh dGEgPSAweDdmNmZkNzA4OTBmOCA8X19saWJjX2ZvcmtAZ290LnBsdD59LCB7cG9zID0gMTcy NTg3MDg5NiwgZXZlbnRzID0gMzI3NjcsIGZkID0gMTkwOTM3ODI1NiwgdXNlcl9kYXRhID0g MHg3ZmZmNjZkZWI2YTB9LCB7cG9zID0gMCwgZXZlbnRzID0gMCwgZmQgPSAwLCB1c2VyX2Rh dGEgPSAweDdmNmZkNzQ5NzE5NyA8X2RsX2ZpeHVwKzIxNT59LCB7cG9zID0gMSwgZXZlbnRz ID0gMCwgZmQgPSAwLCB1c2VyX2RhdGEgPSAweDEwMDB9LCB7cG9zID0gLTY5NzE3NDg3Miwg ZXZlbnRzID0gMzI2MjMsIGZkID0gMTcyNTg3MDY3MiwgdXNlcl9kYXRhID0gMHg3ZjZmZDc0 OWVjM2UgPF9kbF9ydW50aW1lX3Jlc29sdmVfeHNhdmVjKzEyNj59LCB7cG9zID0gMCwgZXZl bnRzID0gMCwgZmQgPSAwLCB1c2VyX2RhdGEgPSAweDdmZmY2NmRlYjJhMH0sIHtwb3MgPSAx OTIzMjkyNTA0LCBldmVudHMgPSAyMTg2OCwgZmQgPSAyLCB1c2VyX2RhdGEgPSAweDU1NmM3 MmEzMWQ1OCA8QmxvY2tTaWc+fSwge3BvcyA9IDE3MjU5MjM0NTYsIGV2ZW50cyA9IDMyNzY3 LCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4MH0sIHtwb3MgPSAtNjk2MjgyODQ3LCBldmVudHMg PSAzMjYyMywgZmQgPSAxNzI1ODY5ODg4LCB1c2VyX2RhdGEgPSAweDJmZmZmMDAwMDFmYTB9 LCB7cG9zID0gMTkxOTQyMDExMiwgZXZlbnRzID0gMjE4NjgsIGZkID0gMiwgdXNlcl9kYXRh ID0gMHg3MWNlY2NkMH0sIHtwb3MgPSAtNjk2NTY4MzMzLCBldmVudHMgPSAzMjYyMywgZmQg PSAtMTY1OTU1ODMyMCwgdXNlcl9kYXRhID0gMHg3ZjZmZDY5MDdiZTAgPG1haW5fYXJlbmEr OTY+fSwge3BvcyA9IDcsIGV2ZW50cyA9IDAsIGZkID0gLTE2NjAwMzQ1NDYsIHVzZXJfZGF0 YSA9IDB4MTAwMH0sIHtwb3MgPSA5OSwgZXZlbnRzID0gMCwgZmQgPSAtMTY2MDAzMzAxNiwg dXNlcl9kYXRhID0gMHgxMDMwfSwge3BvcyA9IDY0LCBldmVudHMgPSAwLCBmZCA9IDI1Nywg dXNlcl9kYXRhID0gMHgwfSwge3BvcyA9IDAsIGV2ZW50cyA9IDAsIGZkID0gMCwgdXNlcl9k YXRhID0gMHgwfSwge3BvcyA9IDAsIGV2ZW50cyA9IDAsIGZkID0gMCwgdXNlcl9kYXRhID0g MHhmZmZmZmZmZmZmZmZmZmZmfSwge3BvcyA9IC0xLCBldmVudHMgPSA0Mjk0OTY3Mjk1LCBm ZCA9IDE5MzU3NjQ3ODEsIHVzZXJfZGF0YSA9IDB4MzczNzMxMGE2MTc0NjE2NH0sIHtwb3Mg PSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4N2Y2ZmQ2OTA3YmUwIDxt YWluX2FyZW5hKzk2Pn0sIHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDIsIHVzZXJfZGF0 YSA9IDB4MH0sIHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4 MH0sIHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4MH0sIHtw b3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4Mn0sIHtwb3MgPSAy LCBldmVudHMgPSAwLCBmZCA9IDE2NDQ5Nzg1LCB1c2VyX2RhdGEgPSAweDB9LCB7cG9zID0g MTY2NDYzOTQsIGV2ZW50cyA9IDAsIGZkID0gMTY3MTE5MzEsIHVzZXJfZGF0YSA9IDB4MH0s IHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4MH0sIHtwb3Mg PSAxNiwgZXZlbnRzID0gMCwgZmQgPSAtMTY1OTU5NDQ2NCwgdXNlcl9kYXRhID0gMHg1NTZj OWQxNTM2NzB9LCB7cG9zID0gLTE2NTk1OTU0NTYsIGV2ZW50cyA9IDEsIGZkID0gNCwgdXNl cl9kYXRhID0gMHgyZDB9LCB7cG9zID0gNzg0LCBldmVudHMgPSAwLCBmZCA9IC0xNzAxODk3 NzI4LCB1c2VyX2RhdGEgPSAweDE0MDB9LCB7cG9zID0gMTkxOTQyMDExMiwgZXZlbnRzID0g MjE4NjgsIGZkID0gMTcyNTg3MDQ0OCwgdXNlcl9kYXRhID0gMHg1NTZjNzI2MjFhZDcgPHdp cGVfbWVtKzM5Pn0sIHtwb3MgPSAyLCBldmVudHMgPSAwLCBmZCA9IDYsIHVzZXJfZGF0YSA9 IDB4MH0sIHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4MH0s IHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4NH0sIHtwb3Mg PSAtMTY1OTU5NTI4MCwgZXZlbnRzID0gMjE4NjgsIGZkID0gMTAyNCwgdXNlcl9kYXRhID0g MHgwfSwge3BvcyA9IC0xNjU5NTk1NDU2LCBldmVudHMgPSAyMTg2OCwgZmQgPSAtMTY1OTU5 NTQ1NiwgdXNlcl9kYXRhID0gMHg3ZmZmNjZkZWIxOTB9LCB7cG9zID0gMTkxOTA5MDM5Nywg ZXZlbnRzID0gMjE4NjgsIGZkID0gLTE2NTk1OTU0NTYsIHVzZXJfZGF0YSA9IDB4NTU2Yzlk MTQ5NTQwfSwge3BvcyA9IDE3MjU4NzA1NjAsIGV2ZW50cyA9IDMyNzY3LCBmZCA9IDE5MTkw MzIyMzYsIHVzZXJfZGF0YSA9IDB4NDAwfSwge3BvcyA9IC0xNjU5NTk5NTEyLCBldmVudHMg PSAyMTg2OCwgZmQgPSAwLCB1c2VyX2RhdGEgPSAweDU1NmM3MmE0YjJhMCA8Y29udGV4dF9m cmVlbGlzdHMrMTY+fSwge3BvcyA9IDEwMjQsIGV2ZW50cyA9IDAsIGZkID0gLTE2NTk1NTQx OTIsIHVzZXJfZGF0YSA9IDB4NTU2YzlkMTQ5NTQwfSwge3BvcyA9IC0xNjU5NTk1NDU2LCBl dmVudHMgPSAyMTg2OCwgZmQgPSAxNzI1ODcwNTkyLCB1c2VyX2RhdGEgPSAweDdmNmZkNjdh ZGM1YSA8X0lPX2ZsdXNoX2FsbF9sb2NrcCs1NTQ+fSwge3BvcyA9IDE3MjU4NzE3NzYsIGV2 ZW50cyA9IDEsIGZkID0gLTE2NTk1OTU0NTYsIHVzZXJfZGF0YSA9IDB4N2Y2ZmQ2N2FiZmIw IDxmbHVzaF9jbGVhbnVwPn0sIHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IDAsIHVzZXJf ZGF0YSA9IDB4N2Y2ZmQ2N2FkYzVhIDxfSU9fZmx1c2hfYWxsX2xvY2twKzU1ND59LCB7cG9z ID0gLTE2NTk1OTU0NTYsIGV2ZW50cyA9IDEsIGZkID0gLTE3MDE4OTc3MjgsIHVzZXJfZGF0 YSA9IDB4N2Y2ZmQ2N2FiZmIwIDxmbHVzaF9jbGVhbnVwPn0sIHtwb3MgPSAwLCBldmVudHMg PSAwLCBmZCA9IDAsIHVzZXJfZGF0YSA9IDB4MH0sIHtwb3MgPSAxNzI1ODcwODk2LCBldmVu dHMgPSAzMjc2NywgZmQgPSAtMTcwMTg5NzcyOCwgdXNlcl9kYXRhID0gMHg1NTZjNzI2ODA2 ZDAgPF9fbGliY19jc3VfaW5pdD59LCB7cG9zID0gMCwgZXZlbnRzID0gMCwgZmQgPSAwLCB1 c2VyX2RhdGEgPSAweDdmNmZkNjdmZTAwZCA8X19saWJjX2ZvcmsrMjg1Pn0sIHtwb3MgPSAx NzI1ODcwOTQ0LCBldmVudHMgPSAzMjc2NywgZmQgPSAtMTcwMTg5NzcyOCwgdXNlcl9kYXRh ID0gMHg3ZmZmNjZkZWI2YTB9LCB7cG9zID0gMTkxNTI2NDc5NywgZXZlbnRzID0gMjE4Njgs IGZkID0gNDE5NDMwNCwgdXNlcl9kYXRhID0gMHg1NTZjNzI2MjFiNTEgPEFsbG9jU2V0RGVs ZXRlKzk3Pn0sIHtwb3MgPSAwLCBldmVudHMgPSAwLCBmZCA9IC02OTY2NjAyODUsIHVzZXJf ZGF0YSA9IDB4MTM3MjY4MDZkMH0sIHtwb3MgPSAxMywgZXZlbnRzID0gMjE4NjgsIGZkID0g NDE5NDMwNCwgdXNlcl9kYXRhID0gMHg1NTZjNzI1ZTRjMTggPHNob3VsZF9vdXRwdXRfdG9f c2VydmVyKzQwPn0sIHtwb3MgPSAtMTY1OTYwNDY1NiwgZXZlbnRzID0gMjE4NjgsIGZkID0g MTMsIHVzZXJfZGF0YSA9IDB4MTM2NmRlYjMzMH0sIHtwb3MgPSAxMywgZXZlbnRzID0gMjE4 NjgsIGZkID0gMTcyNTg3MDg4MCwgdXNlcl9kYXRhID0gMHg1NTZjNzI1ZTRjMTggPHNob3Vs ZF9vdXRwdXRfdG9fc2VydmVyKzQwPn0sIHtwb3MgPSAxNzI1ODcwODk2LCBldmVudHMgPSAz Mjc2NywgZmQgPSAxMywgdXNlcl9kYXRhID0gMHg3ZmZmNjZkZWIzNjB9LCB7cG9zID0gMTkx ODc4Mjk3OSwgZXZlbnRzID0gMjE4NjgsIGZkID0gMTcyNTg3MDk2MCwgdXNlcl9kYXRhID0g MHg1NTZjOWQxNGQyZDh9LCB7cG9zID0gMTcyNTg3MDk0NCwgZXZlbnRzID0gMzI3NjcsIGZk ID0gMTkxNTI3Mzk4OCwgdXNlcl9kYXRhID0gMHgwfSwge3BvcyA9IDEzLCBldmVudHMgPSAz NzI4MDgsIGZkID0gMTcyNTg3MTAwOCwgdXNlcl9kYXRhID0gMHg1NTZjNzIyOGEwYzAgPHBv c3RtYXN0ZXJfY2hpbGRfbGF1bmNoKzEyOD59LCB7cG9zID0gMTcyNTg3MTAyNCwgZXZlbnRz ID0gMzI3NjcsIGZkID0gMTkxNTI4NTM0NSwgdXNlcl9kYXRhID0gMHgxfSwge3BvcyA9IDIs IGV2ZW50cyA9IDAsIGZkID0gMTcyNTg3MTA3MiwgdXNlcl9kYXRhID0gMHg1NTZjNzIyOGYx YzAgPG1heWJlX3N0YXJ0X2Jnd29ya2Vycys0MDA+fSwge3BvcyA9IC0xNjU5NzgzNzIwLCBl dmVudHMgPSAyMTg2OCwgZmQgPSAxOTE1Mjg1MzQ1LCB1c2VyX2RhdGEgPSAweDU1NmM5ZDEx YjAwMH0sIHtwb3MgPSAxOTIzMTgxNjk2LCBldmVudHMgPSAyMTg2OCwgZmQgPSAtMTY1OTc4 MzcyMCwgdXNlcl9kYXRhID0gMHg1NTZjNzJhMTZjODAgPEJhY2tncm91bmRXb3JrZXJMaXN0 Pn19CiAgICAgICAgbmV2ZW50cyA9IDEKIzIwIDB4MDAwMDU1NmM3MjI4ZTBiNSBpbiBQb3N0 bWFzdGVyTWFpbiAoYXJnYz0zLCBhcmd2PTB4NTU2YzlkMTEyNWYwKSBhdCBwb3N0bWFzdGVy LmM6MTQwMwogICAgICAgIG9wdCA9IC0xCiAgICAgICAgc3RhdHVzID0gMAogICAgICAgIHVz ZXJEb3B0aW9uID0gMHg1NTZjOWQxMTliYTAgIi91c3IvbG9jYWwvcGd2YW4tbWFzdGVyL2Rh dGEiCiAgICAgICAgbGlzdGVuX2FkZHJfc2F2ZWQgPSB0cnVlCiAgICAgICAgb3V0cHV0X2Nv bmZpZ192YXJpYWJsZSA9IDB4MAojMjEgMHgwMDAwNTU2YzcyMTE0MTM2IGluIG1haW4gKGFy Z2M9MywgYXJndj0weDU1NmM5ZDExMjVmMCkgYXQgbWFpbi5jOjIzMQogICAgICAgIGRvX2No ZWNrX3Jvb3QgPSB0cnVlCiAgICAgICAgZGlzcGF0Y2hfb3B0aW9uID0gRElTUEFUQ0hfUE9T VE1BU1RFUgo= --------------mJ2jFdR1OLu9lpfaphpgldeh Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Avoid-repeated-parsing-of-generated-column-exprs.patch" Content-Disposition: attachment; filename*0="v1-0001-Avoid-repeated-parsing-of-generated-column-exprs.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBmYzBlNDc2M2ZkNDRjMWUxNTcxMzg3YzM5YjljYjVhMGM4MTY3NzMwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW50b24gQS4gTWVsbmlrb3YiIDxhLm1lbG5pa292 QHBvc3RncmVzcHJvLnJ1PgpEYXRlOiBGcmksIDI3IE1hciAyMDI2IDExOjMyOjI1ICswMzAw ClN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgcmVwZWF0ZWQgcGFyc2luZyBvZiBnZW5lcmF0ZWQg Y29sdW1uIGV4cHJlc3Npb25zLgoKQWZ0ZXIgY29tbWl0IDgzZWE2YzU0LCBleGVjdXRpb24g cGF0aHMgd2VyZSBpbnRyb2R1Y2VkCndoZXJlIEV4ZWNJbml0R2VuZXJhdGVkKCkgY2FuIGJl IGludm9rZWQgcGVyIHJvdwpmb3IgdGhlIHNhbWUgUmVzdWx0UmVsSW5mbyBkdXJpbmcgYSBz aW5nbGUgcXVlcnkuCkJlY2F1c2UgdGhlIHBhcnNlZCBleHByZXNzaW9uIHRyZWVzIGFyZSBh bGxvY2F0ZWQKaW4gZXNfcXVlcnlfY3h0LCBlYWNoIGNhbGwgcmVzdWx0cyBpbiBhZGRpdGlv bmFsCmFsbG9jYXRpb25zIHRoYXQgYXJlIG5vdCBmcmVlZCB1bnRpbCBxdWVyeSBlbmQuCgpG aXggaXQgYnkgY2FjaGluZyB0aGUgcGFyc2VkIGV4cHJlc3Npb24gdHJlZXMKKE5vZGUgKikg aW4gUmVzdWx0UmVsSW5mbywKZW5zdXJpbmcgdGhhdCBidWlsZF9jb2x1bW5fZGVmYXVsdCgp IGFuZCBzdHJpbmdUb05vZGUoKQphcmUgZXhlY3V0ZWQgb25seSBvbmNlIHBlciBhdHRyaWJ1 dGUgcGVyIHF1ZXJ5CmFuZCBzdWJzZXF1ZW50IGNhbGxzIHJldXNlIHRoZSBjYWNoZWQgcGFy c2UgdHJlZXMuCgpUaGlzIHJlc3RvcmVzIHRoZSBvbGQgYmVoYXZpb3Igd2hlcmUgZXhwcmVz c2lvbiBwYXJzaW5nCmlzIGRvbmUgb25jZSBwZXIgcXVlcnkgYW5kIHByZXZlbnRzIHVuYm91 bmRlZCBtZW1vcnkgZ3Jvd3RoLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgfCAxNCArKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg ICAgICAgICAgfCAgMyArKysKIDMgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDU4Yjg0OTU1 YzJiLi5iM2QyMzA0NjI0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMzEx LDYgKzEzMTEsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvLAogCXJlc3VsdFJlbEluZm8tPnJpX0dlblZpcnR1YWxOb3ROdWxsQ29uc3RyYWlu dEV4cHJzID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9HZW5lcmF0ZWRFeHByc0kgPSBO VUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzVSA9IE5VTEw7CisJcmVz dWx0UmVsSW5mby0+cmlfR2VuZXJhdGVkRXhwcnNQYXJzZWQgPSBOVUxMOwogCXJlc3VsdFJl bEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJp X29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyA9IE5JTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMKaW5kZXggNGNkNWUyNjJlMGYuLjQ1MWEzOGJjN2M5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDg1LDcgKzQ4NSwxOSBAQCBFeGVjSW5pdEdl bmVyYXRlZChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJRXhwcgkgICAqZXhw cjsKIAogCQkJLyogRmV0Y2ggdGhlIEdFTkVSQVRFRCBBUyBleHByZXNzaW9uIHRyZWUgKi8K LQkJCWV4cHIgPSAoRXhwciAqKSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGkgKyAxKTsK KwkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9HZW5lcmF0ZWRFeHByc1BhcnNlZCA9PSBOVUxM KQorCQkJCXJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzUGFyc2VkID0gcGFsbG9j MChuYXR0cyAqIHNpemVvZihOb2RlICopKTsKKworCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJp X0dlbmVyYXRlZEV4cHJzUGFyc2VkW2ldID09IE5VTEwpCisJCQl7CisJCQkJZXhwciA9IChF eHByICopIGJ1aWxkX2NvbHVtbl9kZWZhdWx0KHJlbCwgaSArIDEpOworCQkJCXJlc3VsdFJl bEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzUGFyc2VkW2ldID0gKE5vZGUgKikgZXhwcjsKKwkJ CX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlleHByID0gKEV4cHIgKikgcmVzdWx0UmVsSW5mby0+ cmlfR2VuZXJhdGVkRXhwcnNQYXJzZWRbaV07CisJCQl9CisKIAkJCWlmIChleHByID09IE5V TEwpCiAJCQkJZWxvZyhFUlJPUiwgIm5vIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3VuZCBm b3IgY29sdW1uIG51bWJlciAlZCBvZiB0YWJsZSBcIiVzXCIiLAogCQkJCQkgaSArIDEsIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCA2ODRlMzk4ZjgyNC4uY2EzMDEzN2EzMDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC01ODIsNiArNTgyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0UmVsSW5mbwogCWludAkJ CXJpX051bUdlbmVyYXRlZE5lZWRlZEk7CiAJaW50CQkJcmlfTnVtR2VuZXJhdGVkTmVlZGVk VTsKIAorCS8qIENhY2hlZCBwYXJzZWQgR0VORVJBVEVEIGV4cHJlc3Npb25zICovCisJTm9k ZSAgICAgICoqcmlfR2VuZXJhdGVkRXhwcnNQYXJzZWQ7CisKIAkvKiBsaXN0IG9mIFJFVFVS TklORyBleHByZXNzaW9ucyAqLwogCUxpc3QJICAgKnJpX3JldHVybmluZ0xpc3Q7CiAKLS0g CjIuNTAuMQoK --------------mJ2jFdR1OLu9lpfaphpgldeh--