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 1wEj5K-004Kpu-2z for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 07:30:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEj4K-001Dta-2L for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 07:29:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEj4K-001DtP-00 for pgsql-hackers@lists.postgresql.org; Mon, 20 Apr 2026 07:29:20 +0000 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wEj4H-00000001t8H-2aBc for pgsql-hackers@lists.postgresql.org; Mon, 20 Apr 2026 07:29:18 +0000 Received: by mail-oi1-x231.google.com with SMTP id 5614622812f47-4670676ba03so568057b6e.1 for ; Mon, 20 Apr 2026 00:29:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776670157; cv=none; d=google.com; s=arc-20240605; b=HIoHNCK7bVTXFFF43NUJbEGd7+rPEx61bXar++ek+N3/VxvvNt9hCCcp2rGk6kXFvH eT3qZb/0kviGNBjtjBIPjofKzffUJ/g3Q+EU3ZVFDoAv+bdOJ5rhsi/s+f3JSuIzW78O V+TDlIcPRPt2a73XOrSZFOE2+fHMtWkKBe8j01BF7RCiF19xF+3bM1alpZGNbo+7Q5+u a1iB3uoqkCmcEHy+0qkRQabxp2NnVXF43+Akl2UzNQ2SaJXENK/rLxF4ZBdb4wac/cJz nMi1fAnPTkQplP1wQNAMP9gLRFMh3A7ojCR7ynSLtQG+rsVoHZeq1FQr9U7gdQBTci6Y MhJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=3/iwTpeUCEOtVDkUM4Jm+JDTG9g+oxa5DbJAd5St5mQ=; fh=bOyFGstQQtJoIfpgJffxUAfhYbm01psNXslZiW4xyLM=; b=lggPYxCPn8/sbIBhJ5cN4TD6/OX8vPGyzJPKT1ACeBIpuIiKZrHJysT+Udee/4e9jr 73aCM/xRJYhGX0NSosWxV1QmOpoPTX1JurGQdC9clm+ufYZSO+GZwMNG3BbGoBGMD6fE AOK5wEFz2ilTsLO8YlQYvB0HOXbmhYdYL3MM0lx9Fgo8xNjNwE51EgXntzavBFamjjPp kFdz/MvS8oRQI9Lq7iqSGArwLFv6tq2kWojtVz7P3vAUgsIipQiBxBnGUuybaON6Y8wh EFIzw8LpAEKE8d9Fq4gWX4qoGVLkKBn7/VP8IEp2qRDYDNMaLRQFx5MbbITxU02chD/V excA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776670157; x=1777274957; 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=3/iwTpeUCEOtVDkUM4Jm+JDTG9g+oxa5DbJAd5St5mQ=; b=F+Ou6xn9LFQp0z8PK5pGusAnAkpJB4tX5Nwg2xPpPmmCcOqd/83AuUVxNk22ypPLBb /fe5vG5KLElvLd6+9ybllK4GdGqOzOdV8yLoijThREJw9h3mCVkBJR//whgfp6+GAblG 5fJD839drdEsJnElEoVWNLq+6Whg4sHcU2XALhiErhkzY2GOFILWg+4B/KNIAihyzCyd KaXlH8X18a9RlsFlkoTCOGtB23mloU6QV/1ldLUuY05Src5JrFNzMZ8hoYrS8u4ROdwe tkeLL/SuXqN60af+EE7b4fg8GgTMC/mP9cHtAVjxw6zy8rSF7MMOQszsnRjVtXDXBhkd 1bfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776670157; x=1777274957; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3/iwTpeUCEOtVDkUM4Jm+JDTG9g+oxa5DbJAd5St5mQ=; b=XkBLJKisESHisXliSJJHlL1JmBCNW5QDj4sXaxXEdZezA5O4hCYMqVRqJCAnjTceN6 0AsvMUP4Ug7PlH60B3zoVmIAE1BGluJcJJGGtTnI5qti070EM/CP7HNhJjDIjPG6RLzG OYeVxugz3Qy1mvYZnnQjdb5oRSbR9IK3P4mn4RWFk3sFm6+tfn24B3M4Vy0xOnf7v6d7 0MWvG7YBpF7/GX4TVvTxU2stYBsuxPFpTtk21xi4AmXHhcd4bwgTzo3uZX8lEah/alzP xiAF8NErrcCG62A8UMbII8UALfptOgpCCYTxE2gVitl5A+LNzEGsGIxG5r0ZPNDr+/FB oHNQ== X-Forwarded-Encrypted: i=1; AFNElJ8SRKiMO9JEBy6Gjam9FFl0anjhY56/mKYaDMoMlaVzm9VRApyxx17801gFwtAo/WxHNOTb2YDbULVy8JZu@lists.postgresql.org X-Gm-Message-State: AOJu0YxpVkVGOCveVLWmYca/rhoOT9Cl+JVVBxr9LcM4A21pKlVVk19F TgT80aMcQUrw/kLBIX+Gh2Fhms9n4D/RDxT0ZPnQqVAI5QhcNhsftQmtZzY6QQEMK/9BBUlfSQd syJV/7eBqQoUQGyyF62ICXx98hkXtyJA= X-Gm-Gg: AeBDieuEpmlyNz3dhWmhaTrSvI9BQwlx5nRwv25dWMvgFtyobiXi1QO+oghRDLcqkQt Rl5A72ywDcZ+cCOxY/qHwYCUSdhEQ/iFZY9HWOZmCL7GyKwHPsq4zT3OLIWDkrV+1UzxhgYubL+ 4ch/uW50HmJn0L7iEEjcfEahocy2nArnkHfmEjszGk5PsfprQPjcjGzBNuTmWcCHVS9LQoNWDmG 9j4KXlMTMjve+Gv1jr03gutPb4NU1CFPw0DXTmqd6TAoyWRAJmzzYkUlroE64sBRgeTRmgGSAAW YfzmikZvK58uxRhDigTX X-Received: by 2002:a05:6808:4487:b0:467:20b0:1c2d with SMTP id 5614622812f47-4799ca734famr6533894b6e.38.1776670156964; Mon, 20 Apr 2026 00:29:16 -0700 (PDT) MIME-Version: 1.0 References: <22B4A33A-99F3-46F5-BE0C-426A9E1D9ABA@gmail.com> <8D1CD3EB-BF72-4C73-AF24-D88581AC01BE@gmail.com> In-Reply-To: From: Richard Guo Date: Mon, 20 Apr 2026 16:29:04 +0900 X-Gm-Features: AQROBzAOPQxAs1uq-iB2Ro-G1Z70IZyieFStIZbrI5diZDhOMb5_iAJsN4mSn0Y Message-ID: Subject: Re: Bug: Rule actions see wrong values for generated columns (NEW.gen reads OLD value) To: Dean Rasheed Cc: Chao Li , SATYANARAYANA NARLAPURAM , PostgreSQL Hackers , Peter Eisentraut Content-Type: multipart/mixed; boundary="00000000000096e373064fdf4168" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000096e373064fdf4168 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 20, 2026 at 2:25=E2=80=AFPM Richard Guo wrote: > Yeah, this is a better approach. The change looks good to me. > > A nitpick: For the comment "The generated column expressions typically > refer to new.attribute ...", maybe we can remove "typically", as > generation expressions always refer to columns of the same relation. I noticed a couple of issues after a further look. 1. The ReplaceVarsFromTargetList call on "gen_cols" fails to handle hasSubLinks. This can cause error if targetList contains SubLinks: update t set a =3D (select max(a) from t); ERROR: replace_rte_variables inserted a SubLink, but has noplace to record= it 2. The same bug fixed in this patch also exists in rule quals: create table t (a int, b int generated always as (a *2)); insert into t values (1); create rule rule_qual as on update to t where new.b > 100 do instead nothing; update t set a =3D 100; select * from t; a | b -----+----- 100 | 200 (1 row) I think we should apply the same fix to CopyAndAddInvertedQual. Attached v3 fixes them. - Richard --00000000000096e373064fdf4168 Content-Type: application/octet-stream; name="v3-0001-Fix-incorrect-NEW-references-to-generated-columns.patch" Content-Disposition: attachment; filename="v3-0001-Fix-incorrect-NEW-references-to-generated-columns.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo6vj1ac0 RnJvbSBjMDk1YTM3OGY4MmVjMGJkNTcwZWIyOWZlYjRlM2NhNTk5MDdiYzg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAyMCBBcHIgMjAyNiAxNTozNTo1NCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjNd IEZpeCBpbmNvcnJlY3QgTkVXIHJlZmVyZW5jZXMgdG8gZ2VuZXJhdGVkIGNvbHVtbnMgaW4gcnVs ZQogcmV3cml0aW5nCgotLS0KIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyAg ICAgICAgICB8IDE0NSArKysrKysrKysrKysrLS0tLS0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2dl bmVyYXRlZF9zdG9yZWQub3V0ICAgICB8ICAzNCArKysrCiAuLi4vcmVncmVzcy9leHBlY3RlZC9n ZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgMzQgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv Z2VuZXJhdGVkX3N0b3JlZC5zcWwgICAgIHwgIDIzICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv Z2VuZXJhdGVkX3ZpcnR1YWwuc3FsICAgIHwgIDIzICsrKwogNSBmaWxlcyBjaGFuZ2VkLCAyMjEg aW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFu ZGxlci5jCmluZGV4IDAyMWM3M2YxYjY3Li43N2IyYzliYzYyMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUv cmV3cml0ZUhhbmRsZXIuYwpAQCAtOTcsOCArOTcsNyBAQCBzdGF0aWMgTGlzdCAqbWF0Y2hMb2Nr cyhDbWRUeXBlIGV2ZW50LCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCWludCB2YXJubywgUXVl cnkgKnBhcnNldHJlZSwgYm9vbCAqaGFzVXBkYXRlKTsKIHN0YXRpYyBRdWVyeSAqZmlyZVJJUnJ1 bGVzKFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKmFjdGl2ZVJJUnMpOwogc3RhdGljIEJpdG1hcHNl dCAqYWRqdXN0X3ZpZXdfY29sdW1uX3NldChCaXRtYXBzZXQgKmNvbHMsIExpc3QgKnRhcmdldGxp c3QpOwotc3RhdGljIE5vZGUgKmV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbnRlcm5hbChOb2Rl ICpub2RlLCBSZWxhdGlvbiByZWwsIGludCBydF9pbmRleCwKLQkJCQkJCQkJCQkJICAgUmFuZ2VU YmxFbnRyeSAqcnRlLCBpbnQgcmVzdWx0X3JlbGF0aW9uKTsKK3N0YXRpYyBMaXN0ICpnZXRfZ2Vu ZXJhdGVkX2NvbHVtbnMoUmVsYXRpb24gcmVsLCBpbnQgcnRfaW5kZXgsIGJvb2wgaW5jbHVkZV9z dG9yZWQpOwogCiAKIC8qCkBAIC02NDIsMTIgKzY0MSw0NiBAQCByZXdyaXRlUnVsZUFjdGlvbihR dWVyeSAqcGFyc2V0cmVlLAogCWlmICgoZXZlbnQgPT0gQ01EX0lOU0VSVCB8fCBldmVudCA9PSBD TURfVVBEQVRFKSAmJgogCQlzdWJfYWN0aW9uLT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkK IAl7CisJCVJhbmdlVGJsRW50cnkgKm5ld19ydGUgPSBydF9mZXRjaChuZXdfdmFybm8sIHN1Yl9h Y3Rpb24tPnJ0YWJsZSk7CisJCVJlbGF0aW9uCW5ld19yZWw7CisJCUxpc3QJICAgKmdlbl9jb2xz OworCisJCS8qCisJCSAqIFRoZSB0YXJnZXQgbGlzdCBkb2VzIG5vdCBjb250YWluIGVudHJpZXMg Zm9yIGdlbmVyYXRlZCBjb2x1bW5zCisJCSAqICh0aGV5IGFyZSByZW1vdmVkIGJ5IHJld3JpdGVU YXJnZXRMaXN0SVUpLCBzbyB3ZSBtdXN0IGJ1aWxkIGVudHJpZXMKKwkJICogZm9yIHRoZW0gaGVy ZSwgc28gdGhhdCBuZXcuZ2VuX2NvbCBjYW4gYmUgcmV3cml0dGVuIGNvcnJlY3RseS4KKwkJICov CisJCW5ld19yZWwgPSByZWxhdGlvbl9vcGVuKG5ld19ydGUtPnJlbGlkLCBOb0xvY2spOworCQln ZW5fY29scyA9IGdldF9nZW5lcmF0ZWRfY29sdW1ucyhuZXdfcmVsLCBuZXdfdmFybm8sIHRydWUp OworCQlyZWxhdGlvbl9jbG9zZShuZXdfcmVsLCBOb0xvY2spOworCisJCS8qCisJCSAqIFRoZSBn ZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zIHJlZmVyIHRvIG5ldy5hdHRyaWJ1dGUsIHNvIHRo ZXkKKwkJICogbXVzdCBiZSByZXdyaXR0ZW4gYmVmb3JlIHRoZXkgY2FuIGJlIHVzZWQgYXMgcmVw bGFjZW1lbnRzLgorCQkgKi8KKwkJZ2VuX2NvbHMgPSAoTGlzdCAqKQorCQkJUmVwbGFjZVZhcnNG cm9tVGFyZ2V0TGlzdCgoTm9kZSAqKSBnZW5fY29scywKKwkJCQkJCQkJCSAgbmV3X3Zhcm5vLAor CQkJCQkJCQkJICAwLAorCQkJCQkJCQkJICBuZXdfcnRlLAorCQkJCQkJCQkJICBwYXJzZXRyZWUt PnRhcmdldExpc3QsCisJCQkJCQkJCQkgIHN1Yl9hY3Rpb24tPnJlc3VsdFJlbGF0aW9uLAorCQkJ CQkJCQkJICAoZXZlbnQgPT0gQ01EX1VQREFURSkgPworCQkJCQkJCQkJICBSRVBMQUNFVkFSU19D SEFOR0VfVkFSTk8gOgorCQkJCQkJCQkJICBSRVBMQUNFVkFSU19TVUJTVElUVVRFX05VTEwsCisJ CQkJCQkJCQkgIGN1cnJlbnRfdmFybm8sCisJCQkJCQkJCQkgICZzdWJfYWN0aW9uLT5oYXNTdWJM aW5rcyk7CisKKwkJLyoKKwkJICogTm93IHJld3JpdGUgbmV3LmF0dHJpYnV0ZSBpbiBzdWJfYWN0 aW9uLCB1c2luZyBib3RoIHRoZSB0YXJnZXQgbGlzdAorCQkgKiBhbmQgdGhlIHJld3JpdHRlbiBn ZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zLgorCQkgKi8KIAkJc3ViX2FjdGlvbiA9IChRdWVy eSAqKQogCQkJUmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdCgoTm9kZSAqKSBzdWJfYWN0aW9uLAog CQkJCQkJCQkJICBuZXdfdmFybm8sCiAJCQkJCQkJCQkgIDAsCi0JCQkJCQkJCQkgIHJ0X2ZldGNo KG5ld192YXJubywgc3ViX2FjdGlvbi0+cnRhYmxlKSwKLQkJCQkJCQkJCSAgcGFyc2V0cmVlLT50 YXJnZXRMaXN0LAorCQkJCQkJCQkJICBuZXdfcnRlLAorCQkJCQkJCQkJICBsaXN0X2NvbmNhdChn ZW5fY29scywgcGFyc2V0cmVlLT50YXJnZXRMaXN0KSwKIAkJCQkJCQkJCSAgc3ViX2FjdGlvbi0+ cmVzdWx0UmVsYXRpb24sCiAJCQkJCQkJCQkgIChldmVudCA9PSBDTURfVVBEQVRFKSA/CiAJCQkJ CQkJCQkgIFJFUExBQ0VWQVJTX0NIQU5HRV9WQVJOTyA6CkBAIC0yMzY4LDE4ICsyNDAxLDUwIEBA IENvcHlBbmRBZGRJbnZlcnRlZFF1YWwoUXVlcnkgKnBhcnNldHJlZSwKIAlDaGFuZ2VWYXJOb2Rl cyhuZXdfcXVhbCwgUFJTMl9PTERfVkFSTk8sIHJ0X2luZGV4LCAwKTsKIAkvKiBGaXggcmVmZXJl bmNlcyB0byBORVcgKi8KIAlpZiAoZXZlbnQgPT0gQ01EX0lOU0VSVCB8fCBldmVudCA9PSBDTURf VVBEQVRFKQorCXsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocnRfaW5kZXgsIHBh cnNldHJlZS0+cnRhYmxlKTsKKwkJUmVsYXRpb24JcmVsOworCQlMaXN0CSAgICpnZW5fY29sczsK KworCQkvKgorCQkgKiBBcyBpbiByZXdyaXRlUnVsZUFjdGlvbiwgYnVpbGQgZW50cmllcyBmb3Ig Z2VuZXJhdGVkIGNvbHVtbnMgc28KKwkJICogdGhhdCBuZXcuZ2VuX2NvbCBpbiB0aGUgcnVsZSBx dWFsaWZpY2F0aW9uIGNhbiBiZSByZXdyaXR0ZW4KKwkJICogY29ycmVjdGx5LgorCQkgKi8KKwkJ cmVsID0gcmVsYXRpb25fb3BlbihydGUtPnJlbGlkLCBOb0xvY2spOworCQlnZW5fY29scyA9IGdl dF9nZW5lcmF0ZWRfY29sdW1ucyhyZWwsIFBSUzJfTkVXX1ZBUk5PLCB0cnVlKTsKKwkJcmVsYXRp b25fY2xvc2UocmVsLCBOb0xvY2spOworCisJCS8qCisJCSAqIFRoZSBnZW5lcmF0ZWQgY29sdW1u IGV4cHJlc3Npb25zIHJlZmVyIHRvIG5ldy5hdHRyaWJ1dGUsIHNvIHRoZXkKKwkJICogbXVzdCBi ZSByZXdyaXR0ZW4gYmVmb3JlIHRoZXkgY2FuIGJlIHVzZWQgYXMgcmVwbGFjZW1lbnRzLgorCQkg Ki8KKwkJZ2VuX2NvbHMgPSAoTGlzdCAqKQorCQkJUmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdCgo Tm9kZSAqKSBnZW5fY29scywKKwkJCQkJCQkJCSAgUFJTMl9ORVdfVkFSTk8sCisJCQkJCQkJCQkg IDAsCisJCQkJCQkJCQkgIHJ0ZSwKKwkJCQkJCQkJCSAgcGFyc2V0cmVlLT50YXJnZXRMaXN0LAor CQkJCQkJCQkJICBwYXJzZXRyZWUtPnJlc3VsdFJlbGF0aW9uLAorCQkJCQkJCQkJICAoZXZlbnQg PT0gQ01EX1VQREFURSkgPworCQkJCQkJCQkJICBSRVBMQUNFVkFSU19DSEFOR0VfVkFSTk8gOgor CQkJCQkJCQkJICBSRVBMQUNFVkFSU19TVUJTVElUVVRFX05VTEwsCisJCQkJCQkJCQkgIHJ0X2lu ZGV4LAorCQkJCQkJCQkJICAmcGFyc2V0cmVlLT5oYXNTdWJMaW5rcyk7CisKIAkJbmV3X3F1YWwg PSBSZXBsYWNlVmFyc0Zyb21UYXJnZXRMaXN0KG5ld19xdWFsLAogCQkJCQkJCQkJCQkgUFJTMl9O RVdfVkFSTk8sCiAJCQkJCQkJCQkJCSAwLAotCQkJCQkJCQkJCQkgcnRfZmV0Y2gocnRfaW5kZXgs Ci0JCQkJCQkJCQkJCQkJICBwYXJzZXRyZWUtPnJ0YWJsZSksCi0JCQkJCQkJCQkJCSBwYXJzZXRy ZWUtPnRhcmdldExpc3QsCisJCQkJCQkJCQkJCSBydGUsCisJCQkJCQkJCQkJCSBsaXN0X2NvbmNh dChnZW5fY29scywKKwkJCQkJCQkJCQkJCQkJIHBhcnNldHJlZS0+dGFyZ2V0TGlzdCksCiAJCQkJ CQkJCQkJCSBwYXJzZXRyZWUtPnJlc3VsdFJlbGF0aW9uLAogCQkJCQkJCQkJCQkgKGV2ZW50ID09 IENNRF9VUERBVEUpID8KIAkJCQkJCQkJCQkJIFJFUExBQ0VWQVJTX0NIQU5HRV9WQVJOTyA6CiAJ CQkJCQkJCQkJCSBSRVBMQUNFVkFSU19TVUJTVElUVVRFX05VTEwsCiAJCQkJCQkJCQkJCSBydF9p bmRleCwKIAkJCQkJCQkJCQkJICZwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKTsKKwl9CiAJLyogQW5k IGF0dGFjaCB0aGUgZml4ZWQgcXVhbCAqLwogCUFkZEludmVydGVkUXVhbChwYXJzZXRyZWUsIG5l d19xdWFsKTsKIApAQCAtNDUzMCwzNiArNDU5NSwzMSBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBh cnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCwKIAogCiAv KgotICogRXhwYW5kIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMKLSAqCi0gKiBJZiB0aGUgdGFi bGUgY29udGFpbnMgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucywgYnVpbGQgYSB0YXJnZXQgbGlz dAotICogY29udGFpbmluZyB0aGUgZXhwYW5kZWQgZXhwcmVzc2lvbnMgYW5kIHVzZSBSZXBsYWNl VmFyc0Zyb21UYXJnZXRMaXN0KCkgdG8KLSAqIGRvIHRoZSByZXBsYWNlbWVudHMuCisgKiBHZXQg YSB0YWJsZSdzIGdlbmVyYXRlZCBjb2x1bW5zCiAgKgotICogVmFycyBtYXRjaGluZyBydF9pbmRl eCBhdCB0aGUgY3VycmVudCBxdWVyeSBsZXZlbCBhcmUgcmVwbGFjZWQgYnkgdGhlCi0gKiB2aXJ0 dWFsIGdlbmVyYXRlZCBjb2x1bW4gZXhwcmVzc2lvbnMgZnJvbSByZWwsIGlmIHRoZXJlIGFyZSBh bnkuCisgKiBJZiBpbmNsdWRlX3N0b3JlZCBpcyB0cnVlLCBib3RoIHN0b3JlZCBhbmQgdmlydHVh bCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUKKyAqIHJldHVybmVkLiAgT3RoZXJ3aXNlLCBvbmx5IHZp cnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgYXJlIHJldHVybmVkLgogICoKLSAqIFRoZSBjYWxsZXIg bXVzdCBhbHNvIHByb3ZpZGUgcnRlLCB0aGUgUlRFIGRlc2NyaWJpbmcgdGhlIHRhcmdldCByZWxh dGlvbiwKLSAqIGluIG9yZGVyIHRvIGhhbmRsZSBhbnkgd2hvbGUtcm93IFZhcnMgcmVmZXJlbmNp bmcgdGhlIHRhcmdldCwgYW5kCi0gKiByZXN1bHRfcmVsYXRpb24sIHRoZSBpbmRleCBvZiB0aGUg cmVzdWx0IHJlbGF0aW9uLCBpZiB0aGlzIGlzIHBhcnQgb2YgYW4KLSAqIElOU0VSVC9VUERBVEUv REVMRVRFL01FUkdFIHF1ZXJ5LgorICogUmV0dXJucyBhIGxpc3Qgb2YgVGFyZ2V0RW50cnksIG9u ZSBmb3IgZWFjaCBnZW5lcmF0ZWQgY29sdW1uLCBjb250YWluaW5nCisgKiB0aGUgYXR0cmlidXRl IG51bWJlcnMgYW5kIGdlbmVyYXRpb24gZXhwcmVzc2lvbnMuCiAgKi8KLXN0YXRpYyBOb2RlICoK LWV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbnRlcm5hbChOb2RlICpub2RlLCBSZWxhdGlvbiBy ZWwsIGludCBydF9pbmRleCwKLQkJCQkJCQkJICBSYW5nZVRibEVudHJ5ICpydGUsIGludCByZXN1 bHRfcmVsYXRpb24pCitzdGF0aWMgTGlzdCAqCitnZXRfZ2VuZXJhdGVkX2NvbHVtbnMoUmVsYXRp b24gcmVsLCBpbnQgcnRfaW5kZXgsIGJvb2wgaW5jbHVkZV9zdG9yZWQpCiB7CisJTGlzdAkgICAq Z2VuX2NvbHMgPSBOSUw7CiAJVHVwbGVEZXNjCXR1cGRlc2M7CiAKIAl0dXBkZXNjID0gUmVsYXRp b25HZXREZXNjcihyZWwpOwotCWlmICh0dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVzYy0+Y29uc3Ry LT5oYXNfZ2VuZXJhdGVkX3ZpcnR1YWwpCisJaWYgKHR1cGRlc2MtPmNvbnN0ciAmJgorCQkodHVw ZGVzYy0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3ZpcnR1YWwgfHwKKwkJIChpbmNsdWRlX3N0b3Jl ZCAmJiB0dXBkZXNjLT5jb25zdHItPmhhc19nZW5lcmF0ZWRfc3RvcmVkKSkpCiAJewotCQlMaXN0 CSAgICp0bGlzdCA9IE5JTDsKLQogCQlmb3IgKGludCBpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRz OyBpKyspCiAJCXsKIAkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHR1 cGRlc2MsIGkpOwogCi0JCQlpZiAoYXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5F UkFURURfVklSVFVBTCkKKwkJCWlmIChhdHRyLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dF TkVSQVRFRF9WSVJUVUFMIHx8CisJCQkJKGluY2x1ZGVfc3RvcmVkICYmIGF0dHItPmF0dGdlbmVy YXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkpCiAJCQl7CiAJCQkJTm9kZQkgICAq ZGVmZXhwcjsKIAkJCQlUYXJnZXRFbnRyeSAqdGU7CkBAIC00NTY4LDE5ICs0NjI4LDEyIEBAIGV4 cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbnRlcm5hbChOb2RlICpub2RlLCBSZWxhdGlvbiByZWws IGludCBydF9pbmRleCwKIAkJCQlDaGFuZ2VWYXJOb2RlcyhkZWZleHByLCAxLCBydF9pbmRleCwg MCk7CiAKIAkJCQl0ZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSBkZWZleHByLCBpICsgMSwg MCwgZmFsc2UpOwotCQkJCXRsaXN0ID0gbGFwcGVuZCh0bGlzdCwgdGUpOworCQkJCWdlbl9jb2xz ID0gbGFwcGVuZChnZW5fY29scywgdGUpOwogCQkJfQogCQl9Ci0KLQkJQXNzZXJ0KGxpc3RfbGVu Z3RoKHRsaXN0KSA+IDApOwotCi0JCW5vZGUgPSBSZXBsYWNlVmFyc0Zyb21UYXJnZXRMaXN0KG5v ZGUsIHJ0X2luZGV4LCAwLCBydGUsIHRsaXN0LAotCQkJCQkJCQkJCSByZXN1bHRfcmVsYXRpb24s Ci0JCQkJCQkJCQkJIFJFUExBQ0VWQVJTX0NIQU5HRV9WQVJOTywgcnRfaW5kZXgsCi0JCQkJCQkJ CQkJIE5VTEwpOwogCX0KIAotCXJldHVybiBub2RlOworCXJldHVybiBnZW5fY29sczsKIH0KIAog LyoKQEAgLTQ1OTcsNiArNDY1MCw3IEBAIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHBy KE5vZGUgKm5vZGUsIFJlbGF0aW9uIHJlbCwgaW50IHJ0X2luZGV4KQogCWlmICh0dXBkZXNjLT5j b25zdHIgJiYgdHVwZGVzYy0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3ZpcnR1YWwpCiAJewogCQlS YW5nZVRibEVudHJ5ICpydGU7CisJCUxpc3QJICAgKnZjb2xzOwogCiAJCXJ0ZSA9IG1ha2VOb2Rl KFJhbmdlVGJsRW50cnkpOwogCQkvKiBlcmVmIG5lZWRzIHRvIGJlIHNldCwgYnV0IHRoZSBhY3R1 YWwgbmFtZSBkb2Vzbid0IG1hdHRlciAqLwpAQCAtNDYwNCwxNCArNDY1OCwyNiBAQCBleHBhbmRf Z2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihOb2RlICpub2RlLCBSZWxhdGlvbiByZWwsIGludCBy dF9pbmRleCkKIAkJcnRlLT5ydGVraW5kID0gUlRFX1JFTEFUSU9OOwogCQlydGUtPnJlbGlkID0g UmVsYXRpb25HZXRSZWxpZChyZWwpOwogCi0JCW5vZGUgPSBleHBhbmRfZ2VuZXJhdGVkX2NvbHVt bnNfaW50ZXJuYWwobm9kZSwgcmVsLCBydF9pbmRleCwgcnRlLCAwKTsKKwkJdmNvbHMgPSBnZXRf Z2VuZXJhdGVkX2NvbHVtbnMocmVsLCBydF9pbmRleCwgZmFsc2UpOworCisJCWlmICh2Y29scykK KwkJeworCQkJLyoKKwkJCSAqIFBhc3NpbmcgTlVMTCBmb3Igb3V0ZXJfaGFzU3ViTGlua3MgaXMg c2FmZSBiZWNhdXNlIGdlbmVyYXRpb24KKwkJCSAqIGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWlu IFN1YkxpbmtzLCBzbyB0aGUgcmVwbGFjZW1lbnQgY2Fubm90CisJCQkgKiBpbnRyb2R1Y2UgYW55 LgorCQkJICovCisJCQlub2RlID0gUmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdChub2RlLCBydF9p bmRleCwgMCwgcnRlLCB2Y29scywgMCwKKwkJCQkJCQkJCQkJIFJFUExBQ0VWQVJTX0NIQU5HRV9W QVJOTywgcnRfaW5kZXgsCisJCQkJCQkJCQkJCSBOVUxMKTsKKwkJfQogCX0KIAogCXJldHVybiBu b2RlOwogfQogCiAvKgotICogQnVpbGQgdGhlIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgdGhl IHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbi4KKyAqIEJ1aWxkIHRoZSBnZW5lcmF0aW9uIGV4cHJl c3Npb24gZm9yIGEgZ2VuZXJhdGVkIGNvbHVtbi4KICAqCiAgKiBFcnJvciBvdXQgaWYgdGhlcmUg aXMgbm8gZ2VuZXJhdGlvbiBleHByZXNzaW9uIGZvdW5kIGZvciB0aGUgZ2l2ZW4gY29sdW1uLgog ICovCkBAIC00NjIzLDggKzQ2ODksMTEgQEAgYnVpbGRfZ2VuZXJhdGlvbl9leHByZXNzaW9uKFJl bGF0aW9uIHJlbCwgaW50IGF0dHJubykKIAlOb2RlCSAgICpkZWZleHByOwogCU9pZAkJCWF0dGNv bGxpZDsKIAotCUFzc2VydChyZF9hdHQtPmNvbnN0ciAmJiByZF9hdHQtPmNvbnN0ci0+aGFzX2dl bmVyYXRlZF92aXJ0dWFsKTsKLQlBc3NlcnQoYXR0X3R1cC0+YXR0Z2VuZXJhdGVkID09IEFUVFJJ QlVURV9HRU5FUkFURURfVklSVFVBTCk7CisJQXNzZXJ0KHJkX2F0dC0+Y29uc3RyICYmCisJCSAg IChyZF9hdHQtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZF92aXJ0dWFsIHx8CisJCQlyZF9hdHQtPmNv bnN0ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQpKTsKKwlBc3NlcnQoYXR0X3R1cC0+YXR0Z2VuZXJh dGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCB8fAorCQkgICBhdHRfdHVwLT5hdHRn ZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpOwogCiAJZGVmZXhwciA9IGJ1 aWxkX2NvbHVtbl9kZWZhdWx0KHJlbCwgYXR0cm5vKTsKIAlpZiAoZGVmZXhwciA9PSBOVUxMKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfc3RvcmVkLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3N0b3JlZC5vdXQKaW5kZXgg NGQzMjljNjA5OTQuLjc4NjZhZTBlYmJlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2dlbmVyYXRlZF9zdG9yZWQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZ2VuZXJhdGVkX3N0b3JlZC5vdXQKQEAgLTE2MDQsNiArMTYwNCw0MCBAQCBDUkVBVEUgVEFC TEUgZ3Rlc3QyOGIgKExJS0UgZ3Rlc3QyOGEgSU5DTFVESU5HIEdFTkVSQVRFRCk7CiAgYyAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCiAgeCAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYiAqIDIpIHN0b3Jl ZAogCistLSBydWxlIGFjdGlvbnMgcmVmZXJyaW5nIHRvIGdlbmVyYXRlZCBjb2x1bW5zOgorLS0g TkVXLmIgaW4gYSBydWxlIGFjdGlvbiBzaG91bGQgcmVmbGVjdCB0aGUgZ2VuZXJhdGVkIGNvbHVt bidzIG5ldyB2YWx1ZQorQ1JFQVRFIFRBQkxFIGd0ZXN0X3J1bGUgKGEgaW50LCBiIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChhICogMikgU1RPUkVEKTsKK0NSRUFURSBUQUJMRSBndGVzdF9ydWxl X2xvZyAob3AgdGV4dCwgb2xkX2IgaW50LCBuZXdfYiBpbnQpOworQ1JFQVRFIFJVTEUgZ3Rlc3Rf cnVsZV91cGQgQVMgT04gVVBEQVRFIFRPIGd0ZXN0X3J1bGUKKyAgRE8gQUxTTyBJTlNFUlQgSU5U TyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdVUEQnLCBPTEQuYiwgTkVXLmIpOworQ1JFQVRFIFJV TEUgZ3Rlc3RfcnVsZV9pbnMgQVMgT04gSU5TRVJUIFRPIGd0ZXN0X3J1bGUKKyAgRE8gQUxTTyBJ TlNFUlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdJTlMnLCBOVUxMLCBORVcuYik7CitJ TlNFUlQgSU5UTyBndGVzdF9ydWxlIChhKSBWQUxVRVMgKDEpOworVVBEQVRFIGd0ZXN0X3J1bGUg U0VUIGEgPSAxMDsKK1VQREFURSBndGVzdF9ydWxlIFNFVCBhID0gKFNFTEVDVCBtYXgoYikgRlJP TSBndGVzdF9ydWxlKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcnVsZV9sb2c7Cisgb3AgIHwgb2xk X2IgfCBuZXdfYiAKKy0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIElOUyB8ICAgICAgIHwgICAgIDIK KyBVUEQgfCAgICAgMiB8ICAgIDIwCisgVVBEIHwgICAgMjAgfCAgICA0MAorKDMgcm93cykKKwor RFJPUCBSVUxFIGd0ZXN0X3J1bGVfdXBkIE9OIGd0ZXN0X3J1bGU7CitEUk9QIFJVTEUgZ3Rlc3Rf cnVsZV9pbnMgT04gZ3Rlc3RfcnVsZTsKK0RST1AgVEFCTEUgZ3Rlc3RfcnVsZV9sb2c7CistLSBy dWxlIHF1YWxzIHJlZmVycmluZyB0byBnZW5lcmF0ZWQgY29sdW1uczoKKy0tIE5FVy5iIGluIHRo ZSBydWxlIHF1YWwgc2hvdWxkIHJlZmxlY3QgdGhlIGdlbmVyYXRlZCBjb2x1bW4ncyBuZXcgdmFs dWUKK0NSRUFURSBSVUxFIGd0ZXN0X3J1bGVfcXVhbCBBUyBPTiBVUERBVEUgVE8gZ3Rlc3RfcnVs ZSBXSEVSRSBORVcuYiA+IDEwMAorICBETyBJTlNURUFEIE5PVEhJTkc7CitVUERBVEUgZ3Rlc3Rf cnVsZSBTRVQgYSA9IDEwMDsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcnVsZTsKKyBhICB8IGIgIAor LS0tLSstLS0tCisgMjAgfCA0MAorKDEgcm93KQorCitEUk9QIFRBQkxFIGd0ZXN0X3J1bGU7CiAt LSBzYW5pdHkgY2hlY2sgb2Ygc3lzdGVtIGNhdGFsb2cKIFNFTEVDVCBhdHRyZWxpZCwgYXR0bmFt ZSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dGdlbmVyYXRlZCBOT1Qg SU4gKCcnLCAncycsICd2Jyk7CiAgYXR0cmVsaWQgfCBhdHRuYW1lIHwgYXR0Z2VuZXJhdGVkIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dAppbmRl eCBmYzQxYzQ4MGQ0MC4uMGQ5Yzc2YzRlNzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CkBAIC0xNTI2LDYgKzE1MjYsNDAgQEAgQ1JFQVRF IFRBQkxFIGd0ZXN0MjhiIChMSUtFIGd0ZXN0MjhhIElOQ0xVRElORyBHRU5FUkFURUQpOwogIGMg ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogIHggICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGIgKiAyKQog CistLSBydWxlIGFjdGlvbnMgcmVmZXJyaW5nIHRvIGdlbmVyYXRlZCBjb2x1bW5zOgorLS0gTkVX LmIgaW4gYSBydWxlIGFjdGlvbiBzaG91bGQgcmVmbGVjdCB0aGUgZ2VuZXJhdGVkIGNvbHVtbidz IG5ldyB2YWx1ZQorQ1JFQVRFIFRBQkxFIGd0ZXN0X3J1bGUgKGEgaW50LCBiIGludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChhICogMikgVklSVFVBTCk7CitDUkVBVEUgVEFCTEUgZ3Rlc3RfcnVsZV9s b2cgKG9wIHRleHQsIG9sZF9iIGludCwgbmV3X2IgaW50KTsKK0NSRUFURSBSVUxFIGd0ZXN0X3J1 bGVfdXBkIEFTIE9OIFVQREFURSBUTyBndGVzdF9ydWxlCisgIERPIEFMU08gSU5TRVJUIElOVE8g Z3Rlc3RfcnVsZV9sb2cgVkFMVUVTICgnVVBEJywgT0xELmIsIE5FVy5iKTsKK0NSRUFURSBSVUxF IGd0ZXN0X3J1bGVfaW5zIEFTIE9OIElOU0VSVCBUTyBndGVzdF9ydWxlCisgIERPIEFMU08gSU5T RVJUIElOVE8gZ3Rlc3RfcnVsZV9sb2cgVkFMVUVTICgnSU5TJywgTlVMTCwgTkVXLmIpOworSU5T RVJUIElOVE8gZ3Rlc3RfcnVsZSAoYSkgVkFMVUVTICgxKTsKK1VQREFURSBndGVzdF9ydWxlIFNF VCBhID0gMTA7CitVUERBVEUgZ3Rlc3RfcnVsZSBTRVQgYSA9IChTRUxFQ1QgbWF4KGIpIEZST00g Z3Rlc3RfcnVsZSk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X3J1bGVfbG9nOworIG9wICB8IG9sZF9i IHwgbmV3X2IgCistLS0tLSstLS0tLS0tKy0tLS0tLS0KKyBJTlMgfCAgICAgICB8ICAgICAyCisg VVBEIHwgICAgIDIgfCAgICAyMAorIFVQRCB8ICAgIDIwIHwgICAgNDAKKygzIHJvd3MpCisKK0RS T1AgUlVMRSBndGVzdF9ydWxlX3VwZCBPTiBndGVzdF9ydWxlOworRFJPUCBSVUxFIGd0ZXN0X3J1 bGVfaW5zIE9OIGd0ZXN0X3J1bGU7CitEUk9QIFRBQkxFIGd0ZXN0X3J1bGVfbG9nOworLS0gcnVs ZSBxdWFscyByZWZlcnJpbmcgdG8gZ2VuZXJhdGVkIGNvbHVtbnM6CistLSBORVcuYiBpbiB0aGUg cnVsZSBxdWFsIHNob3VsZCByZWZsZWN0IHRoZSBnZW5lcmF0ZWQgY29sdW1uJ3MgbmV3IHZhbHVl CitDUkVBVEUgUlVMRSBndGVzdF9ydWxlX3F1YWwgQVMgT04gVVBEQVRFIFRPIGd0ZXN0X3J1bGUg V0hFUkUgTkVXLmIgPiAxMDAKKyAgRE8gSU5TVEVBRCBOT1RISU5HOworVVBEQVRFIGd0ZXN0X3J1 bGUgU0VUIGEgPSAxMDA7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X3J1bGU7CisgYSAgfCBiICAKKy0t LS0rLS0tLQorIDIwIHwgNDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBndGVzdF9ydWxlOwogLS0g c2FuaXR5IGNoZWNrIG9mIHN5c3RlbSBjYXRhbG9nCiBTRUxFQ1QgYXR0cmVsaWQsIGF0dG5hbWUs IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRnZW5lcmF0ZWQgTk9UIElO ICgnJywgJ3MnLCAndicpOwogIGF0dHJlbGlkIHwgYXR0bmFtZSB8IGF0dGdlbmVyYXRlZCAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF9zdG9yZWQuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3N0b3JlZC5zcWwKaW5kZXggMTA2NDgzOWRjZDIu LjY3NDZjZDQ2MzJiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRf c3RvcmVkLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfc3RvcmVkLnNx bApAQCAtODAxLDYgKzgwMSwyOSBAQCBDUkVBVEUgVEFCTEUgZ3Rlc3QyOGIgKExJS0UgZ3Rlc3Qy OGEgSU5DTFVESU5HIEdFTkVSQVRFRCk7CiAKIFxkIGd0ZXN0MjgqCiAKKy0tIHJ1bGUgYWN0aW9u cyByZWZlcnJpbmcgdG8gZ2VuZXJhdGVkIGNvbHVtbnM6CistLSBORVcuYiBpbiBhIHJ1bGUgYWN0 aW9uIHNob3VsZCByZWZsZWN0IHRoZSBnZW5lcmF0ZWQgY29sdW1uJ3MgbmV3IHZhbHVlCitDUkVB VEUgVEFCTEUgZ3Rlc3RfcnVsZSAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEg KiAyKSBTVE9SRUQpOworQ1JFQVRFIFRBQkxFIGd0ZXN0X3J1bGVfbG9nIChvcCB0ZXh0LCBvbGRf YiBpbnQsIG5ld19iIGludCk7CitDUkVBVEUgUlVMRSBndGVzdF9ydWxlX3VwZCBBUyBPTiBVUERB VEUgVE8gZ3Rlc3RfcnVsZQorICBETyBBTFNPIElOU0VSVCBJTlRPIGd0ZXN0X3J1bGVfbG9nIFZB TFVFUyAoJ1VQRCcsIE9MRC5iLCBORVcuYik7CitDUkVBVEUgUlVMRSBndGVzdF9ydWxlX2lucyBB UyBPTiBJTlNFUlQgVE8gZ3Rlc3RfcnVsZQorICBETyBBTFNPIElOU0VSVCBJTlRPIGd0ZXN0X3J1 bGVfbG9nIFZBTFVFUyAoJ0lOUycsIE5VTEwsIE5FVy5iKTsKK0lOU0VSVCBJTlRPIGd0ZXN0X3J1 bGUgKGEpIFZBTFVFUyAoMSk7CitVUERBVEUgZ3Rlc3RfcnVsZSBTRVQgYSA9IDEwOworVVBEQVRF IGd0ZXN0X3J1bGUgU0VUIGEgPSAoU0VMRUNUIG1heChiKSBGUk9NIGd0ZXN0X3J1bGUpOworU0VM RUNUICogRlJPTSBndGVzdF9ydWxlX2xvZzsKK0RST1AgUlVMRSBndGVzdF9ydWxlX3VwZCBPTiBn dGVzdF9ydWxlOworRFJPUCBSVUxFIGd0ZXN0X3J1bGVfaW5zIE9OIGd0ZXN0X3J1bGU7CitEUk9Q IFRBQkxFIGd0ZXN0X3J1bGVfbG9nOworCistLSBydWxlIHF1YWxzIHJlZmVycmluZyB0byBnZW5l cmF0ZWQgY29sdW1uczoKKy0tIE5FVy5iIGluIHRoZSBydWxlIHF1YWwgc2hvdWxkIHJlZmxlY3Qg dGhlIGdlbmVyYXRlZCBjb2x1bW4ncyBuZXcgdmFsdWUKK0NSRUFURSBSVUxFIGd0ZXN0X3J1bGVf cXVhbCBBUyBPTiBVUERBVEUgVE8gZ3Rlc3RfcnVsZSBXSEVSRSBORVcuYiA+IDEwMAorICBETyBJ TlNURUFEIE5PVEhJTkc7CitVUERBVEUgZ3Rlc3RfcnVsZSBTRVQgYSA9IDEwMDsKK1NFTEVDVCAq IEZST00gZ3Rlc3RfcnVsZTsKK0RST1AgVEFCTEUgZ3Rlc3RfcnVsZTsKIAogLS0gc2FuaXR5IGNo ZWNrIG9mIHN5c3RlbSBjYXRhbG9nCiBTRUxFQ1QgYXR0cmVsaWQsIGF0dG5hbWUsIGF0dGdlbmVy YXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRnZW5lcmF0ZWQgTk9UIElOICgnJywgJ3Mn LCAndicpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1 YWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCmluZGV4 IDliMzI0MTNlM2E5Li4xYmFjNTFlYTczMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVy YXRlZF92aXJ0dWFsLnNxbApAQCAtODE0LDYgKzgxNCwyOSBAQCBDUkVBVEUgVEFCTEUgZ3Rlc3Qy OGIgKExJS0UgZ3Rlc3QyOGEgSU5DTFVESU5HIEdFTkVSQVRFRCk7CiAKIFxkIGd0ZXN0MjgqCiAK Ky0tIHJ1bGUgYWN0aW9ucyByZWZlcnJpbmcgdG8gZ2VuZXJhdGVkIGNvbHVtbnM6CistLSBORVcu YiBpbiBhIHJ1bGUgYWN0aW9uIHNob3VsZCByZWZsZWN0IHRoZSBnZW5lcmF0ZWQgY29sdW1uJ3Mg bmV3IHZhbHVlCitDUkVBVEUgVEFCTEUgZ3Rlc3RfcnVsZSAoYSBpbnQsIGIgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKGEgKiAyKSBWSVJUVUFMKTsKK0NSRUFURSBUQUJMRSBndGVzdF9ydWxlX2xv ZyAob3AgdGV4dCwgb2xkX2IgaW50LCBuZXdfYiBpbnQpOworQ1JFQVRFIFJVTEUgZ3Rlc3RfcnVs ZV91cGQgQVMgT04gVVBEQVRFIFRPIGd0ZXN0X3J1bGUKKyAgRE8gQUxTTyBJTlNFUlQgSU5UTyBn dGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdVUEQnLCBPTEQuYiwgTkVXLmIpOworQ1JFQVRFIFJVTEUg Z3Rlc3RfcnVsZV9pbnMgQVMgT04gSU5TRVJUIFRPIGd0ZXN0X3J1bGUKKyAgRE8gQUxTTyBJTlNF UlQgSU5UTyBndGVzdF9ydWxlX2xvZyBWQUxVRVMgKCdJTlMnLCBOVUxMLCBORVcuYik7CitJTlNF UlQgSU5UTyBndGVzdF9ydWxlIChhKSBWQUxVRVMgKDEpOworVVBEQVRFIGd0ZXN0X3J1bGUgU0VU IGEgPSAxMDsKK1VQREFURSBndGVzdF9ydWxlIFNFVCBhID0gKFNFTEVDVCBtYXgoYikgRlJPTSBn dGVzdF9ydWxlKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcnVsZV9sb2c7CitEUk9QIFJVTEUgZ3Rl c3RfcnVsZV91cGQgT04gZ3Rlc3RfcnVsZTsKK0RST1AgUlVMRSBndGVzdF9ydWxlX2lucyBPTiBn dGVzdF9ydWxlOworRFJPUCBUQUJMRSBndGVzdF9ydWxlX2xvZzsKKworLS0gcnVsZSBxdWFscyBy ZWZlcnJpbmcgdG8gZ2VuZXJhdGVkIGNvbHVtbnM6CistLSBORVcuYiBpbiB0aGUgcnVsZSBxdWFs IHNob3VsZCByZWZsZWN0IHRoZSBnZW5lcmF0ZWQgY29sdW1uJ3MgbmV3IHZhbHVlCitDUkVBVEUg UlVMRSBndGVzdF9ydWxlX3F1YWwgQVMgT04gVVBEQVRFIFRPIGd0ZXN0X3J1bGUgV0hFUkUgTkVX LmIgPiAxMDAKKyAgRE8gSU5TVEVBRCBOT1RISU5HOworVVBEQVRFIGd0ZXN0X3J1bGUgU0VUIGEg PSAxMDA7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X3J1bGU7CitEUk9QIFRBQkxFIGd0ZXN0X3J1bGU7 CiAKIC0tIHNhbml0eSBjaGVjayBvZiBzeXN0ZW0gY2F0YWxvZwogU0VMRUNUIGF0dHJlbGlkLCBh dHRuYW1lLCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0Z2VuZXJhdGVk IE5PVCBJTiAoJycsICdzJywgJ3YnKTsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000096e373064fdf4168--