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 1l2x5g-0002Hp-Pd for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jan 2021 14:07:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l2x5f-00088D-N7 for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jan 2021 14:07:07 +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 1l2x5f-000885-8m for pgsql-hackers@lists.postgresql.org; Fri, 22 Jan 2021 14:07:07 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l2x5b-0008Ez-VU for pgsql-hackers@lists.postgresql.org; Fri, 22 Jan 2021 14:07:06 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id B742021C3924; Fri, 22 Jan 2021 17:07:02 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1611324422; bh=ww22Ca8RK5aHdSrEBYX3tfGShdhGXYBpQoGKWLiWYIo=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=edqQk+NXAm5MUaXkQtpwCaw1VlMvYjsjZmTu+Q5I6YsKWfhjcJqh/IMDLFxL6ab4o yKRfqJFbvX6tBz790fRL39SXTmQ2PArMVy/IQC04Qu7pW1g1rPzH+GC1XNfJ7tQBs2 7RC1nv99khKyFkOupLK1yRDDp+1K9y3i58VI226c= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_e7104ef8cf86e1f6bfe43961bc0d1799" Content-Transfer-Encoding: 7bit Date: Fri, 22 Jan 2021 17:07:02 +0300 From: Alexey Kondratov To: Justin Pryzby Cc: Michael Paquier , Alvaro Herrera , Peter Eisentraut , Masahiko Sawada , Steve Singer , pgsql-hackers@lists.postgresql.org, Robert Haas , Alexander Korotkov , Masahiko Sawada , Jose Luis Tallon Subject: Re: Allow CLUSTER, VACUUM FULL and REINDEX to change tablespace on the fly In-Reply-To: <20210121212651.GY8560@telsasoft.com> References: <03f88f70618ce73e75837b6125a143f7@postgrespro.ru> <20210120183439.GA21339@alvherre.pgsql> <20210121212651.GY8560@telsasoft.com> User-Agent: Roundcube Webmail/1.4.0 Message-ID: <944df7cc452fe0c34cf7820da4588d05@postgrespro.ru> X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_e7104ef8cf86e1f6bfe43961bc0d1799 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-01-22 00:26, Justin Pryzby wrote: > On Thu, Jan 21, 2021 at 11:48:08PM +0300, Alexey Kondratov wrote: >> Attached is a new patch set of first two patches, that should resolve >> all >> the issues raised before (ACL, docs, tests) excepting TOAST. Double >> thanks >> for suggestion to add more tests with nested partitioning. I have >> found and >> squashed a huge bug related to the returning back to the default >> tablespace >> using newly added tests. >> >> Regarding TOAST. Now we skip moving toast indexes or throw error if >> someone >> wants to move TOAST index directly. I had a look on ALTER TABLE SET >> TABLESPACE and it has a bit complicated logic: >> >> 1) You cannot move TOAST table directly. >> 2) But if you move basic relation that TOAST table belongs to, then >> they are >> moved altogether. >> 3) Same logic as 2) happens if one does ALTER TABLE ALL IN TABLESPACE >> ... >> >> That way, ALTER TABLE allows moving TOAST tables (with indexes) >> implicitly, >> but does not allow doing that explicitly. In the same time I found >> docs to >> be vague about such behavior it only says: >> >> All tables in the current database in a tablespace can be moved >> by using the ALL IN TABLESPACE ... Note that system catalogs are >> not moved by this command >> >> Changing any part of a system catalog table is not permitted. >> >> So actually ALTER TABLE treats TOAST relations as system sometimes, >> but >> sometimes not. >> >> From the end user perspective it makes sense to move TOAST with main >> table >> when doing ALTER TABLE SET TABLESPACE. But should we touch indexes on >> TOAST >> table with REINDEX? We cannot move TOAST relation itself, since we are >> doing >> only a reindex, so we end up in the state when TOAST table and its >> index are >> placed in the different tablespaces. This state is not reachable with >> ALTER >> TABLE/INDEX, so it seem we should not allow it with REINDEX as well, >> should >> we? > >> + * Even if a table's indexes were moved to a new tablespace, the >> index >> + * on its toast table is not normally moved. >> */ >> ReindexParams newparams = *params; >> >> newparams.options &= ~(REINDEXOPT_MISSING_OK); >> + if (!allowSystemTableMods) >> + newparams.tablespaceOid = InvalidOid; > > I think you're right. So actually TOAST should never move, even if > allowSystemTableMods, right ? > I think so. I would prefer to do not move TOAST indexes implicitly at all during reindex. > >> @@ -292,7 +315,11 @@ REINDEX [ ( > class="parameter">option [, ...] ) ] { IN >> with REINDEX INDEX or REINDEX >> TABLE, >> respectively. Each partition of the specified partitioned relation >> is >> reindexed in a separate transaction. Those commands cannot be used >> inside >> - a transaction block when working on a partitioned table or index. >> + a transaction block when working on a partitioned table or index. >> If >> + REINDEX with TABLESPACE >> executed >> + on partitioned relation fails it may have moved some partitions to >> the new >> + tablespace. Repeated command will still reindex all partitions >> even if they >> + are already in the new tablespace. > > Minor corrections here: > > If a REINDEX command fails when run on a partitioned > relation, and TABLESPACE was specified, then it may > have > moved indexes on some partitions to the new tablespace. Re-running the > command > will reindex all partitions and move previously-unprocessed indexes to > the new > tablespace. Sounds good to me. I have updated patches accordingly and also simplified tablespaceOid checks and assignment in the newly added SetRelTableSpace(). Result is attached as two separate patches for an ease of review, but no objections to merge them and apply at once if everything is fine. Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_e7104ef8cf86e1f6bfe43961bc0d1799 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0002-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v4-0002-Allow-REINDEX-to-change-tablespace.patch; size=29968 RnJvbSA4N2U0N2U5YjViM2Q2YjQ5MjMwMDQ1ZTVkYjhmODQ0YjE0YjM0YmEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMjE6MTA6MjkgKzAzMDAKU3ViamVjdDog W1BBVENIIHY0IDIvMl0gQWxsb3cgUkVJTkRFWCB0byBjaGFuZ2UgdGFibGVzcGFjZQoKUkVJTkRF WCBhbHJlYWR5IGRvZXMgZnVsbCByZWxhdGlvbiByZXdyaXRlLCB0aGlzIHBhdGNoIGFkZHMgYQpw b3NzaWJpbGl0eSB0byBzcGVjaWZ5IGEgbmV3IHRhYmxlc3BhY2Ugd2hlcmUgbmV3IHJlbGZpbGVu b2RlCndpbGwgYmUgY3JlYXRlZC4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAg ICAgICAgICAgICB8ICAzMCArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAg ICAgICAgICB8ICA4MSArKysrKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMgICAgICAgICAgfCAgODEgKysrKysrKysrKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YyAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAg ICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291 cmNlICB8ICA4NSArKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3Bh Y2Uuc291cmNlIHwgMTU5ICsrKysrKysrKysrKysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwg NDM2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRl eCA2MjdiMzYzMDBjLi5hMWM3NzM2YWVjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtMjcsNiAr MjcsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBJTgogCiAgICAgQ09OQ1VSUkVOVExZIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAgICAg VkVSQk9TRSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNl YWJsZT4gXQorICAgIFRBQkxFU1BBQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5l d190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT4KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rp dj4KIApAQCAtMTg3LDYgKzE4OCwyMCBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBJTgogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgU3BlY2lmaWVzIHRoYXQgaW5kZXhlcyB3aWxsIGJlIHJlYnVp bHQgb24gYSBuZXcgdGFibGVzcGFjZS4KKyAgICAgIENhbm5vdCBiZSB1c2VkIHdpdGggIm1hcHBl ZCIgYW5kIHN5c3RlbSAodW5sZXNzIDx2YXJuYW1lPmFsbG93X3N5c3RlbV90YWJsZV9tb2RzPC92 YXJuYW1lPgorICAgICAgaXMgc2V0IHRvIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+KSByZWxhdGlv bnMuIElmIDxsaXRlcmFsPlNDSEVNQTwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5EQVRBQkFT RTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+U1lTVEVNPC9saXRlcmFsPiBhcmUgc3BlY2lmaWVkLCB0 aGVuCisgICAgICBhbGwgIm1hcHBlZCIgYW5kIHN5c3RlbSByZWxhdGlvbnMgd2lsbCBiZSBza2lw cGVkIGFuZCBhIHNpbmdsZQorICAgICAgPGxpdGVyYWw+V0FSTklORzwvbGl0ZXJhbD4gd2lsbCBi ZSBnZW5lcmF0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+VkVSQk9TRTwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMjEwLDYgKzIyNSwxNCBAQCBSRUlO REVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJs ZT4gWywgLi4uXSApIF0geyBJTgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgVGhlIHRhYmxlc3BhY2Ugd2hlcmUgaW5kZXhlcyB3aWxsIGJl IHJlYnVpbHQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKQEAgLTI5Miw3ICszMTUsMTIg QEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVw bGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgIHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRF WDwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+UkVJTkRFWCBUQUJMRTwvY29tbWFuZD4sCiAgICByZXNw ZWN0aXZlbHkuIEVhY2ggcGFydGl0aW9uIG9mIHRoZSBzcGVjaWZpZWQgcGFydGl0aW9uZWQgcmVs YXRpb24gaXMKICAgIHJlaW5kZXhlZCBpbiBhIHNlcGFyYXRlIHRyYW5zYWN0aW9uLiBUaG9zZSBj b21tYW5kcyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUKLSAgIGEgdHJhbnNhY3Rpb24gYmxvY2sgd2hl biB3b3JraW5nIG9uIGEgcGFydGl0aW9uZWQgdGFibGUgb3IgaW5kZXguCisgICBhIHRyYW5zYWN0 aW9uIGJsb2NrIHdoZW4gd29ya2luZyBvbiBhIHBhcnRpdGlvbmVkIHRhYmxlIG9yIGluZGV4LiBJ ZgorICAgYSA8Y29tbWFuZD5SRUlOREVYPC9jb21tYW5kPiBjb21tYW5kIGZhaWxzIHdoZW4gcnVu IG9uIGEgcGFydGl0aW9uZWQKKyAgIHJlbGF0aW9uLCBhbmQgPGxpdGVyYWw+VEFCTEVTUEFDRTwv bGl0ZXJhbD4gd2FzIHNwZWNpZmllZCwgdGhlbiBpdCBtYXkgaGF2ZQorICAgbW92ZWQgaW5kZXhl cyBvbiBzb21lIHBhcnRpdGlvbnMgdG8gdGhlIG5ldyB0YWJsZXNwYWNlLiAgUmUtcnVubmluZyB0 aGUgY29tbWFuZAorICAgd2lsbCByZWluZGV4IGFsbCBwYXJ0aXRpb25zIGFuZCBtb3ZlIHByZXZp b3VzbHktdW5wcm9jZXNzZWQgaW5kZXhlcyB0byB0aGUgbmV3CisgICB0YWJsZXNwYWNlLgogICA8 L3BhcmE+CiAKICAgPHJlZnNlY3QyIGlkPSJzcWwtcmVpbmRleC1jb25jdXJyZW50bHkiIHhyZWZs YWJlbD0iUmVidWlsZGluZyBJbmRleGVzIENvbmN1cnJlbnRseSI+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5k ZXggYjhjZDM1ZTk5NS4uMzYzZTY5YTViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNTcsNiArNTcs NyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21t YW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1 ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK QEAgLTcxLDYgKzcyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCisjaW5j bHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMTM5NCw5ICsx Mzk2LDEzIEBAIGluZGV4X3VwZGF0ZV9jb2xsYXRpb25fdmVyc2lvbnMoT2lkIHJlbGlkLCBPaWQg Y29sbCkKICAqIENyZWF0ZSBjb25jdXJyZW50bHkgYW4gaW5kZXggYmFzZWQgb24gdGhlIGRlZmlu aXRpb24gb2YgdGhlIG9uZSBwcm92aWRlZCBieQogICogY2FsbGVyLiAgVGhlIGluZGV4IGlzIGlu c2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlIGJ1aWx0IGxhdGVyCiAgKiBvbi4g IFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJvY2Vzc2luZy4KKyAq CisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIG5ldyB0YWJsZXNwYWNlIHRvIHVzZSBmb3IgdGhp cyBpbmRleC4KKyAqIElmIEludmFsaWRPaWQsIHVzZSB0aGUgY3VycmVudCB0YWJsZXNwYWNlLgog ICovCiBPaWQKLWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBvbGRJbmRleElkLCBjb25zdCBjaGFyICpuZXdOYW1lKQoraW5kZXhfY29uY3Vy cmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQs CisJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCiB7CiAJ UmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICpvbGRJbmZvLApAQCAtMTUyNiw3 ICsxNTMyLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsIGNvbnN0IGNoYXIKIAkJCQkJCQkgIG5ld0luZm8sCiAJ CQkJCQkJICBpbmRleENvbE5hbWVzLAogCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5y ZWxhbSwKLQkJCQkJCQkgIGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKKwkJ CQkJCQkgIE9pZElzVmFsaWQodGFibGVzcGFjZU9pZCkgPworCQkJCQkJCQl0YWJsZXNwYWNlT2lk IDogaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAogCQkJCQkJCSAgaW5kZXhS ZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAogCQkJCQkJCSAgaW5kY2xhc3MtPnZhbHVlcywKIAkJ CQkJCQkgIGluZGNvbG9wdGlvbnMtPnZhbHVlcywKQEAgLTM1OTEsNiArMzU5OCw4IEBAIEluZGV4 R2V0UmVsYXRpb24oT2lkIGluZGV4SWQsIGJvb2wgbWlzc2luZ19vaykKIAogLyoKICAqIHJlaW5k ZXhfaW5kZXggLSBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byByZWNyZWF0ZSBhIHNpbmdsZSBpbmRl eAorICoKKyAqIFNlZSBjb21tZW50cyBvZiByZWluZGV4X3JlbGF0aW9uKCkgZm9yIGRldGFpbHMg YWJvdXQgInRhYmxlc3BhY2VPaWQiLgogICovCiB2b2lkCiByZWluZGV4X2luZGV4KE9pZCBpbmRl eElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCkBAIC0z NjAzLDkgKzM2MTIsMjIgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2Nv bnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogCXZvbGF0aWxlIGJvb2wgc2tpcHBl ZF9jb25zdHJhaW50ID0gZmFsc2U7CiAJUEdSVXNhZ2UJcnUwOwogCWJvb2wJCXByb2dyZXNzID0g KChwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUykgIT0gMCk7CisJ Ym9vbAkJc2V0X3RhYmxlc3BhY2UgPSBPaWRJc1ZhbGlkKHBhcmFtcy0+dGFibGVzcGFjZU9pZCk7 CiAKIAlwZ19ydXNhZ2VfaW5pdCgmcnUwKTsKIAorCS8qIENoZWNrIHBlcm1pc3Npb25zIGV4Y2Vw dCB3aGVuIHVzaW5nIGRhdGFiYXNlJ3MgZGVmYXVsdCAqLworCWlmIChzZXRfdGFibGVzcGFjZSAm JiBwYXJhbXMtPnRhYmxlc3BhY2VPaWQgIT0gTXlEYXRhYmFzZVRhYmxlU3BhY2UpCisJeworCQlB Y2xSZXN1bHQJYWNscmVzdWx0OworCisJCWFjbHJlc3VsdCA9IHBnX3RhYmxlc3BhY2VfYWNsY2hl Y2socGFyYW1zLT50YWJsZXNwYWNlT2lkLAorCQkJCQkJCQkJCSAgIEdldFVzZXJJZCgpLCBBQ0xf Q1JFQVRFKTsKKwkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vy cm9yKGFjbHJlc3VsdCwgT0JKRUNUX1RBQkxFU1BBQ0UsCisJCQkJCQkgICBnZXRfdGFibGVzcGFj ZV9uYW1lKHBhcmFtcy0+dGFibGVzcGFjZU9pZCkpOworCX0KKwogCS8qCiAJICogT3BlbiBhbmQg bG9jayB0aGUgcGFyZW50IGhlYXAgcmVsYXRpb24uICBTaGFyZUxvY2sgaXMgc3VmZmljaWVudCBz aW5jZQogCSAqIHdlIG9ubHkgbmVlZCB0byBiZSBzdXJlIG5vIHNjaGVtYSBvciBkYXRhIGNoYW5n ZXMgYXJlIGdvaW5nIG9uLgpAQCAtMzY1NCw2ICszNjc2LDM1IEBAIHJlaW5kZXhfaW5kZXgoT2lk IGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwK IAkJCSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UoaVJlbCkpLAogCQkJ IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKTsKIAorCS8qCisJICogV2UgZG9uJ3Qgc3Vw cG9ydCBtb3Zpbmcgc3lzdGVtIHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVudCB0YWJsZXNwYWNlcwor CSAqIHVubGVzcyBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcz0xLgorCSAqLworCWlmIChzZXRfdGFi bGVzcGFjZSAmJgorCQkhYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1SZWxhdGlvbihp UmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkOiBcIiVzXCIgaXMg YSBzeXN0ZW0gY2F0YWxvZyIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkp KTsKKworCS8qCisJICogV2UgY2Fubm90IHN1cHBvcnQgbW92aW5nIG1hcHBlZCByZWxhdGlvbnMg aW50byBkaWZmZXJlbnQgdGFibGVzcGFjZXMuCisJICogKEluIHBhcnRpY3VsYXIgdGhpcyBlbGlt aW5hdGVzIGFsbCBzaGFyZWQgY2F0YWxvZ3MuKQorCSAqLworCWlmIChzZXRfdGFibGVzcGFjZSAm JiBSZWxhdGlvbklzTWFwcGVkKGlSZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgY2hh bmdlIHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKKworCS8qIEl0J3Mgbm90IGEgc2hhcmVkIGNhdGFs b2csIHNvIHJlZnVzZSB0byBtb3ZlIGl0IHRvIHNoYXJlZCB0YWJsZXNwYWNlICovCisJaWYgKHBh cmFtcy0+dGFibGVzcGFjZU9pZCA9PSBHTE9CQUxUQUJMRVNQQUNFX09JRCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ IGVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwi JXNcIiIsCisJCQkJCSBnZXRfdGFibGVzcGFjZV9uYW1lKHBhcmFtcy0+dGFibGVzcGFjZU9pZCkp KSk7CisKKwogCS8qCiAJICogRG9uJ3QgYWxsb3cgcmVpbmRleCBvbiB0ZW1wIHRhYmxlcyBvZiBv dGhlciBiYWNrZW5kcyAuLi4gdGhlaXIgbG9jYWwKIAkgKiBidWZmZXIgbWFuYWdlciBpcyBub3Qg Z29pbmcgdG8gY29wZS4KQEAgLTM2ODAsNiArMzczMSwyNSBAQCByZWluZGV4X2luZGV4KE9pZCBp bmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJ ICovCiAJQ2hlY2tUYWJsZU5vdEluVXNlKGlSZWwsICJSRUlOREVYIElOREVYIik7CiAKKwkvKgor CSAqIFNldCB0aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRoZSByZWxhdGlvbi4gIERvIHRoYXQgb25s eSBpbiB0aGUKKwkgKiBjYXNlIHdoZXJlIHRoZSByZWluZGV4IGNhbGxlciB3aXNoZXMgdG8gZW5m b3JjZSBhIG5ldyB0YWJsZXNwYWNlLgorCSAqLworCWlmIChzZXRfdGFibGVzcGFjZSAmJiBTZXRS ZWxUYWJsZVNwYWNlKGluZGV4SWQsIHBhcmFtcy0+dGFibGVzcGFjZU9pZCkpCisJeworCQkvKgor CQkgKiBNYXJrIHRoZSByZWxhdGlvbiBhcyByZWFkeSB0byBiZSBkcm9wcGVkIGF0IHRyYW5zYWN0 aW9uIGNvbW1pdCwKKwkJICogYmVmb3JlIG1ha2luZyB2aXNpYmxlIHRoZSBuZXcgdGFibGVzcGFj ZSBjaGFuZ2Ugc28gYXMgdGhpcyB3b24ndAorCQkgKiBtaXNzIHRoaW5ncy4KKwkJICovCisJCVJl bGF0aW9uRHJvcFN0b3JhZ2UoaVJlbCk7CisKKwkJUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbm9k ZShpUmVsKTsKKworCQkvKiBNYWtlIHN1cmUgdGhlIHJlbHRhYmxlc3BhY2UgY2hhbmdlIGlzIHZp c2libGUgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwl9CisKIAkvKgogCSAqIEFs bCBwcmVkaWNhdGUgbG9ja3Mgb24gdGhlIGluZGV4IGFyZSBhYm91dCB0byBiZSBtYWRlIGludmFs aWQuIFByb21vdGUKIAkgKiB0aGVtIHRvIHJlbGF0aW9uIGxvY2tzIG9uIHRoZSBoZWFwLgpAQCAt MzgxNCw2ICszODg0LDkgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2Nv bnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogICogcmVpbmRleF9yZWxhdGlvbiAt IFRoaXMgcm91dGluZSBpcyB1c2VkIHRvIHJlY3JlYXRlIGFsbCBpbmRleGVzCiAgKiBvZiBhIHJl bGF0aW9uIChhbmQgb3B0aW9uYWxseSBpdHMgdG9hc3QgcmVsYXRpb24gdG9vLCBpZiBhbnkpLgog ICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB3aGVyZSB0aGUgcmVsYXRp b24ncyBpbmRleGVzIHdpbGwgYmUKKyAqIHJlYnVpbHQsIG9yIEludmFsaWRPaWQgdG8ga2VlcCBl YWNoIGluZGV4IG9uIGl0cyBjdXJyZW50IHRhYmxlc3BhY2UuCisgKgogICogImZsYWdzIiBpcyBh IGJpdG1hc2sgdGhhdCBjYW4gaW5jbHVkZSBhbnkgY29tYmluYXRpb24gb2YgdGhlc2UgYml0czoK ICAqCiAgKiBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNUOiBpZiB0cnVlLCBwcm9jZXNzIHRoZSB0 b2FzdCB0YWJsZSB0b28gKGlmIGFueSkuCkBAIC0zOTY0LDEwICs0MDM3LDE0IEBAIHJlaW5kZXhf cmVsYXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3MsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcykKIAkJ LyoKIAkJICogTm90ZSB0aGF0IHRoaXMgc2hvdWxkIGZhaWwgaWYgdGhlIHRvYXN0IHJlbGF0aW9u IGlzIG1pc3NpbmcsIHNvCiAJCSAqIHJlc2V0IFJFSU5ERVhPUFRfTUlTU0lOR19PSy4KKwkJICoK KwkJICogRXZlbiBpZiB0YWJsZSdzIGluZGV4ZXMgd2VyZSBtb3ZlZCB0byBhIG5ldyB0YWJsZXNw YWNlLCB0aGUgaW5kZXgKKwkJICogb24gaXRzIHRvYXN0IHRhYmxlIGlzIG5vdCBtb3ZlZCBpbXBs aWNpdGx5LgogCQkgKi8KIAkJUmVpbmRleFBhcmFtcyBuZXdwYXJhbXMgPSAqcGFyYW1zOwogCiAJ CW5ld3BhcmFtcy5vcHRpb25zICY9IH4oUkVJTkRFWE9QVF9NSVNTSU5HX09LKTsKKwkJbmV3cGFy YW1zLnRhYmxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOwogCQlyZXN1bHQgfD0gcmVpbmRleF9yZWxh dGlvbih0b2FzdF9yZWxpZCwgZmxhZ3MsICZuZXdwYXJhbXMpOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYwppbmRleCBmOWYzZmYzYjYyLi5mMmJkNWQzZDViIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYwpAQCAtMjQ3NCw2ICsyNDc0LDcgQEAgRXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAq cHN0YXRlLCBSZWluZGV4U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCUxpc3RDZWxsICAg KmxjOwogCWJvb2wJCWNvbmN1cnJlbnRseSA9IGZhbHNlOwogCWJvb2wJCXZlcmJvc2UgPSBmYWxz ZTsKKwljaGFyCQkqdGFibGVzcGFjZSA9IE5VTEw7CiAKIAkvKiBQYXJzZSBvcHRpb24gbGlzdCAq LwogCWZvcmVhY2gobGMsIHN0bXQtPnBhcmFtcykKQEAgLTI0ODQsNiArMjQ4NSw4IEBAIEV4ZWNS ZWluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVpbmRleFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BM ZXZlbCkKIAkJCXZlcmJvc2UgPSBkZWZHZXRCb29sZWFuKG9wdCk7CiAJCWVsc2UgaWYgKHN0cmNt cChvcHQtPmRlZm5hbWUsICJjb25jdXJyZW50bHkiKSA9PSAwKQogCQkJY29uY3VycmVudGx5ID0g ZGVmR2V0Qm9vbGVhbihvcHQpOworCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAidGFi bGVzcGFjZSIpID09IDApCisJCQl0YWJsZXNwYWNlID0gZGVmR2V0U3RyaW5nKG9wdCk7CiAJCWVs c2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKQEAgLTI1MDAsNiArMjUwMyw5IEBAIEV4ZWNSZWluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwg UmVpbmRleFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJKHZlcmJvc2UgPyBSRUlOREVY T1BUX1ZFUkJPU0UgOiAwKSB8CiAJCShjb25jdXJyZW50bHkgPyBSRUlOREVYT1BUX0NPTkNVUlJF TlRMWSA6IDApOwogCisJcGFyYW1zLnRhYmxlc3BhY2VPaWQgPSB0YWJsZXNwYWNlICE9IE5VTEwg PworCQlnZXRfdGFibGVzcGFjZV9vaWQodGFibGVzcGFjZSwgZmFsc2UpIDogSW52YWxpZE9pZDsK KwogCXN3aXRjaCAoc3RtdC0+a2luZCkKIAl7CiAJCWNhc2UgUkVJTkRFWF9PQkpFQ1RfSU5ERVg6 CkBAIC0yNzI5LDcgKzI3MzUsMTAgQEAgUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIg Km9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCiAJTWVtb3J5Q29udGV4 dCBvbGQ7CiAJTGlzdAkgICAqcmVsaWRzID0gTklMOwogCWludAkJCW51bV9rZXlzOworCiAJYm9v bAkJY29uY3VycmVudF93YXJuaW5nID0gZmFsc2U7CisJYm9vbAkJdGFibGVzcGFjZV93YXJuaW5n ID0gZmFsc2U7CisJYm9vbAkJbWFwcGVkX3dhcm5pbmcgPSBmYWxzZTsKIAogCUFzc2VydEFyZyhv YmplY3ROYW1lKTsKIAlBc3NlcnQob2JqZWN0S2luZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEg fHwKQEAgLTI4NTYsNiArMjg2NSwzNSBAQCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hh ciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKIAkJCWNvbnRpbnVl OwogCQl9CiAKKwkJaWYgKE9pZElzVmFsaWQocGFyYW1zLT50YWJsZXNwYWNlT2lkKSAmJgorCQkJ SXNTeXN0ZW1DbGFzcyhyZWxpZCwgY2xhc3N0dXBsZSkpCisJCXsKKwkJCWlmICghYWxsb3dTeXN0 ZW1UYWJsZU1vZHMpCisJCQl7CisJCQkJLyogU2tpcCBhbGwgc3lzdGVtIHJlbGF0aW9ucywgaWYg bm90IGFsbG93U3lzdGVtVGFibGVNb2RzICovCisJCQkJaWYgKCF0YWJsZXNwYWNlX3dhcm5pbmcp CisJCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFj ZSBvZiBpbmRleGVzIG9uIHN5c3RlbSByZWxhdGlvbnMsIHNraXBwaW5nIGFsbCIpKSk7CisJCQkJ dGFibGVzcGFjZV93YXJuaW5nID0gdHJ1ZTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWVsc2Ug aWYgKCFPaWRJc1ZhbGlkKGNsYXNzdHVwbGUtPnJlbGZpbGVub2RlKSkKKwkJCXsKKwkJCQkvKgor CQkJCSAqIFNraXAgYWxsIG1hcHBlZCByZWxhdGlvbnMgaWYgVEFCTEVTUEFDRSBpcyBzcGVjaWZp ZWQuCisJCQkJICogT2lkSXNWYWxpZChyZWxmaWxlbm9kZSkgY2hlY2tzIHRoYXQsIHNpbWlsYXIg dG8KKwkJCQkgKiBSZWxhdGlvbklzTWFwcGVkKCkuCisJCQkJICovCisJCQkJaWYgKCFtYXBwZWRf d2FybmluZykKKwkJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRh Ymxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBtYXBwZWQgcmVsYXRpb25zLCBza2lwcGluZyBhbGwiKSkp OworCQkJCW1hcHBlZF93YXJuaW5nID0gdHJ1ZTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfQor CiAJCS8qIFNhdmUgdGhlIGxpc3Qgb2YgcmVsYXRpb24gT0lEcyBpbiBwcml2YXRlIGNvbnRleHQg Ki8KIAkJb2xkID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHByaXZhdGVfY29udGV4dCk7CiAKQEAg LTI5MjYsNiArMjk2NCwxOSBAQCBSZWluZGV4UGFydGl0aW9ucyhPaWQgcmVsaWQsIFJlaW5kZXhQ YXJhbXMgKnBhcmFtcywgYm9vbCBpc1RvcExldmVsKQogCUFzc2VydChyZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfSU5ERVggfHwKIAkJICAgcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFKTsKIAorCS8qIENoZWNrIHBlcm1pc3Npb25zIGV4Y2VwdCB3aGVuIHVzaW5nIGRh dGFiYXNlJ3MgZGVmYXVsdCAqLworCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+dGFibGVzcGFjZU9p ZCkKKwkJJiYgcGFyYW1zLT50YWJsZXNwYWNlT2lkICE9IE15RGF0YWJhc2VUYWJsZVNwYWNlKQor CXsKKwkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKworCQlhY2xyZXN1bHQgPSBwZ190YWJsZXNwYWNl X2FjbGNoZWNrKHBhcmFtcy0+dGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCQkgICBHZXRVc2VySWQo KSwgQUNMX0NSRUFURSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQlhY2xj aGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9UQUJMRVNQQUNFLAorCQkJCQkJICAgZ2V0X3Rh Ymxlc3BhY2VfbmFtZShwYXJhbXMtPnRhYmxlc3BhY2VPaWQpKTsKKwl9CisKIAkvKgogCSAqIENo ZWNrIGlmIHRoaXMgcnVucyBpbiBhIHRyYW5zYWN0aW9uIGJsb2NrLCB3aXRoIGFuIGVycm9yIGNh bGxiYWNrIHRvCiAJICogcHJvdmlkZSBtb3JlIGNvbnRleHQgdW5kZXIgd2hpY2ggYSBwcm9ibGVt IGhhcHBlbnMuCkBAIC0yOTY5LDkgKzMwMjAsMjcgQEAgUmVpbmRleFBhcnRpdGlvbnMoT2lkIHJl bGlkLCBSZWluZGV4UGFyYW1zICpwYXJhbXMsIGJvb2wgaXNUb3BMZXZlbCkKIAkJTWVtb3J5Q29u dGV4dCBvbGRfY29udGV4dDsKIAogCQkvKgotCQkgKiBUaGlzIGRpc2NhcmRzIHBhcnRpdGlvbmVk IHRhYmxlcywgcGFydGl0aW9uZWQgaW5kZXhlcyBhbmQgZm9yZWlnbgotCQkgKiB0YWJsZXMuCisJ CSAqIEZvcmVpZ24gdGFibGVzIGFuZCBwYXJ0aXRpb25lZCByZWxhdGlvbnMgYXJlIG5vdCB0aGVt c2VsdmVzCisJCSAqIHJlaW5kZXhlZCAtIGxlYWYgcGFydGl0aW9ucyBhcmUgcHJvY2Vzc2VkIGRp cmVjdGx5LiAgQnV0IGFueQorCQkgKiB0YWJsZXNwYWNlIGNoYW5nZSBpcyByZWNvcmRlZCBpbiB0 aGUgY2F0YWxvZyBmb3IgcGFydGl0aW9uZWQKKwkJICogcmVsYXRpb25zLgogCQkgKi8KKwkJaWYg KHBhcnRraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCisJCQkodm9pZCkgU2V0UmVs VGFibGVTcGFjZShwYXJ0b2lkLCBwYXJhbXMtPnRhYmxlc3BhY2VPaWQpOworCQllbHNlIGlmIChw YXJ0a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQl7CisJCQlSZWxhdGlvbiBy ZWwgPSB0YWJsZV9vcGVuKHBhcnRvaWQsIFNoYXJlTG9jayk7CisJCQlMaXN0CSppbmRleElkcyA9 IFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJlbCk7CisJCQlMaXN0Q2VsbCAqbGM7CisKKwkJCXRhYmxl X2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwkJCWZvcmVhY2ggKGxjLCBpbmRleElkcykKKwkJCXsKKwkJ CQlPaWQgaW5kZXhpZCA9IGxmaXJzdF9vaWQobGMpOworCQkJCSh2b2lkKSBTZXRSZWxUYWJsZVNw YWNlKGluZGV4aWQsIHBhcmFtcy0+dGFibGVzcGFjZU9pZCk7CisJCQl9CisJCX0KKwogCQlpZiAo IVJFTEtJTkRfSEFTX1NUT1JBR0UocGFydGtpbmQpKQogCQkJY29udGludWU7CiAKQEAgLTMzOTAs NiArMzQ1OSwxMyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lk LCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKKwkvKiBJdCdz IG5vdCBhIHNoYXJlZCBjYXRhbG9nLCBzbyByZWZ1c2UgdG8gbW92ZSBpdCB0byBzaGFyZWQgdGFi bGVzcGFjZSAqLworCWlmIChwYXJhbXMtPnRhYmxlc3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVTUEFD RV9PSUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRp b24gdG8gdGFibGVzcGFjZSBcIiVzXCIiLAorCQkJCQkgZ2V0X3RhYmxlc3BhY2VfbmFtZShwYXJh bXMtPnRhYmxlc3BhY2VPaWQpKSkpOworCiAJQXNzZXJ0KGhlYXBSZWxhdGlvbklkcyAhPSBOSUwp OwogCiAJLyotLS0tLQpAQCAtMzQ2MSw2ICszNTM3LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KE9pZCByZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQkvKiBDcmVh dGUgbmV3IGluZGV4IGRlZmluaXRpb24gYmFzZWQgb24gZ2l2ZW4gaW5kZXggKi8KIAkJbmV3SW5k ZXhJZCA9IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShoZWFwUmVsLAogCQkJCQkJCQkJ CQkJCWlkeC0+aW5kZXhJZCwKKwkJCQkJCQkJCQkJCQlwYXJhbXMtPnRhYmxlc3BhY2VPaWQsCiAJ CQkJCQkJCQkJCQkJY29uY3VycmVudE5hbWUpOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXgg MTdmNzI2NTAzOC4uYTc1NjQ3YjFjYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMzY0MSw3ICszNjQx LDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAkJICogb25lIHdvcmQsIHNvIHRoZSBhYm92ZSB0ZXN0IGlzIGNvcnJlY3QuCiAJCSAqLwog CQlpZiAoZW5kc193aXRoKHByZXZfd2QsICcoJykgfHwgZW5kc193aXRoKHByZXZfd2QsICcsJykp Ci0JCQlDT01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFkiLCAiVkVSQk9TRSIpOworCQkJQ09NUExF VEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwgIlRBQkxFU1BBQ0UiLCAiVkVSQk9TRSIpOworCQllbHNl IGlmIChUYWlsTWF0Y2hlcygiVEFCTEVTUEFDRSIpKQorCQkJQ09NUExFVEVfV0lUSF9RVUVSWShR dWVyeV9mb3JfbGlzdF9vZl90YWJsZXNwYWNlcyk7CiAJfQogCiAvKiBTRUNVUklUWSBMQUJFTCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCmluZGV4IDI2NmY4OTUwZGMuLjU2ZTQwM2FjNjEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2lu ZGV4LmgKQEAgLTMzLDYgKzMzLDcgQEAgdHlwZWRlZiBlbnVtCiB0eXBlZGVmIHN0cnVjdCBSZWlu ZGV4UGFyYW1zCiB7CiAJYml0czMyCQlvcHRpb25zOwkJLyogYml0bWFzayBvZiBSRUlOREVYT1BU XyogKi8KKwlPaWQgIHRhYmxlc3BhY2VPaWQ7CQkJCQkvKiB0YWJsZXNwYWNlIHRvIHJlYnVpbGQg aW5kZXggKi8KIH0gUmVpbmRleFBhcmFtczsKIAogLyogZmxhZyBiaXRzIGZvciBSZWluZGV4UGFy YW1zLT5mbGFncyAqLwpAQCAtOTIsNiArOTMsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgb2xkSW5k ZXhJZCwKKwkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkgICBjb25z dCBjaGFyICpuZXdOYW1lKTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxk KE9pZCBoZWFwUmVsYXRpb25JZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQv dGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291 cmNlCmluZGV4IDFhMTgxMDE2ZDcuLmEyMTFjNTFlNzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9pbnB1 dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMTcsNiArMTcsODAgQEAgQUxURVIgVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlIFNFVCAoc29tZV9ub25leGlzdGVudF9wYXJhbWV0ZXIgPSB0cnVlKTsg IC0tIGYKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3Bh Z2VfY29zdCA9IDIuMCk7IC0tIGZhaWwKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0g b2sKIAorLS0gY3JlYXRlIHRhYmxlICh3aXRoIFRPQVNUKSB0byB0ZXN0IFJFSU5ERVggd2l0aCBU QUJMRVNQQUNFIGNoYW5nZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymwg KG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIHQgdGV4dCk7CitJTlNFUlQgSU5U TyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCB0KQorICBTRUxFQ1Qgcm91 bmQocmFuZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJlcGVhdCgndGV4dCcsIDEwMDAwMDApCisgIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90YmxfaWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOwor Q1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdChjb2wxIGludCwgY29sMiBpbnQp IFBBUlRJVElPTiBCWSBIQVNIIChjb2wxKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNl X3Rlc3RfcHRfMQorICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0CisgIEZP UiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCkKKyAgUEFSVElUSU9OIEJZIEhB U0ggKGNvbDIpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMSBP TiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDEpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdF9pZHhfMiBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDIp OworCistLSBmaXJzdCwgY2hlY2sgYSBuby1vcCBjYXNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBn X2RlZmF1bHQpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAo VEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOwor UkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rl c3RfcHRfaWR4XzI7CitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF9wdDsKKworLS0gY2hlY2sgdGhhdCBSRUlOREVYIHdpdGggVEFCTEVT UEFDRSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbAorQkVHSU47CitSRUlOREVYIChUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4Owor UkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNw YWNlX3Rlc3RfdGJsOworUk9MTEJBQ0s7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitX SEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBz cGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisKKy0tIHJlaW5kZXggYW5kIG1vdmUgdGhlIGVu dGlyZSBkYXRhYmFzZSwgYWZ0ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGluZyBiYWNrCitSRUlOREVY IChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIERBVEFCQVNFIHJlZ3Jlc3Npb247IC0tIG9r IHdpdGggd2FybmluZworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBEQVRBQkFTRSBy ZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5pbmcKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xh c3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdI RVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gcGFydGl0aW9uZWQgaW5kZXhl cyBhcmUgbm90IGRpcmVjdGx5IHJlaW5kZXhlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gc2V0IHBy b3BlcgorLS0gdGFibGVzcGFjZSBpbiBwZ19jbGFzcyBmb3IgdGhlbQorUkVJTkRFWCAoVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0t IG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdF9pZHhfMTsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yOyAtLSBvawor U0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNU IG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScp OworCistLSBpbmRleGVzIGZvciBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCBpbiB0 aGUgbmV3IHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRf MgorICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0CisgIEZPUiBWQUxVRVMg V0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMSk7CitDUkVBVEUgVEFCTEUgcmVncmVzc190Ymxz cGFjZV90ZXN0X3B0XzFfMQorICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0 XzEKKyAgRk9SIFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAwKTsKK1NFTEVDVCBy ZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJP TSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0g Y2hlY2sgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVYIChUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAt LSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3Ri bHNwYWNlKSBUQUJMRSBwZ19hdXRoaWQ7IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZSkgU1lTVEVNIENPTkNVUlJFTlRMWSBwb3N0Z3JlczsgLS0gZmFpbAorUkVJ TkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05DVVJSRU5UTFkgcGdf YW07IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAorCistLSBjaGVjayB0aGF0IGFsbCBy ZWxhdGlvbnMgbW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UKK1NFTEVDVCByZWxuYW1lIEZST00gcGdf Y2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNl IFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkgcmVsbmFtZTsKKwor LS0gbW92ZSBpbmRleGVzIGJhY2sgdG8gcGdfZGVmYXVsdCB0YWJsZXNwYWNlCitSRUlOREVYIChU QUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIENPTkNVUlJFTlRMWSByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0tIG9rCisKKy0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0 aW9ucyBtb3ZlZCBiYWNrIHRvIHBnX2RlZmF1bHQKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xh c3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdI RVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdl IGNhbiB1c2UKIENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIApAQCAtOTYsNiArMTcwLDE0IEBA IFNFTEVDVCByZWxuYW1lLCBzcGNuYW1lIEZST00gcGdfY2F0YWxvZy5wZ190YWJsZXNwYWNlIHQs IHBnX2NhdGFsb2cucGdfY2xhc3MgYwogXGQgdGVzdHNjaGVtYS5wYXJ0X2FfaWR4CiBcZCsgdGVz dHNjaGVtYS5wYXJ0X2FfaWR4CiAKKy0tIFJFSU5ERVggcGFydGl0aW9uZWQgaW5kZXhlcyB0byBu ZXcgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSB0ZXN0 c2NoZW1hLnBhcnQ7CitcZCB0ZXN0c2NoZW1hLnBhcnQKK1xkIHRlc3RzY2hlbWEucGFydDEKK1JF SU5ERVggKENPTkNVUlJFTlRMWSwgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCB0 ZXN0c2NoZW1hLnBhcnRfYV9pZHg7CitcZCB0ZXN0c2NoZW1hLnBhcnQKK1xkIHRlc3RzY2hlbWEu cGFydDEKKwogLS0gcGFydGl0aW9uZWQgcmVscyBjYW5ub3Qgc3BlY2lmeSB0aGUgZGVmYXVsdCB0 YWJsZXNwYWNlLiAgVGhlc2UgZmFpbDoKIENSRUFURSBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQgKGEg aW50IFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgTElTVCAoYSkgVEFCTEVTUEFDRSBwZ19kZWZh dWx0OwogQ1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAoYSBpbnQgUFJJTUFSWSBLRVkgVVNJ TkcgSU5ERVggVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CkBA IC0yODIsNiArMzY0LDkgQEAgQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVzc190 YmxzcGFjZV9yZW5hbWVkIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQKIC0tIFNob3VsZCBzdWNj ZWVkCiBEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9yZW5hbWVkOwogCitEUk9QIFRB QkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7CitEUk9QIFRBQkxFIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF9wdDsKKwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogCiBEUk9QIFJP TEUgcmVncmVzc190YWJsZXNwYWNlX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJs ZXNwYWNlLnNvdXJjZQppbmRleCA5NGM1ZjAyM2M2Li40MzY3NzBjYzMyIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMjAsNiArMjAsMTIyIEBAIEVSUk9S OiAgdW5yZWNvZ25pemVkIHBhcmFtZXRlciAic29tZV9ub25leGlzdGVudF9wYXJhbWV0ZXIiCiBB TFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3Qg PSAyLjApOyAtLSBmYWlsCiBFUlJPUjogIFJFU0VUIG11c3Qgbm90IGluY2x1ZGUgdmFsdWVzIGZv ciBwYXJhbWV0ZXJzCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJh bmRvbV9wYWdlX2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSk7IC0tIG9rCistLSBjcmVh dGUgdGFibGUgKHdpdGggVE9BU1QpIHRvIHRlc3QgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hh bmdlCitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSBiaWdpbnQs IG51bTIgZG91YmxlIHByZWNpc2lvbiwgdCB0ZXh0KTsKK0lOU0VSVCBJTlRPIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90YmwgKG51bTEsIG51bTIsIHQpCisgIFNFTEVDVCByb3VuZChyYW5kb20oKSox MDApLCByYW5kb20oKSwgcmVwZWF0KCd0ZXh0JywgMTAwMDAwMCkKKyAgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTApIHMoaSk7CitDUkVBVEUgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3Ri bF9pZHggT04gcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSk7CitDUkVBVEUgVEFCTEUg cmVncmVzc190YmxzcGFjZV90ZXN0X3B0KGNvbDEgaW50LCBjb2wyIGludCkgUEFSVElUSU9OIEJZ IEhBU0ggKGNvbDEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xCisg IFBBUlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQKKyAgRk9SIFZBTFVFUyBXSVRI IChtb2R1bHVzIDIsIHJlbWFpbmRlciAwKQorICBQQVJUSVRJT04gQlkgSEFTSCAoY29sMik7CitD UkVBVEUgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8xIE9OIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF9wdCAoY29sMSk7CitDUkVBVEUgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0 X3B0X2lkeF8yIE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdCAoY29sMik7CistLSBmaXJzdCwg Y2hlY2sgYSBuby1vcCBjYXNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIElOREVY IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19k ZWZhdWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOworUkVJTkRFWCAoVEFCTEVT UEFDRSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzI7CitS RUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF9wdDsKKy0tIGNoZWNrIHRoYXQgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlIGlzIHRy YW5zYWN0aW9uYWwKK0JFR0lOOworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl KSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK1JFSU5ERVggKFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKK1JP TExCQUNLOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFj ZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190 YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIHJlaW5kZXgg YW5kIG1vdmUgdGhlIGVudGlyZSBkYXRhYmFzZSwgYWZ0ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGlu ZyBiYWNrCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIERBVEFCQVNFIHJl Z3Jlc3Npb247IC0tIG9rIHdpdGggd2FybmluZworV0FSTklORzogIGNhbm5vdCBjaGFuZ2UgdGFi bGVzcGFjZSBvZiBpbmRleGVzIG9uIHN5c3RlbSByZWxhdGlvbnMsIHNraXBwaW5nIGFsbAorUkVJ TkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3 aXRoIHdhcm5pbmcKK1dBUk5JTkc6ICBjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhl cyBvbiBzeXN0ZW0gcmVsYXRpb25zLCBza2lwcGluZyBhbGwKK1NFTEVDVCByZWxuYW1lIEZST00g cGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNw YWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKyByZWxuYW1lIAorLS0tLS0t LS0tCisoMCByb3dzKQorCistLSBwYXJ0aXRpb25lZCBpbmRleGVzIGFyZSBub3QgZGlyZWN0bHkg cmVpbmRleGVkLCBidXQgd2Ugc3RpbGwgaGF2ZSB0byBzZXQgcHJvcGVyCistLSB0YWJsZXNwYWNl IGluIHBnX2NsYXNzIGZvciB0aGVtCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UpIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdDsgLS0gb2sKK1JFSU5ERVggKFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lk eF8xOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzI7IC0tIG9rCitTRUxFQ1QgcmVsbmFtZSBGUk9N IHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVz cGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgICAgICAgICAgICAgICBy ZWxuYW1lICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8xCisgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0X2lkeF8yCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfY29sMV9pZHgKKyByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV9jb2wyX2lkeAorKDQgcm93cykKKworLS0gaW5kZXhlcyBm b3IgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIG5ldyB0YWJsZXNwYWNl CitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzIKKyAgUEFSVElUSU9OIE9G IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdAorICBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwg cmVtYWluZGVyIDEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xXzEK KyAgUEFSVElUSU9OIE9GIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xCisgIEZPUiBWQUxVRVMg V0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCk7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2Ns YXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBX SEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgICAgICAgICAgICAgICAgcmVsbmFt ZSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF9wdF9pZHhfMgorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDFfaWR4CisgcmVncmVz c190YmxzcGFjZV90ZXN0X3B0XzJfY29sMl9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRf MV8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfY29sMV9pZHgKKyByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV8xX2NvbDJfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0 X3B0XzFfY29sMl9pZHgKKyg4IHJvd3MpCisKKy0tIGNoZWNrIFJFSU5ERVggd2l0aCBUQUJMRVNQ QUNFIGNoYW5nZQorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSkgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0gb2sK K1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdfYXV0aGlkOyAt LSBmYWlsCitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkOiAicGdfYXV0aGlkX3JvbG5hbWVfaW5k ZXgiIGlzIGEgc3lzdGVtIGNhdGFsb2cKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSkgU1lTVEVNIENPTkNVUlJFTlRMWSBwb3N0Z3JlczsgLS0gZmFpbAorRVJST1I6ICBjYW5u b3QgcmVpbmRleCBzeXN0ZW0gY2F0YWxvZ3MgY29uY3VycmVudGx5CitSRUlOREVYIChUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIENPTkNVUlJFTlRMWSBwZ19hbTsgLS0gZmFpbAor RVJST1I6ICBjYW5ub3QgcmVpbmRleCBzeXN0ZW0gY2F0YWxvZ3MgY29uY3VycmVudGx5CitSRUlO REVYIChUQUJMRVNQQUNFIHBnX2dsb2JhbCkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3Ri bF9pZHg7IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0 byB0YWJsZXNwYWNlICJwZ19nbG9iYWwiCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2UpIFRBQkxFIHBnX2FtOyAtLSBmYWlsCitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkOiAi cGdfYW1fbmFtZV9pbmRleCIgaXMgYSBzeXN0ZW0gY2F0YWxvZworLS0gY2hlY2sgdGhhdCBhbGwg cmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBn X2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFj ZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7Cisg ICAgICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xXzFfY29s MV9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV8xX2NvbDJfaWR4CisgcmVncmVzc190 YmxzcGFjZV90ZXN0X3B0XzFfY29sMV9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV9j b2wyX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDFfaWR4CisgcmVncmVzc190 YmxzcGFjZV90ZXN0X3B0XzJfY29sMl9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4 XzEKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzIKKyByZWdyZXNzX3RibHNwYWNlX3Rl c3RfdGJsX2lkeAorKDkgcm93cykKKworLS0gbW92ZSBpbmRleGVzIGJhY2sgdG8gcGdfZGVmYXVs dCB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIENPTkNV UlJFTlRMWSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVT UEFDRSBwZ19kZWZhdWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0tIG9rCist LSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgYmFjayB0byBwZ19kZWZhdWx0CitTRUxF Q1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lk IEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7Cisg cmVsbmFtZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNh biB1c2UKIENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIC0tIHRyeSBhIHRhYmxlCkBAIC0xOTks NiArMzE1LDQ3IEBAIFBhcnRpdGlvbnM6IHRlc3RzY2hlbWEucGFydDFfYV9pZHgsCiAgICAgICAg ICAgICB0ZXN0c2NoZW1hLnBhcnQyX2FfaWR4CiBUYWJsZXNwYWNlOiAicmVncmVzc190YmxzcGFj ZSIKIAorLS0gUkVJTkRFWCBwYXJ0aXRpb25lZCBpbmRleGVzIHRvIG5ldyB0YWJsZXNwYWNlCitS RUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHRlc3RzY2hlbWEucGFydDsKK1xk IHRlc3RzY2hlbWEucGFydAorICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAidGVzdHNjaGVtYS5w YXJ0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBh ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6 IExJU1QgKGEpCitJbmRleGVzOgorICAgICJwYXJ0X2FfaWR4IiBidHJlZSAoYSkKK051bWJlciBv ZiBwYXJ0aXRpb25zOiAyIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK1xkIHRlc3RzY2hlbWEu cGFydDEKKyAgICAgICAgICAgICBUYWJsZSAidGVzdHNjaGVtYS5wYXJ0MSIKKyBDb2x1bW4gfCAg VHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRlc3RzY2hlbWEucGFydCBG T1IgVkFMVUVTIElOICgxKQorSW5kZXhlczoKKyAgICAicGFydDFfYV9pZHgiIGJ0cmVlIChhKQor CitSRUlOREVYIChDT05DVVJSRU5UTFksIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5E RVggdGVzdHNjaGVtYS5wYXJ0X2FfaWR4OworXGQgdGVzdHNjaGVtYS5wYXJ0CisgICAgICAgIFBh cnRpdGlvbmVkIHRhYmxlICJ0ZXN0c2NoZW1hLnBhcnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogTElTVCAoYSkKK0luZGV4ZXM6CisgICAgInBh cnRfYV9pZHgiIGJ0cmVlIChhKSwgdGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZSIKK051bWJl ciBvZiBwYXJ0aXRpb25zOiAyIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK1xkIHRlc3RzY2hl bWEucGFydDEKKyAgICAgICAgICAgICBUYWJsZSAidGVzdHNjaGVtYS5wYXJ0MSIKKyBDb2x1bW4g fCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRlc3RzY2hlbWEucGFy dCBGT1IgVkFMVUVTIElOICgxKQorSW5kZXhlczoKKyAgICAicGFydDFfYV9pZHgiIGJ0cmVlIChh KSwgdGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZSIKKwogLS0gcGFydGl0aW9uZWQgcmVscyBj YW5ub3Qgc3BlY2lmeSB0aGUgZGVmYXVsdCB0YWJsZXNwYWNlLiAgVGhlc2UgZmFpbDoKIENSRUFU RSBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkg TElTVCAoYSkgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBk ZWZhdWx0IHRhYmxlc3BhY2UgZm9yIHBhcnRpdGlvbmVkIHJlbGF0aW9ucwpAQCAtNzQxLDYgKzg5 OCw4IEBAIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVu YW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiBOT1RJQ0U6ICBubyBtYXRjaGluZyByZWxh dGlvbnMgaW4gdGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZV9yZW5hbWVkIiBmb3VuZAogLS0g U2hvdWxkIHN1Y2NlZWQKIERST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7 CitEUk9QIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7CitEUk9QIFRBQkxFIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF9wdDsKIERST1AgU0NIRU1BIHRlc3RzY2hlbWEgQ0FTQ0FERTsKIE5P VElDRTogIGRyb3AgY2FzY2FkZXMgdG8gNiBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9wIGNh c2NhZGVzIHRvIHRhYmxlIHRlc3RzY2hlbWEuZm9vCi0tIAoyLjIwLjEKCg== --=_e7104ef8cf86e1f6bfe43961bc0d1799 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0001-Extract-common-part-from-ATExecSetTableSpaceNoSto.patch Content-Disposition: attachment; filename=v4-0001-Extract-common-part-from-ATExecSetTableSpaceNoSto.patch; size=4974 RnJvbSBkYjk5ZjNkYWViNTBiMDYzMTQ1ZjI1N2JiOWZmYTJhYWUyYzkzMWQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjAgSmFuIDIwMjEgMjA6MjE6MTIgKzAzMDAKU3ViamVjdDog W1BBVENIIHY0IDEvMl0gRXh0cmFjdCBjb21tb24gcGFydCBmcm9tIEFURXhlY1NldFRhYmxlU3Bh Y2VOb1N0b3JhZ2UKIGZvciBhIGZ1dHVyZSB1c2FnZQoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyB8IDk2ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCB8ICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgNTgg aW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCA4Njg3ZTlhOTdjLi5hZjM4NmIzYWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtMTMyOTEsNiArMTMyOTEsNTggQEAgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQs IE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAlsaXN0X2ZyZWUocmVsdG9h c3RpZHhpZHMpOwogfQogCisvKgorICogU2V0UmVsVGFibGVTcGFjZSAtIG1vZGlmeSByZWxhdGlv biB0YWJsZXNwYWNlIGluIHRoZSBwZ19jbGFzcyBlbnRyeS4KKyAqCisgKiAncmVsb2lkJyBpcyBh biBPaWQgb2YgcmVsYXRpb24gdG8gYmUgbW9kaWZpZWQuCisgKiAndGFibGVzcGFjZU9pZCcgaXMg YW4gT2lkIG9mIG5ldyB0YWJsZXNwYWNlLgorICoKKyAqIENhdGFsb2cgbW9kaWZpY2F0aW9uIGlz IGRvbmUgb25seSBpZiB0YWJsZXNwYWNlT2lkIGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgY3Vy cmVudGx5IHNldC4gIFJldHVybmVkIGJvb2wgdmFsdWUgaXMgaW5kaWNhdGluZyB3aGV0aGVyIGFu eSBjaGFuZ2VzCisgKiB3ZXJlIG1hZGUgb3Igbm90LgorICovCitib29sCitTZXRSZWxUYWJsZVNw YWNlKE9pZCByZWxvaWQsIE9pZCB0YWJsZXNwYWNlT2lkKQoreworCVJlbGF0aW9uCQlwZ19jbGFz czsKKwlIZWFwVHVwbGUJCXR1cGxlOworCUZvcm1fcGdfY2xhc3MJcmRfcmVsOworCWJvb2wJCQlj aGFuZ2VkID0gZmFsc2U7CisKKwkvKiBHZXQgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIHJlbGF0 aW9uJ3MgcGdfY2xhc3Mgcm93LiAqLworCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNv cHkxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVs YXRpb24gJXUiLCByZWxvaWQpOworCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1Qo dHVwbGUpOworCisJLyogTXlEYXRhYmFzZVRhYmxlU3BhY2UgaXMgc3RvcmVkIGFzIEludmFsaWRP aWQuICovCisJaWYgKHRhYmxlc3BhY2VPaWQgPT0gTXlEYXRhYmFzZVRhYmxlU3BhY2UpCisJCXRh Ymxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOworCisJLyogTm8gd29yayBpZiBubyBjaGFuZ2UgaW4g dGFibGVzcGFjZS4gKi8KKwlpZiAodGFibGVzcGFjZU9pZCAhPSByZF9yZWwtPnJlbHRhYmxlc3Bh Y2UpCisJeworCQkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIHJvdy4gKi8KKwkJcmRfcmVsLT5yZWx0 YWJsZXNwYWNlID0gdGFibGVzcGFjZU9pZDsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNz LCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUpOworCisJCS8qIFJlY29yZCBkZXBlbmRlbmN5IG9uIHRh Ymxlc3BhY2UuICovCisJCWNoYW5nZURlcGVuZGVuY3lPblRhYmxlc3BhY2UoUmVsYXRpb25SZWxh dGlvbklkLAorCQkJCQkJCQkJIHJlbG9pZCwgcmRfcmVsLT5yZWx0YWJsZXNwYWNlKTsKKworCQlj aGFuZ2VkID0gdHJ1ZTsKKwl9CisKKwlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9u UmVsYXRpb25JZCwgcmVsb2lkLCAwKTsKKworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKwl0YWJs ZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gY2hhbmdlZDsK K30KKwogLyoKICAqIFNwZWNpYWwgaGFuZGxpbmcgb2YgQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BB Q0UgZm9yIHJlbGF0aW9ucyB3aXRoIG5vCiAgKiBzdG9yYWdlIHRoYXQgaGF2ZSBhbiBpbnRlcmVz dCBpbiBwcmVzZXJ2aW5nIHRhYmxlc3BhY2UuCkBAIC0xMzMwMSwxMSArMTMzNTMsNyBAQCBBVEV4 ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RF IGxvY2ttb2RlKQogc3RhdGljIHZvaWQKIEFURXhlY1NldFRhYmxlU3BhY2VOb1N0b3JhZ2UoUmVs YXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSkKIHsKLQlIZWFwVHVwbGUJdHVwbGU7Ci0JT2lk CQkJb2xkVGFibGVTcGFjZTsKLQlSZWxhdGlvbglwZ19jbGFzczsKLQlGb3JtX3BnX2NsYXNzIHJk X3JlbDsKLQlPaWQJCQlyZWxvaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CisJT2lkCXJlbG9p ZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAogCS8qCiAJICogU2hvdWxkbid0IGJlIGNhbGxl ZCBvbiByZWxhdGlvbnMgaGF2aW5nIHN0b3JhZ2U7IHRoZXNlIGFyZSBwcm9jZXNzZWQgaW4KQEAg LTEzMzE5LDQxICsxMzM2Nyw5IEBAIEFURXhlY1NldFRhYmxlU3BhY2VOb1N0b3JhZ2UoUmVsYXRp b24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSkKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJvbmx5IHNoYXJlZCByZWxhdGlvbnMgY2Fu IGJlIHBsYWNlZCBpbiBwZ19nbG9iYWwgdGFibGVzcGFjZSIpKSk7CiAKLQkvKgotCSAqIE5vIHdv cmsgaWYgbm8gY2hhbmdlIGluIHRhYmxlc3BhY2UuCi0JICovCi0Jb2xkVGFibGVTcGFjZSA9IHJl bC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlOwotCWlmIChuZXdUYWJsZVNwYWNlID09IG9sZFRhYmxl U3BhY2UgfHwKLQkJKG5ld1RhYmxlU3BhY2UgPT0gTXlEYXRhYmFzZVRhYmxlU3BhY2UgJiYgb2xk VGFibGVTcGFjZSA9PSAwKSkKLQl7Ci0JCUludm9rZU9iamVjdFBvc3RBbHRlckhvb2soUmVsYXRp b25SZWxhdGlvbklkLCByZWxvaWQsIDApOwotCQlyZXR1cm47Ci0JfQotCi0JLyogR2V0IGEgbW9k aWZpYWJsZSBjb3B5IG9mIHRoZSByZWxhdGlvbidzIHBnX2NsYXNzIHJvdyAqLwotCXBnX2NsYXNz ID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwotCi0J dHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxv aWQpKTsKLQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQotCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCByZWxvaWQpOwotCXJkX3JlbCA9IChG b3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOwotCi0JLyogdXBkYXRlIHRoZSBwZ19jbGFz cyByb3cgKi8KLQlyZF9yZWwtPnJlbHRhYmxlc3BhY2UgPSAobmV3VGFibGVTcGFjZSA9PSBNeURh dGFiYXNlVGFibGVTcGFjZSkgPyBJbnZhbGlkT2lkIDogbmV3VGFibGVTcGFjZTsKLQlDYXRhbG9n VHVwbGVVcGRhdGUocGdfY2xhc3MsICZ0dXBsZS0+dF9zZWxmLCB0dXBsZSk7Ci0KLQkvKiBSZWNv cmQgZGVwZW5kZW5jeSBvbiB0YWJsZXNwYWNlICovCi0JY2hhbmdlRGVwZW5kZW5jeU9uVGFibGVz cGFjZShSZWxhdGlvblJlbGF0aW9uSWQsCi0JCQkJCQkJCSByZWxvaWQsIHJkX3JlbC0+cmVsdGFi bGVzcGFjZSk7Ci0KLQlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25J ZCwgcmVsb2lkLCAwKTsKLQotCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKLQotCXRhYmxlX2Nsb3Nl KHBnX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQotCS8qIE1ha2Ugc3VyZSB0aGUgcmVsdGFi bGVzcGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLwotCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisJaWYgKFNldFJlbFRhYmxlU3BhY2UocmVsb2lkLCBuZXdUYWJsZVNwYWNlKSkKKwkJLyogTWFr ZSBzdXJlIHRoZSByZWx0YWJsZXNwYWNlIGNoYW5nZSBpcyB2aXNpYmxlICovCisJCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4 IDA4YzQ2M2QzYzQuLjhlNjM1MTg0ODUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC02 MSw2ICs2MSw4IEBAIGV4dGVybiB2b2lkIEV4ZWN1dGVUcnVuY2F0ZUd1dHMoTGlzdCAqZXhwbGlj aXRfcmVscywgTGlzdCAqcmVsaWRzLCBMaXN0ICpyZWxpZHNfCiAKIGV4dGVybiB2b2lkIFNldFJl bGF0aW9uSGFzU3ViY2xhc3MoT2lkIHJlbGF0aW9uSWQsIGJvb2wgcmVsaGFzc3ViY2xhc3MpOwog CitleHRlcm4gYm9vbCBTZXRSZWxUYWJsZVNwYWNlKE9pZCByZWxvaWQsIE9pZCB0YWJsZXNwYWNl T2lkKTsKKwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcmVuYW1lYXR0KFJlbmFtZVN0bXQgKnN0bXQp OwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBSZW5hbWVDb25zdHJhaW50KFJlbmFtZVN0bXQgKnN0 bXQpOwoKYmFzZS1jb21taXQ6IDkyMGY4NTNkYzk0OGI5OGE1ZGM5NjU4MGM0ZWUwMTFhMzAyZTMz ZTQKLS0gCjIuMjAuMQoK --=_e7104ef8cf86e1f6bfe43961bc0d1799--