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 1v0vjR-002UNo-Ji for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Sep 2025 05:38:30 +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 1v0vjO-003pSZ-Af for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Sep 2025 05:38:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v0vjN-003pSQ-Tb for pgsql-hackers@lists.postgresql.org; Tue, 23 Sep 2025 05:38:26 +0000 Received: from mail-vs1-xe36.google.com ([2607:f8b0:4864:20::e36]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v0vjJ-002Jp4-1J for pgsql-hackers@postgresql.org; Tue, 23 Sep 2025 05:38:25 +0000 Received: by mail-vs1-xe36.google.com with SMTP id ada2fe7eead31-55716f2d3b9so4057657137.1 for ; Mon, 22 Sep 2025 22:38:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758605901; x=1759210701; 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=kGb/rziqEp2Sgnacce7RPn+85MWpuyHdNuJy9wRpSeU=; b=d62VXEfLzhEXXTs96HONaNaah52MGTKlSgCVV6FMCgpRoQCGradnAoM26SMW8gfh21 amrui1Zmsw224FR7DUpuMlufzi3kE7eDuWRHv11L1RDFp2AyPrjvtwGZyfkJs1CmaweV SuS0jNHUchhPenNxwHvHg9YGg1SQsPzjOxn5WAHB7ieGJZTczoFFlwDysKZtg2jQBjMc hz8GN6ljQ3R3pxirMTSomz7l+XpF5TR1OVQtgbV38xMs5l3ml5i+9c/LlGRAkAVp24ZJ iwFpB2AGZjWcsWVgPSQ3anFEL8aQf/9WhNdDljk7jlODa6pntR1xsUXj8V8lMSyAxc7z iU+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758605901; x=1759210701; 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=kGb/rziqEp2Sgnacce7RPn+85MWpuyHdNuJy9wRpSeU=; b=OH1om3viRaWwTWD/8tVJRujPKE+RiThXUIYo7WwwrKOabsno0523xvthQlFkvf4iM1 RtndQRBR6hWQRQWYIWEIKH1uI7g0Ktt3xV0KZ8Xm+zpO6+Ep7vxbNpClm2y51K6LHmM+ /RS7EKla//9NZhGhAL5y88LtSdrpvGuldQe0mldXo79OZyGSifzKkAKpjFlR7RPljmBp hcpnmJtdD8aRb1mB7uDPlIXV99qW6bCgrjY6IFc6XyyVNAzP7KP3y+Zf2d5Wpr5oxSfu Kl//VIf396tEw/ECNI4qIKj8ePBUJ1Gn+CkfXDcwoHtjdeYkX2zmhYlJ/fGH1sL/+9Ms /aag== X-Gm-Message-State: AOJu0YwQJz6KYvNRJCF5hxOfyxsomUose1bmRI1+5AqkCjwTACzraDkm 2K2e4k0qSwI7P2wjMqy+cURTjMn01YfkEp+qNiEKU7MXMJKSxxd5tfz+OcU/IVq/w7QUeqEQ+xv CXtJ9wFWmfWH5GRJGuo7uSF9OyWS/y67rB/blX06R7Q== X-Gm-Gg: ASbGncviY0p0TN9VhhASdfyuiVSBZgQpXZEfUmFjVBUdDjEVJpOVH/ZAvevXohNTb5l ybgRez+AlYIOzPk6GxlxMW5pQBrSAXdloyQ4nMTr6ToaQxB8UEEubeEssBVkZYZifInzDr/9fUx xm620cByjiAZ08Dd+Tytezj5jlpXKeaynLLGuZgazhJIOAn77fJR46ZdW9HStNXeDSyG5pRZaYQ QUDDiE4KZNzdVx2ofGXB/KlEJWKHoGJEe7s8jfXjefAio9dUp+YtKBFzXRf9xj6AfGrcAcl5+ch 5q4Kz8TdVOTr1QfxIQ== X-Google-Smtp-Source: AGHT+IHwgfJKPs7VGmWwJ6DCumMPEudFjZQPqGXMVuwrOVcTOwHlG3Uj1z0oeGkoqb1ZozJJbVWsDsOM8jZNebvXbIg= X-Received: by 2002:a05:6102:5812:b0:520:c4ea:4bcd with SMTP id ada2fe7eead31-5a57e47c313mr470030137.9.1758605900706; Mon, 22 Sep 2025 22:38:20 -0700 (PDT) MIME-Version: 1.0 References: <2B70C6CA-606B-438C-8EF2-84DCBA1C0813@gmail.com> In-Reply-To: From: jian he Date: Tue, 23 Sep 2025 13:37:44 +0800 X-Gm-Features: AS18NWCfY6Ae08-oEMKSYUKZej3jqxsVjvMnENvO-sOksMCCRwXqxqw8lKtxvks Message-ID: Subject: Re: let ALTER TABLE DROP COLUMN drop whole-row referenced object To: Chao Li Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000031d5f063f7158b9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000031d5f063f7158b9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Sep 15, 2025 at 8:40=E2=80=AFPM jian he wrote: > > Summary of attached v4: > v4-0001: Handles ALTER TABLE DROP COLUMN when whole-row Vars are > referenced in check constraints and indexes. > > v4-0002: Handles ALTER TABLE ALTER COLUMN SET DATA TYPE when whole-row > Vars are referenced in check constraints and indexes. > > v4-0003: Handle ALTER TABLE ALTER COLUMN SET DATA TYPE and ALTER TABLE DR= OP > COLUMN when policy objects reference whole-row Vars. Policy quals and ch= eck > quals may contain whole-row Vars and can include sublinks (unplanned > subqueries), pull_varattnos is not enough to locate whole-row Var. Instea= d, > obtain the whole-row type OID and recursively check each Var in expressio= n node > to see if its vartype matches the whole-row type OID. in v4, I use + TupleConstr *constr =3D RelationGetDescr(rel)->constr; + + if (constr && constr->num_check > 0) +{ + systable_beginscan +} to check if a relation's check constraint expression contains a whole-row o= r not. however this will have multiple systable_beginscan if multiple check constraints contain wholerow expr. I changed it to systable_beginscan pg_constraint once and check if the scan returned pg_constraint tuple meets our condition or not. and some minor adjustments to regression tests. --000000000000031d5f063f7158b9 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0001-ALTER-TABLE-DROP-COLUMN-drop-wholerow-referenced-object.patch" Content-Disposition: attachment; filename="v5-0001-ALTER-TABLE-DROP-COLUMN-drop-wholerow-referenced-object.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfw4i9mb2 RnJvbSBlYTVmNzMxZGJkMWMzMDlhOWE1YTVkMzExOWJkNTU0ZTU5YjJhMmVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjMgU2VwIDIwMjUgMTM6MzE6MDMgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 IDEvM10gQUxURVIgVEFCTEUgRFJPUCBDT0xVTU4gZHJvcCB3aG9sZXJvdyByZWZlcmVuY2VkCiBv YmplY3QKCkNSRUFURSBUQUJMRSB0cyAoYSBpbnQsIGMgaW50LCBiIGludCBjb25zdHJhaW50IGNj IGNoZWNrKCh0cyA9IFJPVygxLDEsMSkpKSk7CkNSRUFURSBJTkRFWCB0c2kzIG9uIHRzICgodHMg aXMgbnVsbCkpOwpDUkVBVEUgSU5ERVggdHNpNCBvbiB0cyAoYikgd2hlcmUgdHMgaXMgbm90IG51 bGw7CgpBTFRFUiBUQUJMRSB0cyBEUk9QIENPTFVNTiBhIENBU0NBREU7CndpbGwgZHJvcCBhYm92 ZSBhbGwgaW5kZXhlcywgY29uc3RyYWludHMgb24gdGhlIHRhYmxlIHRzLgoKbm93ClxkIHRzCiAg ICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50cyIKIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQKLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCiBjICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfAogYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKCmRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEdBNktWUXk3RGJIR0xWdzlzOUtLbXBH eVp0NU1FNkM3a0VmakRwcjJ3WkN3QG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAxNzYgKysrKysrKysrKysrKysrKysrKysrLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgfCAgMTUgKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgIHwgIDEzICsrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwgICAgICB8ICAxMSArKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvaW5kZXhpbmcuc3FsICAgICAgICAgfCAgIDggKwogNSBmaWxlcyBjaGFuZ2VkLCAyMjAg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDNiZTJlMDUxZDMyLi5hM2QxZmU2NThjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK QEAgLTc0MCw2ICs3NDAsNyBAQCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3JlaWduS2V5UmVm cyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWln bktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNv bXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29tcHJlc3Npb24pOwogc3RhdGlj IGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3Jh Z2Vtb2RlKTsKK3N0YXRpYyB2b2lkIHJlY29yZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihS ZWxhdGlvbiByZWwsIGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBlcnJvcl9vdXQp OwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTkzMzMsNiArOTMzNCwyNiBAQCBBVEV4ZWNEcm9wQ29sdW1u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAogCVJl bGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAKKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRp b25JZDsKKwlvYmplY3Qub2JqZWN0SWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CisJb2JqZWN0 Lm9iamVjdFN1YklkID0gYXR0bnVtOworCisJLyoKKwkgKiBBTFRFUiBUQUJMRSBEUk9QIENPTFVN TiBtdXN0IGFsc28gcmVtb3ZlIGluZGV4ZXMgb3IgY29uc3RyYWludHMgdGhhdAorCSAqIGNvbnRh aW4gd2hvbGUtcm93IFZhciByZWZlcmVuY2UgZXhwcmVzc2lvbnMuIFNpbmNlIHRoZXJlIGlzIG5v IGRpcmVjdAorCSAqIGRlcGVuZGVuY3kgcmVjb3JkZWQgYmV0d2VlbiB3aG9sZS1yb3cgVmFycyBh bmQgaW5kaXZpZHVhbCBjb2x1bW5zLCBhbmQKKwkgKiBjcmVhdGluZyBzdWNoIGRlcGVuZGVuY2ll cyB3b3VsZCBjYXVzZSBjYXRhbG9nIGJsb2F0IChzZWUKKwkgKiBmaW5kX2V4cHJfcmVmZXJlbmNl c193YWxrZXIpLgorCSAqCisJICogSGVyZSB3ZSBoYW5kbGUgdGhpcyBleHBsaWNpdGx5LiBXZSBj YWxsIHJlY29yZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcgorCSAqIHRvIGVzdGFibGlzaCBh IGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgY29sdW1uIGFuZCBhbnkgY29uc3RyYWludCBvciBpbmRl eAorCSAqIGludm9sdmluZyB3aG9sZS1yb3cgVmFycy4gIHBlcmZvcm1NdWx0aXBsZURlbGV0aW9u cyB3aWxsIHRoZW4gdGFrZSBjYXJlCisJICogb2YgcmVtb3ZpbmcgdGhlbS4KKwkqLworCXJlY29y ZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihyZWwsICZvYmplY3QsIGZhbHNlKTsKKworCUNv bW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKIAkvKgogCSAqIFByb3BhZ2F0ZSB0byBjaGlsZHJl biBhcyBhcHByb3ByaWF0ZS4gIFVubGlrZSBtb3N0IG90aGVyIEFMVEVSCiAJICogcm91dGluZXMs IHdlIGhhdmUgdG8gZG8gdGhpcyBvbmUgbGV2ZWwgb2YgcmVjdXJzaW9uIGF0IGEgdGltZTsgd2Ug Y2FuJ3QKQEAgLTk0MjYsOSArOTQ0Nyw2IEBAIEFURXhlY0Ryb3BDb2x1bW4oTGlzdCAqKndxdWV1 ZSwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCX0KIAogCS8qIEFkZCBvYmpl Y3QgdG8gZGVsZXRlICovCi0Jb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7Ci0J b2JqZWN0Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwotCW9iamVjdC5vYmplY3RT dWJJZCA9IGF0dG51bTsKIAlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgYWRkcnMp OwogCiAJaWYgKCFyZWN1cnNpbmcpCkBAIC0yMjA2MiwzICsyMjA4MCwxNTUgQEAgR2V0QXR0cmli dXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKQogCiAJcmV0 dXJuIGNzdG9yYWdlOwogfQorCisvKgorICogUmVjb3JkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHdo b2xlLXJvdyBvYmplY3RzIChpbmRleGVzLCBDSEVDSyBjb25zdHJhaW50cykKKyAqIGFzc29jaWF0 ZWQgd2l0aCByZWxhdGlvbiBhbmQgcmVsYXRpb24ncyBPYmplY3RBZGRyZXNzLgorICoKKyAqIGVy cm9yX291dCBtZWFucyBjYW4gbm90IGluc3RhbGwgc3VjaCBkZXBlbmRlbmN5LCB3ZSBoYXZlIHRv IGVycm9yIG91dCBleHBsaWNpdGx5LgorICovCitzdGF0aWMgdm9pZAorcmVjb3JkV2hvbGVSb3dE ZXBlbmRlbmN5T25PckVycm9yKFJlbGF0aW9uIHJlbCwgY29uc3QgT2JqZWN0QWRkcmVzcyAqb2Jq ZWN0LCBib29sIGVycm9yX291dCkKK3sKKwlOb2RlCSAgICpleHByOworCUxpc3QJICAgKmluZGV4 bGlzdCA9IE5JTDsKKwlPYmplY3RBZGRyZXNzIGlkeF9vYmo7CisJYm9vbAkJZmluZF93aG9sZXJv dyA9IGZhbHNlOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJVHVwbGVDb25zdHIgKmNvbnN0ciA9 IFJlbGF0aW9uR2V0RGVzY3IocmVsKS0+Y29uc3RyOworCisJLyogY2hlY2sgQ0hFQ0sgY29uc3Ry YWludHMgY29udGFpbiB3aG9sZS1yb3cgcmVmZXJlbmNlcyBvciBub3QgKi8KKwlpZiAoY29uc3Ry ICYmIGNvbnN0ci0+bnVtX2NoZWNrID4gMCkKKwl7CisJCVJlbGF0aW9uCXBnX2NvbnN0cmFpbnQ7 CisJCVN5c1NjYW5EZXNjIGNvbnNjYW47CisJCUhlYXBUdXBsZQlodHVwOworCQlPYmplY3RBZGRy ZXNzIGNvbl9vYmo7CisKKwkJcGdfY29uc3RyYWludCA9IHRhYmxlX29wZW4oQ29uc3RyYWludFJl bGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJLyogU2VhcmNoIHBnX2NvbnN0cmFpbnQg Zm9yIHJlbGV2YW50IGVudHJpZXMgKi8KKwkJU2NhbktleUluaXQoJnNrZXlbMF0sCisJCQkJCUFu dW1fcGdfY29uc3RyYWludF9jb25yZWxpZCwKKwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X09JREVRLAorCQkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOwor CisJCWNvbnNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfY29uc3RyYWludCwgQ29uc3RyYWlu dFJlbGlkVHlwaWROYW1lSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkJCSBOVUxMLCAxLCBza2V5KTsK KwkJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQoaHR1cCA9IHN5c3RhYmxlX2dldG5leHQoY29uc2Nh bikpKQorCQl7CisJCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uZm9ybSA9IChGb3JtX3BnX2NvbnN0 cmFpbnQpIEdFVFNUUlVDVChodHVwKTsKKwkJCURhdHVtCQl2YWw7CisJCQlib29sCQlpc251bGw7 CisJCQlCaXRtYXBzZXQgICpleHByX2F0dHJzID0gTlVMTDsKKworCQkJaWYgKGNvbmZvcm0tPmNv bnR5cGUgIT0gQ09OU1RSQUlOVF9DSEVDSykKKwkJCQljb250aW51ZTsKKworCQkJLyogR3JhYiBh bmQgdGVzdCBjb25iaW4gaXMgYWN0dWFsbHkgc2V0ICovCisJCQl2YWwgPSBmYXN0Z2V0YXR0ciho dHVwLAorCQkJCQkJCSAgQW51bV9wZ19jb25zdHJhaW50X2NvbmJpbiwKKwkJCQkJCQkgIFJlbGF0 aW9uR2V0RGVzY3IocGdfY29uc3RyYWludCksICZpc251bGwpOworCQkJaWYgKGlzbnVsbCkKKwkJ CQllbG9nKFdBUk5JTkcsICJudWxsIGNvbmJpbiBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJ IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCQkJZWxzZQorCQkJeworCQkJCWNoYXIJ ICAgKnMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbCk7CisKKwkJCQlleHByID0gc3RyaW5nVG9O b2RlKHMpOworCQkJCXBmcmVlKHMpOworCisJCQkJLyogRmluZCBhbGwgYXR0cmlidXRlcyByZWZl cmVuY2VkICovCisJCQkJcHVsbF92YXJhdHRub3MoZXhwciwgMSwgJmV4cHJfYXR0cnMpOworCisJ CQkJZmluZF93aG9sZXJvdyA9IGJtc19pc19tZW1iZXIoMCAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJCQkJCWV4cHJfYXR0cnMpOworCQkJCWlmIChmaW5kX3do b2xlcm93ICYmICFlcnJvcl9vdXQpCisJCQkJeworCQkJCQljb25fb2JqLmNsYXNzSWQgPSBDb25z dHJhaW50UmVsYXRpb25JZDsKKwkJCQkJY29uX29iai5vYmplY3RJZCA9IGNvbmZvcm0tPm9pZDsK KwkJCQkJY29uX29iai5vYmplY3RTdWJJZCA9IDA7CisKKwkJCQkJLyogcmVjb3JkIGRlcGVuZGVu Y3kgZm9yIGNvbnN0cmFpbnRzIHRoYXQgcmVmZXJlbmNlcyB3aG9sZS1yb3cgKi8KKwkJCQkJcmVj b3JkRGVwZW5kZW5jeU9uKCZjb25fb2JqLCBvYmplY3QsIERFUEVOREVOQ1lfQVVUTyk7CisJCQkJ fQorCQkJfQorCQl9CisJCXN5c3RhYmxlX2VuZHNjYW4oY29uc2Nhbik7CisJCXRhYmxlX2Nsb3Nl KHBnX2NvbnN0cmFpbnQsIEFjY2Vzc1NoYXJlTG9jayk7CisJfQorCisJLyogY2hlY2sgaW5kZXhl cyBjb250YWluIHdob2xlLXJvdyByZWZlcmVuY2VzIG9yIG5vdCAqLworCWZpbmRfd2hvbGVyb3cg PSBmYWxzZTsKKwlpbmRleGxpc3QgPSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWwpOworCWZvcmVh Y2hfb2lkKGluZGV4b2lkLCBpbmRleGxpc3QpCisJeworCQlIZWFwVHVwbGUJaW5kZXhUdXBsZTsK KwkJRm9ybV9wZ19pbmRleCBpbmRleFN0cnVjdDsKKwkJTm9kZQkgICAqbm9kZTsKKworCQlpbmRl eFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0oaW5k ZXhvaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZGV4VHVwbGUpKQorCQkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgaW5kZXhvaWQpOworCQlp bmRleFN0cnVjdCA9IChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QoaW5kZXhUdXBsZSk7CisKKwkJ aWYgKCFoZWFwX2F0dGlzbnVsbChpbmRleFR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBO VUxMKSkKKwkJeworCQkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJCWNoYXIJICAgKmV4cHJTdHJpbmc7 CisJCQlCaXRtYXBzZXQgICpleHByX2F0dHJzID0gTlVMTDsKKworCQkJLyogQ29udmVydCB0ZXh0 IHN0cmluZyB0byBub2RlIHRyZWUgKi8KKwkJCWV4cHJEYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5v dE51bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRl eF9pbmRleHBycyk7CisJCQlleHByU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByRGF0 dW0pOworCQkJbm9kZSA9IChOb2RlICopIHN0cmluZ1RvTm9kZShleHByU3RyaW5nKTsKKwkJCXBm cmVlKGV4cHJTdHJpbmcpOworCisJCQlwdWxsX3ZhcmF0dG5vcyhub2RlLCAxLCAmZXhwcl9hdHRy cyk7CisKKwkJCWZpbmRfd2hvbGVyb3cgPSBibXNfaXNfbWVtYmVyKDAgLSBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJCQkJCSAgZXhwcl9hdHRycyk7CisJCQlpZiAo ZmluZF93aG9sZXJvdyAmJiAhZXJyb3Jfb3V0KQorCQkJeworCQkJCWlkeF9vYmouY2xhc3NJZCA9 IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlpZHhfb2JqLm9iamVjdElkID0gaW5kZXhTdHJ1Y3Qt PmluZGV4cmVsaWQ7CisJCQkJaWR4X29iai5vYmplY3RTdWJJZCA9IDA7CisJCQkJLyogcmVjb3Jk IGRlcGVuZGVuY3kgZm9yIGluZGV4ZXMgdGhhdCByZWZlcmVuY2VzIHdob2xlLXJvdyAqLworCQkJ CXJlY29yZERlcGVuZGVuY3lPbigmaWR4X29iaiwgb2JqZWN0LCBERVBFTkRFTkNZX0FVVE8pOwor CisJCQkJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOworCQkJCWNvbnRpbnVlOworCQkJfQor CQl9CisKKwkJaWYgKCFoZWFwX2F0dGlzbnVsbChpbmRleFR1cGxlLCBBbnVtX3BnX2luZGV4X2lu ZHByZWQsIE5VTEwpKQorCQl7CisJCQlEYXR1bQkJcHJlZERhdHVtOworCQkJY2hhcgkgICAqcHJl ZFN0cmluZzsKKwkJCUJpdG1hcHNldCAgKmV4cHJfYXR0cnMgPSBOVUxMOworCisJCQkvKiBDb252 ZXJ0IHRleHQgc3RyaW5nIHRvIG5vZGUgdHJlZSAqLworCQkJcHJlZERhdHVtID0gU3lzQ2FjaGVH ZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCQkgICBBbnVt X3BnX2luZGV4X2luZHByZWQpOworCQkJcHJlZFN0cmluZyA9IFRleHREYXR1bUdldENTdHJpbmco cHJlZERhdHVtKTsKKwkJCW5vZGUgPSAoTm9kZSAqKSBzdHJpbmdUb05vZGUocHJlZFN0cmluZyk7 CisJCQlwZnJlZShwcmVkU3RyaW5nKTsKKworCQkJcHVsbF92YXJhdHRub3Mobm9kZSwgMSwgJmV4 cHJfYXR0cnMpOworCQkJZmluZF93aG9sZXJvdyA9IGJtc19pc19tZW1iZXIoMCAtIEZpcnN0TG93 SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJCQkJICBleHByX2F0dHJzKTsKKwkJ CWlmIChmaW5kX3dob2xlcm93ICYmICFlcnJvcl9vdXQpCisJCQl7CisJCQkJaWR4X29iai5jbGFz c0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQkJCWlkeF9vYmoub2JqZWN0SWQgPSBpbmRleFN0 cnVjdC0+aW5kZXhyZWxpZDsKKwkJCQlpZHhfb2JqLm9iamVjdFN1YklkID0gMDsKKworCQkJCS8q IHJlY29yZCBkZXBlbmRlbmN5IGZvciBpbmRleGVzIHRoYXQgcmVmZXJlbmNlcyB3aG9sZS1yb3cg Ki8KKwkJCQlyZWNvcmREZXBlbmRlbmN5T24oJmlkeF9vYmosIG9iamVjdCwgREVQRU5ERU5DWV9B VVRPKTsKKwkJCX0KKwkJfQorCQlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CisJfQorfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dAppbmRleCAzNTkwZDMyNzRm MC4uZDY4ZjVhMTNlNDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29u c3RyYWludHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMu b3V0CkBAIC0yNTQsNiArMjU0LDIxIEBAIEVSUk9SOiAgc3lzdGVtIGNvbHVtbiAiY3RpZCIgcmVm ZXJlbmNlIGluIGNoZWNrIGNvbnN0cmFpbnQgaXMgaW52YWxpZAogTElORSAzOiAgICAgICBDSEVD SyAoTk9UIChpc19jYXBpdGFsIEFORCBjdGlkOjp0ZXh0ID0gJ3N5c19jb2xfY2hlY2suLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0KKy0tIERyb3AgY29s dW1uIGFsc28gZHJvcCBjaGVjayBjb25zdHJhaW50cyB0aGF0IGhhdmUgd2hvbGUtcm93IHJlZmVy ZW5jZQorLS0KK0NSRUFURSBUQUJMRSBEUk9QX0NPTF9DSEVDS19UQkwgKAorICAgIGNpdHkgVEVY VCwgc3RhdGUgVEVYVCwKKyAgICBDT05TVFJBSU5UIGNjMCBDSEVDSyAoRFJPUF9DT0xfQ0hFQ0tf VEJMIGlzIG51bGwpIE5PVCBFTkZPUkNFRCwKKyAgICBDT05TVFJBSU5UIGNjMSBDSEVDSyAoRFJP UF9DT0xfQ0hFQ0tfVEJMIGlzIG5vdCBudWxsKSBOT1QgRU5GT1JDRUQpOworQUxURVIgVEFCTEUg RFJPUF9DT0xfQ0hFQ0tfVEJMIERST1AgQ09MVU1OIGNpdHk7CitcZCBEUk9QX0NPTF9DSEVDS19U QkwKKyAgICAgICBUYWJsZSAicHVibGljLmRyb3BfY29sX2NoZWNrX3RibCIKKyBDb2x1bW4gfCBU eXBlIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgc3RhdGUgIHwgdGV4dCB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisKK0RST1AgVEFCTEUgRFJPUF9DT0xfQ0hFQ0tfVEJMOworLS0KIC0t IENoZWNrIGluaGVyaXRhbmNlIG9mIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cwogLS0KIENSRUFU RSBUQUJMRSBJTlNFUlRfQ0hJTEQgKGN4IElOVCBkZWZhdWx0IDQyLApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2luZGV4aW5nLm91dAppbmRleCA0ZDI5ZmI4NTI5My4uNDA1MTJhODg1M2EgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CkBAIC02NTQsNiArNjU0LDE5IEBAIGFs dGVyIHRhYmxlIGlkeHBhcnQyIGRyb3AgY29sdW1uIGM7CiAgYiAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCiAKIGRyb3AgdGFibGUgaWR4cGFydCwgaWR4cGFydDI7Citj cmVhdGUgdGFibGUgaWR4cGFydCAoYSBpbnQsIGIgaW50LCBjIGludCk7CitjcmVhdGUgaW5kZXgg b24gaWR4cGFydChjKTsKK2NyZWF0ZSBpbmRleCBpZHhwYXJ0X2lkeDEgb24gaWR4cGFydCgoaWR4 cGFydCBpcyBub3QgbnVsbCkpOworY3JlYXRlIGluZGV4IGlkeHBhcnRfaWR4MiBvbiBpZHhwYXJ0 KGEpIHdoZXJlIGlkeHBhcnQgaXMgbm90IG51bGw7CithbHRlciB0YWJsZSBpZHhwYXJ0IGRyb3Ag Y29sdW1uIGM7CitcZCBpZHhwYXJ0CisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMuaWR4cGFy dCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAor LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisKK2Ryb3AgdGFibGUgaWR4cGFydDsKIC0tIFZl cmlmeSB0aGF0IGV4cHJlc3Npb24gaW5kZXhlcyBpbmhlcml0IGNvcnJlY3RseQogY3JlYXRlIHRh YmxlIGlkeHBhcnQgKGEgaW50LCBiIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhKTsKIGNyZWF0 ZSB0YWJsZSBpZHhwYXJ0MSAobGlrZSBpZHhwYXJ0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFp bnRzLnNxbAppbmRleCAxZjZkYzhmZDY5Zi4uMzRkZTViM2ZkODkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb25zdHJhaW50cy5zcWwKQEAgLTE2NSw2ICsxNjUsMTcgQEAgQ1JFQVRFIFRBQkxFIFNZU19D T0xfQ0hFQ0tfVEJMIChjaXR5IHRleHQsIHN0YXRlIHRleHQsIGlzX2NhcGl0YWwgYm9vbCwKICAg ICAgICAgICAgICAgICAgIGFsdGl0dWRlIGludCwKIAkJCQkgIENIRUNLIChOT1QgKGlzX2NhcGl0 YWwgQU5EIGN0aWQ6OnRleHQgPSAnc3lzX2NvbF9jaGVja190YmwnKSkpOwogCistLQorLS0gRHJv cCBjb2x1bW4gYWxzbyBkcm9wIGNoZWNrIGNvbnN0cmFpbnRzIHRoYXQgaGF2ZSB3aG9sZS1yb3cg cmVmZXJlbmNlCistLQorQ1JFQVRFIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCAoCisgICAgY2l0 eSBURVhULCBzdGF0ZSBURVhULAorICAgIENPTlNUUkFJTlQgY2MwIENIRUNLIChEUk9QX0NPTF9D SEVDS19UQkwgaXMgbnVsbCkgTk9UIEVORk9SQ0VELAorICAgIENPTlNUUkFJTlQgY2MxIENIRUNL IChEUk9QX0NPTF9DSEVDS19UQkwgaXMgbm90IG51bGwpIE5PVCBFTkZPUkNFRCk7CitBTFRFUiBU QUJMRSBEUk9QX0NPTF9DSEVDS19UQkwgRFJPUCBDT0xVTU4gY2l0eTsKK1xkIERST1BfQ09MX0NI RUNLX1RCTAorRFJPUCBUQUJMRSBEUk9QX0NPTF9DSEVDS19UQkw7CisKIC0tCiAtLSBDaGVjayBp bmhlcml0YW5jZSBvZiBkZWZhdWx0cyBhbmQgY29uc3RyYWludHMKIC0tCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bmRleGluZy5zcWwKaW5kZXggYjVjYjAxYzJkNzAuLjk2MDQ0OTVjMGVjIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvaW5kZXhpbmcuc3FsCkBAIC0yOTUsNiArMjk1LDE0IEBAIGFsdGVyIHRhYmxlIGlkeHBhcnQy IGRyb3AgY29sdW1uIGM7CiBcZCBpZHhwYXJ0MgogZHJvcCB0YWJsZSBpZHhwYXJ0LCBpZHhwYXJ0 MjsKIAorY3JlYXRlIHRhYmxlIGlkeHBhcnQgKGEgaW50LCBiIGludCwgYyBpbnQpOworY3JlYXRl IGluZGV4IG9uIGlkeHBhcnQoYyk7CitjcmVhdGUgaW5kZXggaWR4cGFydF9pZHgxIG9uIGlkeHBh cnQoKGlkeHBhcnQgaXMgbm90IG51bGwpKTsKK2NyZWF0ZSBpbmRleCBpZHhwYXJ0X2lkeDIgb24g aWR4cGFydChhKSB3aGVyZSBpZHhwYXJ0IGlzIG5vdCBudWxsOworYWx0ZXIgdGFibGUgaWR4cGFy dCBkcm9wIGNvbHVtbiBjOworXGQgaWR4cGFydAorZHJvcCB0YWJsZSBpZHhwYXJ0OworCiAtLSBW ZXJpZnkgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgaW5oZXJpdCBjb3JyZWN0bHkKIGNyZWF0ZSB0 YWJsZSBpZHhwYXJ0IChhIGludCwgYiBpbnQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSk7CiBjcmVh dGUgdGFibGUgaWR4cGFydDEgKGxpa2UgaWR4cGFydCk7Ci0tIAoyLjM0LjEKCg== --000000000000031d5f063f7158b9 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0002-disallow-ALTER-COLUMN-SET-DATA-TYPE-when-wholerow-referenced-cons.patch" Content-Disposition: attachment; filename="v5-0002-disallow-ALTER-COLUMN-SET-DATA-TYPE-when-wholerow-referenced-cons.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfw4i9m91 RnJvbSA3NGNlMmNjYWU4MTA4MjZiYjA4MGYwMTRhNTQ2YjBiMDExYjg2MTcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjMgU2VwIDIwMjUgMTM6MzM6MzAgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 IDIvM10gZGlzYWxsb3cgQUxURVIgQ09MVU1OIFNFVCBEQVRBIFRZUEUgd2hlbiB3aG9sZXJvdwog cmVmZXJlbmNlZCBjb25zdHJhaW50IGV4aXN0cwoKQ1JFQVRFIFRBQkxFIHRzIChhIGludCwgYyBp bnQsIGIgaW50ICBjb25zdHJhaW50IGNjIGNoZWNrKCh0cyA9IFJPVygxLDEsMSkpKSk7CklOU0VS VCBJTlRPIHRzIHZhbHVlcyAoMSwxLDEpOwoKQUxURVIgVEFCTEUgdHMgQUxURVIgQ09MVU1OIGIg U0VUIERBVEEgVFlQRSBJTlQ4OwpFUlJPUjogIGNhbm5vdCBhbHRlciB0YWJsZSAidHMiIGJlY2F1 c2UgY29uc3RyYWludCAiY2MiIHVzZXMgaXRzIHJvdyB0eXBlCkhJTlQ6ICBZb3UgbWlnaHQgbmVl ZCB0byBkcm9wIGNvbnN0cmFpbnQgImNjIiBmaXJzdAoKY3JlYXRlIGluZGV4IG9uIHRzKCh0cyBp cyBub3QgbnVsbCkpOwphbHRlciB0YWJsZSB0cyBhbHRlciBjb2x1bW4gYSBzZXQgZGF0YSB0eXBl IGludDg7IC0tZXJyb3IKRVJST1I6ICBjYW5ub3QgYWx0ZXIgdGFibGUgInRzIiBiZWNhdXNlIGlu ZGV4ICJ0c19leHByX2lkeCIgdXNlcyBpdHMgcm93IHR5cGUKSElOVDogIFlvdSBtaWdodCBuZWVk IHRvIGRyb3AgaW5kZXggInRzX2V4cHJfaWR4IiBmaXJzdAoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUNKdWZ4R0E2S1ZReTdEYkhHTFZ3OXM5S0ttcEd5WnQ1TUU2QzdrRWZqRHBy MndaQ3dAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dCB8IDExICsrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9pbmRleGluZy5vdXQgICAgfCAgOSArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29uc3RyYWludHMuc3FsICAgICAgfCAxMCArKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lu ZGV4aW5nLnNxbCAgICAgICAgIHwgIDUgKysrCiA1IGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGEzZDFmZTY1OGM2Li45YmY1ZDZi YzJiNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE0NTQxLDYgKzE0NTQxLDIwIEBA IEFUUHJlcEFsdGVyQ29sdW1uVHlwZShMaXN0ICoqd3F1ZXVlLAogCQlmaW5kX2NvbXBvc2l0ZV90 eXBlX2RlcGVuZGVuY2llcyhyZWwtPnJkX3JlbC0+cmVsdHlwZSwgcmVsLCBOVUxMKTsKIAl9CiAK KwkvKgorCSAqIElmIHRoZSB0YWJsZSBoYXMgYSB3aG9sZS1yb3cgcmVmZXJlbmNlZCBDSEVDSyBj b25zdHJhaW50LCBpbmRleGVzLCB0aGVuCisJICogY2hhbmdpbmcgY29sdW1uIGRhdGEgdHlwZSBp cyBub3QgYWxsb3dlZC4KKwkqLworCWlmICh0YXJnZXR0eXBlICE9IGF0dFR1cC0+YXR0dHlwaWQg fHwgdGFyZ2V0dHlwbW9kICE9IGF0dFR1cC0+YXR0dHlwbW9kKQorCXsKKwkJT2JqZWN0QWRkcmVz cyBvYmplY3Q7CisKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9i amVjdC5vYmplY3RJZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwkJb2JqZWN0Lm9iamVjdFN1 YklkID0gYXR0bnVtOworCQlyZWNvcmRXaG9sZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IocmVsLCAm b2JqZWN0LCB0cnVlKTsKKwl9CisKIAlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCiAJLyoKQEAg LTIyMTUzLDYgKzIyMTY3LDE1IEBAIHJlY29yZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihS ZWxhdGlvbiByZWwsIGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vCiAJCQkJCS8qIHJl Y29yZCBkZXBlbmRlbmN5IGZvciBjb25zdHJhaW50cyB0aGF0IHJlZmVyZW5jZXMgd2hvbGUtcm93 ICovCiAJCQkJCXJlY29yZERlcGVuZGVuY3lPbigmY29uX29iaiwgb2JqZWN0LCBERVBFTkRFTkNZ X0FVVE8pOwogCQkJCX0KKworCQkJCWlmIChmaW5kX3dob2xlcm93ICYmIGVycm9yX291dCkKKwkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFU Q0gpLAorCQkJCQkJCWVycm1zZygiY2Fubm90IGFsdGVyIHRhYmxlIFwiJXNcIiBiZWNhdXNlIGNv bnN0cmFpbnQgXCIlc1wiIHVzZXMgaXRzIHJvdyB0eXBlIiwKKwkJCQkJCQkJICAgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJICAgTmFtZVN0cihjb25mb3JtLT5jb25uYW1l KSksCisJCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBjb25zdHJhaW50IFwi JXNcIiBmaXJzdCIsCisJCQkJCQkJCQlOYW1lU3RyKGNvbmZvcm0tPmNvbm5hbWUpKSk7CiAJCQl9 CiAJCX0KIAkJc3lzdGFibGVfZW5kc2Nhbihjb25zY2FuKTsKQEAgLTIyMjAxLDYgKzIyMjI0LDE1 IEBAIHJlY29yZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihSZWxhdGlvbiByZWwsIGNvbnN0 IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vCiAJCQkJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVw bGUpOwogCQkJCWNvbnRpbnVlOwogCQkJfQorCisJCQlpZiAoZmluZF93aG9sZXJvdyAmJiBlcnJv cl9vdXQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCisJCQkJCQllcnJtc2coImNhbm5vdCBhbHRlciB0YWJsZSBcIiVzXCIgYmVj YXVzZSBpbmRleCBcIiVzXCIgdXNlcyBpdHMgcm93IHR5cGUiLAorCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKGluZGV4U3RydWN0 LT5pbmRleHJlbGlkKSksCisJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBkcm9wIGlu ZGV4IFwiJXNcIiBmaXJzdCIsCisJCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleFN0cnVjdC0+aW5k ZXhyZWxpZCkpKTsKIAkJfQogCiAJCWlmICghaGVhcF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51 bV9wZ19pbmRleF9pbmRwcmVkLCBOVUxMKSkKQEAgLTIyMjI4LDYgKzIyMjYwLDE1IEBAIHJlY29y ZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihSZWxhdGlvbiByZWwsIGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCwgYm9vCiAJCQkJLyogcmVjb3JkIGRlcGVuZGVuY3kgZm9yIGluZGV4ZXMg dGhhdCByZWZlcmVuY2VzIHdob2xlLXJvdyAqLwogCQkJCXJlY29yZERlcGVuZGVuY3lPbigmaWR4 X29iaiwgb2JqZWN0LCBERVBFTkRFTkNZX0FVVE8pOwogCQkJfQorCisJCQlpZiAoZmluZF93aG9s ZXJvdyAmJiBlcnJvcl9vdXQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQllcnJtc2coImNhbm5vdCBhbHRlciB0YWJs ZSBcIiVzXCIgYmVjYXVzZSBpbmRleCBcIiVzXCIgdXNlcyBpdHMgcm93IHR5cGUiLAorCQkJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1l KGluZGV4U3RydWN0LT5pbmRleHJlbGlkKSksCisJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVl ZCB0byBkcm9wIGluZGV4IFwiJXNcIiBmaXJzdCIsCisJCQkJCQkJCWdldF9yZWxfbmFtZShpbmRl eFN0cnVjdC0+aW5kZXhyZWxpZCkpKTsKIAkJfQogCQlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBs ZSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50 cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dAppbmRleCBk NjhmNWExM2U0NC4uYzBmNjU5Mzk1NmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29uc3RyYWludHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29u c3RyYWludHMub3V0CkBAIC0yNjksNiArMjY5LDE3IEBAIEFMVEVSIFRBQkxFIERST1BfQ09MX0NI RUNLX1RCTCBEUk9QIENPTFVNTiBjaXR5OwogCiBEUk9QIFRBQkxFIERST1BfQ09MX0NIRUNLX1RC TDsKIC0tCistLSBDaGFuZ2UgY29sdW1uIGRhdGEgdHlwZSBzaG91bGQgZXJyb3Igb3V0IGJlY2F1 c2UgdGhlIHdob2xlLXJvdyByZWZlcmVuY2VkCistLSBjaGVjayBjb25zdHJhaW50IGlzIHN0aWxs IG5lZWQgaXQuCistLQorQ1JFQVRFIFRBQkxFIEFMVEVSX0NPTF9DSEVDS19UQkwgKAorICAgIGNp dHkgSU5ULCBzdGF0ZSBURVhULAorICAgIENPTlNUUkFJTlQgY2MxIENIRUNLIChBTFRFUl9DT0xf Q0hFQ0tfVEJMIGlzIG5vdCBudWxsKSBOT1QgRU5GT1JDRUQpOworQUxURVIgVEFCTEUgQUxURVJf Q09MX0NIRUNLX1RCTCBBTFRFUiBDT0xVTU4gY2l0eSBTRVQgREFUQSBUWVBFIGludDg7CitFUlJP UjogIGNhbm5vdCBhbHRlciB0YWJsZSAiYWx0ZXJfY29sX2NoZWNrX3RibCIgYmVjYXVzZSBjb25z dHJhaW50ICJjYzEiIHVzZXMgaXRzIHJvdyB0eXBlCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8g ZHJvcCBjb25zdHJhaW50ICJjYzEiIGZpcnN0CitEUk9QIFRBQkxFIEFMVEVSX0NPTF9DSEVDS19U Qkw7CistLQogLS0gQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRz CiAtLQogQ1JFQVRFIFRBQkxFIElOU0VSVF9DSElMRCAoY3ggSU5UIGRlZmF1bHQgNDIsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4IDQwNTEyYTg4NTNhLi40YjY4M2M2 NzlhOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKQEAgLTY2Niw2ICs2 NjYsMTUgQEAgYWx0ZXIgdGFibGUgaWR4cGFydCBkcm9wIGNvbHVtbiBjOwogIGEgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogIGIgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAogCitjcmVhdGUgaW5kZXggaWR4cGFydF9pZHgxIG9uIGlkeHBh cnQoKGlkeHBhcnQgaXMgbm90IG51bGwpKTsKK2NyZWF0ZSBpbmRleCBpZHhwYXJ0X2lkeDIgb24g aWR4cGFydChhKSB3aGVyZSBpZHhwYXJ0IGlzIG5vdCBudWxsOworYWx0ZXIgdGFibGUgaWR4cGFy dCBhbHRlciBjb2x1bW4gYSBzZXQgZGF0YSB0eXBlIGludDg7IC0tZXJyb3IKK0VSUk9SOiAgY2Fu bm90IGFsdGVyIHRhYmxlICJpZHhwYXJ0IiBiZWNhdXNlIGluZGV4ICJpZHhwYXJ0X2lkeDEiIHVz ZXMgaXRzIHJvdyB0eXBlCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBpbmRleCAiaWR4 cGFydF9pZHgxIiBmaXJzdAorZHJvcCBpbmRleCBpZHhwYXJ0X2lkeDE7CithbHRlciB0YWJsZSBp ZHhwYXJ0IGFsdGVyIGNvbHVtbiBiIHNldCBkYXRhIHR5cGUgaW50ODsgLS1lcnJvcgorRVJST1I6 ICBjYW5ub3QgYWx0ZXIgdGFibGUgImlkeHBhcnQiIGJlY2F1c2UgaW5kZXggImlkeHBhcnRfaWR4 MiIgdXNlcyBpdHMgcm93IHR5cGUKK0hJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBkcm9wIGluZGV4 ICJpZHhwYXJ0X2lkeDIiIGZpcnN0CiBkcm9wIHRhYmxlIGlkeHBhcnQ7CiAtLSBWZXJpZnkgdGhh dCBleHByZXNzaW9uIGluZGV4ZXMgaW5oZXJpdCBjb3JyZWN0bHkKIGNyZWF0ZSB0YWJsZSBpZHhw YXJ0IChhIGludCwgYiBpbnQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb25zdHJhaW50cy5zcWwKaW5kZXggMzRkZTViM2ZkODkuLjE4ZTEyMGU3Y2U2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsCkBAIC0xNzYsNiArMTc2LDE2IEBAIEFMVEVSIFRB QkxFIERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENPTFVNTiBjaXR5OwogXGQgRFJPUF9DT0xfQ0hF Q0tfVEJMCiBEUk9QIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTDsKIAorLS0KKy0tIENoYW5nZSBj b2x1bW4gZGF0YSB0eXBlIHNob3VsZCBlcnJvciBvdXQgYmVjYXVzZSB0aGUgd2hvbGUtcm93IHJl ZmVyZW5jZWQKKy0tIGNoZWNrIGNvbnN0cmFpbnQgaXMgc3RpbGwgbmVlZCBpdC4KKy0tCitDUkVB VEUgVEFCTEUgQUxURVJfQ09MX0NIRUNLX1RCTCAoCisgICAgY2l0eSBJTlQsIHN0YXRlIFRFWFQs CisgICAgQ09OU1RSQUlOVCBjYzEgQ0hFQ0sgKEFMVEVSX0NPTF9DSEVDS19UQkwgaXMgbm90IG51 bGwpIE5PVCBFTkZPUkNFRCk7CitBTFRFUiBUQUJMRSBBTFRFUl9DT0xfQ0hFQ0tfVEJMIEFMVEVS IENPTFVNTiBjaXR5IFNFVCBEQVRBIFRZUEUgaW50ODsKK0RST1AgVEFCTEUgQUxURVJfQ09MX0NI RUNLX1RCTDsKKwogLS0KIC0tIENoZWNrIGluaGVyaXRhbmNlIG9mIGRlZmF1bHRzIGFuZCBjb25z dHJhaW50cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAppbmRleCA5NjA0NDk1YzBlYy4u YjdjMDhjOWZmNWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKQEAgLTMwMSw2ICszMDEs MTEgQEAgY3JlYXRlIGluZGV4IGlkeHBhcnRfaWR4MSBvbiBpZHhwYXJ0KChpZHhwYXJ0IGlzIG5v dCBudWxsKSk7CiBjcmVhdGUgaW5kZXggaWR4cGFydF9pZHgyIG9uIGlkeHBhcnQoYSkgd2hlcmUg aWR4cGFydCBpcyBub3QgbnVsbDsKIGFsdGVyIHRhYmxlIGlkeHBhcnQgZHJvcCBjb2x1bW4gYzsK IFxkIGlkeHBhcnQKK2NyZWF0ZSBpbmRleCBpZHhwYXJ0X2lkeDEgb24gaWR4cGFydCgoaWR4cGFy dCBpcyBub3QgbnVsbCkpOworY3JlYXRlIGluZGV4IGlkeHBhcnRfaWR4MiBvbiBpZHhwYXJ0KGEp IHdoZXJlIGlkeHBhcnQgaXMgbm90IG51bGw7CithbHRlciB0YWJsZSBpZHhwYXJ0IGFsdGVyIGNv bHVtbiBhIHNldCBkYXRhIHR5cGUgaW50ODsgLS1lcnJvcgorZHJvcCBpbmRleCBpZHhwYXJ0X2lk eDE7CithbHRlciB0YWJsZSBpZHhwYXJ0IGFsdGVyIGNvbHVtbiBiIHNldCBkYXRhIHR5cGUgaW50 ODsgLS1lcnJvcgogZHJvcCB0YWJsZSBpZHhwYXJ0OwogCiAtLSBWZXJpZnkgdGhhdCBleHByZXNz aW9uIGluZGV4ZXMgaW5oZXJpdCBjb3JyZWN0bHkKLS0gCjIuMzQuMQoK --000000000000031d5f063f7158b9 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0003-disallow-change-or-drop-column-when-wholerow-referenced-policy-ex.patch" Content-Disposition: attachment; filename="v5-0003-disallow-change-or-drop-column-when-wholerow-referenced-policy-ex.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfw4i9m40 RnJvbSAwMzkwMzc4YzZkOTBjN2U3N2NkY2U4MWU5YWY1Yjg2ZjM2MDM1NGZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjMgU2VwIDIwMjUgMTM6MzU6MzUgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 IDMvM10gZGlzYWxsb3cgY2hhbmdlIG9yIGRyb3AgY29sdW1uIHdoZW4gd2hvbGVyb3cKIHJlZmVy ZW5jZWQgcG9saWN5IGV4aXN0cwoKZGVtbzoKQ1JFQVRFIFRBQkxFIHJsc190YmwgKGEgaW50LCBi IGludCwgYyBpbnQpOwpDUkVBVEUgUE9MSUNZIHAxIE9OIHJsc190YmwgVVNJTkcgKHJsc190Ymwg Pj0gUk9XKDEsMSwxKSk7CgpBTFRFUiBUQUJMRSBybHNfdGJsIERST1AgQ09MVU1OIGI7IC0tZXJy b3IKRVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gYiBvZiB0YWJsZSBybHNfdGJsIGJlY2F1c2Ug b3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKREVUQUlMOiAgcG9saWN5IHAxIG9uIHRhYmxlIHJs c190YmwgZGVwZW5kcyBvbiBjb2x1bW4gYiBvZiB0YWJsZSBybHNfdGJsCkhJTlQ6ICBVc2UgRFJP UCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCgpBTFRFUiBU QUJMRSBybHNfdGJsIEFMVEVSIENPTFVNTiBiIFNFVCBEQVRBIFRZUEUgQklHSU5UOyAtLWVycm9y CkVSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxlICJybHNfdGJsIiBiZWNhdXNlIHNlY3VyaXR5IHBv bGljeSAicDEiIHVzZXMgaXRzIHJvdyB0eXBlCkhJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBkcm9w IHBvbGljeSAicDEiIGZpcnN0CgpBTFRFUiBUQUJMRSBybHNfdGJsIERST1AgQ09MVU1OIGIgQ0FT Q0FERTsgLS1vawpOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHBvbGljeSBwMSBvbiB0YWJsZSBy bHNfdGJsCkFMVEVSIFRBQkxFCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1 ZnhHQTZLVlF5N0RiSEdMVnc5czlLS21wR3ladDVNRTZDN2tFZmpEcHIyd1pDd0BtYWlsLmdtYWls LmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgIHwgOTQg KysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Zhci5j ICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0 aW1pemVyLmggICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2Vj dXJpdHkub3V0IHwgMjcgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHku c3FsICAgICAgfCAxNyArKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAg ICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA5YmY1ZDZiYzJiNi4uNzk3Y2Jh MTJhYjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMjA5Niw4ICsyMjA5Niw4IEBA IEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9k ZSkKIH0KIAogLyoKLSAqIFJlY29yZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB3aG9sZS1yb3cgb2Jq ZWN0cyAoaW5kZXhlcywgQ0hFQ0sgY29uc3RyYWludHMpCi0gKiBhc3NvY2lhdGVkIHdpdGggcmVs YXRpb24gYW5kIHJlbGF0aW9uJ3MgT2JqZWN0QWRkcmVzcy4KKyAqIFJlY29yZCBkZXBlbmRlbmNp ZXMgYmV0d2VlbiB3aG9sZS1yb3cgb2JqZWN0cyAoaW5kZXhlcywgQ0hFQ0sgY29uc3RyYWludHMg b3IKKyAqIHBvbGljaWVzKSBhc3NvY2lhdGVkIHdpdGggcmVsYXRpb24gYW5kIHJlbGF0aW9uJ3Mg T2JqZWN0QWRkcmVzcy4KICAqCiAgKiBlcnJvcl9vdXQgbWVhbnMgY2FuIG5vdCBpbnN0YWxsIHN1 Y2ggZGVwZW5kZW5jeSwgd2UgaGF2ZSB0byBlcnJvciBvdXQgZXhwbGljaXRseS4KICAqLwpAQCAt MjIxMDcsOCArMjIxMDcsMTMgQEAgcmVjb3JkV2hvbGVSb3dEZXBlbmRlbmN5T25PckVycm9yKFJl bGF0aW9uIHJlbCwgY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib28KIAlOb2RlCSAgICpl eHByOwogCUxpc3QJICAgKmluZGV4bGlzdCA9IE5JTDsKIAlPYmplY3RBZGRyZXNzIGlkeF9vYmo7 CisJT2JqZWN0QWRkcmVzcyBwb2xfb2JqOwogCWJvb2wJCWZpbmRfd2hvbGVyb3cgPSBmYWxzZTsK IAlTY2FuS2V5RGF0YSBza2V5WzFdOworCVJlbGF0aW9uCXBnX3BvbGljeTsKKwlTeXNTY2FuRGVz YyBzc2NhbjsKKwlIZWFwVHVwbGUJcG9saWN5X3R1cGxlOworCU9pZAkJCXJlbHR5cGlkOwogCVR1 cGxlQ29uc3RyICpjb25zdHIgPSBSZWxhdGlvbkdldERlc2NyKHJlbCktPmNvbnN0cjsKIAogCS8q IGNoZWNrIENIRUNLIGNvbnN0cmFpbnRzIGNvbnRhaW4gd2hvbGUtcm93IHJlZmVyZW5jZXMgb3Ig bm90ICovCkBAIC0yMjI3Miw0ICsyMjI3Nyw4OSBAQCByZWNvcmRXaG9sZVJvd0RlcGVuZGVuY3lP bk9yRXJyb3IoUmVsYXRpb24gcmVsLCBjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvbwog CQl9CiAJCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxlKTsKIAl9CisKKwkvKiBTZWFyY2ggcGdf cG9saWN5IGZvciB3aG9sZS1yb3cgcmVmZXJlbmNlcyBlbnRyaWVzICovCisJZmluZF93aG9sZXJv dyA9IGZhbHNlOworCXJlbHR5cGlkID0gZ2V0X3JlbF90eXBlX2lkKFJlbGF0aW9uR2V0UmVsaWQo cmVsKSk7CisKKwlwZ19wb2xpY3kgPSB0YWJsZV9vcGVuKFBvbGljeVJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BvbGlj eV9wb2xyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2Jq ZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpKTsKKwlzc2NhbiA9IHN5c3RhYmxl X2JlZ2luc2NhbihwZ19wb2xpY3ksCisJCQkJCQkJICAgUG9saWN5UG9scmVsaWRQb2xuYW1lSW5k ZXhJZCwgdHJ1ZSwgTlVMTCwgMSwKKwkJCQkJCQkgICBza2V5KTsKKwl3aGlsZSAoSGVhcFR1cGxl SXNWYWxpZChwb2xpY3lfdHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNzY2FuKSkpCisJeworCQlE YXR1bQkJZGF0dW07CisJCWJvb2wJCWlzbnVsbDsKKwkJY2hhcgkgICAqc3RyX3ZhbHVlOworCQlO b2RlCQkqcG9sZXhwcjsKKworCQlGb3JtX3BnX3BvbGljeSBwb2xpY3kgPSAoRm9ybV9wZ19wb2xp Y3kpIEdFVFNUUlVDVChwb2xpY3lfdHVwbGUpOworCisJCS8qIEdldCBwb2xpY3kgcXVhbCAqLwor CQlkYXR1bSA9IGhlYXBfZ2V0YXR0cihwb2xpY3lfdHVwbGUsIEFudW1fcGdfcG9saWN5X3BvbHF1 YWwsCisJCQkJCQkJIFJlbGF0aW9uR2V0RGVzY3IocGdfcG9saWN5KSwgJmlzbnVsbCk7CisJCWlm ICghaXNudWxsKQorCQl7CisJCQlzdHJfdmFsdWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVt KTsKKwkJCXBvbGV4cHIgPSAoTm9kZSAqKSBzdHJpbmdUb05vZGUoc3RyX3ZhbHVlKTsKKwkJCXBm cmVlKHN0cl92YWx1ZSk7CisKKwkJCWZpbmRfd2hvbGVyb3cgPSBFeHByQ29udGFpbldob2xlUm93 KHBvbGV4cHIsIHJlbHR5cGlkKTsKKwkJCWlmIChmaW5kX3dob2xlcm93ICYmICFlcnJvcl9vdXQp CisJCQl7CisJCQkJcG9sX29iai5jbGFzc0lkID0gUG9saWN5UmVsYXRpb25JZDsKKwkJCQlwb2xf b2JqLm9iamVjdElkID0gcG9saWN5LT5vaWQ7CisJCQkJcG9sX29iai5vYmplY3RTdWJJZCA9IDA7 CisKKwkJCQkvKiByZWNvcmQgZGVwZW5kZW5jeSBmb3IgcG9saWNpZXMgdGhhdCByZWZlcmVuY2Vz IHdob2xlLXJvdyBWYXIgKi8KKwkJCQlyZWNvcmREZXBlbmRlbmN5T24oJnBvbF9vYmosIG9iamVj dCwgREVQRU5ERU5DWV9OT1JNQUwpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlpZiAoZmlu ZF93aG9sZXJvdyAmJiBlcnJvcl9vdXQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQllcnJtc2coImNhbm5vdCBhbHRl ciB0YWJsZSBcIiVzXCIgYmVjYXVzZSBzZWN1cml0eSBwb2xpY3kgXCIlc1wiIHVzZXMgaXRzIHJv dyB0eXBlIiwKKwkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJ CSAgIE5hbWVTdHIocG9saWN5LT5wb2xuYW1lKSksCisJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBkcm9wIHNlY3VyaXR5IHBvbGljeSBcIiVzXCIgZmlyc3QiLAorCQkJCQkJCQlOYW1l U3RyKHBvbGljeS0+cG9sbmFtZSkpKTsKKwkJfQorCisJCWRhdHVtID0gaGVhcF9nZXRhdHRyKHBv bGljeV90dXBsZSwgQW51bV9wZ19wb2xpY3lfcG9sd2l0aGNoZWNrLAorCQkJCQkJCSBSZWxhdGlv bkdldERlc2NyKHBnX3BvbGljeSksICZpc251bGwpOworCQlpZiAoIWlzbnVsbCkKKwkJeworCQkJ c3RyX3ZhbHVlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJCQlwb2xleHByID0gKE5v ZGUgKikgc3RyaW5nVG9Ob2RlKHN0cl92YWx1ZSk7CisJCQlwZnJlZShzdHJfdmFsdWUpOworCisJ CQlmaW5kX3dob2xlcm93ID0gRXhwckNvbnRhaW5XaG9sZVJvdyhwb2xleHByLCByZWx0eXBpZCk7 CisJCQlpZiAoZmluZF93aG9sZXJvdyAmJiAhZXJyb3Jfb3V0KQorCQkJeworCQkJCXBvbF9vYmou Y2xhc3NJZCA9IFBvbGljeVJlbGF0aW9uSWQ7CisJCQkJcG9sX29iai5vYmplY3RJZCA9IHBvbGlj eS0+b2lkOworCQkJCXBvbF9vYmoub2JqZWN0U3ViSWQgPSAwOworCisJCQkJLyogcmVjb3JkIGRl cGVuZGVuY3kgZm9yIHBvbGljaWVzIHRoYXQgcmVmZXJlbmNlcyB3aG9sZS1yb3cgVmFyICovCisJ CQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZwb2xfb2JqLCBvYmplY3QsIERFUEVOREVOQ1lfTk9STUFM KTsKKwkJCX0KKworCQkJaWYgKGZpbmRfd2hvbGVyb3cgJiYgZXJyb3Jfb3V0KQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJ CQkJZXJybXNnKCJjYW5ub3QgYWx0ZXIgdGFibGUgXCIlc1wiIGJlY2F1c2Ugc2VjdXJpdHkgcG9s aWN5IFwiJXNcIiB1c2VzIGl0cyByb3cgdHlwZSIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCksCisJCQkJCQkJCU5hbWVTdHIocG9saWN5LT5wb2xuYW1lKSksCisJCQkJCQll cnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBkcm9wIHNlY3VyaXR5IHBvbGljeSBcIiVzXCIgZmly c3QiLAorCQkJCQkJCQlOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpKTsKKwkJfQorCX0KKwlzeXN0 YWJsZV9lbmRzY2FuKHNzY2FuKTsKKwl0YWJsZV9jbG9zZShwZ19wb2xpY3ksIEFjY2Vzc1NoYXJl TG9jayk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC92YXIuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Zhci5jCmluZGV4IDgwNjUyMzdhMTg5Li5lNWUw YzRlZGRlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMKQEAgLTQ5LDYgKzQ5LDExIEBAIHR5 cGVkZWYgc3RydWN0CiAJaW50CQkJc3VibGV2ZWxzX3VwOwogfSBwdWxsX3ZhcnNfY29udGV4dDsK IAordHlwZWRlZiBzdHJ1Y3QKK3sKKwlPaWQJCQlyZWx0eXBpZDsJLyogdGhlIHdob2xlLXJvdyB0 eXBlaWQgKi8KK30gY29udGFpbl93aG9sZXJvd19jb250ZXh0OworCiB0eXBlZGVmIHN0cnVjdAog ewogCWludAkJCXZhcl9sb2NhdGlvbjsKQEAgLTczLDYgKzc4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QK IHN0YXRpYyBib29sIHB1bGxfdmFybm9zX3dhbGtlcihOb2RlICpub2RlLAogCQkJCQkJCSAgIHB1 bGxfdmFybm9zX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgcHVsbF92YXJhdHRub3Nf d2Fsa2VyKE5vZGUgKm5vZGUsIHB1bGxfdmFyYXR0bm9zX2NvbnRleHQgKmNvbnRleHQpOworc3Rh dGljIGJvb2wgRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIoTm9kZSAqbm9kZSwgY29udGFpbl93 aG9sZXJvd19jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBib29sIHB1bGxfdmFyc193YWxrZXIo Tm9kZSAqbm9kZSwgcHVsbF92YXJzX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgY29u dGFpbl92YXJfY2xhdXNlX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIHN0YXRp YyBib29sIGNvbnRhaW5fdmFyc19vZl9sZXZlbF93YWxrZXIoTm9kZSAqbm9kZSwgaW50ICpzdWJs ZXZlbHNfdXApOwpAQCAtMzI3LDYgKzMzMyw2MCBAQCBwdWxsX3ZhcmF0dG5vc193YWxrZXIoTm9k ZSAqbm9kZSwgcHVsbF92YXJhdHRub3NfY29udGV4dCAqY29udGV4dCkKIAlyZXR1cm4gZXhwcmVz c2lvbl90cmVlX3dhbGtlcihub2RlLCBwdWxsX3ZhcmF0dG5vc193YWxrZXIsIGNvbnRleHQpOwog fQogCitzdGF0aWMgYm9vbAorRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIoTm9kZSAqbm9kZSwg Y29udGFpbl93aG9sZXJvd19jb250ZXh0ICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9kZSwgVmFyKSkKKwl7CisJCVZhcgkJICAg KnZhciA9IChWYXIgKikgbm9kZTsKKworCQlpZiAodmFyLT52YXJhdHRubyA9PSBJbnZhbGlkQXR0 ck51bWJlciAmJgorCQkJdmFyLT52YXJ0eXBlID09IGNvbnRleHQtPnJlbHR5cGlkKQorCQkJcmV0 dXJuIHRydWU7CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChJc0Eobm9kZSwgUXVlcnkp KQorCXsKKwkJYm9vbAkJcmVzdWx0OworCisJCXJlc3VsdCA9IHF1ZXJ5X3RyZWVfd2Fsa2VyKChR dWVyeSAqKSBub2RlLCBFeHByQ29udGFpbldob2xlUm93X3dhbGtlciwKKwkJCQkJCQkJICAgY29u dGV4dCwgMCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJcmV0dXJuIGV4cHJlc3Npb25fdHJl ZV93YWxrZXIobm9kZSwgRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIsIGNvbnRleHQpOworfQor CisKKy8qCisgKiBFeHByQ29udGFpbldob2xlUm93IC0KKyAqCisgKiBEZXRlcm1pbmUgd2hldGhl ciBhbiBleHByZXNzaW9uIGNvbnRhaW5zIGEgd2hvbGUtcm93IFZhciwgcmVjdXJzaW5nIGFzIG5l ZWRlZC4KKyAqIEZvciBzaW1wbGUgZXhwcmVzc2lvbnMgd2l0aG91dCBzdWJsaW5rcywgcHVsbF92 YXJhdHRub3MgaXMgdXN1YWxseSBzdWZmaWNpZW50CisgKiB0byBkZXRlY3QgYSB3aG9sZS1yb3cg VmFyLiBCdXQgaWYgdGhlIG5vZGUgY29udGFpbnMgc3VibGlua3MgKHVucGxhbm5lZAorICogc3Vi cXVlcmllcyksIHRoZSBjaGVjayBtdXN0IGluc3RlYWQgcmVseSBvbiB0aGUgd2hvbGUtcm93IHR5 cGUgT0lELgorICogVXNlIEV4cHJDb250YWluV2hvbGVSb3cgdG8gY2hlY2sgd2hvbGUtcm93IHZh ciBleGlzdHNlbmNlIHdoZW4gaW4gZG91YnQuCisgKi8KK2Jvb2wKK0V4cHJDb250YWluV2hvbGVS b3coTm9kZSAqbm9kZSwgT2lkIHJlbHR5cGlkKQoreworCWNvbnRhaW5fd2hvbGVyb3dfY29udGV4 dCBjb250ZXh0OworCisJY29udGV4dC5yZWx0eXBpZCA9IHJlbHR5cGlkOworCisJQXNzZXJ0KE9p ZElzVmFsaWQocmVsdHlwaWQpKTsKKworCXJldHVybiBxdWVyeV9vcl9leHByZXNzaW9uX3RyZWVf d2Fsa2VyKG5vZGUsCisJCQkJCQkJCQkJICAgRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIsCisJ CQkJCQkJCQkJICAgJmNvbnRleHQsCisJCQkJCQkJCQkJICAgMCk7Cit9CisKIAogLyoKICAqIHB1 bGxfdmFyc19vZl9sZXZlbApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGlt aXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmluZGV4IDA0ODc4ZjFm MWMyLi42OWQ1ZTY5MDVkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGlt aXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApAQCAtMTk0LDYg KzE5NCw3IEBAIGV4dGVybiBTb3J0R3JvdXBDbGF1c2UgKmdldF9zb3J0Z3JvdXByZWZfY2xhdXNl X25vZXJyKEluZGV4IHNvcnRyZWYsCiBleHRlcm4gQml0bWFwc2V0ICpwdWxsX3Zhcm5vcyhQbGFu bmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSk7CiBleHRlcm4gQml0bWFwc2V0ICpwdWxsX3Zhcm5v c19vZl9sZXZlbChQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IGxldmVsc3VwKTsK IGV4dGVybiB2b2lkIHB1bGxfdmFyYXR0bm9zKE5vZGUgKm5vZGUsIEluZGV4IHZhcm5vLCBCaXRt YXBzZXQgKip2YXJhdHRub3MpOworZXh0ZXJuIGJvb2wgRXhwckNvbnRhaW5XaG9sZVJvdyhOb2Rl ICpub2RlLCBPaWQgcmVsdHlwaWQpOwogZXh0ZXJuIExpc3QgKnB1bGxfdmFyc19vZl9sZXZlbChO b2RlICpub2RlLCBpbnQgbGV2ZWxzdXApOwogZXh0ZXJuIGJvb2wgY29udGFpbl92YXJfY2xhdXNl KE5vZGUgKm5vZGUpOwogZXh0ZXJuIGJvb2wgY29udGFpbl92YXJzX29mX2xldmVsKE5vZGUgKm5v ZGUsIGludCBsZXZlbHN1cCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Jvd3NlY3VyaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHku b3V0CmluZGV4IDhjODc5NTA5MzEzLi5mM2JlMDhlOTc0MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKQEAgLTIzNTcsNiArMjM1NywzMyBAQCBTRUxFQ1QgKiBG Uk9NIGRvY3VtZW50OwogICAxNCB8ICAxMSB8ICAgICAgMSB8IHJlZ3Jlc3NfcmxzX2JvYiAgIHwg bmV3IG5vdmVsICAgICAgICAgICAgICAgICAgICAgICAgfCAKICgxNiByb3dzKQogCistLWNoZWNr IGRyb3AgY29sdW1uIChubyBDQVNDQURFKSBvciBhbHRlciBjb2x1bW4gZGF0YSB0eXBlIHdpbGwg ZmFpbCBiZWNhdXNlIG9mCistLXdob2xlLXJvdyByZWZlcmVuY2VkIHNlY3VyaXR5IHBvbGljeSBl eGlzdHMuCitBTFRFUiBUQUJMRSBkb2N1bWVudCBBREQgQ09MVU1OIGR1bW15IElOVDQsIEFERCBD T0xVTU4gZHVtbXkxIElOVDQ7CitDUkVBVEUgUE9MSUNZIHA3IE9OIGRvY3VtZW50IEFTIFBFUk1J U1NJVkUKKyAgICBVU0lORyAoY2lkIElTIE5PVCBOVUxMIEFORAorICAgIChXSVRIIGN0ZSBBUyAo U0VMRUNUIFRSVUUgRlJPTSB1YWNjb3VudAorICAgICAgICBXSEVSRSBFWElTVFMgKFNFTEVDVCBk b2N1bWVudCBGUk9NIHVhY2NvdW50IFdIRVJFIHVhY2NvdW50IElTIE5VTEwpKQorICAgIFNFTEVD VCAqIEZST00gY3RlKSk7CitBTFRFUiBUQUJMRSBkb2N1bWVudCBBTFRFUiBDT0xVTU4gZHVtbXkg U0VUIERBVEEgVFlQRSBCSUdJTlQ7IC0tZXJyb3IKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxl ICJkb2N1bWVudCIgYmVjYXVzZSBzZWN1cml0eSBwb2xpY3kgInA3IiB1c2VzIGl0cyByb3cgdHlw ZQorSElOVDogIFlvdSBtaWdodCBuZWVkIHRvIGRyb3Agc2VjdXJpdHkgcG9saWN5ICJwNyIgZmly c3QKK0FMVEVSIFRBQkxFIGRvY3VtZW50IERST1AgQ09MVU1OIGR1bW15OyAtLWVycm9yCitFUlJP UjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkdW1teSBvZiB0YWJsZSBkb2N1bWVudCBiZWNhdXNlIG90 aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwb2xpY3kgcDcgb24gdGFibGUgZG9j dW1lbnQgZGVwZW5kcyBvbiBjb2x1bW4gZHVtbXkgb2YgdGFibGUgZG9jdW1lbnQKK0hJTlQ6ICBV c2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitB TFRFUiBUQUJMRSBkb2N1bWVudCBEUk9QIENPTFVNTiBkdW1teSBDQVNDQURFOyAtLW9rCitOT1RJ Q0U6ICBkcm9wIGNhc2NhZGVzIHRvIHBvbGljeSBwNyBvbiB0YWJsZSBkb2N1bWVudAorQ1JFQVRF IFBPTElDWSBwOCBPTiBkb2N1bWVudCBGT1IgSU5TRVJUIFdJVEggQ0hFQ0sgKGRvY3VtZW50IElT IE5PVCBOVUxMKTsKK0FMVEVSIFRBQkxFIGRvY3VtZW50IEFMVEVSIENPTFVNTiBkdW1teTEgU0VU IERBVEEgVFlQRSBCSUdJTlQ7IC0tZXJyb3IKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxlICJk b2N1bWVudCIgYmVjYXVzZSBzZWN1cml0eSBwb2xpY3kgInA4IiB1c2VzIGl0cyByb3cgdHlwZQor SElOVDogIFlvdSBtaWdodCBuZWVkIHRvIGRyb3Agc2VjdXJpdHkgcG9saWN5ICJwOCIgZmlyc3QK K0FMVEVSIFRBQkxFIGRvY3VtZW50IERST1AgQ09MVU1OIGR1bW15MTsgLS1lcnJvcgorRVJST1I6 ICBjYW5ub3QgZHJvcCBjb2x1bW4gZHVtbXkxIG9mIHRhYmxlIGRvY3VtZW50IGJlY2F1c2Ugb3Ro ZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBvbGljeSBwOCBvbiB0YWJsZSBkb2N1 bWVudCBkZXBlbmRzIG9uIGNvbHVtbiBkdW1teTEgb2YgdGFibGUgZG9jdW1lbnQKK0hJTlQ6ICBV c2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitB TFRFUiBUQUJMRSBkb2N1bWVudCBEUk9QIENPTFVNTiBkdW1teTEgQ0FTQ0FERTsgLS1vaworTk9U SUNFOiAgZHJvcCBjYXNjYWRlcyB0byBwb2xpY3kgcDggb24gdGFibGUgZG9jdW1lbnQKIC0tCiAt LSBST0xFL0dST1VQCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2Vj dXJpdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCmluZGV4IDIx YWMwY2E1MWVlLi5lYWQwYTVlNjJiZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cm93c2VjdXJpdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNx bApAQCAtMTAyMSw2ICsxMDIxLDIzIEBAIERST1AgUE9MSUNZIHAxIE9OIGRvY3VtZW50OwogLS0g SnVzdCBjaGVjayBldmVyeXRoaW5nIHdlbnQgcGVyIHBsYW4KIFNFTEVDVCAqIEZST00gZG9jdW1l bnQ7CiAKKy0tY2hlY2sgZHJvcCBjb2x1bW4gKG5vIENBU0NBREUpIG9yIGFsdGVyIGNvbHVtbiBk YXRhIHR5cGUgd2lsbCBmYWlsIGJlY2F1c2Ugb2YKKy0td2hvbGUtcm93IHJlZmVyZW5jZWQgc2Vj dXJpdHkgcG9saWN5IGV4aXN0cy4KK0FMVEVSIFRBQkxFIGRvY3VtZW50IEFERCBDT0xVTU4gZHVt bXkgSU5UNCwgQUREIENPTFVNTiBkdW1teTEgSU5UNDsKK0NSRUFURSBQT0xJQ1kgcDcgT04gZG9j dW1lbnQgQVMgUEVSTUlTU0lWRQorICAgIFVTSU5HIChjaWQgSVMgTk9UIE5VTEwgQU5ECisgICAg KFdJVEggY3RlIEFTIChTRUxFQ1QgVFJVRSBGUk9NIHVhY2NvdW50CisgICAgICAgIFdIRVJFIEVY SVNUUyAoU0VMRUNUIGRvY3VtZW50IEZST00gdWFjY291bnQgV0hFUkUgdWFjY291bnQgSVMgTlVM TCkpCisgICAgU0VMRUNUICogRlJPTSBjdGUpKTsKK0FMVEVSIFRBQkxFIGRvY3VtZW50IEFMVEVS IENPTFVNTiBkdW1teSBTRVQgREFUQSBUWVBFIEJJR0lOVDsgLS1lcnJvcgorQUxURVIgVEFCTEUg ZG9jdW1lbnQgRFJPUCBDT0xVTU4gZHVtbXk7IC0tZXJyb3IKK0FMVEVSIFRBQkxFIGRvY3VtZW50 IERST1AgQ09MVU1OIGR1bW15IENBU0NBREU7IC0tb2sKKworQ1JFQVRFIFBPTElDWSBwOCBPTiBk b2N1bWVudCBGT1IgSU5TRVJUIFdJVEggQ0hFQ0sgKGRvY3VtZW50IElTIE5PVCBOVUxMKTsKK0FM VEVSIFRBQkxFIGRvY3VtZW50IEFMVEVSIENPTFVNTiBkdW1teTEgU0VUIERBVEEgVFlQRSBCSUdJ TlQ7IC0tZXJyb3IKK0FMVEVSIFRBQkxFIGRvY3VtZW50IERST1AgQ09MVU1OIGR1bW15MTsgLS1l cnJvcgorQUxURVIgVEFCTEUgZG9jdW1lbnQgRFJPUCBDT0xVTU4gZHVtbXkxIENBU0NBREU7IC0t b2sKKwogLS0KIC0tIFJPTEUvR1JPVVAKIC0tCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4 IGU5MGFmNWIyYWQzLi4zZGIwYTBiZWVkMSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAg LTM1MjEsNiArMzUyMSw3IEBAIGNvbm5fb2F1dGhfc2NvcGVfZnVuYwogY29ubl9zYXNsX3N0YXRl X2Z1bmMKIGNvbnRhaW5fYWdnc19vZl9sZXZlbF9jb250ZXh0CiBjb250YWluX3BsYWNlaG9sZGVy X3JlZmVyZW5jZXNfY29udGV4dAorY29udGFpbl93aG9sZXJvd19jb250ZXh0CiBjb252ZXJ0X3Rl c3RleHByX2NvbnRleHQKIGNvcHlfZGF0YV9kZXN0X2NiCiBjb3B5X2RhdGFfc291cmNlX2NiCi0t IAoyLjM0LjEKCg== --000000000000031d5f063f7158b9--