Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuP6o-002iHH-2f for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Feb 2026 06:07:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vuP6m-00Bzv7-1u for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Feb 2026 06:07:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vuP6l-00Bzux-1t for pgsql-hackers@lists.postgresql.org; Mon, 23 Feb 2026 06:07:52 +0000 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vuP6h-00000000kkY-2wsA for pgsql-hackers@lists.postgresql.org; Mon, 23 Feb 2026 06:07:50 +0000 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7d4bc9e48bbso1459961a34.2 for ; Sun, 22 Feb 2026 22:07:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771826868; cv=none; d=google.com; s=arc-20240605; b=Jw/fR9bZ1TKScbBRPS8XWivDctL6FBxP1vHpjiduUMHayZTwE3FeGRZYR4cNvxdfFe GwdiAPdId1NglsZi9FMLBK5xrdVVgDskroWRbktF+lcW2K4/SBx5hsnNSR94qKLFJFTd u9rOCau5e4s18TfBgVOUdh7BzlTCLjWI4Qnu0dG9COjCq+ZmB0qI8cs1/z3EWZxDQWsT du0R53/MYaCoy4oraWStYDjb4iA1QC4LMXYhz8L1I5G63bfiyT+mtXW/1fxE6B7nxkZF ioFVEXfxyN64W0IVvAilgOWIEuxixU5EhxfvtQHv4mfU2ZSKA+dtVQzO0dvfKN4LNmE7 666g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=vj+cJXUEX4P8NS0m+vHOD3T19aTvafJCwTzxkWnrO1A=; fh=jfluSJmXxdIIYDbkGc6qskDVjiyQzXjMin+0DJJJOKM=; b=DWB/z1J5XrMt+L4lqn8MVYiqS/pZjUJhMVXXsMTxbVuv3Kl9U/D/IW9UhNxGT6+3ev MiykgvdNcKvpw4Yb23794JJi/LmPWulOAU2Y4Y4e57CUPmbx3TFRM3P4luoUxfULFORz 6l8LSRyZAKTR8QDp/GCu/iFRBNpqqZDySaOUMHOB4FqjvUsk/Rnkyc+c8LDuN/IFba4N QBZxvsZXhjXZbmsnwHeUPGnPy2e4CYgCO0sRjrAGupMWrWP9CmwZFjUCDBdVjFnw6gck H+YvBjSJ39eS7Wj+Iuys4df9rWKf0f7j0fqJYiUUS2Zv8xNnEEgm6fn4GcfxS48Fkcu6 GVHA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771826868; x=1772431668; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vj+cJXUEX4P8NS0m+vHOD3T19aTvafJCwTzxkWnrO1A=; b=PpyiOTrPaMQf5m/7we+EBQjQLGCDGdD3IOgqcg8i5NuHfVCZX0u7ochPlbTsmNShBC t1trVErapj3TjsVJxz6KGdpKVcJfVTyPmIa3XBuy8v9PTPWS2Ne1TPWn2VTCDAE8RoK1 8XtX5iQnygmwuHr/P87idgAs2heGeHQB1/qHN+v1BUYsfkluJ9uLfVw0z9DGSi+jvchf 38sS0CyffMsxfAMNIumzLzW14qphWOEivoQoZ8PG9Ss9+jqZvwX4C08bynThcVSlf9hr xRnHpppSVe5FydZPcqqZ1MHk5wigSP1KkDWvxV71y8uUtvWOuxGqNZYGKszgLNW0FWaD YoRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771826868; x=1772431668; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vj+cJXUEX4P8NS0m+vHOD3T19aTvafJCwTzxkWnrO1A=; b=MLQn3mKyRaFu06jTgSQKVNEhpwoJAQfa97fmFy1XUTTsSbz1DS3MVsfrqbx78S4hsq 4oocmm4E8LgRy9k3vFwQsFnjhyE2yKtAH5okRmhX2x9sghfyNdXKySSsnov4rbEjmQQc l2i5WN+idpaBkA4Wd56DziicOmjoUpNz+3JHrIsj4pDWJGzFNuuG+uM+NoZvc7NvmSwe fGxXVcqbc88/klHMGAlevGvo55mqfoZd/7xYLDjV7UW/UQusfwKs13KP0lDa5SdHhHkB 7Q7+lnjMrCTNOu6KqZkcETAzFTWD1v7bLarpjKGQT/uxyTKili8Qb0rXfsycXHnoBT4r R1lw== X-Forwarded-Encrypted: i=1; AJvYcCX5+1hwSLLFvkc6fpFFKJlE00dUa1ZfC4M84I9Jx81HTAF7rcx7R+kxuDX65RElytT9BNMPW+frqGF16vh3@lists.postgresql.org X-Gm-Message-State: AOJu0YysoCvpwMK6IBe2eIJ5B5sQlp6qPHzfA/usnzHvw6K7Nu2sjQWt Fh5FbFQheDHy1JJFCxmHQXFDHtYV4GnQ4qK6hDm4coJ/SabE0YTsyiwnW4pA51joqXVFBgmTwvS xijNodVLQd4+u4K76SjcXNs9R6ukFKC4= X-Gm-Gg: AZuq6aLriFr4+DThKOcW6klJVs4pPNBUgPSKK1mr8ImVKUa4W2JSUK9KX8rLzJb4HPx OvdI8fV+LHnqqT2JqczqHd9RNjvu64Tb8SkomXQFfA3NAVebBldOnou7EuZLwtHvZFh88XXGzys xR73HD6R/aI7A/+KTkidh6Ve/idOji7CQcKTNRSWt8f4ornek/4kAFQ0cxG6MUbiP3+8mZV4eXi kVnQjSh6Ah/u7ny7UTn01O1inBH+hmkNrlIP7B4X6kUZgqv+WsAMXQ3+gUp1vlk5Xya0WOYvmUb ZrZV1joFzA== X-Received: by 2002:a05:6820:2914:b0:674:3230:ff1b with SMTP id 006d021491bc7-679c424c9f8mr4149257eaf.9.1771826868046; Sun, 22 Feb 2026 22:07:48 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Mon, 23 Feb 2026 11:37:35 +0530 X-Gm-Features: AaiRm5299U92kjS0YtwRAlFMHoswRMhKZaPV3TuyhcLU_4_0GuTiDV10cp83Y9Y Message-ID: Subject: Re: Skipping schema changes in publication To: Ashutosh Sharma Cc: vignesh C , Amit Kapila , shveta malik , "David G. Johnston" , Dilip Kumar , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000013099b064b7797e7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000013099b064b7797e7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 20 Feb 2026 at 18:17, Ashutosh Sharma wrote= : > > Hi, > > On Fri, Feb 20, 2026 at 2:08=E2=80=AFPM vignesh C w= rote: > > > > On Thu, 19 Feb 2026 at 16:06, Amit Kapila wro= te: > > > > > > On Thu, Feb 19, 2026 at 10:13=E2=80=AFAM Shlok Kyal wrote: > > > > > > > > Thanks for reviewing the patch. I have addressed the remaining > > > > comments in the v46 patch.. > > > > > > > > > > Can we think of some ideas to split this patch? One possibility is > > > that in the first patch we give an ERROR, if a non-root partitioned > > > table is present in EXCEPT Clause. I see that a lot of code is writte= n > > > to handle partitions in EXCEPT clause. I feel such a split will make > > > code easier to review and validate. > > > > Split it accordingly. > > > > > Few other comments: > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > 1. > > > if (stmt->for_all_tables) > > > { > > > + /* Process EXCEPT table list */ > > > + if (relations !=3D NIL) > > > + { > > > + Assert(rels !=3D NIL); > > > + PublicationAddTables(puboid, rels, true, NULL); > > > + } > > > + > > > /* > > > * Invalidate relcache so that publication info is rebuilt. Sequence= s > > > * publication doesn't require invalidation, as replica identity > > > CacheInvalidateRelcacheAll(); > > > > > > Here, the relations listed in the except table list will be > > > invalidated twice, once inside > > > PublicationAddTables->publication_add_relation, and second time via > > > CacheInvalidateRelcacheAll. Can we avoid that by adding a parameter t= o > > > PublicationAddTables? > > > > Fixed this > > > > > 2. > > > - root_relids =3D GetPublicationRelations(pubform->oid, > > > - PUBLICATION_PART_ROOT); > > > + root_relids =3D GetIncludedRelationsByPub(pubform->oid, > > > + PUBLICATION_PART_ROOT); > > > > > > To follow the previous function naming pattern, can we rename > > > GetIncludedRelationsByPub to GetIncludedPublicationRelations? If we > > > agree to this then rename the excluded version of the function as > > > well. > > > > Modified > > > > > 3. > > > +/* > > > + * Return the list of relation Oids for a publication. > > > + * > > > + * For a FOR TABLE publication, this returns the list of relations e= xplicitly > > > + * included in the publication. > > > + * > > > + * Publications declared with FOR ALL TABLES/SEQUENCES should use > > > + * GetAllPublicationRelations() to obtain the complete set of tables= /sequences > > > + * covered by the publication. > > > + */ > > > +List * > > > +GetIncludedRelationsByPub(Oid pubid, PublicationPartOpt pub_partopt) > > > > > > This is equivalent to the existing function GetPublicationRelations() > > > which has more precise comments atop. We can use the same comments > > > unless there is any functionality difference. > > > > Updated it > > > > > 4. > > > --- a/src/backend/catalog/pg_publication.c > > > +++ b/src/backend/catalog/pg_publication.c > > > @@ -29,6 +29,7 @@ > > > #include "catalog/pg_publication.h" > > > #include "catalog/pg_publication_namespace.h" > > > #include "catalog/pg_publication_rel.h" > > > +#include "catalog/pg_subscription.h" > > > > > > It appears odd to include pg_subscription.h in the publication code. > > > Is there a reason for the same? If not then avoid it. > > > > This was required because we now started using GetPublicationsStr. I > > have moved GetPublicationsStr to logical.c from pg_subscription which > > is common to both pub and sub. > > > > > Apart from above, a few cosmetic changes are attached. > > > > Merged them. > > > > The attached v47 version patch has the changes for the same. > > > > SIGABRT with normal tables: > -------------------------------------- > > ashutosh@test=3D# select > pg_get_publication_effective_tables('t1'::regclass, > '{all_pub}'::text[]); > server closed the connection unexpectedly > This probably means the server terminated abnormally > before or while processing the request. > The connection to the server was lost. Attempting reset: Failed. > > Since the function is user-facing, I think we should have test coverage f= or it. > Hi Ashutosh, Thanks for reviewing the patch. We have fixed this issue. This function is not user facing. We have a similar function 'pg_get_publication_tables'. We do not have documentation and test coverage for this function. I think 'pg_get_publication_effective_tables' is a similar function, so we should not add documentation or tests for it. We have also addressed the comments in [1]. I have also done minor code and comment modifications I have also modified the error message as suggested by Shveta in [2]. Attached the latest v48 patch. [1]: https://www.postgresql.org/message-id/CAE9k0P=3DSfawUYBoSmK9Zxwey774OJ= w5g4Gb7+fA3CQ22j83a7Q@mail.gmail.com [2]: https://www.postgresql.org/message-id/CAJpy0uAHr8=3DYUKSyEBs8G4P0zGGb6= mcUr-YJdB56tdYMF9yoKA@mail.gmail.com Thanks, Shlok Kyal --00000000000013099b064b7797e7 Content-Type: application/octet-stream; name="v48-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v48-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlyrooaj0 RnJvbSAxMzBlMmE0NDg0MTZkMzkyM2U3OGIzZTMyMTI5NDRkMzdhYjRkNDgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMTkgRmViIDIwMjYgMjA6MTY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0OCAxLzJd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURSBQVUJMSUNBVElPTiBhbGxvd3Mg b25lIG9yIG1vcmUKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyIHdpbGwgbm90 IHNlbmQgdGhlIGRhdGEgb2YgZXhjbHVkZWQKdGFibGVzIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhl IG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRpb25zIHdoZW4gY3Jl YXRpbmcgYQpwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4 Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhl IHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGlj YXRpb25zLgoKT25seSByb290IHBhcnRpdGlvbmVkIHRhYmxlcyBjYW4gYmUgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlLgpTcGVjaWZ5aW5nIGEgcm9vdCBwYXJ0aXRpb25lZCB0 YWJsZSBleGNsdWRlcyBhbGwgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8KdGhhdCBwYXJ0aXRpb24g aGllcmFyY2h5IGZyb20gcHVibGljYXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwgICAgICAgICB8ICAgNiArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCAgICAgIHwgIDYxICsrKy0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYu c2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jICAgICAgICAgIHwgMjIwICsrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgMzEgLS0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8ICA1MyArKystCiBzcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAxMTMgKysrKysrKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDEgKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyAgICAgfCAgMzEgKysKIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAgNDcgKystCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMjEgKy0KIHNyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICA2OCArKysrKwogc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8ICAzMCArKwogc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKysrLQogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICAgfCAgMTggKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb25fcmVsLmggICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oICAgICAgICAgfCAgIDMgLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FsLmggICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQgICAgIHwgMTIyICsrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgNjAgKysrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzN19yZXBfY2hhbmdl c19leGNlcHRfdGFibGUucGwgICAgICAgICB8IDI3NiArKysrKysrKysrKysrKysrKysKIDI4IGZp bGVzIGNoYW5nZWQsIDExNzYgaW5zZXJ0aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNl cHRfdGFibGUucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGU3MDY3Yzg0ZWNlLi42OTU4ODkzNzcxOSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKQEAgLTY1NzIsNiArNjU3MiwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBs YWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJs ZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRy dWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNl cHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+LgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgogICAgICAgPHN0cnVjdGZpZWxkPnBycXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25vZGVf dHJlZTwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDUwMjhm ZTlhZjA5Li5iY2I0NzNjMDc4YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CkBAIC0xMTYsNyArMTE2LDExIEBACiAgICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwv bGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwKICAgIG9yIDxsaXRl cmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPi4gVW5saWtlIHRhYmxlcywgc2VxdWVuY2Vz IGNhbiBiZQogICAgc3luY2hyb25pemVkIGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlv biwgc2VlCi0gICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIv Pi4KKyAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+LiBX aGVuIGEgcHVibGljYXRpb24gaXMKKyAgIGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRB QkxFUzwvbGl0ZXJhbD4sIGEgdGFibGUgb3Igc2V0IG9mIHRhYmxlcyBjYW4KKyAgIGJlIGV4cGxp Y2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtl bmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVy YWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4KKyAgIGNsYXVzZS4KICAgPC9wYXJhPgog CiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRp b24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXgg NmVmYmI5MTVjZWMuLjIzYmNkYTRhZjJiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1Ymxp Y2F0aW9uLnNnbWwKQEAgLTMyLDEyICszMiwxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPmFu ZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fYWxsX29iamVjdDwv cmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIEFMTCBUQUJMRVMKKyAgICBB TEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCiAgICAg QUxMIFNFUVVFTkNFUwogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogICAgIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0KKworPHBocmFzZT5hbmQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxh Y2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KIDwvc3lub3BzaXM+CiAg PC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTY0LDcgKzE2OCw4IEBAIENSRUFURSBQVUJMSUNBVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAg PGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBhcyBv bmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KLSAgICAgIHRoZSBk YXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuCisgICAgICB0 aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLiBUYWJs ZXMgbGlzdGVkIGluCisgICAgICBFWENFUFQgVEFCTEUgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1 YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgpAQCAtMTg0LDYgKzE4OSw0MSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1Ymxp Y2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj4KKyAgICA8dGVybT48bGl0ZXJhbD5FWENF UFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBiZSBleGNsdWRl ZCBmcm9tIHRoZQorICAgICAgcHVibGljYXRpb24uCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+ CisgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4g aXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgIHRhYmxlIG5hbWUsIG9ubHkgdGhhdCB0YWJs ZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gSWYKKyAgICAgIDxsaXRlcmFsPk9O TFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB0YWJsZSBhbmQgYWxsIGl0cyBkZXNj ZW5kYW50CisgICAgICB0YWJsZXMgKGlmIGFueSkgYXJlIGV4Y2x1ZGVkLiBPcHRpb25hbGx5LCA8 bGl0ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUKKyAgICAgIHNwZWNpZmllZCBhZnRlciB0aGUgdGFi bGUgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudAorICAgICAgdGFi bGVzIGFyZSBleGNsdWRlZC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBw YXJ0aXRpb25lZCB0YWJsZXMsIG9ubHkgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgbWF5IGJl IHNwZWNpZmllZAorICAgICAgaW4gPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPi4gRG9p bmcgc28gZXhjbHVkZXMgdGhlIHJvb3QgdGFibGUgYW5kCisgICAgICBhbGwgb2YgaXRzIHBhcnRp dGlvbnMgZnJvbSByZXBsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YKKyAgICAg IDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPi4gVGhlIG9wdGlv bmFsCisgICAgICA8bGl0ZXJhbD4qPC9saXRlcmFsPiBoYXMgbm8gZWZmZWN0IGZvciBwYXJ0aXRp b25lZCB0YWJsZXMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGVyZSBjYW4g YmUgYSBjYXNlIHdoZXJlIGEgc3Vic2NyaXB0aW9uIGluY2x1ZGVzIG11bHRpcGxlIHB1YmxpY2F0 aW9ucy4KKyAgICAgIEluIHN1Y2ggYSBjYXNlLCBhIHRhYmxlIG9yIHBhcnRpdGlvbiB0aGF0IGlz IGluY2x1ZGVkIGluIG9uZSBwdWJsaWNhdGlvbgorICAgICAgYW5kIGxpc3RlZCBpbiB0aGUgPGxp dGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPiBjbGF1c2Ugb2YgYW5vdGhlciBpcworICAgICAg Y29uc2lkZXJlZCBpbmNsdWRlZCBmb3IgcmVwbGljYXRpb24uCisgICAgIDwvcGFyYT4KKyAgICAg PHBhcmE+CisgICAgICBTdWJzY3JpYmluZyB0byBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgdGhhdCBz cGVjaWZ5CisgICAgICA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGxpc3RzIGlzIG5v dCBzdXBwb3J0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJh bXMtd2l0aCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKTwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtNDg5LDYgKzUyOSwyMyBAQCBDUkVB VEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlcyBGT1IgQUxMIFNFUVVFTkNFUzsKICAgIGFsbCBz ZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbjoKIDxwcm9ncmFtbGlzdGluZz4KIENSRUFURSBQ VUJMSUNBVElPTiBhbGxfdGFibGVzX3NlcXVlbmNlcyBGT1IgQUxMIFRBQkxFUywgQUxMIFNFUVVF TkNFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0 ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGluIGFsbCB0YWJsZXMg ZXhjZXB0CisgICA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1Y3RuYW1l PmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJM SUNBVElPTiBhbGxfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHVzZXJzLCBk ZXBhcnRtZW50cyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2VzIGZvciBz eW5jaHJvbml6YXRpb24sIGFuZAorICAgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQg PHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+ZGVwYXJ0 bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9O IGFsbF9zZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxF UyBFWENFUFQgKHVzZXJzLCBkZXBhcnRtZW50cyk7CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3Bh cmE+CiAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCA4YjFkOTQ4YmEwNS4u MTA0NWJjNmEwMmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKQEAgLTIxMDMsOCArMjEwMyw5IEBA IFNFTEVDVCAkMSBccGFyc2Ugc3RtdDEKICAgICAgICAgbGlzdGVkLgogICAgICAgICBJZiA8bGl0 ZXJhbD54PC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgcmVz dWx0cwogICAgICAgICBhcmUgZGlzcGxheWVkIGluIGV4cGFuZGVkIG1vZGUuCi0gICAgICAgIElm IDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRo ZSB0YWJsZXMgYW5kCi0gICAgICAgIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGlj YXRpb24gYXJlIHNob3duIGFzIHdlbGwuCisgICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+ IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMsCisgICAgICAgIGV4 Y2x1ZGVkIHRhYmxlcywgYW5kIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRp b24gYXJlIHNob3duCisgICAgICAgIGFzIHdlbGwuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jCmluZGV4IDlhNDc5MWM1NzNlLi41Y2Q0YWMxMDhhYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHVibGljYXRpb24uYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVk ZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL2NhdGNhY2hlLmgiCkBAIC01MywzNyArNTQsNDAgQEAgdHlwZWRlZiBzdHJ1Y3QKICAq IGVycm9yIGlmIG5vdC4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihSZWxhdGlvbiB0YXJnZXRyZWwpCitjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24oUmVsYXRpb24gdGFyZ2V0cmVsLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIHsKKwljb25z dCBjaGFyICplcnJvcm1zZzsKKworCWlmIChwcmktPmV4Y2VwdCkKKwkJZXJyb3Jtc2cgPSBnZXR0 ZXh0X25vb3AoImNhbm5vdCB1c2UgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBmb3IgcmVsYXRp b24gXCIlc1wiIik7CisJZWxzZQorCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IGFk ZCByZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iKTsKKwogCS8qIE11c3QgYmUgYSByZWd1 bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlICovCiAJaWYgKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRy ZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKIAkJUmVsYXRpb25HZXRGb3JtKHRh cmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK LQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIs Ci0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJybXNn KGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKIAkJCQkgZXJy ZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+ cmVsa2luZCkpKTsKIAogCS8qIENhbid0IGJlIHN5c3RlbSB0YWJsZSAqLwogCWlmIChJc0NhdGFs b2dSZWxhdGlvbih0YXJnZXRyZWwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coImNhbm5vdCBhZGQg cmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBlcnJtc2coZXJyb3Jtc2csIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikpKTsKIAogCS8qIFVOTE9HR0VEIGFu ZCBURU1QIHJlbGF0aW9ucyBjYW5ub3QgYmUgcGFydCBvZiBwdWJsaWNhdGlvbi4gKi8KIAlpZiAo dGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVzXCIgdG8gcHVi bGljYXRpb24iLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJ CQkJIGVycm1zZyhlcnJvcm1zZywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSks CiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVt cG9yYXJ5IHRhYmxlcy4iKSkpOwogCWVsc2UgaWYgKHRhcmdldHJlbC0+cmRfcmVsLT5yZWxwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJybXNn KCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJybXNnKGVycm9ybXNnLCBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKIAkJCQkgZXJyZGV0YWlsKCJUaGlz IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCB0YWJsZXMuIikpKTsKIH0K IApAQCAtMzY2LDkgKzM3MCwxMSBAQCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9p ZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAogCWZvcmVhY2go bGMsIGFuY2VzdG9ycykKIAl7CiAJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7Ci0J CUxpc3QJICAgKmFwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rvcik7CisJ CUxpc3QJICAgKmFwdWJpZHMgPSBOSUw7CiAJCUxpc3QJICAgKmFzY2hlbWFQdWJpZHMgPSBOSUw7 CiAKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsICZhcHViaWRzLCBOVUxMKTsK KwogCQlsZXZlbCsrOwogCiAJCWlmIChsaXN0X21lbWJlcl9vaWQoYXB1YmlkcywgcHVib2lkKSkK QEAgLTQ2Niw3ICs0NzIsMTIgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwg UHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0 YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGljYXRpb25fYWRkX3Jl bGF0aW9uKHRhcmdldHJlbCk7CisJaWYgKHB1Yi0+YWxsdGFibGVzICYmIHByaS0+ZXhjZXB0ICYm IHRhcmdldHJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJtc2coInBhcnRpdGlvbiBcIiVzXCIgY2Fubm90IGJlIGV4Y2x1ZGVkIHVzaW5nIEVYQ0VQ VCBUQUJMRSIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpKTsK KworCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbih0YXJnZXRyZWwsIHByaSk7CiAKIAkv KiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1lcyBpbnRvIGEgQml0bWFwc2V0IG9m IGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKHByaS0+cmVsYXRp b24sIHByaS0+Y29sdW1ucyk7CkBAIC00ODIsNiArNDkzLDggQEAgcHVibGljYXRpb25fYWRkX3Jl bGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCU9iamVjdElkR2V0 RGF0dW0ocHViaWQpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnJlbGlkIC0g MV0gPQogCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNh dGlvbl9yZWxfcHJleGNlcHQgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwcmktPmV4Y2VwdCk7CiAK IAkvKiBBZGQgcXVhbGlmaWNhdGlvbnMsIGlmIGF2YWlsYWJsZSAqLwogCWlmIChwcmktPndoZXJl Q2xhdXNlICE9IE5VTEwpCkBAIC01MzAsMTcgKzU0MywyNSBAQCBwdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAl0YWJsZV9jbG9zZShy ZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKLQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNv IHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LgotCSAqCi0JICogRm9yIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0ZSBhbGwgcGFydGl0aW9ucyBjb250YWlu ZWQKLQkgKiBpbiB0aGUgcmVzcGVjdGl2ZSBwYXJ0aXRpb24gaGllcmFyY2hpZXMsIG5vdCBqdXN0 IHRoZSBvbmUgZXhwbGljaXRseQotCSAqIG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24uIFRo aXMgaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZSBpbXBsaWNpdGx5Ci0JICogcHVibGlzaCB0aGUgY2hp bGQgdGFibGVzIHdoZW4gdGhlIHBhcmVudCB0YWJsZSBpcyBwdWJsaXNoZWQuCisJICogTm8gbmVl ZCB0byBpbnZhbGlkYXRlIHRoZSB0YWJsZXMgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlLCBi ZWNhdXNlCisJICogaW4gdGhhdCBjYXNlIGFsbCB0YWJsZXMgYXJlIGludmFsaWRhdGVkIGFueXdh eS4KIAkgKi8KLQlyZWxpZHMgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVsaWRz LCBQVUJMSUNBVElPTl9QQVJUX0FMTCwKLQkJCQkJCQkJCQkJcmVsaWQpOworCWlmICghcHJpLT5l eGNlcHQpCisJeworCQkvKgorCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGlj YXRpb24gaW5mbyBpcyByZWJ1aWx0LgorCQkgKgorCQkgKiBGb3IgdGhlIHBhcnRpdGlvbmVkIHRh Ymxlcywgd2UgbXVzdCBpbnZhbGlkYXRlIGFsbCBwYXJ0aXRpb25zCisJCSAqIGNvbnRhaW5lZCBp biB0aGUgcmVzcGVjdGl2ZSBwYXJ0aXRpb24gaGllcmFyY2hpZXMsIG5vdCBqdXN0IHRoZSBvbmUK KwkJICogZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uLiBUaGlzIGlzIHJl cXVpcmVkIGJlY2F1c2UKKwkJICogd2UgaW1wbGljaXRseSBwdWJsaXNoIHRoZSBjaGlsZCB0YWJs ZXMgd2hlbiB0aGUgcGFyZW50IHRhYmxlIGlzCisJCSAqIHB1Ymxpc2hlZC4KKwkJICovCisJCXJl bGlkcyA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZWxpZHMsIFBVQkxJQ0FUSU9O X1BBUlRfQUxMLAorCQkJCQkJCQkJCQkJcmVsaWQpOwogCi0JSW52YWxpZGF0ZVB1YmxpY2F0aW9u UmVscyhyZWxpZHMpOworCQlJbnZhbGlkYXRlUHVibGljYXRpb25SZWxzKHJlbGlkcyk7CisJfQog CiAJcmV0dXJuIG15c2VsZjsKIH0KQEAgLTc0OSwzOCArNzcwLDU0IEBAIHB1YmxpY2F0aW9uX2Fk ZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykKIAly ZXR1cm4gbXlzZWxmOwogfQogCi0vKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3Ig YSByZWxhdGlvbiAqLwotTGlzdCAqCi1HZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQp CisvKgorICogR2V0IHRoZSBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgYXNzb2NpYXRlZCB3aXRo IGEgc3BlY2lmaWVkIHJlbGF0aW9uLgorICoKKyAqICdwdWJpZHMnIHJldHVybnMgdGhlIE9pZHMg b2YgdGhlIHB1YmxpY2F0aW9ucyB0aGUgcmVsYXRpb24gaXMgcGFydCBvZi4KKyAqCisgKiAnZXhj ZXB0X3B1YmlkcycgcmV0dXJucyB0aGUgT2lkcyBvZiBwdWJsaWNhdGlvbnMgdGhlIHJlbGF0aW9u IGlzIGV4Y2x1ZGVkCisgKiBmcm9tLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVl IGlmIHRoZSByZWxhdGlvbiBpcyBwYXJ0IG9mIGFueSBwdWJsaWNhdGlvbi4KKyAqLworYm9vbAor R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBMaXN0ICoqcHViaWRzLCBMaXN0ICoq ZXhjZXB0X3B1YmlkcykKIHsKLQlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAq cHVicmVsbGlzdDsKLQlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAKIAkvKiBGaW5k IGFsbCBwdWJsaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGlvbi4gKi8KIAlwdWJy ZWxsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShQVUJMSUNBVElPTlJFTE1BUCwKIAkJCQkJCQkJ CSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7Ci0JZm9yIChpID0gMDsgaSA8IHB1YnJlbGxpc3Qt Pm5fbWVtYmVyczsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9tZW1i ZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0t PnR1cGxlOwotCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNU UlVDVCh0dXApKS0+cHJwdWJpZDsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsID0g KEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJT2lkCQkJcHViaWQg PSBwdWJyZWwtPnBycHViaWQ7CisJCUxpc3QJICAqKnRhcmdldF9saXN0ID0gcHVicmVsLT5wcmV4 Y2VwdCA/IGV4Y2VwdF9wdWJpZHMgOiBwdWJpZHM7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQo cmVzdWx0LCBwdWJpZCk7CisJCWlmICh0YXJnZXRfbGlzdCkKKwkJCSp0YXJnZXRfbGlzdCA9IGxh cHBlbmRfb2lkKCp0YXJnZXRfbGlzdCwgcHViaWQpOworCisJCWlmICghcHVicmVsLT5wcmV4Y2Vw dCkKKwkJCWZvdW5kID0gdHJ1ZTsKIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0KHB1YnJlbGxp c3QpOwogCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gZm91bmQ7CiB9CiAKIC8qCi0gKiBHZXRz IGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBmb3IgYSBwdWJsaWNhdGlvbi4KKyAqIEludGVybmFsIGZ1 bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiByZWxhdGlvbiBPaWRzIGZvciBhIHB1YmxpY2F0aW9u LgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgVEFCTEUgcHVibGljYXRpb25z LCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCi0gKiBzaG91bGQgdXNlIEdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKCkuCisgKiBJZiBleGNlcHRfZmxhZyBpcyB0cnVlLCByZXR1cm5zIHRo ZSBsaXN0IG9mIHJlbGF0aW9ucyBzcGVjaWZpZWQgaW4gdGhlCisgKiBFWENFUFQgY2xhdXNlIG9m IHRoZSBwdWJsaWNhdGlvbjsgb3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9u cworICogaW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgogICovCi1MaXN0ICoKLUdldFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQorc3RhdGljIExpc3QgKgorZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhPaWQgcHViaWQsIFB1 YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCSAgYm9vbCBleGNlcHRfZmxhZykK IHsKIAlMaXN0CSAgICpyZXN1bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTgwNSw4ICs4 NDIsMTAgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBh cnRPcHQgcHViX3BhcnRvcHQpCiAJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKIAog CQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwotCQly ZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9w dCwKLQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CisKKwkJaWYgKGV4Y2VwdF9mbGFnID09 IHB1YnJlbC0+cHJleGNlcHQpCisJCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxh dGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQp OwogCX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC04MTksNiArODU4LDM1IEBAIEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9w YXJ0b3B0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRp b24gb2lkcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBwdWJsaWNhdGlvbi4KKyAqCisgKiBU aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1YmxpY2F0aW9ucywgdGhlIEZPUiBB TEwgVEFCTEVTL1NFUVVFTkNFUworICogc2hvdWxkIHVzZSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0 aW9ucygpLgorICovCitMaXN0ICoKK0dldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lk IHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCit7CisJQXNzZXJ0KCFHZXRQ dWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisKKwlyZXR1cm4gZ2V0X3B1YmxpY2F0aW9u X3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIGZhbHNlKTsKK30KKworLyoKKyAqIEdldHMg bGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIGV4Y2VwdCBjbGF1 c2UgZm9yIGEKKyAqIHB1YmxpY2F0aW9uLgorICoKKyAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNl ZCBGT1IgVEFCTEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCisg KiBzaG91bGQgdXNlIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKi8KK0xpc3QgKgor R2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJs ZXMpOworCisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0 b3B0LCB0cnVlKTsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZv ciBwdWJsaWNhdGlvbnMgbWFya2VkIGFzIEZPUiBBTEwgVEFCTEVTLgogICovCkBAIC04NTgsMjQg KzkyNiwzNSBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCkKIAogLyoKICAqIEdldHMg bGlzdCBvZiBhbGwgcmVsYXRpb25zIHB1Ymxpc2hlZCBieSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5D RVMKLSAqIHB1YmxpY2F0aW9uKHMpLgorICogcHVibGljYXRpb24uCiAgKgogICogSWYgdGhlIHB1 YmxpY2F0aW9uIHB1Ymxpc2hlcyBwYXJ0aXRpb24gY2hhbmdlcyB2aWEgdGhlaXIgcmVzcGVjdGl2 ZSByb290CiAgKiBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgZXhjbHVkZSBwYXJ0aXRpb25z IGluIGZhdm9yIG9mIGluY2x1ZGluZyB0aGUKICAqIHJvb3QgcGFydGl0aW9uZWQgdGFibGVzLiBU aGlzIGlzIG5vdCBhcHBsaWNhYmxlIHRvIEZPUiBBTEwgU0VRVUVOQ0VTCiAgKiBwdWJsaWNhdGlv bi4KKyAqCisgKiBGb3IgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwgdGhlIHJldHVybmVk IGxpc3QgZXhjbHVkZXMgdGFibGVzIG1lbnRpb25lZAorICogaW4gRVhDRVBUIFRBQkxFIGNsYXVz ZS4KICAqLwogTGlzdCAqCi1HZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQs IGJvb2wgcHVidmlhcm9vdCkKK0dldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFB1YmxpY2F0aW9u ICpwdWIsIGNoYXIgcmVsa2luZCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsKIAlTY2FuS2V5RGF0 YSBrZXlbMV07CiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0dXBsZTsKIAlMaXN0 CSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0bGlzdCA9IE5JTDsKKwlib29sCQlw dWJ2aWFyb290ID0gcHViLT5wdWJ2aWFyb290OworCU9pZAkJCXB1YmlkID0gcHViLT5vaWQ7CiAK IAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9vdCkpOwog CisJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKKwkJZXhjZXB0bGlzdCA9IEdldEV4 Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1YnZpYXJvb3QgPworCQkJCQkJCQkJCQkJ ICBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJU X0xFQUYpOworCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNj ZXNzU2hhcmVMb2NrKTsKIAogCVNjYW5LZXlJbml0KCZrZXlbMF0sCkBAIC04OTEsNyArOTcwLDgg QEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJv b3QpCiAJCU9pZAkJCXJlbGlkID0gcmVsRm9ybS0+b2lkOwogCiAJCWlmIChpc19wdWJsaXNoYWJs ZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24g JiYgcHVidmlhcm9vdCkpCisJCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJv b3QpICYmCisJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCXJlc3Vs dCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwogCX0KIApAQCAtOTEyLDcgKzk5Miw4IEBA IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290 KQogCQkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJCWlmIChpc19wdWJsaXNoYWJs ZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24p CisJCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmCisJCQkJIWxpc3RfbWVtYmVyX29pZChl eGNlcHRsaXN0LCByZWxpZCkpCiAJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxp ZCk7CiAJCX0KIApAQCAtMTExNiw2ICsxMTk3LDUxIEBAIEdldFB1YmxpY2F0aW9uQnlOYW1lKGNv bnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2luZ19vaykKIAlyZXR1cm4gT2lkSXNWYWxpZChv aWQpID8gR2V0UHVibGljYXRpb24ob2lkKSA6IE5VTEw7CiB9CiAKKy8qCisgKiBwdWJsaWNhdGlv bl9oYXNfYW55X2V4Y2VwdF90YWJsZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4g cHVibGljYXRpb24gT0lEIGhhcyBhdCBsZWFzdCBvbmUgZW50cnkgaW4KKyAqIHBnX3B1YmxpY2F0 aW9uX3JlbCBtYXJrZWQgYXMgYW4gZXhjZXB0aW9uIChwcmV4Y2VwdCA9IHRydWUpLgorICovCiti b29sCitwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2VwdF90YWJsZShPaWQgcHViaWQpCit7CisJUmVs YXRpb24JcHVicmVsc3JlbDsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5OworCVN5c1NjYW5EZXNjIHNj YW47CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCisJcHVicmVsc3Jl bCA9IHRhYmxlX29wZW4oUHVibGljYXRpb25SZWxSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OworCisJU2NhbktleUluaXQoJnNjYW5rZXksCisJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxf cHJwdWJpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0 SWRHZXREYXR1bShwdWJpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwdWJyZWxz cmVsLAorCQkJCQkJCSAgUHVibGljYXRpb25SZWxQcnB1YmlkSW5kZXhJZCwKKwkJCQkJCQkgIHRy dWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKKworCS8qIFdlIG9ubHkgbmVlZCB0byBmaW5kIGFueSBv Y2N1cnJlbmNlIG9mIHByZXhjZXB0ID0gdHJ1ZSAqLworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlk KHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wdWJsaWNhdGlv bl9yZWwgcHVicmVsOworCisJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VU U1RSVUNUKHR1cCk7CisJCWlmIChwdWJyZWwtPnByZXhjZXB0KQorCQl7CisJCQlmb3VuZCA9IHRy dWU7CisJCQlicmVhazsKKwkJfQorCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFi bGVfY2xvc2UocHVicmVsc3JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBmb3VuZDsK K30KKwogLyoKICAqIEdldCBpbmZvcm1hdGlvbiBvZiB0aGUgdGFibGVzIGluIHRoZSBnaXZlbiBw dWJsaWNhdGlvbiBhcnJheS4KICAqCkBAIC0xMTY4LDE3ICsxMjk0LDE3IEBAIHBnX2dldF9wdWJs aWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAqIHRob3NlLiBPdGhlcndpc2Us IGdldCB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmLgogCQkJICovCiAJCQlpZiAocHViX2Vs ZW0tPmFsbHRhYmxlcykKLQkJCQlwdWJfZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJl bGF0aW9ucyhSRUxLSU5EX1JFTEFUSU9OLAotCQkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2 aWFyb290KTsKKwkJCQlwdWJfZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJfZWxlbSwKKwkJCQkJCQkJCQkJCQkJCSBSRUxLSU5EX1JFTEFUSU9OKTsKIAkJCWVsc2UK IAkJCXsKIAkJCQlMaXN0CSAgICpyZWxpZHMsCiAJCQkJCQkgICAqc2NoZW1hcmVsaWRzOwogCi0J CQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKLQkJCQkJ CQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJT05f UEFSVF9ST09UIDoKLQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCQkJCXJl bGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKKwkJ CQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCQkJIFBVQkxJ Q0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYp OwogCQkJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1 Yl9lbGVtLT5vaWQsCiAJCQkJCQkJCQkJCQkJCQkJcHViX2VsZW0tPnB1YnZpYXJvb3QgPwogCQkJ CQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CkBAIC0xMzY3LDcgKzE0OTMsNyBA QCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXB1Ymxp Y2F0aW9uID0gR2V0UHVibGljYXRpb25CeU5hbWUocHVibmFtZSwgZmFsc2UpOwogCiAJCWlmIChw dWJsaWNhdGlvbi0+YWxsc2VxdWVuY2VzKQotCQkJc2VxdWVuY2VzID0gR2V0QWxsUHVibGljYXRp b25SZWxhdGlvbnMoUkVMS0lORF9TRVFVRU5DRSwgZmFsc2UpOworCQkJc2VxdWVuY2VzID0gR2V0 QWxsUHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRpb24sIFJFTEtJTkRfU0VRVUVOQ0UpOwog CiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHNlcXVlbmNlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmMKaW5kZXggYWNmNDJiODUzZWQuLjQwNmFkMDBlZTZjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTM0LDM3ICszNCw2IEBACiAKIHN0YXRpYyBM aXN0ICp0ZXh0YXJyYXlfdG9fc3RyaW5nbGlzdChBcnJheVR5cGUgKnRleHRhcnJheSk7CiAKLS8q Ci0gKiBBZGQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byB0 aGUgJ2Rlc3QnIHN0cmluZy4KLSAqLwotdm9pZAotR2V0UHVibGljYXRpb25zU3RyKExpc3QgKnB1 YmxpY2F0aW9ucywgU3RyaW5nSW5mbyBkZXN0LCBib29sIHF1b3RlX2xpdGVyYWwpCi17Ci0JTGlz dENlbGwgICAqbGM7Ci0JYm9vbAkJZmlyc3QgPSB0cnVlOwotCi0JQXNzZXJ0KHB1YmxpY2F0aW9u cyAhPSBOSUwpOwotCi0JZm9yZWFjaChsYywgcHVibGljYXRpb25zKQotCXsKLQkJY2hhcgkgICAq cHVibmFtZSA9IHN0clZhbChsZmlyc3QobGMpKTsKLQotCQlpZiAoZmlyc3QpCi0JCQlmaXJzdCA9 IGZhbHNlOwotCQllbHNlCi0JCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsICIsICIpOwot Ci0JCWlmIChxdW90ZV9saXRlcmFsKQotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhkZXN0LCBx dW90ZV9saXRlcmFsX2NzdHIocHVibmFtZSkpOwotCQllbHNlCi0JCXsKLQkJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKGRlc3QsICciJyk7Ci0JCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsIHB1 Ym5hbWUpOwotCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZGVzdCwgJyInKTsKLQkJfQotCX0KLX0K LQogLyoKICAqIEZldGNoIHRoZSBzdWJzY3JpcHRpb24gZnJvbSB0aGUgc3lzY2FjaGUuCiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggZmMzYTRjMTllNjUuLjQw NzcyYzY3ZDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTk4 LDcgKzE5OCwxMiBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVj X2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlw ZSkKIAkJeworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEU6CisJCQkJcHVib2Jq LT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1 Ym9iai0+cHVidGFibGUpOworCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJM RToKKwkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKIAkJCQkqcmVscyA9IGxh cHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJM SUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOgpAQCAtNTE5LDggKzUyNCw4IEBAIEludmFsaWRh dGVQdWJSZWxTeW5jQ2FjaGUoT2lkIHB1YmlkLCBib29sIHB1YmFsbHRhYmxlcykKIAkJICogYSB0 YXJnZXQuIEhvd2V2ZXIsIFdBTCByZWNvcmRzIGZvciBUUlVOQ0FURSBzcGVjaWZ5IGJvdGggYSBy b290IGFuZAogCQkgKiBpdHMgbGVhdmVzLgogCQkgKi8KLQkJcmVsaWRzID0gR2V0UHVibGljYXRp b25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJ cmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJ CQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVt YVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9Q QVJUX0FMTCk7CiAKQEAgLTg0NSw2ICs4NTAsNyBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAlBY2xSZXN1bHQJYWNs cmVzdWx0OwogCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKIAlMaXN0CSAgICpzY2hlbWFpZGxp c3QgPSBOSUw7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKIAogCS8qIG11c3QgaGF2ZSBDUkVBVEUg cHJpdmlsZWdlIG9uIGRhdGFiYXNlICovCiAJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKERh dGFiYXNlUmVsYXRpb25JZCwgTXlEYXRhYmFzZUlkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7 CkBAIC05MjksOCArOTM1LDIzIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KKwlP YmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxh dGlvbnMsCisJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7CisJaWYgKHJlbGF0aW9ucyAhPSBOSUwp CisJeworCQlBc3NlcnQoIXN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKTsKKwkJcmVscyA9IE9wZW5U YWJsZUxpc3QocmVsYXRpb25zKTsKKwl9CisKIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJ eworCQkvKiBQcm9jZXNzIEVYQ0VQVCB0YWJsZSBsaXN0ICovCisJCWlmIChyZWxhdGlvbnMgIT0g TklMKQorCQl7CisJCQlBc3NlcnQocmVscyAhPSBOSUwpOworCQkJUHVibGljYXRpb25BZGRUYWJs ZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJfQorCiAJCS8qCiAJCSAqIEludmFsaWRh dGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuIFNlcXVlbmNl cwogCQkgKiBwdWJsaWNhdGlvbiBkb2Vzbid0IHJlcXVpcmUgaW52YWxpZGF0aW9uLCBhcyByZXBs aWNhIGlkZW50aXR5CkBAIC05NDAsOSArOTYxLDYgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJfQogCWVsc2UgaWYg KCFzdG10LT5mb3JfYWxsX3NlcXVlbmNlcykKIAl7Ci0JCU9iamVjdHNJblB1YmxpY2F0aW9uVG9P aWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkJICAgJnNj aGVtYWlkbGlzdCk7Ci0KIAkJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1 c2VyICovCiAJCWlmIChzY2hlbWFpZGxpc3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkKIAkJCWVy ZXBvcnQoRVJST1IsCkBAIC05NTEsOSArOTY5LDYgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAkJaWYgKHJlbGF0 aW9ucyAhPSBOSUwpCiAJCXsKLQkJCUxpc3QJICAgKnJlbHM7Ci0KLQkJCXJlbHMgPSBPcGVuVGFi bGVMaXN0KHJlbGF0aW9ucyk7CiAJCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0 YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qp OwogCkBAIC05NjIsNyArOTc3LDYgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCQkJCQkgICBwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCk7CiAKIAkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVs cywgdHJ1ZSwgTlVMTCk7Ci0JCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKIAkJfQogCiAJCWlmIChz Y2hlbWFpZGxpc3QgIT0gTklMKQpAQCAtOTc2LDYgKzk5MCw5IEBAIENyZWF0ZVB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQl9CiAJ fQogCisJaWYgKHJlbHMgIT0gTklMKQorCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwogCXRhYmxl X2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlJbnZva2VPYmplY3RQb3N0Q3JlYXRl SG9vayhQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1Ym9pZCwgMCk7CkBAIC0xMDUwLDggKzEwNjcs OCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LAogCQlMb2NrRGF0YWJhc2VPYmplY3QoUHVibGljYXRpb25SZWxh dGlvbklkLCBwdWJmb3JtLT5vaWQsIDAsCiAJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCi0J CXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJ CQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCXJvb3RfcmVsaWRzID0gR2V0SW5j bHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJICBQ VUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJCWZvcmVhY2gobGMsIHJvb3RfcmVsaWRzKQogCQl7 CkBAIC0xMTcwLDggKzExODcsOCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkgKiB0cmVlcywgbm90IGp1 c3QgdGhvc2UgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgogCQkgKi8K IAkJaWYgKHJvb3RfcmVsaWRzID09IE5JTCkKLQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVs YXRpb25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsK KwkJCXJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lk LAorCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJCWVsc2UKIAkJewogCQkJ LyoKQEAgLTEyNTYsOCArMTI3Myw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCVB1YmxpY2F0aW9uRHJvcFRhYmxl cyhwdWJpZCwgcmVscywgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCiAJ ewotCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwK LQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJTGlzdAkgICAqb2xkcmVs aWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJ CQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwog CQlMaXN0Q2VsbCAgICpvbGRsYzsKIApAQCAtMTM1OCw2ICsxMzc1LDcgQEAgQWx0ZXJQdWJsaWNh dGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJ CQlvbGRyZWwgPSBwYWxsb2Nfb2JqZWN0KFB1YmxpY2F0aW9uUmVsSW5mbyk7CiAJCQkJb2xkcmVs LT53aGVyZUNsYXVzZSA9IE5VTEw7CiAJCQkJb2xkcmVsLT5jb2x1bW5zID0gTklMOworCQkJCW9s ZHJlbC0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJb2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4o b2xkcmVsaWQsCiAJCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJCQlk ZWxyZWxzID0gbGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOwpAQCAtMTQwOCw3ICsxNDI2LDggQEAg QWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxp c3RDZWxsICAgKmxjOwogCQlMaXN0CSAgICpyZWxvaWRzOwogCi0JCXJlbG9pZHMgPSBHZXRQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJ CXJlbG9pZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwK KwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCBy ZWxvaWRzKQogCQl7CkBAIC0xNzcxLDYgKzE3OTAsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRh YmxlcykKIAkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCXB1Yl9yZWwtPndoZXJlQ2xhdXNl ID0gdC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQlw dWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9y ZWwpOwogCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15cmVsaWQpOwogCkBAIC0xODQz LDYgKzE4NjMsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAogCQkJCS8qIGNoaWxk IGluaGVyaXRzIGNvbHVtbiBsaXN0IGZyb20gcGFyZW50ICovCiAJCQkJcHViX3JlbC0+Y29sdW1u cyA9IHQtPmNvbHVtbnM7CisJCQkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQkJCXJl bHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQkJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJl bGlkcywgY2hpbGRyZWxpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YwppbmRleCA1ZTNjMDk2NGQzOC4uZTViYjg4ZDFmNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpAQCAtNTc1LDYgKzU3NiwxMTUgQEAgY2hl Y2tfcHVibGljYXRpb25zKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlv bnMpCiAJfQogfQogCisvKgorICogRVJST1IgaWYgbXVsdGlwbGUgcHVibGljYXRpb25zIHdpdGgg RVhDRVBUIGNsYXVzZXMgYXJlIHByZXNlbnQuCisgKgorICogTG9naWNhbCByZXBsaWNhdGlvbiBk b2VzIG5vdCBzdXBwb3J0IHN1YnNjcmliaW5nIHRvIG1vcmUgdGhhbiBvbmUKKyAqIHB1YmxpY2F0 aW9uIHRoYXQgZGVmaW5lcyBhbiBleGNsdXNpb24gbGlzdC4gQWxsb3dpbmcgdGhpcyB3b3VsZAor ICogY3JlYXRlIGFtYmlndW91cyBhbmQgdW5wcmVkaWN0YWJsZSByZXBsaWNhdGlvbiBiZWhhdmlv ci4KKyAqCisgKiBUaGUgYW1iaWd1aXR5IGFyaXNlcyB3aGVuIHB1YmxpY2F0aW9ucyBkaWZmZXIg aW4gdGhlaXIgZXhjbHVzaW9ucworICogYW5kIGluIHRoZSBzZXR0aW5nIG9mICdwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCcuIEluIHN1Y2ggY2FzZXMsCisgKiB0aGUgZWZmZWN0aXZlIHB1Ymxp Y2F0aW9uIHNldCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBjb25zaXN0ZW50bHk6CisgKgorICogICAt IFRhYmxlcyBleGNsdWRlZCBpbiBvbmUgcHVibGljYXRpb24gbWF5IGJlIGltcGxpY2l0bHkgaW5j bHVkZWQKKyAqICAgICBpbiBhbm90aGVyLgorICogICAtIENvbmZsaWN0aW5nICdwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCcgc2V0dGluZ3MgYWx0ZXIgaG93CisgKiAgICAgcGFydGl0aW9ucyBh cmUgcmVwcmVzZW50ZWQgYW5kIGRlZHVwbGljYXRlZC4KKyAqCisgKiBUbyBhdm9pZCB0aGVzZSBj b25mbGljdHMsIGEgc3Vic2NyaXB0aW9uIG1heSBpbmNsdWRlIGF0IG1vc3Qgb25lCisgKiAnRk9S IEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uIHRoYXQgc3BlY2lmaWVzIGFuIEVYQ0VQVCBjbGF1c2Uu CisgKgorICogRXhhbXBsZToKKyAqCisgKiAgIFBhcnRpdGlvbmVkIHRhYmxlOiB0YWJfcm9vdAor ICogICBQYXJ0aXRpb25zOiBwYXJ0MSwgcGFydDIsIHBhcnQzCisgKgorICogICBwdWIxOgorICog ICAgIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAocGFydDEsIHBhcnQyKQorICogICAgICAgV0lUSCAo cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKQorICoKKyAqICAgcHViMjoKKyAqICAg ICBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHBhcnQzKQorICogICAgICAgV0lUSCAocHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSkKKyAqCisgKiBTdWJzY3JpYmluZyB0byBib3RoIHB1 YjEgYW5kIHB1YjIgaXMgaW52YWxpZCBiZWNhdXNlOgorICogICAtIHB1YjEgZXhjbHVkZXMgcGFy dDEgYW5kIHBhcnQyLCBwdWJsaXNoaW5nIHJlbWFpbmluZyBwYXJ0aXRpb25zCisgKiAgICAgdmlh IHRoZSByb290LgorICogICAtIHB1YjIgZXhjbHVkZXMgcGFydDMsIHB1Ymxpc2hpbmcgb3RoZXIg cGFydGl0aW9ucyBpbmRpdmlkdWFsbHkuCisgKgorICogVGhlIHJlc3VsdGluZyBwdWJsaWNhdGlv biBzZXQgaXMgYW1iaWd1b3VzIGFuZCBwcm92aWRlcyBubyBjbGVhcgorICogYmVuZWZpdC4gVW5s ZXNzIGFsbCBwdWJsaWNhdGlvbnMgZXhjbHVkZSB0aGUgc2FtZSB0YWJsZXMsIGNvbWJpbmluZwor ICogdGhlbSBpbnRyb2R1Y2VzIGNvbXBsZXggYW5kIGNvbmZsaWN0aW5nIHBhcnRpdGlvbiByZXNv bHV0aW9uIHJ1bGVzLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcHVibGljYXRpb25zX2V4Y2Vw dF9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlvbnMpCit7CisJ TGlzdAkgICAqZXhjZXB0X3B1YmxpY2F0aW9ucyA9IE5JTDsKKwlXYWxSY3ZFeGVjUmVzdWx0ICpy ZXM7CisJU3RyaW5nSW5mb0RhdGEgY21kOworCVN0cmluZ0luZm9EYXRhIHB1Ym5hbWVzOworCVR1 cGxlVGFibGVTbG90ICpzbG90OworCU9pZAkJCXRhYmxlUm93WzFdID0ge1RFWFRPSUR9OworCisJ aWYgKGxpc3RfbGVuZ3RoKHB1YmxpY2F0aW9ucykgPD0gMSkKKwkJcmV0dXJuOworCisJaW5pdFN0 cmluZ0luZm8oJmNtZCk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLAorCQkJCQkJICAg IlNFTEVDVCBwLnB1Ym5hbWVcbiIKKwkJCQkJCSAgICIgRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uIHBcbiIKKwkJCQkJCSAgICIgV0hFUkUgcC5wdWJuYW1lIElOICgiKTsKKworCUdldFB1 YmxpY2F0aW9uc1N0cihwdWJsaWNhdGlvbnMsICZjbWQsIHRydWUpOworCisJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmY21kLAorCQkJCQkJICAgIilcbiIKKwkJCQkJCSAgICIgICBBTkQgRVhJU1RT IChTRUxFQ1QgMVxuIgorCQkJCQkJICAgIiAgICAgICAgICAgICAgICAgRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJICAgIiAgICAgICAgICAgICAgICBXSEVS RSBwci5wcnB1YmlkID0gcC5vaWRcbiIKKwkJCQkJCSAgICIgICAgICAgICAgICAgICAgICBBTkQg cHIucHJleGNlcHQgSVMgVFJVRSkiKTsKKworCXJlcyA9IHdhbHJjdl9leGVjKHdyY29ubiwgY21k LmRhdGEsIDEsIHRhYmxlUm93KTsKKwlwZnJlZShjbWQuZGF0YSk7CisKKwlpZiAocmVzLT5zdGF0 dXMgIT0gV0FMUkNWX09LX1RVUExFUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJtc2coImNv dWxkIG5vdCByZWNlaXZlIGxpc3Qgb2YgcHVibGljYXRpb25zIGZyb20gdGhlIHB1Ymxpc2hlcjog JXMiLAorCQkJCQkgICByZXMtPmVycikpOworCisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxl U2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJd2hpbGUgKHR1cGxl c3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQor CXsKKwkJY2hhcgkgICAqcHVibmFtZTsKKwkJYm9vbAkJaXNudWxsOworCisJCXB1Ym5hbWUgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAxLCAmaXNudWxsKSk7CisJCUFz c2VydCghaXNudWxsKTsKKworCQlleGNlcHRfcHVibGljYXRpb25zID0gbGFwcGVuZChleGNlcHRf cHVibGljYXRpb25zLCBtYWtlU3RyaW5nKHB1Ym5hbWUpKTsKKwkJRXhlY0NsZWFyVHVwbGUoc2xv dCk7CisJfQorCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCXdhbHJj dl9jbGVhcl9yZXN1bHQocmVzKTsKKworCWlmIChsaXN0X2xlbmd0aChleGNlcHRfcHVibGljYXRp b25zKSA8PSAxKQorCQlyZXR1cm47CisKKwlpbml0U3RyaW5nSW5mbygmcHVibmFtZXMpOworCUdl dFB1YmxpY2F0aW9uc1N0cihleGNlcHRfcHVibGljYXRpb25zLCAmcHVibmFtZXMsIGZhbHNlKTsK KworCXBmcmVlKGV4Y2VwdF9wdWJsaWNhdGlvbnMpOworCisJZXJlcG9ydChFUlJPUiwKKwkJCWVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJjYW5ub3Qg Y29tYmluZSBwdWJsaWNhdGlvbnMgdGhhdCBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXMiKSwK KwkJCWVycmRldGFpbCgiVGhlIGZvbGxvd2luZyBwdWJsaWNhdGlvbnMgZGVmaW5lIEVYQ0VQVCBU QUJMRSBjbGF1c2VzOiAlcy4iLAorCQkJCQkgIHB1Ym5hbWVzLmRhdGEpKTsKK30KKwogLyoKICAq IEF1eGlsaWFyeSBmdW5jdGlvbiB0byBidWlsZCBhIHRleHQgYXJyYXkgb3V0IG9mIGEgbGlzdCBv ZiBTdHJpbmcgbm9kZXMuCiAgKi8KQEAgLTgzMiw2ICs5NDIsNyBAQCBDcmVhdGVTdWJzY3JpcHRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJ Y2hhcgkJcmVsYXRpb25fc3RhdGU7CiAKIAkJCWNoZWNrX3B1YmxpY2F0aW9ucyh3cmNvbm4sIHB1 YmxpY2F0aW9ucyk7CisJCQljaGVja19wdWJsaWNhdGlvbnNfZXhjZXB0X2xpc3Qod3Jjb25uLCBw dWJsaWNhdGlvbnMpOwogCQkJY2hlY2tfcHVibGljYXRpb25zX29yaWdpbl90YWJsZXMod3Jjb25u LCBwdWJsaWNhdGlvbnMsCiAJCQkJCQkJCQkJCSBvcHRzLmNvcHlfZGF0YSwKIAkJCQkJCQkJCQkJ IG9wdHMucmV0YWluZGVhZHR1cGxlcywgb3B0cy5vcmlnaW4sCkBAIC05OTYsNiArMTEwNyw4IEBA IEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0aW9uICpzdWIsIGJvb2wgY29weV9k YXRhLAogCQlpZiAodmFsaWRhdGVfcHVibGljYXRpb25zKQogCQkJY2hlY2tfcHVibGljYXRpb25z KHdyY29ubiwgdmFsaWRhdGVfcHVibGljYXRpb25zKTsKIAorCQljaGVja19wdWJsaWNhdGlvbnNf ZXhjZXB0X2xpc3Qod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucyk7CisKIAkJLyogR2V0IHRoZSBy ZWxhdGlvbiBsaXN0IGZyb20gcHVibGlzaGVyLiAqLwogCQlwdWJyZWxzID0gZmV0Y2hfcmVsYXRp b25fbGlzdCh3cmNvbm4sIHN1Yi0+cHVibGljYXRpb25zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwppbmRleCBkZjFiYTExMmIzNS4uZDA4NTNkN2M3YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC04Njk4LDcgKzg2OTgsNyBAQCBBVEV4ZWNTZXRFeHByZXNzaW9uKEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCSAqIGV4 cHJlc3Npb25zLgogCSAqLwogCWlmIChhdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRF RF9WSVJUVUFMICYmCi0JCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQo cmVsKSkgIT0gTklMKQorCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlk KHJlbCksIE5VTEwsIE5VTEwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJBTFRFUiBUQUJMRSAvIFNF VCBFWFBSRVNTSU9OIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVt bnMgaW4gdGFibGVzIHRoYXQgYXJlIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIpLApAQCAtMTg4OTQs NyArMTg4OTQsNyBAQCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xvZ2dlZCkKIAkgKiBVTkxPR0dFRCwgYXMgVU5MT0dH RUQgdGFibGVzIGNhbid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2VkICYmCi0J CUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQor CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCksIE5VTEwsIE5V TEwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGUg XCIlc1wiIHRvIHVubG9nZ2VkIGJlY2F1c2UgaXQgaXMgcGFydCBvZiBhIHB1YmxpY2F0aW9uIiwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CmluZGV4IGM1NjcyNTJhY2M0Li5kZTQzNzRlNzRkNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBA IC0yMDMsNiArMjAzLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NBU2JpdHMoaW50IGNhc19iaXRz LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIgKmNvbnN0clR5cGUsCiBzdGF0aWMgUGFydGl0aW9u U3RyYXRlZ3kgcGFyc2VQYXJ0aXRpb25TdHJhdGVneShjaGFyICpzdHJhdGVneSwgaW50IGxvY2F0 aW9uLAogCQkJCQkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIHZvaWQg cHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAor CQkJCQkJCQkJCQlMaXN0ICoqcHVib2JqZWN0cywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3RhYmxl cywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJY29yZV95eXNj YW5fdCB5eXNjYW5uZXIpOwpAQCAtNDU1LDYgKzQ1Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1 bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9u X2xpc3QgcHViX29ial9saXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAorCQkJCXB1Yl9leGNlcHRf b2JqX2xpc3Qgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVy bmluZ19jbGF1c2UKICV0eXBlIDxub2RlPglyZXR1cm5pbmdfb3B0aW9uCkBAIC01OTIsNiArNTk0 LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9u ZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVjPiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVk X2J5CiAldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0 eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYwogJXR5 cGUgPHB1YmxpY2F0aW9uYWxsb2JqZWN0c3BlYz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0 eXBlIDxrZXl3b3JkPiB1bnJlc2VydmVkX2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApA QCAtMTA3OTIsNyArMTA3OTUsNyBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFn Z3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAgKgogICogcHViX2FsbF9v YmpfdHlwZSBpcyBvbmUgb2Y6CiAgKgotICoJCVRBQkxFUworICoJCVRBQkxFUyBbRVhDRVBUIFtU QUJMRV0gKCB0YWJsZSBbLCAuLi5dICldCiAgKgkJU0VRVUVOQ0VTCiAgKgogICogQ1JFQVRFIFBV QkxJQ0FUSU9OIEZPUiBwdWJfb2JqIFssIC4uLl0gW1dJVEggb3B0aW9uc10KQEAgLTEwODE4LDcg KzEwODIxLDggQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQlDcmVhdGVQdWJsaWNhdGlv blN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1 Ym5hbWUgPSAkMzsKLQkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4t PmZvcl9hbGxfdGFibGVzLAorCQkJCQlwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1 LCAmbi0+cHVib2JqZWN0cywKKwkJCQkJCQkJCQkJCQkmbi0+Zm9yX2FsbF90YWJsZXMsCiAJCQkJ CQkJCQkJCQkJJm4tPmZvcl9hbGxfc2VxdWVuY2VzLAogCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7 CiAJCQkJCW4tPm9wdGlvbnMgPSAkNjsKQEAgLTEwOTMzLDExICsxMDkzNywxOSBAQCBwdWJfb2Jq X2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9 CiAJOwogCitvcHRfcHViX2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxlICcoJyBw dWJfZXhjZXB0X29ial9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJ CQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0JCQkJQUxM IFRBQkxFUworCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJCXsKIAkJ CQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJv Ymp0eXBlID0gUFVCTElDQVRJT05fQUxMX1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRfdGFibGVz ID0gJDM7CisJCQkJCQlpZigkJC0+ZXhjZXB0X3RhYmxlcyAhPSBOVUxMKQorCQkJCQkJCXByZXBy b2Nlc3NfcHVib2JqX2xpc3QoJCQtPmV4Y2VwdF90YWJsZXMsIHl5c2Nhbm5lcik7CiAJCQkJCQkk JC0+bG9jYXRpb24gPSBAMTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA5NTQs NiArMTA5NjYsMjMgQEAgcHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNw ZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRpb25FeGNl cHRPYmpTcGVjOgorCQkJIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUo UHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9C Sl9FWENFUFRfVEFCTEU7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9u VGFibGUpOworCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJ0 YWJsZS0+cmVsYXRpb24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsK KworcHViX2V4Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsg JCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBQdWJs aWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCTsK IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk4MTIsOCArMTk4NDEsOSBAQCBwYXJz ZVBhcnRpdGlvblN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0X3R5cGUg aGFzIGJlZW4gc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9pZAotcHJl cHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBib29s ICphbGxfdGFibGVzLAotCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5c2Nhbl90 IHl5c2Nhbm5lcikKK3ByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29i amVjdHNfbGlzdCwgTGlzdCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMs IGJvb2wgKmFsbF9zZXF1ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQog ewogCWlmICghYWxsX29iamVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MzMsNiArMTk4NjMs NyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xp c3QsIGJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2Nh dGlvbikpOwogCiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9IGxpc3Rf Y29uY2F0KCpwdWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVsc2UgaWYg KG9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDYwM2EyYjk0ZDA1Li5h OGIxNjMxMGZjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMK QEAgLTIyMTAsMyArMjIxMCwzNCBAQCBMb2dpY2FsU2xvdEFkdmFuY2VBbmRDaGVja1NuYXBTdGF0 ZShYTG9nUmVjUHRyIG1vdmV0bywKIAogCXJldHVybiByZXRsc247CiB9CisKKy8qCisgKiBBZGQg YSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byB0aGUgJ2Rlc3Qn IHN0cmluZy4KKyAqLwordm9pZAorR2V0UHVibGljYXRpb25zU3RyKExpc3QgKnB1YmxpY2F0aW9u cywgU3RyaW5nSW5mbyBkZXN0LCBib29sIHF1b3RlX2xpdGVyYWwpCit7CisJTGlzdENlbGwgICAq bGM7CisJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJQXNzZXJ0KHB1YmxpY2F0aW9ucyAhPSBOSUwp OworCisJZm9yZWFjaChsYywgcHVibGljYXRpb25zKQorCXsKKwkJY2hhcgkgICAqcHVibmFtZSA9 IHN0clZhbChsZmlyc3QobGMpKTsKKworCQlpZiAoZmlyc3QpCisJCQlmaXJzdCA9IGZhbHNlOwor CQllbHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsICIsICIpOworCisJCWlmIChx dW90ZV9saXRlcmFsKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhkZXN0LCBxdW90ZV9saXRl cmFsX2NzdHIocHVibmFtZSkpOworCQllbHNlCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGRlc3QsICciJyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGRlc3QsIHB1Ym5hbWUpOwor CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZGVzdCwgJyInKTsKKwkJfQorCX0KK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDJmMmYwMTIxZWNmLi4w NDZhNTBmMmU5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggN2E0OTE4NWQyOWQuLmRkMzhlZWY5 MzAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1 dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAg LTE3OTcsMTIgKzE3OTcsMTggQEAgcGdvdXRwdXRfc2h1dGRvd24oTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4KQogICogdG8gc2lsZW50bHkgY29udGludWUgdGhlIHJlcGxpY2F0aW9uIGluIHRo ZSBhYnNlbmNlIG9mIGEgbWlzc2luZyBwdWJsaWNhdGlvbi4KICAqIFRoaXMgaXMgcmVxdWlyZWQg YmVjYXVzZSB3ZSBhbGxvdyB0aGUgdXNlcnMgdG8gY3JlYXRlIHB1YmxpY2F0aW9ucyBhZnRlciB0 aGV5CiAgKiBoYXZlIHNwZWNpZmllZCB0aGUgcmVxdWlyZWQgcHVibGljYXRpb25zIGF0IHRoZSB0 aW1lIG9mIHJlcGxpY2F0aW9uIHN0YXJ0LgorICoKKyAqIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5v IG1vcmUgdGhhbiBvbmUgcHVibGljYXRpb24gaW4gdGhlIGxpc3QgbWF5IGNvbnRhaW4KKyAqIGFu IEVYQ0VQVCBUQUJMRSBjbGF1c2UuIFVzaW5nIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB3aXRoIEVY Q0VQVCBUQUJMRSBjbGF1c2UKKyAqIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCB0byBwcmV2ZW50 IG5vbi1kZXRlcm1pbmlzdGljIGZpbHRlcmluZyBiZWhhdmlvcgorICogYWNyb3NzIG92ZXJsYXBw aW5nIHB1YmxpY2F0aW9uIHNldHMuCiAgKi8KIHN0YXRpYyBMaXN0ICoKIExvYWRQdWJsaWNhdGlv bnMoTGlzdCAqcHVibmFtZXMpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3RDZWxs ICAgKmxjOworCUxpc3QJICAgKnB1Ym5hbWVzX3dpdGhfZXhjZXB0ID0gTklMOwogCiAJZm9yZWFj aChsYywgcHVibmFtZXMpCiAJewpAQCAtMTgxMCw3ICsxODE2LDEzIEBAIExvYWRQdWJsaWNhdGlv bnMoTGlzdCAqcHVibmFtZXMpCiAJCVB1YmxpY2F0aW9uICpwdWIgPSBHZXRQdWJsaWNhdGlvbkJ5 TmFtZShwdWJuYW1lLCB0cnVlKTsKIAogCQlpZiAocHViKQorCQl7CiAJCQlyZXN1bHQgPSBsYXBw ZW5kKHJlc3VsdCwgcHViKTsKKworCQkJLyogQ2hlY2sgaWYgdGhpcyBwdWJsaWNhdGlvbiBoYXMg YW4gRVhDRVBUIFRBQkxFIGxpc3QuICovCisJCQlpZiAocHVibGljYXRpb25faGFzX2FueV9leGNl cHRfdGFibGUocHViLT5vaWQpKQorCQkJCXB1Ym5hbWVzX3dpdGhfZXhjZXB0ID0gbGFwcGVuZChw dWJuYW1lc193aXRoX2V4Y2VwdCwgcHN0cmR1cChwdWJuYW1lKSk7CisJCX0KIAkJZWxzZQogCQkJ ZXJlcG9ydChXQVJOSU5HLAogCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVS RVFVSVNJVEVfU1RBVEUpLApAQCAtMTgxOSw2ICsxODMxLDI1IEBAIExvYWRQdWJsaWNhdGlvbnMo TGlzdCAqcHVibmFtZXMpCiAJCQkJCWVycmhpbnQoIkNyZWF0ZSB0aGUgcHVibGljYXRpb24gaWYg aXQgZG9lcyBub3QgZXhpc3QuIikpOwogCX0KIAorCS8qCisJICogSWYgbW9yZSB0aGFuIG9uZSBw dWJsaWNhdGlvbiBoYXMgYW4gRVhDRVBUIGxpc3QsIHRocm93IGFuIGVycm9yIGxpc3RpbmcKKwkg KiBhbGwgdGhlIHByb2JsZW1hdGljIHB1YmxpY2F0aW9ucy4KKwkgKi8KKwlpZiAobGlzdF9sZW5n dGgocHVibmFtZXNfd2l0aF9leGNlcHQpID4gMSkKKwl7CisJCVN0cmluZ0luZm9EYXRhIHB1Yl9u YW1lc19zdHI7CisKKwkJaW5pdFN0cmluZ0luZm8oJnB1Yl9uYW1lc19zdHIpOworCQlHZXRQdWJs aWNhdGlvbnNTdHIocHVibmFtZXNfd2l0aF9leGNlcHQsICZwdWJfbmFtZXNfc3RyLCB0cnVlKTsK KworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCWVycm1zZygiY2Fubm90IGNvbWJpbmUgcHVibGljYXRpb25zIHRoYXQgZGVm aW5lIEVYQ0VQVCBUQUJMRSBjbGF1c2VzIiksCisJCQkJZXJyZGV0YWlsKCJUaGUgZm9sbG93aW5n IHB1YmxpY2F0aW9ucyBkZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXM6ICVzLiIsCisJCQkJCQkg IHB1Yl9uYW1lc19zdHIuZGF0YSkpOworCX0KKworCWxpc3RfZnJlZV9kZWVwKHB1Ym5hbWVzX3dp dGhfZXhjZXB0KTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDg5LDcgKzIxMjAsNyBAQCBn ZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikK IAlpZiAoIWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQpCiAJewogCQlPaWQJCQlzY2hlbWFJZCA9IGdl dF9yZWxfbmFtZXNwYWNlKHJlbGlkKTsKLQkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMocmVsaWQpOworCQlMaXN0CSAgICpwdWJpZHMgPSBOSUw7CiAKIAkJLyoKIAkJ ICogV2UgZG9uJ3QgYWNxdWlyZSBhIGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUg YXMgd2UgYnVpbGQKQEAgLTIxMDQsNiArMjEzNSw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQljaGFyCQlyZWxraW5kID0gZ2V0 X3JlbF9yZWxraW5kKHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5JTDsK IAorCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgJnB1YmlkcywgTlVMTCk7CisKIAkJ LyogUmVsb2FkIHB1YmxpY2F0aW9ucyBpZiBuZWVkZWQgYmVmb3JlIHVzZS4gKi8KIAkJaWYgKCFw dWJsaWNhdGlvbnNfdmFsaWQpCiAJCXsKQEAgLTIyMDYsMTQgKzIyMzksMjIgQEAgZ2V0X3JlbF9z eW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkgKi8K IAkJCWlmIChwdWItPmFsbHRhYmxlcykKIAkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlp ZiAocHViLT5wdWJ2aWFyb290ICYmIGFtX3BhcnRpdGlvbikKKwkJCQlMaXN0CSAgICpleGNlcHRw dWJpZHMgPSBOSUw7CisKKwkJCQlpZiAoYW1fcGFydGl0aW9uICYmIHB1Yi0+cHVidmlhcm9vdCkK IAkJCQl7CiAJCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3Jz KHJlbGlkKTsKIAogCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKIAkJCQkJ YW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOwogCQkJCX0KKworCQkJCUdl dFJlbGF0aW9uUHVibGljYXRpb25zKHB1Yl9yZWxpZCwgTlVMTCwgJmV4Y2VwdHB1Ymlkcyk7CisK KwkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRwdWJpZHMsIHB1Yi0+b2lkKSkKKwkJCQkJ cHVibGlzaCA9IHRydWU7CisKKwkJCQlsaXN0X2ZyZWUoZXhjZXB0cHViaWRzKTsKIAkJCX0KIAog CQkJaWYgKCFwdWJsaXNoKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNmI2MzRj OWZmZjEuLmRjMDIxZGJiNmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3 ODgsNyArNTc4OCw5IEBAIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJl bGF0aW9uLAogdm9pZAogUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxh dGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogewotCUxpc3QJICAgKnB1Ym9pZHM7CisJ TGlzdAkgICAqcHVib2lkcyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOwor CUxpc3QJICAgKmFsbHRhYmxlc3B1Ym9pZHM7CiAJTGlzdENlbGwgICAqbGM7CiAJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7CiAJT2lkCQkJc2NoZW1haWQ7CkBAIC01ODI2LDcgKzU4MjgsNyBAQCBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRl c2MgKnB1YmRlc2MpCiAJcHViZGVzYy0+Z2VuY29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsK IAogCS8qIEZldGNoIHRoZSBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lk cyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwlHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhyZWxpZCwgJnB1Ym9pZHMsICZleGNlcHRwdWJvaWRzKTsKIAlzY2hlbWFpZCA9IFJlbGF0 aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKIAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVl X29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKIApAQCAtNTgz OCwxNiArNTg0MCwyNSBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJl bGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCWZvcmVhY2gobGMsIGFuY2VzdG9y cykKIAkJewogCQkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJCUxpc3QJICAg KmFuY2VzdG9yX3B1Ym9pZHMgPSBOSUw7CisJCQlMaXN0CSAgICphbmNlc3Rvcl9leGNlcHRwdWJv aWRzID0gTklMOwogCi0JCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LAotCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCUdl dFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCAmYW5jZXN0b3JfcHVib2lkcywKKwkJCQkJ CQkJCSZhbmNlc3Rvcl9leGNlcHRwdWJvaWRzKTsKKworCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0 X3VuaXF1ZV9vaWQocHVib2lkcywgYW5jZXN0b3JfcHVib2lkcyk7CiAJCQlzY2hlbWFpZCA9IGdl dF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKTsKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlx dWVfb2lkKHB1Ym9pZHMsCiAJCQkJCQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1h aWQpKTsKKwkJCWV4Y2VwdHB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKGV4Y2VwdHB1 Ym9pZHMsCisJCQkJCQkJCQkJCQkgICBhbmNlc3Rvcl9leGNlcHRwdWJvaWRzKTsKIAkJfQogCX0K LQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQ dWJsaWNhdGlvbnMoKSk7CiAKKwlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVibGlj YXRpb25zKCk7CisJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJ CQkJCQkJCSBsaXN0X2RpZmZlcmVuY2Vfb2lkKGFsbHRhYmxlc3B1Ym9pZHMsCisJCQkJCQkJCQkJ CQkJCSBleGNlcHRwdWJvaWRzKSk7CiAJZm9yZWFjaChsYywgcHVib2lkcykKIAl7CiAJCU9pZAkJ CXB1YmlkID0gbGZpcnN0X29pZChsYyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0NTBjZWMyODViMy4uNGY5 MjA1NGIzNzcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDYyMyw5ICs0NjIzLDU1IEBAIGdldFB1YmxpY2F0 aW9ucyhBcmNoaXZlICpmb3V0KQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2 aWFyb290KSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJnZW5jb2xzX3R5cGUgPQogCQkJ KihQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJnZW5jb2xzKSk7CisJCXB1YmluZm9baV0uZXhjZXB0 X3RhYmxlcyA9IChTaW1wbGVQdHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJ LyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxl T2JqZWN0KCYocHViaW5mb1tpXS5kb2JqKSwgZm91dCk7CisKKwkJLyoKKwkJICogR2V0IHRoZSBs aXN0IG9mIHRhYmxlcyBmb3IgcHVibGljYXRpb25zIHNwZWNpZmllZCB3aXRoIHRoZSBFWENFUFQK KwkJICogVEFCTEUgY2xhdXNlLiBUaGlzIGlzIGludHJvZHVjZWQgaW4gUG9zdGdyZVNRTCAxOS4K KwkJICoKKwkJICogRVhDRVBUIFRBQkxFUyBpcyBwcm9jZXNzZWQgaGVyZSBhbmQgb3V0cHV0IGRp cmVjdGx5IGJ5CisJCSAqIGR1bXBQdWJsaWNhdGlvbigpLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUg YXBwcm9hY2ggdXNlZCBpbgorCQkgKiBkdW1wUHVibGljYXRpb25UYWJsZSgpIGFuZCBkdW1wUHVi bGljYXRpb25OYW1lc3BhY2UoKSwgc2luY2UgdGhhdAorCQkgKiBhcHByb2FjaCB3b3VsZCByZXF1 aXJlIEVYQ0VQVCBUQUJMRSBzdXBwb3J0IGZvciBBTFRFUiBQVUJMSUNBVElPTiwKKwkJICogd2hp Y2ggaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisJCSAqLworCQlpZiAoZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCWludAkJCW50YmxzOworCQkJUEdyZXN1bHQgICAq cmVzX3RibHM7CisKKwkJCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOworCQkJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksCisJCQkJCQkJICAiU0VMRUNUIHBycmVsaWRcbiIKKwkJCQkJCQkgICJGUk9N IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsXG4iCisJCQkJCQkJICAiV0hFUkUgcHJwdWJp ZCA9ICV1IGFuZCBwcmV4Y2VwdCIsCisJCQkJCQkJICBwdWJpbmZvW2ldLmRvYmouY2F0SWQub2lk KTsKKworCQkJcmVzX3RibHMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBH UkVTX1RVUExFU19PSyk7CisKKwkJCW50YmxzID0gUFFudHVwbGVzKHJlc190YmxzKTsKKworCQkJ Zm9yIChpbnQgaiA9IDA7IGogPCBudGJsczsgaisrKQorCQkJeworCQkJCU9pZAkJCXBycmVsaWQ7 CisJCQkJVGFibGVJbmZvICAqdGJpbmZvOworCisJCQkJcHJyZWxpZCA9IGF0b29pZChQUWdldHZh bHVlKHJlc190YmxzLCBqLCAwKSk7CisKKwkJCQl0YmluZm8gPSBmaW5kVGFibGVCeU9pZChwcnJl bGlkKTsKKworCQkJCWlmICh0YmluZm8gIT0gTlVMTCkKKwkJCQkJc2ltcGxlX3B0cl9saXN0X2Fw cGVuZCgmcHViaW5mb1tpXS5leGNlcHRfdGFibGVzLCB0YmluZm8pOworCQkJfQorCisJCQlQUWNs ZWFyKHJlc190YmxzKTsKKwkJfQogCX0KIAogY2xlYW51cDoKQEAgLTQ2NjUsNyArNDcxMSwyNSBA QCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpw dWJpbmZvKQogCWlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMgJiYgcHViaW5mby0+cHViYWxsc2Vx dWVuY2VzKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUywg QUxMIFNFUVVFTkNFUyIpOwogCWVsc2UgaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKKwl7CisJ CWludAkJCW5fZXhjZXB0ID0gMDsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBG T1IgQUxMIFRBQkxFUyIpOworCisJCS8qIEluY2x1ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0 aGVyZSBhcmUgZXhjZXB0X3RhYmxlcy4gKi8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2Vs bCA9IHB1YmluZm8tPmV4Y2VwdF90YWJsZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQp CisJCXsKKwkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOwor CisJCQlpZiAoKytuX2V4Y2VwdCA9PSAxKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiIEVYQ0VQVCBUQUJMRSAoIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICIsICIpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJPTkxZICVzIiwgZm10 UXVhbGlmaWVkRHVtcGFibGUodGJpbmZvKSk7CisJCX0KKwkJaWYgKG5fZXhjZXB0ID4gMCkKKwkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSIpOworCX0KIAllbHNlIGlmIChwdWJpbmZv LT5wdWJhbGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBB TEwgU0VRVUVOQ0VTIik7CiAKQEAgLTQ4NDUsNiArNDkwOSw3IEBAIGdldFB1YmxpY2F0aW9uVGFi bGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAK IAkvKiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCiAJaWYgKGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwg IgogCQkJCQkJCSAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpIEFTIHBy cmVscXVhbCwgIgpAQCAtNDg1Nyw2ICs0OTIyLDkgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJj aGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkg IiAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tz XSlcbiIKIAkJCQkJCQkgIiAgRUxTRSBOVUxMIEVORCkgcHJhdHRycyAiCiAJCQkJCQkJICJGUk9N IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIik7CisJCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE5MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdIRVJF IE5PVCBwci5wcmV4Y2VwdCIpOworCX0KIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCmluZGV4IDZkZWNlZWYyM2YzLi5lMTM4ZWYxMjc2YyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBA IC02NzYsNiArNjc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwogCWJvb2wJ CXB1YnRydW5jYXRlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlzaEdlbmNvbHNUeXBlIHB1 YmdlbmNvbHNfdHlwZTsKKwlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJsZXM7CiB9IFB1YmxpY2F0 aW9uSW5mbzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggYThkY2MyYjVjNzUu LjU0ZWFlNTc3YzkxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5w bAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzE3MCw2ICszMTcw LDM2IEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9z dF9kYXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOCcgPT4gewor CQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChkdW1wX3Rlc3QudGVzdF90YWJsZSk7 JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjggRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSBXSVRIIChw dWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwK KworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAs CisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF90YWJsZSwgZHVtcF90ZXN0LnRlc3Rf c2Vjb25kX3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJ T04gcHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3Rf dGFibGUsIE9OTFkgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKSBXSVRIIChwdWJsaXNoID0g J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9 PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVB VEUgUFVCTElDQVRJT04gcHViMTAnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDkyLAorCQljcmVh dGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgKGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX3BhcmVudCk7JywKKwkJcmVn ZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwIEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQsIE9O TFkgZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfY2hpbGQpIFdJVEggKHB1Ymxpc2ggPSAnaW5z ZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsg JWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBT VUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9z cWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA1NzFhNmEwMDNkNS4u MjRkZjAzYTFmZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0zMDczLDE3ICszMDczLDM0IEBAIGRlc2NyaWJlT25l VGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAgIiAgICAgICAg ICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4i CiAJCQkJCQkJCSAgIiAgICAgICAgRUxTRSBOVUxMIEVORCkgIgogCQkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCi0JCQkJ CQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJl bGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAg IgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBy cHViaWRcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBPTiBjLm9p ZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIs CisJCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAx OTAwMDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgQU5EIE5PVCBwci5wcmV4 Y2VwdFxuIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCQkgICJVTklP TlxuIgogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgotCQkJCQkJCQkgICIgICAgICwgTlVM TFxuIgotCQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgor CQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb24gcFxuIgotCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0 YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgotCQkJCQkJCQkgICJPUkRF UiBCWSAxOyIsCi0JCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCwgb2lkKTsKKwkJCQkJCQkJICAiV0hF UkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFi bGUoJyVzJylcbiIsCisJCQkJCQkJCSAgb2lkKTsKKworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE5MDAwMCkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCSAgIiAgICAg QU5EIE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCQkJICAiCQlTRUxFQ1QgMVxuIgorCQkJCQkJCQkJ ICAiCQlGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJCQkJCQkJCQkg ICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwY1xuIgorCQkJCQkJCQkJICAiCQlPTiBwci5w cnJlbGlkID0gcGMub2lkXG4iCisJCQkJCQkJCQkgICIJCVdIRVJFIHByLnBycmVsaWQgPSAnJXMn IEFORCBwci5wcnB1YmlkID0gcC5vaWQpXG4iLAorCQkJCQkJCQkJICBvaWQpOworCisJCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDE7Iik7CiAJCQl9CiAJCQllbHNlCiAJ CQl7CkBAIC0zMTM0LDYgKzMxNTEsMzUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3Qg Y2hhciAqc2NoZW1hbmFtZSwKIAkJCVBRY2xlYXIocmVzdWx0KTsKIAkJfQogCisJCS8qIFByaW50 IHB1YmxpY2F0aW9ucyB3aGVyZSB0aGUgdGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8K KwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19j YXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCSAgIldI RVJFIHByLnBycmVsaWQgPSAnJXMnXG4gQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJICAiT1JE RVIgQlkgMTsiLCBvaWQpOworCisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlp ZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMg PSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDApCisJCQkJcHJpbnRUYWJs ZUFkZEZvb3RlcigmY29udCwgXygiRXhjZXB0IFB1YmxpY2F0aW9uczoiKSk7CisKKwkJCS8qIE1p Z2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJZm9yIChpID0gMDsgaSA8IHR1 cGxlczsgaSsrKQorCQkJeworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wi IiwgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKKworCQkJCXByaW50VGFibGVBZGRGb290ZXIo JmNvbnQsIGJ1Zi5kYXRhKTsKKwkJCX0KKwkJCVBRY2xlYXIocmVzdWx0KTsKKwkJfQorCiAJCS8q CiAJCSAqIElmIHZlcmJvc2UsIHByaW50IE5PVCBOVUxMIGNvbnN0cmFpbnRzLgogCQkgKi8KQEAg LTY3NTMsOCArNjc5OSwxMiBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0 ZXJuKQogCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIK IAkJCQkJCQkgICJXSEVSRSBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkXG4iCiAJCQkJCQkJICAiICBB TkQgYy5vaWQgPSBwci5wcnJlbGlkXG4iCi0JCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICcl cydcbiIKLQkJCQkJCQkgICJPUkRFUiBCWSAxLDIiLCBwdWJpZCk7CisJCQkJCQkJICAiICBBTkQg cHIucHJwdWJpZCA9ICclcydcbiIsIHB1YmlkKTsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTkwMDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICIgIEFORCBOT1QgcHIucHJleGNl cHRcbiIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiT1JERVIgQlkgMSwyIik7CiAJ CQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlczoiKSwgZmFs c2UsICZjb250KSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKIApAQCAtNjc3Miw2ICs2ODIyLDIz IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCWdvdG8g ZXJyb3JfcmV0dXJuOwogCQkJfQogCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTkwMDAwKQorCQkJeworCQkJCS8qIEdldCB0YWJsZXMgaW4gdGhlIEVYQ0VQVCBjbGF1 c2UgZm9yIHRoaXMgcHVibGljYXRpb24gKi8KKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCQkgICJTRUxFQ1QgY29uY2F0KGMucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UsICcu JywgYy5yZWxuYW1lKVxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xu IgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIg T04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAn JXMnXG4iCisJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCisJCQkJCQkJCSAgIk9SREVS IEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVm LCBfKCJFeGNlcHQgdGFibGVzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQln b3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQu cXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNv bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDhiOTFiYzAwMDYyLi4zOTQwNGVhMGY2OSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMzY2OSw3ICszNjY5LDE3IEBAIG1hdGNoX3ByZXZp b3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlDT01QTEVURV9XSVRIKCJU QUJMRVMiLCAiU0VRVUVOQ0VTIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIpKQotCQlDT01QTEVURV9X SVRIKCJXSVRIICgiKTsKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUIFRBQkxFICgiLCAiV0lUSCAo Iik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFC TEUgKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIikpCisJCUNPTVBM RVRFX1dJVEgoIigiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIo IikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxl cyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiLCAiKCIsIE1hdGNoQW55 TikgJiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRF IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENF UFQiLCAiVEFCTEUiLCAiKCIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcp KQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRFX1dJVEgo IklOIFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93 ZCwgJywnKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCAzNjhiZWNjYTg5 OS4uOGQ2OTUyNzY4MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE0 NiwxNiArMTQ2LDE4IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbwogCVJlbGF0 aW9uCXJlbGF0aW9uOwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCUxpc3QJICAgKmNvbHVtbnM7 CisJYm9vbAkJZXhjZXB0OwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIGV4dGVybiBQdWJsaWNh dGlvbiAqR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0 UHVibGljYXRpb25CeU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsK LWV4dGVybiBMaXN0ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJu IGJvb2wgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBMaXN0ICoqcHViaWRzLCBM aXN0ICoqZXhjZXB0X3B1Ymlkcyk7CiAKIC8qLS0tLS0tLS0tCi0gKiBFeHBlY3RlZCB2YWx1ZXMg Zm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZiBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucygpLAot ICogd2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaCBwYXJ0aXRpb25zIG9mIHBh cnRpdGlvbmVkIHRhYmxlcwotICogbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB0aGV5IGV4 cGVjdCB0byBzZWUuCisgKiBFeHBlY3RlZCB2YWx1ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRl ciBvZgorICogR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucygpLCB3aGljaCBhbGxvd3Mg Y2FsbGVycyB0byBzcGVjaWZ5IHdoaWNoCisgKiBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRh YmxlcyBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uIHRoZXkgZXhwZWN0IHRvCisgKiBzZWUu CiAgKgogICoJUk9PVDoJb25seSB0aGUgdGFibGUgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhl IHB1YmxpY2F0aW9uCiAgKglMRUFGOglvbmx5IGxlYWYgcGFydGl0aW9ucyBpbiBnaXZlbiB0cmVl CkBAIC0xNjgsOSArMTcwLDEyIEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvblBhcnRPcHQKIAlQ VUJMSUNBVElPTl9QQVJUX0FMTCwKIH0gUHVibGljYXRpb25QYXJ0T3B0OwogCi1leHRlcm4gTGlz dCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3QgKkdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlv bnMoT2lkIHB1YmlkLAorCQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KTsKK2V4dGVybiBMaXN0ICpHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKE9pZCBwdWJpZCwK KwkJCQkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlz dCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwotZXh0ZXJuIExpc3QgKkdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsKK2V4dGVy biBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhQdWJsaWNhdGlvbiAqcHViLCBjaGFy IHJlbGtpbmQpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQp OwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0 ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKQEAg LTE4NSw2ICsxOTAsNyBAQCBleHRlcm4gT2lkCUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRp b24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLAogCiBleHRlcm4gYm9vbCBpc19wdWJsaXNo YWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJuIGJvb2wgaXNfc2NoZW1hX3B1Ymxp Y2F0aW9uKE9pZCBwdWJpZCk7CitleHRlcm4gYm9vbCBwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2Vw dF90YWJsZShPaWQgcHViaWQpOwogZXh0ZXJuIGJvb2wgY2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9s aXN0KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQlNZW1vcnlDb250ZXh0 IG1jeHQsIEJpdG1hcHNldCAqKmNvbHMpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRp b25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAppbmRleCAzYTg3OTBlODQ4Mi4uODAy YThmNTc2YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25f cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAt MzEsNiArMzEsNyBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9u UmVsUmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcHJwdWJpZCBC S0lfTE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwog CU9pZAkJCXBycmVsaWQgQktJX0xPT0tVUChwZ19jbGFzcyk7CS8qIE9pZCBvZiB0aGUgcmVsYXRp b24gKi8KKwlib29sCQlwcmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJLyogcmVsYXRpb24gaXMgbm90 IHB1Ymxpc2hlZCAqLwogCiAjaWZkZWYJQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlm aWNhdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDgwNTQ5 M2Q4NWM1Li4xZjVmNjY3ZGRjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o CkBAIC0yMDksNyArMjA5LDQgQEAgZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQg c3ViaWQpOwogCiBleHRlcm4gaW50CUNvdW50REJTdWJzY3JpcHRpb25zKE9pZCBkYmlkKTsKIAot ZXh0ZXJuIHZvaWQgR2V0UHVibGljYXRpb25zU3RyKExpc3QgKnB1YmxpY2F0aW9ucywgU3RyaW5n SW5mbyBkZXN0LAotCQkJCQkJCSAgIGJvb2wgcXVvdGVfbGl0ZXJhbCk7Ci0KICNlbmRpZgkJCQkJ CQkvKiBQR19TVUJTQ1JJUFRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDBhZWM0 OWJkZDIyLi5iMWRlMzVkYzNlMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDI5OSw5ICs0 Mjk5LDEwIEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdAogdHlwZWRl ZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIg ICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KKwlSYW5nZVZhciAg ICpyZWxhdGlvbjsJCS8qIHB1YmxpY2F0aW9uIHJlbGF0aW9uICovCiAJTm9kZQkgICAqd2hlcmVD bGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIExpc3Qg b2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxlICovCisJYm9vbAkJZXhjZXB0OwkJCS8q IFRydWUgaWYgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCiB9IFB1YmxpY2F0aW9uVGFi bGU7CiAKIC8qCkBAIC00MzEwLDYgKzQzMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlv blRhYmxlCiB0eXBlZGVmIGVudW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQogewogCVBVQkxJQ0FU SU9OT0JKX1RBQkxFLAkJLyogQSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJM RSwJLyogQSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RB QkxFU19JTl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElDQVRJT05P QkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxlbWVudCBv ZgogCQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0aCAqLwpAQCAtNDMzOCw2ICs0MzQwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BbGxPYmpTcGVjCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlQ dWJsaWNhdGlvbkFsbE9ialR5cGUgcHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0 aW9uIG9iamVjdCAqLworCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7CS8qIHRhYmxlcyBzcGVjaWZp ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2Vu IGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oCmluZGV4IGJjOWQ0ZWNlNjcyLi4xZmVjZTc0Mzk4 ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWwuaApAQCAtMTUyLDUgKzE1Miw3IEBAIGV4dGVy biBYTG9nUmVjUHRyIExvZ2ljYWxSZXBsaWNhdGlvblNsb3RDaGVja1BlbmRpbmdXYWwoWExvZ1Jl Y1B0ciBlbmRfb2Zfd2FsLAogCQkJCQkJCQkJCQkJCQlYTG9nUmVjUHRyIHNjYW5fY3V0b2ZmX2xz bik7CiBleHRlcm4gWExvZ1JlY1B0ciBMb2dpY2FsU2xvdEFkdmFuY2VBbmRDaGVja1NuYXBTdGF0 ZShYTG9nUmVjUHRyIG1vdmV0bywKIAkJCQkJCQkJCQkJCQkgIGJvb2wgKmZvdW5kX2NvbnNpc3Rl bnRfc25hcHNob3QpOworZXh0ZXJuIHZvaWQgR2V0UHVibGljYXRpb25zU3RyKExpc3QgKnB1Ymxp Y2F0aW9ucywgU3RyaW5nSW5mbyBkZXN0LAorCQkJCQkJCSAgIGJvb2wgcXVvdGVfbGl0ZXJhbCk7 CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNh dGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRl eCA3ZmI0OWFhZjI5Yi4uOThmMjdlODQzYTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0CkBAIC0yMTMsMzMgKzIxMywxMzMgQEAgTm90LW51bGwgY29uc3RyYWlu dHM6CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBub25lICAgICAg ICAgICAgICB8IGYKICgxIHJvdykKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHVi X2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKLUNSRUFURSBUQUJMRSB0ZXN0cHVi X3RibDMgKGEgaW50KTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVS SVRTICh0ZXN0cHViX3RibDMpOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIG5vcm1hbCB0YWJsZXMKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJM RSB0ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9O TFkgdGVzdHB1Yl90YmwzOworLS0gU3BlY2lmeSB0YWJsZSBsaXN0IGluIHRoZSBFWENFUFQgY2xh dXNlIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gYW5kCistLSB0aGUgb3B0aW9uYWwg VEFCTEUga2V5d29yZC4KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSwgdGVz dHB1Yl90YmwyKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisgICAg InB1YmxpYy50ZXN0cHViX3RibDIiCisKKy0tIFNwZWNpZnkgdGFibGUgaW4gdGhlIEVYQ0VQVCBj bGF1c2Ugb2YgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg KHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAg ICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIK KworLS0gQ2hlY2sgdGhhdCB0aGUgdGFibGUgZGVzY3JpcHRpb24gc2hvd3MgdGhlIHB1YmxpY2F0 aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGluIHRoZSBFWENFUFQgY2xhdXNlCitcZCB0ZXN0 cHViX3RibDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlc3Rw dWJfdGJsMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAg ICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgbmV4 dHZhbCgndGVzdHB1Yl90YmwxX2lkX3NlcSc6OnJlZ2NsYXNzKQorIGRhdGEgICB8IHRleHQgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdHB1Yl90YmwxX3Br ZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaWQpCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJf Zm9yYWxsdGFibGVzIgorRXhjZXB0IFB1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUiCisgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl MSIKKwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90Ymwy OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJs ZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRlc3RwdWJfZm9y YWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTE7 CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIFRlc3Rz IGZvciBpbmhlcml0ZWQgdGFibGVzLCBhbmQKKy0tIEVYQ0VQVCBUQUJMRSB0ZXN0cyBmb3IgaW5o ZXJpdGVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmxfcGFyZW50IChhIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfY2hpbGQg KGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWIz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViMwogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8 IGYKIFRhYmxlczoKLSAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKLSAgICAicHVibGljLnRlc3Rw dWJfdGJsM2EiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVibGljLnRl c3RwdWJfdGJsX3BhcmVudCIKIAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJM RSBPTkxZIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWI0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViNAogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVk IGNvbHVtbnMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKLSAg ICAicHVibGljLnRlc3RwdWJfdGJsMyIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIK IAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKKy0tIExpc3QgdGhlIHBhcmVudCB0YWJsZSBpbiB0aGUg RVhDRVBUIGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCk7 CitcZFJwKyB0ZXN0cHViNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9u ZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90 YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKKy0tIEVYQ0VQVCB3 aXRoICcqJzogbGlzdCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMgaW4gdGhlIEVY Q0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRlc3RwdWI2CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg R2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4 Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVibGlj LnRlc3RwdWJfdGJsX3BhcmVudCIKKworLS0gRVhDRVBUIHdpdGggT05MWTogbGlzdCB0aGUgdGFi bGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsIGJ1dCBub3QgaXRzIGRlc2NlbmRhbnRzCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIHRl c3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjcKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAg ICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworRFJPUCBUQUJMRSB0ZXN0cHViX3RibF9wYXJlbnQsIHRlc3RwdWJfdGJsX2NoaWxkOworRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQsIHRlc3RwdWI1LCB0ZXN0cHViNiwgdGVz dHB1Yjc7CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IEVYQ0VQVCBUQUJMRSB0ZXN0cyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3Jvb3QoYSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRShhKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3BhcnQxIFBBUlRJVElPTiBPRiB0ZXN0 cHViX3Jvb3QgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKTsKK0NSRUFURSBUQUJMRSB0ZXN0 cHViX3BhcnQyIFBBUlRJVElPTiBPRiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBGUk9NICgxMDAp IFRPICgyMDApOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI4IEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAodGVzdHB1Yl9yb290KTsKK1xkUnArIHRlc3RwdWI4OworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjgKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRl ZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFi bGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl9yb290IgorCitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3BhcnQxKTsKK0VSUk9S OiAgcGFydGl0aW9uICJ0ZXN0cHViX3BhcnQxIiBjYW5ub3QgYmUgZXhjbHVkZWQgdXNpbmcgRVhD RVBUIFRBQkxFCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHVi X3Jvb3QsIHRlc3RwdWJfcGFydDEsIHRlc3RwdWJfcGFydDI7CitEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWI4OwogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKIENSRUFU RSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJl Z3Jlc3NfcHViX3NlcTE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNh dGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggODVi MDBiZDY3YzguLjJjYzVjNzFjMWJlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs CkBAIC0xMDUsMjAgKzEwNSw2NCBAQCBTRUxFQ1QgcHVibmFtZSwgcHViYWxsdGFibGVzIEZST00g cGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0ZXN0cHViX2ZvcmFsbAogXGQrIHRlc3Rw dWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIG5v cm1hbCB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gU3BlY2lmeSB0YWJsZSBs aXN0IGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24g YW5kCistLSB0aGUgb3B0aW9uYWwgVEFCTEUga2V5d29yZC4KK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFC TEUgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFi bGVzX2V4Y2VwdHRhYmxlCistLSBTcGVjaWZ5IHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlIG9m IGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHVi X3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCistLSBDaGVj ayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJl IGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK1xkIHRlc3RwdWJfdGJsMQor CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1E Uk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0 ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2No ZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogCi1DUkVBVEUgVEFCTEUg dGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0 KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMsIGFuZAorLS0g RVhDRVBUIFRBQkxFIHRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVzCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90 YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJf dGJsMzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90 YmxfcGFyZW50IChhIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfY2hpbGQgKGIgdGV4 dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWIzCitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50 OwogXGRScCsgdGVzdHB1YjQKKy0tIExpc3QgdGhlIHBhcmVudCB0YWJsZSBpbiB0aGUgRVhDRVBU IGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi NSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJw KyB0ZXN0cHViNQorLS0gRVhDRVBUIHdpdGggJyonOiBsaXN0IHRoZSB0YWJsZSBhbmQgYWxsIGl0 cyBkZXNjZW5kYW50cyBpbiB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50ICop OworXGRScCsgdGVzdHB1YjYKKy0tIEVYQ0VQVCB3aXRoIE9OTFk6IGxpc3QgdGhlIHRhYmxlIGlu IHRoZSBFWENFUFQgY2xhdXNlLCBidXQgbm90IGl0cyBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHVi X3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3RibDMs IHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKK1JF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCwg dGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwg dGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIHBhcnRpdGlv bmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEwMCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MiBQQVJUSVRJT04gT0YgdGVzdHB1Yl9y b290IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcm9vdCk7CitcZFJw KyB0ZXN0cHViODsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViOSBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgKHRlc3RwdWJfcGFydDEpOworCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRlc3RwdWJfcGFydDEsIHRlc3RwdWJfcGFydDI7 CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogCiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9u cyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vbWVzb24uYnVpbGQKaW5kZXggYTRjN2RiYWZmNTkuLjA3MjgyYWEzYzE4IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBAIHRlc3RzICs9IHsKICAg ICAgICd0LzAzNF90ZW1wb3JhbC5wbCcsCiAgICAgICAndC8wMzVfY29uZmxpY3RzLnBsJywKICAg ICAgICd0LzAzNl9zZXF1ZW5jZXMucGwnLAorICAgICAgJ3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2Vw dF90YWJsZS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFi bGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3Rh YmxlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNjFjZTFhYzk5 NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hh bmdlc19leGNlcHRfdGFibGUucGwKQEAgLTAsMCArMSwyNzYgQEAKKworIyBDb3B5cmlnaHQgKGMp IDIwMjEtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dp Y2FsIHJlcGxpY2F0aW9uIHRlc3RzIGZvciBFWENFUFQgVEFCTEUgcHVibGljYXRpb25zCit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFs aXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKK215 ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1l PXBvc3RncmVzJzsKKworIyBJbml0aWFsaXplIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vi c2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwor JG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Cisk bm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHJlc3VsdDsKKworc3ViIHRlc3RfZXhjZXB0 X3Jvb3RfcGFydGl0aW9uCit7CisJbXkgJHB1YnZpYXJvb3QgPSBAXzsKKworCSMgV2hlbiB0aGUg cm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBpcyBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsCisJ IyBhbGwgaXRzIHBhcnRpdGlvbnMgYXJlIG5vdCBwdWJsaXNoZWQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxKAorCQlDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lUSCAocHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAkcHVidmlhcm9vdCk7CisJCUlOU0VSVCBJTlRPIHNj aDEudDEgVkFMVUVTICgxKSwgKDEwMSksICgxNTEpOworCSkpOworCSRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3Bh cnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3Bh cnQiCisJKTsKKwkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygk bm9kZV9wdWJsaXNoZXIsCisJCSd0YXBfc3ViX3BhcnQnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0 aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKwkp OworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5U TyBzY2gxLnQxIFZBTFVFUyAoMiksICgxMDIpLCAoMTUyKSIpOworCisJIyBWZXJpZnkgdGhhdCBk YXRhIGluc2VydGVkIGludG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQg d2hlbgorCSMgaXQgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UuCisJJHJlc3VsdCA9ICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgPSAwIEZS T00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwg TlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHVi X3BhcnQnKSIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1 Yl9wYXJ0Jyk7CisKKwkjIENoZWNrIHRoYXQgbm8gcm93cyBhcmUgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworCWlzKCRyZXN1bHQsIHFxKCksICdjaGVj ayByb3dzIG9uIHJvb3QgdGFibGUnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKKwlp cygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CisKKwkk cmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUICogRlJPTSBzY2gxLnBhcnQyIik7CisJaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mg b24gdGFibGUgc2NoMS5wYXJ0MicpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8xIik7CisJ aXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8xJyk7CisK KwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzIiKTsKKwlpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sg cm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzInKTsKKworCSRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7CisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFw X3B1Yl9wYXJ0OyIpOworfQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisjIEVYQ0VQVCBUQUJMRSB0ZXN0IGNhc2VzIGZvciBub3JtYWwgdGFibGVzCisj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIENyZWF0ZSBz Y2hlbWFzIGFuZCB0YWJsZXMgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxF IHNjaDEudGFiMSBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGE7CispKTsKKwor IyBDcmVhdGUgc2NoZW1hcyBhbmQgdGFibGVzIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJ Q1JFQVRFIFRBQkxFIHNjaDEudGFiMSAoYSBpbnQpOworKSk7CisKKyMgU2V0dXAgbG9naWNhbCBy ZXBsaWNhdGlvbiwgYW5kIGNyZWF0ZSBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCB0byBoZWxw IHdpdGgKKyMgbGF0ZXIgdGVzdHMuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFIChzY2gxLnRhYjEpIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Ns b3QoJ3Rlc3Rfc2xvdCcsICdwZ291dHB1dCcpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIENP Tk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEi CispOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwKKwkn dGFwX3N1Yl9zY2hlbWEnKTsKKworIyBDaGVjayB0aGUgdGFibGUgZGF0YSBkb2VzIG5vdCBzeW5j IGZvciB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgY2xhdXNlCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdjaGVjayB0aGVyZSBpcyBu byBpbml0aWFsIGRhdGEgY29waWVkIGZvciB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiB0aGUgZXhj ZXB0IGNsYXVzZScKKyk7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YSBpbnRvIHRoZSB0YWJsZSBsaXN0 ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDEx LDIwKSkiKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIGludG8gYSB0YWJsZSBsaXN0 ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgaXMgbm90CisjIHB1Ymxpc2hlZC4KKyRyZXN1bHQgPSAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikg PSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygndGVzdF9zbG90Jywg TlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlvbl9uYW1lcycsICd0 YXBfc3ViX3NjaGVtYScpIgorKTsKK2lzKCRyZXN1bHQsIHFxKHQpLAorCSd2ZXJpZnkgbm8gY2hh bmdlcyBmb3IgdGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGFyZSBwcmVzZW50IGlu IHRoZSByZXBsaWNhdGlvbiBzbG90JworKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVk IGludG8gYSB0YWJsZSBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgaXMgbm90CisjIHJlcGxp Y2F0ZWQuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1h Jyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAn Y2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXInKTsKKworIyBjbGVhbnVwCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9O IHRhcF9zdWJfc2NoZW1hIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hOworCVRSVU5DQVRFIFRB QkxFIHNjaDEudGFiMTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJUUlVOQ0FURSBUQUJMRSBzY2gxLnRhYjEiKTsKKworIyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBmb3Ig cGFydGl0aW9uZWQgdGFibGVzCisjIENoZWNrIGJlaGF2aW9yIG9mIEVYQ0VQVCBUQUJMRSB3aXRo IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG9uIGEKKyMgcGFydGl0aW9uZWQgdGFibGUgYW5k IGl0cyBwYXJ0aXRpb25zLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBTZXR1cCBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgcGFydGl0aW9ucyBvbiB0aGUg cHVibGlzaGVyIHRoYXQgbWFwIHRvIG5vcm1hbAorIyB0YWJsZXMgb24gdGhlIHN1YnNjcmliZXIK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBU QUJMRSBzY2gxLnQxKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CisJQ1JFQVRFIFRBQkxF IHNjaDEucGFydDEgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MTAwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MiBQQVJUSVRJT04gT0Ygc2NoMS50MSBGT1Ig VkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOzsKKwlDUkVB VEUgVEFCTEUgc2NoMS5wYXJ0Ml8xIFBBUlRJVElPTiBPRiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMg RlJPTSAoMTAwKSBUTyAoMTUwKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8yIFBBUlRJVElP TiBPRiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTUwKSBUTyAoMjAwKTsKKykpOworCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRB QkxFIHNjaDEudDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxKGEgaW50KTsKKwlD UkVBVEUgVEFCTEUgc2NoMS5wYXJ0MihhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJf MShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMihhIGludCk7CispKTsKKwordGVz dF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ2ZhbHNlJyk7Cit0ZXN0X2V4Y2VwdF9yb290X3BhcnRp dGlvbigndHJ1ZScpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0 X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7IgorKTsKKworIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHdoZW4gYSBzdWJzY3JpcHRpb24g aXMgc3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25zCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEVSUk9SIGlmIHN1YnNjcmliaW5nIHRv IG11bHRpcGxlIHB1YmxpY2F0aW9ucyBoYXZpbmcgRVhDRVBUIFRBQkxFLgorbXkgKCRzdGRvdXQs ICRzdGRlcnIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChz Y2gxLnRhYjEpOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMiBGT1IgQUxMIFRBQkxFUyBF WENFUFQgKHNjaDEudDEpOworKSk7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRu b2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1 YjEsIHRhcF9wdWIyIgorKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9FUlJPUjogIGNhbm5vdCBj b21iaW5lIHB1YmxpY2F0aW9ucyB0aGF0IGRlZmluZSBFWENFUFQgVEFCTEUgY2xhdXNlcy4qCisu KkRFVEFJTDouKlRoZSBmb2xsb3dpbmcgcHVibGljYXRpb25zIGRlZmluZSBFWENFUFQgVEFCTEUg Y2xhdXNlczogInRhcF9wdWIxIiwgInRhcF9wdWIyIi4vLAorCSdzdWJzY3JpcHRpb24gd2l0aCBt dWx0aXBsZSBFWENFUFQgVEFCTEUgcHVibGljYXRpb24nKTsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsKKworIyBP SyB3aGVuIGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgcHViMSBFWENFUFQgVEFCTEUsIGJ1dCBpdCBp cyBpbmNsdWRlZCBieSBwdWIyCisjIEZPUiBUQUJMRQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBU QUJMRSBzY2gxLnRhYjE7CisJSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUygxKTsKKykpOwor JG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBf cHViMSwgdGFwX3B1YjIiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1YicpOworCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcShJTlNFUlQgSU5UTyBzY2gxLnRhYjEgVkFMVUVTKDIp KSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWInKTsKKworJHJl c3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCAq IEZST00gc2NoMS50YWIxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwKKwki Y2hlY2sgcmVwbGljYXRpb24gb2YgYSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBvbmUg cHVibGljYXRpb24gYnV0IGluY2x1ZGVkIGJ5IGFub3RoZXIiCispOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJRFJPUCBQVUJMSUNBVElPTiB0YXBfcHVi MjsKKwlUUlVOQ0FURSBzY2gxLnRhYjE7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcShUUlVOQ0FURSBzY2gxLnRhYjEpKTsKKworIyBPSyB3aGVuIGEgdGFi bGUgaXMgZXhjbHVkZWQgYnkgcHViMSBFWENFUFQgVEFCTEUsIGJ1dCBpdCBpcyBpbmNsdWRlZCBi eSBwdWIyCisjIEZPUiBBTEwgVEFCTEVTCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIEFMTCBUQUJM RVM7CisJSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUygxKTsKKykpOworJG5vZGVfc3Vic2Ny aWJlci0+cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViMSwgdGFwX3B1 YjIiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5v ZGVfcHVibGlzaGVyLCAndGFwX3N1YicpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcShJTlNFUlQgSU5UTyBzY2gxLnRhYjEgVkFMVUVTKDIpKSk7Ciskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWInKTsKKworJHJlc3VsdCA9ICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCAqIEZST00gc2NoMS50 YWIxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwKKwkiY2hlY2sgcmVwbGlj YXRpb24gb2YgYSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBvbmUgcHVibGljYXRpb24g YnV0IGluY2x1ZGVkIGJ5IGFub3RoZXIiCispOworCisjIEVSUk9SIGlmIEFMVEVSIFNVQlNDUklQ VElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiBjYXVzZXMgdGhlCisjIHN1YnNjcmlwdGlvbiB0 byBlbmQgdXAgd2l0aCBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgaGF2aW5nIEVYQ0VQVCBUQUJMRS4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCURST1AgUFVC TElDQVRJT04gdGFwX3B1YjI7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCAoc2NoMS50MSk7CispKTsKKworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRl cnIpID0gJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJ UFRJT04gdGFwX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7CitsaWtlKAorCSRzdGRlcnIsCisJ cXIvRVJST1I6ICBjYW5ub3QgY29tYmluZSBwdWJsaWNhdGlvbnMgdGhhdCBkZWZpbmUgRVhDRVBU IFRBQkxFIGNsYXVzZXMuKgorLipERVRBSUw6LipUaGUgZm9sbG93aW5nIHB1YmxpY2F0aW9ucyBk ZWZpbmUgRVhDRVBUIFRBQkxFIGNsYXVzZXM6ICJ0YXBfcHViMSIsICJ0YXBfcHViMiIuLywKKwkn c3Vic2NyaXB0aW9uIHdpdGggbXVsdGlwbGUgRVhDRVBUIFRBQkxFIHB1YmxpY2F0aW9uJyk7CisK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJ T04gdGFwX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RS T1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CisKKyRub2RlX3B1Ymxpc2hl ci0+c3RvcCgnZmFzdCcpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --00000000000013099b064b7797e7 Content-Type: application/octet-stream; name="v48-0002-Support-specifying-partition-tables-in-EXCEPT-cl.patch" Content-Disposition: attachment; filename="v48-0002-Support-specifying-partition-tables-in-EXCEPT-cl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlyrooau1 RnJvbSAzYWI3OGQ4MTcxNjdlZDFlZGZlYjdkZGY0OTkzZWEyODFkOTZiMTFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjMgRmViIDIwMjYgMDE6NTM6MDUgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0 OCAyLzJdIFN1cHBvcnQgc3BlY2lmeWluZyBwYXJ0aXRpb24gdGFibGVzIGluIEVYQ0VQVCBjbGF1 c2UKCkFsbG93IHBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgaW5kaXZpZHVhbCBwYXJ0aXRpb25zIHRv IGJlIGV4cGxpY2l0bHkKc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgcHVibGlj YXRpb24uCgpBZGp1c3QgbG9naWNhbCByZXBsaWNhdGlvbiBzbyB0aGF0IGJvdGggaW5pdGlhbCBk YXRhIHN5bmNocm9uaXphdGlvbiBhbmQKb25nb2luZyBjaGFuZ2UgcmVwbGljYXRpb24gY29ycmVj dGx5IGhvbm9yIGV4Y2x1c2lvbnMgaW52b2x2aW5nCnBhcnRpdGlvbmVkIHRhYmxlcy4KCk9uIHRo ZSBzdWJzY3JpYmVyIHNpZGUsIGV4dGVuZCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbygpIHRvIGNv bXB1dGUgdGhlCmVmZmVjdGl2ZSBzZXQgb2YgcmVsYXRpb25zIGZvciB0aGUgaW5pdGlhbCBDT1BZ LiBJZiBleGNsdXNpb25zIGFmZmVjdCBhCnBhcnRpdGlvbmVkIHRhYmxlLCB0aGUgcm9vdCByZWxh dGlvbiBjYW5ub3QgYWx3YXlzIGJlIHVzZWQgZGlyZWN0bHkuCkluc3RlYWQsIGRlcml2ZSB0aGUg bGlzdCBvZiBub24tZXhjbHVkZWQgbGVhZiBwYXJ0aXRpb25zIGFuZCBjb25zdHJ1Y3QgdGhlCkNP UFkgcXVlcnkgdXNpbmcgVU5JT04gQUxMIG92ZXIgdGhvc2UgcGFydGl0aW9ucy4gSWYgbm8gcmVs ZXZhbnQKZXhjbHVzaW9ucyBhcmUgcHJlc2VudCwgcmV0YWluIHRoZSBleGlzdGluZyBiZWhhdmlv ciBhbmQgY29weSBmcm9tIHRoZQpyb290IHJlbGF0aW9uIGFzIGJlZm9yZS4KLS0tCiBkb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICAgICAgfCAgIDggKy0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgICB8IDQ3MyArKysrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAg MiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAxNzkg KysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwg MTU1ICsrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAg IDYgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICAgIHwgIDEx ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgIDMg Ky0KIC4uLi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgICAgICAgICB8ICA5MSAr KysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEg KwogMTIgZmlsZXMgY2hhbmdlZCwgODkyIGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDIzYmNkYTRhZjJi Li45NjA5MDk4OGEzMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGlj YXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21s CkBAIC0yMDUsMTEgKzIwNSw5IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICB0YWJsZXMgYXJlIGV4Y2x1 ZGVkLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgRm9yIHBhcnRpdGlvbmVkIHRh Ymxlcywgb25seSB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBtYXkgYmUgc3BlY2lmaWVkCi0g ICAgICBpbiA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+LiBEb2luZyBzbyBleGNsdWRl cyB0aGUgcm9vdCB0YWJsZSBhbmQKLSAgICAgIGFsbCBvZiBpdHMgcGFydGl0aW9ucyBmcm9tIHJl cGxpY2F0aW9uLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZgotICAgICAgPGxpdGVyYWw+cHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+LiBUaGUgb3B0aW9uYWwKLSAgICAgIDxs aXRlcmFsPio8L2xpdGVyYWw+IGhhcyBubyBlZmZlY3QgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4K KyAgICAgIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIGlmIGEgdGFibGUgaXMgc3BlY2lmaWVkIGlu IEVYQ0VQVCBUQUJMRSwgdGhhdAorICAgICAgdGFibGUgYW5kIGFsbCBvZiBpdHMgcGFydGl0aW9u cyAodGhhdCBpcywgdGhlIGVudGlyZSBwYXJ0aXRpb24gc3VidHJlZQorICAgICAgcm9vdGVkIGF0 IHRoYXQgdGFibGUpIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAgICAgPC9w YXJhPgogICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGNhbiBiZSBhIGNhc2Ugd2hlcmUgYSBzdWJz Y3JpcHRpb24gaW5jbHVkZXMgbXVsdGlwbGUgcHVibGljYXRpb25zLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jCmluZGV4IDVjZDRhYzEwOGFiLi5kMGNiNzBlYTU4MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNDcyLDExICs0NzIsNiBAQCBwdWJsaWNhdGlv bl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsKIAl9CiAK LQlpZiAocHViLT5hbGx0YWJsZXMgJiYgcHJpLT5leGNlcHQgJiYgdGFyZ2V0cmVsLT5yZF9yZWwt PnJlbGlzcGFydGl0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCWVycm1zZygicGFydGl0aW9u IFwiJXNcIiBjYW5ub3QgYmUgZXhjbHVkZWQgdXNpbmcgRVhDRVBUIFRBQkxFIiwKLQkJCQkJICAg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSkpOwotCiAJY2hlY2tfcHVibGljYXRp b25fYWRkX3JlbGF0aW9uKHRhcmdldHJlbCwgcHJpKTsKIAogCS8qIFZhbGlkYXRlIGFuZCB0cmFu c2xhdGUgY29sdW1uIG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4gKi8KQEAgLTky NCw2ICs5MTksNTIgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAorLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcGFydGl0aW9uZWQg dGFibGUgaXMgZWZmZWN0aXZlbHkgZXhjbHVkZWQKKyAqIGJ5IHRoZSBFWENFUFQgbGlzdC4KKyAq CisgKiBBIHBhcnRpdGlvbmVkIHRhYmxlIGlzIGNvbnNpZGVyZWQgZXhjbHVkZWQgaWY6CisgKiAg MSkgSXQgaXMgZXhwbGljaXRseSBwcmVzZW50IGluIGV4Y2VwdGVkX3JlbGlkcywgb3IKKyAqICAy KSBBbGwgb2YgaXRzIGxlYWYgcGFydGl0aW9ucyBhcmUgcHJlc2VudCBpbiBleGNlcHRlZF9yZWxp ZHMuCisgKi8KK3N0YXRpYyBib29sCitwYXJ0aXRpb25lZF9yZWxfaXNfZWZmZWN0aXZlbHlfZXhj bHVkZWQoT2lkIHJlbGlkLCBMaXN0ICpleGNlcHRlZF9yZWxpZHMpCit7CisJTGlzdAkgICAqbGVh ZnRhYmxlcyA9IE5JTDsKKworCUFzc2VydChnZXRfcmVsX3JlbGtpbmQocmVsaWQpID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgJiYKKwkJICAgIWdldF9yZWxfcmVsaXNwYXJ0aXRpb24ocmVs aWQpKTsKKworCWlmIChleGNlcHRlZF9yZWxpZHMgPT0gTklMKQorCQlyZXR1cm4gZmFsc2U7CisK KwkvKiBFeHBsaWNpdGx5IGV4Y2x1ZGVkICovCisJaWYgKGxpc3RfbWVtYmVyX29pZChleGNlcHRl ZF9yZWxpZHMsIHJlbGlkKSkKKwkJcmV0dXJuIHRydWU7CisKKwkvKiBHZXQgYWxsIGxlYWYgcGFy dGl0aW9ucyBvZiByZWxpZCAqLworCWxlYWZ0YWJsZXMgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25S ZWxhdGlvbnMobGVhZnRhYmxlcywKKwkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfTEVBRiwK KwkJCQkJCQkJCQkJCXJlbGlkKTsKKworCS8qCisJICogSWYgYW55IGxlYWYgaXMgTk9UIHByZXNl bnQgaW4gZXhjZXB0ZWRfcmVsaWRzLCB0aGVuIHRoZSBwYXJ0aXRpb25lZAorCSAqIHRhYmxlIGlz IG5vdCBmdWxseSBleGNsdWRlZC4KKwkgKi8KKwlmb3JlYWNoX29pZChsZWFmcmVsaWQsIGxlYWZ0 YWJsZXMpCisJeworCQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRlZF9yZWxpZHMsIGxlYWZy ZWxpZCkpCisJCXsKKwkJCXBmcmVlKGxlYWZ0YWJsZXMpOworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorCXBmcmVlKGxlYWZ0YWJsZXMpOworCisJLyogQWxsIGxlYXZlcyBhcmUgZXhjbHVkZWQg Ki8KKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBhbGwgcmVsYXRpb25z IHB1Ymxpc2hlZCBieSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKICAqIHB1YmxpY2F0aW9uLgpA QCAtOTUyLDcgKzk5Myw3IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFB1YmxpY2F0aW9u ICpwdWIsIGNoYXIgcmVsa2luZCkKIAogCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04p CiAJCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBwdWJ2 aWFyb290ID8KLQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJ CQkJCSAgUFVCTElDQVRJT05fUEFSVF9BTEwgOgogCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9Q QVJUX0xFQUYpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwg QWNjZXNzU2hhcmVMb2NrKTsKQEAgLTk5Myw3ICsxMDM0LDcgQEAgR2V0QWxsUHVibGljYXRpb25S ZWxhdGlvbnMoUHVibGljYXRpb24gKnB1YiwgY2hhciByZWxraW5kKQogCiAJCQlpZiAoaXNfcHVi bGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pICYmCiAJCQkJIXJlbEZvcm0tPnJlbGlzcGFy dGl0aW9uICYmCi0JCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCisJCQkJ IXBhcnRpdGlvbmVkX3JlbF9pc19lZmZlY3RpdmVseV9leGNsdWRlZChyZWxpZCwgZXhjZXB0bGlz dCkpCiAJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0KIApAQCAt MTI0Miw2ICsxMjgzLDQyNCBAQCBwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2VwdF90YWJsZShPaWQg cHViaWQpCiAJcmV0dXJuIGZvdW5kOwogfQogCisvKiBpc19yZWxpZF9leGNlcHRlZAorICoKKyAq IENoZWNrIGlmIHRoZSByZWxhdGlvbiAncmVsaWQnIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgY2xhdXNlCisgKiBvZiB0aGUgZ2l2ZW4gcHVibGljYXRpb24uCisgKi8KK2Jv b2wKK2lzX3JlbGlkX2V4Y2VwdGVkKE9pZCByZWxpZCwgT2lkIHB1YmlkKQoreworCUhlYXBUdXBs ZQl0dXA7CisJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTIo UFVCTElDQVRJT05SRUxNQVAsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKHB1YmlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJ CUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHByZm9ybTsKKworCQlwcmZvcm0gPSAoRm9ybV9wZ19w dWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQlyZXN1bHQgPSBwcmZvcm0tPnByZXhj ZXB0OworCisJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCX0KKwlyZXR1cm4gcmVzdWx0OworfQor CisvKgorICogaXNfcmVsaWRfb3JfYW5jZXN0b3JfZXhjZXB0ZWQKKyAqCisgKiBDaGVjayBpZiB0 aGUgcmVsYXRpb24gJ3JlbGlkJyBvciBhbnkgb2YgaXRzIHBhcnRpdGlvbiBhbmNlc3RvcnMgYXJl CisgKiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiB0aGUgZ2l2 ZW4gcHVibGljYXRpb24uCisgKi8KK3N0YXRpYyBib29sCitpc19yZWxpZF9vcl9hbmNlc3Rvcl9l eGNlcHRlZChPaWQgcmVsaWQsIE9pZCBwdWJpZCkKK3sKKwlMaXN0CSAgICphbmNlc3RvcnM7CisJ Ym9vbAkJaW5fZXhjZXB0ID0gZmFsc2U7CisKKwlBc3NlcnQoZ2V0X3JlbF9yZWxpc3BhcnRpdGlv bihyZWxpZCkgJiYKKwkJICAgIVJFTEtJTkRfSEFTX1BBUlRJVElPTlMoZ2V0X3JlbF9yZWxraW5k KHJlbGlkKSkpOworCisJLyogQ2hlY2sgdGhlIHJlbGF0aW9uIGl0c2VsZiBmaXJzdCAqLworCWlm IChpc19yZWxpZF9leGNlcHRlZChyZWxpZCwgcHViaWQpKQorCQlyZXR1cm4gdHJ1ZTsKKworCS8q IENoZWNrIGlmIGFueSBhbmNlc3RvcnMgYXJlIGluIHRoZSBFWENFUFQgbGlzdC4gKi8KKwlhbmNl c3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisKKwlmb3JlYWNoX29pZChh bmNlc3RvciwgYW5jZXN0b3JzKQorCXsKKwkJaWYgKGlzX3JlbGlkX2V4Y2VwdGVkKGFuY2VzdG9y LCBwdWJpZCkpCisJCXsKKwkJCWluX2V4Y2VwdCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCX0K KworCWxpc3RfZnJlZShhbmNlc3RvcnMpOworCisJcmV0dXJuIGluX2V4Y2VwdDsKK30KKworLyoK KyAqIGlzX3JlbGlkX3B1Ymxpc2hlZAorICoKKyAqIENoZWNrIHdoZXRoZXIgYSBnaXZlbiB0YWJs ZSBvciBpdHMgc2NoZW1hIGlzIGluY2x1ZGVkIGluIHRoZSBzcGVjaWZpZWQKKyAqIHB1YmxpY2F0 aW9uLgorICovCitzdGF0aWMgYm9vbAoraXNfcmVsaWRfcHVibGlzaGVkKE9pZCByZWxpZCwgT2lk IHB1YmlkKQoreworCUhlYXBUdXBsZQl0dXA7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTIoUFVC TElDQVRJT05SRUxNQVAsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJICBPYmplY3RJ ZEdldERhdHVtKHB1YmlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCWJv b2wJCXB1Ymxpc2hlZCA9IGZhbHNlOworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwcmZvcm07 CisKKwkJcHJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsK KwkJcHVibGlzaGVkID0gIXByZm9ybS0+cHJleGNlcHQ7CisKKwkJUmVsZWFzZVN5c0NhY2hlKHR1 cCk7CisKKwkJaWYgKHB1Ymxpc2hlZCkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBT ZWFyY2hTeXNDYWNoZUV4aXN0czIoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCisJCQkJCQkJCSBP YmplY3RJZEdldERhdHVtKGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSksCisJCQkJCQkJCSBPYmpl Y3RJZEdldERhdHVtKHB1YmlkKSk7Cit9CisKKy8qCisgKiBpc19yZWxpZF9vcl9hbmNlc3Rvcl9w dWJsaXNoZWQKKyAqCisgKiBDaGVjayB3aGV0aGVyIGEgZ2l2ZW4gdGFibGUgb3IgaXRzIHNjaGVt YSBvciBhbnkgb2YgaXRzIHBhcnRpdGlvbiBhbmNlc3RvcnMsCisgKiBvciBpdHMgc2NoZW1hIGlu Y2x1ZGVkIGluIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24KKyAqLworc3RhdGljIGJvb2wKK2lz X3JlbGlkX29yX2FuY2VzdG9yX3B1Ymxpc2hlZChPaWQgcmVsaWQsIE9pZCBwdWJpZCkKK3sKKwlp ZiAoaXNfcmVsaWRfcHVibGlzaGVkKHJlbGlkLCBwdWJpZCkpCisJCXJldHVybiB0cnVlOworCWVs c2UKKwl7CisJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJl bGlkKTsKKworCQlmb3JlYWNoX29pZChhbmNfb2lkLCBhbmNlc3RvcnMpCisJCXsKKwkJCWlmIChp c19yZWxpZF9wdWJsaXNoZWQoYW5jX29pZCwgcHViaWQpKQorCQkJCXJldHVybiB0cnVlOworCQl9 CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogcGdfZ2V0X3B1YmxpY2F0aW9uX2Vm ZmVjdGl2ZV90YWJsZXMKKyAqCisgKiBHaXZlbiBhIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgYW5k IGEgbGlzdCBvZiBwdWJsaWNhdGlvbnMsIGNhbGN1bGF0ZSB0aGUgc2V0CisgKiBvZiByZWxhdGlv bnMgdGhhdCBhcmUgZWZmZWN0aXZlbHkgcHVibGlzaGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IK KyAqICJGT1IgQUxMIFRBQkxFUyIgcHVibGljYXRpb25zIHRoYXQgdXNlICJFWENFUFQgVEFCTEUi IGZpbHRlcnMuCisgKgorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBtaW5pbWFsIHNldCBvZiBy ZWxhdGlvbnMgdGhhdCBjb2xsZWN0aXZlbHkKKyAqIGluY2x1ZGUgYWxsIG5vbi1leGNsdWRlZCBs ZWFmIHBhcnRpdGlvbnMgaW4gdGhlIHBhcnRpdGlvbiBoaWVyYXJjaHkuCisgKi8KK0RhdHVtCitw Z19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZlX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQorewor CUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0eDsKKwlMaXN0CSAgICpyZXN1bHRzOworCisJaWYgKFNS Rl9JU19GSVJTVENBTEwoKSkKKwl7CisJCU9pZAkJCXJvb3RfcmVsaWQgPSBQR19HRVRBUkdfT0lE KDApOworCQlBcnJheVR5cGUgICpwdWJfbmFtZXNfYXJyYXkgPSBQR19HRVRBUkdfQVJSQVlUWVBF X1AoMSk7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwkJTGlzdAkgICAqcHViX29pZHMg PSBOSUw7CisJCURhdHVtCSAgICpwdWJfZGF0dW1zOworCQlib29sCSAgICpwdWJfbnVsbHM7CisJ CWludAkJCXB1Yl9jb3VudDsKKwkJVHVwbGVEZXNjCXR1cGRlc2M7CisJCUxpc3QJICAgKmZpbmFs X291dHB1dCA9IE5JTDsKKwkJYm9vbAkJaGFzX2NsZWFuX2FsbF90YWJsZXNfcHViID0gZmFsc2U7 CisJCUxpc3QJICAgKmV4Y2VwdF9wdWJfbmFtZXMgPSBOSUw7CisJCU9pZAkJCWV4Y2VwdF9wdWJf aWQgPSBJbnZhbGlkT2lkOworCQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJZnVuY2N0eCA9IFNSRl9G SVJTVENBTExfSU5JVCgpOworCisJCWRlY29uc3RydWN0X2FycmF5KHB1Yl9uYW1lc19hcnJheSwg VEVYVE9JRCwgLTEsIGZhbHNlLCAnaScsCisJCQkJCQkgICZwdWJfZGF0dW1zLCAmcHViX251bGxz LCAmcHViX2NvdW50KTsKKworCQkvKiBCdWlsZCB0aGUgbGlzdCBvZiBwdWJfb2lkcyAqLworCQlm b3IgKGludCBpID0gMDsgaSA8IHB1Yl9jb3VudDsgaSsrKQorCQl7CisJCQlpZiAoIXB1Yl9udWxs c1tpXSkKKwkJCXsKKwkJCQljaGFyCSAgICpwdWJuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhw dWJfZGF0dW1zW2ldKTsKKworCQkJCXB1Yl9vaWRzID0gbGFwcGVuZF9vaWQocHViX29pZHMsIGdl dF9wdWJsaWNhdGlvbl9vaWQocHVibmFtZSwgZmFsc2UpKTsKKwkJCX0KKwkJfQorCisJCS8qCisJ CSAqIERldGVybWluZSB3aGV0aGVyIHRoZSBleHBlbnNpdmUgZXhwYW5zaW9uIHN0ZXAgY2FuIGJl IHNraXBwZWQuIElmCisJCSAqIGFueSBwdWJsaWNhdGlvbiBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9uIHdpdGhvdXQgYW4gRVhDRVBUCisJCSAqIGNsYXVzZSwgdGhlIHJvb3QgcmVsYXRp b24gYWxvbmUgaXMgc3VmZmljaWVudCBhcyB0aGUgcmVzdWx0LgorCQkgKi8KKwkJZm9yZWFjaF9v aWQocHVib2lkLCBwdWJfb2lkcykKKwkJeworCQkJSGVhcFR1cGxlCXB1YlR1cDsKKwkJCUZvcm1f cGdfcHVibGljYXRpb24gcHViZm9ybTsKKworCQkJcHViVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBV QkxJQ0FUSU9OT0lELCBPYmplY3RJZEdldERhdHVtKHB1Ym9pZCkpOworCQkJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHB1YlR1cCkpCisJCQkJY29udGludWU7CisKKwkJCXB1YmZvcm0gPSAoRm9ybV9w Z19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHB1YlR1cCk7CisJCQlpZiAocHViZm9ybS0+cHViYWxs dGFibGVzKQorCQkJeworCQkJCS8qIENoZWNrIHdoZXRoZXIgdGhpcyBwdWJsaWNhdGlvbiBkZWZp bmVzIGFueSBFWENFUFQgZW50cmllcyAqLworCQkJCWlmIChwdWJsaWNhdGlvbl9oYXNfYW55X2V4 Y2VwdF90YWJsZShwdWJvaWQpKQorCQkJCXsKKwkJCQkJZXhjZXB0X3B1Yl9uYW1lcyA9IGxhcHBl bmQoZXhjZXB0X3B1Yl9uYW1lcywKKwkJCQkJCQkJCQkJICAgbWFrZVN0cmluZyhwdWJmb3JtLT5w dWJuYW1lLmRhdGEpKTsKKwkJCQkJZXhjZXB0X3B1Yl9pZCA9IHB1YmZvcm0tPm9pZDsKKwkJCQl9 CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogUHVibGljYXRpb24gaXMgRk9SIEFMTCBUQUJMRVMg d2l0aCBubyBFWENFUFQgY2xhdXNlLiAqLworCQkJCQloYXNfY2xlYW5fYWxsX3RhYmxlc19wdWIg PSB0cnVlOworCQkJCX0KKwkJCX0KKworCQkJUmVsZWFzZVN5c0NhY2hlKHB1YlR1cCk7CisJCX0K KworCQlpZiAobGlzdF9sZW5ndGgoZXhjZXB0X3B1Yl9uYW1lcykgPiAxKQorCQl7CisJCQlTdHJp bmdJbmZvCXB1Yl9uYW1lcyA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwkJCUdldFB1YmxpY2F0aW9u c1N0cihleGNlcHRfcHViX25hbWVzLCBwdWJfbmFtZXMsIHRydWUpOworCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCWVy cm1zZygiY2Fubm90IGNvbWJpbmUgcHVibGljYXRpb25zIHRoYXQgZGVmaW5lIEVYQ0VQVCBUQUJM RSBjbGF1c2VzIiksCisJCQkJCWVycmRldGFpbCgiVGhlIGZvbGxvd2luZyBwdWJsaWNhdGlvbnMg ZGVmaW5lIEVYQ0VQVCBUQUJMRSBjbGF1c2VzOiAlcy4iLAorCQkJCQkJCSAgcHViX25hbWVzLT5k YXRhKSk7CisJCX0KKworCisJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0 SWRHZXREYXR1bShyb290X3JlbGlkKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJM RSksCisJCQkJCSBlcnJtc2coInJlbGF0aW9uIHdpdGggT0lEICV1IGRvZXMgbm90IGV4aXN0Iiwg cm9vdF9yZWxpZCkpKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJCS8qIFJldHVy biByb290IGltbWVkaWF0ZWx5IGlmIG5vIGZpbHRlcmluZyBsb2dpYyBpcyBuZWVkZWQgKi8KKwkJ aWYgKGhhc19jbGVhbl9hbGxfdGFibGVzX3B1YiB8fCAhT2lkSXNWYWxpZChleGNlcHRfcHViX2lk KSB8fAorCQkJZ2V0X3JlbF9yZWxraW5kKHJvb3RfcmVsaWQpICE9IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpCisJCXsKKwkJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVu Y2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKwkJCWZpbmFsX291dHB1dCA9IGxpc3RfbWFr ZTFfb2lkKHJvb3RfcmVsaWQpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCQl9CisKKwkJLyoKKwkJICogQnVpbGQgdGhlIGVmZmVjdGl2ZSBwdWJsaWNhdGlvbiByZWxh dGlvbiBsaXN0IGZvciBhIHBhcnRpdGlvbmVkCisJCSAqIGhpZXJhcmNoeSBpbiB0aGUgcHJlc2Vu Y2Ugb2YgYW4gRVhDRVBUIHB1YmxpY2F0aW9uLgorCQkgKgorCQkgKiAxLiBDb2xsZWN0IGFsbCBs ZWFmIHBhcnRpdGlvbnMgdW5kZXIgdGhlIGdpdmVuIHJvb3QgcmVsYXRpb24uCisJCSAqCisJCSAq IDIuIENsYXNzaWZ5IGVhY2ggbGVhZiBhcyBlaXRoZXI6IC0gZXhjZXB0ZWRfbGVhdmVzOiBleHBs aWNpdGx5CisJCSAqIGV4Y2x1ZGVkIHZpYSB0aGUgRVhDRVBUIGNsYXVzZSAoZWl0aGVyIGRpcmVj dGx5IG9yIHRocm91Z2ggYW55IG9mCisJCSAqIGl0cyBhbmNlc3RvcnMpLCBvciAtIGFsbG93ZWRf bGVhdmVzOiBub3QgZXhjbHVkZWQgYW5kIHRoZXJlZm9yZQorCQkgKiBwYXJ0IG9mIHRoZSBlZmZl Y3RpdmUgcHVibGljYXRpb24gc2V0LgorCQkgKgorCQkgKiAzLiBSZS1ldmFsdWF0ZSBleGNsdWRl ZCBsZWF2ZXMgYWdhaW5zdCBvdGhlciBwdWJsaWNhdGlvbnMuIEEgbGVhZgorCQkgKiBleGNsdWRl ZCBpbiBvbmUgcHVibGljYXRpb24gbWF5IHN0aWxsIGJlIGVmZmVjdGl2ZWx5IGluY2x1ZGVkIGlm IGl0CisJCSAqIChvciBhbnkgb2YgaXRzIGFuY2VzdG9ycywgb3IgaXRzIHNjaGVtYSkgaXMgcHVi bGlzaGVkIHRocm91Z2gKKwkJICogYW5vdGhlciBwdWJsaWNhdGlvbi4gU3VjaCBsZWF2ZXMgYXJl IGFkZGVkIGJhY2sgdG8gYWxsb3dlZF9sZWF2ZXMuCisJCSAqCisJCSAqIDQuIEJvdHRvbS11cCBj b2xsYXBzZSBvZiBwYXJ0aXRpb24gYnJhbmNoZXMuIEZvciBlYWNoIHBhcnRpdGlvbmVkCisJCSAq IHRhYmxlIGluIHRoZSBoaWVyYXJjaHk6IC0gSWYgKmFsbCogb2YgaXRzIGxlYWYgcGFydGl0aW9u cyBhcmUKKwkJICogcHJlc2VudCBpbiBhbGxvd2VkX2xlYXZlcywgdGhlIHBhcmVudCBjYW4gcmVw cmVzZW50IHRoZSBlbnRpcmUKKwkJICogYnJhbmNoLiAtIFN1Y2ggcGFyZW50cyBhcmUgYWRkZWQg YXMgY2FuZGlkYXRlcywgYWxsb3dpbmcKKwkJICogaGlnaGVyLWxldmVsIHJlcHJlc2VudGF0aW9u IGluc3RlYWQgb2YgbGlzdGluZyBldmVyeSBsZWFmCisJCSAqIGluZGl2aWR1YWxseS4KKwkJICoK KwkJICogNS4gRGVkdXBsaWNhdGUgYW5kIG5vcm1hbGl6ZSB0aGUgcmVzdWx0LiBSZW1vdmUgYW55 IHJlbGF0aW9uIHdob3NlCisJCSAqIGFuY2VzdG9yIGlzIGFscmVhZHkgc2VsZWN0ZWQgYXMgYSBj YW5kaWRhdGUuIFRoaXMgZW5zdXJlcyB0aGUgZmluYWwKKwkJICogb3V0cHV0IGNvbnRhaW5zIG9u bHkgdGhlIGhpZ2hlc3QtbGV2ZWwgcmVwcmVzZW50YXRpdmUgZm9yIGVhY2gKKwkJICogZnVsbHkt YWxsb3dlZCBicmFuY2ggYW5kIGF2b2lkcyByZWR1bmRhbnQgZW50cmllcy4KKwkJICoKKwkJICog VGhlIGZpbmFsX291dHB1dCB0aGVyZWZvcmUgY29udGFpbnMgYSBtaW5pbWFsLCBub24tcmVkdW5k YW50IHNldCBvZgorCQkgKiByZWxhdGlvbnMgdGhhdCBhY2N1cmF0ZWx5IHJlcHJlc2VudHMgdGhl IGVmZmVjdGl2ZSBwdWJsaWNhdGlvbiBzZXQKKwkJICogYWZ0ZXIgY29uc2lkZXJpbmcgRVhDRVBU IHJ1bGVzIGFuZCBtdWx0aXBsZSBwdWJsaWNhdGlvbnMuCisJCSAqLworCQllbHNlCisJCXsKKwkJ CUxpc3QJICAgKmFsbF90YWJsZXM7CisJCQlMaXN0CSAgICphbGxfbGVhdmVzID0gTklMOworCQkJ TGlzdAkgICAqZXhjZXB0ZWRfbGVhdmVzID0gTklMOworCQkJTGlzdAkgICAqYWxsb3dlZF9sZWF2 ZXMgPSBOSUw7CisJCQlMaXN0CSAgICpjYW5kaWRhdGVfbGlzdCA9IE5JTDsKKworCQkJLyogR2V0 IGFsbCB0aGUgbGVhZiByZWxhdGlvbnMgKi8KKwkJCWFsbF9sZWF2ZXMgPSBHZXRQdWJQYXJ0aXRp b25PcHRpb25SZWxhdGlvbnMoYWxsX2xlYXZlcywKKwkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05f UEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJCQlyb290X3JlbGlkKTsKKwkJCWZvcmVhY2hfb2lkKGN1 cnJfcmVsaWQsIGFsbF9sZWF2ZXMpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBBIGxlYWYgdGFibGUg aXMgY29uc2lkZXJlZCBleGNsdWRlZCBpZiBpdCwgb3IgYW55IG9mIGl0cworCQkJCSAqIGFuY2Vz dG9ycywgaXMgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIHRoZQorCQkJCSAqIHB1Ymxp Y2F0aW9uLiBPdGhlcndpc2UsIGl0IHJlbWFpbnMgcGFydCBvZiB0aGUgZWZmZWN0aXZlCisJCQkJ ICogcHVibGljYXRpb24gc2V0LgorCQkJCSAqLworCQkJCWlmIChpc19yZWxpZF9vcl9hbmNlc3Rv cl9leGNlcHRlZChjdXJyX3JlbGlkLCBleGNlcHRfcHViX2lkKSkKKwkJCQl7CisJCQkJCWJvb2wJ CXB1Ymxpc2hlZF9ieV9vdGhlcl9wdWIgPSBmYWxzZTsKKworCQkJCQkvKgorCQkJCQkgKiBBIHRh YmxlIGV4Y2x1ZGVkIGJ5IHRoZSBFWENFUFQgY2xhdXNlIG9mIG9uZQorCQkJCQkgKiBwdWJsaWNh dGlvbiBtYXkgc3RpbGwgYmUgaW5jbHVkZWQgaWYgaXQgaXMgZXhwbGljaXRseQorCQkJCQkgKiBw dWJsaXNoZWQsIG9yIHB1Ymxpc2hlZCB2aWEgaXRzIHNjaGVtYSBvciBhbnkgb2YgaXRzCisJCQkJ CSAqIGFuY2VzdG9ycywgaW4gYW5vdGhlciBwdWJsaWNhdGlvbi4KKwkJCQkJICovCisJCQkJCWZv cmVhY2hfb2lkKHB1YmlkLCBwdWJfb2lkcykKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFNr aXAgdGhlIHB1YmxpY2F0aW9uIHRoYXQgbGlzdHMgdGhpcyByZWxhdGlvbiBpbgorCQkJCQkJICog aXRzIEVYQ0VQVCBsaXN0LiBBdCBtb3N0IG9uZSBzdWNoIHB1YmxpY2F0aW9uIGNhbgorCQkJCQkJ ICogZXhpc3QsIGFzIGVuZm9yY2VkIGVhcmxpZXIuCisJCQkJCQkgKi8KKwkJCQkJCWlmIChwdWJp ZCA9PSBleGNlcHRfcHViX2lkKQorCQkJCQkJCWNvbnRpbnVlOworCisJCQkJCQlpZiAoaXNfcmVs aWRfb3JfYW5jZXN0b3JfcHVibGlzaGVkKGN1cnJfcmVsaWQsIHB1YmlkKSkKKwkJCQkJCXsKKwkJ CQkJCQlhbGxvd2VkX2xlYXZlcyA9IGxhcHBlbmRfb2lkKGFsbG93ZWRfbGVhdmVzLCBjdXJyX3Jl bGlkKTsKKwkJCQkJCQlwdWJsaXNoZWRfYnlfb3RoZXJfcHViID0gdHJ1ZTsKKwkJCQkJCQlicmVh azsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCWlmICghcHVibGlzaGVkX2J5X290aGVyX3B1YikK KwkJCQkJCWV4Y2VwdGVkX2xlYXZlcyA9IGxhcHBlbmRfb2lkKGV4Y2VwdGVkX2xlYXZlcywgY3Vy cl9yZWxpZCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJYWxsb3dlZF9sZWF2ZXMgPSBsYXBwZW5k X29pZChhbGxvd2VkX2xlYXZlcywgY3Vycl9yZWxpZCk7CisJCQl9CisKKwkJCS8qIEJvdHRvbS1V cCBDb2xsYXBzZS4gQ2hlY2sgaWYgcGFyZW50cyBjYW4gcmVwcmVzZW50IGNoaWxkcmVuICovCisJ CQlhbGxfdGFibGVzID0gZmluZF9hbGxfaW5oZXJpdG9ycyhyb290X3JlbGlkLCBBY2Nlc3NTaGFy ZUxvY2ssIE5VTEwpOworCQkJY2FuZGlkYXRlX2xpc3QgPSBsaXN0X2NvcHkoYWxsb3dlZF9sZWF2 ZXMpOworCQkJZm9yZWFjaF9vaWQoY3Vycl9yZWxpZCwgYWxsX3RhYmxlcykKKwkJCXsKKwkJCQlM aXN0CSAgICpicmFuY2hfbGVhdmVzID0gTklMOworCQkJCWJvb2wJCWFsbF9hbGxvd2VkID0gdHJ1 ZTsKKworCQkJCS8qIE9ubHkgY29uc2lkZXIgcGFydGl0aW9uZWQgdGFibGVzIGFzIGNvbGxhcHNl IGNhbmRpZGF0ZXMgKi8KKwkJCQlpZiAoZ2V0X3JlbF9yZWxraW5kKGN1cnJfcmVsaWQpICE9IFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJCWNvbnRpbnVlOworCisJCQkJYnJhbmNoX2xl YXZlcyA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhicmFuY2hfbGVhdmVzLAorCQkJ CQkJCQkJCQkJCQkJICAgUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJCQkJICAg Y3Vycl9yZWxpZCk7CisJCQkJaWYgKGJyYW5jaF9sZWF2ZXMgPT0gTklMKQorCQkJCQljb250aW51 ZTsKKworCQkJCWZvcmVhY2hfb2lkKGxjYl9vaWQsIGJyYW5jaF9sZWF2ZXMpCisJCQkJeworCQkJ CQlpZiAoIWxpc3RfbWVtYmVyX29pZChhbGxvd2VkX2xlYXZlcywgbGNiX29pZCkpCisJCQkJCXsK KwkJCQkJCWFsbF9hbGxvd2VkID0gZmFsc2U7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0K KworCQkJCWlmIChhbGxfYWxsb3dlZCkKKwkJCQkJY2FuZGlkYXRlX2xpc3QgPSBsaXN0X2FwcGVu ZF91bmlxdWVfb2lkKGNhbmRpZGF0ZV9saXN0LAorCQkJCQkJCQkJCQkJCQkJY3Vycl9yZWxpZCk7 CisJCQl9CisKKwkJCS8qCisJCQkgKiBEZWR1cGxpY2F0ZTogRmlsdGVyIG91dCBhbnkgcmVsYXRp b24gd2hvc2UgYW5jZXN0b3IgaXMgYWxyZWFkeQorCQkJICogcHJlc2VudCBpbiB0aGUgY2FuZGlk YXRlIGxpc3QuIFRoaXMgZW5zdXJlcyB3ZSBvbmx5IHJldHVybiB0aGUKKwkJCSAqICJoaWdoZXN0 IiByZXByZXNlbnRhdGl2ZSBmb3IgZWFjaCBicmFuY2guCisJCQkgKi8KKwkJCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsK KworCQkJZm9yZWFjaF9vaWQoY3Vycl9yZWxpZCwgY2FuZGlkYXRlX2xpc3QpCisJCQl7CisJCQkJ TGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMoY3Vycl9yZWxpZCk7 CisJCQkJYm9vbAkJYW5jZXN0b3JfYWxyZWFkeV9pbmNsdWRlZCA9IGZhbHNlOworCisJCQkJLyoK KwkJCQkgKiBDaGVjayBpZiBhbnkgYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgcmVsYXRpb24gZXhp c3RzIGluIHRoZQorCQkJCSAqIGNhbmRpZGF0ZSBsaXN0LiBJZiBzbywgdGhpcyByZWxhdGlvbiBp cyByZWR1bmRhbnQuCisJCQkJICovCisJCQkJZm9yZWFjaF9vaWQoYW5jZXN0b3JfcmVsaWQsIGFu Y2VzdG9ycykKKwkJCQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoY2FuZGlkYXRlX2xpc3Qs IGFuY2VzdG9yX3JlbGlkKSkKKwkJCQkJeworCQkJCQkJYW5jZXN0b3JfYWxyZWFkeV9pbmNsdWRl ZCA9IHRydWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKworCQkJCWlmICghYW5jZXN0 b3JfYWxyZWFkeV9pbmNsdWRlZCkKKwkJCQkJZmluYWxfb3V0cHV0ID0gbGFwcGVuZF9vaWQoZmlu YWxfb3V0cHV0LCBjdXJyX3JlbGlkKTsKKworCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOworCQkJ fQorCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCX0KKworCQlvbGRj b250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5 X2N0eCk7CisJCS8qIENvbnN0cnVjdCBhIHR1cGxlIGRlc2NyaXB0b3IgZm9yIHRoZSByZXN1bHQg cm93cy4gKi8KKwkJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDIpOworCQlUdXBs ZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJuc3BuYW1lIiwKKwkJCQkJ CSAgIFRFWFRPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRy TnVtYmVyKSAyLCAicmVsbmFtZSIsCisJCQkJCQkgICBURVhUT0lELCAtMSwgMCk7CisKKwkJZnVu Y2N0eC0+dHVwbGVfZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOworCQlmdW5jY3R4LT51 c2VyX2ZjdHggPSBmaW5hbF9vdXRwdXQ7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNv bnRleHQpOworCX0KKworCS8qIFNSRiBQZXItY2FsbCBSZXN1bWUgKi8KKwlmdW5jY3R4ID0gU1JG X1BFUkNBTExfU0VUVVAoKTsKKwlyZXN1bHRzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4 OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGxpc3RfbGVuZ3RoKHJlc3VsdHMpKQorCXsK KwkJT2lkCQkJY3VycmVudF9yZWxpZCA9IGxpc3RfbnRoX29pZChyZXN1bHRzLCAoaW50KSBmdW5j Y3R4LT5jYWxsX2NudHIpOworCQlIZWFwVHVwbGUJcmV0dHVwbGU7CisJCURhdHVtCQl2YWx1ZXNb Ml07CisJCWJvb2wJCW51bGxzWzJdID0ge2ZhbHNlLCBmYWxzZX07CisKKwkJdmFsdWVzWzBdID0g Q1N0cmluZ0dldFRleHREYXR1bShnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2Uo Y3VycmVudF9yZWxpZCkpKTsKKwkJdmFsdWVzWzFdID0gQ1N0cmluZ0dldFRleHREYXR1bShnZXRf cmVsX25hbWUoY3VycmVudF9yZWxpZCkpOworCisJCXJldHR1cGxlID0gaGVhcF9mb3JtX3R1cGxl KGZ1bmNjdHgtPnR1cGxlX2Rlc2MsIHZhbHVlcywgbnVsbHMpOworCQlTUkZfUkVUVVJOX05FWFQo ZnVuY2N0eCwgSGVhcFR1cGxlR2V0RGF0dW0ocmV0dHVwbGUpKTsKKwl9CisKKwlTUkZfUkVUVVJO X0RPTkUoZnVuY2N0eCk7Cit9CisKIC8qCiAgKiBHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHRhYmxl cyBpbiB0aGUgZ2l2ZW4gcHVibGljYXRpb24gYXJyYXkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGU1YmI4OGQxZjQ2Li42ZjM1Y2IxMjk4ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMzA5OCw2ICszMDk4LDggQEAg ZmV0Y2hfcmVsYXRpb25fbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGlj YXRpb25zKQogCQkJCQkJIHB1Yl9uYW1lcy5kYXRhKTsKIAl9CiAKKwllbG9nKERFQlVHMSwgImZl dGNoX3JlbGF0aW9uX2xpc3Q6IGV4ZWN1dGluZyBxdWVyeSB0byBmZXRjaCBlZmZlY3RpdmUgcmVs YXRpb25zOiBcbiVzIiwKKwkJIGNtZC5kYXRhKTsKIAlwZnJlZShwdWJfbmFtZXMuZGF0YSk7CiAK IAlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5kYXRhLCBjb2x1bW5fY291bnQsIHRhYmxl Um93KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4 IDA0NmE1MGYyZTlhLi43NGI2MzU5MWRlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jCkBAIC03MTcsMjEgKzcxNywyOCBAQCBjb3B5X3JlYWRfZGF0YSh2 b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCkKICAqIG1lc3NhZ2UgcHJvdmlk ZXMgZHVyaW5nIHJlcGxpY2F0aW9uLgogICoKICAqIFRoaXMgZnVuY3Rpb24gYWxzbyByZXR1cm5z IChhKSB0aGUgcmVsYXRpb24gcXVhbGlmaWNhdGlvbnMgdG8gYmUgdXNlZCBpbgotICogdGhlIENP UFkgY29tbWFuZCwgYW5kIChiKSB3aGV0aGVyIHRoZSByZW1vdGUgcmVsYXRpb24gaGFzIHB1Ymxp c2hlZCBhbnkKLSAqIGdlbmVyYXRlZCBjb2x1bW4uCisgKiB0aGUgQ09QWSBjb21tYW5kLCAoYikg d2hldGhlciB0aGUgcmVtb3RlIHJlbGF0aW9uIGhhcyBwdWJsaXNoZWQgYW55CisgKiBnZW5lcmF0 ZWQgY29sdW1uLCBhbmQgKGMpIGNvbXB1dGVzIGEgbGlzdCBvZiBRdWFsaWZpZWRSZWxhdGlvbk5h bWUgdG8gYmUgdXNlZAorICogYXMgQ09QWSBzb3VyY2VzIHdoZW4gYW4gRVhDRVBUIGxpc3QgaXMg cHJlc2VudC4gV2hlbiBubyBFWENFUFQgbGlzdCBpcworICogc3BlY2lmaWVkLCB0aGUgcmV0dXJu ZWQgbGlzdCBpcyBlbXB0eSBhbmQgdGhlIHJvb3QgcmVsYXRpb24gaXMgdXNlZCBhcy1pcy4KKyAq IFdoZW4gYW4gRVhDRVBUIGxpc3QgaXMgc3BlY2lmaWVkLCB0aGUgbGlzdCBjb250YWlucyByZWxh dGlvbnMgdGhhdAorICogZG8gbm90IGFwcGVhciBpbiB0aGUgRVhDRVBUIGxpc3Q7IHRoZXNlIG11 c3QgYmUgY29tYmluZWQgdXNpbmcgVU5JT04gQUxMLgogICovCiBzdGF0aWMgdm9pZAogZmV0Y2hf cmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJl cFJlbGF0aW9uICpscmVsLAotCQkJCQkJTGlzdCAqKnF1YWwsIGJvb2wgKmdlbmNvbF9wdWJsaXNo ZWQpCisJCQkJCQlMaXN0ICoqcXVhbCwgYm9vbCAqZ2VuY29sX3B1Ymxpc2hlZCwKKwkJCQkJCUxp c3QgKiplZmZlY3RpdmVfcmVsYXRpb25zKQogewogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAlT dHJpbmdJbmZvRGF0YSBjbWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JT2lkCQkJdGFibGVS b3dbXSA9IHtPSURPSUQsIENIQVJPSUQsIENIQVJPSUR9OworCU9pZAkJCXRhYmxlUm93W10gPSB7 T0lET0lELCBDSEFST0lELCBDSEFST0lELCBCT09MT0lEfTsKIAlPaWQJCQlhdHRyUm93W10gPSB7 SU5UMk9JRCwgVEVYVE9JRCwgT0lET0lELCBCT09MT0lELCBCT09MT0lEfTsKIAlPaWQJCQlxdWFs Um93W10gPSB7VEVYVE9JRH07CisJT2lkCQkJZmlsdGVydGFibGVSb3dbXSA9IHtURVhUT0lELCBU RVhUT0lEfTsKIAlib29sCQlpc251bGw7CiAJaW50CQkJbmF0dDsKKwlib29sCQlpc19wYXJ0aXRp b247CiAJU3RyaW5nSW5mbwlwdWJfbmFtZXMgPSBOVUxMOwogCUJpdG1hcHNldCAgKmluY2x1ZGVk X2NvbHMgPSBOVUxMOwogCWludAkJCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJz aW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwpAQCAtNzQxLDcgKzc0OCw3IEBAIGZldGNoX3Jl bW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBS ZWxhdGlvbiAqbHJlbCwKIAogCS8qIEZpcnN0IGZldGNoIE9pZCBhbmQgcmVwbGljYSBpZGVudGl0 eS4gKi8KIAlpbml0U3RyaW5nSW5mbygmY21kKTsKLQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJT RUxFQ1QgYy5vaWQsIGMucmVscmVwbGlkZW50LCBjLnJlbGtpbmQiCisJYXBwZW5kU3RyaW5nSW5m bygmY21kLCAiU0VMRUNUIGMub2lkLCBjLnJlbHJlcGxpZGVudCwgYy5yZWxraW5kLCBjLnJlbGlz cGFydGl0aW9uIgogCQkJCQkgIiAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMiCiAJCQkJCSAi ICBJTk5FUiBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4iCiAJCQkJCSAiICAgICAgICBP TiAoYy5yZWxuYW1lc3BhY2UgPSBuLm9pZCkiCkBAIC03NzEsNiArNzc4LDggQEAgZmV0Y2hfcmVt b3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJl bGF0aW9uICpscmVsLAogCUFzc2VydCghaXNudWxsKTsKIAlscmVsLT5yZWxraW5kID0gRGF0dW1H ZXRDaGFyKHNsb3RfZ2V0YXR0cihzbG90LCAzLCAmaXNudWxsKSk7CiAJQXNzZXJ0KCFpc251bGwp OworCWlzX3BhcnRpdGlvbiA9IERhdHVtR2V0Qm9vbChzbG90X2dldGF0dHIoc2xvdCwgNCwgJmlz bnVsbCkpOworCUFzc2VydCghaXNudWxsKTsKIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3Qoc2xvdCk7CiAJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOwpAQCAtOTU1LDYgKzk2NCw4NCBA QCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBM b2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCiAKIAl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CiAK KwkvKgorCSAqIEVYQ0VQVCBUQUJMRSBzeW50YXggaXMgc3VwcG9ydGVkIGluIFBvc3RncmVTUUwg MTkuIEFueSBsZXZlbCBvZgorCSAqIHBhcnRpdGlvbiBtYXkgYmUgc3BlY2lmaWVkIGluIHRoZSBF WENFUFQgbGlzdC4gV2hlbiBhIHJvb3QgcGFydGl0aW9uZWQKKwkgKiB0YWJsZSBpcyBwdWJsaXNo ZWQsIHNvbWUgb2YgaXRzIHBhcnRpdGlvbnMgbWF5IGFwcGVhciBpbiB0aGUgRVhDRVBUCisJICog bGlzdCwgYW5kIHRhYmxlc3luYyBtdXN0IG5vdCBiZSBwZXJmb3JtZWQgZm9yIHRob3NlIHBhcnRp dGlvbnMuCisJICovCisJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE5MDAwMCAmJiAhaXNfcGFydGl0 aW9uICYmCisJCWxyZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwl7 CisJCXJlc2V0U3RyaW5nSW5mbygmY21kKTsKKworCQkvKgorCQkgKiBUaGlzIHF1ZXJ5IHJlY3Vy c2l2ZWx5IHRyYXZlcnNlcyB0aGUgcGFydGl0aW9uIHRyZWUgc3RhcnRpbmcgZnJvbQorCQkgKiB0 aGUgZ2l2ZW4gdGFibGUgT0lEIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGxlYWYgcmVsYXRpb25zIHNo b3VsZCBiZQorCQkgKiBpbmNsdWRlZCBmb3IgcmVwbGljYXRpb24uIEV4Y2x1c2lvbiBwcm9wYWdh dGVzIGZyb20gcGFyZW50IHRvCisJCSAqIGNoaWxkLCBhbmQgYSByZWxhdGlvbiBpcyBhbHNvIHRy ZWF0ZWQgYXMgZXhjbHVkZWQgaWYgaXQgaXMKKwkJICogZXhwbGljaXRseSBtYXJrZWQgd2l0aCBw cmV4Y2VwdCA9IHRydWUgaW4gcGdfcHVibGljYXRpb25fcmVsIGZvcgorCQkgKiB0aGUgc3BlY2lm aWVkIHB1YmxpY2F0aW9ucy4gVGhlIGZpbmFsIHJlc3VsdCByZXR1cm5zIG9ubHkgbm9uCisJCSAq IGV4Y2x1ZGVkIGxlYWYgcmVsYXRpb25zLgorCQkgKi8KKwkJYXBwZW5kU3RyaW5nSW5mbygmY21k LCAiU0VMRUNUIG5zcG5hbWUsIHJlbG5hbWUgRlJPTSBwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0 aXZlX3RhYmxlcygldSwgQVJSQVlbJXNdKTsiLAorCQkJCQkJIGxyZWwtPnJlbW90ZWlkLAorCQkJ CQkJIHB1Yl9uYW1lcy0+ZGF0YSk7CisKKwkJZWxvZyhMT0csICJFeGVjdXRpbmcgcXVlcnkgdG8g Z2V0IHRoZSBwYXJ0aXRpb24gdGFibGVzIHRvIGJlIGNvcGllZDpcbiVzIiwgY21kLmRhdGEpOwor CQlyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwKKwkJ CQkJCSAgbGVuZ3Rob2YoZmlsdGVydGFibGVSb3cpLCBmaWx0ZXJ0YWJsZVJvdyk7CisKKwkJaWYg KHJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQllcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJCQkJZXJybXNnKCJjb3Vs ZCBub3QgZ2V0IGVmZmVjdGl2ZSBpbmNsdWRlZCB0YWJsZSBsaXN0IGZvciB0YWJsZSBcIiVzLiVz XCIgZnJvbSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCSAgIG5zcG5hbWUsIHJlbG5hbWUsIHJlcy0+ ZXJyKSk7CisKKwkJLyoKKwkJICogQnVpbGQgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIHRvIGJlIHVz ZWQgYXMgQ09QWSBzb3VyY2VzLiBFYWNoIGVudHJ5CisJCSAqIGlzIHN0b3JlZCBhcyBhIFF1YWxp ZmllZFJlbGF0aW9uTmFtZSBjb250YWluaW5nIHRoZSBzY2hlbWEgbmFtZSBhbmQKKwkJICogcmVs YXRpb24gbmFtZS4KKwkJICovCisJCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVz LT50dXBsZWRlc2MsICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCQl3aGlsZSAodHVwbGVzdG9yZV9n ZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBmYWxzZSwgc2xvdCkpCisJCXsKKwkJ CVF1YWxpZmllZFJlbGF0aW9uTmFtZSAqcmVsaW5mbyA9IHBhbGxvY19vYmplY3QoUXVhbGlmaWVk UmVsYXRpb25OYW1lKTsKKworCQkJcmVsaW5mby0+bnNwbmFtZSA9IFRleHREYXR1bUdldENTdHJp bmcoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZpc251bGwpKTsKKwkJCUFzc2VydCghaXNudWxsKTsK KwkJCXJlbGluZm8tPnJlbG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihz bG90LCAyLCAmaXNudWxsKSk7CisJCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJCSplZmZlY3RpdmVf cmVsYXRpb25zID0gbGFwcGVuZCgqZWZmZWN0aXZlX3JlbGF0aW9ucywgcmVsaW5mbyk7CisKKwkJ CUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCQl9CisKKwkJLyogd2FscmN2X2NsZWFyX3Jlc3VsdChy ZXMpOyAqLworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCisJCS8qCisJ CSAqIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIGl0ZW0gaW4gdGhlIGVmZmVjdGl2ZV9yZWxhdGlv bnMgbGlzdCBhbmQgaXQKKwkJICogZXF1YWxzIHRoZSB0YWJsZSBiZWluZyBwcm9jZXNzZWQsIHRo YXQgbWVhbnMgbm8gYWN0dWFsIGV4Y2x1c2lvbgorCQkgKiBvY2N1cnJlZC4KKwkJICovCisJCWlm IChsaXN0X2xlbmd0aCgqZWZmZWN0aXZlX3JlbGF0aW9ucykgPT0gMSkKKwkJeworCQkJUXVhbGlm aWVkUmVsYXRpb25OYW1lICpyZWxpbmZvOworCisJCQlyZWxpbmZvID0gbGluaXRpYWwoKmVmZmVj dGl2ZV9yZWxhdGlvbnMpOworCQkJaWYgKHN0cmNtcChuc3BuYW1lLCByZWxpbmZvLT5uc3BuYW1l KSA9PSAwICYmCisJCQkJc3RyY21wKHJlbG5hbWUsIHJlbGluZm8tPnJlbG5hbWUpID09IDApCisJ CQl7CisJCQkJcGZyZWUocmVsaW5mby0+bnNwbmFtZSk7CisJCQkJcGZyZWUocmVsaW5mby0+cmVs bmFtZSk7CisJCQkJbGlzdF9mcmVlX2RlZXAoKmVmZmVjdGl2ZV9yZWxhdGlvbnMpOworCQkJCSpl ZmZlY3RpdmVfcmVsYXRpb25zID0gTklMOworCQkJfQorCQl9CisJfQorCiAJLyoKIAkgKiBHZXQg cmVsYXRpb24ncyByb3cgZmlsdGVyIGV4cHJlc3Npb25zLiBESVNUSU5DVCBhdm9pZHMgdGhlIHNh bWUKIAkgKiBleHByZXNzaW9uIG9mIGEgdGFibGUgaW4gbXVsdGlwbGUgcHVibGljYXRpb25zIGZy b20gYmVpbmcgaW5jbHVkZWQKQEAgLTEwMzMsNiArMTEyMCwyMSBAQCBmZXRjaF9yZW1vdGVfdGFi bGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24g KmxyZWwsCiAJcGZyZWUoY21kLmRhdGEpOwogfQogCisvKgorICogQXBwZW5kIGEgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgcXVvdGVkIGNvbHVtbiBuYW1lcyB0byBidWYuCisgKi8KK3N0YXRpYyB2 b2lkCithcHBlbmRfY29sdW1uX2xpc3QoU3RyaW5nSW5mbyBidWYsIGNoYXIgKiphdHRuYW1lcywg aW50IG5hdHRzKQoreworCWZvciAoaW50IGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwl7CisJCWlm IChpID4gMCkKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKworCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihhdHRuYW1lc1tpXSkpOwor CX0KK30KKwogLyoKICAqIENvcHkgZXhpc3RpbmcgZGF0YSBvZiBhIHRhYmxlIGZyb20gcHVibGlz aGVyLgogICoKQEAgLTEwNDQsNiArMTE0Niw3IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQog CUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsbWFwZW50cnk7CiAJTG9naWNhbFJlcFJlbGF0aW9u IGxyZWw7CiAJTGlzdAkgICAqcXVhbCA9IE5JTDsKKwlMaXN0CSAgICplZmZlY3RpdmVfcmVsYXRp b25zID0gTklMOwogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7 CiAJQ29weUZyb21TdGF0ZSBjc3RhdGU7CkBAIC0xMDU1LDcgKzExNTgsNyBAQCBjb3B5X3RhYmxl KFJlbGF0aW9uIHJlbCkKIAkvKiBHZXQgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiBpbmZvLiAqLwog CWZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5h bWVzcGFjZShyZWwpKSwKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAmbHJl bCwgJnF1YWwsCi0JCQkJCQkJJmdlbmNvbF9wdWJsaXNoZWQpOworCQkJCQkJCSZnZW5jb2xfcHVi bGlzaGVkLCAmZWZmZWN0aXZlX3JlbGF0aW9ucyk7CiAKIAkvKiBQdXQgdGhlIHJlbGF0aW9uIGlu dG8gcmVsbWFwLiAqLwogCWxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZSgmbHJlbCk7CkBAIC0xMDY3 LDkgKzExNzAsNTIgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJLyogU3RhcnQgY29weSBv biB0aGUgcHVibGlzaGVyLiAqLwogCWluaXRTdHJpbmdJbmZvKCZjbWQpOwogCisJaWYgKGxpc3Rf bGVuZ3RoKGVmZmVjdGl2ZV9yZWxhdGlvbnMpKQorCXsKKwkJYm9vbAkJZmlyc3QgPSB0cnVlOwor CisJCS8qCisJCSAqIEJ1aWxkIGEgc2luZ2xlIENPUFkgY29tbWFuZCB0byBzeW5jaHJvbml6ZSBh bGwgcmVzb2x2ZWQgcmVsYXRpb25zCisJCSAqIGludG8gdGhlIHJvb3QgdGFibGUuCisJCSAqCisJ CSAqIFRoZSBhcnJheSAnZWZmZWN0aXZlX3JlbGF0aW9ucycgY29udGFpbnMgdGhlIGxlYWYgdGFi bGVzIG9mCisJCSAqIHBhcnRpdGlvbiBoaWVyYXJjaGllcywgd2l0aCBleGNsdWRlZCBzdWJ0cmVl cyByZW1vdmVkIGFjY29yZGluZyB0bworCQkgKiB0aGUgRVhDRVBUIGNsYXVzZXMuIFRoaXMgYXBw bGllcyBvbmx5IHdoZW4KKwkJICogJ3B1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290JyBpcyBlbmFi bGVkLCBzaW5jZSB0aGUgaW5pdGlhbCBzeW5jCisJCSAqIG11c3Qgcm91dGUgYWxsIGNoYW5nZXMg dG8gdGhlIHJvb3QgdGFibGUuCisJCSAqCisJCSAqIFdlIGNvbnN0cnVjdCBhIFVOSU9OIEFMTCBx dWVyeSB0aGF0IGNvbWJpbmVzIGRhdGEgZnJvbSBtdWx0aXBsZQorCQkgKiBsZWFmIHJlbGF0aW9u cyBpbnRvIG9uZSBzdWItQ09QWSBzdGF0ZW1lbnQsIGVuc3VyaW5nIGFsbCByb3dzIGFyZQorCQkg KiBjb3BpZWQgY29uc2lzdGVudGx5IGludG8gdGhlIHJvb3QgdGFibGUuCisJCSAqLworCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJDT1BZIChcbiIpOworCQlmb3JlYWNoX3B0cihRdWFs aWZpZWRSZWxhdGlvbk5hbWUsIHJlbGluZm8sIGVmZmVjdGl2ZV9yZWxhdGlvbnMpCisJCXsKKwkJ CWlmICghZmlyc3QpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiVU5JT04gQUxM XG4iKTsKKworCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Y21kLCAiU0VMRUNUICIpOworCisJCQkvKiBJZiB0aGUgdGFibGUgaGFzIGNvbHVtbnMsIHRoZW4g c3BlY2lmeSB0aGUgY29sdW1ucyAqLworCQkJaWYgKGxyZWwubmF0dHMpCisJCQkJYXBwZW5kX2Nv bHVtbl9saXN0KCZjbWQsIGxyZWwuYXR0bmFtZXMsIGxyZWwubmF0dHMpOworCQkJZWxzZQorCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiAqICIpOworCisJCQlhcHBlbmRTdHJpbmdJ bmZvKCZjbWQsICIgRlJPTSAgJXNcbiIsCisJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlm aWVyKHJlbGluZm8tPm5zcG5hbWUsCisJCQkJCQkJCQkJCQkJCXJlbGluZm8tPnJlbG5hbWUpKTsK KwkJfQorCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIilcbiIpOworCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZjbWQsICJUTyBTVERPVVQiKTsKKwl9CiAJLyogUmVndWxhciBvciBw YXJ0aXRpb25lZCB0YWJsZSB3aXRoIG5vIHJvdyBmaWx0ZXIgb3IgZ2VuZXJhdGVkIGNvbHVtbnMg Ki8KLQlpZiAoKGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8IGxyZWwucmVsa2lu ZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQkmJiBxdWFsID09IE5JTCAmJiAhZ2Vu Y29sX3B1Ymxpc2hlZCkKKwllbHNlIGlmICgobHJlbC5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJ T04gfHwKKwkJCSAgbHJlbC5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICYm CisJCQkgcXVhbCA9PSBOSUwgJiYgIWdlbmNvbF9wdWJsaXNoZWQpCiAJewogCQlhcHBlbmRTdHJp bmdJbmZvKCZjbWQsICJDT1BZICVzIiwKIAkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmll cihscmVsLm5zcG5hbWUsIGxyZWwucmVsbmFtZSkpOwpAQCAtMTA4MywxMyArMTIyOSw3IEBAIGNv cHlfdGFibGUoUmVsYXRpb24gcmVsKQogCQkJICogWFhYIERvIHdlIG5lZWQgdG8gbGlzdCB0aGUg Y29sdW1ucyBpbiBhbGwgY2FzZXM/IE1heWJlIHdlJ3JlCiAJCQkgKiByZXBsaWNhdGluZyBhbGwg Y29sdW1ucz8KIAkJCSAqLwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBscmVsLm5hdHRzOyBpKysp Ci0JCQl7Ci0JCQkJaWYgKGkgPiAwKQotCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQs ICIsICIpOwotCi0JCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCBxdW90ZV9pZGVudGlm aWVyKGxyZWwuYXR0bmFtZXNbaV0pKTsKLQkJCX0KKwkJCWFwcGVuZF9jb2x1bW5fbGlzdCgmY21k LCBscmVsLmF0dG5hbWVzLCBscmVsLm5hdHRzKTsKIAogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo JmNtZCwgJyknKTsKIAkJfQpAQCAtMTExMCwxMyArMTI1MCw3IEBAIGNvcHlfdGFibGUoUmVsYXRp b24gcmVsKQogCQkgKiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBub3JtYWwgQ09QWS4KIAkJICov CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIkNPUFkgKFNFTEVDVCAiKTsKLQkJZm9y IChpbnQgaSA9IDA7IGkgPCBscmVsLm5hdHRzOyBpKyspCi0JCXsKLQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmNtZCwgcXVvdGVfaWRlbnRpZmllcihscmVsLmF0dG5hbWVzW2ldKSk7Ci0JCQlp ZiAoaSA8IGxyZWwubmF0dHMgLSAxKQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwg IiwgIik7Ci0JCX0KLQorCQlhcHBlbmRfY29sdW1uX2xpc3QoJmNtZCwgbHJlbC5hdHRuYW1lcywg bHJlbC5uYXR0cyk7CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiBGUk9NICIpOwog CiAJCS8qCkBAIC0xMTU4LDYgKzEyOTIsNyBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIAl9 CiAKIAlyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwg MCwgTlVMTCk7CisJZWxvZyhMT0csICJUYWJsZXN5bmMgd29ya2VyOiBFeGVjdXRpbmcgcXVlcnkg dG8gZ2V0IHRoZSBpbml0aWFsIHN5bmMgZGF0YTpcbiVzIiwgY21kLmRhdGEpOwogCXBmcmVlKGNt ZC5kYXRhKTsKIAlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX0NPUFlfT1VUKQogCQllcmVw b3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK aW5kZXggZGQzOGVlZjkzMDMuLjEzNjg2NmMzNjUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIwNzMsNiArMjA3Myw3MyBAQCBzZXRfc2NoZW1h X3NlbnRfaW5fc3RyZWFtZWRfdHhuKFJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSwgVHJhbnNhY3Rp b25JZCB4aWQpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKKy8qCisgKiBw dWJsaWNhdGlvbl9oYXNfcHVibGlzaGFibGVfcGFydGl0aW9ucworICoKKyAqIENoZWNrcyBpZiB0 aGUgcHVibGljYXRpb24gaGFzIGFueSBlZmZlY3RpdmUgZGF0YSBpbiBhIHBhcnRpdGlvbiB0cmVl LgorICogUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBsZWFmIGlzIE5PVCBleGNsdWRlZC4K KyAqLworc3RhdGljIGJvb2wKK3B1YmxpY2F0aW9uX2hhc19wdWJsaXNoYWJsZV9wYXJ0aXRpb25z KE9pZCByb290X3JlbGlkLCBPaWQgcHViaWQpCit7CisJTGlzdAkgICAqYWxsX2xlYXZlcyA9IE5J TDsKKwlMaXN0CSAgICpleGNlcHRfdGFibGVzX2luX3B1YiA9IE5JTDsKKworCUFzc2VydChnZXRf cmVsX3JlbGtpbmQocm9vdF9yZWxpZCkgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisK KwlleGNlcHRfdGFibGVzX2luX3B1YiA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHVi aWQsCisJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisKKwlpZiAoZXhjZXB0 X3RhYmxlc19pbl9wdWIgPT0gTklMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBHZXQgYWxsIGxl YWYgcmVsYXRpb25zIGluIHRoZSBoaWVyYXJjaHkgKi8KKwlhbGxfbGVhdmVzID0gR2V0UHViUGFy dGl0aW9uT3B0aW9uUmVsYXRpb25zKE5JTCwKKwkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRf TEVBRiwKKwkJCQkJCQkJCQkJCXJvb3RfcmVsaWQpOworCisJLyoKKwkgKiBUcmF2ZXJzZSBsZWF2 ZXMuIElmIHdlIGZpbmQgZXZlbiBPTkUgbGVhZiB0aGF0IGlzIG5vdCBleGNsdWRlZCBieSB0aGUK KwkgKiBwdWJsaWNhdGlvbidzIEVYQ0VQVCBsaXN0LCB0aGUgdHJlZSBpcyBlZmZlY3RpdmUuCisJ ICovCisJZm9yZWFjaF9vaWQoY3Vycl9yZWxpZCwgYWxsX2xlYXZlcykKKwl7CisJCWJvb2wJCXJl bGF0aW9uX2luX2V4Y2VwdCA9IGZhbHNlOworCQlMaXN0CSAgICphbmNlc3RvcnM7CisKKwkJLyog Q2hlY2sgaWYgdGhlIGxlYWYgaXRzZWxmIGlzIGFuIGV4Y2VwdGlvbiAqLworCQlpZiAobGlzdF9t ZW1iZXJfb2lkKGV4Y2VwdF90YWJsZXNfaW5fcHViLCBjdXJyX3JlbGlkKSkKKwkJCWNvbnRpbnVl OworCisJCS8qIENoZWNrIGlmIGFueSBhbmNlc3RvciBpcyBhbiBleGNlcHRpb24gKi8KKwkJYW5j ZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMoY3Vycl9yZWxpZCk7CisKKwkJZm9yZWFj aF9vaWQoYW5jZXN0b3IsIGFuY2VzdG9ycykKKwkJeworCQkJaWYgKGxpc3RfbWVtYmVyX29pZChl eGNlcHRfdGFibGVzX2luX3B1YiwgYW5jZXN0b3IpKQorCQkJeworCQkJCXJlbGF0aW9uX2luX2V4 Y2VwdCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlsaXN0X2ZyZWUoYW5jZXN0 b3JzKTsKKworCQkvKgorCQkgKiBJZiB0aGlzIGxlYWYgaXMgbm90IGxpc3RlZCBpbiB0aGUgRVhD RVBUIGNsYXVzZSwgdGhlIHB1YmxpY2F0aW9uCisJCSAqIGVmZmVjdGl2ZWx5IGluY2x1ZGVzIGRh dGEgZnJvbSB0aGlzIHBhcnRpdGlvbiB0cmVlLgorCQkgKi8KKwkJaWYgKCFyZWxhdGlvbl9pbl9l eGNlcHQpCisJCXsKKwkJCWxpc3RfZnJlZShhbGxfbGVhdmVzKTsKKwkJCXJldHVybiB0cnVlOwor CQl9CisJfQorCisJbGlzdF9mcmVlKGFsbF9sZWF2ZXMpOworCXJldHVybiBmYWxzZTsKK30KKwog LyoKICAqIEZpbmQgb3IgY3JlYXRlIGVudHJ5IGluIHRoZSByZWxhdGlvbiBzY2hlbWEgY2FjaGUu CiAgKgpAQCAtMjEzNCw2ICsyMjAxLDkgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0 YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWJvb2wJCWFtX3BhcnRpdGlvbiA9IGdldF9y ZWxfcmVsaXNwYXJ0aXRpb24ocmVsaWQpOwogCQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxr aW5kKHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5JTDsKKwkJYm9vbAkJ cm9vdF9wdWJsaXNoZWRfdmlhX2FsbHRhYmxlcyA9IGZhbHNlOworCQlPaWQJCQlyb290X2FuY2Vz dG9yID0gSW52YWxpZE9pZDsKKwkJTGlzdAkgICAqYW5jZXN0b3JzID0gTklMOwogCiAJCUdldFJl bGF0aW9uUHVibGljYXRpb25zKHJlbGlkLCAmcHViaWRzLCBOVUxMKTsKIApAQCAtMjIxNCw2ICsy Mjg0LDMzIEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9u IHJlbGF0aW9uKQogCQllbnRyeS0+ZXN0YXRlID0gTlVMTDsKIAkJbWVtc2V0KGVudHJ5LT5leHBy c3RhdGUsIDAsIHNpemVvZihlbnRyeS0+ZXhwcnN0YXRlKSk7CiAKKwkJLyoKKwkJICogRm9yIHBh cnRpdGlvbnMsIHByZS1kZXRlcm1pbmUgaWYgdGhlIHRvcC1tb3N0IGFuY2VzdG9yIGlzIGNvdmVy ZWQKKwkJICogYnkgYW55ICdGT1IgQUxMIFRBQkxFUycgcHVibGljYXRpb24gdGhhdCB1c2VzCisJ CSAqICdwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCcgYW5kIGFuICdFWENFUFQnIGNsYXVzZS4K KwkJICoKKwkJICogVGhpcyBwcmUtY2FsY3VsYXRpb24gaXMgdml0YWwgZm9yIHJlc29sdmluZyBv dmVybGFwIGNvbmZsaWN0czogaWYgYQorCQkgKiBwYXJ0aXRpb24gaXMgZXhjbHVkZWQgZ2xvYmFs bHkgdmlhIGFuIEVYQ0VQVCBjbGF1c2UgYnV0IGluY2x1ZGVkCisJCSAqIGV4cGxpY2l0bHkgZWxz ZXdoZXJlICh0YWJsZS9zY2hlbWEgbGV2ZWwpLCBpdCBtdXN0IHN0aWxsIGJlIHJvdXRlZAorCQkg KiB2aWEgdGhlIHJvb3QgaWRlbnRpdHkgaWYgdGhhdCByb290IGlzIHB1Ymxpc2hlZC4KKwkJICov CisJCWlmIChhbV9wYXJ0aXRpb24pCisJCXsKKwkJCWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25f YW5jZXN0b3JzKHJlbGlkKTsKKwkJCXJvb3RfYW5jZXN0b3IgPSBsbGFzdF9vaWQoYW5jZXN0b3Jz KTsKKworCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb24sIHB1YmluZm8sIGRhdGEtPnB1YmxpY2F0 aW9ucykKKwkJCXsKKwkJCQlpZiAocHViaW5mby0+YWxsdGFibGVzICYmIHB1YmluZm8tPnB1YnZp YXJvb3QgJiYKKwkJCQkJcHVibGljYXRpb25faGFzX3B1Ymxpc2hhYmxlX3BhcnRpdGlvbnMocm9v dF9hbmNlc3RvciwKKwkJCQkJCQkJCQkJCQkJICAgcHViaW5mby0+b2lkKSkKKwkJCQl7CisJCQkJ CXJvb3RfcHVibGlzaGVkX3ZpYV9hbGx0YWJsZXMgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9 CisJCQl9CisJCX0KKwogCQkvKgogCQkgKiBCdWlsZCBwdWJsaWNhdGlvbiBjYWNoZS4gV2UgY2Fu J3QgdXNlIG9uZSBwcm92aWRlZCBieSByZWxjYWNoZSBhcwogCQkgKiByZWxjYWNoZSBjb25zaWRl cnMgYWxsIHB1YmxpY2F0aW9ucyB0aGF0IHRoZSBnaXZlbiByZWxhdGlvbiBpcyBpbiwKQEAgLTIy MzYsMjggKzIzMzMsNDIgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwg UmVsYXRpb24gcmVsYXRpb24pCiAJCQkvKgogCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24KIAkJCSAqIHJvb3QgYW5kIHNldCB0 aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCisJCQkgKgorCQkJICogSWYgdGhpcyBpcyBh IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIGFuZCBpdCBoYXMgYW4gRVhDRVBUCisJCQkgKiBU QUJMRSBsaXN0OgorCQkJICoKKwkJCSAqIElmIHRoZSByZWxhdGlvbiBpcyBhIHBhcnRpdGlvbiwg Y2hlY2sgd2hldGhlciB0aGUgY3VycmVudAorCQkJICogcmVsYXRpb24gb3IgYW55IG9mIHRoZSBh bmNlc3RvcnMgaXMgaW5jbHVkZWQgaW4gdGhlIEVYQ0VQVAorCQkJICogVEFCTEUgbGlzdC4gSWYg c28sIGRvIG5vdCBwdWJsaXNoIHRoZSBjaGFuZ2UuCisJCQkgKgorCQkJICogIkRvIG5vdCBwdWJs aXNoIHRoZSBjaGFuZ2UiIGlzIGFjaGlldmVkIGJ5IGtlZXBpbmcgdGhlIHZhcmlhYmxlCisJCQkg KiAicHVibGlzaCIgc2V0IHRvIGZhbHNlLiBBbmQgZXZlbnR1YWxseSwgZW50cnktPnB1YmFjdGlv bnMgd2lsbAorCQkJICogcmVtYWluIGFsbCBmYWxzZSBmb3IgdGhpcyBwdWJsaWNhdGlvbi4KIAkJ CSAqLwogCQkJaWYgKHB1Yi0+YWxsdGFibGVzKQogCQkJewogCQkJCUxpc3QJICAgKmV4Y2VwdHB1 YmlkcyA9IE5JTDsKIAotCQkJCWlmIChhbV9wYXJ0aXRpb24gJiYgcHViLT5wdWJ2aWFyb290KQor CQkJCWlmIChhbV9wYXJ0aXRpb24pCiAJCQkJewotCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBn ZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQkJCWZvcmVhY2hfb2lkKGFuY2VzdG9y LCBhbmNlc3RvcnMpCisJCQkJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgTlVM TCwgJmV4Y2VwdHB1Ymlkcyk7CiAKLQkJCQkJcHViX3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9y cyk7Ci0JCQkJCWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJ aWYgKHB1Yi0+cHVidmlhcm9vdCkKKwkJCQkJeworCQkJCQkJcHViX3JlbGlkID0gcm9vdF9hbmNl c3RvcjsKKwkJCQkJCWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJ CQkJfQogCQkJCX0KIAotCQkJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKHB1Yl9yZWxpZCwgTlVM TCwgJmV4Y2VwdHB1Ymlkcyk7CisJCQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsIE5V TEwsICZleGNlcHRwdWJpZHMpOwogCiAJCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZXhjZXB0cHVi aWRzLCBwdWItPm9pZCkpCiAJCQkJCXB1Ymxpc2ggPSB0cnVlOwogCiAJCQkJbGlzdF9mcmVlKGV4 Y2VwdHB1Ymlkcyk7CiAJCQl9Ci0KLQkJCWlmICghcHVibGlzaCkKKwkJCWVsc2UgaWYgKCFwdWJs aXNoKQogCQkJewogCQkJCWJvb2wJCWFuY2VzdG9yX3B1Ymxpc2hlZCA9IGZhbHNlOwogCkBAIC0y MjcxLDcgKzIzODIsNiBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBS ZWxhdGlvbiByZWxhdGlvbikKIAkJCQl7CiAJCQkJCU9pZAkJCWFuY2VzdG9yOwogCQkJCQlpbnQJ CQlsZXZlbDsKLQkJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3Rv cnMocmVsaWQpOwogCiAJCQkJCWFuY2VzdG9yID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNh dGlvbihwdWItPm9pZCwKIAkJCQkJCQkJCQkJCQkJCSAgIGFuY2VzdG9ycywKQEAgLTIyOTEsNyAr MjQwMSwyNSBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlv biByZWxhdGlvbikKIAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8 CiAJCQkJCWxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAogCQkJCQlh bmNlc3Rvcl9wdWJsaXNoZWQpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBJZiB0aGUgcm9vdCBh bmNlc3RvciBpcyBlZmZlY3RpdmVseSBwdWJsaXNoZWQgYnkgYW4gQUxMCisJCQkJCSAqIFRBQkxF UyBwdWJsaWNhdGlvbiB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290LAorCQkJCQkgKiB0 aGVuIGNoYW5nZXMgZm9yIGl0cyBwYXJ0aXRpb25zIG11c3QgYmUgcHVibGlzaGVkIHVzaW5nCisJ CQkJCSAqIHRoZSByb290IGlkZW50aXR5LgorCQkJCQkgKgorCQkJCQkgKiBUaGlzIGFwcGxpZXMg ZXZlbiBpZiBvdGhlciBwdWJsaWNhdGlvbnMgZG8gbm90IHNwZWNpZnkKKwkJCQkJICogcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QsIHByb3ZpZGVkIHRoZSByb290IGlzIG5vdAorCQkJCQkgKiBl eGNsdWRlZCBmcm9tIHRoYXQgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KKwkJCQkJICovCisJCQkJ CWlmIChyb290X3B1Ymxpc2hlZF92aWFfYWxsdGFibGVzKQorCQkJCQl7CisJCQkJCQlwdWJfcmVs aWQgPSByb290X2FuY2VzdG9yOworCQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChh bmNlc3RvcnMpOworCQkJCQl9CisKIAkJCQkJcHVibGlzaCA9IHRydWU7CisJCQkJfQogCQkJfQog CiAJCQkvKgpAQCAtMjMzOSw2ICsyNDY3LDE3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCQlBc3NlcnQocHVibGlzaF9hc19y ZWxpZCA9PSBwdWJfcmVsaWQpOwogCQkJCX0KIAorCQkJCS8qCisJCQkJICogUGFydGl0aW9ucyB3 aG9zZSB0b3AtbW9zdCBhbmNlc3RvciBpcyBiZWluZyBwdWJsaXNoZWQgdmlhCisJCQkJICogYW4g J0FMTCBUQUJMRVMnIHB1YmxpY2F0aW9uIG5lZWQgbm90IGJlIGluZGl2aWR1YWxseQorCQkJCSAq IHB1Ymxpc2hlZCB2aWEgYW55IG90aGVyIHB1YmxpY2F0aW9uLiBSZXBlYXRlZCBvY2N1cnJlbmNl cworCQkJCSAqIG9mIGEgcGFydGl0aW9uIHRha2UgdGhlIGxlYXN0IHJlc3RyaWN0ZWQgZGVmaW5p dGlvbiwgd2hpY2gKKwkJCQkgKiB0aGUgJ0FMTCBUQUJMRVMnIHB1YmxpY2F0aW9uIGFsd2F5cyBw cm92aWRlcy4gSS5lLiwgYWxsCisJCQkJICogY29sdW1ucyBhbmQgYWxsIHJvd3MuCisJCQkJICov CisJCQkJaWYgKHJvb3RfcHVibGlzaGVkX3ZpYV9hbGx0YWJsZXMpCisJCQkJCWNvbnRpbnVlOwor CiAJCQkJLyogVHJhY2sgcHVibGljYXRpb25zIGZvciB0aGlzIGFuY2VzdG9yLiAqLwogCQkJCXJl bF9wdWJsaWNhdGlvbnMgPSBsYXBwZW5kKHJlbF9wdWJsaWNhdGlvbnMsIHB1Yik7CiAJCQl9CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBkYWM0MDk5MmNiYy4uMGI5NTFhM2Q2ZWEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTIzOTgsNiArMTIzOTgsMTMgQEAKICAgcHJvbmFtZSA9 PiAncGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHBy b3JldHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLAogICBwcm9zcmMg PT4gJ3BnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlJyB9LAoreyBvaWQgPT4gJzkwMDInLCBkZXNj ciA9PiAncmV0dXJuIHBhcnRpdGlvbiB0YWJsZXMgZWxpZ2libGUgZm9yIHRhYmxlc3luYyB3aGVu IHB1YmxpY2F0aW9uIHVzZXMgRVhDRVBUIGFuZCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9 IHRydWUnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZlX3RhYmxl cycsICBwcm9yb3dzID0+ICcxMDAwJywKKyAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUg PT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkIF90 ZXh0JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsX3RleHQsdGV4dCx0ZXh0fScsIHByb2Fy Z21vZGVzID0+ICd7aSxpLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3Jvb3RfcmVsaWQscHVi X25hbWVzLG5zcG5hbWUscmVsbmFtZX0nLAorICBwcm9zcmMgPT4gJ3BnX2dldF9wdWJsaWNhdGlv bl9lZmZlY3RpdmVfdGFibGVzJyB9LAogCiAjIHJscwogeyBvaWQgPT4gJzMyOTgnLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDhkNjk1Mjc2ODM3Li4yNDMwOGFkNDk1MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTkwLDYgKzE5MCw3IEBAIGV4 dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0 ICphbmNlc3RvcnMsCiAKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0 aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsK K2V4dGVybiBib29sIGlzX3JlbGlkX2V4Y2VwdGVkKE9pZCByZWxpZCwgT2lkIHB1YmlkKTsKIGV4 dGVybiBib29sIHB1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0X3RhYmxlKE9pZCBwdWJpZCk7CiBl eHRlcm4gYm9vbCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVibGljYXRpb24gKnB1Yiwg T2lkIHJlbGlkLAogCQkJCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwgQml0bWFwc2V0ICoqY29s cyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDRlY2Jk Y2ZhZGFjLi42ODlhOGY4YjhiOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKQEAgLTIzNCw2ICsyMzQsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8KIAlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CiB9IFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBRdWFsaWZpZWRSZWxhdGlvbk5h bWUKK3sKKwljaGFyCSAgICpuc3BuYW1lOworCWNoYXIJICAgKnJlbG5hbWU7Cit9IFF1YWxpZmll ZFJlbGF0aW9uTmFtZTsKKwogLyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29ya2Vy LiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElNUE9S VCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dAppbmRleCA5OGYyN2U4NDNhOC4uNmNmMjkxMjVmOWIgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0zMzYsMTAgKzMzNiwxNyBA QCBFeGNlcHQgdGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yb290IgogCiBDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Bh cnQxKTsKLUVSUk9SOiAgcGFydGl0aW9uICJ0ZXN0cHViX3BhcnQxIiBjYW5ub3QgYmUgZXhjbHVk ZWQgdXNpbmcgRVhDRVBUIFRBQkxFCitcZFJwKyB0ZXN0cHViOTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI5 CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29s dW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoK KyAgICAicHVibGljLnRlc3RwdWJfcGFydDEiCisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9wYXJ0MSwgdGVzdHB1Yl9wYXJ0MjsK LURST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4LCB0 ZXN0cHViOTsKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVB VEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5y ZWdyZXNzX3B1Yl9zZXExOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGlj YXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDJj YzVjNzFjMWJlLi41ZDhiZmFiYTA2MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bApAQCAtMTU5LDEwICsxNTksMTEgQEAgQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcGFydDIgUEFSVElU SU9OIE9GIHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDIKIENSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJf cm9vdCk7CiBcZFJwKyB0ZXN0cHViODsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViOSBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcGFydDEpOworXGRScCsgdGVzdHB1Yjk7 CiAKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwg dGVzdHB1Yl9wYXJ0MSwgdGVzdHB1Yl9wYXJ0MjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7 CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4LCB0ZXN0cHViOTsKIAogLS0tIFRlc3RzIGZvciBw dWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9z ZXEwOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2Vz X2V4Y2VwdF90YWJsZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdl c19leGNlcHRfdGFibGUucGwKaW5kZXggMzYxY2UxYWM5OTYuLmQ2NzcyZWQ2ZTkwIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxl LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRf dGFibGUucGwKQEAgLTE3OCw2ICsxNzgsNTQgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rf YWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKICk7CiAKKyMgRXhj bHVkaW5nIG9uZSBvZiB0aGUgcGFydGl0aW9ucyAocGFydDIpIHNob3VsZCBub3QgYWZmZWN0IHJl cGxpY2F0aW9uIG9mIHRoZQorIyBvdGhlciBwYXJ0aXRpb25zIHRoYXQgZG9uJ3QgaW50ZXJzZWN0 IGl0LiBTbywgaW4gdGhpcyBjYXNlLCBhbGwgb2YgcGFydDEKKyMgc2hvdWxkIHN0aWxsIGJlIHJl cGxpY2F0ZWQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgK KwlUUlVOQ0FURSBzY2gxLnQxOworCUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgzKSwgKDEw MyksICgxNTMpOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQyKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IHRydWUpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXEoCisJVFJVTkNBVEUgc2NoMS50MTsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9z dWJfcGFydCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9w dWJfcGFydDsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5 bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRp b25fc2xvdF9hZHZhbmNlKCd0ZXN0X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7IgorKTsK KworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBwYXJ0aXRpb24gcGFydDIgaXMg bm90IHB1Ymxpc2hlZCB3aGVuIGl0CisjIGlzIGluIHRoZSBFWENFUFQgY2xhdXNlCiskcmVzdWx0 ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50 KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xv dCcsIE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMn LCAndGFwX3B1Yl9wYXJ0JykiCispOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCd0YXBfc3ViX3BhcnQnKTsKKworIyBDaGVjayB0aGF0IHRhYmxlIGRhdGEgMTAzIGFuZCAxNTMg d2hpY2ggaXMgcHJlc2VudCBpbiBzY2gxLnBhcnQyIHNob3VsZAorIyBub3QgYmUgcmVwbGljYXRl ZC4KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoJHJlc3VsdCwgcXEoMyksICdjaGVjayByb3dzIG9u IHJvb3QgdGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7CitpcygkcmVzdWx0LCBxcSgp LCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0 MiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Micp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNr IHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8xJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8y Iik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzIn KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlND UklQVElPTiB0YXBfc3ViX3BhcnQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDsiKTsKKwogIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBUZXN0IHdoZW4gYSBzdWJzY3Jp cHRpb24gaXMgc3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25zCiAjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yNzEsNiArMzE5LDQ5IEBA ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJ T04gdGFwX3N1YicpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RS T1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CiAKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCBtdWx0aS1wdWJsaWNhdGlv biBzdWJzY3JpcHRpb24gd2hlcmUgYSB0YWJsZSBsaXN0ZWQgaW4gdGhlCisjIEVYQ0VQVCBjbGF1 c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGlzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcHVibGljYXRpb24K KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVRSVU5DQVRFIFRBQkxFIHNj aDEudDE7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDEgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFIChzY2gxLnBhcnQyXzEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gdHJ1ZSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDIgRk9SIFRBQkxF IHNjaDEucGFydDJfMSBXSEVSRSAoYSA+IDExMCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QgPSB0cnVlKTsKKwlJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMTEpLCAoMTA5KSwg KDExMSksICgxNjEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXEoCisJVFJVTkNBVEUgVEFCTEUgc2NoMS50MSwgc2NoMS5wYXJ0MSwgc2NoMS5wYXJ0 Miwgc2NoMS5wYXJ0Ml8xLCBzY2gxLnBhcnQyXzI7CisJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBf c3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBf cHViX3BhcnQxLCB0YXBfcHViX3BhcnQyOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKwor IyBWZXJpZnkgdGhhdCByb3dzIGZvciBzY2gxLnBhcnQyXzEgYXJlIHJlcGxpY2F0ZWQgYmVjYXVz ZSB0aGUgdGFibGUsIGFsdGhvdWdoCisjIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiB0 YXBfcHViX3BhcnQxLCBpcyBpbmNsdWRlZCBieSB0YXBfcHViX3BhcnQyLgorJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBz Y2gxLnQxIE9SREVSIEJZIDEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxMQorMTA5CisxMTEKKzE2MSks ICdpbml0aWFsIHJvd3MgcmVwbGljYXRlZCB0byByb290IHRhYmxlJyk7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVT ICgxMiksICgxMDgpLCAoMTEyKSwgKDE2Mik7Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSBPUkRFUiBC WSAxIik7CitpcyggJHJlc3VsdCwgcXEoMTEKKzEyCisxMDgKKzEwOQorMTExCisxMTIKKzE2MQor MTYyKSwgJ3N1YnNlcXVlbnQgcm93cyByZXBsaWNhdGVkIHRvIHJvb3QgdGFibGUnKTsKKwogJG5v ZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAppbmRleCAyNDE5NDU3MzRlYy4uOWM1NzZlM2MyNjcgMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CkBAIC0yNDIxLDYgKzI0MjEsNyBAQCBRVE5vZGUKIFFVRVJZVFlQRQog UXVhbENvc3QKIFF1YWxJdGVtCitRdWFsaWZpZWRSZWxhdGlvbk5hbWUKIFF1ZXJ5CiBRdWVyeUNv bXBsZXRpb24KIFF1ZXJ5RGVzYwotLSAKMi4zNC4xCgo= --00000000000013099b064b7797e7--