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 1rRnZi-009Q9K-Vp for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Jan 2024 06:14:27 +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 1rRnZi-001P9x-3M for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Jan 2024 06:14:26 +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 1rRnZh-001P9o-CI for pgsql-hackers@lists.postgresql.org; Mon, 22 Jan 2024 06:14:25 +0000 Received: from mail-vs1-xe2c.google.com ([2607:f8b0:4864:20::e2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rRnZb-002k5I-W0 for pgsql-hackers@postgresql.org; Mon, 22 Jan 2024 06:14:23 +0000 Received: by mail-vs1-xe2c.google.com with SMTP id ada2fe7eead31-469893c4c11so526115137.2 for ; Sun, 21 Jan 2024 22:14:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705904059; x=1706508859; darn=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=YE6BCmeQlGZXPZxxwZt4caZwOBZQOOj5ALo5t7mi2uQ=; b=UNmy69nT2BK0uWfLoKiQSknnmLdNNK+bNUwaiI15/OzddrJuFp9O8YUerohjFBLE+E Ug6CDeZOKr+APK7Uhv+MQfCVfz9w974Miu4ALVcoFnaX2ZLesXBGABV8GedyYbO4w/Jx e/xG3X9hYWSM58nnRuifTg/ynJa7zEkZ/COFhXfuvVqAb/lzTdiJPRR4HHvx7JXCPrtL 8c/6vX37zCGt8Fwis0UVxOIdjUW4WWEwwpp46F5Em+msIxfIB8GAsYKlWcHhgkbSevNb jf9ni1i4hxKeOlSo2O4kkLz2mAWJldO/iUb5OWLfiakrvWW2bVNpcqvPN7edLQFvhVsD 98mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705904059; x=1706508859; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YE6BCmeQlGZXPZxxwZt4caZwOBZQOOj5ALo5t7mi2uQ=; b=K++esU2zBHoZ542PfoBKvUqeDyn5UAEor3Nf4U/smfZyJwBf/CQhbZLTQK2O/kijG6 JMdpeoofNKqK6ojSCDcWUk4kQytHs7hMFGDz2a+REFaTesJe67vJrmccqKpgoOky0Vl7 Pjy5oMwlM7CV0UYcW+0xwZO9e9TYoIJ3OuoaBFiSQjMBVOIem4sFoQa2lM8IIvxizHZm +vWNxbWzP/RbG6/oEmuRJgJ7MCebfL7cYJ+S0q9Jnrx4pdQU2TFuwfL18f7TZlvAYEfP pipYz4NGvbKu7gcxPuuUaNyYt000KhnhmHqFZ68TXvm/quyEv/h3oQScinpFqbZ5/SS2 v7FA== X-Gm-Message-State: AOJu0YzdVx7SZnUUhR/TCn7ZhYxtxTLsVtMMrWlmDHNXC0Lb7zj1ztO5 EUNPBsF/trL0GBv6pdFLbEvrdUKwdcdrhOAN3hc+vr4xRdC278znvpEmzxp5kS/X2dxN/1p8JEw edE0dpRl4FA/bvjmgWdqU5HH6d9Ji6EyS3H4RpA== X-Google-Smtp-Source: AGHT+IH5E+XVrc5f04YhX4KnL7WrNh+uI16gSndkoDpXWMrGTO3Njlvo8eFUabaS0aj17okoK0sccVPiDcYbjh9K6LY= X-Received: by 2002:a05:6102:1881:b0:467:da2b:4f19 with SMTP id ji1-20020a056102188100b00467da2b4f19mr1390620vsb.25.1705904058731; Sun, 21 Jan 2024 22:14:18 -0800 (PST) MIME-Version: 1.0 References: <202401181146.fuoeskfzriq7@alvherre.pgsql> <202401181711.qxjxpnl3ohnw@alvherre.pgsql> In-Reply-To: From: jian he Date: Mon, 22 Jan 2024 14:14:07 +0800 Message-ID: Subject: Re: remaining sql/json patches To: Amit Langote Cc: Alvaro Herrera , Andres Freund , Erik Rijkers , Andrew Dunstan , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000713eb0060f82bd0b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000713eb0060f82bd0b Content-Type: text/plain; charset="UTF-8" I found two main issues regarding cocece SQL/JSON function output to other data types. * returning typmod influence the returning result of JSON_VALUE | JSON_QUERY. * JSON_VALUE | JSON_QUERY handles returning type domains allowing null and not allowing null inconsistencies. in ExecInitJsonExprCoercion, there is IsA(coercion,JsonCoercion) or not difference. for the returning of (JSON_VALUE | JSON_QUERY), "coercion" is a JsonCoercion or not is set in coerceJsonFuncExprOutput. this influence returning type with typmod is not -1. if set "coercion" as JsonCoercion Node then it may call the InputFunctionCallSafe to do the coercion. If not, it may call ExecInitFunc related code which is wrapped in ExecEvalCoerceViaIOSafe. for example: SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING char(3)); will ExecInitFunc, will init function bpchar(character, integer, boolean). it will set the third argument to true. so it will initiate related instructions like: `select bpchar('[,2]',7,true); ` which in the end will make the result be `[,2` However, InputFunctionCallSafe cannot handle that. simple demo: create table t(a char(3)); --fail. INSERT INTO t values ('test'); --ok select 'test'::char(3); however current ExecEvalCoerceViaIOSafe cannot handle omit quotes. even if I made the changes, still not bullet-proof. for example: create domain char3_domain_not_null as char(3) NOT NULL; create domain hello as text NOT NULL check (value = 'hello'); create domain int42 as int check (value = 42); CREATE TYPE comp_domain_with_typmod AS (a char3_domain_not_null, b int42); SELECT JSON_VALUE(jsonb'{"rec": "(abcd,42)"}', '$.rec' returning comp_domain_with_typmod); will return NULL however SELECT JSON_VALUE(jsonb'{"rec": "abcd"}', '$.rec' returning char3_domain_not_null); will return `abc`. I made the modification, you can see the difference. attached is test_coerce.sql is the test file. test_coerce_only_v35.out is the test output of only applying v35 0001 to 0007 plus my previous changes[0]. test_coerce_v35_plus_change.out is the test output of applying to v35 0001 to 0007 plus changes (attachment) and previous changes[0]. [0] https://www.postgresql.org/message-id/CACJufxHo1VVk_0th3AsFxqdMgjaUDz6s0F7%2Bj9rYA3d%3DURw97A%40mail.gmail.com --000000000000713eb0060f82bd0b Content-Type: application/sql; name="test_coerce.sql" Content-Disposition: attachment; filename="test_coerce.sql" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lroj0keo0 ZHJvcCBkb21haW4gaWYgZXhpc3RzIGNoYXIzX2RvbWFpbl9ub3RfbnVsbCBDQVNDQURFOwpkcm9w IGRvbWFpbiBpZiBleGlzdHMgaGVsbG8gQ0FTQ0FERTsKZHJvcCBkb21haW4gaWYgZXhpc3RzIGlu dDQyIENBU0NBREU7CmRyb3AgdHlwZSBpZiBleGlzdHMgY29tcF9kb21haW5fd2l0aF90eXBtb2Q7 CmNyZWF0ZSBkb21haW4gY2hhcjNfZG9tYWluX25vdF9udWxsIGFzIGNoYXIoMykgTk9UIE5VTEw7 CmNyZWF0ZSBkb21haW4gaGVsbG8gYXMgdGV4dCBOT1QgTlVMTCBjaGVjayAodmFsdWUgPSAnaGVs bG8nKTsKY3JlYXRlIGRvbWFpbiBpbnQ0MiBhcyBpbnQgY2hlY2sgKHZhbHVlID0gNDIpOwpDUkVB VEUgVFlQRSBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBBUyAoYSBjaGFyM19kb21haW5fbm90X251 bGwsIGIgaW50NDIpOwoKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFiY2QsNDIp In0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBvbWl0IHF1b3Rl cyk7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIihhYmNkLDQyKSJ9JywgJyQucmVj JyByZXR1cm5pbmcgY29tcF9kb21haW5fd2l0aF90eXBtb2Qga2VlcCBxdW90ZXMpOwpTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjZCw0MikifScsICckLnJlYycgcmV0dXJuaW5n IGNoYXIoMykgb21pdCBxdW90ZXMpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIo YWJjZCw0MikifScsICckLnJlYycgcmV0dXJuaW5nIGNoYXIoMykga2VlcCBxdW90ZXMpOwpTRUxF Q1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJoZWxsbyJ9JywgJyQucmVjJyByZXR1cm5pbmcg aGVsbG8ga2VlcCBxdW90ZXMpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJoZWxs byJ9JywgJyQucmVjJyByZXR1cm5pbmcgaGVsbG8gb21pdCBxdW90ZXMpOwpTRUxFQ1QgSlNPTl9R VUVSWShqc29uYid7InJlYyI6ICJoZWxsbzEifScsICckLnJlYycgcmV0dXJuaW5nIGhlbGxvIGtl ZXAgcXVvdGVzKTsKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiaGVsbG8xIn0nLCAn JC5yZWMnIHJldHVybmluZyBoZWxsbyBvbWl0IHF1b3Rlcyk7ClNFTEVDVCBKU09OX1FVRVJZKGpz b25iJyJoZWxsbyInLCckJyBSRVRVUk5JTkcgY2hhcjNfZG9tYWluX25vdF9udWxsIG9taXQgcXVv dGVzKSA7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iJyJoZWxsbyInLCckJyBSRVRVUk5JTkcgY2hh cjNfZG9tYWluX25vdF9udWxsIGtlZXAgcXVvdGVzKSA7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25i ICciWzEsMl0iJywgJyQnIFJFVFVSTklORyBjaGFyKDMpIG9taXQgcXVvdGVzKTsKU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykga2VlcCBxdW90 ZXMpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludDgp OwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludDIpOwpT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludDQpOwpTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludDggT01JVCBRVU9U RVMpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIG51bWVy aWMpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIG51bWVy aWMga2VlcCBxdW90ZXMpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVU VVJOSU5HIG51bWVyaWMga2VlcCBxdW90ZXMgbnVsbCBvbiBlcnJvcik7ClNFTEVDVCBKU09OX1FV RVJZKGpzb25iICciMTIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyBrZWVwIHF1b3RlcyBlcnJv ciBvbiBlcnJvcik7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzIicsICckJyBSRVRVUk5J TkcgbnVtZXJpYyBvbWl0IHF1b3Rlcyk7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICcxMjMnLCAg ICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciaGVsbG8i JywnJCcgUkVUVVJOSU5HIGNoYXIoMykpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyIn LCAnJCcgUkVUVVJOSU5HIGJvb2wpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAn JCcgUkVUVVJOSU5HIHJlYWwpOwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcg UkVUVVJOSU5HIGZsb2F0OCk7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciWzEsMl0iJywgJyQn IFJFVFVSTklORyBjaGFyKDMpIG9taXQgcXVvdGVzKTsKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykga2VlcCBxdW90ZXMpOwpTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnIlsxLDJdIicsICckJyBSRVRVUk5JTkcgdmFyY2hhcigzKSBrZWVwIHF1 b3Rlcyk7ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciWzEsMl0iJywgJyQnIFJFVFVSTklORyB2 YXJjaGFyIGtlZXAgcXVvdGVzKTsKClNFTEVDVCBKU09OX1ZBTFVFKGpzb25iJ3sicmVjIjogImFi Y2QifScsICckLnJlYycgcmV0dXJuaW5nIGNoYXIoMykpOwpTRUxFQ1QgSlNPTl9WQUxVRShqc29u Yid7InJlYyI6ICJhYmNkIn0nLCAnJC5yZWMnIHJldHVybmluZyBjaGFyM19kb21haW5fbm90X251 bGwpOwpTRUxFQ1QgSlNPTl9WQUxVRShqc29uYid7InJlYyI6ICIoYWJjZCw0MikifScsICckLnJl YycgcmV0dXJuaW5nIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kKTsKU0VMRUNUIEpTT05fVkFMVUUo anNvbmIneyJyZWMiOiAiKGFiYyw0MikifScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfZG9tYWlu X3dpdGhfdHlwbW9kKTsKU0VMRUNUIEpTT05fVkFMVUUoanNvbmIneyJyZWMiOiAiaGVsbG8ifScs ICckLnJlYycgcmV0dXJuaW5nIGhlbGxvKTsKU0VMRUNUIEpTT05fVkFMVUUoanNvbmIneyJyZWMi OiAiaGVsbG8xIn0nLCAnJC5yZWMnIHJldHVybmluZyBoZWxsbyk7ClNFTEVDVCBKU09OX1ZBTFVF KGpzb25iJyJoZWxsbyInLCckJyBSRVRVUk5JTkcgY2hhcjNfZG9tYWluX25vdF9udWxsKSA7ClNF TEVDVCBKU09OX1ZBTFVFKGpzb25iJyJoZWxsbyInLCckJyBSRVRVUk5JTkcgY2hhcigzKSk7ClNF TEVDVCBKU09OX1ZBTFVFKGpzb25iICciWzEsMl0iJywgJyQnIFJFVFVSTklORyB2YXJjaGFyKTsK Ci0tLWRvbWFpbiB0eXBlIHdpdGggbm90IG51bGwgYW5kIG51bGwgaXNzdWUKZHJvcCBkb21haW4g aWYgZXhpc3RzIHRlc3Q7CmNyZWF0ZSBkb21haW4gdGVzdCBhcyBpbnRbXSBjaGVjayAoIGFycmF5 X2xlbmd0aCh2YWx1ZSwxKSA9MiBhbmQgKHZhbHVlWzFdID0gMSBvciB2YWx1ZVsyXSA9IDIpKTsK Y3JlYXRlIGRvbWFpbiB0ZXN0MSBhcyBpbnRbXSBOT1QgTlVMTCBjaGVjayAoYXJyYXlfbGVuZ3Ro KHZhbHVlLDEpID0yIGFuZCAodmFsdWVbMV0gPSAxIG9yIHZhbHVlWzJdID0gMikpOwpTRUxFQ1Qg KiBmcm9tIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1 cm5pbmcgdGVzdCBvbWl0IHF1b3Rlcyk7ClNFTEVDVCAqIGZyb20gSlNPTl9RVUVSWShqc29uYid7 InJlYyI6ICJ7MSwyLDN9In0nLCAnJC5yZWMnIHJldHVybmluZyB0ZXN0IGtlZXAgcXVvdGVzKTsK U0VMRUNUICogZnJvbSBKU09OX1ZBTFVFKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJl YycgcmV0dXJuaW5nIHRlc3QpOwoKU0VMRUNUICogZnJvbSBKU09OX1FVRVJZKGpzb25iJ3sicmVj IjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJuaW5nIHRlc3QxIG9taXQgcXVvdGVzKTsKU0VM RUNUICogZnJvbSBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJlYycg cmV0dXJuaW5nIHRlc3QxIGtlZXAgcXVvdGVzKTsKU0VMRUNUICogZnJvbSBKU09OX1ZBTFVFKGpz b25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJuaW5nIHRlc3QxKTsK --000000000000713eb0060f82bd0b Content-Type: application/octet-stream; name="test_coerce_only_v35.out" Content-Disposition: attachment; filename="test_coerce_only_v35.out" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lroj1h9o2 ZHJvcCBkb21haW4gaWYgZXhpc3RzIGNoYXIzX2RvbWFpbl9ub3RfbnVsbCBDQVNDQURFOwpOT1RJ Q0U6ICBkcm9wIGNhc2NhZGVzIHRvIGNvbHVtbiBhIG9mIGNvbXBvc2l0ZSB0eXBlIGNvbXBfZG9t YWluX3dpdGhfdHlwbW9kCkRST1AgRE9NQUlOCmRyb3AgZG9tYWluIGlmIGV4aXN0cyBoZWxsbyBD QVNDQURFOwpEUk9QIERPTUFJTgpkcm9wIGRvbWFpbiBpZiBleGlzdHMgaW50NDIgQ0FTQ0FERTsK Tk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb2x1bW4gYiBvZiBjb21wb3NpdGUgdHlwZSBjb21w X2RvbWFpbl93aXRoX3R5cG1vZApEUk9QIERPTUFJTgpkcm9wIHR5cGUgaWYgZXhpc3RzIGNvbXBf ZG9tYWluX3dpdGhfdHlwbW9kOwpEUk9QIFRZUEUKY3JlYXRlIGRvbWFpbiBjaGFyM19kb21haW5f bm90X251bGwgYXMgY2hhcigzKSBOT1QgTlVMTDsKQ1JFQVRFIERPTUFJTgpjcmVhdGUgZG9tYWlu IGhlbGxvIGFzIHRleHQgTk9UIE5VTEwgY2hlY2sgKHZhbHVlID0gJ2hlbGxvJyk7CkNSRUFURSBE T01BSU4KY3JlYXRlIGRvbWFpbiBpbnQ0MiBhcyBpbnQgY2hlY2sgKHZhbHVlID0gNDIpOwpDUkVB VEUgRE9NQUlOCkNSRUFURSBUWVBFIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIEFTIChhIGNoYXIz X2RvbWFpbl9ub3RfbnVsbCwgYiBpbnQ0Mik7CkNSRUFURSBUWVBFClNFTEVDVCBKU09OX1FVRVJZ KGpzb25iJ3sicmVjIjogIihhYmNkLDQyKSJ9JywgJyQucmVjJyByZXR1cm5pbmcgY29tcF9kb21h aW5fd2l0aF90eXBtb2Qgb21pdCBxdW90ZXMpOwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAK KDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFiY2QsNDIpIn0nLCAn JC5yZWMnIHJldHVybmluZyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBrZWVwIHF1b3Rlcyk7CiBq c29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29u Yid7InJlYyI6ICIoYWJjZCw0MikifScsICckLnJlYycgcmV0dXJuaW5nIGNoYXIoMykgb21pdCBx dW90ZXMpOwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoKU0VMRUNUIEpTT05f UVVFUlkoanNvbmIneyJyZWMiOiAiKGFiY2QsNDIpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjaGFy KDMpIGtlZXAgcXVvdGVzKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLQogIihhCigxIHJvdykK ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogImhlbGxvIn0nLCAnJC5yZWMnIHJldHVy bmluZyBoZWxsbyBrZWVwIHF1b3Rlcyk7CkVSUk9SOiAgZG9tYWluIGhlbGxvIGRvZXMgbm90IGFs bG93IG51bGwgdmFsdWVzClNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogImhlbGxvIn0n LCAnJC5yZWMnIHJldHVybmluZyBoZWxsbyBvbWl0IHF1b3Rlcyk7CiBqc29uX3F1ZXJ5IAotLS0t LS0tLS0tLS0KIGhlbGxvCigxIHJvdykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjog ImhlbGxvMSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaGVsbG8ga2VlcCBxdW90ZXMpOwpFUlJPUjog IGRvbWFpbiBoZWxsbyBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcwpTRUxFQ1QgSlNPTl9RVUVS WShqc29uYid7InJlYyI6ICJoZWxsbzEifScsICckLnJlYycgcmV0dXJuaW5nIGhlbGxvIG9taXQg cXVvdGVzKTsKRVJST1I6ICBkb21haW4gaGVsbG8gZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMK U0VMRUNUIEpTT05fUVVFUlkoanNvbmInImhlbGxvIicsJyQnIFJFVFVSTklORyBjaGFyM19kb21h aW5fbm90X251bGwgb21pdCBxdW90ZXMpIDsKRVJST1I6ICBkb21haW4gY2hhcjNfZG9tYWluX25v dF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzClNFTEVDVCBKU09OX1FVRVJZKGpzb25i JyJoZWxsbyInLCckJyBSRVRVUk5JTkcgY2hhcjNfZG9tYWluX25vdF9udWxsIGtlZXAgcXVvdGVz KSA7CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KICJoZQooMSByb3cpCgpTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnIlsxLDJdIicsICckJyBSRVRVUk5JTkcgY2hhcigzKSBvbWl0IHF1b3Rlcyk7 CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnIlsxLDJdIicsICckJyBSRVRVUk5JTkcgY2hhcigzKSBrZWVwIHF1b3Rlcyk7CiBqc29u X3F1ZXJ5IAotLS0tLS0tLS0tLS0KICJbMQooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludDgpOwpFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25i IHN0cmluZyB0byB0eXBlIGJpZ2ludApTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAn JCcgUkVUVVJOSU5HIGludDIpOwpFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0 eXBlIHNtYWxsaW50ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzIicsICckJyBSRVRVUk5J TkcgaW50NCk7CkVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgaW50ZWdl cgpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludDggT01J VCBRVU9URVMpOwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAgICAgICAgMTIzCigxIHJvdykK ClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7 CkVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgbnVtZXJpYwpTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMga2VlcCBxdW90 ZXMpOwpFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIG51bWVyaWMKU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklORyBudW1lcmljIGtlZXAg cXVvdGVzIG51bGwgb24gZXJyb3IpOwpFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0 byB0eXBlIG51bWVyaWMKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVS TklORyBudW1lcmljIGtlZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKRVJST1I6ICBjYW5ub3Qg Y2FzdCBqc29uYiBzdHJpbmcgdG8gdHlwZSBudW1lcmljClNFTEVDVCBKU09OX1FVRVJZKGpzb25i ICciMTIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyBvbWl0IHF1b3Rlcyk7CiBqc29uX3F1ZXJ5 IAotLS0tLS0tLS0tLS0KICAgICAgICAxMjMKKDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJzEyMycsICAgJyQnIFJFVFVSTklORyBudW1lcmljKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0t LS0tLQogICAgICAgIDEyMwooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImhlbGxv IicsJyQnIFJFVFVSTklORyBjaGFyKDMpKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLQogImhl CigxIHJvdykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzIicsICckJyBSRVRVUk5JTkcg Ym9vbCk7CkVSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgYm9vbGVhbgpT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIHJlYWwpOwpFUlJP UjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIHJlYWwKU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklORyBmbG9hdDgpOwpFUlJPUjogIGNhbm5vdCBj YXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGRvdWJsZSBwcmVjaXNpb24KU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykgb21pdCBxdW90ZXMpOwog anNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykga2VlcCBxdW90ZXMpOwoganNvbl9x dWVyeSAKLS0tLS0tLS0tLS0tCiAiWzEKKDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIHZhcmNoYXIoMykga2VlcCBxdW90ZXMpOwoganNvbl9x dWVyeSAKLS0tLS0tLS0tLS0tCiAiWzEKKDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIHZhcmNoYXIga2VlcCBxdW90ZXMpOwoganNvbl9xdWVy eSAKLS0tLS0tLS0tLS0tCiAiWzEsMl0iCigxIHJvdykKClNFTEVDVCBKU09OX1ZBTFVFKGpzb25i J3sicmVjIjogImFiY2QifScsICckLnJlYycgcmV0dXJuaW5nIGNoYXIoMykpOwoganNvbl92YWx1 ZSAKLS0tLS0tLS0tLS0tCiBhYmMKKDEgcm93KQoKU0VMRUNUIEpTT05fVkFMVUUoanNvbmIneyJy ZWMiOiAiYWJjZCJ9JywgJyQucmVjJyByZXR1cm5pbmcgY2hhcjNfZG9tYWluX25vdF9udWxsKTsK IGpzb25fdmFsdWUgCi0tLS0tLS0tLS0tLQogYWJjCigxIHJvdykKClNFTEVDVCBKU09OX1ZBTFVF KGpzb25iJ3sicmVjIjogIihhYmNkLDQyKSJ9JywgJyQucmVjJyByZXR1cm5pbmcgY29tcF9kb21h aW5fd2l0aF90eXBtb2QpOwoganNvbl92YWx1ZSAKLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoKU0VM RUNUIEpTT05fVkFMVUUoanNvbmIneyJyZWMiOiAiKGFiYyw0MikifScsICckLnJlYycgcmV0dXJu aW5nIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kKTsKIGpzb25fdmFsdWUgCi0tLS0tLS0tLS0tLQog KGFiYyw0MikKKDEgcm93KQoKU0VMRUNUIEpTT05fVkFMVUUoanNvbmIneyJyZWMiOiAiaGVsbG8i fScsICckLnJlYycgcmV0dXJuaW5nIGhlbGxvKTsKIGpzb25fdmFsdWUgCi0tLS0tLS0tLS0tLQog aGVsbG8KKDEgcm93KQoKU0VMRUNUIEpTT05fVkFMVUUoanNvbmIneyJyZWMiOiAiaGVsbG8xIn0n LCAnJC5yZWMnIHJldHVybmluZyBoZWxsbyk7CkVSUk9SOiAgZG9tYWluIGhlbGxvIGRvZXMgbm90 IGFsbG93IG51bGwgdmFsdWVzClNFTEVDVCBKU09OX1ZBTFVFKGpzb25iJyJoZWxsbyInLCckJyBS RVRVUk5JTkcgY2hhcjNfZG9tYWluX25vdF9udWxsKSA7CiBqc29uX3ZhbHVlIAotLS0tLS0tLS0t LS0KIGhlbAooMSByb3cpCgpTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiciaGVsbG8iJywnJCcgUkVU VVJOSU5HIGNoYXIoMykpOwoganNvbl92YWx1ZSAKLS0tLS0tLS0tLS0tCiBoZWwKKDEgcm93KQoK U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIHZhcmNoYXIp OwoganNvbl92YWx1ZSAKLS0tLS0tLS0tLS0tCiBbMSwyXQooMSByb3cpCgotLS1kb21haW4gdHlw ZSB3aXRoIG5vdCBudWxsIGFuZCBudWxsIGlzc3VlCmRyb3AgZG9tYWluIGlmIGV4aXN0cyB0ZXN0 OwpEUk9QIERPTUFJTgpjcmVhdGUgZG9tYWluIHRlc3QgYXMgaW50W10gY2hlY2sgKCBhcnJheV9s ZW5ndGgodmFsdWUsMSkgPTIgYW5kICh2YWx1ZVsxXSA9IDEgb3IgdmFsdWVbMl0gPSAyKSk7CkNS RUFURSBET01BSU4KY3JlYXRlIGRvbWFpbiB0ZXN0MSBhcyBpbnRbXSBOT1QgTlVMTCBjaGVjayAo YXJyYXlfbGVuZ3RoKHZhbHVlLDEpID0yIGFuZCAodmFsdWVbMV0gPSAxIG9yIHZhbHVlWzJdID0g MikpOwpFUlJPUjogIHR5cGUgInRlc3QxIiBhbHJlYWR5IGV4aXN0cwpTRUxFQ1QgKiBmcm9tIEpT T05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgdGVz dCBvbWl0IHF1b3Rlcyk7CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KIAooMSByb3cpCgpTRUxF Q1QgKiBmcm9tIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyBy ZXR1cm5pbmcgdGVzdCBrZWVwIHF1b3Rlcyk7CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KIAoo MSByb3cpCgpTRUxFQ1QgKiBmcm9tIEpTT05fVkFMVUUoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9 JywgJyQucmVjJyByZXR1cm5pbmcgdGVzdCk7CiBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0KIAoo MSByb3cpCgpTRUxFQ1QgKiBmcm9tIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9 JywgJyQucmVjJyByZXR1cm5pbmcgdGVzdDEgb21pdCBxdW90ZXMpOwpFUlJPUjogIGRvbWFpbiB0 ZXN0MSBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcwpTRUxFQ1QgKiBmcm9tIEpTT05fUVVFUlko anNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgdGVzdDEga2VlcCBx dW90ZXMpOwpFUlJPUjogIGRvbWFpbiB0ZXN0MSBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcwpT RUxFQ1QgKiBmcm9tIEpTT05fVkFMVUUoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVj JyByZXR1cm5pbmcgdGVzdDEpOwpFUlJPUjogIGRvbWFpbiB0ZXN0MSBkb2VzIG5vdCBhbGxvdyBu dWxsIHZhbHVlcwo= --000000000000713eb0060f82bd0b Content-Type: application/octet-stream; name="test_coerce_v35_plus_change.out" Content-Disposition: attachment; filename="test_coerce_v35_plus_change.out" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lroj1h9j1 ZHJvcCBkb21haW4gaWYgZXhpc3RzIGNoYXIzX2RvbWFpbl9ub3RfbnVsbCBDQVNDQURFOwpOT1RJ Q0U6ICB0eXBlICJjaGFyM19kb21haW5fbm90X251bGwiIGRvZXMgbm90IGV4aXN0LCBza2lwcGlu ZwpEUk9QIERPTUFJTgpkcm9wIGRvbWFpbiBpZiBleGlzdHMgaGVsbG8gQ0FTQ0FERTsKTk9USUNF OiAgdHlwZSAiaGVsbG8iIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZwpEUk9QIERPTUFJTgpkcm9w IGRvbWFpbiBpZiBleGlzdHMgaW50NDIgQ0FTQ0FERTsKTk9USUNFOiAgdHlwZSAiaW50NDIiIGRv ZXMgbm90IGV4aXN0LCBza2lwcGluZwpEUk9QIERPTUFJTgpkcm9wIHR5cGUgaWYgZXhpc3RzIGNv bXBfZG9tYWluX3dpdGhfdHlwbW9kOwpOT1RJQ0U6ICB0eXBlICJjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nCkRST1AgVFlQRQpjcmVhdGUgZG9tYWluIGNo YXIzX2RvbWFpbl9ub3RfbnVsbCBhcyBjaGFyKDMpIE5PVCBOVUxMOwpDUkVBVEUgRE9NQUlOCmNy ZWF0ZSBkb21haW4gaGVsbG8gYXMgdGV4dCBOT1QgTlVMTCBjaGVjayAodmFsdWUgPSAnaGVsbG8n KTsKQ1JFQVRFIERPTUFJTgpjcmVhdGUgZG9tYWluIGludDQyIGFzIGludCBjaGVjayAodmFsdWUg PSA0Mik7CkNSRUFURSBET01BSU4KQ1JFQVRFIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2Qg QVMgKGEgY2hhcjNfZG9tYWluX25vdF9udWxsLCBiIGludDQyKTsKQ1JFQVRFIFRZUEUKU0VMRUNU IEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFiY2QsNDIpIn0nLCAnJC5yZWMnIHJldHVybmlu ZyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBvbWl0IHF1b3Rlcyk7CiBqc29uX3F1ZXJ5IAotLS0t LS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJj ZCw0MikifScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIGtlZXAg cXVvdGVzKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLQogCigxIHJvdykKClNFTEVDVCBKU09O X1FVRVJZKGpzb25iJ3sicmVjIjogIihhYmNkLDQyKSJ9JywgJyQucmVjJyByZXR1cm5pbmcgY2hh cigzKSBvbWl0IHF1b3Rlcyk7CkVSUk9SOiAgSlNPTl9RVUVSWSByZXR1cm5pbmcgdHlwZSBjYW5u b3QgaGF2ZSB0eXBlIG1vZGlmaWVyIHdoaWxlIHNwZWNpZnkgT01JVCBRVU9URVMKU0VMRUNUIEpT T05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFiY2QsNDIpIn0nLCAnJC5yZWMnIHJldHVybmluZyBj aGFyKDMpIGtlZXAgcXVvdGVzKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLQogIihhCigxIHJv dykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogImhlbGxvIn0nLCAnJC5yZWMnIHJl dHVybmluZyBoZWxsbyBrZWVwIHF1b3Rlcyk7CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KIAoo MSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJoZWxsbyJ9JywgJyQucmVj JyByZXR1cm5pbmcgaGVsbG8gb21pdCBxdW90ZXMpOwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0t CiBoZWxsbwooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJoZWxsbzEi fScsICckLnJlYycgcmV0dXJuaW5nIGhlbGxvIGtlZXAgcXVvdGVzKTsKIGpzb25fcXVlcnkgCi0t LS0tLS0tLS0tLQogCigxIHJvdykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogImhl bGxvMSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaGVsbG8gb21pdCBxdW90ZXMpOwoganNvbl9xdWVy eSAKLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNvbmInImhlbGxv IicsJyQnIFJFVFVSTklORyBjaGFyM19kb21haW5fbm90X251bGwgb21pdCBxdW90ZXMpIDsKRVJS T1I6ICBKU09OX1FVRVJZIHJldHVybmluZyB0eXBlIGNhbm5vdCBoYXZlIHR5cGUgbW9kaWZpZXIg d2hpbGUgc3BlY2lmeSBPTUlUIFFVT1RFUwpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiciaGVsbG8i JywnJCcgUkVUVVJOSU5HIGNoYXIzX2RvbWFpbl9ub3RfbnVsbCBrZWVwIHF1b3RlcykgOwoganNv bl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAiaGUKKDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykgb21pdCBxdW90ZXMpOwpFUlJPUjog IEpTT05fUVVFUlkgcmV0dXJuaW5nIHR5cGUgY2Fubm90IGhhdmUgdHlwZSBtb2RpZmllciB3aGls ZSBzcGVjaWZ5IE9NSVQgUVVPVEVTClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciWzEsMl0iJywg JyQnIFJFVFVSTklORyBjaGFyKDMpIGtlZXAgcXVvdGVzKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0t LS0tLQogIlsxCigxIHJvdykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzIicsICckJyBS RVRVUk5JTkcgaW50OCk7CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KICAgICAgICAgICAKKDEg cm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklORyBpbnQy KTsKIGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLQogICAgICAgICAgIAooMSByb3cpCgpTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludDQpOwoganNvbl9xdWVy eSAKLS0tLS0tLS0tLS0tCiAgICAgICAgICAgCigxIHJvdykKClNFTEVDVCBKU09OX1FVRVJZKGpz b25iICciMTIzIicsICckJyBSRVRVUk5JTkcgaW50OCBPTUlUIFFVT1RFUyk7CiBqc29uX3F1ZXJ5 IAotLS0tLS0tLS0tLS0KICAgICAgICAxMjMKKDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJyIxMjMiJywgJyQnIFJFVFVSTklORyBudW1lcmljKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0t LS0tLQogICAgICAgICAgIAooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMyIn LCAnJCcgUkVUVVJOSU5HIG51bWVyaWMga2VlcCBxdW90ZXMpOwoganNvbl9xdWVyeSAKLS0tLS0t LS0tLS0tCiAgICAgICAgICAgCigxIHJvdykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIz IicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyBrZWVwIHF1b3RlcyBudWxsIG9uIGVycm9yKTsKIGpz b25fcXVlcnkgCi0tLS0tLS0tLS0tLQogICAgICAgICAgIAooMSByb3cpCgpTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMga2VlcCBxdW90ZXMgZXJy b3Igb24gZXJyb3IpOwpFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIG51bWVy aWM6ICIiMTIzIiIKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklO RyBudW1lcmljIG9taXQgcXVvdGVzKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLQogICAgICAg IDEyMwooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnMTIzJywgICAnJCcgUkVUVVJO SU5HIG51bWVyaWMpOwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAgICAgICAgMTIzCigxIHJv dykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciaGVsbG8iJywnJCcgUkVUVVJOSU5HIGNoYXIo MykpOwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAiaGUKKDEgcm93KQoKU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklORyBib29sKTsKIGpzb25fcXVlcnkgCi0t LS0tLS0tLS0tLQogCigxIHJvdykKClNFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzIicsICck JyBSRVRVUk5JTkcgcmVhbCk7CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KICAgICAgICAgICAK KDEgcm93KQoKU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklORyBm bG9hdDgpOwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAgICAgICAgICAgCigxIHJvdykKClNF TEVDVCBKU09OX1FVRVJZKGpzb25iICciWzEsMl0iJywgJyQnIFJFVFVSTklORyBjaGFyKDMpIG9t aXQgcXVvdGVzKTsKRVJST1I6ICBKU09OX1FVRVJZIHJldHVybmluZyB0eXBlIGNhbm5vdCBoYXZl IHR5cGUgbW9kaWZpZXIgd2hpbGUgc3BlY2lmeSBPTUlUIFFVT1RFUwpTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnIlsxLDJdIicsICckJyBSRVRVUk5JTkcgY2hhcigzKSBrZWVwIHF1b3Rlcyk7CiBq c29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KICJbMQooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnIlsxLDJdIicsICckJyBSRVRVUk5JTkcgdmFyY2hhcigzKSBrZWVwIHF1b3Rlcyk7CiBq c29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0KICJbMQooMSByb3cpCgpTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnIlsxLDJdIicsICckJyBSRVRVUk5JTkcgdmFyY2hhciBrZWVwIHF1b3Rlcyk7CiBqc29u X3F1ZXJ5IAotLS0tLS0tLS0tLS0KICJbMSwyXSIKKDEgcm93KQoKU0VMRUNUIEpTT05fVkFMVUUo anNvbmIneyJyZWMiOiAiYWJjZCJ9JywgJyQucmVjJyByZXR1cm5pbmcgY2hhcigzKSk7CiBqc29u X3ZhbHVlIAotLS0tLS0tLS0tLS0KIGFiYwooMSByb3cpCgpTRUxFQ1QgSlNPTl9WQUxVRShqc29u Yid7InJlYyI6ICJhYmNkIn0nLCAnJC5yZWMnIHJldHVybmluZyBjaGFyM19kb21haW5fbm90X251 bGwpOwoganNvbl92YWx1ZSAKLS0tLS0tLS0tLS0tCiBhYmMKKDEgcm93KQoKU0VMRUNUIEpTT05f VkFMVUUoanNvbmIneyJyZWMiOiAiKGFiY2QsNDIpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21w X2RvbWFpbl93aXRoX3R5cG1vZCk7CiBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0KIAooMSByb3cp CgpTRUxFQ1QgSlNPTl9WQUxVRShqc29uYid7InJlYyI6ICIoYWJjLDQyKSJ9JywgJyQucmVjJyBy ZXR1cm5pbmcgY29tcF9kb21haW5fd2l0aF90eXBtb2QpOwoganNvbl92YWx1ZSAKLS0tLS0tLS0t LS0tCiAoYWJjLDQyKQooMSByb3cpCgpTRUxFQ1QgSlNPTl9WQUxVRShqc29uYid7InJlYyI6ICJo ZWxsbyJ9JywgJyQucmVjJyByZXR1cm5pbmcgaGVsbG8pOwoganNvbl92YWx1ZSAKLS0tLS0tLS0t LS0tCiBoZWxsbwooMSByb3cpCgpTRUxFQ1QgSlNPTl9WQUxVRShqc29uYid7InJlYyI6ICJoZWxs bzEifScsICckLnJlYycgcmV0dXJuaW5nIGhlbGxvKTsKIGpzb25fdmFsdWUgCi0tLS0tLS0tLS0t LQogCigxIHJvdykKClNFTEVDVCBKU09OX1ZBTFVFKGpzb25iJyJoZWxsbyInLCckJyBSRVRVUk5J TkcgY2hhcjNfZG9tYWluX25vdF9udWxsKSA7CiBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0KIGhl bAooMSByb3cpCgpTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiciaGVsbG8iJywnJCcgUkVUVVJOSU5H IGNoYXIoMykpOwoganNvbl92YWx1ZSAKLS0tLS0tLS0tLS0tCiBoZWwKKDEgcm93KQoKU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyJbMSwyXSInLCAnJCcgUkVUVVJOSU5HIHZhcmNoYXIpOwoganNv bl92YWx1ZSAKLS0tLS0tLS0tLS0tCiBbMSwyXQooMSByb3cpCgotLS1kb21haW4gdHlwZSB3aXRo IG5vdCBudWxsIGFuZCBudWxsIGlzc3VlCmRyb3AgZG9tYWluIGlmIGV4aXN0cyB0ZXN0OwpOT1RJ Q0U6ICB0eXBlICJ0ZXN0IiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcKRFJPUCBET01BSU4KY3Jl YXRlIGRvbWFpbiB0ZXN0IGFzIGludFtdIGNoZWNrICggYXJyYXlfbGVuZ3RoKHZhbHVlLDEpID0y IGFuZCAodmFsdWVbMV0gPSAxIG9yIHZhbHVlWzJdID0gMikpOwpDUkVBVEUgRE9NQUlOCmNyZWF0 ZSBkb21haW4gdGVzdDEgYXMgaW50W10gTk9UIE5VTEwgY2hlY2sgKGFycmF5X2xlbmd0aCh2YWx1 ZSwxKSA9MiBhbmQgKHZhbHVlWzFdID0gMSBvciB2YWx1ZVsyXSA9IDIpKTsKQ1JFQVRFIERPTUFJ TgpTRUxFQ1QgKiBmcm9tIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQu cmVjJyByZXR1cm5pbmcgdGVzdCBvbWl0IHF1b3Rlcyk7CiBqc29uX3F1ZXJ5IAotLS0tLS0tLS0t LS0KIAooMSByb3cpCgpTRUxFQ1QgKiBmcm9tIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEs MiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgdGVzdCBrZWVwIHF1b3Rlcyk7CiBqc29uX3F1ZXJ5 IAotLS0tLS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgKiBmcm9tIEpTT05fVkFMVUUoanNvbmIn eyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgdGVzdCk7CiBqc29uX3ZhbHVl IAotLS0tLS0tLS0tLS0KIAooMSByb3cpCgpTRUxFQ1QgKiBmcm9tIEpTT05fUVVFUlkoanNvbmIn eyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgdGVzdDEgb21pdCBxdW90ZXMp OwoganNvbl9xdWVyeSAKLS0tLS0tLS0tLS0tCiAKKDEgcm93KQoKU0VMRUNUICogZnJvbSBKU09O X1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJuaW5nIHRlc3Qx IGtlZXAgcXVvdGVzKTsKIGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLQogCigxIHJvdykKClNFTEVD VCAqIGZyb20gSlNPTl9WQUxVRShqc29uYid7InJlYyI6ICJ7MSwyLDN9In0nLCAnJC5yZWMnIHJl dHVybmluZyB0ZXN0MSk7CiBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0KIAooMSByb3cpCgo= --000000000000713eb0060f82bd0b Content-Type: application/octet-stream; name="v1-0001-make-JSON_QUERY-JSON_VALUE-returning-type-with.no-cfbot" Content-Disposition: attachment; filename="v1-0001-make-JSON_QUERY-JSON_VALUE-returning-type-with.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lroj6qmw3 RnJvbSA0NGNjMDI3YzQ0Mjg3NDM5MDkyZjQ2NjlhNTdiNGMxZWEyMTc1M2Y1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjIgSmFuIDIwMjQgMTM6Mzk6MTIgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gbWFrZSBKU09OX1FVRVJZfEpTT05fVkFMVUUgcmV0dXJuaW5nIHR5cGUgd2l0aAogbm9u LWRlZmF1bHQgdHlwbW9kIG1vcmUgY29uc2lzdGVudAoKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwckludGVycC5jICAgICAgIHwgMTQgKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jICAgICAgICAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKy0tCiBzcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQgfCAzNCArKysrKysrKystLS0tCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbCAgICAgIHwgIDIgKy0KIDYgZmlsZXMgY2hh bmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggOTY0NDMzYTAuLmFmMjViOTAzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTQ1MjAsMTcgKzQ1MjAsMjcgQEAgRXhlY0V2YWxK c29uQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAlib29sCQly ZXNudWxsID0gKm9wLT5yZXNudWxsOwogCUpzb25iCSAgICpqYiA9ICFyZXNudWxsID8gRGF0dW1H ZXRKc29uYlAocmVzKSA6IE5VTEw7CiAKKwlpZiAoIWpiKQorCXsKKwkJKm9wLT5yZXN2YWx1ZSA9 IChEYXR1bSkgMDsKKwkJcmV0dXJuOworCX0KIAkvKgogCSAqIENhbid0IGdvIHRvIGpzb25fcG9w dWxhdGVfdHlwZSgpIGZvciBzY2FsYXJzIHdoZW4gT01JVCBRVU9URVMgaXMKIAkgKiBzcGVjaWZp ZWQsIGJlY2F1c2UgaXQga2VlcHMgdGhlIHF1b3RlcyBieSBkZWZhdWx0LiAgU28gbGV0J3MgZG8g dGhlCiAJICogZGVlZCBvdXJzZWx2ZXMgYnkgY2FsbGluZyB0aGUgaW5wdXQgZnVuY3Rpb24sIHRo YXQgaXMsIGFmdGVyIHJlbW92aW5nCiAJICogdGhlIHF1b3Rlcy4KIAkgKi8KLQlpZiAoamIgJiYg SkJfUk9PVF9JU19TQ0FMQVIoamIpICYmIGNvZXJjaW9uLT5vbWl0X3F1b3RlcykKKwlpZiAoSkJf Uk9PVF9JU19TQ0FMQVIoamIpIHx8IGNvZXJjaW9uLT52aWFfaW8pCiAJewogCQlGbWdySW5mbyAg ICppbnB1dF9maW5mbyA9IG9wLT5kLmpzb25leHByX2NvZXJjaW9uLmlucHV0X2ZpbmZvOwogCQlP aWQJCQl0eXBpb3BhcmFtID0gb3AtPmQuanNvbmV4cHJfY29lcmNpb24udHlwaW9wYXJhbTsKLQkJ Y2hhcgkgICAqdmFsX3N0cmluZyA9IEpzb25iVW5xdW90ZShqYik7CisJCWNoYXIJICAgKnZhbF9z dHJpbmc7CisKKwkJaWYgKGNvZXJjaW9uLT5vbWl0X3F1b3RlcykKKwkJCXZhbF9zdHJpbmcgPSBK c29uYlVucXVvdGUoamIpOworCQllbHNlCisJCQl2YWxfc3RyaW5nID0gSnNvbmJUb0NTdHJpbmco TlVMTCwgJmpiLT5yb290LCBWQVJTSVpFKGpiKSk7CiAKIAkJKHZvaWQpIElucHV0RnVuY3Rpb25D YWxsU2FmZShpbnB1dF9maW5mbywgdmFsX3N0cmluZywgdHlwaW9wYXJhbSwKIAkJCQkJCQkJCSBj b2VyY2lvbi0+dGFyZ2V0dHlwbW9kLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggOWI0M2I5 ZTQuLmY1OWMxNzdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTM5LDYgKzM5LDcgQEAK ICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKIApA QCAtNDQ1OSwxMyArNDQ2MCwzOCBAQCBjb2VyY2VKc29uRnVuY0V4cHJPdXRwdXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBKc29uRXhwciAqanNleHByKQogCSAqIFVzZSBhIEpzb25Db2VyY2lvbiBub2Rl IHRvIGltcGxlbWVudCBhIG5vbi1kZWZhdWx0IFFVT1RFUyBvciBXUkFQUEVSCiAJICogYmVoYXZp b3IuCiAJICovCi0JaWYgKGpzZXhwci0+b21pdF9xdW90ZXMgfHwganNleHByLT53cmFwcGVyICE9 IEpTV19VTlNQRUMpCisJaWYgKGpzZXhwci0+b3AgPT0gSlNPTl9RVUVSWV9PUCkKIAl7Ci0JCUpz b25Db2VyY2lvbiAqY29lcmNpb24gPSBtYWtlSnNvbkNvZXJjaW9uKHJldHVybmluZyk7CisJCU9p ZAkJCXJldHVybmluZ190eXBpZCA9IHJldHVybmluZy0+dHlwaWQ7CisJCWludDMyCQlyZXR1cm5p bmdfdHlwbW9kID0gcmV0dXJuaW5nLT50eXBtb2Q7CisJCS8qCisJCSogVXNlIGEgSnNvbkNvZXJj aW9uIG5vZGUgdG8gaW1wbGVtZW50IGEgbm9uLWRlZmF1bHQgUVVPVEVTIG9yIFdSQVBQRVIKKwkJ KiBiZWhhdmlvci4KKwkJKiBpZiByZXR1cm5pbmcgdHlwZSBpcyBkb21haW4gdGhlbiB3ZSB1c2Ug SnNvbkNvZXJjaW9uIG5vZGUgdG8gZG8gdGhlIGNvZXJjZS4KKwkJKiBpZiB0aGUgZG9tYWluIGJh c2VkIHR5cGUgdHlwbW9kIGlzIG5vdCAtMSAoZGVmYXVsdCkgdGhlbiB3ZSBuZWVkIENhc2VUZXN0 RXhwci4KKwkJKiBpZiByZXR1cm5pbmcgdHlwZSB0eW9tb2QgaXMgbm90IGRlZmF1bHQgKC0xKSB0 aGVuIHdlIHVzZSBKc29uQ29lcmNpb24uCisJCSovCisJCXJldHVybmluZ190eXBpZCA9IGdldEJh c2VUeXBlQW5kVHlwbW9kKHJldHVybmluZ190eXBpZCwgJnJldHVybmluZ190eXBtb2QpOwogCi0J CWNvZXJjaW9uLT5vbWl0X3F1b3RlcyA9IGpzZXhwci0+b21pdF9xdW90ZXM7CisJCS8qIGVycm9y IG91dCBpZmYgb21pdF9xdW90ZXMgYW5kIG5vbi1kZWZhdWx0IHR5cG1vZCAqLworCQlpZiAoKHJl dHVybmluZy0+dHlwbW9kICE9IC0xIHx8IHJldHVybmluZ190eXBtb2QgIT0gLTEpICYmIGpzZXhw ci0+b21pdF9xdW90ZXMpCisJCQllbG9nKEVSUk9SLCAiSlNPTl9RVUVSWSByZXR1cm5pbmcgdHlw ZSBjYW5ub3QgaGF2ZSB0eXBlIG1vZGlmaWVyIHdoaWxlIHNwZWNpZnkgT01JVCBRVU9URVMiKTsK IAotCQlyZXR1cm4gKE5vZGUgKikgY29lcmNpb247CisJCS8qCisJCSogYnkgZGVmYXVsdCBkb21h aW4gaXRzZWxmIHR5cG1vZCBpcyAtMS4KKwkJKiB0aGlzIGlmZiBicmFuY2ggZGVhbCB3aXRoIGNh c2VzOgorCQkqIHJldHVybmluZyB0eXBlIGlzIG5vdCBkb21haW4gYW5kIHRoZSB0eXBtb2QgaXMg ZGVmYXVsdC4KKwkJKiByZXR1cm5pbmcgdHlwZSBpcyBkb21haW4gYW5kIHRoZSBkb21haW4gdHlw bW9kIGlzIGRlZmF1bHQuCisJCSovCisJCWlmICgocmV0dXJuaW5nLT50eXBtb2QgPT0gLTEgJiYg cmV0dXJuaW5nX3R5cG1vZCA9PSAtMSkgfHwKKwkJCShyZXR1cm5pbmdfdHlwaWQgIT0gcmV0dXJu aW5nLT50eXBpZCAmJiByZXR1cm5pbmdfdHlwbW9kID09IC0xKSkKKwkJeworCQkJSnNvbkNvZXJj aW9uICpjb2VyY2lvbiA9IG1ha2VKc29uQ29lcmNpb24ocmV0dXJuaW5nKTsKKworCQkJY29lcmNp b24tPm9taXRfcXVvdGVzID0ganNleHByLT5vbWl0X3F1b3RlczsKKworCQkJcmV0dXJuIChOb2Rl ICopIGNvZXJjaW9uOworCQl9CiAJfQogCiAJZGVmYXVsdF90eXBpZCA9IEpzb25GdW5jRXhwckRl ZmF1bHRSZXR1cm5UeXBlKGpzZXhwcik7CkBAIC00NTE5LDcgKzQ1NDUsMjcgQEAgc3RhdGljIEpz b25Db2VyY2lvbiAqCiBtYWtlSnNvbkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVy bmluZykKIHsKIAlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gbWFrZU5vZGUoSnNvbkNvZXJjaW9u KTsKKwljaGFyCQl0eXB0eXBlOworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX3R5cGUgdHlwdHVw OwogCisJLyoKKwkqIGpzb25fcG9wdWxhdGVfdHlwZSBjYW5ub3QgaGFuZGxlIGRvbWFpbiBjaGVj ayB3aXRoIHNvZnQgZXJyb3IsCisJKiBzbyBmb3IgZG9tYWluIHR5cGUsIHdlIGNhbiBvbmx5IGNv ZXJjZSB2aWEgSS9PLgorCSogdGhleSBhcmUgbWFueSBjYXNlcywgd2UgbmVlZCBjb2VyY2Ugdmlh X2lvLiBidXQgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkqIHdoZW4gdHlwZSBpcyBSRUNPUkRPSUQg YW5kIGRvbWFpbiBjYXNlIGl0IHdpbGwgYmUgdmlhX2lvLgorCSogbm8gbmVlZCB0byB3b3JyeSBh Ym91dCBjb21wb3NpdGUsIHNpbmNlIGNvbXBvc2l0ZSBhbHdheSBiZSBxdW90ZWQuCisJKiBhbHNv IHNlZSBFeGVjRXZhbEpzb25Db2VyY2lvbi4KKwkqLworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZ UEVPSUQsIE9iamVjdElkR2V0RGF0dW0ocmV0dXJuaW5nLT50eXBpZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0 eXBlICV1IiwgcmV0dXJuaW5nLT50eXBpZCk7CisJdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VU U1RSVUNUKHRwKTsKKwl0eXB0eXBlID0gdHlwdHVwLT50eXB0eXBlOworCVJlbGVhc2VTeXNDYWNo ZSh0cCk7CisKKwlpZiAodHlwdHlwZSA9PSBUWVBUWVBFX0RPTUFJTiApCisJCWNvZXJjaW9uLT52 aWFfaW8gPSB0cnVlOwogCWNvZXJjaW9uLT50YXJnZXR0eXBlID0gcmV0dXJuaW5nLT50eXBpZDsK IAljb2VyY2lvbi0+dGFyZ2V0dHlwbW9kID0gcmV0dXJuaW5nLT50eXBtb2Q7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uZnVuY3MuYwppbmRleCA4NzU5OTUzMC4uMmU5ODlkN2IgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmZ1bmNzLmMKQEAgLTMzOTIsNiArMzM5Miw3IEBAIGpzb25fcG9wdWxhdGVfdHlwZShE YXR1bSBqc29uX3ZhbCwgT2lkIGpzb25fdHlwZSwKIAkJCWpzdi52YWwuanNvbi5zdHIgPSBOVUxM OwogCQllbHNlCiAJCQlqc3YudmFsLmpzb25iID0gTlVMTDsKKwkJcmV0dXJuIChEYXR1bSkgMDsK IAl9CiAJZWxzZSBpZiAoanN2LmlzX2pzb24pCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBm ZTlkZmJiMC4uNDdhMmJmNWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xNzI5LDYgKzE3Mjks NyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uQ29lcmNpb24KIAlPaWQJCQl0YXJnZXR0eXBlOwogCWlu dDMyCQl0YXJnZXR0eXBtb2Q7CiAJYm9vbAkJb21pdF9xdW90ZXM7CS8qIG9taXQgcXVvdGVzIGZy b20gc2NhbGFyIG91dHB1dCBzdHJpbmdzPyAqLworCWJvb2wJCXZpYV9pbzsJCQkvKiB2aWEgdGFy Z2V0IHR5cGUgSS9PIGZ1bmN0aW9uIGRvIHRoZSBjb2VyY2lvbiAqLwogCU9pZAkJCWNvbGxhdGlv bjsJCS8qIGNvbGxhdGlvbiBmb3IgY29lcmNpb24gdmlhIEkvTyBvciBwb3B1bGF0ZSAqLwogfSBK c29uQ29lcmNpb247CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNv bmJfc3FsanNvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24u b3V0CmluZGV4IGE3MzEwNWE0Li5iMGM0NGNmYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pzb25iX3NxbGpzb24ub3V0CkBAIC0zMDEsNyArMzAxLDExIEBAIFNFTEVDVCBKU09OX1ZB TFVFKGpzb25iICciMjAxNy0wMi0yMCInLCAnJCcgUkVUVVJOSU5HIGRhdGUpICsgOTsKIC0tIFRl c3QgTlVMTCBjaGVja3MgZXhlY3V0aW9uIGluIGRvbWFpbiB0eXBlcwogQ1JFQVRFIERPTUFJTiBz cWxqc29uYl9pbnRfbm90X251bGwgQVMgaW50IE5PVCBOVUxMOwogU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7Ci1FUlJP UjogIGRvbWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1 ZXMKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgIAorKDEgcm93KQorCiBT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50 X25vdF9udWxsIEVSUk9SIE9OIEVSUk9SKTsKIEVSUk9SOiAgZG9tYWluIHNxbGpzb25iX2ludF9u b3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcwogU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIDIg T04gRU1QVFkgRVJST1IgT04gRVJST1IpOwpAQCAtMzEzLDcgKzMxNywxMSBAQCBTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMScsICAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxs IERFRkFVTFQgMiBPTgogKDEgcm93KQogCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICAn JC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIERFRkFVTFQgTlVMTCBPTiBFTVBU WSBFUlJPUiBPTiBFUlJPUik7Ci1FUlJPUjogIGRvbWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwg ZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIAorKDEgcm93KQorCiBDUkVBVEUgVFlQRSByYWluYm93IEFTIEVOVU0gKCdyZWQn LCAnb3JhbmdlJywgJ3llbGxvdycsICdncmVlbicsICdibHVlJywgJ3B1cnBsZScpOwogQ1JFQVRF IERPTUFJTiByZ2IgQVMgcmFpbmJvdyBDSEVDSyAoVkFMVUUgSU4gKCdyZWQnLCAnZ3JlZW4nLCAn Ymx1ZScpKTsKIFNFTEVDVCBKU09OX1ZBTFVFKCcicHVycGxlIic6Ompzb25iLCAnbGF4ICRbKl0n IFJFVFVSTklORyByZ2IpOwpAQCAtNjUzLDcgKzY2MSw4IEBAIFNFTEVDVCBKU09OX1FVRVJZKGpz b25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJuaW5nIGludFtdIGtlZXAgcXVv dGVzCiAoMSByb3cpCiAKIFNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30i fScsICckLnJlYycgcmV0dXJuaW5nIGludFtdIGtlZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsK LUVSUk9SOiAgZXhwZWN0ZWQgSlNPTiBhcnJheQorRVJST1I6ICBtYWxmb3JtZWQgYXJyYXkgbGl0 ZXJhbDogIiJ7MSwyLDN9IiIKK0RFVEFJTDogIEFycmF5IHZhbHVlIG11c3Qgc3RhcnQgd2l0aCAi eyIgb3IgZGltZW5zaW9uIGluZm9ybWF0aW9uLgogU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJy ZWMiOiAiWzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBvbWl0IHF1b3Rlcyk7 CiAganNvbl9xdWVyeSAKIC0tLS0tLS0tLS0tLQpAQCAtODczLDcgKzg4Miw4IEBAIFNFTEVDVCBK U09OX1FVRVJZKGpzb25iJ3sicmVjIjogIihhYmMsNDIsMDEuMDIuMjAwMykifScsICckLnJlYycg cmV0dXJuaW5nIGNvbXBfCiAoMSByb3cpCiAKIFNFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVj IjogIihhYmMsNDIsMDEuMDIuMjAwMykifScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfYWJjIGtl ZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKLUVSUk9SOiAgY2Fubm90IGNhbGwgcG9wdWxhdGVf Y29tcG9zaXRlIG9uIGEgc2NhbGFyCitFUlJPUjogIG1hbGZvcm1lZCByZWNvcmQgbGl0ZXJhbDog IiIoYWJjLDQyLDAxLjAyLjIwMDMpIiIKK0RFVEFJTDogIE1pc3NpbmcgbGVmdCBwYXJlbnRoZXNp cy4KIERST1AgVFlQRSBjb21wX2FiYzsKIC0tIEV4dGVuc2lvbjogcmVjb3JkIHR5cGVzIHJldHVy bmluZwogQ1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFTIChhIGludCwgdCB0ZXh0LCBqcyBqc29u LCBqYiBqc29uYiwganNhIGpzb25bXSk7CkBAIC05NDUsNyArOTU1LDExIEBAIFNFTEVDVCBKU09O X1FVRVJZKGpzb25iICd7ImEiOiAxfScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90 X251bGwpOwogKDEgcm93KQogCiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAn JC5iJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKLUVSUk9SOiAgZG9tYWluIHNx bGpzb25iX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworIGpzb25fcXVl cnkgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKIC0tIFRlc3QgdGltZXN0 YW1wdHogcGFzc2luZyBhbmQgb3V0cHV0CiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcs ICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0 cyk7CiAgICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgIApAQCAtOTc5LDcgKzk5Myw3IEBAIENS RUFURSBUQUJMRSB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzICgKIAlDT05TVFJBSU5UIHRlc3RfanNv bmJfY29uc3RyYWludDQKIAkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBXSVRI IENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8IGpzb25iICdbMTBd JykKIAlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDUKLQkJQ0hFQ0sgKEpTT05fUVVF UlkoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgY2hhcig1KSBPTUlUIFFVT1RFUyBFTVBUWSBB UlJBWSBPTiBFTVBUWSkgPiAgJ2EnIENPTExBVEUgIkMiKQorCQlDSEVDSyAoSlNPTl9RVUVSWShq czo6anNvbmIsICckLmEnIFJFVFVSTklORyBjaGFyKDUpIEtFRVAgUVVPVEVTIEVNUFRZIEFSUkFZ IE9OIEVNUFRZKSA+ICAnYScgQ09MTEFURSAiQyIpCiApOwogXGQgdGVzdF9qc29uYl9jb25zdHJh aW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZXN0X2pzb25iX2NvbnN0cmFpbnRzIgpAQCAtOTkzLDE1ICsxMDA3LDE1IEBAIENoZWNr IGNvbnN0cmFpbnRzOgogICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQyIiBDSEVDSyAoSlNPTl9F WElTVFMoanM6Ompzb25iLCAnJC4iYSInIFBBU1NJTkcgaSArIDUgQVMgaW50LCBpOjp0ZXh0IEFT IHR4dCwgQVJSQVlbMSwgMiwgM10gQVMgYXJyKSkKICAgICAidGVzdF9qc29uYl9jb25zdHJhaW50 MyIgQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBpbnRlZ2Vy IERFRkFVTFQgMTIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKICAgICAidGVzdF9qc29u Yl9jb25zdHJhaW50NCIgQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC4iYSInIFJFVFVS TklORyBqc29uYiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9S KSA8ICdbMTBdJzo6anNvbmIpCi0gICAgInRlc3RfanNvbmJfY29uc3RyYWludDUiIENIRUNLIChK U09OX1FVRVJZKGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgY2hhcmFjdGVyKDUpIE9NSVQg UVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgnYSc6OmJwY2hhciBDT0xMQVRFICJDIikp CisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDUiIENIRUNLIChKU09OX1FVRVJZKGpzOjpqc29u YiwgJyQuImEiJyBSRVRVUk5JTkcgY2hhcmFjdGVyKDUpIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ ICgnYSc6OmJwY2hhciBDT0xMQVRFICJDIikpCiAKIFNFTEVDVCBjaGVja19jbGF1c2UKIEZST00g aW5mb3JtYXRpb25fc2NoZW1hLmNoZWNrX2NvbnN0cmFpbnRzCiBXSEVSRSBjb25zdHJhaW50X25h bWUgTElLRSAndGVzdF9qc29uYl9jb25zdHJhaW50JScKIE9SREVSIEJZIDE7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jbGF1c2Ug ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIChKU09OX1FVRVJZKChqcyk6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBjaGFyYWN0 ZXIoNSkgT01JVCBRVU9URVMgRU1QVFkgQVJSQVkgT04gRU1QVFkpID4gKCdhJzo6YnBjaGFyIENP TExBVEUgIkMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoZWNrX2NsYXVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAoSlNPTl9RVUVSWSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRV Uk5JTkcgY2hhcmFjdGVyKDUpIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgnYSc6OmJwY2hhciBD T0xMQVRFICJDIikpCiAgKEpTT05fUVVFUlkoKGpzKTo6anNvbmIsICckLiJhIicgUkVUVVJOSU5H IGpzb25iIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwg J1sxMF0nOjpqc29uYikKICAoSlNPTl9WQUxVRSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5J TkcgaW50ZWdlciBERUZBVUxUIDEyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpCiAgKGpz IElTIEpTT04pCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29u LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCmluZGV4IGI2NGM5 MDE3Li40OGMzYzhhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3Fs anNvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwKQEAg LTMwMiw3ICszMDIsNyBAQCBDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50cyAoCiAJ Q09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ0CiAJCUNIRUNLIChKU09OX1FVRVJZKGpz Ojpqc29uYiwgJyQuYScgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIEVNUFRZIE9CSkVDVCBPTiBF UlJPUikgPCBqc29uYiAnWzEwXScpCiAJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ1 Ci0JCUNIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGNoYXIoNSkg T01JVCBRVU9URVMgRU1QVFkgQVJSQVkgT04gRU1QVFkpID4gICdhJyBDT0xMQVRFICJDIikKKwkJ Q0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgY2hhcig1KSBLRUVQ IFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBUWSkgPiAgJ2EnIENPTExBVEUgIkMiKQogKTsKIAog XGQgdGVzdF9qc29uYl9jb25zdHJhaW50cwotLSAKMi4zNC4xCgo= --000000000000713eb0060f82bd0b--