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 1tRC8H-007vM6-LQ for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Dec 2024 15:20:10 +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 1tRC8G-00AxGs-Tw for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Dec 2024 15:20:08 +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 1tRC8G-00AxGk-CJ for pgsql-hackers@lists.postgresql.org; Fri, 27 Dec 2024 15:20:08 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tRC8E-000oiJ-2S for pgsql-hackers@lists.postgresql.org; Fri, 27 Dec 2024 15:20:07 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-5160f80e652so1961561e0c.2 for ; Fri, 27 Dec 2024 07:20:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735312806; x=1735917606; 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=DdrQmxgE6xkN+ZL/99nd73aMAqT3IS5Ada5GcidQLFw=; b=X7gkkHzy2XsAcGpF4pfD0LsYSpspPV+smH/DZ/FzSN+UuberwZ19g+Vi5mBUAprVQ+ iz2V9VSMbKFo/ja/VKkPgVRQeRo2p+0A8CkANi/nwDfOWBhkqm9YflkIRqAiaYtN3olo sQf9hxgotr48T2+HHQcrjzWWMefFRCMQTC98DtWiEUW2Ooh8JrbitU/BxHo3gt/BCG+E KKeM2UgYw1TM03D5P5+HjxXIQ20jS6ex78MT27TY0jUm1d0mcuVhN9LIwYeZrV/F0bkx fusnDFtJsXX2eIYJr4YOnVXZeF4zwN8ewZzq0QqXmt+AmXEVtvNCxbka6FPq0RvqSL/q WLrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735312806; x=1735917606; 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=DdrQmxgE6xkN+ZL/99nd73aMAqT3IS5Ada5GcidQLFw=; b=eq6GDiILqT9CGoLF0OxvKW9uJm7gXSII3+W0oJyQFS8Qcur+HcB/SL8uXOcoQ1uFCJ jU8vHRhkHjhjcTOBfKgado7qYQh53eigVcnRrHfhIQ+fth4REVeYIHScvcNXvq2kDEOi MSrkG6yhceLgMxjR7Dy69Mp7nsO0rJDz7DZvudqIE7TzN//YxinDbNQHgbqeToga9T1t s1MpuBzgt92/AJGwd9OzVXEmo52Oq/eBAxBRT77b1JBHh3+RaF/jzQc7JFQgZzc4GQpK 5xfByp84t/TXDWXfcLCdMcuxgaAfg87sgmYLkHNwgrFZU7u5n5FPM4Jnk+GEc5rCRYyt fOug== X-Forwarded-Encrypted: i=1; AJvYcCVNT2jSTWpP+hMPwmlGzKdX74MtdiuwNuiqriNPXnH9OlVzr2J8xb7O35CnxAc4aqBqntlgE+/SoACKvl6F@lists.postgresql.org X-Gm-Message-State: AOJu0Yzz3LKcOhhU83d2xsP9bBXZ7PLUCA4ky0CkhJ7UP29lr1vFd9gH Zy5mQ6T2cJbIRY11Fwd6/rwFNgouw4ADm4tt0PicBN7UkCbrRrX5cpkvKvRZUKBNLWnWzZXK+VN HiV7SW/dmleKTjPv1H5AoWYeRXso= X-Gm-Gg: ASbGnctOwniGXtNszoY5BARgHZfuMHqL6lmn+KCWidq2KLvhh6Yf178JwZPj/a6QaYY zfiV1fECI+JxCgR874ceF8sH4Kyik6PXXZLbL7TI= X-Google-Smtp-Source: AGHT+IHuQAqxBV7TODhl+uJwHUNze3b6OrZNtCgZn3/M+1SXcO0B4trTKl9ctvcAE0fr2CrQZtIQ+wYH7WcjpEfRHYA= X-Received: by 2002:a05:6122:50c:b0:518:9f81:f91d with SMTP id 71dfb90a1353d-51b75d59e78mr19311462e0c.10.1735312805680; Fri, 27 Dec 2024 07:20:05 -0800 (PST) MIME-Version: 1.0 References: <3chredgnjcmccym2kczawfih226b4ac6co7p6z4jeofevrcosi@mrsxkx2x2c65> <20241120201313.t4wbhld4ktgielaf@erthalion.local> In-Reply-To: From: jian he Date: Fri, 27 Dec 2024 23:19:29 +0800 Message-ID: Subject: Re: Re: proposal: schema variables To: Pavel Stehule Cc: Dmitry Dolgov <9erthalion6@gmail.com>, Laurenz Albe , Erik Rijkers , Michael Paquier , Amit Kapila , DUVAL REMI , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000005b8a83062a41ff81" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005b8a83062a41ff81 Content-Type: text/plain; charset="UTF-8" hi. + if (!OidIsValid(varid)) + AcceptInvalidationMessages(); + else if (OidIsValid(varid)) + LockDatabaseObject(VariableRelationId, varid, 0, AccessShareLock); we can change it to + if (!OidIsValid(varid)) + AcceptInvalidationMessages(); + else + LockDatabaseObject(VariableRelationId, varid, 0, AccessShareLock); inval_count didn't explain at all, other places did actually explain it. Can we add some text explaining inval_count? (i didn't fully understand this part, that is why i am asking..) seems IdentifyVariable all these three ereport(ERROR...) don't have regress tests, i think we should have it. Am I missing something? create variable v2 as int; let v2.a = 1; ERROR: type "integer" of target session variable "public.v2" is not a composite type LINE 1: let v2.a = 1; ^ the error messages look weird. IMO, it should either be "type of session variable "public.v2" is not a composite type" or "session variable "public.v2" don't have attribute "a" also, the above can be as a regress test for: + if (attrname && !is_rowtype) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("type \"%s\" of target session variable \"%s.%s\" is not a composite type", + format_type_be(typid), + get_namespace_name(get_session_variable_namespace(varid)), + get_session_variable_name(varid)), + parser_errposition(pstate, stmt->location))); since we don't have coverage tests for it. + if (coerced_expr == NULL) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("variable \"%s.%s\" is of type %s," + " but expression is of type %s", + get_namespace_name(get_session_variable_namespace(varid)), + get_session_variable_name(varid), + format_type_be(typid), + format_type_be(exprtypid)), + errhint("You will need to rewrite or cast the expression."), + parser_errposition(pstate, exprLocation((Node *) expr)))); generally, errmsg(...) should put it into one line for better grep-ability so we can change it to: +errmsg("variable \"%s.%s\" is of type %s, but expression is of type %s"...) also no coverage tests? simple test case for it: create variable v2 as int; let v2 = '1'::jsonb; ---------------<<<>>>-------------- +let_target: + ColId opt_indirection + { + $$ = list_make1(makeString($1)); + if ($2) + $$ = list_concat($$, + check_indirection($2, yyscanner)); + } if you look closely, it seems the indentation level is wrong in line "$$ = list_concat($$,"? ---------------<<<>>>-------------- i did some refactoring in session_variables.sql for privilege check. make the tests more neat, please check attached. --0000000000005b8a83062a41ff81 Content-Type: application/x-patch; name="session_variable_priv.diff" Content-Disposition: attachment; filename="session_variable_priv.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m56wdoz20 ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92YXJpYWJsZXMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKaW5k ZXggOWY3NTEyOGM0Mi4uNDg3M2FjNTQzOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKQEAgLTExNSw4NSArMTE1LDEyNiBAQCBBTFRFUiBE RUZBVUxUIFBSSVZJTEVHRVMKIFNFVCBST0xFIFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CiBD UkVBVEUgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMSBBUyBpbnQ7CiBTRVQgUk9MRSBUTyBERUZBVUxU OwotXGRWKyBzdmFydGVzdC52YXIxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdmFyaWFibGVzCi0gIFNjaGVtYSAgfCBOYW1l IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8ICAgICAgICAgT3duZXIgICAgICAgICAgfCAgICAgICAg ICAgICAgICBBY2Nlc3MgcHJpdmlsZWdlcyAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAK LS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQotIHN2YXJ0ZXN0IHwgdmFyMSB8IGludGVnZXIgfCAgICAgICAgICAg fCByZWdyZXNzX3ZhcmlhYmxlX293bmVyIHwgcmVncmVzc192YXJpYWJsZV9vd25lcj1ydy9yZWdy ZXNzX3ZhcmlhYmxlX293bmVyK3wgCi0gICAgICAgICAgfCAgICAgIHwgICAgICAgICB8ICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCByZWdyZXNzX3ZhcmlhYmxlX3JlYWRlcj1y L3JlZ3Jlc3NfdmFyaWFibGVfb3duZXIgfCAKKy0tc2hvdWxkIGJlIG9rLiBzaW5jZSBBTFRFUiBE RUZBVUxUIFBSSVZJTEVHRVMKKy0tYWxsb3cgcmVncmVzc192YXJpYWJsZV9yZWFkZXIgdG8gaGF2 ZSBTRUxFQ1QgcHJpdmlsZWRnZQorU0VMRUNUIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVn ZSgncmVncmVzc192YXJpYWJsZV9yZWFkZXInLCAnc3ZhcnRlc3QudmFyMScsICdTRUxFQ1QnKTsg LS0gdAorIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgdAogKDEgcm93KQogCiBEUk9QIFZBUklBQkxFIHN2YXJ0ZXN0LnZh cjE7CiBEUk9QIFNDSEVNQSBzdmFydGVzdDsKIERST1AgUk9MRSByZWdyZXNzX3ZhcmlhYmxlX3Jl YWRlcjsKLS0tIGNoZWNrIFdJVEggR1JBTlQgT1BUSU9OCistLS0tLWJlZ2luIG9mIGNoZWNrIEdS QU5UIFdJVEggR1JBTlQgT1BUSU9OIGFuZCBSRVZPS0UgR1JBTlRFRCBCWQogQ1JFQVRFIFJPTEUg cmVncmVzc192YXJpYWJsZV9yMTsKIENSRUFURSBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfcjI7CiBT RVQgUk9MRSBUTyByZWdyZXNzX3ZhcmlhYmxlX293bmVyOwotQ1JFQVRFIFZBUklBQkxFIHZhcjEg QVMgaW50OworQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OyAgICAgIC0tdmFyMSB3aWxsIG93 bmVkIGJ5IHJlZ3Jlc3NfdmFyaWFibGVfb3duZXIKIEdSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2 YXIxIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcjEgV0lUSCBHUkFOVCBPUFRJT047CiBTRVQgUk9MRSBU TyByZWdyZXNzX3ZhcmlhYmxlX3IxOwogR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEgVE8g cmVncmVzc192YXJpYWJsZV9yMiBXSVRIIEdSQU5UIE9QVElPTjsKIFNFVCBST0xFIFRPIERFRkFV TFQ7Ci1TRUxFQ1QgdmFyYWNsIEZST00gcGdfdmFyaWFibGUgV0hFUkUgdmFybmFtZSA9ICd2YXIx JzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2YXJhY2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0ge3JlZ3Jlc3NfdmFyaWFibGVfb3duZXI9cncvcmVncmVzc192YXJpYWJsZV9vd25lcixy ZWdyZXNzX3ZhcmlhYmxlX3IxPXIqL3JlZ3Jlc3NfdmFyaWFibGVfb3duZXIscmVncmVzc192YXJp YWJsZV9yMj1yKi9yZWdyZXNzX3ZhcmlhYmxlX3IxfQorU0VMRUNUIGhhc19zZXNzaW9uX3Zhcmlh YmxlX3ByaXZpbGVnZSgncmVncmVzc192YXJpYWJsZV9yMScsICdwdWJsaWMudmFyMScsICdTRUxF Q1QnKTsgLS0gdAorIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgaGFzX3Nlc3Npb25f dmFyaWFibGVfcHJpdmlsZWdlKCdyZWdyZXNzX3ZhcmlhYmxlX3IyJywgJ3B1YmxpYy52YXIxJywg J1NFTEVDVCcpOyAtLSB0CisgaGFzX3Nlc3Npb25fdmFyaWFibGVfcHJpdmlsZWdlIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CiAoMSByb3cpCiAKIFJFVk9LRSBBTEwgUFJJ VklMRUdFUyBPTiBWQVJJQUJMRSB2YXIxIEZST00gcmVncmVzc192YXJpYWJsZV9yMSBDQVNDQURF OwotU0VMRUNUIHZhcmFjbCBGUk9NIHBnX3ZhcmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAndmFyMSc7 Ci0gICAgICAgICAgICAgICAgICAgICAgIHZhcmFjbCAgICAgICAgICAgICAgICAgICAgICAgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0ge3Jl Z3Jlc3NfdmFyaWFibGVfb3duZXI9cncvcmVncmVzc192YXJpYWJsZV9vd25lcn0KK1NFTEVDVCBo YXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2UoJ3JlZ3Jlc3NfdmFyaWFibGVfcjEnLCAncHVi bGljLnZhcjEnLCAnU0VMRUNUJyk7IC0tIGYKKyBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxl Z2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VM RUNUIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSgncmVncmVzc192YXJpYWJsZV9yMics ICdwdWJsaWMudmFyMScsICdTRUxFQ1QnKTsgLS0gZgorIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3By aXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZgogKDEgcm93KQog Ci1TRVQgUk9MRSBUTyByZWdyZXNzX3ZhcmlhYmxlX293bmVyOwotR1JBTlQgU0VMRUNUIE9OIFZB UklBQkxFIHZhcjEgVE8gcmVncmVzc192YXJpYWJsZV9yMSBXSVRIIEdSQU5UIE9QVElPTjsKLVNF VCBST0xFIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcjE7Ci1HUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUg dmFyMSBUTyByZWdyZXNzX3ZhcmlhYmxlX3IyIFdJVEggR1JBTlQgT1BUSU9OOwogU0VUIFJPTEUg VE8gcmVncmVzc192YXJpYWJsZV9vd25lcjsKIEdSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIx IFRPIHJlZ3Jlc3NfdmFyaWFibGVfcjI7Ci1TRUxFQ1QgdmFyYWNsIEZST00gcGdfdmFyaWFibGUg V0hFUkUgdmFybmFtZSA9ICd2YXIxJzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZhcmFjbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0ge3JlZ3Jlc3NfdmFyaWFibGVfb3duZXI9cncvcmVncmVzc192YXJpYWJsZV9vd25lcixyZWdy ZXNzX3ZhcmlhYmxlX3IxPXIqL3JlZ3Jlc3NfdmFyaWFibGVfb3duZXIscmVncmVzc192YXJpYWJs ZV9yMj1yKi9yZWdyZXNzX3ZhcmlhYmxlX3IxLHJlZ3Jlc3NfdmFyaWFibGVfcjI9ci9yZWdyZXNz X3ZhcmlhYmxlX293bmVyfQorU0VMRUNUIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSgn cmVncmVzc192YXJpYWJsZV9yMScsICdwdWJsaWMudmFyMScsICdTRUxFQ1QnKTsgLS0gZgorIGhh c19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgaGFzX3Nlc3Npb25fdmFyaWFibGVfcHJpdmls ZWdlKCdyZWdyZXNzX3ZhcmlhYmxlX3IyJywgJ3B1YmxpYy52YXIxJywgJ1NFTEVDVCcpOyAtLSB0 CisgaGFzX3Nlc3Npb25fdmFyaWFibGVfcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB0CiAoMSByb3cpCiAKIFJFVk9LRSBBTEwgT04gVkFSSUFCTEUgdmFyMSBG Uk9NIHJlZ3Jlc3NfdmFyaWFibGVfcjIgR1JBTlRFRCBCWSByZWdyZXNzX3ZhcmlhYmxlX293bmVy OwotU0VMRUNUIHZhcmFjbCBGUk9NIHBnX3ZhcmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAndmFyMSc7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmFyYWNsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIHtyZWdyZXNzX3ZhcmlhYmxlX293bmVyPXJ3L3JlZ3Jlc3NfdmFyaWFibGVfb3duZXIscmVn cmVzc192YXJpYWJsZV9yMT1yKi9yZWdyZXNzX3ZhcmlhYmxlX293bmVyLHJlZ3Jlc3NfdmFyaWFi bGVfcjI9ciovcmVncmVzc192YXJpYWJsZV9yMX0KK1NFTEVDVCBoYXNfc2Vzc2lvbl92YXJpYWJs ZV9wcml2aWxlZ2UoJ3JlZ3Jlc3NfdmFyaWFibGVfcjEnLCAncHVibGljLnZhcjEnLCAnU0VMRUNU Jyk7IC0tIGYKKyBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2UgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIGhhc19zZXNzaW9uX3Zh cmlhYmxlX3ByaXZpbGVnZSgncmVncmVzc192YXJpYWJsZV9yMicsICdwdWJsaWMudmFyMScsICdT RUxFQ1QnKTsgLS0gZgorIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgaGFzX3Nlc3Np b25fdmFyaWFibGVfcHJpdmlsZWdlKCdyZWdyZXNzX3ZhcmlhYmxlX293bmVyJywgJ3B1YmxpYy52 YXIxJywgJ1NFTEVDVCcpOyAtLSB0CisgaGFzX3Nlc3Npb25fdmFyaWFibGVfcHJpdmlsZWdlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CiAoMSByb3cpCiAKIFNFVCBST0xF IFRPIERFRkFVTFQ7CiBEUk9QIFZBUklBQkxFIHZhcjE7CistLS0tLWVuZCBvZiBjaGVjayBHUkFO VCBXSVRIIEdSQU5UIE9QVElPTiBhbmQgUkVWT0tFIEdSQU5URUQgQlkKKy0tLS0tLS1iZWdpbiBv ZiB0ZXN0OiBHUkFOVHxSRVZPS0UgU0VMRUNUfFVQREFURSBPTiBBTEwgVkFSSUFCTEVTIElOIFND SEVNQQogQ1JFQVRFIFNDSEVNQSBzdmFydGVzdDsKIEdSQU5UIEFMTCBPTiBTQ0hFTUEgc3ZhcnRl c3QgVE8gcmVncmVzc192YXJpYWJsZV9vd25lcjsKIFNFVCBST0xFIFRPIHJlZ3Jlc3NfdmFyaWFi bGVfb3duZXI7CiBDUkVBVEUgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMSBBUyBpbnQ7CiBDUkVBVEUg VkFSSUFCTEUgc3ZhcnRlc3QudmFyMiBBUyBpbnQ7CiBHUkFOVCBTRUxFQ1QgT04gQUxMIFZBUklB QkxFUyBJTiBTQ0hFTUEgc3ZhcnRlc3QgVE8gcmVncmVzc192YXJpYWJsZV9yMTsKLVNFTEVDVCB2 YXJhY2wgRlJPTSBwZ192YXJpYWJsZSBXSEVSRSB2YXJuYW1lIElOICgndmFyMScsICd2YXIyJyk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJhY2wgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0ge3JlZ3Jlc3NfdmFyaWFibGVfb3duZXI9cncv cmVncmVzc192YXJpYWJsZV9vd25lcixyZWdyZXNzX3ZhcmlhYmxlX3IxPXIvcmVncmVzc192YXJp YWJsZV9vd25lcn0KLSB7cmVncmVzc192YXJpYWJsZV9vd25lcj1ydy9yZWdyZXNzX3ZhcmlhYmxl X293bmVyLHJlZ3Jlc3NfdmFyaWFibGVfcjE9ci9yZWdyZXNzX3ZhcmlhYmxlX293bmVyfQotKDIg cm93cykKK1NFTEVDVCBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2UoJ3JlZ3Jlc3NfdmFy aWFibGVfcjEnLCAnc3ZhcnRlc3QudmFyMScsICdTRUxFQ1QnKTsgLS0gdAorIGhhc19zZXNzaW9u X3ZhcmlhYmxlX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitTRUxFQ1QgaGFzX3Nlc3Npb25fdmFyaWFibGVfcHJpdmlsZWdlKCdyZWdy ZXNzX3ZhcmlhYmxlX3IxJywgJ3N2YXJ0ZXN0LnZhcjInLCAnU0VMRUNUJyk7IC0tIHQKKyBoYXNf c2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQKKygxIHJvdykKIAogUkVWT0tFIFNFTEVDVCBPTiBBTEwgVkFSSUFCTEVTIElOIFND SEVNQSBzdmFydGVzdCBGUk9NIHJlZ3Jlc3NfdmFyaWFibGVfcjE7Ci1TRUxFQ1QgdmFyYWNsIEZS T00gcGdfdmFyaWFibGUgV0hFUkUgdmFybmFtZSBJTiAoJ3ZhcjEnLCAndmFyMicpOwotICAgICAg ICAgICAgICAgICAgICAgICB2YXJhY2wgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHtyZWdyZXNzX3Zh cmlhYmxlX293bmVyPXJ3L3JlZ3Jlc3NfdmFyaWFibGVfb3duZXJ9Ci0ge3JlZ3Jlc3NfdmFyaWFi bGVfb3duZXI9cncvcmVncmVzc192YXJpYWJsZV9vd25lcn0KLSgyIHJvd3MpCitTRUxFQ1QgaGFz X3Nlc3Npb25fdmFyaWFibGVfcHJpdmlsZWdlKCdyZWdyZXNzX3ZhcmlhYmxlX3IxJywgJ3N2YXJ0 ZXN0LnZhcjEnLCAnU0VMRUNUJyk7IC0tIGYKKyBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxl Z2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VM RUNUIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSgncmVncmVzc192YXJpYWJsZV9yMScs ICdzdmFydGVzdC52YXIyJywgJ1NFTEVDVCcpOyAtLSBmCisgaGFzX3Nlc3Npb25fdmFyaWFibGVf cHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cp CiAKIFNFVCBST0xFIFRPIERFRkFVTFQ7CiBEUk9QIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjE7CiBE Uk9QIFZBUklBQkxFIHN2YXJ0ZXN0LnZhcjI7CiBEUk9QIFNDSEVNQSBzdmFydGVzdDsKKy0tLS0t LS1lbmQgb2YgdGVzdDogR1JBTlR8UkVWT0tFIFNFTEVDVHxVUERBVEUgT04gQUxMIFZBUklBQkxF UyBJTiBTQ0hFTUEKKy0tLWZ1bmN0aW9uIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSBo YXZlIHZhcmlvdXMga2luZCBvZiBzaWduYXR1cmUuCistLS10aGUgZm9sbG93aW5nIGFyZSBleHRl bnNpdmUgdGVzdCBmb3IgaXQuCiBTRVQgUk9MRSBUTyByZWdyZXNzX3ZhcmlhYmxlX293bmVyOwog Q1JFQVRFIFZBUklBQkxFIHB1YmxpYy52YXIxIEFTIGludDsKIFNFVCBzZWFyY2hfcGF0aCBUTyBw dWJsaWM7CkBAIC0zNTMsNiArMzk0LDcgQEAgRFJPUCBWQVJJQUJMRSBwdWJsaWMudmFyMTsKIERS T1AgUk9MRSByZWdyZXNzX3ZhcmlhYmxlX3IxOwogRFJPUCBST0xFIHJlZ3Jlc3NfdmFyaWFibGVf cjI7CiBEUk9QIFJPTEUgcmVncmVzc192YXJpYWJsZV9vd25lcjsKKy0tLWVuZCBvZiBmdW5jdGlv biBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2UgdGVzdHMuCiAtLSBjaGVjayBhY2Nlc3Mg cmlnaHRzCiBDUkVBVEUgUk9MRSByZWdyZXNzX25vb3duZXI7CiBDUkVBVEUgVkFSSUFCTEUgdmFy MSBBUyBpbnQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3Zhcmlh Ymxlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwKaW5k ZXggMjRlODk3YThjNC4uMzY4MGVjMjlkZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nlc3Np b25fdmFyaWFibGVzLnNxbApAQCAtMTM3LDU0ICsxMzcsNTUgQEAgU0VUIFJPTEUgVE8gcmVncmVz c192YXJpYWJsZV9vd25lcjsKIENSRUFURSBWQVJJQUJMRSBzdmFydGVzdC52YXIxIEFTIGludDsK IFNFVCBST0xFIFRPIERFRkFVTFQ7CiAKLVxkVisgc3ZhcnRlc3QudmFyMQorLS1zaG91bGQgYmUg b2suIHNpbmNlIEFMVEVSIERFRkFVTFQgUFJJVklMRUdFUworLS1hbGxvdyByZWdyZXNzX3Zhcmlh YmxlX3JlYWRlciB0byBoYXZlIFNFTEVDVCBwcml2aWxlZGdlCitTRUxFQ1QgaGFzX3Nlc3Npb25f dmFyaWFibGVfcHJpdmlsZWdlKCdyZWdyZXNzX3ZhcmlhYmxlX3JlYWRlcicsICdzdmFydGVzdC52 YXIxJywgJ1NFTEVDVCcpOyAtLSB0CiAKIERST1AgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMTsKLQog RFJPUCBTQ0hFTUEgc3ZhcnRlc3Q7CiBEUk9QIFJPTEUgcmVncmVzc192YXJpYWJsZV9yZWFkZXI7 CiAKLS0tIGNoZWNrIFdJVEggR1JBTlQgT1BUSU9OCisKKy0tLS0tYmVnaW4gb2YgY2hlY2sgR1JB TlQgV0lUSCBHUkFOVCBPUFRJT04gYW5kIFJFVk9LRSBHUkFOVEVEIEJZCiBDUkVBVEUgUk9MRSBy ZWdyZXNzX3ZhcmlhYmxlX3IxOwogQ1JFQVRFIFJPTEUgcmVncmVzc192YXJpYWJsZV9yMjsKIAog U0VUIFJPTEUgVE8gcmVncmVzc192YXJpYWJsZV9vd25lcjsKLUNSRUFURSBWQVJJQUJMRSB2YXIx IEFTIGludDsKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludDsgICAgICAtLXZhcjEgd2lsbCBv d25lZCBieSByZWdyZXNzX3ZhcmlhYmxlX293bmVyCiAKIEdSQU5UIFNFTEVDVCBPTiBWQVJJQUJM RSB2YXIxIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcjEgV0lUSCBHUkFOVCBPUFRJT047CiBTRVQgUk9M RSBUTyByZWdyZXNzX3ZhcmlhYmxlX3IxOwogR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEg VE8gcmVncmVzc192YXJpYWJsZV9yMiBXSVRIIEdSQU5UIE9QVElPTjsKIFNFVCBST0xFIFRPIERF RkFVTFQ7CiAKLVNFTEVDVCB2YXJhY2wgRlJPTSBwZ192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0g J3ZhcjEnOworU0VMRUNUIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSgncmVncmVzc192 YXJpYWJsZV9yMScsICdwdWJsaWMudmFyMScsICdTRUxFQ1QnKTsgLS0gdAorU0VMRUNUIGhhc19z ZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSgncmVncmVzc192YXJpYWJsZV9yMicsICdwdWJsaWMu dmFyMScsICdTRUxFQ1QnKTsgLS0gdAogCiBSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gVkFSSUFC TEUgdmFyMSBGUk9NIHJlZ3Jlc3NfdmFyaWFibGVfcjEgQ0FTQ0FERTsKIAotU0VMRUNUIHZhcmFj bCBGUk9NIHBnX3ZhcmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAndmFyMSc7Ci0KLVNFVCBST0xFIFRP IHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7Ci0KLUdSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIx IFRPIHJlZ3Jlc3NfdmFyaWFibGVfcjEgV0lUSCBHUkFOVCBPUFRJT047Ci1TRVQgUk9MRSBUTyBy ZWdyZXNzX3ZhcmlhYmxlX3IxOwotR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gcmVn cmVzc192YXJpYWJsZV9yMiBXSVRIIEdSQU5UIE9QVElPTjsKK1NFTEVDVCBoYXNfc2Vzc2lvbl92 YXJpYWJsZV9wcml2aWxlZ2UoJ3JlZ3Jlc3NfdmFyaWFibGVfcjEnLCAncHVibGljLnZhcjEnLCAn U0VMRUNUJyk7IC0tIGYKK1NFTEVDVCBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2UoJ3Jl Z3Jlc3NfdmFyaWFibGVfcjInLCAncHVibGljLnZhcjEnLCAnU0VMRUNUJyk7IC0tIGYKIAogU0VU IFJPTEUgVE8gcmVncmVzc192YXJpYWJsZV9vd25lcjsKIEdSQU5UIFNFTEVDVCBPTiBWQVJJQUJM RSB2YXIxIFRPIHJlZ3Jlc3NfdmFyaWFibGVfcjI7CiAKLVNFTEVDVCB2YXJhY2wgRlJPTSBwZ192 YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3ZhcjEnOworU0VMRUNUIGhhc19zZXNzaW9uX3Zhcmlh YmxlX3ByaXZpbGVnZSgncmVncmVzc192YXJpYWJsZV9yMScsICdwdWJsaWMudmFyMScsICdTRUxF Q1QnKTsgLS0gZgorU0VMRUNUIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSgncmVncmVz c192YXJpYWJsZV9yMicsICdwdWJsaWMudmFyMScsICdTRUxFQ1QnKTsgLS0gdAogCiBSRVZPS0Ug QUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSByZWdyZXNzX3ZhcmlhYmxlX3IyIEdSQU5URUQgQlkg cmVncmVzc192YXJpYWJsZV9vd25lcjsKIAotU0VMRUNUIHZhcmFjbCBGUk9NIHBnX3ZhcmlhYmxl IFdIRVJFIHZhcm5hbWUgPSAndmFyMSc7Ci0KK1NFTEVDVCBoYXNfc2Vzc2lvbl92YXJpYWJsZV9w cml2aWxlZ2UoJ3JlZ3Jlc3NfdmFyaWFibGVfcjEnLCAncHVibGljLnZhcjEnLCAnU0VMRUNUJyk7 IC0tIGYKK1NFTEVDVCBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2UoJ3JlZ3Jlc3NfdmFy aWFibGVfcjInLCAncHVibGljLnZhcjEnLCAnU0VMRUNUJyk7IC0tIGYKK1NFTEVDVCBoYXNfc2Vz c2lvbl92YXJpYWJsZV9wcml2aWxlZ2UoJ3JlZ3Jlc3NfdmFyaWFibGVfb3duZXInLCAncHVibGlj LnZhcjEnLCAnU0VMRUNUJyk7IC0tIHQKIFNFVCBST0xFIFRPIERFRkFVTFQ7CiAKIERST1AgVkFS SUFCTEUgdmFyMTsKKy0tLS0tZW5kIG9mIGNoZWNrIEdSQU5UIFdJVEggR1JBTlQgT1BUSU9OIGFu ZCBSRVZPS0UgR1JBTlRFRCBCWQogCi1DUkVBVEUgU0NIRU1BIHN2YXJ0ZXN0OwogCistLS0tLS0t YmVnaW4gb2YgdGVzdDogR1JBTlR8UkVWT0tFIFNFTEVDVHxVUERBVEUgT04gQUxMIFZBUklBQkxF UyBJTiBTQ0hFTUEKK0NSRUFURSBTQ0hFTUEgc3ZhcnRlc3Q7CiBHUkFOVCBBTEwgT04gU0NIRU1B IHN2YXJ0ZXN0IFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7Ci0KIFNFVCBST0xFIFRPIHJlZ3Jl c3NfdmFyaWFibGVfb3duZXI7CiAKIENSRUFURSBWQVJJQUJMRSBzdmFydGVzdC52YXIxIEFTIGlu dDsKQEAgLTE5MiwxOSArMTkzLDIzIEBAIENSRUFURSBWQVJJQUJMRSBzdmFydGVzdC52YXIyIEFT IGludDsKIAogR1JBTlQgU0VMRUNUIE9OIEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIHN2YXJ0ZXN0 IFRPIHJlZ3Jlc3NfdmFyaWFibGVfcjE7CiAKLVNFTEVDVCB2YXJhY2wgRlJPTSBwZ192YXJpYWJs ZSBXSEVSRSB2YXJuYW1lIElOICgndmFyMScsICd2YXIyJyk7CitTRUxFQ1QgaGFzX3Nlc3Npb25f dmFyaWFibGVfcHJpdmlsZWdlKCdyZWdyZXNzX3ZhcmlhYmxlX3IxJywgJ3N2YXJ0ZXN0LnZhcjEn LCAnU0VMRUNUJyk7IC0tIHQKK1NFTEVDVCBoYXNfc2Vzc2lvbl92YXJpYWJsZV9wcml2aWxlZ2Uo J3JlZ3Jlc3NfdmFyaWFibGVfcjEnLCAnc3ZhcnRlc3QudmFyMicsICdTRUxFQ1QnKTsgLS0gdAog CiBSRVZPS0UgU0VMRUNUIE9OIEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIHN2YXJ0ZXN0IEZST00g cmVncmVzc192YXJpYWJsZV9yMTsKIAotU0VMRUNUIHZhcmFjbCBGUk9NIHBnX3ZhcmlhYmxlIFdI RVJFIHZhcm5hbWUgSU4gKCd2YXIxJywgJ3ZhcjInKTsKK1NFTEVDVCBoYXNfc2Vzc2lvbl92YXJp YWJsZV9wcml2aWxlZ2UoJ3JlZ3Jlc3NfdmFyaWFibGVfcjEnLCAnc3ZhcnRlc3QudmFyMScsICdT RUxFQ1QnKTsgLS0gZgorU0VMRUNUIGhhc19zZXNzaW9uX3ZhcmlhYmxlX3ByaXZpbGVnZSgncmVn cmVzc192YXJpYWJsZV9yMScsICdzdmFydGVzdC52YXIyJywgJ1NFTEVDVCcpOyAtLSBmCiAKIFNF VCBST0xFIFRPIERFRkFVTFQ7Ci0KIERST1AgVkFSSUFCTEUgc3ZhcnRlc3QudmFyMTsKIERST1Ag VkFSSUFCTEUgc3ZhcnRlc3QudmFyMjsKLQogRFJPUCBTQ0hFTUEgc3ZhcnRlc3Q7CistLS0tLS0t ZW5kIG9mIHRlc3Q6IEdSQU5UfFJFVk9LRSBTRUxFQ1R8VVBEQVRFIE9OIEFMTCBWQVJJQUJMRVMg SU4gU0NIRU1BCisKIAorLS0tZnVuY3Rpb24gaGFzX3Nlc3Npb25fdmFyaWFibGVfcHJpdmlsZWdl IGhhdmUgdmFyaW91cyBraW5kIG9mIHNpZ25hdHVyZS4KKy0tLXRoZSBmb2xsb3dpbmcgYXJlIGV4 dGVuc2l2ZSB0ZXN0IGZvciBpdC4KIFNFVCBST0xFIFRPIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7 CiAKIENSRUFURSBWQVJJQUJMRSBwdWJsaWMudmFyMSBBUyBpbnQ7CkBAIC0yNjEsNiArMjY2LDcg QEAgRFJPUCBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfcjE7CiBEUk9QIFJPTEUgcmVncmVzc192YXJp YWJsZV9yMjsKIAogRFJPUCBST0xFIHJlZ3Jlc3NfdmFyaWFibGVfb3duZXI7CistLS1lbmQgb2Yg ZnVuY3Rpb24gaGFzX3Nlc3Npb25fdmFyaWFibGVfcHJpdmlsZWdlIHRlc3RzLgogCiAtLSBjaGVj ayBhY2Nlc3MgcmlnaHRzCiBDUkVBVEUgUk9MRSByZWdyZXNzX25vb3duZXI7Cg== --0000000000005b8a83062a41ff81--