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 1wADrg-002BD2-16 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 21:21:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wADrd-002XB2-2E for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 21:21:38 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wADrd-002XAt-0y for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 21:21:37 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wADra-00000001BOx-37Ho for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 21:21:37 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-b932fe2e1a7so740554166b.1 for ; Tue, 07 Apr 2026 14:21:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775596893; cv=none; d=google.com; s=arc-20240605; b=Pj9DIEqcEpsxFSjqPS+GPfILtsFCDmBjhOLz04LMGjFCcsWsCNzTvP3UZLNKxZ981V seDlLuGJJxQmazhoVrc3AaqM124kL0do9GYvY5J99ZaNzKRSPkEG0GcCby06h+iIdL6k WyVxSLKJqPSmNMi9PVLR7Il2R9DsGl2ABqSaZJhuP12zR//t4GmmRUhXaqzX4P5PSJk0 Y2LI0QhQfZKqdOjRiKC+mPNf8FxojSV/IM50JE5Ws3jVIhIBFrVxcy8+j6//OivagdZN /5V0u8tJ/WrUhNFLErfMOeMMgczDda11leaTEkODCphg1pjm7M/PemEwpd5a6iGVXjqS VgBw== 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=nOLWm2YLgFRhainP/y3oBRdao1oMQF1cUajxwexXpMY=; fh=y6u8JZ24UQqWRqHQI90/n3wwKaNKwRoIkcXGbj1iKJs=; b=dYswJLhUeUTQxawzKJMKUtZVApZvq9YO9pDy6PoD9rtQqauOJGFmUizMVwAwx19tzF xD/peKAk8psVNCv8g571u6XDEPlW4Omym7tLRy2KwgoAdMZZRkl2e47b9yJVwqQuRBbW Omc62EKt4Ax0/WkSglHG9qJ7QJ4aYFOii00Tvv8DcVBzGbfnDhyt1JJ2RRS8grVU69fS Eao50p2aXVwAMHP4FIBvY1ydYNde2v+HJNrhOaz/3JoRxf8fBVZXcCKT72H8nWYYSQip EU1qiItn+mntsKNp0E1DUZXlkVpAQQJzZQ+70zaLuFS/uy/TRf5uAFSsSbOKRi5SKMn0 /rPw==; 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=1775596893; x=1776201693; 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=nOLWm2YLgFRhainP/y3oBRdao1oMQF1cUajxwexXpMY=; b=kre+ghYvNDykvba5vvgR+ZpTsKZkzgZLIMDDWBru2hnrA5JWz5XuM0imcDLGMnyR3S 6/nl1EJUa+glbi0EDlx9NrwJKq+Oxuj8CURp146HhsnCiPiVSC56ZybFpj1Yqz+358yS BgDs+rX7BzgfHteXteGcMsELOHbhQhCGktX5kqAJh1LYQVNFP5QBo1sitmF4Z37CEAjK 6yALExU2EQo876tEVyO2SSc00irTO3e44BfuhQD6edgATduLRAKR/fIVsodgPUyrumJL PAjUobyV8VPnfsW6i+l8w39apKfEAmOEqN+J/1xiOICcwOTEMlYRQHMW9jrTDpkMdMB1 7B3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775596893; x=1776201693; 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=nOLWm2YLgFRhainP/y3oBRdao1oMQF1cUajxwexXpMY=; b=LzCy9rWBwVcKPxEVPI6ugvhm68ekjphv/9jpT7p1t6dI6/oHP0sNqcRGB/yAB/sLuy ce6BV+oWrdDf7Nrji/ahjV9WOp2WePW3mZKm8l2D0iIOKNarqbkmxNWk1OITDJYqBe52 q9lDYlZFkmiu+cAI6L7L8kd0wSL5yGsYuQ7YnFAcshxr60KfGZb698L6FMkCOKHihpxx mG+hyo3TM9U6NbPEQXWmCHb4IRVix1JbAJ2U/PdP1AfjUd1PqjypjAcfCMio6ERNPeli dNJdFo60Bm9cQ9KBJj2uRSamjPRkepLGeThOkb8Z2lq/CcvglK9sv+QG3SHIGYMhUSVO rjHA== X-Forwarded-Encrypted: i=1; AJvYcCXFcJACDLVOeQADXzIR0g1BVzoJ19zi3NLB57UNeDP2jKczMTGZlqO4Tt0cKnJUnzra3gsKdg846pnrB4Y8@lists.postgresql.org X-Gm-Message-State: AOJu0Yy8EHpCvA44aNEj40mNyoR6Nh6NVJZoS0CnXARJaSfdrMKGVr1N wwIo+WUSvzZGzUYP6AojtCjGvqCgciG5VhUdXqBxeRmuGpTVGxs7HTgDir9VHt1isEjrxvwa/Au UHh3kUjNPTiY6u8KkXKa97s+7TzaDqWs= X-Gm-Gg: AeBDievWX/OWs/LTOjKu3O1mN7cN56icG1XRhD4OjRhi2toRRxSm1Nd82c7VDxkOL5R IcPSGYST4zeWOnOw4S1rAAIMHkK6hsEcnRIb0rlW/Ra90OLOlUgPAINIQTx7xWHC/2MPltjym/5 jHRUOh2viDb1DdZEPsFREZwDXzxZFV5KnR6zV0rg+h7KJVW0ni5/6ibrLW0IJcusMFvZFbnTOtY eolWfa/g1yjt5KWXunXj+ihesSViThVDjScgLlOzHCIIuYOU9GnBg+M19N1+kT87or2gQqh8PHa h3QwSCp/Y3XKvDDg/d5jrOuooSpjFPHIyVkvgbk= X-Received: by 2002:a17:907:3f90:b0:b94:2648:4672 with SMTP id a640c23a62f3a-b9c679e1fb4mr803189766b.41.1775596892453; Tue, 07 Apr 2026 14:21:32 -0700 (PDT) MIME-Version: 1.0 References: <1299934.1773938807@sss.pgh.pa.us> <3683430.1775173413@sss.pgh.pa.us> <3817825.1775240432@sss.pgh.pa.us> <3877210.1775272486@sss.pgh.pa.us> In-Reply-To: <3877210.1775272486@sss.pgh.pa.us> From: Robert Haas Date: Tue, 7 Apr 2026 17:21:19 -0400 X-Gm-Features: AQROBzB4qBJoBYYzKrAu3DSQ2rFwpM36qM_e5-qHojzrCTtH0YMiaifxu0dJ004 Message-ID: Subject: Re: pg_plan_advice To: Tom Lane Cc: Alexander Lakhin , Lukas Fittl , PostgreSQL Hackers , Nathan Bossart , Melanie Plageman , "heikki.linnakangas" Content-Type: multipart/mixed; boundary="0000000000000a3d9c064ee55e86" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000a3d9c064ee55e86 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 3, 2026 at 11:14=E2=80=AFPM Tom Lane wrote: > I believe that we probably will need to do something in this > area before v19 release. If we're willing to commit to it being > "run the tests serially", then sure we can wait awhile before > actually doing that. Maybe we'll even think of a better idea > ... but what we can do about this post-freeze seems pretty > constrained to me. Here's a new patch set. All of these patches are new, but I'm continuing to increment the same version number sequence. 0001 and 0002 implement the "retry a few times" idea for avoiding test_plan_advice failures. I argue that (a) these are reasonable post-commit stabilization that should not be blocked by feature freeze and (b) most people here will be happier with a solution like this that will normally cost very little than they will be with switching test_plan_advice to executing serially. The RMT can decide whether it agrees. The other question here is whether it's really a good idea to apply this now considering that we've seen only one failure so far. I think it's probably a good idea to do something like this before release, so that we hopefully reduce the false positive rate from the test to something much closer to zero, but I think we've still had only the one failure, and I'm really interested in knowing how close the failure rate is to zero already. The RMT may have an opinion on how long to wait before doing something like this, too. 0003 fixes the problem with tablesample scans that Alexander Lakhin reported. The bug occurs when a tablesample handler does not set repeatable_across_scans and the resulting Sample Scan appears below a join. The test case provided by Alexander shows the Sample Scan on the inner side of the join, but it's also possible to construct a case where it occurs on the outer side of the join. This commit adds tests for both cases. 0004 fixes an oversight in commit 6455e55b0da47255f332a96f005ba0dd1c7176c2, which failed to add a new pg_regress test to the pg_plan_advice Makefile. 0005 fixes the other issue that Alexander Lakhin recently reported, which manifested as ERROR: no rtoffset for plan unnamed_subquery when trying to generate advice. That turns out to occur when a subquery is proven empty and that subquery contains a semijoin that could have been implemented by making one side unique. I chose a different fix than what I mentioned in my response to Alexander's email. There was already code that handles the case where a SubPlanRTInfo exists and is marked dummy, and this fix extends that handling to the case where no SubPlanRTInfo exists at all, which seems better than treating those two cases in separate parts of the code. I don't think that anyone will argue that 0003-0005 are things we can't or shouldn't fix after feature freeze, and I plan to apply those fixes shortly after feature freeze, unless there are objections or better ideas. I could rush them in before that, too, but I don't think what the tree needs are more people trying to commit all at once right now. Thanks, --=20 Robert Haas EDB: http://www.enterprisedb.com --0000000000000a3d9c064ee55e86 Content-Type: application/octet-stream; name="v26-0001-pg_plan_advice-Export-feedback-related-definitio.patch" Content-Disposition: attachment; filename="v26-0001-pg_plan_advice-Export-feedback-related-definitio.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp49l9v0 RnJvbSBjZDJmNzBiMjc5MGM5NGQ2MzBhNmU0MjUyNjUxMGYzYzhlNWMwYjMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IFR1ZSwgNyBBcHIgMjAyNiAxMjozOToyMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI2IDEv NV0gcGdfcGxhbl9hZHZpY2U6IEV4cG9ydCBmZWVkYmFjay1yZWxhdGVkIGRlZmluaXRpb25zLgoK SW4gcHJlcGFyYXRpb24gZm9yIG1ha2luZyB0ZXN0X3BsYW5fYWR2aWNlIHNsaWdodGx5IHNtYXJ0 ZXIsIHRoaXMKY29tbWl0IG1ha2VzIGEgY291cGxlIG9mIHRoaW5ncyByZWxhdGVkIHRvIHBnX3Bs YW5fYWR2aWNlIHZpc2libGUKdG8gb3RoZXIgZXh0ZW5zaW9ucy4gVGhlIFBHUEFfVEVfKiBjb25z dGFudHMgYXJlIHJlbmFtZWQgdG8KUEdQQV9GQl8qIGFuZCBtb3ZlZCB0byBwZ19wbGFuX2Fkdmlj ZS5oLiBBbHNvLCB0aGUgZnVuY3Rpb24KcGdwYV9wbGFubmVyX2ZlZWRiYWNrX3dhcm5pbmcgaXMg bWFkZSBub24tc3RhdGljIGFuZCBtYXJrZWQgYXMKUEdETExFWFBPUlQuCi0tLQogY29udHJpYi9w Z19wbGFuX2FkdmljZS9wZ19wbGFuX2FkdmljZS5oIHwgMjkgKysrKysrKysrKysKIGNvbnRyaWIv cGdfcGxhbl9hZHZpY2UvcGdwYV9wbGFubmVyLmMgICB8IDY5ICsrKysrKysrKysrKy0tLS0tLS0t LS0tLS0KIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9wbGFubmVyLmggICB8ICAzICsrCiBj b250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfdHJvdmUuYyAgICAgfCAxNyArKystLS0KIGNvbnRy aWIvcGdfcGxhbl9hZHZpY2UvcGdwYV90cm92ZS5oICAgICB8IDMwIC0tLS0tLS0tLS0tCiA1IGZp bGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdfcGxhbl9hZHZpY2UuaCBiL2NvbnRyaWIvcGdf cGxhbl9hZHZpY2UvcGdfcGxhbl9hZHZpY2UuaAppbmRleCA3NDkzMzFiNmI4YS4uZDc4NDc3MTUz NTAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdfcGxhbl9hZHZpY2UuaAor KysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BnX3BsYW5fYWR2aWNlLmgKQEAgLTE1LDYgKzE1 LDM1IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5oIgogI2luY2x1ZGUgIm5v ZGVzL3BhdGhub2Rlcy5oIgogCisvKgorICogRmxhZ3MgdXNlZCBpbiBwbGFuIGFkdmljZSBmZWVk YmFjay4KKyAqCisgKiBQR1BBX0ZCX01BVENIX1BBUlRJQUwgbWVhbnMgdGhhdCB3ZSBmb3VuZCBz b21lIHBhcnQgb2YgdGhlIHF1ZXJ5IHRoYXQgYXQKKyAqIGxlYXN0IHBhcnRpYWxseSBtYXRjaGVk IHRoZSB0YXJnZXQ7IGUuZy4gZ2l2ZW4gSk9JTl9PUkRFUihhIGIpLCB0aGlzIHdvdWxkCisgKiBi ZSBzZXQgaWYgd2UgZXZlciBzYXcgYW55IGpvaW5yZWwgaW5jbHVkaW5nIGVpdGhlciAiYSIgb3Ig ImIiLgorICoKKyAqIFBHUEFfRkJfTUFUQ0hfRlVMTCBtZWFucyB0aGF0IHdlIGZvdW5kIGFuIGV4 YWN0IG1hdGNoIGZvciB0aGUgdGFyZ2V0OyBlLmcuCisgKiBnaXZlbiBKT0lOX09SREVSKGEgYiks IHRoaXMgd291bGQgYmUgc2V0IGlmIHdlIHNhdyBhIGpvaW5yZWwgY29udGFpbmluZworICogZXhh Y3RseSAiYSIgYW5kICJiIiBhbmQgbm90aGluZyBlbHNlLgorICoKKyAqIFBHUEFfRkJfSU5BUFBM SUNBQkxFIG1lYW5zIHRoYXQgdGhlIGFkdmljZSBkb2Vzbid0IHByb3Blcmx5IGFwcGx5IHRvIHRo ZQorICogdGFyZ2V0OyBlLmcuIElOREVYX1NDQU4oZm9vIGJhcl9pZHgpIHdvdWxkIGJlIHNvIG1h cmtlZCBpZiBiYXJfaWR4IGRvZXMgbm90CisgKiBleGlzdCBvbiBmb28uIFRoZSBmYWN0IHRoYXQg dGhpcyBiaXQgaGFzIGJlZW4gc2V0IGRvZXMgbm90IG1lYW4gdGhhdCB0aGUKKyAqIGFkdmljZSBo YWQgbm8gZWZmZWN0LgorICoKKyAqIFBHUEFfRkJfQ09ORkxJQ1RJTkcgbWVhbnMgdGhhdCBhIGNv bmZsaWN0IHdhcyBkZXRlY3RlZCBiZXR3ZWVuIHdoYXQgdGhpcworICogYWR2aWNlIHdhbnRzIGFu ZCB3aGF0IHNvbWUgb3RoZXIgcGxhbiBhZHZpY2Ugd2FudHM7IGUuZy4gSk9JTl9PUkRFUihhIGIp CisgKiB3b3VsZCBjb25mbGljdCB3aXRoIEhBU0hfSk9JTihhKSwgYmVjYXVzZSB0aGUgZm9ybWVy IHJlcXVpcmVzICJhIiB0byBiZSB0aGUKKyAqIG91dGVyIHRhYmxlIHdoaWxlIHRoZSBsYXR0ZXIg cmVxdWlyZXMgaXQgdG8gYmUgdGhlIGlubmVyIHRhYmxlLgorICoKKyAqIFBHUEFfRkJfRkFJTEVE IG1lYW5zIHRoYXQgdGhlIHJlc3VsdGluZyBwbGFuIGRpZCBub3QgY29uZm9ybSB0byB0aGUgYWR2 aWNlLgorICovCisjZGVmaW5lIFBHUEFfRkJfTUFUQ0hfUEFSVElBTAkJMHgwMDAxCisjZGVmaW5l IFBHUEFfRkJfTUFUQ0hfRlVMTAkJCTB4MDAwMgorI2RlZmluZSBQR1BBX0ZCX0lOQVBQTElDQUJM RQkJMHgwMDA0CisjZGVmaW5lIFBHUEFfRkJfQ09ORkxJQ1RJTkcJCQkweDAwMDgKKyNkZWZpbmUg UEdQQV9GQl9GQUlMRUQJCQkJMHgwMDEwCisKIC8qIEhvb2sgZm9yIG90aGVyIHBsdWdpbnMgdG8g c3VwcGx5IGFkdmljZSBzdHJpbmdzICovCiB0eXBlZGVmIGNoYXIgKigqcGdfcGxhbl9hZHZpY2Vf YWR2aXNvcl9ob29rKSAoUGxhbm5lckdsb2JhbCAqZ2xvYiwKIAkJCQkJCQkJCQkJICBRdWVyeSAq cGFyc2UsCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfcGxhbm5lci5j IGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3BsYW5uZXIuYwppbmRleCBiMjVmNjJiMmU4 Ny4uODZiMzdlNzliNTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9w bGFubmVyLmMKKysrIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3BsYW5uZXIuYwpAQCAt MTU5LDcgKzE1OSw2IEBAIHN0YXRpYyBMaXN0ICpwZ3BhX3BsYW5uZXJfYXBwZW5kX2ZlZWRiYWNr KExpc3QgKmxpc3QsIHBncGFfdHJvdmUgKnRyb3ZlLAogCQkJCQkJCQkJCSAgcGdwYV90cm92ZV9s b29rdXBfdHlwZSB0eXBlLAogCQkJCQkJCQkJCSAgcGdwYV9pZGVudGlmaWVyICpydF9pZGVudGlm aWVycywKIAkJCQkJCQkJCQkgIHBncGFfcGxhbl93YWxrZXJfY29udGV4dCAqd2Fsa2VyKTsKLXN0 YXRpYyB2b2lkIHBncGFfcGxhbm5lcl9mZWVkYmFja193YXJuaW5nKExpc3QgKmZlZWRiYWNrKTsK IAogc3RhdGljIHBncGFfcGxhbm5lcl9pbmZvICpwZ3BhX3BsYW5uZXJfZ2V0X3Byb290KHBncGFf cGxhbm5lcl9zdGF0ZSAqcHBzLAogCQkJCQkJCQkJCQkJIFBsYW5uZXJJbmZvICpyb290KTsKQEAg LTg3NiwxOSArODc1LDE5IEBAIHBncGFfcGxhbm5lcl9hcHBseV9qb2lucmVsX2FkdmljZSh1aW50 NjQgKnBnc19tYXNrX3AsIGNoYXIgKnBsYW5fbmFtZSwKIAkgKiB0aGUgc2V0IG9mIHRhcmdldHMg ZXhhY3RseSBtYXRjaGVkIHRoaXMgcmVsYXRpb24sIGZ1bGx5IG1hdGNoZWQuIElmCiAJICogdGhl cmUgd2FzIGEgY29uZmxpY3QsIG1hcmsgdGhlbSBhbGwgYXMgY29uZmxpY3RpbmcuCiAJICovCi0J ZmxhZ3MgPSBQR1BBX1RFX01BVENIX1BBUlRJQUw7CisJZmxhZ3MgPSBQR1BBX0ZCX01BVENIX1BB UlRJQUw7CiAJaWYgKGdhdGhlcl9jb25mbGljdCkKLQkJZmxhZ3MgfD0gUEdQQV9URV9DT05GTElD VElORzsKKwkJZmxhZ3MgfD0gUEdQQV9GQl9DT05GTElDVElORzsKIAlwZ3BhX3Ryb3ZlX3NldF9m bGFncyhwanMtPnJlbF9lbnRyaWVzLCBnYXRoZXJfcGFydGlhbF9tYXRjaCwgZmxhZ3MpOwotCWZs YWdzIHw9IFBHUEFfVEVfTUFUQ0hfRlVMTDsKKwlmbGFncyB8PSBQR1BBX0ZCX01BVENIX0ZVTEw7 CiAJcGdwYV90cm92ZV9zZXRfZmxhZ3MocGpzLT5yZWxfZW50cmllcywgZ2F0aGVyX2Z1bGxfbWF0 Y2gsIGZsYWdzKTsKIAogCS8qIExpa2V3aXNlIGZvciBwYXJ0aXRpb253aXNlIGFkdmljZS4gKi8K LQlmbGFncyA9IFBHUEFfVEVfTUFUQ0hfUEFSVElBTDsKKwlmbGFncyA9IFBHUEFfRkJfTUFUQ0hf UEFSVElBTDsKIAlpZiAocGFydGl0aW9ud2lzZV9jb25mbGljdCkKLQkJZmxhZ3MgfD0gUEdQQV9U RV9DT05GTElDVElORzsKKwkJZmxhZ3MgfD0gUEdQQV9GQl9DT05GTElDVElORzsKIAlwZ3BhX3Ry b3ZlX3NldF9mbGFncyhwanMtPnJlbF9lbnRyaWVzLCBwYXJ0aXRpb253aXNlX3BhcnRpYWxfbWF0 Y2gsIGZsYWdzKTsKLQlmbGFncyB8PSBQR1BBX1RFX01BVENIX0ZVTEw7CisJZmxhZ3MgfD0gUEdQ QV9GQl9NQVRDSF9GVUxMOwogCXBncGFfdHJvdmVfc2V0X2ZsYWdzKHBqcy0+cmVsX2VudHJpZXMs IHBhcnRpdGlvbndpc2VfZnVsbF9tYXRjaCwgZmxhZ3MpOwogCiAJLyoKQEAgLTEwODIsNyArMTA4 MSw3IEBAIHBncGFfcGxhbm5lcl9hcHBseV9qb2luX3BhdGhfYWR2aWNlKEpvaW5UeXBlIGpvaW50 eXBlLCB1aW50NjQgKnBnc19tYXNrX3AsCiAJCQkJCSAqIFRoaXMgZG9lc24ndCBzZWVtIHRvIGJl IGEgc2VtaWpvaW4gdG8gd2hpY2ggU0pfVU5JUVVFCiAJCQkJCSAqIG9yIFNKX05PTl9VTklRVUUg Y2FuIGJlIGFwcGxpZWQuCiAJCQkJCSAqLwotCQkJCQllbnRyeS0+ZmxhZ3MgfD0gUEdQQV9URV9J TkFQUExJQ0FCTEU7CisJCQkJCWVudHJ5LT5mbGFncyB8PSBQR1BBX0ZCX0lOQVBQTElDQUJMRTsK IAkJCQl9CiAJCQkJZWxzZSBpZiAoYWR2aWNlX3VuaXF1ZSAhPSBqdF91bmlxdWUpCiAJCQkJCXNq X2RlbnlfaW5kZXhlcyA9IGJtc19hZGRfbWVtYmVyKHNqX2RlbnlfaW5kZXhlcywgaSk7CkBAIC0x MTAyLDExICsxMTAxLDExIEBAIHBncGFfcGxhbm5lcl9hcHBseV9qb2luX3BhdGhfYWR2aWNlKEpv aW5UeXBlIGpvaW50eXBlLCB1aW50NjQgKnBnc19tYXNrX3AsCiAJCShqb19kZW55X2luZGV4ZXMg IT0gTlVMTCB8fCBqb19kZW55X3JlbF9pbmRleGVzICE9IE5VTEwpKQogCXsKIAkJcGdwYV90cm92 ZV9zZXRfZmxhZ3MocGpzLT5qb2luX2VudHJpZXMsIGpvX3Blcm1pdF9pbmRleGVzLAotCQkJCQkJ CSBQR1BBX1RFX0NPTkZMSUNUSU5HKTsKKwkJCQkJCQkgUEdQQV9GQl9DT05GTElDVElORyk7CiAJ CXBncGFfdHJvdmVfc2V0X2ZsYWdzKHBqcy0+am9pbl9lbnRyaWVzLCBqb19kZW55X2luZGV4ZXMs Ci0JCQkJCQkJIFBHUEFfVEVfQ09ORkxJQ1RJTkcpOworCQkJCQkJCSBQR1BBX0ZCX0NPTkZMSUNU SU5HKTsKIAkJcGdwYV90cm92ZV9zZXRfZmxhZ3MocGpzLT5yZWxfZW50cmllcywgam9fZGVueV9y ZWxfaW5kZXhlcywKLQkJCQkJCQkgUEdQQV9URV9DT05GTElDVElORyk7CisJCQkJCQkJIFBHUEFf RkJfQ09ORkxJQ1RJTkcpOwogCX0KIAogCS8qCkBAIC0xMTE1LDE1ICsxMTE0LDE1IEBAIHBncGFf cGxhbm5lcl9hcHBseV9qb2luX3BhdGhfYWR2aWNlKEpvaW5UeXBlIGpvaW50eXBlLCB1aW50NjQg KnBnc19tYXNrX3AsCiAJICovCiAJaWYgKGptX2NvbmZsaWN0KQogCQlwZ3BhX3Ryb3ZlX3NldF9m bGFncyhwanMtPmpvaW5fZW50cmllcywgam1faW5kZXhlcywKLQkJCQkJCQkgUEdQQV9URV9DT05G TElDVElORyk7CisJCQkJCQkJIFBHUEFfRkJfQ09ORkxJQ1RJTkcpOwogCiAJLyogSWYgc2VtaWpv aW4gYWR2aWNlIHNheXMgYm90aCB5ZXMgYW5kIG5vLCBtYXJrIGl0IGFsbCBhcyBjb25mbGljdGlu Zy4gKi8KIAlpZiAoc2pfcGVybWl0X2luZGV4ZXMgIT0gTlVMTCAmJiBzal9kZW55X2luZGV4ZXMg IT0gTlVMTCkKIAl7CiAJCXBncGFfdHJvdmVfc2V0X2ZsYWdzKHBqcy0+am9pbl9lbnRyaWVzLCBz al9wZXJtaXRfaW5kZXhlcywKLQkJCQkJCQkgUEdQQV9URV9DT05GTElDVElORyk7CisJCQkJCQkJ IFBHUEFfRkJfQ09ORkxJQ1RJTkcpOwogCQlwZ3BhX3Ryb3ZlX3NldF9mbGFncyhwanMtPmpvaW5f ZW50cmllcywgc2pfZGVueV9pbmRleGVzLAotCQkJCQkJCSBQR1BBX1RFX0NPTkZMSUNUSU5HKTsK KwkJCQkJCQkgUEdQQV9GQl9DT05GTElDVElORyk7CiAJfQogCiAJLyoKQEAgLTEyMDAsNyArMTE5 OSw3IEBAIHBncGFfam9pbl9vcmRlcl9wZXJtaXRzX2pvaW4oaW50IG91dGVyX2NvdW50LCBpbnQg aW5uZXJfY291bnQsCiAJcGdwYV9hZHZpY2VfdGFyZ2V0ICpwcmVmaXhfdGFyZ2V0OwogCiAJLyog V2UgZGVmaW5pdGVseSBoYXZlIGF0IGxlYXN0IGEgcGFydGlhbCBtYXRjaCBmb3IgdGhpcyB0cm92 ZSBlbnRyeS4gKi8KLQllbnRyeS0+ZmxhZ3MgfD0gUEdQQV9URV9NQVRDSF9QQVJUSUFMOworCWVu dHJ5LT5mbGFncyB8PSBQR1BBX0ZCX01BVENIX1BBUlRJQUw7CiAKIAkvKgogCSAqIEZpbmQgdGhl IGlubmVybW9zdCBzdWJsaXN0IHRoYXQgY29udGFpbnMgYWxsIGtleXM7IGlmIG5vIHN1Ymxpc3Qg ZG9lcywKQEAgLTEzMDgsNyArMTMwNyw3IEBAIHBncGFfam9pbl9vcmRlcl9wZXJtaXRzX2pvaW4o aW50IG91dGVyX2NvdW50LCBpbnQgaW5uZXJfY291bnQsCiAJCSAqIGFuc3dlciBpcyB5ZXMuCiAJ CSAqLwogCQlpZiAoIXN1Ymxpc3QgJiYgb3V0ZXJfbGVuZ3RoICsgMSA9PSBsZW5ndGggJiYgaXRt ID09IFBHUEFfSVRNX0VRVUFMKQotCQkJZW50cnktPmZsYWdzIHw9IFBHUEFfVEVfTUFUQ0hfRlVM TDsKKwkJCWVudHJ5LT5mbGFncyB8PSBQR1BBX0ZCX01BVENIX0ZVTEw7CiAKIAkJcmV0dXJuIChp dG0gPT0gUEdQQV9JVE1fRVFVQUwpID8gUEdQQV9KT19QRVJNSVRURUQgOiBQR1BBX0pPX0RFTklF RDsKIAl9CkBAIC0xMzM0LDcgKzEzMzMsNyBAQCBwZ3BhX2pvaW5fb3JkZXJfcGVybWl0c19qb2lu KGludCBvdXRlcl9jb3VudCwgaW50IGlubmVyX2NvdW50LAogCSAqIGpvaW5pbmcgdDEtdDIgdG8g dGhlIHJlc3VsdCB3b3VsZCBzdGlsbCBiZSByZWplY3RlZC4KIAkgKi8KIAlpZiAoIXN1Ymxpc3Qp Ci0JCWVudHJ5LT5mbGFncyB8PSBQR1BBX1RFX01BVENIX0ZVTEw7CisJCWVudHJ5LT5mbGFncyB8 PSBQR1BBX0ZCX01BVENIX0ZVTEw7CiAJcmV0dXJuIHN1Ymxpc3QgPyBQR1BBX0pPX0RFTklFRCA6 IFBHUEFfSk9fUEVSTUlUVEVEOwogfQogCkBAIC0xMzY1LDcgKzEzNjQsNyBAQCBwZ3BhX2pvaW5f bWV0aG9kX3Blcm1pdHNfam9pbihpbnQgb3V0ZXJfY291bnQsIGludCBpbm5lcl9jb3VudCwKIAlw Z3BhX2l0bV90eXBlIGpvaW5faXRtOwogCiAJLyogV2UgZGVmaW5pdGVseSBoYXZlIGF0IGxlYXN0 IGEgcGFydGlhbCBtYXRjaCBmb3IgdGhpcyB0cm92ZSBlbnRyeS4gKi8KLQllbnRyeS0+ZmxhZ3Mg fD0gUEdQQV9URV9NQVRDSF9QQVJUSUFMOworCWVudHJ5LT5mbGFncyB8PSBQR1BBX0ZCX01BVENI X1BBUlRJQUw7CiAKIAkqcmVzdHJpY3RfbWV0aG9kID0gZmFsc2U7CiAKQEAgLTEzODIsNyArMTM4 MSw3IEBAIHBncGFfam9pbl9tZXRob2RfcGVybWl0c19qb2luKGludCBvdXRlcl9jb3VudCwgaW50 IGlubmVyX2NvdW50LAogCQkJCQkJCQkJCQkgIHRhcmdldCk7CiAJaWYgKGlubmVyX2l0bSA9PSBQ R1BBX0lUTV9FUVVBTCkKIAl7Ci0JCWVudHJ5LT5mbGFncyB8PSBQR1BBX1RFX01BVENIX0ZVTEw7 CisJCWVudHJ5LT5mbGFncyB8PSBQR1BBX0ZCX01BVENIX0ZVTEw7CiAJCSpyZXN0cmljdF9tZXRo b2QgPSB0cnVlOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CkBAIC0xNDY5LDcgKzE0NjgsNyBAQCBwZ3Bh X29wYXF1ZV9qb2luX3Blcm1pdHNfam9pbihpbnQgb3V0ZXJfY291bnQsIGludCBpbm5lcl9jb3Vu dCwKIAlwZ3BhX2l0bV90eXBlIGpvaW5faXRtOwogCiAJLyogV2UgZGVmaW5pdGVseSBoYXZlIGF0 IGxlYXN0IGEgcGFydGlhbCBtYXRjaCBmb3IgdGhpcyB0cm92ZSBlbnRyeS4gKi8KLQllbnRyeS0+ ZmxhZ3MgfD0gUEdQQV9URV9NQVRDSF9QQVJUSUFMOworCWVudHJ5LT5mbGFncyB8PSBQR1BBX0ZC X01BVENIX1BBUlRJQUw7CiAKIAkqcmVzdHJpY3RfbWV0aG9kID0gZmFsc2U7CiAKQEAgLTE0ODEs NyArMTQ4MCw3IEBAIHBncGFfb3BhcXVlX2pvaW5fcGVybWl0c19qb2luKGludCBvdXRlcl9jb3Vu dCwgaW50IGlubmVyX2NvdW50LAogCQkgKiBXZSBoYXZlIGFuIGV4YWN0IG1hdGNoLCBhbmQgc2hv dWxkIHRoZXJlZm9yZSBhbGxvdyB0aGUgam9pbiBhbmQKIAkJICogZW5mb3JjZSB0aGUgdXNlIG9m IHRoZSByZWxldmFudCBvcGFxdWUgam9pbiBtZXRob2QuCiAJCSAqLwotCQllbnRyeS0+ZmxhZ3Mg fD0gUEdQQV9URV9NQVRDSF9GVUxMOworCQllbnRyeS0+ZmxhZ3MgfD0gUEdQQV9GQl9NQVRDSF9G VUxMOwogCQkqcmVzdHJpY3RfbWV0aG9kID0gdHJ1ZTsKIAkJcmV0dXJuIHRydWU7CiAJfQpAQCAt MTUzOSw3ICsxNTM4LDcgQEAgcGdwYV9zZW1pam9pbl9wZXJtaXRzX2pvaW4oaW50IG91dGVyX2Nv dW50LCBpbnQgaW5uZXJfY291bnQsCiAJKnJlc3RyaWN0X21ldGhvZCA9IGZhbHNlOwogCiAJLyog V2UgZGVmaW5pdGVseSBoYXZlIGF0IGxlYXN0IGEgcGFydGlhbCBtYXRjaCBmb3IgdGhpcyB0cm92 ZSBlbnRyeS4gKi8KLQllbnRyeS0+ZmxhZ3MgfD0gUEdQQV9URV9NQVRDSF9QQVJUSUFMOworCWVu dHJ5LT5mbGFncyB8PSBQR1BBX0ZCX01BVENIX1BBUlRJQUw7CiAKIAkvKgogCSAqIElmIG91dGVy IHJlbCBpcyB0aGUgbnVsbGFibGUgc2lkZSBhbmQgY29udGFpbnMgZXhhY3RseSB0aGUgc2FtZQpA QCAtMTU1NSw3ICsxNTU0LDcgQEAgcGdwYV9zZW1pam9pbl9wZXJtaXRzX2pvaW4oaW50IG91dGVy X2NvdW50LCBpbnQgaW5uZXJfY291bnQsCiAJCQkJCQkJCQkJCSAgcmlkcywgdGFyZ2V0KTsKIAlp ZiAob3V0ZXJfaXRtID09IFBHUEFfSVRNX0VRVUFMKQogCXsKLQkJZW50cnktPmZsYWdzIHw9IFBH UEFfVEVfTUFUQ0hfRlVMTDsKKwkJZW50cnktPmZsYWdzIHw9IFBHUEFfRkJfTUFUQ0hfRlVMTDsK IAkJaWYgKG91dGVyX2lzX251bGxhYmxlKQogCQl7CiAJCQkqcmVzdHJpY3RfbWV0aG9kID0gdHJ1 ZTsKQEAgLTE1NzEsNyArMTU3MCw3IEBAIHBncGFfc2VtaWpvaW5fcGVybWl0c19qb2luKGludCBv dXRlcl9jb3VudCwgaW50IGlubmVyX2NvdW50LAogCQkJCQkJCQkJCQkgIHRhcmdldCk7CiAJaWYg KGlubmVyX2l0bSA9PSBQR1BBX0lUTV9FUVVBTCkKIAl7Ci0JCWVudHJ5LT5mbGFncyB8PSBQR1BB X1RFX01BVENIX0ZVTEw7CisJCWVudHJ5LT5mbGFncyB8PSBQR1BBX0ZCX01BVENIX0ZVTEw7CiAJ CWlmICghb3V0ZXJfaXNfbnVsbGFibGUpCiAJCXsKIAkJCSpyZXN0cmljdF9tZXRob2QgPSB0cnVl OwpAQCAtMTc5OCw3ICsxNzk3LDcgQEAgcGdwYV9wbGFubmVyX2FwcGx5X3NjYW5fYWR2aWNlKFJl bE9wdEluZm8gKnJlbCwKIAogCQkJLyogTWFyayBhZHZpY2UgYXMgaW5hcHBsaWNhYmxlLiAqLwog CQkJcGdwYV90cm92ZV9zZXRfZmxhZ3Moc2Nhbl9lbnRyaWVzLCBzY2FuX3R5cGVfaW5kZXhlcywK LQkJCQkJCQkJIFBHUEFfVEVfSU5BUFBMSUNBQkxFKTsKKwkJCQkJCQkJIFBHUEFfRkJfSU5BUFBM SUNBQkxFKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTE4MTUsOSArMTgxNCw5IEBAIHBncGFfcGxh bm5lcl9hcHBseV9zY2FuX2FkdmljZShSZWxPcHRJbmZvICpyZWwsCiAJICogTWFyayBhbGwgdGhl IHNjYW4gbWV0aG9kIGVudHJpZXMgYXMgZnVsbHkgbWF0Y2hlZDsgYW5kIGlmIHRoZXkgc3BlY2lm eQogCSAqIGRpZmZlcmVudCB0aGluZ3MsIG1hcmsgdGhlbSBhbGwgYXMgY29uZmxpY3RpbmcuCiAJ ICovCi0JZmxhZ3MgPSBQR1BBX1RFX01BVENIX1BBUlRJQUwgfCBQR1BBX1RFX01BVENIX0ZVTEw7 CisJZmxhZ3MgPSBQR1BBX0ZCX01BVENIX1BBUlRJQUwgfCBQR1BBX0ZCX01BVENIX0ZVTEw7CiAJ aWYgKHNjYW5fdHlwZV9jb25mbGljdCkKLQkJZmxhZ3MgfD0gUEdQQV9URV9DT05GTElDVElORzsK KwkJZmxhZ3MgfD0gUEdQQV9GQl9DT05GTElDVElORzsKIAlwZ3BhX3Ryb3ZlX3NldF9mbGFncyhz Y2FuX2VudHJpZXMsIHNjYW5fdHlwZV9pbmRleGVzLCBmbGFncyk7CiAJcGdwYV90cm92ZV9zZXRf ZmxhZ3MocmVsX2VudHJpZXMsIHNjYW5fdHlwZV9yZWxfaW5kZXhlcywgZmxhZ3MpOwogCkBAIC0x ODI2LDExICsxODI1LDExIEBAIHBncGFfcGxhbm5lcl9hcHBseV9zY2FuX2FkdmljZShSZWxPcHRJ bmZvICpyZWwsCiAJICogdGhlIG9uZXMgdGhhdCBpbmNsdWRlZCB0aGlzIHJlbGF0aW9uIGFzIGEg dGFyZ2V0IGJ5IGl0c2VsZiBhcyBmdWxseQogCSAqIG1hdGNoZWQuIElmIHRoZXJlIHdhcyBhIGNv bmZsaWN0LCBtYXJrIHRoZW0gYWxsIGFzIGNvbmZsaWN0aW5nLgogCSAqLwotCWZsYWdzID0gUEdQ QV9URV9NQVRDSF9QQVJUSUFMOworCWZsYWdzID0gUEdQQV9GQl9NQVRDSF9QQVJUSUFMOwogCWlm IChnYXRoZXJfY29uZmxpY3QpCi0JCWZsYWdzIHw9IFBHUEFfVEVfQ09ORkxJQ1RJTkc7CisJCWZs YWdzIHw9IFBHUEFfRkJfQ09ORkxJQ1RJTkc7CiAJcGdwYV90cm92ZV9zZXRfZmxhZ3MocmVsX2Vu dHJpZXMsIGdhdGhlcl9wYXJ0aWFsX21hdGNoLCBmbGFncyk7Ci0JZmxhZ3MgfD0gUEdQQV9URV9N QVRDSF9GVUxMOworCWZsYWdzIHw9IFBHUEFfRkJfTUFUQ0hfRlVMTDsKIAlwZ3BhX3Ryb3ZlX3Nl dF9mbGFncyhyZWxfZW50cmllcywgZ2F0aGVyX2Z1bGxfbWF0Y2gsIGZsYWdzKTsKIAogCS8qCkBA IC0xODU2LDcgKzE4NTUsNyBAQCBwZ3BhX3BsYW5uZXJfYXBwbHlfc2Nhbl9hZHZpY2UoUmVsT3B0 SW5mbyAqcmVsLAogICoKICAqIEZlZWRiYWNrIGVudHJpZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRo ZSB0cm92ZSBlbnRyeSdzIGZsYWdzLiBJdCdzIGFzc3VtZWQKICAqIHRoYXQgdGhlIGNhbGxlciBo YXMgYWxyZWFkeSBzZXQgYWxsIHJlbGV2YW50IGZsYWdzIHdpdGggdGhlIGV4Y2VwdGlvbiBvZgot ICogUEdQQV9URV9GQUlMRUQuIFdlIHNldCB0aGF0IGZsYWcgaGVyZSBpZiBhcHByb3ByaWF0ZS4K KyAqIFBHUEFfRkJfRkFJTEVELiBXZSBzZXQgdGhhdCBmbGFnIGhlcmUgaWYgYXBwcm9wcmlhdGUu CiAgKi8KIHN0YXRpYyBMaXN0ICoKIHBncGFfcGxhbm5lcl9hcHBlbmRfZmVlZGJhY2soTGlzdCAq bGlzdCwgcGdwYV90cm92ZSAqdHJvdmUsCkBAIC0xODc4LDEwICsxODc3LDEwIEBAIHBncGFfcGxh bm5lcl9hcHBlbmRfZmVlZGJhY2soTGlzdCAqbGlzdCwgcGdwYV90cm92ZSAqdHJvdmUsCiAJCSAq IGZyb20gdGhpcyBwbGFuIHdvdWxkIHByb2R1Y2Ugc3VjaCBhbiBlbnRyeS4gSWYgbm90LCBsYWJl bCB0aGUgZW50cnkKIAkJICogYXMgZmFpbGVkLgogCQkgKi8KLQkJaWYgKChlbnRyeS0+ZmxhZ3Mg JiBQR1BBX1RFX01BVENIX0ZVTEwpICE9IDAgJiYKKwkJaWYgKChlbnRyeS0+ZmxhZ3MgJiBQR1BB X0ZCX01BVENIX0ZVTEwpICE9IDAgJiYKIAkJCSFwZ3BhX3dhbGtlcl93b3VsZF9hZHZpc2Uod2Fs a2VyLCBydF9pZGVudGlmaWVycywKIAkJCQkJCQkJCSAgZW50cnktPnRhZywgZW50cnktPnRhcmdl dCkpCi0JCQllbnRyeS0+ZmxhZ3MgfD0gUEdQQV9URV9GQUlMRUQ7CisJCQllbnRyeS0+ZmxhZ3Mg fD0gUEdQQV9GQl9GQUlMRUQ7CiAKIAkJaXRlbSA9IG1ha2VEZWZFbGVtKHBncGFfY3N0cmluZ190 cm92ZV9lbnRyeShlbnRyeSksCiAJCQkJCQkgICAoTm9kZSAqKSBtYWtlSW50ZWdlcihlbnRyeS0+ ZmxhZ3MpLCAtMSk7CkBAIC0xODk1LDcgKzE4OTQsNyBAQCBwZ3BhX3BsYW5uZXJfYXBwZW5kX2Zl ZWRiYWNrKExpc3QgKmxpc3QsIHBncGFfdHJvdmUgKnRyb3ZlLAogICogRW1pdCBhIFdBUk5JTkcg dG8gdGVsbCB0aGUgdXNlciBhYm91dCBhIHByb2JsZW0gd2l0aCB0aGUgc3VwcGxpZWQgcGxhbgog ICogYWR2aWNlLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogcGdwYV9wbGFubmVyX2ZlZWRiYWNr X3dhcm5pbmcoTGlzdCAqZmVlZGJhY2spCiB7CiAJU3RyaW5nSW5mb0RhdGEgZGV0YWlsYnVmOwpA QCAtMTkyMCw3ICsxOTE5LDcgQEAgcGdwYV9wbGFubmVyX2ZlZWRiYWNrX3dhcm5pbmcoTGlzdCAq ZmVlZGJhY2spCiAJCSAqIE5COiBGZWVkYmFjayBzaG91bGQgbmV2ZXIgYmUgbWFya2VkIGZ1bGx5 IG1hdGNoZWQgd2l0aG91dCBhbHNvCiAJCSAqIGJlaW5nIG1hcmtlZCBwYXJ0aWFsbHkgbWF0Y2hl ZC4KIAkJICovCi0JCWlmIChmbGFncyA9PSAoUEdQQV9URV9NQVRDSF9QQVJUSUFMIHwgUEdQQV9U RV9NQVRDSF9GVUxMKSkKKwkJaWYgKGZsYWdzID09IChQR1BBX0ZCX01BVENIX1BBUlRJQUwgfCBQ R1BBX0ZCX01BVENIX0ZVTEwpKQogCQkJY29udGludWU7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9wbGFubmVyLmggYi9jb250cmliL3BnX3BsYW5fYWR2 aWNlL3BncGFfcGxhbm5lci5oCmluZGV4IDMyODA4YjI2NTk0Li4zNjYxNDJhMGM5MiAxMDA2NDQK LS0tIGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3BsYW5uZXIuaAorKysgYi9jb250cmli L3BnX3BsYW5fYWR2aWNlL3BncGFfcGxhbm5lci5oCkBAIC03Niw0ICs3Niw3IEBAIHR5cGVkZWYg c3RydWN0IHBncGFfcGxhbm5lcl9pbmZvCiAgKi8KIGV4dGVybiBpbnQJcGdwYV9wbGFubmVyX2dl bmVyYXRlX2FkdmljZTsKIAorLyogTXVzdCBiZSBleHBvcnRlZCBmb3IgdXNlIGJ5IHRlc3RfcGxh bl9hZHZpY2UgKi8KK2V4dGVybiBQR0RMTEVYUE9SVCB2b2lkIHBncGFfcGxhbm5lcl9mZWVkYmFj a193YXJuaW5nKExpc3QgKmZlZWRiYWNrKTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9jb250cmli L3BnX3BsYW5fYWR2aWNlL3BncGFfdHJvdmUuYyBiL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdw YV90cm92ZS5jCmluZGV4IDdhZGUwYjVjYTljLi4wNWE3M2NiODRkZCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3Ryb3ZlLmMKKysrIGIvY29udHJpYi9wZ19wbGFuX2Fk dmljZS9wZ3BhX3Ryb3ZlLmMKQEAgLTIzLDYgKzIzLDcgQEAKICAqLwogI2luY2x1ZGUgInBvc3Rn cmVzLmgiCiAKKyNpbmNsdWRlICJwZ19wbGFuX2FkdmljZS5oIgogI2luY2x1ZGUgInBncGFfdHJv dmUuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm5fdW5zdGFibGUuaCIKQEAgLTMyMSw3ICsz MjIsNyBAQCBwZ3BhX2NzdHJpbmdfdHJvdmVfZW50cnkocGdwYV90cm92ZV9lbnRyeSAqZW50cnkp CiB9CiAKIC8qCi0gKiBTZXQgUEdQQV9URV8qIGZsYWdzIG9uIGEgc2V0IG9mIHRyb3ZlIGVudHJp ZXMuCisgKiBTZXQgUEdQQV9GQl8qIGZsYWdzIG9uIGEgc2V0IG9mIHRyb3ZlIGVudHJpZXMuCiAg Ki8KIHZvaWQKIHBncGFfdHJvdmVfc2V0X2ZsYWdzKHBncGFfdHJvdmVfZW50cnkgKmVudHJpZXMs IEJpdG1hcHNldCAqaW5kZXhlcywgaW50IGZsYWdzKQpAQCAtMzM3LDI2ICszMzgsMjYgQEAgcGdw YV90cm92ZV9zZXRfZmxhZ3MocGdwYV90cm92ZV9lbnRyeSAqZW50cmllcywgQml0bWFwc2V0ICpp bmRleGVzLCBpbnQgZmxhZ3MpCiB9CiAKIC8qCi0gKiBBcHBlbmQgYSBzdHJpbmcgcmVwcmVzZW50 YXRpb24gb2YgdGhlIHNwZWNpZmllZCBQR1BBX1RFXyogZmxhZ3MgdG8gdGhlCisgKiBBcHBlbmQg YSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllZCBQR1BBX0ZCXyogZmxhZ3Mg dG8gdGhlCiAgKiBnaXZlbiBTdHJpbmdJbmZvLgogICovCiB2b2lkCiBwZ3BhX3Ryb3ZlX2FwcGVu ZF9mbGFncyhTdHJpbmdJbmZvIGJ1ZiwgaW50IGZsYWdzKQogewotCWlmICgoZmxhZ3MgJiBQR1BB X1RFX01BVENIX0ZVTEwpICE9IDApCisJaWYgKChmbGFncyAmIFBHUEFfRkJfTUFUQ0hfRlVMTCkg IT0gMCkKIAl7Ci0JCUFzc2VydCgoZmxhZ3MgJiBQR1BBX1RFX01BVENIX1BBUlRJQUwpICE9IDAp OworCQlBc3NlcnQoKGZsYWdzICYgUEdQQV9GQl9NQVRDSF9QQVJUSUFMKSAhPSAwKTsKIAkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICJtYXRjaGVkIik7CiAJfQotCWVsc2UgaWYgKChmbGFncyAmIFBH UEFfVEVfTUFUQ0hfUEFSVElBTCkgIT0gMCkKKwllbHNlIGlmICgoZmxhZ3MgJiBQR1BBX0ZCX01B VENIX1BBUlRJQUwpICE9IDApCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicGFydGlhbGx5IG1h dGNoZWQiKTsKIAllbHNlCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAibm90IG1hdGNoZWQiKTsK LQlpZiAoKGZsYWdzICYgUEdQQV9URV9JTkFQUExJQ0FCTEUpICE9IDApCisJaWYgKChmbGFncyAm IFBHUEFfRkJfSU5BUFBMSUNBQkxFKSAhPSAwKQogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwg aW5hcHBsaWNhYmxlIik7Ci0JaWYgKChmbGFncyAmIFBHUEFfVEVfQ09ORkxJQ1RJTkcpICE9IDAp CisJaWYgKChmbGFncyAmIFBHUEFfRkJfQ09ORkxJQ1RJTkcpICE9IDApCiAJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiLCBjb25mbGljdGluZyIpOwotCWlmICgoZmxhZ3MgJiBQR1BBX1RFX0ZBSUxF RCkgIT0gMCkKKwlpZiAoKGZsYWdzICYgUEdQQV9GQl9GQUlMRUQpICE9IDApCiAJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiLCBmYWlsZWQiKTsKIH0KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19w bGFuX2FkdmljZS9wZ3BhX3Ryb3ZlLmggYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfdHJv dmUuaAppbmRleCAyMmZlM2E2MjBmNy4uZjNhZmM5NmQ2NjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfcGxhbl9hZHZpY2UvcGdwYV90cm92ZS5oCisrKyBiL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2Uv cGdwYV90cm92ZS5oCkBAIC0xOSwzNiArMTksNiBAQAogCiB0eXBlZGVmIHN0cnVjdCBwZ3BhX3Ry b3ZlIHBncGFfdHJvdmU7CiAKLS8qCi0gKiBGbGFncyB0aGF0IGNhbiBiZSBzZXQgb24gYSBwZ3Bh X3Ryb3ZlX2VudHJ5IHRvIGluZGljYXRlIHdoYXQgaGFwcGVuZWQgd2hlbgotICogdHJ5aW5nIHRv IHBsYW4gdXNpbmcgYWR2aWNlLgotICoKLSAqIFBHUEFfVEVfTUFUQ0hfUEFSVElBTCBtZWFucyB0 aGF0IHdlIGZvdW5kIHNvbWUgcGFydCBvZiB0aGUgcXVlcnkgdGhhdCBhdAotICogbGVhc3QgcGFy dGlhbGx5IG1hdGNoZWQgdGhlIHRhcmdldDsgZS5nLiBnaXZlbiBKT0lOX09SREVSKGEgYiksIHRo aXMgd291bGQKLSAqIGJlIHNldCBpZiB3ZSBldmVyIHNhdyBhbnkgam9pbnJlbCBpbmNsdWRpbmcg ZWl0aGVyICJhIiBvciAiYiIuCi0gKgotICogUEdQQV9URV9NQVRDSF9GVUxMIG1lYW5zIHRoYXQg d2UgZm91bmQgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSB0YXJnZXQ7IGUuZy4KLSAqIGdpdmVuIEpP SU5fT1JERVIoYSBiKSwgdGhpcyB3b3VsZCBiZSBzZXQgaWYgd2Ugc2F3IGEgam9pbnJlbCBjb250 YWluaW5nCi0gKiBleGFjdGx5ICJhIiBhbmQgImIiIGFuZCBub3RoaW5nIGVsc2UuCi0gKgotICog UEdQQV9URV9JTkFQUExJQ0FCTEUgbWVhbnMgdGhhdCB0aGUgYWR2aWNlIGRvZXNuJ3QgcHJvcGVy bHkgYXBwbHkgdG8gdGhlCi0gKiB0YXJnZXQ7IGUuZy4gSU5ERVhfU0NBTihmb28gYmFyX2lkeCkg d291bGQgYmUgc28gbWFya2VkIGlmIGJhcl9pZHggZG9lcyBub3QKLSAqIGV4aXN0IG9uIGZvby4g VGhlIGZhY3QgdGhhdCB0aGlzIGJpdCBoYXMgYmVlbiBzZXQgZG9lcyBub3QgbWVhbiB0aGF0IHRo ZQotICogYWR2aWNlIGhhZCBubyBlZmZlY3QuCi0gKgotICogUEdQQV9URV9DT05GTElDVElORyBt ZWFucyB0aGF0IGEgY29uZmxpY3Qgd2FzIGRldGVjdGVkIGJldHdlZW4gd2hhdCB0aGlzCi0gKiBh ZHZpY2Ugd2FudHMgYW5kIHdoYXQgc29tZSBvdGhlciBwbGFuIGFkdmljZSB3YW50czsgZS5nLiBK T0lOX09SREVSKGEgYikKLSAqIHdvdWxkIGNvbmZsaWN0IHdpdGggSEFTSF9KT0lOKGEpLCBiZWNh dXNlIHRoZSBmb3JtZXIgcmVxdWlyZXMgImEiIHRvIGJlIHRoZQotICogb3V0ZXIgdGFibGUgd2hp bGUgdGhlIGxhdHRlciByZXF1aXJlcyBpdCB0byBiZSB0aGUgaW5uZXIgdGFibGUuCi0gKgotICog UEdQQV9URV9GQUlMRUQgbWVhbnMgdGhhdCB0aGUgcmVzdWx0aW5nIHBsYW4gZGlkIG5vdCBjb25m b3JtIHRvIHRoZSBhZHZpY2UuCi0gKi8KLSNkZWZpbmUgUEdQQV9URV9NQVRDSF9QQVJUSUFMCQkw eDAwMDEKLSNkZWZpbmUgUEdQQV9URV9NQVRDSF9GVUxMCQkJMHgwMDAyCi0jZGVmaW5lIFBHUEFf VEVfSU5BUFBMSUNBQkxFCQkweDAwMDQKLSNkZWZpbmUgUEdQQV9URV9DT05GTElDVElORwkJCTB4 MDAwOAotI2RlZmluZSBQR1BBX1RFX0ZBSUxFRAkJCQkweDAwMTAKLQogLyoKICAqIEVhY2ggZW50 cnkgaW4gYSB0cm92ZSBvZiBhZHZpY2UgcmVwcmVzZW50cyB0aGUgYXBwbGljYXRpb24gb2YgYSB0 YWcgdG8KICAqIGEgc2luZ2xlIHRhcmdldC4KLS0gCjIuNTEuMAoK --0000000000000a3d9c064ee55e86 Content-Type: application/octet-stream; name="v26-0005-pg_plan_advice-Fix-a-bug-when-a-subquery-is-prun.patch" Content-Disposition: attachment; filename="v26-0005-pg_plan_advice-Fix-a-bug-when-a-subquery-is-prun.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp49lak4 RnJvbSA5MzUwYWYyNmE4OGJjODJiMzhlYWY2M2ZiZWE0Y2VhZjgwZmQ4NjkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IFR1ZSwgNyBBcHIgMjAyNiAxNjo1NjozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI2IDUv NV0gcGdfcGxhbl9hZHZpY2U6IEZpeCBhIGJ1ZyB3aGVuIGEgc3VicXVlcnkgaXMgcHJ1bmVkCiBh d2F5IGVudGlyZWx5LgoKSWYgYSBzdWJxdWVyeSBpcyBwcm92ZW4gZW1wdHksIGFuZCBpZiB0aGF0 IHN1YnF1ZXJ5IGNvbnRhaW5lZCBhCnNlbWlqb2luLCBhbmQgaWYgbWFraW5nIG9uZSBzaWRlIG9y IHRoZSBvdGhlciBvZiB0aGF0IHNlbWlqb2luCnVuaXF1ZSBhbmQgcGVyZm9ybWluZyBhbiBpbm5l ciBqb2luIHdhcyBhIHBvc3NpYmxlIHN0cmF0ZWd5LCB0aGVuCnRoZSBwcmV2aW91cyBjb2RlIHdv dWxkIGZhaWwgd2l0aCBFUlJPUjogbm8gcnRvZmZzZXQgZm9yIHBsYW4gJXMKd2hlbiBhdHRlbXB0 aW5nIHRvIGdlbmVyYXRlIGFkdmljZS4gRml4IHRoYXQuCgpSZXBvcnRlZC1ieTogQWxleGFuZGVy IExha2hpbiA8ZXhjbHVzaW9uQGdtYWlsLmNvbT4KLS0tCiBjb250cmliL3BnX3BsYW5fYWR2aWNl L2V4cGVjdGVkL3NlbWlqb2luLm91dCB8IDE3ICsrKysrKysrKysrKwogY29udHJpYi9wZ19wbGFu X2FkdmljZS9wZ3BhX3BsYW5uZXIuYyAgICAgICAgfCAyOCArKysrKysrKysrKy0tLS0tLS0tLQog Y29udHJpYi9wZ19wbGFuX2FkdmljZS9zcWwvc2VtaWpvaW4uc3FsICAgICAgfCAgOSArKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvZXhwZWN0ZWQvc2VtaWpvaW4ub3V0IGIv Y29udHJpYi9wZ19wbGFuX2FkdmljZS9leHBlY3RlZC9zZW1pam9pbi5vdXQKaW5kZXggNTU1MWMw MjhhMWYuLjY4MGRlMjE1MTE3IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL2V4 cGVjdGVkL3NlbWlqb2luLm91dAorKysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL2V4cGVjdGVk L3NlbWlqb2luLm91dApAQCAtMzc1LDMgKzM3NSwyMCBAQCBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMDApIGcsIHNqX25hcnJvdyBzIFdIRVJFIGcgPSBzLnZhbDE7CiAoMTMgcm93 cykKIAogQ09NTUlUOworLS0gVGVzdCB0aGUgY2FzZSB3aGVyZSB0aGUgc3VicXVlcnkgY29udGFp bmluZyBhIHNlbWlqb2luIGlzIHJlbW92ZWQgZnJvbQorLS0gdGhlIHF1ZXJ5IGVudGlyZWx5OyB0 aGlzIHRlc3QgaXMganVzdCB0byBtYWtlIHN1cmUgdGhhdCBhZHZpY2UgZ2VuZXJhdGlvbgorLS0g ZG9lcyBub3QgZmFpbC4KK0VYUExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCitTRUxFQ1Qg KiBGUk9NCisJKFNFTEVDVCAqIEZST00gc2pfbmFycm93IFdIRVJFIGlkIElOIChTRUxFQ1QgdmFs MSBGUk9NIHNqX3dpZGUpCisJIExJTUlUIDEpIHgsCisJTEFURVJBTCAoU0VMRUNUIDEgV0hFUkUg ZmFsc2UpIHk7CisgICAgICAgIFFVRVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBSZXN1bHQKKyAgIFJlcGxhY2VzOiBTY2FuIG9uIHgKKyAgIE9uZS1UaW1lIEZp bHRlcjogZmFsc2UKKyBHZW5lcmF0ZWQgUGxhbiBBZHZpY2U6CisgICBOT19HQVRIRVIoeCkKKyg1 IHJvd3MpCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9wbGFubmVy LmMgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfcGxhbm5lci5jCmluZGV4IDg2YjM3ZTc5 YjU3Li43MmVmMzIzMGFiYyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3Bh X3BsYW5uZXIuYworKysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfcGxhbm5lci5jCkBA IC0yMDY1LDYgKzIwNjUsOSBAQCBwZ3BhX2NvbXB1dGVfcnRfaWRlbnRpZmllcihwZ3BhX3BsYW5u ZXJfaW5mbyAqcHJvb3QsIFBsYW5uZXJJbmZvICpyb290LAogLyoKICAqIENvbXB1dGUgdGhlIHJh bmdlIHRhYmxlIG9mZnNldCBmb3IgZWFjaCBwZ3BhX3BsYW5uZXJfaW5mbyBmb3Igd2hpY2ggaXQK ICAqIGlzIHBvc3NpYmxlIHRvIG1lYW5pbmdmdWxseSBkbyBzby4KKyAqCisgKiBGb3IgcGdwYV9w bGFubmVyX2luZm8gb2JqZWN0cyBmb3Igd2hpY2ggbm8gUlQgb2Zmc2V0IGNhbiBiZSBjb21wdXRl ZCwKKyAqIGNsZWFyIHNqX3VuaXF1ZV9yZWxzLCB3aGljaCBpcyBtZWFuaW5nbGVzcyBpbiBzdWNo IGNhc2VzLgogICovCiBzdGF0aWMgdm9pZAogcGdwYV9jb21wdXRlX3J0X29mZnNldHMocGdwYV9w bGFubmVyX3N0YXRlICpwcHMsIFBsYW5uZWRTdG10ICpwc3RtdCkKQEAgLTIwOTYsMjMgKzIwOTks MjQgQEAgcGdwYV9jb21wdXRlX3J0X29mZnNldHMocGdwYV9wbGFubmVyX3N0YXRlICpwcHMsIFBs YW5uZWRTdG10ICpwc3RtdCkKIAkJCQkgKiB0aGVyZSdzIG5vIGZpeGVkIHJ0b2Zmc2V0IHRoYXQg d2UgY2FuIGFwcGx5IHRvIHRoZSBSVElzCiAJCQkJICogdXNlZCBkdXJpbmcgcGxhbm5pbmcgdG8g bG9jYXRlIHRoZSBjb3JyZXNwb25kaW5nIHJlbGF0aW9ucy4KIAkJCQkgKi8KLQkJCQlpZiAocnRp bmZvLT5kdW1teSkKKwkJCQlpZiAoIXJ0aW5mby0+ZHVtbXkpCiAJCQkJewotCQkJCQkvKgotCQkJ CQkgKiBJdCB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byBtYWtlIGFueSBlZmZlY3RpdmUgdXNlIG9m Ci0JCQkJCSAqIHRoZSBzal91bmlxdWVfcmVscyBsaXN0IGluIHRoaXMgY2FzZSwgYW5kIGl0IGFs c28gd29uJ3QKLQkJCQkJICogYmUgaW1wb3J0YW50IHRvIGRvIHNvLiBTbyBqdXN0IHRocm93IHRo ZSBsaXN0IGF3YXkgdG8KLQkJCQkJICogYXZvaWQgY29uZnVzaW5nIHBncGFfcGxhbl93YWxrZXIu Ci0JCQkJCSAqLwotCQkJCQlwcm9vdC0+c2pfdW5pcXVlX3JlbHMgPSBOSUw7Ci0JCQkJCWJyZWFr OworCQkJCQlBc3NlcnQoIXByb290LT5oYXNfcnRvZmZzZXQpOworCQkJCQlwcm9vdC0+aGFzX3J0 b2Zmc2V0ID0gdHJ1ZTsKKwkJCQkJcHJvb3QtPnJ0b2Zmc2V0ID0gcnRpbmZvLT5ydG9mZnNldDsK IAkJCQl9Ci0JCQkJQXNzZXJ0KCFwcm9vdC0+aGFzX3J0b2Zmc2V0KTsKLQkJCQlwcm9vdC0+aGFz X3J0b2Zmc2V0ID0gdHJ1ZTsKLQkJCQlwcm9vdC0+cnRvZmZzZXQgPSBydGluZm8tPnJ0b2Zmc2V0 OwogCQkJCWJyZWFrOwogCQkJfQogCQl9CisKKwkJLyoKKwkJICogSWYgd2UgZGlkbid0IGVuZCB1 cCBzZXR0aW5nIGhhc19ydG9mZnNldCwgdGhlbiBpdCB3aWxsIG5vdCBiZQorCQkgKiBwb3NzaWJs ZSB0byBtYWtlIGFueSBlZmZlY3RpdmUgdXNlIG9mIHNqX3VuaXF1ZV9yZWxzLCBhbmQgaXQgYWxz bworCQkgKiB3b24ndCBiZSBpbXBvcnRhbnQgdG8gZG8gc28uICBTbyBqdXN0IHRocm93IHRoZSBs aXN0IGF3YXkgdG8gYXZvaWQKKwkJICogY29uZnVzaW5nIHBncGFfcGxhbl93YWxrZXIuCisJCSAq LworCQlpZiAoIXByb290LT5oYXNfcnRvZmZzZXQpCisJCQlwcm9vdC0+c2pfdW5pcXVlX3JlbHMg PSBOSUw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3NxbC9z ZW1pam9pbi5zcWwgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3NxbC9zZW1pam9pbi5zcWwKaW5k ZXggNWE0YWU1MmQxZDkuLjg3M2YwZDM3NjZjIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3BsYW5f YWR2aWNlL3NxbC9zZW1pam9pbi5zcWwKKysrIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9zcWwv c2VtaWpvaW4uc3FsCkBAIC0xMTYsMyArMTE2LDEyIEBAIFNFVCBMT0NBTCBwZ19wbGFuX2Fkdmlj ZS5hZHZpY2UgPSAnc2VtaWpvaW5fdW5pcXVlKGcpJzsKIEVYUExBSU4gKENPU1RTIE9GRiwgUExB Tl9BRFZJQ0UpCiBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIGcsIHNqX25h cnJvdyBzIFdIRVJFIGcgPSBzLnZhbDE7CiBDT01NSVQ7CisKKy0tIFRlc3QgdGhlIGNhc2Ugd2hl cmUgdGhlIHN1YnF1ZXJ5IGNvbnRhaW5pbmcgYSBzZW1pam9pbiBpcyByZW1vdmVkIGZyb20KKy0t IHRoZSBxdWVyeSBlbnRpcmVseTsgdGhpcyB0ZXN0IGlzIGp1c3QgdG8gbWFrZSBzdXJlIHRoYXQg YWR2aWNlIGdlbmVyYXRpb24KKy0tIGRvZXMgbm90IGZhaWwuCitFWFBMQUlOIChDT1NUUyBPRkYs IFBMQU5fQURWSUNFKQorU0VMRUNUICogRlJPTQorCShTRUxFQ1QgKiBGUk9NIHNqX25hcnJvdyBX SEVSRSBpZCBJTiAoU0VMRUNUIHZhbDEgRlJPTSBzal93aWRlKQorCSBMSU1JVCAxKSB4LAorCUxB VEVSQUwgKFNFTEVDVCAxIFdIRVJFIGZhbHNlKSB5OwotLSAKMi41MS4wCgo= --0000000000000a3d9c064ee55e86 Content-Type: application/octet-stream; name="v26-0002-test_plan_advice-Guard-against-advice-instabilit.patch" Content-Disposition: attachment; filename="v26-0002-test_plan_advice-Guard-against-advice-instabilit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp49lab1 RnJvbSA2MDNjMmUzZDIwOTgyYmIwNjU1YzQyMWQ2ZWJlNWYyMjdhZjU3NmNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IFR1ZSwgNyBBcHIgMjAyNiAxMzo0NjowNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI2IDIv NV0gdGVzdF9wbGFuX2FkdmljZTogR3VhcmQgYWdhaW5zdCBhZHZpY2UgaW5zdGFiaWxpdHkgYnkK IHJlcGxhbm5pbmcuCgpJdCB0dXJucyBvdXQgdGhhdCBvdXIgbWFpbiByZWdyZXNzaW9uIHRlc3Qg c3VpdGUgcXVlcmllcyB0YWJsZXMgdXBvbgp3aGljaCBjb25jdXJyZW50IERETCBpcyBvY2N1cnJp bmcsIHdoaWNoIGNhbiwgcmFyZWx5LCBjYXVzZQp0ZXN0X3BsYW5fYWR2aWNlIGZhaWx1cmVzLiBG b3IgZXhhbXBsZSwgaWYgdGVzdF9wbGFuX2FkdmljZSBwbGFucwp0aGUgcXVlcnkgYW5kIGdlbmVy YXRlcyBJTkRFWF9TQ0FOKGEgYikgYWR2aWNlLCBhbmQgdGhlbiB0aGUgaW5kZXgKaXMgZHJvcHBl ZCBiZWZvcmUgdGhlIHF1ZXJ5IGlzIHJlcGxhbm5lZCB3aXRoIHRoYXQgYXMgdGhlIHN1cHBsaWVk CmFkdmljZSwgdGhlIGFkdmljZSB3aWxsIG5vdCBhcHBseSBjbGVhbmx5IGFuZCB0aGUgdGVzdHMg d2lsbCBmYWlsLgpTdWNoIGZhaWx1cmVzIGFyZSBhcHBhcmVudGx5IHF1aXRlIHJhcmUsIGJ1dCB0 aGV5IGRvIG9jY3VyLgoKSW4gYW4gYXR0ZW1wdCB0byByZWR1Y2UgdGhlIGZhaWx1cmUgcmF0ZSB0 byBzb21ldGhpbmcgbmVnbGlnaWJsZSwKdGhpcyBjb21taXQgbWFrZXMgdGVzdF9wbGFuX2Fkdmlj ZSBkcml2ZSB0aGUgbWFpbiBwbGFubmVyIGluIGEKbG9vcC4gV2UgcGxhbiBvbmNlLCBnZW5lcmF0 aW5nIGFkdmljZTsgdGhlbiBhZ2FpbiwgYXBwbHlpbmcgdGhhdAphZHZpY2UuIElmIHRoZSBhZHZp Y2UgZG9lc24ndCBhcHBseSBjbGVhbmx5LCB3ZSBkbyB0aGUgd2hvbGUgdGhpbmcKb3ZlciBhZ2Fp biBmcm9tIHRoZSB0b3AuIElmIGl0IGZhaWxzIGluIHRoZSBzYW1lIHdheSB0d2ljZSAoc2FtZQph ZHZpY2UsIHNhbWUgZmVlZGJhY2spIG9yIGlmIHdlIHJ1biBvdXQgb2YgcmV0cmllcywgd2UgZW1p dCBhCndhcm5pbmcgYW5kIHN0b3AuIFByb2JsZW1zIHRoYXQgY2hhbmdlIG9yIHZhbmlzaCBvbiBy ZXRyeSBhcmUKYXNzdW1lZCB0byBiZSBlcGhlbWVyYWwuCgpSZXBvcnRlZC1ieTogVG9tIExhbmUg PHRnbEBzc3MucGdoLnBhLnVzPgotLS0KIC4uLi90ZXN0X3BsYW5fYWR2aWNlL3QvMDAxX3JlcGxh bl9yZWdyZXNzLnBsICB8ICAgMiArLQogLi4uL3Rlc3RfcGxhbl9hZHZpY2UvdGVzdF9wbGFuX2Fk dmljZS5jICAgICAgIHwgMjMzICsrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAy MDQgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3BsYW5fYWR2aWNlL3QvMDAxX3JlcGxhbl9yZWdyZXNzLnBsIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3BsYW5fYWR2aWNlL3QvMDAxX3JlcGxhbl9yZWdyZXNzLnBsCmluZGV4 IDM4ZmZhNGQxMWFlLi5lNDNiODBiYzg1ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3BsYW5fYWR2aWNlL3QvMDAxX3JlcGxhbl9yZWdyZXNzLnBsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9wbGFuX2FkdmljZS90LzAwMV9yZXBsYW5fcmVncmVzcy5wbApAQCAtMTksNyAr MTksNyBAQCAkbm9kZS0+aW5pdCgpOwogJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCA8PEVPTSk7CiBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXM9J3Rlc3RfcGxhbl9hZHZpY2Un CiBwZ19wbGFuX2FkdmljZS5hbHdheXNfZXhwbGFpbl9zdXBwbGllZF9hZHZpY2U9ZmFsc2UKLXBn X3BsYW5fYWR2aWNlLmZlZWRiYWNrX3dhcm5pbmdzPXRydWUKK3Rlc3RfcGxhbl9hZHZpY2UubWF4 X2F0dGVtcHRzPTMKIEVPTQogJG5vZGUtPnN0YXJ0OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfcGxhbl9hZHZpY2UvdGVzdF9wbGFuX2FkdmljZS5jIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3BsYW5fYWR2aWNlL3Rlc3RfcGxhbl9hZHZpY2UuYwppbmRleCBjZmY1MDM5YjVj OC4uYzE3MTE1NzA3YjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wbGFuX2Fk dmljZS90ZXN0X3BsYW5fYWR2aWNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BsYW5f YWR2aWNlL3Rlc3RfcGxhbl9hZHZpY2UuYwpAQCAtMTksMjAgKzE5LDM4IEBACiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRp bWl6ZXIuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5oIgogI2luY2x1ZGUgInBnX3Bs YW5fYWR2aWNlLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAKIFBHX01PRFVMRV9NQUdJQzsK IAorc3RhdGljIGludAl0ZXN0X3BsYW5fYWR2aWNlX21heF9hdHRlbXB0cyA9IDE7CiBzdGF0aWMg Ym9vbCBpbl9yZWN1cnNpb24gPSBmYWxzZTsKK3N0YXRpYyB2b2lkICgqZmVlZGJhY2tfd2Fybmlu Z19mbikgKExpc3QgKmZlZWRiYWNrKTsKK3N0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3Bs YW5uZXJfaG9vayA9IE5VTEw7CiAKK3N0YXRpYyBQbGFubmVkU3RtdCAqdGVzdF9wbGFuX2Fkdmlj ZV9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKKwkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZywKKwkJCQkJCQkJCQkJIGludCBjdXJzb3JPcHRpb25zLAorCQkJCQkJCQkJCQkgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQkJCQkJCQkJIEV4cGxhaW5TdGF0ZSAqZXMpOwogc3Rh dGljIGNoYXIgKnRlc3RfcGxhbl9hZHZpY2VfYWR2aXNvcihQbGFubmVyR2xvYmFsICpnbG9iLAog CQkJCQkJCQkJICBRdWVyeSAqcGFyc2UsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZywKIAkJCQkJCQkJCSAgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCQkgIEV4cGxhaW5T dGF0ZSAqZXMpOworc3RhdGljIFBsYW5uZWRTdG10ICpjb3B5X2FuZF9wbGFuX3F1ZXJ5KFF1ZXJ5 ICpwYXJzZSwKKwkJCQkJCQkJCQljb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCisJCQkJCQkJCQkJ aW50IGN1cnNvck9wdGlvbnMsCisJCQkJCQkJCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywK KwkJCQkJCQkJCQlFeHBsYWluU3RhdGUgKmVzLAorCQkJCQkJCQkJCWJvb2wgc3VwcHJlc3NfbWVz c2FnZXMpOworc3RhdGljIExpc3QgKmV4dHJhY3RfZmVlZGJhY2soUGxhbm5lZFN0bXQgKnBzdG10 KTsKK3N0YXRpYyBib29sIGFsbF9mZWVkYmFja19pc19vayhMaXN0ICpmZWVkYmFjayk7CiBzdGF0 aWMgRGVmRWxlbSAqZmluZF9kZWZlbGVtX2J5X2RlZm5hbWUoTGlzdCAqZGVmbGlzdCwgY2hhciAq ZGVmbmFtZSk7CiAKIC8qCkBAIC00Myw2ICs2MSwyMSBAQCBfUEdfaW5pdCh2b2lkKQogewogCXZv aWQJCSgqYWRkX2Fkdmlzb3JfZm4pIChwZ19wbGFuX2FkdmljZV9hZHZpc29yX2hvb2sgaG9vayk7 CiAKKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgidGVzdF9wbGFuX2FkdmljZS5tYXhfYXR0ZW1w dHMiLAorCQkJCQkJCSJNYXhpbXVtIG51bWJlciBvZiBwbGFubmluZyBhdHRlbXB0cyBiZWZvcmUg IgorCQkJCQkJCSJyZXBvcnRpbmcgZmVlZGJhY2sgd2FybmluZ3MuIiwKKwkJCQkJCQlOVUxMLAor CQkJCQkJCSZ0ZXN0X3BsYW5fYWR2aWNlX21heF9hdHRlbXB0cywKKwkJCQkJCQkxLCAxLCAxMCwK KwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworCU1h cmtHVUNQcmVmaXhSZXNlcnZlZCgidGVzdF9wbGFuX2FkdmljZSIpOworCisJLyogSW5zdGFsbCBv dXIgcGxhbm5lciBob29rLiAqLworCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwor CXBsYW5uZXJfaG9vayA9IHRlc3RfcGxhbl9hZHZpY2VfcGxhbm5lcjsKKwogCS8qCiAJICogQXNr IHBnX3BsYW5fYWR2aWNlIHRvIGdldCBhZHZpY2Ugc3RyaW5ncyBmcm9tIHRlc3RfcGxhbl9hZHZp Y2VfYWR2aXNvcgogCSAqLwpAQCAtNTEsNiArODQsNzggQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJ CQkgICB0cnVlLCBOVUxMKTsKIAogCSgqYWRkX2Fkdmlzb3JfZm4pICh0ZXN0X3BsYW5fYWR2aWNl X2Fkdmlzb3IpOworCisJLyoKKwkgKiBHZXQgYSBwb2ludGVyIHRvIHBnX3BsYW5fYWR2aWNlJ3Mg ZnVuY3Rpb24gZm9yIGVtaXR0aW5nIGZlZWRiYWNrCisJICogd2FybmluZ3MuCisJICovCisJZmVl ZGJhY2tfd2FybmluZ19mbiA9CisJCWxvYWRfZXh0ZXJuYWxfZnVuY3Rpb24oInBnX3BsYW5fYWR2 aWNlIiwKKwkJCQkJCQkgICAicGdwYV9wbGFubmVyX2ZlZWRiYWNrX3dhcm5pbmciLAorCQkJCQkJ CSAgIHRydWUsIE5VTEwpOworfQorCisvKgorICogUGxhbm5lciBob29rIHRoYXQgcmV0cmllcyBw bGFubmluZyB3aGVuIGZlZWRiYWNrIGluZGljYXRlcyBhIHByb2JsZW0uCisgKgorICogV2hlbiB0 aGUgY2F0YWxvZyBjaGFuZ2VzIGJldHdlZW4gdGhlIGZpcnN0IHBsYW4gKHdoaWNoIGdlbmVyYXRl cyBhZHZpY2UpCisgKiBhbmQgdGhlIHNlY29uZCBwbGFuICh3aGljaCB1c2VzIHRoYXQgYWR2aWNl KSwgdGhlIGFkdmljZSBjYW4gcmVmZXJlbmNlCisgKiBvYmplY3RzIHRoYXQgbm8gbG9uZ2VyIGV4 aXN0IG9yIHJlZmxlY3Qgc3RhbGUgc3RhdGlzdGljcy4gIFRvIGF2b2lkCisgKiBzcHVyaW91cyB3 YXJuaW5ncywgd2UgcmV0cnkgcGxhbm5pbmcgdXAgdG8gdGVzdF9wbGFuX2FkdmljZS5tYXhfYXR0 ZW1wdHMKKyAqIHRpbWVzLiAgSWYgdGhlIGZlZWRiYWNrIHN0YWJpbGl6ZXMgKGkuZS4gaXMgdGhl IHNhbWUgYXMgdGhlIHByZXZpb3VzCisgKiBhdHRlbXB0KSwgd2UgY29uY2x1ZGUgdGhlIHByb2Js ZW0gaXMgZ2VudWluZSBhbmQgZW1pdCB3YXJuaW5ncy4KKyAqLworc3RhdGljIFBsYW5uZWRTdG10 ICoKK3Rlc3RfcGxhbl9hZHZpY2VfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1 ZXJ5X3N0cmluZywKKwkJCQkJCSBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcywKKwkJCQkJCSBFeHBsYWluU3RhdGUgKmVzKQoreworCVBsYW5uZWRTdG10ICpwc3Rt dDsKKwlMaXN0CSAgICpmZWVkYmFjazsKKwlMaXN0CSAgICpwcmV2X2ZlZWRiYWNrID0gTklMOwor CisJZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0X3BsYW5fYWR2aWNlX21heF9hdHRlbXB0czsgKytp KQorCXsKKwkJLyoKKwkJICogVHJ5IHBsYW5uaW5nIHRoZSBxdWVyeS4gT24gdGhlIGZpcnN0IGl0 ZXJhdGlvbiwgd2UgZG9uJ3QgbmVlZCBvcgorCQkgKiB3YW50IHRvIHN1cHByZXNzIGFueSB3YXJu aW5ncyBvciBvdGhlciBjaGF0dGVyIHRoYXQgdGhlIHBsYW5uZXIgaXMKKwkJICogZ29pbmcgdG8g Z2VuZXJhdGUsIGJlY2F1c2Ugb3VyIGdvYWwgaGVyZSBpcyB0byBnZXQgdGhlIHNhbWUgb3V0cHV0 CisJCSAqIHRoYXQgd291bGQgaGF2ZSBvY2N1cnJlZCB3aXRob3V0IHRoaXMgbW9kdWxlLiBCdXQg b24gdGhlIHNlY29uZCBhbmQKKwkJICogbGF0ZXIgaXRlcmF0aW9ucywgdGhhdCBvdXRwdXQgaGFz IGFscmVhZHkgYmVlbiBwcm9kdWNlZCwgc28gd2UKKwkJICogZG9uJ3Qgd2FudCBpdCB0byBhcHBl YXIgYWdhaW4uCisJCSAqLworCQlwc3RtdCA9IGNvcHlfYW5kX3BsYW5fcXVlcnkocGFyc2UsIHF1 ZXJ5X3N0cmluZywgY3Vyc29yT3B0aW9ucywKKwkJCQkJCQkJCWJvdW5kUGFyYW1zLCBlcywgKGkg PiAwKSk7CisKKwkJLyogRXh0cmFjdCBmZWVkYmFjay4gKi8KKwkJZmVlZGJhY2sgPSBleHRyYWN0 X2ZlZWRiYWNrKHBzdG10KTsKKworCQkvKiBJZiBubyBwcm9ibGVtcyB3ZXJlIGRldGVjdGVkLCBz dG9wLiAqLworCQlpZiAoYWxsX2ZlZWRiYWNrX2lzX29rKGZlZWRiYWNrKSkKKwkJCWJyZWFrOwor CisJCS8qCisJCSAqIElmIHRoZSBmZWVkYmFjayBpcyB0aGUgc2FtZSBhcyBsYXN0IHRpbWUsIHRo ZW4gYXBwYXJlbnRseSB0aGVyZSdzCisJCSAqIGEgcmVhbCBwcm9ibGVtLCBzbyBlbWl0IHdhcm5p bmdzIGFuZCBzdG9wLiBJZiB0aGlzIGlzIHRoZSBsYXN0CisJCSAqIGl0ZXJhdGlvbiwgaXQncyBs ZXNzIGNsZWFyIHRoYXQgdGhlcmUncyBhIHJlYWwgcHJvYmxlbSwgYnV0IGlmIG5vdCwKKwkJICog dGhlIHVzZXIgaGFzbid0IHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBoaWdoIGVu b3VnaCwgc28KKwkJICogaGFuZGxlIHRoYXQgY2FzZSB0aGUgc2FtZSB3YXkuCisJCSAqLworCQlp ZiAoZXF1YWwoZmVlZGJhY2ssIHByZXZfZmVlZGJhY2spIHx8CisJCQlpID09IHRlc3RfcGxhbl9h ZHZpY2VfbWF4X2F0dGVtcHRzIC0gMSkKKwkJeworCQkJKCpmZWVkYmFja193YXJuaW5nX2ZuKSAo ZmVlZGJhY2spOworCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkgKiBHbyBhcm91bmQgYW5kIHRy eSBpdCBhZ2Fpbiwgd2l0aCB0aGUgbmV3bHktZ2VuZXJhdGVkIGZlZWRiYWNrIGFzCisJCSAqIHRo ZSBuZXcgcG9pbnQgb2YgY29tcGFyaXNvbi4KKwkJICovCisJCXByZXZfZmVlZGJhY2sgPSBmZWVk YmFjazsKKwl9CisKKwlyZXR1cm4gcHN0bXQ7CiB9CiAKIC8qCkBAIC02Myw3ICsxNjgsNiBAQCB0 ZXN0X3BsYW5fYWR2aWNlX2Fkdmlzb3IoUGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNl LAogCQkJCQkJIEV4cGxhaW5TdGF0ZSAqZXMpCiB7CiAJUGxhbm5lZFN0bXQgKnBzdG10OwotCWlu dAkJCXNhdmVfbmVzdGxldmVsID0gMDsKIAlEZWZFbGVtICAgICpwZ3BhX2l0ZW07CiAJRGVmRWxl bSAgICAqYWR2aWNlX3N0cmluZ19pdGVtOwogCkBAIC03NCwzNSArMTc4LDE4IEBAIHRlc3RfcGxh bl9hZHZpY2VfYWR2aXNvcihQbGFubmVyR2xvYmFsICpnbG9iLCBRdWVyeSAqcGFyc2UsCiAJaWYg KGluX3JlY3Vyc2lvbikKIAkJcmV0dXJuIE5VTEw7CiAKKwkvKgorCSAqIFRyeSBwbGFubmluZyB0 aGUgcXVlcnksIGdlbmVyYXRpbmcgYWR2aWNlIGluIHRoZSBwcm9jZXNzLiBXZSBhc2sKKwkgKiBj b3B5X2FuZF9wbGFuX3F1ZXJ5IHRvIGFkanVzdCBjbGllbnRfbWluX21lc3NhZ2VzOyBvdGhlcndp c2UsIGFueQorCSAqIG1lc3NhZ2VzIHRoYXQgYXJlIGdlbmVyYXRlZCBkdXJpbmcgcGxhbm5pbmcg d291bGQgYXBwZWFyIGhlcmUgYW5kIGFnYWluCisJICogd2hlbiB0aGUgcXVlcnkgaXMgcmVwbGFu bmVkIHdpdGggdGhlIGFkdmljZSBzdHJpbmcuCisJICovCiAJUEdfVFJZKCk7CiAJewogCQlpbl9y ZWN1cnNpb24gPSB0cnVlOwogCi0JCS8qCi0JCSAqIFBsYW5uaW5nIGNhbiB0cmlnZ2VyIGV4cHJl c3Npb24gZXZhbHVhdGlvbiwgd2hpY2ggY2FuIHJlc3VsdCBpbgotCQkgKiBzZW5kaW5nIE5PVElD RSBtZXNzYWdlcyBvciBvdGhlciBvdXRwdXQgdG8gdGhlIGNsaWVudC4gVG8gYXZvaWQKLQkJICog dGhhdCwgd2Ugc2V0IGNsaWVudF9taW5fbWVzc2FnZXMgPSBFUlJPUiBpbiB0aGUgaG9wZXMgb2Yg Z2V0dGluZwotCQkgKiB0aGUgc2FtZSBvdXRwdXQgd2l0aCBhbmQgd2l0aG91dCB0aGlzIG1vZHVs ZS4KLQkJICoKLQkJICogV2UgYWxzbyBuZWVkIHRvIHNldCBwZ19wbGFuX2FkdmljZS5hbHdheXNf c3RvcmVfYWR2aWNlX2RldGFpbHMgc28KLQkJICogdGhhdCBwZ19wbGFuX2FkdmljZSB3aWxsIGdl bmVyYXRlIGFuIGFkdmljZSBzdHJpbmcsIHNpbmNlIHRoZSB3aG9sZQotCQkgKiBwb2ludCBvZiB0 aGlzIGZ1bmN0aW9uIGlzIHRvIGdldCBhY2Nlc3MgdG8gdGhhdC4KLQkJICovCi0JCXNhdmVfbmVz dGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7Ci0JCXNldF9jb25maWdfb3B0aW9uKCJjbGllbnRf bWluX21lc3NhZ2VzIiwgImVycm9yIiwKLQkJCQkJCSAgUEdDX1NVU0VULCBQR0NfU19TRVNTSU9O LAotCQkJCQkJICBHVUNfQUNUSU9OX1NBVkUsIHRydWUsIDAsIGZhbHNlKTsKLQkJc2V0X2NvbmZp Z19vcHRpb24oInBnX3BsYW5fYWR2aWNlLmFsd2F5c19zdG9yZV9hZHZpY2VfZGV0YWlscyIsICJ0 cnVlIiwKLQkJCQkJCSAgUEdDX1NVU0VULCBQR0NfU19TRVNTSU9OLAotCQkJCQkJICBHVUNfQUNU SU9OX1NBVkUsIHRydWUsIDAsIGZhbHNlKTsKLQotCQkvKgotCQkgKiBSZXBsYW4uIFdlIG11c3Qg Y29weSB0aGUgUXVlcnksIGJlY2F1c2UgdGhlIHBsYW5uZXIgbW9kaWZpZXMgaXQuCi0JCSAqIChB cyBub3RlZCBlbHNld2hlcmUsIHRoYXQncyB1bmZvcnR1bmF0ZTsgcGVyaGFwcyBpdCB3aWxsIGJl IGZpeGVkCi0JCSAqIHNvbWUgZGF5LikKLQkJICovCi0JCXBzdG10ID0gcGxhbm5lcihjb3B5T2Jq ZWN0KHBhcnNlKSwgcXVlcnlfc3RyaW5nLCBjdXJzb3JPcHRpb25zLAotCQkJCQkJZ2xvYi0+Ym91 bmRQYXJhbXMsIGVzKTsKKwkJcHN0bXQgPSBjb3B5X2FuZF9wbGFuX3F1ZXJ5KHBhcnNlLCBxdWVy eV9zdHJpbmcsIGN1cnNvck9wdGlvbnMsCisJCQkJCQkJCQlnbG9iLT5ib3VuZFBhcmFtcywgZXMs IHRydWUpOwogCX0KIAlQR19GSU5BTExZKCk7CiAJewpAQCAtMTEwLDEwICsxOTcsNiBAQCB0ZXN0 X3BsYW5fYWR2aWNlX2Fkdmlzb3IoUGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNlLAog CX0KIAlQR19FTkRfVFJZKCk7CiAKLQkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzICovCi0J aWYgKHNhdmVfbmVzdGxldmVsID4gMCkKLQkJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3Rs ZXZlbCk7Ci0KIAkvKiBFeHRyYWN0IGFuZCByZXR1cm4gdGhlIGFkdmljZSBzdHJpbmcgKi8KIAlw Z3BhX2l0ZW0gPSBmaW5kX2RlZmVsZW1fYnlfZGVmbmFtZShwc3RtdC0+ZXh0ZW5zaW9uX3N0YXRl LAogCQkJCQkJCQkJCSJwZ19wbGFuX2FkdmljZSIpOwpAQCAtMTI3LDYgKzIxMCw5NiBAQCB0ZXN0 X3BsYW5fYWR2aWNlX2Fkdmlzb3IoUGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNlLAog CXJldHVybiBzdHJWYWwoYWR2aWNlX3N0cmluZ19pdGVtLT5hcmcpOwogfQogCisvKgorICogV3Jh cHBlciBhcm91bmQgdGhlIG1haW4gcXVlcnkgcGxhbm5lci4KKyAqLworc3RhdGljIFBsYW5uZWRT dG10ICoKK2NvcHlfYW5kX3BsYW5fcXVlcnkoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVy eV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAorCQkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCQlib29sIHN1cHByZXNzX21lc3NhZ2VzKQorewor CWludAkJCXNhdmVfbmVzdGxldmVsID0gMDsKKwlQbGFubmVkU3RtdCAqcHN0bXQ7CisKKwkvKgor CSAqIFRlbXBvcmFyaWx5IHNldCBwZ19wbGFuX2FkdmljZS5hbHdheXNfc3RvcmVfYWR2aWNlX2Rl dGFpbHMuIEVpdGhlcgorCSAqIHdlJ3JlIGJlaW5nIGNhbGxlZCB0byBnZW5lcmF0ZSBhZHZpY2Us IGluIHdoaWNoIGNhc2Ugc2V0dGluZyB0aGlzIEdVQworCSAqIGlzIGltcG9ydGFudCB0byBtYWtl IHN1cmUgdGhhdCB3ZSBkbywgb3Igd2UncmUgYmVpbmcgY2FsbGVkIHRvIHNlZQorCSAqIHdoZXRo ZXIgc3VwcGxpZWQgYWR2aWNlIGFwcGxpZWQgcHJvcGVybHksIGluIHdoaWNoIGNhc2UgdGhpcyBp cyBuZWVkZWQKKwkgKiBzbyB0aGF0IHBnX3BsYW5fYWR2aWNlIHdpbGwgcHJvdmlkZSBmZWVkYmFj ay4KKwkgKi8KKwlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCXNldF9jb25m aWdfb3B0aW9uKCJwZ19wbGFuX2FkdmljZS5hbHdheXNfc3RvcmVfYWR2aWNlX2RldGFpbHMiLAor CQkJCQkgICJ0cnVlIiwKKwkJCQkJICBQR0NfU1VTRVQsIFBHQ19TX1NFU1NJT04sCisJCQkJCSAg R1VDX0FDVElPTl9TQVZFLCB0cnVlLCAwLCBmYWxzZSk7CisKKwkvKgorCSAqIFBsYW5uaW5nIGNh biB0cmlnZ2VyIGV4cHJlc3Npb24gZXZhbHVhdGlvbiwgd2hpY2ggY2FuIHJlc3VsdCBpbiBzZW5k aW5nCisJICogTk9USUNFIG1lc3NhZ2VzIG9yIG90aGVyIG91dHB1dCB0byB0aGUgY2xpZW50LiBU byBhdm9pZCB0aGF0LCB3ZSBhbGxvdworCSAqIHRoZSBjYWxsZXIgdG8gcmVxdWVzdCBjbGllbnRf bWluX21lc3NhZ2VzID0gRVJST1IgaW4gdGhlIGhvcGVzIG9mCisJICogZ2V0dGluZyB0aGUgc2Ft ZSBvdXRwdXQgd2l0aCBhbmQgd2l0aG91dCB0aGlzIG1vZHVsZS4KKwkgKi8KKwlpZiAoc3VwcHJl c3NfbWVzc2FnZXMpCisJCXNldF9jb25maWdfb3B0aW9uKCJjbGllbnRfbWluX21lc3NhZ2VzIiwg ImVycm9yIiwKKwkJCQkJCSAgUEdDX1NVU0VULCBQR0NfU19TRVNTSU9OLAorCQkJCQkJICBHVUNf QUNUSU9OX1NBVkUsIHRydWUsIDAsIGZhbHNlKTsKKworCS8qCisJICogV2UgbXVzdCBjb3B5IHRo ZSBRdWVyeSwgYmVjYXVzZSB0aGUgcGxhbm5lciBtb2RpZmllcyBpdCwgYW5kIHdlIGludGVuZAor CSAqIHRvIHBsYW4gaXQgbXVsdGlwbGUgdGltZXMuIChBcyBub3RlZCBlbHNld2hlcmUsIHRoYXQn cyB1bmZvcnR1bmF0ZTsKKwkgKiBwZXJoYXBzIGl0IHdpbGwgYmUgZml4ZWQgc29tZSBkYXkuKQor CSAqLworCWlmIChwcmV2X3BsYW5uZXJfaG9vaykKKwkJcHN0bXQgPSAoKnByZXZfcGxhbm5lcl9o b29rKSAoY29weU9iamVjdChwYXJzZSksIHF1ZXJ5X3N0cmluZywKKwkJCQkJCQkJCSAgY3Vyc29y T3B0aW9ucywgYm91bmRQYXJhbXMsIGVzKTsKKwllbHNlCisJCXBzdG10ID0gc3RhbmRhcmRfcGxh bm5lcihjb3B5T2JqZWN0KHBhcnNlKSwgcXVlcnlfc3RyaW5nLAorCQkJCQkJCQkgY3Vyc29yT3B0 aW9ucywgYm91bmRQYXJhbXMsIGVzKTsKKworCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMg Ki8KKwlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKKworCS8qIEFuZCB3ZSdy ZSBkb25lLiAqLworCXJldHVybiBwc3RtdDsKK30KKworLyoKKyAqIEV4dHJhY3QgdGhlIGZlZWRi YWNrIGxpc3QgZnJvbSBhIFBsYW5uZWRTdG10J3MgZXh0ZW5zaW9uX3N0YXRlLgorICogUmV0dXJu cyBOSUwgaWYgbm8gZmVlZGJhY2sgaXMgcHJlc2VudC4KKyAqLworc3RhdGljIExpc3QgKgorZXh0 cmFjdF9mZWVkYmFjayhQbGFubmVkU3RtdCAqcHN0bXQpCit7CisJRGVmRWxlbSAgICAqcGdwYV9p dGVtOworCURlZkVsZW0gICAgKmZlZWRiYWNrX2l0ZW07CisKKwlwZ3BhX2l0ZW0gPSBmaW5kX2Rl ZmVsZW1fYnlfZGVmbmFtZShwc3RtdC0+ZXh0ZW5zaW9uX3N0YXRlLAorCQkJCQkJCQkJCSJwZ19w bGFuX2FkdmljZSIpOworCWlmIChwZ3BhX2l0ZW0gPT0gTlVMTCkKKwkJcmV0dXJuIE5JTDsKKwlm ZWVkYmFja19pdGVtID0gZmluZF9kZWZlbGVtX2J5X2RlZm5hbWUoKExpc3QgKikgcGdwYV9pdGVt LT5hcmcsCisJCQkJCQkJCQkJCSJmZWVkYmFjayIpOworCWlmIChmZWVkYmFja19pdGVtID09IE5V TEwpCisJCXJldHVybiBOSUw7CisJcmV0dXJuIChMaXN0ICopIGZlZWRiYWNrX2l0ZW0tPmFyZzsK K30KKworLyoKKyAqIENoZWNrIHdoZXRoZXIgYSBmZWVkYmFjayBsaXN0IGluZGljYXRlcyB0aGF0 IGFsbCBhZHZpY2Ugd2FzIGFwcGxpZWQKKyAqIHN1Y2Nlc3NmdWxseS4KKyAqLworc3RhdGljIGJv b2wKK2FsbF9mZWVkYmFja19pc19vayhMaXN0ICpmZWVkYmFjaykKK3sKKwlmb3JlYWNoX25vZGUo RGVmRWxlbSwgaXRlbSwgZmVlZGJhY2spCisJeworCQlpZiAoZGVmR2V0SW50MzIoaXRlbSkgIT0g KFBHUEFfRkJfTUFUQ0hfUEFSVElBTCB8IFBHUEFfRkJfTUFUQ0hfRlVMTCkpCisJCQlyZXR1cm4g ZmFsc2U7CisJfQorCXJldHVybiB0cnVlOworfQorCiAvKgogICogU2VhcmNoIGEgbGlzdCBvZiBE ZWZFbGVtIG9iamVjdHMgZm9yIGEgZ2l2ZW4gZGVmbmFtZS4KICAqLwotLSAKMi41MS4wCgo= --0000000000000a3d9c064ee55e86 Content-Type: application/octet-stream; name="v26-0003-pg_plan_advice-Handle-non-repeatable-TABLESAMPLE.patch" Content-Disposition: attachment; filename="v26-0003-pg_plan_advice-Handle-non-repeatable-TABLESAMPLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp49laf2 RnJvbSAwZmNlMzVmY2I0MTI1Y2FiNzMzNThkZDEyMmZiYmFhODEwYWVlNWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IFR1ZSwgNyBBcHIgMjAyNiAxNjoxNzozNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI2IDMv NV0gcGdfcGxhbl9hZHZpY2U6IEhhbmRsZSBub24tcmVwZWF0YWJsZSBUQUJMRVNBTVBMRQogc2Nh bnMuCgpXaGVuIGEgdGFibGVzYW1wbGUgcm91dGluZSBzYXlzIHRoYXQgaXQgaXMgbm90IHJlcGVh dGFibGUgYWNyb3NzCnNjYW5zLCBzZXRfdGFibGVzYW1wbGVfcmVsX3BhdGhsaXN0IHdpbGwgKHVz dWFsbHkpIG1hdGVyaWFsaXplIGl0LApjb25mdXNpbmcgcGdfcGxhbl9hZHZpY2UncyBwbGFuIHdh bGtlciBtYWNoaW5lcnkuIFRvIGZpeCwgdXBkYXRlIHRoYXQKbWFjaGluZXJ5IHRvIHZpZXcgc3Vj aCBNYXRlcmlhbCBwYXRocyBhcyBlc3NlbnRpYWxseSBhbiBleHRlbnNpb24gb2YKdGhlIHVuZGVy bHlpbmcgc2Nhbi4KClJlcG9ydGVkLWJ5OiBBbGV4YW5kZXIgTGFraGluIDxleGNsdXNpb25AZ21h aWwuY29tPgotLS0KIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2UvTWFrZWZpbGUgICAgICAgICAgfCAg MiArKwogY29udHJpYi9wZ19wbGFuX2FkdmljZS9leHBlY3RlZC9zY2FuLm91dCB8IDM4ICsrKysr KysrKysrKysrKysrKysrKysrKwogY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX2pvaW4uYyAg ICAgICB8IDEyICsrKysrLS0tCiBjb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfc2Nhbi5jICAg ICAgIHwgMTEgKysrKysrKwogY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3dhbGtlci5jICAg ICB8IDI5ICsrKysrKysrKysrKysrKysrKwogY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3dh bGtlci5oICAgICB8ICAxICsKIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2Uvc3FsL3NjYW4uc3FsICAg ICAgfCAxMiArKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxMDEgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL01ha2VmaWxl IGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9NYWtlZmlsZQppbmRleCBjZDQ3OGRjMWE2ZC4uY2Jh ZmM1MGNhNGMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvTWFrZWZpbGUKKysr IGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9NYWtlZmlsZQpAQCAtMjIsNiArMjIsOCBAQCBQR0ZJ TEVERVNDID0gInBnX3BsYW5fYWR2aWNlIC0gaGVscCB0aGUgcGxhbm5lciBnZXQgdGhlIHJpZ2h0 IHBsYW4iCiBSRUdSRVNTID0gZ2F0aGVyIGpvaW5fb3JkZXIgam9pbl9zdHJhdGVneSBwYXJ0aXRp b253aXNlIHByZXBhcmVkIFwKIAlzY2FuIHNlbWlqb2luIHN5bnRheAogCitFWFRSQV9JTlNUQUxM ID0gY29udHJpYi90c21fc3lzdGVtX3RpbWUKKwogRVhUUkFfQ0xFQU4gPSBwZ3BhX3BhcnNlci5o IHBncGFfcGFyc2VyLmMgcGdwYV9zY2FubmVyLmMKIAogaWZkZWYgVVNFX1BHWFMKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvZXhwZWN0ZWQvc2Nhbi5vdXQgYi9jb250cmliL3Bn X3BsYW5fYWR2aWNlL2V4cGVjdGVkL3NjYW4ub3V0CmluZGV4IDQ0Y2U0MGYzM2E2Li5mNDAzNmU0 Y2JkZCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9leHBlY3RlZC9zY2FuLm91 dAorKysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL2V4cGVjdGVkL3NjYW4ub3V0CkBAIC03NzAs MyArNzcwLDQxIEBAIFNFTEVDVCAqIEZST00gKFNFTEVDVCAqIEZST00gc2Nhbl90YWJsZSBzIFdI RVJFIGEgPSAxIE9GRlNFVCAwKTsKICg3IHJvd3MpCiAKIENPTU1JVDsKKy0tIFRlc3QgYSBub24t cmVwZWF0YWJsZSB0YWJsZXNhbXBsZSBtZXRob2Qgd2l0aCBhIHNjYW4tbGV2ZWwgTWF0ZXJpYWxp emUuCitDUkVBVEUgRVhURU5TSU9OIHRzbV9zeXN0ZW1fdGltZTsKK0NSRUFURSBUQUJMRSBzY2Fu X3RzbSAoaSBpbnQpOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKK1NFTEVDVCAx IEZST00gKFNFTEVDVCBpIEZST00gc2Nhbl90c20gVEFCTEVTQU1QTEUgc3lzdGVtX3RpbWUgKDEw MDApKSwKKwlMQVRFUkFMIChTRUxFQ1QgaSBMSU1JVCAxKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAg U2FtcGxlIFNjYW4gb24gc2Nhbl90c20KKyAgICAgICAgICAgICAgIFNhbXBsaW5nOiBzeXN0ZW1f dGltZSAoJzEwMDAnOjpkb3VibGUgcHJlY2lzaW9uKQorICAgLT4gIExpbWl0CisgICAgICAgICAt PiAgUmVzdWx0CisgR2VuZXJhdGVkIFBsYW4gQWR2aWNlOgorICAgSk9JTl9PUkRFUihzY2FuX3Rz bSB1bm5hbWVkX3N1YnF1ZXJ5IzIpCisgICBORVNURURfTE9PUF9QTEFJTih1bm5hbWVkX3N1YnF1 ZXJ5IzIpCisgICBOT19HQVRIRVIodW5uYW1lZF9zdWJxdWVyeSMyIHNjYW5fdHNtICIqUkVTVUxU KiJAdW5uYW1lZF9zdWJxdWVyeSkKKygxMCByb3dzKQorCistLSBTYW1lLCBidXQgd2l0aCB0aGUg c2Nhbi1sZXZlbCBNYXRlcmlhbGl6ZSBvbiB0aGUgaW5uZXIgc2lkZSBvZiBhIGpvaW4uCitFWFBM QUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorU0VMRUNUIDEgRlJPTSAoU0VMRUNUIDEgQVMg eCBMSU1JVCAxKSwKKwlMQVRFUkFMIChTRUxFQ1QgeCBGUk9NIHNjYW5fdHNtIFRBQkxFU0FNUExF IHN5c3RlbV90aW1lICgxMDAwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQg TG9vcAorICAgLT4gIExpbWl0CisgICAgICAgICAtPiAgUmVzdWx0CisgICAtPiAgTWF0ZXJpYWxp emUKKyAgICAgICAgIC0+ICBTYW1wbGUgU2NhbiBvbiBzY2FuX3RzbQorICAgICAgICAgICAgICAg U2FtcGxpbmc6IHN5c3RlbV90aW1lICgnMTAwMCc6OmRvdWJsZSBwcmVjaXNpb24pCisgR2VuZXJh dGVkIFBsYW4gQWR2aWNlOgorICAgSk9JTl9PUkRFUih1bm5hbWVkX3N1YnF1ZXJ5IHNjYW5fdHNt KQorICAgTkVTVEVEX0xPT1BfUExBSU4oc2Nhbl90c20pCisgICBOT19HQVRIRVIodW5uYW1lZF9z dWJxdWVyeSBzY2FuX3RzbSAiKlJFU1VMVCoiQHVubmFtZWRfc3VicXVlcnkpCisoMTAgcm93cykK KwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX2pvaW4uYyBiL2NvbnRy aWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9qb2luLmMKaW5kZXggNDYxMGQwMjM1NmYuLjM4ZTdiOTFl ZDdlIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfam9pbi5jCisrKyBi L2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9qb2luLmMKQEAgLTM2Myw5ICszNjMsMTEgQEAg cGdwYV9kZWNvbXBvc2Vfam9pbihwZ3BhX3BsYW5fd2Fsa2VyX2NvbnRleHQgKndhbGtlciwgUGxh biAqcGxhbiwKIAkJCS8qCiAJCQkgKiBUaGUgcGxhbm5lciBtYXkgaGF2ZSBjaG9zZW4gdG8gcGxh Y2UgYSBNYXRlcmlhbCBub2RlIG9uIHRoZQogCQkJICogaW5uZXIgc2lkZSBvZiB0aGUgTWVyZ2VK b2luOyBpZiB0aGlzIGlzIHByZXNlbnQsIHdlIHJlY29yZCBpdAotCQkJICogYXMgcGFydCBvZiB0 aGUgam9pbiBzdHJhdGVneS4KKwkJCSAqIGFzIHBhcnQgb2YgdGhlIGpvaW4gc3RyYXRlZ3kuIChI b3dldmVyLCBzY2FuLWxldmVsIE1hdGVyaWFsaXplCisJCQkgKiBub2RlcyBhcmUgYW4gZXhjZXB0 aW9uLikKIAkJCSAqLwotCQkJaWYgKGVsaWRlZGlubmVyID09IE5VTEwgJiYgSXNBKGlubmVycGxh biwgTWF0ZXJpYWwpKQorCQkJaWYgKGVsaWRlZGlubmVyID09IE5VTEwgJiYgSXNBKGlubmVycGxh biwgTWF0ZXJpYWwpICYmCisJCQkJIXBncGFfaXNfc2Nhbl9sZXZlbF9tYXRlcmlhbGl6ZShpbm5l cnBsYW4pKQogCQkJewogCQkJCWVsaWRlZGlubmVyID0gcGdwYV9kZXNjZW5kX25vZGUocHN0bXQs ICZpbm5lcnBsYW4pOwogCQkJCXN0cmF0ZWd5ID0gSlNUUkFUX01FUkdFX0pPSU5fTUFURVJJQUxJ WkU7CkBAIC0zOTAsOSArMzkyLDExIEBAIHBncGFfZGVjb21wb3NlX2pvaW4ocGdwYV9wbGFuX3dh bGtlcl9jb250ZXh0ICp3YWxrZXIsIFBsYW4gKnBsYW4sCiAJCQkvKgogCQkJICogVGhlIHBsYW5u ZXIgbWF5IGhhdmUgY2hvc2VuIHRvIHBsYWNlIGEgTWF0ZXJpYWwgb3IgTWVtb2l6ZSBub2RlCiAJ CQkgKiBvbiB0aGUgaW5uZXIgc2lkZSBvZiB0aGUgTmVzdExvb3A7IGlmIHRoaXMgaXMgcHJlc2Vu dCwgd2UKLQkJCSAqIHJlY29yZCBpdCBhcyBwYXJ0IG9mIHRoZSBqb2luIHN0cmF0ZWd5LgorCQkJ ICogcmVjb3JkIGl0IGFzIHBhcnQgb2YgdGhlIGpvaW4gc3RyYXRlZ3kuIChIb3dldmVyLCBzY2Fu LWxldmVsCisJCQkgKiBNYXRlcmlhbGl6ZSBub2RlcyBhcmUgYW4gZXhjZXB0aW9uLikKIAkJCSAq LwotCQkJaWYgKGVsaWRlZGlubmVyID09IE5VTEwgJiYgSXNBKGlubmVycGxhbiwgTWF0ZXJpYWwp KQorCQkJaWYgKGVsaWRlZGlubmVyID09IE5VTEwgJiYgSXNBKGlubmVycGxhbiwgTWF0ZXJpYWwp ICYmCisJCQkJIXBncGFfaXNfc2Nhbl9sZXZlbF9tYXRlcmlhbGl6ZShpbm5lcnBsYW4pKQogCQkJ ewogCQkJCWVsaWRlZGlubmVyID0gcGdwYV9kZXNjZW5kX25vZGUocHN0bXQsICZpbm5lcnBsYW4p OwogCQkJCXN0cmF0ZWd5ID0gSlNUUkFUX05FU1RFRF9MT09QX01BVEVSSUFMSVpFOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3NjYW4uYyBiL2NvbnRyaWIvcGdfcGxh bl9hZHZpY2UvcGdwYV9zY2FuLmMKaW5kZXggMDQ2N2Y5YjEyYmEuLjIxYjU4YTBhYzQyIDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfc2Nhbi5jCisrKyBiL2NvbnRyaWIv cGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FuLmMKQEAgLTEyMCw2ICsxMjAsMTcgQEAgcGdwYV9idWls ZF9zY2FuKHBncGFfcGxhbl93YWxrZXJfY29udGV4dCAqd2Fsa2VyLCBQbGFuICpwbGFuLAogCQkJ CWJyZWFrOwogCQl9CiAJfQorCWVsc2UgaWYgKHBncGFfaXNfc2Nhbl9sZXZlbF9tYXRlcmlhbGl6 ZShwbGFuKSkKKwl7CisJCS8qCisJCSAqIE5vbi1yZXBlYXRhYmxlIHRhYmxlc2FtcGxlIG1ldGhv ZHMgY2FuIGJlIHdyYXBwZWQgaW4gYSBNYXRlcmlhbGl6ZQorCQkgKiBub2RlIHRoYXQgbXVzdCBi ZSB0cmVhdGVkIGFzIHBhcnQgb2YgdGhlIHNjYW4gaXRzZWxmLiBTZWUKKwkJICogc2V0X3RhYmxl c2FtcGxlX3JlbF9wYXRobGlzdCgpLgorCQkgKi8KKwkJcnRpID0gcGdwYV9zY2FucmVsaWQocGxh bi0+bGVmdHRyZWUpOworCQlyZWxpZHMgPSBibXNfbWFrZV9zaW5nbGV0b24ocnRpKTsKKwkJc3Ry YXRlZ3kgPSBQR1BBX1NDQU5fT1JESU5BUlk7CisJfQogCWVsc2UgaWYgKChyZWxpZHMgPSBwZ3Bh X3JlbGlkcyhwbGFuKSkgIT0gTlVMTCkKIAl7CiAJCXN3aXRjaCAobm9kZVRhZyhwbGFuKSkKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV93YWxrZXIuYyBiL2NvbnRyaWIv cGdfcGxhbl9hZHZpY2UvcGdwYV93YWxrZXIuYwppbmRleCBlMzI2ODRkMjA3NS4uZTQ5MzYxYWUy NjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV93YWxrZXIuYworKysg Yi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfd2Fsa2VyLmMKQEAgLTE2LDYgKzE2LDcgQEAK ICNpbmNsdWRlICJwZ3BhX3NjYW4uaCIKICNpbmNsdWRlICJwZ3BhX3dhbGtlci5oIgogCisjaW5j bHVkZSAiYWNjZXNzL3RzbWFwaS5oIgogI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK QEAgLTYwOSw2ICs2MTAsMzQgQEAgcGdwYV9zY2FucmVsaWQoUGxhbiAqcGxhbikKIAl9CiB9CiAK Ky8qCisgKiBDaGVjayB3aGV0aGVyIGEgcGxhbiBub2RlIGlzIGEgTWF0ZXJpYWwgbm9kZSB0aGF0 IHNob3VsZCBiZSB0cmVhdGVkIGFzCisgKiBhIHNjYW4uIEN1cnJlbnRseSwgdGhpcyBvbmx5IGhh cHBlbnMgd2hlbiBzZXRfdGFibGVzYW1wbGVfcmVsX3BhdGhsaXN0CisgKiBpbnNlcnRzIGEgTWF0 ZXJpYWwgbm9kZSB0byBwcm90ZWN0IGEgU2FtcGxlU2NhbiB0aGF0IHVzZXMgYSBub24tcmVwZWF0 YWJsZQorICogdGFibGVzYW1wbGUgbWV0aG9kLgorICoKKyAqIChNb3N0IE1hdGVyaWFsIG5vZGVz IHdlJ3JlIGxpa2VseSB0byBlbmNvdW50ZXIgYXJlIGFjdHVhbGx5IHBhcnQgb2YgdGhlCisgKiBq b2luIHN0cmF0ZWd5OiBuZXN0ZWQgbG9vcHMgYW5kIG1lcmdlIGpvaW5zIGNhbiBjaG9vc2UgdG8g bWF0ZXJpYWxpemUgdGhlCisgKiBpbm5lciBzaWRlcyBvZiB0aGUgam9pbi4gVGhlIGNhc2VzIGlk ZW50aWZpZWQgaGVyZSBhcmUgdGhlIHJhcmUKKyAqIGV4Y2VwdGlvbnMuKQorICovCitib29sCitw Z3BhX2lzX3NjYW5fbGV2ZWxfbWF0ZXJpYWxpemUoUGxhbiAqcGxhbikKK3sKKwlQbGFuCSAgICpj aGlsZDsKKwlTYW1wbGVTY2FuICpzc2NhbjsKKwlUc21Sb3V0aW5lICp0c207CisKKwlpZiAoIUlz QShwbGFuLCBNYXRlcmlhbCkpCisJCXJldHVybiBmYWxzZTsKKwljaGlsZCA9IHBsYW4tPmxlZnR0 cmVlOworCWlmIChjaGlsZCA9PSBOVUxMIHx8ICFJc0EoY2hpbGQsIFNhbXBsZVNjYW4pKQorCQly ZXR1cm4gZmFsc2U7CisJc3NjYW4gPSAoU2FtcGxlU2NhbiAqKSBjaGlsZDsKKwl0c20gPSBHZXRU c21Sb3V0aW5lKHNzY2FuLT50YWJsZXNhbXBsZS0+dHNtaGFuZGxlcik7CisJcmV0dXJuICF0c20t PnJlcGVhdGFibGVfYWNyb3NzX3NjYW5zOworfQorCiAvKgogICogQ29uc3RydWN0IGEgbmV3IEJp dG1hcHNldCBjb250YWluaW5nIG5vbi1SVEVfSk9JTiBtZW1iZXJzIG9mICdyZWxpZHMnLgogICov CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfd2Fsa2VyLmggYi9jb250 cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfd2Fsa2VyLmgKaW5kZXggNDc2NjdjMDMzNzQuLmViZTg1 MDYyMmQzIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfd2Fsa2VyLmgK KysrIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3dhbGtlci5oCkBAIC0xMTQsNiArMTE0 LDcgQEAgZXh0ZXJuIHZvaWQgcGdwYV9hZGRfZnV0dXJlX2ZlYXR1cmUocGdwYV9wbGFuX3dhbGtl cl9jb250ZXh0ICp3YWxrZXIsCiBleHRlcm4gRWxpZGVkTm9kZSAqcGdwYV9sYXN0X2VsaWRlZF9u b2RlKFBsYW5uZWRTdG10ICpwc3RtdCwgUGxhbiAqcGxhbik7CiBleHRlcm4gQml0bWFwc2V0ICpw Z3BhX3JlbGlkcyhQbGFuICpwbGFuKTsKIGV4dGVybiBJbmRleCBwZ3BhX3NjYW5yZWxpZChQbGFu ICpwbGFuKTsKK2V4dGVybiBib29sIHBncGFfaXNfc2Nhbl9sZXZlbF9tYXRlcmlhbGl6ZShQbGFu ICpwbGFuKTsKIGV4dGVybiBCaXRtYXBzZXQgKnBncGFfZmlsdGVyX291dF9qb2luX3JlbGlkcyhC aXRtYXBzZXQgKnJlbGlkcywgTGlzdCAqcnRhYmxlKTsKIAogZXh0ZXJuIGJvb2wgcGdwYV93YWxr ZXJfd291bGRfYWR2aXNlKHBncGFfcGxhbl93YWxrZXJfY29udGV4dCAqd2Fsa2VyLApkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9zcWwvc2Nhbi5zcWwgYi9jb250cmliL3BnX3Bs YW5fYWR2aWNlL3NxbC9zY2FuLnNxbAppbmRleCA4MDBmZjdhNDYyMi4uOThiZWU4OGRlOTEgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2Uvc3FsL3NjYW4uc3FsCisrKyBiL2NvbnRy aWIvcGdfcGxhbl9hZHZpY2Uvc3FsL3NjYW4uc3FsCkBAIC0xOTYsMyArMTk2LDE1IEBAIFNFTEVD VCAqIEZST00gKFNFTEVDVCAqIEZST00gc2Nhbl90YWJsZSBzIFdIRVJFIGEgPSAxIE9GRlNFVCAw KSB4OwogRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKIFNFTEVDVCAqIEZST00gKFNF TEVDVCAqIEZST00gc2Nhbl90YWJsZSBzIFdIRVJFIGEgPSAxIE9GRlNFVCAwKTsKIENPTU1JVDsK KworLS0gVGVzdCBhIG5vbi1yZXBlYXRhYmxlIHRhYmxlc2FtcGxlIG1ldGhvZCB3aXRoIGEgc2Nh bi1sZXZlbCBNYXRlcmlhbGl6ZS4KK0NSRUFURSBFWFRFTlNJT04gdHNtX3N5c3RlbV90aW1lOwor Q1JFQVRFIFRBQkxFIHNjYW5fdHNtIChpIGludCk7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5f QURWSUNFKQorU0VMRUNUIDEgRlJPTSAoU0VMRUNUIGkgRlJPTSBzY2FuX3RzbSBUQUJMRVNBTVBM RSBzeXN0ZW1fdGltZSAoMTAwMCkpLAorCUxBVEVSQUwgKFNFTEVDVCBpIExJTUlUIDEpOworCist LSBTYW1lLCBidXQgd2l0aCB0aGUgc2Nhbi1sZXZlbCBNYXRlcmlhbGl6ZSBvbiB0aGUgaW5uZXIg c2lkZSBvZiBhIGpvaW4uCitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorU0VMRUNU IDEgRlJPTSAoU0VMRUNUIDEgQVMgeCBMSU1JVCAxKSwKKwlMQVRFUkFMIChTRUxFQ1QgeCBGUk9N IHNjYW5fdHNtIFRBQkxFU0FNUExFIHN5c3RlbV90aW1lICgxMDAwKSk7Ci0tIAoyLjUxLjAKCg== --0000000000000a3d9c064ee55e86 Content-Type: application/octet-stream; name="v26-0004-pg_plan_advice-Add-alternatives-test-to-Makefile.patch" Content-Disposition: attachment; filename="v26-0004-pg_plan_advice-Add-alternatives-test-to-Makefile.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp49lai3 RnJvbSBhYzA2Nzg1NDZjNjA4NmFjYmEwZWJiY2RhNTU5YTM0NWZhYmY1MmI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IFR1ZSwgNyBBcHIgMjAyNiAxNjoxODoxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI2IDQv NV0gcGdfcGxhbl9hZHZpY2U6IEFkZCBhbHRlcm5hdGl2ZXMgdGVzdCB0byBNYWtlZmlsZS4KCk92 ZXJzaWdodCBpbiBjb21taXQgNjQ1NWU1NWIwZGE0NzI1NWYzMzJhOTZmMDA1YmEwZGQxYzcxNzZj Mi4KLS0tCiBjb250cmliL3BnX3BsYW5fYWR2aWNlL01ha2VmaWxlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfcGxhbl9hZHZpY2UvTWFrZWZpbGUgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL01h a2VmaWxlCmluZGV4IGNiYWZjNTBjYTRjLi5kMDE2NzIzNzk0ZCAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ19wbGFuX2FkdmljZS9NYWtlZmlsZQorKysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL01h a2VmaWxlCkBAIC0xOSw4ICsxOSw4IEBAIEhFQURFUlNfcGdfcGxhbl9hZHZpY2UgPSBwZ19wbGFu X2FkdmljZS5oCiAKIFBHRklMRURFU0MgPSAicGdfcGxhbl9hZHZpY2UgLSBoZWxwIHRoZSBwbGFu bmVyIGdldCB0aGUgcmlnaHQgcGxhbiIKIAotUkVHUkVTUyA9IGdhdGhlciBqb2luX29yZGVyIGpv aW5fc3RyYXRlZ3kgcGFydGl0aW9ud2lzZSBwcmVwYXJlZCBcCi0Jc2NhbiBzZW1pam9pbiBzeW50 YXgKK1JFR1JFU1MgPSBhbHRlcm5hdGl2ZXMgZ2F0aGVyIGpvaW5fb3JkZXIgam9pbl9zdHJhdGVn eSBwYXJ0aXRpb253aXNlIFwKKwlwcmVwYXJlZCBzY2FuIHNlbWlqb2luIHN5bnRheAogCiBFWFRS QV9JTlNUQUxMID0gY29udHJpYi90c21fc3lzdGVtX3RpbWUKIAotLSAKMi41MS4wCgo= --0000000000000a3d9c064ee55e86--