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 1l4sDb-0004yY-7q for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Jan 2021 21:19:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l4sDZ-0004pS-Hb for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Jan 2021 21:19:13 +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 1l4sDZ-0004pK-46 for pgsql-hackers@lists.postgresql.org; Wed, 27 Jan 2021 21:19:13 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l4sDT-000331-Un for pgsql-hackers@lists.postgresql.org; Wed, 27 Jan 2021 21:19:10 +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 7113521C2011; Thu, 28 Jan 2021 00:19:06 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1611782346; bh=6o1AzeciaP6WMTQS5wNybPBoctCTqg+zZpMHQby6Y4k=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=DBQMYFfiVtQXojN3b9YLV8LLdp20xoDUtK8veaHKNmGWcjC4hM5CFaiZEEMcxilOu V6r7zd50Q9Tl+snHbnoJS/mz+Y5WocmVWz0aU8brdNwf+g9q1C5cCz1+uQ2c0b7YKS DZZBoW41lrRCxzPCT10qgl3PyF26likQLhAmSWN4= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_384eda54edbdb57c5df13628a06a4985" Content-Transfer-Encoding: 7bit Date: Thu, 28 Jan 2021 00:19:06 +0300 From: Alexey Kondratov To: Michael Paquier Cc: Justin Pryzby , 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: References: <20210120183439.GA21339@alvherre.pgsql> <20210121212651.GY8560@telsasoft.com> <944df7cc452fe0c34cf7820da4588d05@postgrespro.ru> <690fa051803c071d213b0d07b5aa9f55@postgrespro.ru> User-Agent: Roundcube Webmail/1.4.0 Message-ID: X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_384eda54edbdb57c5df13628a06a4985 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-01-27 06:14, Michael Paquier wrote: > On Wed, Jan 27, 2021 at 01:00:50AM +0300, Alexey Kondratov wrote: >> In the new 0002 I moved ACL check to the upper level, i.e. >> ExecReindex(), >> and removed expensive text generation in test. Not touched yet some of >> your >> previously raised concerns. Also, you made SetRelationTableSpace() to >> accept >> Relation instead of Oid, so now we have to open/close indexes in the >> ReindexPartitions(), I am not sure that I use proper locking there, >> but it >> works. > > Passing down Relation to the new routines makes the most sense to me > because we force the callers to think about the level of locking > that's required when doing any tablespace moves. > > + Relation iRel = index_open(partoid, ShareLock); > + > + if (CheckRelationTableSpaceMove(iRel, > params->tablespaceOid)) > + SetRelationTableSpace(iRel, > + params->tablespaceOid, > + InvalidOid); > Speaking of which, this breaks the locking assumptions of > SetRelationTableSpace(). I feel that we should think harder about > this part for partitioned indexes and tables because this looks rather > unsafe in terms of locking assumptions with partition trees. If we > cannot come up with a safe solution, I would be fine with disallowing > TABLESPACE in this case, as a first step. Not all problems have to be > solved at once, and even without this part the feature is still > useful. > I have read more about lock levels and ShareLock should prevent any kind of physical modification of indexes. We already hold ShareLock doing find_all_inheritors(), which is higher than ShareUpdateExclusiveLock, so using ShareLock seems to be safe here, but I will look on it closer. > > + /* It's not a shared catalog, so refuse to move it to shared > tablespace */ > + if (params->tablespaceOid == GLOBALTABLESPACE_OID) > + ereport(ERROR, > + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), > + errmsg("cannot move non-shared relation to tablespace > \"%s\"", > + get_tablespace_name(params->tablespaceOid)))); > Why is that needed if CheckRelationTableSpaceMove() is used? > This is from ReindexRelationConcurrently() where we do not use CheckRelationTableSpaceMove(). For me it makes sense to add only this GLOBALTABLESPACE_OID check there, since before we already check for system catalogs and after for temp relations, so adding CheckRelationTableSpaceMove() will be a double-check. > > - indexRelation->rd_rel->reltablespace, > + OidIsValid(tablespaceOid) ? > + tablespaceOid : > indexRelation->rd_rel->reltablespace, > Let's remove this logic from index_concurrently_create_copy() and let > the caller directly decide the tablespace to use, without a dependency > on InvalidOid in the inner routine. A share update exclusive lock is > already hold on the old index when creating the concurrent copy, so > there won't be concurrent schema changes. > Changed. Also added tests for ACL checks, relfilenode changes. Added ACL recheck for multi-transactional case. Added info about TOAST index reindexing. Changed some comments. Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_384eda54edbdb57c5df13628a06a4985 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v8-0001-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v8-0001-Allow-REINDEX-to-change-tablespace.patch; size=32835 RnJvbSBmMTc2YTZlNWE4MWFiMTMzZmVlODQ5ZjcyZTRlZGI4YjI4N2Q2MDYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjcgSmFuIDIwMjEgMDA6NDY6MTcgKzAzMDAKU3ViamVjdDog W1BBVENIIHY4XSBBbGxvdyBSRUlOREVYIHRvIGNoYW5nZSB0YWJsZXNwYWNlCgpSRUlOREVYIGFs cmVhZHkgZG9lcyBmdWxsIHJlbGF0aW9uIHJld3JpdGUsIHRoaXMgcGF0Y2ggYWRkcyBhCnBvc3Np YmlsaXR5IHRvIHNwZWNpZnkgYSBuZXcgdGFibGVzcGFjZSB3aGVyZSBuZXcgcmVsZmlsZW5vZGUK d2lsbCBiZSBjcmVhdGVkLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAg ICAgICAgIHwgIDMxICsrKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAg ICAgIHwgIDUwICsrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAg ICAgfCAxMTIgKysrKysrKysrKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAg ICAgIHwgICA5ICstCiBzcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlICB8 IDEwNiArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNv dXJjZSB8IDE4MSArKysrKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQ4MSBp bnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDYy N2IzNjMwMGMuLmU2MTBhMGY1MmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC0yNyw2ICsyNyw3 IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3Jl cGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAKICAgICBDT05DVVJSRU5UTFkgWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBWRVJC T1NFIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxl PiBdCisgICAgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3Rh Ymxlc3BhY2U8L3JlcGxhY2VhYmxlPgogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2Pgog CkBAIC0xODcsNiArMTg4LDIxIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAgICAgPC9saXN0 aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBTcGVjaWZpZXMgdGhhdCBpbmRleGVzIHdpbGwgYmUgcmVidWlsdCBv biBhIG5ldyB0YWJsZXNwYWNlLgorICAgICAgQ2Fubm90IGJlIHVzZWQgd2l0aCAibWFwcGVkIiBh bmQgc3lzdGVtICh1bmxlc3MgPHZhcm5hbWU+YWxsb3dfc3lzdGVtX3RhYmxlX21vZHM8L3Zhcm5h bWU+CisgICAgICBpcyBzZXQgdG8gPGxpdGVyYWw+VFJVRTwvbGl0ZXJhbD4pIHJlbGF0aW9ucy4g SWYgPGxpdGVyYWw+U0NIRU1BPC9saXRlcmFsPiwKKyAgICAgIDxsaXRlcmFsPkRBVEFCQVNFPC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5TWVNURU08L2xpdGVyYWw+IGFyZSBzcGVjaWZpZWQsCisgICAg ICB0aGVuIGFsbCAibWFwcGVkIiBhbmQgc3lzdGVtIHJlbGF0aW9ucyB3aWxsIGJlIHNraXBwZWQg YW5kIGEgc2luZ2xlCisgICAgICA8bGl0ZXJhbD5XQVJOSU5HPC9saXRlcmFsPiB3aWxsIGJlIGdl bmVyYXRlZC4gSW5kZXhlcyBvbiBUT0FTVCB0YWJsZXMKKyAgICAgIGFyZSByZWluZGV4ZWQsIGJ1 dCBub3QgbW92ZWQgdGhlIG5ldyB0YWJsZXNwYWNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJt PjxsaXRlcmFsPlZFUkJPU0U8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTIx MCw2ICsyMjYsMTQgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0YWJsZXNwYWNlIHdo ZXJlIGluZGV4ZXMgd2lsbCBiZSByZWJ1aWx0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgog CkBAIC0yOTIsNyArMzE2LDEyIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAgICB3aXRoIDxj b21tYW5kPlJFSU5ERVggSU5ERVg8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPlJFSU5ERVggVEFCTEU8 L2NvbW1hbmQ+LAogICAgcmVzcGVjdGl2ZWx5LiBFYWNoIHBhcnRpdGlvbiBvZiB0aGUgc3BlY2lm aWVkIHBhcnRpdGlvbmVkIHJlbGF0aW9uIGlzCiAgICByZWluZGV4ZWQgaW4gYSBzZXBhcmF0ZSB0 cmFuc2FjdGlvbi4gVGhvc2UgY29tbWFuZHMgY2Fubm90IGJlIHVzZWQgaW5zaWRlCi0gICBhIHRy YW5zYWN0aW9uIGJsb2NrIHdoZW4gd29ya2luZyBvbiBhIHBhcnRpdGlvbmVkIHRhYmxlIG9yIGlu ZGV4LgorICAgYSB0cmFuc2FjdGlvbiBibG9jayB3aGVuIHdvcmtpbmcgb24gYSBwYXJ0aXRpb25l ZCB0YWJsZSBvciBpbmRleC4gSWYKKyAgIGEgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4gY29t bWFuZCBmYWlscyB3aGVuIHJ1biBvbiBhIHBhcnRpdGlvbmVkCisgICByZWxhdGlvbiwgYW5kIDxs aXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+IHdhcyBzcGVjaWZpZWQsIHRoZW4gaXQgbWF5IGhh dmUKKyAgIG1vdmVkIGluZGV4ZXMgb24gc29tZSBwYXJ0aXRpb25zIHRvIHRoZSBuZXcgdGFibGVz cGFjZS4gIFJlLXJ1bm5pbmcgdGhlIGNvbW1hbmQKKyAgIHdpbGwgcmVpbmRleCBhbGwgcGFydGl0 aW9ucyBhbmQgbW92ZSBwcmV2aW91c2x5LXVucHJvY2Vzc2VkIGluZGV4ZXMgdG8gdGhlIG5ldwor ICAgdGFibGVzcGFjZS4KICAgPC9wYXJhPgogCiAgIDxyZWZzZWN0MiBpZD0ic3FsLXJlaW5kZXgt Y29uY3VycmVudGx5IiB4cmVmbGFiZWw9IlJlYnVpbGRpbmcgSW5kZXhlcyBDb25jdXJyZW50bHki PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCmluZGV4IGI4Y2QzNWU5OTUuLjA2Y2IzYzhjNTUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2Vy LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy90 YWJsZWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCkBAIC0xMzk0LDkgKzEzOTUsMTIgQEAgaW5kZXhfdXBkYXRlX2Nv bGxhdGlvbl92ZXJzaW9ucyhPaWQgcmVsaWQsIE9pZCBjb2xsKQogICogQ3JlYXRlIGNvbmN1cnJl bnRseSBhbiBpbmRleCBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgb25lIHByb3ZpZGVk IGJ5CiAgKiBjYWxsZXIuICBUaGUgaW5kZXggaXMgaW5zZXJ0ZWQgaW50byBjYXRhbG9ncyBhbmQg bmVlZHMgdG8gYmUgYnVpbHQgbGF0ZXIKICAqIG9uLiAgVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNv bmN1cnJlbnQgcmVpbmRleCBwcm9jZXNzaW5nLgorICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0 aGUgdGFibGVzcGFjZSB0byB1c2UgZm9yIHRoaXMgaW5kZXguCiAgKi8KIE9pZAotaW5kZXhfY29u Y3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4 SWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCitpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHko UmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKKwkJCQkJCQkgICBPaWQgdGFi bGVzcGFjZU9pZCwgY29uc3QgY2hhciAqbmV3TmFtZSkKIHsKIAlSZWxhdGlvbglpbmRleFJlbGF0 aW9uOwogCUluZGV4SW5mbyAgKm9sZEluZm8sCkBAIC0xNTI2LDcgKzE1MzAsNyBAQCBpbmRleF9j b25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5k ZXhJZCwgY29uc3QgY2hhcgogCQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFt ZXMsCiAJCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFtLAotCQkJCQkJCSAgaW5k ZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCSAgdGFibGVzcGFjZU9p ZCwKIAkJCQkJCQkgIGluZGV4UmVsYXRpb24tPnJkX2luZGNvbGxhdGlvbiwKIAkJCQkJCQkgIGlu ZGNsYXNzLT52YWx1ZXMsCiAJCQkJCQkJICBpbmRjb2xvcHRpb25zLT52YWx1ZXMsCkBAIC0zNjAz LDYgKzM2MDcsNyBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3Ry YWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJdm9sYXRpbGUgYm9vbCBza2lwcGVkX2Nv bnN0cmFpbnQgPSBmYWxzZTsKIAlQR1JVc2FnZQlydTA7CiAJYm9vbAkJcHJvZ3Jlc3MgPSAoKHBh cmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRfUkVQT1JUX1BST0dSRVNTKSAhPSAwKTsKKwlib29s CQlzZXRfdGFibGVzcGFjZSA9IE9pZElzVmFsaWQocGFyYW1zLT50YWJsZXNwYWNlT2lkKTsKIAog CXBnX3J1c2FnZV9pbml0KCZydTApOwogCkBAIC0zNjU0LDE0ICszNjU5LDIwIEBAIHJlaW5kZXhf aW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJz aXN0ZW5jZSwKIAkJCSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UoaVJl bCkpLAogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKTsKIAorCWlmIChzZXRfdGFi bGVzcGFjZSkKKwkJc2V0X3RhYmxlc3BhY2UgPSBDaGVja1JlbGF0aW9uVGFibGVTcGFjZU1vdmUo aVJlbCwKKwkJCQkJCQkJCQkJCQkgcGFyYW1zLT50YWJsZXNwYWNlT2lkKTsKKwogCS8qCi0JICog RG9uJ3QgYWxsb3cgcmVpbmRleCBvbiB0ZW1wIHRhYmxlcyBvZiBvdGhlciBiYWNrZW5kcyAuLi4g dGhlaXIgbG9jYWwKLQkgKiBidWZmZXIgbWFuYWdlciBpcyBub3QgZ29pbmcgdG8gY29wZS4KKwkg KiBXZSBkb24ndCBzdXBwb3J0IG1vdmluZyBzeXN0ZW0gcmVsYXRpb25zIGludG8gZGlmZmVyZW50 IHRhYmxlc3BhY2VzCisJICogdW5sZXNzIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzPTEuCiAJICov Ci0JaWYgKFJFTEFUSU9OX0lTX09USEVSX1RFTVAoaVJlbCkpCisJaWYgKHNldF90YWJsZXNwYWNl ICYmCisJCSFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbVJlbGF0aW9uKGlSZWwpKQog CQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgcmVpbmRleCB0ZW1wb3JhcnkgdGFibGVzIG9mIG90 aGVyIHNlc3Npb25zIikpKTsKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkOiBcIiVzXCIgaXMgYSBzeXN0 ZW0gY2F0YWxvZyIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKIAog CS8qCiAJICogRG9uJ3QgYWxsb3cgcmVpbmRleCBvZiBhbiBpbnZhbGlkIGluZGV4IG9uIFRPQVNU IHRhYmxlLiAgVGhpcyBpcyBhCkBAIC0zNjgwLDYgKzM2OTEsMjcgQEAgcmVpbmRleF9pbmRleChP aWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNl LAogCSAqLwogCUNoZWNrVGFibGVOb3RJblVzZShpUmVsLCAiUkVJTkRFWCBJTkRFWCIpOwogCisJ LyoKKwkgKiBTZXQgdGhlIG5ldyB0YWJsZXNwYWNlIGZvciB0aGUgcmVsYXRpb24uICBEbyB0aGF0 IG9ubHkgaW4gdGhlCisJICogY2FzZSB3aGVyZSB0aGUgcmVpbmRleCBjYWxsZXIgd2lzaGVzIHRv IGVuZm9yY2UgYSBuZXcgdGFibGVzcGFjZS4KKwkgKi8KKwlpZiAoc2V0X3RhYmxlc3BhY2UpCisJ eworCQlTZXRSZWxhdGlvblRhYmxlU3BhY2UoaVJlbCwgcGFyYW1zLT50YWJsZXNwYWNlT2lkLCBJ bnZhbGlkT2lkKTsKKworCQkvKgorCQkgKiBNYXJrIHRoZSByZWxhdGlvbiBhcyByZWFkeSB0byBi ZSBkcm9wcGVkIGF0IHRyYW5zYWN0aW9uIGNvbW1pdCwKKwkJICogYmVmb3JlIG1ha2luZyB2aXNp YmxlIHRoZSBuZXcgdGFibGVzcGFjZSBjaGFuZ2Ugc28gYXMgdGhpcyB3b24ndAorCQkgKiBtaXNz IHRoaW5ncy4KKwkJICovCisJCVJlbGF0aW9uRHJvcFN0b3JhZ2UoaVJlbCk7CisKKwkJUmVsYXRp b25Bc3N1bWVOZXdSZWxmaWxlbm9kZShpUmVsKTsKKworCQkvKiBNYWtlIHN1cmUgdGhlIHJlbHRh Ymxlc3BhY2UgY2hhbmdlIGlzIHZpc2libGUgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKwl9CisKIAkvKgogCSAqIEFsbCBwcmVkaWNhdGUgbG9ja3Mgb24gdGhlIGluZGV4IGFyZSBh Ym91dCB0byBiZSBtYWRlIGludmFsaWQuIFByb21vdGUKIAkgKiB0aGVtIHRvIHJlbGF0aW9uIGxv Y2tzIG9uIHRoZSBoZWFwLgpAQCAtMzk2NCwxMCArMzk5NiwxNCBAQCByZWluZGV4X3JlbGF0aW9u KE9pZCByZWxpZCwgaW50IGZsYWdzLCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCS8qCiAJCSAq IE5vdGUgdGhhdCB0aGlzIHNob3VsZCBmYWlsIGlmIHRoZSB0b2FzdCByZWxhdGlvbiBpcyBtaXNz aW5nLCBzbwogCQkgKiByZXNldCBSRUlOREVYT1BUX01JU1NJTkdfT0suCisJCSAqCisJCSAqIEV2 ZW4gaWYgdGFibGUncyBpbmRleGVzIHdlcmUgbW92ZWQgdG8gYSBuZXcgdGFibGVzcGFjZSwgdGhl IGluZGV4CisJCSAqIG9uIGl0cyB0b2FzdCB0YWJsZSBpcyBub3QgbW92ZWQgaW1wbGljaXRseS4K IAkJICovCiAJCVJlaW5kZXhQYXJhbXMgbmV3cGFyYW1zID0gKnBhcmFtczsKIAogCQluZXdwYXJh bXMub3B0aW9ucyAmPSB+KFJFSU5ERVhPUFRfTUlTU0lOR19PSyk7CisJCW5ld3BhcmFtcy50YWJs ZXNwYWNlT2lkID0gSW52YWxpZE9pZDsKIAkJcmVzdWx0IHw9IHJlaW5kZXhfcmVsYXRpb24odG9h c3RfcmVsaWQsIGZsYWdzLCAmbmV3cGFyYW1zKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKaW5kZXggZjlmM2ZmM2I2Mi4uYjNlYWY3Y2FiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKQEAgLTI0NzQsNiArMjQ3NCw3IEBAIEV4ZWNSZWluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwg UmVpbmRleFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAlMaXN0Q2VsbCAgICpsYzsKIAli b29sCQljb25jdXJyZW50bHkgPSBmYWxzZTsKIAlib29sCQl2ZXJib3NlID0gZmFsc2U7CisJY2hh cgkJKnRhYmxlc3BhY2UgPSBOVUxMOwogCiAJLyogUGFyc2Ugb3B0aW9uIGxpc3QgKi8KIAlmb3Jl YWNoKGxjLCBzdG10LT5wYXJhbXMpCkBAIC0yNDg0LDYgKzI0ODUsOCBAQCBFeGVjUmVpbmRleChQ YXJzZVN0YXRlICpwc3RhdGUsIFJlaW5kZXhTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJ CQl2ZXJib3NlID0gZGVmR2V0Qm9vbGVhbihvcHQpOwogCQllbHNlIGlmIChzdHJjbXAob3B0LT5k ZWZuYW1lLCAiY29uY3VycmVudGx5IikgPT0gMCkKIAkJCWNvbmN1cnJlbnRseSA9IGRlZkdldEJv b2xlYW4ob3B0KTsKKwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInRhYmxlc3BhY2Ui KSA9PSAwKQorCQkJdGFibGVzcGFjZSA9IGRlZkdldFN0cmluZyhvcHQpOwogCQllbHNlCiAJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0y NTAwLDYgKzI1MDMsMjIgQEAgRXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWluZGV4 U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkodmVyYm9zZSA/IFJFSU5ERVhPUFRfVkVS Qk9TRSA6IDApIHwKIAkJKGNvbmN1cnJlbnRseSA/IFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZIDog MCk7CiAKKwlwYXJhbXMudGFibGVzcGFjZU9pZCA9IHRhYmxlc3BhY2UgIT0gTlVMTCA/CisJCWdl dF90YWJsZXNwYWNlX29pZCh0YWJsZXNwYWNlLCBmYWxzZSkgOiBJbnZhbGlkT2lkOworCisJLyog Q2hlY2sgcGVybWlzc2lvbnMgZXhjZXB0IHdoZW4gdXNpbmcgZGF0YWJhc2UncyBkZWZhdWx0ICov CisJaWYgKE9pZElzVmFsaWQocGFyYW1zLnRhYmxlc3BhY2VPaWQpICYmCisJCXBhcmFtcy50YWJs ZXNwYWNlT2lkICE9IE15RGF0YWJhc2VUYWJsZVNwYWNlKQorCXsKKwkJQWNsUmVzdWx0CWFjbHJl c3VsdDsKKworCQlhY2xyZXN1bHQgPSBwZ190YWJsZXNwYWNlX2FjbGNoZWNrKHBhcmFtcy50YWJs ZXNwYWNlT2lkLAorCQkJCQkJCQkJCSAgIEdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKKwkJaWYg KGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwg T0JKRUNUX1RBQkxFU1BBQ0UsCisJCQkJCQkgICBnZXRfdGFibGVzcGFjZV9uYW1lKHBhcmFtcy50 YWJsZXNwYWNlT2lkKSk7CisJfQorCiAJc3dpdGNoIChzdG10LT5raW5kKQogCXsKIAkJY2FzZSBS RUlOREVYX09CSkVDVF9JTkRFWDoKQEAgLTI3MzAsNiArMjc0OSw4IEBAIFJlaW5kZXhNdWx0aXBs ZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RL aW5kLAogCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKIAlpbnQJCQludW1fa2V5czsKIAlib29sCQlj b25jdXJyZW50X3dhcm5pbmcgPSBmYWxzZTsKKwlib29sCQl0YWJsZXNwYWNlX3dhcm5pbmcgPSBm YWxzZTsKKwlib29sCQltYXBwZWRfd2FybmluZyA9IGZhbHNlOwogCiAJQXNzZXJ0QXJnKG9iamVj dE5hbWUpOwogCUFzc2VydChvYmplY3RLaW5kID09IFJFSU5ERVhfT0JKRUNUX1NDSEVNQSB8fApA QCAtMjg1Niw2ICsyODc3LDM1IEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpv YmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCQkJY29udGludWU7CiAJ CX0KIAorCQlpZiAoT2lkSXNWYWxpZChwYXJhbXMtPnRhYmxlc3BhY2VPaWQpICYmCisJCQlJc1N5 c3RlbUNsYXNzKHJlbGlkLCBjbGFzc3R1cGxlKSkKKwkJeworCQkJaWYgKCFhbGxvd1N5c3RlbVRh YmxlTW9kcykKKwkJCXsKKwkJCQkvKiBTa2lwIGFsbCBzeXN0ZW0gcmVsYXRpb25zLCBpZiBub3Qg YWxsb3dTeXN0ZW1UYWJsZU1vZHMgKi8KKwkJCQlpZiAoIXRhYmxlc3BhY2Vfd2FybmluZykKKwkJ CQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5U X1BSSVZJTEVHRSksCisJCQkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9m IGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCQl0YWJs ZXNwYWNlX3dhcm5pbmcgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZWxzZSBpZiAo IU9pZElzVmFsaWQoY2xhc3N0dXBsZS0+cmVsZmlsZW5vZGUpKQorCQkJeworCQkJCS8qCisJCQkJ ICogU2tpcCBhbGwgbWFwcGVkIHJlbGF0aW9ucyBpZiBUQUJMRVNQQUNFIGlzIHNwZWNpZmllZC4K KwkJCQkgKiBPaWRJc1ZhbGlkKHJlbGZpbGVub2RlKSBjaGVja3MgdGhhdCwgc2ltaWxhciB0bwor CQkJCSAqIFJlbGF0aW9uSXNNYXBwZWQoKS4KKwkJCQkgKi8KKwkJCQlpZiAoIW1hcHBlZF93YXJu aW5nKQorCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVz cGFjZSBvZiBpbmRleGVzIG9uIG1hcHBlZCByZWxhdGlvbnMsIHNraXBwaW5nIGFsbCIpKSk7CisJ CQkJbWFwcGVkX3dhcm5pbmcgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKIAkJ LyogU2F2ZSB0aGUgbGlzdCBvZiByZWxhdGlvbiBPSURzIGluIHByaXZhdGUgY29udGV4dCAqLwog CQlvbGQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIApAQCAtMjk2 OSw5ICszMDE5LDQxIEBAIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFt cyAqcGFyYW1zLCBib29sIGlzVG9wTGV2ZWwpCiAJCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7 CiAKIAkJLyoKLQkJICogVGhpcyBkaXNjYXJkcyBwYXJ0aXRpb25lZCB0YWJsZXMsIHBhcnRpdGlv bmVkIGluZGV4ZXMgYW5kIGZvcmVpZ24KLQkJICogdGFibGVzLgorCQkgKiBGb3JlaWduIHRhYmxl cyBhbmQgcGFydGl0aW9uZWQgcmVsYXRpb25zIGFyZSBub3QgdGhlbXNlbHZlcworCQkgKiByZWlu ZGV4ZWQgLSBsZWFmIHBhcnRpdGlvbnMgYXJlIHByb2Nlc3NlZCBkaXJlY3RseS4gIEJ1dCBhbnkK KwkJICogdGFibGVzcGFjZSBjaGFuZ2UgaXMgcmVjb3JkZWQgaW4gdGhlIGNhdGFsb2cgZm9yIHBh cnRpdGlvbmVkCisJCSAqIHJlbGF0aW9ucy4KIAkJICovCisJCWlmIChwYXJ0a2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX0lOREVYKQorCQl7CisJCQlSZWxhdGlvbiBpUmVsID0gaW5kZXhfb3Bl bihwYXJ0b2lkLCBTaGFyZUxvY2spOworCisJCQlpZiAoQ2hlY2tSZWxhdGlvblRhYmxlU3BhY2VN b3ZlKGlSZWwsIHBhcmFtcy0+dGFibGVzcGFjZU9pZCkpCisJCQkJU2V0UmVsYXRpb25UYWJsZVNw YWNlKGlSZWwsCisJCQkJCQkJCQkgIHBhcmFtcy0+dGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCSAg SW52YWxpZE9pZCk7CisJCQlpbmRleF9jbG9zZShpUmVsLCBOb0xvY2spOworCQl9CisJCWVsc2Ug aWYgKHBhcnRraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXsKKwkJCVJlbGF0 aW9uIHJlbCA9IHRhYmxlX29wZW4ocGFydG9pZCwgU2hhcmVMb2NrKTsKKwkJCUxpc3QJKmluZGV4 SWRzID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKwkJCUxpc3RDZWxsICpsYzsKKworCQkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCQkJZm9yZWFjaCAobGMsIGluZGV4SWRzKQorCQkJ eworCQkJCU9pZCBpbmRleGlkID0gbGZpcnN0X29pZChsYyk7CisJCQkJUmVsYXRpb24gaVJlbCA9 IGluZGV4X29wZW4oaW5kZXhpZCwgU2hhcmVMb2NrKTsKKworCQkJCWlmIChDaGVja1JlbGF0aW9u VGFibGVTcGFjZU1vdmUoaVJlbCwgcGFyYW1zLT50YWJsZXNwYWNlT2lkKSkKKwkJCQkJU2V0UmVs YXRpb25UYWJsZVNwYWNlKGlSZWwsCisJCQkJCQkJCQkJICBwYXJhbXMtPnRhYmxlc3BhY2VPaWQs CisJCQkJCQkJCQkJICBJbnZhbGlkT2lkKTsKKwkJCQlpbmRleF9jbG9zZShpUmVsLCBOb0xvY2sp OworCQkJfQorCQl9CisKIAkJaWYgKCFSRUxLSU5EX0hBU19TVE9SQUdFKHBhcnRraW5kKSkKIAkJ CWNvbnRpbnVlOwogCkBAIC0zMDMyLDYgKzMxMTQsMjIgQEAgUmVpbmRleE11bHRpcGxlSW50ZXJu YWwoTGlzdCAqcmVsaWRzLCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCQljb250aW51ZTsKIAkJ fQogCisJCS8qCisJCSAqIEV4ZWNSZWluZGV4KCkgZG9lcyB0aGlzIGNoZWNrLCBidXQgaGVyZSB3 ZSBoYXZlIHRvIHJlY2hlY2sKKwkJICogaXQgYWdhaW4gdG8gYmUgc3VyZSB0aGF0IG5vdGhpbmcg Y2hhbmdlZCBiZXR3ZWVuIHRyYW5zYWN0aW9ucy4KKwkJICovCisJCWlmIChPaWRJc1ZhbGlkKHBh cmFtcy0+dGFibGVzcGFjZU9pZCkgJiYKKwkJCXBhcmFtcy0+dGFibGVzcGFjZU9pZCAhPSBNeURh dGFiYXNlVGFibGVTcGFjZSkKKwkJeworCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKworCQkJYWNs cmVzdWx0ID0gcGdfdGFibGVzcGFjZV9hY2xjaGVjayhwYXJhbXMtPnRhYmxlc3BhY2VPaWQsCisJ CQkJCQkJCQkJCSAgIEdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKKwkJCWlmIChhY2xyZXN1bHQg IT0gQUNMQ0hFQ0tfT0spCisJCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVEFC TEVTUEFDRSwKKwkJCQkJCQlnZXRfdGFibGVzcGFjZV9uYW1lKHBhcmFtcy0+dGFibGVzcGFjZU9p ZCkpOworCQl9CisKIAkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CiAJCXJlbHBl cnNpc3RlbmNlID0gZ2V0X3JlbF9wZXJzaXN0ZW5jZShyZWxpZCk7CiAKQEAgLTMzOTAsNiArMzQ4 OCwxMyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBSZWlu ZGV4UGFyYW1zICpwYXJhbXMpCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKKwkvKiBJdCdzIG5vdCBh IHNoYXJlZCBjYXRhbG9nLCBzbyByZWZ1c2UgdG8gbW92ZSBpdCB0byBzaGFyZWQgdGFibGVzcGFj ZSAqLworCWlmIChwYXJhbXMtPnRhYmxlc3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8g dGFibGVzcGFjZSBcIiVzXCIiLAorCQkJCQkgZ2V0X3RhYmxlc3BhY2VfbmFtZShwYXJhbXMtPnRh Ymxlc3BhY2VPaWQpKSkpOworCiAJQXNzZXJ0KGhlYXBSZWxhdGlvbklkcyAhPSBOSUwpOwogCiAJ LyotLS0tLQpAQCAtMzQ2MSw2ICszNTY2LDkgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KE9pZCByZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQkvKiBDcmVhdGUgbmV3 IGluZGV4IGRlZmluaXRpb24gYmFzZWQgb24gZ2l2ZW4gaW5kZXggKi8KIAkJbmV3SW5kZXhJZCA9 IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShoZWFwUmVsLAogCQkJCQkJCQkJCQkJCWlk eC0+aW5kZXhJZCwKKwkJCQkJCQkJCQkJCQlPaWRJc1ZhbGlkKHBhcmFtcy0+dGFibGVzcGFjZU9p ZCkgPworCQkJCQkJCQkJCQkJCQlwYXJhbXMtPnRhYmxlc3BhY2VPaWQgOgorCQkJCQkJCQkJCQkJ CQlpbmRleFJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJl bnROYW1lKTsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5j IGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDE3ZjcyNjUwMzguLmE3NTY0N2Ix Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTM2NDEsNyArMzY0MSw5IEBAIHBzcWxfY29tcGxldGlv bihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSAqIG9uZSB3b3JkLCBz byB0aGUgYWJvdmUgdGVzdCBpcyBjb3JyZWN0LgogCQkgKi8KIAkJaWYgKGVuZHNfd2l0aChwcmV2 X3dkLCAnKCcpIHx8IGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQotCQkJQ09NUExFVEVfV0lUSCgi Q09OQ1VSUkVOVExZIiwgIlZFUkJPU0UiKTsKKwkJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRM WSIsICJUQUJMRVNQQUNFIiwgIlZFUkJPU0UiKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlRB QkxFU1BBQ0UiKSkKKwkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFi bGVzcGFjZXMpOwogCX0KIAogLyogU0VDVVJJVFkgTEFCRUwgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRl eCAyNjZmODk1MGRjLi44MTcyYmZmNjE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC0yOSwxMCArMjks MTYgQEAgdHlwZWRlZiBlbnVtCiAJSU5ERVhfRFJPUF9TRVRfREVBRAogfSBJbmRleFN0YXRlRmxh Z3NBY3Rpb247CiAKLS8qIG9wdGlvbnMgZm9yIFJFSU5ERVggKi8KKy8qCisgKiBPcHRpb25zIGZv ciBSRUlOREVYCisgKgorICogInRhYmxlc3BhY2VPaWQiIGlzIHRoZSB0YWJsZXNwYWNlIHdoZXJl IGluZGV4ZXMgd2lsbCBiZSByZWJ1aWx0LAorICogb3IgSW52YWxpZE9pZCB0byBrZWVwIGVhY2gg aW5kZXggb24gaXRzIGN1cnJlbnQgdGFibGVzcGFjZS4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgUmVp bmRleFBhcmFtcwogewogCWJpdHMzMgkJb3B0aW9uczsJCS8qIGJpdG1hc2sgb2YgUkVJTkRFWE9Q VF8qICovCisJT2lkICB0YWJsZXNwYWNlT2lkOwkJCS8qIHRhYmxlc3BhY2UgdG8gcmVidWlsZCBp bmRleCAqLwogfSBSZWluZGV4UGFyYW1zOwogCiAvKiBmbGFnIGJpdHMgZm9yIFJlaW5kZXhQYXJh bXMtPmZsYWdzICovCkBAIC05Miw2ICs5OCw3IEBAIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3Jl YXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIE9pZCBvbGRJbmRl eElkLAorCQkJCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJCSAgIGNvbnN0 IGNoYXIgKm5ld05hbWUpOwogCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQo T2lkIGhlYXBSZWxhdGlvbklkLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90 YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3Vy Y2UKaW5kZXggMWExODEwMTZkNy4uYzhhMzA5OGJmNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0 L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0xNyw2ICsxNyw5NyBAQCBBTFRFUiBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UgU0VUIChzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRlciA9IHRydWUpOyAg LS0gZgogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFn ZV9jb3N0ID0gMi4wKTsgLS0gZmFpbAogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl IFJFU0VUIChyYW5kb21fcGFnZV9jb3N0LCBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3kpOyAtLSBv awogCistLSBjcmVhdGUgdGFibGUgKHdpdGggVE9BU1QpIHRvIHRlc3QgUkVJTkRFWCB3aXRoIFRB QkxFU1BBQ0UgY2hhbmdlCitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAo bnVtMSBiaWdpbnQsIG51bTIgZG91YmxlIHByZWNpc2lvbiwgdCB0ZXh0KTsKK0lOU0VSVCBJTlRP IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEsIG51bTIsIHQpCisgIFNFTEVDVCByb3Vu ZChyYW5kb20oKSoxMDApLCByYW5kb20oKSwgJ3RleHQnCisgIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4 IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF9wdChjb2wxIGludCwgY29sMiBpbnQpIFBBUlRJVElPTiBCWSBIQVNI IChjb2wxKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMQorICBQQVJU SVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0CisgIEZPUiBWQUxVRVMgV0lUSCAobW9k dWx1cyAyLCByZW1haW5kZXIgMCkKKyAgUEFSVElUSU9OIEJZIEhBU0ggKGNvbDIpOworQ1JFQVRF IElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMSBPTiByZWdyZXNzX3RibHNwYWNl X3Rlc3RfcHQgKGNvbDEpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9p ZHhfMiBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDIpOworCistLSBmaXJzdCwgY2hl Y2sgYSBuby1vcCBjYXNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIElOREVYIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZh dWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOworUkVJTkRFWCAoVEFCTEVTUEFD RSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzI7CitSRUlO REVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9w dDsKKworLS0gY2hlY2sgdGhhdCBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UgaXMgdHJh bnNhY3Rpb25hbAorQkVHSU47CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Up IElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAoVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOworUk9M TEJBQ0s7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNl PShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3Ri bHNwYWNlJyk7CisKKy0tIHJlaW5kZXggYW5kIG1vdmUgdGhlIGVudGlyZSBkYXRhYmFzZSwgYWZ0 ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGluZyBiYWNrCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jl c3NfdGJsc3BhY2UpIERBVEFCQVNFIHJlZ3Jlc3Npb247IC0tIG9rIHdpdGggd2FybmluZworUkVJ TkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3 aXRoIHdhcm5pbmcKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxl c3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jl c3NfdGJsc3BhY2UnKTsKKworLS0gcGFydGl0aW9uZWQgaW5kZXhlcyBhcmUgbm90IGRpcmVjdGx5 IHJlaW5kZXhlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gc2V0IHByb3BlcgorLS0gdGFibGVzcGFj ZSBpbiBwZ19jbGFzcyBmb3IgdGhlbQorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0tIG9rCitSRUlOREVYIChUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9p ZHhfMTsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVgg cmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yOyAtLSBvaworU0VMRUNUIHJlbG5hbWUgRlJP TSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxl c3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCistLSBpbmRleGVzIGZv ciBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCBpbiB0aGUgbmV3IHRhYmxlc3BhY2UK K0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMgorICBQQVJUSVRJT04gT0Yg cmVncmVzc190YmxzcGFjZV90ZXN0X3B0CisgIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCBy ZW1haW5kZXIgMSk7CitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfMQor ICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzEKKyAgRk9SIFZBTFVFUyBX SVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAwKTsKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xh c3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdI RVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gY2hlY2sgUkVJTkRFWCB3aXRo IFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Up IElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBvaworUkVJTkRFWCAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs OyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19h dXRoaWQ7IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgU1lT VEVNIENPTkNVUlJFTlRMWSBwb3N0Z3JlczsgLS0gZmFpbAorUkVJTkRFWCAoVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05DVVJSRU5UTFkgcGdfYW07IC0tIGZhaWwKK1JFSU5E RVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs X2lkeDsgLS0gZmFpbAorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJM RSBwZ19hbTsgLS0gZmFpbAorCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgdG8g bmV3IHRhYmxlc3BhY2UKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRh Ymxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3Jl Z3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkgcmVsbmFtZTsKKworQ1JFQVRFIFRFTVAgVEFCTEUg b2xkX3JlaW5kZXhfaW5mbyBBUyBTRUxFQ1QgcmVsbmFtZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19j bGFzcworV0hFUkUgcmVsbmFtZSBJTiAoU0VMRUNUIHJlbGlkOjpuYW1lIEZST00gcGdfcGFydGl0 aW9uX3RyZWUoJ3JlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMSc6OnJlZ2NsYXNzKSBXSEVS RSBpc2xlYWYgPSB0cnVlKTsKK0lOU0VSVCBJTlRPIG9sZF9yZWluZGV4X2luZm8gU0VMRUNUIHJl bG5hbWUsIHJlbGZpbGVub2RlIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWUgSU4gKFNFTEVD VCByZWxpZDo6bmFtZSBGUk9NIHBnX3BhcnRpdGlvbl90cmVlKCdyZWdyZXNzX3RibHNwYWNlX3Rl c3RfcHRfaWR4XzInOjpyZWdjbGFzcykgV0hFUkUgaXNsZWFmID0gdHJ1ZSk7CitJTlNFUlQgSU5U TyBvbGRfcmVpbmRleF9pbmZvIFNFTEVDVCByZWxuYW1lLCByZWxmaWxlbm9kZSBGUk9NIHBnX2Ns YXNzCitXSEVSRSByZWxuYW1lID0gJ3JlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4JzsKKwor LS0gbW92ZSBpbmRleGVzIGJhY2sgdG8gcGdfZGVmYXVsdCB0YWJsZXNwYWNlCitSRUlOREVYIChU QUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIENPTkNVUlJFTlRMWSByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0tIG9rCisKKy0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0 aW9ucyBtb3ZlZCBiYWNrIHRvIHBnX2RlZmF1bHQKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xh c3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdI RVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworQ1JFQVRFIFRFTVAgVEFCTEUgbmV3 X3JlaW5kZXhfaW5mbyBBUyBTRUxFQ1QgcmVsbmFtZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19jbGFz cworV0hFUkUgcmVsbmFtZSBJTiAoU0VMRUNUIHJlbGlkOjpuYW1lIEZST00gcGdfcGFydGl0aW9u X3RyZWUoJ3JlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMSc6OnJlZ2NsYXNzKSBXSEVSRSBp c2xlYWYgPSB0cnVlKTsKK0lOU0VSVCBJTlRPIG5ld19yZWluZGV4X2luZm8gU0VMRUNUIHJlbG5h bWUsIHJlbGZpbGVub2RlIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWUgSU4gKFNFTEVDVCBy ZWxpZDo6bmFtZSBGUk9NIHBnX3BhcnRpdGlvbl90cmVlKCdyZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHRfaWR4XzInOjpyZWdjbGFzcykgV0hFUkUgaXNsZWFmID0gdHJ1ZSk7CitJTlNFUlQgSU5UTyBu ZXdfcmVpbmRleF9pbmZvIFNFTEVDVCByZWxuYW1lLCByZWxmaWxlbm9kZSBGUk9NIHBnX2NsYXNz CitXSEVSRSByZWxuYW1lID0gJ3JlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4JzsKKworU0VM RUNUICogRlJPTSBuZXdfcmVpbmRleF9pbmZvIEpPSU4gb2xkX3JlaW5kZXhfaW5mbyBPTiBuZXdf cmVpbmRleF9pbmZvLnJlbG5hbWUgPSBvbGRfcmVpbmRleF9pbmZvLnJlbG5hbWUKK1dIRVJFIG5l d19yZWluZGV4X2luZm8ucmVsZmlsZW5vZGUgPSBvbGRfcmVpbmRleF9pbmZvLnJlbGZpbGVub2Rl OworCiAtLSBjcmVhdGUgYSBzY2hlbWEgd2UgY2FuIHVzZQogQ1JFQVRFIFNDSEVNQSB0ZXN0c2No ZW1hOwogCkBAIC05Niw2ICsxODcsMTQgQEAgU0VMRUNUIHJlbG5hbWUsIHNwY25hbWUgRlJPTSBw Z19jYXRhbG9nLnBnX3RhYmxlc3BhY2UgdCwgcGdfY2F0YWxvZy5wZ19jbGFzcyBjCiBcZCB0ZXN0 c2NoZW1hLnBhcnRfYV9pZHgKIFxkKyB0ZXN0c2NoZW1hLnBhcnRfYV9pZHgKIAorLS0gUkVJTkRF WCBwYXJ0aXRpb25lZCBpbmRleGVzIHRvIG5ldyB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQ QUNFIHBnX2RlZmF1bHQpIFRBQkxFIHRlc3RzY2hlbWEucGFydDsKK1xkIHRlc3RzY2hlbWEucGFy dAorXGQgdGVzdHNjaGVtYS5wYXJ0MQorUkVJTkRFWCAoQ09OQ1VSUkVOVExZLCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHRlc3RzY2hlbWEucGFydF9hX2lkeDsKK1xkIHRlc3Rz Y2hlbWEucGFydAorXGQgdGVzdHNjaGVtYS5wYXJ0MQorCiAtLSBwYXJ0aXRpb25lZCByZWxzIGNh bm5vdCBzcGVjaWZ5IHRoZSBkZWZhdWx0IHRhYmxlc3BhY2UuICBUaGVzZSBmYWlsOgogQ1JFQVRF IFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAoYSBpbnQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBM SVNUIChhKSBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5k Zmx0IChhIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQp IFBBUlRJVElPTiBCWSBMSVNUIChhKTsKQEAgLTI2OCw2ICszNjcsMTAgQEAgQUxURVIgVEFCTEUg dGVzdHNjaGVtYS50YWJsZXNwYWNlX2FjbCBPV05FUiBUTyByZWdyZXNzX3RhYmxlc3BhY2VfdXNl cjI7CiAKIFNFVCBTRVNTSU9OIFJPTEUgcmVncmVzc190YWJsZXNwYWNlX3VzZXIyOwogQ1JFQVRF IFRBQkxFIHRhYmxlc3BhY2VfdGFibGUgKGkgaW50KSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2U7IC0tIGZhaWwKKworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJM RSBDT05DVVJSRU5UTFkgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0gZmFpbAorUkVJTkRF WCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rl c3RfcHRfaWR4OyAtLSBmYWlsCisKIEFMVEVSIFRBQkxFIHRlc3RzY2hlbWEudGFibGVzcGFjZV9h Y2wgQUxURVIgYyBUWVBFIGJpZ2ludDsKIFJFU0VUIFJPTEU7CiAKQEAgLTI4Miw2ICszODUsOSBA QCBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQg U0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdAogLS0gU2hvdWxkIHN1Y2NlZWQKIERST1AgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CiAKK0RST1AgVEFCTEUgcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibDsKK0RST1AgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0OworCiBE Uk9QIFNDSEVNQSB0ZXN0c2NoZW1hIENBU0NBREU7CiAKIERST1AgUk9MRSByZWdyZXNzX3RhYmxl c3BhY2VfdXNlcjE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNw YWNlLnNvdXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCmlu ZGV4IDk0YzVmMDIzYzYuLmI3YTkwMTYwNTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv b3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3Rh Ymxlc3BhY2Uuc291cmNlCkBAIC0yMCw2ICsyMCwxNDAgQEAgRVJST1I6ICB1bnJlY29nbml6ZWQg cGFyYW1ldGVyICJzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRlciIKIEFMVEVSIFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCA9IDIuMCk7IC0tIGZhaWwK IEVSUk9SOiAgUkVTRVQgbXVzdCBub3QgaW5jbHVkZSB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMKIEFM VEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCwg ZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKKy0tIGNyZWF0ZSB0YWJsZSAod2l0aCBU T0FTVCkgdG8gdGVzdCBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK0NSRUFURSBUQUJM RSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xIGJpZ2ludCwgbnVtMiBkb3VibGUgcHJl Y2lzaW9uLCB0IHRleHQpOworSU5TRVJUIElOVE8gcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAo bnVtMSwgbnVtMiwgdCkKKyAgU0VMRUNUIHJvdW5kKHJhbmRvbSgpKjEwMCksIHJhbmRvbSgpLCAn dGV4dCcKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIHMoaSk7CitDUkVBVEUgSU5ERVgg cmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggT04gcmVncmVzc190YmxzcGFjZV90ZXN0X3Ri bCAobnVtMSk7CitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0KGNvbDEgaW50 LCBjb2wyIGludCkgUEFSVElUSU9OIEJZIEhBU0ggKGNvbDEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF9wdF8xCisgIFBBUlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rl c3RfcHQKKyAgRk9SIFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAwKQorICBQQVJU SVRJT04gQlkgSEFTSCAoY29sMik7CitDUkVBVEUgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0 X3B0X2lkeF8xIE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdCAoY29sMSk7CitDUkVBVEUgSU5E RVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yIE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF9wdCAoY29sMik7CistLSBmaXJzdCwgY2hlY2sgYSBuby1vcCBjYXNlCitSRUlOREVYIChUQUJM RVNQQUNFIHBnX2RlZmF1bHQpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4Owor UkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rl c3RfdGJsOworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHRfaWR4XzI7CitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRB QkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdDsKKy0tIGNoZWNrIHRoYXQgUkVJTkRFWCB3aXRo IFRBQkxFU1BBQ0UgY2hhbmdlIGlzIHRyYW5zYWN0aW9uYWwKK0JFR0lOOworUkVJTkRFWCAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs X2lkeDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcmVncmVz c190YmxzcGFjZV90ZXN0X3RibDsKK1JPTExCQUNLOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19j bGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2Ug V0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIHJlaW5kZXggYW5kIG1vdmUgdGhlIGVudGlyZSBkYXRhYmFzZSwgYWZ0 ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGluZyBiYWNrCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jl c3NfdGJsc3BhY2UpIERBVEFCQVNFIHJlZ3Jlc3Npb247IC0tIG9rIHdpdGggd2FybmluZworV0FS TklORzogIGNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIG9uIHN5c3RlbSByZWxh dGlvbnMsIHNraXBwaW5nIGFsbAorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBEQVRB QkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5pbmcKK1dBUk5JTkc6ICBjYW5ub3QgY2hh bmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBzeXN0ZW0gcmVsYXRpb25zLCBza2lwcGluZyBh bGwKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNF TEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3Bh Y2UnKTsKKyByZWxuYW1lIAorLS0tLS0tLS0tCisoMCByb3dzKQorCistLSBwYXJ0aXRpb25lZCBp bmRleGVzIGFyZSBub3QgZGlyZWN0bHkgcmVpbmRleGVkLCBidXQgd2Ugc3RpbGwgaGF2ZSB0byBz ZXQgcHJvcGVyCistLSB0YWJsZXNwYWNlIGluIHBnX2NsYXNzIGZvciB0aGVtCitSRUlOREVYIChU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9w dDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVn cmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8xOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzI7IC0t IG9rCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShT RUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNw YWNlJyk7CisgICAgICAgICAgICAgICByZWxuYW1lICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lk eF8xCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yCisgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0XzFfY29sMV9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV9jb2wyX2lkeAor KDQgcm93cykKKworLS0gaW5kZXhlcyBmb3IgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0 ZWQgaW4gdGhlIG5ldyB0YWJsZXNwYWNlCitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0XzIKKyAgUEFSVElUSU9OIE9GIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdAorICBGT1Ig VkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVyIDEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF9wdF8xXzEKKyAgUEFSVElUSU9OIE9GIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF9wdF8xCisgIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCk7CitT RUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qg b2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7 CisgICAgICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhf MQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMgorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF9wdF8yX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzJfY29sMl9pZHgKKyBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0XzFfY29sMV9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV8xX2NvbDJfaWR4 CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfY29sMl9pZHgKKyg4IHJvd3MpCisKKy0tIGNo ZWNrIFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0g b2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSkgVEFCTEUgcGdfYXV0aGlkOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCBtb3ZlIHN5c3Rl bSByZWxhdGlvbiAicGdfYXV0aGlkX3JvbG5hbWVfaW5kZXgiCitSRUlOREVYIChUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UpIFNZU1RFTSBDT05DVVJSRU5UTFkgcG9zdGdyZXM7IC0tIGZhaWwK K0VSUk9SOiAgY2Fubm90IHJlaW5kZXggc3lzdGVtIGNhdGFsb2dzIGNvbmN1cnJlbnRseQorUkVJ TkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05DVVJSRU5UTFkgcGdf YW07IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IHJlaW5kZXggc3lzdGVtIGNhdGFsb2dzIGNvbmN1 cnJlbnRseQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19nbG9iYWwpIElOREVYIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90YmxfaWR4OyAtLSBmYWlsCitFUlJPUjogIG9ubHkgc2hhcmVkIHJlbGF0aW9u cyBjYW4gYmUgcGxhY2VkIGluIHBnX2dsb2JhbCB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHBnX2FtOyAtLSBmYWlsCitFUlJPUjogIHBlcm1p c3Npb24gZGVuaWVkOiAicGdfYW1fbmFtZV9pbmRleCIgaXMgYSBzeXN0ZW0gY2F0YWxvZworLS0g Y2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1Qg cmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZS T00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVS IEJZIHJlbG5hbWU7CisgICAgICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF9wdF8xXzFfY29sMV9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV8xX2NvbDJf aWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfY29sMV9pZHgKKyByZWdyZXNzX3RibHNw YWNlX3Rlc3RfcHRfMV9jb2wyX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDFf aWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzJfY29sMl9pZHgKKyByZWdyZXNzX3RibHNw YWNlX3Rlc3RfcHRfaWR4XzEKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzIKKyByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeAorKDkgcm93cykKKworQ1JFQVRFIFRFTVAgVEFCTEUg b2xkX3JlaW5kZXhfaW5mbyBBUyBTRUxFQ1QgcmVsbmFtZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19j bGFzcworV0hFUkUgcmVsbmFtZSBJTiAoU0VMRUNUIHJlbGlkOjpuYW1lIEZST00gcGdfcGFydGl0 aW9uX3RyZWUoJ3JlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMSc6OnJlZ2NsYXNzKSBXSEVS RSBpc2xlYWYgPSB0cnVlKTsKK0lOU0VSVCBJTlRPIG9sZF9yZWluZGV4X2luZm8gU0VMRUNUIHJl bG5hbWUsIHJlbGZpbGVub2RlIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWUgSU4gKFNFTEVD VCByZWxpZDo6bmFtZSBGUk9NIHBnX3BhcnRpdGlvbl90cmVlKCdyZWdyZXNzX3RibHNwYWNlX3Rl c3RfcHRfaWR4XzInOjpyZWdjbGFzcykgV0hFUkUgaXNsZWFmID0gdHJ1ZSk7CitJTlNFUlQgSU5U TyBvbGRfcmVpbmRleF9pbmZvIFNFTEVDVCByZWxuYW1lLCByZWxmaWxlbm9kZSBGUk9NIHBnX2Ns YXNzCitXSEVSRSByZWxuYW1lID0gJ3JlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4JzsKKy0t IG1vdmUgaW5kZXhlcyBiYWNrIHRvIHBnX2RlZmF1bHQgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFC TEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSBDT05DVVJSRU5UTFkgcmVncmVzc190YmxzcGFjZV90 ZXN0X3RibDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgcmVn cmVzc190YmxzcGFjZV90ZXN0X3B0OyAtLSBvaworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25z IG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcwor V0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUg c3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJv d3MpCisKK0NSRUFURSBURU1QIFRBQkxFIG5ld19yZWluZGV4X2luZm8gQVMgU0VMRUNUIHJlbG5h bWUsIHJlbGZpbGVub2RlIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWUgSU4gKFNFTEVDVCBy ZWxpZDo6bmFtZSBGUk9NIHBnX3BhcnRpdGlvbl90cmVlKCdyZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHRfaWR4XzEnOjpyZWdjbGFzcykgV0hFUkUgaXNsZWFmID0gdHJ1ZSk7CitJTlNFUlQgSU5UTyBu ZXdfcmVpbmRleF9pbmZvIFNFTEVDVCByZWxuYW1lLCByZWxmaWxlbm9kZSBGUk9NIHBnX2NsYXNz CitXSEVSRSByZWxuYW1lIElOIChTRUxFQ1QgcmVsaWQ6Om5hbWUgRlJPTSBwZ19wYXJ0aXRpb25f dHJlZSgncmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yJzo6cmVnY2xhc3MpIFdIRVJFIGlz bGVhZiA9IHRydWUpOworSU5TRVJUIElOVE8gbmV3X3JlaW5kZXhfaW5mbyBTRUxFQ1QgcmVsbmFt ZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsbmFtZSA9ICdyZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsX2lkeCc7CitTRUxFQ1QgKiBGUk9NIG5ld19yZWluZGV4X2luZm8gSk9J TiBvbGRfcmVpbmRleF9pbmZvIE9OIG5ld19yZWluZGV4X2luZm8ucmVsbmFtZSA9IG9sZF9yZWlu ZGV4X2luZm8ucmVsbmFtZQorV0hFUkUgbmV3X3JlaW5kZXhfaW5mby5yZWxmaWxlbm9kZSA9IG9s ZF9yZWluZGV4X2luZm8ucmVsZmlsZW5vZGU7CisgcmVsbmFtZSB8IHJlbGZpbGVub2RlIHwgcmVs bmFtZSB8IHJlbGZpbGVub2RlIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKygwIHJvd3MpCisKIC0tIGNyZWF0ZSBhIHNjaGVtYSB3ZSBjYW4gdXNlCiBD UkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAtLSB0cnkgYSB0YWJsZQpAQCAtMTk5LDYgKzMzMyw0 NyBAQCBQYXJ0aXRpb25zOiB0ZXN0c2NoZW1hLnBhcnQxX2FfaWR4LAogICAgICAgICAgICAgdGVz dHNjaGVtYS5wYXJ0Ml9hX2lkeAogVGFibGVzcGFjZTogInJlZ3Jlc3NfdGJsc3BhY2UiCiAKKy0t IFJFSU5ERVggcGFydGl0aW9uZWQgaW5kZXhlcyB0byBuZXcgdGFibGVzcGFjZQorUkVJTkRFWCAo VEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSB0ZXN0c2NoZW1hLnBhcnQ7CitcZCB0ZXN0c2No ZW1hLnBhcnQKKyAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInRlc3RzY2hlbWEucGFydCIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBMSVNUIChh KQorSW5kZXhlczoKKyAgICAicGFydF9hX2lkeCIgYnRyZWUgKGEpCitOdW1iZXIgb2YgcGFydGl0 aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCB0ZXN0c2NoZW1hLnBhcnQxCisg ICAgICAgICAgICAgVGFibGUgInRlc3RzY2hlbWEucGFydDEiCisgQ29sdW1uIHwgIFR5cGUgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZXN0c2NoZW1hLnBhcnQgRk9SIFZBTFVF UyBJTiAoMSkKK0luZGV4ZXM6CisgICAgInBhcnQxX2FfaWR4IiBidHJlZSAoYSkKKworUkVJTkRF WCAoQ09OQ1VSUkVOVExZLCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHRlc3Rz Y2hlbWEucGFydF9hX2lkeDsKK1xkIHRlc3RzY2hlbWEucGFydAorICAgICAgICBQYXJ0aXRpb25l ZCB0YWJsZSAidGVzdHNjaGVtYS5wYXJ0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKK1BhcnRpdGlvbiBrZXk6IExJU1QgKGEpCitJbmRleGVzOgorICAgICJwYXJ0X2FfaWR4 IiBidHJlZSAoYSksIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2UiCitOdW1iZXIgb2YgcGFy dGl0aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCB0ZXN0c2NoZW1hLnBhcnQx CisgICAgICAgICAgICAgVGFibGUgInRlc3RzY2hlbWEucGFydDEiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZXN0c2NoZW1hLnBhcnQgRk9SIFZB TFVFUyBJTiAoMSkKK0luZGV4ZXM6CisgICAgInBhcnQxX2FfaWR4IiBidHJlZSAoYSksIHRhYmxl c3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2UiCisKIC0tIHBhcnRpdGlvbmVkIHJlbHMgY2Fubm90IHNw ZWNpZnkgdGhlIGRlZmF1bHQgdGFibGVzcGFjZS4gIFRoZXNlIGZhaWw6CiBDUkVBVEUgVEFCTEUg dGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIExJU1QgKGEp IFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgZGVmYXVsdCB0 YWJsZXNwYWNlIGZvciBwYXJ0aXRpb25lZCByZWxhdGlvbnMKQEAgLTczMSw2ICs5MDYsMTAgQEAg QUxURVIgVEFCTEUgdGVzdHNjaGVtYS50YWJsZXNwYWNlX2FjbCBPV05FUiBUTyByZWdyZXNzX3Rh Ymxlc3BhY2VfdXNlcjI7CiBTRVQgU0VTU0lPTiBST0xFIHJlZ3Jlc3NfdGFibGVzcGFjZV91c2Vy MjsKIENSRUFURSBUQUJMRSB0YWJsZXNwYWNlX3RhYmxlIChpIGludCkgVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlOyAtLSBmYWlsCiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciB0YWJs ZXNwYWNlIHJlZ3Jlc3NfdGJsc3BhY2UKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSkgVEFCTEUgQ09OQ1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIGZh aWwKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlc3BhY2UgcmVncmVzc190Ymxz cGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNz X3RibHNwYWNlX3Rlc3RfcHRfaWR4OyAtLSBmYWlsCitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVk IGZvciB0YWJsZXNwYWNlIHJlZ3Jlc3NfdGJsc3BhY2UKIEFMVEVSIFRBQkxFIHRlc3RzY2hlbWEu dGFibGVzcGFjZV9hY2wgQUxURVIgYyBUWVBFIGJpZ2ludDsKIFJFU0VUIFJPTEU7CiBBTFRFUiBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVOQU1FIFRPIHJlZ3Jlc3NfdGJsc3BhY2VfcmVu YW1lZDsKQEAgLTc0MSw2ICs5MjAsOCBAQCBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdAogTk9USUNF OiAgbm8gbWF0Y2hpbmcgcmVsYXRpb25zIGluIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2Vf cmVuYW1lZCIgZm91bmQKIC0tIFNob3VsZCBzdWNjZWVkCiBEUk9QIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZV9yZW5hbWVkOworRFJPUCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs OworRFJPUCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7CiBEUk9QIFNDSEVNQSB0ZXN0 c2NoZW1hIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDYgb3RoZXIgb2JqZWN0 cwogREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB0ZXN0c2NoZW1hLmZvbwoKYmFzZS1j b21taXQ6IGU0MmIzYzNiZDZhOWM2MjMzYWM0YzhhMmU5YjA0MDM2N2JhMmY5N2MKLS0gCjIuMjAu MQoK --=_384eda54edbdb57c5df13628a06a4985--