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 1wTBNL-000MtI-3D for pgsql-hackers@arkaria.postgresql.org; Sat, 30 May 2026 04:32:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wTBNK-005MoG-0l for pgsql-hackers@arkaria.postgresql.org; Sat, 30 May 2026 04:32:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wTBNJ-005Mo5-0G for pgsql-hackers@lists.postgresql.org; Sat, 30 May 2026 04:32:42 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wTBNG-00000000Ds2-2AZu for pgsql-hackers@lists.postgresql.org; Sat, 30 May 2026 04:32:40 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-39661f81eacso7207071fa.0 for ; Fri, 29 May 2026 21:32:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780115556; cv=none; d=google.com; s=arc-20240605; b=CMhT8T83yICaD/OPlFjomccQ6Pdc1S1j6Qz4pSPToPVe0KFXBAxGEyjBWGrRxUFqeW +jHH6cVIsfp4XqWFsZ+yZiQoV+3vfxPObTEJsBDocnaqzIaZd43ndymkwAs3aTeaNzk1 3e9V9ClkOM6MX+q5RT+799V2B5+VG9+xTAoFO1IGJrZhvUghGfxrl/cNuToumcHRzKtM Eqo+/QI7hKrkoNpfo2j51lwANDz4ySHEx2vZMwNyEEyREfPxhg7d/IC6W3qkWs8me9ag iDcxdgKySdbM1y7jy3BNOGuIDY+yX0t1AtsbIH/599mrmvcklDPIUTz7tJIhpCm0APkI ccOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=u41hWYuisvrM/BLm155chMFy6JZMciIbQ1FGBDmuJxw=; fh=24COvERq54EquKjYWo60iSCsL9Kgw2eWTe5Zg1cltT4=; b=WlUTDgvsi2lmbmyQDRzUZJsSz1i8xAHFbMsyj2IqKmtszfq6/4NPvxsR1HyLSTebmg shkIh1Hn2q+uQOlHmtdgAxJDK4HwybSmMU6leDtdOpJt+W9M8JEf6TafoToXhJQNX7MA Fagh2szN+yAsUrJXOygPsBapwXWD1T7uInYWH5vSzSmMhD/qkYEBlfer2pRm78fQoGAH 0pX+L2c2THLa5zFI8SjyEneroUTEQL1i7WmYrLxfpgwyLexpuEVxi9fVLwL+I/Nh3hb9 0lRq4xFj8K4mFxa/0/4wTV5q5Y3YtU5Cqpsfil5l24IuXaCMYI7eK40WAPF7u8R+J9fX 61IA==; 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=1780115556; x=1780720356; 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=u41hWYuisvrM/BLm155chMFy6JZMciIbQ1FGBDmuJxw=; b=bY1EKONXARoW5ljBHfQEiCuGSE5KHfo/hwzG9W5bRu7z1L9dytwgna9+e8QlPhridv L0xZwSoyHSV+f/NfeKyRUjjliJFFlWz1Ufe+9NFbzcIPbtsLL2Bn7+ay+H6ZCnNTDV77 fMcVQGZFGiQlIA6NXXw9yJp5hHPSbzk/2LQeipM95vOOdBxgLrhXc3xPPWku95GUD+Lf AlssQXdjOWJ76AEFdik6qc8PWZnvm4uNcFvpJ0oxbiWx1+LZx8/A6LLoj4WVktzBYzz2 BdeagxryMkrlN9A4O7RwCpS5H2H6tGv6SmZi39TucJO2ZZwR0qez+6TIoe2vr2WUmA7j G5Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780115556; x=1780720356; 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=u41hWYuisvrM/BLm155chMFy6JZMciIbQ1FGBDmuJxw=; b=c8eKRE4Cam66sScZRCUaqyvbtAY8QVLgyVMfz3Rki3SpLJZAnxnOMNArGR5E0glSjd vLIg98jNfIfAEQIr0XGteWKLZI0Xv6ekxxHePHDOG+d9e96MYl338romJVR8CfPnqMYR rd/tpatrO6jrKBdOx307r3seLCcwQvQFGyE/RiQbR3TOa81WCKyw+AZ3/y2btSuHbUcR DwkBcZQEJOLyK9Cp+KkPMhhtrdRQUs2ZJvxqQjfgwZeb348xTK9EYFRhlSU8lg4jcdMJ LzcSTXReRsEt1cuRL7DM9+3wl3DePww20oLLC34Bpj/EWPtS+HzDKTOZqO4eN5oEwujh CNog== X-Forwarded-Encrypted: i=1; AFNElJ8nNN5Z4K/6ryNeECDd3aMuJyA+y8i7tFkTx3WoQ/KSPdhLs2m4Hw12fDqlM5CVJUqN6dZ9c2iAlCtfnELU@lists.postgresql.org X-Gm-Message-State: AOJu0YxAfszkRiS+VkeR0WUQmLSZ//Ez/gzOWgPlMA06gsLCRYQYOTJ2 8Q8zRvfcpszmTlRRbz54sOuDmPeulOnow1FF9G7u+XsSBgiuU+FR5X49uvp0CtWINfLHNHYJ48J lClm0yAuQZvzI0MIZ4ZssmO0ZzNrJ0Q== X-Gm-Gg: Acq92OERPVOGDt+0WEyYBud7PJj9mI3P0669eRQlKt5nrHOsRlRbzD3kVgkiXRUbojq xWfaTzZtC12HpuKKDhhJ3viSQzmhFydUbIvBA/ZTspvl1eHPXXpqB+qQOGP8irR36IcvB+1Bi+2 HdfJI9v7St70aSPfRM5a/WKK95cd0lYueSyGSjB374gGWTae1GCK0e3RO8qBnbbvsBqQPfo38xv jEskyhlJg1b02bkAdPJYmA2BiTM2x0dY3PUP9ksTJICDnbQpIIPl32MuY9nl7RqCH4ooNK6tTAR 7Sm0apNC0UazmWI6MsrnM5PlMqTKFPjpO/q7zl1VvvujB7wu X-Received: by 2002:a2e:bd16:0:b0:393:cbfb:6f1c with SMTP id 38308e7fff4ca-39666430dcamr4702531fa.14.1780115555912; Fri, 29 May 2026 21:32:35 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Sat, 30 May 2026 10:02:23 +0530 X-Gm-Features: AVHnY4KCFtUHQtrNO9mcYx1vQkdA05SsUTRz1hMTyi5xizrGwXMjEH5gC4XooZY Message-ID: Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications To: Peter Smith Cc: shveta malik , Amit Kapila , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000005eae7e0653017354" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005eae7e0653017354 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 29, 2026 at 11:01=E2=80=AFAM Peter Smith wrote: > > Hi Nisha. > > Some review comments for patch v7-0001. > Thanks for the review. > > publication_add_relation: > > 2. > + if (is_except) > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("relation \"%s\" cannot be added because it is excluded from > publication \"%s\"", > + RelationGetQualifiedRelationName(targetrel), > + pub->name))); > > I am unsure about the changed wording from "table" to "relation". IIUC > we say "relation" when it could be either a table or a sequence. So > maybe "table" is correct for your patch;l OTHOH this should change to > "relation" by Shlok's EXCEPT SEQUENCE patch [1]. > Okay, makes sense, changed back to "table". > ~~~ > > 3. > + ereport(ERROR, > + (errcode(ERRCODE_DUPLICATE_OBJECT), > + errmsg("relation \"%s\" is already member of publication \"%s\"", > + RelationGetQualifiedRelationName(targetrel), pub->name))); > > IMO making everything fully qualified like this would be a good > change, but doing it here perhaps does not belong in your patch. I > have resurrected this question in the other thread [2], which would > affect not only this statement. but many others. Please post your > opinion about this on that other thread. > That is fine with me. I've reverted the change from my patch. > =3D=3D=3D=3D=3D=3D > src/backend/commands/publicationcmds.c > > ObjectsInPublicationToOids: > > 4. > static void > ObjectsInPublicationToOids(List *pubobjspec_list, ParseState *pstate, > - List **rels, List **exceptrels, List **schemas) > + List **rels, List **except_rel_names, List **schemas) > > Is `except_rel_names` an accurate name? IMO it makes it sound like > it's a list of char* names, but IIUC that is not the case; aren't > these PublicationTable objects? Would something like > `except_pubtables` be more correct? > Yes these are PublicationTable objects, changed the name as sugegsted. > ~~~ > > 9. > BTW, the current code is not able to handle multiple schemas. > > So, this works: > test_pub=3D# CREATE PUBLICATION pub1 for TABLES IN SCHEMA myschema > EXCEPT ( TABLE WITH ( > > but, this doesn't do anything: > test_pub=3D# CREATE PUBLICATION pub1 for TABLES IN SCHEMA public, myschem= a > I think the above preserves the existing behavior. Currently, we do not suggest "WITH (" after the second schema onwards. To support this properly, we would also need to handle "WITH (" suggestions for subsequent schema entries. I=E2=80=99ve created a top-up patch (patch-002) for this. I can merge it if= we want to change the current behavior. Let me know your thoughts. ~~~~ Attached is the updated v8 patch set. Addressed all of the above comments, along with the patch v7-0002 comments from [1]. Patch-0003 has also been updated accordingly. [1] https://www.postgresql.org/message-id/CAHut%2BPuhL7Xj8UAK0yBmbbDsCC9xvR= VmreCC_yxr%2BbMfc-dt5g%40mail.gmail.com -- Thanks, Nisha --0000000000005eae7e0653017354 Content-Type: application/x-patch; name="v8-0001-Support-EXCEPT-clause-for-schema-level-publicatio.patch" Content-Disposition: attachment; filename="v8-0001-Support-EXCEPT-clause-for-schema-level-publicatio.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpr7wpth0 RnJvbSA5ZmY2NjBkYmEwOTE3ZmJkNzgwNTI1MzRiNmU4MTEyNDBjMjUyNWJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDQgTWF5IDIwMjYgMTI6NDk6MjcgKzA1MzAKU3ViamVjdDogW1BBVENIIHY4 IDEvNF0gU3VwcG9ydCBFWENFUFQgY2xhdXNlIGZvciBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb25z CgpFeHRlbmQgdGFibGUgZXhjbHVzaW9uIHN1cHBvcnQgaW4gcHVibGljYXRpb25zIHRvIGFsbG93 IHNwZWNpZmljCnRhYmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHNjaGVtYS1sZXZlbCBwdWJsaWNh dGlvbnMgdXNpbmcgYW4KRVhDRVBUIGNsYXVzZSBpbiBDUkVBVEUgUFVCTElDQVRJT04uCgpTdXBw b3J0ZWQgc3ludGF4OgpDUkVBVEUgUFVCTElDQVRJT04gPHB1Yj4gRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcyBFWENFUFQgKFRBQkxFIHQxLC4uLik7Ci0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCAgICAgICB8ICAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCAgICB8ICAyMiArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgICAgICAgIHwgIDk4ICsrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMgICAgICB8ICA2NSArKysrKysrKy0tCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgIDUyICsrKysrKystCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDMwICsrKystCiBzcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrKwogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAyNCArKystCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgfCAxMDQgKysrKysrKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgIHwgIDY5ICsrKysrKysrKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgICAgICAgfCAxMzMgKysrKysrKysrKysr KysrKysrKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDU3NyBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA5ZTc4Njg0ODdk ZS4uMTQzM2QyNjYwZmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAt MTE3LDcgKzExNyw4IEBACiAgICBvciA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJh bD4uIFVubGlrZSB0YWJsZXMsIHNlcXVlbmNlcyBjYW4gYmUKICAgIHN5bmNocm9uaXplZCBhdCBh bnkgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQogICAgPHhyZWYgbGlua2VuZD0ibG9n aWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uIFdoZW4gYSBwdWJsaWNhdGlvbiBpcwotICAg Y3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwgYSB0YWJsZSBv ciBzZXQgb2YgdGFibGVzIGNhbgorICAgY3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFC TEVTPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVy YWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCiAgICBiZSBleHBsaWNpdGx5IGV4Y2x1 ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCiAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD48L2xpbms+CiAgICBjbGF1c2UuCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGlj YXRpb24uc2dtbAppbmRleCBmODJkNjQwZTZjYS4uN2ZhMGJkMTFmN2IgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjgsNyArMjgsNyBAQCBDUkVBVEUgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PgogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRp b25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0KLSAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9 IFssIC4uLiBdCisgICAgVEFCTEVTIElOIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVzX2luX3NjaGVtYTwvcmVwbGFjZWFibGU+IFssIC4uLiBdCiAKIDxwaHJhc2U+ YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0zOSw2ICszOSwxMCBAQCBD UkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPgogCiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX29i amVjdDwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCiAKKzxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9y ZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbIEVY Q0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0 PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9w aHJhc2U+CiAKICAgICBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf b2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KQEAgLTE0Miw2ICsxNDYsOCBAQCBDUkVBVEUg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBhcyBvbmUgdGhh dCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KICAgICAgIHRoZSBzcGVjaWZp ZWQgbGlzdCBvZiBzY2hlbWFzLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVy ZS4KKyAgICAgIFRhYmxlcyBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4g Y2xhdXNlIGZvciBhIGdpdmVuIHNjaGVtYQorICAgICAgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1 YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CkBAIC0xNzMsNyArMTc5LDcg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KICAgICAgPHBhcmE+CiAgICAgICBNYXJrcyB0aGUgcHVibGljYXRpb24g YXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGluCiAgICAgICB0 aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLiBUYWJs ZXMgbGlzdGVkIGluCi0gICAgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUg ZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCisgICAgICB0aGUgPGxpdGVyYWw+RVhDRVBU PC9saXRlcmFsPiBjbGF1c2UgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgogICAg ICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTk4LDcg KzIwNCw4IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAg IFRoaXMgY2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZy b20gdGhlCi0gICAgICBwdWJsaWNhdGlvbi4KKyAgICAgIHB1YmxpY2F0aW9uLiBJdCBjYW4gYmUg dXNlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBvcgorICAgICAgPGxp dGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAgICAg IDxwYXJhPgogICAgICAgRm9yIGluaGVyaXRlZCB0YWJsZXMsIGlmIDxsaXRlcmFsPk9OTFk8L2xp dGVyYWw+IGlzIHNwZWNpZmllZCBiZWZvcmUgdGhlCkBAIC01MTUsNiArNTIyLDE1IEBAIENSRUFU RSBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEZPUiBUQUJMRSB1c2VycywgZGVw YXJ0bWVudHMsIFRBQkxFUyBJCiBDUkVBVEUgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24g Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKIDwvcHJvZ3JhbWxpc3Rpbmc+ PC9wYXJhPgogCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNo ZXMgYWxsIGNoYW5nZXMgZm9yIGFsbCB0aGUgdGFibGVzIHByZXNlbnQgaW4KKyAgIHRoZSBzY2hl bWEgPHN0cnVjdG5hbWU+c2FsZXM8L3N0cnVjdG5hbWU+LCBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1l PmludGVybmFsPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZHJhZnRzPC9zdHJ1Y3RuYW1l PjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElPTiBzYWxlc19maWx0ZXJlZCBG T1IgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRBQkxFIGludGVybmFsLCBkcmFmdHMp OworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQ3JlYXRlIGEg cHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgZm9yIHRhYmxlIDxzdHJ1Y3Ru YW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIGJ1dCByZXBsaWNhdGVzIG9ubHkgY29sdW1ucyA8 c3RydWN0bmFtZT51c2VyX2lkPC9zdHJ1Y3RuYW1lPiBhbmQKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYwppbmRleCA1YzQ1N2Q5YWNhOC4uNGFmMGQ3NDgxNGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTQ0NCwxMyArNDQ0LDE5IEBAIEdldFB1YlBhcnRpdGlv bk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCwKICAqCiAgKiBOb3RlIHRoYXQgdGhlIGxpc3Qgb2YgYW5jZXN0b3JzIHNob3VsZCBiZSBv cmRlcmVkIHN1Y2ggdGhhdCB0aGUgdG9wbW9zdAogICogYW5jZXN0b3IgaXMgYXQgdGhlIGVuZCBv ZiB0aGUgbGlzdC4KKyAqCisgKiBleGNlcHRfcHViaWRzIGlzIGEgbGlzdCBvZiBwdWJsaWNhdGlv biBPSURzIHdob3NlIHNjaGVtYSBtZW1iZXJzaGlwCisgKiBzaG91bGQgYmUgaWdub3JlZCBmb3Ig dGhlIGFuY2VzdG9yIChiZWNhdXNlIHRoZSBhbmNlc3RvciBpcyBpbiB0aGVpcgorICogRVhDRVBU IGNsYXVzZSkuCiAgKi8KIE9pZAotR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQg cHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwpCitHZXRUb3BNb3N0 QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKKwkJCQkJ CQkJaW50ICphbmNlc3Rvcl9sZXZlbCwgTGlzdCAqZXhjZXB0X3B1YmlkcykKIHsKIAlMaXN0Q2Vs bCAgICpsYzsKIAlPaWQJCQl0b3Btb3N0X3JlbGlkID0gSW52YWxpZE9pZDsKIAlpbnQJCQlsZXZl bCA9IDA7CisJYm9vbAkJY2hlY2tfc2NoZW1hcyA9ICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3B1 YmlkcywgcHVib2lkKTsKIAogCS8qCiAJICogRmluZCB0aGUgInRvcG1vc3QiIGFuY2VzdG9yIHRo YXQgaXMgaW4gdGhpcyBwdWJsaWNhdGlvbi4KQEAgLTQ3MCw3ICs0NzYsNyBAQCBHZXRUb3BNb3N0 QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50ICph bmNlc3Rvcl9sZXZlbAogCQkJaWYgKGFuY2VzdG9yX2xldmVsKQogCQkJCSphbmNlc3Rvcl9sZXZl bCA9IGxldmVsOwogCQl9Ci0JCWVsc2UKKwkJZWxzZSBpZiAoY2hlY2tfc2NoZW1hcykKIAkJewog CQkJYXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFj ZShhbmNlc3RvcikpOwogCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhc2NoZW1hUHViaWRzLCBwdWJv aWQpKQpAQCAtNTQ1LDE4ICs1NTEsMzAgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBw dWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJICogZHVwbGljYXRlcywgaXQncyBoZXJl IGp1c3QgdG8gcHJvdmlkZSBuaWNlciBlcnJvciBtZXNzYWdlIGluIGNvbW1vbgogCSAqIGNhc2Uu IFRoZSByZWFsIHByb3RlY3Rpb24gaXMgdGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cuCiAJ ICovCi0JaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0 SWRHZXREYXR1bShyZWxpZCksCi0JCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSkpCisJ dHVwID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdldERhdHVt KHJlbGlkKSwKKwkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCisJaWYgKEhlYXBU dXBsZUlzVmFsaWQodHVwKSkKIAl7CisJCWJvb2wJCWlzX2V4Y2VwdCA9ICgoRm9ybV9wZ19wdWJs aWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJleGNlcHQ7CisKKwkJUmVsZWFzZVN5c0Nh Y2hlKHR1cCk7CiAJCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkJaWYg KGlmX25vdF9leGlzdHMpCiAJCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CiAKLQkJZXJl cG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAotCQkJ CSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlv biBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHVi LT5uYW1lKSkpOworCQlpZiAoaXNfZXhjZXB0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygidGFibGUgXCIl c1wiIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIGl0IGlzIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRp b24gXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZSh0YXJn ZXRyZWwpLAorCQkJCQkJCXB1Yi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkgCSBlcnJtc2co InJlbGF0aW9uIFwiJXNcIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIi LAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1Yi0+bmFtZSkp KTsKIAl9CiAKIAljaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHJpKTsKQEAgLTk4Miwx MiArMTAwMCwxMyBAQCBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogICogR2V0cyBsaXN0IG9mIHRhYmxlIG9p ZHMgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgYQogICogcHVi bGljYXRpb24uCiAgKgotICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBBTEwgVEFCTEVT IHB1YmxpY2F0aW9ucy4KKyAqIFRoaXMgaXMgdXNlZCBmb3IgRk9SIEFMTCBUQUJMRVMgYW5kIEZP UiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9ucywKKyAqIGJvdGggb2Ygd2hpY2ggc3VwcG9y dCBFWENFUFQgVEFCTEUuCiAgKi8KIExpc3QgKgogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxl cyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKLQlBc3NlcnQo R2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMpOworCUFzc2VydChHZXRQdWJsaWNhdGlv bihwdWJpZCktPmFsbHRhYmxlcyB8fCBpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQpKTsKIAog CXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1 ZSk7CiB9CkBAIC0xMDQ5LDEzICsxMDY4LDEzIEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25z KE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJVGFibGVTY2FuRGVz YyBzY2FuOwogCUhlYXBUdXBsZQl0dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7Ci0JTGlz dAkgICAqZXhjZXB0bGlzdCA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRfcmVsaWRzID0gTklMOwog CiAJQXNzZXJ0KCEocmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFICYmIHB1YnZpYXJvb3QpKTsK IAogCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyBvbmx5IHRvIHJlbGF0aW9ucywgbm90IHNl cXVlbmNlcyAqLwogCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pCi0JCWV4Y2VwdGxp c3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBwdWJ2aWFyb290ID8KKwkJ ZXhjZXB0X3JlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1YnZp YXJvb3QgPwogCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgogCQkJCQkJCQkJ CQkJICBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwogCkBAIC0xMDc1LDcgKzEwOTQsNyBAQCBHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2 aWFyb290KQogCiAJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYK IAkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkgJiYKLQkJCSFsaXN0 X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQorCQkJIWxpc3RfbWVtYmVyX29pZChleGNl cHRfcmVsaWRzLCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlk KTsKIAl9CiAKQEAgLTEwOTcsNyArMTExNiw3IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25z KE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAKIAkJCWlmIChpc19w dWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKIAkJCQkhcmVsRm9ybS0+cmVsaXNw YXJ0aXRpb24gJiYKLQkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKKwkJ CQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIHJlbGlkKSkKIAkJCQlyZXN1bHQgPSBs YXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMjMyLDIyICsxMjUxLDY3IEBA IEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRpb25Q YXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCiAvKgogICogR2V0cyB0aGUgbGlzdCBvZiBhbGwgcmVsYXRp b25zIHB1Ymxpc2hlZCBieSBGT1IgVEFCTEVTIElOIFNDSEVNQQotICogcHVibGljYXRpb24uCisg KiBwdWJsaWNhdGlvbiwgZXhjbHVkaW5nIGFueSB0YWJsZXMgbGlzdGVkIGluIHRoZSBFWENFUFQg Y2xhdXNlLgogICovCiBMaXN0ICoKIEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewogCUxpc3QJICAgKnJl c3VsdCA9IE5JTDsKIAlMaXN0CSAgICpwdWJzY2hlbWFsaXN0ID0gR2V0UHVibGljYXRpb25TY2hl bWFzKHB1YmlkKTsKKwlMaXN0CSAgICpleGNlcHRfcmVsaWRzID0gTklMOwogCUxpc3RDZWxsICAg KmNlbGw7CiAKKwkvKiBnZXQgdGhlIGxpc3Qgb2YgdGFibGVzIGV4Y2x1ZGVkIHZpYSBFWENFUFQg VEFCTEUgZm9yIHRoaXMgcHVibGljYXRpb24gKi8KKwlpZiAocHVic2NoZW1hbGlzdCAhPSBOSUwp CisJCWV4Y2VwdF9yZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBw dWJfcGFydG9wdCk7CisKIAlmb3JlYWNoKGNlbGwsIHB1YnNjaGVtYWxpc3QpCiAJewogCQlPaWQJ CQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQoY2VsbCk7CiAJCUxpc3QJICAgKnNjaGVtYVJlbHMgPSBO SUw7CiAKIAkJc2NoZW1hUmVscyA9IEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHNjaGVt YWlkLCBwdWJfcGFydG9wdCk7Ci0JCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgc2NoZW1h UmVscyk7CisKKwkJaWYgKGV4Y2VwdF9yZWxpZHMgIT0gTklMKQorCQl7CisJCQkvKiBmaWx0ZXIg b3V0IGFueSB0YWJsZXMgdGhhdCBhcHBlYXIgaW4gdGhlIEVYQ0VQVCBsaXN0ICovCisJCQlMaXN0 Q2VsbCAgICpybGM7CisKKwkJCWZvcmVhY2gocmxjLCBzY2hlbWFSZWxzKQorCQkJeworCQkJCU9p ZAkJCXJlbGlkID0gbGZpcnN0X29pZChybGMpOworCQkJCWJvb2wJCWV4Y2x1ZGVkID0gbGlzdF9t ZW1iZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIHJlbGlkKTsKKworCQkJCS8qCisJCQkJICogQWxzbyBl eGNsdWRlIGFueSByZWxhdGlvbiB3aG9zZSBwYXJ0aXRpb24gYW5jZXN0b3IgaXMgaW4KKwkJCQkg KiB0aGUgRVhDRVBUIGxpc3QuICBUaGlzIG1hdHRlcnMgd2hlbiBwdWJfcGFydG9wdCBpcworCQkJ CSAqIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVDogdGhlIGV4Y2VwdCBsaXN0IGhvbGRzIG9ubHkgdGhl IHJvb3QKKwkJCQkgKiBPSUQsIGJ1dCB0aGUgc2NoZW1hIHNjYW4gbWF5IGFsc28gcmV0dXJuIGlu ZGl2aWR1YWwKKwkJCQkgKiBwYXJ0aXRpb24gcmVsYXRpb25zIHRoYXQgbGl2ZSBpbiB0aGUgc2Ft ZSBzY2hlbWEuCisJCQkJICovCisJCQkJaWYgKCFleGNsdWRlZCAmJiBnZXRfcmVsX3JlbGlzcGFy dGl0aW9uKHJlbGlkKSkKKwkJCQl7CisJCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0 aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKKwkJCQkJTGlzdENlbGwgICAqYWxjOworCisJCQkJCWZv cmVhY2goYWxjLCBhbmNlc3RvcnMpCisJCQkJCXsKKwkJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQo ZXhjZXB0X3JlbGlkcywgbGZpcnN0X29pZChhbGMpKSkKKwkJCQkJCXsKKwkJCQkJCQlleGNsdWRl ZCA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJbGlzdF9mcmVl KGFuY2VzdG9ycyk7CisJCQkJfQorCisJCQkJaWYgKCFleGNsdWRlZCkKKwkJCQkJcmVzdWx0ID0g bGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CisJCQl9CisJCQlsaXN0X2ZyZWUoc2NoZW1hUmVs cyk7CisJCX0KKwkJZWxzZQorCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFS ZWxzKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpAQCAtMTM4MSw3ICsxNDQ1LDcgQEAgaXNfdGFi bGVfcHVibGlzaGFibGVfaW5fcHVibGljYXRpb24oT2lkIHJlbGlkLCBQdWJsaWNhdGlvbiAqcHVi KQogCSAqIHRoZSBwdWJsaWNhdGlvbiwgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIChyZXR1cm4gdHJ1 ZSkuCiAJICovCiAJaWYgKHJlbGlzcGFydGl0aW9uICYmCi0JCU9pZElzVmFsaWQoR2V0VG9wTW9z dEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWItPm9pZCwgYW5jZXN0b3JzLCBOVUxMKSkpCisJCU9p ZElzVmFsaWQoR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWItPm9pZCwgYW5jZXN0 b3JzLCBOVUxMLCBOSUwpKSkKIAkJcmV0dXJuICFwdWItPnB1YnZpYXJvb3Q7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA0NDBhZGIzNTZhZC4uY2QzOWQ2 Mzc1Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xODEsNyAr MTgxLDcgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAg Ki8KIHN0YXRpYyB2b2lkCiBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpz cGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKLQkJCQkJCSAgIExpc3QgKipyZWxzLCBMaXN0 ICoqZXhjZXB0cmVscywgTGlzdCAqKnNjaGVtYXMpCisJCQkJCQkgICBMaXN0ICoqcmVscywgTGlz dCAqKmV4Y2VwdF9wdWJ0YWJsZXMsIExpc3QgKipzY2hlbWFzKQogewogCUxpc3RDZWxsICAgKmNl bGw7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJvYmo7CkBAIC0yMDAsNyArMjAwLDcgQEAgT2Jq ZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCXsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOgogCQkJ CXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7Ci0JCQkJKmV4Y2VwdHJlbHMgPSBsYXBw ZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQkqZXhjZXB0X3B1YnRhYmxl cyA9IGxhcHBlbmQoKmV4Y2VwdF9wdWJ0YWJsZXMsIHB1Ym9iai0+cHVidGFibGUpOwogCQkJCWJy ZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKIAkJCQlwdWJvYmotPnB1YnRhYmxl LT5leGNlcHQgPSBmYWxzZTsKQEAgLTMwNSw3ICszMDUsNyBAQCBwdWJfcmZfY29udGFpbnNfaW52 YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3Jz LAogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQog CXsKIAkJcHVibGlzaF9hc19yZWxpZAotCQkJPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0 aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwpOworCQkJPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1 YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwsIE5JTCk7CiAKIAkJaWYgKCFPaWRJc1Zh bGlkKHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAt Mzg5LDcgKzM4OSw3IEBAIHB1Yl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAJICovCiAJaWYgKHB1YnZpYXJvb3Qg JiYgcmVsYXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJewotCQlwdWJsaXNoX2FzX3Jl bGlkID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBO VUxMKTsKKwkJcHVibGlzaF9hc19yZWxpZCA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRp b24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCwgTklMKTsKIAogCQlpZiAoIU9pZElzVmFsaWQocHVi bGlzaF9hc19yZWxpZCkpCiAJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CkBAIC04NDksNyAr ODQ5LDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJY2hhcgkJcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczsKIAlB Y2xSZXN1bHQJYWNscmVzdWx0OwogCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKLQlMaXN0CSAg ICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0X3B1YnRhYmxlcyA9IE5J TDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRF IHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwpAQCAtOTM2LDE2ICs5MzYsMTYgQEAgQ3JlYXRlUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlv bnMsCi0JCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJ ICAgJmV4Y2VwdF9wdWJ0YWJsZXMsICZzY2hlbWFpZGxpc3QpOwogCiAJaWYgKHN0bXQtPmZvcl9h bGxfdGFibGVzKQogCXsKIAkJLyogUHJvY2VzcyBFWENFUFQgdGFibGUgbGlzdCAqLwotCQlpZiAo ZXhjZXB0cmVsYXRpb25zICE9IE5JTCkKKwkJaWYgKGV4Y2VwdF9wdWJ0YWJsZXMgIT0gTklMKQog CQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRy ZWxhdGlvbnMpOworCQkJcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CiAJ CQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwogCQkJQ2xv c2VUYWJsZUxpc3QocmVscyk7CiAJCX0KQEAgLTk1OSw2ICs5NTksOCBAQCBDcmVhdGVQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAl9 CiAJZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQogCXsKKwkJTGlzdAkgICAqZXhw bGljaXRyZWxpZHMgPSBOSUw7CisKIAkJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMg c3VwZXJ1c2VyICovCiAJCWlmIChzY2hlbWFpZGxpc3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkK IAkJCWVyZXBvcnQoRVJST1IsCkBAIC05NzcsNiArOTc5LDE5IEBAIENyZWF0ZVB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQkJ CQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKIAkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290KTsKIAorCQkJLyoKKwkJCSAqIENvbGxlY3QgZXhwbGljaXQgdGFibGUgT0lEcyBu b3csIGJlZm9yZSB3ZSBjbG9zZSB0aGUgcmVsYXRpb24KKwkJCSAqIGxpc3QsIHNvIHRoYXQgZXhj ZXB0LXRhYmxlIHZhbGlkYXRpb24gYmVsb3cgY2FuIGNoZWNrIGZvcgorCQkJICogY29udHJhZGlj dGlvbnMgd2l0aG91dCByZWx5aW5nIG9uIGEgY2F0YWxvZyBzY2FuIHRoYXQgbWlnaHQgbm90CisJ CQkgKiB5ZXQgc2VlIHRoZSBqdXN0LWluc2VydGVkIHJvd3MuCisJCQkgKi8KKwkJCWlmIChleGNl cHRfcHVidGFibGVzICE9IE5JTCkKKwkJCXsKKwkJCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvblJl bEluZm8sIHByaSwgcmVscykKKwkJCQkJZXhwbGljaXRyZWxpZHMgPSBsYXBwZW5kX29pZChleHBs aWNpdHJlbGlkcywKKwkJCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVsYXRpb24p KTsKKwkJCX0KKwogCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBO VUxMKTsKIAkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwogCQl9CkBAIC05ODksNiArMTAwNCwzNCBA QCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9u U3RtdCAqc3RtdCkKIAkJCSAqLwogCQkJTG9ja1NjaGVtYUxpc3Qoc2NoZW1haWRsaXN0KTsKIAkJ CVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7 CisKKwkJCWlmIChleGNlcHRfcHVidGFibGVzICE9IE5JTCkKKwkJCXsKKwkJCQlMaXN0CSAgICpl eGNlcHRfcmVsczsKKworCQkJCWV4Y2VwdF9yZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVi dGFibGVzKTsKKworCQkJCS8qCisJCQkJICogVmFsaWRhdGUgdGhhdCBlYWNoIGV4Y2x1ZGVkIHRh YmxlIGlzIG5vdCBhbHNvIGluIHRoZQorCQkJCSAqIGV4cGxpY2l0IHRhYmxlIGxpc3QgKHdoaWNo IHdvdWxkIGJlIGNvbnRyYWRpY3RvcnkpLiBVc2UgdGhlCisJCQkJICogaW4tbWVtb3J5IGV4cGxp Y2l0cmVsaWRzIGNvbGxlY3RlZCBhYm92ZSByYXRoZXIgdGhhbgorCQkJCSAqIHJlLXJlYWRpbmcg dGhlIGNhdGFsb2csIHdoaWNoIG1heSBub3QgeWV0IHNlZSB0aGUKKwkJCQkgKiBqdXN0LWluc2Vy dGVkIHJvd3MuCisJCQkJICovCisJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBw cmksIGV4Y2VwdF9yZWxzKQorCQkJCXsKKwkJCQkJT2lkCQkJZXhjZXB0X3JlbGlkID0gUmVsYXRp b25HZXRSZWxpZChwcmktPnJlbGF0aW9uKTsKKworCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGV4 cGxpY2l0cmVsaWRzLCBleGNlcHRfcmVsaWQpKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQkJZXJy bXNnKCJ0YWJsZSBcIiVzXCIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0IGFu ZCB0aGUgRVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJCQkgICBSZWxhdGlvbkdldFF1YWxpZmllZFJl bGF0aW9uTmFtZShwcmktPnJlbGF0aW9uKSkpOworCQkJCX0KKworCQkJCVB1YmxpY2F0aW9uQWRk VGFibGVzKHB1Ym9pZCwgZXhjZXB0X3JlbHMsIHRydWUsIE5VTEwpOworCQkJCUNsb3NlVGFibGVM aXN0KGV4Y2VwdF9yZWxzKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtMTY4MywxMiArMTcyNiwxMiBA QCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0 bXQgKnN0bXQpCiAJZWxzZQogCXsKIAkJTGlzdAkgICAqcmVsYXRpb25zID0gTklMOwotCQlMaXN0 CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJCUxpc3QJICAgKmV4Y2VwdF9wdWJ0YWJsZXMg PSBOSUw7CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBw dWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2Jq ZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAm c2NoZW1haWRsaXN0KTsKKwkJCQkJCQkJICAgJmV4Y2VwdF9wdWJ0YWJsZXMsICZzY2hlbWFpZGxp c3QpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsIHJlbGF0aW9ucywgc2No ZW1haWRsaXN0KTsKIApAQCAtMTcxMSw3ICsxNzU0LDcgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQllcnJtc2co InB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJu YW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRyZWxh dGlvbnMpOworCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdF9wdWJ0 YWJsZXMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBw c3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKIAkJ QWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKaW5kZXggZmY0ZTEzODhjNTUuLjQ1MTRlZjdmOWMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTU4LDYg KzU4LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCisjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRldGltZS5oIgogI2luY2x1ZGUgInV0aWxz L3htbC5oIgogCkBAIC0xMTI3Miw3ICsxMTI3Myw3IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBB R0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMKICAqIHB1 Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJMRSB0YWJsZSBbLCAuLi5dCi0gKgkJVEFCTEVT IElOIFNDSEVNQSBzY2hlbWEgWywgLi4uXQorICoJCVRBQkxFUyBJTiBTQ0hFTUEgc2NoZW1hIFtF WENFUFQgKFRBQkxFIHRhYmxlIFssIC4uLl0gKV0gWywgLi4uXQogICoKICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KIApAQCAtMTEzMzIsMjMgKzExMzMzLDI2IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoK IAkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDM7CiAJCQkJCSQkLT5wdWJ0YWJsZS0+d2hl cmVDbGF1c2UgPSAkNDsKIAkJCQl9Ci0JCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAorCQkJ fCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJewog CQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0 eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQTsKIAkJCQkJJCQtPm5hbWUgPSAk NDsKKwkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkNTsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDQ7 CiAJCQkJfQotCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEKKwkJCXwgVEFC TEVTIElOX1AgU0NIRU1BIENVUlJFTlRfU0NIRU1BIG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCQkJ CXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVi b2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOworCQkJCQkkJC0+ ZXhjZXB0X3RhYmxlcyA9ICQ1OwogCQkJCQkkJC0+bG9jYXRpb24gPSBANDsKIAkJCQl9Ci0JCQl8 IENvbElkIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQorCQkJfCBDb2xJZCBvcHRfY29s dW1uX2xpc3QgT3B0V2hlcmVDbGF1c2Ugb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJewogCQkJ CQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBl ID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOworCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9 ICQ0OwogCQkJCQkvKgogCQkJCQkgKiBJZiBlaXRoZXIgYSByb3cgZmlsdGVyIG9yIGNvbHVtbiBs aXN0IGlzIHNwZWNpZmllZCwgY3JlYXRlCiAJCQkJCSAqIGEgUHVibGljYXRpb25UYWJsZSBvYmpl Y3QuCkBAIC0xMTM5MiwxMCArMTEzOTYsMTEgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkk JC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMjsKIAkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVz ZSA9ICQzOwogCQkJCX0KLQkJCXwgQ1VSUkVOVF9TQ0hFTUEKKwkJCXwgQ1VSUkVOVF9TQ0hFTUEg b3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0 aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElO VUFUSU9OOworCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQyOwogCQkJCQkkJC0+bG9jYXRpb24g PSBAMTsKIAkJCQl9CiAJCQkJOwpAQCAtMjA3ODQsNiArMjA3ODksOCBAQCBwcmVwcm9jZXNzX3B1 Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmpl Y3RzLAogLyoKICAqIFByb2Nlc3MgcHVib2Jqc3BlY19saXN0IHRvIGNoZWNrIGZvciBlcnJvcnMg aW4gYW55IG9mIHRoZSBvYmplY3RzIGFuZAogICogY29udmVydCBQVUJMSUNBVElPTk9CSl9DT05U SU5VQVRJT04gaW50byBhcHByb3ByaWF0ZSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlLgorICogQWxz byBmbGF0dGVucyBleGNlcHRfdGFibGVzIGZyb20gVEFCTEVTIElOIFNDSEVNQSBub2RlcyBpbnRv IHRoZSBsaXN0IHNvCisgKiB0aGF0IE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKCkgc2VlcyB0 aGVtIGFzIHRvcC1sZXZlbCBFWENFUFRfVEFCTEUgZW50cmllcy4KICAqLwogc3RhdGljIHZvaWQK IHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nh bl90IHl5c2Nhbm5lcikKQEAgLTIwODEyLDYgKzIwODE5LDEzIEBAIHByZXByb2Nlc3NfcHVib2Jq X2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAog CQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFKQogCQl7CisJ CQkvKiBFWENFUFQgaXMgbm90IHZhbGlkIGZvciB0YWJsZSBvYmplY3RzICovCisJCQlpZiAocHVi b2JqLT5leGNlcHRfdGFibGVzICE9IE5JTCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coIkVYQ0VQVCBpcyBub3Qg YWxsb3dlZCBmb3IgVEFCTEUgcHVibGljYXRpb24gb2JqZWN0cyIpLAorCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKwogCQkJLyogcmVsYXRpb24gbmFtZSBvciBw dWJ0YWJsZSBtdXN0IGJlIHNldCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLwogCQkJaWYgKCFw dWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAg LTIwODYwLDYgKzIwODc0LDM0IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jq c3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJCQkJCWVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHNjaGVtYSBuYW1lIiksCiAJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOworCisJCQkvKiBGbGF0 dGVuIEVYQ0VQVCBlbnRyaWVzIGludG8gdGhlIHRvcC1sZXZlbCBsaXN0ICovCisJCQlmb3JlYWNo X3B0cihQdWJsaWNhdGlvbk9ialNwZWMsIGVvYmosIHB1Ym9iai0+ZXhjZXB0X3RhYmxlcykKKwkJ CXsKKwkJCQkvKgorCQkJCSAqIFVucXVhbGlmaWVkIG5hbWVzIGFyZSBpbXBsaWNpdGx5IHF1YWxp ZmllZCB3aXRoIHRoZSBwYXJlbnQKKwkJCQkgKiBzY2hlbWEuICBRdWFsaWZpZWQgbmFtZXMgbXVz dCBtYXRjaCB0aGUgcGFyZW50IHNjaGVtYSDigJQKKwkJCQkgKiBlYWNoIEVYQ0VQVCBjbGF1c2Ug aXMgYm91bmQgdG8gZXhhY3RseSBvbmUgc2NoZW1hLCBzbworCQkJCSAqIGNyb3NzLXNjaGVtYSBl bnRyaWVzIGFyZSByZWplY3RlZCBhdCBwYXJzZSB0aW1lLgorCQkJCSAqLworCQkJCWlmIChwdWJv YmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSkKKwkJCQl7 CisJCQkJCWNvbnN0IGNoYXIgKmVvYmpfc2NoZW1hbmFtZSA9IGVvYmotPnB1YnRhYmxlLT5yZWxh dGlvbi0+c2NoZW1hbmFtZTsKKwkJCQkJY29uc3QgY2hhciAqZW9ial9yZWxuYW1lID0gZW9iai0+ cHVidGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOworCisJCQkJCWlmIChlb2JqX3NjaGVtYW5hbWUg PT0gTlVMTCkKKwkJCQkJCWVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZSA9IHB1 Ym9iai0+bmFtZTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKGVvYmpfc2NoZW1hbmFtZSwgcHVib2Jq LT5uYW1lKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygidGFibGUgXCIlc1wiIGluIEVYQ0VQ VCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSBcIiVzXCIiLAorCQkJCQkJCQkJICAg cXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZW9ial9zY2hlbWFuYW1lLCBlb2JqX3JlbG5hbWUp LAorCQkJCQkJCQkJICAgcHVib2JqLT5uYW1lKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KGVvYmotPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQkJcHVib2Jqc3BlY19saXN0ID0gbGlz dF9jb25jYXQocHVib2Jqc3BlY19saXN0LCBwdWJvYmotPmV4Y2VwdF90YWJsZXMpOworCQkJcHVi b2JqLT5leGNlcHRfdGFibGVzID0gTklMOwogCQl9CiAKIAkJcHJldm9ianR5cGUgPSBwdWJvYmot PnB1Ym9ianR5cGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwppbmRleCA0ZWNmY2JmZjdhYi4uN2VlODRlYzFjODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA5Nyw2ICsyMDk3LDcgQEAgZ2V0X3JlbF9z eW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCSAqIGFy ZSBhYnNvcmJlZCB3aGlsZSBkZWNvZGluZyBXQUwuCiAJCSAqLwogCQlMaXN0CSAgICpzY2hlbWFQ dWJpZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1hSWQpOworCQlMaXN0CSAgICpleGNl cHRfcHViaWRzOwogCQlMaXN0Q2VsbCAgICpsYzsKIAkJT2lkCQkJcHVibGlzaF9hc19yZWxpZCA9 IHJlbGlkOwogCQlpbnQJCQlwdWJsaXNoX2FuY2VzdG9yX2xldmVsID0gMDsKQEAgLTIxMDQsNiAr MjEwNSwyOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlv biByZWxhdGlvbikKIAkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CiAJ CUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7CiAKKwkJLyoKKwkJICogRm9yIHRoZSBz Y2hlbWEgRVhDRVBUIGNoZWNrLCB3ZSBtdXN0IGxvb2sgdXAgdGhlIHRvcC1tb3N0IGFuY2VzdG9y CisJCSAqIHJhdGhlciB0aGFuIHRoZSByZWxhdGlvbiBpdHNlbGYuICBjaGVja19wdWJsaWNhdGlv bl9hZGRfcmVsYXRpb24oKQorCQkgKiBwcmV2ZW50cyBpbmRpdmlkdWFsIHBhcnRpdGlvbnMgZnJv bSBhcHBlYXJpbmcgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsCisJCSAqIHNvIG9ubHkgYSByb290IChu b24tcGFydGl0aW9uKSB0YWJsZSBjYW4gaGF2ZSBwcmV4Y2VwdCA9IHRydWUuCisJCSAqIFVzaW5n IHRoZSBwYXJ0aXRpb24ncyBvd24gT0lEIHdvdWxkIGFsd2F5cyByZXR1cm4gTklMIGFuZCBtaXNz IHRoZQorCQkgKiBleGNsdXNpb24uCisJCSAqLworCQlPaWQJCQlyb290X3JlbGlkOworCisJCWlm IChhbV9wYXJ0aXRpb24pCisJCXsKKwkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRp b25fYW5jZXN0b3JzKHJlbGlkKTsKKworCQkJcm9vdF9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3Rv cnMpOworCQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CisJCX0KKwkJZWxzZQorCQkJcm9vdF9yZWxp ZCA9IHJlbGlkOworCisJCWV4Y2VwdF9wdWJpZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGlj YXRpb25zKHJvb3RfcmVsaWQpOworCiAJCS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVk IGJlZm9yZSB1c2UuICovCiAJCWlmICghcHVibGljYXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjY3 LDcgKzIyOTAsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxh dGlvbiByZWxhdGlvbikKIAogCQkJCQlhbmNlc3RvciA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVi bGljYXRpb24ocHViLT5vaWQsCiAJCQkJCQkJCQkJCQkJCQkgICBhbmNlc3RvcnMsCi0JCQkJCQkJ CQkJCQkJCQkgICAmbGV2ZWwpOworCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsLAorCQkJCQkJCQkJ CQkJCQkJICAgZXhjZXB0X3B1Ymlkcyk7CiAKIAkJCQkJaWYgKGFuY2VzdG9yICE9IEludmFsaWRP aWQpCiAJCQkJCXsKQEAgLTIyODEsNyArMjMwNSw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCX0KIAogCQkJCWlmIChsaXN0 X21lbWJlcl9vaWQocHViaWRzLCBwdWItPm9pZCkgfHwKLQkJCQkJbGlzdF9tZW1iZXJfb2lkKHNj aGVtYVB1YmlkcywgcHViLT5vaWQpIHx8CisJCQkJCShsaXN0X21lbWJlcl9vaWQoc2NoZW1hUHVi aWRzLCBwdWItPm9pZCkgJiYKKwkJCQkJICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3B1Ymlkcywg cHViLT5vaWQpKSB8fAogCQkJCQlhbmNlc3Rvcl9wdWJsaXNoZWQpCiAJCQkJCXB1Ymxpc2ggPSB0 cnVlOwogCQkJfQpAQCAtMjM2MCw2ICsyMzg1LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJbGlzdF9mcmVlKHB1Ymlkcyk7 CiAJCWxpc3RfZnJlZShzY2hlbWFQdWJpZHMpOworCQlsaXN0X2ZyZWUoZXhjZXB0X3B1Ymlkcyk7 CiAJCWxpc3RfZnJlZShyZWxfcHVibGljYXRpb25zKTsKIAogCQllbnRyeS0+cmVwbGljYXRlX3Zh bGlkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggZTE0NDk2NTRmOTYuLmU1YjFhNzBlMDVlIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwpAQCAtNzAzOCw2ICs3MDM4LDI0IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIg KnBhdHRlcm4pCiAJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJU YWJsZXMgZnJvbSBzY2hlbWFzOiIpLAogCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQogCQkJCQln b3RvIGVycm9yX3JldHVybjsKKworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJ CQl7CisJCQkJCS8qCisJCQkJCSAqIEdldCB0YWJsZXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9y IHRoaXMgc2NoZW1hCisJCQkJCSAqIHB1YmxpY2F0aW9uLgorCQkJCQkgKi8KKwkJCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCSAgIlNFTEVDVCBjb25jYXQoYy5yZWxuYW1lc3Bh Y2U6OnJlZ25hbWVzcGFjZSwgJy4nLCBjLnJlbG5hbWUpXG4iCisJCQkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgY1xuIgorCQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cu cGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkJ ICAiV0hFUkUgcHIucHJwdWJpZCA9ICclcydcbiIKKwkJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhj ZXB0XG4iCisJCQkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOworCQkJCQlpZiAoIWFkZEZv b3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6IiksCisJCQkJCQkJ CQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCQkJfQogCQkJ fQogCQl9CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBkZTU0N2E4Y2IzNy4uZmUx MWRjNjE5YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTEwNjUsNiArMTA2NSwxNSBAQCBz dGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX3RyaWdnZXJfb2ZfdGFibGUgPSB7CiAi U0VMRUNUIG5zcG5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSAiXAogIiBXSEVSRSBu c3BuYW1lIExJS0UgJyVzJyIKIAorI2RlZmluZSBRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNfaW5f c2NoZW1hIFwKKyJTRUxFQ1Qgbi5uc3BuYW1lIHx8ICcuJyB8fCBjLnJlbG5hbWUgIlwKKyIgIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjICJcCisiICAgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19u YW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlICJcCisiIFdIRVJFIGMucmVsa2lu ZCBJTiAoIiBDcHBBc1N0cmluZzIoUkVMS0lORF9SRUxBVElPTikgIiwgIiBcCisJCQkJCQlDcHBB c1N0cmluZzIoUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgIikgIlwKKyIgICBBTkQgKG4ubnNw bmFtZSB8fCAnLicgfHwgYy5yZWxuYW1lKSBMSUtFICclcycgIlwKKyIgICBBTkQgbi5uc3BuYW1l ID0gJyVzJyIKKwogLyogVXNlIENPTVBMRVRFX1dJVEhfUVVFUllfVkVSQkFUSU0gd2l0aCB0aGVz ZSBxdWVyaWVzIGZvciBHVUMgbmFtZXM6ICovCiAjZGVmaW5lIFF1ZXJ5X2Zvcl9saXN0X29mX2Fs dGVyX3N5c3RlbV9zZXRfdmFycyBcCiAiU0VMRUNUIHBnX2NhdGFsb2cubG93ZXIobmFtZSkgRlJP TSBwZ19jYXRhbG9nLnBnX3NldHRpbmdzICJcCkBAIC0zNzg3LDggKzM3OTYsMTkgQEAgbWF0Y2hf cHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEhfUVVFUllfUExV UyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAiIEFORCBuc3BuYW1lIE5PVCBM SUtFIEUncGdcXFxcXyUlJyIsCiAJCQkJCQkJCSAiQ1VSUkVOVF9TQ0hFTUEiKTsKLQllbHNlIGlm IChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJM RVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmICghZW5kc193aXRoKHByZXZfd2QsICcs JykpKQotCQlDT01QTEVURV9XSVRIKCJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVB VEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NI RU1BIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVf V0lUSCgiRVhDRVBUICggVEFCTEUiLCAiV0lUSCAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JF QVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlND SEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZP UiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIpKQor CQlDT01QTEVURV9XSVRIKCJUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBN YXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9y ZWZlcmVuY2UocHJldjRfd2QpOworCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5 X2Zvcl9saXN0X29mX3RhYmxlc19pbl9zY2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJD UkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAi U0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYg IWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJLyogQ29t cGxldGUgIkNSRUFURSBQVUJMSUNBVElPTiA8bmFtZT4gWy4uLl0gV0lUSCIgKi8KIAllbHNlIGlm IChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueU4sICJXSVRIIiwgIigi KSkKIAkJQ09NUExFVEVfV0lUSCgicHVibGlzaCIsICJwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5z IiwgInB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290Iik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmgKaW5kZXggODliNGJiMTRmNjIuLjUzZTNkN2M2ZjNkIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0xOTEsNyArMTkxLDggQEAgZXh0ZXJuIExpc3QgKkdldFB1 YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1Ymxp Y2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJT2lkIHJlbGlkKTsKIGV4dGVy biBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICph bmNlc3RvcnMsCi0JCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwpOworCQkJCQkJCQkJCQlp bnQgKmFuY2VzdG9yX2xldmVsLAorCQkJCQkJCQkJCQlMaXN0ICpleGNlcHRfcHViaWRzKTsKIAog ZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVy biBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQgcHViaWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCmluZGV4IDkxMzc3YTZjZGUzLi45OGEwM2MwZWVkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aApAQCAtNDQ5Myw2ICs0NDkzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25PYmpTcGVj CiAJUHVibGljYXRpb25PYmpTcGVjVHlwZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVi bGljYXRpb24gb2JqZWN0ICovCiAJY2hhcgkgICAqbmFtZTsKIAlQdWJsaWNhdGlvblRhYmxlICpw dWJ0YWJsZTsKKwlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiB0YWJsZXMgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgY2xhdXNlIChmb3IKKwkJCQkJCQkJICogVEFCTEVTIElOIFNDSEVNQSkgKi8K IAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3du ICovCiB9IFB1YmxpY2F0aW9uT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAppbmRleCAyOWU1NGIyMTRhMC4uMDA4YzZjZWJhY2EgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yNzAsNiArMjcwLDEyIEBAIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTIgRk9SIEFM TCBUQUJMRVMgRVhDRVBUICh0ZXN0CiBFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0 ZXN0cHViX3RibDEiCiBMSU5FIDE6IC4uLl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUyIEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90Yi4uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIGZhaWwgLSBFWENFUFQg aXMgbm90IGFsbG93ZWQgZm9yIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2V4Y2VwdF9lcnIKKyAgICBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0 cHViX3RibDIgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDMpOworRVJST1I6ICBFWENFUFQgaXMg bm90IGFsbG93ZWQgZm9yIFRBQkxFIHB1YmxpY2F0aW9uIG9iamVjdHMKK0xJTkUgMjogICAgIEZP UiBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMiBFWENFUFQgKFRBQkxFIHRlc3RwLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIFNFVCBBTEwgVEFCTEVTL1NFUVVFTkNF UwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NzAs NyArNDc2LDEwMyBAQCBISU5UOiAgQ2hhbmdlIHRoZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1 c2UgdXNpbmcgQUxURVIgUFVCTElDQVRJT04gLi4uIFNFVCBBTAogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0YWJfbWFp bjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7Ci0tLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9u cyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIFRBQkxFUyBJTiBTQ0hFTUEKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworLS0gQ3JlYXRlIHRhYmxlcyBpbiBwdWJfdGVzdCBmb3IgdGhlc2UgdGVz dHMKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBr ZXksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIgKHggaW50 IHByaW1hcnkga2V5LCB5IHRleHQpOworLS0gQ3JlYXRlIHNhbWUtbmFtZWQgdGFibGVzIGluIHB1 YmxpYyB0byB2ZXJpZnkgdW5xdWFsaWZpZWQgRVhDRVBUIGVudHJpZXMKKy0tIGFyZSBxdWFsaWZp ZWQgd2l0aCB0aGUgbmFtZWQgc2NoZW1hLCBub3QgcHVibGljCitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl9ub3BrIChmb28gaW50LCBiYXIgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9zMSAo YSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CistLSBCYXNpYzogZXhjbHVkZSBvbmUgdGFibGUg ZnJvbSBhIHNjaGVtYSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2No ZW1hX2V4Y2VwdDEKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2Vw dDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAK K1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRhYmxlczoKKyAg ICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisKKy0tIEV4Y2x1ZGUgbXVsdGlwbGUgdGFibGVz IHVzaW5nIHVucXVhbGlmaWVkIG5hbWVzOyBzYW1lLW5hbWVkIHRhYmxlcyBleGlzdCBpbgorLS0g cHVibGljIHRvIGNvbmZpcm0gdW5xdWFsaWZpZWQgbmFtZXMgcmVzb2x2ZSB0byBwdWJfdGVzdCwg bm90IHB1YmxpYworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKyAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfbm9w aywgdGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZy b20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVz dC50ZXN0cHViX25vcGsiCisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorCistLSBmYWls OiBFWENFUFQgdGFibGUgYmVsb25ncyB0byBhIGRpZmZlcmVudCBzY2hlbWEKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2V4Y2VwdF93cm9uZ3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjog IHRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJl bG9uZyB0byBzY2hlbWEgInB1Yl90ZXN0IgorTElORSAyOiAgICAgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHAuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbDogY3Jv c3Mtc2NoZW1hIEVYQ0VQVCBub3QgYWxsb3dlZDsgZWFjaCBFWENFUFQgaXMgYm91bmQgdG8gaXRz IGltbWVkaWF0ZSBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9jcm9z c3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBwdWJsaWMgRVhDRVBU IChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHVibGljLnRlc3RwdWJfdGJsMSk7CitF UlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIgaW4gRVhDRVBUIGNsYXVzZSBk b2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hICJwdWJsaWMiCitMSU5FIDI6IC4uLlIgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCwgcHVibGljIEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudC4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIE11bHRpcGxlIHNjaGVtYXMgZWFjaCB3aXRoIHRoZWlyIG93biBFWENFUFQgY2xhdXNl CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpCisgICAgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3RibF9zMSksCisgICAgICAgICAgICAgICAgICBwdWJsaWMgRVhDRVBUIChUQUJMRSB0ZXN0cHVi X3RibDEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNj aGVtYXM6CisgICAgInB1Yl90ZXN0IgorICAgICJwdWJsaWMiCitFeGNlcHQgdGFibGVzOgorICAg ICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKwor LS0gZmFpbDogdGFibGUgYXBwZWFycyBpbiBib3RoIHRoZSBleHBsaWNpdCB0YWJsZSBsaXN0IGFu ZCB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2Nv bmZsaWN0CisgICAgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOwor RVJST1I6ICB0YWJsZSAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiIGNhbm5vdCBhcHBlYXIgaW4g Ym90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhlIEVYQ0VQVCBjbGF1c2UKKy0tIGZhaWw6IG5vbmV4 aXN0ZW50IHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2V4Y2VwdF9ub3JlbAorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAo VEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUpOworRVJST1I6ICByZWxhdGlvbiAicHVi X3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUiIGRvZXMgbm90IGV4aXN0CistLSBmYWlsOiBwYXJ0aXRp b24gY2Fubm90IGFwcGVhciBpbiBFWENFUFQgY2xhdXNlOyBvbmx5IHJvb3QgdGFibGVzIGFyZSBh bGxvd2VkCitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyAoYSBpbnQpIFBB UlRJVElPTiBCWSBMSVNUIChhKTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRf cyBQQVJUSVRJT04gT0YgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyBGT1IgVkFMVUVTIElOICgx KTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9wYXJ0aXRpb24KKyAgICBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf cGFydF9zKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgcmVsYXRpb24gInB1Yl90ZXN0LnRlc3Rw dWJfcGFydF9zIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZQorREVUQUlMOiAgVGhp cyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgaW5kaXZpZHVhbCBwYXJ0aXRpb25zLgor LS0gZmFpbDogVEFCTEUga2V5d29yZCBpcyByZXF1aXJlZCBmb3IgdGhlIGZpcnN0IGVudHJ5IGlu IHRoZSBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9r dworICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3Br KTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfbm9wayIKK0xJTkUg MjogICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3Br KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gQ2xlYW51cAorUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOworRFJPUCBUQUJMRSBw dWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIENBU0NBREU7CitEUk9QIFRBQkxFIHRlc3RwdWJfbm9w aywgdGVzdHB1Yl90YmxfczE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2Vw dDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aTsK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMg Zm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsK IENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOwogLS0gRk9SIEFMTCBT RVFVRU5DRVMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCAwNDFlMTRhNGRl Ni4uOTE2MmQ0ZDE1YTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTEy Myw2ICsxMjMsOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTAogXGQgdGVzdHB1Yl90YmwxCiAt LSBmYWlsIC0gZmlyc3QgdGFibGUgaW4gdGhlIEVYQ0VQVCBsaXN0IHNob3VsZCB1c2UgVEFCTEUg a2V5d29yZAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRh YmxlMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsK Ky0tIGZhaWwgLSBFWENFUFQgaXMgbm90IGFsbG93ZWQgZm9yIEZPUiBUQUJMRSBwdWJsaWNhdGlv bnMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9lcnIKKyAgICBGT1IgVEFCTEUg dGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDMpOwog CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIFNFVCBB TEwgVEFCTEVTL1NFUVVFTkNFUwpAQCAtMjIwLDcgKzIyMyw3MSBAQCBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRlc3RwdWJfcGFydDEsIHRhYl9t YWluOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIAotLS0tIFRlc3RzIGZvciBwdWJsaWNh dGlvbnMgd2l0aCBTRVFVRU5DRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gRVhDRVBUIHRlc3RzIGZvciBUQUJMRVMgSU4gU0NIRU1BCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKKy0tIENyZWF0ZSB0YWJsZXMgaW4gcHViX3Rlc3QgZm9yIHRoZXNl IHRlc3RzCitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEgKGEgaW50IHByaW1h cnkga2V5LCBiIHRleHQpOworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyICh4 IGludCBwcmltYXJ5IGtleSwgeSB0ZXh0KTsKKy0tIENyZWF0ZSBzYW1lLW5hbWVkIHRhYmxlcyBp biBwdWJsaWMgdG8gdmVyaWZ5IHVucXVhbGlmaWVkIEVYQ0VQVCBlbnRyaWVzCistLSBhcmUgcXVh bGlmaWVkIHdpdGggdGhlIG5hbWVkIHNjaGVtYSwgbm90IHB1YmxpYworQ1JFQVRFIFRBQkxFIHRl c3RwdWJfbm9wayAoZm9vIGludCwgYmFyIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymxf czEgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQpOworCistLSBCYXNpYzogZXhjbHVkZSBvbmUg dGFibGUgZnJvbSBhIHNjaGVtYSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfc2NoZW1hX2V4Y2VwdDEKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENF UFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1h X2V4Y2VwdDEKKworLS0gRXhjbHVkZSBtdWx0aXBsZSB0YWJsZXMgdXNpbmcgdW5xdWFsaWZpZWQg bmFtZXM7IHNhbWUtbmFtZWQgdGFibGVzIGV4aXN0IGluCistLSBwdWJsaWMgdG8gY29uZmlybSB1 bnF1YWxpZmllZCBuYW1lcyByZXNvbHZlIHRvIHB1Yl90ZXN0LCBub3QgcHVibGljCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorICAgIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMSk7 CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHQyCisKKy0tIGZhaWw6IEVYQ0VQVCB0YWJsZSBi ZWxvbmdzIHRvIGEgZGlmZmVyZW50IHNjaGVtYQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZXhjZXB0X3dyb25nc2NoZW1hCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhD RVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKKworLS0gZmFpbDogY3Jvc3Mtc2NoZW1h IEVYQ0VQVCBub3QgYWxsb3dlZDsgZWFjaCBFWENFUFQgaXMgYm91bmQgdG8gaXRzIGltbWVkaWF0 ZSBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9jcm9zc3NjaGVtYQor ICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBwdWJsaWMgRVhDRVBUIChUQUJMRSBw dWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHVibGljLnRlc3RwdWJfdGJsMSk7CisKKy0tIE11bHRp cGxlIHNjaGVtYXMgZWFjaCB3aXRoIHRoZWlyIG93biBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpCisgICAgRk9SIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisg ICAgICAgICAgICAgICAgICBwdWJsaWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRS cCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpCisKKy0tIGZhaWw6IHRhYmxlIGFwcGVhcnMg aW4gYm90aCB0aGUgZXhwbGljaXQgdGFibGUgbGlzdCBhbmQgdGhlIEVYQ0VQVCBjbGF1c2UKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9jb25mbGljdAorICAgIEZPUiBUQUJMRSBw dWJfdGVzdC50ZXN0cHViX3RibF9zMSwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQg KFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKKworLS0gZmFpbDogbm9uZXhpc3RlbnQg dGFibGUgaW4gRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0 X25vcmVsCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBw dWJfdGVzdC5ub25leGlzdGVudF90YWJsZSk7CisKKy0tIGZhaWw6IHBhcnRpdGlvbiBjYW5ub3Qg YXBwZWFyIGluIEVYQ0VQVCBjbGF1c2U7IG9ubHkgcm9vdCB0YWJsZXMgYXJlIGFsbG93ZWQKK0NS RUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIChhIGludCkgUEFSVElUSU9OIEJZ IExJU1QgKGEpOworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zIFBBUlRJVElP TiBPRiBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIEZPUiBWQUxVRVMgSU4gKDEpOworQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X3BhcnRpdGlvbgorICAgIEZPUiBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MpOwor CistLSBmYWlsOiBUQUJMRSBrZXl3b3JkIGlzIHJlcXVpcmVkIGZvciB0aGUgZmlyc3QgZW50cnkg aW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9u b2t3CisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25v cGspOworCistLSBDbGVhbnVwCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJM RSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90YmxfczI7CitEUk9Q IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgQ0FTQ0FERTsKK0RST1AgVEFCTEUgdGVz dHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hl bWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0 X211bHRpOworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3Nf cHViX3NlcTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggOGM1OGQyODJlZWUuLjE4Yzdi MmMxZmNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBs CisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKQEAgLTI0LDE0ICsy NCwxNyBAQCBteSAkcmVzdWx0OwogCiBzdWIgdGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24KIHsK LQlteSAoJHB1YnZpYXJvb3QpID0gQF87CisJbXkgKCRwdWJ2aWFyb290LCAkcHVic3FsKSA9IEBf OworCSRwdWJzcWwgLy89CisJICAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3QxKSI7CisJJHB1YnNxbCAuPSAiIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJHB1YnZpYXJvb3QpIjsKIAogCSMgSWYgdGhlIHJv b3QgcGFydGl0aW9uZWQgdGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsIGFsbCBpdHMKIAkj IHBhcnRpdGlvbnMgYXJlIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24sIHJlZ2FyZGxlc3Mgb2Yg dGhlCiAJIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBzZXR0aW5nLgogCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxcSgKLQkJQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3QxKSBXSVRIIChw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICRwdWJ2aWFyb290KTsKKwkJJHB1YnNxbDsKIAkJ SU5TRVJUIElOVE8gcm9vdDEgVkFMVUVTICgxKSwgKDEwMSk7CiAJKSk7CiAJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0yMjMsNiArMjI2LDEzMSBAQCAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiB0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbignZmFsc2Un KTsKIHRlc3RfZXhjZXB0X3Jvb3RfcGFydGl0aW9uKCd0cnVlJyk7CiAKKyMgU2FtZSB2YWxpZGF0 aW9uIHVzaW5nIFRBQkxFUyBJTiBTQ0hFTUEgaW5zdGVhZCBvZiBGT1IgQUxMIFRBQkxFUy4KK215 ICRzY2hlbWFfcHViID0KKyAgIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHVibGljIEVYQ0VQVCAoVEFCTEUgcHVibGljLnJvb3QxKSI7Cit0ZXN0 X2V4Y2VwdF9yb290X3BhcnRpdGlvbignZmFsc2UnLCAkc2NoZW1hX3B1Yik7Cit0ZXN0X2V4Y2Vw dF9yb290X3BhcnRpdGlvbigndHJ1ZScsICRzY2hlbWFfcHViKTsKKworIyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgdGVzdCBjYXNlcyBmb3Ig VEFCTEVTIElOIFNDSEVNQQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCisjIENyZWF0ZSBhIGRlZGljYXRlZCBzY2hlbWEgd2l0aCB0d28gdGFibGVzOiBv bmUgdG8gYmUgcHVibGlzaGVkIGFuZCBvbmUgdG8gYmUKKyMgZXhjbHVkZWQuICBBbHNvIGNyZWF0 ZSBpbmhlcml0ZWQgdGFibGVzIHRvIHZlcmlmeSBPTkxZIHNlbWFudGljcy4KKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsK KwlDUkVBVEUgVEFCTEUgc2NoMS50YWJfcHVibGlzaGVkIEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJp ZXMoMSw1KSBBUyBhOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYl9leGNsdWRlZCBBUyBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEsNSkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJlbnQgKGEg aW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5jaGlsZCAoYiBpbnQpIElOSEVSSVRTIChzY2gxLnBh cmVudCk7CispKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJfcHVibGlz aGVkIChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEudGFiX2V4Y2x1ZGVkIChhIGludCk7CisJ Q1JFQVRFIFRBQkxFIHNjaDEucGFyZW50IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hp bGQgKGIgaW50KSBJTkhFUklUUyAoc2NoMS5wYXJlbnQpOworKSk7CisKKyMgQmFzaWMgdGVzdDog aW5pdGlhbCBzeW5jIHJlc3BlY3RzIEVYQ0VQVC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBzY2hfcHViIEZPUiBUQUJMRVMgSU4g U0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBzY2gxLnRhYl9leGNsdWRlZCkiCispOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04g c2NoX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNjaF9w dWIiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5v ZGVfcHVibGlzaGVyLCAnc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFi X3B1Ymxpc2hlZCIpOworaXMoJHJlc3VsdCwgcXEoNSksCisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhD RVBUOiBpbml0aWFsIHN5bmMgY29waWVzIGluY2x1ZGVkIHRhYmxlJyk7CiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVT IElOIFNDSEVNQSBFWENFUFQ6IGluaXRpYWwgc3luYyBza2lwcyBleGNsdWRlZCB0YWJsZScpOwor CisjIERNTDogb25seSB0aGUgaW5jbHVkZWQgdGFibGUgc2hvdWxkIGJlIHJlcGxpY2F0ZWQuCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5U TyBzY2gxLnRhYl9wdWJsaXNoZWQgVkFMVUVTICg2KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9l eGNsdWRlZCBWQUxVRVMgKDYpOworKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQi KTsKK2lzKCRyZXN1bHQsIHFxKDYpLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogRE1MIG9u IGluY2x1ZGVkIHRhYmxlIGlzIHJlcGxpY2F0ZWQnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2No MS50YWJfZXhjbHVkZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdUQUJMRVMgSU4gU0NIRU1B IEVYQ0VQVDogRE1MIG9uIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCByZXBsaWNhdGVkJyk7CisKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04g c2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1Ag UFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIEluaGVyaXRlZCB0YWJsZXM6IGV4Y2x1ZGluZyB0 aGUgcGFyZW50ICh3aXRob3V0IE9OTFkpIGFsc28gZXhjbHVkZXMgdGhlIGNoaWxkLgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNj aF9wdWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBFWENFUFQgKFRBQkxFIHNjaDEucGFyZW50 KSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFNVQlNDUklQVElPTiBzY2hfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVC TElDQVRJT04gc2NoX3B1YiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3Jp cHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEuY2hpbGQgVkFMVUVT IChnZW5lcmF0ZV9zZXJpZXMoMSw1KSwgZ2VuZXJhdGVfc2VyaWVzKDEsNSkpIgorKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBzY2gxLmNoaWxkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVTIElOIFNDSEVN QSBFWENFUFQ6IGV4Y2x1ZGluZyBwYXJlbnQgKHdpdGhvdXQgT05MWSkgYWxzbyBleGNsdWRlcyBj aGlsZCcKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJP UCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIFRlc3QgdGhhdCBFWENF UFQgKFRBQkxFIE9OTFkgcGFyZW50KSBleGNsdWRlcyBvbmx5IHRoZSBwYXJlbnQgaXRzZWxmLCBu b3QgaXRzCisjIGNoaWxkLiAgVHJ1bmNhdGUgY2hpbGQgZmlyc3Qgc28gcm93cyBmcm9tIHRoZSBw cmV2aW91cyB0ZXN0IGFyZSBub3QgY29waWVkIGJ5CisjIHRoZSBpbml0aWFsIHRhYmxlIHN5bmMg b2YgdGhlIG5leHQgc3Vic2NyaXB0aW9uLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ1RSVU5DQVRFIHNjaDEuY2hpbGQnKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgc2NoMS5jaGlsZCcpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNjaF9wdWIgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBFWENFUFQgKFRBQkxFIE9OTFkgc2NoMS5wYXJlbnQpIgor KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VC U0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNB VElPTiBzY2hfcHViIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlv bl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS5jaGlsZCBWQUxVRVMgKGdl bmVyYXRlX3NlcmllcygxLDUpLCBnZW5lcmF0ZV9zZXJpZXMoMSw1KSkiCispOworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHNjaDEuY2hpbGQiKTsKK2lzKCRyZXN1bHQsIHFxKDUpLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVY Q0VQVDogT05MWSBwYXJlbnQgaW4gRVhDRVBUIGRvZXMgbm90IGV4Y2x1ZGUgY2hpbGQnKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElP TiBzY2hfc3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJP UCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CisKKyMgQ2xlYW51cCBzY2hlbWEgdGFibGVzIGJlZm9y ZSB0aGUgbXVsdGktcHVibGljYXRpb24gc2VjdGlvbi4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdEUk9QIFNDSEVNQSBzY2gxIENBU0NBREUnKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7 CisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgVGVz dCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0 aW9ucwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAt MjU0LDYgKzM4Miw3IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCURST1AgUFVCTElD QVRJT04gdGFwX3B1YjI7CiAJVFJVTkNBVEUgdGFiMTsKICkpOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7CiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVFJVTkNBVEUgdGFiMSkpOwog CiAjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRlZCBieSBwdWIxIEVYQ0VQVCBjbGF1c2UsIGJ1 dCBpdCBpcyBpbmNsdWRlZCBieSBwdWIyCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000005eae7e0653017354 Content-Type: application/x-patch; name="v8-0002-tab-complete-to-give-suggestions-in-case-of-multi.patch" Content-Disposition: attachment; filename="v8-0002-tab-complete-to-give-suggestions-in-case-of-multi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpr7ws3k1 RnJvbSA1MmZjMjFmYmEzOTgzNDg1NDA2NTY1MzIxZTA2MDcwNTdmYThlNDhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBGcmksIDI5IE1heSAyMDI2IDE5OjUwOjEyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 OCAyLzRdIHRhYiBjb21wbGV0ZSB0byBnaXZlIHN1Z2dlc3Rpb25zIGluIGNhc2Ugb2YKIG11bHRp LXNjaGVtYS4KCi0tLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIHwgMjYgKysrKysr KysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA1 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBmZTExZGM2MTlhYy4uODMx YmUyN2FkMDggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTM3OTEsMjQgKzM3OTEsNDAgQEAg bWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAKIAkvKgogCSAqIENvbXBsZXRl ICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJMRVMgSU4gU0NIRU1BIDxzY2hlbWE+ LCAuLi4iCisJICoKKwkgKiBVc2UgSGVhZE1hdGNoZXMrVGFpbE1hdGNoZXMgaW5zdGVhZCBvZiBN YXRjaGVzIGZvciB0aGUgRVhDRVBUIHN1Yi1ydWxlcworCSAqIHNvIHRoYXQgYSBjb21tYS1zZXBh cmF0ZWQgc2NoZW1hIGxpc3QgKGUuZy4gIlNDSEVNQSBzMSwgczIiKSBpcyBoYW5kbGVkCisJICog Y29ycmVjdGx5OiBIZWFkTWF0Y2hlcyBhbmNob3JzIHRoZSBmaXhlZCBwcmVmaXggd2hpbGUgVGFp bE1hdGNoZXMgYW5jaG9ycworCSAqIHRoZSBmaXhlZCBzdWZmaXgsIGxlYXZpbmcgYW55IG51bWJl ciBvZiBzY2hlbWEgdG9rZW5zIGluIGJldHdlZW4uCiAJICovCiAJZWxzZSBpZiAoTWF0Y2hlcygi Q1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwg IlNDSEVNQSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zf c2NoZW1hcwogCQkJCQkJCQkgIiBBTkQgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAog CQkJCQkJCQkgIkNVUlJFTlRfU0NIRU1BIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIs IE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCi0JCUNPTVBMRVRFX1dJVEgo IkVYQ0VQVCAoIFRBQkxFIiwgIldJVEggKCIpOwotCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEi LCBNYXRjaEFueSwgIkVYQ0VQVCIpKQorCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIikg JiYKKwkJCSBUYWlsTWF0Y2hlcyhNYXRjaEFueSwgIkVYQ0VQVCIpKQogCQlDT01QTEVURV9XSVRI KCIoIFRBQkxFIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhD RVBUIiwgIigiKSkKKwllbHNlIGlmIChIZWFkTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIpICYmCisJCQkgVGFp bE1hdGNoZXMoTWF0Y2hBbnksICJFWENFUFQiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJM RSIpOwotCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIo IiwgIlRBQkxFIikpCisJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElP TiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiKSAmJgorCQkJIFRh aWxNYXRjaGVzKE1hdGNoQW55LCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiKSkKIAl7CiAJCXNldF9j b21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CiAJCUNPTVBMRVRFX1dJVEhfUVVFUllfVkVS QkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX3NjaGVtYSk7CiAJfQorCS8qIFNpbmds ZS1zY2hlbWEgcGF0aDogaGFuZGxlcyB6ZXJvLW9yLW1vcmUgdGFibGUgbmFtZXMgYWZ0ZXIgVEFC TEUgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAi KCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlD T01QTEVURV9XSVRIKCIpIik7CisJLyogTXVsdGktc2NoZW1hIHBhdGg6IGNvdmVycyBleGFjdGx5 IG9uZSB0YWJsZSBuYW1lIGFmdGVyIFRBQkxFICovCisJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkNS RUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJT Q0hFTUEiKSAmJgorCQkJIFRhaWxNYXRjaGVzKCJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNo QW55KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsK KwllbHNlIGlmIChIZWFkTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIpICYmCisJCQkgKFRhaWxNYXRjaGVzKCJT Q0hFTUEiLCBNYXRjaEFueSkgfHwgZW5kc193aXRoKHByZXYyX3dkLCAnLCcpKSAmJgorCQkJICFl bmRzX3dpdGgocHJldl93ZCwgJywnKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcpJykgJiYKKwkJ CSAhVGFpbE1hdGNoZXMoTWF0Y2hBbnksICI9IiwgTWF0Y2hBbnksIE1hdGNoQW55KSkKKwkJQ09N UExFVEVfV0lUSCgiRVhDRVBUICggVEFCTEUiLCAiV0lUSCAoIik7CiAJLyogQ29tcGxldGUgIkNS RUFURSBQVUJMSUNBVElPTiA8bmFtZT4gWy4uLl0gV0lUSCIgKi8KIAllbHNlIGlmIChNYXRjaGVz KCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueU4sICJXSVRIIiwgIigiKSkKIAkJQ09N UExFVEVfV0lUSCgicHVibGlzaCIsICJwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zIiwgInB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290Iik7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000005eae7e0653017354 Content-Type: application/x-patch; name="v8-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABLE.patch" Content-Disposition: attachment; filename="v8-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpr7wx4q2 RnJvbSA2YjBhZGI1MGNjZGE3YWNlMzAxZDM5OGU0ZjVmYzQzZTE0Yjc0Yzk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBGcmksIDI5IE1heSAyMDI2IDIwOjA0OjU3ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 OCAzLzRdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBBREQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCB0aGUgRVhDRVBUIGNsYXVzZSBzdXBwb3J0IHRvIGFsbG93IHRh YmxlcyB0byBiZSBleGNsdWRlZCB3aGVuCmFkZGluZyBhIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9u IHZpYSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQURELgoKU3ludGF4OgogIEFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgcy50MSk7CgpTaW5j ZSBwZ19kdW1wIHVzZXMgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCwgc3VwcG9ydCBmb3IgaXQg aXMKaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwgICB8ICA0MCArKysrKysrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMgICAgfCAxMDggKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgfCAgMzAgKysrKystCiBzcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICB8ICAzNiArKysrKysrKwogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTUgKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCB8ICAzMiArKysrKystCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICB8ICAyMCArKystCiBzcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzdfZXhjZXB0LnBsICAgICB8ICAzMiArKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDMx NyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwKaW5kZXggYWEzMmJiMTY5ZTkuLjczZjYzNzVhNjZmIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCkBAIC0zMSw3ICszMSw3IEBAIEFMVEVSIFBV QkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4gUkVOQU1FIFRPIDxyCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+ CiAKICAgICBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2Nv bHVtbnM8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQotICAgIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENV UlJFTlRfU0NIRU1BIH0gWywgLi4uIF0KKyAgICBUQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0KIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0 aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTQ3 LDYgKzQ3LDEwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBd ICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiApIF0KIAorPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlc19pbl9zY2hlbWE8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAg IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJs ZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9v YmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogICAgIFRBQkxFIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQpA QCAtMTEwLDYgKzExNCwxNCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgPGxpdGVyYWw+ QUREIFRBQkxFPC9saXRlcmFsPi4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgVGhlIDxsaXRl cmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBiZSB1c2VkIHdpdGgKKyAgIDxsaXRlcmFs PkFERCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxl cyBmcm9tIHRoZQorICAgcHVibGljYXRpb24uIFVzaW5nIDxsaXRlcmFsPkRST1AgVEFCTEVTIElO IFNDSEVNQTwvbGl0ZXJhbD4gb24gYSBwdWJsaWNhdGlvbgorICAgd2lsbCBhdXRvbWF0aWNhbGx5 IGFsc28gcmVtb3ZlIGFueSBhc3NvY2lhdGVkIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KKyAg IGVudHJpZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBmb3VydGggdmFyaWFudCBv ZiB0aGlzIGNvbW1hbmQgbGlzdGVkIGluIHRoZSBzeW5vcHNpcyBjYW4gY2hhbmdlCiAgICBhbGwg b2YgdGhlIHB1YmxpY2F0aW9uIHByb3BlcnRpZXMgc3BlY2lmaWVkIGluCkBAIC0xOTgsNiArMjEw LDIyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFy bGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQ VCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9y ZXBsYWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFdoZW4gdXNlZCB3aXRoIDxsaXRlcmFsPkFERCBUQUJMRVMgSU4g U0NIRU1BPC9saXRlcmFsPiwgc3BlY2lmaWVzCisgICAgICB0YWJsZXMgdG8gYmUgZXhjbHVkZWQg ZnJvbSB0aGUgcHVibGljYXRpb24uICBFYWNoIG5hbWVkCisgICAgICB0YWJsZSBtdXN0IGJlbG9u ZyB0byB0aGUgc2NoZW1hIHNwZWNpZmllZCBpbiB0aGUgc2FtZQorICAgICAgPGxpdGVyYWw+VEFC TEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gY2xhdXNlLiAgVGFibGUgbmFtZXMgbWF5IGJlCisgICAg ICBzY2hlbWEtcXVhbGlmaWVkIG9yIHVucXVhbGlmaWVkOyB1bnF1YWxpZmllZCBuYW1lcyBhcmUg aW1wbGljaXRseQorICAgICAgcXVhbGlmaWVkIHdpdGggdGhlIHNjaGVtYSBuYW1lZCBpbiB0aGUg c2FtZSBjbGF1c2UuICBTZWUKKyAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNh dGlvbiIvPiBmb3IgZnVydGhlciBkZXRhaWxzIG9uIHRoZQorICAgICAgc2VtYW50aWNzIG9mIDxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVy YWw+U0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFt ZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1 ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0 ZW0+CkBAIC0yODgsNiArMzE2LDE2IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0 aW9uIEFERCBUQUJMRVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0 aW5nPgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBBZGQgc2NoZW1hIDxzdHJ1Y3RuYW1lPnNh bGVzPC9zdHJ1Y3RuYW1lPiB0byB0aGUgcHVibGljYXRpb24KKyAgIDxzdHJ1Y3RuYW1lPnNhbGVz X3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPiwgZXhjbHVkaW5nIHRoZQorICAgPHN0cnVjdG5hbWU+ c2FsZXMuaW50ZXJuYWw8L3N0cnVjdG5hbWU+IGFuZAorICAgPHN0cnVjdG5hbWU+c2FsZXMuZHJh ZnRzPC9zdHJ1Y3RuYW1lPiB0YWJsZXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNB VElPTiBzYWxlc19wdWJsaWNhdGlvbiBBREQgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQg KFRBQkxFIGludGVybmFsLCBkcmFmdHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CiAgIDxwYXJhPgogICAgQWRkIHRhYmxlcyA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4s CiAgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT4gYW5kIHNjaGVtYQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDRhZjBkNzQ4MTRhLi5iMzBlYWRhNTFk ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNjQ5LDE1ICs2NDksMTgg QEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZv ICpwcmksCiAJICogaGVyZSwgYXMgQ3JlYXRlUHVibGljYXRpb24oKSBmdW5jdGlvbiBpbnZhbGlk YXRlcyBhbGwgcmVsYXRpb25zIGFzIHBhcnQKIAkgKiBvZiBkZWZpbmluZyBhIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9uLgogCSAqCi0JICogRm9yIEFMVEVSIFBVQkxJQ0FUSU9OLCBpbnZhbGlk YXRpb24gaXMgbmVlZGVkIG9ubHkgd2hlbiBhZGRpbmcgYW4KLQkgKiBFWENFUFQgdGFibGUgdG8g YSBwdWJsaWNhdGlvbiBhbHJlYWR5IG1hcmtlZCBhcyBBTEwgVEFCTEVTLiBGb3IKLQkgKiBwdWJs aWNhdGlvbnMgdGhhdCB3ZXJlIG9yaWdpbmFsbHkgZW1wdHkgb3IgZGVmaW5lZCBhcyBBTEwgU0VR VUVOQ0VTIGFuZAotCSAqIGFyZSBiZWluZyBjb252ZXJ0ZWQgdG8gQUxMIFRBQkxFUywgaW52YWxp ZGF0aW9uIGlzIHNraXBwZWQgaGVyZSwgYXMKLQkgKiBBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3Mo KSBmdW5jdGlvbiBpbnZhbGlkYXRlcyBhbGwgcmVsYXRpb25zIHdoaWxlCi0JICogbWFya2luZyB0 aGUgcHVibGljYXRpb24gYXMgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KKwkgKiBGb3IgQUxURVIg UFVCTElDQVRJT04sIGludmFsaWRhdGlvbiBpcyBuZWVkZWQgd2hlbiBhZGRpbmcgYW4gRVhDRVBU CisJICogdGFibGUgdG8gZWl0aGVyIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gKHB1Yi0+ YWxsdGFibGVzIGlzIHRydWUpCisJICogb3IgYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNh dGlvbiAoaXNfc2NoZW1hX3B1YmxpY2F0aW9uIGlzIHRydWUpLgorCSAqIFRoZSBleGNlcHRpb246 IHdoZW4gYSBwdWJsaWNhdGlvbiBpcyBiZWluZyBjb252ZXJ0ZWQgdG8gRk9SIEFMTCBUQUJMRVMK KwkgKiAocHViLT5hbGx0YWJsZXMgaXMgc3RpbGwgZmFsc2UgYXQgdGhpcyBwb2ludCksCisJICog QWx0ZXJQdWJsaWNhdGlvbkFsbEZsYWdzKCkgd2lsbCBwZXJmb3JtIGEgZnVsbCBpbnZhbGlkYXRp b24sIHNvIHdlCisJICogc2tpcCBpdCBoZXJlLgogCSAqLwotCWludmFsX2V4Y2VwdF90YWJsZSA9 IChhbHRlcl9zdG10ICE9IE5VTEwpICYmIHB1Yi0+YWxsdGFibGVzICYmCi0JCShhbHRlcl9zdG10 LT5mb3JfYWxsX3RhYmxlcyAmJiBwcmktPmV4Y2VwdCk7CisJaW52YWxfZXhjZXB0X3RhYmxlID0g KGFsdGVyX3N0bXQgIT0gTlVMTCkgJiYgcHJpLT5leGNlcHQgJiYKKwkJKHB1Yi0+YWxsdGFibGVz CisJCSA/IGFsdGVyX3N0bXQtPmZvcl9hbGxfdGFibGVzCisJCSA6IGlzX3NjaGVtYV9wdWJsaWNh dGlvbihwdWJpZCkpOwogCiAJaWYgKCFwcmktPmV4Y2VwdCB8fCBpbnZhbF9leGNlcHRfdGFibGUp CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBjZDM5ZDYzNzVj ZC4uZjlhZTAwYTZjMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBA IC03MCw2ICs3MCwxMyBAQCBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1 YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOwogc3RhdGljIHZvaWQgUHVibGljYXRp b25BZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3Rz LAogCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIFB1 YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Np bmdfb2spOworc3RhdGljIHZvaWQgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsCisJCQkJCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFpZGxp c3QsCisJCQkJCQkJCQlMaXN0ICpleGNlcHRfcHVidGFibGVzKTsKK3N0YXRpYyB2b2lkIEFsdGVy UHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs CisJCQkJCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsCisJCQkJCQkJCQkJCSAgIExpc3QgKmV4Y2Vw dF9wdWJ0YWJsZXMsCisJCQkJCQkJCQkJCSAgIExpc3QgKnNjaGVtYWlkbGlzdCk7CiBzdGF0aWMg Y2hhciBkZWZHZXRHZW5lcmF0ZWRDb2xzT3B0aW9uKERlZkVsZW0gKmRlZik7CiAKIApAQCAtMTQ2 OCw3ICsxNDc1LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKICAqLwogc3RhdGljIHZvaWQKIEFsdGVyUHVibGljYXRp b25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAotCQkJCQkJSGVhcFR1cGxlIHR1 cCwgTGlzdCAqc2NoZW1haWRsaXN0KQorCQkJCQkJSGVhcFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1h aWRsaXN0LAorCQkJCQkJTGlzdCAqZXhjZXB0X3B1YnRhYmxlcykKIHsKIAlGb3JtX3BnX3B1Ymxp Y2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CiAK QEAgLTE1NDUsNiArMTU1Myw5OCBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwKIAkJICovCiAJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJmb3Jt LT5vaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgc3RtdCk7CiAJfQorCisJLyoKKwkgKiBJbmNyZW1l bnQgdGhlIGNvbW1hbmQgY291bnRlciBzbyB0aGF0IGlzX3NjaGVtYV9wdWJsaWNhdGlvbigpIGlu CisJICogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcygpIGNhbiBzZWUgdGhlIGp1c3QtaW5z ZXJ0ZWQgc2NoZW1hCisJICogcm93cyB3aGVuIEFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRU YWJsZXMgcnVucyBuZXh0LgorCSAqLworCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0 cyB8fCBzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykKKwkJQ29tbWFuZENvdW50ZXJJbmNy ZW1lbnQoKTsKKworCUFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoc3RtdCwgdHVw LCBleGNlcHRfcHVidGFibGVzLCBzY2hlbWFpZGxpc3QpOworfQorCisvKgorICogQWx0ZXIgdGhl IEVYQ0VQVCBsaXN0IG9mIGEgc2NoZW1hLWxldmVsIHB1YmxpY2F0aW9uLgorICoKKyAqIEFkZHMs IHJlbW92ZXMsIG9yIHJlcGxhY2VzIGV4Y2VwdC10YWJsZSBlbnRyaWVzIGluIHBnX3B1YmxpY2F0 aW9uX3JlbAorICogKHJvd3Mgd2l0aCBwcmV4Y2VwdCA9IHRydWUpLiAgVGhlc2UgZW50cmllcyBz dXBwcmVzcyBwdWJsaWNhdGlvbiBvZiB0aGUKKyAqIG5hbWVkIHRhYmxlcyB0aGF0IHdvdWxkIG90 aGVyd2lzZSBiZSBjb3ZlcmVkIGJ5IGEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEKKyAqIGNsYXVzZS4K KyAqLworc3RhdGljIHZvaWQKK0FsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCisJCQkJCQkJIEhlYXBUdXBsZSB0dXAsIExpc3QgKmV4 Y2VwdF9wdWJ0YWJsZXMsCisJCQkJCQkJIExpc3QgKnNjaGVtYWlkbGlzdCkKK3sKKwlGb3JtX3Bn X3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1 cCk7CisJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CisKKwkvKgorCSAqIE5vdGhpbmcgdG8g ZG8gaWYgbm8gRVhDRVBUIGVudHJpZXMuCisJICovCisJaWYgKCFleGNlcHRfcHVidGFibGVzKQor CQlyZXR1cm47CisKKwkvKgorCSAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBFWENFUFQgZW50cmll cyBmb3Igc2NoZW1hLWxldmVsIHB1YmxpY2F0aW9ucworCSAqIG9ubHkuICBGb3IgRk9SIEFMTCBU QUJMRVMgcHVibGljYXRpb25zLCBFWENFUFQgZW50cmllcyBhcmUgYWxyZWFkeQorCSAqIHByb2Nl c3NlZCBieSBBbHRlclB1YmxpY2F0aW9uVGFibGVzKCkuCisJICovCisJaWYgKHNjaGVtYWlkbGlz dCA9PSBOSUwgJiYgIWlzX3NjaGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpCisJCXJldHVybjsKKwor CS8qCisJICogRVhDRVBUIGlzIG5vdCBtZWFuaW5nZnVsIHdpdGggRFJPUDogZHJvcHBpbmcgYSBz Y2hlbWEgZnJvbSBhCisJICogcHVibGljYXRpb24gYWxyZWFkeSByZW1vdmVzIGFsbCBpdHMgZXhj ZXB0IGVudHJpZXMgdmlhIGNhc2NhZGUsIGFuZAorCSAqIHRoZXJlIGlzIG5vIHNlbnNpYmxlIGlu dGVycHJldGF0aW9uIG9mICJkcm9wIG9ubHkgdGhlIGV4Y2VwdCBlbnRyeSBidXQKKwkgKiBrZWVw IHRoZSBzY2hlbWEiLgorCSAqLworCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRo IERST1AgaW4gQUxURVIgUFVCTElDQVRJT04iKSkpOworCisJLyoKKwkgKiBYWFggRVhDRVBUIHdp dGggU0VUIGlzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQuICBXb3JrYXJvdW5kOiBEUk9QIGFu ZAorCSAqIHJlLUFERCB0aGUgc2NoZW1hIHdpdGggdGhlIGRlc2lyZWQgRVhDRVBUIGxpc3QuCisJ ICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBTRVQgaW4gQUxURVIgUFVC TElDQVRJT04iKSwKKwkJCQkgZXJyaGludCgiRHJvcCBhbmQgcmUtYWRkIHRoZSBzY2hlbWEgd2l0 aCB0aGUgZGVzaXJlZCBFWENFUFQgbGlzdC4iKSkpOworCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBB UF9BZGRPYmplY3RzKQorCXsKKwkJTGlzdAkgICAqcmVsczsKKwkJTGlzdAkgICAqZXhwbGljaXRy ZWxpZHM7CisKKwkJcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CisKKwkJ ZXhwbGljaXRyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAor CQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKworCQkvKgorCQkgKiBWYWxp ZGF0ZSB0aGF0IGVhY2ggZXhjbHVkZWQgdGFibGUgaXMgbm90IGFsc28gaW4gdGhlIGV4cGxpY2l0 IHRhYmxlCisJCSAqIGxpc3QgKHdoaWNoIHdvdWxkIGJlIGNvbnRyYWRpY3RvcnkpLgorCQkgKi8K KwkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJlbHMpCisJCXsKKwkJCU9p ZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKTsKKworCQkJaWYgKGxp c3RfbWVtYmVyX29pZChleHBsaWNpdHJlbGlkcywgcmVsaWQpKQorCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJ ZXJybXNnKCJ0YWJsZSBcIiVzXCIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0 IGFuZCB0aGUgRVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJICAgUmVsYXRpb25HZXRRdWFsaWZpZWRS ZWxhdGlvbk5hbWUocHJpLT5yZWxhdGlvbikpKTsKKwkJfQorCisJCVB1YmxpY2F0aW9uQWRkVGFi bGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CisKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7 CisJfQogfQogCiAvKgpAQCAtMTc1NCwxMCArMTg1NCwxMiBAQCBBbHRlclB1YmxpY2F0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCWVycm1z ZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCSAgIHN0bXQtPnB1 Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdF9w dWJ0YWJsZXMpOworCQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJCQlyZWxhdGlvbnMgPSBs aXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdF9wdWJ0YWJsZXMpOworCiAJCUFsdGVyUHVibGlj YXRpb25UYWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAog CQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwotCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1h cyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CisJCUFsdGVyUHVibGljYXRpb25TY2hlbWFzKHN0 bXQsIHR1cCwgc2NoZW1haWRsaXN0LCBleGNlcHRfcHVidGFibGVzKTsKIAkJQWx0ZXJQdWJsaWNh dGlvbkFsbEZsYWdzKHN0bXQsIHJlbCwgdHVwKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGQ1NmRj YzcwMWNlLi5lNjJkNzRjOGNhMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC01MDE5LDYgKzUwMTksNyBAQCBk dW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25T Y2hlbWFJbmZvICpwdWJzaW5mbykKIAlQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8gPSBwdWJzaW5m by0+cHVibGljYXRpb247CiAJUFFFeHBCdWZmZXIgcXVlcnk7CiAJY2hhcgkgICAqdGFnOworCWJv b2wJCWhhc19leGNlcHQgPSBmYWxzZTsKIAogCS8qIERvIG5vdGhpbmcgaWYgbm90IGR1bXBpbmcg c2NoZW1hICovCiAJaWYgKCFkb3B0LT5kdW1wU2NoZW1hKQpAQCAtNTAyOSw3ICs1MDMwLDM0IEBA IGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlv blNjaGVtYUluZm8gKnB1YnNpbmZvKQogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAog CWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgIiwgZm10SWQo cHViaW5mby0+ZG9iai5uYW1lKSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBREQgVEFC TEVTIElOIFNDSEVNQSAlcztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkpOworCWFw cGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUREIFRBQkxFUyBJTiBTQ0hFTUEgJXMiLCBmbXRJZChz Y2hlbWFpbmZvLT5kb2JqLm5hbWUpKTsKKworCS8qCisJICogQXBwZW5kIEVYQ0VQVCBjbGF1c2Ug Zm9yIGFueSB0YWJsZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBzY2hlbWEKKwkgKiBhbmQgYXJlIGV4 Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLgorCSAqLworCWZvciAoU2ltcGxlUHRyTGlzdENl bGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRfdGFibGVzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxs LT5uZXh0KQorCXsKKwkJVGFibGVJbmZvICAqdGJpbmZvID0gKFRhYmxlSW5mbyAqKSBjZWxsLT5w dHI7CisKKwkJaWYgKHN0cmNtcCh0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsIHNj aGVtYWluZm8tPmRvYmoubmFtZSkgPT0gMCkKKwkJeworCQkJaWYgKCFoYXNfZXhjZXB0KQorCQkJ eworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCAoIik7CisJCQkJaGFz X2V4Y2VwdCA9IHRydWU7CisJCQl9CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICIsICIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlRBQkxFIE9OTFkg JXMiLCBmbXRJZCh0YmluZm8tPmRvYmoubmFtZSkpOworCQl9CisJfQorCisJaWYgKGhhc19leGNl cHQpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSIpOworCisJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICI7XG4iKTsKIAogCS8qCiAJICogVGhlcmUgaXMgbm8gcG9pbnQgaW4g Y3JlYXRpbmcgZHJvcCBxdWVyeSBhcyB0aGUgZHJvcCBpcyBkb25lIGJ5IHNjaGVtYQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAppbmRleCAzZWU5ZmRhNTBlNC4uZWQ3MjIxNDA4NzcgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjQyLDYgKzMyNDIsNDIgQEAgbXkgJXRlc3RzID0gKAog CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAog CisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAs CisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIEZPUiBUQUJM RVMgSU4gU0NIRU1BIGR1bXBfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RfdGFibGUpOycsCisJCXJl Z2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMSBXSVRIIChwdWJsaXNo ID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlr ZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdD UkVBVEUgUFVCTElDQVRJT04gcHViMTEgLSBBREQgVEFCTEVTIElOIFNDSEVNQSBFWENFUFQgZHVt cCcKKwkgID0+IHsKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIgUFVCTElDQVRJT04gcHVi MTEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoVEFCTEUgT05MWSB0ZXN0 X3RhYmxlKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0 X2RhdGEgPT4gMSwgfSwKKwkgIH0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEyJyA9PiB7 CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVC TElDQVRJT04gcHViMTIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoVEFC TEUgdGVzdF90YWJsZSwgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKTsnLAorCQlyZWdleHAg PT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTIgV0lUSCAocHVibGlzaCA9ICdp bnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4g eyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRF IFBVQkxJQ0FUSU9OIHB1YjEyIC0gQUREIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUIGR1bXAnCisJ ICA9PiB7CisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEyIEFE RCBUQUJMRVMgSU4gU0NIRU1BIGR1bXBfdGVzdCBFWENFUFQgKFRBQkxFIE9OTFkgdGVzdF90YWJs ZSwgVEFCTEUgT05MWSB0ZXN0X3NlY29uZF90YWJsZSk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7 ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJICB9LAorCiAJJ0NSRUFU RSBTVUJTQ1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0 ZV9zcWwgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmlu ZGV4IDgzMWJlMjdhZDA4Li4zZmZlN2M2ZTJlOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAt MjM2NCw2ICsyMzY0LDIxIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAog CQlDT01QTEVURV9XSVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJ CQkJCQkgIiBBTkQgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAogCQkJCQkJCQkgIkNV UlJFTlRfU0NIRU1BIik7CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2NoZW1hIG5hbWUgaW4gQUREIGNv bnRleHQsIG9mZmVyIEVYQ0VQVCAoIFRBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1B IiwgTWF0Y2hBbnkpICYmCisJCQkgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVU RV9XSVRIKCJFWENFUFQgKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1h dGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsKKwllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxF UyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRF X1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJF WENFUFQiLCAiKCIsICJUQUJMRSIpKQorCXsKKwkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHBy ZXY0X3dkKTsKKwkJQ09NUExFVEVfV0lUSF9RVUVSWV9WRVJCQVRJTShRdWVyeV9mb3JfbGlzdF9v Zl90YWJsZXNfaW5fc2NoZW1hKTsKKwl9CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0 Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChw cmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJLyogQUxURVIgUFVCTElDQVRJ T04gPG5hbWU+IFNFVCAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJ T04iLCBNYXRjaEFueSwgTWF0Y2hBbnlOLCAiU0VUIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgi cHVibGlzaCIsICJwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zIiwgInB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290Iik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0Cmlu ZGV4IDAwOGM2Y2ViYWNhLi5mNTZiMDUyNGFlOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTU2NCwxMiArNTY0LDQyIEBAIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2V4Y2VwdF9ub2t3CiBFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0 ZXN0cHViX25vcGsiCiBMSU5FIDI6ICAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKHRlc3RwdWJfbm9wayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gRVhDRVBUIHRlc3RzIGZvciBBTFRFUiBQVUJMSUNBVElPTgorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9hbHRlcl9leGNlcHQ7CistLSBmYWlsOiBub24tZXhpc3RpbmcgdGFibGUgaW4gRVhD RVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25leGlzdGVu dF90YWJsZSk7CitFUlJPUjogIHJlbGF0aW9uICJwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSIg ZG9lcyBub3QgZXhpc3QKKy0tIGZhaWw6IEVYQ0VQVCB0YWJsZSBiZWxvbmdzIHRvIGEgZGlmZmVy ZW50IHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90Ymwx KTsKK0VSUk9SOiAgdGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiIGluIEVYQ0VQVCBjbGF1c2Ug ZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSAicHViX3Rlc3QiCitMSU5FIDE6IC4uLnhjZXB0IEFE RCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlcy4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJzdCBl bnRyeSBpbiBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4 Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9wayk7 CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0ZXN0cHViX25vcGsiCitMSU5FIDE6 IC4uLmx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVz dHB1Yl9uby4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIEFERDogcXVhbGlmaWVkIGFuZCB1bnF1YWxpZmllZCBuYW1l czsgdW5xdWFsaWZpZWQgaXMgaW1wbGljaXRseSBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCB0ZXN0cHVi X3RibF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf YWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgor ICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MxIgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMiIKKwogLS0gQ2xlYW51cAogUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEs IHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOwogRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3Bh cnRlZF9zIENBU0NBREU7CiBEUk9QIFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczE7 Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1h X2V4Y2VwdDIsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aTsKK0RST1AgUFVCTElDQVRJT04g dGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9z Y2hlbWFfZXhjZXB0X211bHRpLCB0ZXN0cHViX2FsdGVyX2V4Y2VwdDsKIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9u cyB3aXRoIFNFUVVFTkNFUwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggOTE2MmQ0ZDE1YTUu LjA3MmQ1MDA1MGNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0yNzgs MTIgKzI3OCwzMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfcGFydGl0aW9u CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9rdwogICAgIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIEFM VEVSIFBVQkxJQ0FUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdDsKKworLS0gZmFp bDogbm9uLWV4aXN0aW5nIHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQ VCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUpOworCistLSBmYWlsOiBFWENFUFQg dGFibGUgYmVsb25ncyB0byBhIGRpZmZlcmVudCBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAo VEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CisKKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMg cmVxdWlyZWQgZm9yIHRoZSBmaXJzdCBlbnRyeSBpbiBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dCBFWENFUFQgKHRlc3RwdWJfbm9wayk7CisKKy0tIEFERDogcXVhbGlmaWVkIGFuZCB1bnF1YWxp ZmllZCBuYW1lczsgdW5xdWFsaWZpZWQgaXMgaW1wbGljaXRseSBxdWFsaWZpZWQgd2l0aCB0aGUg c2NoZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx LCB0ZXN0cHViX3RibF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCiAtLSBDbGVh bnVwCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90YmxfczI7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0 LnRlc3RwdWJfcGFydGVkX3MgQ0FTQ0FERTsKIERST1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0 cHViX3RibF9zMTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVz dHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpOworRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQy LCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGksIHRlc3RwdWJfYWx0ZXJfZXhjZXB0OwogCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIFRlc3RzIGZv ciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhj ZXB0LnBsCmluZGV4IDE4YzdiMmMxZmNhLi4wYmE2ZDZmOGJiMiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzdfZXhjZXB0LnBsCkBAIC0zNDcsNiArMzQ3LDM4IEBAIGlzKCRyZXN1bHQsIHFxKDUp LAogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQ VElPTiBzY2hfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn RFJPUCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CiAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKyMgQUxURVIgUFVCTElDQVRJT04gRVhDRVBUIGZvciBUQUJM RVMgSU4gU0NIRU1BCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisKKyMgVHJ1bmNhdGUgc3Vic2NyaWJlciB0YWJsZXMgdG8gcmVtb3ZlIGRhdGEgYWNjdW11 bGF0ZWQgZnJvbSBwcmV2aW91cyB0ZXN0cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSdUUlVOQ0FURSBzY2gxLnRhYl9wdWJsaXNoZWQsIHNjaDEudGFiX2V4Y2x1 ZGVkLCBzY2gxLnBhcmVudCwgc2NoMS5jaGlsZCcpOworCisjIEFERDogYWRkIGEgc2NoZW1hIHdp dGggYW4gZXhjZXB0ZWQgdGFibGU7IHZlcmlmeSB0aGUgZXhjZXB0IGVudHJ5IHRha2VzIGVmZmVj dC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgUFVCTElD QVRJT04gc2NoX3B1YiIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgUFVCTElDQVRJT04gc2NoX3B1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzY2gxIEVY Q0VQVCAoVEFCTEUgc2NoMS50YWJfZXhjbHVkZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBzY2hfcHViIgorKTsKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwg J3NjaF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQiKTsK K2lzKCRyZXN1bHQsIHFxKDYpLAorCSdBTFRFUiAuLi4gQUREIFRBQkxFUyBJTiBTQ0hFTUEgRVhD RVBUOiBpbmNsdWRlZCB0YWJsZSBzeW5jZWQnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50 YWJfZXhjbHVkZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdBTFRFUiAuLi4gQUREIFRBQkxF UyBJTiBTQ0hFTUEgRVhDRVBUOiBleGNsdWRlZCB0YWJsZSBub3Qgc3luY2VkJyk7CisKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc2No X3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVC TElDQVRJT04gc2NoX3B1YicpOworCiAjIENsZWFudXAgc2NoZW1hIHRhYmxlcyBiZWZvcmUgdGhl IG11bHRpLXB1YmxpY2F0aW9uIHNlY3Rpb24uCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7CiAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU0NIRU1BIHNjaDEgQ0FTQ0FERScpOwotLSAK Mi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000005eae7e0653017354 Content-Type: application/x-patch; name="v8-0004-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABLE.patch" Content-Disposition: attachment; filename="v8-0004-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpr7x4w63 RnJvbSA0NmE0OTIxYTg5NTg0NTViZDQ4NDdhM2Y5MmNmMzE2ZGI2YTU3MzE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBGcmksIDI5IE1heSAyMDI2IDIyOjQ2OjEwICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 OCA0LzRdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBTRVQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCBBbHRlclB1YmxpY2F0aW9uRXhjZXB0VGFibGVzKCkgd2l0aCB0 aGUgQVBfU2V0T2JqZWN0cyBjYXNlLAp3aGljaCByZWRlZmluZXMgdGhlIHB1YmxpY2F0aW9uIGFu ZCByZXBsYWNlcyB0aGUgZW50aXJlIEVYQ0VQVCBsaXN0LgoKU3ludGF4OgpBTFRFUiBQVUJMSUNB VElPTiBwdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcyBFWENFUFQgKFRBQkxFIHQxKTsKClRoaXMg cGF0Y2ggYWxzbyBjbGVhbnMgdXAgRVhDRVBUIGVudHJpZXMgd2hlbiBhIHNjaGVtYSBpcyBkcm9w cGVkCmZyb20gdGhlIHB1YmxpY2F0aW9uLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbCAgICAgfCAgMjcgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMgICAgICB8IDEzMSArKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICAxMCArLQogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAxNSArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgfCAgODYgKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICB8ICAzOCArKysrKysKIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgICAgICAgfCAgODUgKysrKysrKysrKysrKwog NyBmaWxlcyBjaGFuZ2VkLCAzNjggaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDczZjYzNzVhNjZmLi44MGIw MzhlNGIyZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtOTcs NyArOTcsMTEgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHVzZWQgd2l0aCBhIHB1Ymxp Y2F0aW9uIGRlZmluZWQgd2l0aCA8bGl0ZXJhbD5GT1IgVEFCTEU8L2xpdGVyYWw+IG9yCiAgICA8 bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIHJlcGxhY2VzIHRoZSBsaXN0 IG9mIHRhYmxlcy9zY2hlbWFzCiAgICBpbiB0aGUgcHVibGljYXRpb24gd2l0aCB0aGUgc3BlY2lm aWVkIGxpc3Q7IHRoZSBleGlzdGluZyB0YWJsZXMgb3Igc2NoZW1hcwotICAgdGhhdCB3ZXJlIHBy ZXNlbnQgaW4gdGhlIHB1YmxpY2F0aW9uIHdpbGwgYmUgcmVtb3ZlZC4KKyAgIHRoYXQgd2VyZSBw cmVzZW50IGluIHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHJlbW92ZWQuICBXaGVuCisgICA8bGl0 ZXJhbD5TRVQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gaXMgdXNlZCB3aXRoIGFuCisgICA8 bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSwgdGhlIGV4Y2x1ZGVkIHRhYmxlcyBmb3Ig ZWFjaCBzY2hlbWEgYXJlCisgICByZXBsYWNlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgaWYg PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkCisgICBmb3IgYSBzY2hlbWEsIGFu eSBleGlzdGluZyBleGNsdXNpb25zIGZvciB0aGF0IHNjaGVtYSBhcmUgY2xlYXJlZC4KICAgPC9w YXJhPgogCiAgIDxwYXJhPgpAQCAtMTE2LDEwICsxMjAsOCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBU TyA8cgogCiAgIDxwYXJhPgogICAgVGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNl IGNhbiBiZSB1c2VkIHdpdGgKLSAgIDxsaXRlcmFsPkFERCBUQUJMRVMgSU4gU0NIRU1BPC9saXRl cmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBmcm9tIHRoZQotICAgcHVibGljYXRpb24u IFVzaW5nIDxsaXRlcmFsPkRST1AgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gb24gYSBwdWJs aWNhdGlvbgotICAgd2lsbCBhdXRvbWF0aWNhbGx5IGFsc28gcmVtb3ZlIGFueSBhc3NvY2lhdGVk IDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgIGVudHJpZXMuCisgICA8bGl0ZXJhbD5BREQg VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gdG8gZXhjbHVkZSBzcGVjaWZpYyB0YWJsZXMgZnJv bSBhCisgICBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb24uCiAgIDwvcGFyYT4KIAogICA8cGFyYT4K QEAgLTIxNCw3ICsyMTYsOCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgIDx0ZXJtPjxs aXRlcmFsPkVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAg PGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFdoZW4gdXNlZCB3aXRoIDxsaXRlcmFsPkFE RCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgc3BlY2lmaWVzCisgICAgICBXaGVuIHVzZWQg d2l0aCA8bGl0ZXJhbD5BREQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4KKyAgICAgIG9yIDxs aXRlcmFsPlNFVCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgc3BlY2lmaWVzCiAgICAgICB0 YWJsZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uICBFYWNoIG5hbWVkCiAg ICAgICB0YWJsZSBtdXN0IGJlbG9uZyB0byB0aGUgc2NoZW1hIHNwZWNpZmllZCBpbiB0aGUgc2Ft ZQogICAgICAgPGxpdGVyYWw+VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gY2xhdXNlLiAgVGFi bGUgbmFtZXMgbWF5IGJlCkBAIC0zMjYsNiArMzI5LDE4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNh bGVzX3B1YmxpY2F0aW9uIEFERCBUQUJMRVMgSU4gU0NIRU1BIHNhbGVzIEVYQ0VQVCAoVEFCTEUg aW50CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBSZXBsYWNl IHRoZSBzY2hlbWEgbGlzdCBvZiA8c3RydWN0bmFtZT5zYWxlc19wdWJsaWNhdGlvbjwvc3RydWN0 bmFtZT4gd2l0aAorICAgPHN0cnVjdG5hbWU+c2FsZXM8L3N0cnVjdG5hbWU+LCBleGNsdWRpbmcg b25seQorICAgPHN0cnVjdG5hbWU+c2FsZXMuZHJhZnRzPC9zdHJ1Y3RuYW1lPi4gT3RoZXIgdGhh bgorICAgPHN0cnVjdG5hbWU+c2FsZXMuZHJhZnRzPC9zdHJ1Y3RuYW1lPiwgYW55IHByZXZpb3Vz bHkgZXhjbHVkZWQgdGFibGVzIGZvciBzY2hlbWEKKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzPC9zdHJ1 Y3RuYW1lPiBhcmUgbm8gbG9uZ2VyIGV4Y2x1ZGVkLiBBbnkgc2NoZW1hcyBwcmV2aW91c2x5IGlu CisgICA8c3RydWN0bmFtZT5zYWxlc19wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT4gYXJlIHJlbW92 ZWQ6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNhdGlv biBTRVQgVEFCTEVTIElOIFNDSEVNQSBzYWxlcyBFWENFUFQgKFRBQkxFIGRyYWZ0cyk7Cis8L3By b2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBBZGQgdGFibGVzIDxzdHJ1 Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9z dHJ1Y3RuYW1lPiBhbmQgc2NoZW1hCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5j CmluZGV4IGY5YWUwMGE2YzJmLi42NjBmZDQxYWZiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMKQEAgLTE1ODIsOSArMTU4MiwxMSBAQCBBbHRlclB1YmxpY2F0aW9uU2No ZW1hRXhjZXB0VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCU9pZAkJCXB1Ymlk ID0gcHViZm9ybS0+b2lkOwogCiAJLyoKLQkgKiBOb3RoaW5nIHRvIGRvIGlmIG5vIEVYQ0VQVCBl bnRyaWVzLgorCSAqIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIEVYQ0VQVCBlbnRyaWVz LCB1bmxlc3MgaGFuZGxpbmcgdGhlIFNFVAorCSAqIGNvbW1hbmQsIGJlY2F1c2UgaWYgdGhlIHVz ZXIgaGFzIHJlbW92ZWQgYWxsIGV4Y2VwdGlvbnMgd2UgbmVlZCB0bworCSAqIGRyb3AgYW55IGV4 aXN0aW5nIG9uZXMuCiAJICovCi0JaWYgKCFleGNlcHRfcHVidGFibGVzKQorCWlmICghZXhjZXB0 X3B1YnRhYmxlcyAmJiBzdG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwog CiAJLyoKQEAgLTE1OTcsNyArMTU5OSw3IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRU YWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkvKgogCSAqIEVYQ0VQVCBpcyBu b3QgbWVhbmluZ2Z1bCB3aXRoIERST1A6IGRyb3BwaW5nIGEgc2NoZW1hIGZyb20gYQotCSAqIHB1 YmxpY2F0aW9uIGFscmVhZHkgcmVtb3ZlcyBhbGwgaXRzIGV4Y2VwdCBlbnRyaWVzIHZpYSBjYXNj YWRlLCBhbmQKKwkgKiBwdWJsaWNhdGlvbiBhbHJlYWR5IHJlbW92ZXMgYWxsIGl0cyBFWENFUFQg ZW50cmllcyB2aWEgY2FzY2FkZSwgYW5kCiAJICogdGhlcmUgaXMgbm8gc2Vuc2libGUgaW50ZXJw cmV0YXRpb24gb2YgImRyb3Agb25seSB0aGUgZXhjZXB0IGVudHJ5IGJ1dAogCSAqIGtlZXAgdGhl IHNjaGVtYSIuCiAJICovCkBAIC0xNjA2LDE2ICsxNjA4LDYgQEAgQWx0ZXJQdWJsaWNhdGlvblNj aGVtYUV4Y2VwdFRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiRVhDRVBUIGNs YXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpKSk7 CiAKLQkvKgotCSAqIFhYWCBFWENFUFQgd2l0aCBTRVQgaXMgbm90IGN1cnJlbnRseSBpbXBsZW1l bnRlZC4gIFdvcmthcm91bmQ6IERST1AgYW5kCi0JICogcmUtQUREIHRoZSBzY2hlbWEgd2l0aCB0 aGUgZGVzaXJlZCBFWENFUFQgbGlzdC4KLQkgKi8KLQlpZiAoc3RtdC0+YWN0aW9uID09IEFQX1Nl dE9iamVjdHMpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBv cnRlZCB3aXRoIFNFVCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpLAotCQkJCSBlcnJoaW50KCJEcm9w IGFuZCByZS1hZGQgdGhlIHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVkIEVYQ0VQVCBsaXN0LiIpKSk7 Ci0KIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCiAJewogCQlMaXN0CSAgICpy ZWxzOwpAQCAtMTY0Myw2ICsxNjM1LDg2IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFFeGNlcHRU YWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkJUHVibGljYXRpb25BZGRUYWJs ZXMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKIAorCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsK Kwl9CisJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KKwl7CisJCUxpc3QJICAgKm9sZGV4 Y2VwdHJlbGlkcyA9IE5JTDsKKwkJTGlzdAkgICAqbmV3ZXhjZXB0cmVsaWRzID0gTklMOworCQlM aXN0CSAgICpkZWxyZWxpZHMgPSBOSUw7CisJCUxpc3QJICAgKnJlbHM7CisJCUxpc3QJICAgKmV4 cGxpY2l0cmVsaWRzOworCisJCXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdF9wdWJ0YWJsZXMp OworCisJCS8qIENvbGxlY3QgT0lEcyBvZiB0aGUgZGVzaXJlZCBuZXcgRVhDRVBUIGxpc3QuICov CisJCWZvcmVhY2hfcHRyKFB1YmxpY2F0aW9uUmVsSW5mbywgcHJpLCByZWxzKQorCQl7CisJCQlu ZXdleGNlcHRyZWxpZHMgPSBsYXBwZW5kX29pZChuZXdleGNlcHRyZWxpZHMsCisJCQkJCQkJCQkJ ICBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVsYXRpb24pKTsKKwkJfQorCisJCWV4cGxpY2l0cmVs aWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJ CQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhhdCBl YWNoIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCBhbHNvIGluIHRoZSBleHBsaWNpdCB0YWJsZQorCQkg KiBsaXN0ICh3aGljaCB3b3VsZCBiZSBjb250cmFkaWN0b3J5KS4KKwkJICovCisJCWZvcmVhY2hf cHRyKFB1YmxpY2F0aW9uUmVsSW5mbywgcHJpLCByZWxzKQorCQl7CisJCQlPaWQJCQlyZWxpZCA9 IFJlbGF0aW9uR2V0UmVsaWQocHJpLT5yZWxhdGlvbik7CisKKwkJCWlmIChsaXN0X21lbWJlcl9v aWQoZXhwbGljaXRyZWxpZHMsIHJlbGlkKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygidGFi bGUgXCIlc1wiIGNhbm5vdCBhcHBlYXIgaW4gYm90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhlIEVY Q0VQVCBjbGF1c2UiLAorCQkJCQkJCSAgIFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25OYW1l KHByaS0+cmVsYXRpb24pKSk7CisJCX0KKworCQkvKgorCQkgKiBHZXQgdGhlIGN1cnJlbnQgc2V0 IG9mIEVYQ0VQVCBlbnRyaWVzLiAgT25seSBGT1IgQUxMIFRBQkxFUyBhbmQKKwkJICogc2NoZW1h LWxldmVsIHB1YmxpY2F0aW9ucyBjYW4gaGF2ZSBFWENFUFQgZW50cmllczsgZm9yIGFueSBvdGhl cgorCQkgKiBwdWJsaWNhdGlvbiB0eXBlIG9sZGV4Y2VwdHJlbGlkcyBzdGF5cyBOSUwuCisJCSAq CisJCSAqIE5vdGU6IHdlIGNoZWNrIGlzX3NjaGVtYV9wdWJsaWNhdGlvbigpIGFnYWluc3QgdGhl IGN1cnJlbnQgY2F0YWxvZworCQkgKiBzdGF0ZSAoYmVmb3JlIEFsdGVyUHVibGljYXRpb25TY2hl bWFzIGhhcyBydW4pLCBzbyBpZiB0aGUgY2FsbGVyIGlzCisJCSAqIGRvaW5nIFNFVCBUQUJMRSB0 MSB0byBjb252ZXJ0IGEgc2NoZW1hIHB1YmxpY2F0aW9uIGludG8gYSBwbGFpbgorCQkgKiB0YWJs ZSBwdWJsaWNhdGlvbiwgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgc3RpbGwgcmV0dXJucyB0cnVl IGhlcmUuCisJCSAqIFRoYXQgaXMgaW50ZW50aW9uYWw6IGl0IGxldHMgdXMgZGlzY292ZXIgYW5k IGNsZWFuIHVwIGFueSBzdGFsZQorCQkgKiBFWENFUFQgZW50cmllcyB0aGF0IGJlbG9uZyB0byB0 aGUgb2xkIHNjaGVtYSBkZWZpbml0aW9uLgorCQkgKi8KKwkJaWYgKEdldFB1YmxpY2F0aW9uKHB1 YmlkKS0+YWxsdGFibGVzIHx8IGlzX3NjaGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpCisJCQlvbGRl eGNlcHRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLAorCQkJCQkJ CQkJCQkJCQkgICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCS8qIEJ1aWxkIGEgbGlzdCBv ZiBvbGQgRVhDRVBUIGVudHJpZXMgbm90IHByZXNlbnQgaW4gdGhlIG5ldyBsaXN0LiAqLworCQlm b3JlYWNoX29pZChvbGRyZWxpZCwgb2xkZXhjZXB0cmVsaWRzKQorCQl7CisJCQlpZiAoIWxpc3Rf bWVtYmVyX29pZChuZXdleGNlcHRyZWxpZHMsIG9sZHJlbGlkKSkKKwkJCQlkZWxyZWxpZHMgPSBs YXBwZW5kX29pZChkZWxyZWxpZHMsIG9sZHJlbGlkKTsKKwkJfQorCisJCS8qIERyb3Agb2xkIEVY Q0VQVCBlbnRyaWVzIG5vdCBwcmVzZW50IGluIHRoZSBuZXcgbGlzdC4gKi8KKwkJZm9yZWFjaF9v aWQocmVsaWQsIGRlbHJlbGlkcykKKwkJeworCQkJT2lkCQkJcHJvaWQ7CisJCQlPYmplY3RBZGRy ZXNzIG9iajsKKworCQkJcHJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05SRUxNQVAs CisJCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9vaWQsCisJCQkJCQkJCQlPYmplY3RJ ZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJ CWlmICghT2lkSXNWYWxpZChwcm9pZCkpCisJCQkJY29udGludWU7CQkvKiBhbHJlYWR5IGdvbmUg Ki8KKworCQkJT2JqZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwg cHJvaWQpOworCQkJcGVyZm9ybURlbGV0aW9uKCZvYmosIERST1BfQ0FTQ0FERSwgMCk7CisJCX0K KworCQkvKiBBZGQgbmV3IEVYQ0VQVCBlbnRyaWVzLCBza2lwcGluZyBhbnkgYWxyZWFkeSBwcmVz ZW50LiAqLworCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7 CisKIAkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CiAJfQogfQpAQCAtMjI5Miw2ICsyMzY0LDcgQEAg UHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlz c2luZ19vaykKIAlmb3JlYWNoKGxjLCBzY2hlbWFzKQogCXsKIAkJT2lkCQkJc2NoZW1haWQgPSBs Zmlyc3Rfb2lkKGxjKTsKKwkJTGlzdAkgICAqZXhjZXB0X3JlbGlkczsKIAogCQlwc2lkID0gR2V0 U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCSAgIEFudW1fcGdf cHVibGljYXRpb25fbmFtZXNwYWNlX29pZCwKQEAgLTIzMDgsOCArMjM4MSw0MCBAQCBQdWJsaWNh dGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29r KQogCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShzY2hlbWFpZCkpKSk7CiAJCX0KIAorCQkvKgor CQkgKiBDb2xsZWN0IEVYQ0VQVCBlbnRyaWVzIGZvciB0YWJsZXMgYmVsb25naW5nIHRvIHRoaXMg c2NoZW1hIGJlZm9yZQorCQkgKiByZW1vdmluZyB0aGUgc2NoZW1hIGVudHJ5LgorCQkgKi8KKwkJ ZXhjZXB0X3JlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIFBVQkxJ Q0FUSU9OX1BBUlRfUk9PVCk7CisKIAkJT2JqZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9u TmFtZXNwYWNlUmVsYXRpb25JZCwgcHNpZCk7CiAJCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9Q X0NBU0NBREUsIDApOworCisJCS8qCisJCSAqIERyb3AgYW55IHByZXhjZXB0IHJvd3MgZm9yIHRh YmxlcyBiZWxvbmdpbmcgdG8gdGhpcyBzY2hlbWEuIFRoZXNlCisJCSAqIHJvd3MgaGF2ZSBubyBw Z19kZXBlbmQgZW50cnkgcG9pbnRpbmcgYXQgdGhlCisJCSAqIHBnX3B1YmxpY2F0aW9uX25hbWVz cGFjZSByb3csIHNvIHRoZXkgYXJlIG5vdCBjYXNjYWRlZCBieSB0aGUKKwkJICogcGVyZm9ybURl bGV0aW9uKCkgY2FsbCBhYm92ZSBhbmQgbXVzdCBiZSBjbGVhbmVkIHVwIGV4cGxpY2l0bHkuCisJ CSAqLworCQlmb3JlYWNoX29pZChyZWxpZCwgZXhjZXB0X3JlbGlkcykKKwkJeworCQkJT2lkCQkJ cHJvaWQ7CisKKwkJCWlmIChnZXRfcmVsX25hbWVzcGFjZShyZWxpZCkgIT0gc2NoZW1haWQpCisJ CQkJY29udGludWU7CisKKwkJCXByb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OUkVM TUFQLAorCQkJCQkJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfb2lkLAorCQkJCQkJCQkJT2Jq ZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7 CisJCQlpZiAoIU9pZElzVmFsaWQocHJvaWQpKQorCQkJCWNvbnRpbnVlOwkJLyogYWxyZWFkeSBn b25lICovCisKKwkJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0aW9u SWQsIHByb2lkKTsKKwkJCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUsIDApOwor CQl9CisKKwkJbGlzdF9mcmVlKGV4Y2VwdF9yZWxpZHMpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggN2VlODRlYzFjODMuLjk4MzFi ZTU0YjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK QEAgLTIyMjksNyArMjIyOSw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRh dGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJICovCiAJCQlpZiAocHViLT5hbGx0YWJsZXMpCiAJ CQl7Ci0JCQkJTGlzdAkgICAqZXhjZXB0cHViaWRzID0gTklMOworCQkJCUxpc3QJICAgKmV4Y2Vw dF9wdWJpZHMgPSBOSUw7CiAKIAkJCQlpZiAoYW1fcGFydGl0aW9uKQogCQkJCXsKQEAgLTIyNTIs NyArMjI1Miw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0 aW9uIHJlbGF0aW9uKQogCQkJCQkgKiBjbGF1c2UuIFRoZXJlZm9yZSwgZm9yIGEgcGFydGl0aW9u LCBleGNsdXNpb24gbXVzdCBiZQogCQkJCQkgKiBldmFsdWF0ZWQgYXQgdGhlIHRvcC1tb3N0IGFu Y2VzdG9yLgogCQkJCQkgKi8KLQkJCQkJZXhjZXB0cHViaWRzID0gR2V0UmVsYXRpb25FeGNsdWRl ZFB1YmxpY2F0aW9ucyhsYXN0X2FuY2VzdG9yX3JlbGlkKTsKKwkJCQkJZXhjZXB0X3B1YmlkcyA9 IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMobGFzdF9hbmNlc3Rvcl9yZWxpZCk7CiAJ CQkJfQogCQkJCWVsc2UKIAkJCQl7CkBAIC0yMjYwLDEzICsyMjYwLDEzIEBAIGdldF9yZWxfc3lu Y19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCQkgKiBG b3IgYSByZWd1bGFyIHRhYmxlIG9yIGEgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSwgY2hlY2sKIAkJ CQkJICogZXhjbHVzaW9uIG9uIHRhYmxlIGl0c2VsZi4KIAkJCQkJICovCi0JCQkJCWV4Y2VwdHB1 YmlkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMocHViX3JlbGlkKTsKKwkJCQkJ ZXhjZXB0X3B1YmlkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMocHViX3JlbGlk KTsKIAkJCQl9CiAKLQkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRwdWJpZHMsIHB1Yi0+ b2lkKSkKKwkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRfcHViaWRzLCBwdWItPm9pZCkp CiAJCQkJCXB1Ymxpc2ggPSB0cnVlOwogCi0JCQkJbGlzdF9mcmVlKGV4Y2VwdHB1Ymlkcyk7CisJ CQkJbGlzdF9mcmVlKGV4Y2VwdF9wdWJpZHMpOwogCiAJCQkJaWYgKCFwdWJsaXNoKQogCQkJCQlj b250aW51ZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAzZmZlN2M2ZTJlOS4uZjJmY2ZjYTMw NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzNzksNiArMjM3OSwyMSBAQCBtYXRjaF9w cmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAl9CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NI RU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVu ZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCIpIik7CisJLyogQWZ0ZXIg YSBzaW5nbGUgc2NoZW1hIG5hbWUgaW4gU0VUIGNvbnRleHQsIG9mZmVyIEVYQ0VQVCAoIFRBQkxF ICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IlNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmCisJCQkgIWVuZHNf d2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBUQUJMRSIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQi LCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBM RVRFX1dJVEgoIiggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFu eSwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJUQUJMRVMi LCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIpKQorCXsK KwkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0X3dkKTsKKwkJQ09NUExFVEVfV0lUSF9R VUVSWV9WRVJCQVRJTShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNfaW5fc2NoZW1hKTsKKwl9CisJ ZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIs ICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJM RSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9X SVRIKCIpIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCAoICovCiAJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgTWF0Y2hBbnlOLCAi U0VUIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgicHVibGlzaCIsICJwdWJsaXNoX2dlbmVyYXRl ZF9jb2x1bW5zIiwgInB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290Iik7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IGY1NmIwNTI0YWU5Li43MDcxNWNlN2Ux MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTU5NCw2 ICs1OTQsOTIgQEAgRXhjZXB0IHRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEi CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyIgogCistLSBTRVQ6IHJlcGxhY2UgdGhlIGV4 Y2VwdCBsaXN0IChrZWVwIHNhbWUgc2NoZW1hLCBkaWZmZXJlbnQgZXhjZXB0IHRhYmxlKQorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMik7CitcZFJwKyB0 ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8 IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAg ICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKK0V4 Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyIgorCistLSBmYWlsOiB0 YWJsZSBpbiBFWENFUFQgY2xhdXNlIGFsc28gYXBwZWFycyBpbiB0aGUgZXhwbGljaXQgdGFibGUg bGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAo VEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworRVJST1I6ICB0YWJsZSAicHViX3Rlc3Qu dGVzdHB1Yl90YmxfczEiIGNhbm5vdCBhcHBlYXIgaW4gYm90aCB0aGUgdGFibGUgbGlzdCBhbmQg dGhlIEVYQ0VQVCBjbGF1c2UKKy0tIGVycm9yOiBleGNlcHQgdGFibGUncyBzY2hlbWEgKHB1Ymxp Yykgbm90IGluIHRoZSBwdWJsaWNhdGlvbidzIHNjaGVtYSBsaXN0IChwdWJfdGVzdCkKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxl ICJwdWJsaWMudGVzdHB1Yl90YmwxIiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0 byBzY2hlbWEgInB1Yl90ZXN0IgorTElORSAxOiAuLi54Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXMuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTRVQ6IHVu cXVhbGlmaWVkIG5hbWUgaW4gRVhDRVBUIGlzIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggdGhl IHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibF9zMSk7CitcZFJw KyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1u cyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIK K0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorCistLSBTRVQg d2l0aG91dCBFWENFUFQgY2xlYXJzIHRoZSBleGlzdGluZyBleGNlcHQgbGlzdAorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rl c3Q7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJf ZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0 ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25l ICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJw dWJfdGVzdCIKKworLS0gU0VUIHRvIGEgZGlmZmVyZW50IHNjaGVtYSByZW1vdmVzIG9sZCBzY2hl bWEncyBFWENFUFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNl cHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3Ri bF9zMSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVT IElOIFNDSEVNQSBwdWJsaWM7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBz Y2hlbWFzOgorICAgICJwdWJsaWMiCisKKy0tIGZhaWw6IG5vbmV4aXN0ZW50IHRhYmxlIGluIEVY Q0VQVCBjbGF1c2UgKFNFVCBwYXRoKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9l eGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVz dC5ub25leGlzdGVudF90YWJsZSk7CitFUlJPUjogIHJlbGF0aW9uICJwdWJfdGVzdC5ub25leGlz dGVudF90YWJsZSIgZG9lcyBub3QgZXhpc3QKKy0tIFNFVDogbXVsdGlwbGUgc2NoZW1hcyBlYWNo IHdpdGggdGhlaXIgb3duIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf YWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBFWENFUFQgKFRB QkxFIHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBz Y2hlbWFzOgorICAgICJwdWJfdGVzdCIKKyAgICAicHVibGljIgorRXhjZXB0IHRhYmxlczoKKyAg ICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisK Ky0tIGVycm9yOiBFWENFUFQgaXMgbm90IGFsbG93ZWQgd2l0aCBEUk9QCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMik7CitFUlJPUjogIEVYQ0VQVCBj bGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIERST1AgaW4gQUxURVIgUFVCTElDQVRJT04KKy0t IERST1AgVEFCTEVTIElOIFNDSEVNQSByZW1vdmVzIGFzc29jaWF0ZWQgRVhDRVBUIGVudHJpZXMK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVt YXM6CisgICAgInB1YmxpYyIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3Ri bDEiCisKIC0tIENsZWFudXAKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxF IHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3RibF9zMjsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCAwNzJkNTAwNTBjZC4uNzJiYjJmN2EwMjgg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI5Niw2ICsyOTYsNDQgQEAg QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUICh0ZXMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJf ZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl90YmxfczEsIHRlc3RwdWJfdGJsX3MyKTsKIFxkUnArIHRlc3RwdWJfYWx0ZXJf ZXhjZXB0CiAKKy0tIFNFVDogcmVwbGFjZSB0aGUgZXhjZXB0IGxpc3QgKGtlZXAgc2FtZSBzY2hl bWEsIGRpZmZlcmVudCBleGNlcHQgdGFibGUpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Fs dGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisKKy0t IGZhaWw6IHRhYmxlIGluIEVYQ0VQVCBjbGF1c2UgYWxzbyBhcHBlYXJzIGluIHRoZSBleHBsaWNp dCB0YWJsZSBsaXN0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQg VEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CisKKy0tIGVycm9yOiBleGNl cHQgdGFibGUncyBzY2hlbWEgKHB1YmxpYykgbm90IGluIHRoZSBwdWJsaWNhdGlvbidzIHNjaGVt YSBsaXN0IChwdWJfdGVzdCkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3Rw dWJfdGJsMSk7CisKKy0tIFNFVDogdW5xdWFsaWZpZWQgbmFtZSBpbiBFWENFUFQgaXMgaW1wbGlj aXRseSBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxF IHRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisKKy0tIFNFVCB3 aXRob3V0IEVYQ0VQVCBjbGVhcnMgdGhlIGV4aXN0aW5nIGV4Y2VwdCBsaXN0CitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisKKy0tIFNFVCB0byBhIGRpZmZlcmVudCBz Y2hlbWEgcmVtb3ZlcyBvbGQgc2NoZW1hJ3MgRVhDRVBUIGVudHJpZXMKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVY Q0VQVCAoVEFCTEUgdGVzdHB1Yl90YmxfczEpOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9h bHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljOworXGRScCsgdGVzdHB1Yl9h bHRlcl9leGNlcHQKKworLS0gZmFpbDogbm9uZXhpc3RlbnQgdGFibGUgaW4gRVhDRVBUIGNsYXVz ZSAoU0VUIHBhdGgpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0 ZW50X3RhYmxlKTsKKworLS0gU0VUOiBtdWx0aXBsZSBzY2hlbWFzIGVhY2ggd2l0aCB0aGVpciBv d24gRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQg U0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX3RibF9zMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90 YmwxKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisKKy0tIGVycm9yOiBFWENFUFQgaXMg bm90IGFsbG93ZWQgd2l0aCBEUk9QCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4 Y2VwdCBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVz dC50ZXN0cHViX3RibF9zMik7CisKKy0tIERST1AgVEFCTEVTIElOIFNDSEVNQSByZW1vdmVzIGFz c29jaWF0ZWQgRVhDRVBUIGVudHJpZXMKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJf ZXhjZXB0IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfYWx0 ZXJfZXhjZXB0CisKIC0tIENsZWFudXAKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9Q IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3RibF9zMjsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDBiYTZkNmY4YmIyLi4xMzA4 YjZlNDNlZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0zNzYsNiAr Mzc2LDYxIEBAICRyZXN1bHQgPQogaXMoJHJlc3VsdCwgcXEoMCksCiAJJ0FMVEVSIC4uLiBBREQg VEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IGV4Y2x1ZGVkIHRhYmxlIG5vdCBzeW5jZWQnKTsKIAor IyBTRVQ6IHJlcGxhY2UgdGhlIGV4Y2VwdCBsaXN0OyB0YWJfZXhjbHVkZWQgaXMgbm93IGluY2x1 ZGVkIGFuZCB0YWJfcHVibGlzaGVkIGlzIGV4Y2x1ZGVkLgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04gc2NoX3B1YiBTRVQgVEFCTEVT IElOIFNDSEVNQSBzY2gxIEVYQ0VQVCAoVEFCTEUgc2NoMS50YWJfcHVibGlzaGVkKSIKKyk7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBU SU9OIHNjaF9zdWIgUkVGUkVTSCBQVUJMSUNBVElPTiIpOworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1YicpOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5U TyBzY2gxLnRhYl9wdWJsaXNoZWQgVkFMVUVTICg3KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9l eGNsdWRlZCBWQUxVRVMgKDcpOworKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgYSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIFdIRVJFIGEg PSA3Iik7CitpcygkcmVzdWx0LCBxcSg3KSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NI RU1BIEVYQ0VQVDogbmV3bHkgaW5jbHVkZWQgdGFibGUgaXMgcmVwbGljYXRlZCcKKyk7CiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBhIEZST00gc2NoMS50YWJfcHVibGlzaGVkIFdIRVJFIGEgPSA3Iik7CitpcygkcmVzdWx0LCBx cSgpLAorCSdBTFRFUiAuLi4gU0VUIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBub3ctZXhjbHVk ZWQgdGFibGUgaXMgbm90IHJlcGxpY2F0ZWQnCispOworCisjIFNFVCB3aXRob3V0IEVYQ0VQVDog Y2xlYXJzIHRoZSBleGNlcHQgbGlzdDsgYm90aCB0YWJsZXMgYXJlIG5vdyBwdWJsaXNoZWQuCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElP TiBzY2hfcHViIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHNjaDEiKTsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gc2NoX3N1YiBSRUZS RVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRp b25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHNjaDEudGFiX3B1Ymxp c2hlZCBWQUxVRVMgKDgpOworCUlOU0VSVCBJTlRPIHNjaDEudGFiX2V4Y2x1ZGVkIFZBTFVFUyAo OCk7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOwor CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBhIEZST00gc2NoMS50YWJfcHVibGlzaGVkIFdIRVJFIGEgPSA4Iik7CitpcygkcmVz dWx0LCBxcSg4KSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIChubyBFWENFUFQp OiB0YWJfcHVibGlzaGVkIHJlcGxpY2F0ZWQgYWZ0ZXIgZXhjZXB0IGxpc3QgY2xlYXJlZCcKKyk7 CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBhIEZST00gc2NoMS50YWJfZXhjbHVkZWQgV0hFUkUgYSA9IDgiKTsKK2lzKCRyZXN1 bHQsIHFxKDgpLAorCSdBTFRFUiAuLi4gU0VUIFRBQkxFUyBJTiBTQ0hFTUEgKG5vIEVYQ0VQVCk6 IHRhYl9leGNsdWRlZCByZXBsaWNhdGVkIGFmdGVyIGV4Y2VwdCBsaXN0IGNsZWFyZWQnCispOwor CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBU SU9OIHNjaF9zdWInKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdE Uk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsKIApAQCAtNDQzLDYgKzQ5OCwzNiBAQCAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9z dWInKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJ Q0FUSU9OIHRhcF9wdWIxJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMicpOwogCisjIE9LIHdoZW4gYSB0YWJsZSBpcyBl eGNsdWRlZCBieSBhIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUIHB1YmxpY2F0aW9uLAorIyBidXQg aXMgaW5jbHVkZWQgYnkgYW5vdGhlciBwdWJsaWNhdGlvbi4KKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSB0YWIxJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIHRhYjEnKTsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIxIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYyBFWENFUFQgKFRBQkxFIHB1YmxpYy50YWIx KTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIFRBQkxFIHRhYjE7CisJSU5TRVJU IElOVE8gdGFiMSBWQUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyIgorKTsKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3Rh cF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoSU5T RVJUIElOVE8gdGFiMSBWQUxVRVMoMikpKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgndGFwX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRhYjEgT1JERVIgQlkgYSIpOworaXMoICRy ZXN1bHQsIHFxKDEKKzIpLAorCSJUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogdGFibGUgZXhjbHVk ZWQgaW4gc2NoZW1hIHB1YiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlciBwdWIgaXMgcmVwbGljYXRl ZCIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBT VUJTQ1JJUFRJT04gdGFwX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CisKICRub2Rl X3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwogCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNTAuMSAo QXBwbGUgR2l0LTE1NSkKCg== --0000000000005eae7e0653017354--