Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nt0Nj-0004wm-6e for pgsql-hackers@arkaria.postgresql.org; Mon, 23 May 2022 05:13:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nt0Ni-0007EI-1Z for pgsql-hackers@arkaria.postgresql.org; Mon, 23 May 2022 05:13:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nt0Nh-0007E9-4C for pgsql-hackers@lists.postgresql.org; Mon, 23 May 2022 05:13:25 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nt0Na-0006gg-Ln for pgsql-hackers@lists.postgresql.org; Mon, 23 May 2022 05:13:24 +0000 Received: by mail-ej1-x630.google.com with SMTP id gh17so13232596ejc.6 for ; Sun, 22 May 2022 22:13:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=fnp/iV/e/xysjdb449L97/ODQaiFQHquYDbyYtyIGGI=; b=PxChKDbNJyU1qd52Hy8a86zyCj5vKrk9OSpR/HoY1aenlfidtlTkj6I2kTAJ8eNYZm 4RgPBOuj7Fmx2DVSBKVQ1kj9PTW/ED6rvJk9WR4+8lo6EWQ+mxlfjAP7kUww0kp+ZPs5 /hGGZ1YF/knAly8/XJm7/vFSPUTYEm90S3WP0N11DyVCb+Uoc4T6GbyLq8DqYflAIbh7 hJHC6IUotDA6EknsrpTGfim2SZAGkoYxnzOaklrwEOujpyRnWH250HS0FoQy5EUP0LbC eRkGDJTbT9LLLtH/A/6Jn40UYDYWtD+U1M+ddBu5jOs7ZtukJa9SRq7gbyoIFx0SHSsy 9rRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=fnp/iV/e/xysjdb449L97/ODQaiFQHquYDbyYtyIGGI=; b=xqcHke75KDWgjS0//DibzJea0MkNTjZ0JoextxVys5bZ9mY3lQXst/zGpaV4wzRpDu G1EMFRM8wyxo0beuA0GSxNMF1JVvv/FSPmD4Z3ONm4aaErs0i31C4GyVafnwTuErJ9Gs TVQYP9/WoMun/PG5q9URoMroTeAD+6niAyHgV1kuLsalDcMRzmBaFsp3+6n4nWCXcE8z BpiakNi2N5/cCb0SvgWIgGI0Iu0roJwE//Zz1QR97d/PN8At4YZGOo1b7EWyo8nrJRmu wDZcV1YsuK7/qpFtC7Xx9wvXs7R6M9CDR6GXMQl9cukOqUPYnjfqvtSKeFL0fdSvfdp5 3D6Q== X-Gm-Message-State: AOAM531qXXfq19ilAOXoaah0zoWgmOELZeWCVldNTmVRZpugSuEiGFpa MSWK8+kpqMJY2iKyTYl/qYzPAU+3yXn76InafNY= X-Google-Smtp-Source: ABdhPJxvi66YYj9/lF7MXeXWyRGpuBEHq62buyEyXQq7irDO3zIJ4a3XYjKukw1KOs1JgsaNS3OvRedX14qjuEtFDh4= X-Received: by 2002:a17:907:6090:b0:6fa:14ca:fba8 with SMTP id ht16-20020a170907609000b006fa14cafba8mr18276447ejc.212.1653282796200; Sun, 22 May 2022 22:13:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Mon, 23 May 2022 10:43:03 +0530 Message-ID: Subject: Re: Skipping schema changes in publication To: Peter Smith Cc: "osumi.takamichi@fujitsu.com" , Amit Kapila , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000c82da505dfa6e565" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c82da505dfa6e565 Content-Type: text/plain; charset="UTF-8" On Sat, May 21, 2022 at 11:06 AM vignesh C wrote: > > On Fri, May 20, 2022 at 11:23 AM Peter Smith wrote: > > > > Below are my review comments for v6-0002. > > > > ====== > > > > 1. Commit message. > > The psql \d family of commands to display excluded tables. > > > > SUGGESTION > > The psql \d family of commands can now display excluded tables. > > Modified > > > ~~~ > > > > 2. doc/src/sgml/ref/alter_publication.sgml > > > > @@ -22,6 +22,7 @@ PostgreSQL documentation > > > > > > ALTER PUBLICATION name > > ADD publication_object [, > > ...] > > +ALTER PUBLICATION name > > ADD ALL TABLES [ EXCEPT [ TABLE ] exception_object [, ... ] ] > > > > The "exception_object" font is wrong. Should look the same as > > "publication_object" > > Modified > > > ~~~ > > > > 3. doc/src/sgml/ref/alter_publication.sgml - Examples > > > > @@ -214,6 +220,14 @@ ALTER PUBLICATION sales_publication ADD ALL > > TABLES IN SCHEMA marketing, sales; > > > > > > > > + > > + Alter publication production_publication to publish > > + all tables except users and > > + departments tables: > > + > > +ALTER PUBLICATION production_publication ADD ALL TABLES EXCEPT TABLE > > users, departments; > > + > > > > Consider using "EXCEPT" instead of "EXCEPT TABLE" because that will > > show TABLE keyword is optional. > > Modified > > > ~~~ > > > > 4. doc/src/sgml/ref/create_publication.sgml > > > > An SGML tag error caused building the docs to fail. My fix was > > previously reported [1]. > > Modified > > > ~~~ > > > > 5. doc/src/sgml/ref/create_publication.sgml > > > > @@ -22,7 +22,7 @@ PostgreSQL documentation > > > > > > CREATE PUBLICATION name > > - [ FOR ALL TABLES > > + [ FOR ALL TABLES [ EXCEPT [ TABLE ] exception_object [, ... ] ] > > > > The "exception_object" font is wrong. Should look the same as > > "publication_object" > > Modified > > > ~~~ > > > > 6. doc/src/sgml/ref/create_publication.sgml - Examples > > > > @@ -351,6 +366,15 @@ CREATE PUBLICATION production_publication FOR > > TABLE users, departments, ALL TABL > > CREATE PUBLICATION sales_publication FOR ALL TABLES IN SCHEMA marketing, sales; > > > > > > + > > + Create a publication that publishes all changes in all the tables except for > > + the changes of users and > > + departments table: > > + > > +CREATE PUBLICATION mypublication FOR ALL TABLE EXCEPT TABLE users, departments; > > + > > + > > + > > > > 6a. > > Typo: "FOR ALL TABLE" -> "FOR ALL TABLES" > > Modified > > > 6b. > > Consider using "EXCEPT" instead of "EXCEPT TABLE" because that will > > show TABLE keyword is optional. > > Modified > > > ~~~ > > > > 7. src/backend/catalog/pg_publication.c - GetTopMostAncestorInPublication > > > > @@ -316,18 +316,25 @@ GetTopMostAncestorInPublication(Oid puboid, List > > *ancestors, int *ancestor_level > > } > > else > > { > > - aschemaPubids = GetSchemaPublications(get_rel_namespace(ancestor)); > > - if (list_member_oid(aschemaPubids, puboid)) > > + List *aschemapubids = NIL; > > + List *aexceptpubids = NIL; > > + > > + aschemapubids = GetSchemaPublications(get_rel_namespace(ancestor)); > > + aexceptpubids = GetRelationPublications(ancestor, true); > > + if (list_member_oid(aschemapubids, puboid) || > > + (puballtables && !list_member_oid(aexceptpubids, puboid))) > > { > > > > You could re-write this as multiple conditions instead of one. That > > could avoid always assigning the 'aexceptpubids', so it might be a > > more efficient way to write this logic. > > Modified > > > ~~~ > > > > 8. src/backend/catalog/pg_publication.c - CheckPublicationDefValues > > > > +/* > > + * Check if the publication has default values > > + * > > + * Check the following: > > + * Publication is having default options > > + * Publication is not associated with relations > > + * Publication is not associated with schemas > > + * Publication is not set with "FOR ALL TABLES" > > + */ > > +static bool > > +CheckPublicationDefValues(HeapTuple tup) > > > > 8a. > > Remove the tab. Replace with spaces. > > Modified > > > 8b. > > It might be better if this comment order is the same as the logic order. > > e.g. > > > > * Check the following: > > * Publication is not set with "FOR ALL TABLES" > > * Publication is having default options > > * Publication is not associated with schemas > > * Publication is not associated with relations > > Modified > > > ~~~ > > > > 9. src/backend/catalog/pg_publication.c - AlterPublicationSetAllTables > > > > +/* > > + * Reset the publication. > > + * > > + * Reset the publication options, publication relations and > > publication schemas. > > + */ > > +static void > > +AlterPublicationSetAllTables(Relation rel, HeapTuple tup) > > > > The function comment and the function name do not seem to match here; > > something looks like a cut/paste error ?? > > Modified > > > ~~~ > > > > 10. src/backend/catalog/pg_publication.c - AlterPublicationSetAllTables > > > > + /* set all tables option */ > > + values[Anum_pg_publication_puballtables - 1] = BoolGetDatum(true); > > + replaces[Anum_pg_publication_puballtables - 1] = true; > > > > SUGGEST (comment) > > /* set all ALL TABLES flag */ > > Modified > > > ~~~ > > > > 11. src/backend/catalog/pg_publication.c - AlterPublication > > > > @@ -1501,6 +1579,20 @@ AlterPublication(ParseState *pstate, > > AlterPublicationStmt *stmt) > > aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_PUBLICATION, > > stmt->pubname); > > > > + if (stmt->for_all_tables) > > + { > > + bool isdefault = CheckPublicationDefValues(tup); > > + > > + if (!isdefault) > > + ereport(ERROR, > > + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), > > + errmsg("Setting ALL TABLES requires publication \"%s\" to have > > default values", > > + stmt->pubname), > > + errhint("Use ALTER PUBLICATION ... RESET to reset the publication")); > > > > The errmsg should start with a lowercase letter. > > Modified > > > ~~~ > > > > 12. src/backend/catalog/pg_publication.c - AlterPublication > > > > @@ -1501,6 +1579,20 @@ AlterPublication(ParseState *pstate, > > AlterPublicationStmt *stmt) > > aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_PUBLICATION, > > stmt->pubname); > > > > + if (stmt->for_all_tables) > > + { > > + bool isdefault = CheckPublicationDefValues(tup); > > + > > + if (!isdefault) > > + ereport(ERROR, > > + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), > > + errmsg("Setting ALL TABLES requires publication \"%s\" to have > > default values", > > + stmt->pubname), > > + errhint("Use ALTER PUBLICATION ... RESET to reset the publication")); > > > > Example test: > > > > postgres=# create table t1(a int); > > CREATE TABLE > > postgres=# create publication p1 for table t1; > > CREATE PUBLICATION > > postgres=# alter publication p1 add all tables except t1; > > 2022-05-20 14:34:49.301 AEST [21802] ERROR: Setting ALL TABLES > > requires publication "p1" to have default values > > 2022-05-20 14:34:49.301 AEST [21802] HINT: Use ALTER PUBLICATION ... > > RESET to reset the publication > > 2022-05-20 14:34:49.301 AEST [21802] STATEMENT: alter publication p1 > > add all tables except t1; > > ERROR: Setting ALL TABLES requires publication "p1" to have default values > > HINT: Use ALTER PUBLICATION ... RESET to reset the publication > > postgres=# alter publication p1 set all tables except t1; > > > > That error message does not quite match what the user was doing. > > Firstly, they were adding the ALL TABLES, not setting it. Secondly, > > all the values of the publication were already defaults (only there > > was an existing table t1 in the publication). Maybe some minor changes > > to the message wording can be a better reflect what the user is doing > > here. > > Modified > > > ~~~ > > > > 13. src/backend/parser/gram.y > > > > @@ -10410,7 +10411,7 @@ AlterOwnerStmt: ALTER AGGREGATE > > aggregate_with_argtypes OWNER TO RoleSpec > > * > > * CREATE PUBLICATION name [WITH options] > > * > > - * CREATE PUBLICATION FOR ALL TABLES [WITH options] > > + * CREATE PUBLICATION FOR ALL TABLES [EXCEPT TABLE table [, ...]] > > [WITH options] > > > > Comment should show the "TABLE" keyword is optional > > Modified > > > ~~~ > > > > 14. src/bin/pg_dump/pg_dump.c - dumpPublicationTable > > > > @@ -4332,6 +4380,7 @@ dumpPublicationTable(Archive *fout, const > > PublicationRelInfo *pubrinfo) > > > > appendPQExpBuffer(query, "ALTER PUBLICATION %s ADD TABLE ONLY", > > fmtId(pubinfo->dobj.name)); > > + > > appendPQExpBuffer(query, " %s", > > fmtQualifiedDumpable(tbinfo)); > > > > This additional whitespace seems unrelated to this patch > > Modified > > > ~~~ > > > > 15. src/include/nodes/parsenodes.h > > > > 15a. > > @@ -3999,6 +3999,7 @@ typedef struct PublicationTable > > RangeVar *relation; /* relation to be published */ > > Node *whereClause; /* qualifications */ > > List *columns; /* List of columns in a publication table */ > > + bool except; /* except relation */ > > } PublicationTable; > > > > Maybe the comment should be more like similar ones: > > /* exclude the relation */ > > Modified > > > 15b. > > @@ -4007,6 +4008,7 @@ typedef struct PublicationTable > > typedef enum PublicationObjSpecType > > { > > PUBLICATIONOBJ_TABLE, /* A table */ > > + PUBLICATIONOBJ_EXCEPT_TABLE, /* An Except table */ > > PUBLICATIONOBJ_TABLES_IN_SCHEMA, /* All tables in schema */ > > PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA, /* All tables in first element of > > > > Maybe the comment should be more like: > > /* A table to be excluded */ > > Modified > > > ~~~ > > > > 16. src/test/regress/sql/publication.sql > > > > I did not see any test cases using EXCEPT when the optional TABLE > > keyword is omitted. > > Added a test > > Thanks for the comments, the v7 patch attached at [1] has the changes > for the same. > [1] - https://www.postgresql.org/message-id/CALDaNm3EpX3%2BRu%3DSNaYi%3DUW5ZLE6nNhGRHZ7a8-fXPZ_-gLdxQ%40mail.gmail.com Attached v7 patch which fixes the buildfarm warning for an unused warning in release mode as in [1]. [1] - https://cirrus-ci.com/task/6220288017825792 Regards, Vignesh --000000000000c82da505dfa6e565 Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0002-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Disposition: attachment; filename="v7-0002-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3i9uth31 RnJvbSA0MjVjMzU5ODFiNTBmNTc0YzJiNWIxMDllMDdiNTQ4ODUzYWZlZGUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxNyBNYXkgMjAyMiAxMTo1MDowMCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjcg Mi8yXSBTa2lwIHB1Ymxpc2hpbmcgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4gRVhDRVBUIFRBQkxF LgoKQSBuZXcgIkVYQ0VQVCBUQUJMRSIgY2xhdXNlIGZvciBDUkVBVEUvQUxURVIgUFVCTElDQVRJ T04gYWxsb3dzIG9uZSBvcgptb3JlIHRhYmxlcyB0byBiZSBleGNsdWRlZC4gVGhlIHB1Ymxpc2hl ciB3aWxsIG5vdCBzZW5kIHRoZSBkYXRhIG9mCmV4Y2x1ZGVkIHRhYmxlcyB0byB0aGUgc3Vic2Ny aWJlci4KClRoZSBuZXcgc3ludGF4IGFsbG93cyBzcGVjaWZ5aW5nIGV4Y2x1ZGVkIHJlbGF0aW9u cyB3aGVuIGNyZWF0aW5nIG9yIGFsdGVyaW5nCmEgcHVibGljYXRpb24uIEZvciBleGFtcGxlOgpD UkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgdDEsdDI7 Cm9yCkFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHQx LHQyOwoKQSBuZXcgY29sdW1uICJwcmV4Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1Ymxp Y2F0aW9uX3JlbCIsIHRvIG1haW50YWluCnRoZSByZWxhdGlvbnMgdGhhdCB0aGUgdXNlciB3YW50 cyB0byBleGNsdWRlIGZyb20gdGhlIHB1YmxpY2F0aW9ucy4KCnBnX2R1bXAgaXMgdXBkYXRlZCB0 byBpZGVudGlmeSBhbmQgZHVtcCB0aGUgZXhjbHVkZWQgdGFibGVzIG9mIHRoZSBwdWJsaWNhdGlv bnMuCgpUaGUgcHNxbCBcZCBmYW1pbHkgb2YgY29tbWFuZHMgY2FuIG5vdyBkaXNwbGF5IGV4Y2x1 ZGVkIHRhYmxlcy4gZS5nLiBwc3FsClxkUnArIHZhcmlhbnQgd2lsbCBub3cgZGlzcGxheSBhc3Nv Y2lhdGVkICJleGNlcHQgdGFibGVzIiBpZiBhbnkuCgpCdW1wIGNhdGFsb2cgdmVyc2lvbi4KLS0t CiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwog ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA1ICstCiBk b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgICAgICAgfCAgMTggKy0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8ICAyOSArKy0KIGRv Yy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgIHwgIDcxICsrKystLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8IDE3OSArKysr KysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAg ICAgIHwgIDM5ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMgICB8ICAyNSArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAg ICAgICB8ICAxNyArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAg ICAgIHwgIDU3ICsrKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyAgICAgICAgICAg ICAgICB8ICAgNyArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAg ICAgfCAgMTIgKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICA2MiArKysrKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyAgICAgICAgICAgICAg ICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAg ICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggICAgICAg IHwgICA3ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICAgIHwg MTI1ICsrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAg ICAgICAgIHwgIDY1ICsrKysrKy0KIC4uLi90LzAzMl9yZXBfY2hhbmdlc19leGNlcHRfdGFibGUu cGwgICAgICAgICB8ICA4NSArKysrKysrKysKIDI0IGZpbGVzIGNoYW5nZWQsIDcwMiBpbnNlcnRp b25zKCspLCAxNDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDMyX3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbAoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK aW5kZXggZDk2YzcyZTUzMS4uOTg1ZWRhMTZhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY0MjYsNiAr NjQyNiwxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgaWYgdGhlcmUgaXMgbm8g cHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24uPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxkPnBy ZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhlIHJlbGF0aW9uIG11c3QgYmUgZXhjbHVkZWQK KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cHJhdHRyczwvc3RydWN0ZmllbGQ+IDx0eXBl PmludDJ2ZWN0b3I8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBs aWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRl eCAxNDVlYTcxZDYxLi5kN2Q2YmEwNTI5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKQEAgLTExNjcsOCArMTE2Nyw5IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgIDxw YXJhPgogICAgVG8gYWRkIHRhYmxlcyB0byBhIHB1YmxpY2F0aW9uLCB0aGUgdXNlciBtdXN0IGhh dmUgb3duZXJzaGlwIHJpZ2h0cyBvbiB0aGUKICAgIHRhYmxlLiBUbyBhZGQgYWxsIHRhYmxlcyBp biBzY2hlbWEgdG8gYSBwdWJsaWNhdGlvbiwgdGhlIHVzZXIgbXVzdCBiZSBhCi0gICBzdXBlcnVz ZXIuIFRvIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCB0YWJsZXMgb3Ig YWxsIHRhYmxlcyBpbgotICAgc2NoZW1hIGF1dG9tYXRpY2FsbHksIHRoZSB1c2VyIG11c3QgYmUg YSBzdXBlcnVzZXIuCisgICBzdXBlcnVzZXIuIFRvIGFkZCBhbGwgdGFibGVzIHRvIGEgcHVibGlj YXRpb24sIHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuCisgICBUbyBjcmVhdGUgYSBwdWJs aWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgdGFibGVzIG9yIGFsbCB0YWJsZXMgaW4gc2NoZW1h CisgICBhdXRvbWF0aWNhbGx5LCB0aGUgdXNlciBtdXN0IGJlIGEgc3VwZXJ1c2VyLgogICA8L3Bh cmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1Ymxp Y2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5k ZXggNDdiZDE1ZjFmYS4uODJhNGVhNGVjMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbApAQCAtMjIsNiArMjIsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICA8 cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+CiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IEFERCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4u XQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBBREQgQUxMIFRBQkxFUyBbIEVYQ0VQVCBbIFRBQkxFIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAu Li4gXSBdCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVi bGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uXQogQUxURVIgUFVCTElDQVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBEUk9QIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2Vh YmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKQpAQCAtMzMs NiArMzQsMTEgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRVNFVAogCiAgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBb ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi4gXQogICAgIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBs YWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCisKKzxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxl PiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KKwogPC9zeW5vcHNpcz4KICA8L3Jl ZnN5bm9wc2lzZGl2PgogCkBAIC04Miw4ICs4OCw4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVTRVQKIAogICA8 cGFyYT4KICAgIFlvdSBtdXN0IG93biB0aGUgcHVibGljYXRpb24gdG8gdXNlIDxjb21tYW5kPkFM VEVSIFBVQkxJQ0FUSU9OPC9jb21tYW5kPi4KLSAgIEFkZGluZyBhIHRhYmxlIHRvIGEgcHVibGlj YXRpb24gYWRkaXRpb25hbGx5IHJlcXVpcmVzIG93bmluZyB0aGF0IHRhYmxlLgotICAgVGhlIDxs aXRlcmFsPkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCisgICBBZGRpbmcgYSB0 YWJsZSB0byBvciBleGNsdWRpbmcgYSB0YWJsZSBmcm9tIGEgcHVibGljYXRpb24gYWRkaXRpb25h bGx5CisgICByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4gVGhlIDxsaXRlcmFsPkFERCBBTEwg VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0ZXJhbD5TRVQgQUxMIFRBQkxFUyBJ TiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gYW5kCiAgICA8bGl0ZXJhbD5SRVNF VDwvbGl0ZXJhbD4gb2YgcHVibGljYXRpb24gcmVxdWlyZXMgdGhlIGludm9raW5nIHVzZXIgdG8g YmUgYQogICAgc3VwZXJ1c2VyLiBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0IGFsc28gYmUg YSBkaXJlY3Qgb3IgaW5kaXJlY3QgbWVtYmVyCkBAIC0yMTQsNiArMjIwLDE0IEBAIEFMVEVSIFBV QkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSBtYXJr ZXRpbmcsIHNhbGVzOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgogCisgIDxwYXJhPgor ICAgQWx0ZXIgcHVibGljYXRpb24gPHN0cnVjdG5hbWU+cHJvZHVjdGlvbl9wdWJsaWNhdGlvbjwv c3RydWN0bmFtZT4gdG8gcHVibGlzaAorICAgYWxsIHRhYmxlcyBleGNlcHQgPHN0cnVjdG5hbWU+ dXNlcnM8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVj dG5hbWU+IHRhYmxlczoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIHByb2R1 Y3Rpb25fcHVibGljYXRpb24gQUREIEFMTCBUQUJMRVMgRVhDRVBUIHVzZXJzLCBkZXBhcnRtZW50 czsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAgIDxwYXJhPgogICAgQWRkIHRhYmxlcyA8 c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50 czwvc3RydWN0bmFtZT4gYW5kIHNjaGVtYQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0 aW9uLnNnbWwKaW5kZXggMWE4MjhlOGQyZi4uOTI5MTZiZjcyYyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0yMiw3ICsyMiw3IEBAIFBvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KIENSRUFURSBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+Ci0g ICAgWyBGT1IgQUxMIFRBQkxFUworICAgIFsgRk9SIEFMTCBUQUJMRVMgWyBFWENFUFQgWyBUQUJM RSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRpb25fb2JqZWN0PC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gXQogICAgICAgfCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdIF0KICAgICBb IFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1l dGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVl PC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkgXQogCkBAIC0zMCw2ICszMCwxMCBAQCBDUkVBVEUg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogCiAgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ ICkgXSBbLCAuLi4gXQogICAgIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVN QSB9IFssIC4uLiBdCisKKzxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmV4Y2VwdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAqIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTIwLDcg KzEyNCw5IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAg IE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9y IGFsbCB0YWJsZXMgaW4KLSAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVh dGVkIGluIHRoZSBmdXR1cmUuCisgICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMg Y3JlYXRlZCBpbiB0aGUgZnV0dXJlLiBJZgorICAgICAgPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9s aXRlcmFsPiBpcyBzcGVjaWZpZWQsIHRoZW4gZXhjbHVkZSByZXBsaWNhdGluZworICAgICAgdGhl IGNoYW5nZXMgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGVzLgogICAgICA8L3BhcmE+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTU2LDYgKzE2MiwxNiBAQCBDUkVBVEUg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMg YSBsaXN0IG9mIHRhYmxlcyB0byBleGNsdWRlIGZyb20gdGhlIHB1YmxpY2F0aW9uLgorICAgICAg SXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFs Pi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5XSVRIICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAu Li4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC0zNTEsNiArMzY3LDE1 IEBAIENSRUFURSBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEZPUiBUQUJMRSB1 c2VycywgZGVwYXJ0bWVudHMsIEFMTCBUQUJMCiBDUkVBVEUgUFVCTElDQVRJT04gc2FsZXNfcHVi bGljYXRpb24gRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3By b2dyYW1saXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9u IHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGluIGFsbCB0aGUgdGFibGVzIGV4Y2VwdCBmb3IK KyAgIHRoZSBjaGFuZ2VzIG9mIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAg IDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPiB0YWJsZXM6Cis8cHJvZ3JhbWxp c3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBGT1IgQUxMIFRBQkxFUyBF WENFUFQgdXNlcnMsIGRlcGFydG1lbnRzOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CiAgIDxwYXJhPgogICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNo YW5nZXMgZm9yIHRhYmxlIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIGJ1dCBy ZXBsaWNhdGVzIG9ubHkgY29sdW1ucyA8c3RydWN0bmFtZT51c2VyX2lkPC9zdHJ1Y3RuYW1lPiBh bmQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCA1ZmM2YjEwMzRhLi4zODg5Nzk2YjNmIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0xODY4LDggKzE4NjgsOSBAQCB0ZXN0ZGI9Jmd0OwogICAg ICAgICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFi bGU+IGlzCiAgICAgICAgIHNwZWNpZmllZCwgb25seSB0aG9zZSBwdWJsaWNhdGlvbnMgd2hvc2Ug bmFtZXMgbWF0Y2ggdGhlIHBhdHRlcm4gYXJlCiAgICAgICAgIGxpc3RlZC4KLSAgICAgICAgSWYg PGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhl IHRhYmxlcyBhbmQKLSAgICAgICAgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNh dGlvbiBhcmUgc2hvd24gYXMgd2VsbC4KKyAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4g aXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcywKKyAgICAgICAgZXhj bHVkZWQgdGFibGVzIGFuZCBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9u IGFyZSBzaG93biBhcworICAgICAgICB3ZWxsLgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uYwppbmRleCA4YzdmY2E2MmRlLi5iZTgyODJhM2MzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jCkBAIC0yOTAsNyArMjkwLDggQEAgR2V0UHViUGFydGl0aW9uT3B0aW9u UmVsYXRpb25zKExpc3QgKnJlc3VsdCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAog ICogYW5jZXN0b3IgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAqLwogT2lkCi1HZXRUb3BN b3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50 ICphbmNlc3Rvcl9sZXZlbCkKK0dldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1 Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLAorCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLCBib29s IHB1YmFsbHRhYmxlcykKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAlPaWQJCQl0b3Btb3N0X3JlbGlk ID0gSW52YWxpZE9pZDsKQEAgLTMwMiwzMiArMzAzLDQzIEBAIEdldFRvcE1vc3RBbmNlc3Rvcklu UHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xl dmVsCiAJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBsZmly c3Rfb2lkKGxjKTsKLQkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25z KGFuY2VzdG9yKTsKLQkJTGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5JTDsKKwkJTGlzdAkgICAq YXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCBmYWxzZSk7CisJCUxp c3QJICAgKmFzY2hlbWFwdWJpZHMgPSBOSUw7CisJCUxpc3QJICAgKmFleGNlcHRwdWJpZHMgPSBO SUw7CiAKIAkJbGV2ZWwrKzsKIAotCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFwdWJpZHMsIHB1Ym9p ZCkpCisJCS8qIGNoZWNrIGlmIG1lbWJlciBvZiB0YWJsZSBwdWJsaWNhdGlvbnMgKi8KKwkJaWYg KCFsaXN0X21lbWJlcl9vaWQoYXB1YmlkcywgcHVib2lkKSkKIAkJewotCQkJdG9wbW9zdF9yZWxp ZCA9IGFuY2VzdG9yOwotCi0JCQlpZiAoYW5jZXN0b3JfbGV2ZWwpCi0JCQkJKmFuY2VzdG9yX2xl dmVsID0gbGV2ZWw7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlhc2NoZW1hUHViaWRzID0gR2V0U2No ZW1hUHVibGljYXRpb25zKGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKSk7Ci0JCQlpZiAobGlz dF9tZW1iZXJfb2lkKGFzY2hlbWFQdWJpZHMsIHB1Ym9pZCkpCisJCQkvKiBjaGVjayBpZiBtZW1i ZXIgb2Ygc2NoZW1hIHB1YmxpY2F0aW9ucyAqLworCQkJYXNjaGVtYXB1YmlkcyA9IEdldFNjaGVt YVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3RvcikpOworCQkJaWYgKCFsaXN0 X21lbWJlcl9vaWQoYXNjaGVtYXB1YmlkcywgcHVib2lkKSkKIAkJCXsKLQkJCQl0b3Btb3N0X3Jl bGlkID0gYW5jZXN0b3I7Ci0KLQkJCQlpZiAoYW5jZXN0b3JfbGV2ZWwpCi0JCQkJCSphbmNlc3Rv cl9sZXZlbCA9IGxldmVsOworCQkJCS8qCisJCQkJICogSWYgdGhlIHB1YmxpY2F0aW9uIGlzIGFs bCB0YWJsZXMgcHVibGljYXRpb24gYW5kIHRoZSB0YWJsZQorCQkJCSAqIGlzIG5vdCBwYXJ0IG9m IGV4Y2VwdGlvbiB0YWJsZXMuCisJCQkJICovCisJCQkJaWYgKHB1YmFsbHRhYmxlcykKKwkJCQl7 CisJCQkJCWFleGNlcHRwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rvciwg dHJ1ZSk7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoYWV4Y2VwdHB1YmlkcywgcHVib2lkKSkK KwkJCQkJCWdvdG8gbmV4dDsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQlnb3RvIG5leHQ7CiAJCQl9 CiAJCX0KIAorCQl0b3Btb3N0X3JlbGlkID0gYW5jZXN0b3I7CisKKwkJaWYgKGFuY2VzdG9yX2xl dmVsKQorCQkJKmFuY2VzdG9yX2xldmVsID0gbGV2ZWw7CisKK25leHQ6CiAJCWxpc3RfZnJlZShh cHViaWRzKTsKLQkJbGlzdF9mcmVlKGFzY2hlbWFQdWJpZHMpOworCQlsaXN0X2ZyZWUoYXNjaGVt YXB1Ymlkcyk7CisJCWxpc3RfZnJlZShhZXhjZXB0cHViaWRzKTsKIAl9CiAKIAlyZXR1cm4gdG9w bW9zdF9yZWxpZDsKQEAgLTM5Niw2ICs0MDgsOCBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24o T2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJT2JqZWN0SWRHZXREYXR1bShw dWJpZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3BycmVsaWQgLSAxXSA9CiAJ CU9iamVjdElkR2V0RGF0dW0ocmVsaWQpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3Jl bF9wcmV4Y2VwdCAtIDFdID0KKwkJQm9vbEdldERhdHVtKHByaS0+ZXhjZXB0KTsKIAogCS8qIEFk ZCBxdWFsaWZpY2F0aW9ucywgaWYgYXZhaWxhYmxlICovCiAJaWYgKHByaS0+d2hlcmVDbGF1c2Ug IT0gTlVMTCkKQEAgLTY2NCw5ICs2NzgsOSBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBw dWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJcmV0dXJuIG15c2VsZjsK IH0KIAotLyogR2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8K Ky8qIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uIHRoYXQgbWF0 Y2hlcyB0aGUgZXhjZXB0X2ZsYWcgKi8KIExpc3QgKgotR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo T2lkIHJlbGlkKQorR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBib29sIGV4Y2Vw dF9mbGFnKQogewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlDYXRDTGlzdCAgICpwdWJyZWxs aXN0OwpAQCAtNjgwLDcgKzY5NCw4IEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxp ZCkKIAkJSGVhcFR1cGxlCXR1cCA9ICZwdWJyZWxsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKIAkJ T2lkCQkJcHViaWQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKSkt PnBycHViaWQ7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CisJCWlm IChleGNlcHRfZmxhZyA9PSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVw KSktPnByZXhjZXB0KQorCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CiAJ fQogCiAJUmVsZWFzZVN5c0NhY2hlTGlzdChwdWJyZWxsaXN0KTsKQEAgLTc3OSwxMyArNzk0LDE2 IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcm9vdCBwYXJ0aXRpb25lZCB0 YWJsZXMuCiAgKi8KIExpc3QgKgotR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoYm9v bCBwdWJ2aWFyb290KQorR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBib29sIHB1YnZpYXJvb3QpCiB7CiAJUmVsYXRpb24JY2xhc3NSZWw7CiAJU2NhbktleURhdGEg a2V5WzFdOwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJTGlzdAkg ICAqcmVzdWx0ID0gTklMOworCUxpc3QJICAgKmV4Y2VwdGxpc3Q7CisKKwlleGNlcHRsaXN0ID0g R2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAog CWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9j ayk7CiAKQEAgLTgwMiw3ICs4MjAsOCBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9u cyhib29sIHB1YnZpYXJvb3QpCiAJCU9pZAkJCXJlbGlkID0gcmVsRm9ybS0+b2lkOwogCiAJCWlm IChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJCSEocmVsRm9ybS0+ cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkpCisJCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0 aW9uICYmIHB1YnZpYXJvb3QpICYmCisJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJl bGlkKSkKIAkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwogCX0KIApAQCAt ODIzLDcgKzg0Miw4IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKGJvb2wgcHVi dmlhcm9vdCkKIAkJCU9pZAkJCXJlbGlkID0gcmVsRm9ybS0+b2lkOwogCiAJCQlpZiAoaXNfcHVi bGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pICYmCi0JCQkJIXJlbEZvcm0tPnJlbGlzcGFy dGl0aW9uKQorCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJgorCQkJCSFsaXN0X21lbWJl cl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQogCQkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3Vs dCwgcmVsaWQpOwogCQl9CiAKQEAgLTExMDksNyArMTEyOSw4IEBAIHBnX2dldF9wdWJsaWNhdGlv bl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJICovCiAJCWlmIChwdWJsaWNhdGlvbi0+YWxs dGFibGVzKQogCQl7Ci0JCQl0YWJsZXMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJsaWNhdGlvbi0+cHVidmlhcm9vdCk7CisJCQl0YWJsZXMgPSBHZXRBbGxUYWJsZXNQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+b2lkLAorCQkJCQkJCQkJCQkJCSAgcHVibGlj YXRpb24tPnB1YnZpYXJvb3QpOwogCQl9CiAJCWVsc2UKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYwppbmRleCA5ZWQ4Y2RlZGJjLi5iN2VlMDkwNmNlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTkzLDYgKzE5MywxMSBAQCBPYmplY3Rz SW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJc3dpdGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElD QVRJT05PQkpfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gZmFsc2U7CisJ CQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFi bGUtPmV4Y2VwdCA9IHRydWU7CiAJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1 YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1ND SEVNQToKQEAgLTMwNSw3ICszMTAsNyBAQCBjb250YWluX2ludmFsaWRfcmZjb2x1bW5fd2Fsa2Vy KE5vZGUgKm5vZGUsIHJmX2NvbnRleHQgKmNvbnRleHQpCiAgKi8KIGJvb2wKIHB1Yl9yZl9jb250 YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICph bmNlc3RvcnMsCi0JCQkJCQkJICAgYm9vbCBwdWJ2aWFyb290KQorCQkJCQkJCSAgIGJvb2wgcHVi dmlhcm9vdCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJSGVhcFR1cGxlCXJmdHVwbGU7CiAJT2lk CQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKQEAgLTMzMiw3ICszMzcsOCBA QCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxh dGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9y ZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKIAkJcHVibGlzaF9hc19yZWxpZAotCQkJPSBHZXRUb3BN b3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwpOworCQkJPSBH ZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwsCisJ CQkJCQkJCQkJCSAgcHViYWxsdGFibGVzKTsKIAogCQlpZiAoIU9pZElzVmFsaWQocHVibGlzaF9h c19yZWxpZCkpCiAJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CkBAIC0zODEsNyArMzg3LDcg QEAgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVs YXRpb24sIExpc3QgKmFuY2VzdG9ycywKICAqLwogYm9vbAogcHViX2NvbGxpc3RfY29udGFpbnNf aW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0 b3JzLAotCQkJCQkJCQkJYm9vbCBwdWJ2aWFyb290KQorCQkJCQkJCQkJYm9vbCBwdWJ2aWFyb290 LCBib29sIHB1YmFsbHRhYmxlcykKIHsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJT2lkCQkJcmVsaWQg PSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKQEAgLTQwMCw3ICs0MDYsOCBAQCBwdWJfY29s bGlzdF9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9u LCBMaXN0ICphbmNlc3RvcgogCSAqLwogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9y ZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKLQkJcHVibGlzaF9hc19yZWxpZCA9IEdldFRvcE1vc3RB bmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCk7CisJCXB1Ymxpc2hf YXNfcmVsaWQgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3Rv cnMsCisJCQkJCQkJCQkJCQkJCSAgIE5VTEwsIHB1YmFsbHRhYmxlcyk7CiAKIAkJaWYgKCFPaWRJ c1ZhbGlkKHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpA QCAtODQ0LDU0ICs4NTEsNTIgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJLyogTWFrZSB0aGUgY2hhbmdlcyB2aXNp YmxlLiAqLwogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKLQkvKiBBc3NvY2lhdGUgb2Jq ZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KLQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMp Ci0JewotCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBp cyByZWJ1aWx0LiAqLwotCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwotCX0KLQllbHNl Ci0JewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3Rh dGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOworCU9iamVjdHNJblB1 YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKKwkJ CQkJCQkgICAmc2NoZW1haWRsaXN0KTsKIAotCQkvKiBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg cmVxdWlyZXMgc3VwZXJ1c2VyICovCi0JCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3QpID4g MCAmJiAhc3VwZXJ1c2VyKCkpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQllcnJjb2RlKEVSUkNP REVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCi0JCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVz ZXIgdG8gY3JlYXRlIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKKwkv KiBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCisJaWYgKGxp c3RfbGVuZ3RoKHNjaGVtYWlkbGlzdCkgPiAwICYmICFzdXBlcnVzZXIoKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJ ZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBjcmVhdGUgRk9SIEFMTCBUQUJMRVMgSU4gU0NI RU1BIHB1YmxpY2F0aW9uIikpOwogCi0JCWlmIChsaXN0X2xlbmd0aChyZWxhdGlvbnMpID4gMCkK LQkJewotCQkJTGlzdAkgICAqcmVsczsKKwlpZiAobGlzdF9sZW5ndGgocmVsYXRpb25zKSA+IDAp CisJeworCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlv bnMpOwotCQkJQ2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihyZWxzLCBzY2hl bWFpZGxpc3QsCi0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OT0JKX1RBQkxFKTsKKwkJcmVscyA9 IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKKwkJQ2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5Q dWJsaWNhdGlvbihyZWxzLCBzY2hlbWFpZGxpc3QsCisJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05P QkpfVEFCTEUpOwogCi0JCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5w X3NvdXJjZXRleHQsCi0JCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOworCQlU cmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCQkJ CQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCUNoZWNrUHViUmVsYXRpb25D b2x1bW5MaXN0KHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAotCQkJCQkJCQkJICAgcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QpOworCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChyZWxz LCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QpOwogCi0JCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5V TEwpOwotCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7Ci0JCX0KKwkJUHVibGljYXRpb25BZGRUYWJs ZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJ fQogCi0JCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3QpID4gMCkKLQkJewotCQkJLyoKLQkJ CSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQg dG8gcHJldmVudAotCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCi0JCQkgKi8KLQkJ CUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMo cHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwotCQl9CisJaWYgKGxpc3RfbGVuZ3Ro KHNjaGVtYWlkbGlzdCkgPiAwKQorCXsKKwkJLyoKKwkJICogU2NoZW1hIGxvY2sgaXMgaGVsZCB1 bnRpbCB0aGUgcHVibGljYXRpb24gaXMgY3JlYXRlZCB0byBwcmV2ZW50CisJCSAqIGNvbmN1cnJl bnQgc2NoZW1hIGRlbGV0aW9uLgorCQkgKi8KKwkJTG9ja1NjaGVtYUxpc3Qoc2NoZW1haWRsaXN0 KTsKKwkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1Ym9pZCwgc2NoZW1haWRsaXN0LCB0cnVlLCBO VUxMKTsKIAl9CiAKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCisJLyog QXNzb2NpYXRlIG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCisJaWYgKHN0bXQtPmZv cl9hbGxfdGFibGVzKQorCXsKKwkJLyogSW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1Ymxp Y2F0aW9uIGluZm8gaXMgcmVidWlsdC4gKi8KKwkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwo KTsKKwl9CisKIAlJbnZva2VPYmplY3RQb3N0Q3JlYXRlSG9vayhQdWJsaWNhdGlvblJlbGF0aW9u SWQsIHB1Ym9pZCwgMCk7CiAKIAlpZiAod2FsX2xldmVsICE9IFdBTF9MRVZFTF9MT0dJQ0FMKQpA QCAtMTE5Myw2ICsxMTk4LDgxIEBAIEFsdGVyUHVibGljYXRpb25SZXNldChQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCX0KIH0KIAorLyoKKyAqIENoZWNr IGlmIHRoZSBwdWJsaWNhdGlvbiBoYXMgZGVmYXVsdCB2YWx1ZXMKKyAqCisgKiBDaGVjayB0aGUg Zm9sbG93aW5nOgorICogYSkgUHVibGljYXRpb24gaXMgbm90IHNldCB3aXRoICJGT1IgQUxMIFRB QkxFUyIKKyAqIGIpIFB1YmxpY2F0aW9uIGlzIGhhdmluZyBkZWZhdWx0IG9wdGlvbnMKKyAqIGMp IFB1YmxpY2F0aW9uIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggc2NoZW1hcworICogZCkgUHVibGlj YXRpb24gaXMgbm90IGFzc29jaWF0ZWQgd2l0aCByZWxhdGlvbnMKKyAqLworc3RhdGljIGJvb2wK K0NoZWNrUHVibGljYXRpb25EZWZWYWx1ZXMoSGVhcFR1cGxlIHR1cCkKK3sKKwlGb3JtX3BnX3B1 YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7 CisJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CisJTGlzdAkgICAqcHVib2JqcyA9IE5JTDsK KworCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJsZXMgIT0gUFVCX0RFRkFVTFRfQUxMX1RBQkxFUykK KwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHB1YmZvcm0tPnB1Ymluc2VydCAhPSBQVUJfREVGQVVM VF9BQ1RJT05fSU5TRVJUIHx8CisJCXB1YmZvcm0tPnB1YnVwZGF0ZSAhPSBQVUJfREVGQVVMVF9B Q1RJT05fVVBEQVRFIHx8CisJCXB1YmZvcm0tPnB1YmRlbGV0ZSAhPSBQVUJfREVGQVVMVF9BQ1RJ T05fREVMRVRFIHx8CisJCXB1YmZvcm0tPnB1YnRydW5jYXRlICE9IFBVQl9ERUZBVUxUX0FDVElP Tl9UUlVOQ0FURSB8fAorCQlwdWJmb3JtLT5wdWJ2aWFyb290ICE9IFBVQl9ERUZBVUxUX1ZJQV9S T09UKQorCQlyZXR1cm4gZmFsc2U7CisKKwlwdWJvYmpzID0gR2V0UHVibGljYXRpb25TY2hlbWFz KHB1YmlkKTsKKwlpZiAobGlzdF9sZW5ndGgocHVib2JqcykpCisJCXJldHVybiBmYWxzZTsKKwor CXB1Ym9ianMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwgUFVCTElDQVRJT05fUEFS VF9ST09UKTsKKwlpZiAobGlzdF9sZW5ndGgocHVib2JqcykpCisJCXJldHVybiBmYWxzZTsKKwor CXJldHVybiB0cnVlOworfQorCisvKgorICogU2V0IHB1YmxpY2F0aW9uIHRvIHB1Ymxpc2ggYWxs IHRhYmxlcy4KKyAqLworc3RhdGljIHZvaWQKK0FsdGVyUHVibGljYXRpb25TZXRBbGxUYWJsZXMo UmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwKQoreworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJ TkcKKwlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikg R0VUU1RSVUNUKHR1cCk7CisjZW5kaWYKKwlib29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlv bl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOworCURhdHVtCQl2YWx1 ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwor CUFzc2VydCghcHViZm9ybS0+cHViYWxsdGFibGVzKTsKKyNlbmRpZgorCisJLyogUkVTRVQgcHVi bGljYXRpb24gcmVxdWlyZXMgc3VwZXJ1c2VyICovCisJaWYgKCFzdXBlcnVzZXIoKSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSks CisJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBSRVNFVCBwdWJsaWNhdGlvbiIpKTsK KworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZh bHNlLCBzaXplb2YobnVsbHMpKTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVw bGFjZXMpKTsKKworCS8qIHNldCBBTEwgVEFCTEVTIGZsYWcgKi8KKwl2YWx1ZXNbQW51bV9wZ19w dWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAxXSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwlyZXBs YWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gdHJ1ZTsKKworCXR1 cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMs IG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8qIFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8K KwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1cCk7Cit9CisKIC8qCiAg KiBBZGQgb3IgcmVtb3ZlIHRhYmxlIHRvL2Zyb20gcHVibGljYXRpb24uCiAgKi8KQEAgLTE1MDIs NiArMTU4MiwxOSBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05F UiwgT0JKRUNUX1BVQkxJQ0FUSU9OLAogCQkJCQkgICBzdG10LT5wdWJuYW1lKTsKIAorCWlmIChz dG10LT5mb3JfYWxsX3RhYmxlcykKKwl7CisJCWJvb2wJCWlzZGVmYXVsdCA9IENoZWNrUHVibGlj YXRpb25EZWZWYWx1ZXModHVwKTsKKworCQlpZiAoIWlzZGVmYXVsdCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkJZXJybXNnKCJhZGRpbmcgQUxMIFRBQkxFUyByZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8g aGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9uIG9wdGlvbnMsIG5vIHRhYmxlcy9zY2hlbWFzIGFzc29j aWF0ZWQgYW5kIEFMTCBUQUJMRVMgZmxhZyBzaG91bGQgbm90IGJlIHNldCIpLAorCQkJCQllcnJo aW50KCJVc2UgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUIHRvIHJlc2V0IHRoZSBwdWJsaWNh dGlvbiIpKTsKKworCQlBbHRlclB1YmxpY2F0aW9uU2V0QWxsVGFibGVzKHJlbCwgdHVwKTsKKwl9 CisKIAlpZiAoc3RtdC0+b3B0aW9ucykKIAkJQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMocHN0YXRl LCBzdG10LCByZWwsIHR1cCk7CiAJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQX1Jlc2V0UHVi bGljYXRpb24pCkBAIC0xNzQ3LDYgKzE4NDAsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxl cykKIAkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCXB1Yl9yZWwtPndoZXJlQ2xhdXNlID0g dC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQlwdWJf cmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwp OwogCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15cmVsaWQpOwogCkBAIC0xODE5LDYg KzE5MTMsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAogCQkJCS8qIGNoaWxkIGlu aGVyaXRzIGNvbHVtbiBsaXN0IGZyb20gcGFyZW50ICovCiAJCQkJcHViX3JlbC0+Y29sdW1ucyA9 IHQtPmNvbHVtbnM7CisJCQkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQkJCXJlbHMg PSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQkJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlk cywgY2hpbGRyZWxpZCk7CiAKQEAgLTE4OTQsOCArMTk4OSw2IEBAIFB1YmxpY2F0aW9uQWRkVGFi bGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogewogCUxpc3RD ZWxsICAgKmxjOwogCi0JQXNzZXJ0KCFzdG10IHx8ICFzdG10LT5mb3JfYWxsX3RhYmxlcyk7Ci0K IAlmb3JlYWNoKGxjLCByZWxzKQogCXsKIAkJUHVibGljYXRpb25SZWxJbmZvICpwdWJfcmVsID0g KFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBsZmlyc3QobGMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCAyZGUwZWJhY2VjLi41ZDk3ZWFkZjU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtMTYyNzYsNyArMTYyNzYsNyBAQCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShSZWxhdGlv biByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dHRUQgYXMgVU5MT0dHRUQgdGFibGVzIGNh bid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2VkICYmCi0JCWxpc3RfbGVuZ3Ro KEdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpID4gMCkKKwkJ bGlzdF9sZW5ndGgoR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwp LCBmYWxzZSkpID4gMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgY2hh bmdlIHRhYmxlIFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgYSBwdWJs aWNhdGlvbiIsCkBAIC0xNjQxMyw3ICsxNjQxMyw3IEBAIEFsdGVyVGFibGVOYW1lc3BhY2UoQWx0 ZXJPYmplY3RTY2hlbWFTdG10ICpzdG10LCBPaWQgKm9sZHNjaGVtYSkKIAl7CiAJCUxpc3RDZWxs ICAgKmxjOwogCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMo bnNwT2lkKTsKLQkJTGlzdAkgICAqcmVsUHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo UmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJTGlzdAkgICAqcmVsUHViaWRzID0gR2V0UmVsYXRp b25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBmYWxzZSk7CiAKIAkJZm9yZWFj aChsYywgcmVsUHViaWRzKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBkN2UxMzY2NmEyLi4wYzc1ZDE0 NWYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogCQkJCXRyYW5zZm9ybV9lbGVtZW50X2xpc3QgdHJhbnNmb3JtX3R5cGVfbGlzdAogCQkJ CVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRp b25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKLQkJCQlkcm9wX29wdGlvbl9saXN0IHB1 Yl9vYmpfbGlzdAorCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0IGV4Y2VwdF9wdWJf b2JqX2xpc3QKIAogJXR5cGUgPG5vZGU+CW9wdF9yb3V0aW5lX2JvZHkKICV0eXBlIDxncm91cGNs YXVzZT4gZ3JvdXBfY2xhdXNlCkBAIC01ODgsNiArNTg4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVj PiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRpb25v YmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNw ZWM+IEV4Y2VwdFB1YmxpY2F0aW9uT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNlcnZl ZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKICV0eXBlIDxrZXl3b3JkPiBjb2xfbmFt ZV9rZXl3b3JkIHJlc2VydmVkX2tleXdvcmQKQEAgLTEwNDEwLDcgKzEwNDExLDcgQEAgQWx0ZXJP d25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBU TyBSb2xlU3BlYwogICoKICAqIENSRUFURSBQVUJMSUNBVElPTiBuYW1lIFtXSVRIIG9wdGlvbnNd CiAgKgotICogQ1JFQVRFIFBVQkxJQ0FUSU9OIEZPUiBBTEwgVEFCTEVTIFtXSVRIIG9wdGlvbnNd CisgKiBDUkVBVEUgUFVCTElDQVRJT04gRk9SIEFMTCBUQUJMRVMgW0VYQ0VQVCBbVEFCTEVdIHRh YmxlIFssIC4uLl1dIFtXSVRIIG9wdGlvbnNdCiAgKgogICogQ1JFQVRFIFBVQkxJQ0FUSU9OIEZP UiBwdWJfb2JqIFssIC4uLl0gW1dJVEggb3B0aW9uc10KICAqCkBAIC0xMDQzMCwxMiArMTA0MzEs MTMgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQluLT5vcHRpb25zID0gJDQ7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IENSRUFURSBQVUJMSUNBVElPTiBuYW1lIEZP UiBBTEwgVEFCTEVTIG9wdF9kZWZpbml0aW9uCisJCQl8IENSRUFURSBQVUJMSUNBVElPTiBuYW1l IEZPUiBBTEwgVEFCTEVTIGV4Y2VwdF9wdWJfb2JqX2xpc3Qgb3B0X2RlZmluaXRpb24KIAkJCQl7 CiAJCQkJCUNyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCk7CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwotCQkJCQluLT5vcHRpb25zID0gJDc7 CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKKwkJCQkJbi0+cHVib2JqZWN0cyA9IChMaXN0ICopJDc7 CiAJCQkJCW4tPmZvcl9hbGxfdGFibGVzID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwog CQkJCX0KQEAgLTEwNDczLDYgKzEwNDc1LDcgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkk JC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDI7CiAJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9 ICQzOwogCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5sb2Nh dGlvbiA9IEAxOwogCQkJCX0KIAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJ CXsKQEAgLTEwNTQ4LDYgKzEwNTUxLDI1IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpT cGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKK0V4Y2VwdFB1YmxpY2F0 aW9uT2JqU3BlYzoKKwkJCSByZWxhdGlvbl9leHByCisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2Rl KFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05P QkpfRVhDRVBUX1RBQkxFOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlv blRhYmxlKTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJCQkkJC0+cHVi dGFibGUtPnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0KKwk7 CisKK2V4Y2VwdF9wdWJfb2JqX2xpc3Q6CUVYQ0VQVCBvcHRfdGFibGUgRXhjZXB0UHVibGljYXRp b25PYmpTcGVjCisJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQzKTsgfQorCQkJfCBleGNlcHRfcHVi X29ial9saXN0ICcsJyBFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBl bmQoJDEsICQzKTsgfQorCQkJfCAgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTlVMTDsgfQorCTsK KwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBT RVQgKCBvcHRpb25zICkKQEAgLTEwNTg2LDYgKzEwNjA4LDE1IEBAIEFsdGVyUHVibGljYXRpb25T dG10OgogCQkJCQluLT5hY3Rpb24gPSBBUF9BZGRPYmplY3RzOwogCQkJCQkkJCA9IChOb2RlICop IG47CiAJCQkJfQorCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIEFERF9QIEFMTCBUQUJMRVMg ZXhjZXB0X3B1Yl9vYmpfbGlzdAorCQkJCXsKKwkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4g PSBtYWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7CisJCQkJCW4tPnB1Ym5hbWUgPSAkMzsK KwkJCQkJbi0+cHVib2JqZWN0cyA9ICQ3OworCQkJCQluLT5mb3JfYWxsX3RhYmxlcyA9IHRydWU7 CisJCQkJCW4tPmFjdGlvbiA9IEFQX0FkZE9iamVjdHM7CisJCQkJCSQkID0gKE5vZGUgKiluOwor CQkJCX0KIAkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgcHViX29ial9saXN0CiAJCQkJ ewogCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVibGljYXRp b25TdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmlu ZGV4IDQyYzA2YWYyMzkuLjYzOTQ0NjZkYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTk5Niw3ICsxOTk2LDggQEAgZ2V0X3JlbF9zeW5jX2Vu dHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRyeS0+ cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVzcGFj ZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJl bGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQs IGZhbHNlKTsKKwkJTGlzdAkgICAqZXhjZXB0VGFibGVQdWJpZHMgPSBHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhyZWxpZCwgdHJ1ZSk7CiAKIAkJLyoKIAkJICogV2UgZG9uJ3QgYWNxdWlyZSBhIGxv Y2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMgd2UgYnVpbGQKQEAgLTIwODUsMjIg KzIwODYsNiBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlv biByZWxhdGlvbikKIAkJCU9pZAkJCXB1Yl9yZWxpZCA9IHJlbGlkOwogCQkJaW50CQkJYW5jZXN0 b3JfbGV2ZWwgPSAwOwogCi0JCQkvKgotCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVT IHB1YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24KLQkJCSAqIHJvb3QgYW5kIHNldCB0aGUg YW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCi0JCQkgKi8KLQkJCWlmIChwdWItPmFsbHRhYmxl cykKLQkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYm IGFtX3BhcnRpdGlvbikKLQkJCQl7Ci0JCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0 aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQotCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5j ZXN0b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOwot CQkJCX0KLQkJCX0KLQogCQkJaWYgKCFwdWJsaXNoKQogCQkJewogCQkJCWJvb2wJCWFuY2VzdG9y X3B1Ymxpc2hlZCA9IGZhbHNlOwpAQCAtMjExOSw3ICsyMTA0LDggQEAgZ2V0X3JlbF9zeW5jX2Vu dHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQkJYW5jZXN0 b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLAogCQkJCQkJCQkJ CQkJCQkJICAgYW5jZXN0b3JzLAotCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsKTsKKwkJCQkJCQkJ CQkJCQkJCSAgICZsZXZlbCwKKwkJCQkJCQkJCQkJCQkJCSAgIHB1Yi0+YWxsdGFibGVzKTsKIAog CQkJCQlpZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJewpAQCAtMjEzNCw2ICsyMTIw LDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVs YXRpb24pCiAKIAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8CiAJ CQkJCWxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAorCQkJCQkocHVi LT5hbGx0YWJsZXMgJiYKKwkJCQkJICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0VGFibGVQdWJpZHMs IHB1Yi0+b2lkKSkgfHwKIAkJCQkJYW5jZXN0b3JfcHVibGlzaGVkKQogCQkJCQlwdWJsaXNoID0g dHJ1ZTsKIAkJCX0KQEAgLTIyMDksNiArMjE5Nyw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJCWxpc3RfZnJlZShwdWJpZHMp OwogCQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9mcmVlKGV4Y2VwdFRhYmxlUHVi aWRzKTsKIAkJbGlzdF9mcmVlKHJlbF9wdWJsaWNhdGlvbnMpOwogCiAJCWVudHJ5LT5yZXBsaWNh dGVfdmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNjBlNzJm OWU4Yi4uNDY1OWM3NjZkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01NTYx LDYgKzU1NjEsOCBAQCB2b2lkCiBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9u IHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiB7CiAJTGlzdAkgICAqcHVib2lk czsKKwlMaXN0CSAgICphbGx0YWJsZXNwdWJvaWRzOworCUxpc3QJICAgKmV4Y2VwdHB1Ym9pZHMg PSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJT2lkCQkJ c2NoZW1haWQ7CkBAIC01NTk0LDcgKzU1OTYsNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25E ZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJcHViZGVz Yy0+Y29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsKIAogCS8qIEZldGNoIHRoZSBwdWJsaWNh dGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lkcyA9IEdldFJlbGF0aW9uUHVibGljYXRp b25zKHJlbGlkKTsKKwlwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsIGZh bHNlKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKIAlwdWJv aWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlv bnMoc2NoZW1haWQpKTsKIApAQCAtNTYwOCwxNCArNTYxMCwxOSBAQCBSZWxhdGlvbkJ1aWxkUHVi bGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2Mp CiAJCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwogCiAJCQlwdWJvaWRzID0gbGlz dF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAotCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGljYXRpb25z KGFuY2VzdG9yLCBmYWxzZSkpOwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShhbmNl c3Rvcik7CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAogCQkJ CQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CisJCQlleGNlcHRwdWJv aWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChleGNlcHRwdWJvaWRzLAorCQkJCQkJCQkJCQkJ ICAgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsIHRydWUpKTsKIAkJfQogCX0KLQlw dWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJs aWNhdGlvbnMoKSk7CiAKKwlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVibGljYXRp b25zKCk7CisJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJ CQkJCSBsaXN0X2RpZmZlcmVuY2Vfb2lkKGFsbHRhYmxlc3B1Ym9pZHMsCisJCQkJCQkJCQkJCQkJ CSBleGNlcHRwdWJvaWRzKSk7CiAJZm9yZWFjaChsYywgcHVib2lkcykKIAl7CiAJCU9pZAkJCXB1 YmlkID0gbGZpcnN0X29pZChsYyk7CkBAIC01NjQ0LDcgKzU2NTEsNyBAQCBSZWxhdGlvbkJ1aWxk UHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRl c2MpCiAJCWlmICghcHViZm9ybS0+cHViYWxsdGFibGVzICYmCiAJCQkocHViZm9ybS0+cHVidXBk YXRlIHx8IHB1YmZvcm0tPnB1YmRlbGV0ZSkgJiYKIAkJCXB1Yl9yZl9jb250YWluc19pbnZhbGlk X2NvbHVtbihwdWJpZCwgcmVsYXRpb24sIGFuY2VzdG9ycywKLQkJCQkJCQkJCQkgICBwdWJmb3Jt LT5wdWJ2aWFyb290KSkKKwkJCQkJCQkJCQkgICBwdWJmb3JtLT5wdWJ2aWFyb290LCBwdWJmb3Jt LT5wdWJhbGx0YWJsZXMpKQogCQl7CiAJCQlpZiAocHViZm9ybS0+cHVidXBkYXRlKQogCQkJCXB1 YmRlc2MtPnJmX3ZhbGlkX2Zvcl91cGRhdGUgPSBmYWxzZTsKQEAgLTU2NjEsNyArNTY2OCw3IEBA IFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0 aW9uRGVzYyAqcHViZGVzYykKIAkJaWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYKIAkJCShw dWJmb3JtLT5wdWJ1cGRhdGUgfHwgcHViZm9ybS0+cHViZGVsZXRlKSAmJgogCQkJcHViX2NvbGxp c3RfY29udGFpbnNfaW52YWxpZF9jb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMsCi0J CQkJCQkJCQkJCQlwdWJmb3JtLT5wdWJ2aWFyb290KSkKKwkJCQkJCQkJCQkJCXB1YmZvcm0tPnB1 YnZpYXJvb3QsIHB1YmZvcm0tPnB1YmFsbHRhYmxlcykpCiAJCXsKIAkJCWlmIChwdWJmb3JtLT5w dWJ1cGRhdGUpCiAJCQkJcHViZGVzYy0+Y29sc192YWxpZF9mb3JfdXBkYXRlID0gZmFsc2U7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCA3Y2M5YzcyZTQ5Li4yOTI1ZDBmMjdhIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTEy Nyw2ICsxMjcsOCBAQCBzdGF0aWMgU2ltcGxlT2lkTGlzdCBmb3JlaWduX3NlcnZlcnNfaW5jbHVk ZV9vaWRzID0ge05VTEwsIE5VTEx9Owogc3RhdGljIFNpbXBsZVN0cmluZ0xpc3QgZXh0ZW5zaW9u X2luY2x1ZGVfcGF0dGVybnMgPSB7TlVMTCwgTlVMTH07CiBzdGF0aWMgU2ltcGxlT2lkTGlzdCBl eHRlbnNpb25faW5jbHVkZV9vaWRzID0ge05VTEwsIE5VTEx9OwogCitzdGF0aWMgU2ltcGxlUHRy TGlzdCBleGNlcHRpbmZvID0ge05VTEwsIE5VTEx9OworCiBzdGF0aWMgY29uc3QgQ2F0YWxvZ0lk IG5pbENhdGFsb2dJZCA9IHswLCAwfTsKIAogLyogb3ZlcnJpZGUgZm9yIHN0YW5kYXJkIGV4dHJh X2Zsb2F0X2RpZ2l0cyBzZXR0aW5nICovCkBAIC0zOTgwLDggKzM5ODIsMzUgQEAgZHVtcFB1Ymxp Y2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAkJ CQkJICBxcHVibmFtZSk7CiAKIAlpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQorCXsKKwkJU2lt cGxlUHRyTGlzdENlbGwgKmNlbGw7CisJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKwogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIpOwogCisJCS8qIEluY2x1ZGUg ZXhjZXB0aW9uIHRhYmxlcyBpZiB0aGUgcHVibGljYXRpb24gaGFzIGV4Y2VwdCB0YWJsZXMgKi8K KwkJZm9yIChjZWxsID0gZXhjZXB0aW5mby5oZWFkOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dCkK KwkJeworCQkJUHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5mbyA9IChQdWJsaWNhdGlvblJlbElu Zm8gKikgY2VsbC0+cHRyOworCQkJUHVibGljYXRpb25JbmZvICpyZWxwdWJpbmZvID0gcHVicmlu Zm8tPnB1YmxpY2F0aW9uOworCQkJVGFibGVJbmZvICAqdGJpbmZvOworCisJCQlpZiAocHViaW5m byA9PSByZWxwdWJpbmZvKQorCQkJeworCQkJCXRiaW5mbyA9IHB1YnJpbmZvLT5wdWJ0YWJsZTsK KworCQkJCWlmIChmaXJzdCkKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiIEVYQ0VQVCBUQUJMRSIpOworCQkJCQlmaXJzdCA9IGZhbHNlOworCQkJCX0KKwkJCQllbHNl CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwgIiBPTkxZICVzIiwgZm10UXVhbGlmaWVkRHVtcGFibGUodGJpbmZvKSk7 CisJCQl9CisJCX0KKwl9CisKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSVRIIChw dWJsaXNoID0gJyIpOwogCWlmIChwdWJpbmZvLT5wdWJpbnNlcnQpCiAJewpAQCAtNDE1MSw2ICs0 MTgwLDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRi bGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpbnQJCQlpX3BycmVsaWQ7CiAJaW50CQkJaV9wcnJl bHF1YWw7CiAJaW50CQkJaV9wcmF0dHJzOworCWludAkJCWlfcHJleGNlcHQ7CiAJaW50CQkJaSwK IAkJCQlqLAogCQkJCW50dXBzOwpAQCAtNDE2Miw4ICs0MTkyLDE3IEBAIGdldFB1YmxpY2F0aW9u VGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMp CiAKIAkvKiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCiAJaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksCisJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxp ZCxcbiIpOworCisJCS8qIEZJWE1FOiAxNTAwMDAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gMTYwMDAw IGxhdGVyIGZvciBQRzE2LiAqLworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDAp CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBwcmV4Y2VwdCxcbiIpOworCQllbHNl CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBwcmV4Y2VwdCxcbiIp OworCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiU0VMRUNUIHRhYmxl b2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBwcnJlbHF1YWwsICIKIAkJCQkJCQkgIihDQVNFXG4i CiAJCQkJCQkJICIgIFdIRU4gcHIucHJhdHRycyBJUyBOT1QgTlVMTCBUSEVOXG4iCkBAIC00MTc0 LDYgKzQyMTMsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCQkJCSAiICAgICAgV0hFUkUgYXR0cmVs aWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCSAiICBF TFNFIE5VTEwgRU5EKSBwcmF0dHJzICIKIAkJCQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9yZWwgcHIiKTsKKwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwKIAkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCkBA IC00MTg5LDYgKzQyMjksNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWlfcHJyZWxpZCA9IFBRZm51bWJl cihyZXMsICJwcnJlbGlkIik7CiAJaV9wcnJlbHF1YWwgPSBQUWZudW1iZXIocmVzLCAicHJyZWxx dWFsIik7CiAJaV9wcmF0dHJzID0gUFFmbnVtYmVyKHJlcywgInByYXR0cnMiKTsKKwlpX3ByZXhj ZXB0ID0gUFFmbnVtYmVyKHJlcywgInByZXhjZXB0Iik7CiAKIAkvKiB0aGlzIGFsbG9jYXRpb24g bWF5IGJlIG1vcmUgdGhhbiB3ZSBuZWVkICovCiAJcHVicmluZm8gPSBwZ19tYWxsb2MobnR1cHMg KiBzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CkBAIC00MjAwLDYgKzQyNDEsNyBAQCBnZXRQ dWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQg bnVtVGFibGVzKQogCQlPaWQJCQlwcnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBp X3BycmVsaWQpKTsKIAkJUHVibGljYXRpb25JbmZvICpwdWJpbmZvOwogCQlUYWJsZUluZm8gICp0 YmluZm87CisJCWNoYXIJICAgKnByZXhjZXB0ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3ByZXhjZXB0KSk7CiAKIAkJLyoKIAkJICogSWdub3JlIGFueSBlbnRyaWVzIGZvciB3aGlj aCB3ZSBhcmVuJ3QgaW50ZXJlc3RlZCBpbiBlaXRoZXIgdGhlCkBAIC00MjIwLDcgKzQyNjIsMTEg QEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9b XSwgaW50IG51bVRhYmxlcykKIAkJCWNvbnRpbnVlOwogCiAJCS8qIE9LLCBtYWtlIGEgRHVtcGFi bGVPYmplY3QgZm9yIHRoaXMgcmVsYXRpb25zaGlwICovCi0JCXB1YnJpbmZvW2pdLmRvYmoub2Jq VHlwZSA9IERPX1BVQkxJQ0FUSU9OX1JFTDsKKwkJaWYgKHN0cmNtcChwcmV4Y2VwdCwgImYiKSA9 PSAwKQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fUkVMOwor CQllbHNlCisJCQlwdWJyaW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9FWENF UFRfUkVMOworCiAJCXB1YnJpbmZvW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPQogCQkJYXRvb2lk KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3RhYmxlb2lkKSk7CiAJCXB1YnJpbmZvW2pdLmRvYmouY2F0 SWQub2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkpOwpAQCAtNDI1OSw2ICs0 MzA1LDkgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRi bGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBk dW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlUHVibGljYXRpb25PYmplY3QoJihwdWJyaW5mb1tq XS5kb2JqKSwgZm91dCk7CiAKKwkJaWYgKHN0cmNtcChwcmV4Y2VwdCwgInQiKSA9PSAwKQorCQkJ c2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmZXhjZXB0aW5mbywgJnB1YnJpbmZvW2pdKTsKKwogCQlq Kys7CiAJfQogCkBAIC05OTM2LDYgKzk5ODUsOSBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2 ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCWNhc2UgRE9fUFVCTElDQVRJT046CiAJ CQlkdW1wUHVibGljYXRpb24oZm91dCwgKGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqKSBkb2JqKTsK IAkJCWJyZWFrOworCQljYXNlIERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw6CisJCQkvKiB3aWxs IGJlIGR1bXBlZCBpbiBkdW1wUHVibGljYXRpb24gKi8KKwkJCWJyZWFrOwogCQljYXNlIERPX1BV QkxJQ0FUSU9OX1JFTDoKIAkJCWR1bXBQdWJsaWNhdGlvblRhYmxlKGZvdXQsIChjb25zdCBQdWJs aWNhdGlvblJlbEluZm8gKikgZG9iaik7CiAJCQlicmVhazsKQEAgLTE3ODY5LDYgKzE3OTIxLDcg QEAgYWRkQm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVPYmplY3QgKipkb2JqcywgaW50IG51 bU9ianMsCiAJCQljYXNlIERPX0RFRkFVTFRfQUNMOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJCQlj YXNlIERPX1BVQkxJQ0FUSU9OOgorCQkJY2FzZSBET19QVUJMSUNBVElPTl9FWENFUFRfUkVMOgog CQkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CiAJCQljYXNlIERPX1BVQkxJQ0FUSU9OX1RBQkxF X0lOX1NDSEVNQToKIAkJCWNhc2UgRE9fU1VCU0NSSVBUSU9OOgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggMWQy MWMyOTA2Zi4uMDdhNTBlY2U2OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC04MCw2ICs4MCw3IEBAIHR5cGVk ZWYgZW51bQogCURPX1JFRlJFU0hfTUFUVklFVywKIAlET19QT0xJQ1ksCiAJRE9fUFVCTElDQVRJ T04sCisJRE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTCwKIAlET19QVUJMSUNBVElPTl9SRUwsCiAJ RE9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAogCURPX1NVQlNDUklQVElPTgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXBfc29ydC5jCmluZGV4IDVkZTMyNDFlYjQuLmE2NTk1ZjI1YTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cF9zb3J0LmMKQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBkYk9iamVjdFR5cGVQcmlvcml0aWVzCiAJ UFJJT19GS19DT05TVFJBSU5ULAogCVBSSU9fUE9MSUNZLAogCVBSSU9fUFVCTElDQVRJT04sCisJ UFJJT19QVUJMSUNBVElPTl9FWENFUFRfUkVMLAogCVBSSU9fUFVCTElDQVRJT05fUkVMLAogCVBS SU9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAogCVBSSU9fU1VCU0NSSVBUSU9OLApAQCAt MTQ0LDYgKzE0NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJpb3JpdHlbXSA9 CiAJUFJJT19SRUZSRVNIX01BVFZJRVcsCQkvKiBET19SRUZSRVNIX01BVFZJRVcgKi8KIAlQUklP X1BPTElDWSwJCQkJLyogRE9fUE9MSUNZICovCiAJUFJJT19QVUJMSUNBVElPTiwJCQkvKiBET19Q VUJMSUNBVElPTiAqLworCVBSSU9fUFVCTElDQVRJT05fRVhDRVBUX1JFTCwJLyogRE9fUFVCTElD QVRJT05fRVhDRVBUX1JFTCAqLwogCVBSSU9fUFVCTElDQVRJT05fUkVMLAkJLyogRE9fUFVCTElD QVRJT05fUkVMICovCiAJUFJJT19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCS8qIERPX1BV QkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQSAqLwogCVBSSU9fU1VCU0NSSVBUSU9OCQkJLyogRE9f U1VCU0NSSVBUSU9OICovCkBAIC0xNDgzLDYgKzE0ODUsMTEgQEAgZGVzY3JpYmVEdW1wYWJsZU9i amVjdChEdW1wYWJsZU9iamVjdCAqb2JqLCBjaGFyICpidWYsIGludCBidWZzaXplKQogCQkJCQkg IlBVQkxJQ0FUSU9OIChJRCAlZCBPSUQgJXUpIiwKIAkJCQkJIG9iai0+ZHVtcElkLCBvYmotPmNh dElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTDoK KwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQVUJMSUNBVElPTiBFWENFUFQgVEFC TEUgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lkKTsK KwkJCXJldHVybjsKIAkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CiAJCQlzbnByaW50ZihidWYs IGJ1ZnNpemUsCiAJCQkJCSAiUFVCTElDQVRJT04gVEFCTEUgKElEICVkIE9JRCAldSkiLApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAxZjA4NzE2ZjY5Li4xM2EzYjNmODc1IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjQ1NCw2ICsyNDU0LDE4IEBAIG15ICV0ZXN0cyA9ICgK IAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCiAJfSwK IAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViNScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAs CisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjUgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlOycsCisJCXJlZ2V4cCA9PiBxci9e CisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI1IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRh dGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVu cywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVf ZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlICAgICAgID0+IDEs CisJCX0sCisJfSwKIAknQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxJyA9PiB7CiAJCWNyZWF0ZV9v cmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKaW5kZXggMWE1ZDkyNGEyMy4uNzhhYTQwOWY0MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTI5NTAsMTcg KzI5NTAsMzYgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFt ZSwKIAkJCQkJCQkJICAiICAgICAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQg YXR0bnVtID0gcHJhdHRyc1tzXSlcbiIKIAkJCQkJCQkJICAiICAgICAgICBFTFNFIE5VTEwgRU5E KSAiCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCi0JCQkJ CQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9p ZCA9IHByLnBycHViaWRcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xh c3MgYyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxp ZCA9ICclcydcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkgICJXSEVS RSBwci5wcnJlbGlkID0gJyVzJ1xuIiwKKwkJCQkJCQkJICBvaWQsIG9pZCwgb2lkKTsKKworCQkJ CS8qIEZJWE1FOiAxNTAwMDAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gMTYwMDAwIGxhdGVyIGZvciBQ RzE2LiAqLworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmJ1ZiwgIiBBTkQgcHIucHJleGNlcHQgPSAnZidcbiIpOworCisJCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VM RUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKLQkJCQkJCQkJICAiICAg ICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExc biIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJ CQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNf cHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJICAiT1JERVIgQlkgMTsiLAotCQkJCQkJCQkg IG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFO RCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iLAorCQkJCQkJ CQkgIG9pZCk7CisKKwkJCQkvKiBGSVhNRTogMTUwMDAwIHNob3VsZCBiZSBjaGFuZ2VkIHRvIDE2 MDAwMCBsYXRlciBmb3IgUEcxNi4gKi8KKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDAp CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICIgICAgIEFORCBOT1Qg RVhJU1RTIChcbiIKKwkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJCQkJCQkJCSAgIgkJRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCQkJICAiCQlKT0lO IHBnX2NhdGFsb2cucGdfY2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJT04gcHIucHJyZWxpZCA9 IHBjLm9pZFxuIgorCQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIu cHJwdWJpZCA9IHAub2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKworCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAt NjMwMiw4ICs2MzIxLDEzIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJCQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgog CQkJCQkJCSAgIldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIKIAkJCQkJCQkgICIgIEFO RCBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVz J1xuIgotCQkJCQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJCQkJCQkgICIgIEFORCBw ci5wcnB1YmlkID0gJyVzJ1xuIiwgcHViaWQpOworCisJCQkvKiBGSVhNRTogMTUwMDAwIHNob3Vs ZCBiZSBjaGFuZ2VkIHRvIDE2MDAwMCBsYXRlciBmb3IgUEcxNi4gKi8KKwkJCWlmIChwc2V0LnN2 ZXJzaW9uID49IDE1MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICBBTkQgcHIu cHJleGNlcHQgPSAnZidcbiIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiT1JERVIg QlkgMSwyIik7CiAJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRh YmxlczoiKSwgZmFsc2UsICZjb250KSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKIApAQCAtNjMy MSw2ICs2MzQ1LDI0IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4p CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJfQogCQl9CisJCWVsc2UKKwkJeworCQkJLyog RklYTUU6IDE1MDAwMCBzaG91bGQgYmUgY2hhbmdlZCB0byAxNjAwMDAgbGF0ZXIgZm9yIFBHMTYu ICovCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCQl7CisJCQkJLyogR2V0IHRo ZSBleGNsdWRlZCB0YWJsZXMgZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24gKi8KKwkJCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1QgY29uY2F0KGMucmVsbmFt ZXNwYWNlOjpyZWduYW1lc3BhY2UsICcuJywgYy5yZWxuYW1lKVxuIgorCQkJCQkJCQkgICJGUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJ CSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhj ZXB0ID0gJ3QnXG4iCisJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFh ZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVzOiIpLAorCQkJ CQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJ fQogCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dm aWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDYy ZWNjM2NkYWIuLjMwOWM0YjUzYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTE4MjIsOSArMTgyMiwx MyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5k KQogCQlDT01QTEVURV9XSVRIKCJBREQiLCAiRFJPUCIsICJPV05FUiBUTyIsICJSRU5BTUUgVE8i LCAiUkVTRVQiLCAiU0VUIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IEFERCAqLwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQi KSkKLQkJQ09NUExFVEVfV0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJ Q09NUExFVEVfV0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiQUxMIFRBQkxFUyIsICJUQUJM RSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJBREQiLCAiQUxMIiwgIlRBQkxFUyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgVEFCTEUi KTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi QUREfFNFVCIsICJUQUJMRSIpIHx8Ci0JCQkgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJUQUJMRSIpICYmCisJCQkgTWF0Y2hlcygiQUxU RVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJBTEwiLCAiVEFCTEVTIiwgIkVY Q0VQVCIsICJUQUJMRSIpIHx8CisJCQkgKChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAiVEFCTEUiKSB8fAorCQkJICAgSGVhZE1hdGNoZXMo IkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiQUxMIiwgIlRBQkxFUyIs ICJFWENFUFQiLCAiVEFCTEUiKSkgJiYKIAkJCSAgZW5kc193aXRoKHByZXZfd2QsICcsJykpKQog CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwog CkBAIC0yOTg2LDcgKzI5OTAsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwg aW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMi LCAiVEFCTEVTIElOIFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiKSkKLQkJQ09NUExFVEVf V0lUSCgiSU4gU0NIRU1BIiwgIldJVEggKCIpOworCQlDT01QTEVURV9XSVRIKCJJTiBTQ0hFTUEi LCAiV0lUSCAoIiwgIkVYQ0VQVCBUQUJMRSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hBbnkpICYmICFl bmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExFVEVfV0lUSCgiV0hFUkUgKCIsICJXSVRI ICgiKTsKIAkvKiBDb21wbGV0ZSAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgVEFCTEUi IHdpdGggIjx0YWJsZT4sIC4uLiIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApp bmRleCA0ODIwNWJhNDI5Li5jOTJkZDQwYTE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCkBAIC0xMDgsMTEgKzEwOCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJl bEluZm8KIAlSZWxhdGlvbglyZWxhdGlvbjsKIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlMaXN0 CSAgICpjb2x1bW5zOworCWJvb2wJCWV4Y2VwdDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiBl eHRlcm4gUHVibGljYXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVi bGljYXRpb24gKkdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wg bWlzc2luZ19vayk7Ci1leHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJl bGlkKTsKK2V4dGVybiBMaXN0ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIGJv b2wgZXhjZXB0X2ZsYWcpOwogCiAvKi0tLS0tLS0tLQogICogRXhwZWN0ZWQgdmFsdWVzIGZvciBw dWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoKSwKQEAgLTEz Miw3ICsxMzMsNyBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25QYXJ0T3B0CiAKIGV4dGVybiBM aXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZv aWQpOwotZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKGJvb2wg cHVidmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlv bnMoT2lkIHB1YmlkLCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0 aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9u cyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRp b25zKE9pZCBzY2hlbWFpZCwKQEAgLTE0Myw3ICsxNDQsNyBAQCBleHRlcm4gTGlzdCAqR2V0UHVi UGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwKIAkJCQkJCQkJCQkJUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAogCQkJCQkJCQkJCQlPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFu Y2VzdG9ycywKLQkJCQkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCk7CisJCQkJCQkJCQkJCWlu dCAqYW5jZXN0b3JfbGV2ZWwsIGJvb2wgcHViYWxsdGFibGVzKTsKIAogZXh0ZXJuIGJvb2wgaXNf cHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVt YV9wdWJsaWNhdGlvbihPaWQgcHViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b25fcmVsLmgKaW5kZXggZWNkMzczOWYxYS4uMjhhMzNmZjE3YSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSw2ICszMSw3IEBAIENBVEFMT0cocGdfcHVi bGljYXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQogCU9pZAkJCW9pZDsJ CQkvKiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09LVVAocGdfcHVibGljYXRpb24pOyAv KiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcHJyZWxpZCBCS0lfTE9PS1VQKHBn X2NsYXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLworCWJvb2wJCXByZXhjZXB0IEJLSV9E RUZBVUxUKGYpOwkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAqLwogCiAjaWZkZWYJQ0FUQUxPR19W QVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2Rl X3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmgKaW5kZXggNTdkZjNmYzFlMy4uZTRlNGVkMTdhYiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKQEAgLTMyLDggKzMyLDExIEBAIGV4dGVybiBPYmpl Y3RBZGRyZXNzIEFsdGVyUHVibGljYXRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3 T3duZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uT3duZXJfb2lkKE9pZCBwdWJp ZCwgT2lkIG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVs cyhMaXN0ICpyZWxpZHMpOwogZXh0ZXJuIGJvb2wgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29s dW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJICAgTGlzdCAqYW5j ZXN0b3JzLCBib29sIHB1YnZpYXJvb3QpOworCQkJCQkJCQkJCSAgIExpc3QgKmFuY2VzdG9ycywg Ym9vbCBwdWJ2aWFyb290LAorCQkJCQkJCQkJCSAgIGJvb2wgcHViYWxsdGFibGVzKTsKIGV4dGVy biBib29sIHB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVs YXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJCQlMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlh cm9vdCk7CisJCQkJCQkJCQkJCQlMaXN0ICphbmNlc3RvcnMsCisJCQkJCQkJCQkJCQlib29sIHB1 YnZpYXJvb3QsCisJCQkJCQkJCQkJCQlib29sIHB1YmFsbHRhYmxlcyk7CiAKICNlbmRpZgkJCQkJ CQkvKiBQVUJMSUNBVElPTkNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDk3MjZm ZGFlNTguLjZkZTE1YzM5MWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTM5OTksNiArMzk5 OSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uVGFibGUKIAlSYW5nZVZhciAgICpyZWxh dGlvbjsJCS8qIHJlbGF0aW9uIHRvIGJlIHB1Ymxpc2hlZCAqLwogCU5vZGUJICAgKndoZXJlQ2xh dXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9m IGNvbHVtbnMgaW4gYSBwdWJsaWNhdGlvbiB0YWJsZSAqLworCWJvb2wJCWV4Y2VwdDsJCQkvKiBl eGNsdWRlIHRoZSByZWxhdGlvbiAqLwogfSBQdWJsaWNhdGlvblRhYmxlOwogCiAvKgpAQCAtNDAw Nyw2ICs0MDA4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogdHlwZWRlZiBl bnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIHsKIAlQVUJMSUNBVElPTk9CSl9UQUJMRSwJCS8q IEEgdGFibGUgKi8KKwlQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUsCQkvKiBBIHRhYmxlIHRv IGJlIGV4Y2x1ZGVkICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxs IHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVN QSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJj aF9wYXRoICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4 IDc5OWEzZjE1ZjUuLjI2OTZmOWMxZGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0CkBAIC0xNjUsMTMgKzE2NSwzNyBAQCBQdWJsaWNhdGlvbnM6CiAgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMg PSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJf dGJsMjsKKy0tIHNwZWNpZnkgRVhDRVBUIHdpdGhvdXQgVEFCTEUKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IHRlc3RwdWJfdGJsMTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMu dGVzdHB1Yl90YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEKKyAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGlj LnRlc3RwdWJfdGJsMSIKKwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNj aGVtYTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9y dGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogQ1JFQVRFIFRBQkxFIHRlc3Rw dWJfdGJsMyAoYSBpbnQpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsM2EgKGIgdGV4dCkgSU5I RVJJVFMgKHRlc3RwdWJfdGJsMyk7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHRl c3RwdWJfdGJsMzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIzCkBAIC0xOTAsOCArMjE0LDI1IEBAIFRhYmxlczoKIFRhYmxlczoK ICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKIAorXGRScCsgdGVzdHB1YjUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAi cHVibGljLnRlc3RwdWJfdGJsMyIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsM2EiCisKK1xkUnAr IHRlc3RwdWI2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg dCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK K0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisKIERST1AgVEFCTEUg dGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywg dGVzdHB1YjQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUs IHRlc3RwdWI2OwogLS0gVGVzdHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcwogU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFy dGVkOwpAQCAtMTY1Niw5ICsxNjk3LDE0IEBAIERST1AgU0NIRU1BIHNjaDIgY2FzY2FkZTsKIC0t IFRlc3RzIGZvciBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQKIENSRUFURSBTQ0hFTUEgcHVi X3NjaDE7CiBDUkVBVEUgVEFCTEUgcHViX3NjaDEudGJsMSAoYSBpbnQpOworQ1JFQVRFIFRBQkxF IHB1Yl9zY2gxLnRibDIgKGEgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEZPUiBBTEwgVEFCTEVTOwogUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIGNhbid0IGFkZCBFWENFUFQgVEFCTEUgdG8gJ0ZP UiBBTEwgVEFCTEVTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0VSUk9SOiAgYWRk aW5nIEFMTCBUQUJMRVMgcmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGhhdmUgZGVmYXVsdCBw dWJsaWNhdGlvbiBvcHRpb25zLCBubyB0YWJsZXMvc2NoZW1hcyBhc3NvY2lhdGVkIGFuZCBBTEwg VEFCTEVTIGZsYWcgc2hvdWxkIG5vdCBiZSBzZXQKK0hJTlQ6ICBVc2UgQUxURVIgUFVCTElDQVRJ T04gLi4uIFJFU0VUIHRvIHJlc2V0IHRoZSBwdWJsaWNhdGlvbgogLS0gVmVyaWZ5IHRoYXQgJ0FM TCBUQUJMRVMnIGZsYWcgaXMgcmVzZXQKIFxkUnArIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKQEAgLTE2NzUs OSArMTcyMSwyNCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKLUFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgQUREIFRBQkxFIHB1Yl9zY2gxLnRibDEsIEFMTCBUQUJMRVMgSU4gU0NIRU1B IHB1YmxpYzsKLS0tIFZlcmlmeSB0aGF0IHRhYmxlcyBhbmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdp dGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkCi0tLSBhZnRlciBSRVNFVAorLS0gc2hvdWxk IHdvcmsgbm93IGFmdGVyIHJlc2V0dGluZyB0aGUgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRi bDEsIHB1Yl9zY2gxLnRibDI7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVi X3NjaDEudGJsMSIKKyAgICAicHViX3NjaDEudGJsMiIKKworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9yZXNldCBSRVNFVDsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIFRB QkxFIHB1Yl9zY2gxLnRibDE7CistLSBjYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHRvICdGT1IgVEFC TEUnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwg VEFCTEVTIEVYQ0VQVCBUQUJMRSBwdWJfc2NoMS50YmwxOworRVJST1I6ICBhZGRpbmcgQUxMIFRB QkxFUyByZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gaGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9u IG9wdGlvbnMsIG5vIHRhYmxlcy9zY2hlbWFzIGFzc29jaWF0ZWQgYW5kIEFMTCBUQUJMRVMgZmxh ZyBzaG91bGQgbm90IGJlIHNldAorSElOVDogIFVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVT RVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uCistLSBWZXJpZnkgdGhhdCB0YWJsZXMgYXNzb2Np YXRlZCB3aXRoIHRoZSBwdWJsaWNhdGlvbiBhcmUgZHJvcHBlZCBhZnRlciBSRVNFVAogXGRScCsg dGVzdHB1Yl9yZXNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9yZXNldAogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKQEAg LTE2ODUsNiArMTc0NiwyNiBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBU QUJMRSBwdWJfc2NoMS50YmwxLCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdQogIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl9zY2gxLnRibDEiCisKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorKDEgcm93KQorCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSBw dWJsaWM7CistLSBjYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHRvICdGT1IgQUxMIFRBQkxFUyBJTiBT Q0hFTUEnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBwdWJfc2NoMS50YmwxOworRVJST1I6ICBhZGRpbmcgQUxM IFRBQkxFUyByZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gaGF2ZSBkZWZhdWx0IHB1YmxpY2F0 aW9uIG9wdGlvbnMsIG5vIHRhYmxlcy9zY2hlbWFzIGFzc29jaWF0ZWQgYW5kIEFMTCBUQUJMRVMg ZmxhZyBzaG91bGQgbm90IGJlIHNldAorSElOVDogIFVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4g UkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uCistLSBWZXJpZnkgdGhhdCBzY2hlbWFzIGFz c29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24gYXJlIGRyb3BwZWQgYWZ0ZXIgUkVTRVQKK1xk UnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJsaWMiCiAKQEAgLTE2OTYs MTMgKzE3NzcsNDAgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKICBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCi1BTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSCA9ICcnLCBQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9P VCA9ICd0cnVlJyk7Ci0tLSBWZXJpZnkgdGhhdCBwdWJsaXNoIG9wdGlvbnMgYW5kIHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290IG9wdGlvbiBhcmUgcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIID0gJycpOworLS0gY2FuJ3QgYWRkIEVYQ0VQVCBUQUJM RSB3aGVuIHRoZSBwdWJsaWNhdGlvbiBvcHRpb25zIGFyZSBub3QgdGhlIGRlZmF1bHQKKy0tIHZh bHVlcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENF UFQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0VSUk9SOiAgYWRkaW5nIEFMTCBUQUJMRVMgcmVxdWly ZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNhdGlvbiBvcHRpb25zLCBu byB0YWJsZXMvc2NoZW1hcyBhc3NvY2lhdGVkIGFuZCBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5v dCBiZSBzZXQKK0hJTlQ6ICBVc2UgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUIHRvIHJlc2V0 IHRoZSBwdWJsaWNhdGlvbgorLS0gVmVyaWZ5IHRoYXQgcHVibGlzaCBvcHRpb24gaXMgcmVzZXQK IFxkUnArIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBm ICAgICAgICAgfCB0CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKygxIHJvdykKKworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVz ZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisoMSByb3cp CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIX1ZJQV9QQVJU SVRJT05fUk9PVCA9ICd0cnVlJyk7CistLSBjYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHdoZW4gcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qgb3B0aW9uIGRvZXMgbm90CistLSBoYXZlIGRlZmF1bHQg dmFsdWUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitFUlJPUjogIGFkZGluZyBBTEwgVEFCTEVTIHJlcXVp cmVzIHRoZSBwdWJsaWNhdGlvbiB0byBoYXZlIGRlZmF1bHQgcHVibGljYXRpb24gb3B0aW9ucywg bm8gdGFibGVzL3NjaGVtYXMgYXNzb2NpYXRlZCBhbmQgQUxMIFRBQkxFUyBmbGFnIHNob3VsZCBu b3QgYmUgc2V0CitISU5UOiAgVXNlIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVCB0byByZXNl dCB0aGUgcHVibGljYXRpb24KKy0tIFZlcmlmeSB0aGF0IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290IG9wdGlvbiBpcyByZXNldAorXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKICgxIHJvdykKIAogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKQEAgLTE3MjEsNiArMTgyOSw3IEBAIEVSUk9SOiAg bXVzdCBiZSBzdXBlcnVzZXIgdG8gUkVTRVQgcHVibGljYXRpb24KIFNFVCBST0xFIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlcjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldDsKIERST1Ag VEFCTEUgcHViX3NjaDEudGJsMTsKK0RST1AgVEFCTEUgcHViX3NjaDEudGJsMjsKIERST1AgU0NI RU1BIHB1Yl9zY2gxOwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA4NjhmMWM1MWIxLi4xMTQ1NzQ0NDY1IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC04OSwyMCArODksMzMgQEAgU0VM RUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5h bWUgPSAndGVzdHB1Yl9mb3JhbGwKIFxkKyB0ZXN0cHViX3RibDIKIFxkUnArIHRlc3RwdWJfZm9y YWxsdGFibGVzCiAKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDI7CistLSBzcGVjaWZ5IEVY Q0VQVCB3aXRob3V0IFRBQkxFCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJs ZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCB0ZXN0cHViX3RibDE7CitSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOworCitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZQorXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisKIERST1Ag VEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxl cywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVt YSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlMTsKIAogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQpOwogQ1JF QVRFIFRBQkxFIHRlc3RwdWJfdGJsM2EgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsMyk7 CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMzsKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgT05MWSB0ZXN0 cHViX3RibDM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKIFxk UnArIHRlc3RwdWI0CitcZFJwKyB0ZXN0cHViNQorXGRScCsgdGVzdHB1YjYKIAogRFJPUCBUQUJM RSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIz LCB0ZXN0cHViNDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHVi NSwgdGVzdHB1YjY7CiAKIC0tIFRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKIFNFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKQEAgLTEwNjAsMjYgKzEwNzMsNjMgQEAgRFJPUCBT Q0hFTUEgc2NoMiBjYXNjYWRlOwogLS0gVGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBS RVNFVAogQ1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKIENSRUFURSBUQUJMRSBwdWJfc2NoMS50Ymwx IChhIGludCk7CitDUkVBVEUgVEFCTEUgcHViX3NjaDEudGJsMiAoYSBpbnQpOwogU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVz ZXQgRk9SIEFMTCBUQUJMRVM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogCistLSBjYW4n dCBhZGQgRVhDRVBUIFRBQkxFIHRvICdGT1IgQUxMIFRBQkxFUycgcHVibGljYXRpb24KK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1 Yl9zY2gxLnRibDE7CisKIC0tIFZlcmlmeSB0aGF0ICdBTEwgVEFCTEVTJyBmbGFnIGlzIHJlc2V0 CiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJF U0VUOwogXGRScCsgdGVzdHB1Yl9yZXNldAogCi1BTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IEFERCBUQUJMRSBwdWJfc2NoMS50YmwxLCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7 CistLSBzaG91bGQgd29yayBub3cgYWZ0ZXIgcmVzZXR0aW5nIHRoZSBwdWJsaWNhdGlvbgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg cHViX3NjaDEudGJsMSwgcHViX3NjaDEudGJsMjsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKKworQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9yZXNldCBBREQgVEFCTEUgcHViX3NjaDEudGJsMTsKKworLS0gY2FuJ3QgYWRkIEVY Q0VQVCBUQUJMRSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsK KworLS0gVmVyaWZ5IHRoYXQgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24g YXJlIGRyb3BwZWQgYWZ0ZXIgUkVTRVQKK1xkUnArIHRlc3RwdWJfcmVzZXQKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Ymxp YzsKKworLS0gY2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB0byAnRk9SIEFMTCBUQUJMRVMgSU4gU0NI RU1BJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKKworLS0gVmVyaWZ5IHRoYXQgc2No ZW1hcyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkIGFmdGVyIFJF U0VUCitcZFJwKyB0ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0 IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X3Jlc2V0IFNFVCAoUFVCTElTSCA9ICcnKTsKKworLS0gY2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB3 aGVuIHRoZSBwdWJsaWNhdGlvbiBvcHRpb25zIGFyZSBub3QgdGhlIGRlZmF1bHQKKy0tIHZhbHVl cworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgcHViX3NjaDEudGJsMTsKIAotLS0gVmVyaWZ5IHRoYXQgdGFibGVzIGFuZCBzY2hlbWFz IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24gYXJlIGRyb3BwZWQKLS0tIGFmdGVyIFJF U0VUCistLSBWZXJpZnkgdGhhdCBwdWJsaXNoIG9wdGlvbiBpcyByZXNldAogXGRScCsgdGVzdHB1 Yl9yZXNldAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKIFxkUnArIHRl c3RwdWJfcmVzZXQKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJ U0ggPSAnJywgUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgPSAndHJ1ZScpOworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UID0g J3RydWUnKTsKKworLS0gY2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB3aGVuIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290IG9wdGlvbiBkb2VzIG5vdAorLS0gaGF2ZSBkZWZhdWx0IHZhbHVlCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBw dWJfc2NoMS50YmwxOwogCi0tLSBWZXJpZnkgdGhhdCBwdWJsaXNoIG9wdGlvbnMgYW5kIHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290IG9wdGlvbiBhcmUgcmVzZXQKKy0tIFZlcmlmeSB0aGF0IHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG9wdGlvbiBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9y ZXNldAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKIFxkUnArIHRlc3Rw dWJfcmVzZXQKQEAgLTEwOTIsNiArMTE0Miw3IEBAIFNFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlcjsKIAogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OwogRFJPUCBUQUJMRSBw dWJfc2NoMS50YmwxOworRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOwogRFJPUCBTQ0hFTUEgcHVi X3NjaDE7CiAKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmNkNzZmNWJjM2QKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfcmVwX2NoYW5nZXNfZXhjZXB0X3Rh YmxlLnBsCkBAIC0wLDAgKzEsODUgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0aW9u IHRlc3RzIGZvciBleGNlcHQgdGFibGUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBu b2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmli ZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFt aW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBUZXN0IHJl cGxpY2F0aW9uIHdpdGggcHVibGljYXRpb25zIGNyZWF0ZWQgdXNpbmcgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFCisjIG9wdGlvbi4KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBw dWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUg U0NIRU1BIHNjaDEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBUQUJMRSBzY2gxLnRhYjEgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBB UyBhIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgcHVibGljLnRhYjEoYSBpbnQpIik7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxl cyBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkNSRUFURSBTQ0hFTUEgc2NoMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHB1YmxpYy50YWIxIChhIGlu dCkiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5z dHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHNjaDEudGFiMSIpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlND UklQVElPTiB0YXBfc3ViX3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBV QkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOworCisjIEFsc28gd2FpdCBmb3IgaW5pdGlhbCB0 YWJsZSBzeW5jIHRvIGZpbmlzaAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJTRUxFQ1QgY291bnQo MSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5PVCBJTiAo J3InLCAncycpOyI7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jl cycsICRzeW5jZWRfcXVlcnkpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7CisKKyMgQ2hlY2sgdGhlIHRhYmxlIGRh dGEgZG9lcyBub3Qgc3luYyBmb3IgZXhjbHVkZWQgdGFibGUKK215ICRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4o YSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNr IHRoZXJlIGlzIG5vIGluaXRpYWwgZGF0YSBjb3BpZWQgZm9yIHRoZSBleGNsdWRlZCB0YWJsZScp OworCisjIEluc2VydCBzb21lIGRhdGEgYW5kIHZlcmlmeSB0aGF0IGluc2VydGVkIGRhdGEgaXMg bm90IHJlcGxpY2F0ZWQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IklOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDExLDIwKSkiKTsK KworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOwor CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1 bHQsIHFxKDB8fCksICdjaGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlcicpOwor CisjIEFsdGVyIHB1YmxpY2F0aW9uIHRvIGV4Y2x1ZGUgZGF0YSBjaGFuZ2VzIGluIHB1YmxpYy50 YWIxIGFuZCB2ZXJpZnkgdGhhdAorIyBzdWJzY3JpYmVyIGRvZXMgbm90IGdldCB0aGUgY2hhbmdl ZCBkYXRhIGZvciB0aGlzIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKyAgICAgICAgIkFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIFJFU0VUIik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICAgICAiQUxURVIg UFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHNj aDEudGFiMSwgcHVibGljLnRhYjEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisgICAgICAgICJJTlNFUlQgSU5UTyBwdWJsaWMudGFiMSBWQUxVRVMoZ2VuZXJhdGVf c2VyaWVzKDEsMTApKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Rh cF9zdWJfc2NoZW1hJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHB1Ymxp Yy50YWIxIik7CitpcygkcmVzdWx0LCBxcSgwfHwpLCAnY2hlY2sgcm93cyBvbiBzdWJzY3JpYmVy IGNhdGNodXAnKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5vZGVfcHVi bGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zMi4wCgo= --000000000000c82da505dfa6e565 Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0001-Add-RESET-clause-to-Alter-Publication-which-will-.patch" Content-Disposition: attachment; filename="v7-0001-Add-RESET-clause-to-Alter-Publication-which-will-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3i9utfn0 RnJvbSA3ZmEyNTdlMWRiZTI1NWRiMGVmOTM3OWVjYjVkNzFmOWIxZTE1MzMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAxNCBNYXkgMjAyMiAxMzoxMzo0NiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjcg MS8yXSBBZGQgUkVTRVQgY2xhdXNlIHRvIEFsdGVyIFB1YmxpY2F0aW9uIHdoaWNoIHdpbGwgcmVz ZXQKIHRoZSBwdWJsaWNhdGlvbiB3aXRoIGRlZmF1bHQgdmFsdWVzLgoKVGhpcyBwYXRjaCBhZGRz IGEgbmV3IFJFU0VUIGNsYXVzZSB0byBBTFRFUiBQVUJMSUNBVElPTiB3aGljaCB3aWxsIHJlc2V0 CnRoZSBwdWJsaWNhdGlvbiB0byB0aGUgZGVmYXVsdCBzdGF0ZSB3aGljaCBpbmNsdWRlcyByZXNl dHRpbmcgdGhlIHB1YmxpY2F0aW9uCm9wdGlvbnMsIHNldHRpbmcgQUxMIFRBQkxFUyBmbGFnIHRv IGZhbHNlIGFuZCBkcm9wcGluZyB0aGUgcmVsYXRpb25zIGFuZApzY2hlbWFzIHRoYXQgYXJlIGFz c29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24uClVzYWdlOgpBTFRFUiBQVUJMSUNBVElPTiBw dWIxIFJFU0VUOwotLS0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAg IHwgIDM4ICsrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAg ICB8IDEwMCArKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 ICAgICAgICAgICAgICAgICB8ICAgOSArKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAg ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAg ICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dCB8ICA2OSArKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9u LnNxbCAgICAgIHwgIDM3ICsrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDI0MiBpbnNlcnRpb25z KCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNn bWwKaW5kZXggZTJjY2U0OTQ3MS4uNDdiZDE1ZjFmYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf cHVibGljYXRpb24uc2dtbApAQCAtMjcsNiArMjcsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IERST1AgPHJlcGxh YwogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBTRVQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGlj YXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkKIEFMVEVSIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gT1dORVIg VE8geyA8cmVwbGFjZWFibGU+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1JPTEUg fCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHJl cGxhY2VhYmxlPm5ld19uYW1lPC9yZXBsYWNlYWJsZT4KK0FMVEVSIFBVQkxJQ0FUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVTRVQKIAogPHBo cmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC02NSwyMCArNjYsMzMg QEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgVGhl IHJlbWFpbmluZyB2YXJpYW50cyBjaGFuZ2UgdGhlIG93bmVyIGFuZCB0aGUgbmFtZSBvZiB0aGUg cHVibGljYXRpb24uCisgICBUaGUgPGxpdGVyYWw+T1dORVI8L2xpdGVyYWw+IGNsYXVzZSB3aWxs IGNoYW5nZSB0aGUgb3duZXIgb2YgdGhlIHB1YmxpY2F0aW9uLgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBUaGUgPGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiBjbGF1c2Ugd2lsbCBjaGFuZ2Ug dGhlIG5hbWUgb2YgdGhlIHB1YmxpY2F0aW9uLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBU aGUgPGxpdGVyYWw+UkVTRVQ8L2xpdGVyYWw+IGNsYXVzZSB3aWxsIHJlc2V0IHRoZSBwdWJsaWNh dGlvbiB0byB0aGUKKyAgIGRlZmF1bHQgc3RhdGUgd2hpY2ggaW5jbHVkZXMgcmVzZXR0aW5nIHRo ZSBwdWJsaWNhdGlvbiBvcHRpb25zLCBzZXR0aW5nCisgICA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9s aXRlcmFsPiBmbGFnIHRvIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiBhbmQKKyAgIGRyb3BwaW5n IGFsbCByZWxhdGlvbnMgYW5kIHNjaGVtYXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBw dWJsaWNhdGlvbi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgogICAgWW91IG11c3Qgb3duIHRoZSBw dWJsaWNhdGlvbiB0byB1c2UgPGNvbW1hbmQ+QUxURVIgUFVCTElDQVRJT048L2NvbW1hbmQ+Lgog ICAgQWRkaW5nIGEgdGFibGUgdG8gYSBwdWJsaWNhdGlvbiBhZGRpdGlvbmFsbHkgcmVxdWlyZXMg b3duaW5nIHRoYXQgdGFibGUuCi0gICBUaGUgPGxpdGVyYWw+QUREIEFMTCBUQUJMRVMgSU4gU0NI RU1BPC9saXRlcmFsPiBhbmQKLSAgIDxsaXRlcmFsPlNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQTwv bGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUKLSAgIGludm9raW5nIHVzZXIg dG8gYmUgYSBzdXBlcnVzZXIuICBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0IGFsc28gYmUg YQotICAgZGlyZWN0IG9yIGluZGlyZWN0IG1lbWJlciBvZiB0aGUgbmV3IG93bmluZyByb2xlLiBU aGUgbmV3IG93bmVyIG11c3QgaGF2ZQotICAgPGxpdGVyYWw+Q1JFQVRFPC9saXRlcmFsPiBwcml2 aWxlZ2Ugb24gdGhlIGRhdGFiYXNlLiAgQWxzbywgdGhlIG5ldyBvd25lcgotICAgb2YgYSA8bGl0 ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVMg SU4KLSAgIFNDSEVNQTwvbGl0ZXJhbD4gcHVibGljYXRpb24gbXVzdCBiZSBhIHN1cGVydXNlci4g SG93ZXZlciwgYSBzdXBlcnVzZXIgY2FuCi0gICBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiBhIHB1 YmxpY2F0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhlc2UgcmVzdHJpY3Rpb25zLgorICAgVGhlIDxsaXRl cmFsPkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5TRVQg QUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gYW5kCisgICA8 bGl0ZXJhbD5SRVNFVDwvbGl0ZXJhbD4gb2YgcHVibGljYXRpb24gcmVxdWlyZXMgdGhlIGludm9r aW5nIHVzZXIgdG8gYmUgYQorICAgc3VwZXJ1c2VyLiBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBt dXN0IGFsc28gYmUgYSBkaXJlY3Qgb3IgaW5kaXJlY3QgbWVtYmVyCisgICBvZiB0aGUgbmV3IG93 bmluZyByb2xlLiBUaGUgbmV3IG93bmVyIG11c3QgaGF2ZSA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVy YWw+CisgICBwcml2aWxlZ2Ugb24gdGhlIGRhdGFiYXNlLiAgQWxzbywgdGhlIG5ldyBvd25lciBv ZiBhCisgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFs PkZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gcHVibGljYXRpb24gbXVzdCBiZSBh IHN1cGVydXNlci4KKyAgIEhvd2V2ZXIsIGEgc3VwZXJ1c2VyIGNhbiBjaGFuZ2UgdGhlIG93bmVy c2hpcCBvZiBhIHB1YmxpY2F0aW9uIHJlZ2FyZGxlc3Mgb2YKKyAgIHRoZXNlIHJlc3RyaWN0aW9u cy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMjA3LDYgKzIyMSwxMiBAQCBBTFRFUiBQVUJM SUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBBREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0 aW5nLCBzYWxlczsKICAgIDxzdHJ1Y3RuYW1lPnByb2R1Y3Rpb25fcHVibGljYXRpb248L3N0cnVj dG5hbWU+OgogPHByb2dyYW1saXN0aW5nPgogQUxURVIgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9w dWJsaWNhdGlvbiBBREQgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBBTEwgVEFCTEVTIElOIFND SEVNQSBwcm9kdWN0aW9uOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBSZXNldCB0aGUgcHVibGljYXRpb24gPHN0cnVjdG5hbWU+cHJvZHVjdGlvbl9wdWJsaWNhdGlv bjwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBwcm9k dWN0aW9uX3B1YmxpY2F0aW9uIFJFU0VUOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAgPC9y ZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA4ZTY0 NTc0MWU0Li45ZWQ4Y2RlZGJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YwpAQCAtNTMsNiArNTMsMTQgQEAKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL3ZhcmxlbmEuaCIKIAorLyogQ1JFQVRFIFBVQkxJQ0FUSU9OIGRlZmF1bHQgdmFs dWVzIGZvciBmbGFncyBhbmQgb3B0aW9ucyAqLworI2RlZmluZSBQVUJfREVGQVVMVF9BQ1RJT05f SU5TRVJUIHRydWUKKyNkZWZpbmUgUFVCX0RFRkFVTFRfQUNUSU9OX1VQREFURSB0cnVlCisjZGVm aW5lIFBVQl9ERUZBVUxUX0FDVElPTl9ERUxFVEUgdHJ1ZQorI2RlZmluZSBQVUJfREVGQVVMVF9B Q1RJT05fVFJVTkNBVEUgdHJ1ZQorI2RlZmluZSBQVUJfREVGQVVMVF9WSUFfUk9PVCBmYWxzZQor I2RlZmluZSBQVUJfREVGQVVMVF9BTExfVEFCTEVTIGZhbHNlCisKIC8qCiAgKiBJbmZvcm1hdGlv biB1c2VkIHRvIHZhbGlkYXRlIHRoZSBjb2x1bW5zIGluIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Np b24uIFNlZQogICogY29udGFpbl9pbnZhbGlkX3JmY29sdW1uX3dhbGtlciBmb3IgZGV0YWlscy4K QEAgLTkxLDExICs5OSwxMSBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4gPSBmYWxzZTsKIAog CS8qIGRlZmF1bHRzICovCi0JcHViYWN0aW9ucy0+cHViaW5zZXJ0ID0gdHJ1ZTsKLQlwdWJhY3Rp b25zLT5wdWJ1cGRhdGUgPSB0cnVlOwotCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7Ci0J cHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOwotCSpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IGZhbHNlOworCXB1YmFjdGlvbnMtPnB1Ymluc2VydCA9IFBVQl9ERUZBVUxUX0FDVElP Tl9JTlNFUlQ7CisJcHViYWN0aW9ucy0+cHVidXBkYXRlID0gUFVCX0RFRkFVTFRfQUNUSU9OX1VQ REFURTsKKwlwdWJhY3Rpb25zLT5wdWJkZWxldGUgPSBQVUJfREVGQVVMVF9BQ1RJT05fREVMRVRF OworCXB1YmFjdGlvbnMtPnB1YnRydW5jYXRlID0gUFVCX0RFRkFVTFRfQUNUSU9OX1RSVU5DQVRF OworCSpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IFBVQl9ERUZBVUxUX1ZJQV9ST09UOwog CiAJLyogUGFyc2Ugb3B0aW9ucyAqLwogCWZvcmVhY2gobGMsIG9wdGlvbnMpCkBAIC0xMTA1LDYg KzExMTMsODYgQEAgSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhMaXN0ICpyZWxpZHMpCiAJCUNh Y2hlSW52YWxpZGF0ZVJlbGNhY2hlQWxsKCk7CiB9CiAKKy8qCisgKiBSZXNldCB0aGUgcHVibGlj YXRpb24uCisgKgorICogUmVzZXQgdGhlIHB1YmxpY2F0aW9uIG9wdGlvbnMsIHNldHRpbmcgQUxM IFRBQkxFUyBmbGFnIHRvIGZhbHNlIGFuZCBkcm9wCisgKiBhbGwgcmVsYXRpb25zIGFuZCBzY2hl bWFzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24uCisgKi8KK3N0YXRp YyB2b2lkCitBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwKKwkJCQkJICBSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXAp Cit7CisJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24p IEdFVFNUUlVDVCh0dXApOworCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+b2lkOworCUxpc3QJICAg KnNjaGVtYXMgPSBOSUw7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlib29sCQludWxsc1tOYXR0 c19wZ19wdWJsaWNhdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfcHVibGljYXRpb25d OworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOworCU9iamVjdEFkZHJlc3Mg b2JqOworCUxpc3RDZWxsICAgKmxjOworCU9pZAkJCXByaWQ7CisKKwkvKiBSRVNFVCBwdWJsaWNh dGlvbiByZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAoIXN1cGVydXNlcigpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJ CQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIFJFU0VUIHB1YmxpY2F0aW9uIikpOworCisJ bWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2Us IHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNl cykpOworCisJLyogUmVzZXQgdGhlIHB1YmxpY2F0aW9uIG9wdGlvbnMgKi8KKwl2YWx1ZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9wdWJpbnNlcnQgLSAxXSA9IEJvb2xHZXREYXR1bShQVUJfREVGQVVM VF9BQ1RJT05fSU5TRVJUKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1Ymluc2Vy dCAtIDFdID0gdHJ1ZTsKKworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnVwZGF0ZSAt IDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxUX0FDVElPTl9VUERBVEUpOworCXJlcGxhY2Vz W0FudW1fcGdfcHVibGljYXRpb25fcHVidXBkYXRlIC0gMV0gPSB0cnVlOworCisJdmFsdWVzW0Fu dW1fcGdfcHVibGljYXRpb25fcHViZGVsZXRlIC0gMV0gPSBCb29sR2V0RGF0dW0oUFVCX0RFRkFV TFRfQUNUSU9OX0RFTEVURSk7CisJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZWxl dGUgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0 ZSAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxUX0FDVElPTl9UUlVOQ0FURSk7CisJcmVw bGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFdID0gdHJ1ZTsKKworCXZh bHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnZpYXJvb3QgLSAxXSA9IEJvb2xHZXREYXR1bShQ VUJfREVGQVVMVF9WSUFfUk9PVCk7CisJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2 aWFyb290IC0gMV0gPSB0cnVlOworCisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxs dGFibGVzIC0gMV0gPSBCb29sR2V0RGF0dW0oUFVCX0RFRkFVTFRfQUxMX1RBQkxFUyk7CisJcmVw bGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAxXSA9IHRydWU7CisKKwl0 dXAgPSBoZWFwX21vZGlmeV90dXBsZSh0dXAsIFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVz LCBudWxscywKKwkJCQkJCQlyZXBsYWNlcyk7CisKKwkvKiBVcGRhdGUgdGhlIGNhdGFsb2cuICov CisJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXApOworCisJLyogRHJv cCB0aGUgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uICovCisJc2NoZW1h cyA9IEdldFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJpZCk7CisJUHVibGljYXRpb25Ecm9wU2NoZW1h cyhwdWJpZCwgc2NoZW1hcywgZmFsc2UpOworCisJLyogRHJvcCB0aGUgcmVsYXRpb25zIGFzc29j aWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24gKi8KKwlyZWxzID0gR2V0UHVibGljYXRpb25SZWxh dGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJZm9yZWFjaChsYywgcmVscykK Kwl7CisJCU9pZAkJCXJlbGlkID0gbGZpcnN0X29pZChsYyk7CisKKwkJcHJpZCA9IEdldFN5c0Nh Y2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfb2lkLAor CQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCSAgIE9iamVjdElkR2V0 RGF0dW0ocHViaWQpKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKHByaWQpKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1z ZygicmVsYXRpb24gXCIlc1wiIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiIsCisJCQkJ CQkJZ2V0X3JlbF9uYW1lKHJlbGlkKSkpKTsKKworCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwgUHVi bGljYXRpb25SZWxSZWxhdGlvbklkLCBwcmlkKTsKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmosIERS T1BfQ0FTQ0FERSwgMCk7CisJfQorfQorCiAvKgogICogQWRkIG9yIHJlbW92ZSB0YWJsZSB0by9m cm9tIHB1YmxpY2F0aW9uLgogICovCkBAIC0xNDE2LDYgKzE1MDQsOCBAQCBBbHRlclB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAlp ZiAoc3RtdC0+b3B0aW9ucykKIAkJQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMocHN0YXRlLCBzdG10 LCByZWwsIHR1cCk7CisJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQX1Jlc2V0UHVibGljYXRp b24pCisJCUFsdGVyUHVibGljYXRpb25SZXNldChwc3RhdGUsIHN0bXQsIHJlbCwgdHVwKTsKIAll bHNlCiAJewogCQlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA5ODlk YjBkYmVjLi5kN2UxMzY2NmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTEwNTU4LDYgKzEwNTU4LDggQEAg cHViX29ial9saXN0OglQdWJsaWNhdGlvbk9ialNwZWMKICAqCiAgKiBBTFRFUiBQVUJMSUNBVElP TiBuYW1lIFNFVCBwdWJfb2JqIFssIC4uLl0KICAqCisgKiBBTFRFUiBQVUJMSUNBVElPTiBuYW1l IFJFU0VUCisgKgogICogcHViX29iaiBpcyBvbmUgb2Y6CiAgKgogICoJCVRBQkxFIHRhYmxlX25h bWUgWywgLi4uXQpAQCAtMTA2MDQsNiArMTA2MDYsMTMgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6 CiAJCQkJCW4tPmFjdGlvbiA9IEFQX0Ryb3BPYmplY3RzOwogCQkJCQkkJCA9IChOb2RlICopIG47 CiAJCQkJfQorCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFJFU0VUCisJCQkJeworCQkJCQlB bHRlclB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVibGljYXRpb25TdG10KTsK KwkJCQkJbi0+cHVibmFtZSA9ICQzOworCQkJCQluLT5hY3Rpb24gPSBBUF9SZXNldFB1YmxpY2F0 aW9uOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CiAJCTsKIAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggNTVhZjllYjA0ZS4uNjJlY2MzY2RhYiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYwpAQCAtMTgxOSw3ICsxODE5LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNo YXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxu YW1lPiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hB bnkpKQotCQlDT01QTEVURV9XSVRIKCJBREQiLCAiRFJPUCIsICJPV05FUiBUTyIsICJSRU5BTUUg VE8iLCAiU0VUIik7CisJCUNPTVBMRVRFX1dJVEgoIkFERCIsICJEUk9QIiwgIk9XTkVSIFRPIiwg IlJFTkFNRSBUTyIsICJSRVNFVCIsICJTRVQiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFt ZT4gQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkFERCIpKQogCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJU QUJMRSIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDczZjYzNWI0NTUuLjk3MjZmZGFlNTgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQwMzUsNyArNDAzNSw4IEBAIHR5cGVkZWYgZW51 bSBBbHRlclB1YmxpY2F0aW9uQWN0aW9uCiB7CiAJQVBfQWRkT2JqZWN0cywJCQkJLyogYWRkIG9i amVjdHMgdG8gcHVibGljYXRpb24gKi8KIAlBUF9Ecm9wT2JqZWN0cywJCQkJLyogcmVtb3ZlIG9i amVjdHMgZnJvbSBwdWJsaWNhdGlvbiAqLwotCUFQX1NldE9iamVjdHMJCQkJLyogc2V0IGxpc3Qg b2Ygb2JqZWN0cyAqLworCUFQX1NldE9iamVjdHMsCQkJCS8qIHNldCBsaXN0IG9mIG9iamVjdHMg Ki8KKwlBUF9SZXNldFB1YmxpY2F0aW9uCQkJLyogcmVzZXQgdGhlIHB1YmxpY2F0aW9uICovCiB9 IEFsdGVyUHVibGljYXRpb25BY3Rpb247CiAKIHR5cGVkZWYgc3RydWN0IEFsdGVyUHVibGljYXRp b25TdG10CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDI3 NGIzN2RmZTUuLjc5OWEzZjE1ZjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CkBAIC0xNjUzLDYgKzE2NTMsNzUgQEAgRFJPUCBQVUJMSUNBVElPTiBwdWI7CiBE Uk9QIFRBQkxFIHNjaDEudGJsMTsKIERST1AgU0NIRU1BIHNjaDEgY2FzY2FkZTsKIERST1AgU0NI RU1BIHNjaDIgY2FzY2FkZTsKKy0tIFRlc3RzIGZvciBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVT RVQKK0NSRUFURSBTQ0hFTUEgcHViX3NjaDE7CitDUkVBVEUgVEFCTEUgcHViX3NjaDEudGJsMSAo YSBpbnQpOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgRk9SIEFMTCBUQUJMRVM7CitSRVNFVCBjbGllbnRfbWluX21l c3NhZ2VzOworLS0gVmVyaWZ5IHRoYXQgJ0FMTCBUQUJMRVMnIGZsYWcgaXMgcmVzZXQKK1xkUnAr IHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCisoMSByb3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7 CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0 IEFERCBUQUJMRSBwdWJfc2NoMS50YmwxLCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7Cist LSBWZXJpZnkgdGhhdCB0YWJsZXMgYW5kIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJs aWNhdGlvbiBhcmUgZHJvcHBlZAorLS0gYWZ0ZXIgUkVTRVQKK1xkUnArIHRlc3RwdWJfcmVzZXQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVz ZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXM6 CisgICAgInB1Yl9zY2gxLnRibDEiCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJsaWMi CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHVi X3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor KDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSCA9 ICcnLCBQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCA9ICd0cnVlJyk7CistLSBWZXJpZnkgdGhh dCBwdWJsaXNoIG9wdGlvbnMgYW5kIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IG9wdGlvbiBh cmUgcmVzZXQKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCB0CisoMSByb3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorKDEgcm93KQorCistLSBWZXJpZnkgdGhhdCBv bmx5IHN1cGVydXNlciBjYW4gcmVzZXQgYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9yZXNldCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOworU0VUIFJP TEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf cmVzZXQgUkVTRVQ7IC0tIGZhaWwgLSBtdXN0IGJlIHN1cGVydXNlcgorRVJST1I6ICBtdXN0IGJl IHN1cGVydXNlciB0byBSRVNFVCBwdWJsaWNhdGlvbgorU0VUIFJPTEUgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OworRFJPUCBUQUJMRSBw dWJfc2NoMS50YmwxOworRFJPUCBTQ0hFTUEgcHViX3NjaDE7CiBSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyLCByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcl9kdW1t eTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA5ZWI4NmZkNTRmLi44Njhm MWM1MWIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMDU3LDYgKzEw NTcsNDMgQEAgRFJPUCBUQUJMRSBzY2gxLnRibDE7CiBEUk9QIFNDSEVNQSBzY2gxIGNhc2NhZGU7 CiBEUk9QIFNDSEVNQSBzY2gyIGNhc2NhZGU7CiAKKy0tIFRlc3RzIGZvciBBTFRFUiBQVUJMSUNB VElPTiAuLi4gUkVTRVQKK0NSRUFURSBTQ0hFTUEgcHViX3NjaDE7CitDUkVBVEUgVEFCTEUgcHVi X3NjaDEudGJsMSAoYSBpbnQpOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgRk9SIEFMTCBUQUJMRVM7CitSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOworCistLSBWZXJpZnkgdGhhdCAnQUxMIFRBQkxFUycgZmxhZyBp cyByZXNldAorXGRScCsgdGVzdHB1Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9y ZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9yZXNldCBBREQgVEFCTEUgcHViX3NjaDEudGJsMSwgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg cHVibGljOworCistLSBWZXJpZnkgdGhhdCB0YWJsZXMgYW5kIHNjaGVtYXMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBwdWJsaWNhdGlvbiBhcmUgZHJvcHBlZAorLS0gYWZ0ZXIgUkVTRVQKK1xkUnArIHRl c3RwdWJfcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJw KyB0ZXN0cHViX3Jlc2V0CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQ VUJMSVNIID0gJycsIFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UID0gJ3RydWUnKTsKKworLS0g VmVyaWZ5IHRoYXQgcHVibGlzaCBvcHRpb25zIGFuZCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCBvcHRpb24gYXJlIHJlc2V0CitcZFJwKyB0ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorCistLSBWZXJpZnkg dGhhdCBvbmx5IHN1cGVydXNlciBjYW4gcmVzZXQgYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9yZXNldCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwor U0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgUkVTRVQ7IC0tIGZhaWwgLSBtdXN0IGJlIHN1cGVydXNlcgorU0VUIFJPTEUg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyOworCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVz ZXQ7CitEUk9QIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitEUk9QIFNDSEVNQSBwdWJfc2NoMTsKKwog UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIERST1AgUk9MRSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXJfZHVtbXk7Ci0tIAoyLjMyLjAKCg== --000000000000c82da505dfa6e565--