Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mwWPn-0000WS-MS for pgsql-hackers@arkaria.postgresql.org; Sun, 12 Dec 2021 21:29:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mwWPm-0007Tv-Az for pgsql-hackers@arkaria.postgresql.org; Sun, 12 Dec 2021 21:29:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mwWPl-0007Tl-Hc for pgsql-hackers@lists.postgresql.org; Sun, 12 Dec 2021 21:29:50 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mwWPf-0007EJ-Fp for pgsql-hackers@postgresql.org; Sun, 12 Dec 2021 21:29:48 +0000 Received: by mail-ed1-x536.google.com with SMTP id t5so45891146edd.0 for ; Sun, 12 Dec 2021 13:29:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language:to :cc:references:from:in-reply-to; bh=faTxwCxmc+c17daytJ085gJFzBK/ppOixqz1gde9e1g=; b=YAesUk12qq7zC+FmGWv3l28vTPTwgbkPC8tUpkRbhOtnrJXyXpyobrFhmz/QIcGq58 z8hgeIHXDkwsr6B5+wsQy8V67x+vk+aw4RhCBNgtAL1cU8JWo2o72UCcFcgB+yD4mY9k myQkyj63Xvohdl7hH3jATdA85qJCwbSqXPXTUfwR1rzJADozV/HqIld8qQtstzu6yFH4 jeZ/f9G7/PqEN+sWxaqRu7tOnk37Z2zKr7P9IBJhDeLb1U14vqlDrMPCazWmvck1F2sF 3MWZOkfDK9TGZ5ylJ1obf74eNR8zodcke53bzDjmgFzAfh/kEGCvE23EcUvpnWl8bM2v dMFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to; bh=faTxwCxmc+c17daytJ085gJFzBK/ppOixqz1gde9e1g=; b=Bp63TXp/+LdFxTg89wLwoYQGVq3wL5X24k8MEaF+C9XQB7qv+QUBr1bZ1iXySCBu+d Q23npz5QUaEXSlvlgzWU96TTVLtMe1HOF0UKI6ATqwGJFbl3MmI3qo80+RSfcEf0s4aC 45W1HhGL77GpFleGVjsThH+UWoEJgP7+P5ovbaxgB2w9B7vmGbjMvyGBMBGMzDskut3p ZQPs6g6BpBxvhh/OY89ItASJYlNm3sSMdCxO0SpP9Kcdt0CKEvwVjPzbroqSRhieBFPX RgSR/47cPhDMz62HU+kWBHOr9MwfuUxVy49GfXsIb8387tiCVGTq5ueYABlnzqoGuWw6 IHtQ== X-Gm-Message-State: AOAM532JUc1iJuTRFC81mVTn1ukhgQ/iE/34O/rGTIZYBPvRnICYUBk3 u6ROOF9H/ZREk2rdhqWLcCEhrs3SIahCkEg0LjOY4i8S/ZV1bLKkY+3E97501bL5CAow8Mdqc3c yztF7BSbvt9cmFZ4kecpIPbsSxQ6tRPOUK01wXUL8jUHt/Lm0OQm4wSr2jpAPDneraQAmzxK5IG M3O21BNK0sary2/od/o1oRC/X7+j45CHIcRFxt X-Google-Smtp-Source: ABdhPJzoOtFcrxPwjS7VVEGeOZCC0V1MJJ5be+cuvlAmHItgU7jqFws3LgQHpXWk8AISjGa2SAPnmQ== X-Received: by 2002:a17:906:9b92:: with SMTP id dd18mr39661961ejc.290.1639344581622; Sun, 12 Dec 2021 13:29:41 -0800 (PST) Received: from [10.137.0.19] (ip-86-49-251-241.net.upcbroadband.cz. [86.49.251.241]) by smtp.gmail.com with ESMTPSA id hc10sm4786378ejc.99.2021.12.12.13.29.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 12 Dec 2021 13:29:40 -0800 (PST) Content-Type: multipart/mixed; boundary="------------1PDoU8w0Z03EfMxuEx94AsZz" Message-ID: Date: Sun, 12 Dec 2021 22:29:39 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: extended stats on partitioned tables Content-Language: en-US To: Justin Pryzby Cc: Zhihong Yu , Jaime Casanova , pgsql-hackers@postgresql.org References: <20210925223152.GA7877@telsasoft.com> <20210926202550.GA831@telsasoft.com> <20211007202646.GA9522@ahch-to> <20211007224543.GH27491@telsasoft.com> <46f37069-55cb-db6a-a15a-e351a2606592@enterprisedb.com> <20211103231904.GP17618@telsasoft.com> <689accb1-76e8-5115-6ed0-336749cdca57@enterprisedb.com> <20211203052411.GU17618@telsasoft.com> <8052505e-2dd2-e8cb-26c9-cbb5dff7d750@enterprisedb.com> <20211212175255.GO17618@telsasoft.com> From: Tomas Vondra In-Reply-To: <20211212175255.GO17618@telsasoft.com> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------1PDoU8w0Z03EfMxuEx94AsZz Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 12/12/21 18:52, Justin Pryzby wrote: > + * XXX Can't we simply look at rte->inh? > + */ > + inh = root->append_rel_array == NULL ? false : > + root->append_rel_array[onerel->relid]->parent_relid != 0; > > I think so. That's what I came up with while trying to figured this out, and > it's no great surprise that it needed to be cleaned up - thanks. > OK, fixed. > In your 0003 patch, the "if inh: break" isn't removed from examine_variable(), > but the corresponding thing is removed everywhere else. > Ah, you're right. And it wasn't updated in the 0002 patch either - it should do the relkind check too, to allow partitioned tables. Fixed. > In 0003, mcv_clauselist_selectivity still uses simple_rte_array rather than > rt_fetch. > That's mostly a conscious choice, so that I don't have to include parsetree.h. But maybe that'd be better ... > The regression tests changed as a result of not populating stx_data; I think > it's may be better to update like this: > > SELECT stxname, stxdndistinct, stxddependencies, stxdmcv, stxoid IS NULL > FROM pg_statistic_ext s LEFT JOIN pg_statistic_ext_data d > ON d.stxoid = s.oid > WHERE s.stxname = 'ab1_a_b_stats'; > Not sure I understand. Why would this be better than inner join? > There's this part about documentation for the changes in backbranches: > > On Sun, Sep 26, 2021 at 03:25:50PM -0500, Justin Pryzby wrote: >> Also, I think in backbranches we should document what's being stored in >> pg_statistic_ext, since it's pretty unintuitive: >> - noninherted stats (FROM ONLY) for inheritence parents; >> - inherted stats (FROM *) for partitioned tables; > > spellcheck: inheritence should be inheritance. > Thanks, fixed. Can you read through the commit messages and check the attribution is correct for all the patches? > All for now. I'm going to update the regression tests for dependencies and the > other code paths. > Thanks! -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------1PDoU8w0Z03EfMxuEx94AsZz Content-Type: text/x-patch; charset=UTF-8; name="0004-Refactor-parent-ACL-check-20211212b.patch" Content-Disposition: attachment; filename="0004-Refactor-parent-ACL-check-20211212b.patch" Content-Transfer-Encoding: base64 RnJvbSA3N2JkMzQ2NjBkMTVkNmJhMDM1MzhjNmZlNDVhMTk2YTE2MmMxOTZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAxMiBEZWMgMjAyMSAwMjoyODo0MSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggNC80XSBSZWZhY3RvciBwYXJlbnQgQUNMIGNoZWNrCgpzZWxmdW5jcy5jIGlzIDhr IGxpbmVzIGxvbmcsIGFuZCB0aGlzIG1ha2VzIGl0IDMwIExPQyBzaG9ydGVyLgotLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIHwgMTQwICsrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA4OCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IGJmNDUyNTM5 MmQuLmU0YmU5ZmM5NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC0xODcs NiArMTg3LDggQEAgc3RhdGljIGNoYXIgKmNvbnZlcnRfc3RyaW5nX2RhdHVtKERhdHVtIHZh bHVlLCBPaWQgdHlwaWQsIE9pZCBjb2xsaWQsCiAJCQkJCQkJCSAgYm9vbCAqZmFpbHVyZSk7 CiBzdGF0aWMgZG91YmxlIGNvbnZlcnRfdGltZXZhbHVlX3RvX3NjYWxhcihEYXR1bSB2YWx1 ZSwgT2lkIHR5cGlkLAogCQkJCQkJCQkJCSAgYm9vbCAqZmFpbHVyZSk7CitzdGF0aWMgdm9p ZCByZWNoZWNrX3BhcmVudF9hY2woUGxhbm5lckluZm8gKnJvb3QsIFZhcmlhYmxlU3RhdERh dGEgKnZhcmRhdGEsCisJCQkJCQkJCU9pZCByZWxpZCk7CiBzdGF0aWMgdm9pZCBleGFtaW5l X3NpbXBsZV92YXJpYWJsZShQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIsCiAJCQkJCQkJ CQlWYXJpYWJsZVN0YXREYXRhICp2YXJkYXRhKTsKIHN0YXRpYyBib29sIGdldF92YXJpYWJs ZV9yYW5nZShQbGFubmVySW5mbyAqcm9vdCwgVmFyaWFibGVTdGF0RGF0YSAqdmFyZGF0YSwK QEAgLTUxNTMsNTEgKzUxNTUsNyBAQCBleGFtaW5lX3ZhcmlhYmxlKFBsYW5uZXJJbmZvICpy b290LCBOb2RlICpub2RlLCBpbnQgdmFyUmVsaWQsCiAJCQkJCQkJCQkocGdfY2xhc3NfYWNs Y2hlY2socnRlLT5yZWxpZCwgdXNlcmlkLAogCQkJCQkJCQkJCQkJCSAgIEFDTF9TRUxFQ1Qp ID09IEFDTENIRUNLX09LKTsKIAotCQkJCQkJCQkvKgotCQkJCQkJCQkgKiBJZiB0aGUgdXNl ciBkb2Vzbid0IGhhdmUgcGVybWlzc2lvbnMgdG8KLQkJCQkJCQkJICogYWNjZXNzIGFuIGlu aGVyaXRhbmNlIGNoaWxkIHJlbGF0aW9uLCBjaGVjawotCQkJCQkJCQkgKiB0aGUgcGVybWlz c2lvbnMgb2YgdGhlIHRhYmxlIGFjdHVhbGx5Ci0JCQkJCQkJCSAqIG1lbnRpb25lZCBpbiB0 aGUgcXVlcnksIHNpbmNlIG1vc3QgbGlrZWx5Ci0JCQkJCQkJCSAqIHRoZSB1c2VyIGRvZXMg aGF2ZSB0aGF0IHBlcm1pc3Npb24uICBOb3RlCi0JCQkJCQkJCSAqIHRoYXQgd2hvbGUtdGFi bGUgc2VsZWN0IHByaXZpbGVnZSBvbiB0aGUKLQkJCQkJCQkJICogcGFyZW50IGRvZXNuJ3Qg cXVpdGUgZ3VhcmFudGVlIHRoYXQgdGhlCi0JCQkJCQkJCSAqIHVzZXIgY291bGQgcmVhZCBh bGwgY29sdW1ucyBvZiB0aGUgY2hpbGQuCi0JCQkJCQkJCSAqIEJ1dCBpbiBwcmFjdGljZSBp dCdzIHVubGlrZWx5IHRoYXQgYW55Ci0JCQkJCQkJCSAqIGludGVyZXN0aW5nIHNlY3VyaXR5 IHZpb2xhdGlvbiBjb3VsZCByZXN1bHQKLQkJCQkJCQkJICogZnJvbSBhbGxvd2luZyBhY2Nl c3MgdG8gdGhlIGV4cHJlc3Npb24KLQkJCQkJCQkJICogaW5kZXgncyBzdGF0cywgc28gd2Ug YWxsb3cgaXQgYW55d2F5LiAgU2VlCi0JCQkJCQkJCSAqIHNpbWlsYXIgY29kZSBpbiBleGFt aW5lX3NpbXBsZV92YXJpYWJsZSgpCi0JCQkJCQkJCSAqIGZvciBhZGRpdGlvbmFsIGNvbW1l bnRzLgotCQkJCQkJCQkgKi8KLQkJCQkJCQkJaWYgKCF2YXJkYXRhLT5hY2xfb2sgJiYKLQkJ CQkJCQkJCXJvb3QtPmFwcGVuZF9yZWxfYXJyYXkgIT0gTlVMTCkKLQkJCQkJCQkJewotCQkJ CQkJCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbzsKLQkJCQkJCQkJCUluZGV4CQl2YXJubyA9 IGluZGV4LT5yZWwtPnJlbGlkOwotCi0JCQkJCQkJCQlhcHBpbmZvID0gcm9vdC0+YXBwZW5k X3JlbF9hcnJheVt2YXJub107Ci0JCQkJCQkJCQl3aGlsZSAoYXBwaW5mbyAmJgotCQkJCQkJ CQkJCSAgIHBsYW5uZXJfcnRfZmV0Y2goYXBwaW5mby0+cGFyZW50X3JlbGlkLAotCQkJCQkJ CQkJCQkJCQkJcm9vdCktPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKQotCQkJCQkJCQkJewot CQkJCQkJCQkJCXZhcm5vID0gYXBwaW5mby0+cGFyZW50X3JlbGlkOwotCQkJCQkJCQkJCWFw cGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3Zhcm5vXTsKLQkJCQkJCQkJCX0KLQkJ CQkJCQkJCWlmICh2YXJubyAhPSBpbmRleC0+cmVsLT5yZWxpZCkKLQkJCQkJCQkJCXsKLQkJ CQkJCQkJCQkvKiBSZXBlYXQgYWNjZXNzIGNoZWNrIG9uIHRoaXMgcmVsICovCi0JCQkJCQkJ CQkJcnRlID0gcGxhbm5lcl9ydF9mZXRjaCh2YXJubywgcm9vdCk7Ci0JCQkJCQkJCQkJQXNz ZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwotCi0JCQkJCQkJCQkJdXNlcmlk ID0gcnRlLT5jaGVja0FzVXNlciA/IHJ0ZS0+Y2hlY2tBc1VzZXIgOiBHZXRVc2VySWQoKTsK LQotCQkJCQkJCQkJCXZhcmRhdGEtPmFjbF9vayA9Ci0JCQkJCQkJCQkJCXJ0ZS0+c2VjdXJp dHlRdWFscyA9PSBOSUwgJiYKLQkJCQkJCQkJCQkJKHBnX2NsYXNzX2FjbGNoZWNrKHJ0ZS0+ cmVsaWQsCi0JCQkJCQkJCQkJCQkJCQkgICB1c2VyaWQsCi0JCQkJCQkJCQkJCQkJCQkgICBB Q0xfU0VMRUNUKSA9PSBBQ0xDSEVDS19PSyk7Ci0JCQkJCQkJCQl9Ci0JCQkJCQkJCX0KKwkJ CQkJCQkJcmVjaGVja19wYXJlbnRfYWNsKHJvb3QsIHZhcmRhdGEsIGluZGV4LT5yZWwtPnJl bGlkKTsKIAkJCQkJCQl9CiAJCQkJCQkJZWxzZQogCQkJCQkJCXsKQEAgLTUyOTYsNDkgKzUy NTQsNyBAQCBleGFtaW5lX3ZhcmlhYmxlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2Rl LCBpbnQgdmFyUmVsaWQsCiAJCQkJCQkocGdfY2xhc3NfYWNsY2hlY2socnRlLT5yZWxpZCwg dXNlcmlkLAogCQkJCQkJCQkJCSAgIEFDTF9TRUxFQ1QpID09IEFDTENIRUNLX09LKTsKIAot CQkJCQkvKgotCQkJCQkgKiBJZiB0aGUgdXNlciBkb2Vzbid0IGhhdmUgcGVybWlzc2lvbnMg dG8gYWNjZXNzIGFuCi0JCQkJCSAqIGluaGVyaXRhbmNlIGNoaWxkIHJlbGF0aW9uLCBjaGVj ayB0aGUgcGVybWlzc2lvbnMgb2YKLQkJCQkJICogdGhlIHRhYmxlIGFjdHVhbGx5IG1lbnRp b25lZCBpbiB0aGUgcXVlcnksIHNpbmNlIG1vc3QKLQkJCQkJICogbGlrZWx5IHRoZSB1c2Vy IGRvZXMgaGF2ZSB0aGF0IHBlcm1pc3Npb24uICBOb3RlIHRoYXQKLQkJCQkJICogd2hvbGUt dGFibGUgc2VsZWN0IHByaXZpbGVnZSBvbiB0aGUgcGFyZW50IGRvZXNuJ3QKLQkJCQkJICog cXVpdGUgZ3VhcmFudGVlIHRoYXQgdGhlIHVzZXIgY291bGQgcmVhZCBhbGwgY29sdW1ucyBv ZgotCQkJCQkgKiB0aGUgY2hpbGQuIEJ1dCBpbiBwcmFjdGljZSBpdCdzIHVubGlrZWx5IHRo YXQgYW55Ci0JCQkJCSAqIGludGVyZXN0aW5nIHNlY3VyaXR5IHZpb2xhdGlvbiBjb3VsZCBy ZXN1bHQgZnJvbQotCQkJCQkgKiBhbGxvd2luZyBhY2Nlc3MgdG8gdGhlIGV4cHJlc3Npb24g c3RhdHMsIHNvIHdlIGFsbG93IGl0Ci0JCQkJCSAqIGFueXdheS4gIFNlZSBzaW1pbGFyIGNv ZGUgaW4gZXhhbWluZV9zaW1wbGVfdmFyaWFibGUoKQotCQkJCQkgKiBmb3IgYWRkaXRpb25h bCBjb21tZW50cy4KLQkJCQkJICovCi0JCQkJCWlmICghdmFyZGF0YS0+YWNsX29rICYmCi0J CQkJCQlyb290LT5hcHBlbmRfcmVsX2FycmF5ICE9IE5VTEwpCi0JCQkJCXsKLQkJCQkJCUFw cGVuZFJlbEluZm8gKmFwcGluZm87Ci0JCQkJCQlJbmRleAkJdmFybm8gPSBvbmVyZWwtPnJl bGlkOwotCi0JCQkJCQlhcHBpbmZvID0gcm9vdC0+YXBwZW5kX3JlbF9hcnJheVt2YXJub107 Ci0JCQkJCQl3aGlsZSAoYXBwaW5mbyAmJgotCQkJCQkJCSAgIHBsYW5uZXJfcnRfZmV0Y2go YXBwaW5mby0+cGFyZW50X3JlbGlkLAotCQkJCQkJCQkJCQkJcm9vdCktPnJ0ZWtpbmQgPT0g UlRFX1JFTEFUSU9OKQotCQkJCQkJewotCQkJCQkJCXZhcm5vID0gYXBwaW5mby0+cGFyZW50 X3JlbGlkOwotCQkJCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3Zhcm5v XTsKLQkJCQkJCX0KLQkJCQkJCWlmICh2YXJubyAhPSBvbmVyZWwtPnJlbGlkKQotCQkJCQkJ ewotCQkJCQkJCS8qIFJlcGVhdCBhY2Nlc3MgY2hlY2sgb24gdGhpcyByZWwgKi8KLQkJCQkJ CQlydGUgPSBwbGFubmVyX3J0X2ZldGNoKHZhcm5vLCByb290KTsKLQkJCQkJCQlBc3NlcnQo cnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7Ci0KLQkJCQkJCQl1c2VyaWQgPSBydGUt PmNoZWNrQXNVc2VyID8gcnRlLT5jaGVja0FzVXNlciA6IEdldFVzZXJJZCgpOwotCi0JCQkJ CQkJdmFyZGF0YS0+YWNsX29rID0KLQkJCQkJCQkJcnRlLT5zZWN1cml0eVF1YWxzID09IE5J TCAmJgotCQkJCQkJCQkocGdfY2xhc3NfYWNsY2hlY2socnRlLT5yZWxpZCwKLQkJCQkJCQkJ CQkJCSAgIHVzZXJpZCwKLQkJCQkJCQkJCQkJCSAgIEFDTF9TRUxFQ1QpID09IEFDTENIRUNL X09LKTsKLQkJCQkJCX0KLQkJCQkJfQotCisJCQkJCXJlY2hlY2tfcGFyZW50X2FjbChyb290 LCB2YXJkYXRhLCBvbmVyZWwtPnJlbGlkKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCkBAIC01 MzQ4LDYgKzUyNjQsNTQgQEAgZXhhbWluZV92YXJpYWJsZShQbGFubmVySW5mbyAqcm9vdCwg Tm9kZSAqbm9kZSwgaW50IHZhclJlbGlkLAogCX0KIH0KIAorLyoKKyAqIElmIHRoZSB1c2Vy IGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgYW4gaW5oZXJpdGFuY2UgY2hp bGQKKyAqIHJlbGF0aW9uLCBjaGVjayB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIHRhYmxlIGFj dHVhbGx5IG1lbnRpb25lZCBpbiB0aGUKKyAqIHF1ZXJ5LCBzaW5jZSBtb3N0IGxpa2VseSB0 aGUgdXNlciBkb2VzIGhhdmUgdGhhdCBwZXJtaXNzaW9uLiAgTm90ZSB0aGF0CisgKiB3aG9s ZS10YWJsZSBzZWxlY3QgcHJpdmlsZWdlIG9uIHRoZSBwYXJlbnQgZG9lc24ndCBxdWl0ZSBn dWFyYW50ZWUgdGhhdCB0aGUKKyAqIHVzZXIgY291bGQgcmVhZCBhbGwgY29sdW1ucyBvZiB0 aGUgY2hpbGQuICBCdXQgaW4gcHJhY3RpY2UgaXQncyB1bmxpa2VseQorICogdGhhdCBhbnkg aW50ZXJlc3Rpbmcgc2VjdXJpdHkgdmlvbGF0aW9uIGNvdWxkIHJlc3VsdCBmcm9tIGFsbG93 aW5nIGFjY2VzcyB0bworICogdGhlIGV4cHJlc3Npb24gc3RhdHMsIHNvIHdlIGFsbG93IGl0 IGFueXdheS4gIFNlZSBzaW1pbGFyIGNvZGUgaW4KKyAqIGV4YW1pbmVfc2ltcGxlX3Zhcmlh YmxlKCkgZm9yIGFkZGl0aW9uYWwgY29tbWVudHMuCisgKi8KK3N0YXRpYyB2b2lkCityZWNo ZWNrX3BhcmVudF9hY2woUGxhbm5lckluZm8gKnJvb3QsIFZhcmlhYmxlU3RhdERhdGEgKnZh cmRhdGEsIE9pZCByZWxpZCkKK3sKKwlSYW5nZVRibEVudHJ5CSpydGU7CisJT2lkCQl1c2Vy aWQ7CisKKwlpZiAoIXZhcmRhdGEtPmFjbF9vayAmJgorCQlyb290LT5hcHBlbmRfcmVsX2Fy cmF5ICE9IE5VTEwpCisJeworCQlBcHBlbmRSZWxJbmZvICphcHBpbmZvOworCQlJbmRleAkJ dmFybm8gPSByZWxpZDsKKworCQlhcHBpbmZvID0gcm9vdC0+YXBwZW5kX3JlbF9hcnJheVt2 YXJub107CisJCXdoaWxlIChhcHBpbmZvICYmCisJCQkgICBwbGFubmVyX3J0X2ZldGNoKGFw cGluZm8tPnBhcmVudF9yZWxpZCwKKwkJCQkJCQkJcm9vdCktPnJ0ZWtpbmQgPT0gUlRFX1JF TEFUSU9OKQorCQl7CisJCQl2YXJubyA9IGFwcGluZm8tPnBhcmVudF9yZWxpZDsKKwkJCWFw cGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3Zhcm5vXTsKKwkJfQorCisJCWlmICh2 YXJubyAhPSByZWxpZCkKKwkJeworCQkJLyogUmVwZWF0IGFjY2VzcyBjaGVjayBvbiB0aGlz IHJlbCAqLworCQkJcnRlID0gcGxhbm5lcl9ydF9mZXRjaCh2YXJubywgcm9vdCk7CisJCQlB c3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CisKKwkJCXVzZXJpZCA9IHJ0 ZS0+Y2hlY2tBc1VzZXIgPyBydGUtPmNoZWNrQXNVc2VyIDogR2V0VXNlcklkKCk7CisKKwkJ CXZhcmRhdGEtPmFjbF9vayA9CisJCQkJcnRlLT5zZWN1cml0eVF1YWxzID09IE5JTCAmJgor CQkJCShwZ19jbGFzc19hY2xjaGVjayhydGUtPnJlbGlkLAorCQkJCQkJCQkgICB1c2VyaWQs CisJCQkJCQkJCSAgIEFDTF9TRUxFQ1QpID09IEFDTENIRUNLX09LKTsKKwkJfQorCX0KK30K KwogLyoKICAqIGV4YW1pbmVfc2ltcGxlX3ZhcmlhYmxlCiAgKgkJSGFuZGxlIGEgc2ltcGxl IFZhciBmb3IgZXhhbWluZV92YXJpYWJsZQotLSAKMi4zMS4xCgo= --------------1PDoU8w0Z03EfMxuEx94AsZz Content-Type: text/x-patch; charset=UTF-8; name="0003-Add-stxdinherit-flag-to-pg_statistic_ext_d-20211212b.patch" Content-Disposition: attachment; filename*0="0003-Add-stxdinherit-flag-to-pg_statistic_ext_d-20211212b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiNWM4YTU0NDY1MjVjMDE1OTU3YjgxYjBkZWFkZDExZTk4NjFjZWY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAxMiBEZWMgMjAyMSAwMDowNzoyNyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMy80XSBBZGQgc3R4ZGluaGVyaXQgZmxhZyB0byBwZ19zdGF0aXN0aWNfZXh0X2Rh dGEKClRoZSBzdXBwb3J0IGZvciBleHRlbmRlZCBzdGF0aXN0aWNzIG9uIGluaGVyaXRhbmNl IHRyZWVzIHdhcyBzb21ld2hhdApwcm9ibGVtYXRpYywgYmVjYXVzZSB0aGUgY2F0YWxvZyBw Z19zdGF0aXN0aWNfZXh0X2RhdGEgZGlkIG5vdCBoYXZlIGEKZmxhZyBpZGVudGlmeWluZyB3 aGV0aGVyIHRoZSBkYXRhIHdhcyBidWlsdCB3aXRoL3dpdGhvdXQgZGF0YSBmb3IgdGhlCmNo aWxkIHJlbGF0aW9ucy4KCkZvciBwYXJ0aXRpb25lZCB0YWJsZXMgd2UndmUgYmVlbiBhYmxl IHRvIHdvcmsgYXJvdW5kIHRoaXMgYmVjYXVzZSB0aGUKbm9uLWxlYWYgcmVsYXRpb25zIGNh bid0IGNvbnRhaW4gZGF0YSwgc28gdGhlcmUncyByZWFsbHkganVzdCBvbmUgc2V0IG9mCnN0 YXRpc3RpY3MgdG8gc3RvcmUuIEJ1dCBmb3IgcmVndWxhciBpbmhlcml0YW5jZSB0cmVlcyB3 ZSBoYWQgdG8gcGljaywKYW5kIHRoZXJlIGlzIG5vIGNsZWFybHkgYmV0dGVyIG9wdGlvbi4K ClRoaXMgaW50cm9kdWNlcyB0aGUgcGdfc3RhdGlzdGljX2V4dF9kYXRhLnN0eGRpbmhlcml0 IGZsYWcsIGFuYWxvZ291cyB0bwpwZ19zdGF0aXN0aWMuc3RhaW5oZXJpdCwgYW5kIG1vZGlm aWVzIGFuYWx5emUgdG8gYnVpbGQgc3RhdGlzdGljcyBmb3IKYm90aCBjYXNlcy4KClRoaXMg cmVsYXhlcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHR3byBjYXRhbG9ncyAtIHVu dGlsIG5vdyB3ZSd2ZQpjcmVhdGVkIHRoZSBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgb25lIHdo ZW4gY3JlYXRpbmcgdGhlIHN0YXRpc3RpY3MsIGFuZAp0aGVuIG9ubHkgdXBkYXRlZCBpdCBs YXRlci4gVGhlcmUgd2FzIGFsd2F5cyAxOjEgcmVsYXRpb25zaGlwIGJldHdlZW4Kcm93cyBp biB0aGUgdHdvIGNhdGFsb2dzLiBXaXRoIHRoaXMgY2hhbmdlIHdlIG5vIGxvbmdlciBpbnNl cnQgYW55IGRhdGEKcm93cyB3aGlsZSBjcmVhdGluZyBzdGF0aXN0aWNzLCBiZWNhdXNlIHdl IGRvbid0IGtub3cgd2hpY2ggZmxhZyB2YWx1ZQp0byBjcmVhdGUsIGFuZCBpdCBzZWVtcyB3 YXN0ZWZ1bCB0byBpbml0aWFsaXplIGJvdGggZm9yIGV2ZXJ5IHJlbGF0aW9uLgpUaGUgdGhl cmUgbWF5IGJlIDAsIDEgb3IgMiBkYXRhIHJvd3MgZm9yIGVhY2ggc3RhdGlzdGljcyBkZWZp bml0aW9uLgoKUGF0Y2ggYnkgbWUsIHdpdGggZXh0ZW5zaXZlIGltcHJvdmVtZW50cyBhbmQg Zml4ZXMgYnkgSnVzdGluIFByeXpieS4KCkF1dGhvcjogVG9tYXMgVm9uZHJhLCBKdXN0aW4g UHJ5emJ5ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEsIEp1c3RpbiBQcnl6YnkKRGlzY3Vz c2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDIxMDkyMzIxMjYyNC5HSTgzMSU0MHRlbHNh c29mdC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAg ICAgIHwgIDIzICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAg ICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAg ICAgIHwgIDI4ICstLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jICAgICAg ICAgICAgfCAgNzIgKysrKystLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxh bmNhdC5jICAgICAgICB8IDE0NyArKysrKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQv c3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYyAgICAgICB8ICAyMiArKy0KIHNyYy9iYWNrZW5k L3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyAgICAgfCAgNzUgKysrKystLS0tLQogc3Jj L2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYyAgICAgICAgICAgICAgICB8ICAgOSArLQogc3Jj L2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0LmMgICAgICAgICB8ICAgNSArLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAgICAgICAgICB8ICAyNyArLS0tCiBz cmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgIHwgICA2ICstCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0YS5oIHwgICA0ICstCiBz cmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzLmggICAgICAgICB8ICAxMSArLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICB8ICAgMiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgICAgIHwgIDE4ICsrLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgICAgICB8ICAgNCArLQogMTgg ZmlsZXMgY2hhbmdlZCwgMjQyIGluc2VydGlvbnMoKyksIDIxNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCmluZGV4IDAyNWRiOTg3NjMuLjlhYjJjYjUyYTcgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCkBAIC03NTIxLDYgKzc1MjEsMTkgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFi bGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+ JmwKICAgIGNyZWF0ZWQgd2l0aCA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3RhdGlzdGlj cyI+PGNvbW1hbmQ+Q1JFQVRFIFNUQVRJU1RJQ1M8L2NvbW1hbmQ+PC9saW5rPi4KICAgPC9w YXJhPgogCisgIDxwYXJhPgorICAgTm9ybWFsbHkgdGhlcmUgaXMgb25lIGVudHJ5LCB3aXRo IDxzdHJ1Y3RmaWVsZD5zdHhkaW5oZXJpdDwvc3RydWN0ZmllbGQ+ID0KKyAgIDxsaXRlcmFs PmZhbHNlPC9saXRlcmFsPiwgZm9yIGVhY2ggc3RhdGlzdGljcyBvYmplY3QgdGhhdCBoYXMg YmVlbiBhbmFseXplZC4KKyAgIElmIHRoZSB0YWJsZSBoYXMgaW5oZXJpdGFuY2UgY2hpbGRy ZW4sIGEgc2Vjb25kIGVudHJ5IHdpdGgKKyAgIDxzdHJ1Y3RmaWVsZD5zdHhkaW5oZXJpdDwv c3RydWN0ZmllbGQ+ID0gPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gaXMgYWxzbyBjcmVhdGVk LgorICAgVGhpcyByb3cgcmVwcmVzZW50cyB0aGUgc3RhdGlzdGljcyBvYmplY3Qgb3ZlciB0 aGUgaW5oZXJpdGFuY2UgdHJlZSwgaS5lLiwKKyAgIHN0YXRpc3RpY3MgZm9yIHRoZSBkYXRh IHlvdSdkIHNlZSB3aXRoCisgICA8bGl0ZXJhbD5TRUxFQ1QgKiBGUk9NIDxyZXBsYWNlYWJs ZT50YWJsZTwvcmVwbGFjZWFibGU+KjwvbGl0ZXJhbD4sCisgICB3aGVyZWFzIHRoZSA8c3Ry dWN0ZmllbGQ+c3R4ZGluaGVyaXQ8L3N0cnVjdGZpZWxkPiA9IDxsaXRlcmFsPmZhbHNlPC9s aXRlcmFsPiByb3cKKyAgIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YKKyAgIDxsaXRlcmFs PlNFTEVDVCAqIEZST00gT05MWSA8cmVwbGFjZWFibGU+dGFibGU8L3JlcGxhY2VhYmxlPjwv bGl0ZXJhbD4uCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIExpa2UgPGxpbmsgbGlua2Vu ZD0iY2F0YWxvZy1wZy1zdGF0aXN0aWMiPjxzdHJ1Y3RuYW1lPnBnX3N0YXRpc3RpYzwvc3Ry dWN0bmFtZT48L2xpbms+LAogICAgPHN0cnVjdG5hbWU+cGdfc3RhdGlzdGljX2V4dF9kYXRh PC9zdHJ1Y3RuYW1lPiBzaG91bGQgbm90IGJlCkBAIC03NTYwLDYgKzc1NzMsMTYgQEAgU0NS QU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxh Y2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8 L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+c3R4ZGluaGVyaXQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYgdHJ1ZSwgdGhlIHN0YXRzIGlu Y2x1ZGUgaW5oZXJpdGFuY2UgY2hpbGQgY29sdW1ucywgbm90IGp1c3QgdGhlCisgICAgICAg dmFsdWVzIGluIHRoZSBzcGVjaWZpZWQgcmVsYXRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAg ICA8c3RydWN0ZmllbGQ+c3R4ZG5kaXN0aW5jdDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25k aXN0aW5jdDwvdHlwZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRl eCA2MWI1MTVjZGI4Li4zMTk2NTM3ODliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsCkBAIC0yNjYsNiArMjY2LDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdHNfZXh0 IFdJVEggKHNlY3VyaXR5X2JhcnJpZXIpIEFTCiAgICAgICAgICAgICkgQVMgYXR0bmFtZXMs CiAgICAgICAgICAgIHBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX2V4cHJlc3Npb25zKHMub2lk KSBhcyBleHBycywKICAgICAgICAgICAgcy5zdHhraW5kIEFTIGtpbmRzLAorICAgICAgICAg ICBzZC5zdHhkaW5oZXJpdCBBUyBpbmhlcml0ZWQsCiAgICAgICAgICAgIHNkLnN0eGRuZGlz dGluY3QgQVMgbl9kaXN0aW5jdCwKICAgICAgICAgICAgc2Quc3R4ZGRlcGVuZGVuY2llcyBB UyBkZXBlbmRlbmNpZXMsCiAgICAgICAgICAgIG0ubW9zdF9jb21tb25fdmFscywKQEAgLTI5 OCw2ICsyOTksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0c19leHRfZXhwcnMgV0lUSCAoc2Vj dXJpdHlfYmFycmllcikgQVMKICAgICAgICAgICAgcy5zdHhuYW1lIEFTIHN0YXRpc3RpY3Nf bmFtZSwKICAgICAgICAgICAgcGdfZ2V0X3VzZXJieWlkKHMuc3R4b3duZXIpIEFTIHN0YXRp c3RpY3Nfb3duZXIsCiAgICAgICAgICAgIHN0YXQuZXhwciwKKyAgICAgICAgICAgc2Quc3R4 ZGluaGVyaXQgQVMgaW5oZXJpdGVkLAogICAgICAgICAgICAoc3RhdC5hKS5zdGFudWxsZnJh YyBBUyBudWxsX2ZyYWMsCiAgICAgICAgICAgIChzdGF0LmEpLnN0YXdpZHRoIEFTIGF2Z193 aWR0aCwKICAgICAgICAgICAgKHN0YXQuYSkuc3RhZGlzdGluY3QgQVMgbl9kaXN0aW5jdCwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCA1OGE4MmU0OTI5Li4zNDM2ZjA5ZDYzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC01NDksNyArNTQ5LDYgQEAgZG9fYW5hbHl6 ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl7CiAJCU1l bW9yeUNvbnRleHQgY29sX2NvbnRleHQsCiAJCQkJCW9sZF9jb250ZXh0OwotCQlib29sCQli dWlsZF9leHRfc3RhdHM7CiAKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19BTkFMWVpFX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0FOQUxZWkVfUEhBU0Vf Q09NUFVURV9TVEFUUyk7CkBAIC02MTMsMzAgKzYxMiw5IEBAIGRvX2FuYWx5emVfcmVsKFJl bGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJdGhpc2RhdGEt PmF0dHJfY250LCB0aGlzZGF0YS0+dmFjYXR0cnN0YXRzKTsKIAkJfQogCi0JCS8qCi0JCSAq IFNob3VsZCB3ZSBidWlsZCBleHRlbmRlZCBzdGF0aXN0aWNzIGZvciB0aGlzIHJlbGF0aW9u PwotCQkgKgotCQkgKiBUaGUgZXh0ZW5kZWQgc3RhdGlzdGljcyBjYXRhbG9nIGRvZXMgbm90 IGluY2x1ZGUgYW4gaW5oZXJpdGFuY2UKLQkJICogZmxhZywgc28gd2UgY2FuJ3Qgc3RvcmUg c3RhdGlzdGljcyBidWlsdCBib3RoIHdpdGggYW5kIHdpdGhvdXQKLQkJICogZGF0YSBmcm9t IGNoaWxkIHJlbGF0aW9ucy4gV2UgY2FuIHN0b3JlIGp1c3Qgb25lIHNldCBvZiBzdGF0aXN0 aWNzCi0JCSAqIHBlciByZWxhdGlvbi4gRm9yIHBsYWluIHJlbGF0aW9ucyB0aGF0J3MgZmlu ZSwgYnV0IGZvciBpbmhlcml0YW5jZQotCQkgKiB0cmVlcyB3ZSBoYXZlIHRvIHBpY2sgd2hl dGhlciB0byBzdG9yZSBzdGF0aXN0aWNzIGZvciBqdXN0IHRoZQotCQkgKiBvbmUgcmVsYXRp b24gb3IgdGhlIHdob2xlIHRyZWUuIEZvciBwbGFpbiBpbmhlcml0YW5jZSB3ZSBzdG9yZQot CQkgKiB0aGUgKCFpbmgpIHZlcnNpb24sIG1vc3RseSBmb3IgYmFja3dhcmRzIGNvbXBhdGli aWxpdHkgcmVhc29ucy4KLQkJICogRm9yIHBhcnRpdGlvbmVkIHRhYmxlcyB0aGF0J3MgcG9p bnRsZXNzICh0aGUgbm9uLWxlYWYgdGFibGVzIGFyZQotCQkgKiBhbHdheXMgZW1wdHkpLCBz byB3ZSBzdG9yZSBzdGF0cyByZXByZXNlbnRpbmcgdGhlIHdob2xlIHRyZWUuCi0JCSAqLwot CQlidWlsZF9leHRfc3RhdHMgPSAob25lcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSkgPyBpbmggOiAoIWluaCk7Ci0KLQkJLyoKLQkJICogQnVp bGQgZXh0ZW5kZWQgc3RhdGlzdGljcyAoaWYgdGhlcmUgYXJlIGFueSkuCi0JCSAqCi0JCSAq IEZvciBub3cgd2Ugb25seSBidWlsZCBleHRlbmRlZCBzdGF0aXN0aWNzIG9uIGluZGl2aWR1 YWwgcmVsYXRpb25zLAotCQkgKiBub3QgZm9yIHJlbGF0aW9ucyByZXByZXNlbnRpbmcgaW5o ZXJpdGFuY2UgdHJlZXMuCi0JCSAqLwotCQlpZiAoYnVpbGRfZXh0X3N0YXRzKQotCQkJQnVp bGRSZWxhdGlvbkV4dFN0YXRpc3RpY3Mob25lcmVsLCB0b3RhbHJvd3MsIG51bXJvd3MsIHJv d3MsCi0JCQkJCQkJCQkgICBhdHRyX2NudCwgdmFjYXR0cnN0YXRzKTsKKwkJLyogQnVpbGQg ZXh0ZW5kZWQgc3RhdGlzdGljcyAoaWYgdGhlcmUgYXJlIGFueSkuICovCisJCUJ1aWxkUmVs YXRpb25FeHRTdGF0aXN0aWNzKG9uZXJlbCwgaW5oLCB0b3RhbHJvd3MsIG51bXJvd3MsIHJv d3MsCisJCQkJCQkJCSAgIGF0dHJfY250LCB2YWNhdHRyc3RhdHMpOwogCX0KIAogCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQU5BTFlaRV9QSEFTRSwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3RhdHNjbWRzLmMKaW5kZXggOGYxNTUwZWM4MC4uMWZhMzllNmYyMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKQEAgLTc1LDEzICs3NSwxMCBAQCBDcmVhdGVT dGF0aXN0aWNzKENyZWF0ZVN0YXRzU3RtdCAqc3RtdCkKIAlIZWFwVHVwbGUJaHR1cDsKIAlE YXR1bQkJdmFsdWVzW05hdHRzX3BnX3N0YXRpc3RpY19leHRdOwogCWJvb2wJCW51bGxzW05h dHRzX3BnX3N0YXRpc3RpY19leHRdOwotCURhdHVtCQlkYXRhdmFsdWVzW05hdHRzX3BnX3N0 YXRpc3RpY19leHRfZGF0YV07Ci0JYm9vbAkJZGF0YW51bGxzW05hdHRzX3BnX3N0YXRpc3Rp Y19leHRfZGF0YV07CiAJaW50MnZlY3RvciAqc3R4a2V5czsKIAlMaXN0CSAgICpzdHhleHBy cyA9IE5JTDsKIAlEYXR1bQkJZXhwcnNEYXR1bTsKIAlSZWxhdGlvbglzdGF0cmVsOwotCVJl bGF0aW9uCWRhdGFyZWw7CiAJUmVsYXRpb24JcmVsID0gTlVMTDsKIAlPaWQJCQlyZWxpZDsK IAlPYmplY3RBZGRyZXNzIHBhcmVudG9iamVjdCwKQEAgLTUxNCwyOCArNTExLDEwIEBAIENy ZWF0ZVN0YXRpc3RpY3MoQ3JlYXRlU3RhdHNTdG10ICpzdG10KQogCXJlbGF0aW9uX2Nsb3Nl KHN0YXRyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKLQkgKiBBbHNvIGJ1aWxkIHRo ZSBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgdHVwbGUsIHRvIGhvbGQgdGhlIGFjdHVhbAotCSAq IHN0YXRpc3RpY3MgZGF0YS4KKwkgKiBXZSB1c2VkIHRvIGNyZWF0ZSB0aGUgcGdfc3RhdGlz dGljX2V4dF9kYXRhIHR1cGxlIHRvbywgYnV0IGl0J3Mgbm90IGNsZWFyCisJICogd2hhdCB2 YWx1ZSBzaG91bGQgdGhlIHN0eGRpbmhlcml0IGZsYWcgaGF2ZSAoaXQgZGVwZW5kcyBvbiB3 aGV0aGVyIHRoZSByZWwKKwkgKiBpcyBwYXJ0aXRpb25lZCwgY29udGFpbnMgZGF0YSwgZXRj LikKIAkgKi8KLQlkYXRhcmVsID0gdGFibGVfb3BlbihTdGF0aXN0aWNFeHREYXRhUmVsYXRp b25JZCwgUm93RXhjbHVzaXZlTG9jayk7Ci0KLQltZW1zZXQoZGF0YXZhbHVlcywgMCwgc2l6 ZW9mKGRhdGF2YWx1ZXMpKTsKLQltZW1zZXQoZGF0YW51bGxzLCBmYWxzZSwgc2l6ZW9mKGRh dGFudWxscykpOwotCi0JZGF0YXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9z dHhvaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oc3RhdG9pZCk7Ci0KLQkvKiBubyBzdGF0 aXN0aWNzIGJ1aWx0IHlldCAqLwotCWRhdGFudWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRf ZGF0YV9zdHhkbmRpc3RpbmN0IC0gMV0gPSB0cnVlOwotCWRhdGFudWxsc1tBbnVtX3BnX3N0 YXRpc3RpY19leHRfZGF0YV9zdHhkZGVwZW5kZW5jaWVzIC0gMV0gPSB0cnVlOwotCWRhdGFu dWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkbWN2IC0gMV0gPSB0cnVlOwot CWRhdGFudWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkZXhwciAtIDFdID0g dHJ1ZTsKLQotCS8qIGluc2VydCBpdCBpbnRvIHBnX3N0YXRpc3RpY19leHRfZGF0YSAqLwot CWh0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoZGF0YXJlbC0+cmRfYXR0LCBkYXRhdmFsdWVzLCBk YXRhbnVsbHMpOwotCUNhdGFsb2dUdXBsZUluc2VydChkYXRhcmVsLCBodHVwKTsKLQloZWFw X2ZyZWV0dXBsZShodHVwKTsKLQotCXJlbGF0aW9uX2Nsb3NlKGRhdGFyZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soU3RhdGlzdGljRXh0 UmVsYXRpb25JZCwgc3RhdG9pZCwgMCk7CiAKQEAgLTcxNywzMiArNjk2LDQ5IEBAIEFsdGVy U3RhdGlzdGljcyhBbHRlclN0YXRzU3RtdCAqc3RtdCkKIH0KIAogLyoKLSAqIEd1dHMgb2Yg c3RhdGlzdGljcyBvYmplY3QgZGVsZXRpb24uCisgKiBEZWxldGUgZW50cnkgaW4gcGdfc3Rh dGlzdGljX2V4dF9kYXRhIGNhdGFsb2cuIFdlIGRvbid0IGtub3cgaWYgdGhlIHJvdworICog ZXhpc3RzLCBzbyBkb24ndCBlcnJvciBvdXQuCiAgKi8KIHZvaWQKLVJlbW92ZVN0YXRpc3Rp Y3NCeUlkKE9pZCBzdGF0c09pZCkKK1JlbW92ZVN0YXRpc3RpY3NEYXRhQnlJZChPaWQgc3Rh dHNPaWQsIGJvb2wgaW5oKQogewogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUhlYXBUdXBsZQl0 dXA7Ci0JRm9ybV9wZ19zdGF0aXN0aWNfZXh0IHN0YXRleHQ7Ci0JT2lkCQkJcmVsaWQ7CiAK LQkvKgotCSAqIEZpcnN0IGRlbGV0ZSB0aGUgcGdfc3RhdGlzdGljX2V4dF9kYXRhIHR1cGxl IGhvbGRpbmcgdGhlIGFjdHVhbAotCSAqIHN0YXRpc3RpY2FsIGRhdGEuCi0JICovCiAJcmVs YXRpb24gPSB0YWJsZV9vcGVuKFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKIAotCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShTVEFURVhUREFUQVNUWE9J RCwgT2JqZWN0SWRHZXREYXR1bShzdGF0c09pZCkpOwotCi0JaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHR1cCkpIC8qIHNob3VsZCBub3QgaGFwcGVuICovCi0JCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBzdGF0aXN0aWNzIGRhdGEgJXUiLCBzdGF0c09pZCk7CisJ dHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdldERh dHVtKHN0YXRzT2lkKSwKKwkJCQkJCSAgQm9vbEdldERhdHVtKGluaCkpOwogCi0JQ2F0YWxv Z1R1cGxlRGVsZXRlKHJlbGF0aW9uLCAmdHVwLT50X3NlbGYpOworCS8qIFdlIGRvbid0IGtu b3cgaWYgdGhlIGRhdGEgcm93IGZvciBpbmggdmFsdWUgZXhpc3RzLiAqLworCWlmIChIZWFw VHVwbGVJc1ZhbGlkKHR1cCkpCisJeworCQlDYXRhbG9nVHVwbGVEZWxldGUocmVsYXRpb24s ICZ0dXAtPnRfc2VsZik7CiAKLQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJUmVsZWFzZVN5 c0NhY2hlKHR1cCk7CisJfQogCiAJdGFibGVfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2 ZUxvY2spOworfQorCisvKgorICogR3V0cyBvZiBzdGF0aXN0aWNzIG9iamVjdCBkZWxldGlv bi4KKyAqLwordm9pZAorUmVtb3ZlU3RhdGlzdGljc0J5SWQoT2lkIHN0YXRzT2lkKQorewor CVJlbGF0aW9uCXJlbGF0aW9uOworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ19zdGF0aXN0 aWNfZXh0IHN0YXRleHQ7CisJT2lkCQkJcmVsaWQ7CisKKwkvKgorCSAqIEZpcnN0IGRlbGV0 ZSB0aGUgcGdfc3RhdGlzdGljX2V4dF9kYXRhIHR1cGxlcyBob2xkaW5nIHRoZSBhY3R1YWwK KwkgKiBzdGF0aXN0aWNhbCBkYXRhLiBUaGVyZSBtaWdodCBiZSBkYXRhIHdpdGgvd2l0aG91 dCBpbmhlcml0YW5jZSwgc28KKwkgKiBhdHRlbXB0IGRlbGV0aW5nIGJvdGguCisJICovCisJ UmVtb3ZlU3RhdGlzdGljc0RhdGFCeUlkKHN0YXRzT2lkLCB0cnVlKTsKKwlSZW1vdmVTdGF0 aXN0aWNzRGF0YUJ5SWQoc3RhdHNPaWQsIGZhbHNlKTsKIAogCS8qCiAJICogRGVsZXRlIHRo ZSBwZ19zdGF0aXN0aWNfZXh0IHR1cGxlLiAgQWxzbyBzZW5kIG91dCBhIGNhY2hlIGludmFs IG9uIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDU2NGEz OGExM2UuLjhiYTNhM2M1OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0 aWNfZXh0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0X2RhdGEuaCIK ICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMTI3Niw2ICsxMjc3LDg3IEBAIGdl dF9yZWxhdGlvbl9jb25zdHJhaW50cyhQbGFubmVySW5mbyAqcm9vdCwKIAlyZXR1cm4gcmVz dWx0OwogfQogCisvKgorICogVHJ5IGxvYWRpbmcgZGF0YSBmb3IgdGhlIHN0YXRpc3RpY3Mg b2JqZWN0LgorICoKKyAqIFdlIGRvbid0IGtub3cgaWYgdGhlIGRhdGEgKHNwZWNpZmllZCBi eSBzdGF0T2lkIGFuZCBpbmggdmFsdWUpIGV4aXN0LgorICogVGhlIHJlc3VsdCBpcyBzdG9y ZWQgaW4gc3RhaW5mb3MgbGlzdC4KKyAqLworc3RhdGljIHZvaWQKK2dldF9yZWxhdGlvbl9z dGF0aXN0aWNzX3dvcmtlcihMaXN0ICoqc3RhaW5mb3MsIFJlbE9wdEluZm8gKnJlbCwKKwkJ CQkJCQkgICBPaWQgc3RhdE9pZCwgYm9vbCBpbmgsCisJCQkJCQkJICAgQml0bWFwc2V0ICpr ZXlzLCBMaXN0ICpleHBycykKK3sKKwlGb3JtX3BnX3N0YXRpc3RpY19leHRfZGF0YSBkYXRh Rm9ybTsKKwlIZWFwVHVwbGUJZHR1cDsKKworCWR0dXAgPSBTZWFyY2hTeXNDYWNoZTIoU1RB VEVYVERBVEFTVFhPSUQsCisJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHN0YXRPaWQpLCBC b29sR2V0RGF0dW0oaW5oKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGR0dXApKQorCQly ZXR1cm47CisKKwlkYXRhRm9ybSA9IChGb3JtX3BnX3N0YXRpc3RpY19leHRfZGF0YSkgR0VU U1RSVUNUKGR0dXApOworCisJLyogYWRkIG9uZSBTdGF0aXN0aWNFeHRJbmZvIGZvciBlYWNo IGtpbmQgYnVpbHQgKi8KKwlpZiAoc3RhdGV4dF9pc19raW5kX2J1aWx0KGR0dXAsIFNUQVRT X0VYVF9ORElTVElOQ1QpKQorCXsKKwkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IG1ha2VO b2RlKFN0YXRpc3RpY0V4dEluZm8pOworCisJCWluZm8tPnN0YXRPaWQgPSBzdGF0T2lkOwor CQlpbmZvLT5pbmhlcml0ID0gZGF0YUZvcm0tPnN0eGRpbmhlcml0OworCQlpbmZvLT5yZWwg PSByZWw7CisJCWluZm8tPmtpbmQgPSBTVEFUU19FWFRfTkRJU1RJTkNUOworCQlpbmZvLT5r ZXlzID0gYm1zX2NvcHkoa2V5cyk7CisJCWluZm8tPmV4cHJzID0gZXhwcnM7CisKKwkJKnN0 YWluZm9zID0gbGFwcGVuZCgqc3RhaW5mb3MsIGluZm8pOworCX0KKworCWlmIChzdGF0ZXh0 X2lzX2tpbmRfYnVpbHQoZHR1cCwgU1RBVFNfRVhUX0RFUEVOREVOQ0lFUykpCisJeworCQlT dGF0aXN0aWNFeHRJbmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7CisK KwkJaW5mby0+c3RhdE9pZCA9IHN0YXRPaWQ7CisJCWluZm8tPmluaGVyaXQgPSBkYXRhRm9y bS0+c3R4ZGluaGVyaXQ7CisJCWluZm8tPnJlbCA9IHJlbDsKKwkJaW5mby0+a2luZCA9IFNU QVRTX0VYVF9ERVBFTkRFTkNJRVM7CisJCWluZm8tPmtleXMgPSBibXNfY29weShrZXlzKTsK KwkJaW5mby0+ZXhwcnMgPSBleHByczsKKworCQkqc3RhaW5mb3MgPSBsYXBwZW5kKCpzdGFp bmZvcywgaW5mbyk7CisJfQorCisJaWYgKHN0YXRleHRfaXNfa2luZF9idWlsdChkdHVwLCBT VEFUU19FWFRfTUNWKSkKKwl7CisJCVN0YXRpc3RpY0V4dEluZm8gKmluZm8gPSBtYWtlTm9k ZShTdGF0aXN0aWNFeHRJbmZvKTsKKworCQlpbmZvLT5zdGF0T2lkID0gc3RhdE9pZDsKKwkJ aW5mby0+aW5oZXJpdCA9IGRhdGFGb3JtLT5zdHhkaW5oZXJpdDsKKwkJaW5mby0+cmVsID0g cmVsOworCQlpbmZvLT5raW5kID0gU1RBVFNfRVhUX01DVjsKKwkJaW5mby0+a2V5cyA9IGJt c19jb3B5KGtleXMpOworCQlpbmZvLT5leHBycyA9IGV4cHJzOworCisJCSpzdGFpbmZvcyA9 IGxhcHBlbmQoKnN0YWluZm9zLCBpbmZvKTsKKwl9CisKKwlpZiAoc3RhdGV4dF9pc19raW5k X2J1aWx0KGR0dXAsIFNUQVRTX0VYVF9FWFBSRVNTSU9OUykpCisJeworCQlTdGF0aXN0aWNF eHRJbmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7CisKKwkJaW5mby0+ c3RhdE9pZCA9IHN0YXRPaWQ7CisJCWluZm8tPmluaGVyaXQgPSBkYXRhRm9ybS0+c3R4ZGlu aGVyaXQ7CisJCWluZm8tPnJlbCA9IHJlbDsKKwkJaW5mby0+a2luZCA9IFNUQVRTX0VYVF9F WFBSRVNTSU9OUzsKKwkJaW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMpOworCQlpbmZvLT5l eHBycyA9IGV4cHJzOworCisJCSpzdGFpbmZvcyA9IGxhcHBlbmQoKnN0YWluZm9zLCBpbmZv KTsKKwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUoZHR1cCk7Cit9CisKIC8qCiAgKiBnZXRfcmVs YXRpb25fc3RhdGlzdGljcwogICoJCVJldHJpZXZlIGV4dGVuZGVkIHN0YXRpc3RpY3MgZGVm aW5lZCBvbiB0aGUgdGFibGUuCkBAIC0xMjk5LDcgKzEzODEsNiBAQCBnZXRfcmVsYXRpb25f c3RhdGlzdGljcyhSZWxPcHRJbmZvICpyZWwsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQlPaWQJ CQlzdGF0T2lkID0gbGZpcnN0X29pZChsKTsKIAkJRm9ybV9wZ19zdGF0aXN0aWNfZXh0IHN0 YUZvcm07CiAJCUhlYXBUdXBsZQlodHVwOwotCQlIZWFwVHVwbGUJZHR1cDsKIAkJQml0bWFw c2V0ICAqa2V5cyA9IE5VTEw7CiAJCUxpc3QJICAgKmV4cHJzID0gTklMOwogCQlpbnQJCQlp OwpAQCAtMTMwOSwxMCArMTM5MCw2IEBAIGdldF9yZWxhdGlvbl9zdGF0aXN0aWNzKFJlbE9w dEluZm8gKnJlbCwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBzdGF0T2lkKTsKIAkJ c3RhRm9ybSA9IChGb3JtX3BnX3N0YXRpc3RpY19leHQpIEdFVFNUUlVDVChodHVwKTsKIAot CQlkdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFNUQVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdl dERhdHVtKHN0YXRPaWQpKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGR0dXApKQotCQkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHN0YXRpc3RpY3Mgb2JqZWN0 ICV1Iiwgc3RhdE9pZCk7Ci0KIAkJLyoKIAkJICogRmlyc3QsIGJ1aWxkIHRoZSBhcnJheSBv ZiBjb2x1bW5zIGNvdmVyZWQuICBUaGlzIGlzIHVsdGltYXRlbHkKIAkJICogd2FzdGVkIGlm IG5vIHN0YXRzIHdpdGhpbiB0aGUgb2JqZWN0IGhhdmUgYWN0dWFsbHkgYmVlbiBidWlsdCwg YnV0CkBAIC0xMzI0LDYgKzE0MDEsMTEgQEAgZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3MoUmVs T3B0SW5mbyAqcmVsLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJLyoKIAkJICogUHJlcHJvY2Vz cyBleHByZXNzaW9ucyAoaWYgYW55KS4gV2UgcmVhZCB0aGUgZXhwcmVzc2lvbnMsIHJ1biB0 aGVtCiAJCSAqIHRocm91Z2ggZXZhbF9jb25zdF9leHByZXNzaW9ucywgYW5kIGZpeCB0aGUg dmFybm9zLgorCQkgKgorCQkgKiBYWFggV2UgZG9uJ3Qga25vdyB5ZXQgaWYgdGhlcmUgYXJl IGFueSBkYXRhIGZvciB0aGlzIHN0YXRzIG9iamVjdCwKKwkJICogd2l0aCBlaXRoZXIgc3R4 ZGluaGVyaXQgdmFsdWUuIEJ1dCBpdCdzIHJlYXNvbmFibGUgdG8gYXNzdW1lIHRoZXJlCisJ CSAqIGlzIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSwgcG9zc2libHkgYm90aC4gU28gaXQncyBi ZXR0ZXIgdG8gcHJvY2VzcworCQkgKiBrZXlzIGFuZCBleHByZXNzaW9ucyBoZXJlLgogCQkg Ki8KIAkJewogCQkJYm9vbAkJaXNudWxsOwpAQCAtMTM2NCw2MSArMTQ0NiwxNCBAQCBnZXRf cmVsYXRpb25fc3RhdGlzdGljcyhSZWxPcHRJbmZvICpyZWwsIFJlbGF0aW9uIHJlbGF0aW9u KQogCQkJfQogCQl9CiAKLQkJLyogYWRkIG9uZSBTdGF0aXN0aWNFeHRJbmZvIGZvciBlYWNo IGtpbmQgYnVpbHQgKi8KLQkJaWYgKHN0YXRleHRfaXNfa2luZF9idWlsdChkdHVwLCBTVEFU U19FWFRfTkRJU1RJTkNUKSkKLQkJewotCQkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IG1h a2VOb2RlKFN0YXRpc3RpY0V4dEluZm8pOwotCi0JCQlpbmZvLT5zdGF0T2lkID0gc3RhdE9p ZDsKLQkJCWluZm8tPnJlbCA9IHJlbDsKLQkJCWluZm8tPmtpbmQgPSBTVEFUU19FWFRfTkRJ U1RJTkNUOwotCQkJaW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMpOwotCQkJaW5mby0+ZXhw cnMgPSBleHByczsKLQotCQkJc3RhaW5mb3MgPSBsYXBwZW5kKHN0YWluZm9zLCBpbmZvKTsK LQkJfQotCi0JCWlmIChzdGF0ZXh0X2lzX2tpbmRfYnVpbHQoZHR1cCwgU1RBVFNfRVhUX0RF UEVOREVOQ0lFUykpCi0JCXsKLQkJCVN0YXRpc3RpY0V4dEluZm8gKmluZm8gPSBtYWtlTm9k ZShTdGF0aXN0aWNFeHRJbmZvKTsKLQotCQkJaW5mby0+c3RhdE9pZCA9IHN0YXRPaWQ7Ci0J CQlpbmZvLT5yZWwgPSByZWw7Ci0JCQlpbmZvLT5raW5kID0gU1RBVFNfRVhUX0RFUEVOREVO Q0lFUzsKLQkJCWluZm8tPmtleXMgPSBibXNfY29weShrZXlzKTsKLQkJCWluZm8tPmV4cHJz ID0gZXhwcnM7Ci0KLQkJCXN0YWluZm9zID0gbGFwcGVuZChzdGFpbmZvcywgaW5mbyk7Ci0J CX0KLQotCQlpZiAoc3RhdGV4dF9pc19raW5kX2J1aWx0KGR0dXAsIFNUQVRTX0VYVF9NQ1Yp KQotCQl7Ci0JCQlTdGF0aXN0aWNFeHRJbmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGlj RXh0SW5mbyk7Ci0KLQkJCWluZm8tPnN0YXRPaWQgPSBzdGF0T2lkOwotCQkJaW5mby0+cmVs ID0gcmVsOwotCQkJaW5mby0+a2luZCA9IFNUQVRTX0VYVF9NQ1Y7Ci0JCQlpbmZvLT5rZXlz ID0gYm1zX2NvcHkoa2V5cyk7Ci0JCQlpbmZvLT5leHBycyA9IGV4cHJzOwotCi0JCQlzdGFp bmZvcyA9IGxhcHBlbmQoc3RhaW5mb3MsIGluZm8pOwotCQl9Ci0KLQkJaWYgKHN0YXRleHRf aXNfa2luZF9idWlsdChkdHVwLCBTVEFUU19FWFRfRVhQUkVTU0lPTlMpKQotCQl7Ci0JCQlT dGF0aXN0aWNFeHRJbmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7CisJ CS8qIGV4dHJhY3Qgc3RhdGlzdGljcyBmb3IgcG9zc2libGUgdmFsdWVzIG9mIHN0eGRpbmhl cml0IGZsYWcgKi8KIAotCQkJaW5mby0+c3RhdE9pZCA9IHN0YXRPaWQ7Ci0JCQlpbmZvLT5y ZWwgPSByZWw7Ci0JCQlpbmZvLT5raW5kID0gU1RBVFNfRVhUX0VYUFJFU1NJT05TOwotCQkJ aW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMpOwotCQkJaW5mby0+ZXhwcnMgPSBleHByczsK KwkJZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3Nfd29ya2VyKCZzdGFpbmZvcywgcmVsLCBzdGF0 T2lkLCB0cnVlLCBrZXlzLCBleHBycyk7CiAKLQkJCXN0YWluZm9zID0gbGFwcGVuZChzdGFp bmZvcywgaW5mbyk7Ci0JCX0KKwkJZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3Nfd29ya2VyKCZz dGFpbmZvcywgcmVsLCBzdGF0T2lkLCBmYWxzZSwga2V5cywgZXhwcnMpOwogCiAJCVJlbGVh c2VTeXNDYWNoZShodHVwKTsKLQkJUmVsZWFzZVN5c0NhY2hlKGR0dXApOworCiAJCWJtc19m cmVlKGtleXMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9k ZXBlbmRlbmNpZXMuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMK aW5kZXggNWY0ZGY2ZTA0Yy4uNjcyMDkxYjUxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L2RlcGVuZGVuY2llcy5jCkBAIC02MTksMTQgKzYxOSwxNiBAQCBkZXBlbmRlbmN5X2lzX2Z1 bGx5X21hdGNoZWQoTVZEZXBlbmRlbmN5ICpkZXBlbmRlbmN5LCBCaXRtYXBzZXQgKmF0dG51 bXMpCiAgKgkJTG9hZCB0aGUgZnVuY3Rpb25hbCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBpbmRp Y2F0ZWQgcGdfc3RhdGlzdGljX2V4dCB0dXBsZQogICovCiBNVkRlcGVuZGVuY2llcyAqCi1z dGF0ZXh0X2RlcGVuZGVuY2llc19sb2FkKE9pZCBtdm9pZCkKK3N0YXRleHRfZGVwZW5kZW5j aWVzX2xvYWQoT2lkIG12b2lkLCBib29sIGluaCkKIHsKIAlNVkRlcGVuZGVuY2llcyAqcmVz dWx0OwogCWJvb2wJCWlzbnVsbDsKIAlEYXR1bQkJZGVwczsKIAlIZWFwVHVwbGUJaHR1cDsK IAotCWh0dXAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9iamVjdElk R2V0RGF0dW0obXZvaWQpKTsKKwlodHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRB U1RYT0lELAorCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShtdm9pZCksCisJCQkJCQkgICBC b29sR2V0RGF0dW0oaW5oKSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3Qg JXUiLCBtdm9pZCk7CiAKQEAgLTE0MTcsMTYgKzE0MTksNiBAQCBkZXBlbmRlbmNpZXNfY2xh dXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwKIAlOb2RlCSAgKip1bmlx dWVfZXhwcnM7CiAJaW50CQkJdW5pcXVlX2V4cHJzX2NudDsKIAotCS8qCi0JICogV2hlbiBk ZWFsaW5nIHdpdGggcmVndWxhciBpbmhlcml0YW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVk IHN0YXRzCi0JICogKHdoaWNoIHdlcmUgYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQg cmVscywgYW5kIHRodXMgZG8gbm90Ci0JICogcmVwcmVzZW50IHRoZW0pLiBGb3IgcGFydGl0 aW9uZWQgdGFibGVzIGRhdGEgZnJvbSBwYXJ0aXRpb25zIGFyZQotCSAqIGluIHRoZSBzdGF0 cyAoYW5kIHRoZXJlJ3Mgbm8gZGF0YSBpbiB0aGUgbm9uLWxlYWYgcmVsYXRpb25zKSwgc28K LQkgKiBpbiB0aGlzIGNhc2Ugd2UgZG8gY29uc2lkZXIgZXh0ZW5kZWQgc3RhdHMuCi0JICov Ci0JaWYgKHJ0ZS0+aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVE X1RBQkxFKQotCQlyZXR1cm4gMS4wOwotCiAJLyogY2hlY2sgaWYgdGhlcmUncyBhbnkgc3Rh dHMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yIHVzLiAqLwogCWlmICghaGFzX3N0YXRzX29m X2tpbmQocmVsLT5zdGF0bGlzdCwgU1RBVFNfRVhUX0RFUEVOREVOQ0lFUykpCiAJCXJldHVy biAxLjA7CkBAIC0xNjEwLDYgKzE2MDIsMTAgQEAgZGVwZW5kZW5jaWVzX2NsYXVzZWxpc3Rf c2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsCiAJCWlmIChzdGF0LT5raW5kICE9IFNU QVRTX0VYVF9ERVBFTkRFTkNJRVMpCiAJCQljb250aW51ZTsKIAorCQkvKiBza2lwIHN0YXRp c3RpY3Mgd2l0aCBtaXNtYXRjaGluZyBzdHhkaW5oZXJpdCB2YWx1ZSAqLworCQlpZiAoc3Rh dC0+aW5oZXJpdCAhPSBydGUtPmluaCkKKwkJCWNvbnRpbnVlOworCiAJCS8qCiAJCSAqIENv dW50IG1hdGNoaW5nIGF0dHJpYnV0ZXMgLSB3ZSBoYXZlIHRvIHVuZG8gdGhlIGF0dG51bSBv ZmZzZXRzLiBUaGUKIAkJICogaW5wdXQgYXR0cmlidXRlIG51bWJlcnMgYXJlIG5vdCBvZmZz ZXQgKGV4cHJlc3Npb25zIGFyZSBub3QKQEAgLTE2NTYsNyArMTY1Miw3IEBAIGRlcGVuZGVu Y2llc19jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LAogCQlpZiAo bm1hdGNoZWQgKyBuZXhwcnMgPCAyKQogCQkJY29udGludWU7CiAKLQkJZGVwcyA9IHN0YXRl eHRfZGVwZW5kZW5jaWVzX2xvYWQoc3RhdC0+c3RhdE9pZCk7CisJCWRlcHMgPSBzdGF0ZXh0 X2RlcGVuZGVuY2llc19sb2FkKHN0YXQtPnN0YXRPaWQsIHJ0ZS0+aW5oKTsKIAogCQkvKgog CQkgKiBUaGUgZXhwcmVzc2lvbnMgbWF5IGJlIHJlcHJlc2VudGVkIGJ5IGRpZmZlcmVudCBh dHRudW1zIGluIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRl bmRlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5j CmluZGV4IDNjZGEyMGQzYjguLjM0MjM2MDNkZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL2V4dGVuZGVkX3N0YXRzLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3Rp Y19leHRfZGF0YS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIK QEAgLTc4LDcgKzc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3RhdEV4dEVudHJ5CiBzdGF0aWMg TGlzdCAqZmV0Y2hfc3RhdGVudHJpZXNfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHBnX3N0YXRl eHQsIE9pZCByZWxpZCk7CiBzdGF0aWMgVmFjQXR0clN0YXRzICoqbG9va3VwX3Zhcl9hdHRy X3N0YXRzKFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICphdHRycywgTGlzdCAqZXhwcnMsCiAJ CQkJCQkJCQkJCWludCBudmFjYXR0cywgVmFjQXR0clN0YXRzICoqdmFjYXR0cyk7Ci1zdGF0 aWMgdm9pZCBzdGF0ZXh0X3N0b3JlKE9pZCBzdGF0T2lkLAorc3RhdGljIHZvaWQgc3RhdGV4 dF9zdG9yZShPaWQgc3RhdE9pZCwgYm9vbCBpbmgsCiAJCQkJCQkgIE1WTkRpc3RpbmN0ICpu ZGlzdGluY3QsIE1WRGVwZW5kZW5jaWVzICpkZXBlbmRlbmNpZXMsCiAJCQkJCQkgIE1DVkxp c3QgKm1jdiwgRGF0dW0gZXhwcnMsIFZhY0F0dHJTdGF0cyAqKnN0YXRzKTsKIHN0YXRpYyBp bnQJc3RhdGV4dF9jb21wdXRlX3N0YXR0YXJnZXQoaW50IHN0YXR0YXJnZXQsCkBAIC0xMTEs NyArMTEyLDcgQEAgc3RhdGljIFN0YXRzQnVpbGREYXRhICptYWtlX2J1aWxkX2RhdGEoUmVs YXRpb24gb25lcmVsLCBTdGF0RXh0RW50cnkgKnN0YXQsCiAgKiByZXF1ZXN0ZWQgc3RhdHMs IGFuZCBzZXJpYWxpemVzIHRoZW0gYmFjayBpbnRvIHRoZSBjYXRhbG9nLgogICovCiB2b2lk Ci1CdWlsZFJlbGF0aW9uRXh0U3RhdGlzdGljcyhSZWxhdGlvbiBvbmVyZWwsIGRvdWJsZSB0 b3RhbHJvd3MsCitCdWlsZFJlbGF0aW9uRXh0U3RhdGlzdGljcyhSZWxhdGlvbiBvbmVyZWws IGJvb2wgaW5oLCBkb3VibGUgdG90YWxyb3dzLAogCQkJCQkJICAgaW50IG51bXJvd3MsIEhl YXBUdXBsZSAqcm93cywKIAkJCQkJCSAgIGludCBuYXR0cywgVmFjQXR0clN0YXRzICoqdmFj YXR0cnN0YXRzKQogewpAQCAtMjMxLDcgKzIzMiw4IEBAIEJ1aWxkUmVsYXRpb25FeHRTdGF0 aXN0aWNzKFJlbGF0aW9uIG9uZXJlbCwgZG91YmxlIHRvdGFscm93cywKIAkJfQogCiAJCS8q IHN0b3JlIHRoZSBzdGF0aXN0aWNzIGluIHRoZSBjYXRhbG9nICovCi0JCXN0YXRleHRfc3Rv cmUoc3RhdC0+c3RhdE9pZCwgbmRpc3RpbmN0LCBkZXBlbmRlbmNpZXMsIG1jdiwgZXhwcnN0 YXRzLCBzdGF0cyk7CisJCXN0YXRleHRfc3RvcmUoc3RhdC0+c3RhdE9pZCwgaW5oLAorCQkJ CQkgIG5kaXN0aW5jdCwgZGVwZW5kZW5jaWVzLCBtY3YsIGV4cHJzdGF0cywgc3RhdHMpOwog CiAJCS8qIGZvciByZXBvcnRpbmcgcHJvZ3Jlc3MgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19BTkFMWVpFX0VYVF9TVEFUU19DT01QVVRFRCwKQEAgLTc4 MiwyMyArNzg0LDI3IEBAIGxvb2t1cF92YXJfYXR0cl9zdGF0cyhSZWxhdGlvbiByZWwsIEJp dG1hcHNldCAqYXR0cnMsIExpc3QgKmV4cHJzLAogICoJdHVwbGUuCiAgKi8KIHN0YXRpYyB2 b2lkCi1zdGF0ZXh0X3N0b3JlKE9pZCBzdGF0T2lkLAorc3RhdGV4dF9zdG9yZShPaWQgc3Rh dE9pZCwgYm9vbCBpbmgsCiAJCQkgIE1WTkRpc3RpbmN0ICpuZGlzdGluY3QsIE1WRGVwZW5k ZW5jaWVzICpkZXBlbmRlbmNpZXMsCiAJCQkgIE1DVkxpc3QgKm1jdiwgRGF0dW0gZXhwcnMs IFZhY0F0dHJTdGF0cyAqKnN0YXRzKQogewogCVJlbGF0aW9uCXBnX3N0ZXh0ZGF0YTsKLQlI ZWFwVHVwbGUJc3R1cCwKLQkJCQlvbGR0dXA7CisJSGVhcFR1cGxlCXN0dXA7CiAJRGF0dW0J CXZhbHVlc1tOYXR0c19wZ19zdGF0aXN0aWNfZXh0X2RhdGFdOwogCWJvb2wJCW51bGxzW05h dHRzX3BnX3N0YXRpc3RpY19leHRfZGF0YV07Ci0JYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdf c3RhdGlzdGljX2V4dF9kYXRhXTsKIAogCXBnX3N0ZXh0ZGF0YSA9IHRhYmxlX29wZW4oU3Rh dGlzdGljRXh0RGF0YVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJbWVtc2V0 KG51bGxzLCB0cnVlLCBzaXplb2YobnVsbHMpKTsKLQltZW1zZXQocmVwbGFjZXMsIGZhbHNl LCBzaXplb2YocmVwbGFjZXMpKTsKIAltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVz KSk7CiAKKwkvKiBiYXNpYyBpbmZvICovCisJdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX2V4 dF9kYXRhX3N0eG9pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShzdGF0T2lkKTsKKwludWxs c1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhvaWQgLSAxXSA9IGZhbHNlOworCisJ dmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRpbmhlcml0IC0gMV0gPSBC b29sR2V0RGF0dW0oaW5oKTsKKwludWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9z dHhkaW5oZXJpdCAtIDFdID0gZmFsc2U7CisKIAkvKgogCSAqIENvbnN0cnVjdCBhIG5ldyBw Z19zdGF0aXN0aWNfZXh0X2RhdGEgdHVwbGUsIHJlcGxhY2luZyB0aGUgY2FsY3VsYXRlZAog CSAqIHN0YXRzLgpAQCAtODMxLDI1ICs4MzcsMTUgQEAgc3RhdGV4dF9zdG9yZShPaWQgc3Rh dE9pZCwKIAkJdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRleHByIC0g MV0gPSBleHByczsKIAl9CiAKLQkvKiBhbHdheXMgcmVwbGFjZSB0aGUgdmFsdWUgKGVpdGhl ciBieSBieXRlYSBvciBOVUxMKSAqLwotCXJlcGxhY2VzW0FudW1fcGdfc3RhdGlzdGljX2V4 dF9kYXRhX3N0eGRuZGlzdGluY3QgLSAxXSA9IHRydWU7Ci0JcmVwbGFjZXNbQW51bV9wZ19z dGF0aXN0aWNfZXh0X2RhdGFfc3R4ZGRlcGVuZGVuY2llcyAtIDFdID0gdHJ1ZTsKLQlyZXBs YWNlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkbWN2IC0gMV0gPSB0cnVlOwot CXJlcGxhY2VzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRleHByIC0gMV0gPSB0 cnVlOwotCi0JLyogdGhlcmUgc2hvdWxkIGFscmVhZHkgYmUgYSBwZ19zdGF0aXN0aWNfZXh0 X2RhdGEgdHVwbGUgKi8KLQlvbGR0dXAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVYVERBVEFT VFhPSUQsIE9iamVjdElkR2V0RGF0dW0oc3RhdE9pZCkpOwotCWlmICghSGVhcFR1cGxlSXNW YWxpZChvbGR0dXApKQotCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig c3RhdGlzdGljcyBvYmplY3QgJXUiLCBzdGF0T2lkKTsKLQotCS8qIHJlcGxhY2UgaXQgKi8K LQlzdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUob2xkdHVwLAotCQkJCQkJCSBSZWxhdGlvbkdl dERlc2NyKHBnX3N0ZXh0ZGF0YSksCi0JCQkJCQkJIHZhbHVlcywKLQkJCQkJCQkgbnVsbHMs Ci0JCQkJCQkJIHJlcGxhY2VzKTsKLQlSZWxlYXNlU3lzQ2FjaGUob2xkdHVwKTsKLQlDYXRh bG9nVHVwbGVVcGRhdGUocGdfc3RleHRkYXRhLCAmc3R1cC0+dF9zZWxmLCBzdHVwKTsKKwkv KgorCSAqIERlbGV0ZSB0aGUgb2xkIHR1cGxlIGlmIGl0IGV4aXN0cywgYW5kIGluc2VydCBh IG5ldyBvbmUuIEl0J3MgZWFzaWVyCisJICogdGhhbiB0cnlpbmcgdG8gdXBkYXRlIG9yIGlu c2VydCwgYmFzZWQgb24gdmFyaW91cyBjb25kaXRpb25zLgorCSAqLworCVJlbW92ZVN0YXRp c3RpY3NEYXRhQnlJZChzdGF0T2lkLCBpbmgpOworCisJLyogZm9ybSBhbmQgaW5zZXJ0IGEg bmV3IHR1cGxlICovCisJc3R1cCA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2Ny KHBnX3N0ZXh0ZGF0YSksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChw Z19zdGV4dGRhdGEsIHN0dXApOwogCiAJaGVhcF9mcmVldHVwbGUoc3R1cCk7CiAKQEAgLTEy MzUsNyArMTIzMSw3IEBAIHN0YXRfY292ZXJzX2V4cHJlc3Npb25zKFN0YXRpc3RpY0V4dElu Zm8gKnN0YXQsIExpc3QgKmV4cHJzLAogICogZnVydGhlciB0aWVicmVha2VycyBhcmUgbmVl ZGVkLgogICovCiBTdGF0aXN0aWNFeHRJbmZvICoKLWNob29zZV9iZXN0X3N0YXRpc3RpY3Mo TGlzdCAqc3RhdHMsIGNoYXIgcmVxdWlyZWRraW5kLAorY2hvb3NlX2Jlc3Rfc3RhdGlzdGlj cyhMaXN0ICpzdGF0cywgY2hhciByZXF1aXJlZGtpbmQsIGJvb2wgaW5oLAogCQkJCQkgICBC aXRtYXBzZXQgKipjbGF1c2VfYXR0bnVtcywgTGlzdCAqKmNsYXVzZV9leHBycywKIAkJCQkJ ICAgaW50IG5jbGF1c2VzKQogewpAQCAtMTI1Nyw2ICsxMjUzLDEwIEBAIGNob29zZV9iZXN0 X3N0YXRpc3RpY3MoTGlzdCAqc3RhdHMsIGNoYXIgcmVxdWlyZWRraW5kLAogCQlpZiAoaW5m by0+a2luZCAhPSByZXF1aXJlZGtpbmQpCiAJCQljb250aW51ZTsKIAorCQkvKiBza2lwIHN0 YXRpc3RpY3Mgd2l0aCBtaXNtYXRjaGluZyBpbmhlcml0YW5jZSBmbGFnICovCisJCWlmIChp bmZvLT5pbmhlcml0ICE9IGluaCkKKwkJCWNvbnRpbnVlOworCiAJCS8qCiAJCSAqIENvbGxl Y3QgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnMgaW4gcmVtYWluaW5nICh1bmVzdGltYXRl ZCkKIAkJICogY2xhdXNlcyBmdWxseSBjb3ZlcmVkIGJ5IHRoaXMgc3RhdGlzdGljIG9iamVj dC4KQEAgLTE2OTcsMTYgKzE2OTcsNiBAQCBzdGF0ZXh0X21jdl9jbGF1c2VsaXN0X3NlbGVj dGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbGF1c2VzLCBpbnQgdmFyUmVsaQog CVNlbGVjdGl2aXR5IHNlbCA9IChpc19vcikgPyAwLjAgOiAxLjA7CiAJUmFuZ2VUYmxFbnRy eSAqcnRlID0gcGxhbm5lcl9ydF9mZXRjaChyZWwtPnJlbGlkLCByb290KTsKIAotCS8qCi0J ICogV2hlbiBkZWFsaW5nIHdpdGggcmVndWxhciBpbmhlcml0YW5jZSB0cmVlcywgaWdub3Jl IGV4dGVuZGVkIHN0YXRzCi0JICogKHdoaWNoIHdlcmUgYnVpbHQgd2l0aG91dCBkYXRhIGZy b20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90Ci0JICogcmVwcmVzZW50IHRoZW0pLiBG b3IgcGFydGl0aW9uZWQgdGFibGVzIGRhdGEgZnJvbSBwYXJ0aXRpb25zIGFyZQotCSAqIGlu IHRoZSBzdGF0cyAoYW5kIHRoZXJlJ3Mgbm8gZGF0YSBpbiB0aGUgbm9uLWxlYWYgcmVsYXRp b25zKSwgc28KLQkgKiBpbiB0aGlzIGNhc2Ugd2UgZG8gY29uc2lkZXIgZXh0ZW5kZWQgc3Rh dHMuCi0JICovCi0JaWYgKHJ0ZS0+aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFKQotCQlyZXR1cm4gc2VsOwotCiAJLyogY2hlY2sgaWYgdGhlcmUn cyBhbnkgc3RhdHMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yIHVzLiAqLwogCWlmICghaGFz X3N0YXRzX29mX2tpbmQocmVsLT5zdGF0bGlzdCwgU1RBVFNfRVhUX01DVikpCiAJCXJldHVy biBzZWw7CkBAIC0xNzU4LDcgKzE3NDgsNyBAQCBzdGF0ZXh0X21jdl9jbGF1c2VsaXN0X3Nl bGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbGF1c2VzLCBpbnQgdmFyUmVs aQogCQlCaXRtYXBzZXQgICpzaW1wbGVfY2xhdXNlczsKIAogCQkvKiBmaW5kIHRoZSBiZXN0 IHN1aXRlZCBzdGF0aXN0aWNzIG9iamVjdCBmb3IgdGhlc2UgYXR0bnVtcyAqLwotCQlzdGF0 ID0gY2hvb3NlX2Jlc3Rfc3RhdGlzdGljcyhyZWwtPnN0YXRsaXN0LCBTVEFUU19FWFRfTUNW LAorCQlzdGF0ID0gY2hvb3NlX2Jlc3Rfc3RhdGlzdGljcyhyZWwtPnN0YXRsaXN0LCBTVEFU U19FWFRfTUNWLCBydGUtPmluaCwKIAkJCQkJCQkJCSAgbGlzdF9hdHRudW1zLCBsaXN0X2V4 cHJzLAogCQkJCQkJCQkJICBsaXN0X2xlbmd0aChjbGF1c2VzKSk7CiAKQEAgLTE4NDcsNyAr MTgzNyw3IEBAIHN0YXRleHRfbWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lcklu Zm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsIGludCB2YXJSZWxpCiAJCQlNQ1ZMaXN0ICAgICpt Y3ZfbGlzdDsKIAogCQkJLyogTG9hZCB0aGUgTUNWIGxpc3Qgc3RvcmVkIGluIHRoZSBzdGF0 aXN0aWNzIG9iamVjdCAqLwotCQkJbWN2X2xpc3QgPSBzdGF0ZXh0X21jdl9sb2FkKHN0YXQt PnN0YXRPaWQpOworCQkJbWN2X2xpc3QgPSBzdGF0ZXh0X21jdl9sb2FkKHN0YXQtPnN0YXRP aWQsIHJ0ZS0+aW5oKTsKIAogCQkJLyoKIAkJCSAqIENvbXB1dGUgdGhlIHNlbGVjdGl2aXR5 IG9mIHRoZSBPUmVkIGxpc3Qgb2YgY2xhdXNlcyBjb3ZlcmVkIGJ5CkBAIC0yNDA4LDcgKzIz OTgsNyBAQCBzZXJpYWxpemVfZXhwcl9zdGF0cyhBbmxFeHByRGF0YSAqZXhwcmRhdGEsIGlu dCBuZXhwcnMpCiAgKiBpZGVudGlmaWVkIGJ5IHRoZSBzdXBwbGllZCBpbmRleC4KICAqLwog SGVhcFR1cGxlCi1zdGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQoT2lkIHN0eG9pZCwgaW50IGlk eCkKK3N0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChPaWQgc3R4b2lkLCBib29sIGluaCwgaW50 IGlkeCkKIHsKIAlib29sCQlpc251bGw7CiAJRGF0dW0JCXZhbHVlOwpAQCAtMjQxOCw3ICsy NDA4LDggQEAgc3RhdGV4dF9leHByZXNzaW9uc19sb2FkKE9pZCBzdHhvaWQsIGludCBpZHgp CiAJSGVhcFR1cGxlRGF0YSB0bXB0dXA7CiAJSGVhcFR1cGxlCXR1cDsKIAotCWh0dXAgPSBT ZWFyY2hTeXNDYWNoZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9iamVjdElkR2V0RGF0dW0oc3R4 b2lkKSk7CisJaHR1cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFURVhUREFUQVNUWE9JRCwKKwkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0oc3R4b2lkKSwgQm9vbEdldERhdHVtKGluaCkpOwog CWlmICghSGVhcFR1cGxlSXNWYWxpZChodHVwKSkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHN0YXRpc3RpY3Mgb2JqZWN0ICV1Iiwgc3R4b2lkKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYyBiL3NyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvbWN2LmMKaW5kZXggYjM1MGZjNWY3Yi4uNzVkN2QzNWNhYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYworKysgYi9zcmMvYmFja2VuZC9zdGF0 aXN0aWNzL21jdi5jCkBAIC01NTksMTIgKzU1OSwxMyBAQCBidWlsZF9jb2x1bW5fZnJlcXVl bmNpZXMoU29ydEl0ZW0gKmdyb3VwcywgaW50IG5ncm91cHMsCiAgKgkJTG9hZCB0aGUgTUNW IGxpc3QgZm9yIHRoZSBpbmRpY2F0ZWQgcGdfc3RhdGlzdGljX2V4dCB0dXBsZS4KICAqLwog TUNWTGlzdCAqCi1zdGF0ZXh0X21jdl9sb2FkKE9pZCBtdm9pZCkKK3N0YXRleHRfbWN2X2xv YWQoT2lkIG12b2lkLCBib29sIGluaCkKIHsKIAlNQ1ZMaXN0ICAgICpyZXN1bHQ7CiAJYm9v bAkJaXNudWxsOwogCURhdHVtCQltY3ZsaXN0OwotCUhlYXBUdXBsZQlodHVwID0gU2VhcmNo U3lzQ2FjaGUxKFNUQVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdldERhdHVtKG12b2lkKSk7 CisJSGVhcFR1cGxlCWh0dXAgPSBTZWFyY2hTeXNDYWNoZTIoU1RBVEVYVERBVEFTVFhPSUQs CisJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKG12b2lkKSwgQm9vbEdldERhdHVtKGlu aCkpOwogCiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBtdm9pZCk7 CkBAIC0yMDM5LDExICsyMDQwLDEzIEBAIG1jdl9jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBs YW5uZXJJbmZvICpyb290LCBTdGF0aXN0aWNFeHRJbmZvICpzdGF0LAogCU1DVkxpc3QgICAg Km1jdjsKIAlTZWxlY3Rpdml0eSBzID0gMC4wOwogCisJUmFuZ2VUYmxFbnRyeSAqcnRlID0g cm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtyZWwtPnJlbGlkXTsKKwogCS8qIG1hdGNoL21pc21h dGNoIGJpdG1hcCBmb3IgZWFjaCBNQ1YgaXRlbSAqLwogCWJvb2wJICAgKm1hdGNoZXMgPSBO VUxMOwogCiAJLyogbG9hZCB0aGUgTUNWIGxpc3Qgc3RvcmVkIGluIHRoZSBzdGF0aXN0aWNz IG9iamVjdCAqLwotCW1jdiA9IHN0YXRleHRfbWN2X2xvYWQoc3RhdC0+c3RhdE9pZCk7CisJ bWN2ID0gc3RhdGV4dF9tY3ZfbG9hZChzdGF0LT5zdGF0T2lkLCBydGUtPmluaCk7CiAKIAkv KiBidWlsZCBhIG1hdGNoIGJpdG1hcCBmb3IgdGhlIGNsYXVzZXMgKi8KIAltYXRjaGVzID0g bWN2X2dldF9tYXRjaF9iaXRtYXAocm9vdCwgY2xhdXNlcywgc3RhdC0+a2V5cywgc3RhdC0+ ZXhwcnMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3Qu YyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5jCmluZGV4IDQ0ODEzMTJk NjEuLmFiMWYxMGQ2YzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZk aXN0aW5jdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5jCkBA IC0xNDYsMTQgKzE0NiwxNSBAQCBzdGF0ZXh0X25kaXN0aW5jdF9idWlsZChkb3VibGUgdG90 YWxyb3dzLCBTdGF0c0J1aWxkRGF0YSAqZGF0YSkKICAqCQlMb2FkIHRoZSBuZGlzdGluY3Qg dmFsdWUgZm9yIHRoZSBpbmRpY2F0ZWQgcGdfc3RhdGlzdGljX2V4dCB0dXBsZQogICovCiBN Vk5EaXN0aW5jdCAqCi1zdGF0ZXh0X25kaXN0aW5jdF9sb2FkKE9pZCBtdm9pZCkKK3N0YXRl eHRfbmRpc3RpbmN0X2xvYWQoT2lkIG12b2lkLCBib29sIGluaCkKIHsKIAlNVk5EaXN0aW5j dCAqcmVzdWx0OwogCWJvb2wJCWlzbnVsbDsKIAlEYXR1bQkJbmRpc3Q7CiAJSGVhcFR1cGxl CWh0dXA7CiAKLQlodHVwID0gU2VhcmNoU3lzQ2FjaGUxKFNUQVRFWFREQVRBU1RYT0lELCBP YmplY3RJZEdldERhdHVtKG12b2lkKSk7CisJaHR1cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFU RVhUREFUQVNUWE9JRCwKKwkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0obXZvaWQpLCBCb29s R2V0RGF0dW0oaW5oKSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUi LCBtdm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5j cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggZGEyMzJiYTJi ZC4uYmY0NTI1MzkyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTM5MTks MTcgKzM5MTksNiBAQCBlc3RpbWF0ZV9tdWx0aXZhcmlhdGVfbmRpc3RpbmN0KFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJaWYgKCFyZWwtPnN0YXRsaXN0KQogCQly ZXR1cm4gZmFsc2U7CiAKLQkvKgotCSAqIFdoZW4gZGVhbGluZyB3aXRoIHJlZ3VsYXIgaW5o ZXJpdGFuY2UgdHJlZXMsIGlnbm9yZSBleHRlbmRlZCBzdGF0cwotCSAqICh3aGljaCB3ZXJl IGJ1aWx0IHdpdGhvdXQgZGF0YSBmcm9tIGNoaWxkIHJlbHMsIGFuZCB0aHVzIGRvIG5vdAot CSAqIHJlcHJlc2VudCB0aGVtKS4gRm9yIHBhcnRpdGlvbmVkIHRhYmxlcyBkYXRhIGZyb20g cGFydGl0aW9ucyBhcmUKLQkgKiBpbiB0aGUgc3RhdHMgKGFuZCB0aGVyZSdzIG5vIGRhdGEg aW4gdGhlIG5vbi1sZWFmIHJlbGF0aW9ucyksIHNvCi0JICogaW4gdGhpcyBjYXNlIHdlIGRv IGNvbnNpZGVyIGV4dGVuZGVkIHN0YXRzLgotCSAqLwotCXJ0ZSA9IHBsYW5uZXJfcnRfZmV0 Y2gocmVsLT5yZWxpZCwgcm9vdCk7Ci0JaWYgKHJ0ZS0+aW5oICYmIHJ0ZS0+cmVsa2luZCAh PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAkvKiBs b29rIGZvciB0aGUgbmRpc3RpbmN0IHN0YXRpc3RpY3Mgb2JqZWN0IG1hdGNoaW5nIHRoZSBt b3N0IHZhcnMgKi8KIAlubWF0Y2hlc192YXJzID0gMDsJCQkvKiB3ZSByZXF1aXJlIGF0IGxl YXN0IHR3byBtYXRjaGVzICovCiAJbm1hdGNoZXNfZXhwcnMgPSAwOwpAQCAtNDAxNSw3ICs0 MDA0LDggQEAgZXN0aW1hdGVfbXVsdGl2YXJpYXRlX25kaXN0aW5jdChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCiAJQXNzZXJ0KG5tYXRjaGVzX3ZhcnMgKyBubWF0 Y2hlc19leHBycyA+IDEpOwogCi0Jc3RhdHMgPSBzdGF0ZXh0X25kaXN0aW5jdF9sb2FkKHN0 YXRPaWQpOworCXJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2gocmVsLT5yZWxpZCwgcm9vdCk7CisJ c3RhdHMgPSBzdGF0ZXh0X25kaXN0aW5jdF9sb2FkKHN0YXRPaWQsIHJ0ZS0+aW5oKTsKIAog CS8qCiAJICogSWYgd2UgaGF2ZSBhIG1hdGNoLCBzZWFyY2ggaXQgZm9yIHRoZSBzcGVjaWZp YyBpdGVtIHRoYXQgbWF0Y2hlcyAodGhlcmUKQEAgLTUyNzMsMjIgKzUyNjMsMTkgQEAgZXhh bWluZV92YXJpYWJsZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IHZhclJl bGlkLAogCQkJCS8qIGZvdW5kIGEgbWF0Y2gsIHNlZSBpZiB3ZSBjYW4gZXh0cmFjdCBwZ19z dGF0aXN0aWMgcm93ICovCiAJCQkJaWYgKGVxdWFsKG5vZGUsIGV4cHIpKQogCQkJCXsKLQkJ CQkJSGVhcFR1cGxlCXQgPSBzdGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQoaW5mby0+c3RhdE9p ZCwgcG9zKTsKLQotCQkJCQkvKiBHZXQgc3RhdGlzdGljcyBvYmplY3QncyB0YWJsZSBmb3Ig cGVybWlzc2lvbiBjaGVjayAqLwotCQkJCQlSYW5nZVRibEVudHJ5ICpydGU7CisJCQkJCVJh bmdlVGJsRW50cnkgKnJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2gob25lcmVsLT5yZWxpZCwgcm9v dCk7CiAJCQkJCU9pZAkJCXVzZXJpZDsKIAotCQkJCQl2YXJkYXRhLT5zdGF0c1R1cGxlID0g dDsKKwkJCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwogCiAJCQkJ CS8qCiAJCQkJCSAqIFhYWCBOb3Qgc3VyZSBpZiB3ZSBzaG91bGQgY2FjaGUgdGhlIHR1cGxl IHNvbWV3aGVyZS4KIAkJCQkJICogTm93IHdlIGp1c3QgY3JlYXRlIGEgbmV3IGNvcHkgZXZl cnkgdGltZS4KIAkJCQkJICovCi0JCQkJCXZhcmRhdGEtPmZyZWVmdW5jID0gUmVsZWFzZUR1 bW15OworCQkJCQl2YXJkYXRhLT5zdGF0c1R1cGxlID0KKwkJCQkJCXN0YXRleHRfZXhwcmVz c2lvbnNfbG9hZChpbmZvLT5zdGF0T2lkLCBydGUtPmluaCwgcG9zKTsKIAotCQkJCQlydGUg PSBwbGFubmVyX3J0X2ZldGNoKG9uZXJlbC0+cmVsaWQsIHJvb3QpOwotCQkJCQlBc3NlcnQo cnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CisJCQkJCXZhcmRhdGEtPmZyZWVmdW5j ID0gUmVsZWFzZUR1bW15OwogCiAJCQkJCS8qCiAJCQkJCSAqIFVzZSBjaGVja0FzVXNlciBp ZiBpdCdzIHNldCwgaW4gY2FzZSB3ZSdyZSBhY2Nlc3NpbmcKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9zeXNjYWNoZS5jCmluZGV4IDU2ODcwYjQ2ZTQuLjYxOTQ3NTFlOTkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvc3lzY2FjaGUuYwpAQCAtNzYzLDExICs3NjMsMTEgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCTMyCiAJfSwKIAl7U3Rh dGlzdGljRXh0RGF0YVJlbGF0aW9uSWQsCS8qIFNUQVRFWFREQVRBU1RYT0lEICovCi0JCVN0 YXRpc3RpY0V4dERhdGFTdHhvaWRJbmRleElkLAotCQkxLAorCQlTdGF0aXN0aWNFeHREYXRh U3R4b2lkSW5oSW5kZXhJZCwKKwkJMiwKIAkJewogCQkJQW51bV9wZ19zdGF0aXN0aWNfZXh0 X2RhdGFfc3R4b2lkLAotCQkJMCwKKwkJCUFudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0 eGRpbmhlcml0LAogCQkJMCwKIAkJCTAKIAkJfSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N0YXRpc3RpY19leHRfZGF0YS5oCmluZGV4IDdiNzNiNzkwZDIuLjhmZmQ4YjY4Y2Qg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRh LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0X2RhdGEuaApA QCAtMzIsNiArMzIsNyBAQCBDQVRBTE9HKHBnX3N0YXRpc3RpY19leHRfZGF0YSwzNDI5LFN0 YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkKQogewogCU9pZAkJCXN0eG9pZCBCS0lfTE9PS1VQ KHBnX3N0YXRpc3RpY19leHQpOwkvKiBzdGF0aXN0aWNzIG9iamVjdAogCQkJCQkJCQkJCQkJ CQkgKiB0aGlzIGRhdGEgaXMgZm9yICovCisJYm9vbAkJc3R4ZGluaGVyaXQ7CS8qIHRydWUg aWYgaW5oZXJpdGFuY2UgY2hpbGRyZW4gYXJlIGluY2x1ZGVkICovCiAKICNpZmRlZiBDQVRB TE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwog CkBAIC01Myw2ICs1NCw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfc3RhdGlzdGljX2V4dF9k YXRhICogRm9ybV9wZ19zdGF0aXN0aWNfZXh0X2RhdGE7CiAKIERFQ0xBUkVfVE9BU1QocGdf c3RhdGlzdGljX2V4dF9kYXRhLCAzNDMwLCAzNDMxKTsKIAotREVDTEFSRV9VTklRVUVfSU5E RVhfUEtFWShwZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4b2lkX2luZGV4LCAzNDMzLCBTdGF0 aXN0aWNFeHREYXRhU3R4b2lkSW5kZXhJZCwgb24gcGdfc3RhdGlzdGljX2V4dF9kYXRhIHVz aW5nIGJ0cmVlKHN0eG9pZCBvaWRfb3BzKSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZ KHBnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhvaWRfaW5oX2luZGV4LCAzNDMzLCBTdGF0aXN0 aWNFeHREYXRhU3R4b2lkSW5oSW5kZXhJZCwgb24gcGdfc3RhdGlzdGljX2V4dF9kYXRhIHVz aW5nIGJ0cmVlKHN0eG9pZCBvaWRfb3BzLCBzdHhkaW5oZXJpdCBib29sX29wcykpOworCiAK ICNlbmRpZgkJCQkJCQkvKiBQR19TVEFUSVNUSUNfRVhUX0RBVEFfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9kZWZyZW0uaAppbmRleCBmODRkMDk5NTljLi5hYjNjNTlmY2Q1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9kZWZyZW0uaApAQCAtODMsNiArODMsNyBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRl ck9wZXJhdG9yKEFsdGVyT3BlcmF0b3JTdG10ICpzdG10KTsKIGV4dGVybiBPYmplY3RBZGRy ZXNzIENyZWF0ZVN0YXRpc3RpY3MoQ3JlYXRlU3RhdHNTdG10ICpzdG10KTsKIGV4dGVybiBP YmplY3RBZGRyZXNzIEFsdGVyU3RhdGlzdGljcyhBbHRlclN0YXRzU3RtdCAqc3RtdCk7CiBl eHRlcm4gdm9pZCBSZW1vdmVTdGF0aXN0aWNzQnlJZChPaWQgc3RhdHNPaWQpOworZXh0ZXJu IHZvaWQgUmVtb3ZlU3RhdGlzdGljc0RhdGFCeUlkKE9pZCBzdGF0c09pZCwgYm9vbCBpbmgp OwogZXh0ZXJuIE9pZAlTdGF0aXN0aWNzR2V0UmVsYXRpb24oT2lkIHN0YXRJZCwgYm9vbCBt aXNzaW5nX29rKTsKIAogLyogY29tbWFuZHMvYWdncmVnYXRlY21kcy5jICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oCmluZGV4IDMyNGQ5Mjg4MGIuLjAyYWZmOTg0N2UgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oCkBAIC05MzQsNiArOTM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3RhdGlz dGljRXh0SW5mbwogCU5vZGVUYWcJCXR5cGU7CiAKIAlPaWQJCQlzdGF0T2lkOwkJLyogT0lE IG9mIHRoZSBzdGF0aXN0aWNzIHJvdyAqLworCWJvb2wJCWluaGVyaXQ7CQkvKiBpbmNsdWRl cyBjaGlsZCByZWxhdGlvbnMgKi8KIAlSZWxPcHRJbmZvICpyZWw7CQkJLyogYmFjay1saW5r IHRvIHN0YXRpc3RpYydzIHRhYmxlICovCiAJY2hhcgkJa2luZDsJCQkvKiBzdGF0aXN0aWNz IGtpbmQgb2YgdGhpcyBlbnRyeSAqLwogCUJpdG1hcHNldCAgKmtleXM7CQkJLyogYXR0bnVt cyBvZiB0aGUgY29sdW1ucyBjb3ZlcmVkICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dGF0aXN0aWNzL3N0YXRpc3RpY3MuaCBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlz dGljcy5oCmluZGV4IDMyNmNmMjZmZWEuLjM4NjhlNDNmOGEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0YXRp c3RpY3Mvc3RhdGlzdGljcy5oCkBAIC05NCwxMSArOTQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg TUNWTGlzdAogCU1DVkl0ZW0JCWl0ZW1zW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CS8qIGFy cmF5IG9mIE1DViBpdGVtcyAqLwogfSBNQ1ZMaXN0OwogCi1leHRlcm4gTVZORGlzdGluY3Qg KnN0YXRleHRfbmRpc3RpbmN0X2xvYWQoT2lkIG12b2lkKTsKLWV4dGVybiBNVkRlcGVuZGVu Y2llcyAqc3RhdGV4dF9kZXBlbmRlbmNpZXNfbG9hZChPaWQgbXZvaWQpOwotZXh0ZXJuIE1D Vkxpc3QgKnN0YXRleHRfbWN2X2xvYWQoT2lkIG12b2lkKTsKK2V4dGVybiBNVk5EaXN0aW5j dCAqc3RhdGV4dF9uZGlzdGluY3RfbG9hZChPaWQgbXZvaWQsIGJvb2wgaW5oKTsKK2V4dGVy biBNVkRlcGVuZGVuY2llcyAqc3RhdGV4dF9kZXBlbmRlbmNpZXNfbG9hZChPaWQgbXZvaWQs IGJvb2wgaW5oKTsKK2V4dGVybiBNQ1ZMaXN0ICpzdGF0ZXh0X21jdl9sb2FkKE9pZCBtdm9p ZCwgYm9vbCBpbmgpOwogCi1leHRlcm4gdm9pZCBCdWlsZFJlbGF0aW9uRXh0U3RhdGlzdGlj cyhSZWxhdGlvbiBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCitleHRlcm4gdm9pZCBCdWls ZFJlbGF0aW9uRXh0U3RhdGlzdGljcyhSZWxhdGlvbiBvbmVyZWwsIGJvb2wgaW5oLCBkb3Vi bGUgdG90YWxyb3dzLAogCQkJCQkJCQkJICAgaW50IG51bXJvd3MsIEhlYXBUdXBsZSAqcm93 cywKIAkJCQkJCQkJCSAgIGludCBuYXR0cywgVmFjQXR0clN0YXRzICoqdmFjYXR0cnN0YXRz KTsKIGV4dGVybiBpbnQJQ29tcHV0ZUV4dFN0YXRpc3RpY3NSb3dzKFJlbGF0aW9uIG9uZXJl bCwKQEAgLTEyMSw5ICsxMjEsMTAgQEAgZXh0ZXJuIFNlbGVjdGl2aXR5IHN0YXRleHRfY2xh dXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCSAg Ym9vbCBpc19vcik7CiBleHRlcm4gYm9vbCBoYXNfc3RhdHNfb2Zfa2luZChMaXN0ICpzdGF0 cywgY2hhciByZXF1aXJlZGtpbmQpOwogZXh0ZXJuIFN0YXRpc3RpY0V4dEluZm8gKmNob29z ZV9iZXN0X3N0YXRpc3RpY3MoTGlzdCAqc3RhdHMsIGNoYXIgcmVxdWlyZWRraW5kLAorCQkJ CQkJCQkJCQkJYm9vbCBpbmgsCiAJCQkJCQkJCQkJCQlCaXRtYXBzZXQgKipjbGF1c2VfYXR0 bnVtcywKIAkJCQkJCQkJCQkJCUxpc3QgKipjbGF1c2VfZXhwcnMsCiAJCQkJCQkJCQkJCQlp bnQgbmNsYXVzZXMpOwotZXh0ZXJuIEhlYXBUdXBsZSBzdGF0ZXh0X2V4cHJlc3Npb25zX2xv YWQoT2lkIHN0eG9pZCwgaW50IGlkeCk7CitleHRlcm4gSGVhcFR1cGxlIHN0YXRleHRfZXhw cmVzc2lvbnNfbG9hZChPaWQgc3R4b2lkLCBib29sIGluaCwgaW50IGlkeCk7CiAKICNlbmRp ZgkJCQkJCQkvKiBTVEFUSVNUSUNTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKaW5kZXggYjU4YjA2MmIxMC4uZDY1MmY3YjVmYiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQKQEAgLTI0NDMsNiArMjQ0Myw3IEBAIHBnX3N0YXRzX2V4dHwg U0VMRUNUIGNuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICAgICAgICAgICBKT0lOIHBn X2F0dHJpYnV0ZSBhIE9OICgoKGEuYXR0cmVsaWQgPSBzLnN0eHJlbGlkKSBBTkQgKGEuYXR0 bnVtID0gay5rKSkpKSkgQVMgYXR0bmFtZXMsCiAgICAgcGdfZ2V0X3N0YXRpc3RpY3NvYmpk ZWZfZXhwcmVzc2lvbnMocy5vaWQpIEFTIGV4cHJzLAogICAgIHMuc3R4a2luZCBBUyBraW5k cywKKyAgICBzZC5zdHhkaW5oZXJpdCBBUyBpbmhlcml0ZWQsCiAgICAgc2Quc3R4ZG5kaXN0 aW5jdCBBUyBuX2Rpc3RpbmN0LAogICAgIHNkLnN0eGRkZXBlbmRlbmNpZXMgQVMgZGVwZW5k ZW5jaWVzLAogICAgIG0ubW9zdF9jb21tb25fdmFscywKQEAgLTI0NjksNiArMjQ3MCw3IEBA IHBnX3N0YXRzX2V4dF9leHByc3wgU0VMRUNUIGNuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwK ICAgICBzLnN0eG5hbWUgQVMgc3RhdGlzdGljc19uYW1lLAogICAgIHBnX2dldF91c2VyYnlp ZChzLnN0eG93bmVyKSBBUyBzdGF0aXN0aWNzX293bmVyLAogICAgIHN0YXQuZXhwciwKKyAg ICBzZC5zdHhkaW5oZXJpdCBBUyBpbmhlcml0ZWQsCiAgICAgKHN0YXQuYSkuc3RhbnVsbGZy YWMgQVMgbnVsbF9mcmFjLAogICAgIChzdGF0LmEpLnN0YXdpZHRoIEFTIGF2Z193aWR0aCwK ICAgICAoc3RhdC5hKS5zdGFkaXN0aW5jdCBBUyBuX2Rpc3RpbmN0LApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CmluZGV4IGExMWZmZjY1NWEuLjQyNzg4NGNk YTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKQEAgLTE0 NCwxMCArMTQ0LDkgQEAgU0VMRUNUIHN0eG5hbWUsIHN0eGRuZGlzdGluY3QsIHN0eGRkZXBl bmRlbmNpZXMsIHN0eGRtY3YKICAgRlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMsIHBnX3N0YXRp c3RpY19leHRfZGF0YSBkCiAgV0hFUkUgcy5zdHhuYW1lID0gJ2FiMV9hX2Jfc3RhdHMnCiAg ICBBTkQgZC5zdHhvaWQgPSBzLm9pZDsKLSAgICBzdHhuYW1lICAgIHwgc3R4ZG5kaXN0aW5j dCB8IHN0eGRkZXBlbmRlbmNpZXMgfCBzdHhkbWN2IAotLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCi0gYWIxX2FfYl9zdGF0 cyB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgCi0oMSByb3cpCisgc3R4 bmFtZSB8IHN0eGRuZGlzdGluY3QgfCBzdHhkZGVwZW5kZW5jaWVzIHwgc3R4ZG1jdiAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQor KDAgcm93cykKIAogQUxURVIgU1RBVElTVElDUyBhYjFfYV9iX3N0YXRzIFNFVCBTVEFUSVNU SUNTIC0xOwogXGQrIGFiMQpAQCAtMTkyLDExICsxOTEsMTggQEAgU0VMRUNUICogRlJPTSBj aGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBzdHhkaW5oKiBHUk9VUCBCWSAx LDInKTsKIAogQ1JFQVRFIFNUQVRJU1RJQ1Mgc3R4ZGluaCBPTiBpLGogRlJPTSBzdHhkaW5o OwogVkFDVVVNIEFOQUxZWkUgc3R4ZGluaCwgc3R4ZGluaDE7Ci0tLSBTaW5jZSB0aGUgc3Rh dHMgb2JqZWN0IGRvZXMgbm90IGluY2x1ZGUgaW5oZXJpdGVkIHN0YXRzLCBpdCBzaG91bGQg bm90IGFmZmVjdCB0aGUgZXN0aW1hdGVzCistLSBTZWUgaWYgdGhlIGV4dGVuZGVkIHN0YXRz IGFmZmVjdCB0aGUgZXN0aW1hdGVzCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9y b3dzKCdTRUxFQ1QgKiBGUk9NIHN0eGRpbmgqIEdST1VQIEJZIDEsMicpOwogIGVzdGltYXRl ZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAxMDAwIHwgICAxMDA4 CisgICAgICAxMDA4IHwgICAxMDA4CisoMSByb3cpCisKKy0tIEVuc3VyZSBjb3JyZWN0IChu b24taW5oZXJpdGVkKSBzdGF0cyBhcmUgYXBwbGllZCB0byBpbmhlcml0ZWQgcXVlcnkKK1NF TEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gT05MWSBz dHhkaW5oIEdST1VQIEJZIDEsMicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tCisgICAgICAgICA5IHwgICAgICA5CiAoMSByb3cpCiAKIERST1AgVEFC TEUgc3R4ZGluaCwgc3R4ZGluaDE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0c19leHQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbApp bmRleCAwMTM4M2U4ZjVmLi44ZGViMDEwYjNjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdGF0c19leHQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRz X2V4dC5zcWwKQEAgLTEyMyw4ICsxMjMsMTAgQEAgVkFDVVVNIEFOQUxZWkUgc3R4ZGluaCwg c3R4ZGluaDE7CiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1Qg KiBGUk9NIHN0eGRpbmgqIEdST1VQIEJZIDEsMicpOwogQ1JFQVRFIFNUQVRJU1RJQ1Mgc3R4 ZGluaCBPTiBpLGogRlJPTSBzdHhkaW5oOwogVkFDVVVNIEFOQUxZWkUgc3R4ZGluaCwgc3R4 ZGluaDE7Ci0tLSBTaW5jZSB0aGUgc3RhdHMgb2JqZWN0IGRvZXMgbm90IGluY2x1ZGUgaW5o ZXJpdGVkIHN0YXRzLCBpdCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZXN0aW1hdGVzCistLSBT ZWUgaWYgdGhlIGV4dGVuZGVkIHN0YXRzIGFmZmVjdCB0aGUgZXN0aW1hdGVzCiBTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIHN0eGRpbmgqIEdS T1VQIEJZIDEsMicpOworLS0gRW5zdXJlIGNvcnJlY3QgKG5vbi1pbmhlcml0ZWQpIHN0YXRz IGFyZSBhcHBsaWVkIHRvIGluaGVyaXRlZCBxdWVyeQorU0VMRUNUICogRlJPTSBjaGVja19l c3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBPTkxZIHN0eGRpbmggR1JPVVAgQlkgMSwy Jyk7CiBEUk9QIFRBQkxFIHN0eGRpbmgsIHN0eGRpbmgxOwogCiAtLSBFbnN1cmUgaW5oZXJp dGVkIHN0YXRzIEFSRSBhcHBsaWVkIHRvIGluaGVyaXRlZCBxdWVyeSBpbiBwYXJ0aXRpb25l ZCB0YWJsZQotLSAKMi4zMS4xCgo= --------------1PDoU8w0Z03EfMxuEx94AsZz Content-Type: text/x-patch; charset=UTF-8; name="0002-Build-inherited-extended-stats-on-partitio-20211212b.patch" Content-Disposition: attachment; filename*0="0002-Build-inherited-extended-stats-on-partitio-20211212b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzZjM3OTM2NzI5NzhjMzFlZmVlMDU4OGE0MWQ1ZDViMWE0MTc1NTM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU2F0LCAxMSBEZWMgMjAyMSAyMjozODowOCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMi80XSBCdWlsZCBpbmhlcml0ZWQgZXh0ZW5kZWQgc3RhdHMgb24gcGFydGl0aW9u ZWQgdGFibGVzCgpDb21taXQgODU5YjMwMDNkZSBkaXNhYmxlZCBidWlsZGluZyBvZiBleHRl bmRlZCBzdGF0cyBmb3IgaW5oZXJpdGFuY2UKdHJlZXMsIHRvIHByZXZlbnQgdXBkYXRpbmcg dGhlIHNhbWUgY2F0YWxvZyByb3cgdHdpY2UuIFRoYXQgcmVzb2x2ZWQgdGhlCmlzc3VlLCBi dXQgaXQgYWxzbyBtZWFucyB0aGVyZSBhcmUgbm8gZXh0ZW5kZWQgc3RhdHMgZm9yIHBhcnRp dGlvbmVkCnRhYmxlcywgYmVjYXVzZSB0aGUgKCFpbmgpIGNhc2UgaGFzIGVtcHR5IHNhbXBs ZS4gVGhpcyBpcyBhIHJlZ3Jlc3Npb24sCmFmZmVjdGluZyBxdWVyaWVzIHRoYXQgZG9uJ3Qg ZXN0aW1hdGUgdGhlIGxlYWYgcmVsYXRpb25zIGRpcmVjdGx5LgoKQnV0IGJlY2F1c2UgcGFy dGl0aW9uZWQgdGFibGVzIGFyZSBlbXB0eSwgd2UgY2FuIGludmVydCB0aGUgY29uZGl0aW9u CmFuZCBidWlsZCBzdGF0aXN0aWNzIG9ubHkgZm9yIHRoZSBjYXNlIHdpdGggaW5oZXJpdGFu Y2UsIHdpdGhvdXQgbG9zaW5nCmFueXRoaW5nLiBBbmQgd2UgY2FuIGNvbnNpZGVyIHRoZW0g d2hlbiBjYWxjdWxhdGluZyBlc3RpbWF0ZXMuCgpSZXBvcnQgYW5kIHBhdGNoIGJ5IEp1c3Rp biBQcnl6YnksIG1pbm9yIGZpeGVzIGFuZCBjbGVhbnVwIGJ5IG1lLgpCYWNrcGF0Y2ggYWxs IHRoZSB3YXkgYmFjayB0byBQb3N0Z3JlU1FMIDEwLCB3aGVyZSBleHRlbmRlZCBzdGF0aXN0 aWNzCndlcmUgaW50cm9kdWNlZCAoc2FtZSBhcyA4NTliMzAwM2RlKS4KCkF1dGhvcjogSnVz dGluIFByeXpieQpSZXBvcnRlZC1ieTogSnVzdGluIFByeXpieQpCYWNrcGF0Y2gtdGhyb3Vn aDogMTAKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDIxMDkyMzIxMjYyNC5H STgzMSU0MHRlbHNhc29mdC5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3N0YXRpc3Rp Y3MvZGVwZW5kZW5jaWVzLmMgICB8ICA5ICsrKysrLS0tCiBzcmMvYmFja2VuZC9zdGF0aXN0 aWNzL2V4dGVuZGVkX3N0YXRzLmMgfCAgOSArKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3NlbGZ1bmNzLmMgICAgICAgIHwgMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IHwgMTkgKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgIHwgMTAg KysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBjZDc3OTA3ZmM3Li41OGE4 MmU0OTI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC01NDksNiArNTQ5LDcgQEAg ZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywK IAl7CiAJCU1lbW9yeUNvbnRleHQgY29sX2NvbnRleHQsCiAJCQkJCW9sZF9jb250ZXh0Owor CQlib29sCQlidWlsZF9leHRfc3RhdHM7CiAKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19BTkFMWVpFX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0FOQUxZ WkVfUEhBU0VfQ09NUFVURV9TVEFUUyk7CkBAIC02MTIsMTMgKzYxMywyOCBAQCBkb19hbmFs eXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJ CXRoaXNkYXRhLT5hdHRyX2NudCwgdGhpc2RhdGEtPnZhY2F0dHJzdGF0cyk7CiAJCX0KIAor CQkvKgorCQkgKiBTaG91bGQgd2UgYnVpbGQgZXh0ZW5kZWQgc3RhdGlzdGljcyBmb3IgdGhp cyByZWxhdGlvbj8KKwkJICoKKwkJICogVGhlIGV4dGVuZGVkIHN0YXRpc3RpY3MgY2F0YWxv ZyBkb2VzIG5vdCBpbmNsdWRlIGFuIGluaGVyaXRhbmNlCisJCSAqIGZsYWcsIHNvIHdlIGNh bid0IHN0b3JlIHN0YXRpc3RpY3MgYnVpbHQgYm90aCB3aXRoIGFuZCB3aXRob3V0CisJCSAq IGRhdGEgZnJvbSBjaGlsZCByZWxhdGlvbnMuIFdlIGNhbiBzdG9yZSBqdXN0IG9uZSBzZXQg b2Ygc3RhdGlzdGljcworCQkgKiBwZXIgcmVsYXRpb24uIEZvciBwbGFpbiByZWxhdGlvbnMg dGhhdCdzIGZpbmUsIGJ1dCBmb3IgaW5oZXJpdGFuY2UKKwkJICogdHJlZXMgd2UgaGF2ZSB0 byBwaWNrIHdoZXRoZXIgdG8gc3RvcmUgc3RhdGlzdGljcyBmb3IganVzdCB0aGUKKwkJICog b25lIHJlbGF0aW9uIG9yIHRoZSB3aG9sZSB0cmVlLiBGb3IgcGxhaW4gaW5oZXJpdGFuY2Ug d2Ugc3RvcmUKKwkJICogdGhlICghaW5oKSB2ZXJzaW9uLCBtb3N0bHkgZm9yIGJhY2t3YXJk cyBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCisJCSAqIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMg dGhhdCdzIHBvaW50bGVzcyAodGhlIG5vbi1sZWFmIHRhYmxlcyBhcmUKKwkJICogYWx3YXlz IGVtcHR5KSwgc28gd2Ugc3RvcmUgc3RhdHMgcmVwcmVzZW50aW5nIHRoZSB3aG9sZSB0cmVl LgorCQkgKi8KKwkJYnVpbGRfZXh0X3N0YXRzID0gKG9uZXJlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpID8gaW5oIDogKCFpbmgpOworCiAJCS8q CiAJCSAqIEJ1aWxkIGV4dGVuZGVkIHN0YXRpc3RpY3MgKGlmIHRoZXJlIGFyZSBhbnkpLgog CQkgKgogCQkgKiBGb3Igbm93IHdlIG9ubHkgYnVpbGQgZXh0ZW5kZWQgc3RhdGlzdGljcyBv biBpbmRpdmlkdWFsIHJlbGF0aW9ucywKIAkJICogbm90IGZvciByZWxhdGlvbnMgcmVwcmVz ZW50aW5nIGluaGVyaXRhbmNlIHRyZWVzLgogCQkgKi8KLQkJaWYgKCFpbmgpCisJCWlmIChi dWlsZF9leHRfc3RhdHMpCiAJCQlCdWlsZFJlbGF0aW9uRXh0U3RhdGlzdGljcyhvbmVyZWws IHRvdGFscm93cywgbnVtcm93cywgcm93cywKIAkJCQkJCQkJCSAgIGF0dHJfY250LCB2YWNh dHRyc3RhdHMpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVw ZW5kZW5jaWVzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCmlu ZGV4IGE0MWJhY2U3NWEuLjVmNGRmNmUwNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9k ZXBlbmRlbmNpZXMuYwpAQCAtMTQxOCwxMCArMTQxOCwxMyBAQCBkZXBlbmRlbmNpZXNfY2xh dXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwKIAlpbnQJCQl1bmlxdWVf ZXhwcnNfY250OwogCiAJLyoKLQkgKiBXaGVuIGRlYWxpbmcgd2l0aCBpbmhlcml0YW5jZSB0 cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzICh3aGljaCB3ZXJlCi0JICogYnVpbHQgd2l0 aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90IHJlcHJlc2VudCB0 aGVtKS4KKwkgKiBXaGVuIGRlYWxpbmcgd2l0aCByZWd1bGFyIGluaGVyaXRhbmNlIHRyZWVz LCBpZ25vcmUgZXh0ZW5kZWQgc3RhdHMKKwkgKiAod2hpY2ggd2VyZSBidWlsdCB3aXRob3V0 IGRhdGEgZnJvbSBjaGlsZCByZWxzLCBhbmQgdGh1cyBkbyBub3QKKwkgKiByZXByZXNlbnQg dGhlbSkuIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMgZGF0YSBmcm9tIHBhcnRpdGlvbnMgYXJl CisJICogaW4gdGhlIHN0YXRzIChhbmQgdGhlcmUncyBubyBkYXRhIGluIHRoZSBub24tbGVh ZiByZWxhdGlvbnMpLCBzbworCSAqIGluIHRoaXMgY2FzZSB3ZSBkbyBjb25zaWRlciBleHRl bmRlZCBzdGF0cy4KIAkgKi8KLQlpZiAocnRlLT5pbmgpCisJaWYgKHJ0ZS0+aW5oICYmIHJ0 ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQlyZXR1cm4gMS4w OwogCiAJLyogY2hlY2sgaWYgdGhlcmUncyBhbnkgc3RhdHMgdGhhdCBtaWdodCBiZSB1c2Vm dWwgZm9yIHVzLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRl bmRlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5j CmluZGV4IDVhM2JhMmYxYzUuLjNjZGEyMGQzYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL2V4dGVuZGVkX3N0YXRzLmMKQEAgLTE2OTgsMTAgKzE2OTgsMTMgQEAgc3RhdGV4dF9t Y3ZfY2xhdXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqY2xh dXNlcywgaW50IHZhclJlbGkKIAlSYW5nZVRibEVudHJ5ICpydGUgPSBwbGFubmVyX3J0X2Zl dGNoKHJlbC0+cmVsaWQsIHJvb3QpOwogCiAJLyoKLQkgKiBXaGVuIGRlYWxpbmcgd2l0aCBp bmhlcml0YW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzICh3aGljaCB3ZXJlCi0J ICogYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90 IHJlcHJlc2VudCB0aGVtKS4KKwkgKiBXaGVuIGRlYWxpbmcgd2l0aCByZWd1bGFyIGluaGVy aXRhbmNlIHRyZWVzLCBpZ25vcmUgZXh0ZW5kZWQgc3RhdHMKKwkgKiAod2hpY2ggd2VyZSBi dWlsdCB3aXRob3V0IGRhdGEgZnJvbSBjaGlsZCByZWxzLCBhbmQgdGh1cyBkbyBub3QKKwkg KiByZXByZXNlbnQgdGhlbSkuIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMgZGF0YSBmcm9tIHBh cnRpdGlvbnMgYXJlCisJICogaW4gdGhlIHN0YXRzIChhbmQgdGhlcmUncyBubyBkYXRhIGlu IHRoZSBub24tbGVhZiByZWxhdGlvbnMpLCBzbworCSAqIGluIHRoaXMgY2FzZSB3ZSBkbyBj b25zaWRlciBleHRlbmRlZCBzdGF0cy4KIAkgKi8KLQlpZiAocnRlLT5pbmgpCisJaWYgKHJ0 ZS0+aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQog CQlyZXR1cm4gc2VsOwogCiAJLyogY2hlY2sgaWYgdGhlcmUncyBhbnkgc3RhdHMgdGhhdCBt aWdodCBiZSB1c2VmdWwgZm9yIHVzLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpp bmRleCAxMDEwZDVjYWE4Li5kYTIzMmJhMmJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVu Y3MuYwpAQCAtMzkxMywxOSArMzkxMywyMyBAQCBlc3RpbWF0ZV9tdWx0aXZhcmlhdGVfbmRp c3RpbmN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJT2lkCQkJc3Rh dE9pZCA9IEludmFsaWRPaWQ7CiAJTVZORGlzdGluY3QgKnN0YXRzOwogCVN0YXRpc3RpY0V4 dEluZm8gKm1hdGNoZWRfaW5mbyA9IE5VTEw7Ci0JUmFuZ2VUYmxFbnRyeQkJKnJ0ZSA9IHBs YW5uZXJfcnRfZmV0Y2gocmVsLT5yZWxpZCwgcm9vdCk7Ci0KLQkvKgotCSAqIFdoZW4gZGVh bGluZyB3aXRoIGluaGVyaXRhbmNlIHRyZWVzLCBpZ25vcmUgZXh0ZW5kZWQgc3RhdHMgKHdo aWNoIHdlcmUKLQkgKiBidWlsdCB3aXRob3V0IGRhdGEgZnJvbSBjaGlsZCByZWxzLCBhbmQg dGh1cyBkbyBub3QgcmVwcmVzZW50IHRoZW0pLgotCSAqLwotCWlmIChydGUtPmluaCkKLQkJ cmV0dXJuIGZhbHNlOworCVJhbmdlVGJsRW50cnkJCSpydGU7CiAKIAkvKiBiYWlsIG91dCBp bW1lZGlhdGVseSBpZiB0aGUgdGFibGUgaGFzIG5vIGV4dGVuZGVkIHN0YXRpc3RpY3MgKi8K IAlpZiAoIXJlbC0+c3RhdGxpc3QpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qCisJICogV2hl biBkZWFsaW5nIHdpdGggcmVndWxhciBpbmhlcml0YW5jZSB0cmVlcywgaWdub3JlIGV4dGVu ZGVkIHN0YXRzCisJICogKHdoaWNoIHdlcmUgYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hp bGQgcmVscywgYW5kIHRodXMgZG8gbm90CisJICogcmVwcmVzZW50IHRoZW0pLiBGb3IgcGFy dGl0aW9uZWQgdGFibGVzIGRhdGEgZnJvbSBwYXJ0aXRpb25zIGFyZQorCSAqIGluIHRoZSBz dGF0cyAoYW5kIHRoZXJlJ3Mgbm8gZGF0YSBpbiB0aGUgbm9uLWxlYWYgcmVsYXRpb25zKSwg c28KKwkgKiBpbiB0aGlzIGNhc2Ugd2UgZG8gY29uc2lkZXIgZXh0ZW5kZWQgc3RhdHMuCisJ ICovCisJcnRlID0gcGxhbm5lcl9ydF9mZXRjaChyZWwtPnJlbGlkLCByb290KTsKKwlpZiAo cnRlLT5pbmggJiYgcnRlLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUp CisJCXJldHVybiBmYWxzZTsKKwogCS8qIGxvb2sgZm9yIHRoZSBuZGlzdGluY3Qgc3RhdGlz dGljcyBvYmplY3QgbWF0Y2hpbmcgdGhlIG1vc3QgdmFycyAqLwogCW5tYXRjaGVzX3ZhcnMg PSAwOwkJCS8qIHdlIHJlcXVpcmUgYXQgbGVhc3QgdHdvIG1hdGNoZXMgKi8KIAlubWF0Y2hl c19leHBycyA9IDA7CkBAIC01MjQyLDExICs1MjQ2LDEzIEBAIGV4YW1pbmVfdmFyaWFibGUo UGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUsIGludCB2YXJSZWxpZCwKIAkJCQlicmVh azsKIAogCQkJLyoKLQkJCSAqIFdoZW4gZGVhbGluZyB3aXRoIGluaGVyaXRhbmNlIHRyZWVz LCBpZ25vcmUgZXh0ZW5kZWQgc3RhdHMgKHdoaWNoCi0JCQkgKiB3ZXJlIGJ1aWx0IHdpdGhv dXQgZGF0YSBmcm9tIGNoaWxkIHJlbHMsIGFuZCBzbyBkbyBub3QgcmVwcmVzZW50Ci0JCQkg KiB0aGVtKS4KKwkJCSAqIFdoZW4gZGVhbGluZyB3aXRoIHJlZ3VsYXIgaW5oZXJpdGFuY2Ug dHJlZXMsIGlnbm9yZSBleHRlbmRlZCBzdGF0cworCQkJICogKHdoaWNoIHdlcmUgYnVpbHQg d2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90CisJCQkgKiBy ZXByZXNlbnQgdGhlbSkuIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMgZGF0YSBmcm9tIHBhcnRp dGlvbnMgYXJlCisJCQkgKiBpbiB0aGUgc3RhdHMgKGFuZCB0aGVyZSdzIG5vIGRhdGEgaW4g dGhlIG5vbi1sZWFmIHJlbGF0aW9ucyksIHNvCisJCQkgKiBpbiB0aGlzIGNhc2Ugd2UgZG8g Y29uc2lkZXIgZXh0ZW5kZWQgc3RhdHMuCiAJCQkgKi8KLQkJCWlmIChydGUtPmluaCkKKwkJ CWlmIChydGUtPmluaCAmJiBydGUtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSkKIAkJCQlicmVhazsKIAogCQkJLyogc2tpcCBzdGF0cyB3aXRob3V0IHBlci1leHBy ZXNzaW9uIHN0YXRzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N0YXRzX2V4dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5v dXQKaW5kZXggNTQxMGY1OGY3Zi4uYTExZmZmNjU1YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAtMjAwLDYgKzIwMCwyNSBAQCBTRUxFQ1QgKiBG Uk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIHN0eGRpbmgqIEdST1VQ IEJZIDEsMicpOwogKDEgcm93KQogCiBEUk9QIFRBQkxFIHN0eGRpbmgsIHN0eGRpbmgxOwor LS0gRW5zdXJlIGluaGVyaXRlZCBzdGF0cyBBUkUgYXBwbGllZCB0byBpbmhlcml0ZWQgcXVl cnkgaW4gcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSBzdHhkaW5wKGkgaW50LCBh IGludCwgYiBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgc3R4 ZGlucDEgUEFSVElUSU9OIE9GIHN0eGRpbnAgRk9SIFZBTFVFUyBGUk9NICgxKVRPKDEwMCk7 CitJTlNFUlQgSU5UTyBzdHhkaW5wIFNFTEVDVCAxLCBhLzEwMCwgYS8xMDAgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSw5OTkpYTsKK0NSRUFURSBTVEFUSVNUSUNTIHN0eGRpbnAgT04gKGEp LChiKSBGUk9NIHN0eGRpbnA7CitWQUNVVU0gQU5BTFlaRSBzdHhkaW5wOyAtLSBwYXJ0aXRp b25zIGFyZSBwcm9jZXNzZWQgcmVjdXJzaXZlbHkKK1NFTEVDVCAxIEZST00gcGdfc3RhdGlz dGljX2V4dCBXSEVSRSBzdHhyZWxpZD0nc3R4ZGlucCc6OnJlZ2NsYXNzOworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gY2hl Y2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCBhLCBiIEZST00gc3R4ZGlucCBHUk9VUCBCWSAx LDInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAg ICAgICAxMCB8ICAgICAxMAorKDEgcm93KQorCitEUk9QIFRBQkxFIHN0eGRpbnA7CiAtLSBi YXNpYyB0ZXN0IGZvciBzdGF0aXN0aWNzIG9uIGV4cHJlc3Npb25zCiBDUkVBVEUgVEFCTEUg YWIxIChhIElOVEVHRVIsIGIgSU5URUdFUiwgYyBUSU1FU1RBTVAsIGQgVElNRVNUQU1QVFop OwogLS0gZXhwcmVzc2lvbiBzdGF0cyBtYXkgYmUgYnVpbHQgb24gYSBzaW5nbGUgZXhwcmVz c2lvbiBjb2x1bW4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4 dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCmluZGV4IGExOTZk NWUyZjguLjAxMzgzZThmNWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0 YXRzX2V4dC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbApA QCAtMTI3LDYgKzEyNywxNiBAQCBWQUNVVU0gQU5BTFlaRSBzdHhkaW5oLCBzdHhkaW5oMTsK IFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gc3R4 ZGluaCogR1JPVVAgQlkgMSwyJyk7CiBEUk9QIFRBQkxFIHN0eGRpbmgsIHN0eGRpbmgxOwog CistLSBFbnN1cmUgaW5oZXJpdGVkIHN0YXRzIEFSRSBhcHBsaWVkIHRvIGluaGVyaXRlZCBx dWVyeSBpbiBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHN0eGRpbnAoaSBpbnQs IGEgaW50LCBiIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSBz dHhkaW5wMSBQQVJUSVRJT04gT0Ygc3R4ZGlucCBGT1IgVkFMVUVTIEZST00gKDEpVE8oMTAw KTsKK0lOU0VSVCBJTlRPIHN0eGRpbnAgU0VMRUNUIDEsIGEvMTAwLCBhLzEwMCBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDk5OSlhOworQ1JFQVRFIFNUQVRJU1RJQ1Mgc3R4ZGlucCBPTiAo YSksKGIpIEZST00gc3R4ZGlucDsKK1ZBQ1VVTSBBTkFMWVpFIHN0eGRpbnA7IC0tIHBhcnRp dGlvbnMgYXJlIHByb2Nlc3NlZCByZWN1cnNpdmVseQorU0VMRUNUIDEgRlJPTSBwZ19zdGF0 aXN0aWNfZXh0IFdIRVJFIHN0eHJlbGlkPSdzdHhkaW5wJzo6cmVnY2xhc3M7CitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgYSwgYiBGUk9NIHN0eGRpbnAg R1JPVVAgQlkgMSwyJyk7CitEUk9QIFRBQkxFIHN0eGRpbnA7CisKIC0tIGJhc2ljIHRlc3Qg Zm9yIHN0YXRpc3RpY3Mgb24gZXhwcmVzc2lvbnMKIENSRUFURSBUQUJMRSBhYjEgKGEgSU5U RUdFUiwgYiBJTlRFR0VSLCBjIFRJTUVTVEFNUCwgZCBUSU1FU1RBTVBUWik7CiAKLS0gCjIu MzEuMQoK --------------1PDoU8w0Z03EfMxuEx94AsZz Content-Type: text/x-patch; charset=UTF-8; name="0001-Ignore-extended-statistics-for-inheritance-20211212b.patch" Content-Disposition: attachment; filename*0="0001-Ignore-extended-statistics-for-inheritance-20211212b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNjAxYmFjNjRjMGQ3YTFmMWI2NzZmMDQzM2EwNWYyZjk5ZDdiZmIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlqQHRlbHNhc29m dC5jb20+CkRhdGU6IFNhdCwgMjUgU2VwIDIwMjEgMTk6NDI6NDEgLTA1MDAKU3ViamVjdDog W1BBVENIIDEvNF0gSWdub3JlIGV4dGVuZGVkIHN0YXRpc3RpY3MgZm9yIGluaGVyaXRhbmNl IHRyZWVzCgpTaW5jZSBjb21taXQgODU5YjMwMDNkZSB3ZSBvbmx5IGJ1aWxkIGV4dGVuZGVk IHN0YXRpc3RpY3MgZm9yIHJlbGF0aW9ucwp3aXRob3V0IHRoZSBjaGlsZCByZWxhdGlvbnMs IHNvIHRoYXQgd2UgdXBkYXRlIHRoZSBjYXRhbG9nIHJvdyBvbmx5Cm9uY2UuIEhvd2V2ZXIs IHRoZSBub24taW5oZXJpdGVkIHN0YXRpc3RpY3Mgd2VyZSBzdGlsbCB1c2VkIGZvciBwbGFu bmluZwpvZiBxdWVyaWVzIG9uIGluaGVyaXRhbmNlIHRyZWVzLCB3aGljaCBtYXkgcHJvZHVj ZSBib2d1cyBlc3RpbWF0ZXMuCgpUaGlzIGlzIHJvdWdobHkgdGhlIHNhbWUgaXNzdWUgNDI3 YzZiNWI5IGFkZHJlc3NlZCB+MTUgeWVhcnMgYWdvLCBhbmQgd2UKZml4IGl0IHRoZSBzYW1l IHdheSAtIGJ5IGlnbm9yaW5nIGV4dGVuZGVkIHN0YXRpc3RpY3Mgd2hlbiBjYWxjdWxhdGlu Zwplc3RpbWF0ZXMgZm9yIHRoZSBpbmhlcml0YW5jZSB0cmVlIGFzIGEgd2hvbGUuIFdlIHN0 aWxsIGNvbnNpZGVyCmV4dGVuZGVkIHN0YXRpc3RpY3Mgd2hlbiBjYWxjdWxhdGluZyBlc3Rp bWF0ZXMgZm9yIGluZGl2aWR1YWwgY2hpbGQKcmVsYXRpb25zLCBvZiBjb3Vyc2UuCgpSZXBv cnQgYW5kIHBhdGNoIGJ5IEp1c3RpbiBQcnl6YnksIG1pbm9yIGZpeGVzIGFuZCBjbGVhbnVw IGJ5IG1lLgpCYWNrcGF0Y2ggYWxsIHRoZSB3YXkgYmFjayB0byBQb3N0Z3JlU1FMIDEwLCB3 aGVyZSBleHRlbmRlZCBzdGF0aXN0aWNzCndlcmUgaW50cm9kdWNlZCAoc2FtZSBhcyA4NTli MzAwM2RlKS4KCkF1dGhvcjogSnVzdGluIFByeXpieQpSZXBvcnRlZC1ieTogSnVzdGluIFBy eXpieQpCYWNrcGF0Y2gtdGhyb3VnaDogMTAKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS8yMDIxMDkyMzIxMjYyNC5HSTgzMSU0MHRlbHNhc29mdC5jb20KLS0tCiBzcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jICAgfCAgOSArKysrKysrKysKIHNyYy9i YWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyB8ICA5ICsrKysrKysrKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAgICAgIHwgMTcgKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCB8IDI0ICsr KysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0 LnNxbCAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDc0IGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVu ZGVuY2llcy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYwppbmRl eCA4YmY4MGRiOGU0Li5hNDFiYWNlNzVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0 aXN0aWNzL2RlcGVuZGVuY2llcy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVw ZW5kZW5jaWVzLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9wYXRobm9k ZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5j bHVkZSAic3RhdGlzdGljcy9leHRlbmRlZF9zdGF0c19pbnRlcm5hbC5oIgogI2luY2x1ZGUg InN0YXRpc3RpY3Mvc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgInV0aWxzL2J5dGVhLmgiCkBA IC0xNDEwLDExICsxNDExLDE5IEBAIGRlcGVuZGVuY2llc19jbGF1c2VsaXN0X3NlbGVjdGl2 aXR5KFBsYW5uZXJJbmZvICpyb290LAogCWludAkJCW5kZXBlbmRlbmNpZXM7CiAJaW50CQkJ aTsKIAlBdHRyTnVtYmVyCWF0dG51bV9vZmZzZXQ7CisJUmFuZ2VUYmxFbnRyeSAqcnRlID0g cGxhbm5lcl9ydF9mZXRjaChyZWwtPnJlbGlkLCByb290KTsKIAogCS8qIHVuaXF1ZSBleHBy ZXNzaW9ucyAqLwogCU5vZGUJICAqKnVuaXF1ZV9leHByczsKIAlpbnQJCQl1bmlxdWVfZXhw cnNfY250OwogCisJLyoKKwkgKiBXaGVuIGRlYWxpbmcgd2l0aCBpbmhlcml0YW5jZSB0cmVl cywgaWdub3JlIGV4dGVuZGVkIHN0YXRzICh3aGljaCB3ZXJlCisJICogYnVpbHQgd2l0aG91 dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90IHJlcHJlc2VudCB0aGVt KS4KKwkgKi8KKwlpZiAocnRlLT5pbmgpCisJCXJldHVybiAxLjA7CisKIAkvKiBjaGVjayBp ZiB0aGVyZSdzIGFueSBzdGF0cyB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCBmb3IgdXMuICovCiAJ aWYgKCFoYXNfc3RhdHNfb2Zfa2luZChyZWwtPnN0YXRsaXN0LCBTVEFUU19FWFRfREVQRU5E RU5DSUVTKSkKIAkJcmV0dXJuIDEuMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRp c3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5k ZWRfc3RhdHMuYwppbmRleCA2OWNhNTIwOTRmLi41YTNiYTJmMWM1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAicGFyc2Vy L3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInN0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNf aW50ZXJuYWwuaCIKQEAgLTE2OTQsNiArMTY5NSwxNCBAQCBzdGF0ZXh0X21jdl9jbGF1c2Vs aXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbGF1c2VzLCBpbnQg dmFyUmVsaQogCUxpc3QJICAqKmxpc3RfZXhwcnM7CQkvKiBleHByZXNzaW9ucyBtYXRjaGVk IHRvIGFueSBzdGF0aXN0aWMgKi8KIAlpbnQJCQlsaXN0aWR4OwogCVNlbGVjdGl2aXR5IHNl bCA9IChpc19vcikgPyAwLjAgOiAxLjA7CisJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcGxhbm5l cl9ydF9mZXRjaChyZWwtPnJlbGlkLCByb290KTsKKworCS8qCisJICogV2hlbiBkZWFsaW5n IHdpdGggaW5oZXJpdGFuY2UgdHJlZXMsIGlnbm9yZSBleHRlbmRlZCBzdGF0cyAod2hpY2gg d2VyZQorCSAqIGJ1aWx0IHdpdGhvdXQgZGF0YSBmcm9tIGNoaWxkIHJlbHMsIGFuZCB0aHVz IGRvIG5vdCByZXByZXNlbnQgdGhlbSkuCisJICovCisJaWYgKHJ0ZS0+aW5oKQorCQlyZXR1 cm4gc2VsOwogCiAJLyogY2hlY2sgaWYgdGhlcmUncyBhbnkgc3RhdHMgdGhhdCBtaWdodCBi ZSB1c2VmdWwgZm9yIHVzLiAqLwogCWlmICghaGFzX3N0YXRzX29mX2tpbmQocmVsLT5zdGF0 bGlzdCwgU1RBVFNfRVhUX01DVikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4 IDEwODk1ZmIyODcuLjEwMTBkNWNhYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j CkBAIC0zOTEzLDYgKzM5MTMsMTQgQEAgZXN0aW1hdGVfbXVsdGl2YXJpYXRlX25kaXN0aW5j dChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCU9pZAkJCXN0YXRPaWQg PSBJbnZhbGlkT2lkOwogCU1WTkRpc3RpbmN0ICpzdGF0czsKIAlTdGF0aXN0aWNFeHRJbmZv ICptYXRjaGVkX2luZm8gPSBOVUxMOworCVJhbmdlVGJsRW50cnkJCSpydGUgPSBwbGFubmVy X3J0X2ZldGNoKHJlbC0+cmVsaWQsIHJvb3QpOworCisJLyoKKwkgKiBXaGVuIGRlYWxpbmcg d2l0aCBpbmhlcml0YW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzICh3aGljaCB3 ZXJlCisJICogYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMg ZG8gbm90IHJlcHJlc2VudCB0aGVtKS4KKwkgKi8KKwlpZiAocnRlLT5pbmgpCisJCXJldHVy biBmYWxzZTsKIAogCS8qIGJhaWwgb3V0IGltbWVkaWF0ZWx5IGlmIHRoZSB0YWJsZSBoYXMg bm8gZXh0ZW5kZWQgc3RhdGlzdGljcyAqLwogCWlmICghcmVsLT5zdGF0bGlzdCkKQEAgLTUy MjIsNiArNTIzMCw3IEBAIGV4YW1pbmVfdmFyaWFibGUoUGxhbm5lckluZm8gKnJvb3QsIE5v ZGUgKm5vZGUsIGludCB2YXJSZWxpZCwKIAkJZm9yZWFjaChzbGlzdCwgb25lcmVsLT5zdGF0 bGlzdCkKIAkJewogCQkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IChTdGF0aXN0aWNFeHRJ bmZvICopIGxmaXJzdChzbGlzdCk7CisJCQlSYW5nZVRibEVudHJ5CSAqcnRlID0gcGxhbm5l cl9ydF9mZXRjaChvbmVyZWwtPnJlbGlkLCByb290KTsKIAkJCUxpc3RDZWxsICAgKmV4cHJf aXRlbTsKIAkJCWludAkJCXBvczsKIApAQCAtNTIzMiw2ICs1MjQxLDE0IEBAIGV4YW1pbmVf dmFyaWFibGUoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUsIGludCB2YXJSZWxpZCwK IAkJCWlmICh2YXJkYXRhLT5zdGF0c1R1cGxlKQogCQkJCWJyZWFrOwogCisJCQkvKgorCQkJ ICogV2hlbiBkZWFsaW5nIHdpdGggaW5oZXJpdGFuY2UgdHJlZXMsIGlnbm9yZSBleHRlbmRl ZCBzdGF0cyAod2hpY2gKKwkJCSAqIHdlcmUgYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hp bGQgcmVscywgYW5kIHNvIGRvIG5vdCByZXByZXNlbnQKKwkJCSAqIHRoZW0pLgorCQkJICov CisJCQlpZiAocnRlLT5pbmgpCisJCQkJYnJlYWs7CisKIAkJCS8qIHNraXAgc3RhdHMgd2l0 aG91dCBwZXItZXhwcmVzc2lvbiBzdGF0cyAqLwogCQkJaWYgKGluZm8tPmtpbmQgIT0gU1RB VFNfRVhUX0VYUFJFU1NJT05TKQogCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdGF0c19leHQub3V0CmluZGV4IGM2MGJhNDVhYmEuLjU0MTBmNThmN2YgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKQEAgLTE3Niw2ICsx NzYsMzAgQEAgQ1JFQVRFIFNUQVRJU1RJQ1MgYWIxX2FfYl9zdGF0cyBPTiBhLCBiIEZST00g YWIxOwogQU5BTFlaRSBhYjE7CiBEUk9QIFRBQkxFIGFiMSBDQVNDQURFOwogTk9USUNFOiAg ZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBhYjFjCistLSBUZXN0cyBmb3Igc3RhdHMgd2l0aCBp bmhlcml0YW5jZQorQ1JFQVRFIFRBQkxFIHN0eGRpbmgoaSBpbnQsIGogaW50KTsKK0NSRUFU RSBUQUJMRSBzdHhkaW5oMSgpIElOSEVSSVRTKHN0eGRpbmgpOworSU5TRVJUIElOVE8gc3R4 ZGluaCBTRUxFQ1QgYSwgYS8xMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDkpYTsKK0lOU0VS VCBJTlRPIHN0eGRpbmgxIFNFTEVDVCBhLCBhIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOTk5 KWE7CitWQUNVVU0gQU5BTFlaRSBzdHhkaW5oLCBzdHhkaW5oMTsKKy0tIEVuc3VyZSBub24t aW5oZXJpdGVkIHN0YXRzIGFyZSBub3QgYXBwbGllZCB0byBpbmhlcml0ZWQgcXVlcnkKKy0t IFdpdGhvdXQgc3RhdHMgb2JqZWN0LCBpdCBsb29rcyBsaWtlIHRoaXMKK1NFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gc3R4ZGluaCogR1JPVVAg QlkgMSwyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0K KyAgICAgIDEwMDAgfCAgIDEwMDgKKygxIHJvdykKKworQ1JFQVRFIFNUQVRJU1RJQ1Mgc3R4 ZGluaCBPTiBpLGogRlJPTSBzdHhkaW5oOworVkFDVVVNIEFOQUxZWkUgc3R4ZGluaCwgc3R4 ZGluaDE7CistLSBTaW5jZSB0aGUgc3RhdHMgb2JqZWN0IGRvZXMgbm90IGluY2x1ZGUgaW5o ZXJpdGVkIHN0YXRzLCBpdCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZXN0aW1hdGVzCitTRUxF Q1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIHN0eGRpbmgq IEdST1VQIEJZIDEsMicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tCisgICAgICAxMDAwIHwgICAxMDA4CisoMSByb3cpCisKK0RST1AgVEFCTEUgc3R4 ZGluaCwgc3R4ZGluaDE7CiAtLSBiYXNpYyB0ZXN0IGZvciBzdGF0aXN0aWNzIG9uIGV4cHJl c3Npb25zCiBDUkVBVEUgVEFCTEUgYWIxIChhIElOVEVHRVIsIGIgSU5URUdFUiwgYyBUSU1F U1RBTVAsIGQgVElNRVNUQU1QVFopOwogLS0gZXhwcmVzc2lvbiBzdGF0cyBtYXkgYmUgYnVp bHQgb24gYSBzaW5nbGUgZXhwcmVzc2lvbiBjb2x1bW4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0 c19leHQuc3FsCmluZGV4IDZmYjM3OTYyYTcuLmExOTZkNWUyZjggMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RhdHNfZXh0LnNxbApAQCAtMTEyLDYgKzExMiwyMSBAQCBDUkVBVEUgU1RBVElT VElDUyBhYjFfYV9iX3N0YXRzIE9OIGEsIGIgRlJPTSBhYjE7CiBBTkFMWVpFIGFiMTsKIERS T1AgVEFCTEUgYWIxIENBU0NBREU7CiAKKy0tIFRlc3RzIGZvciBzdGF0cyB3aXRoIGluaGVy aXRhbmNlCitDUkVBVEUgVEFCTEUgc3R4ZGluaChpIGludCwgaiBpbnQpOworQ1JFQVRFIFRB QkxFIHN0eGRpbmgxKCkgSU5IRVJJVFMoc3R4ZGluaCk7CitJTlNFUlQgSU5UTyBzdHhkaW5o IFNFTEVDVCBhLCBhLzEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOSlhOworSU5TRVJUIElO VE8gc3R4ZGluaDEgU0VMRUNUIGEsIGEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw5OTkpYTsK K1ZBQ1VVTSBBTkFMWVpFIHN0eGRpbmgsIHN0eGRpbmgxOworLS0gRW5zdXJlIG5vbi1pbmhl cml0ZWQgc3RhdHMgYXJlIG5vdCBhcHBsaWVkIHRvIGluaGVyaXRlZCBxdWVyeQorLS0gV2l0 aG91dCBzdGF0cyBvYmplY3QsIGl0IGxvb2tzIGxpa2UgdGhpcworU0VMRUNUICogRlJPTSBj aGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBzdHhkaW5oKiBHUk9VUCBCWSAx LDInKTsKK0NSRUFURSBTVEFUSVNUSUNTIHN0eGRpbmggT04gaSxqIEZST00gc3R4ZGluaDsK K1ZBQ1VVTSBBTkFMWVpFIHN0eGRpbmgsIHN0eGRpbmgxOworLS0gU2luY2UgdGhlIHN0YXRz IG9iamVjdCBkb2VzIG5vdCBpbmNsdWRlIGluaGVyaXRlZCBzdGF0cywgaXQgc2hvdWxkIG5v dCBhZmZlY3QgdGhlIGVzdGltYXRlcworU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnU0VMRUNUICogRlJPTSBzdHhkaW5oKiBHUk9VUCBCWSAxLDInKTsKK0RST1AgVEFC TEUgc3R4ZGluaCwgc3R4ZGluaDE7CisKIC0tIGJhc2ljIHRlc3QgZm9yIHN0YXRpc3RpY3Mg b24gZXhwcmVzc2lvbnMKIENSRUFURSBUQUJMRSBhYjEgKGEgSU5URUdFUiwgYiBJTlRFR0VS LCBjIFRJTUVTVEFNUCwgZCBUSU1FU1RBTVBUWik7CiAKLS0gCjIuMzEuMQoK --------------1PDoU8w0Z03EfMxuEx94AsZz--