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 1w5IqZ-0036uQ-2N for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 07:40:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5IqX-00CiqY-2e for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 07:40:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w5IqX-00CiqQ-13 for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 07:40:09 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5IqU-000000011kq-1JA7 for pgsql-hackers@postgresql.org; Wed, 25 Mar 2026 07:40:09 +0000 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2b0586d5bb8so44917215ad.3 for ; Wed, 25 Mar 2026 00:40:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774424405; cv=none; d=google.com; s=arc-20240605; b=KgzNz527DrMF/AQU7eOjD/nK0HEvSns0RZa8xf0A7JSm4dT8jWiGcLdspeqR5H8NGq KaQeq16fcZeDPOMAdpZ/WCG6vF0rIL2ugOUKKmQoXsTTztmhsoPdGRjEVKreU5ef6YsV HUmHQJAmMXxBzRo4QPxUCOoOCTUIBIb5VtQt1SXogQhGNOGkszHtcxU8ZwpT7uAHSSWJ 0su5hM5/OKK80hsMARaWNLJPIFa7N2QUt4+28xppvgscjj7aJDj+dldEevxYfG+UmRib sK4P3CxE5DrvSwaAH0rdDlaliLp1l8JKdLtx270awv5pn1Wwc3ndwnCSJKLTsH+vJVm4 E+3g== 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=2UKrZTzXMg3UVBFlDOseGD5jJgkwvTVZOa2i8JtdKak=; fh=SoFgxKgEgeg04pFPab0PrrHLOaKRQ/716CZvaWoFn0k=; b=a9N7oZZLDSnlWr66cdgZAQUZwSskmbt/ryegpfdkLH4sHb2lDwzBW4D5GrHE70EB9p KhnKUxFMOXpfp9RZsIrttUpwnXZuCoFZ5LHq0URX11UxlV7t3wwHRUjMJfZpt8r/p4Gq zMWvQk3a+kynUYqK2dJFNAMy641Liv8c0mzNGlkFow8Kqv3JL5q+m6XaZJ/SNlaFPReo 7jc+JiRmBo3yfhsQYn5ZEz+gnVra1vghYcPw7ZjlWyi8Befq8oakppPKRAo2HmDGKMKy YFJzNJxeNGa9GCDDthSy1zBWkW7D4aGY+udMbN2vQldVwRCtqgiJENj++CLZMqg21I8Z EkfA==; darn=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=1774424405; x=1775029205; darn=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=2UKrZTzXMg3UVBFlDOseGD5jJgkwvTVZOa2i8JtdKak=; b=Mm2BnnSJ8Rcy3eo5MpSTjSXLNCBfurUSzE43oJK5De1Qsb9QwcGlGTl8Ey7kYbViQz ywTYm370UUkKE15esUJlItcKfODEWSR+7s2ZOzNdQ8ylah1/207hfzmTXGVN/kLu92rd wR7UUhM53NpZAbj4I+zB4Vuq0PNiCJtRFgcZAOUrG7kFCg16Dh5jiw9LQP6lqqY2dMCt 2kAy9tCxBk7VzbBTG1MfwgVpBRq1Ry0ysJfYokrjzKextODGFut3+xWqjAXbxeChyKtE MdPuuNq6qonNjF7+PObrYbvYzG9MHGenoSLKa8lnzHkV7iWAzbCeBMPO77hp+nbZ+G6i uaLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774424405; x=1775029205; 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=2UKrZTzXMg3UVBFlDOseGD5jJgkwvTVZOa2i8JtdKak=; b=oUdU8wv4e4lQu5dCTT9s+sEtUPG3qZXWL+uzOIM9D0nsJW9i43maF4Wr/UoJo4oZsv VpMf2CJJYgggFt1tcSrTZJ5zpMY+p7nclxKm1eOhlX9A/sH/VWQs7JZskhsYgCAGkEdt gHQ/mM8KmlYSyLTe2+VKwI/fhyZSKm4wRie+6xXSnRZ9KNQg2s4lViSNzQucXZX9374a hJv9p541j+gHFtI6r0FdHxZPxNR4eMuyAnc+FzOulCqNqI2TGZ51goF+HsUensDpFGU0 F6dkBpCu2g4m5sLsXzqOxWWKKaXADy21ESprKNVzLGkGFMk/wWHfnqtVOHvHeg5WFrlt dDXw== X-Forwarded-Encrypted: i=1; AJvYcCVoPtVCgy0ioUBoJ/PtxgwHg8AhK+eKuGI0pcbr/Mh9QGgB0xH3UKOydU+cl+Hj08SRlyBHgpEApbcBP2Xz@postgresql.org X-Gm-Message-State: AOJu0Yz2XaS2QjoZcaB2LZYa3zXJSk9RRLe+7hFlF0bW9ovsqNaaVhoT xM0/IucUHShdD8/PH6K2VIAjoB1ghDkuqeoj84/LeC59v5Kp/UDqvbWz32rpj5ony7QIonUjm2f 0NQUqRMSgmhxTxLbZCov2H/PEyY67xMs= X-Gm-Gg: ATEYQzz2PIsCzUKB4HXgqApHoY+Ic4A16HCGgXryNrjrG6L2MpPsh60ZryNvnF27HJ4 T76klQDmJvob2WsBouW4+TlM6UZAb8WSoF1aUBn22X81Jb7G9jRSnvHvniaWRXsI0BrK2pnthca KX0i41qfxyN6Tod+t/4+bd25qf0YxjGw9XbEi+dmXwdlRvHbLNUS54DAsEFWZ0dVJY5yi6SYBGs JqOl2pN95XPwsmZ/XZgwlUa2u9TKuvIRwnCyDMd+BCCOx7pnwab1JpXz9BRYXSxvtFd8G9sBkvx /pfi4QNX X-Received: by 2002:a17:903:38c5:b0:2b0:b075:f2fb with SMTP id d9443c01a7336-2b0b0b175b9mr28503645ad.35.1774424404451; Wed, 25 Mar 2026 00:40:04 -0700 (PDT) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> <605328.1747710381@sss.pgh.pa.us> <691261.1747755511@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Wed, 25 Mar 2026 16:39:47 +0900 X-Gm-Features: AaiRm51YfcV2btEfp9GQgSoseJL7cHDK8PQwAgm3Dy3oAHc7ecyZKmwV66916tw Message-ID: Subject: Re: generic plans and "initial" pruning To: Chao Li Cc: Tom Lane , Tender Wang , Alexander Lakhin , Tomas Vondra , Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown Content-Type: multipart/mixed; boundary="0000000000004efcd7064dd46074" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004efcd7064dd46074 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 20, 2026 at 2:20=E2=80=AFAM Amit Langote wrote: > On Mon, Mar 9, 2026 at 1:41=E2=80=AFPM Amit Langote wrote: > > On Sat, Mar 7, 2026 at 6:54=E2=80=AFPM Amit Langote wrote: > > > Attached is v6 of the patch series. I've been working toward > > > committing this, so I wanted to lay out the ExecutorPrep() design and > > > the key trade-offs before doing so. > > > > > > When a cached generic plan references a partitioned table, > > > GetCachedPlan() locks all partitions upfront via > > > AcquireExecutorLocks(), even those that initial pruning will > > > eliminate. But initial partition pruning only runs later during > > > ExecutorStart(). Moving pruning earlier requires some executor setup > > > (range table, permissions, pruning state), and ExecutorPrep() is the > > > vehicle for that. Unlike the approach reverted in last May, this > > > keeps the CachedPlan itself unchanged -- all per-execution state flow= s > > > through a separate CachedPlanPrepData that the caller provides. > > > > > > The approach also keeps GetCachedPlan()'s interface > > > backward-compatible: the new CachedPlanPrepData argument is optional. > > > If a caller passes NULL, all partitions are locked as before and > > > nothing changes. This means existing callers and any new code that > > > calls GetCachedPlan() without caring about pruning-aware locking just > > > works. > > > > > > The risk is on the other side: if a caller does pass a > > > CachedPlanPrepData, GetCachedPlan() will lock only the surviving > > > partitions and populate prep_estates with the EStates that > > > ExecutorPrep() created. The caller then must make those EStates > > > available to ExecutorStart() -- via QueryDesc->estate, > > > portal->prep_estates, or the equivalent path for SPI and SQL > > > functions. If it fails to do so, ExecutorStart() will call > > > ExecutorPrep() again, which may compute different pruning results tha= n > > > the original call, potentially expecting locks on relations that were > > > never acquired. The executor would then operate on relations it > > > doesn't hold locks on. > > > > > > So the contract is: if you opt in to pruning-aware locking by passing > > > CachedPlanPrepData, you must complete the pipeline by delivering the > > > prep EStates to the executor. In the current patch, all the call site= s > > > that pass a CachedPlanPrepData (portals, SPI, EXECUTE, SQL functions, > > > EXPLAIN) do thread the EStates through correctly, and I've tried to > > > make the plumbing straightforward enough that it's hard to get wrong. > > > But it is a new invariant that didn't exist before, and a caller that > > > gets it wrong would fail silently rather than with an obvious error. > > > > > > To catch such violations, I've added a debug-only check in > > > standard_ExecutorStart() that fires when no prep EState was provided. > > > It iterates over the plan's rtable and verifies that every lockable > > > relation is actually locked. It should always be true if > > > AcquireExecutorLocks() locked everything, but would fail if > > > pruning-aware locking happened upstream and the caller dropped the > > > prep EState. The check is skipped in parallel workers, which acquire > > > relation locks lazily in ExecGetRangeTableRelation(). > > > > > > + if (queryDesc->estate =3D=3D NULL) > > > + { > > > +#ifdef USE_ASSERT_CHECKING > > > + if (!IsParallelWorker()) > > > + { > > > + ListCell *lc; > > > + > > > + foreach(lc, queryDesc->plannedstmt->rtable) > > > + { > > > + RangeTblEntry *rte =3D lfirst_node(RangeTblEntry, lc= ); > > > + > > > + if (rte->rtekind =3D=3D RTE_RELATION || > > > + (rte->rtekind =3D=3D RTE_SUBQUERY && rte->relid = !=3D InvalidOid)) > > > + Assert(CheckRelationOidLockedByMe(rte->relid, > > > + rte->rellockmo= de, > > > + true)); > > > + } > > > + } > > > +#endif > > > + queryDesc->estate =3D ExecutorPrep(queryDesc->plannedstmt, > > > + queryDesc->params, > > > + CurrentResourceOwner, > > > + true, > > > + eflags); > > > + } > > > +#ifdef USE_ASSERT_CHECKING > > > + else > > > + { > > > + /* > > > + * A prep EState was provided, meaning pruning-aware locking > > > + * should have locked at least the unpruned relations. > > > + */ > > > + if (!IsParallelWorker()) > > > + { > > > + int rtindex =3D -1; > > > + > > > + while ((rtindex =3D > > > bms_next_member(queryDesc->estate->es_unpruned_relids, > > > + rtindex)) >=3D 0) > > > + { > > > + RangeTblEntry *rte =3D exec_rt_fetch(rtindex, queryD= esc->estate); > > > + > > > + Assert(rte->rtekind =3D=3D RTE_RELATION || > > > + (rte->rtekind =3D=3D RTE_SUBQUERY && > > > + rte->relid !=3D InvalidOid)); > > > + Assert(CheckRelationOidLockedByMe(rte->relid, > > > + rte->rellockmode, = true)); > > > + } > > > + } > > > + } > > > +#endif > > > > > > So the invariant is: if no prep EState was provided, every relation i= n > > > the plan is locked; if one was provided, at least the unpruned > > > relations are locked. Both are checked in assert builds. > > > > > > I think this covers the main concerns, but I may be missing something= . > > > If anyone sees a problem with this approach, I'd like to hear about > > > it. > > > > Here's v7. Some plancache.c changes that I'd made were in the wrong > > patch in v6; this version puts them where they belong. > > Attached is an updated set. One more fix: I added an Assert in > SPI_cursor_open_internal()'s !plan->saved path to verify that > prep_estates is NIL. Unsaved plans always take the custom plan path, > so pruning-aware locking never applies, but it's worth guarding > explicitly since the copyObject/ReleaseCachedPlan sequence that > follows would not be safe otherwise. Also changed > SPI_plan_get_cached_plan() to pass NULL for cprep, since it only > returns the CachedPlan pointer and has no way to deliver prep_estates > to anyone. > > Stepping back -- the core question is whether running executor logic > (pruning) inside GetCachedPlan() is acceptable at all. The plan cache > and executor have always had a clean boundary: plan cache locks > everything, executor runs. This optimization necessarily crosses that > line, because the information needed to decide which locks to skip > (pruning results) can only come from executor machinery. > > The proposed approach has GetCachedPlan() call ExecutorPrep() to do a > limited subset of executor work (range table init, permissions, > pruning), carry the results out through CachedPlanPrepData, and leave > the CachedPlan itself untouched. The executor already has a multi-step > protocol: start/run/end. prep/start/run/end is just a finer > decomposition of what InitPlan() was already doing inside > ExecutorStart(). > > Of the attached patches, I'm targeting 0001-0003 for commit. 0004 (SQL > function support) and 0005 (parallel worker reuse) are useful > follow-ons but not essential. The optimization works without them for > most cases, and they can be reviewed and committed separately. > > If there's a cleaner way to avoid locking pruned partitions without > the plumbing this patch adds, I haven't found it in the year since the > revert. I'd welcome a pointer if you see one. Failing that, I think > this is the right trade-off, but it's a judgment call about where to > hold your nose. > > Tom, I'd value your opinion on whether this approach is something > you'd be comfortable seeing in the tree. Attached is an updated set with some cleanup after another pass. - Removed ExecCreatePartitionPruneStates() from 0001. In 0001-0003, ExecDoInitialPruning() handles both setup and pruning internally; the split isn't needed yet. - Tightened commit messages to describe what each commit does now, not what later commits will use it for. In particular, 0002 is upfront that the portal/SPI/EXPLAIN plumbing is scaffolding that 0003 lights up. - Updated setrefs.c comment for firstResultRels to drop a blanket claim about one ModifyTable per query level. As before, 0001-0003 is the focus, maybe 0004 which teaches the new GetCachedPlan() pruning-aware contract to its relatively new user in function.c. --=20 Thanks, Amit Langote --0000000000004efcd7064dd46074 Content-Type: application/octet-stream; name="v9-0004-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Disposition: attachment; filename="v9-0004-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn5qgjdq1 RnJvbSAzYWVkZWZmYWJlZDQwZDMxN2YxZjdlMmJiODBiY2U4MDYzNDI5Nzk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMjI6MDk6MjMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY5 IDQvNV0gTWFrZSBTUUwgZnVuY3Rpb24gZXhlY3V0b3IgdHJhY2sgRXhlY3V0b3JQcmVwIHN0YXRl CgpFeHRlbmQgdGhlIFNRTCBmdW5jdGlvbiBleGVjdXRvciB0byB1c2UgdGhlIEV4ZWN1dG9yUHJl cCByZXN1bHRzCnJldHVybmVkIGJ5IEdldENhY2hlZFBsYW4oKS4gIGluaXRfZXhlY3V0aW9uX3N0 YXRlKCkgbm93IHBhc3NlcyBhCkNhY2hlZFBsYW5QcmVwRGF0YSB0byBHZXRDYWNoZWRQbGFuKCkg YW5kIHN0b3JlcyB0aGUgcGVyIHN0YXRlbWVudApFeGVjUHJlcCBwb2ludGVycyBpbiB0aGUgZXhl Y3V0aW9uX3N0YXRlIG5vZGVzLgoKQXQgZXhlY3V0aW9uIHRpbWUsIHBvc3RxdWVsX3N0YXJ0KCkg cmVwYXJlbnRzIHRoZSBwcmVwIGVzdGF0ZSdzCmVzX3F1ZXJ5X2N4dCB1bmRlciB0aGUgZnVuY3Rp b24ncyBzdWJjb250ZXh0IHNvIHRoYXQgcHJlcCBzdGF0ZQpmb2xsb3dzIHRoZSB1c3VhbCBwZXIg Y2FsbCBjb250ZXh0IGhpZXJhcmNoeS4KClRoaXMgYWxsb3dzIFNRTCBsYW5ndWFnZSBmdW5jdGlv bnMgdG8gcGFydGljaXBhdGUgaW4gdGhlIHNhbWUKRXhlY3V0b3JQcmVwIG1hY2hpbmVyeSBhcyBv dGhlciBwbGFuIGNhY2hlIHVzZXJzLgoKQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHdoZXJlIHJ1bGUg cmV3cml0ZSBleHBhbmRzIGEgc2luZ2xlIFVQREFURQppbnRvIG11bHRpcGxlIFBsYW5uZWRTdG10 cywgZXhlcmNpc2luZyB0aGUgU1FMIGZ1bmN0aW9uIHBsYW4gY2FjaGUKYW5kIHRoZSBnZW5lcmlj IHBsYW4gcmV1c2UgcGF0aCB0aGF0IG5vdyBpbnZva2VzIEV4ZWN1dG9yUHJlcC4KLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgfCAyOSArKysrKysrKysrKysrLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dCB8IDQ4ICsrKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgICAgICB8 IDM0ICsrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IGMwY2E3MmIz OGRkLi5mMjQ2ZjA1MWMyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTczLDYgKzcz LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZXhlY3V0aW9uX3N0YXRlCiAJYm9vbAkJc2V0c1Jlc3VsdDsJ CS8qIHRydWUgaWYgdGhpcyBxdWVyeSBwcm9kdWNlcyBmdW5jJ3MgcmVzdWx0ICovCiAJYm9vbAkJ bGF6eUV2YWw7CQkvKiB0cnVlIGlmIHNob3VsZCBmZXRjaCBvbmUgcm93IGF0IGEgdGltZSAqLwog CVBsYW5uZWRTdG10ICpzdG10OwkJCS8qIHBsYW4gZm9yIHRoaXMgcXVlcnkgKi8KKwlFU3RhdGUJ ICAgKnByZXBfZXN0YXRlOwkvKiBFU3RhdGUgY3JlYXRlZCBpbiBFeGVjdXRvclByZXAoKSBmb3Ig dGhpcyBwbGFuICovCiAJUXVlcnlEZXNjICAqcWQ7CQkJCS8qIG51bGwgdW5sZXNzIHN0YXR1cyA9 PSBSVU4gKi8KIH0gZXhlY3V0aW9uX3N0YXRlOwogCkBAIC02NTgsNiArNjU5LDggQEAgaW5pdF9l eGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJZXhlY3V0aW9uX3N0 YXRlICpsYXN0dGFnZXMgPSBOVUxMOwogCWludAkJCW5zdG10czsKIAlMaXN0Q2VsbCAgICpsYzsK KwlDYWNoZWRQbGFuUHJlcERhdGEgY3ByZXAgPSB7MH07CisJTGlzdENlbGwgICAqcHJlcF9sYzsK IAogCS8qCiAJICogQ2xlYW4gdXAgYWZ0ZXIgcHJldmlvdXMgcXVlcnksIGlmIHRoZXJlIHdhcyBv bmUuCkBAIC02OTYsMTEgKzY5OSwyMCBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShTUUxGdW5jdGlv bkNhY2hlUHRyIGZjYWNoZSkKIAkgKiBDdXJyZW50UmVzb3VyY2VPd25lciB3aWxsIGJlIHRoZSBz YW1lIHdoZW4gU2h1dGRvd25TUUxGdW5jdGlvbiBydW5zLikKIAkgKi8KIAlmY2FjaGUtPmNvd25l ciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJLyoKKwkgKiBIYXZlIEV4ZWN1dG9yUHJlcCgp IGFsbG9jYXRlIHVuZGVyIGZjYWNoZS0+ZmNvbnRleHQuICBUaGUgcHJlcAorCSAqIEVTdGF0ZXMg aXQgY3JlYXRlcyB3aWxsIGluaXRpYWxseSBsaXZlIHRoZXJlOyBwb3N0cXVlbF9zdGFydCgpCisJ ICogd2lsbCBsYXRlciByZXBhcmVudCB0aGVpciBlc19xdWVyeV9jeHQgaW50byBmY2FjaGUtPnN1 YmNvbnRleHQKKwkgKiB3aGVuIHVzaW5nIHRoZW0gZm9yIGV4ZWN1dGlvbi4KKwkgKi8KKwljcHJl cC5jb250ZXh0ID0gZmNhY2hlLT5mY29udGV4dDsKKwljcHJlcC5vd25lciA9IGZjYWNoZS0+Y293 bmVyOwogCWZjYWNoZS0+Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsCiAJCQkJCQkJ CSAgZmNhY2hlLT5wYXJhbUxJLAogCQkJCQkJCQkgIGZjYWNoZS0+Y293bmVyLAogCQkJCQkJCQkg IE5VTEwsCi0JCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJCSAgJmNwcmVwKTsKIAogCS8qCiAJICog SWYgbmVjZXNzYXJ5LCBtYWtlIGVzYXJyYXlbXSBiaWdnZXIgdG8gaG9sZCB0aGUgbmVlZGVkIHN0 YXRlLgpAQCAtNzIxLDkgKzczMywxMSBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShTUUxGdW5jdGlv bkNhY2hlUHRyIGZjYWNoZSkKIAkvKgogCSAqIEJ1aWxkIGV4ZWN1dGlvbl9zdGF0ZSBsaXN0IHRv IG1hdGNoIHRoZSBudW1iZXIgb2YgY29udGFpbmVkIHBsYW5zLgogCSAqLworCXByZXBfbGMgPSBs aXN0X2hlYWQoY3ByZXAucHJlcF9lc3RhdGVzKTsKIAlmb3JlYWNoKGxjLCBmY2FjaGUtPmNwbGFu LT5zdG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBsYyk7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUgPSBuZXh0X3ByZXBfZXN0YXRlKGNw cmVwLnByZXBfZXN0YXRlcywgJnByZXBfbGMpOwogCQlleGVjdXRpb25fc3RhdGUgKm5ld2VzOwog CiAJCS8qCkBAIC03NjUsNiArNzc5LDcgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rp b25DYWNoZVB0ciBmY2FjaGUpCiAJCW5ld2VzLT5zZXRzUmVzdWx0ID0gZmFsc2U7CS8qIG1pZ2h0 IGNoYW5nZSBiZWxvdyAqLwogCQluZXdlcy0+bGF6eUV2YWwgPSBmYWxzZTsJLyogbWlnaHQgY2hh bmdlIGJlbG93ICovCiAJCW5ld2VzLT5zdG10ID0gc3RtdDsKKwkJbmV3ZXMtPnByZXBfZXN0YXRl ID0gcHJlcF9lc3RhdGU7CiAJCW5ld2VzLT5xZCA9IE5VTEw7CiAKIAkJaWYgKHN0bXQtPmNhblNl dFRhZykKQEAgLTEzNjMsNiArMTM3OCwxNSBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3Rh dGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAllbHNlCiAJCWRlc3QgPSBOb25l X1JlY2VpdmVyOwogCisJLyoKKwkgKiBQcmVwIEVTdGF0ZXMgd2VyZSBidWlsdCB1bmRlciBmY2Fj aGUtPmZjb250ZXh0LiAgRm9yIGV4ZWN1dGlvbiwKKwkgKiBtYWtlIHRoZWlyIGVzX3F1ZXJ5X2N4 dCBhIGNoaWxkIG9mIGZjYWNoZS0+c3ViY29udGV4dCBzbyB0aGV5CisJICogZm9sbG93IHRoZSB1 c3VhbCBwZXIgY2FsbCBsaWZldGltZS4KKwkgKi8KKwlpZiAoZXMtPnByZXBfZXN0YXRlKQorCQlN ZW1vcnlDb250ZXh0U2V0UGFyZW50KGVzLT5wcmVwX2VzdGF0ZS0+ZXNfcXVlcnlfY3h0LAorCQkJ CQkJCSAgIGZjYWNoZS0+c3ViY29udGV4dCk7CisKIAllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2Mo ZXMtPnN0bXQsCiAJCQkJCQkJIGZjYWNoZS0+ZnVuYy0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVT bmFwc2hvdCgpLApAQCAtMTM3MSw3ICsxMzk1LDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9u X3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCQkJCQkJIGZjYWNoZS0+ cGFyYW1MSSwKIAkJCQkJCQkgZXMtPnFkID8gZXMtPnFkLT5xdWVyeUVudiA6IE5VTEwsCiAJCQkJ CQkJIDAsCi0JCQkJCQkJIE5VTEwpOworCQkJCQkJCSBlcy0+cHJlcF9lc3RhdGUpOwogCiAJLyog VXRpbGl0eSBjb21tYW5kcyBkb24ndCBuZWVkIEV4ZWN1dG9yLiAqLwogCWlmIChlcy0+cWQtPm9w ZXJhdGlvbiAhPSBDTURfVVRJTElUWSkKQEAgLTE0NjIsNiArMTQ4Niw3IEBAIHBvc3RxdWVsX2Vu ZChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAogCUZy ZWVRdWVyeURlc2MoZXMtPnFkKTsKIAllcy0+cWQgPSBOVUxMOworCWVzLT5wcmVwX2VzdGF0ZSA9 IE5VTEw7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAppbmRleCAxZDY5YWIwYTFjMi4uMzcxNjczYTZl OTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQKQEAgLTQ1OSw0ICs0 NTksNTIgQEAgTk9USUNFOiAgY3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmlu Z19wcnVuaW5nX3AxCiBkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AsIGludmFsX2R1 cmluZ19wcnVuaW5nX3NpZ25hbDsKIGRyb3AgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVf ZnVuYywgc3RhYmxlX3BydW5pbmdfdmFsOwogZGVhbGxvY2F0ZSBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19xOworLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2FjaGUgd2hlbiByZXdyaXRlIGV4 cGFuZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRpcGxlIHBsYW5uZWQgc3RhdGVt ZW50cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0IHRvCistLSBjb250YWluIG1v cmUgdGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1dG9yIHN0YXRlIGZvciB0aGUg Zmlyc3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3QgZGVzdHJveSBzdGF0ZSBuZWVk ZWQgYnkgdGhlIHNlY29uZCBvbmUuCitzZXQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJp Y19wbGFuOworY3JlYXRlIHRhYmxlIHNxbGZfYmFzZShpZCBpbnQsIHZhbCBpbnQpIHBhcnRpdGlv biBieSBsaXN0IChpZCk7CitjcmVhdGUgdGFibGUgc3FsZl9iYXNlXzEgcGFydGl0aW9uIG9mIHNx bGZfYmFzZSBmb3IgdmFsdWVzIGluICgxKTsKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2VfMiBwYXJ0 aXRpb24gb2Ygc3FsZl9iYXNlIGZvciB2YWx1ZXMgaW4gKDIpOworY3JlYXRlIHRhYmxlIHNxbGZf bG9nKGlkIGludCwgbm90ZSB0ZXh0KTsKK2luc2VydCBpbnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEs IDEwKTsKK2NyZWF0ZSBydWxlIHNxbGZfYmFzZV91cGRfbG9nIGFzCitvbiB1cGRhdGUgdG8gc3Fs Zl9iYXNlIGRvIGFsc28KKwlpbnNlcnQgaW50byBzcWxmX2xvZyhpZCwgbm90ZSkKKwl2YWx1ZXMg KG5ldy5pZCwgJ2xvZ2dlZCBieSBydWxlJyk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBz cWxmX2V4ZWNwcmVwX3Rlc3QoYSBpbnQsIHYgaW50KQorcmV0dXJucyB2b2lkCitsYW5ndWFnZSBz cWwKK2FzICQkCisJdXBkYXRlIHNxbGZfYmFzZSBzZXQgdmFsID0gdiB3aGVyZSBpZCA9IGE7Cisk JDsKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rlc3QoMSwgMjApOworIHNxbGZfZXhlY3ByZXBfdGVz dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBzcWxmX2V4ZWNw cmVwX3Rlc3QoMSwgMzApOworIHNxbGZfZXhlY3ByZXBfdGVzdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc3FsZl9iYXNlIG9yZGVyIGJ5IDE7Cisg aWQgfCB2YWwgCistLS0tKy0tLS0tCisgIDEgfCAgMzAKKygxIHJvdykKKworc2VsZWN0ICogZnJv bSBzcWxmX2xvZyBvcmRlciBieSAxOworIGlkIHwgICAgICBub3RlICAgICAgCistLS0tKy0tLS0t LS0tLS0tLS0tLS0KKyAgMSB8IGxvZ2dlZCBieSBydWxlCisgIDEgfCBsb2dnZWQgYnkgcnVsZQor KDIgcm93cykKKworZHJvcCBydWxlIHNxbGZfYmFzZV91cGRfbG9nIG9uIHNxbGZfYmFzZTsKK2Ry b3AgdGFibGUgc3FsZl9iYXNlLCBzcWxmX2xvZzsKK2Ryb3AgZnVuY3Rpb24gc3FsZl9leGVjcHJl cF90ZXN0OwogcmVzZXQgcGxhbl9jYWNoZV9tb2RlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGxhbmNhY2hlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5z cWwKaW5kZXggMTM5YjQ2ODhmZDYuLmI4OWM5YWQ2OWE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wbGFuY2FjaGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5j YWNoZS5zcWwKQEAgLTI3Myw0ICsyNzMsMzggQEAgZHJvcCB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWw7CiBkcm9wIGZ1bmN0aW9uIGludmFs aWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVuaW5nX3ZhbDsKIGRlYWxsb2NhdGUgaW52 YWxfZHVyaW5nX3BydW5pbmdfcTsKIAorLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2Fj aGUgd2hlbiByZXdyaXRlIGV4cGFuZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRp cGxlIHBsYW5uZWQgc3RhdGVtZW50cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0 IHRvCistLSBjb250YWluIG1vcmUgdGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1 dG9yIHN0YXRlIGZvciB0aGUgZmlyc3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3Qg ZGVzdHJveSBzdGF0ZSBuZWVkZWQgYnkgdGhlIHNlY29uZCBvbmUuCisKK3NldCBwbGFuX2NhY2hl X21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2UoaWQg aW50LCB2YWwgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoaWQpOworY3JlYXRlIHRhYmxlIHNxbGZf YmFzZV8xIHBhcnRpdGlvbiBvZiBzcWxmX2Jhc2UgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUg dGFibGUgc3FsZl9iYXNlXzIgcGFydGl0aW9uIG9mIHNxbGZfYmFzZSBmb3IgdmFsdWVzIGluICgy KTsKK2NyZWF0ZSB0YWJsZSBzcWxmX2xvZyhpZCBpbnQsIG5vdGUgdGV4dCk7CisKK2luc2VydCBp bnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEsIDEwKTsKKworY3JlYXRlIHJ1bGUgc3FsZl9iYXNlX3Vw ZF9sb2cgYXMKK29uIHVwZGF0ZSB0byBzcWxmX2Jhc2UgZG8gYWxzbworCWluc2VydCBpbnRvIHNx bGZfbG9nKGlkLCBub3RlKQorCXZhbHVlcyAobmV3LmlkLCAnbG9nZ2VkIGJ5IHJ1bGUnKTsKKwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3FsZl9leGVjcHJlcF90ZXN0KGEgaW50LCB2IGlu dCkKK3JldHVybnMgdm9pZAorbGFuZ3VhZ2Ugc3FsCithcyAkJAorCXVwZGF0ZSBzcWxmX2Jhc2Ug c2V0IHZhbCA9IHYgd2hlcmUgaWQgPSBhOworJCQ7CisKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rl c3QoMSwgMjApOworc2VsZWN0IHNxbGZfZXhlY3ByZXBfdGVzdCgxLCAzMCk7CitzZWxlY3QgKiBm cm9tIHNxbGZfYmFzZSBvcmRlciBieSAxOworc2VsZWN0ICogZnJvbSBzcWxmX2xvZyBvcmRlciBi eSAxOworCitkcm9wIHJ1bGUgc3FsZl9iYXNlX3VwZF9sb2cgb24gc3FsZl9iYXNlOworZHJvcCB0 YWJsZSBzcWxmX2Jhc2UsIHNxbGZfbG9nOworZHJvcCBmdW5jdGlvbiBzcWxmX2V4ZWNwcmVwX3Rl c3Q7CiByZXNldCBwbGFuX2NhY2hlX21vZGU7Ci0tIAoyLjQ3LjMKCg== --0000000000004efcd7064dd46074 Content-Type: application/octet-stream; name="v9-0005-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Disposition: attachment; filename="v9-0005-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn5qgjde0 RnJvbSBkZGNiZDY5M2Y5YWE4NDk4YzA2YjRmMjBmZTRkZjIwZmY5ODk3NGM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MDY6NTcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY5 IDUvNV0gUmV1c2UgcGFydGl0aW9uIHBydW5pbmcgcmVzdWx0cyBpbiBwYXJhbGxlbCB3b3JrZXJz CgpQYXNzIHRoZSBsZWFkZXIncyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgYW5k IHVucHJ1bmVkCnJlbGlkcyB0byBwYXJhbGxlbCB3b3JrZXJzIGFuZCByZXVzZSB0aGVtIHZpYSBF eGVjdXRvclByZXAoKS4gIFRoaXMKYXZvaWRzIHJlcGVhdGluZyBwcnVuaW5nIGxvZ2ljIGluIHdv cmtlcnMsIHdoaWNoIGlzIG5vdCBvbmx5CnJlZHVuZGFudCBidXQgYWxzbyByaXNrcyBkaXZlcmdl bmNlIGR1ZSB0byBub25kZXRlcm1pbmlzbSBpbiBwcnVuaW5nCnN0ZXBzIG9yIHBhcmFtZXRlciBl dmFsdWF0aW9uIHRpbWluZy4KCkZhY3RvciB0aGUgY3JlYXRpb24gb2YgUGFydGl0aW9uUHJ1bmVT dGF0ZSBzdHJ1Y3R1cmVzIG91dCBvZgpFeGVjRG9Jbml0aWFsUHJ1bmluZygpIGludG8gYSBuZXcg RXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKCkKZnVuY3Rpb24uICBQYXJhbGxlbCB3b3Jr ZXJzIG5lZWQgdG8gc2V0IHVwIHBydW5pbmcgc3RhdGUgd2l0aG91dApwZXJmb3JtaW5nIGluaXRp YWwgcHJ1bmluZywgc2luY2UgdGhleSByZWNlaXZlIHRoZSBsZWFkZXIncyByZXN1bHRzCmluc3Rl YWQuCgpJbnRyb2R1Y2UgQ2hlY2tJbml0aWFsUHJ1bmluZ1Jlc3VsdHNJbldvcmtlcigpIChkZWJ1 Zy1idWlsZHMgb25seSkKdG8gdmVyaWZ5IHRoYXQgdGhlIHJlc3VsdHMgbWF0Y2ggd2hhdCB0aGUg d29ya2VyIHdvdWxkIGNvbXB1dGUuClRoaXMgY2hlY2sgaGVscHMgY2F0Y2ggaW5jb25zaXN0ZW5j aWVzIGFjcm9zcyBsZWFkZXIgYW5kIHdvcmtlcgpwcnVuaW5nIGxvZ2ljLgotLS0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICB8ICAyNSArKysrKy0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYyAgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgfCAgNDQgKysrKysrKystLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICB8ICAgMiArLQogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmggICAgICB8ICAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9u cygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMzM2YmQ0 ZDA5YjMuLjVmYTMxMjQzNmZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTIwNyw3ICsy MDcsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCQlxdWVyeURlc2MtPmVzdGF0ZSA9IEV4ZWN1dG9yUHJlcChxdWVyeURlc2MtPnBs YW5uZWRzdG10LAogCQkJCQkJCQkJCSBxdWVyeURlc2MtPnBhcmFtcywKIAkJCQkJCQkJCQkgQ3Vy cmVudFJlc291cmNlT3duZXIsCi0JCQkJCQkJCQkJIGVmbGFncyk7CisJCQkJCQkJCQkJIGVmbGFn cywgdHJ1ZSk7CiAJfQogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIAllbHNlCkBAIC0zMzAs NyArMzMwLDggQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKICAqIEV4ZWN1dG9yUHJlcDogcHJlcGFyZSBleGVjdXRvciBzdGF0ZSBmb3Ig YSBQbGFubmVkU3RtdCBvdXRzaWRlIEV4ZWN1dG9yU3RhcnQuCiAgKgogICogUGVyZm9ybXMgcmFu Z2UgdGFibGUgaW5pdGlhbGl6YXRpb24sIHBlcm1pc3Npb24gY2hlY2tzLCBhbmQgaW5pdGlhbAot ICogcGFydGl0aW9uIHBydW5pbmcgaWYgcGFydFBydW5lSW5mb3MgYXJlIHByZXNlbnQuCisgKiBw YXJ0aXRpb24gcHJ1bmluZyBpZiBwYXJ0UHJ1bmVJbmZvcyBhcmUgcHJlc2VudCBhbmQgZG9faW5p dGlhbF9wcnVuaW5nIGlzCisgKiB0cnVlOyBmYWxzZSBpbiBhIHBhcmFsbGVsIHdvcmtlci4KICAq CiAgKiBSZXR1cm5zIGFuIEVTdGF0ZSB0aGF0IHRoZSBjYWxsZXIgbXVzdCBlaXRoZXIgcGFzcyB0 byBFeGVjdXRvclN0YXJ0KCkKICAqIGZvciByZXVzZSBvciBmcmVlIHZpYSBGcmVlRXhlY3V0b3JT dGF0ZSgpIGlmIGV4ZWN1dGlvbiB3aWxsIG5vdCBwcm9jZWVkLgpAQCAtMzQxLDcgKzM0Miw3IEBA IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAgKi8KIEVTdGF0ZSAqCiBFeGVjdXRvclByZXAoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxp c3RJbmZvIHBhcmFtcywgUmVzb3VyY2VPd25lciBvd25lciwKLQkJCSBpbnQgZWZsYWdzKQorCQkJ IGludCBlZmxhZ3MsIGJvb2wgZG9faW5pdGlhbF9wcnVuaW5nKQogewogCVJlc291cmNlT3duZXIg b2xkb3duZXI7CiAJRVN0YXRlICplc3RhdGU7CkBAIC0zNzcsMTQgKzM3OCwyMiBAQCBFeGVjdXRv clByZXAoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUmVzb3VyY2VP d25lciBvd25lciwKIAlDdXJyZW50UmVzb3VyY2VPd25lciA9IG93bmVyOwogCiAJLyoKLQkgKiBT ZXQgdXAgUGFydGl0aW9uUHJ1bmVTdGF0ZSBzdHJ1Y3R1cmVzIGFuZCBwZXJmb3JtIGluaXRpYWwg cGFydGl0aW9uCi0JICogcHJ1bmluZyB0byBjb21wdXRlIHRoZSBzdWJzZXQgb2YgY2hpbGQgc3Vi cGxhbnMgdGhhdCB3aWxsIGJlCi0JICogZXhlY3V0ZWQuICBUaGUgcmVzdWx0cywgd2hpY2ggYXJl IGJpdG1hcHNldHMgb2Ygc2VsZWN0ZWQgY2hpbGQKLQkgKiBpbmRleGVzLCBhcmUgc2F2ZWQgaW4g ZXNfcGFydF9wcnVuZV9yZXN1bHRzLCBwYXJhbGxlbCB0bworCSAqIFNldCB1cCBQYXJ0aXRpb25Q cnVuZVN0YXRlIHN0cnVjdHVyZXMgbmVlZGVkIGZvciBpbml0aWFsCisJICogcGFydGl0aW9uIHBy dW5pbmcuCisJICoKKwkgKiBJZiBkb19pbml0aWFsX3BydW5pbmcgaXMgdHJ1ZSwgYWxzbyBwZXJm b3JtIGluaXRpYWwgcHJ1bmluZyB0bworCSAqIGNvbXB1dGUgdGhlIHN1YnNldCBvZiBjaGlsZCBz dWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuCisJICogVGhlIHJlc3VsdHMsIHdoaWNoIGFy ZSBiaXRtYXBzZXRzIG9mIHNlbGVjdGVkIGNoaWxkIGluZGV4ZXMsCisJICogYXJlIHNhdmVkIGlu IGVzX3BhcnRfcHJ1bmVfcmVzdWx0cywgcGFyYWxsZWwgdG8KIAkgKiBlc19wYXJ0X3BydW5lX2lu Zm9zLiAgUlQgaW5kZXhlcyBvZiBzdXJ2aXZpbmcgcGFydGl0aW9ucyBhcmUKIAkgKiBhZGRlZCB0 byBlc191bnBydW5lZF9yZWxpZHMuCisJICoKKwkgKiBQYXJhbGxlbCB3b3JrZXJzIHBhc3MgZmFs c2UgaGVyZSBhbmQgaW5zdGVhZCByZWNlaXZlIHRoZQorCSAqIGxlYWRlcidzIHBydW5pbmcgcmVz dWx0cyB2aWEgc2hhcmVkIG1lbW9yeS4KIAkgKi8KLQlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3Rh dGUpOworCUV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcyhlc3RhdGUpOworCWlmIChkb19p bml0aWFsX3BydW5pbmcpCisJCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVzdGF0ZSk7CiAKIAlDdXJy ZW50UmVzb3VyY2VPd25lciA9IG9sZG93bmVyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jCmluZGV4IDAyNDc4MGQzNTE2Li4yZGU0YjM1YTE2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3Ivbm9kZUFnZy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVBcHBlbmQuaCIKQEAg LTY3LDYgKzY4LDggQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCVVJTlQ2NENP TlNUKDB4RTAwMDAwMDAwMDAwMDAwOCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVN RU5UQVRJT04gVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA5KQogI2RlZmluZSBQQVJBTExF TF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBBKQorI2RlZmlu ZSBQQVJBTExFTF9LRVlfUEFSVElUSU9OX1BSVU5FX1JFU1VMVFMJVUlOVDY0Q09OU1QoMHhFMDAw MDAwMDAwMDAwMDBCKQorI2RlZmluZSBQQVJBTExFTF9LRVlfVU5QUlVORURfUkVMSURTCVVJTlQ2 NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQykKIAogI2RlZmluZSBQQVJBTExFTF9UVVBMRV9RVUVV RV9TSVpFCQk2NTUzNgogCkBAIC0xNDEsNiArMTQ0LDggQEAgc3RhdGljIGJvb2wgRXhlY1BhcmFs bGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAvKiBIZWxw ZXIgZnVuY3Rpb24gdGhhdCBydW5zIGluIHRoZSBwYXJhbGxlbCB3b3JrZXIuICovCiBzdGF0aWMg RGVzdFJlY2VpdmVyICpFeGVjUGFyYWxsZWxHZXRSZWNlaXZlcihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpOwogCitzdGF0aWMgdm9pZCBDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0lu V29ya2VyKEVTdGF0ZSAqZXN0YXRlKTsKKwogLyoKICAqIENyZWF0ZSBhIHNlcmlhbGl6ZWQgcmVw cmVzZW50YXRpb24gb2YgdGhlIHBsYW4gdG8gYmUgc2VudCB0byBlYWNoIHdvcmtlci4KICAqLwpA QCAtNjIwLDEyICs2MjUsMTggQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFu c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVz OwogCWNoYXIJICAgKnBzdG10X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CisJY2hhcgkg ICAqcGFydF9wcnVuZV9yZXN1bHRzX2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRz X3NwYWNlOworCWNoYXIJICAgKnVucHJ1bmVkX3JlbGlkc19kYXRhOworCWNoYXIJICAgKnVucHJ1 bmVkX3JlbGlkc19zcGFjZTsKIAljaGFyCSAgICpwYXJhbWxpc3RpbmZvX3NwYWNlOwogCUJ1ZmZl clVzYWdlICpidWZ1c2FnZV9zcGFjZTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZV9zcGFjZTsKIAlT aGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKIAlT aGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCWlu dAkJCXBzdG10X2xlbjsKKwlpbnQJCQlwYXJ0X3BydW5lX3Jlc3VsdHNfbGVuOworCWludAkJCXVu cHJ1bmVkX3JlbGlkc19sZW47CiAJaW50CQkJcGFyYW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5z dHJ1bWVudGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJaml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAw OwpAQCAtNjU0LDYgKzY2NSw4IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAogCS8qIEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4g dG8gYmUgc2VudCB0byB3b3JrZXJzLiAqLwogCXBzdG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxh bihwbGFuc3RhdGUtPnBsYW4sIGVzdGF0ZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzX2RhdGEgPSBu b2RlVG9TdHJpbmcoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMpOworCXVucHJ1bmVkX3Jl bGlkc19kYXRhID0gbm9kZVRvU3RyaW5nKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKTsKIAog CS8qIENyZWF0ZSBhIHBhcmFsbGVsIGNvbnRleHQuICovCiAJcGN4dCA9IENyZWF0ZVBhcmFsbGVs Q29udGV4dCgicG9zdGdyZXMiLCAiUGFyYWxsZWxRdWVyeU1haW4iLCBud29ya2Vycyk7CkBAIC02 ODAsNiArNjkzLDE2IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBFU3RhdGUgKmVzdGF0ZSwKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0 b3IsIHBzdG10X2xlbik7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDEpOwogCisJLyogRXN0aW1hdGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgcGFydF9wcnVuZV9yZXN1 bHRzLiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0c19sZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1 bHRzX2RhdGEpICsgMTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3Is IHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ ZXN0aW1hdG9yLCAxKTsKKworCS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIHVucHJ1 bmVkX3JlbGlkcy4gKi8KKwl1bnBydW5lZF9yZWxpZHNfbGVuID0gc3RybGVuKHVucHJ1bmVkX3Jl bGlkc19kYXRhKSArIDE7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCB1bnBydW5lZF9yZWxpZHNfbGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CisKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJhbUxp c3RJbmZvLiAqLwogCXBhcmFtbGlzdGluZm9fbGVuID0gRXN0aW1hdGVQYXJhbUxpc3RTcGFjZShl c3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4 dC0+ZXN0aW1hdG9yLCBwYXJhbWxpc3RpbmZvX2xlbik7CkBAIC03ODEsNiArODA0LDE2IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAltZW1jcHkocHN0bXRfc3BhY2UsIHBzdG10X2RhdGEsIHBzdG10X2xlbik7CiAJc2htX3RvY19p bnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIHBzdG10X3NwYWNlKTsK IAorCS8qIFN0b3JlIHNlcmlhbGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzICovCisJcGFydF9wcnVu ZV9yZXN1bHRzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRfcHJ1bmVf cmVzdWx0c19sZW4pOworCW1lbWNweShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UsIHBhcnRfcHJ1 bmVfcmVzdWx0c19kYXRhLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGVuKTsKKwlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywgcGFydF9w cnVuZV9yZXN1bHRzX3NwYWNlKTsKKworCS8qIFN0b3JlIHNlcmlhbGl6ZWQgdW5wcnVuZWRfcmVs aWRzICovCisJdW5wcnVuZWRfcmVsaWRzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50 b2MsIHVucHJ1bmVkX3JlbGlkc19sZW4pOworCW1lbWNweSh1bnBydW5lZF9yZWxpZHNfc3BhY2Us IHVucHJ1bmVkX3JlbGlkc19kYXRhLCB1bnBydW5lZF9yZWxpZHNfbGVuKTsKKwlzaG1fdG9jX2lu c2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9VTlBSVU5FRF9SRUxJRFMsIHVucHJ1bmVkX3Jl bGlkc19zcGFjZSk7CisKIAkvKiBTdG9yZSBzZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJ cGFyYW1saXN0aW5mb19zcGFjZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBwYXJhbWxp c3RpbmZvX2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFS QU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFjZSk7CkBAIC0xMjgwLDEwICsxMzEzLDE1IEBA IEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVj ZWl2ZXIsCiAJCQkJCQkgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKIAljaGFyCSAgICpwc3Rt dHNwYWNlOworCWNoYXIJICAgKnBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZTsKKwljaGFyCSAgICp1 bnBydW5lZF9yZWxpZHNfc3BhY2U7CiAJY2hhcgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3Rt dCAqcHN0bXQ7CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzOworCUJpdG1hcHNldCAgKnVu cHJ1bmVkX3JlbGlkczsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEk7CiAJY2hhcgkgICAqcXVlcnlT dHJpbmc7CisJRVN0YXRlCSAgICpwcmVwX2VzdGF0ZSA9IE5VTEw7CiAKIAkvKiBHZXQgdGhlIHF1 ZXJ5IHN0cmluZyBmcm9tIHNoYXJlZCBtZW1vcnkgKi8KIAlxdWVyeVN0cmluZyA9IHNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIGZhbHNlKTsKQEAgLTEyOTYsMTIg KzEzMzQsODAgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJl Y2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1M aXN0KCZwYXJhbXNwYWNlKTsKIAorCS8qIFJlY29uc3RydWN0IGxlYWRlci1zdXBwbGllZCBwYXJ0 X3BydW5lX3Jlc3VsdHMgYW5kIHVucHJ1bmVkX3JlbGlkcy4gKi8KKwlwYXJ0X3BydW5lX3Jlc3Vs dHNfc3BhY2UgPQorCQlzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05f UFJVTkVfUkVTVUxUUywgZmFsc2UpOworCXBhcnRfcHJ1bmVfcmVzdWx0cyA9IChMaXN0ICopIHN0 cmluZ1RvTm9kZShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UpOworCXVucHJ1bmVkX3JlbGlkc19z cGFjZSA9CisJCXNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1VOUFJVTkVEX1JFTElE UywgZmFsc2UpOworCXVucHJ1bmVkX3JlbGlkcyA9IChCaXRtYXBzZXQgKikgc3RyaW5nVG9Ob2Rl KHVucHJ1bmVkX3JlbGlkc19zcGFjZSk7CisKKwkvKgorCSAqIElmIHBydW5pbmcgd2FzIGRvbmUg aW4gdGhlIGxlYWRlciwgYnVpbGQgYSBwcmVwIGVzdGF0ZSBpbiB0aGUgd29ya2VyCisJICogYW5k IGluamVjdCB0aGUgbGVhZGVyJ3MgcHJ1bmluZyByZXN1bHRzIGludG8gaXQgZm9yIHJldXNlLgor CSAqLworCWlmIChwc3RtdC0+cGFydFBydW5lSW5mb3MpCisJeworCQlwcmVwX2VzdGF0ZSA9IEV4 ZWN1dG9yUHJlcChwc3RtdCwgcGFyYW1MSSwgQ3VycmVudFJlc291cmNlT3duZXIsIDAsIGZhbHNl KTsKKwkJQXNzZXJ0KHByZXBfZXN0YXRlKTsKKworCQlwcmVwX2VzdGF0ZS0+ZXNfcGFydF9wcnVu ZV9yZXN1bHRzID0gcGFydF9wcnVuZV9yZXN1bHRzOworCQlwcmVwX2VzdGF0ZS0+ZXNfdW5wcnVu ZWRfcmVsaWRzID0KKwkJCWJtc19hZGRfbWVtYmVycyhwcmVwX2VzdGF0ZS0+ZXNfdW5wcnVuZWRf cmVsaWRzLAorCQkJCQkJCXVucHJ1bmVkX3JlbGlkcyk7CisKKwkJLyoKKwkJICogQSBkZWJ1Zy1i dWlsZC1vbmx5IGNoZWNrIHRoYXQgdGhlIHBydW5pbmcgcmVzdWx0cyBwYXNzZWQgZnJvbSB0aGUK KwkJICogbGVhZGVyIG1hdGNoIHdoYXQgdGhlIHdvcmtlciB3b3VsZCBpbmRlcGVuZGVudGx5IGNv bXB1dGUuCisJCSAqLworCQlDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2VyKHByZXBf ZXN0YXRlKTsKKwl9CisKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8K IAlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJ CQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICBy ZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zLAotCQkJCQkJICAgTlVM TCk7CisJCQkJCQkgICBwcmVwX2VzdGF0ZSk7Cit9CisKKy8qCisgKiBDaGVja0luaXRpYWxQcnVu aW5nUmVzdWx0c0luV29ya2VyCisgKgkJVmVyaWZ5IHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMg cGFzc2VkIGZyb20gdGhlIGxlYWRlciBwcm9jZXNzLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQg dG8gYmUgY2FsbGVkIGR1cmluZyBwYXJhbGxlbCB3b3JrZXIgcXVlcnkgc2V0dXAuCisgKiBJdCBy ZWNvbXB1dGVzIGluaXRpYWwgcHJ1bmluZyByZXN1bHRzIGxvY2FsbHkgYW5kIGNvbXBhcmVzIHRo ZW0gd2l0aAorICogdGhvc2UgcmVjZWl2ZWQgZnJvbSB0aGUgbGVhZGVyLiBBbnkgbWlzbWF0Y2gg bWF5IGluZGljYXRlIGEgZGl2ZXJnZW5jZQorICogYmV0d2VlbiBsZWFkZXIgYW5kIHdvcmtlciBs b2dpYyBvciBlbnZpcm9ubWVudC4KKyAqCisgKiBPbmx5IHBlcmZvcm1lZCBpbiBkZWJ1ZyBidWls ZHMuCisgKi8KK3N0YXRpYyB2b2lkCitDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2Vy KEVTdGF0ZSAqZXN0YXRlKQoreworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlMaXN0Q2Vs bCAgICpsYzsKKwlpbnQJCQlpOworCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1 bHRzICE9IE5VTEwpOworCWkgPSAwOworCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVu ZV9zdGF0ZXMpCisJeworCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlID0gKFBhcnRp dGlvblBydW5lU3RhdGUgKikgbGZpcnN0KGxjKTsKKwkJQml0bWFwc2V0ICpyZXVzZV92YWxpZHN1 YnBsYW5zID0KKwkJCQlsaXN0X250aF9ub2RlKEJpdG1hcHNldCwgZXN0YXRlLT5lc19wYXJ0X3By dW5lX3Jlc3VsdHMsIGkrKyk7CisJCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbnMgPSBOVUxMOwor CQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5fcnRpcyA9IE5VTEw7CisKKwkJaWYgKHBydW5lc3Rh dGUtPmRvX2luaXRpYWxfcHJ1bmUpCisJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGlu Z1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUsCisJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5f cnRpcyk7CisJCWlmICghYm1zX2VxdWFsKHZhbGlkc3VicGxhbnMsIHJldXNlX3ZhbGlkc3VicGxh bnMpKQorCQkJZWxvZyhFUlJPUiwgImRpZmZlcmVudCB2YWxpZHN1YnBsYW5zIGluIHBhcmFsbGVs IHdvcmtlciIpOworCQlpZiAoYm1zX25vbmVtcHR5X2RpZmZlcmVuY2UodmFsaWRzdWJwbGFuX3J0 aXMsIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSkKKwkJCWVsb2coRVJST1IsICJkaWZmZXJl bnQgdW5wcnVuYWJsZV9yZWxpZHMgaW4gcGFyYWxsZWwgd29ya2VyIik7CisJfQorI2VuZGlmCiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggMmEzYWYwMDZmNzcu LjQ3MzIyNjE0YWFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xOTQy LDYgKzE5NDIsOSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29s bm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoKICAqIEZ1bmN0aW9uczoKICAqCisgKiBFeGVjQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMKKyAqICAgICBDcmVhdGUgUGFydGl0aW9uUHJ1bmVTdGF0 ZSBmb3IgYWxsIFBhcnRpdGlvblBydW5lSW5mb3MgaW4gdGhlIEVTdGF0ZQorICoKICAqIEV4ZWNE b0luaXRpYWxQcnVuaW5nOgogICoJCVBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZywg aWYgbmVjZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhlIHNldAogICoJCW9mIGNoaWxkIHN1Ym5vZGVz IHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJpbmcgRXhlY0luaXROb2RlKCkgZm9yCkBA IC0xOTY3LDE1ICsxOTcwLDQwIEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChM aXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKi8KIAogCisvKgorICogRXhlY0NyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGVzCisgKgorICogQ3JlYXRlIGEgUGFydGl0aW9uUHJ1bmVTdGF0 ZSBmb3IgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gaW4gdGhlIGVzdGF0ZSwKKyAqIGFuZCBzYXZl IHRoZW0gaW4gZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcy4gVGhpcyBzZXR1cCBpcyByZXF1 aXJlZAorICogYmVmb3JlIGFueSBpbml0aWFsIG9yIHJ1bnRpbWUgcHJ1bmluZyBjYW4gb2NjdXIu CisgKi8KK3ZvaWQKK0V4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcyhFU3RhdGUgKmVzdGF0 ZSkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9pbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0 X25vZGUoUGFydGl0aW9uUHJ1bmVJbmZvLCBsYyk7CisJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGU7CisKKwkJLyogQ3JlYXRlIGFuZCBzYXZlIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRl LiAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBy dW5laW5mbyk7CisJCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsCisJCQkJCQkJCQkJCSAgIHBydW5lc3RhdGUpOworCX0K K30KKwogLyoKICAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nCiAgKgkJUGVyZm9ybSBydW50aW1lICJp bml0aWFsIiBwcnVuaW5nLCBpZiBuZWNlc3NhcnksIHRvIGRldGVybWluZSB0aGUgc2V0CiAgKgkJ b2YgY2hpbGQgc3Vibm9kZXMgdGhhdCBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVj SW5pdE5vZGUoKSBmb3IKICAqCQlwbGFuIG5vZGVzIHRoYXQgc3VwcG9ydCBwYXJ0aXRpb24gcHJ1 bmluZy4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGl0ZXJhdGVzIG92ZXIgZWFjaCBQYXJ0aXRpb25Q cnVuZUluZm8gZW50cnkgaW4KLSAqIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcy4gRm9yIGVh Y2ggZW50cnksIGl0IGNyZWF0ZXMgYSBQYXJ0aXRpb25QcnVuZVN0YXRlCi0gKiBhbmQgYWRkcyBp dCB0byBlc19wYXJ0X3BydW5lX3N0YXRlcy4gIEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmco KSBhY2Nlc3NlcworICoKKyAqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgb3ZlciBlYWNoIFBhcnRp dGlvblBydW5lU3RhdGUgaW4KKyAqIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsIHdoaWNo IG11c3QgaGF2ZSBiZWVuIHBvcHVsYXRlZCBlYXJsaWVyIGJ5CisgKiBFeGVjQ3JlYXRlUGFydGl0 aW9uUHJ1bmVTdGF0ZXMoKS4gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygpIGFjY2Vzc2Vz CiAgKiB0aGVzZSBzdGF0ZXMgdGhyb3VnaCB0aGVpciBjb3JyZXNwb25kaW5nIGluZGV4ZXMgaW4g ZXNfcGFydF9wcnVuZV9zdGF0ZXMgYW5kCiAgKiBhc3NpZ25zIGVhY2ggc3RhdGUgdG8gdGhlIHBh cmVudCBub2RlJ3MgUGxhblN0YXRlLCBmcm9tIHdoZXJlIGl0IHdpbGwgYmUgdXNlZAogICogZm9y ICJleGVjIiBwcnVuaW5nLgpAQCAtMTk5NiwxOCArMjAyNCwxMiBAQCBFeGVjRG9Jbml0aWFsUHJ1 bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAlMaXN0Q2VsbCAgICpsYzsKIAogCUFzc2VydChlc3RhdGUt PmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9PSBOVUxMKTsKLQlmb3JlYWNoKGxjLCBlc3RhdGUtPmVz X3BhcnRfcHJ1bmVfaW5mb3MpCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0 YXRlcykKIAl7Ci0JCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0X25vZGUo UGFydGl0aW9uUHJ1bmVJbmZvLCBsYyk7Ci0JCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGU7CisJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUgPSAoUGFydGl0aW9uUHJ1bmVT dGF0ZSAqKSBsZmlyc3QobGMpOwogCQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zID0gTlVMTDsK IAkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFuX3J0aXMgPSBOVUxMOwogCi0JCS8qIENyZWF0ZSBh bmQgc2F2ZSB0aGUgUGFydGl0aW9uUHJ1bmVTdGF0ZS4gKi8KLQkJcHJ1bmVzdGF0ZSA9IENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8pOwotCQllc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLAot CQkJCQkJCQkJCQkgICBwcnVuZXN0YXRlKTsKLQogCQkvKgogCQkgKiBQZXJmb3JtIGluaXRpYWwg cHJ1bmluZyBzdGVwcywgaWYgYW55LCBhbmQgc2F2ZSB0aGUgcmVzdWx0CiAJCSAqIGJpdG1hcHNl dCBvciBOVUxMIGFzIGRlc2NyaWJlZCBpbiB0aGUgaGVhZGVyIGNvbW1lbnQuICBSVCBpbmRleGVz CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IGJiNjJjNjQ4ODk5Li44NzliMmQw MTJhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTIxMDIsNyArMjEwMiw3 IEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoTGlzdCAqc3RtdF9saXN0LCBib29sIGFj cXVpcmUsCiAJCQl9CiAKIAkJCXByZXBfZXN0YXRlID0gRXhlY3V0b3JQcmVwKHBsYW5uZWRzdG10 LCBjcHJlcC0+cGFyYW1zLAotCQkJCQkJCQkJICAgY3ByZXAtPm93bmVyLCBjcHJlcC0+ZWZsYWdz KTsKKwkJCQkJCQkJCSAgIGNwcmVwLT5vd25lciwgY3ByZXAtPmVmbGFncywgdHJ1ZSk7CiAJCQlB c3NlcnQocHJlcF9lc3RhdGUpOwogCQkJY3ByZXAtPnByZXBfZXN0YXRlcyA9IGxhcHBlbmQoY3By ZXAtPnByZXBfZXN0YXRlcywgcHJlcF9lc3RhdGUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFy dGl0aW9uLmgKaW5kZXggODIwNjNlYzJhMTYuLjRjOTY4MDhjMzc2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC0xMzAsNiArMTMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFy dGl0aW9uUHJ1bmVTdGF0ZQogCVBhcnRpdGlvblBydW5pbmdEYXRhICpwYXJ0cHJ1bmVkYXRhW0ZM RVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFBhcnRpdGlvblBydW5lU3RhdGU7CiAKK2V4dGVybiB2 b2lkIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcyhFU3RhdGUgKmVzdGF0ZSk7CiBleHRl cm4gdm9pZCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmgKaW5kZXggNDUwNWNlYWNhM2MuLjhlNWZkZTk2NWVkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmgKQEAgLTI0MCw3ICsyNDAsOCBAQCBleHRlcm4gdm9pZCBzdGFuZGFyZF9F eGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiBF U3RhdGUgKkV4ZWN1dG9yUHJlcChQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJCQkJUGFyYW1MaXN0 SW5mbyBwYXJhbXMsCiAJCQkJCQkJUmVzb3VyY2VPd25lciBvd25lciwKLQkJCQkJCQlpbnQgZWZs YWdzKTsKKwkJCQkJCQlpbnQgZWZsYWdzLAorCQkJCQkJCWJvb2wgZG9faW5pdGlhbF9wcnVuaW5n KTsKIAogLyoKICAqIFdhbGsgYSBwcmVwX2VzdGF0ZXMgbGlzdCBpbiBzdGVwIHdpdGggYSBwYXJh bGxlbCBzdG10X2xpc3QgaXRlcmF0aW9uLgotLSAKMi40Ny4zCgo= --0000000000004efcd7064dd46074 Content-Type: application/octet-stream; name="v9-0003-Use-pruning-aware-locking-in-cached-plans.patch" Content-Disposition: attachment; filename="v9-0003-Use-pruning-aware-locking-in-cached-plans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn5qgjdx2 RnJvbSBhNWNiZWU5MGQyZjU3YzBiNzc1ZWNjOWQ5NTliZGNmOWZlODY0MDc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTkgTWFyIDIwMjYgMTk6MDI6MDQgKzA5MDAKU3ViamVjdDogW1BBVENIIHY5 IDMvNV0gVXNlIHBydW5pbmctYXdhcmUgbG9ja2luZyBpbiBjYWNoZWQgcGxhbnMKCkV4dGVuZCBH ZXRDYWNoZWRQbGFuKCkgdG8gcGVyZm9ybSBFeGVjdXRvclByZXAoKSBvbiBlYWNoIHBsYW5uZWQK c3RhdGVtZW50LCBjYXB0dXJpbmcgdW5wcnVuZWQgcmVsaWRzIGFuZCBpbml0aWFsIHBydW5pbmcg cmVzdWx0cy4KVXNlIHRoaXMgZGF0YSB0byBhY3F1aXJlIGV4ZWN1dGlvbiBsb2NrcyBvbmx5IG9u IHN1cnZpdmluZyBwYXJ0aXRpb25zLAphdm9pZGluZyB1bm5lY2Vzc2FyeSBsb2NraW5nIG9mIHBy dW5lZCB0YWJsZXMgZXZlbiB3aGVuIHVzaW5nIGNhY2hlZApwbGFucy4KCkludHJvZHVjZSBDYWNo ZWRQbGFuUHJlcERhdGEgdG8gY2FycnkgdGhlIEVTdGF0ZXMgY3JlYXRlZCBieQpFeGVjdXRvclBy ZXAoKSB0aHJvdWdoIHRoZSBwbGFuIGNhY2hpbmcgbGF5ZXIuIFRoZSBwcmVwX2VzdGF0ZXMKbGlz dCBpcyBpbmRleGVkIG9uZS10by1vbmUgd2l0aCBDYWNoZWRQbGFuLT5zdG10X2xpc3QgYW5kIGlz CnBvcHVsYXRlZCB3aGVuIEdldENhY2hlZFBsYW4oKSBwcmVwYXJlcyBhIHJldXNlZCBnZW5lcmlj IHBsYW4uCkFkanVzdCBjYWxsIHNpdGVzIGluIFNQSSwgZnVuY3Rpb25zLCBwb3J0YWxzLCBhbmQg RVhQTEFJTiB0bwpwcm9wYWdhdGUgdGhpcyBkYXRhLgoKUGFydGl0aW9uIHBydW5pbmcgZXhwcmVz c2lvbnMgbWF5IGNhbGwgUEwgZnVuY3Rpb25zIHRoYXQgcmVxdWlyZQphbiBhY3RpdmUgc25hcHNo b3QgKGUuZy4sIHZpYSBFbnN1cmVQb3J0YWxTbmFwc2hvdEV4aXN0cygpKS4KQWNxdWlyZUV4ZWN1 dG9yTG9ja3NVbnBydW5lZCgpIGVzdGFibGlzaGVzIG9uZSBiZWZvcmUgY2FsbGluZwpFeGVjdXRv clByZXAoKSBpZiBuZWVkZWQsIGVuc3VyaW5nIHRoZXNlIGV4cHJlc3Npb25zIGNhbiBleGVjdXRl CmNvcnJlY3RseSBkdXJpbmcgcGxhbiBjYWNoZSB2YWxpZGF0aW9uLgoKVG8gbWFpbnRhaW4gY29y cmVjdG5lc3Mgd2hlbiBhbGwgdGFyZ2V0IHBhcnRpdGlvbnMgYXJlIHBydW5lZCwgYWxzbwpyZWlu c3RhdGUgdGhlIGZpcnN0UmVzdWx0UmVsIGxvY2tpbmcgYmVoYXZpb3IgbG9zdCBpbiBjb21taXQK MjgzMTdkZTcyLiBUaGF0IGNvbW1pdCByZXF1aXJlZCB0aGUgZmlyc3QgTW9kaWZ5VGFibGUgdGFy Z2V0IHRvCnJlbWFpbiBpbml0aWFsaXplZCBmb3IgZXhlY3V0b3IgYXNzdW1wdGlvbnMgdG8gaG9s ZC4gV2Ugbm93CmV4cGxpY2l0bHkgdHJhY2sgdGhlc2UgcmVsaWRzIGluIFBsYW5uZXJHbG9iYWwg YW5kIFBsYW5uZWRTdG10IHNvIHRoZXkKYXJlIGxvY2tlZCBldmVuIGlmIHBydW5lZCwgcHJlc2Vy dmluZyB0aGF0IHJ1bGUgYWNyb3NzIGNhY2hlZCBwbGFuCnJldXNlLgoKUmVncmVzc2lvbiB0ZXN0 cyBhcmUgaW5jbHVkZWQgdG8gdmVyaWZ5OgoKLSBPbmx5IHN1cnZpdmluZyBwYXJ0aXRpb25zIGFy ZSBsb2NrZWQgd2hlbiBwcnVuaW5nIGlzIGVuYWJsZWQsIGFuZAogIGFsbCBwYXJ0aXRpb25zIGFy ZSBsb2NrZWQgd2hlbiBpdCBpcyBkaXNhYmxlZCAocGdfbG9ja3MgaW5zcGVjdGlvbikuCi0gTXVs dGlwbGUgTW9kaWZ5VGFibGUgbm9kZXMgKHZpYSB3cml0YWJsZSBDVEVzKSBoYW5kbGUgdGhlIGNh c2Ugd2hlcmUKICBhbGwgdGFyZ2V0IHBhcnRpdGlvbnMgYXJlIHBydW5lZCwgZXhlcmNpc2luZyBm aXJzdFJlc3VsdFJlbHMuCi0gUGxhbiBpbnZhbGlkYXRpb24gZHVyaW5nIHBydW5pbmctYXdhcmUg bG9jayBzZXR1cCAoRERMIHRyaWdnZXJlZCBieQogIGEgcHJ1bmluZyBleHByZXNzaW9uKSBkaXNj YXJkcyB0aGUgcHJlcCBzdGF0ZSBhbmQgcmVwbGFucyBjbGVhbmx5LgoKTm90ZSBmb3IgZXh0ZW5z aW9uIGF1dGhvcnM6IGNvZGUgdGhhdCBhY2Nlc3NlcyBwYXJ0aXRpb24gcmVsYXRpb25zCnRocm91 Z2ggRVN0YXRlIG11c3QgY2hlY2sgdGhhdCB0aGUgUlQgaW5kZXggaXMgYSBtZW1iZXIgb2YKZXNf dW5wcnVuZWRfcmVsaWRzIGJlZm9yZSBvcGVuaW5nIHRoZSByZWxhdGlvbi4gIFByZXZpb3VzbHkg dGhpcyB3YXMKYW4gb3B0aW1pemF0aW9uIChhdm9pZCBwcm9jZXNzaW5nIHBydW5lZCBwYXJ0aXRp b25zKTsgaXQgaXMgbm93IGEKY29ycmVjdG5lc3MgcmVxdWlyZW1lbnQsIGJlY2F1c2UgcHJ1bmVk IHBhcnRpdGlvbnMgbWF5IG5vdCBiZSBsb2NrZWQuCkV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24o KSBhbHJlYWR5IGVuZm9yY2VzIHRoaXMgd2l0aCBhbiBlcnJvciB3aGVuCmNhbGxlZCBvbiBhIHBy dW5lZCByZWxhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAg ICAgICAgICAgfCAgMTcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAg ICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAg ICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICAgICAg fCAgMTggKysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8 ICAgNyArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgICAgICAgIHwg MjU3ICsrKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAg ICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAg ICAgICAgICAgICB8ICAxMCArCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAg ICAgICAgICAgfCAgMzUgKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9w cnVuZS5vdXQgfCAxNDUgKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFu Y2FjaGUub3V0ICAgICAgIHwgIDYyICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fcHJ1bmUuc3FsICAgICAgfCAgNzcgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFu Y2FjaGUuc3FsICAgICAgICAgICAgfCAgNTEgKysrKwogMTYgZmlsZXMgY2hhbmdlZCwgNjkxIGlu c2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCBj N2JhYjE0YjYzMy4uZmVjODNjYzZmZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE1Niw2 ICsxNTYsNyBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogewogCVByZXBhcmVk U3RhdGVtZW50ICplbnRyeTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuUHJlcERh dGEgY3ByZXAgPSB7MH07CiAJTGlzdAkgICAqcGxhbl9saXN0OwogCVBhcmFtTGlzdEluZm8gcGFy YW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwpAQCAtMTk1LDcgKzE5Niw5 IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgICBlbnRyeS0+ cGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBp bmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQ bGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMKTsKKwljcHJlcC5jb250 ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0OworCWNwcmVwLm93bmVyID0gcG9ydGFsLT5yZXNv d25lcjsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEks IE5VTEwsIE5VTEwsICZjcHJlcCk7CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAog CS8qCkBAIC0yMDcsNyArMjEwLDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRU YWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJCQkgIE5JTCwKKwkJCQkJICBjcHJlcC5wcmVwX2Vz dGF0ZXMsCiAJCQkJCSAgY3BsYW4pOwogCiAJLyoKQEAgLTU3Nyw2ICs1ODAsNyBAQCBFeHBsYWlu RXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJY29uc3QgY2hhciAq cXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBj cHJlcCA9IHswfTsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CiAJTGlzdAkgICAqcHJlcF9lc3RhdGVz OwogCUxpc3RDZWxsICAgKnA7CkBAIC02MzUsOCArNjM5LDEzIEBAIEV4cGxhaW5FeGVjdXRlUXVl cnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogCX0KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50 IHJlZmNvdW50ICovCisJY3ByZXAuY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCWNw cmVwLm93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJaWYgKGVzLT5nZW5lcmljKQorCQlj cHJlcC5lZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDOwogCWNwbGFuID0gR2V0Q2Fj aGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKLQkJCQkJCSAgQ3VycmVudFJlc291 cmNlT3duZXIsIHBzdGF0ZS0+cF9xdWVyeUVudik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93 bmVyLCBwc3RhdGUtPnBfcXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAKIAlJTlNUUl9USU1F X1NFVF9DVVJSRU5UKHBsYW5kdXJhdGlvbik7CiAJSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVy YXRpb24sIHBsYW5zdGFydCk7CkBAIC02NTUsNyArNjY0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVy eShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJfQogCiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKLQlwcmVwX2VzdGF0ZXMg PSBOSUw7CisJcHJlcF9lc3RhdGVzID0gY3ByZXAucHJlcF9lc3RhdGVzOwogCiAJLyogRXhwbGFp biBlYWNoIHF1ZXJ5ICovCiAJcHJlcF9sYyA9IGxpc3RfaGVhZChwcmVwX2VzdGF0ZXMpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMjgyYzk4NzFkZTAuLjMzNmJkNGQwOWIzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTMzNCw2ICszMzQsMTAgQEAgc3RhbmRhcmRfRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKICAqCiAgKiBSZXR1cm5zIGFu IEVTdGF0ZSB0aGF0IHRoZSBjYWxsZXIgbXVzdCBlaXRoZXIgcGFzcyB0byBFeGVjdXRvclN0YXJ0 KCkKICAqIGZvciByZXVzZSBvciBmcmVlIHZpYSBGcmVlRXhlY3V0b3JTdGF0ZSgpIGlmIGV4ZWN1 dGlvbiB3aWxsIG5vdCBwcm9jZWVkLgorICogR2V0Q2FjaGVkUGxhbigpIHVzZXMgdGhpcyB0byBk ZXRlcm1pbmUsIGJhc2VkIG9uIGluaXRpYWwgcHJ1bmluZworICogcmVzdWx0cywgd2hpY2ggcGFy dGl0aW9ucyB0byBsb2NrOyBpZiB0aGUgcmVzdWx0aW5nIEVTdGF0ZSBpcyBub3QKKyAqIGRlbGl2 ZXJlZCB0byBFeGVjdXRvclN0YXJ0KCksIHRoZSBleGVjdXRvciB3b3VsZCBvcGVyYXRlIG9uIHVu bG9ja2VkCisgKiByZWxhdGlvbnMuICBTZWUgdGhlIGFzc2VydCBjaGVja3MgaW4gc3RhbmRhcmRf RXhlY3V0b3JTdGFydCgpLgogICovCiBFU3RhdGUgKgogRXhlY3V0b3JQcmVwKFBsYW5uZWRTdG10 ICpwc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFJlc291cmNlT3duZXIgb3duZXIsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDk1MmE3ODRjOTI0Li5jMGNhNzJiMzhkZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTY5OSw2ICs2OTksNyBAQCBpbml0X2V4ZWN1dGlvbl9z dGF0ZShTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAlmY2FjaGUtPmNwbGFuID0gR2V0Q2Fj aGVkUGxhbihwbGFuc291cmNlLAogCQkJCQkJCQkgIGZjYWNoZS0+cGFyYW1MSSwKIAkJCQkJCQkJ ICBmY2FjaGUtPmNvd25lciwKKwkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkgIE5VTEwpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNGNkNWUyNjJlMGYu LjkyMzBmMmI1NTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAt NDg2NSw4ICs0ODY1LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogYXMgYSByZWZlcmVuY2UgZm9yIGJ1aWxk aW5nIHRoZSBSZXN1bHRSZWxJbmZvIG9mIHRoZSB0YXJnZXQgcGFydGl0aW9uLgogCSAqIEluIGVp dGhlciBjYXNlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGljaCByZXN1bHQgcmVsYXRpb24gaXMga2Vw dCwgc28gd2UKIAkgKiBqdXN0IGtlZXAgdGhlIGZpcnN0IG9uZSwgaWYgYWxsIG90aGVycyBoYXZl IGJlZW4gcHJ1bmVkLiAgU2VlIGFsc28sCi0JICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSwgd2hp Y2ggZW5zdXJlcyB0aGF0IHRoaXMgZmlyc3QgcmVzdWx0IHJlbGF0aW9uCi0JICogaGFzIGJlZW4g bG9ja2VkLgorCSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKSwgd2hpY2ggZW5zdXJl cyB0aGF0IHRoaXMgZmlyc3QgcmVzdWx0CisJICogcmVsYXRpb24gaGFzIGJlZW4gbG9ja2VkLgog CSAqLwogCWkgPSAwOwogCWZvcmVhY2gobCwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKQpAQCAtNDg4 MCw2ICs0ODgwLDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkvKiBhbGwgcmVzdWx0IHJlbGF0aW9ucyBwcnVu ZWQ7IGtlZXAgdGhlIGZpcnN0IG9uZSAqLwogCQkJa2VlcF9yZWwgPSB0cnVlOwogCQkJcnRpID0g bGluaXRpYWxfaW50KG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJCQlBc3NlcnQobGlzdF9tZW1i ZXJfaW50KGVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQtPmZpcnN0UmVzdWx0UmVscywgcnRpKSk7CiAJ CQlpID0gMDsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDM4MGJiYzQ0ZTk3Li5mMWQ4NGY3YTM1 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTE1ODAsNiArMTU4MCw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9p bnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiB7CiAJQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuUHJl cERhdGEgY3ByZXAgPSB7MH07CiAJTGlzdAkgICAqc3RtdF9saXN0OwogCWNoYXIJICAgKnF1ZXJ5 X3N0cmluZzsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKQEAgLTE2NjAsNyArMTY2MSwxMCBAQCBTUElf Y3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAog CSAqLwogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBwbGFuIHJlZmNvdW50 IGZvciBwb3J0YWwgKi8KLQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcGFyYW1M SSwgTlVMTCwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CisJY3ByZXAuY29udGV4dCA9IHBvcnRh bC0+cG9ydGFsQ29udGV4dDsKKwljcHJlcC5vd25lciA9IHBvcnRhbC0+cmVzb3duZXI7CisJY3Bs YW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVu dC0+cXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRf bGlzdDsKIAogCWlmICghcGxhbi0+c2F2ZWQpCkBAIC0xNjcwLDcgKzE2NzQsMTAgQEAgU1BJX2N1 cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJ ICogc28gbXVzdCBjb3B5IHRoZSBwbGFuIGludG8gdGhlIHBvcnRhbCdzIGNvbnRleHQuICBBbiBl cnJvciBoZXJlCiAJCSAqIHdpbGwgcmVzdWx0IGluIGxlYWtpbmcgb3VyIHJlZmNvdW50IG9uIHRo ZSBwbGFuLCBidXQgaXQgZG9lc24ndAogCQkgKiBtYXR0ZXIgYmVjYXVzZSB0aGUgcGxhbiBpcyB1 bnNhdmVkIGFuZCBoZW5jZSB0cmFuc2llbnQgYW55d2F5LgorCQkgKgorCQkgKiBVbnNhdmVkIHBs YW5zIHVzZSBjdXN0b20gcGxhbnMsIHNvIHByZXAgc2hvdWxkIGJlIGEgbm8tb3AuCiAJCSAqLwor CQlBc3NlcnQoY3ByZXAucHJlcF9lc3RhdGVzID09IE5JTCk7CiAJCW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocG9ydGFsLT5wb3J0YWxDb250ZXh0KTsKIAkJc3RtdF9saXN0ID0g Y29weU9iamVjdChzdG10X2xpc3QpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7CkBAIC0xNjg2LDcgKzE2OTMsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3Qg Y2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJ ICBwbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKLQkJCQkJICBOSUws CisJCQkJCSAgY3ByZXAucHJlcF9lc3RhdGVzLAogCQkJCQkgIGNwbGFuKTsKIAogCS8qCkBAIC0y MTA0LDcgKzIxMTEsOCBAQCBTUElfcGxhbl9nZXRfY2FjaGVkX3BsYW4oU1BJUGxhblB0ciBwbGFu KQogCS8qIEdldCB0aGUgZ2VuZXJpYyBwbGFuIGZvciB0aGUgcXVlcnkgKi8KIAljcGxhbiA9IEdl dENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgTlVMTCwKIAkJCQkJCSAgcGxhbi0+c2F2ZWQgPyBDdXJy ZW50UmVzb3VyY2VPd25lciA6IE5VTEwsCi0JCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYp OworCQkJCQkJICBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJICBOVUxMKTsKIAlBc3Nl cnQoY3BsYW4gPT0gcGxhbnNvdXJjZS0+Z3BsYW4pOwogCiAJLyogUG9wIHRoZSBlcnJvciBjb250 ZXh0IHN0YWNrICovCkBAIC0yNTAzLDYgKzI1MTEsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQ bGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQlMaXN0Q2Vs bCAgICpsYzI7CiAJCUxpc3QJICAgKnByZXBfZXN0YXRlczsKIAkJTGlzdENlbGwgICAqcHJlcF9s YzsKKwkJQ2FjaGVkUGxhblByZXBEYXRhIGNwcmVwID0gezB9OwogCiAJCXNwaWNhbGxiYWNrYXJn LnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0yNTc3LDExICsyNTg2LDE0 IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9w dGlvbnMgKm9wdGlvbnMsCiAJCSAqIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxh biByZWZjb3VudC4gIElmIGl0J3MgYSBzYXZlZAogCQkgKiBwbGFuLCB0aGUgcmVmY291bnQgbXVz dCBiZSBiYWNrZWQgYnkgdGhlIHBsYW5fb3duZXIuCiAJCSAqLworCQljcHJlcC5jb250ZXh0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7CisJCWNwcmVwLm93bmVyID0gQ3VycmVudFJlc291cmNlT3du ZXI7CiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJhbXMs Ci0JCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKKwkJCQkJCQkg IHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkJICAmY3ByZXApOwog CiAJCXN0bXRfbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7Ci0JCXByZXBfZXN0YXRlcyA9IE5JTDsK KwkJcHJlcF9lc3RhdGVzID0gY3ByZXAucHJlcF9lc3RhdGVzOwogCiAJCS8qCiAJCSAqIElmIHdl IHdlcmVuJ3QgZ2l2ZW4gYSBzcGVjaWZpYyBzbmFwc2hvdCB0byB1c2UsIGFuZCB0aGUgc3RhdGVt ZW50CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNDI2MDRhMGY3NWMuLmFm YTYxZDM1N2M1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02NTcsNiAr NjU3LDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT5wZXJtSW5mb3MgPSBnbG9iLT5m aW5hbHJ0ZXBlcm1pbmZvczsKIAlyZXN1bHQtPnN1YnJ0aW5mb3MgPSBnbG9iLT5zdWJydGluZm9z OwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOworCXJl c3VsdC0+Zmlyc3RSZXN1bHRSZWxzID0gZ2xvYi0+Zmlyc3RSZXN1bHRSZWxzOwogCXJlc3VsdC0+ YXBwZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBwZW5kUmVsYXRpb25zOwogCXJlc3VsdC0+c3VicGxh bnMgPSBnbG9iLT5zdWJwbGFuczsKIAlyZXN1bHQtPnJld2luZFBsYW5JRHMgPSBnbG9iLT5yZXdp bmRQbGFuSURzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDFiNWI5YjVl ZDljLi44Yzk5NTZlNjg3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAt Mzg0LDYgKzM4NCwyNCBAQCBzZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQ bGFuICpwbGFuKQogCQl9CiAJfQogCisJLyoKKwkgKiBSZWNvcmQgdGhlIGZpcnN0IHJlc3VsdCBy ZWxhdGlvbiBpZiBpdCBiZWxvbmdzIHRvIHRoZSBzZXQgb2YKKwkgKiBpbml0aWFsbHkgcHJ1bmFi bGUgcmVsYXRpb25zLiAgV2UgdXNlIGJtc19uZXh0X21lbWJlcigpIHRvIGdldAorCSAqIHRoZSBs b3dlc3QtbnVtYmVyZWQgbGVhZiByZXN1bHQgcmVsLCB3aGljaCBtYXRjaGVzCisJICogbGluaXRp YWxfaW50KE1vZGlmeVRhYmxlLnJlc3VsdFJlbGF0aW9ucykgYmVjYXVzZSBwYXJ0aXRpb24KKwkg KiBleHBhbnNpb24gcHJlc2VydmVzIFJUIGluZGV4IG9yZGVyLiAgRXhlY0luaXRNb2RpZnlUYWJs ZSgpIGFzc2VydHMKKwkgKiB0aGF0IHRoZSByZWNvcmRlZCBpbmRleCBtYXRjaGVzIHdoYXQgaXQg YWN0dWFsbHkgbmVlZHMuCisJICovCisJaWYgKHJvb3QtPmxlYWZfcmVzdWx0X3JlbGlkcykKKwl7 CisJCUluZGV4CWZpcnN0UmVzdWx0UmVsID0gYm1zX25leHRfbWVtYmVyKHJvb3QtPmxlYWZfcmVz dWx0X3JlbGlkcywgLTEpOworCisJCWZpcnN0UmVzdWx0UmVsICs9IHJ0b2Zmc2V0OworCQlpZiAo Ym1zX2lzX21lbWJlcihmaXJzdFJlc3VsdFJlbCwgcm9vdC0+Z2xvYi0+cHJ1bmFibGVSZWxpZHMp KQorCQkJcm9vdC0+Z2xvYi0+Zmlyc3RSZXN1bHRSZWxzID0KKwkJCQlsYXBwZW5kX2ludChyb290 LT5nbG9iLT5maXJzdFJlc3VsdFJlbHMsIGZpcnN0UmVzdWx0UmVsKTsKKwl9CisKIAlyZXR1cm4g cmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMzU1YTQ5MGNkZTkuLmRlMzYyZmYxNjcy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xNjM3LDYgKzE2MzcsNyBAQCBleGVjX2JpbmRfbWVzc2Fn ZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJaW50MTYJICAgKnJmb3JtYXRzID0gTlVMTDsK IAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwogCUNhY2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBs YW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlQb3J0YWwJCXBvcnRhbDsKIAljaGFyCSAgICpxdWVy eV9zdHJpbmc7CiAJY2hhcgkgICAqc2F2ZWRfc3RtdF9uYW1lOwpAQCAtMjAxOCw3ICsyMDE5LDkg QEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCSAqIHdpbGwg YmUgZ2VuZXJhdGVkIGluIE1lc3NhZ2VDb250ZXh0LiAgVGhlIHBsYW4gcmVmY291bnQgd2lsbCBi ZQogCSAqIGFzc2lnbmVkIHRvIHRoZSBQb3J0YWwsIHNvIGl0IHdpbGwgYmUgcmVsZWFzZWQgYXQg cG9ydGFsIGRlc3RydWN0aW9uLgogCSAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBw YXJhbXMsIE5VTEwsIE5VTEwpOworCWNwcmVwLmNvbnRleHQgPSBwb3J0YWwtPnBvcnRhbENvbnRl eHQ7CisJY3ByZXAub3duZXIgPSBwb3J0YWwtPnJlc293bmVyOworCWNwbGFuID0gR2V0Q2FjaGVk UGxhbihwc3JjLCBwYXJhbXMsIE5VTEwsIE5VTEwsICZjcHJlcCk7CiAKIAkvKgogCSAqIE5vdyB3 ZSBjYW4gZGVmaW5lIHRoZSBwb3J0YWwuCkBAIC0yMDMxLDcgKzIwMzQsNyBAQCBleGVjX2JpbmRf bWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAog CQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJCSAgY3BsYW4tPnN0bXRfbGlzdCwKLQkJCQkJ ICBOSUwsCisJCQkJCSAgY3ByZXAucHJlcF9lc3RhdGVzLAogCQkJCQkgIGNwbGFuKTsKIAogCS8q IFBvcnRhbCBpcyBkZWZpbmVkLCBzZXQgdGhlIHBsYW4gSUQgYmFzZWQgb24gaXRzIGNvbnRlbnRz LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA2OThlN2MxYWEyMi4uYmI2 MmM2NDg4OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC05MywxNCArOTMs MTcgQEAgc3RhdGljIGJvb2wgU3RtdFBsYW5SZXF1aXJlc1JldmFsaWRhdGlvbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBib29sIEJ1aWxkaW5nUGxhblJlcXVpcmVzU25h cHNob3QoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxp ZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAg IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKLXN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIENoZWNrQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBDYWNoZWRQbGFuUHJlcERhdGEgKmNw cmVwKTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91 bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIGNob29z ZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBh cmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0 KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAq UXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWly ZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOworc3RhdGljIHZv aWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3NBbGwoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUp Oworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZChMaXN0ICpzdG10X2xp c3QsIGJvb2wgYWNxdWlyZSwKKwkJCQkJCQkJCQkgQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCk7 CitzdGF0aWMgdm9pZCBDYWNoZWRQbGFuUHJlcENsZWFudXAoQ2FjaGVkUGxhblByZXBEYXRhICpj cHJlcCk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwg Ym9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJz ZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAq bm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC05NDIsNiArOTQ1LDExIEBAIFJldmFsaWRhdGVDYWNo ZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogLyoKICAqIENoZWNrQ2FjaGVk UGxhbjogc2VlIGlmIHRoZSBDYWNoZWRQbGFuU291cmNlJ3MgZ2VuZXJpYyBwbGFuIGlzIHZhbGlk LgogICoKKyAqIElmICdjcHJlcCcgaXMgbm90IE5VTEwsIEV4ZWN1dG9yUHJlcCgpIGlzIGFwcGxp ZWQgdG8gZWFjaCBQbGFubmVkU3RtdCB0bworICogY29tcHV0ZSB0aGUgc2V0IG9mIHBhcnRpdGlv bnMgdGhhdCBzdXJ2aXZlIGluaXRpYWwgcnVudGltZSBwcnVuaW5nIGluIG9yZGVyCisgKiB0byBv bmx5IGxvY2sgdGhlbS4gIFRoZSBFU3RhdGVzIGNyZWF0ZWQgdG8gZG8gc28gYXJlIHNhdmVkIGlu IGNwcmVwIGZvcgorICogbGF0ZXIgcmV1c2UgYnkgRXhlY3V0b3JTdGFydCgpLgorICoKICAqIENh bGxlciBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZl cmlmeSB0aGF0IHRoZQogICogcXVlcnl0cmVlIGlzIHVwIHRvIGRhdGUuCiAgKgpAQCAtOTQ5LDcg Kzk1Nyw3IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFj ZS1jb25kaXRpb24tZnJlZS4pCiAgKi8KIHN0YXRpYyBib29sCi1DaGVja0NhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKK0NoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLCBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKQogewogCUNhY2hlZFBs YW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKIApAQCAtOTgzLDcgKzk5MSwxMCBAQCBDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAkJICovCiAJCUFzc2Vy dChwbGFuLT5yZWZjb3VudCA+IDApOwogCi0JCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0 bXRfbGlzdCwgdHJ1ZSk7CisJCWlmIChjcHJlcCkKKwkJCUFjcXVpcmVFeGVjdXRvckxvY2tzVW5w cnVuZWQocGxhbi0+c3RtdF9saXN0LCB0cnVlLCBjcHJlcCk7CisJCWVsc2UKKwkJCUFjcXVpcmVF eGVjdXRvckxvY2tzQWxsKHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSk7CiAKIAkJLyoKIAkJICogSWYg cGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhhcwpA QCAtMTAwNSw3ICsxMDE2LDEzIEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlKQogCQl9CiAKIAkJLyogT29wcywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJl bGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3Rt dF9saXN0LCBmYWxzZSk7CisJCWlmIChjcHJlcCkKKwkJCUFjcXVpcmVFeGVjdXRvckxvY2tzVW5w cnVuZWQocGxhbi0+c3RtdF9saXN0LCBmYWxzZSwgY3ByZXApOworCQllbHNlCisJCQlBY3F1aXJl RXhlY3V0b3JMb2Nrc0FsbChwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKworCQkvKiBBbHNvIGNs ZWFuIHVwIEV4ZWN1dG9yUHJlcCgpIHN0YXRlLCBpZiBuZWNlc3NhcnkuICovCisJCUNhY2hlZFBs YW5QcmVwQ2xlYW51cChjcHJlcCk7CiAJfQogCiAJLyoKQEAgLTEyODUsNiArMTMwMiwxNSBAQCBj YWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQog ICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxv Y2tzIHRvIGJlZ2luCiAgKiBleGVjdXRpb24uCiAgKgorICogSWYgJ2NwcmVwJyBpcyBub3QgTlVM TCBhbmQgYSBnZW5lcmljIHBsYW4gaXMgcmV1c2VkLCB0aGUgZnVuY3Rpb24KKyAqIHBlcmZvcm1z IGluaXRpYWwgcHJ1bmluZyB2aWEgRXhlY3V0b3JQcmVwKCkgYW5kIGxvY2tzIG9ubHkgdGhlCisg KiBzdXJ2aXZpbmcgcGFydGl0aW9ucy4gIFRoZSByZXN1bHRpbmcgRVN0YXRlcyBhcmUgc3RvcmVk IGluCisgKiBjcHJlcC0+cHJlcF9lc3RhdGVzIGFuZCBtdXN0IGJlIGRlbGl2ZXJlZCB0byBFeGVj dXRvclN0YXJ0KCkgdmlhCisgKiBRdWVyeURlc2MtPmVzdGF0ZSAob3IgdGhlIGVxdWl2YWxlbnQg cG9ydGFsL1NQSSBwYXRoKS4gIEZhaWx1cmUKKyAqIHRvIGRvIHNvIG1lYW5zIHRoZSBleGVjdXRv ciB3aWxsIG9wZXJhdGUgb24gcmVsYXRpb25zIGZvciB3aGljaAorICogbG9ja3Mgd2VyZSBuZXZl ciBhY3F1aXJlZC4gIFBhc3NpbmcgTlVMTCBmb3IgY3ByZXAgaXMgYWx3YXlzIHNhZmU7CisgKiBh bGwgcGFydGl0aW9ucyBhcmUgbG9ja2VkIGFzIGJlZm9yZS4KKyAqCiAgKiBPbiByZXR1cm4sIHRo ZSByZWZjb3VudCBvZiB0aGUgcGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICog UmVsZWFzZUNhY2hlZFBsYW4oKSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3Qg TlVMTCB0aGVuCiAgKiB0aGUgcmVmY291bnQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gdGhhdCBSZXNv dXJjZU93bmVyIChub3RlIHRoYXQgdGhpcwpAQCAtMTI5NSw3ICsxMzIxLDggQEAgY2FjaGVkX3Bs YW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqLwogQ2Fj aGVkUGxhbiAqCiBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBh cmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCi0JCQkgIFJlc291cmNlT3duZXIgb3duZXIsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJICBSZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKKwkJCSAgQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCkKIHsK IAlDYWNoZWRQbGFuICpwbGFuID0gTlVMTDsKIAlMaXN0CSAgICpxbGlzdDsKQEAgLTEzMTcsNyAr MTM0NCw5IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFy YW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAogCWlmICghY3VzdG9tcGxhbikKIAl7Ci0JCWlmIChD aGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSkpCisJCWlmIChjcHJlcCkKKwkJCWNwcmVwLT5wYXJh bXMgPSBib3VuZFBhcmFtczsKKwkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlLCBjcHJl cCkpCiAJCXsKIAkJCS8qIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJlYWR5IGhh dmUgYSB2YWxpZCBvbmUgKi8KIAkJCXBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKQEAgLTE5MDQs MTEgKzE5MzMsMTMgQEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiB9CiAK IC8qCi0gKiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4 ZWN1dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUg aXMgZmFsc2UuCisgKiBBY3F1aXJlRXhlY3V0b3JMb2Nrc0FsbDogYWNxdWlyZSBsb2NrcyBuZWVk ZWQgZm9yIGV4ZWN1dGlvbiBvZiBhIGNhY2hlZAorICogcGxhbjsgb3IgcmVsZWFzZSB0aGVtIGlm IGFjcXVpcmUgaXMgZmFsc2UuCisgKgorICogVGhpcyBsb2NrcyBhbGwgcmVsYXRpb25zIGluIGEg Z2l2ZW4gUGxhbm5lZFN0bXQncyByYW5nZSB0YWJsZS4KICAqLwogc3RhdGljIHZvaWQKLUFjcXVp cmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQorQWNxdWlyZUV4 ZWN1dG9yTG9ja3NBbGwoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiB7CiAJTGlzdENl bGwgICAqbGMxOwogCkBAIC0xOTU1LDYgKzE5ODYsMjEyIEBAIEFjcXVpcmVFeGVjdXRvckxvY2tz KExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCX0KIH0KIAorLyoKKyAqIExvY2tSZWxp ZHMKKyAqIAkJQWNxdWlyZSBvciByZWxlYXNlIGxvY2tzIG9uIHRoZSBzcGVjaWZpZWQgcmVsaWRz LCB3aGljaCByZWZlcmVuY2UKKyAqIAkJZW50cmllcyBpbiB0aGUgcHJvdmlkZWQgcmFuZ2UgdGFi bGUuCisgKgorICogSGVscGVyIGZvciBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKCkuCisg Ki8KK3N0YXRpYyB2b2lkCitMb2NrUmVsaWRzKExpc3QgKnJ0YWJsZSwgQml0bWFwc2V0ICpyZWxp ZHMsIGJvb2wgYWNxdWlyZSkKK3sKKwlpbnQJcnRpbmRleCA9IC0xOworCisJd2hpbGUgKChydGlu ZGV4ID0gYm1zX25leHRfbWVtYmVyKHJlbGlkcywgcnRpbmRleCkpID49IDApCisJeworCQlSYW5n ZVRibEVudHJ5ICpydGUgPSBsaXN0X250aF9ub2RlKFJhbmdlVGJsRW50cnksIHJ0YWJsZSwgcnRp bmRleCAtIDEpOworCisJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CisJ CQkgICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVs aWQpKSk7CisKKwkJLyoKKwkJICogQWNxdWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiBsb2Nr IG9uIGVhY2ggcmVsYXRpb24gT0lELiBOb3RlCisJCSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkg dHJ5IHRvIG9wZW4gdGhlIHJlbCwgYW5kIGhlbmNlIHdpbGwgbm90CisJCSAqIGZhaWwgaWYgaXQn cyBiZWVuIGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkKKwkJICog YWNxdWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgorCQkgKi8KKwkJaWYgKGFjcXVpcmUpCisJ CQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCWVsc2UK KwkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCX0K K30KKworLyoKKyAqIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQKKyAqCQlBY3F1aXJlIG9y IHJlbGVhc2UgZXhlY3V0aW9uIGxvY2tzIGZvciBvbmx5IHVucHJ1bmVkIHJlbGF0aW9ucworICoJ CXJlZmVyZW5jZWQgYnkgdGhlIGdpdmVuIFBsYW5uZWRTdG10cy4KKyAqCisgKiBPbiBhY3F1aXJl LCB0aGlzOgorICoJLSBsb2NrcyB1bnBydW5hYmxlIHJlbHMgbGlzdGVkIGluIFBsYW5uZWRTdG10 LnVucHJ1bmFibGVSZWxpZHMKKyAqCS0gcnVucyBFeGVjdXRvclByZXAoKSB0byBwZXJmb3JtIGlu aXRpYWwgcnVudGltZSBwcnVuaW5nCisgKgktIGxvY2tzIHRoZSBzdXJ2aXZpbmcgcGFydGl0aW9u cyByZXBvcnRlZCBpbiB0aGUgcHJlcCBlc3RhdGUKKyAqCS0gYXBwZW5kcyB0aGUgRVN0YXRlIHBv aW50ZXIgZm9yIGVhY2ggUGxhbm5lZFN0bXQgdG8gY3ByZXAtPnByZXBfZXN0YXRlcworICoKKyAq IE9uIHJlbGVhc2UsIGl0OgorICoJLSBsb29rcyB1cCB0aGUgRVN0YXRlIGZvciBlYWNoIFBsYW5u ZWRTdG10IGZyb20gY3ByZXAtPnByZXBfZXN0YXRlcworICoJICAod2hpY2ggbXVzdCBhbHJlYWR5 IGJlIHBvcHVsYXRlZCkKKyAqCS0gdW5sb2NrcyB0aGUgc2FtZSByZWxhdGlvbnMgaWRlbnRpZmll ZCBkdXJpbmcgYWNxdWlyZQorICoKKyAqIHByZXBfZXN0YXRlcyBpcyBleHRlbmRlZCBkdXJpbmcg YWNxdWlyZSBhbmQgbXVzdCBtYXRjaCBzdG10X2xpc3Qgb25lLXRvLW9uZQorICogd2hlbiByZWxl YXNpbmcgbG9ja3MuICBNZW1vcnkgYWxsb2NhdGlvbiBmb3IgRVN0YXRlIGhhcHBlbnMgaW4KKyAq IGNwcmVwLT5jb250ZXh0LiAgTG9ja3MgYXJlIGFjcXVpcmVkIHVzaW5nIGNwcmVwLT5vd25lci4K KyAqLworc3RhdGljIHZvaWQKK0FjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoTGlzdCAqc3Rt dF9saXN0LCBib29sIGFjcXVpcmUsCisJCQkJCQkJIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXAp Cit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNw cmVwLT5jb250ZXh0KTsKKwlMaXN0Q2VsbCAgICpsYzE7CisJTGlzdAkgICAqcHJlcF9lc3RhdGVz OworCUxpc3RDZWxsICAgKnByZXBfbGM7CisKKwlBc3NlcnQoY3ByZXApOworCisJLyoKKwkgKiBX aGVuIHJlbGVhc2luZyBsb2NrcywgdXNlIHRoZSBFU3RhdGUgbGlzdCAoaWYgYW55KSBjcmVhdGVk IGR1cmluZworCSAqIGFjcXVpc2l0aW9uIHRvIGRldGVybWluZSB3aGljaCByZWxpZHMgdG8gdW5s b2NrLiBUaGUgbGlzdCBtdXN0IG1hdGNoCisJICogdGhlIFBsYW5uZWRTdG10IGxpc3Qgb25lLXRv LW9uZS4KKwkgKi8KKwlwcmVwX2VzdGF0ZXMgPSBjcHJlcC0+cHJlcF9lc3RhdGVzOworCUFzc2Vy dChhY3F1aXJlIHx8IGxpc3RfbGVuZ3RoKHByZXBfZXN0YXRlcykgPT0gbGlzdF9sZW5ndGgoc3Rt dF9saXN0KSk7CisKKwlwcmVwX2xjID0gbGlzdF9oZWFkKHByZXBfZXN0YXRlcyk7CisJZm9yZWFj aChsYzEsIHN0bXRfbGlzdCkKKwl7CisJCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOworCQlFU3RhdGUgKnByZXBfZXN0YXRlOworCisJCWlm IChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCisJCXsKKwkJCS8qIFNh bWUgYXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4gKi8KKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0 aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7CisKKwkJCWlmIChx dWVyeSkKKwkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7CisKKwkJCS8qIEtl ZXAgdGhlIGxpc3Qgb25lLXRvLW9uZSB3aXRoIHN0bXRfbGlzdC4gKi8KKwkJCWlmIChhY3F1aXJl KQorCQkJCWNwcmVwLT5wcmVwX2VzdGF0ZXMgPSBsYXBwZW5kKGNwcmVwLT5wcmVwX2VzdGF0ZXMs IE5VTEwpOworCQkJZWxzZQorCQkJCSh2b2lkKSBuZXh0X3ByZXBfZXN0YXRlKHByZXBfZXN0YXRl cywgJnByZXBfbGMpOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBMb2NrIHRhYmxl cyBtZW50aW9uZWQgaW4gdGhlIG9yaWdpbmFsIHF1ZXJ5IGFuZCBvdGhlciB1bnBydW5hYmxlCisJ CSAqIHJlbGF0aW9ucyB0aGF0IHdlcmUgYWRkZWQgdG8gdGhlIHBsYW4gdmlhIGluaGVyaXRhbmNl IGV4cGFuc2lvbi4KKwkJICovCisJCUxvY2tSZWxpZHMocGxhbm5lZHN0bXQtPnJ0YWJsZSwgcGxh bm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMsIGFjcXVpcmUpOworCisJCS8qIExvY2sgcGFydGl0 aW9ucyBzdXJ2aXZpbmcgcnVudGltZSBpbml0aWFsIHBydW5pbmcuICovCisJCWlmIChhY3F1aXJl KQorCQl7CisJCQkvKgorCQkJICogUHJ1bmluZyBleHByZXNzaW9ucyBtYXkgY2FsbCBQTCBmdW5j dGlvbnMgdGhhdCByZXF1aXJlIGFuIGFjdGl2ZQorCQkJICogc25hcHNob3QgKGUuZy4sIHZpYSBF bnN1cmVQb3J0YWxTbmFwc2hvdEV4aXN0cygpKS4gRXN0YWJsaXNoIG9uZQorCQkJICogaWYgbmVl ZGVkLgorCQkJICovCisJCQlib29sCQlzbmFwX3B1c2hlZCA9IGZhbHNlOworCisJCQlpZiAoIUFj dGl2ZVNuYXBzaG90U2V0KCkpCisJCQl7CisJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CisJCQkJc25hcF9wdXNoZWQgPSB0cnVlOworCQkJfQorCisJCQlw cmVwX2VzdGF0ZSA9IEV4ZWN1dG9yUHJlcChwbGFubmVkc3RtdCwgY3ByZXAtPnBhcmFtcywKKwkJ CQkJCQkJCSAgIGNwcmVwLT5vd25lciwgY3ByZXAtPmVmbGFncyk7CisJCQlBc3NlcnQocHJlcF9l c3RhdGUpOworCQkJY3ByZXAtPnByZXBfZXN0YXRlcyA9IGxhcHBlbmQoY3ByZXAtPnByZXBfZXN0 YXRlcywgcHJlcF9lc3RhdGUpOworCisJCQlpZiAoc25hcF9wdXNoZWQpCisJCQkJUG9wQWN0aXZl U25hcHNob3QoKTsKKwkJfQorCQllbHNlCisJCQlwcmVwX2VzdGF0ZSA9IG5leHRfcHJlcF9lc3Rh dGUocHJlcF9lc3RhdGVzLCAmcHJlcF9sYyk7CisKKwkJaWYgKHByZXBfZXN0YXRlKQorCQl7CisJ CQkvKgorCQkJICogZXNfdW5wcnVuZWRfcmVsaWRzIGluY2x1ZGVzIHBsYW5uZWRzdG10LT51bnBy dW5hYmxlUmVsaWRzLAorCQkJICogd2hpY2ggd2UndmUgYWxyZWFkeSBsb2NrZWQuIEZpbHRlciB0 aGVtIG91dCB0byBhdm9pZCBkb3VibGUtbG9ja2luZy4KKwkJCSAqLworCQkJQml0bWFwc2V0ICps b2NrX3JlbGlkcyA9IGJtc19kaWZmZXJlbmNlKHByZXBfZXN0YXRlLT5lc191bnBydW5lZF9yZWxp ZHMsCisJCQkJCQkJCQkJCQkJcGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpOworCisJCQkv KgorCQkJICogV2UgbXVzdCBhbHdheXMgaW5jbHVkZSB0aGUgZmlyc3QgcmVzdWx0IHJlbGF0aW9u IG9mIGVhY2gKKwkJCSAqIE1vZGlmeVRhYmxlIG5vZGUgaW4gdGhlIHBsYW4sIHRoYXQgaXMsIHRo ZSBvbmUgbWVudGlvbmVkIGluCisJCQkgKiBwbGFubmVkc3RtdC0+Zmlyc3RSZXN1bHRSZWxzIGlu IHRoZSBzZXQgb2YgcmVsYXRpb25zIHRvIGJlCisJCQkgKiBsb2NrZWQgdG8gc2F0aXNmeSBleGVj dXRvciBhc3N1bXB0aW9ucyBkZXNjcmliZWQKKwkJCSAqIGluIEV4ZWNJbml0TW9kaWZ5VGFibGUo KS4gIFRoaXMgY2FuIGJlIHdhc3RlZnVsLCBiZWNhdXNlIHdlCisJCQkgKiBtYXkgbm90IG5lZWQg dG8gdXNlIHRoZSBmaXJzdCByZXN1bHQgcmVsYXRpb24gYXQgYWxsIGlmIG90aGVyCisJCQkgKiBy ZXN1bHQgcmVsYXRpb25zIGFyZSB1bnBydW5lZCBhbmQgdGh1cyBzdWZmaWNpZW50IGZvciB0aGUK KwkJCSAqIE1vZGlmeVRhYmxlIG5vZGUncyBuZWVkcy4gIFVuZm9ydHVuYXRlbHksIHdlIGRvbid0 IGhhdmUgcGVyLW5vZGUKKwkJCSAqIHVucHJ1bmVkX3JlbGlkcyBzZXQgdG8gZGV0ZXJtaW5lIHRo YXQgb3RoZXIgcmVzdWx0IHJlbGF0aW9ucworCQkJICogYXJlIGluY2x1ZGVkLgorCQkJICovCisJ CQlpZiAocGxhbm5lZHN0bXQtPnJlc3VsdFJlbGF0aW9ucykKKwkJCXsKKwkJCQlMaXN0Q2VsbCAq bGMyOworCisJCQkJZm9yZWFjaChsYzIsIHBsYW5uZWRzdG10LT5maXJzdFJlc3VsdFJlbHMpCisJ CQkJeworCQkJCQlJbmRleCAgICAgICBmaXJzdFJlc3VsdFJlbCA9IGxmaXJzdF9pbnQobGMyKTsK KworCQkJCQlpZiAoIWJtc19pc19tZW1iZXIoZmlyc3RSZXN1bHRSZWwsIGxvY2tfcmVsaWRzKSkK KwkJCQkJCWxvY2tfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIobG9ja19yZWxpZHMsIGZpcnN0UmVz dWx0UmVsKTsKKwkJCQl9CisJCQl9CisKKwkJCUxvY2tSZWxpZHMocGxhbm5lZHN0bXQtPnJ0YWJs ZSwgbG9ja19yZWxpZHMsIGFjcXVpcmUpOworCQkJYm1zX2ZyZWUobG9ja19yZWxpZHMpOworCQl9 CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworfQorCisvKgorICog Q2FjaGVkUGxhblByZXBDbGVhbnVwCisgKgkJQ2xlYW4gdXAgRVN0YXRlIGJ1aWx0IGZvciBhIGdl bmVyaWMgcGxhbi4KKyAqCisgKiBUaGlzIGlzIHVzZWQgaW4gdGhlIGNvcm5lciBjYXNlIHdoZXJl IENoZWNrQ2FjaGVkUGxhbigpIGRpc2NvdmVycworICogdGhhdCBhIENhY2hlZFBsYW4gaGFzIGJl Y29tZSBpbnZhbGlkIGFmdGVyIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKQorICogaGFz IGFscmVhZHkgcnVuLiAgSW4gdGhhdCBjYXNlIHdlIG11c3QgYm90aCByZWxlYXNlIHRoZSBleGVj dXRpb24gbG9ja3MKKyAqIGFuZCBkaXNwb3NlIG9mIHRoZSBFeGVjUHJlcCBsaXN0IHN0b3JlZCBp biBDYWNoZWRQbGFuUHJlcERhdGEsIHNpbmNlIHRoZQorICogZXhlY3V0b3Igd2lsbCBuZXZlciBz ZWUgb3IgY2xlYW4gaXQgdXAuCisgKi8KK3N0YXRpYyB2b2lkCitDYWNoZWRQbGFuUHJlcENsZWFu dXAoQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlSZXNv dXJjZU93bmVyIG9sZG93bmVyOworCisJaWYgKGNwcmVwID09IE5VTEwpCisJCXJldHVybjsKKwor CS8qIFN3aXRjaCB0byBvd25lciB0aGF0IEV4ZWN1dG9yUHJlcCgpIHdvdWxkIGhhdmUgdXNlZC4g Ki8KKwlvbGRvd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCUN1cnJlbnRSZXNvdXJjZU93 bmVyID0gY3ByZXAtPm93bmVyOworCWZvcmVhY2gobGMsIGNwcmVwLT5wcmVwX2VzdGF0ZXMpCisJ eworCQlFU3RhdGUgKnByZXBfZXN0YXRlID0gKEVTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCWlm IChwcmVwX2VzdGF0ZSA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJRXhlY0Nsb3NlUmFuZ2VU YWJsZVJlbGF0aW9ucyhwcmVwX2VzdGF0ZSk7CisJCUZyZWVFeGVjdXRvclN0YXRlKHByZXBfZXN0 YXRlKTsKKwl9CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBvbGRvd25lcjsKKworCWxpc3RfZnJl ZShjcHJlcC0+cHJlcF9lc3RhdGVzKTsKKwljcHJlcC0+cHJlcF9lc3RhdGVzID0gTklMOworfQor CiAvKgogICogQWNxdWlyZVBsYW5uZXJMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIHBs YW5uaW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAgKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWly ZSBpcyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggMjc3NThlYzE2ZmUuLjRmZDlkOWJj YzU2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMjE3LDYgKzIxNyw5IEBAIHR5cGVkZWYgc3Ry dWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlzdCBvZiBpbnRlZ2VyIFJUIGluZGV4ZXMg Ki8KIAlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnM7CiAKKwkvKiAiZmxhdCIgbGlzdCBvZiBpbnRl Z2VyIFJUIGluZGV4ZXMgKG9uZSBwZXIgTW9kaWZ5VGFibGUgbm9kZSkgKi8KKwlMaXN0CSAgICpm aXJzdFJlc3VsdFJlbHM7CisKIAkvKiAiZmxhdCIgbGlzdCBvZiBBcHBlbmRSZWxJbmZvcyAqLwog CUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCBiNjE4 NTgyNWZjYi4uNTUyNzljYmJkYTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xMjEsNiArMTIx LDE2IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAJLyogaW50ZWdlciBsaXN0IG9mIFJU IGluZGV4ZXMsIG9yIE5JTCAqLwogCUxpc3QJICAgKnJlc3VsdFJlbGF0aW9uczsKIAorCS8qCisJ ICogcnRhYmxlIGluZGV4ZXMgb2YgZmlyc3QgdGFyZ2V0IHJlbGF0aW9uIGluIGVhY2ggTW9kaWZ5 VGFibGUgbm9kZSBpbiB0aGUKKwkgKiBwbGFuIGZvciBJTlNFUlQvVVBEQVRFL0RFTEVURS9NRVJH RS4gIE5JTCBpZiByZXN1bHRSZWxhdGlvbnMgaXMgTklMLgorCSAqCisJICogVGhlc2UgYXJlIHVz ZWQgYnkgQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZCgpIHRvIGVuc3VyZSB0aGF0IHRoZQor CSAqIGZpcnN0IHJlc3VsdCByZWwgZm9yIGVhY2ggTW9kaWZ5VGFibGUgcmVtYWlucyBsb2NrZWQg ZXZlbiBpZiBwcnVuZWQ7CisJICogc2VlIEV4ZWNJbml0TW9kaWZ5VGFibGUoKSBmb3IgdGhlIGV4 ZWN1dG9yIHNpZGUgYXNzdW1wdGlvbnMuCisJICovCisJTGlzdAkgICAqZmlyc3RSZXN1bHRSZWxz OworCiAJLyogbGlzdCBvZiBBcHBlbmRSZWxJbmZvIG5vZGVzICovCiAJTGlzdAkgICAqYXBwZW5k UmVsYXRpb25zOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDdhNGE4NWM4MDM4Li4xNzcxNTBh NTg0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKQEAgLTE5Nyw2ICsxOTcsMzggQEAgdHlwZWRlZiBz dHJ1Y3QgQ2FjaGVkRXhwcmVzc2lvbgogfSBDYWNoZWRFeHByZXNzaW9uOwogCiAKKy8qCisgKiBD YWNoZWRQbGFuUHJlcERhdGEKKyAqICAgICAgQ2FycmllcyBFeGVjdXRvclByZXAgcmVzdWx0cyBm b3IgZWFjaCBQbGFubmVkU3RtdCBpbiBhIENhY2hlZFBsYW4sCisgKiAgICAgIGFsb25nIHdpdGgg Y29udGV4dCBhbmQgb3duZXIgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGFsbG9jYXRlIHRoZW0uCisg KgorICogcHJlcF9lc3RhdGVzIGlzIGluZGV4ZWQgb25lLXRvLW9uZSB3aXRoIENhY2hlZFBsYW4t PnN0bXRfbGlzdCwgYW5kIGlzCisgKiBwb3B1bGF0ZWQgd2hlbiBHZXRDYWNoZWRQbGFuKCkgcHJl cGFyZXMgYSByZXVzZWQgZ2VuZXJpYyBwbGFuLiAgSWYgdGhlCisgKiBwbGFuIGlzIGZvdW5kIGlu dmFsaWQgYWZ0ZXIgbG9ja2luZywgdGhlIHNhbWUgbGlzdCBpcyB1c2VkIHRvIGRldGVybWluZQor ICogd2hpY2ggcmVsYXRpb25zIHRvIHVubG9jayBiZWZvcmUgcmV0cnlpbmcuCisgKgorICogRXhl Y3V0b3JQcmVwIHN0YXRlIGlzIGFsbG9jYXRlZCBpbiAnY29udGV4dCcgYW5kIG93bmVkIGJ5ICdv d25lcicuCisgKgorICogZWZsYWdzIGNvbnRyb2xzIEV4ZWN1dG9yUHJlcCgpIGJlaGF2aW9yIGR1 cmluZyBpbml0aWFsIHBydW5pbmcuCisgKiBOb3JtYWxseSB6ZXJvOyBzZXQgRVhFQ19GTEFHX0VY UExBSU5fR0VORVJJQyB0byBzdXBwcmVzcyBwcnVuaW5nCisgKiBpbiBFWFBMQUlOIChHRU5FUklD X1BMQU4pLiAgTmVlZCBub3QgbWF0Y2ggdGhlIGVmbGFncyBsYXRlciBwYXNzZWQKKyAqIHRvIEV4 ZWN1dG9yU3RhcnQoKS4KKyAqCisgKiBwcmVwX2VzdGF0ZXMgbXVzdCByZWFjaCBFeGVjdXRvclN0 YXJ0KCkgdG8gYmUgYWRvcHRlZCBmb3IgZXhlY3V0aW9uLgorICogSWYgdGhlIHBsYW4gaXMgaW52 YWxpZGF0ZWQgYmVmb3JlIHRoYXQgaGFwcGVucywgQ2FjaGVkUGxhblByZXBDbGVhbnVwKCkKKyAq IGZyZWVzIHRoZW0gaW5zdGVhZC4gIFRoZSBFU3RhdGVzIGFyZSBhbGxvY2F0ZWQgaW4gJ2NvbnRl eHQnIGFuZCB0aGVpcgorICogcmVzb3VyY2VzIHRyYWNrZWQgdW5kZXIgJ293bmVyJywgd2hpY2gg dGhlIGNhbGxlciBzZXRzIHRvIG1hdGNoIHRoZQorICogZXhlY3V0aW9uIGVudmlyb25tZW50IChl LmcuLCBwb3J0YWwgY29udGV4dCBhbmQgcmVzb3duZXIpLgorICovCit0eXBlZGVmIHN0cnVjdCBD YWNoZWRQbGFuUHJlcERhdGEKK3sKKwlMaXN0ICAgKnByZXBfZXN0YXRlczsJLyogb25lIEVTdGF0 ZSBwZXIgUGxhbm5lZFN0bXQsIG9yIE5VTEwgKi8KKwlQYXJhbUxpc3RJbmZvIHBhcmFtczsJLyog cGFyYW1zIHZpc2libGUgdG8gRXhlY3V0b3JQcmVwICovCisJTWVtb3J5Q29udGV4dCBjb250ZXh0 OwkvKiB3aGVyZSB0byBhbGxvY2F0ZSBFU3RhdGUgYW5kIGl0cyBmaWVsZHMgKi8KKwlSZXNvdXJj ZU93bmVyIG93bmVyOwkvKiBSZXNvdXJjZU93bmVyIGZvciBFeGVjdXRvclByZXAgc3RhdGUgKi8K KwlpbnQJCWVmbGFnczsJCQkvKiBleGVjdXRvciBmbGFncyB0byBjb250cm9sIEV4ZWN1dG9yUHJl cCAqLworfSBDYWNoZWRQbGFuUHJlcERhdGE7CisKIGV4dGVybiB2b2lkIEluaXRQbGFuQ2FjaGUo dm9pZCk7CiBleHRlcm4gdm9pZCBSZXNldFBsYW5DYWNoZSh2b2lkKTsKIApAQCAtMjQwLDcgKzI3 Miw4IEBAIGV4dGVybiBMaXN0ICpDYWNoZWRQbGFuR2V0VGFyZ2V0TGlzdChDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hlZFBsYW4gKkdldENhY2hlZFBsYW4oQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJh bXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAotCQkJCQkJCQkgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJ CQkJCQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKIGV4dGVybiB2b2lkIFJlbGVhc2VD YWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRl cm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fcHJ1bmUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25f cHJ1bmUub3V0CmluZGV4IGRlYWNkZDc1ODA3Li44ZTBjYzk4YmFjYSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtNDgyNCwzICs0ODI0LDE0 OCBAQCBzZWxlY3QgbWluKGEpIG92ZXIgKHBhcnRpdGlvbiBieSBhIG9yZGVyIGJ5IGEpIGZyb20g cGFydF9hYmMgd2hlcmUgYSA+PSBzdGFibGVfbwogCiBkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsK IGRyb3AgdGFibGUgcGFydF9hYmM7CistLQorLS0gVmVyaWZ5IHRoYXQgcHJ1bmluZy1hd2FyZSBs b2NraW5nIHNraXBzIHBydW5lZCBwYXJ0aXRpb25zCistLSB3aGVuIHJldXNpbmcgYSBnZW5lcmlj IGNhY2hlZCBwbGFuLgorLS0KK3NldCBwbGFuX2NhY2hlX21vZGUgdG8gZm9yY2VfZ2VuZXJpY19w bGFuOworY3JlYXRlIHRhYmxlIHBydW5lbG9ja19wIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3Qg KGEpOworY3JlYXRlIHRhYmxlIHBydW5lbG9ja19wMSBwYXJ0aXRpb24gb2YgcHJ1bmVsb2NrX3Ag Zm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUgcHJ1bmVsb2NrX3AyIHBhcnRpdGlvbiBv ZiBwcnVuZWxvY2tfcCBmb3IgdmFsdWVzIGluICgyKTsKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tf cDMgcGFydGl0aW9uIG9mIHBydW5lbG9ja19wIGZvciB2YWx1ZXMgaW4gKDMpOworcHJlcGFyZSBw cnVuZWxvY2tfcSAoaW50KSBhcyBzZWxlY3QgKiBmcm9tIHBydW5lbG9ja19wIHdoZXJlIGEgPSAk MTsKKy0tIEZvcmNlIGdlbmVyaWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBl eGVjdXRlIHBydW5lbG9ja19xKDEpOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFwcGVuZAorICAgU3VicGxhbnMgUmVtb3ZlZDogMgorICAgLT4gIFNlcSBTY2FuIG9u IHBydW5lbG9ja19wMSBwcnVuZWxvY2tfcF8xCisgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCiso NCByb3dzKQorCistLSBFeGVjdXRlIGFuZCBjaGVjayB3aGljaCBjaGlsZCBwYXJ0aXRpb25zIGFy ZSBsb2NrZWQKK2JlZ2luOworZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKyBhIAorLS0tCisoMCBy b3dzKQorCitzZWxlY3QgYy5yZWxuYW1lCisgIGZyb20gcGdfbG9ja3MgbAorICBqb2luIHBnX2Ns YXNzIGMgb24gYy5vaWQgPSBsLnJlbGF0aW9uCisgd2hlcmUgbC5waWQgPSBwZ19iYWNrZW5kX3Bp ZCgpCisgICBhbmQgYy5yZWxuYW1lIGxpa2UgJ3BydW5lbG9ja19wXycKKyBvcmRlciBieSBjLnJl bG5hbWU7CisgICByZWxuYW1lICAgIAorLS0tLS0tLS0tLS0tLS0KKyBwcnVuZWxvY2tfcDEKKygx IHJvdykKKworY29tbWl0OworZGVhbGxvY2F0ZSBwcnVuZWxvY2tfcTsKKy0tIFR1cm4gcHJ1bmlu ZyBvZmYKK3NldCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgdG8gb2ZmOworcHJlcGFyZSBwcnVu ZWxvY2tfcSAoaW50KSBhcyBzZWxlY3QgKiBmcm9tIHBydW5lbG9ja19wIHdoZXJlIGEgPSAkMTsK Ky0tIEZvcmNlIGdlbmVyaWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVj dXRlIHBydW5lbG9ja19xKDEpOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMSBwcnVuZWxvY2tfcF8x CisgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCisgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2Nr X3AyIHBydW5lbG9ja19wXzIKKyAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBwcnVuZWxvY2tfcDMgcHJ1bmVsb2NrX3BfMworICAgICAgICAgRmlsdGVyOiAoYSA9 ICQxKQorKDcgcm93cykKKworLS0gRXhlY3V0ZSBhbmQgY2hlY2sgd2hpY2ggY2hpbGQgcGFydGl0 aW9ucyBhcmUgbG9ja2VkCitiZWdpbjsKK2V4ZWN1dGUgcHJ1bmVsb2NrX3EoMSk7CisgYSAKKy0t LQorKDAgcm93cykKKworc2VsZWN0IGMucmVsbmFtZQorICBmcm9tIHBnX2xvY2tzIGwKKyAgam9p biBwZ19jbGFzcyBjIG9uIGMub2lkID0gbC5yZWxhdGlvbgorIHdoZXJlIGwucGlkID0gcGdfYmFj a2VuZF9waWQoKQorICAgYW5kIGMucmVsbmFtZSBsaWtlICdwcnVuZWxvY2tfcF8nCisgb3JkZXIg YnkgYy5yZWxuYW1lOworICAgcmVsbmFtZSAgICAKKy0tLS0tLS0tLS0tLS0tCisgcHJ1bmVsb2Nr X3AxCisgcHJ1bmVsb2NrX3AyCisgcHJ1bmVsb2NrX3AzCisoMyByb3dzKQorCitjb21taXQ7Citk ZWFsbG9jYXRlIHBydW5lbG9ja19xOworcmVzZXQgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nOwor LS0KKy0tIFZlcmlmeSBmaXJzdFJlc3VsdFJlbHMgaGFuZGxpbmcgd2l0aCBtdWx0aXBsZSBNb2Rp ZnlUYWJsZSBub2RlcworLS0gKHdyaXRhYmxlIENURXMpIHRhcmdldGluZyBhIHBhcnRpdGlvbmVk IHRhYmxlLiAgV2hlbiBhIHBydW5pbmcKKy0tIHBhcmFtZXRlciBtYXRjaGVzIG5vIHBhcnRpdGlv biwgYWxsIHJlc3VsdCByZWxhdGlvbnMgYXJlIHBydW5lZAorLS0gYW5kIHRoZSBleGVjdXRvciBt dXN0IHN0aWxsIGZpbmQgYSB1c2FibGUgZmlyc3QgcmVzdWx0IHJlbGF0aW9uCistLSBmb3IgZWFj aCBNb2RpZnlUYWJsZSBub2RlLgorLS0KK3ByZXBhcmUgcHJ1bmVsb2NrX210X3EgKGludCwgaW50 KSBhcworICB3aXRoIHVwZDEgYXMgKHVwZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEpLAorICAg ICAgIHVwZDIgYXMgKHVwZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEgd2hlcmUgYSA9ICQyKQor ICB1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhIHdoZXJlIGEgPSAkMTsKKy0tIEZvcmNlIGdl bmVyaWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHBydW5lbG9j a19tdF9xKDEsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHJ1bmVsb2NrX3AKKyAgIFVwZGF0 ZSBvbiBwcnVuZWxvY2tfcDEgcHJ1bmVsb2NrX3BfMQorICAgQ1RFIHVwZDEKKyAgICAgLT4gIFVw ZGF0ZSBvbiBwcnVuZWxvY2tfcCBwcnVuZWxvY2tfcF8zCisgICAgICAgICAgIFVwZGF0ZSBvbiBw cnVuZWxvY2tfcDEgcHJ1bmVsb2NrX3BfNAorICAgICAgICAgICBVcGRhdGUgb24gcHJ1bmVsb2Nr X3AyIHBydW5lbG9ja19wXzUKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5lbG9ja19wMyBwcnVu ZWxvY2tfcF82CisgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHBydW5lbG9ja19wMSBwcnVuZWxvY2tfcF80CisgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tfcDIgcHJ1bmVsb2NrX3BfNQorICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2NrX3AzIHBydW5lbG9ja19wXzYKKyAgIENURSB1cGQy CisgICAgIC0+ICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AgcHJ1bmVsb2NrX3BfNworICAgICAgICAg ICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzgKKyAgICAgICAgICAgLT4gIEFw cGVuZAorICAgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyCisgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tfcDIgcHJ1bmVsb2NrX3BfOAorICAgICAgICAg ICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDIpCisgICAtPiAgQXBwZW5kCisgICAgICAgICBT dWJwbGFucyBSZW1vdmVkOiAyCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2NrX3Ax IHBydW5lbG9ja19wXzEKKyAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkKKygyMiByb3dz KQorCistLSBBbGwgcGFydGl0aW9ucyBwcnVuZWQ6IHZhbHVlIDQgbWF0Y2hlcyBubyBwYXJ0aXRp b24sIHNvIGVhY2gKKy0tIE1vZGlmeVRhYmxlIG11c3Qgc3RpbGwgaW5pdGlhbGl6ZSBjb3JyZWN0 bHkgd2l0aCBubyBtYXRjaGluZworLS0gcmVzdWx0IHJlbGF0aW9ucy4KK2V4cGxhaW4gKGNvc3Rz IG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfbXRfcSg0LCA1KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBkYXRlIG9u IHBydW5lbG9ja19wCisgICBDVEUgdXBkMQorICAgICAtPiAgVXBkYXRlIG9uIHBydW5lbG9ja19w IHBydW5lbG9ja19wXzIKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5lbG9ja19wMSBwcnVuZWxv Y2tfcF8zCisgICAgICAgICAgIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcDIgcHJ1bmVsb2NrX3BfNAor ICAgICAgICAgICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AzIHBydW5lbG9ja19wXzUKKyAgICAgICAg ICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2Nr X3AxIHBydW5lbG9ja19wXzMKKyAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydW5l bG9ja19wMiBwcnVuZWxvY2tfcF80CisgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw cnVuZWxvY2tfcDMgcHJ1bmVsb2NrX3BfNQorICAgQ1RFIHVwZDIKKyAgICAgLT4gIFVwZGF0ZSBv biBwcnVuZWxvY2tfcCBwcnVuZWxvY2tfcF82CisgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAg ICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMworICAgLT4gIEFwcGVuZAorICAgICAgICAg U3VicGxhbnMgUmVtb3ZlZDogMworKDE2IHJvd3MpCisKK2RlYWxsb2NhdGUgcHJ1bmVsb2NrX210 X3E7Citkcm9wIHRhYmxlIHBydW5lbG9ja19wOworcmVzZXQgcGxhbl9jYWNoZV9tb2RlOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUub3V0CmluZGV4IDRlNTkxODgxOTZjLi4xZDY5 YWIwYTFjMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dApAQCAtMzk4 LDMgKzM5OCw2NSBAQCBzZWxlY3QgbmFtZSwgZ2VuZXJpY19wbGFucywgY3VzdG9tX3BsYW5zIGZy b20gcGdfcHJlcGFyZWRfc3RhdGVtZW50cwogKDEgcm93KQogCiBkcm9wIHRhYmxlIHRlc3RfbW9k ZTsKKy0tIFRlc3QgaW52YWxpZGF0aW9uIG9mIGEgZ2VuZXJpYyBwbGFuIGR1cmluZyBwcnVuaW5n LWF3YXJlIGxvY2sgc2V0dXAuCistLSBUaGUgcHJ1bmluZyBleHByZXNzaW9uIHVzZXMgYSBzdGFi bGUgU1FMIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYSB2b2xhdGlsZQorLS0gcGxwZ3NxbCBmdW5jdGlv bi4gIFRoYXQgZnVuY3Rpb24gcGVyZm9ybXMgRERMIG9uIGEgcGFydGl0aW9uIHdoZW4gYQorLS0g c2VwYXJhdGUgInNpZ25hbCIgdGFibGUgc2F5cyB0byBkbyBzby4gIFRoZSBzZWNvbmQgRVhFQ1VU RSBzaG91bGQKKy0tIHJlcGxhbiBjbGVhbmx5IGFmdGVyIHRoZSBEREwuCitzZXQgcGxhbl9jYWNo ZV9tb2RlIHRvIGZvcmNlX2dlbmVyaWNfcGxhbjsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdf cHJ1bmluZ19wIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIGlu dmFsX2R1cmluZ19wcnVuaW5nX3AxIHBhcnRpdGlvbiBvZiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19w IGZvciB2YWx1ZXMgaW4gKDEpOworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3Ay IHBhcnRpdGlvbiBvZiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wIGZvciB2YWx1ZXMgaW4gKDIpOwor aW5zZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfcCB2YWx1ZXMgKDEpLCAoMik7CitjcmVh dGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIChjcmVhdGVfaWR4IGJvb2wgbm90 IG51bGwpOworaW5zZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHZhbHVlcyAo ZmFsc2UpOworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVf ZnVuYygpIHJldHVybnMgaW50CithcyAkJAorZGVjbGFyZQorCWNyZWF0ZV9pbmRleCBib29sOwor YmVnaW4KKwktLSBQZXJmb3JtIERETCBvbiBhIHBhcnRpdGlvbiBpZiBhc2tlZCB0bworCXNlbGVj dCBjcmVhdGVfaWR4IGludG8gY3JlYXRlX2luZGV4IGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdf c2lnbmFsIGZvciB1cGRhdGU7CisJaWYgY3JlYXRlX2luZGV4ID0gdHJ1ZSB0aGVuCisJCXJhaXNl IG5vdGljZSAnY3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5n X3AxJzsKKwkJY3JlYXRlIGluZGV4IG9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxIChhKTsKKwkJ dXBkYXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IGZhbHNl OworCWVuZCBpZjsKKwktLSBwcnVuaW5nIHBhcmFtZXRlcgorCXJldHVybiAxOworZW5kOworJCQg bGFuZ3VhZ2UgcGxwZ3NxbCB2b2xhdGlsZTsKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIHN0 YWJsZV9wcnVuaW5nX3ZhbCgpIHJldHVybnMgaW50IGFzICQkCisJc2VsZWN0IGludmFsaWRhdGVf cGxhbmNhY2hlX2Z1bmMoKTsKKyQkIGxhbmd1YWdlIHNxbCBzdGFibGU7CitwcmVwYXJlIGludmFs X2R1cmluZ19wcnVuaW5nX3EgYXMgc2VsZWN0ICogZnJvbSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19w IHdoZXJlIGEgPSBzdGFibGVfcHJ1bmluZ192YWwoKTsKKy0tIEJ1aWxkIGEgZ2VuZXJpYyBwbGFu IGFuZCBydW4gcHJ1bmluZyBvbmNlLCBidXQgZG9uJ3Qgc2V0IHRoZSBzaWduYWwKKy0tIGZvciBp bnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgdG8gcGVyZm9ybSB0aGUgRERMLgorZXhwbGFpbiAo dmVyYm9zZSwgY29zdHMgb2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgU3VicGxhbnMg UmVtb3ZlZDogMQorICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5pbnZhbF9kdXJpbmdfcHJ1bmlu Z19wMSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wXzEKKyAgICAgICAgIE91dHB1dDogaW52YWxfZHVy aW5nX3BydW5pbmdfcF8xLmEKKyAgICAgICAgIEZpbHRlcjogKGludmFsX2R1cmluZ19wcnVuaW5n X3BfMS5hID0gc3RhYmxlX3BydW5pbmdfdmFsKCkpCisoNSByb3dzKQorCistLSBSZXVzZSB0aGUg Z2VuZXJpYyBwbGFuLiAgTWFrZSBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgcGVyZm9ybSBE REwKKy0tIGR1cmluZyB0aGlzIGV4ZWN1dGlvbiwgd2hpY2ggc2hvdWxkIGZvcmNlIHJlcGxhbm5p bmcgd2l0aG91dCBlcnJvcnMuCit1cGRhdGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHNl dCBjcmVhdGVfaWR4ID0gdHJ1ZTsKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0 ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOworTk9USUNFOiAgY3JlYXRpbmcgaW5kZXggb24gcGFy dGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgU3VicGxhbnMgUmVtb3ZlZDogMQorICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5pbnZhbF9kdXJpbmdfcHJ1bmluZ19wMSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wXzEKKyAgICAgICAgIE91dHB1dDogaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xLmEKKyAg ICAgICAgIEZpbHRlcjogKGludmFsX2R1cmluZ19wcnVuaW5nX3BfMS5hID0gc3RhYmxlX3BydW5p bmdfdmFsKCkpCisoNSByb3dzKQorCitkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3As IGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbDsKK2Ryb3AgZnVuY3Rpb24gaW52YWxpZGF0ZV9w bGFuY2FjaGVfZnVuYywgc3RhYmxlX3BydW5pbmdfdmFsOworZGVhbGxvY2F0ZSBpbnZhbF9kdXJp bmdfcHJ1bmluZ19xOworcmVzZXQgcGxhbl9jYWNoZV9tb2RlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwKaW5kZXggZDkzYzBjMDNiYWIuLjgwNGRkM2M4ZjRlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTE0NDcsMyArMTQ0Nyw4 MCBAQCBzZWxlY3QgbWluKGEpIG92ZXIgKHBhcnRpdGlvbiBieSBhIG9yZGVyIGJ5IGEpIGZyb20g cGFydF9hYmMgd2hlcmUgYSA+PSBzdGFibGVfbwogCiBkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsK IGRyb3AgdGFibGUgcGFydF9hYmM7CisKKy0tCistLSBWZXJpZnkgdGhhdCBwcnVuaW5nLWF3YXJl IGxvY2tpbmcgc2tpcHMgcHJ1bmVkIHBhcnRpdGlvbnMKKy0tIHdoZW4gcmV1c2luZyBhIGdlbmVy aWMgY2FjaGVkIHBsYW4uCistLQorc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5lcmlj X3BsYW47CisKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tfcCAoYSBpbnQpIHBhcnRpdGlvbiBieSBs aXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tfcDEgcGFydGl0aW9uIG9mIHBydW5lbG9j a19wIGZvciB2YWx1ZXMgaW4gKDEpOworY3JlYXRlIHRhYmxlIHBydW5lbG9ja19wMiBwYXJ0aXRp b24gb2YgcHJ1bmVsb2NrX3AgZm9yIHZhbHVlcyBpbiAoMik7CitjcmVhdGUgdGFibGUgcHJ1bmVs b2NrX3AzIHBhcnRpdGlvbiBvZiBwcnVuZWxvY2tfcCBmb3IgdmFsdWVzIGluICgzKTsKKworcHJl cGFyZSBwcnVuZWxvY2tfcSAoaW50KSBhcyBzZWxlY3QgKiBmcm9tIHBydW5lbG9ja19wIHdoZXJl IGEgPSAkMTsKKworLS0gRm9yY2UgZ2VuZXJpYyBwbGFuIGNyZWF0aW9uCitleHBsYWluIChjb3N0 cyBvZmYpIGV4ZWN1dGUgcHJ1bmVsb2NrX3EoMSk7CisKKy0tIEV4ZWN1dGUgYW5kIGNoZWNrIHdo aWNoIGNoaWxkIHBhcnRpdGlvbnMgYXJlIGxvY2tlZAorYmVnaW47CitleGVjdXRlIHBydW5lbG9j a19xKDEpOworCitzZWxlY3QgYy5yZWxuYW1lCisgIGZyb20gcGdfbG9ja3MgbAorICBqb2luIHBn X2NsYXNzIGMgb24gYy5vaWQgPSBsLnJlbGF0aW9uCisgd2hlcmUgbC5waWQgPSBwZ19iYWNrZW5k X3BpZCgpCisgICBhbmQgYy5yZWxuYW1lIGxpa2UgJ3BydW5lbG9ja19wXycKKyBvcmRlciBieSBj LnJlbG5hbWU7Citjb21taXQ7CisKK2RlYWxsb2NhdGUgcHJ1bmVsb2NrX3E7CisKKy0tIFR1cm4g cHJ1bmluZyBvZmYKK3NldCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgdG8gb2ZmOworCitwcmVw YXJlIHBydW5lbG9ja19xIChpbnQpIGFzIHNlbGVjdCAqIGZyb20gcHJ1bmVsb2NrX3Agd2hlcmUg YSA9ICQxOworCistLSBGb3JjZSBnZW5lcmljIHBsYW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3Rz IG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKworLS0gRXhlY3V0ZSBhbmQgY2hlY2sgd2hp Y2ggY2hpbGQgcGFydGl0aW9ucyBhcmUgbG9ja2VkCitiZWdpbjsKK2V4ZWN1dGUgcHJ1bmVsb2Nr X3EoMSk7CisKK3NlbGVjdCBjLnJlbG5hbWUKKyAgZnJvbSBwZ19sb2NrcyBsCisgIGpvaW4gcGdf Y2xhc3MgYyBvbiBjLm9pZCA9IGwucmVsYXRpb24KKyB3aGVyZSBsLnBpZCA9IHBnX2JhY2tlbmRf cGlkKCkKKyAgIGFuZCBjLnJlbG5hbWUgbGlrZSAncHJ1bmVsb2NrX3BfJworIG9yZGVyIGJ5IGMu cmVsbmFtZTsKK2NvbW1pdDsKKworZGVhbGxvY2F0ZSBwcnVuZWxvY2tfcTsKK3Jlc2V0IGVuYWJs ZV9wYXJ0aXRpb25fcHJ1bmluZzsKKworLS0KKy0tIFZlcmlmeSBmaXJzdFJlc3VsdFJlbHMgaGFu ZGxpbmcgd2l0aCBtdWx0aXBsZSBNb2RpZnlUYWJsZSBub2RlcworLS0gKHdyaXRhYmxlIENURXMp IHRhcmdldGluZyBhIHBhcnRpdGlvbmVkIHRhYmxlLiAgV2hlbiBhIHBydW5pbmcKKy0tIHBhcmFt ZXRlciBtYXRjaGVzIG5vIHBhcnRpdGlvbiwgYWxsIHJlc3VsdCByZWxhdGlvbnMgYXJlIHBydW5l ZAorLS0gYW5kIHRoZSBleGVjdXRvciBtdXN0IHN0aWxsIGZpbmQgYSB1c2FibGUgZmlyc3QgcmVz dWx0IHJlbGF0aW9uCistLSBmb3IgZWFjaCBNb2RpZnlUYWJsZSBub2RlLgorLS0KK3ByZXBhcmUg cHJ1bmVsb2NrX210X3EgKGludCwgaW50KSBhcworICB3aXRoIHVwZDEgYXMgKHVwZGF0ZSBwcnVu ZWxvY2tfcCBzZXQgYSA9IGEpLAorICAgICAgIHVwZDIgYXMgKHVwZGF0ZSBwcnVuZWxvY2tfcCBz ZXQgYSA9IGEgd2hlcmUgYSA9ICQyKQorICB1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhIHdo ZXJlIGEgPSAkMTsKKworLS0gRm9yY2UgZ2VuZXJpYyBwbGFuIGNyZWF0aW9uCitleHBsYWluIChj b3N0cyBvZmYpIGV4ZWN1dGUgcHJ1bmVsb2NrX210X3EoMSwgMik7CisKKy0tIEFsbCBwYXJ0aXRp b25zIHBydW5lZDogdmFsdWUgNCBtYXRjaGVzIG5vIHBhcnRpdGlvbiwgc28gZWFjaAorLS0gTW9k aWZ5VGFibGUgbXVzdCBzdGlsbCBpbml0aWFsaXplIGNvcnJlY3RseSB3aXRoIG5vIG1hdGNoaW5n CistLSByZXN1bHQgcmVsYXRpb25zLgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHBydW5l bG9ja19tdF9xKDQsIDUpOworCitkZWFsbG9jYXRlIHBydW5lbG9ja19tdF9xOworZHJvcCB0YWJs ZSBwcnVuZWxvY2tfcDsKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFu Y2FjaGUuc3FsCmluZGV4IDRiMmYxMWRjYzY0Li4xMzliNDY4OGZkNiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wbGFuY2FjaGUuc3FsCkBAIC0yMjMsMyArMjIzLDU0IEBAIHNlbGVjdCBuYW1lLCBnZW5lcmlj X3BsYW5zLCBjdXN0b21fcGxhbnMgZnJvbSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzCiAgIHdoZXJl ICBuYW1lID0gJ3Rlc3RfbW9kZV9wcCc7CiAKIGRyb3AgdGFibGUgdGVzdF9tb2RlOworCistLSBU ZXN0IGludmFsaWRhdGlvbiBvZiBhIGdlbmVyaWMgcGxhbiBkdXJpbmcgcHJ1bmluZy1hd2FyZSBs b2NrIHNldHVwLgorLS0gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiB1c2VzIGEgc3RhYmxlIFNRTCBm dW5jdGlvbiB0aGF0IGNhbGxzIGEgdm9sYXRpbGUKKy0tIHBscGdzcWwgZnVuY3Rpb24uICBUaGF0 IGZ1bmN0aW9uIHBlcmZvcm1zIERETCBvbiBhIHBhcnRpdGlvbiB3aGVuIGEKKy0tIHNlcGFyYXRl ICJzaWduYWwiIHRhYmxlIHNheXMgdG8gZG8gc28uICBUaGUgc2Vjb25kIEVYRUNVVEUgc2hvdWxk CistLSByZXBsYW4gY2xlYW5seSBhZnRlciB0aGUgRERMLgorc2V0IHBsYW5fY2FjaGVfbW9kZSB0 byBmb3JjZV9nZW5lcmljX3BsYW47CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdf cCAoYSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJp bmdfcHJ1bmluZ19wMSBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFs dWVzIGluICgxKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMiBwYXJ0aXRp b24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBp bnRvIGludmFsX2R1cmluZ19wcnVuaW5nX3AgdmFsdWVzICgxKSwgKDIpOworCitjcmVhdGUgdGFi bGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIChjcmVhdGVfaWR4IGJvb2wgbm90IG51bGwp OworaW5zZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHZhbHVlcyAoZmFsc2Up OworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygp IHJldHVybnMgaW50CithcyAkJAorZGVjbGFyZQorCWNyZWF0ZV9pbmRleCBib29sOworYmVnaW4K KwktLSBQZXJmb3JtIERETCBvbiBhIHBhcnRpdGlvbiBpZiBhc2tlZCB0bworCXNlbGVjdCBjcmVh dGVfaWR4IGludG8gY3JlYXRlX2luZGV4IGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFs IGZvciB1cGRhdGU7CisJaWYgY3JlYXRlX2luZGV4ID0gdHJ1ZSB0aGVuCisJCXJhaXNlIG5vdGlj ZSAnY3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxJzsK KwkJY3JlYXRlIGluZGV4IG9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxIChhKTsKKwkJdXBkYXRl IGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IGZhbHNlOworCWVu ZCBpZjsKKwktLSBwcnVuaW5nIHBhcmFtZXRlcgorCXJldHVybiAxOworZW5kOworJCQgbGFuZ3Vh Z2UgcGxwZ3NxbCB2b2xhdGlsZTsKKworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3RhYmxl X3BydW5pbmdfdmFsKCkgcmV0dXJucyBpbnQgYXMgJCQKKwlzZWxlY3QgaW52YWxpZGF0ZV9wbGFu Y2FjaGVfZnVuYygpOworJCQgbGFuZ3VhZ2Ugc3FsIHN0YWJsZTsKKworcHJlcGFyZSBpbnZhbF9k dXJpbmdfcHJ1bmluZ19xIGFzIHNlbGVjdCAqIGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfcCB3 aGVyZSBhID0gc3RhYmxlX3BydW5pbmdfdmFsKCk7CisKKy0tIEJ1aWxkIGEgZ2VuZXJpYyBwbGFu IGFuZCBydW4gcHJ1bmluZyBvbmNlLCBidXQgZG9uJ3Qgc2V0IHRoZSBzaWduYWwKKy0tIGZvciBp bnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgdG8gcGVyZm9ybSB0aGUgRERMLgorZXhwbGFpbiAo dmVyYm9zZSwgY29zdHMgb2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKKy0t IFJldXNlIHRoZSBnZW5lcmljIHBsYW4uICBNYWtlIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMo KSBwZXJmb3JtIERETAorLS0gZHVyaW5nIHRoaXMgZXhlY3V0aW9uLCB3aGljaCBzaG91bGQgZm9y Y2UgcmVwbGFubmluZyB3aXRob3V0IGVycm9ycy4KK3VwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19zaWduYWwgc2V0IGNyZWF0ZV9pZHggPSB0cnVlOworZXhwbGFpbiAodmVyYm9zZSwgY29zdHMg b2ZmKSBleGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKK2Ryb3AgdGFibGUgaW52YWxf ZHVyaW5nX3BydW5pbmdfcCwgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsOworZHJvcCBmdW5j dGlvbiBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jLCBzdGFibGVfcHJ1bmluZ192YWw7CitkZWFs bG9jYXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CisKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsK LS0gCjIuNDcuMwoK --0000000000004efcd7064dd46074 Content-Type: application/octet-stream; name="v9-0001-Refactor-executor-s-initial-partition-pruning-set.patch" Content-Disposition: attachment; filename="v9-0001-Refactor-executor-s-initial-partition-pruning-set.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn5qgjeb4 RnJvbSA2YjJhOTc0MGI0OWE1MjM4NTY5Y2ZlZWIxMWZhNjMyMjI1ZWMyY2ZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MDY6MzggKzA5MDAKU3ViamVjdDogW1BBVENIIHY5 IDEvNV0gUmVmYWN0b3IgZXhlY3V0b3IncyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHNldHVw CgpTaW1wbGlmeSBoYW5kbGluZyBvZiB1bnBydW5lZCByZWxpZHMgYnkgbW92aW5nIHJlc3BvbnNp YmlsaXR5CmZvciByZWNvcmRpbmcgdGhlbSBpbiBFU3RhdGUgaW50byBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKCksCmF2b2lkaW5nIHRoZSBuZWVkIHRvIHBhc3MgYWxsX2xlYWZwYXJ0X3J0aXMg YXMgYW4gb3V0IHBhcmFtZXRlci4KCkFsc28gbW92ZSB0aGUgc2V0dGluZyBvZiBlY3h0X3BhcmFt X2V4ZWNfdmFscyBmcm9tCkV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkgdG8gSW5pdEV4 ZWNQYXJ0aXRpb25QcnVuZUNvbnRleHRzKCksCnRvIGFsbG93IHRoZSBmb3JtZXIgdG8gYmUgY2Fs bGVkIGJlZm9yZSBQQVJBTV9FWEVDIHBhcmFtZXRlcnMgYXJlCnNldCB1cC4gIEEgbGF0ZXIgY29t bWl0IG5lZWRzIHRoaXMgd2hlbiBydW5uaW5nIHBydW5pbmcgc3RhdGUgc2V0dXAKb3V0c2lkZSBv ZiBJbml0UGxhbigpLgoKTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCi0tLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgNzAgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCBkOTZkNGY5OTQ3Yi4uMmEzYWYwMDZmNzcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4NSw4ICsxODUsNyBAQCBz dGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0aW9uKFJlbGF0aW9u IHJlbCwKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3Ms IFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0 aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwog c3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0 YXRlICplc3RhdGUsCi0JCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bywKLQkJCQkJCQkJCQkJCQkgIEJpdG1hcHNldCAqKmFsbF9sZWFmcGFydF9ydGlzKTsKKwkJCQkJ CQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsKIHN0YXRpYyB2b2lkIElu aXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLAogCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNj IHBhcnRkZXNjLApAQCAtMTk3OCw3ICsxOTc3LDcgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3Nf dXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqIGVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9pbmZvcy4gRm9yIGVhY2ggZW50cnksIGl0IGNyZWF0ZXMgYSBQYXJ0aXRpb25Q cnVuZVN0YXRlCiAgKiBhbmQgYWRkcyBpdCB0byBlc19wYXJ0X3BydW5lX3N0YXRlcy4gIEV4ZWNJ bml0UGFydGl0aW9uRXhlY1BydW5pbmcoKSBhY2Nlc3NlcwogICogdGhlc2Ugc3RhdGVzIHRocm91 Z2ggdGhlaXIgY29ycmVzcG9uZGluZyBpbmRleGVzIGluIGVzX3BhcnRfcHJ1bmVfc3RhdGVzIGFu ZAotICogYXNzaWduIGVhY2ggc3RhdGUgdG8gdGhlIHBhcmVudCBub2RlJ3MgUGxhblN0YXRlLCBm cm9tIHdoZXJlIGl0IHdpbGwgYmUgdXNlZAorICogYXNzaWducyBlYWNoIHN0YXRlIHRvIHRoZSBw YXJlbnQgbm9kZSdzIFBsYW5TdGF0ZSwgZnJvbSB3aGVyZSBpdCB3aWxsIGJlIHVzZWQKICAqIGZv ciAiZXhlYyIgcHJ1bmluZy4KICAqCiAgKiBJZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgZXhpc3Qg Zm9yIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJ5LCB0aGlzIGZ1bmN0aW9uCkBAIC0xOTk2LDI5 ICsxOTk1LDMxIEBAIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogewogCUxp c3RDZWxsICAgKmxjOwogCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzID09 IE5VTEwpOwogCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcykKIAl7CiAJ CVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1 bmVJbmZvLCBsYyk7CiAJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJCUJpdG1h cHNldCAgKnZhbGlkc3VicGxhbnMgPSBOVUxMOwotCQlCaXRtYXBzZXQgICphbGxfbGVhZnBhcnRf cnRpcyA9IE5VTEw7CiAJCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKIAog CQkvKiBDcmVhdGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUuICovCi0JCXBydW5l c3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvLAotCQkJ CQkJCQkJCQkgICAmYWxsX2xlYWZwYXJ0X3J0aXMpOworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CiAJCWVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsCiAJCQkJ CQkJCQkJCSAgIHBydW5lc3RhdGUpOwogCiAJCS8qCiAJCSAqIFBlcmZvcm0gaW5pdGlhbCBwcnVu aW5nIHN0ZXBzLCBpZiBhbnksIGFuZCBzYXZlIHRoZSByZXN1bHQKLQkJICogYml0bWFwc2V0IG9y IE5VTEwgYXMgZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KKwkJICogYml0bWFwc2V0 IG9yIE5VTEwgYXMgZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4gIFJUIGluZGV4ZXMK KwkJICogb2Ygc3Vydml2aW5nIHBhcnRpdGlvbnMgd291bGQgYmUgYWRkZWQgdG8gdmFsaWRzdWJw bGFuX3J0aXMuCisJCSAqCisJCSAqIE5vdGUgdGhhdCB3aGVuIGRvX2luaXRpYWxfcHJ1bmUgaXMg ZmFsc2UsCisJCSAqIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoKSB3b3VsZCBoYXZlIGFscmVh ZHkgYWRkZWQgdGhlIFJUIGluZGV4ZXMKKwkJICogb2YgYWxsIGxlYWYgcGFydGl0aW9ucyB0byBl c191bnBydW5lZF9yZWxpZHMgZGlyZWN0bHkuCiAJCSAqLwogCQlpZiAocHJ1bmVzdGF0ZS0+ZG9f aW5pdGlhbF9wcnVuZSkKIAkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJCQkgJnZhbGlkc3VicGxhbl9ydGlzKTsK LQkJZWxzZQotCQkJdmFsaWRzdWJwbGFuX3J0aXMgPSBhbGxfbGVhZnBhcnRfcnRpczsKIAogCQll c3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVycyhlc3RhdGUtPmVzX3Vu cHJ1bmVkX3JlbGlkcywKIAkJCQkJCQkJCQkJCQkgdmFsaWRzdWJwbGFuX3J0aXMpOwpAQCAtMjEz NiwxNCArMjEzNywxMiBAQCBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAq cGxhbnN0YXRlLAogICogcGFyZW50IHBsYW4gbm9kZSdzIFBsYW5TdGF0ZS4KICAqCiAgKiBJZiBp bml0aWFsIHBydW5pbmcgc3RlcHMgYXJlIHRvIGJlIHNraXBwZWQgKGUuZy4sIGR1cmluZyBFWFBM QUlOCi0gKiAoR0VORVJJQ19QTEFOKSksICphbGxfbGVhZnBhcnRfcnRpcyB3aWxsIGJlIHBvcHVs YXRlZCB3aXRoIHRoZSBSVCBpbmRleGVzIG9mCi0gKiBhbGwgbGVhZiBwYXJ0aXRpb25zIHdob3Nl IHNjYW5uaW5nIHN1Ym5vZGUgaXMgaW5jbHVkZWQgaW4gdGhlIHBhcmVudCBwbGFuCi0gKiBub2Rl J3MgbGlzdCBvZiBjaGlsZCBwbGFucy4gVGhlIGNhbGxlciBtdXN0IGFkZCB0aGVzZSBSVCBpbmRl eGVzIHRvCi0gKiBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcy4KKyAqIChHRU5FUklDX1BMQU4p KSwgdGhlIFJUIGluZGV4ZXMgb2YgYWxsIGxlYWYgcGFydGl0aW9ucyB3aG9zZSBzY2FubmluZwor ICogc3Vibm9kZSBpcyBpbmNsdWRlZCBpbiB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGxpc3Qgb2Yg Y2hpbGQgcGxhbnMgYXJlCisgKiBhZGRlZCB0byBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcy4K ICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVT dGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCi0JCQkJ CQkgIEJpdG1hcHNldCAqKmFsbF9sZWFmcGFydF9ydGlzKQorQ3JlYXRlUGFydGl0aW9uUHJ1bmVT dGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiB7CiAJ UGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlpbnQJCQluX3BhcnRfaGllcmFyY2hp ZXM7CkBAIC0yMzc3LDggKzIzNzYsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0 ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKIAkJCQkJCQkJCQkJCQkg ICBwaW5mby0+ZXhlY3BhcmFtaWRzKTsKIAogCQkJLyoKLQkJCSAqIFJldHVybiBhbGwgbGVhZiBw YXJ0aXRpb24gaW5kZXhlcyBpZiB3ZSdyZSBza2lwcGluZyBwcnVuaW5nIGluCi0JCQkgKiB0aGUg RVhQTEFJTiAoR0VORVJJQ19QTEFOKSBjYXNlLgorCQkJICogQWRkIGFsbCBsZWFmIHBhcnRpdGlv biBpbmRleGVzIHRvIGVzX3VucHJ1bmVkX3JlbGlkcyBpZiB3ZSdyZQorCQkJICogc2tpcHBpbmcg cHJ1bmluZyBpbiB0aGUgRVhQTEFJTiAoR0VORVJJQ19QTEFOKSBjYXNlLgogCQkJICovCiAJCQlp ZiAocGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcyAmJiAhcHJ1bmVzdGF0ZS0+ZG9faW5pdGlh bF9wcnVuZSkKIAkJCXsKQEAgLTIzOTAsOSArMjM4OSwyOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKIAkJ CQkJSW5kZXgJCXJ0aW5kZXggPSBwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcGFydF9pbmRleF07 CiAKIAkJCQkJaWYgKHJ0aW5kZXgpCi0JCQkJCQkqYWxsX2xlYWZwYXJ0X3J0aXMgPSBibXNfYWRk X21lbWJlcigqYWxsX2xlYWZwYXJ0X3J0aXMsCi0JCQkJCQkJCQkJCQkJCQlydGluZGV4KTsKKwkJ CQkJCWVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0KKwkJCQkJCQlibXNfYWRkX21lbWJlcihl c3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywgcnRpbmRleCk7CisJCQkJfQorCQkJfQorCQkJZWxz ZSBpZiAocGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcyA9PSBOSUwpCisJCQl7CisJCQkJLyoK KwkJCQkgKiBBbGwgcGFydGl0aW9ucyBiZXR0ZXIgYmUgcHJlc2VudCBpbiBlc191bnBydW5lZF9y ZWxpZHMgd2hlbgorCQkJCSAqIG5vbmUgYXJlIGluaXRpYWxseSBwcnVuYWJsZS4KKwkJCQkgKi8K KyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJCQkJaW50CQkJcGFydF9pbmRleCA9IC0xOwor CisJCQkJd2hpbGUgKChwYXJ0X2luZGV4ID0gYm1zX25leHRfbWVtYmVyKHBwcnVuZS0+cHJlc2Vu dF9wYXJ0cywKKwkJCQkJCQkJCQkJCQkgcGFydF9pbmRleCkpID49IDApCisJCQkJeworCQkJCQlJ bmRleAkJcnRpbmRleCA9IHBwcnVuZS0+bGVhZnBhcnRfcnRpX21hcFtwYXJ0X2luZGV4XTsKKwor CQkJCQlpZiAocnRpbmRleCkKKwkJCQkJCUFzc2VydChibXNfaXNfbWVtYmVyKHJ0aW5kZXgsIGVz dGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSk7CiAJCQkJfQorI2VuZGlmCiAJCQl9CiAKIAkJCWor KzsKQEAgLTI0OTAsOSArMjUwOCwxMCBAQCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRp dGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKICAqCQlJbml0aWFsaXplIGV4ZWMgcHJ1bmluZyBj b250ZXh0cyBkZWZlcnJlZCBieSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkKICAqCiAgKiBU aGlzIGZ1bmN0aW9uIGZpbmFsaXplcyBleGVjIHBydW5pbmcgc2V0dXAgZm9yIGEgUGFydGl0aW9u UHJ1bmVTdGF0ZSBieQotICogaW5pdGlhbGl6aW5nIGNvbnRleHRzIGZvciBwcnVuaW5nIHN0ZXBz IHRoYXQgcmVxdWlyZSB0aGUgcGFyZW50IHBsYW4ncwotICogUGxhblN0YXRlLiBJdCBpdGVyYXRl cyBvdmVyIFBhcnRpdGlvblBydW5pbmdEYXRhIGVudHJpZXMgYW5kIHNldHMgdXAgdGhlCi0gKiBu ZWNlc3NhcnkgZXhlY3V0aW9uIGNvbnRleHRzIGZvciBwcnVuaW5nIGR1cmluZyBxdWVyeSBleGVj dXRpb24uCisgKiBpbml0aWFsaXppbmcgY29udGV4dHMgZm9yIHBydW5pbmcgc3RlcHMgdGhhdCBy ZXF1aXJlIFBBUkFNX0VYRUMgcGFyYW1ldGVycworICogYW5kIHRoZSBwYXJlbnQgcGxhbidzIFBs YW5TdGF0ZS4gSXQgaXRlcmF0ZXMgb3ZlciBQYXJ0aXRpb25QcnVuaW5nRGF0YQorICogZW50cmll cyBhbmQgc2V0cyB1cCB0aGUgbmVjZXNzYXJ5IGV4ZWN1dGlvbiBjb250ZXh0cyBmb3IgcHJ1bmlu ZyBkdXJpbmcKKyAqIHF1ZXJ5IGV4ZWN1dGlvbi4KICAqCiAgKiBBbHNvIGZpeCB0aGUgbWFwcGlu ZyBvZiBwYXJ0aXRpb24gaW5kZXhlcyB0byBzdWJwbGFuIGluZGV4ZXMgY29udGFpbmVkIGluCiAg KiBwcnVuZXN0YXRlIGJ5IGNvbnNpZGVyaW5nIHRoZSBuZXcgbGlzdCBvZiBzdWJwbGFucyB0aGF0 IHN1cnZpdmVkIGluaXRpYWwKQEAgLTI1MjAsOSArMjUzOSwxNiBAQCBJbml0RXhlY1BhcnRpdGlv blBydW5lQ29udGV4dHMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAlib29sCQlm aXhfc3VicGxhbl9tYXAgPSBmYWxzZTsKIAogCUFzc2VydChwcnVuZXN0YXRlLT5kb19leGVjX3By dW5lKTsKKwlBc3NlcnQocHJ1bmVzdGF0ZS0+ZWNvbnRleHQpOwogCUFzc2VydChwYXJlbnRfcGxh biAhPSBOVUxMKTsKIAllc3RhdGUgPSBwYXJlbnRfcGxhbi0+c3RhdGU7CiAKKwkvKgorCSAqIFRo ZXNlIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUgd2hlbiBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVT dGF0ZSgpIGlzCisJICogY2FsbGVkLgorCSAqLworCXBydW5lc3RhdGUtPmVjb250ZXh0LT5lY3h0 X3BhcmFtX2V4ZWNfdmFscyA9IGVzdGF0ZS0+ZXNfcGFyYW1fZXhlY192YWxzOworCiAJLyoKIAkg KiBObyBuZWVkIHRvIGZpeCBzdWJwbGFucyBtYXBzIGlmIGluaXRpYWwgcHJ1bmluZyBkaWRuJ3Qg ZWxpbWluYXRlIGFueQogCSAqIHN1YnBsYW5zLgotLSAKMi40Ny4zCgo= --0000000000004efcd7064dd46074 Content-Type: application/octet-stream; name="v9-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Disposition: attachment; filename="v9-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn5qgje33 RnJvbSAzMjI2N2I1OGJkZjlkYjU2YTcxNmFiZGU5ZmNjM2U0ZThmYWM2ZmVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MDc6MTggKzA5MDAKU3ViamVjdDogW1BBVENIIHY5 IDIvNV0gSW50cm9kdWNlIEV4ZWN1dG9yUHJlcCBhbmQgcmVmYWN0b3IgZXhlY3V0b3Igc3RhcnR1 cAoKRmFjdG9yIHBlcm1pc3Npb24gY2hlY2tzLCByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwg YW5kIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgb3V0IG9mIEluaXRQbGFuKCkgaW50byBhIG5l dyBFeGVjdXRvclByZXAoKQpoZWxwZXIuICBFeGVjdXRvclN0YXJ0KCkgY2FsbHMgaXQgdG8gYnVp bGQgdGhlIEVTdGF0ZSwga2VlcGluZwpiZWhhdmlvciB1bmNoYW5nZWQuCgpJZiBRdWVyeURlc2Mt PmVzdGF0ZSBpcyBhbHJlYWR5IHNldCB3aGVuIEV4ZWN1dG9yU3RhcnQoKSBpcyBjYWxsZWQsCnRo ZSBleGlzdGluZyBFU3RhdGUgaXMgcmV1c2VkIGFuZCBFeGVjdXRvclByZXAoKSBpcyBza2lwcGVk LiAgVGhpcwphbGxvd3MgYSBsYXRlciBjb21taXQgdG8gc3VwcGx5IGEgcHJlLWJ1aWx0IEVTdGF0 ZSBmcm9tIG91dHNpZGUKdGhlIGV4ZWN1dG9yLgoKQWRkIHNjYWZmb2xkaW5nIGZvciBjYXJyeWlu ZyBhbiBvcHRpb25hbCBwcmVwIEVTdGF0ZSB0aHJvdWdoCkNyZWF0ZVF1ZXJ5RGVzYywgUG9ydGFs RGVmaW5lUXVlcnksIGFuZCBTUEkuICBBbGwgY2FsbGVycyBjdXJyZW50bHkKcGFzcyBOVUxML05J TDsgdGhlIG5leHQgY29tbWl0IHBvcHVsYXRlcyB0aGVzZSB0byBlbmFibGUKcHJ1bmluZy1hd2Fy ZSBsb2NraW5nIGluIGNhY2hlZCBwbGFucy4KCkluIGFzc2VydCBidWlsZHMsIHZlcmlmeSB0aGF0 IHRoZSBleHBlY3RlZCByZWxhdGlvbiBsb2NrcyBhcmUgaGVsZAp3aGVuIGVudGVyaW5nIEV4ZWN1 dG9yU3RhcnQoKS4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmll dy5jICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgIHwgICA5ICstCiBzcmMv YmFja2VuZC9leGVjdXRvci9SRUFETUUgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYyAgICAgfCAxNTcgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgfCAgIDMgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2Z1bmN0aW9ucy5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYyAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgfCAgMjQgKysr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgIHwgICAyICsKIHNyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjZGVzYy5oICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3Iu aCAgICAgfCAgMjYgKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgIHwg ICAyICsKIDE5IGZpbGVzIGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGZhZjYyZDk1OWI0Li5iOWJkNWJhNzA3OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKQEAgLTEwMTEsNyArMTAxMSw3IEBAIEJlZ2luQ29weVRvKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh biwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks CiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVM TCwgMCk7CisJCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDAsIE5VTEwpOwogCiAJCS8qCiAJ CSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24u CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYwppbmRleCAyNzBlOWJmMzExMC4uYjRhOTgwODk1NWEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzM2LDcgKzMzNiw3IEBAIEV4ZWNDcmVhdGVUYWJs ZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCS8qIENy ZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZl ciAqLwogCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJj ZXRleHQsCiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0J CQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKKwkJCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsIDAsIE5VTEwpOwogCiAJCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KIAkJRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IEdldEludG9SZWxFRmxhZ3MoaW50bykpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGU0Yjcw MTY2YjBlLi4yNGMwYzIzNWZkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzcyLDcgKzM3 Miw3IEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JP cHRpb25zLAogCX0KIAogCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQg Ki8KLQlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywg cXVlcnlFbnYsCisJRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3Ry aW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAogCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVy cyA/ICZidWZ1c2FnZSA6IE5VTEwpLAogCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJz IDogTlVMTCk7CiB9CkBAIC00OTQsNyArNDk0LDggQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAq dXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0byBj YWxsIGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxhbihQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEVTdGF0ZSAqcHJlcF9lc3RhdGUsCisJCQkgICBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlT dHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZl clVzYWdlICpidWZ1c2FnZSwKQEAgLTU1Miw3ICs1NTMsOCBAQCBFeHBsYWluT25lUGxhbihQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KIAlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVl cnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKKwkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVu diwgaW5zdHJ1bWVudF9vcHRpb24sCisJCQkJCQkJCXByZXBfZXN0YXRlKTsKIAogCS8qIFNlbGVj dCBleGVjdXRpb24gb3B0aW9ucyAqLwogCWlmIChlcy0+YW5hbHl6ZSkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKaW5kZXggYjk4ODAxZDA4ZjIuLjkzOWU3YTYzMmYwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0 IGNoYXIgKnNxbCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVy eURlc2Moc3RtdCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3Qo KSwgTlVMTCwKLQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKKwkJCQkJCQkJCQlkZXN0 LCBOVUxMLCBOVUxMLCAwLCBOVUxMKTsKIAogCQkJCUV4ZWN1dG9yU3RhcnQocWRlc2MsIDApOwog CQkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9tYXR2aWV3LmMKaW5kZXggODFhNTVhMzNlZjIuLjJjZGZkY2Y5ODRiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCkBAIC00MzksNyArNDM5LDcgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERl c3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywg cmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwogCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25h cHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAotCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsK KwkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCwgTlVMTCk7CiAKIAkvKiBjYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCiAJRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4IDAxZWZhYzMz MTllLi4xZTg4MGE2ZDdjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwpAQCAtMTE4LDYg KzExOCw3IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVjbGFyZUN1 cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAJCQkJCSAgcXVlcnlTdHJpbmcsCiAJ CQkJCSAgQ01EVEFHX1NFTEVDVCwJLyogY3Vyc29yJ3MgcXVlcnkgaXMgYWx3YXlzIGEgU0VMRUNU ICovCiAJCQkJCSAgbGlzdF9tYWtlMShwbGFuKSwKKwkJCQkJICBOSUwsCiAJCQkJCSAgTlVMTCk7 CiAKIAkvKi0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA4NzZhYWQyMTAwYS4u YzdiYWIxNGI2MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTIwNyw2ICsyMDcsNyBAQCBF eGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJ CQkJICBlbnRyeS0+cGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBwbGFuX2xpc3QsCisJ CQkJCSAgTklMLAogCQkJCQkgIGNwbGFuKTsKIAogCS8qCkBAIC01NzcsNyArNTc4LDkgQEAgRXhw bGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8s IEV4cGxhaW5TdGF0ZSAqZXMsCiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBs YW4gKmNwbGFuOwogCUxpc3QJICAgKnBsYW5fbGlzdDsKKwlMaXN0CSAgICpwcmVwX2VzdGF0ZXM7 CiAJTGlzdENlbGwgICAqcDsKKwlMaXN0Q2VsbCAgICpwcmVwX2xjOwogCVBhcmFtTGlzdEluZm8g cGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwogCWluc3RyX3RpbWUJ cGxhbnN0YXJ0OwpAQCAtNjUyLDE0ICs2NTUsMTggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ fQogCiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKKwlwcmVwX2VzdGF0ZXMgPSBOSUw7 CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KKwlwcmVwX2xjID0gbGlzdF9oZWFkKHByZXBf ZXN0YXRlcyk7CiAJZm9yZWFjaChwLCBwbGFuX2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0 bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgcCk7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUg PSBuZXh0X3ByZXBfZXN0YXRlKHByZXBfZXN0YXRlcywgJnByZXBfbGMpOwogCiAJCWlmIChwc3Rt dC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwg aW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAorCQkJ RXhwbGFpbk9uZVBsYW4ocHN0bXQsIHByZXBfZXN0YXRlLAorCQkJCQkJICAgaW50bywgZXMsIHF1 ZXJ5X3N0cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAogCQkJCQkJICAgJnBsYW5k dXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+ bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5k ZXggNTRmNDc4MmYzMWIuLmQ3NDljZWI2Njg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC0yOTEsMTEg KzI5MSwxOCBAQCBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogCiBUaGlzIGlzIGEgc2tl dGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCisgICAgRXhl Y3V0b3JQcmVwCisJCU1heSBiZSBydW4gYmVmb3JlIEV4ZWN1dG9yU3RhcnQgKGUuZy4sIGZvciBw bGFuIHZhbGlkYXRpb24pLCBvcgorCQlpbXBsaWNpdGx5IGZyb20gRXhlY3V0b3JTdGFydCBpZiBu b3QgZG9uZSBlYXJsaWVyLiAgQ3JlYXRlcyBFU3RhdGUsCisJCXBlcmZvcm1zIHJhbmdlIHRhYmxl IGluaXRpYWxpemF0aW9uLCBwZXJtaXNzaW9uIGNoZWNrcywgYW5kIGluaXRpYWwKKwkJcGFydGl0 aW9uIHBydW5pbmcuICBSZXR1cm5zIHRoZSBFU3RhdGUgdGhhdCBFeGVjdXRvclN0YXJ0KCkgc2hv dWxkCisJCXJldXNlLgorCiAJQ3JlYXRlUXVlcnlEZXNjCiAKIAlFeGVjdXRvclN0YXJ0Ci0JCUNy ZWF0ZUV4ZWN1dG9yU3RhdGUKLQkJCWNyZWF0ZXMgcGVyLXF1ZXJ5IGNvbnRleHQKKwkJRXhlY3V0 b3JQcmVwIChpZiBub3QgYWxyZWFkeSBkb25lLCBpbmRpY2F0ZWQgYnkgTlVMTCBRdWVyeURlc2Mu ZXN0YXRlKQorCQkJY3JlYXRlcyBFU3RhdGUgYW5kIHBlci1xdWVyeSBjb250ZXh0CiAJCXN3aXRj aCB0byBwZXItcXVlcnkgY29udGV4dCB0byBydW4gRXhlY0luaXROb2RlCiAJCUFmdGVyVHJpZ2dl ckJlZ2luUXVlcnkKIAkJRXhlY0luaXROb2RlIC0tLSByZWN1cnNpdmVseSBzY2FucyBwbGFuIHRy ZWUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDU4Yjg0OTU1YzJiLi4yODJjOTg3MWRlMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAicGFy c2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmV3 cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0 aWxzL2JhY2tlbmRfc3RhdHVzLmgiCkBAIC0xNDcsNyArMTQ4LDYgQEAgc3RhbmRhcmRfRXhlY3V0 b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCS8qIHNhbml0eSBj aGVja3M6IHF1ZXJ5RGVzYyBtdXN0IG5vdCBiZSBzdGFydGVkIGFscmVhZHkgKi8KIAlBc3NlcnQo cXVlcnlEZXNjICE9IE5VTEwpOwotCUFzc2VydChxdWVyeURlc2MtPmVzdGF0ZSA9PSBOVUxMKTsK IAogCS8qIGNhbGxlciBtdXN0IGVuc3VyZSB0aGUgcXVlcnkncyBzbmFwc2hvdCBpcyBhY3RpdmUg Ki8KIAlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBxdWVyeURlc2MtPnNuYXBzaG90KTsK QEAgLTE3Myw5ICsxNzMsNzAgQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCS8qCiAJICogQnVpbGQgRVN0YXRlLCBzd2l0Y2ggaW50 byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQgZm9yIHN0YXJ0dXAuCi0JICovCi0JZXN0YXRlID0g Q3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwotCXF1ZXJ5RGVzYy0+ZXN0YXRlID0gZXN0YXRlOworCSAq CisJICogSWYgRXhlY3V0b3JQcmVwKCkgcmFuIGVhcmxpZXIgKGUuZy4sIHRvIGRvIGluaXRpYWwg cHJ1bmluZyBkdXJpbmcgcGxhbgorCSAqIHZhbGlkaXR5IGNoZWNraW5nKSwgcmV1c2UgaXRzIEVT dGF0ZSB0byBhdm9pZCByZWRvaW5nIHJhbmdlIHRhYmxlIHNldHVwCisJICogYW5kIHBydW5pbmcu IE90aGVyd2lzZSwgY3JlYXRlIGEgZnJlc2ggRVN0YXRlIGFzIHVzdWFsLgorCSAqCisJICogSW4g YXNzZXJ0IGJ1aWxkcywgdmVyaWZ5IHRoYXQgdGhlIGV4cGVjdGVkIGxvY2tzIGFyZSBoZWxkLiAg V2hlbgorCSAqIG5vIHByZXAgRVN0YXRlIHdhcyBwcm92aWRlZCwgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKSBzaG91bGQgaGF2ZQorCSAqIGxvY2tlZCBldmVyeSByZWxhdGlvbiBpbiB0aGUgcGxhbi4g IFdoZW4gb25lIHdhcyBwcm92aWRlZCwKKwkgKiBwcnVuaW5nLWF3YXJlIGxvY2tpbmcgc2hvdWxk IGhhdmUgbG9ja2VkIGF0IGxlYXN0IHRoZSB1bnBydW5lZAorCSAqIHJlbGF0aW9ucy4gIEJvdGgg Y2hlY2tzIGFyZSBza2lwcGVkIGluIHBhcmFsbGVsIHdvcmtlcnMsIHdoaWNoCisJICogYWNxdWly ZSByZWxhdGlvbiBsb2NrcyBsYXppbHkgaW4gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpLgor CSAqLworCWlmIChxdWVyeURlc2MtPmVzdGF0ZSA9PSBOVUxMKQorCXsKKyNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCisJCWlmICghSXNQYXJhbGxlbFdvcmtlcigpKQorCQl7CisJCQlMaXN0Q2Vs bCAgICpsYzsKKworCQkJZm9yZWFjaChsYywgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cnRhYmxl KQorCQkJeworCQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGxmaXJzdF9ub2RlKFJhbmdlVGJsRW50 cnksIGxjKTsKKworCQkJCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CisJCQkJ CShydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIHJ0ZS0+cmVsaWQgIT0gSW52YWxpZE9p ZCkpCisJCQkJCUFzc2VydChDaGVja1JlbGF0aW9uT2lkTG9ja2VkQnlNZShydGUtPnJlbGlkLAor CQkJCQkJCQkJCQkJCSAgcnRlLT5yZWxsb2NrbW9kZSwKKwkJCQkJCQkJCQkJCQkgIHRydWUpKTsK KwkJCX0KKwkJfQorI2VuZGlmCisJCXF1ZXJ5RGVzYy0+ZXN0YXRlID0gRXhlY3V0b3JQcmVwKHF1 ZXJ5RGVzYy0+cGxhbm5lZHN0bXQsCisJCQkJCQkJCQkJIHF1ZXJ5RGVzYy0+cGFyYW1zLAorCQkJ CQkJCQkJCSBDdXJyZW50UmVzb3VyY2VPd25lciwKKwkJCQkJCQkJCQkgZWZsYWdzKTsKKwl9Cisj aWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCWVsc2UKKwl7CisJCS8qCisJCSAqIEEgcHJlcCBF U3RhdGUgd2FzIHByb3ZpZGVkLCBtZWFuaW5nIHBydW5pbmctYXdhcmUgbG9ja2luZworCQkgKiBz aG91bGQgaGF2ZSBsb2NrZWQgYXQgbGVhc3QgdGhlIHVucHJ1bmVkIHJlbGF0aW9ucy4KKwkJICov CisJCWlmICghSXNQYXJhbGxlbFdvcmtlcigpKQorCQl7CisJCQlpbnQJCXJ0aW5kZXggPSAtMTsK KworCQkJd2hpbGUgKChydGluZGV4ID0gYm1zX25leHRfbWVtYmVyKHF1ZXJ5RGVzYy0+ZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMsCisJCQkJCQkJCQkJCSAgcnRpbmRleCkpID49IDApCisJCQl7 CisJCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChydGluZGV4LCBxdWVyeURl c2MtPmVzdGF0ZSk7CisKKwkJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8 fAorCQkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJgorCQkJCQkJcnRlLT5y ZWxpZCAhPSBJbnZhbGlkT2lkKSk7CisJCQkJQXNzZXJ0KENoZWNrUmVsYXRpb25PaWRMb2NrZWRC eU1lKHJ0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkgIHJ0ZS0+cmVsbG9ja21vZGUsIHRydWUpKTsK KwkJCX0KKwkJfQorCX0KKyNlbmRpZgorCisJZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CisJ QXNzZXJ0KGVzdGF0ZSk7CiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVz dGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIApAQCAtMjY1LDYgKzMyNiw2NyBAQCBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIAorLyoKKyAqIEV4ZWN1dG9yUHJlcDogcHJlcGFy ZSBleGVjdXRvciBzdGF0ZSBmb3IgYSBQbGFubmVkU3RtdCBvdXRzaWRlIEV4ZWN1dG9yU3RhcnQu CisgKgorICogUGVyZm9ybXMgcmFuZ2UgdGFibGUgaW5pdGlhbGl6YXRpb24sIHBlcm1pc3Npb24g Y2hlY2tzLCBhbmQgaW5pdGlhbAorICogcGFydGl0aW9uIHBydW5pbmcgaWYgcGFydFBydW5lSW5m b3MgYXJlIHByZXNlbnQuCisgKgorICogUmV0dXJucyBhbiBFU3RhdGUgdGhhdCB0aGUgY2FsbGVy IG11c3QgZWl0aGVyIHBhc3MgdG8gRXhlY3V0b3JTdGFydCgpCisgKiBmb3IgcmV1c2Ugb3IgZnJl ZSB2aWEgRnJlZUV4ZWN1dG9yU3RhdGUoKSBpZiBleGVjdXRpb24gd2lsbCBub3QgcHJvY2VlZC4K KyAqLworRVN0YXRlICoKK0V4ZWN1dG9yUHJlcChQbGFubmVkU3RtdCAqcHN0bXQsIFBhcmFtTGlz dEluZm8gcGFyYW1zLCBSZXNvdXJjZU93bmVyIG93bmVyLAorCQkJIGludCBlZmxhZ3MpCit7CisJ UmVzb3VyY2VPd25lciBvbGRvd25lcjsKKwlFU3RhdGUgKmVzdGF0ZTsKKworCWlmIChwc3RtdC0+ Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCisJCXJldHVybiBOVUxMOworCisJLyogQ2FsbGVy IG11c3QgaGF2ZSBlc3RhYmxpc2hlZCBhbiBhY3RpdmUgc25hcHNob3QuICovCisJQXNzZXJ0KEFj dGl2ZVNuYXBzaG90U2V0KCkpOworCisJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwor CWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwc3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVf aW5mb3MgPSBwc3RtdC0+cGFydFBydW5lSW5mb3M7CisJZXN0YXRlLT5lc19wYXJhbV9saXN0X2lu Zm8gPSBwYXJhbXM7CisJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gZWZsYWdzOworCisJLyoKKwkg KiBEbyBwZXJtaXNzaW9ucyBjaGVja3MuCisJICovCisJRXhlY0NoZWNrUGVybWlzc2lvbnMocHN0 bXQtPnJ0YWJsZSwgcHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CisKKwkvKgorCSAqIEluaXRpYWxp emUgcmFuZ2UgdGFibGUuCisJICovCisJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcHN0bXQt PnJ0YWJsZSwgcHN0bXQtPnBlcm1JbmZvcywKKwkJCQkJICAgYm1zX2NvcHkocHN0bXQtPnVucHJ1 bmFibGVSZWxpZHMpKTsKKworCS8qCisJICogRW5zdXJlIGxvY2tzIHRha2VuIGR1cmluZyBpbml0 aWFsIHBydW5pbmcgYXJlIHRyYWNrZWQgdW5kZXIgdGhlIGdpdmVuCisJICogUmVzb3VyY2VPd25l ciAoZS5nLiwgb25lIGFzc29jaWF0ZWQgd2l0aCBDYWNoZWRQbGFuIHZhbGlkYXRpb24pLgorCSAq LworCW9sZG93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3du ZXIgPSBvd25lcjsKKworCS8qCisJICogU2V0IHVwIFBhcnRpdGlvblBydW5lU3RhdGUgc3RydWN0 dXJlcyBhbmQgcGVyZm9ybSBpbml0aWFsIHBhcnRpdGlvbgorCSAqIHBydW5pbmcgdG8gY29tcHV0 ZSB0aGUgc3Vic2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgd2lsbCBiZQorCSAqIGV4ZWN1dGVk LiAgVGhlIHJlc3VsdHMsIHdoaWNoIGFyZSBiaXRtYXBzZXRzIG9mIHNlbGVjdGVkIGNoaWxkCisJ ICogaW5kZXhlcywgYXJlIHNhdmVkIGluIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cywgcGFyYWxsZWwg dG8KKwkgKiBlc19wYXJ0X3BydW5lX2luZm9zLiAgUlQgaW5kZXhlcyBvZiBzdXJ2aXZpbmcgcGFy dGl0aW9ucyBhcmUKKwkgKiBhZGRlZCB0byBlc191bnBydW5lZF9yZWxpZHMuCisJICovCisJRXhl Y0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xk b3duZXI7CisKKwlyZXR1cm4gZXN0YXRlOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY3V0b3JS dW4KICAqCkBAIC04NDAsMzcgKzk2MiwxNCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlv bjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10Owog CVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7Ci0JTGlzdAkgICAqcmFuZ2VU YWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVyeURl c2MtPmVzdGF0ZTsKIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7CiAJVHVwbGVEZXNjCXR1cFR5cGU7 CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwogCi0JLyoKLQkgKiBEbyBwZXJtaXNzaW9ucyBj aGVja3MKLQkgKi8KLQlFeGVjQ2hlY2tQZXJtaXNzaW9ucyhyYW5nZVRhYmxlLCBwbGFubmVkc3Rt dC0+cGVybUluZm9zLCB0cnVlKTsKLQotCS8qCi0JICogaW5pdGlhbGl6ZSB0aGUgbm9kZSdzIGV4 ZWN1dGlvbiBzdGF0ZQotCSAqLwotCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFi bGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsCi0JCQkJCSAgIGJtc19jb3B5KHBsYW5uZWRzdG10 LT51bnBydW5hYmxlUmVsaWRzKSk7Ci0KLQllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5l ZHN0bXQ7Ci0JZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQ cnVuZUluZm9zOwotCi0JLyoKLQkgKiBQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcg dG8gaWRlbnRpZnkgd2hpY2ggY2hpbGQgc3VicGxhbnMsCi0JICogY29ycmVzcG9uZGluZyB0byB0 aGUgY2hpbGRyZW4gb2YgcGxhbiBub2RlcyB0aGF0IGNvbnRhaW4KLQkgKiBQYXJ0aXRpb25QcnVu ZUluZm8gc3VjaCBhcyBBcHBlbmQsIHdpbGwgbm90IGJlIGV4ZWN1dGVkLiBUaGUgcmVzdWx0cywK LQkgKiB3aGljaCBhcmUgYml0bWFwc2V0cyBvZiBpbmRleGVzIG9mIHRoZSBjaGlsZCBzdWJwbGFu cyB0aGF0IHdpbGwgYmUKLQkgKiBleGVjdXRlZCwgYXJlIHNhdmVkIGluIGVzX3BhcnRfcHJ1bmVf cmVzdWx0cy4gIFRoZXNlIHJlc3VsdHMgY29ycmVzcG9uZAotCSAqIHRvIGVhY2ggUGFydGl0aW9u UHJ1bmVJbmZvIGVudHJ5LCBhbmQgdGhlIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cyBsaXN0IGlzCi0J ICogcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZvcy4KLQkgKi8KLQlFeGVjRG9Jbml0aWFs UHJ1bmluZyhlc3RhdGUpOworCS8qIEV4ZWN1dG9yUHJlcCgpIG11c3QgaGF2ZSBiZWVuIGRvbmUu ICovCisJQXNzZXJ0KHF1ZXJ5RGVzYy0+ZXN0YXRlKTsKIAogCS8qCiAJICogTmV4dCwgYnVpbGQg dGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGFjODRhZjI5NGM5Li4wMjQ3ODBkMzUx NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEzMDAsNyArMTMwMCw4IEBA IEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVj ZWl2ZXIsCiAJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKIAkJCQkJCSAgIHF1ZXJ5U3Ry aW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAotCQkJ CQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJCQkJ CQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJCQkJ ICAgTlVMTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDg4MTA5MzQ4 ODE3Li45NTJhNzg0YzkyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTEzNjksNyAr MTM2OSw4IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9u Q2FjaGVQdHIgZmNhY2hlKQogCQkJCQkJCSBkZXN0LAogCQkJCQkJCSBmY2FjaGUtPnBhcmFtTEks CiAJCQkJCQkJIGVzLT5xZCA/IGVzLT5xZC0+cXVlcnlFbnYgOiBOVUxMLAotCQkJCQkJCSAwKTsK KwkJCQkJCQkgMCwKKwkJCQkJCQkgTlVMTCk7CiAKIAkvKiBVdGlsaXR5IGNvbW1hbmRzIGRvbid0 IG5lZWQgRXhlY3V0b3IuICovCiAJaWYgKGVzLT5xZC0+b3BlcmF0aW9uICE9IENNRF9VVElMSVRZ KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9zcGkuYwppbmRleCA1MmYzYjExMzAxYy4uMzgwYmJjNDRlOTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCkBAIC0xNjg2LDYgKzE2ODYsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3Qg Y2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJ ICBwbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKKwkJCQkJICBOSUws CiAJCQkJCSAgY3BsYW4pOwogCiAJLyoKQEAgLTI1MDAsNiArMjUwMSw4IEBAIF9TUElfZXhlY3V0 ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMs CiAJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBs Zmlyc3QobGMxKTsKIAkJTGlzdAkgICAqc3RtdF9saXN0OwogCQlMaXN0Q2VsbCAgICpsYzI7CisJ CUxpc3QJICAgKnByZXBfZXN0YXRlczsKKwkJTGlzdENlbGwgICAqcHJlcF9sYzsKIAogCQlzcGlj YWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAtMjU3OCw2 ICsyNTgxLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElF eGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVu dC0+cXVlcnlFbnYpOwogCiAJCXN0bXRfbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CisJCXByZXBf ZXN0YXRlcyA9IE5JTDsKIAogCQkvKgogCQkgKiBJZiB3ZSB3ZXJlbid0IGdpdmVuIGEgc3BlY2lm aWMgc25hcHNob3QgdG8gdXNlLCBhbmQgdGhlIHN0YXRlbWVudApAQCAtMjYxNSw5ICsyNjE5LDEx IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9w dGlvbnMgKm9wdGlvbnMsCiAJCQl9CiAJCX0KIAorCQlwcmVwX2xjID0gbGlzdF9oZWFkKHByZXBf ZXN0YXRlcyk7CiAJCWZvcmVhY2gobGMyLCBzdG10X2xpc3QpCiAJCXsKIAkJCVBsYW5uZWRTdG10 ICpzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMik7CisJCQlFU3RhdGUgKnByZXBf ZXN0YXRlID0gbmV4dF9wcmVwX2VzdGF0ZShwcmVwX2VzdGF0ZXMsICZwcmVwX2xjKTsKIAkJCWJv b2wJCWNhblNldFRhZyA9IHN0bXQtPmNhblNldFRhZzsKIAkJCURlc3RSZWNlaXZlciAqZGVzdDsK IApAQCAtMjY5NSw3ICsyNzAxLDggQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFu LCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkJCQlkZXN0LAogCQkJ CQkJCQkJCW9wdGlvbnMtPnBhcmFtcywKIAkJCQkJCQkJCQlfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52 LAotCQkJCQkJCQkJCTApOworCQkJCQkJCQkJCTAsCisJCQkJCQkJCQkJcHJlcF9lc3RhdGUpOwog CQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLAogCQkJCQkJCQkgIGNh blNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOwogCQkJCUZyZWVRdWVyeURlc2MocWRlc2Mp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCmluZGV4IGIzNTYzMTEzMjE5Li4zNTVhNDkwY2RlOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYwpAQCAtMTIzMSw2ICsxMjMxLDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hh ciAqcXVlcnlfc3RyaW5nKQogCQkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCQkgIGNvbW1hbmRU YWcsCiAJCQkJCQkgIHBsYW50cmVlX2xpc3QsCisJCQkJCQkgIE5JTCwKIAkJCQkJCSAgTlVMTCk7 CiAKIAkJLyoKQEAgLTIwMzAsNiArMjAzMSw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0lu Zm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgcHNyYy0+Y29t bWFuZFRhZywKIAkJCQkJICBjcGxhbi0+c3RtdF9saXN0LAorCQkJCQkgIE5JTCwKIAkJCQkJICBj cGxhbik7CiAKIAkvKiBQb3J0YWwgaXMgZGVmaW5lZCwgc2V0IHRoZSBwbGFuIElEIGJhc2VkIG9u IGl0cyBjb250ZW50cy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMg Yi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IGQ4ZmM3NWQwYmI5Li5iMTgyNjY0ODdi YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2Vu ZC90Y29wL3BxdWVyeS5jCkBAIC0zNyw2ICszNyw3IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0g TlVMTDsKIAogCiBzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJ CQkJCQkgRVN0YXRlICpwcmVwX2VzdGF0ZSwKIAkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0 LAogCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52LApAQCAtNzIsNyArNzMsOCBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10LAogCQkJCURlc3RSZWNlaXZlciAqZGVzdCwKIAkJCQlQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCQlpbnQgaW5zdHJ1 bWVudF9vcHRpb25zKQorCQkJCWludCBpbnN0cnVtZW50X29wdGlvbnMsCisJCQkJRVN0YXRlICpw cmVwX2VzdGF0ZSkKIHsKIAlRdWVyeURlc2MgICpxZCA9IHBhbGxvY19vYmplY3QoUXVlcnlEZXNj KTsKIApAQCAtOTMsNiArOTUsOSBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LAogCXFkLT5wbGFuc3RhdGUgPSBOVUxMOwogCXFkLT50b3RhbHRpbWUgPSBOVUxMOwog CisJLyogVXNlIHRoZSBFU3RhdGUgY3JlYXRlZCBieSBFeGVjdXRvclByZXAoKSBpZiBhbHJlYWR5 IGRvbmUuICovCisJcWQtPmVzdGF0ZSA9IHByZXBfZXN0YXRlOworCiAJLyogbm90IHlldCBleGVj dXRlZCAqLwogCXFkLT5hbHJlYWR5X2V4ZWN1dGVkID0gZmFsc2U7CiAKQEAgLTEyMyw2ICsxMjgs NyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9SRVRV Uk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhlIHBs YW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CisgKglwcmVwX2VzdGF0ZTogRVN0YXRlIGNyZWF0ZWQgaW4g RXhlY3V0b3JQcmVwKCkgZm9yIHRoZSBxdWVyeSwgaWYgYW55CiAgKglzb3VyY2VUZXh0OiB0aGUg c291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRl ZAogICoJZGVzdDogd2hlcmUgdG8gc2VuZCByZXN1bHRzCkBAIC0xMzUsNiArMTQxLDcgQEAgRnJl ZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICovCiBzdGF0aWMgdm9pZAogUHJvY2Vzc1F1 ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorCQkJIEVTdGF0ZSAqcHJlcF9lc3RhdGUsCiAJCQkgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0OCw3ICsxNTUsOCBAQCBQcm9jZXNzUXVlcnko UGxhbm5lZFN0bXQgKnBsYW4sCiAJICovCiAJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBs YW4sIHNvdXJjZVRleHQsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFw c2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CisJCQkJCQkJCWRlc3Qs IHBhcmFtcywgcXVlcnlFbnYsIDAsCisJCQkJCQkJCXByZXBfZXN0YXRlKTsKIAogCS8qCiAJICog Q2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgpAQCAt NDk1LDcgKzUwMywxMCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQkJCQkJCQkJTm9uZV9SZWNlaXZlciwKIAkJCQkJCQkJCQkJcGFyYW1zLAog CQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJCQkJ MCwKKwkJCQkJCQkJCQkJcG9ydGFsLT5wcmVwX2VzdGF0ZXMgPworCQkJCQkJCQkJCQkoRVN0YXRl ICopIGxpbml0aWFsKHBvcnRhbC0+cHJlcF9lc3RhdGVzKSA6CisJCQkJCQkJCQkJCU5VTEwpOwog CiAJCQkJLyoKIAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5l ZWRzIHRvIHN1cHBvcnQKQEAgLTExODUsNiArMTE5Niw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRh bCBwb3J0YWwsCiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90X3NldCA9IGZhbHNlOwogCUxpc3RD ZWxsICAgKnN0bXRsaXN0X2l0ZW07CisJTGlzdENlbGwgICAqcHJlcF9sYzsKIAogCS8qCiAJICog SWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRlLCBjaGFuZ2UgdG8gRGVzdE5v bmUuICBUaGUKQEAgLTEyMDUsOSArMTIxNywxMSBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9y dGFsLAogCSAqIExvb3AgdG8gaGFuZGxlIHRoZSBpbmRpdmlkdWFsIHF1ZXJpZXMgZ2VuZXJhdGVk IGZyb20gYSBzaW5nbGUgcGFyc2V0cmVlCiAJICogYnkgYW5hbHlzaXMgYW5kIHJld3JpdGUuCiAJ ICovCisJcHJlcF9sYyA9IGxpc3RfaGVhZChwb3J0YWwtPnByZXBfZXN0YXRlcyk7CiAJZm9yZWFj aChzdG10bGlzdF9pdGVtLCBwb3J0YWwtPnN0bXRzKQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10 ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHN0bXRsaXN0X2l0ZW0pOworCQlFU3RhdGUgKnBy ZXBfZXN0YXRlID0gbmV4dF9wcmVwX2VzdGF0ZShwb3J0YWwtPnByZXBfZXN0YXRlcywgJnByZXBf bGMpOwogCiAJCS8qCiAJCSAqIElmIHdlIGdvdCBhIGNhbmNlbCBzaWduYWwgaW4gcHJpb3IgY29t bWFuZCwgcXVpdApAQCAtMTI2NSw3ICsxMjc5LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBv cnRhbCwKIAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewogCQkJCS8qIHN0YXRlbWVudCBj YW4gc2V0IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJUHJvY2Vz c1F1ZXJ5KHBzdG10LCBwcmVwX2VzdGF0ZSwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAog CQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwK QEAgLTEyNzQsNyArMTI4OCw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQll bHNlCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICov Ci0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgcHJlcF9l c3RhdGUsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0 YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYwppbmRleCA0OTNmOWIwZWUxOS4uNDQzYjU4MzYzN2MgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9wb3J0YWxtZW0uYwpAQCAtMjg2LDYgKzI4Niw3IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRh bCBwb3J0YWwsCiAJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCSAgQ29tbWFuZFRh ZyBjb21tYW5kVGFnLAogCQkJCSAgTGlzdCAqc3RtdHMsCisJCQkJICBMaXN0ICpwcmVwX2VzdGF0 ZXMsCiAJCQkJICBDYWNoZWRQbGFuICpjcGxhbikKIHsKIAlBc3NlcnQoUG9ydGFsSXNWYWxpZChw b3J0YWwpKTsKQEAgLTI5OSw2ICszMDAsNyBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9y dGFsLAogCXBvcnRhbC0+Y29tbWFuZFRhZyA9IGNvbW1hbmRUYWc7CiAJU2V0UXVlcnlDb21wbGV0 aW9uKCZwb3J0YWwtPnFjLCBjb21tYW5kVGFnLCAwKTsKIAlwb3J0YWwtPnN0bXRzID0gc3RtdHM7 CisJcG9ydGFsLT5wcmVwX2VzdGF0ZXMgPSBwcmVwX2VzdGF0ZXM7CiAJcG9ydGFsLT5jcGxhbiA9 IGNwbGFuOwogCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX0RFRklORUQ7CiB9CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9l eHBsYWluLmgKaW5kZXggNDcyZTE0MWJiYTMuLjcxZWJlMzhiYzg2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oCkBAIC02NCw3ICs2NCw4IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5v ZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRl ICplcywgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMp OwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sCitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsIEVTdGF0ZSAqcHJlcF9lc3RhdGUsCisJCQkJCQkgICBJbnRvQ2xhdXNl ICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY2Rlc2MuaAppbmRleCBkM2E1NzI0Mjg0NC4uM2EyMTY5Yzk2MTMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY2Rlc2MuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MK IAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogcXVlcnkgZW52aXJvbm1lbnQgcGFzc2Vk IGluICovCiAJaW50CQkJaW5zdHJ1bWVudF9vcHRpb25zOyAvKiBPUiBvZiBJbnN0cnVtZW50T3B0 aW9uIGZsYWdzICovCiAKLQkvKiBUaGVzZSBmaWVsZHMgYXJlIHNldCBieSBFeGVjdXRvclN0YXJ0 ICovCisJLyogVGhlc2UgZmllbGRzIGFyZSBzZXQgYnkgRXhlY3V0b3JTdGFydCBvciBFeGVjdXRv clByZXAgKi8KIAlUdXBsZURlc2MJdHVwRGVzYzsJCS8qIGRlc2NyaXB0b3IgZm9yIHJlc3VsdCB0 dXBsZXMgKi8KIAlFU3RhdGUJICAgKmVzdGF0ZTsJCQkvKiBleGVjdXRvcidzIHF1ZXJ5LXdpZGUg c3RhdGUgKi8KIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7CQkvKiB0cmVlIG9mIHBlci1wbGFuLW5v ZGUgc3RhdGUgKi8KQEAgLTYzLDcgKzYzLDggQEAgZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVl cnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAkJCQkJCQkJICBEZXN0UmVjZWl2ZXIg KmRlc3QsCiAJCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkJCSAgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsCi0JCQkJCQkJCSAgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7 CisJCQkJCQkJCSAgaW50IGluc3RydW1lbnRfb3B0aW9ucywKKwkJCQkJCQkJICBFU3RhdGUgKnBy ZXBfZXN0YXRlKTsKIAogZXh0ZXJuIHZvaWQgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNj KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMDdmNGIxZjc0OTAuLjQ1MDVjZWFjYTNj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJu b2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKIAog LyoKQEAgLTIzNSw2ICsyMzYsMzEgQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNs b3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKICAqLwogZXh0ZXJuIHZv aWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRl cm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKTsKKworZXh0ZXJuIEVTdGF0ZSAqRXhlY3V0b3JQcmVwKFBsYW5uZWRTdG10ICpwc3Rt dCwKKwkJCQkJCQlQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQlSZXNvdXJjZU93bmVyIG93 bmVyLAorCQkJCQkJCWludCBlZmxhZ3MpOworCisvKgorICogV2FsayBhIHByZXBfZXN0YXRlcyBs aXN0IGluIHN0ZXAgd2l0aCBhIHBhcmFsbGVsIHN0bXRfbGlzdCBpdGVyYXRpb24uCisgKiBSZXR1 cm5zIHRoZSBuZXh0IEVTdGF0ZSAob3IgTlVMTCkgYW5kIGFkdmFuY2VzICpsYy4KKyAqCisgKiBT YWZlIHdoZW4gcHJlcF9lc3RhdGVzIGlzIE5JTDsganVzdCByZXR1cm5zIE5VTEwgZm9yIGV2ZXJ5 IGNhbGwuCisgKi8KK3N0YXRpYyBpbmxpbmUgRVN0YXRlICoKK25leHRfcHJlcF9lc3RhdGUoTGlz dCAqcHJlcF9lc3RhdGVzLCBMaXN0Q2VsbCAqKmxjKQoreworCUVTdGF0ZSAqcmVzdWx0ID0gTlVM TDsKKworCWlmICgqbGMgIT0gTlVMTCkKKwl7CisJCXJlc3VsdCA9IChFU3RhdGUgKikgbGZpcnN0 KCpsYyk7CisJCSpsYyA9IGxuZXh0KHByZXBfZXN0YXRlcywgKmxjKTsKKwl9CisJcmV0dXJuIHJl c3VsdDsKK30KKwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms CiAJCQkJCQlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50KTsKIGV4dGVybiB2 b2lkIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwu aAppbmRleCBhN2JlZGIxMmMxOC4uZjY5YjRiOWI0NzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzcs NiArMTM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCUNvbW1hbmRUYWcJY29tbWFu ZFRhZzsJCS8qIGNvbW1hbmQgdGFnIGZvciBvcmlnaW5hbCBxdWVyeSAqLwogCVF1ZXJ5Q29tcGxl dGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkg Ki8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLworCUxpc3QJ ICAgKnByZXBfZXN0YXRlczsJLyogbGlzdCBvZiBFU3RhdGVzIHdoZXJlIG5lZWRlZCAqLwogCUNh Y2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAq LwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1 ZXJ5ICovCkBAIC0yNDAsNiArMjQxLDcgQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnko UG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJ ICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKKwkJCQkJCQkg IExpc3QgKnByZXBfZXN0YXRlcywKIAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKIGV4dGVy biBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRl cm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7Ci0tIAoyLjQ3LjMK Cg== --0000000000004efcd7064dd46074--