Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1werrl-0055i1-00 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 10:08:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1werqi-00Ctqq-2l for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 10:07:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1werqi-00Ctqg-0e for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 10:07:20 +0000 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1werqf-00000001AtZ-2isD for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 10:07:19 +0000 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-39b030e889aso4196111fa.1 for ; Wed, 01 Jul 2026 03:07:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782900435; cv=none; d=google.com; s=arc-20260327; b=EJIg1juFaPstYv31/Kn4trpEgO6gRml5aImoz5OWBlLxCQuONGcQmGUq2/yxntr0ge ZKrvKyu9rHbuxfIRwd/K9PDaP1yibNLXCMEZfQtygAlgGz0Av25ZbWK6DaYaJKL+C3dW 0+CTzjEL6u9cAAah7IMGxTtUqEtvs217PFztibGww5iyB3u+p4gmtRkygdUSWlQpP7yb 4nlEHkF6UqP3zcI91UkqoNZOwqxgcICygTWt2pDAjywGAMKRDh3CzzKIbH2+i0mtJJBE c6ew891e7kDMeM7zbfuaSzuZR0asfrsmLm2D8dZpNDMA796cJ5R3rmnhpqvKJIQq5HMn c99w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=sxLiGGtw3HoEW37AxuueIL3CHsPl9bU94yzbSUGtFoU=; fh=YjcVWmDSQ8nNN7r0cp2dgrwiv4evM8ncn/+w39sjq7E=; b=oKkYtE/8nGQB2eQU1DBo4jzIfRId41LnibzuEJYfXL4SzPnPW+KJnwna7g7vUTOo8I zRYf9TxLicEuhGAMBHqZIvxHFzAH5+ZihkJIsPX2L5SSN68Sn/pfFj/oEYVVA6xjvRDZ zJYXOp7kD3U7fpbK0P/DbZfY2FZl1A+DlzuSJPkiBCBY6Oytit/wNilmQUlUB8mw7wWR gAw3+cF87Z9zQcxbBrSxWiz2KjhC031RbEmogomyBeVFFUqF9O0b5tQJsB0oRaMl+D6I ZhDN3AXHdyuCtQs/PU/pWwVn3CQsE77PGP+JRkUn6ThN/1aNnHN2EMDNDIc2Q6fUrW+q xvvQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782900435; x=1783505235; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=sxLiGGtw3HoEW37AxuueIL3CHsPl9bU94yzbSUGtFoU=; b=Bc+MIVQOtTSUztXi0Zv9VieYjgKL/3zcxAiwfrF8OKLEqWnaBpU21GcbrbN30P+xvD oLuAZzLSmZBU1SMvO6SREVtLvExYgqr67CD4I8xGYTg0Updd3/bGmLbjyqKYQYN8zyHC eyRj7QqIgcwAbsheGBbQFSgSD0RtO0/ml+GiNgDX3CHccxR60dDAmn75xnKT4ho9OJlb kzOrZYgPdAMeRJem2uXvJ96GVbiiY52HOa7L47di7GVU2R9JFctPbNiQVBYuhXFqqgWl MdFz7M46mzS4sEUBziNEj1NhorP06cJ5oGoLXf4EQ9oIDccVeYMnFf6hfNQUfS9mpbbe DBww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782900435; x=1783505235; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=sxLiGGtw3HoEW37AxuueIL3CHsPl9bU94yzbSUGtFoU=; b=ND9J6FikHBOkCdsvNloLkg7R/haO2ee2+cFNj7lR6wHiuvUdFfXW+Pl92G2b2fkryK PjHKhb3bqex1RlEcY+P2CuKomNf2+shFoOGyowgWxJXQCKpQzpmEfX/pTBT0rFLduGJ6 JTvHmxXr4tvzqol099vWj7CeFHpuWSiAkcS4i4q9QPCvrbXsd9zyuE1t0RTTbXWwMxbf LdD5T5ZIfHD0yloKdLycmdAdAdpK8xu6h8X7PZC0AKcZKc8c5STaiAIuBiXFnlmeVXig ozOjReeGi0v3TZ5OE76fGJvC5Wab3VyQo08lhYgTRetr2tW2qV1jdL9GiSwgVxSnFhwW QnXA== X-Forwarded-Encrypted: i=1; AHgh+RrAyVpNyUjYQhcUP4JeDYTk3qqRq76N1b319rCPQn0q2+xJO6cmBWqiGM2LCndtQUzCB1CdVnrwnm1uL7Se@lists.postgresql.org X-Gm-Message-State: AOJu0YxfndqhA0qw0tJzkJ4W+1+PyXm1eIrKsEFEe4+UQIhNesqVy3se xZLq64vMKA3Pvj+oZdgr8ceawZNgbSC9zrJJYIRY5cxtH64OcAklSqwg/ZcFF2jyU8skb7RLNpB dmrMAa2VzMTF/tERWlJCj5QaxtU1BwA== X-Gm-Gg: AfdE7cn1qYcjRoWohi5KVy+AiJ3NtaZYUB90sxsKvTNvtE6eXi305zOH1VZkRlu6+tJ oG6yO+cTKQGH8xWjmQZquRcU+snQeEZgOkBghiPS3QCsm5qwG651aTbTqqdRHWHaocRVaYyOD2R fxC1S+QGHqXPoYeLqaZZKcN6T1FGYtOUZaTGXSyi0Q2Q9rYoWoPHtipr0xxjyP5AgYzWfu29G9C xmDv+scpuDJezu6ck65OYG7w1Zy45eSlehhs96BDV5F0DjoAEU8UyWJGe08PuSFLy4bvqqmkfUG 6UozWN7Mhkt5vrr8pDa76Hsprit8B0vUMiA0MCA= X-Received: by 2002:a2e:be2b:0:b0:39a:fa7c:b14e with SMTP id 38308e7fff4ca-39b340d35famr1987841fa.27.1782900434332; Wed, 01 Jul 2026 03:07:14 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Wed, 1 Jul 2026 15:37:01 +0530 X-Gm-Features: AVVi8CcG2E-pbPzSw_DRFPOHF6mmAIHxDu9QHjIYDdeYdCgxwLHcnyd6BME1q4E Message-ID: Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications To: shveta malik Cc: Peter Smith , Amit Kapila , Zsolt Parragi , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000000f0ef2065589db93" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000f0ef2065589db93 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jun 30, 2026 at 3:47=E2=80=AFPM shveta malik wrote: > > On Mon, Jun 22, 2026 at 6:20=E2=80=AFPM Nisha Moond wrote: > > > > Attached updated patches v16. No changes in 0001 to 0003. > > > > Thanks Nisha. I have resumed review of patch. I have not goen through > complete patch yet, but please find a few initial comments: > Thanks for review Shveta. > > 1) > I get this during compilation: > > pgoutput.c:2232:45: warning: declaration of =E2=80=98except_pubids=E2=80= =99 shadows a > previous local [-Wshadow=3Dcompatible-local] > 2232 | List *except_pubids =3D NIL= ; > | ^~~~~~~~~~~~~ > pgoutput.c:2100:29: note: shadowed declaration is here > 2100 | List *except_pubids; > An existing variable exceptpubids was renamed to except_pubids by mistake while addressing comment #5 at [1]. Fixed now. > > 2) > I am checking the flow: > get_rel_sync_entry-->GetTopMostAncestorInPublication > > @@ -2267,7 +2290,8 @@ get_rel_sync_entry(PGOutputData *data, Relation rel= ation) > > ancestor =3D GetTopMostAncestorInPublication(pub->oid, > ancestors, > - &level); > + &level, > + except_pubids); > > a) > For what all publications, flow will come to above point. I guess it > can come for a explict table pub or a schema pub. For a schmea pub, > except_pubids make sense but not for a explicit-table pub alone. > Please add a comment atop GetTopMostAncestorInPublication call here to > explain > the scenario adn then the need of except_pubids. > > b) > We have got except_pubids in the begining of the function as: > except_pubids =3D GetRelationExcludedPublications(root_relid); > > Now inside GetTopMostAncestorInPublication(), we are keeping > 'except_pubids' as constant while moving through all the ancestors. We > are fetching GetRelationIncludedPublications and GetSchemaPublications > for each ancestor but are not computing > GetRelationExcludedPublications for each ancestor. It may not be > obvious (for many new readers) why 'except_pubids' is not fetched > again for each ancestor. Please add a comment there (perhaps because > EXCEPT list can not have any partition and can have only root) > Added comments for both the cases. > 3) > The error message below and its associated validation logic are > duplicated in three places: > > "cannot appear in both the table list and the EXCEPT clause" > > Do you think we could factor this into a small helper function and > reuse it everywhere? That would make the code more modular and > simplify future changes to validation or error messages. > Done. ~~~ Besides the above comments, I found and fixed a few additional issues during further testing: 1) Fixed an issue where UPDATE/DELETE on an excluded table without replica identity was still blocked. e.g., postgres=3D# create publication pub_h2 for tables in schema s1 except ( tab= le t1); postgres=3D# update s1.t1 set c1=3D3 where c1=3D1; ERROR: cannot update table "t1" because it does not have a replica identity and publishes updates HINT: To enable updating the table, set REPLICA IDENTITY using ALTER TABLE. Excluded tables should not be treated as published for update/delete checks= . 2) Fixed a bug in RemoveSchemaPubExceptForRel(), where a no-op command such as ALTER TABLE s.t SET SCHEMA s incorrectly removed the table from the EXCEPT list. 3) Fixed is_table_publication() logic. It relied on the first pg_publication_rel row for a publication, which is no longer reliable because with this feature we can have multiple rows with different prexcept values for the same publication. A publication can have both FOR TABLE (prexcept =3Dfalse) and FOR TABLES IN SCHEMA (prexcept=3Dfalse) entries. 4) Fixed a bug in PublicationDropTables() where "ALTER PUBLICATION p DROP TABLE t" could silently remove an EXCEPT entry. DROP TABLE should only apply to explicitly added FOR TABLE members; EXCEPT entries are not publication members and should not be removed through this path. For example: Before Fix: create publication pub1 for tables in schema s1 except ( table t1); alter publication pub1 drop table s1.t1; ALTER PUBLICATION -- the Except tables: entry gets deleted. After the fix (v17): alter publication pub1 drop table s1.t1; ERROR: relation "t1" is not part of the publication ~~~ Attached are the v17 patches. [1] https://www.postgresql.org/message-id/CAHut%2BPuiK_Pa%3DBkSgBxYzqf1PYh%= 2BmcUcUQCr8r1e69-y1r%2Bhhw%40mail.gmail.com -- Thanks, Nisha --0000000000000f0ef2065589db93 Content-Type: application/octet-stream; name="v17-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Disposition: attachment; filename="v17-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr1ws4vz0 RnJvbSBlMWNkMzUxNzQyNTQ1ZWMwN2E3YzNiOWY1MWNmY2FhNmY2M2IxZTM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUdWUsIDE2IEp1biAyMDI2IDEwOjU4OjQ5ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MTcgMS8zXSBTdXBwb3J0IEVYQ0VQVCBjbGF1c2UgZm9yIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlv bnMKCkV4dGVuZCB0YWJsZSBleGNsdXNpb24gc3VwcG9ydCBpbiBwdWJsaWNhdGlvbnMgdG8gYWxs b3cgc3BlY2lmaWMKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gc2NoZW1hLWxldmVsIHB1Ymxp Y2F0aW9ucyB1c2luZyBhbgpFWENFUFQgY2xhdXNlIGluIENSRUFURSBQVUJMSUNBVElPTi4KClN1 cHBvcnRlZCBzeW50YXg6CkNSRUFURSBQVUJMSUNBVElPTiA8cHViPiBGT1IgVEFCTEVTIElOIFND SEVNQSBzIEVYQ0VQVCAoVEFCTEUgdDEsLi4uKTsKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMgICAgICAgIHwgMjAzICsrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgIHwgMTYyICsrKysrKysrKysrKysr LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgfCAgMTEgKysK IHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgfCAgNTQgKysrKyst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDM5ICsrKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgfCAgNDEgKystLQog c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICB8ICAxOCArKwogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAzNSArKystCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgIHwgICAzICstCiBzcmMvaW5j bHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICB8IDE3MSArKysrKysrKysrKysrKysrLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICB8IDEwMCArKysrKysrKyst CiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsICAgICAgIHwgMTMzICsrKysr KysrKysrKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDg4OCBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWM0NTdkOWFjYTgu LmU3MDE4ZmY1NjVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0zMzAs MTkgKzMzMCwyMCBAQCBpc190YWJsZV9wdWJsaWNhdGlvbihPaWQgcHViaWQpCiAJc2NhbiA9IHN5 c3RhYmxlX2JlZ2luc2NhbihwdWJyZWxzcmVsLAogCQkJCQkJCSAgUHVibGljYXRpb25SZWxQcnB1 YmlkSW5kZXhJZCwKIAkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKLQl0dXAgPSBz eXN0YWJsZV9nZXRuZXh0KHNjYW4pOwotCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCi0Jewot CQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CiAKLQkJcHVicmVsID0gKEZvcm1fcGdf cHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKLQotCQkvKgotCQkgKiBGb3IgYW55IHB1 YmxpY2F0aW9uLCBwZ19wdWJsaWNhdGlvbl9yZWwgY29udGFpbnMgZWl0aGVyIG9ubHkgRVhDRVBU Ci0JCSAqIGVudHJpZXMgb3Igb25seSBleHBsaWNpdGx5IGluY2x1ZGVkIHRhYmxlcy4gVGhlcmVm b3JlLCBleGFtaW5pbmcKLQkJICogdGhlIGZpcnN0IHR1cGxlIGlzIHN1ZmZpY2llbnQgdG8gZGV0 ZXJtaW5lIHRhYmxlIGluY2x1c2lvbi4KLQkJICovCi0JCXJlc3VsdCA9ICFwdWJyZWwtPnByZXhj ZXB0OworCS8qCisJICogQSBwdWJsaWNhdGlvbiBjYW4gaG9sZCBib3RoIGV4cGxpY2l0LWluY2x1 ZGUgKHByZXhjZXB0PWZhbHNlKQorCSAqIGFuZCBFWENFUFQgKHByZXhjZXB0PXRydWUpIHJvd3Mg Zm9yIHRoZSBzYW1lIHB1YmlkLiAgU2NhbiB1bnRpbAorCSAqIHdlIGZpbmQgYW4gZXhwbGljaXQt aW5jbHVkZSByb3csIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIGZpcnN0IHJvdydzCisJICog cHJleGNlcHQgdmFsdWUuCisJICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lz dGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlpZiAoISgoRm9ybV9wZ19wdWJsaWNhdGlvbl9y ZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJleGNlcHQpCisJCXsKKwkJCXJlc3VsdCA9IHRydWU7CisJ CQlicmVhazsKKwkJfQogCX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC00NDQsMTQg KzQ0NSwyNyBAQCBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAgKgogICogTm90ZSB0aGF0IHRoZSBsaXN0 IG9mIGFuY2VzdG9ycyBzaG91bGQgYmUgb3JkZXJlZCBzdWNoIHRoYXQgdGhlIHRvcG1vc3QKICAq IGFuY2VzdG9yIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgKgorICogZXhjZXB0X3B1Ymlk cyBpcyBhIGxpc3Qgb2YgcHVibGljYXRpb24gT0lEcyB3aG9zZSBzY2hlbWEgbWVtYmVyc2hpcAor ICogc2hvdWxkIGJlIGlnbm9yZWQgZm9yIHRoZSBhbmNlc3RvciAoYmVjYXVzZSB0aGUgYW5jZXN0 b3IgaXMgaW4gdGhlaXIKKyAqIEVYQ0VQVCBjbGF1c2UpLgogICovCiBPaWQKLUdldFRvcE1vc3RB bmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFu Y2VzdG9yX2xldmVsKQorR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lk LCBMaXN0ICphbmNlc3RvcnMsCisJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwsIExpc3QgKmV4 Y2VwdF9wdWJpZHMpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAJT2lkCQkJdG9wbW9zdF9yZWxpZCA9 IEludmFsaWRPaWQ7CiAJaW50CQkJbGV2ZWwgPSAwOwogCisJLyoKKwkgKiBleGNlcHRfcHViaWRz IGlzIGNvbXB1dGVkIG9uY2UgZnJvbSB0aGUgcGFydGl0aW9uIHJvb3QgYW5kIHJldXNlZAorCSAq IGFjcm9zcyB0aGUgYW5jZXN0b3Igd2Fsay4gUmUtZmV0Y2hpbmcgZXhjbHVzaW9uIGluZm9ybWF0 aW9uIGZvciBlYWNoCisJICogYW5jZXN0b3IgaXMgdW5uZWNlc3NhcnkgYmVjYXVzZSBvbmx5IHRo ZSByb290IGNhbiBoYXZlIHByZXhjZXB0PXRydWU7CisJICogcGFydGl0aW9ucyB0aGVtc2VsdmVz IGNhbm5vdCBiZSBhZGRlZCB0byBFWENFUFQuCisJICovCisJYm9vbAkJY2hlY2tfc2NoZW1hcyA9 ICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3B1YmlkcywgcHVib2lkKTsKKwogCS8qCiAJICogRmlu ZCB0aGUgInRvcG1vc3QiIGFuY2VzdG9yIHRoYXQgaXMgaW4gdGhpcyBwdWJsaWNhdGlvbi4KIAkg Ki8KQEAgLTQ3MCw3ICs0ODQsNyBAQCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9p ZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAogCQkJaWYgKGFu Y2VzdG9yX2xldmVsKQogCQkJCSphbmNlc3Rvcl9sZXZlbCA9IGxldmVsOwogCQl9Ci0JCWVsc2UK KwkJZWxzZSBpZiAoY2hlY2tfc2NoZW1hcykKIAkJewogCQkJYXNjaGVtYVB1YmlkcyA9IEdldFNj aGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3RvcikpOwogCQkJaWYgKGxp c3RfbWVtYmVyX29pZChhc2NoZW1hUHViaWRzLCBwdWJvaWQpKQpAQCAtNTQ1LDE4ICs1NTksMzAg QEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZv ICpwcmksCiAJICogZHVwbGljYXRlcywgaXQncyBoZXJlIGp1c3QgdG8gcHJvdmlkZSBuaWNlciBl cnJvciBtZXNzYWdlIGluIGNvbW1vbgogCSAqIGNhc2UuIFRoZSByZWFsIHByb3RlY3Rpb24gaXMg dGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cuCiAJICovCi0JaWYgKFNlYXJjaFN5c0NhY2hl RXhpc3RzMihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCi0JCQkJ CQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSkpCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFBV QkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCSAgT2JqZWN0 SWRHZXREYXR1bShwdWJpZCkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKIAl7CisJ CWJvb2wJCWlzX2V4Y2VwdCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0 dXApKS0+cHJleGNlcHQ7CisKKwkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CiAJCXRhYmxlX2Nsb3Nl KHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkJaWYgKGlmX25vdF9leGlzdHMpCiAJCQlyZXR1 cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CiAKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29k ZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAotCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNc IiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIiLAotCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOworCQlpZiAoaXNfZXhj ZXB0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVf T0JKRUNUKSwKKwkJCQkJIGVycm1zZygidGFibGUgXCIlc1wiIGNhbm5vdCBiZSBhZGRlZCBiZWNh dXNlIGl0IGlzIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24gXCIlc1wiIiwKKwkJCQkJCQlSZWxh dGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLAorCQkJCQkJCXB1Yi0+bmFt ZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9E VVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wiIGlzIGFscmVh ZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAogCWNoZWNrX3B1YmxpY2F0 aW9uX2FkZF9yZWxhdGlvbihwcmkpOwpAQCAtOTgyLDEyICsxMDA4LDEzIEBAIEdldEluY2x1ZGVk UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3Bh cnRvcHQpCiAgKiBHZXRzIGxpc3Qgb2YgdGFibGUgb2lkcyB0aGF0IHdlcmUgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCiAgKiBwdWJsaWNhdGlvbi4KICAqCi0gKiBUaGlzIHNo b3VsZCBvbmx5IGJlIHVzZWQgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgorICogVGhpcyBp cyB1c2VkIGZvciBGT1IgQUxMIFRBQkxFUyBhbmQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGlj YXRpb25zLAorICogYm90aCBvZiB3aGljaCBzdXBwb3J0IEVYQ0VQVCBUQUJMRS4KICAqLwogTGlz dCAqCiBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25Q YXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewotCUFzc2VydChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFs bHRhYmxlcyk7CisJQXNzZXJ0KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzIHx8IGlz X3NjaGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpOwogCiAJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9y ZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKIH0KQEAgLTEwNDksMTUgKzEwNzYs MTUgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQs IGJvb2wgcHVidmlhcm9vdCkKIAlUYWJsZVNjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cGxl OwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKLQlMaXN0CSAgICpleGNlcHRsaXN0ID0gTklMOwor CUxpc3QJICAgKmV4Y2VwdF9yZWxpZHMgPSBOSUw7CiAKIAlBc3NlcnQoIShyZWxraW5kID09IFJF TEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9vdCkpOwogCiAJLyogRVhDRVBUIGZpbHRlcmluZyBh cHBsaWVzIG9ubHkgdG8gcmVsYXRpb25zLCBub3Qgc2VxdWVuY2VzICovCiAJaWYgKHJlbGtpbmQg PT0gUkVMS0lORF9SRUxBVElPTikKLQkJZXhjZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRp b25UYWJsZXMocHViaWQsIHB1YnZpYXJvb3QgPwotCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9Q QVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCQlleGNl cHRfcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwgcHVidmlhcm9v dCA/CisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkJ IFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CiAKIAljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRp b25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCkBAIC0xMDc1LDcgKzExMDIsNyBAQCBH ZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBw dWJ2aWFyb290KQogCiAJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkg JiYKIAkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkgJiYKLQkJCSFs aXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQorCQkJIWxpc3RfbWVtYmVyX29pZChl eGNlcHRfcmVsaWRzLCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJl bGlkKTsKIAl9CiAKQEAgLTEwOTcsNyArMTEyNCw3IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRp b25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAKIAkJCWlmIChp c19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKIAkJCQkhcmVsRm9ybS0+cmVs aXNwYXJ0aXRpb24gJiYKLQkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkK KwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIHJlbGlkKSkKIAkJCQlyZXN1bHQg PSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMjMyLDIyICsxMjU5LDc3 IEBAIEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCiAvKgogICogR2V0cyB0aGUgbGlzdCBvZiBhbGwgcmVs YXRpb25zIHB1Ymxpc2hlZCBieSBGT1IgVEFCTEVTIElOIFNDSEVNQQotICogcHVibGljYXRpb24u CisgKiBwdWJsaWNhdGlvbiwgZXhjbHVkaW5nIGFueSB0YWJsZXMgbGlzdGVkIGluIHRoZSBFWENF UFQgY2xhdXNlLgogICovCiBMaXN0ICoKIEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25z KE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewogCUxpc3QJICAg KnJlc3VsdCA9IE5JTDsKIAlMaXN0CSAgICpwdWJzY2hlbWFsaXN0ID0gR2V0UHVibGljYXRpb25T Y2hlbWFzKHB1YmlkKTsKKwlMaXN0CSAgICpleGNlcHRfcmVsaWRzID0gTklMOwogCUxpc3RDZWxs ICAgKmNlbGw7CiAKKwkvKiBnZXQgdGhlIGxpc3Qgb2YgdGFibGVzIGV4Y2x1ZGVkIHZpYSBFWENF UFQgVEFCTEUgZm9yIHRoaXMgcHVibGljYXRpb24gKi8KKwlpZiAocHVic2NoZW1hbGlzdCAhPSBO SUwpCisJCWV4Y2VwdF9yZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1Ymlk LCBwdWJfcGFydG9wdCk7CisKIAlmb3JlYWNoKGNlbGwsIHB1YnNjaGVtYWxpc3QpCiAJewogCQlP aWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQoY2VsbCk7CiAJCUxpc3QJICAgKnNjaGVtYVJlbHMg PSBOSUw7CiAKIAkJc2NoZW1hUmVscyA9IEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHNj aGVtYWlkLCBwdWJfcGFydG9wdCk7Ci0JCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgc2No ZW1hUmVscyk7CisKKwkJaWYgKGV4Y2VwdF9yZWxpZHMgIT0gTklMKQorCQl7CisJCQkvKiBmaWx0 ZXIgb3V0IGFueSB0YWJsZXMgdGhhdCBhcHBlYXIgaW4gdGhlIEVYQ0VQVCBsaXN0ICovCisJCQlM aXN0Q2VsbCAgICpybGM7CisKKwkJCWZvcmVhY2gocmxjLCBzY2hlbWFSZWxzKQorCQkJeworCQkJ CU9pZAkJCXJlbGlkID0gbGZpcnN0X29pZChybGMpOworCQkJCWJvb2wJCWV4Y2x1ZGVkID0gbGlz dF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIHJlbGlkKTsKKworCQkJCS8qCisJCQkJICogQWxz byBleGNsdWRlIGFueSByZWxhdGlvbiB3aG9zZSBwYXJ0aXRpb24gYW5jZXN0b3IgaXMgaW4KKwkJ CQkgKiB0aGUgRVhDRVBUIGxpc3QuICBUaGlzIG1hdHRlcnMgd2hlbiBwdWJfcGFydG9wdCBpcwor CQkJCSAqIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVDogdGhlIGV4Y2VwdCBsaXN0IGhvbGRzIG9ubHkg dGhlIHJvb3QKKwkJCQkgKiBPSUQsIGJ1dCB0aGUgc2NoZW1hIHNjYW4gbWF5IGFsc28gcmV0dXJu IGluZGl2aWR1YWwKKwkJCQkgKiBwYXJ0aXRpb24gcmVsYXRpb25zIHRoYXQgbGl2ZSBpbiB0aGUg c2FtZSBzY2hlbWEuCisJCQkJICoKKwkJCQkgKiBYWFg6IHRoaXMgYW5jZXN0b3IgY2hlY2sgdXNl cyB0aGUgcHVibGljYXRpb24td2lkZQorCQkJCSAqIGV4Y2VwdF9yZWxpZHMgYW5kIGRvZXMgbm90 IGNvbnNpZGVyIHdoaWNoIHNjaGVtYSB0aGUgRVhDRVBUCisJCQkJICogd2FzIGJvdW5kIHRvLiAg V2hlbiBhIHB1YmxpY2F0aW9uIGhhcyBtdWx0aXBsZSBzY2hlbWFzCisJCQkJICogKGUuZy4gRk9S IFRBQkxFUyBJTiBTQ0hFTUEgczEsIFRBQkxFUyBJTiBTQ0hFTUEgczIgRVhDRVBUCisJCQkJICog KFRBQkxFIHMyLnBhcmVudCkpIGFuZCBhIHBhcnRpdGlvbiBvZiB0aGUgRVhDRVBUJ2QgcGFyZW50 CisJCQkJICogbGl2ZXMgaW4gYSBESUZGRVJFTlQgc2NoZW1hIChzMSkgdGhhdCBpcyBpdHNlbGYK KwkJCQkgKiB1bmNvbmRpdGlvbmFsbHkgaW5jbHVkZWQsIHdlIHRyZWF0IHRoYXQgcGFydGl0aW9u IGFzCisJCQkJICogZXhjbHVkZWQgYmVjYXVzZSBpdHMgYW5jZXN0b3IgbWF0Y2hlcyB0aGUgZ2xv YmFsCisJCQkJICogZXhjZXB0X3JlbGlkcy4gTmVlZCB0byBkZWNpZGUgdGhlIGV4cGVjdGVkIGJl aGF2aW9yIGhlcmUuCisJCQkJICovCisJCQkJaWYgKCFleGNsdWRlZCAmJiBnZXRfcmVsX3JlbGlz cGFydGl0aW9uKHJlbGlkKSkKKwkJCQl7CisJCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9w YXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKwkJCQkJTGlzdENlbGwgICAqYWxjOworCisJCQkJ CWZvcmVhY2goYWxjLCBhbmNlc3RvcnMpCisJCQkJCXsKKwkJCQkJCWlmIChsaXN0X21lbWJlcl9v aWQoZXhjZXB0X3JlbGlkcywgbGZpcnN0X29pZChhbGMpKSkKKwkJCQkJCXsKKwkJCQkJCQlleGNs dWRlZCA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJbGlzdF9m cmVlKGFuY2VzdG9ycyk7CisJCQkJfQorCisJCQkJaWYgKCFleGNsdWRlZCkKKwkJCQkJcmVzdWx0 ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CisJCQl9CisJCQlsaXN0X2ZyZWUoc2NoZW1h UmVscyk7CisJCX0KKwkJZWxzZQorCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzY2hl bWFSZWxzKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpAQCAtMTMyNCw2ICsxNDA2LDcgQEAgaXNf dGFibGVfcHVibGlzaGFibGVfaW5fcHVibGljYXRpb24oT2lkIHJlbGlkLCBQdWJsaWNhdGlvbiAq cHViKQogewogCWJvb2wJCXJlbGlzcGFydGl0aW9uOwogCUxpc3QJICAgKmFuY2VzdG9ycyA9IE5J TDsKKwlIZWFwVHVwbGUJdHVwOwogCiAJLyoKIAkgKiBGb3Igbm9uLXB1YnZpYXJvb3QgcHVibGlj YXRpb25zLCBhIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5ldmVyIHRoZQpAQCAtMTM4MCwyMCArMTQ2 Myw2MiBAQCBpc190YWJsZV9wdWJsaXNoYWJsZV9pbl9wdWJsaWNhdGlvbihPaWQgcmVsaWQsIFB1 YmxpY2F0aW9uICpwdWIpCiAJICogSWYgaXQncyBmYWxzZSwgdGhlIHBhcnRpdGlvbiBpcyBjb3Zl cmVkIGJ5IGl0cyBhbmNlc3RvcidzIHByZXNlbmNlIGluCiAJICogdGhlIHB1YmxpY2F0aW9uLCBp dCBzaG91bGQgYmUgaW5jbHVkZWQgKHJldHVybiB0cnVlKS4KIAkgKi8KLQlpZiAocmVsaXNwYXJ0 aXRpb24gJiYKLQkJT2lkSXNWYWxpZChHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1 Yi0+b2lkLCBhbmNlc3RvcnMsIE5VTEwpKSkKLQkJcmV0dXJuICFwdWItPnB1YnZpYXJvb3Q7CisJ aWYgKHJlbGlzcGFydGl0aW9uKQorCXsKKwkJT2lkCQkJYW5jZXN0b3Jfb2lkOworCisJCWFuY2Vz dG9yX29pZCA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViLT5vaWQsIGFuY2Vz dG9ycywgTlVMTCwgTklMKTsKKwkJaWYgKE9pZElzVmFsaWQoYW5jZXN0b3Jfb2lkKSkKKwkJewor CQkJLyoKKwkJCSAqIFRoZSBhbmNlc3RvciB3YXMgZm91bmQgaW4gdGhlIHB1YmxpY2F0aW9uICh2 aWEgZXhwbGljaXQKKwkJCSAqIG1lbWJlcnNoaXAgb3Igc2NoZW1hIG1lbWJlcnNoaXApLCBidXQg aXQgbWF5IGJlIGV4Y2x1ZGVkLiBDaGVjaworCQkJICogZm9yIGEgcHJleGNlcHQgcm93IGJlZm9y ZSBjb25jbHVkaW5nIHRoZSBwYXJ0aXRpb24gaXMKKwkJCSAqIHB1Ymxpc2hlZC4KKwkJCSAqLwor CQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkgIE9i amVjdElkR2V0RGF0dW0oYW5jZXN0b3Jfb2lkKSwKKwkJCQkJCQkJICBPYmplY3RJZEdldERhdHVt KHB1Yi0+b2lkKSk7CisJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQkJeworCQkJCWJv b2wJCWlzX2V4Y2VwdDsKKworCQkJCWlzX2V4Y2VwdCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9y ZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJleGNlcHQ7CisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7 CisJCQkJaWYgKGlzX2V4Y2VwdCkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJcmV0dXJu ICFwdWItPnB1YnZpYXJvb3Q7CisJCX0KKwl9CiAKIAkvKgogCSAqIENoZWNrIHdoZXRoZXIgdGhl IHRhYmxlIGlzIGV4cGxpY2l0bHkgcHVibGlzaGVkIHZpYSBwZ19wdWJsaWNhdGlvbl9yZWwKIAkg KiBvciBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuCisJICoKKwkgKiBBIHBnX3B1YmxpY2F0aW9u X3JlbCByb3cgd2l0aCBwcmV4Y2VwdD10cnVlIG1lYW5zIHRoZSB0YWJsZSBpcworCSAqIGV4cGxp Y2l0bHkgZXhjbHVkZWQgdmlhIEVYQ0VQVCBhbmQgbXVzdCBub3QgYmUgcmVwb3J0ZWQgYXMgcHVi bGlzaGVkLAorCSAqIGV2ZW4gaWYgaXRzIHNjaGVtYSBpcyBvdGhlcndpc2UgaW5jbHVkZWQuICBB IHJvdyB3aXRoIHByZXhjZXB0PWZhbHNlCisJICogbWVhbnMgaXQgaXMgZXhwbGljaXRseSBpbmNs dWRlZC4gIElmIG5vIHBnX3B1YmxpY2F0aW9uX3JlbCByb3cgZXhpc3RzLAorCSAqIHRoZSB0YWJs ZSBpcyBwdWJsaXNoZWQgaWZmIGl0cyBzY2hlbWEgYXBwZWFycyBpbgorCSAqIHBnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZS4KIAkgKi8KLQlyZXR1cm4gKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJM SUNBVElPTlJFTE1BUCwKLQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKLQkJCQkJ CQkJICBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lkKSkgfHwKLQkJCVNlYXJjaFN5c0NhY2hlRXhp c3RzMihQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwKLQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVt KGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSksCi0JCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShw dWItPm9pZCkpKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwK KwkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgIE9iamVjdElkR2V0RGF0 dW0ocHViLT5vaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCXsKKwkJYm9vbAkJ aXNfZXhjZXB0OworCisJCWlzX2V4Y2VwdCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdF VFNUUlVDVCh0dXApKS0+cHJleGNlcHQ7CisJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQlyZXR1 cm4gIWlzX2V4Y2VwdDsKKwl9CisKKwlyZXR1cm4gU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBVQkxJ Q0FUSU9OTkFNRVNQQUNFTUFQLAorCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShnZXRfcmVsX25h bWVzcGFjZShyZWxpZCkpLAorCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA0NDBhZGIz NTZhZC4uNDVhOGE1YzNmNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5j CkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQg cHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkJICBBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hl bWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBj aGFyIGRlZkdldEdlbmVyYXRlZENvbHNPcHRpb24oRGVmRWxlbSAqZGVmKTsKK3N0YXRpYyB2b2lk IENoZWNrRXhjZXB0Tm90SW5UYWJsZUxpc3QoTGlzdCAqZXhjZXB0X3JlbHMsIExpc3QgKmV4cGxp Y2l0cmVsaWRzKTsKIAogCiBzdGF0aWMgdm9pZApAQCAtMTgxLDcgKzE4Miw3IEBAIHBhcnNlX3B1 YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogICovCiBzdGF0aWMgdm9pZAog T2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0 YXRlICpwc3RhdGUsCi0JCQkJCQkgICBMaXN0ICoqcmVscywgTGlzdCAqKmV4Y2VwdHJlbHMsIExp c3QgKipzY2hlbWFzKQorCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHRfcHVidGFi bGVzLCBMaXN0ICoqc2NoZW1hcykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9u T2JqU3BlYyAqcHVib2JqOwpAQCAtMjAwLDcgKzIwMSw3IEBAIE9iamVjdHNJblB1YmxpY2F0aW9u VG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQl7CiAJ CQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKIAkJCQlwdWJvYmotPnB1YnRhYmxl LT5leGNlcHQgPSB0cnVlOwotCQkJCSpleGNlcHRyZWxzID0gbGFwcGVuZCgqZXhjZXB0cmVscywg cHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJKmV4Y2VwdF9wdWJ0YWJsZXMgPSBsYXBwZW5kKCpleGNl cHRfcHVidGFibGVzLCBwdWJvYmotPnB1YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVC TElDQVRJT05PQkpfVEFCTEU6CiAJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gZmFsc2U7 CkBAIC0yMjQsNiArMjI1LDM4IEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1 Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCQkJLyogRmlsdGVyIG91dCBk dXBsaWNhdGVzIGlmIHVzZXIgc3BlY2lmaWVzICJzY2gxLCBzY2gxIiAqLwogCQkJCSpzY2hlbWFz ID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2NoZW1hcywgc2NoZW1haWQpOworCisJCQkJLyoK KwkJCQkgKiBRdWFsaWZ5IHVucXVhbGlmaWVkIEVYQ0VQVCB0YWJsZSBuYW1lcyB3aXRoIHRoZSBy ZXNvbHZlZAorCQkJCSAqIGN1cnJlbnQgc2NoZW1hIGFuZCByZWplY3QgYW55IGV4cGxpY2l0bHkg Y3Jvc3Mtc2NoZW1hCisJCQkJICogZW50cmllcy4gIFRoaXMgbWlycm9ycyB0aGUgcGFyc2UtdGlt ZSBoYW5kbGluZyBkb25lIGZvcgorCQkJCSAqIFRBQkxFU19JTl9TQ0hFTUEgaW4gcHJlcHJvY2Vz c19wdWJvYmpfbGlzdCgpLCBkZWZlcnJlZCBoZXJlCisJCQkJICogYmVjYXVzZSBDVVJSRU5UX1ND SEVNQSBpcyBub3Qga25vd24gdW50aWwgZXhlY3V0aW9uIHRpbWUuCisJCQkJICovCisJCQkJaWYg KHB1Ym9iai0+ZXhjZXB0X3RhYmxlcyAhPSBOSUwpCisJCQkJeworCQkJCQljaGFyCSAgICpjdXJf c2NoZW1hX25hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUoc2NoZW1haWQpOworCisJCQkJCWZvcmVh Y2hfcHRyKFB1YmxpY2F0aW9uT2JqU3BlYywgZW9iaiwgcHVib2JqLT5leGNlcHRfdGFibGVzKQor CQkJCQl7CisJCQkJCQljb25zdCBjaGFyICplb2JqX3NjaGVtYW5hbWUgPQorCQkJCQkJCWVvYmot PnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZTsKKwkJCQkJCWNvbnN0IGNoYXIgKmVvYmpf cmVsbmFtZSA9CisJCQkJCQkJZW9iai0+cHVidGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOworCisJ CQkJCQlpZiAoZW9ial9zY2hlbWFuYW1lID09IE5VTEwpCisJCQkJCQkJZW9iai0+cHVidGFibGUt PnJlbGF0aW9uLT5zY2hlbWFuYW1lID0gY3VyX3NjaGVtYV9uYW1lOworCQkJCQkJZWxzZSBpZiAo c3RyY21wKGVvYmpfc2NoZW1hbmFtZSwgY3VyX3NjaGVtYV9uYW1lKSAhPSAwKQorCQkJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJCQkJCQllcnJtc2coInRhYmxlIFwiJXNcIiBpbiBFWENFUFQgY2xhdXNl IGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgXCIlc1wiIiwKKwkJCQkJCQkJCQkgICBxdW90ZV9x dWFsaWZpZWRfaWRlbnRpZmllcihlb2JqX3NjaGVtYW5hbWUsIGVvYmpfcmVsbmFtZSksCisJCQkJ CQkJCQkJICAgY3VyX3NjaGVtYV9uYW1lKSk7CisKKwkJCQkJCSpleGNlcHRfcHVidGFibGVzID0g bGFwcGVuZCgqZXhjZXB0X3B1YnRhYmxlcywKKwkJCQkJCQkJCQkJCQllb2JqLT5wdWJ0YWJsZSk7 CisJCQkJCX0KKwkJCQl9CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIHNob3VsZG4n dCBoYXBwZW4gKi8KQEAgLTMwNSw3ICszMzgsNyBAQCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9j b2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCWlm IChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKIAkJ cHVibGlzaF9hc19yZWxpZAotCQkJPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1 YmlkLCBhbmNlc3RvcnMsIE5VTEwpOworCQkJPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0 aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwsIE5JTCk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlkKHB1 Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtMzg5LDcg KzQyMiw3IEBAIHB1Yl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9u IHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAJICovCiAJaWYgKHB1YnZpYXJvb3QgJiYgcmVs YXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJewotCQlwdWJsaXNoX2FzX3JlbGlkID0g R2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMKTsK KwkJcHVibGlzaF9hc19yZWxpZCA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHVi aWQsIGFuY2VzdG9ycywgTlVMTCwgTklMKTsKIAogCQlpZiAoIU9pZElzVmFsaWQocHVibGlzaF9h c19yZWxpZCkpCiAJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CkBAIC03NzAsNiArODAzLDIz IEBAIFRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhMaXN0ICp0YWJsZXMsIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nLAogCX0KIH0KIAorLyoKKyAqIENoZWNrIHRoYXQgbm8gcmVsYXRpb24gaW4gZXhj ZXB0X3JlbHMgaXMgYWxzbyBwcmVzZW50IGluIGV4cGxpY2l0cmVsaWRzLAorICogdGhlIGxpc3Qg b2YgT0lEcyBhZGRlZCB0byB0aGUgcHVibGljYXRpb24gYnkgdGhlIGV4cGxpY2l0IFRBQkxFIGxp c3QuICBBCisgKiB0YWJsZSBjYW5ub3QgYmUgYm90aCBleHBsaWNpdGx5IHB1Ymxpc2hlZCBhbmQg ZXhjbHVkZWQgaW4gdGhlIHNhbWUgRERMLgorICovCitzdGF0aWMgdm9pZAorQ2hlY2tFeGNlcHRO b3RJblRhYmxlTGlzdChMaXN0ICpleGNlcHRfcmVscywgTGlzdCAqZXhwbGljaXRyZWxpZHMpCit7 CisJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIGV4Y2VwdF9yZWxzKQorCXsK KwkJaWYgKGxpc3RfbWVtYmVyX29pZChleHBsaWNpdHJlbGlkcywgUmVsYXRpb25HZXRSZWxpZChw cmktPnJlbGF0aW9uKSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coInRhYmxlIFwiJXNcIiBjYW5u b3QgYXBwZWFyIGluIGJvdGggdGhlIHRhYmxlIGxpc3QgYW5kIHRoZSBFWENFUFQgY2xhdXNlIiwK KwkJCQkJCSAgIFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1lKHByaS0+cmVsYXRpb24p KSk7CisJfQorfQogCiAvKgogICogR2l2ZW4gYSBsaXN0IG9mIHRhYmxlcyB0aGF0IGFyZSBnb2lu ZyB0byBiZSBhZGRlZCB0byBhIHB1YmxpY2F0aW9uLApAQCAtODQ5LDcgKzg5OSw3IEBAIENyZWF0 ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpz dG10KQogCWNoYXIJCXB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM7CiAJQWNsUmVzdWx0CWFjbHJl c3VsdDsKIAlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7Ci0JTGlzdAkgICAqZXhjZXB0cmVsYXRp b25zID0gTklMOworCUxpc3QJICAgKmV4Y2VwdF9wdWJ0YWJsZXMgPSBOSUw7CiAJTGlzdAkgICAq c2NoZW1haWRsaXN0ID0gTklMOwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ugb24g ZGF0YWJhc2UgKi8KQEAgLTkzNiwxNiArOTg2LDE2IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJLyogQXNzb2Np YXRlIG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCiAJT2JqZWN0c0luUHVibGljYXRp b25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCSAg ICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCSAgICZleGNlcHRfcHVi dGFibGVzLCAmc2NoZW1haWRsaXN0KTsKIAogCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKIAl7 CiAJCS8qIFByb2Nlc3MgRVhDRVBUIHRhYmxlIGxpc3QgKi8KLQkJaWYgKGV4Y2VwdHJlbGF0aW9u cyAhPSBOSUwpCisJCWlmIChleGNlcHRfcHVidGFibGVzICE9IE5JTCkKIAkJewogCQkJTGlzdAkg ICAqcmVsczsKIAotCQkJcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0cmVsYXRpb25zKTsKKwkJ CXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdF9wdWJ0YWJsZXMpOwogCQkJUHVibGljYXRpb25B ZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKIAkJCUNsb3NlVGFibGVMaXN0KHJl bHMpOwogCQl9CkBAIC05NTksNiArMTAwOSw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCX0KIAllbHNlIGlmICgh c3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJeworCQlMaXN0CSAgICpleHBsaWNpdHJlbGlkcyA9 IE5JTDsKKwogCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8K IAkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQogCQkJZXJlcG9ydChF UlJPUiwKQEAgLTk3Nyw2ICsxMDI5LDE5IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQkJCQkJICAgc2NoZW1h aWRsaXN0ICE9IE5JTCwKIAkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsK IAorCQkJLyoKKwkJCSAqIENvbGxlY3QgZXhwbGljaXQgdGFibGUgT0lEcyBub3csIGJlZm9yZSB3 ZSBjbG9zZSB0aGUgcmVsYXRpb24KKwkJCSAqIGxpc3QsIHNvIHRoYXQgZXhjZXB0LXRhYmxlIHZh bGlkYXRpb24gYmVsb3cgY2FuIGNoZWNrIGZvcgorCQkJICogY29udHJhZGljdGlvbnMgd2l0aG91 dCByZWx5aW5nIG9uIGEgY2F0YWxvZyBzY2FuIHRoYXQgbWlnaHQgbm90CisJCQkgKiB5ZXQgc2Vl IHRoZSBqdXN0LWluc2VydGVkIHJvd3MuCisJCQkgKi8KKwkJCWlmIChleGNlcHRfcHVidGFibGVz ICE9IE5JTCkKKwkJCXsKKwkJCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvblJlbEluZm8sIHByaSwg cmVscykKKwkJCQkJZXhwbGljaXRyZWxpZHMgPSBsYXBwZW5kX29pZChleHBsaWNpdHJlbGlkcywK KwkJCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVsYXRpb24pKTsKKwkJCX0KKwog CQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKIAkJCUNs b3NlVGFibGVMaXN0KHJlbHMpOwogCQl9CkBAIC05ODksNiArMTA1NCwyNSBAQCBDcmVhdGVQdWJs aWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkK IAkJCSAqLwogCQkJTG9ja1NjaGVtYUxpc3Qoc2NoZW1haWRsaXN0KTsKIAkJCVB1YmxpY2F0aW9u QWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7CisKKwkJCWlmIChl eGNlcHRfcHVidGFibGVzICE9IE5JTCkKKwkJCXsKKwkJCQlMaXN0CSAgICpleGNlcHRfcmVsczsK KworCQkJCWV4Y2VwdF9yZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFibGVzKTsKKwor CQkJCS8qCisJCQkJICogVmFsaWRhdGUgdGhhdCBlYWNoIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCBh bHNvIGluIHRoZQorCQkJCSAqIGV4cGxpY2l0IHRhYmxlIGxpc3QgKHdoaWNoIHdvdWxkIGJlIGNv bnRyYWRpY3RvcnkpLiBVc2UgdGhlCisJCQkJICogaW4tbWVtb3J5IGV4cGxpY2l0cmVsaWRzIGNv bGxlY3RlZCBhYm92ZSByYXRoZXIgdGhhbgorCQkJCSAqIHJlLXJlYWRpbmcgdGhlIGNhdGFsb2cs IHdoaWNoIG1heSBub3QgeWV0IHNlZSB0aGUKKwkJCQkgKiBqdXN0LWluc2VydGVkIHJvd3MuCisJ CQkJICovCisJCQkJQ2hlY2tFeGNlcHROb3RJblRhYmxlTGlzdChleGNlcHRfcmVscywgZXhwbGlj aXRyZWxpZHMpOworCisJCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCBleGNlcHRfcmVs cywgdHJ1ZSwgTlVMTCk7CisJCQkJQ2xvc2VUYWJsZUxpc3QoZXhjZXB0X3JlbHMpOworCQkJfQog CQl9CiAJfQogCkBAIC0xNjgzLDEyICsxNzY3LDEyIEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAllbHNlCiAJewogCQlM aXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7Ci0JCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5J TDsKKwkJTGlzdAkgICAqZXhjZXB0X3B1YnRhYmxlcyA9IE5JTDsKIAkJTGlzdAkgICAqc2NoZW1h aWRsaXN0ID0gTklMOwogCQlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIAogCQlPYmplY3Rz SW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMs Ci0JCQkJCQkJCSAgICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCQkg ICAmZXhjZXB0X3B1YnRhYmxlcywgJnNjaGVtYWlkbGlzdCk7CiAKIAkJQ2hlY2tBbHRlclB1Ymxp Y2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3QpOwogCkBAIC0xNzExLDcg KzE3OTUsNyBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMg bm90IGV4aXN0IiwKIAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMgPSBs aXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdHJlbGF0aW9ucyk7CisJCXJlbGF0aW9ucyA9IGxp c3RfY29uY2F0KHJlbGF0aW9ucywgZXhjZXB0X3B1YnRhYmxlcyk7CiAJCUFsdGVyUHVibGljYXRp b25UYWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJ CQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwogCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhz dG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CkBAIC0xODI5LDYgKzE5MTMsNjIgQEAgUmVtb3ZlUHVi bGljYXRpb25TY2hlbWFCeUlkKE9pZCBwc29pZCkKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogfQogCisvKgorICogUmVtb3ZlIGFueSBFWENFUFQgY2xhdXNlIGVudHJpZXMg Zm9yIGEgcmVsYXRpb24gZnJvbSBzY2hlbWEgcHVibGljYXRpb25zLgorICogQ2FsbGVkIHdoZW4g YSB0YWJsZSBjaGFuZ2VzIHNjaGVtYSAoQUxURVIgVEFCTEUgLi4uIFNFVCBTQ0hFTUEpLCBzbyB0 aGF0CisgKiBhIHNjaGVtYS1zY29wZWQgZXhjbHVzaW9uIGRvZXMgbm90IHNpbGVudGx5IGZvbGxv dyB0aGUgdGFibGUgdG8gaXRzIG5ldworICogc2NoZW1hLgorICovCit2b2lkCitSZW1vdmVTY2hl bWFQdWJFeGNlcHRGb3JSZWwoT2lkIHJlbGlkLCBPaWQgb2xkTnNwT2lkLCBPaWQgbmV3TnNwT2lk KQoreworCUxpc3QJICAgKnB1YmlkczsKKworCS8qCisJICogSWYgdGhlIHRhYmxlIGlzIG5vdCBh Y3R1YWxseSBtb3ZpbmcgdG8gYSBkaWZmZXJlbnQgc2NoZW1hIChuby1vcAorCSAqIEFMVEVSIFRB QkxFIC4uLiBTRVQgU0NIRU1BIDxjdXJyZW50X3NjaGVtYT4pLCB0aGVyZSBpcyBub3RoaW5nIHRv IGRvLgorCSAqLworCWlmIChvbGROc3BPaWQgPT0gbmV3TnNwT2lkKQorCQlyZXR1cm47CisKKwlw dWJpZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHJlbGlkKTsKKworCWZvcmVh Y2hfb2lkKHB1YmlkLCBwdWJpZHMpCisJeworCQlPaWQJCQlwcm9pZDsKKworCQkvKgorCQkgKiBU aGlzIHByb2JsZW0gZG9lcyBub3QgYXBwbHkgdG8gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25z LCBiZWNhdXNlCisJCSAqIHRoZWlyIEVYQ0VQVCBjbGF1c2UgaXMgcHVibGljYXRpb24tc2NvcGVk LCBub3Qgc2NoZW1hLXNjb3BlZDogdGhlCisJCSAqIGV4Y2x1c2lvbiBzaG91bGQgcGVyc2lzdCBy ZWdhcmRsZXNzIG9mIHdoYXQgc2NoZW1hIHRoZSB0YWJsZSBpcyBpbi4KKwkJICovCisJCWlmICgh aXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSkKKwkJCWNvbnRpbnVlOworCisJCXByb2lkID0g R2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQlBbnVtX3BnX3B1Ymxp Y2F0aW9uX3JlbF9vaWQsCisJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJ CQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJCWlmIChPaWRJc1ZhbGlkKHByb2lkKSkKKwkJ eworCQkJT2JqZWN0QWRkcmVzcyBvYmo7CisKKwkJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJs aWNhdGlvblJlbFJlbGF0aW9uSWQsIHByb2lkKTsKKworCQkJZXJlcG9ydChERUJVRzIsCisJCQkJ CWVycm1zZ19pbnRlcm5hbCgiYXV0by1yZW1vdmUgZXhjbHVzaW9uIG9mIHRhYmxlIFwiJXMuJXNc IiBmcm9tIHB1YmxpY2F0aW9uIFwiJXNcIjogdGFibGUgbW92ZWQgdG8gc2NoZW1hIFwiJXNcIiIs CisJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUob2xkTnNwT2lkKSwKKwkJCQkJCQkJCWdldF9y ZWxfbmFtZShyZWxpZCksCisJCQkJCQkJCQlnZXRfcHVibGljYXRpb25fbmFtZShwdWJpZCwgZmFs c2UpLAorCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKG5ld05zcE9pZCkpKTsKKworCQkJcGVy Zm9ybURlbGV0aW9uKCZvYmosIERST1BfQ0FTQ0FERSwgMCk7CisJCX0KKwl9CisKKwlsaXN0X2Zy ZWUocHViaWRzKTsKK30KKwogLyoKICAqIE9wZW4gcmVsYXRpb25zIHNwZWNpZmllZCBieSBhIFB1 YmxpY2F0aW9uVGFibGUgbGlzdC4KICAqIFRoZSByZXR1cm5lZCB0YWJsZXMgYXJlIGxvY2tlZCBp biBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sgbW9kZSBpbiBvcmRlciB0bwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCA0NzJkYjExMmZhNy4uMzY4MWY1ODhmN2QgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4dGVuc2lvbi5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3JlcGFjay5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVj bWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgpAQCAtMTk1MDgsNiArMTk1 MDksMTYgQEAgQWx0ZXJUYWJsZU5hbWVzcGFjZUludGVybmFsKFJlbGF0aW9uIHJlbCwgT2lkIG9s ZE5zcE9pZCwgT2lkIG5zcE9pZCwKIAlBbHRlckNvbnN0cmFpbnROYW1lc3BhY2VzKFJlbGF0aW9u R2V0UmVsaWQocmVsKSwgb2xkTnNwT2lkLCBuc3BPaWQsCiAJCQkJCQkJICBmYWxzZSwgb2Jqc01v dmVkKTsKIAorCS8qCisJICogUmVtb3ZlIGFueSBFWENFUFQgY2xhdXNlIGVudHJpZXMgZm9yIHRo aXMgcmVsYXRpb24gZnJvbSBzY2hlbWEKKwkgKiBwdWJsaWNhdGlvbnMuICBBIHNjaGVtYS1zY29w ZWQgZXhjbHVzaW9uIGlzIG5vIGxvbmdlciBtZWFuaW5nZnVsIG9uY2UKKwkgKiB0aGUgdGFibGUg bW92ZXMgdG8gYSBkaWZmZXJlbnQgc2NoZW1hLgorCSAqLworCWlmIChyZWwtPnJkX3JlbC0+cmVs a2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCXJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCVJlbW92ZVNjaGVtYVB1YkV4Y2VwdEZvclJlbChS ZWxhdGlvbkdldFJlbGlkKHJlbCksIG9sZE5zcE9pZCwKKwkJCQkJCQkJCW5zcE9pZCk7CisKIAl0 YWJsZV9jbG9zZShjbGFzc1JlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cmlu ZGV4IGZmNGUxMzg4YzU1Li42YTdhMWJjNWY4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01OCw2ICs1OCw3 IEBACiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1 bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRpbWUuaCIKICNpbmNsdWRlICJ1dGlscy94bWwu aCIKIApAQCAtMTEyNzIsNyArMTEyNzMsNyBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVH QVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAgKiBwdWJfb2Jq IGlzIG9uZSBvZjoKICAqCiAgKgkJVEFCTEUgdGFibGUgWywgLi4uXQotICoJCVRBQkxFUyBJTiBT Q0hFTUEgc2NoZW1hIFssIC4uLl0KKyAqCQlUQUJMRVMgSU4gU0NIRU1BIHNjaGVtYSBbRVhDRVBU IChUQUJMRSB0YWJsZSBbLCAuLi5dICldIFssIC4uLl0KICAqCiAgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCiAKQEAgLTExMzMyLDIzICsxMTMzMywyNiBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJ CSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwogCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xh dXNlID0gJDQ7CiAJCQkJfQotCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQKKwkJCXwgVEFC TEVTIElOX1AgU0NIRU1BIENvbElkIG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJ JCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9 IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE7CiAJCQkJCSQkLT5uYW1lID0gJDQ7CisJ CQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDU7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA0OwogCQkJ CX0KLQkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENVUlJFTlRfU0NIRU1BCisJCQl8IFRBQkxFUyBJ Tl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJCQl7CiAJ CQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5 cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQTsKKwkJCQkJJCQtPmV4Y2Vw dF90YWJsZXMgPSAkNTsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDQ7CiAJCQkJfQotCQkJfCBDb2xJ ZCBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKKwkJCXwgQ29sSWQgb3B0X2NvbHVtbl9s aXN0IE9wdFdoZXJlQ2xhdXNlIG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJJCQg PSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBV QkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKKwkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkNDsK IAkJCQkJLyoKIAkJCQkJICogSWYgZWl0aGVyIGEgcm93IGZpbHRlciBvciBjb2x1bW4gbGlzdCBp cyBzcGVjaWZpZWQsIGNyZWF0ZQogCQkJCQkgKiBhIFB1YmxpY2F0aW9uVGFibGUgb2JqZWN0LgpA QCAtMTEzOTIsMTAgKzExMzk2LDExIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1 YnRhYmxlLT5jb2x1bW5zID0gJDI7CiAJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAk MzsKIAkJCQl9Ci0JCQl8IENVUlJFTlRfU0NIRU1BCisJCQl8IENVUlJFTlRfU0NIRU1BIG9wdF9w dWJfZXhjZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9i alNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElP TjsKKwkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkMjsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7 CiAJCQkJfQogCQkJCTsKQEAgLTIwNzg0LDYgKzIwNzg5LDggQEAgcHJlcHJvY2Vzc19wdWJfYWxs X29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywK IC8qCiAgKiBQcm9jZXNzIHB1Ym9ianNwZWNfbGlzdCB0byBjaGVjayBmb3IgZXJyb3JzIGluIGFu eSBvZiB0aGUgb2JqZWN0cyBhbmQKICAqIGNvbnZlcnQgUFVCTElDQVRJT05PQkpfQ09OVElOVUFU SU9OIGludG8gYXBwcm9wcmlhdGUgUHVibGljYXRpb25PYmpTcGVjVHlwZS4KKyAqIEFsc28gZmxh dHRlbnMgZXhjZXB0X3RhYmxlcyBmcm9tIFRBQkxFUyBJTiBTQ0hFTUEgbm9kZXMgaW50byB0aGUg bGlzdCBzbworICogdGhhdCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcygpIHNlZXMgdGhlbSBh cyB0b3AtbGV2ZWwgRVhDRVBUX1RBQkxFIGVudHJpZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBwcmVw cm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5 eXNjYW5uZXIpCkBAIC0yMDgxMiw2ICsyMDgxOSwxMyBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0 KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJaWYg KHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRSkKIAkJeworCQkJLyog RVhDRVBUIGlzIG5vdCB2YWxpZCBmb3IgdGFibGUgb2JqZWN0cyAqLworCQkJaWYgKHB1Ym9iai0+ ZXhjZXB0X3RhYmxlcyAhPSBOSUwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNnKCJFWENFUFQgaXMgbm90IGFsbG93 ZWQgZm9yIFRBQkxFIHB1YmxpY2F0aW9uIG9iamVjdHMiKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwdWJvYmotPmxvY2F0aW9uKSk7CisKIAkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFi bGUgbXVzdCBiZSBzZXQgZm9yIHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KIAkJCWlmICghcHVib2Jq LT5uYW1lICYmICFwdWJvYmotPnB1YnRhYmxlKQogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC0yMDg2 MCw2ICsyMDg3NCwzNiBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNf bGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKIAkJCQkJCWVycm1zZygiaW52YWxpZCBzY2hlbWEgbmFtZSIpLAogCQkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKworCQkJLyoKKwkJCSAqIEZv ciBUQUJMRVNfSU5fU0NIRU1BLCBxdWFsaWZ5IHVucXVhbGlmaWVkIEVYQ0VQVCB0YWJsZSBuYW1l cworCQkJICogd2l0aCB0aGUgcGFyZW50IHNjaGVtYSBhbmQgcmVqZWN0IGNyb3NzLXNjaGVtYSBl bnRyaWVzIGF0IHBhcnNlCisJCQkgKiB0aW1lLCB0aGVuIGZsYXR0ZW4gaW50byB0aGUgdG9wLWxl dmVsIGxpc3QuCisJCQkgKgorCQkJICogRm9yIFRBQkxFU19JTl9DVVJfU0NIRU1BIHRoZSBzY2hl bWEgbmFtZSBpcyBub3QgeWV0IGtub3duLCBzbworCQkJICogc2tpcCBib3RoIHN0ZXBzIGhlcmU7 IE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKCkgd2lsbAorCQkJICogcXVhbGlmeSBuYW1lcyBh bmQgdmFsaWRhdGUgc2NoZW1hIG1lbWJlcnNoaXAgYXQgZXhlY3V0aW9uIHRpbWUuCisJCQkgKi8K KwkJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1ND SEVNQSkKKwkJCXsKKwkJCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvbk9ialNwZWMsIGVvYmosIHB1 Ym9iai0+ZXhjZXB0X3RhYmxlcykKKwkJCQl7CisJCQkJCWNvbnN0IGNoYXIgKmVvYmpfc2NoZW1h bmFtZSA9IGVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZTsKKwkJCQkJY29uc3Qg Y2hhciAqZW9ial9yZWxuYW1lID0gZW9iai0+cHVidGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOwor CisJCQkJCWlmIChlb2JqX3NjaGVtYW5hbWUgPT0gTlVMTCkKKwkJCQkJCWVvYmotPnB1YnRhYmxl LT5yZWxhdGlvbi0+c2NoZW1hbmFtZSA9IHB1Ym9iai0+bmFtZTsKKwkJCQkJZWxzZSBpZiAoc3Ry Y21wKGVvYmpfc2NoZW1hbmFtZSwgcHVib2JqLT5uYW1lKSAhPSAwKQorCQkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LAorCQkJCQkJCQllcnJtc2coInRhYmxlIFwiJXNcIiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90 IGJlbG9uZyB0byBzY2hlbWEgXCIlc1wiIiwKKwkJCQkJCQkJCSAgIHF1b3RlX3F1YWxpZmllZF9p ZGVudGlmaWVyKGVvYmpfc2NoZW1hbmFtZSwgZW9ial9yZWxuYW1lKSwKKwkJCQkJCQkJCSAgIHB1 Ym9iai0+bmFtZSksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihlb2JqLT5sb2NhdGlvbikp OworCQkJCX0KKwkJCQlwdWJvYmpzcGVjX2xpc3QgPSBsaXN0X2NvbmNhdChwdWJvYmpzcGVjX2xp c3QsIHB1Ym9iai0+ZXhjZXB0X3RhYmxlcyk7CisJCQkJcHVib2JqLT5leGNlcHRfdGFibGVzID0g TklMOworCQkJfQogCQl9CiAKIAkJcHJldm9ianR5cGUgPSBwdWJvYmotPnB1Ym9ianR5cGU7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA0ZWNmY2Jm ZjdhYi4uYjA5ODM3NzVhMDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYwpAQCAtMjA5Nyw2ICsyMDk3LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCSAqIGFyZSBhYnNvcmJlZCB3aGls ZSBkZWNvZGluZyBXQUwuCiAJCSAqLwogCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hl bWFQdWJsaWNhdGlvbnMoc2NoZW1hSWQpOworCQlMaXN0CSAgICpleGNlcHRfcHViaWRzOwogCQlM aXN0Q2VsbCAgICpsYzsKIAkJT2lkCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwogCQlpbnQJ CQlwdWJsaXNoX2FuY2VzdG9yX2xldmVsID0gMDsKQEAgLTIxMDQsNiArMjEwNSwyOCBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJ Y2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9w dWJsaWNhdGlvbnMgPSBOSUw7CiAKKwkJLyoKKwkJICogRm9yIHRoZSBzY2hlbWEgRVhDRVBUIGNo ZWNrLCB3ZSBtdXN0IGxvb2sgdXAgdGhlIHRvcC1tb3N0IGFuY2VzdG9yCisJCSAqIHJhdGhlciB0 aGFuIHRoZSByZWxhdGlvbiBpdHNlbGYuICBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24o KQorCQkgKiBwcmV2ZW50cyBpbmRpdmlkdWFsIHBhcnRpdGlvbnMgZnJvbSBhcHBlYXJpbmcgaW4g dGhlIEVYQ0VQVCBjbGF1c2UsCisJCSAqIHNvIG9ubHkgYSByb290IChub24tcGFydGl0aW9uKSB0 YWJsZSBjYW4gaGF2ZSBwcmV4Y2VwdCA9IHRydWUuCisJCSAqIFVzaW5nIHRoZSBwYXJ0aXRpb24n cyBvd24gT0lEIHdvdWxkIGFsd2F5cyByZXR1cm4gTklMIGFuZCBtaXNzIHRoZQorCQkgKiBleGNs dXNpb24uCisJCSAqLworCQlPaWQJCQlyb290X3JlbGlkOworCisJCWlmIChhbV9wYXJ0aXRpb24p CisJCXsKKwkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJl bGlkKTsKKworCQkJcm9vdF9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOworCQkJbGlzdF9m cmVlKGFuY2VzdG9ycyk7CisJCX0KKwkJZWxzZQorCQkJcm9vdF9yZWxpZCA9IHJlbGlkOworCisJ CWV4Y2VwdF9wdWJpZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHJvb3RfcmVs aWQpOworCiAJCS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICov CiAJCWlmICghcHVibGljYXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjY1LDkgKzIyODgsMTkgQEAg Z2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24p CiAJCQkJCWludAkJCWxldmVsOwogCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0 aW9uX2FuY2VzdG9ycyhyZWxpZCk7CiAKKwkJCQkJLyoKKwkJCQkJICogUmVhY2ggaGVyZSBmb3Ig Rk9SIFRBQkxFLCBGT1IgVEFCTEVTIElOIFNDSEVNQSwgb3IKKwkJCQkJICogbWl4ZWQgcHVibGlj YXRpb25zLiBleGNlcHRfcHViaWRzIGxldHMKKwkJCQkJICogR2V0VG9wTW9zdEFuY2VzdG9ySW5Q dWJsaWNhdGlvbigpIHNraXAgc2NoZW1hLWJhc2VkCisJCQkJCSAqIGFuY2VzdG9yIG1hdGNoZXMg d2hlbiB0aGUgcGFydGl0aW9uIHJvb3QgaXMgZXhjbHVkZWQKKwkJCQkJICogdmlhIHRoaXMgcHVi bGljYXRpb24ncyBFWENFUFQgY2xhdXNlLiBJdCBoYXMgbm8gZWZmZWN0CisJCQkJCSAqIGZvciBw dXJlIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHdoaWNoIGNhbm5vdCBoYXZlCisJCQkJCSAqIHBy ZXhjZXB0IHJvd3MuCisJCQkJCSAqLwogCQkJCQlhbmNlc3RvciA9IEdldFRvcE1vc3RBbmNlc3Rv ckluUHVibGljYXRpb24ocHViLT5vaWQsCiAJCQkJCQkJCQkJCQkJCQkgICBhbmNlc3RvcnMsCi0J CQkJCQkJCQkJCQkJCQkgICAmbGV2ZWwpOworCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsLAorCQkJ CQkJCQkJCQkJCQkJICAgZXhjZXB0X3B1Ymlkcyk7CiAKIAkJCQkJaWYgKGFuY2VzdG9yICE9IElu dmFsaWRPaWQpCiAJCQkJCXsKQEAgLTIyODEsNyArMjMxNCw4IEBAIGdldF9yZWxfc3luY19lbnRy eShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCX0KIAogCQkJCWlm IChsaXN0X21lbWJlcl9vaWQocHViaWRzLCBwdWItPm9pZCkgfHwKLQkJCQkJbGlzdF9tZW1iZXJf b2lkKHNjaGVtYVB1YmlkcywgcHViLT5vaWQpIHx8CisJCQkJCShsaXN0X21lbWJlcl9vaWQoc2No ZW1hUHViaWRzLCBwdWItPm9pZCkgJiYKKwkJCQkJICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3B1 YmlkcywgcHViLT5vaWQpKSB8fAogCQkJCQlhbmNlc3Rvcl9wdWJsaXNoZWQpCiAJCQkJCXB1Ymxp c2ggPSB0cnVlOwogCQkJfQpAQCAtMjM2MCw2ICsyMzk0LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5 KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJbGlzdF9mcmVlKHB1 Ymlkcyk7CiAJCWxpc3RfZnJlZShzY2hlbWFQdWJpZHMpOworCQlsaXN0X2ZyZWUoZXhjZXB0X3B1 Ymlkcyk7CiAJCWxpc3RfZnJlZShyZWxfcHVibGljYXRpb25zKTsKIAogCQllbnRyeS0+cmVwbGlj YXRlX3ZhbGlkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGZiNGUw NDJiZThhLi45MmZmODlmYTJhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01 ODQ1LDE2ICs1ODQ1LDI5IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24g cmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkvKiBGZXRjaCB0aGUgcHVibGlj YXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCXB1Ym9pZHMgPSBHZXRSZWxhdGlvbkluY2x1ZGVk UHVibGljYXRpb25zKHJlbGlkKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJl bGF0aW9uKTsKLQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRT Y2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKIAogCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5y ZWxpc3BhcnRpdGlvbikKIAl7Ci0JCU9pZAkJCWxhc3RfYW5jZXN0b3JfcmVsaWQ7Ci0KLQkJLyog QWRkIHB1YmxpY2F0aW9ucyB0aGF0IHRoZSBhbmNlc3RvcnMgYXJlIGluIHRvby4gKi8KIAkJYW5j ZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOwotCQlsYXN0X2FuY2VzdG9y X3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7CisJCWV4Y2VwdHB1Ym9pZHMgPSBHZXRSZWxh dGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKGxsYXN0X29pZChhbmNlc3RvcnMpKTsKKwl9CisJZWxz ZQorCQlleGNlcHRwdWJvaWRzID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhyZWxp ZCk7CiAKKwkvKgorCSAqIFN1YnRyYWN0IGV4Y2VwdHB1Ym9pZHMgZnJvbSB0aGUgc2NoZW1hLXB1 YmxpY2F0aW9uIGNvbnRyaWJ1dGlvbiBzbyB0aGF0CisJICogYSByZWxhdGlvbiBFWENFUFQnZCBm cm9tIGEgc2NoZW1hIHB1YmxpY2F0aW9uIGRvZXMgbm90IGluaGVyaXQgdGhhdAorCSAqIHB1Ymxp Y2F0aW9uJ3MgcHViYWN0aW9ucy4gIFdpdGhvdXQgdGhpcyBmaWx0ZXIsCisJICogQ2hlY2tDbWRS ZXBsaWNhSWRlbnRpdHkoKSB3b3VsZCBkZW1hbmQgUkVQTElDQSBJREVOVElUWSBmb3IKKwkgKiBV UERBVEUvREVMRVRFIGV2ZW4gb24gYSBleHBsaWNpdGx5IGV4Y2x1ZGVkIHRhYmxlLgorCSAqLwor CXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkgbGlz dF9kaWZmZXJlbmNlX29pZChHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpLAorCQkJCQkJ CQkJCQkJCQkgZXhjZXB0cHVib2lkcykpOworCisJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlz cGFydGl0aW9uKQorCXsKKwkJLyogQWRkIHB1YmxpY2F0aW9ucyB0aGF0IHRoZSBhbmNlc3RvcnMg YXJlIGluIHRvby4gKi8KIAkJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCQl7CiAJCQlPaWQJCQlh bmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwpAQCAtNTg2MywyMyArNTg3Niw5IEBAIFJlbGF0aW9u QnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAq cHViZGVzYykKIAkJCQkJCQkJCQkJIEdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMoYW5j ZXN0b3IpKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwogCQkJ cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJCQkJIEdl dFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQkJCQkJCQkJCQkgbGlzdF9kaWZmZXJl bmNlX29pZChHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpLAorCQkJCQkJCQkJCQkJCQkJ CSBleGNlcHRwdWJvaWRzKSk7CiAJCX0KLQotCQkvKgotCQkgKiBPbmx5IHRoZSB0b3AtbW9zdCBh bmNlc3RvciBjYW4gYXBwZWFyIGluIHRoZSBFWENFUFQgY2xhdXNlLgotCQkgKiBUaGVyZWZvcmUs IGZvciBhIHBhcnRpdGlvbiwgZXhjbHVzaW9uIG11c3QgYmUgZXZhbHVhdGVkIGF0IHRoZQotCQkg KiB0b3AtbW9zdCBhbmNlc3Rvci4KLQkJICovCi0JCWV4Y2VwdHB1Ym9pZHMgPSBHZXRSZWxhdGlv bkV4Y2x1ZGVkUHVibGljYXRpb25zKGxhc3RfYW5jZXN0b3JfcmVsaWQpOwotCX0KLQllbHNlCi0J ewotCQkvKgotCQkgKiBGb3IgYSByZWd1bGFyIHRhYmxlIG9yIGEgcm9vdCBwYXJ0aXRpb25lZCB0 YWJsZSwgY2hlY2sgZXhjbHVzaW9uIG9uCi0JCSAqIHRhYmxlIGl0c2VsZi4KLQkJICovCi0JCWV4 Y2VwdHB1Ym9pZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHJlbGlkKTsKIAl9 CiAKIAlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCk7CmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CmluZGV4IGFmMzkzNWIwMDc4Li45NDcwYTBiYmY1ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTcwMzgsNiArNzAz OCwyNCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCWlm ICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiVGFibGVzIGZyb20gc2NoZW1h czoiKSwKIAkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47 CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJeworCQkJCQkvKgorCQkJ CQkgKiBHZXQgdGFibGVzIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciB0aGlzIHNjaGVtYQorCQkJ CQkgKiBwdWJsaWNhdGlvbi4KKwkJCQkJICovCisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYs CisJCQkJCQkJCQkgICJTRUxFQ1QgY29uY2F0KGMucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2Us ICcuJywgYy5yZWxuYW1lKVxuIgorCQkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGNcbiIKKwkJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3Jl bCBwciBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJCSAgIldIRVJFIHByLnBycHVi aWQgPSAnJXMnXG4iCisJCQkJCQkJCQkgICIgIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkJ ICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9u RGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVzOiIpLAorCQkJCQkJCQkJCQkJCXRydWUsICZjb250 KSkKKwkJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJCX0KIAkJCX0KIAkJfQogCQllbHNlCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNDZiOWFkZDA2MDQuLmMyMGJhMWQ4YzAxIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCkBAIC0xMDY1LDYgKzEwNjUsMjQgQEAgc3RhdGljIGNvbnN0IFNjaGVt YVF1ZXJ5IFF1ZXJ5X2Zvcl90cmlnZ2VyX29mX3RhYmxlID0gewogIlNFTEVDVCBuc3BuYW1lIEZS T00gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgIlwKICIgV0hFUkUgbnNwbmFtZSBMSUtFICclcyci CiAKKyNkZWZpbmUgUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX3NjaGVtYSBcCisiU0VMRUNU IG4ubnNwbmFtZSB8fCAnLicgfHwgYy5yZWxuYW1lICJcCisiICBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYyAiXAorIiAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5v aWQgPSBjLnJlbG5hbWVzcGFjZSAiXAorIiBXSEVSRSBjLnJlbGtpbmQgSU4gKCIgQ3BwQXNTdHJp bmcyKFJFTEtJTkRfUkVMQVRJT04pICIsICIgXAorCQkJCQkJQ3BwQXNTdHJpbmcyKFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUpICIpICJcCisiICAgQU5EIChuLm5zcG5hbWUgfHwgJy4nIHx8IGMu cmVsbmFtZSkgTElLRSAnJXMnICJcCisiICAgQU5EIG4ubnNwbmFtZSA9ICclcyciCisKKyNkZWZp bmUgUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX2N1cnJlbnRfc2NoZW1hIFwKKyJTRUxFQ1Qg Yy5yZWxuYW1lICJcCisiICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyAiXAorIiAgICAgICBK T0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZSAi XAorIiBXSEVSRSBjLnJlbGtpbmQgSU4gKCIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUkVMQVRJT04p ICIsICIgXAorCQkJCQkJQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICIp ICJcCisiICAgQU5EIGMucmVsbmFtZSBMSUtFICclcycgIlwKKyIgICBBTkQgbi5uc3BuYW1lID0g cGdfY2F0YWxvZy5jdXJyZW50X3NjaGVtYSgpIgorCiAvKiBVc2UgQ09NUExFVEVfV0lUSF9RVUVS WV9WRVJCQVRJTSB3aXRoIHRoZXNlIHF1ZXJpZXMgZm9yIEdVQyBuYW1lczogKi8KICNkZWZpbmUg UXVlcnlfZm9yX2xpc3Rfb2ZfYWx0ZXJfc3lzdGVtX3NldF92YXJzIFwKICJTRUxFQ1QgcGdfY2F0 YWxvZy5sb3dlcihuYW1lKSBGUk9NIHBnX2NhdGFsb2cucGdfc2V0dGluZ3MgIlwKQEAgLTM3ODgs OCArMzgwNiwyMSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09N UExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJ ICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKIAkJCQkJCQkJICJDVVJSRU5U X1NDSEVNQSIpOwotCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYgKCFl bmRzX3dpdGgocHJldl93ZCwgJywnKSkpCi0JCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOworCWVs c2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwg IlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dk LCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBUQUJMRSIsICJXSVRIICgiKTsKKwll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiKSkKKwkJQ09NUExF VEVfV0lUSCgiKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFu eSwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVT IiwgIklOIiwgIlNDSEVNQSIsICJDVVJSRU5UX1NDSEVNQSIsICJFWENFUFQiLCAiKCIsICJUQUJM RSIpKQorCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlc19pbl9jdXJyZW50X3NjaGVtYSk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1h dGNoQW55LCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiKSkKKwl7CisJCXNldF9jb21wbGV0aW9uX3Jl ZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBMRVRFX1dJVEhfUVVFUllfVkVSQkFUSU0oUXVlcnlf Zm9yX2xpc3Rfb2ZfdGFibGVzX2luX3NjaGVtYSk7CisJfQorCWVsc2UgaWYgKE1hdGNoZXMoIkNS RUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJT Q0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAh ZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBDb21w bGV0ZSAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxuYW1lPiBbLi4uXSBXSVRIIiAqLwogCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55TiwgIldJVEgiLCAiKCIp KQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwgInB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMi LCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaAppbmRleCA4OWI0YmIxNGY2Mi4uNTNlM2Q3YzZmM2QgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE5MSw3ICsxOTEsOCBAQCBleHRlcm4gTGlzdCAqR2V0UHVi UGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwKIAkJCQkJCQkJCQkJUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAogCQkJCQkJCQkJCQlPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFu Y2VzdG9ycywKLQkJCQkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCk7CisJCQkJCQkJCQkJCWlu dCAqYW5jZXN0b3JfbGV2ZWwsCisJCQkJCQkJCQkJCUxpc3QgKmV4Y2VwdF9wdWJpZHMpOwogCiBl eHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJu IGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5oCmluZGV4IDRjZjQ1YzE3Y2M1Li5mYjE3MDNhYTY3NSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKQEAgLTI3LDYgKzI3LDggQEAgZXh0ZXJu IHZvaWQgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10KTsKIGV4dGVybiB2b2lkIFJlbW92ZVB1YmxpY2F0aW9uQnlJZChPaWQgcHVi aWQpOwogZXh0ZXJuIHZvaWQgUmVtb3ZlUHVibGljYXRpb25SZWxCeUlkKE9pZCBwcm9pZCk7CiBl eHRlcm4gdm9pZCBSZW1vdmVQdWJsaWNhdGlvblNjaGVtYUJ5SWQoT2lkIHBzb2lkKTsKK2V4dGVy biB2b2lkIFJlbW92ZVNjaGVtYVB1YkV4Y2VwdEZvclJlbChPaWQgcmVsaWQsIE9pZCBvbGROc3BP aWQsCisJCQkJCQkJCQkJT2lkIG5ld05zcE9pZCk7CiAKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFs dGVyUHVibGljYXRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3T3duZXJJZCk7CiBl eHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uT3duZXJfb2lkKE9pZCBwdWJpZCwgT2lkIG5ld093 bmVySWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDQxMzNjNDA0YTZiLi4xMjk5YjBhNjdh NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDQ4OCw2ICs0NDg4LDggQEAgdHlwZWRlZiBz dHJ1Y3QgUHVibGljYXRpb25PYmpTcGVjCiAJUHVibGljYXRpb25PYmpTcGVjVHlwZSBwdWJvYmp0 eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24gb2JqZWN0ICovCiAJY2hhcgkgICAqbmFt ZTsKIAlQdWJsaWNhdGlvblRhYmxlICpwdWJ0YWJsZTsKKwlMaXN0CSAgICpleGNlcHRfdGFibGVz OwkvKiB0YWJsZXMgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIChmb3IKKwkJCQkJCQkJ ICogVEFCTEVTIElOIFNDSEVNQSkgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxv Y2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uT2JqU3BlYzsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAyOWU1NGIyMTRhMC4u NmVmZWQwYTBjY2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CkBAIC0yNzAsNiArMjcwLDEyIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRh Ymxlc19leGNlcHR0YWJsZTIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0CiBFUlJPUjogIHN5 bnRheCBlcnJvciBhdCBvciBuZWFyICJ0ZXN0cHViX3RibDEiCiBMSU5FIDE6IC4uLl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90Yi4uLgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIGZhaWwgLSBFWENFUFQgaXMgbm90IGFsbG93ZWQgZm9yIEZPUiBUQUJMRSBwdWJs aWNhdGlvbnMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9lcnIKKyAgICBGT1Ig VEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3Ri bDMpOworRVJST1I6ICBFWENFUFQgaXMgbm90IGFsbG93ZWQgZm9yIFRBQkxFIHB1YmxpY2F0aW9u IG9iamVjdHMKK0xJTkUgMjogICAgIEZPUiBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJs MiBFWENFUFQgKFRBQkxFIHRlc3RwLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0t IFNFVCBBTEwgVEFCTEVTL1NFUVVFTkNFUwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCkBAIC00NzAsNyArNDc2LDEzMCBAQCBISU5UOiAgQ2hhbmdlIHRoZSBw dWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2UgdXNpbmcgQUxURVIgUFVCTElDQVRJT04gLi4uIFNF VCBBTAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl9yb290 LCB0ZXN0cHViX3BhcnQxLCB0YWJfbWFpbjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7Ci0t LS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIFRBQkxF UyBJTiBTQ0hFTUEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gQ3JlYXRlIHRhYmxlcyBp biBwdWJfdGVzdCBmb3IgdGhlc2UgdGVzdHMKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl90YmxfczIgKHggaW50IHByaW1hcnkga2V5LCB5IHRleHQpOworLS0gQ3JlYXRl IHNhbWUtbmFtZWQgdGFibGVzIGluIHB1YmxpYyB0byB2ZXJpZnkgdW5xdWFsaWZpZWQgRVhDRVBU IGVudHJpZXMKKy0tIGFyZSBxdWFsaWZpZWQgd2l0aCB0aGUgbmFtZWQgc2NoZW1hLCBub3QgcHVi bGljCitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9ub3BrIChmb28gaW50LCBiYXIgaW50KTsKK0NSRUFU RSBUQUJMRSB0ZXN0cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CistLSBC YXNpYzogZXhjbHVkZSBvbmUgdGFibGUgZnJvbSBhIHNjaGVtYSBwdWJsaWNhdGlvbgorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICBGT1IgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKK1xk UnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hX2V4Y2Vw dDEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBj b2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAg ICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90 ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisKKy0t IEV4Y2x1ZGUgbXVsdGlwbGUgdGFibGVzIHVzaW5nIHVucXVhbGlmaWVkIG5hbWVzOyBzYW1lLW5h bWVkIHRhYmxlcyBleGlzdCBpbgorLS0gcHVibGljIHRvIGNvbmZpcm0gdW5xdWFsaWZpZWQgbmFt ZXMgcmVzb2x2ZSB0byBwdWJfdGVzdCwgbm90IHB1YmxpYworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfc2NoZW1hX2V4Y2VwdDIKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBW aWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAg fCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCitFeGNl cHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCisgICAgInB1Yl90ZXN0LnRl c3RwdWJfdGJsX3MxIgorCistLSBmYWlsOiBFWENFUFQgdGFibGUgYmVsb25ncyB0byBhIGRpZmZl cmVudCBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF93cm9uZ3NjaGVt YQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGlj LnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIiBpbiBF WENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgInB1Yl90ZXN0IgorTElORSAy OiAgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMu dGVzdHAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gZmFpbDogY3Jvc3Mtc2NoZW1hIEVYQ0VQVCBub3QgYWxsb3dlZDsgZWFj aCBFWENFUFQgaXMgYm91bmQgdG8gaXRzIGltbWVkaWF0ZSBzY2hlbWEKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2V4Y2VwdF9jcm9zc3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0LCBwdWJsaWMgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwg cHVibGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMSIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hICJwdWJsaWMi CitMSU5FIDI6IC4uLlIgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgcHVibGljIEVYQ0VQVCAo VEFCTEUgcHViX3Rlc3QudC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE11bHRpcGxlIHNjaGVtYXMgZWFjaCB3aXRo IHRoZWlyIG93biBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hl bWFfZXhjZXB0X211bHRpCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBU IChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisgICAgICAgICAgICAgICAgICBwdWJs aWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhj ZXB0X211bHRpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorICAgICJwdWJs aWMiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKyAgICAi cHVibGljLnRlc3RwdWJfdGJsMSIKKworLS0gQUxURVIgVEFCTEUgLi4uIFNFVCBTQ0hFTUEgb24g YSB0YWJsZSBleGNsdWRlZCBieSBhIHNjaGVtYSBwdWJsaWNhdGlvbjoKKy0tIHRoZSBzY2hlbWEt c2NvcGVkIGV4Y2x1c2lvbiBpcyBubyBsb25nZXIgbWVhbmluZ2Z1bCBvbmNlIHRoZSB0YWJsZSBt b3ZlcworLS0gb3V0IG9mIGl0cyBzY2hlbWEsIHNvIHRoZSBleGNsdXNpb24gaXMgYXV0by1yZW1v dmVkLgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2gKKyAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfdGJsX3MyKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2gKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxl cyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVi X3Rlc3QudGVzdHB1Yl90YmxfczIiCisKK0FMVEVSIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MyIFNFVCBTQ0hFTUEgcHVibGljOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X3NldHNj aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X3NldHNjaAorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERl c2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8 IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X3NldHNjaDsKKy0tIFJlc3RvcmUgZm9yIGZ1cnRoZXIg dGVzdHMKK0FMVEVSIFRBQkxFIHB1YmxpYy50ZXN0cHViX3RibF9zMiBTRVQgU0NIRU1BIHB1Yl90 ZXN0OworLS0gZmFpbDogdGFibGUgYXBwZWFycyBpbiBib3RoIHRoZSBleHBsaWNpdCB0YWJsZSBs aXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhj ZXB0X2NvbmZsaWN0CisgICAgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90Ymxf czEpOworRVJST1I6ICB0YWJsZSAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiIGNhbm5vdCBhcHBl YXIgaW4gYm90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhlIEVYQ0VQVCBjbGF1c2UKKy0tIGZhaWw6 IG5vbmV4aXN0ZW50IHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2V4Y2VwdF9ub3JlbAorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVY Q0VQVCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUpOworRVJST1I6ICByZWxhdGlv biAicHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUiIGRvZXMgbm90IGV4aXN0CistLSBmYWlsOiBw YXJ0aXRpb24gY2Fubm90IGFwcGVhciBpbiBFWENFUFQgY2xhdXNlOyBvbmx5IHJvb3QgdGFibGVz IGFyZSBhbGxvd2VkCitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyAoYSBp bnQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3BhcnRfcyBQQVJUSVRJT04gT0YgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyBGT1IgVkFMVUVT IElOICgxKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9wYXJ0aXRpb24KKyAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfcGFydF9zKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgcmVsYXRpb24gInB1Yl90ZXN0 LnRlc3RwdWJfcGFydF9zIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZQorREVUQUlM OiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgaW5kaXZpZHVhbCBwYXJ0aXRp b25zLgorLS0gZmFpbDogVEFCTEUga2V5d29yZCBpcyByZXF1aXJlZCBmb3IgdGhlIGZpcnN0IGVu dHJ5IGluIHRoZSBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNl cHRfbm9rdworICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1 Yl9ub3BrKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfbm9wayIK K0xJTkUgMjogICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1 Yl9ub3BrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gQ2xlYW51cAorUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOworRFJPUCBU QUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIENBU0NBREU7CitEUk9QIFRBQkxFIHRlc3Rw dWJfbm9waywgdGVzdHB1Yl90YmxfczE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1h X2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9t dWx0aTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0g VGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJf c2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOwogLS0gRk9S IEFMTCBTRVFVRU5DRVMKQEAgLTE5NTMsNiArMjA4MiwyNyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgZm9vLCBiYXIgKGEsIGIpOwog RVJST1I6ICBjb2x1bW4gc3BlY2lmaWNhdGlvbiBub3QgYWxsb3dlZCBmb3Igc2NoZW1hCiBMSU5F IDE6IC4uLlRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIGZvbywg YmFyIChhLCBiKS4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVYQ0VQVCBjbGF1c2Ugd2l0aCBDVVJSRU5UX1NDSEVN QTogY3Jvc3Mtc2NoZW1hIGVudHJ5IG11c3QgYmUgcmVqZWN0ZWQKK1NFVCBzZWFyY2hfcGF0aCA9 IHB1Yl90ZXN0MTsKKy0tIHF1YWxpZmllZCBuYW1lIGZyb20gd3Jvbmcgc2NoZW1hIC0+IGVycm9y CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0IEZPUiBUQUJMRVMgSU4g U0NIRU1BIENVUlJFTlRfU0NIRU1BIEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QyLnRibDEpOworRVJS T1I6ICB0YWJsZSAicHViX3Rlc3QyLnRibDEiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVs b25nIHRvIHNjaGVtYSAicHViX3Rlc3QxIgorLS0gdW5xdWFsaWZpZWQgbmFtZSBpbXBsaWNpdGx5 IHF1YWxpZmllZCB3aXRoIGN1cnJlbnQgc2NoZW1hIChwdWJfdGVzdDEudGJsKQorU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY3Vy c2NoX2V4Y2VwdCBGT1IgVEFCTEVTIElOIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRB QkxFIHRibCk7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworXGRScCsgdGVzdHB1Yl9jdXJz Y2hfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2N1cnNjaF9leGNlcHQKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3Qg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0MSIKK0V4Y2VwdCB0YWJs ZXM6CisgICAgInB1Yl90ZXN0MS50YmwiCisKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9jdXJz Y2hfZXhjZXB0OworUkVTRVQgc2VhcmNoX3BhdGg7CiAtLSBjbGVhbnVwIHB1Yl90ZXN0MSBzY2hl bWEgZm9yIGludmFsaWRhdGlvbiB0ZXN0cwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjJfZm9y c2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWIzX2ZvcnNjaGVtYSwgdGVzdHB1YjRfZm9yc2NoZW1hLCB0ZXN0cHViNV9mb3JzY2hl bWEsIHRlc3RwdWI2X2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3J0YWJsZTsKQEAgLTIzMDQsNiArMjQ1 NCw3IEBAIERST1AgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXJfZHVtbXk7CiAtLSBUZXN0 IHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXModGV4dFtdLCBvaWQpIGZ1bmN0aW9uCiBDUkVBVEUg U0NIRU1BIGdwdF90ZXN0X3NjaDsKIENSRUFURSBUQUJMRSBncHRfdGVzdF9zY2gudGJsX3NjaCAo aWQgaW50KTsKK0NSRUFURSBUQUJMRSBncHRfdGVzdF9zY2gudGJsX3NjaDIgKGlkIGludCk7CiBD UkVBVEUgVEFCTEUgdGJsX25vcm1hbCAoaWQgaW50KTsKIENSRUFURSBUQUJMRSB0YmxfcGFyZW50 IChpZDEgaW50LCBpZDIgaW50LCBpZDMgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkMSk7CiBD UkVBVEUgVEFCTEUgdGJsX3BhcnQxIFBBUlRJVElPTiBPRiB0YmxfcGFyZW50IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDEwKTsKQEAgLTIzMTQsNiArMjQ2NSw3IEBAIENSRUFURSBQVUJMSUNBVElP TiBwdWJfYWxsX25vX3ZpYXJvb3QgRk9SIEFMTCBUQUJMRVMgV0lUSCAocHVibGlzaF92aWFfcGFy dGl0aW9uCiBDUkVBVEUgUFVCTElDQVRJT04gcHViX2FsbF9leGNlcHQgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIChUQUJMRSB0YmxfcGFyZW50LCBncHRfdGVzdF9zY2gudGJsX3NjaCkgV0lUSCAocHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJf YWxsX2V4Y2VwdF9ub192aWFyb290IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGJsX3Bh cmVudCwgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gZmFsc2UpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWEgRk9SIFRBQkxFUyBJ TiBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWFfZXhj ZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIGdwdF90ZXN0X3NjaCBFWENFUFQgKFRBQkxFIGdwdF90 ZXN0X3NjaC50Ymxfc2NoKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJfbm9ybWFsIEZPUiBUQUJM RSB0Ymxfbm9ybWFsIFdIRVJFIChpZCA8IDEwKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJfcGFy dF9sZWFmIEZPUiBUQUJMRSB0YmxfcGFydDEgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QgPSBmYWxzZSk7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50IEZPUiBUQUJM RSB0YmxfcGFyZW50IChpZDEsIGlkMikgV0hFUkUgKGlkMSA9IDEwKSBXSVRIIChwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwpAQCAtMjQ2NSw2ICsyNjE3LDE4IEBAIFNFTEVDVCAq IEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QnXSwgJ3RibF9w YXJ0MScpOyAtLSBubyByCiAtLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCiAoMCBy b3dzKQogCistLSB0ZXN0IGZvciBFWENFUFQgY2xhdXNlIHdpdGggc2NoZW1hIHB1YmxpY2F0aW9u CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2NoZW1hX2V4Y2VwdCddLCAnZ3B0 X3Rlc3Rfc2NoLnRibF9zY2gnKTsgLS0gbm8gcmVzdWx0IChleGNsdWRlZCkKKyBwdWJuYW1lIHwg cmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9zY2hlbWFf ZXhjZXB0J10sICdncHRfdGVzdF9zY2gudGJsX3NjaDInKTsgLS0gb25lIHJvdyAoaW5jbHVkZWQg dmlhIHNjaGVtYSkKKyAgICAgIHB1Ym5hbWUgICAgICB8IHJlbG5hbWUgIHwgYXR0cnMgfCBxdWFs IAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisgcHViX3Nj aGVtYV9leGNlcHQgfCB0Ymxfc2NoMiB8IDEgICAgIHwgCisoMSByb3cpCisKIC0tIHR3byByb3dz IHdpdGggZGlmZmVyZW50IHJvdyBmaWx0ZXIKIFNFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlb J3B1Yl9hbGwnLCAncHViX25vcm1hbCddLCAndGJsX25vcm1hbCcpOwogICBwdWJuYW1lICAgfCAg cmVsbmFtZSAgIHwgYXR0cnMgfCAgIHF1YWwgICAgCkBAIC0yNTE3LDYgKzI2ODEsNyBAQCBEUk9Q IFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdDsKIERST1AgUFVCTElDQVRJT04gcHViX2Fs bF9leGNlcHQ7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3Q7CiBE Uk9QIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9zY2hlbWFf ZXhjZXB0OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfbm9ybWFsOwogRFJPUCBQVUJMSUNBVElPTiBw dWJfcGFydF9sZWFmOwogRFJPUCBQVUJMSUNBVElPTiBwdWJfcGFydF9wYXJlbnQ7CkBAIC0yNTI1 LDcgKzI2OTAsOSBAQCBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudF9jaGlsZDsKIERS T1AgVklFVyBncHRfdGVzdF92aWV3OwogRFJPUCBUQUJMRSB0Ymxfbm9ybWFsLCB0YmxfcGFyZW50 LCB0YmxfcGFydDE7CiBEUk9QIFNDSEVNQSBncHRfdGVzdF9zY2ggQ0FTQ0FERTsKLU5PVElDRTog IGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gKK05PVElDRTogIGRy b3AgY2FzY2FkZXMgdG8gMiBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRv IHRhYmxlIGdwdF90ZXN0X3NjaC50Ymxfc2NoCitkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGdwdF90 ZXN0X3NjaC50Ymxfc2NoMgogLS0gc3RhZ2Ugb2JqZWN0cyBmb3IgcGdfZHVtcCB0ZXN0cwogQ1JF QVRFIFNDSEVNQSBwdWJtZSBDUkVBVEUgVEFCTEUgdDAgKGMgaW50LCBkIGludCkgQ1JFQVRFIFRB QkxFIHQxIChjIGludCk7CiBDUkVBVEUgU0NIRU1BIHB1Ym1lMiBDUkVBVEUgVEFCTEUgdDAgKGMg aW50LCBkIGludCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMDQxZTE0 YTRkZTYuLjJlNzllOWU0MTEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBA IC0xMjMsNiArMTIzLDkgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkwKIFxkIHRlc3RwdWJfdGJs MQogLS0gZmFpbCAtIGZpcnN0IHRhYmxlIGluIHRoZSBFWENFUFQgbGlzdCBzaG91bGQgdXNlIFRB QkxFIGtleXdvcmQKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZTIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJs Mik7CistLSBmYWlsIC0gRVhDRVBUIGlzIG5vdCBhbGxvd2VkIGZvciBGT1IgVEFCTEUgcHVibGlj YXRpb25zCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfZXJyCisgICAgRk9SIFRB QkxFIHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90Ymwz KTsKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBT RVQgQUxMIFRBQkxFUy9TRVFVRU5DRVMKQEAgLTIyMCw3ICsyMjMsODMgQEAgUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0 YWJfbWFpbjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAKLS0tLSBUZXN0cyBmb3IgcHVi bGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCB0ZXN0cyBmb3IgVEFCTEVTIElOIFNDSEVNQQorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CistLSBDcmVhdGUgdGFibGVzIGluIHB1Yl90ZXN0IGZvciB0 aGVzZSB0ZXN0cworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIChhIGludCBw cmltYXJ5IGtleSwgYiB0ZXh0KTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9z MiAoeCBpbnQgcHJpbWFyeSBrZXksIHkgdGV4dCk7CistLSBDcmVhdGUgc2FtZS1uYW1lZCB0YWJs ZXMgaW4gcHVibGljIHRvIHZlcmlmeSB1bnF1YWxpZmllZCBFWENFUFQgZW50cmllcworLS0gYXJl IHF1YWxpZmllZCB3aXRoIHRoZSBuYW1lZCBzY2hlbWEsIG5vdCBwdWJsaWMKK0NSRUFURSBUQUJM RSB0ZXN0cHViX25vcGsgKGZvbyBpbnQsIGJhciBpbnQpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJf dGJsX3MxIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0KTsKKworLS0gQmFzaWM6IGV4Y2x1ZGUg b25lIHRhYmxlIGZyb20gYSBzY2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX3NjaGVtYV9leGNlcHQxCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0cHViX3Nj aGVtYV9leGNlcHQxCisKKy0tIEV4Y2x1ZGUgbXVsdGlwbGUgdGFibGVzIHVzaW5nIHVucXVhbGlm aWVkIG5hbWVzOyBzYW1lLW5hbWVkIHRhYmxlcyBleGlzdCBpbgorLS0gcHVibGljIHRvIGNvbmZp cm0gdW5xdWFsaWZpZWQgbmFtZXMgcmVzb2x2ZSB0byBwdWJfdGVzdCwgbm90IHB1YmxpYworQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKyAgICBGT1IgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90Ymxf czEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorCistLSBmYWlsOiBFWENFUFQgdGFi bGUgYmVsb25ncyB0byBhIGRpZmZlcmVudCBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2V4Y2VwdF93cm9uZ3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CisKKy0tIGZhaWw6IGNyb3NzLXNj aGVtYSBFWENFUFQgbm90IGFsbG93ZWQ7IGVhY2ggRVhDRVBUIGlzIGJvdW5kIHRvIGl0cyBpbW1l ZGlhdGUgc2NoZW1hCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfY3Jvc3NzY2hl bWEKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgcHVibGljIEVYQ0VQVCAoVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1YmxpYy50ZXN0cHViX3RibDEpOworCistLSBN dWx0aXBsZSBzY2hlbWFzIGVhY2ggd2l0aCB0aGVpciBvd24gRVhDRVBUIGNsYXVzZQorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aQorICAgIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEp LAorICAgICAgICAgICAgICAgICAgcHVibGljIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwxKTsK K1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aQorCistLSBBTFRFUiBUQUJMRSAuLi4g U0VUIFNDSEVNQSBvbiBhIHRhYmxlIGV4Y2x1ZGVkIGJ5IGEgc2NoZW1hIHB1YmxpY2F0aW9uOgor LS0gdGhlIHNjaGVtYS1zY29wZWQgZXhjbHVzaW9uIGlzIG5vIGxvbmdlciBtZWFuaW5nZnVsIG9u Y2UgdGhlIHRhYmxlIG1vdmVzCistLSBvdXQgb2YgaXRzIHNjaGVtYSwgc28gdGhlIGV4Y2x1c2lv biBpcyBhdXRvLXJlbW92ZWQuCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhj ZXB0X3NldHNjaAorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0 X3NldHNjaAorQUxURVIgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIgU0VUIFNDSEVNQSBw dWJsaWM7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHRfc2V0c2NoCitEUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2g7CistLSBSZXN0b3JlIGZvciBmdXJ0aGVy IHRlc3RzCitBTFRFUiBUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmxfczIgU0VUIFNDSEVNQSBwdWJf dGVzdDsKKworLS0gZmFpbDogdGFibGUgYXBwZWFycyBpbiBib3RoIHRoZSBleHBsaWNpdCB0YWJs ZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZXhjZXB0X2NvbmZsaWN0CisgICAgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90 YmxfczEpOworCistLSBmYWlsOiBub25leGlzdGVudCB0YWJsZSBpbiBFWENFUFQgY2xhdXNlCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9yZWwKKyAgICBGT1IgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxl KTsKKworLS0gZmFpbDogcGFydGl0aW9uIGNhbm5vdCBhcHBlYXIgaW4gRVhDRVBUIGNsYXVzZTsg b25seSByb290IHRhYmxlcyBhcmUgYWxsb3dlZAorQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3Rw dWJfcGFydGVkX3MgKGEgaW50KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CitDUkVBVEUgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MgUEFSVElUSU9OIE9GIHB1Yl90ZXN0LnRlc3RwdWJfcGFy dGVkX3MgRk9SIFZBTFVFUyBJTiAoMSk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNl cHRfcGFydGl0aW9uCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChU QUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyk7CisKKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQg aXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X25va3cKKyAgICBGT1IgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9wayk7CisKKy0tIENsZWFudXAKK1JFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx LCBwdWJfdGVzdC50ZXN0cHViX3RibF9zMjsKK0RST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9w YXJ0ZWRfcyBDQVNDQURFOworRFJPUCBUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3Mx OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVt YV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGk7CisKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9u cyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5D RSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOwogCkBAIC0xMTg5LDYgKzEyNjgsMTggQEAgQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0MSwgcHViX3Rlc3QxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1h IEFERCBUQUJMRVMgSU4gU0NIRU1BIGZvbyAoYSwgYik7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgZm9vLCBiYXIgKGEsIGIpOwogCist LSBFWENFUFQgY2xhdXNlIHdpdGggQ1VSUkVOVF9TQ0hFTUE6IGNyb3NzLXNjaGVtYSBlbnRyeSBt dXN0IGJlIHJlamVjdGVkCitTRVQgc2VhcmNoX3BhdGggPSBwdWJfdGVzdDE7CistLSBxdWFsaWZp ZWQgbmFtZSBmcm9tIHdyb25nIHNjaGVtYSAtPiBlcnJvcgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfY3Vyc2NoX2V4Y2VwdCBGT1IgVEFCTEVTIElOIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBF WENFUFQgKFRBQkxFIHB1Yl90ZXN0Mi50YmwxKTsKKy0tIHVucXVhbGlmaWVkIG5hbWUgaW1wbGlj aXRseSBxdWFsaWZpZWQgd2l0aCBjdXJyZW50IHNjaGVtYSAocHViX3Rlc3QxLnRibCkKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2N1cnNjaF9leGNlcHQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEgRVhDRVBU IChUQUJMRSB0YmwpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWJf Y3Vyc2NoX2V4Y2VwdAorRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9leGNlcHQ7CitS RVNFVCBzZWFyY2hfcGF0aDsKKwogLS0gY2xlYW51cCBwdWJfdGVzdDEgc2NoZW1hIGZvciBpbnZh bGlkYXRpb24gdGVzdHMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIyX2ZvcnNjaGVtYSBEUk9Q IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViM19m b3JzY2hlbWEsIHRlc3RwdWI0X2ZvcnNjaGVtYSwgdGVzdHB1YjVfZm9yc2NoZW1hLCB0ZXN0cHVi Nl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9ydGFibGU7CkBAIC0xNDQzLDYgKzE1MzQsNyBAQCBEUk9Q IFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyX2R1bW15OwogLS0gVGVzdCBwZ19nZXRfcHVi bGljYXRpb25fdGFibGVzKHRleHRbXSwgb2lkKSBmdW5jdGlvbgogQ1JFQVRFIFNDSEVNQSBncHRf dGVzdF9zY2g7CiBDUkVBVEUgVEFCTEUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2ggKGlkIGludCk7CitD UkVBVEUgVEFCTEUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gyIChpZCBpbnQpOwogQ1JFQVRFIFRBQkxF IHRibF9ub3JtYWwgKGlkIGludCk7CiBDUkVBVEUgVEFCTEUgdGJsX3BhcmVudCAoaWQxIGludCwg aWQyIGludCwgaWQzIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZDEpOwogQ1JFQVRFIFRBQkxF IHRibF9wYXJ0MSBQQVJUSVRJT04gT0YgdGJsX3BhcmVudCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgxMCk7CkBAIC0xNDU0LDYgKzE1NDYsNyBAQCBDUkVBVEUgUFVCTElDQVRJT04gcHViX2FsbF9u b192aWFyb290IEZPUiBBTEwgVEFCTEVTIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbgogQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFC TEUgdGJsX3BhcmVudCwgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gpIFdJVEggKHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290ID0gdHJ1ZSk7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViX2FsbF9leGNlcHRf bm9fdmlhcm9vdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHRibF9wYXJlbnQsIGdwdF90 ZXN0X3NjaC50Ymxfc2NoKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNl KTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIGdw dF90ZXN0X3NjaDsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfc2NoZW1hX2V4Y2VwdCBGT1IgVEFC TEVTIElOIFNDSEVNQSBncHRfdGVzdF9zY2ggRVhDRVBUIChUQUJMRSBncHRfdGVzdF9zY2gudGJs X3NjaCk7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViX25vcm1hbCBGT1IgVEFCTEUgdGJsX25vcm1h bCBXSEVSRSAoaWQgPCAxMCk7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViX3BhcnRfbGVhZiBGT1Ig VEFCTEUgdGJsX3BhcnQxIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2Up OwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudCBGT1IgVEFCTEUgdGJsX3BhcmVu dCAoaWQxLCBpZDIpIFdIRVJFIChpZDEgPSAxMCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QgPSB0cnVlKTsKQEAgLTE1MTAsNiArMTYwMywxMCBAQCBTRUxFQ1QgKiBGUk9NIHRlc3Rf Z3B0KEFSUkFZWydwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290J10sICdncHRfdGVzdF9zY2gudGJs X3NjaAogU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHRfbm9fdmlh cm9vdCddLCAndGJsX3BhcmVudCcpOyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVkKQogU0VMRUNUICog RlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHRfbm9fdmlhcm9vdCddLCAndGJsX3Bh cnQxJyk7IC0tIG5vIHJlc3VsdAogCistLSB0ZXN0IGZvciBFWENFUFQgY2xhdXNlIHdpdGggc2No ZW1hIHB1YmxpY2F0aW9uCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2NoZW1h X2V4Y2VwdCddLCAnZ3B0X3Rlc3Rfc2NoLnRibF9zY2gnKTsgLS0gbm8gcmVzdWx0IChleGNsdWRl ZCkKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9zY2hlbWFfZXhjZXB0J10sICdn cHRfdGVzdF9zY2gudGJsX3NjaDInKTsgLS0gb25lIHJvdyAoaW5jbHVkZWQgdmlhIHNjaGVtYSkK KwogLS0gdHdvIHJvd3Mgd2l0aCBkaWZmZXJlbnQgcm93IGZpbHRlcgogU0VMRUNUICogRlJPTSB0 ZXN0X2dwdChBUlJBWVsncHViX2FsbCcsICdwdWJfbm9ybWFsJ10sICd0Ymxfbm9ybWFsJyk7CiAK QEAgLTE1MzgsNiArMTYzNSw3IEBAIERST1AgUFVCTElDQVRJT04gcHViX2FsbF9ub192aWFyb290 OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcHVi X2FsbF9leGNlcHRfbm9fdmlhcm9vdDsKIERST1AgUFVCTElDQVRJT04gcHViX3NjaGVtYTsKK0RS T1AgUFVCTElDQVRJT04gcHViX3NjaGVtYV9leGNlcHQ7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9u b3JtYWw7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X2xlYWY7CiBEUk9QIFBVQkxJQ0FUSU9O IHB1Yl9wYXJ0X3BhcmVudDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz N19leGNlcHQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4 IDhjNThkMjgyZWVlLi4xOGM3YjJjMWZjYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM3X2V4Y2VwdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhj ZXB0LnBsCkBAIC0yNCwxNCArMjQsMTcgQEAgbXkgJHJlc3VsdDsKIAogc3ViIHRlc3RfZXhjZXB0 X3Jvb3RfcGFydGl0aW9uCiB7Ci0JbXkgKCRwdWJ2aWFyb290KSA9IEBfOworCW15ICgkcHVidmlh cm9vdCwgJHB1YnNxbCkgPSBAXzsKKwkkcHVic3FsIC8vPQorCSAgIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByb290MSkiOworCSRw dWJzcWwgLj0gIiBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICRwdWJ2aWFyb290 KSI7CiAKIAkjIElmIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGlzIGluIHRoZSBFWENFUFQg Y2xhdXNlLCBhbGwgaXRzCiAJIyBwYXJ0aXRpb25zIGFyZSBleGNsdWRlZCBmcm9tIHB1YmxpY2F0 aW9uLCByZWdhcmRsZXNzIG9mIHRoZQogCSMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qgc2V0 dGluZy4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXEoCi0J CUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChU QUJMRSByb290MSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAkcHVidmlhcm9v dCk7CisJCSRwdWJzcWw7CiAJCUlOU0VSVCBJTlRPIHJvb3QxIFZBTFVFUyAoMSksICgxMDEpOwog CSkpOwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMjIzLDYg KzIyNiwxMzEgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogdGVzdF9leGNlcHRfcm9v dF9wYXJ0aXRpb24oJ2ZhbHNlJyk7CiB0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbigndHJ1ZScp OwogCisjIFNhbWUgdmFsaWRhdGlvbiB1c2luZyBUQUJMRVMgSU4gU0NIRU1BIGluc3RlYWQgb2Yg Rk9SIEFMTCBUQUJMRVMuCitteSAkc2NoZW1hX3B1YiA9CisgICJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1Yl9wYXJ0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYyBFWENFUFQgKFRBQkxFIHB1 YmxpYy5yb290MSkiOwordGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ2ZhbHNlJywgJHNjaGVt YV9wdWIpOwordGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ3RydWUnLCAkc2NoZW1hX3B1Yik7 CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhD RVBUIHRlc3QgY2FzZXMgZm9yIFRBQkxFUyBJTiBTQ0hFTUEKKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBDcmVhdGUgYSBkZWRpY2F0ZWQgc2NoZW1h IHdpdGggdHdvIHRhYmxlczogb25lIHRvIGJlIHB1Ymxpc2hlZCBhbmQgb25lIHRvIGJlCisjIGV4 Y2x1ZGVkLiAgQWxzbyBjcmVhdGUgaW5oZXJpdGVkIHRhYmxlcyB0byB2ZXJpZnkgT05MWSBzZW1h bnRpY3MuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlD UkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHNjaDEudGFiX3B1Ymxpc2hlZCBBUyBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsNSkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJf ZXhjbHVkZWQgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDUpIEFTIGE7CisJQ1JFQVRFIFRB QkxFIHNjaDEucGFyZW50IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hpbGQgKGIgaW50 KSBJTkhFUklUUyAoc2NoMS5wYXJlbnQpOworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRB QkxFIHNjaDEudGFiX3B1Ymxpc2hlZCAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYl9l eGNsdWRlZCAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcmVudCAoYSBpbnQpOworCUNS RUFURSBUQUJMRSBzY2gxLmNoaWxkIChiIGludCkgSU5IRVJJVFMgKHNjaDEucGFyZW50KTsKKykp OworCisjIEJhc2ljIHRlc3Q6IGluaXRpYWwgc3luYyByZXNwZWN0cyBFWENFUFQuCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gc2No X3B1YiBGT1IgVEFCTEVTIElOIFNDSEVNQSBzY2gxIEVYQ0VQVCAoVEFCTEUgc2NoMS50YWJfZXhj bHVkZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgU1VCU0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry JyBQVUJMSUNBVElPTiBzY2hfcHViIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1 YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUpLAorCSdU QUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogaW5pdGlhbCBzeW5jIGNvcGllcyBpbmNsdWRlZCB0YWJs ZScpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9leGNsdWRlZCIpOworaXMoJHJlc3Vs dCwgcXEoMCksCisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBpbml0aWFsIHN5bmMgc2tpcHMg ZXhjbHVkZWQgdGFibGUnKTsKKworIyBETUw6IG9ubHkgdGhlIGluY2x1ZGVkIHRhYmxlIHNob3Vs ZCBiZSByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXEoCisJSU5TRVJUIElOVE8gc2NoMS50YWJfcHVibGlzaGVkIFZBTFVFUyAoNik7CisJSU5T RVJUIElOVE8gc2NoMS50YWJfZXhjbHVkZWQgVkFMVUVTICg2KTsKKykpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00g c2NoMS50YWJfcHVibGlzaGVkIik7CitpcygkcmVzdWx0LCBxcSg2KSwKKwknVEFCTEVTIElOIFND SEVNQSBFWENFUFQ6IERNTCBvbiBpbmNsdWRlZCB0YWJsZSBpcyByZXBsaWNhdGVkJyk7CiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwK KwknVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IERNTCBvbiBleGNsdWRlZCB0YWJsZSBpcyBub3Qg cmVwbGljYXRlZCcpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0RST1AgU1VCU0NSSVBUSU9OIHNjaF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsKKworIyBJbmhlcml0ZWQg dGFibGVzOiBleGNsdWRpbmcgdGhlIHBhcmVudCAod2l0aG91dCBPTkxZKSBhbHNvIGV4Y2x1ZGVz IHRoZSBjaGlsZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBQVUJMSUNBVElPTiBzY2hfcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBU IChUQUJMRSBzY2gxLnBhcmVudCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2NoX3N1YiBDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNjaF9wdWIiCispOworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1Yicp OworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyBzY2gxLmNoaWxkIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsNSksIGdlbmVyYXRlX3Nlcmll cygxLDUpKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NjaF9zdWIn KTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS5jaGlsZCIpOworaXMoJHJlc3VsdCwgcXEoMCks CisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBleGNsdWRpbmcgcGFyZW50ICh3aXRob3V0IE9O TFkpIGFsc28gZXhjbHVkZXMgY2hpbGQnCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHNjaF9zdWInKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsK KworIyBUZXN0IHRoYXQgRVhDRVBUIChUQUJMRSBPTkxZIHBhcmVudCkgZXhjbHVkZXMgb25seSB0 aGUgcGFyZW50IGl0c2VsZiwgbm90IGl0cworIyBjaGlsZC4gIFRydW5jYXRlIGNoaWxkIGZpcnN0 IHNvIHJvd3MgZnJvbSB0aGUgcHJldmlvdXMgdGVzdCBhcmUgbm90IGNvcGllZCBieQorIyB0aGUg aW5pdGlhbCB0YWJsZSBzeW5jIG9mIHRoZSBuZXh0IHN1YnNjcmlwdGlvbi4KKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBzY2gxLmNoaWxkJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIHNjaDEuY2hpbGQn KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJM SUNBVElPTiBzY2hfcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBP TkxZIHNjaDEucGFyZW50KSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzY2hfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0cicgUFVCTElDQVRJT04gc2NoX3B1YiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNj aDEuY2hpbGQgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSw1KSwgZ2VuZXJhdGVfc2VyaWVzKDEs NSkpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOwor CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLmNoaWxkIik7CitpcygkcmVzdWx0LCBxcSg1KSwKKwkn VEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IE9OTFkgcGFyZW50IGluIEVYQ0VQVCBkb2VzIG5vdCBl eGNsdWRlIGNoaWxkJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIENsZWFudXAg c2NoZW1hIHRhYmxlcyBiZWZvcmUgdGhlIG11bHRpLXB1YmxpY2F0aW9uIHNlY3Rpb24uCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVND QURFJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU0NI RU1BIHNjaDEgQ0FTQ0FERScpOworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAjIFRlc3Qgd2hlbiBhIHN1YnNjcmlwdGlvbiBpcyBzdWJzY3JpYmluZyB0 byBtdWx0aXBsZSBwdWJsaWNhdGlvbnMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KQEAgLTI1NCw2ICszODIsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKIAlEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyOwogCVRSVU5DQVRFIHRhYjE7CiApKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJ T04gdGFwX3N1YicpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx KFRSVU5DQVRFIHRhYjEpKTsKIAogIyBPSyB3aGVuIGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgcHVi MSBFWENFUFQgY2xhdXNlLCBidXQgaXQgaXMgaW5jbHVkZWQgYnkgcHViMgotLSAKMi41MC4xIChB cHBsZSBHaXQtMTU1KQoK --0000000000000f0ef2065589db93 Content-Type: application/octet-stream; name="v17-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Disposition: attachment; filename="v17-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr1ws73e1 RnJvbSA1ODJlMzNlMWE0ZjU0NWM2OWNiMzYwMzE2N2UxOThjYzQ3ZmE3MmNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDEgSnVsIDIwMjYgMTQ6MDY6MjggKzA1MzAKU3ViamVjdDogW1BBVENIIHYx NyAyLzNdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBBREQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCB0aGUgRVhDRVBUIGNsYXVzZSBzdXBwb3J0IHRvIGFsbG93IHRh YmxlcyB0byBiZSBleGNsdWRlZCB3aGVuCmFkZGluZyBhIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9u IHZpYSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQURELgoKU3ludGF4OgogIEFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgcy50MSk7CgpTaW5j ZSBwZ19kdW1wIHVzZXMgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCwgc3VwcG9ydCBmb3IgaXQg aXMKaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMgICAgICB8IDE5ICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYyAgICB8IDk4ICsrKysrKysrKysrKysrKysrKysrKystCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICB8IDMwICsrKysrKy0KIHNyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgIHwgMjQgKysrKysrCiBzcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8IDE3ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgMzIgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbCAgICAgIHwgMjAgKysrKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzN19leGNlcHQucGwgICAgIHwgMzIgKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjU4IGlu c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRp b24uYwppbmRleCBlNzAxOGZmNTY1Zi4uMTZhM2I1MDcxMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKQEAgLTY1NywxNSArNjU3LDE4IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCSAqIGhlcmUsIGFzIENy ZWF0ZVB1YmxpY2F0aW9uKCkgZnVuY3Rpb24gaW52YWxpZGF0ZXMgYWxsIHJlbGF0aW9ucyBhcyBw YXJ0CiAJICogb2YgZGVmaW5pbmcgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KIAkgKgot CSAqIEZvciBBTFRFUiBQVUJMSUNBVElPTiwgaW52YWxpZGF0aW9uIGlzIG5lZWRlZCBvbmx5IHdo ZW4gYWRkaW5nIGFuCi0JICogRVhDRVBUIHRhYmxlIHRvIGEgcHVibGljYXRpb24gYWxyZWFkeSBt YXJrZWQgYXMgQUxMIFRBQkxFUy4gRm9yCi0JICogcHVibGljYXRpb25zIHRoYXQgd2VyZSBvcmln aW5hbGx5IGVtcHR5IG9yIGRlZmluZWQgYXMgQUxMIFNFUVVFTkNFUyBhbmQKLQkgKiBhcmUgYmVp bmcgY29udmVydGVkIHRvIEFMTCBUQUJMRVMsIGludmFsaWRhdGlvbiBpcyBza2lwcGVkIGhlcmUs IGFzCi0JICogQWx0ZXJQdWJsaWNhdGlvbkFsbEZsYWdzKCkgZnVuY3Rpb24gaW52YWxpZGF0ZXMg YWxsIHJlbGF0aW9ucyB3aGlsZQotCSAqIG1hcmtpbmcgdGhlIHB1YmxpY2F0aW9uIGFzIEFMTCBU QUJMRVMgcHVibGljYXRpb24uCisJICogRm9yIEFMVEVSIFBVQkxJQ0FUSU9OLCBpbnZhbGlkYXRp b24gaXMgbmVlZGVkIHdoZW4gYWRkaW5nIGFuIEVYQ0VQVAorCSAqIHRhYmxlIHRvIGVpdGhlciBh IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIChwdWItPmFsbHRhYmxlcyBpcyB0cnVlKQorCSAq IG9yIGEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb24gKGlzX3NjaGVtYV9wdWJsaWNh dGlvbiBpcyB0cnVlKS4KKwkgKiBUaGUgZXhjZXB0aW9uOiB3aGVuIGEgcHVibGljYXRpb24gaXMg YmVpbmcgY29udmVydGVkIHRvIEZPUiBBTEwgVEFCTEVTCisJICogKHB1Yi0+YWxsdGFibGVzIGlz IHN0aWxsIGZhbHNlIGF0IHRoaXMgcG9pbnQpLAorCSAqIEFsdGVyUHVibGljYXRpb25BbGxGbGFn cygpIHdpbGwgcGVyZm9ybSBhIGZ1bGwgaW52YWxpZGF0aW9uLCBzbyB3ZSBza2lwCisJICogaXQg aGVyZS4KIAkgKi8KLQlpbnZhbF9leGNlcHRfdGFibGUgPSAoYWx0ZXJfc3RtdCAhPSBOVUxMKSAm JiBwdWItPmFsbHRhYmxlcyAmJgotCQkoYWx0ZXJfc3RtdC0+Zm9yX2FsbF90YWJsZXMgJiYgcHJp LT5leGNlcHQpOworCWludmFsX2V4Y2VwdF90YWJsZSA9IChhbHRlcl9zdG10ICE9IE5VTEwpICYm IHByaS0+ZXhjZXB0ICYmCisJCShwdWItPmFsbHRhYmxlcworCQkgPyBhbHRlcl9zdG10LT5mb3Jf YWxsX3RhYmxlcworCQkgOiBpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQpKTsKIAogCWlmICgh cHJpLT5leGNlcHQgfHwgaW52YWxfZXhjZXB0X3RhYmxlKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKaW5kZXggNDVhOGE1YzNmNzEuLjU0MjU3OWRhZTg2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNzAsNiArNzAsMTMgQEAgc3RhdGlj IHZvaWQgUHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBt aXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQs IExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkJICBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9p ZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyB2b2lkIEFs dGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAorCQkJCQkJ CQkJSGVhcFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1haWRsaXN0LAorCQkJCQkJCQkJTGlzdCAqZXhj ZXB0X3B1YnRhYmxlcyk7CitzdGF0aWMgdm9pZCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0 VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAorCQkJCQkJCQkJCQkgICBIZWFwVHVw bGUgdHVwLAorCQkJCQkJCQkJCQkgICBMaXN0ICpleGNlcHRfcHVidGFibGVzLAorCQkJCQkJCQkJ CQkgICBMaXN0ICpzY2hlbWFpZGxpc3QpOwogc3RhdGljIGNoYXIgZGVmR2V0R2VuZXJhdGVkQ29s c09wdGlvbihEZWZFbGVtICpkZWYpOwogc3RhdGljIHZvaWQgQ2hlY2tFeGNlcHROb3RJblRhYmxl TGlzdChMaXN0ICpleGNlcHRfcmVscywgTGlzdCAqZXhwbGljaXRyZWxpZHMpOwogCkBAIC0xNTA5 LDcgKzE1MTYsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogICovCiBzdGF0aWMgdm9pZAogQWx0ZXJQdWJsaWNhdGlv blNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCi0JCQkJCQlIZWFwVHVwbGUgdHVw LCBMaXN0ICpzY2hlbWFpZGxpc3QpCisJCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFp ZGxpc3QsCisJCQkJCQlMaXN0ICpleGNlcHRfcHVidGFibGVzKQogewogCUZvcm1fcGdfcHVibGlj YXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApA QCAtMTU4Niw2ICsxNTk0LDg4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQkgKi8KIAkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0t Pm9pZCwgc2NoZW1haWRsaXN0LCB0cnVlLCBzdG10KTsKIAl9CisKKwkvKgorCSAqIEluY3JlbWVu dCB0aGUgY29tbWFuZCBjb3VudGVyIHNvIHRoYXQgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgaW4K KwkgKiBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKCkgY2FuIHNlZSB0aGUganVzdC1pbnNl cnRlZCBzY2hlbWEKKwkgKiByb3dzIHdoZW4gQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRh YmxlcyBydW5zIG5leHQuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3Rz IHx8IHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQorCQlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCisJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhzdG10LCB0dXAs IGV4Y2VwdF9wdWJ0YWJsZXMsIHNjaGVtYWlkbGlzdCk7Cit9CisKKy8qCisgKiBBbHRlciB0aGUg RVhDRVBUIGxpc3Qgb2YgYSBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb24uCisgKgorICogQWRkcywg cmVtb3Zlcywgb3IgcmVwbGFjZXMgZXhjZXB0LXRhYmxlIGVudHJpZXMgaW4gcGdfcHVibGljYXRp b25fcmVsCisgKiAocm93cyB3aXRoIHByZXhjZXB0ID0gdHJ1ZSkuICBUaGVzZSBlbnRyaWVzIHN1 cHByZXNzIHB1YmxpY2F0aW9uIG9mIHRoZQorICogbmFtZWQgdGFibGVzIHRoYXQgd291bGQgb3Ro ZXJ3aXNlIGJlIGNvdmVyZWQgYnkgYSBGT1IgVEFCTEVTIElOIFNDSEVNQQorICogY2xhdXNlLgor ICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKKwkJCQkJCQkgSGVhcFR1cGxlIHR1cCwgTGlzdCAqZXhj ZXB0X3B1YnRhYmxlcywKKwkJCQkJCQkgTGlzdCAqc2NoZW1haWRsaXN0KQoreworCUZvcm1fcGdf cHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVw KTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKKworCS8qCisJICogTm90aGluZyB0byBk byBpZiBubyBFWENFUFQgZW50cmllcy4KKwkgKi8KKwlpZiAoIWV4Y2VwdF9wdWJ0YWJsZXMpCisJ CXJldHVybjsKKworCS8qCisJICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIEVYQ0VQVCBlbnRyaWVz IGZvciBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb25zCisJICogb25seS4gIEZvciBGT1IgQUxMIFRB QkxFUyBwdWJsaWNhdGlvbnMsIEVYQ0VQVCBlbnRyaWVzIGFyZSBhbHJlYWR5CisJICogcHJvY2Vz c2VkIGJ5IEFsdGVyUHVibGljYXRpb25UYWJsZXMoKS4KKwkgKi8KKwlpZiAoc2NoZW1haWRsaXN0 ID09IE5JTCAmJiAhaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSkKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBEcm9wcGluZyBhIHNjaGVtYSBmcm9tIGEgcHVibGljYXRpb24gcmVtb3ZlcyBhbGwg aXRzIEVYQ0VQVCBlbnRyaWVzIHZpYQorCSAqIGNhc2NhZGUuIFRoZSBjb25jZXB0IG9mICJkcm9w IGFsbCBzY2hlbWEgdGFibGVzIGZyb20gdGhlIHB1YmxpY2F0aW9uCisJICogRVhDRVBUIHRoZXNl IG9uZXMiIGlzIG5vdCBzdXBwb3J0ZWQuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9E cm9wT2JqZWN0cykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3Vw cG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpKSk7CisKKwkvKgorCSAqIFhY WCBFWENFUFQgd2l0aCBTRVQgaXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZC4gIFdvcmthcm91 bmQ6IERST1AgYW5kCisJICogcmUtQUREIHRoZSBzY2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENF UFQgbGlzdC4KKwkgKi8KKwlpZiAoc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIFNFVCBp biBBTFRFUiBQVUJMSUNBVElPTiIpLAorCQkJCSBlcnJoaW50KCJEcm9wIGFuZCByZS1hZGQgdGhl IHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVkIEVYQ0VQVCBsaXN0LiIpKSk7CisKKwlpZiAoc3RtdC0+ YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCisJeworCQlMaXN0CSAgICpyZWxzOworCQlMaXN0CSAg ICpleHBsaWNpdHJlbGlkczsKKworCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFi bGVzKTsKKworCQlleHBsaWNpdHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlv bnMocHViaWQsCisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCS8q CisJCSAqIFZhbGlkYXRlIHRoYXQgZWFjaCBleGNsdWRlZCB0YWJsZSBpcyBub3QgYWxzbyBpbiB0 aGUgZXhwbGljaXQgdGFibGUKKwkJICogbGlzdCAod2hpY2ggd291bGQgYmUgY29udHJhZGljdG9y eSkuCisJCSAqLworCQlDaGVja0V4Y2VwdE5vdEluVGFibGVMaXN0KHJlbHMsIGV4cGxpY2l0cmVs aWRzKTsKKworCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQp OworCisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCX0KIH0KIAogLyoKQEAgLTE3OTUsMTAgKzE4 ODUsMTIgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlz dF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRfcHVidGFibGVzKTsKKwkJaWYgKHN0bXQtPmZvcl9h bGxfdGFibGVzKQorCQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRf cHVidGFibGVzKTsKKwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRp b25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklM KTsKLQkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOwor CQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCwgZXhjZXB0 X3B1YnRhYmxlcyk7CiAJCUFsdGVyUHVibGljYXRpb25BbGxGbGFncyhzdG10LCByZWwsIHR1cCk7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCBjNTY0MzdkNjA1Ny4uYzJiMmI4OGJiNmMgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtNTAxOSw2ICs1MDE5LDcgQEAgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCiAJUHVibGlj YXRpb25JbmZvICpwdWJpbmZvID0gcHVic2luZm8tPnB1YmxpY2F0aW9uOwogCVBRRXhwQnVmZmVy IHF1ZXJ5OwogCWNoYXIJICAgKnRhZzsKKwlib29sCQloYXNfZXhjZXB0ID0gZmFsc2U7CiAKIAkv KiBEbyBub3RoaW5nIGlmIG5vdCBkdW1waW5nIHNjaGVtYSAqLwogCWlmICghZG9wdC0+ZHVtcFNj aGVtYSkKQEAgLTUwMjksNyArNTAzMCwzNCBAQCBkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJj aGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25TY2hlbWFJbmZvICpwdWJzaW5mbykKIAlxdWVy eSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFM VEVSIFBVQkxJQ0FUSU9OICVzICIsIGZtdElkKHB1YmluZm8tPmRvYmoubmFtZSkpOwotCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUREIFRBQkxFUyBJTiBTQ0hFTUEgJXM7XG4iLCBmbXRJZChz Y2hlbWFpbmZvLT5kb2JqLm5hbWUpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBU QUJMRVMgSU4gU0NIRU1BICVzIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CisKKwkv KgorCSAqIEFwcGVuZCBFWENFUFQgY2xhdXNlIGZvciBhbnkgdGFibGVzIHRoYXQgYmVsb25nIHRv IHRoaXMgc2NoZW1hCisJICogYW5kIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4K KwkgKi8KKwlmb3IgKFNpbXBsZVB0ckxpc3RDZWxsICpjZWxsID0gcHViaW5mby0+ZXhjZXB0X3Rh Ymxlcy5oZWFkOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dCkKKwl7CisJCVRhYmxlSW5mbyAgKnRi aW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCWlmIChzdHJjbXAodGJpbmZvLT5k b2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLCBzY2hlbWFpbmZvLT5kb2JqLm5hbWUpID09IDApCisJ CXsKKwkJCWlmICghaGFzX2V4Y2VwdCkKKwkJCXsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiBFWENFUFQgKCIpOworCQkJCWhhc19leGNlcHQgPSB0cnVlOworCQkJfQorCQkJZWxz ZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKworCQkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksICJUQUJMRSBPTkxZICVzIiwgZm10SWQodGJpbmZvLT5kb2JqLm5hbWUp KTsKKwkJfQorCX0KKworCWlmIChoYXNfZXhjZXB0KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIikiKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiO1xuIik7CiAKIAkv KgogCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIGNyZWF0aW5nIGRyb3AgcXVlcnkgYXMgdGhlIGRy b3AgaXMgZG9uZSBieSBzY2hlbWEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9w Z19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggOTI1ODk0 OGI1ODMuLmQxOGIzYjBkN2I5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzI4Myw2 ICszMjgzLDMwIEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rp b25fcG9zdF9kYXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTEn ID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFU RSBQVUJMSUNBVElPTiBwdWIxMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBU IChUQUJMRSB0ZXN0X3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVC TElDQVRJT04gcHViMTEgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0 cnVuY2F0ZScpO1xFCisJCQkuKj8KKwkJCVxRQUxURVIgUFVCTElDQVRJT04gcHViMTEgQUREIFRB QkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoVEFCTEUgT05MWSB0ZXN0X3RhYmxlKTtc RQorCQkJL3htcywKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+ IDEsIH0sCisJfSwKKworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTInID0+IHsKKwkJY3JlYXRl X29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBw dWIxMiBGT1IgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0X3Rh YmxlLCBkdW1wX3Rlc3QudGVzdF9zZWNvbmRfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJ CQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBk YXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS4qPworCQkJXFFBTFRFUiBQVUJMSUNBVElP TiBwdWIxMiBBREQgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSBPTkxZ IHRlc3RfdGFibGUsIFRBQkxFIE9OTFkgdGVzdF9zZWNvbmRfdGFibGUpO1xFCisJCQkveG1zLAor CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAor CiAJJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAs CiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCmluZGV4IGMyMGJhMWQ4YzAxLi4yNzdhZTk3YWQ0MSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwpAQCAtMjM3Myw2ICsyMzczLDIzIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0 ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2No ZW1hcwogCQkJCQkJCQkgIiBBTkQgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAogCQkJ CQkJCQkgIkNVUlJFTlRfU0NIRU1BIik7CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2NoZW1hIG5hbWUg aW4gQUREIGNvbnRleHQsIG9mZmVyIEVYQ0VQVCAoIFRBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hl cygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4i LCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmCisJCQkgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQor CQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlND SEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQURE IiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJ CUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgIkNV UlJFTlRfU0NIRU1BIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhf UVVFUllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX2N1cnJlbnRfc2NoZW1h KTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi QUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwg IlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlD T01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9z Y2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQ VCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykp CisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VU ICggKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCBNYXRjaEFueU4sICJTRVQiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwgInB1 Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggNmVmZWQwYTBj Y2UuLmM0MGE4ODg0YThmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dApAQCAtNTkxLDEyICs1OTEsNDIgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhj ZXB0X25va3cKIEVSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfbm9wayIK IExJTkUgMjogICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1 Yl9ub3BrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBF WENFUFQgdGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVy X2V4Y2VwdDsKKy0tIGZhaWw6IG5vbi1leGlzdGluZyB0YWJsZSBpbiBFWENFUFQgY2xhdXNlCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsKK0VS Uk9SOiAgcmVsYXRpb24gInB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlIiBkb2VzIG5vdCBleGlz dAorLS0gZmFpbDogRVhDRVBUIHRhYmxlIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgc2NoZW1hCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0cHViX3RibDEpOworRVJST1I6ICB0 YWJsZSAicHVibGljLnRlc3RwdWJfdGJsMSIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxv bmcgdG8gc2NoZW1hICJwdWJfdGVzdCIKK0xJTkUgMTogLi4ueGNlcHQgQUREIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFp bDogVEFCTEUga2V5d29yZCBpcyByZXF1aXJlZCBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIEVYQ0VQ VCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKK0VSUk9SOiAgc3lu dGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfbm9wayIKK0xJTkUgMTogLi4ubHRlcl9leGNl cHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gQUREOiBxdWFsaWZpZWQgYW5kIHVucXVhbGlmaWVkIG5hbWVzOyB1bnF1YWxpZmll ZCBpcyBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVY Q0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHRlc3RwdWJfdGJsX3MyKTsKK1xk UnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1 bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0 IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisgICAgInB1 Yl90ZXN0LnRlc3RwdWJfdGJsX3MyIgorCiAtLSBDbGVhbnVwCiBSRVNFVCBjbGllbnRfbWluX21l c3NhZ2VzOwogRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3QudGVz dHB1Yl90YmxfczI7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgQ0FTQ0FE RTsKIERST1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKLURST1AgUFVCTElD QVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVz dHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVt YV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRf bXVsdGksIHRlc3RwdWJfYWx0ZXJfZXhjZXB0OwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVO Q0VTCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCAyZTc5ZTllNDExMi4uY2Q1ZWQwNmRjYWQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI5MCwxMiArMjkwLDMwIEBA IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9wYXJ0aXRpb24KIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CiAgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vcGspOwogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCB0ZXN0cyBmb3IgQUxURVIgUFVCTElDQVRJ T04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0OworCistLSBmYWlsOiBub24tZXhpc3Rp bmcgdGFibGUgaW4gRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRl cl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJf dGVzdC5ub25leGlzdGVudF90YWJsZSk7CisKKy0tIGZhaWw6IEVYQ0VQVCB0YWJsZSBiZWxvbmdz IHRvIGEgZGlmZmVyZW50IHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9l eGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMu dGVzdHB1Yl90YmwxKTsKKworLS0gZmFpbDogVEFCTEUga2V5d29yZCBpcyByZXF1aXJlZCBmb3Ig dGhlIGZpcnN0IGVudHJ5IGluIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVz dHB1Yl9ub3BrKTsKKworLS0gQUREOiBxdWFsaWZpZWQgYW5kIHVucXVhbGlmaWVkIG5hbWVzOyB1 bnF1YWxpZmllZCBpcyBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHRlc3RwdWJfdGJs X3MyKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisKIC0tIENsZWFudXAKIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBw dWJfdGVzdC50ZXN0cHViX3RibF9zMjsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0 ZWRfcyBDQVNDQURFOwogRFJPUCBUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3MxOwot RFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9l eGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGk7CitEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3RwdWJfc2No ZW1hX2V4Y2VwdF9tdWx0aSwgdGVzdHB1Yl9hbHRlcl9leGNlcHQ7CiAKIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9u cyB3aXRoIFNFUVVFTkNFUwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3 X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXgg MThjN2IyYzFmY2EuLjBiYTZkNmY4YmIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzdfZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNl cHQucGwKQEAgLTM0Nyw2ICszNDcsMzggQEAgaXMoJHJlc3VsdCwgcXEoNSksCiAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHNjaF9zdWIn KTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FU SU9OIHNjaF9wdWInKTsKIAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBBTFRFUiBQVUJMSUNBVElPTiBFWENFUFQgZm9yIFRBQkxFUyBJTiBTQ0hFTUEK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUcnVu Y2F0ZSBzdWJzY3JpYmVyIHRhYmxlcyB0byByZW1vdmUgZGF0YSBhY2N1bXVsYXRlZCBmcm9tIHBy ZXZpb3VzIHRlc3RzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ J1RSVU5DQVRFIHNjaDEudGFiX3B1Ymxpc2hlZCwgc2NoMS50YWJfZXhjbHVkZWQsIHNjaDEucGFy ZW50LCBzY2gxLmNoaWxkJyk7CisKKyMgQUREOiBhZGQgYSBzY2hlbWEgd2l0aCBhbiBleGNlcHRl ZCB0YWJsZTsgdmVyaWZ5IHRoZSBleGNlcHQgZW50cnkgdGFrZXMgZWZmZWN0LgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBQVUJMSUNBVElPTiBzY2hfcHVi Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJM SUNBVElPTiBzY2hfcHViIEFERCBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBz Y2gxLnRhYl9leGNsdWRlZCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2NoX3N1YiBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNjaF9wdWIiCispOworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1YicpOwor CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCIpOworaXMoJHJlc3VsdCwg cXEoNiksCisJJ0FMVEVSIC4uLiBBREQgVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IGluY2x1ZGVk IHRhYmxlIHN5bmNlZCcpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9leGNsdWRlZCIp OworaXMoJHJlc3VsdCwgcXEoMCksCisJJ0FMVEVSIC4uLiBBREQgVEFCTEVTIElOIFNDSEVNQSBF WENFUFQ6IGV4Y2x1ZGVkIHRhYmxlIG5vdCBzeW5jZWQnKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBzY2hf cHViJyk7CisKICMgQ2xlYW51cCBzY2hlbWEgdGFibGVzIGJlZm9yZSB0aGUgbXVsdGktcHVibGlj YXRpb24gc2VjdGlvbi4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdE Uk9QIFNDSEVNQSBzY2gxIENBU0NBREUnKTsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7Ci0tIAoyLjUwLjEgKEFwcGxl IEdpdC0xNTUpCgo= --0000000000000f0ef2065589db93 Content-Type: application/octet-stream; name="v17-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Disposition: attachment; filename="v17-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr1ws94k2 RnJvbSBmYjE1OTliNzkwOTMzZWM5ZTM4MzZmMTRhMTg5ZmM1MTQ4ZGI1Y2ZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUaHUsIDE4IEp1biAyMDI2IDExOjMyOjMyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MTcgMy8zXSBBZGQgRVhDRVBUIHN1cHBvcnQgdG8gQUxURVIgUFVCTElDQVRJT04gU0VUIFRBQkxF UyBJTgogU0NIRU1BCgpFeHRlbmQgQWx0ZXJQdWJsaWNhdGlvbkV4Y2VwdFRhYmxlcygpIHdpdGgg dGhlIEFQX1NldE9iamVjdHMgY2FzZSwKd2hpY2ggcmVkZWZpbmVzIHRoZSBwdWJsaWNhdGlvbiBh bmQgcmVwbGFjZXMgdGhlIGVudGlyZSBFWENFUFQgbGlzdC4KClN5bnRheDoKQUxURVIgUFVCTElD QVRJT04gcHViIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHMgRVhDRVBUIChUQUJMRSB0MSk7CgpUaGlz IHBhdGNoIGFsc28gY2xlYW5zIHVwIEVYQ0VQVCBlbnRyaWVzIHdoZW4gYSBzY2hlbWEgaXMgZHJv cHBlZApmcm9tIHRoZSBwdWJsaWNhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYyAgICB8IDE3MCArKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNyArKysKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgMTAzICsrKysrKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgIHwgIDQ0ICsrKysrKwogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCAgICAgfCAgODUgKysrKysrKysrKysKIDUgZmls ZXMgY2hhbmdlZCwgMzk0IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggNTQyNTc5ZGFlODYuLjAwZjhkMDAzNzc5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNjYsNyArNjYsOCBA QCBzdGF0aWMgdm9pZCBDbG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKTsKIHN0YXRpYyB2b2lkIExv Y2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25B ZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCiAJCQkJ CQkJCSBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlv bkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOworc3Rh dGljIHZvaWQgUHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9v bCBtaXNzaW5nX29rLAorCQkJCQkJCQkgIGJvb2wgZGVsZXRlX2V4Y2x1ZGVkKTsKIHN0YXRpYyB2 b2lkIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wg aWZfbm90X2V4aXN0cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBz dGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1h cywgYm9vbCBtaXNzaW5nX29rKTsKQEAgLTEzNjAsNyArMTM2MSw3IEBAIEFsdGVyUHVibGljYXRp b25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCVB1 YmxpY2F0aW9uQWRkVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CiAJfQogCWVsc2Ug aWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKLQkJUHVibGljYXRpb25Ecm9wVGFi bGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CisJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwg cmVscywgZmFsc2UsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAqLwogCXsK IAkJTGlzdAkgICAqb2xkcmVsaWRzID0gTklMOwpAQCAtMTQ5NSw3ICsxNDk2LDcgQEAgQWx0ZXJQ dWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1 cCwKIAkJfQogCiAJCS8qIEFuZCBkcm9wIHRoZW0uICovCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxl cyhwdWJpZCwgZGVscmVscywgdHJ1ZSk7CisJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwg ZGVscmVscywgdHJ1ZSwgdHJ1ZSk7CiAKIAkJLyoKIAkJICogRG9uJ3QgYm90aGVyIGNhbGN1bGF0 aW5nIHRoZSBkaWZmZXJlbmNlIGZvciBhZGRpbmcsIHdlJ2xsIGNhdGNoIGFuZApAQCAtMTU5Nyw4 ICsxNTk4LDggQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsCiAKIAkvKgogCSAqIEluY3JlbWVudCB0aGUgY29tbWFuZCBjb3VudGVyIHNvIHRoYXQg aXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgaW4KLQkgKiBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFi bGVzKCkgY2FuIHNlZSB0aGUganVzdC1pbnNlcnRlZCBzY2hlbWEKLQkgKiByb3dzIHdoZW4gQWx0 ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyBydW5zIG5leHQuCisJICogR2V0RXhjbHVk ZWRQdWJsaWNhdGlvblRhYmxlcygpIGNhbiBzZWUgdGhlIGp1c3QtaW5zZXJ0ZWQgc2NoZW1hIHJv d3MKKwkgKiB3aGVuIEFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMgcnVucyBuZXh0 LgogCSAqLwogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cyB8fCBzdG10LT5hY3Rp b24gPT0gQVBfU2V0T2JqZWN0cykKIAkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKQEAgLTE2 MTYsMTYgKzE2MTcsMTggQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsCiAgKi8KIHN0YXRpYyB2b2lkCiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhj ZXB0VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAotCQkJCQkJCSBIZWFwVHVwbGUg dHVwLCBMaXN0ICpleGNlcHRfcHVidGFibGVzLAotCQkJCQkJCSBMaXN0ICpzY2hlbWFpZGxpc3Qp CisJCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIExpc3QgKmV4Y2VwdF9wdWJ0YWJsZXMsCisJCQkJ CQkJCSAgIExpc3QgKnNjaGVtYWlkbGlzdCkKIHsKIAlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZv cm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CiAJT2lkCQkJcHViaWQg PSBwdWJmb3JtLT5vaWQ7CiAKIAkvKgotCSAqIE5vdGhpbmcgdG8gZG8gaWYgbm8gRVhDRVBUIGVu dHJpZXMuCisJICogTm90aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gRVhDRVBUIGVudHJpZXMs IHVubGVzcyBoYW5kbGluZyB0aGUgU0VUCisJICogY29tbWFuZCwgYmVjYXVzZSBpZiB0aGUgdXNl ciBoYXMgcmVtb3ZlZCBhbGwgZXhjZXB0aW9ucyB3ZSBuZWVkIHRvIGRyb3AKKwkgKiBhbnkgZXhp c3Rpbmcgb25lcy4KIAkgKi8KLQlpZiAoIWV4Y2VwdF9wdWJ0YWJsZXMpCisJaWYgKCFleGNlcHRf cHVidGFibGVzICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAK IAkvKgpAQCAtMTY0NiwxNiArMTY0OSw2IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRU YWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90 IHN1cHBvcnRlZCB3aXRoIERST1AgaW4gQUxURVIgUFVCTElDQVRJT04iKSkpOwogCi0JLyoKLQkg KiBYWFggRVhDRVBUIHdpdGggU0VUIGlzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQuICBXb3Jr YXJvdW5kOiBEUk9QIGFuZAotCSAqIHJlLUFERCB0aGUgc2NoZW1hIHdpdGggdGhlIGRlc2lyZWQg RVhDRVBUIGxpc3QuCi0JICovCi0JaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQot CQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKLQkJCQkgZXJybXNnKCJFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBT RVQgaW4gQUxURVIgUFVCTElDQVRJT04iKSwKLQkJCQkgZXJyaGludCgiRHJvcCBhbmQgcmUtYWRk IHRoZSBzY2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENFUFQgbGlzdC4iKSkpOwotCiAJaWYgKHN0 bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKIAkJTGlzdAkgICAqcmVsczsKQEAgLTE2 NzQsNiArMTY2Nyw3NSBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0VGFibGVzKEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10LAogCiAJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1YmlkLCBy ZWxzLCBmYWxzZSwgc3RtdCk7CiAKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJfQorCWVsc2UJ CQkJCQkvKiBBUF9TZXRPYmplY3RzICovCisJeworCQlMaXN0CSAgICpvbGRleGNlcHRyZWxpZHMg PSBOSUw7CisJCUxpc3QJICAgKm5ld2V4Y2VwdHJlbGlkcyA9IE5JTDsKKwkJTGlzdAkgICAqZGVs cmVsaWRzID0gTklMOworCQlMaXN0CSAgICpyZWxzOworCQlMaXN0CSAgICpleHBsaWNpdHJlbGlk czsKKworCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFibGVzKTsKKworCQkvKiBD b2xsZWN0IE9JRHMgb2YgdGhlIGRlc2lyZWQgbmV3IEVYQ0VQVCBsaXN0LiAqLworCQlmb3JlYWNo X3B0cihQdWJsaWNhdGlvblJlbEluZm8sIHByaSwgcmVscykKKwkJCW5ld2V4Y2VwdHJlbGlkcyA9 IGxhcHBlbmRfb2lkKG5ld2V4Y2VwdHJlbGlkcywKKwkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs aWQocHJpLT5yZWxhdGlvbikpOworCisJCWV4cGxpY2l0cmVsaWRzID0gR2V0SW5jbHVkZWRQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRf Uk9PVCk7CisKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhhdCBlYWNoIGV4Y2x1ZGVkIHRhYmxlIGlz IG5vdCBhbHNvIGluIHRoZSBleHBsaWNpdCB0YWJsZQorCQkgKiBsaXN0ICh3aGljaCB3b3VsZCBi ZSBjb250cmFkaWN0b3J5KS4KKwkJICovCisJCUNoZWNrRXhjZXB0Tm90SW5UYWJsZUxpc3QocmVs cywgZXhwbGljaXRyZWxpZHMpOworCisJCS8qCisJCSAqIEdldCB0aGUgY3VycmVudCBzZXQgb2Yg RVhDRVBUIGVudHJpZXMuICBPbmx5IEZPUiBBTEwgVEFCTEVTIGFuZAorCQkgKiBzY2hlbWEtbGV2 ZWwgcHVibGljYXRpb25zIGNhbiBoYXZlIEVYQ0VQVCBlbnRyaWVzOyBmb3IgYW55IG90aGVyCisJ CSAqIHB1YmxpY2F0aW9uIHR5cGUgb2xkZXhjZXB0cmVsaWRzIHN0YXlzIE5JTC4KKwkJICoKKwkJ ICogTm90ZTogd2UgY2hlY2sgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgYWdhaW5zdCB0aGUgY3Vy cmVudCBjYXRhbG9nCisJCSAqIHN0YXRlIChiZWZvcmUgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMg aGFzIHJ1biksIHNvIGlmIHRoZSBjYWxsZXIgaXMKKwkJICogZG9pbmcgU0VUIFRBQkxFIHQxIHRv IGNvbnZlcnQgYSBzY2hlbWEgcHVibGljYXRpb24gaW50byBhIHBsYWluCisJCSAqIHRhYmxlIHB1 YmxpY2F0aW9uLCBpc19zY2hlbWFfcHVibGljYXRpb24oKSBzdGlsbCByZXR1cm5zIHRydWUgaGVy ZS4KKwkJICogVGhhdCBpcyBpbnRlbnRpb25hbDogaXQgbGV0cyB1cyBkaXNjb3ZlciBhbmQgY2xl YW4gdXAgYW55IHN0YWxlCisJCSAqIEVYQ0VQVCBlbnRyaWVzIHRoYXQgYmVsb25nIHRvIHRoZSBv bGQgc2NoZW1hIGRlZmluaXRpb24uCisJCSAqLworCQlpZiAoR2V0UHVibGljYXRpb24ocHViaWQp LT5hbGx0YWJsZXMgfHwgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSkKKwkJCW9sZGV4Y2Vw dHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsCisJCQkJCQkJCQkJ CQkJCSAgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisKKwkJLyogQnVpbGQgYSBsaXN0IG9mIG9s ZCBFWENFUFQgZW50cmllcyBub3QgcHJlc2VudCBpbiB0aGUgbmV3IGxpc3QuICovCisJCWZvcmVh Y2hfb2lkKG9sZHJlbGlkLCBvbGRleGNlcHRyZWxpZHMpCisJCXsKKwkJCWlmICghbGlzdF9tZW1i ZXJfb2lkKG5ld2V4Y2VwdHJlbGlkcywgb2xkcmVsaWQpKQorCQkJCWRlbHJlbGlkcyA9IGxhcHBl bmRfb2lkKGRlbHJlbGlkcywgb2xkcmVsaWQpOworCQl9CisKKwkJLyogRHJvcCBvbGQgRVhDRVBU IGVudHJpZXMgbm90IHByZXNlbnQgaW4gdGhlIG5ldyBsaXN0LiAqLworCQlmb3JlYWNoX29pZChy ZWxpZCwgZGVscmVsaWRzKQorCQl7CisJCQlPaWQJCQlwcm9pZDsKKwkJCU9iamVjdEFkZHJlc3Mg b2JqOworCisJCQlwcm9pZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJ CQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX29pZCwKKwkJCQkJCQkJCU9iamVjdElkR2V0 RGF0dW0ocmVsaWQpLAorCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCQkJaWYg KE9pZElzVmFsaWQocHJvaWQpKQorCQkJeworCQkJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJs aWNhdGlvblJlbFJlbGF0aW9uSWQsIHByb2lkKTsKKwkJCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwg RFJPUF9DQVNDQURFLCAwKTsKKwkJCX0KKwkJfQorCisJCS8qIEFkZCBuZXcgRVhDRVBUIGVudHJp ZXMsIHNraXBwaW5nIGFueSBhbHJlYWR5IHByZXNlbnQuICovCisJCVB1YmxpY2F0aW9uQWRkVGFi bGVzKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10KTsKKwogCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsK IAl9CiB9CkBAIC0yMjk3LDI5ICsyMzU5LDU0IEBAIFB1YmxpY2F0aW9uQWRkVGFibGVzKE9pZCBw dWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCiAvKgogICogUmVtb3ZlIGxp c3RlZCB0YWJsZXMgZnJvbSB0aGUgcHVibGljYXRpb24uCisgKgorICogZGVsZXRlX2V4Y2x1ZGVk IGNvbnRyb2xzIGhvdyBFWENFUFQgKHByZXhjZXB0PXRydWUpIHJvd3MgYXJlIGhhbmRsZWQ6Cisg KiAgIHRydWUgIC0gZGVsZXRlIHRoZW0gc2lsZW50bHkuICBVc2VkIGJ5IHRoZSBTRVQgcGF0aCB0 byBjbGVhciBzdGFsZQorICogICAgICAgICAgIEVYQ0VQVCByb3dzIHRoYXQgYXJlIGJlaW5nIHJl cGxhY2VkIGJ5IGEgbmV3IEVYQ0VQVCBsaXN0LgorICogICBmYWxzZSAtIHRyZWF0IHRoZW0gYXMg Im5vdCBhIG1lbWJlciIuIFVzZWQgYnkgQUxURVIgLi4uIERST1AgVEFCTEU6IGFuCisgKiAgICAg ICAgICAgRVhDRVBUIGVudHJ5IGlzIG5vdCBzb21ldGhpbmcgRFJPUCBUQUJMRSBpcyBleHBlY3Rl ZCB0byByZW1vdmUuCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lk IHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spCitQdWJsaWNhdGlvbkRyb3BUYWJs ZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2ssCisJCQkJCSAgYm9vbCBk ZWxldGVfZXhjbHVkZWQpCiB7CiAJT2JqZWN0QWRkcmVzcyBvYmo7CiAJTGlzdENlbGwgICAqbGM7 Ci0JT2lkCQkJcHJpZDsKIAogCWZvcmVhY2gobGMsIHJlbHMpCiAJewogCQlQdWJsaWNhdGlvblJl bEluZm8gKnB1YnJlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0KGxjKTsKIAkJUmVs YXRpb24JcmVsID0gcHVicmVsLT5yZWxhdGlvbjsKIAkJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHJlbCk7CisJCUhlYXBUdXBsZQl0dXA7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVs IHB1YnJlbGZvcm07CisJCU9pZAkJCXByaWQgPSBJbnZhbGlkT2lkOworCQlib29sCQlpc19leGNl cHQgPSBmYWxzZTsKIAogCQlpZiAocHVicmVsLT5jb2x1bW5zKQogCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJCWVycm1zZygiY29sdW1u IGxpc3QgbXVzdCBub3QgYmUgc3BlY2lmaWVkIGluIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBEUk9Q IikpOwogCi0JCXByaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05SRUxNQVAsIEFudW1f cGdfcHVibGljYXRpb25fcmVsX29pZCwKLQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHJlbGlk KSwKLQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7Ci0JCWlmICghT2lkSXNWYWxp ZChwcmlkKSkKKwkJdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJ CQkJCSAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVt KHB1YmlkKSk7CisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCXsKKwkJCXB1YnJlbGZv cm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQkJaXNfZXhj ZXB0ID0gcHVicmVsZm9ybS0+cHJleGNlcHQ7CisJCQlwcmlkID0gcHVicmVsZm9ybS0+b2lkOwor CQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCX0KKworCQkvKgorCQkgKiBEUk9QIFRBQkxFIG9w ZXJhdGVzIG9ubHkgb24gcmVndWxhciBtZW1iZXIgcm93cy4gIEEgbWlzc2luZyByb3cKKwkJICog b3IgYW4gRVhDRVBUIHJvdyBib3RoIG1lYW4gIm5vdCBhIG1lbWJlciIgZnJvbSB0aGUgdXNlcidz CisJCSAqIHBlcnNwZWN0aXZlLCBzbyB3ZSB0cmVhdCB0aGVtIHRoZSBzYW1lIHdheS4gIFRoZSBT RVQtY2xlYW51cAorCQkgKiBjYWxsZXIgKGRlbGV0ZV9leGNsdWRlZCA9IHRydWUpIGludGVuZHMg dG8gcmVtb3ZlIEVYQ0VQVCByb3dzCisJCSAqIGFuZCBzbyBieXBhc3NlcyB0aGUgRVhDRVBUIGhh bGYgb2YgdGhpcyBjaGVjay4KKwkJICovCisJCWlmICghT2lkSXNWYWxpZChwcmlkKSB8fCAoaXNf ZXhjZXB0ICYmICFkZWxldGVfZXhjbHVkZWQpKQogCQl7CiAJCQlpZiAobWlzc2luZ19vaykKIAkJ CQljb250aW51ZTsKQEAgLTIzNzksNiArMjQ2Niw3IEBAIFB1YmxpY2F0aW9uRHJvcFNjaGVtYXMo T2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2spCiAJZm9yZWFjaChsYywg c2NoZW1hcykKIAl7CiAJCU9pZAkJCXNjaGVtYWlkID0gbGZpcnN0X29pZChsYyk7CisJCUxpc3QJ ICAgKmV4Y2VwdF9yZWxpZHM7CiAKIAkJcHNpZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElP Tk5BTUVTUEFDRU1BUCwKIAkJCQkJCQkgICBBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9v aWQsCkBAIC0yMzk1LDggKzI0ODMsNDAgQEAgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHVi aWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAkJCQkJCQlnZXRfbmFtZXNwYWNl X25hbWUoc2NoZW1haWQpKSkpOwogCQl9CiAKKwkJLyoKKwkJICogQ29sbGVjdCBFWENFUFQgZW50 cmllcyBmb3IgdGFibGVzIGJlbG9uZ2luZyB0byB0aGlzIHNjaGVtYSBiZWZvcmUKKwkJICogcmVt b3ZpbmcgdGhlIHNjaGVtYSBlbnRyeS4KKwkJICovCisJCWV4Y2VwdF9yZWxpZHMgPSBHZXRFeGNs dWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCiAJ CU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvbk5hbWVzcGFjZVJlbGF0aW9uSWQsIHBz aWQpOwogCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURFLCAwKTsKKworCQkvKgor CQkgKiBEcm9wIGFueSBwcmV4Y2VwdCByb3dzIGZvciB0YWJsZXMgYmVsb25naW5nIHRvIHRoaXMg c2NoZW1hLiBUaGVzZQorCQkgKiByb3dzIGhhdmUgbm8gcGdfZGVwZW5kIGVudHJ5IHBvaW50aW5n IGF0IHRoZQorCQkgKiBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Ugcm93LCBzbyB0aGV5IGFyZSBu b3QgY2FzY2FkZWQgYnkgdGhlCisJCSAqIHBlcmZvcm1EZWxldGlvbigpIGNhbGwgYWJvdmUgYW5k IG11c3QgYmUgY2xlYW5lZCB1cCBleHBsaWNpdGx5LgorCQkgKi8KKwkJZm9yZWFjaF9vaWQocmVs aWQsIGV4Y2VwdF9yZWxpZHMpCisJCXsKKwkJCU9pZAkJCXByb2lkOworCisJCQlpZiAoZ2V0X3Jl bF9uYW1lc3BhY2UocmVsaWQpICE9IHNjaGVtYWlkKQorCQkJCWNvbnRpbnVlOworCisJCQlwcm9p ZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJCUFudW1fcGdf cHVibGljYXRpb25fcmVsX29pZCwKKwkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAor CQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCQkJaWYgKE9pZElzVmFsaWQocHJv aWQpKQorCQkJeworCQkJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0 aW9uSWQsIHByb2lkKTsKKwkJCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURFLCAw KTsKKwkJCX0KKwkJfQorCisJCWxpc3RfZnJlZShleGNlcHRfcmVsaWRzKTsKIAl9CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwppbmRleCAyNzdhZTk3YWQ0MS4uYjc4NDE1MDM1NzMgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKQEAgLTIzOTAsNiArMjM5MCwyMyBAQCBtYXRjaF9wcmV2aW91c193b3Jk cyhpbnQgcGF0dGVybl9pZCwKIAl9CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hB bnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2 X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCIpIik7CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2No ZW1hIG5hbWUgaW4gU0VUIGNvbnRleHQsIG9mZmVyIEVYQ0VQVCAoIFRBQkxFICovCisJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJUQUJM RVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmCisJCQkgIWVuZHNfd2l0aChwcmV2X3dk LCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBUQUJMRSIpOworCWVsc2UgaWYgKE1h dGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwg IklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIigg VEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIs ICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NI RU1BIiwgIkNVUlJFTlRfU0NIRU1BIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJCUNPTVBM RVRFX1dJVEhfUVVFUllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX2N1cnJl bnRfc2NoZW1hKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQ VCIsICIoIiwgIlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRf d2QpOworCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlc19pbl9zY2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFu eSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZf d2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8 bmFtZT4gU0VUICggKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCBNYXRjaEFueU4sICJTRVQiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJwdWJs aXNoIiwgInB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QiKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRp b24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXgg YzQwYTg4ODRhOGYuLjZiZTViMTYzZDk5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dApAQCAtNjIxLDYgKzYyMSwxMDkgQEAgRXhjZXB0IHRhYmxlczoKICAgICAi cHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyIgog CistLSBTRVQ6IHJlcGxhY2UgdGhlIGV4Y2VwdCBsaXN0IChrZWVwIHNhbWUgc2NoZW1hLCBkaWZm ZXJlbnQgZXhjZXB0IHRhYmxlKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNl cHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50 ZXN0cHViX3RibF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hl bWFzOgorICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3Rw dWJfdGJsX3MyIgorCistLSBmYWlsOiB0YWJsZSBpbiBFWENFUFQgY2xhdXNlIGFsc28gYXBwZWFy cyBpbiB0aGUgZXhwbGljaXQgdGFibGUgbGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9h bHRlcl9leGNlcHQgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOwor RVJST1I6ICB0YWJsZSAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiIGNhbm5vdCBhcHBlYXIgaW4g Ym90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhlIEVYQ0VQVCBjbGF1c2UKKy0tIGVycm9yOiBleGNl cHQgdGFibGUncyBzY2hlbWEgKHB1YmxpYykgbm90IGluIHRoZSBwdWJsaWNhdGlvbidzIHNjaGVt YSBsaXN0IChwdWJfdGVzdCkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3Rw dWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIiBpbiBFWENFUFQg Y2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgInB1Yl90ZXN0IgorTElORSAxOiAuLi54 Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50 ZXMuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBTRVQ6IHVucXVhbGlmaWVkIG5hbWUgaW4gRVhDRVBUIGlzIGltcGxp Y2l0bHkgcXVhbGlmaWVkIHdpdGggdGhlIHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJM RSB0ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBz Y2hlbWFzOgorICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRl c3RwdWJfdGJsX3MxIgorCistLSBTRVQgd2l0aG91dCBFWENFUFQgY2xlYXJzIHRoZSBleGlzdGlu ZyBleGNlcHQgbGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VU IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJs ZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKKworLS0gU0VUIHRvIGEgZGlmZmVyZW50 IHNjaGVtYSByZW1vdmVzIG9sZCBzY2hlbWEncyBFWENFUFQgZW50cmllcworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibF9zMSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CitcZFJwKyB0ZXN0cHVi X2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSBy b290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYg ICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJsaWMiCisKKy0tIGZhaWw6 IG5vbmV4aXN0ZW50IHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UgKFNFVCBwYXRoKQorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rl c3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSk7CitFUlJPUjogIHJl bGF0aW9uICJwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSIgZG9lcyBub3QgZXhpc3QKKy0tIFNF VDogbXVsdGlwbGUgc2NoZW1hcyBlYWNoIHdpdGggdGhlaXIgb3duIEVYQ0VQVCBjbGF1c2UKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHB1YmxpYyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHVi X2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSBy b290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYg ICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKKyAgICAicHVi bGljIgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisgICAg InB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIGVycm9yOiBBTFRFUiBQVUJMSUNBVElPTiAuLi4g RFJPUCBUQUJMRSBvbiBhbiBleGNsdWRlZCB0YWJsZSBpcyByZWplY3RlZAorLS0gd2l0aCAibm90 IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIiDigJQgYW4gRVhDRVBUIGVudHJ5IGlzIG5vdCBhIG1l bWJlci4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczE7CitFUlJPUjogIHJlbGF0aW9uICJ0ZXN0cHViX3RibF9z MSIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCistLSB0aGUgRVhDRVBUIGVudHJ5IGlz IHN0aWxsIHByZXNlbnQgYWZ0ZXIgdGhlIHJlamVjdGVkIERST1AgVEFCTEUKK1xkUnArIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorICAgICJw dWJsaWMiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKyAg ICAicHVibGljLnRlc3RwdWJfdGJsMSIKKworLS0gZXJyb3I6IEVYQ0VQVCBpcyBub3QgYWxsb3dl ZCB3aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1Ag VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf dGJsX3MyKTsKK0VSUk9SOiAgRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRFJP UCBpbiBBTFRFUiBQVUJMSUNBVElPTgorLS0gRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHJlbW92ZXMg YXNzb2NpYXRlZCBFWENFUFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRl cl9leGNlcHQgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9h bHRlcl9leGNlcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9v dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAg ICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHVibGljIgorRXhjZXB0IHRhYmxl czoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKwogLS0gQ2xlYW51cAogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVi bGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4 IGNkNWVkMDZkY2FkLi5mNjg0ZTc1ZDZmNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9u LnNxbApAQCAtMzA4LDYgKzMwOCw1MCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVy X2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlcwogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgdGVzdHB1Yl90Ymxf czIpOwogXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKIAorLS0gU0VUOiByZXBsYWNlIHRoZSBl eGNlcHQgbGlzdCAoa2VlcCBzYW1lIHNjaGVtYSwgZGlmZmVyZW50IGV4Y2VwdCB0YWJsZSkKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIpOworXGRScCsg dGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZmFpbDogdGFibGUgaW4gRVhDRVBUIGNsYXVzZSBh bHNvIGFwcGVhcnMgaW4gdGhlIGV4cGxpY2l0IHRhYmxlIGxpc3QKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf dGJsX3MxKTsKKworLS0gZXJyb3I6IGV4Y2VwdCB0YWJsZSdzIHNjaGVtYSAocHVibGljKSBub3Qg aW4gdGhlIHB1YmxpY2F0aW9uJ3Mgc2NoZW1hIGxpc3QgKHB1Yl90ZXN0KQorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKKworLS0gU0VUOiB1bnF1YWxpZmll ZCBuYW1lIGluIEVYQ0VQVCBpcyBpbXBsaWNpdGx5IHF1YWxpZmllZCB3aXRoIHRoZSBzY2hlbWEK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVzdHB1 Yl9hbHRlcl9leGNlcHQKKworLS0gU0VUIHdpdGhvdXQgRVhDRVBUIGNsZWFycyB0aGUgZXhpc3Rp bmcgZXhjZXB0IGxpc3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNF VCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQK KworLS0gU0VUIHRvIGEgZGlmZmVyZW50IHNjaGVtYSByZW1vdmVzIG9sZCBzY2hlbWEncyBFWENF UFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibF9zMSk7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVN QSBwdWJsaWM7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCistLSBmYWlsOiBub25leGlz dGVudCB0YWJsZSBpbiBFWENFUFQgY2xhdXNlIChTRVQgcGF0aCkKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQ VCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUpOworCistLSBTRVQ6IG11bHRpcGxl IHNjaGVtYXMgZWFjaCB3aXRoIHRoZWlyIG93biBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs aWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNl cHQKKworLS0gZXJyb3I6IEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBEUk9QIFRBQkxFIG9uIGFuIGV4 Y2x1ZGVkIHRhYmxlIGlzIHJlamVjdGVkCistLSB3aXRoICJub3QgcGFydCBvZiB0aGUgcHVibGlj YXRpb24iIOKAlCBhbiBFWENFUFQgZW50cnkgaXMgbm90IGEgbWVtYmVyLgorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMTsKKy0tIHRoZSBFWENFUFQgZW50cnkgaXMgc3RpbGwgcHJlc2VudCBhZnRlciB0aGUgcmVq ZWN0ZWQgRFJPUCBUQUJMRQorXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZXJyb3I6 IEVYQ0VQVCBpcyBub3QgYWxsb3dlZCB3aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKKworLS0gRFJPUCBUQUJMRVMgSU4gU0NIRU1B IHJlbW92ZXMgYXNzb2NpYXRlZCBFWENFUFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsg dGVzdHB1Yl9hbHRlcl9leGNlcHQKKwogLS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3Rw dWJfdGJsX3MyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2Vw dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggMGJhNmQ2 ZjhiYjIuLjAxZWFmYjViN2M4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzdfZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwK QEAgLTM3Niw2ICszNzYsNjEgQEAgJHJlc3VsdCA9CiBpcygkcmVzdWx0LCBxcSgwKSwKIAknQUxU RVIgLi4uIEFERCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogZXhjbHVkZWQgdGFibGUgbm90IHN5 bmNlZCcpOwogCisjIFNFVDogcmVwbGFjZSB0aGUgZXhjZXB0IGxpc3Q7IHRhYl9leGNsdWRlZCBp cyBub3cgaW5jbHVkZWQgYW5kIHRhYl9wdWJsaXNoZWQgaXMgZXhjbHVkZWQuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiBzY2hfcHVi IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBzY2gxLnRhYl9wdWJsaXNo ZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBTVUJTQ1JJUFRJT04gc2NoX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hf c3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAor CUlOU0VSVCBJTlRPIHNjaDEudGFiX3B1Ymxpc2hlZCBWQUxVRVMgKDcpOworCUlOU0VSVCBJTlRP IHNjaDEudGFiX2V4Y2x1ZGVkIFZBTFVFUyAoNyk7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFi X2V4Y2x1ZGVkIFdIRVJFIGEgPSA3Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4u IFNFVCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogbmV3bHkgaW5jbHVkZWQgdGFibGUgaXMgcmVw bGljYXRlZCcKKyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCBXSEVS RSBhID0gNyIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ0FMVEVSIC4uLiBTRVQgVEFCTEVTIElO IFNDSEVNQSBFWENFUFQ6IG5vdy1leGNsdWRlZCB0YWJsZSBpcyBub3QgcmVwbGljYXRlZCcKKyk7 CisKKyMgU0VUIHdpdGhvdXQgRVhDRVBUOiBjbGVhcnMgdGhlIGV4Y2VwdCBsaXN0OyBib3RoIHRh YmxlcyBhcmUgbm93IHB1Ymxpc2hlZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHNjaF9wdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEg c2NoMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiBzY2hfc3ViIFJFRlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9z dWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ SU5TRVJUIElOVE8gc2NoMS50YWJfcHVibGlzaGVkIFZBTFVFUyAoOCk7CisJSU5TRVJUIElOVE8g c2NoMS50YWJfZXhjbHVkZWQgVkFMVUVTICg4KTsKKykpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJf cHVibGlzaGVkIFdIRVJFIGEgPSA4Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4u IFNFVCBUQUJMRVMgSU4gU0NIRU1BIChubyBFWENFUFQpOiB0YWJfcHVibGlzaGVkIHJlcGxpY2F0 ZWQgYWZ0ZXIgZXhjZXB0IGxpc3QgY2xlYXJlZCcKKyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNj aDEudGFiX2V4Y2x1ZGVkIFdIRVJFIGEgPSA4Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxU RVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIChubyBFWENFUFQpOiB0YWJfZXhjbHVkZWQgcmVw bGljYXRlZCBhZnRlciBleGNlcHQgbGlzdCBjbGVhcmVkJworKTsKKwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7CiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBz Y2hfcHViJyk7CiAKQEAgLTQ0Myw2ICs0OTgsMzYgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7CiAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMScp OwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJ T04gdGFwX3B1YjInKTsKIAorIyBPSyB3aGVuIGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgYSBUQUJM RVMgSU4gU0NIRU1BIEVYQ0VQVCBwdWJsaWNhdGlvbiwKKyMgYnV0IGlzIGluY2x1ZGVkIGJ5IGFu b3RoZXIgcHVibGljYXRpb24uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnVFJVTkNBVEUgdGFiMScpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdUUlVOQ0FURSB0YWIxJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMSBGT1IgVEFCTEVTIElO IFNDSEVNQSBwdWJsaWMgRVhDRVBUIChUQUJMRSBwdWJsaWMudGFiMSk7CisJQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRhcF9wdWIyIEZPUiBUQUJMRSB0YWIxOworCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVT KDEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJ Q0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKElOU0VSVCBJTlRPIHRhYjEgVkFM VUVTKDIpKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWInKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUICogRlJPTSB0YWIxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwK KwkiVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IHRhYmxlIGV4Y2x1ZGVkIGluIHNjaGVtYSBwdWIg YnV0IGluY2x1ZGVkIGJ5IGFub3RoZXIgcHViIGlzIHJlcGxpY2F0ZWQiCispOworCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9z dWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJ Q0FUSU9OIHRhcF9wdWIxJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMicpOworCiAkbm9kZV9wdWJsaXNoZXItPnN0b3Ao J2Zhc3QnKTsKIAogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000000f0ef2065589db93--