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 1w0Nvi-001rSx-0K for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Mar 2026 18:05:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w0Nvg-00Az4C-1b for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Mar 2026 18:05:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w0NuV-00AvsK-1D for pgsql-hackers@lists.postgresql.org; Wed, 11 Mar 2026 18:03:56 +0000 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w0NuP-00000001eAv-3QiD for pgsql-hackers@lists.postgresql.org; Wed, 11 Mar 2026 18:03:55 +0000 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-b94358796a1so11495166b.2 for ; Wed, 11 Mar 2026 11:03:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773252228; cv=none; d=google.com; s=arc-20240605; b=O7QWaabWEmwM61WQ8Af5zj+o/tQBzp2Lb6MpkK9Aq0okMCm9YN/7ltfOWM9sq/G09r MVH2sRkByI3G5EyzyUn+sjF7FD2kEAoqLl+LLyCDQ47rRBHCfUnCXl/Bd+Nn33rDihIO zKIVBn4bKutTlKpM/WhaodnBqaFxdq516BQPJgxyilwZxnIUBSKZZaUc3CbuhoBPZEK0 MdK/avVrB2fXZPFbSRiIFoAa047LfwvZVUw2uWmQ23bDdwpxXiBOIm2cSpMp3x7KvUEy 5OuQn4LHj/ghf9hRtOPOuZlqU8U90uDwrIPTWtSKYhkBQl+cp6v69cZhh35aF4BH/3bo q/KQ== 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=sbGH08SDqlPh0MnfRVuSMg7zsjVnWPnLWvE0lf/XiEY=; fh=5lisVc/SdZrXESFhj6i3cPQivKRq2wrqq/p4/OVduqw=; b=hsouv50R2P48RkY5qF440TVY2TwyqRya4knfeHYMxXizD7ipfiO4DAwnuRjXwZ2O7/ IbtnvjiNXXlQDJwXK/BbR/vwjnWNmBEJ+btpJQFPMBO7DE7JKb2XEMrW9hCTiGDeTJZ/ gkqCOlmnUQFXEzfJRMQJS/WHdKm8fUfSZtWzxRA53kySZ8Ansh2Qc5XlXS6FAcQOmWph rx+whWVqxb9n82P5eiqIydN+XDyMeEZyyuxhgeFNY8eHFDhXepLuPx2WhhbIX4RaOUrt 7C0OGokMcTy1kGRllJVGUi4G3EB/TL/rE/pGw4QzJZRFAXkUIb+o8k7gT6Kvga5A0+rC Teqg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773252228; x=1773857028; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=sbGH08SDqlPh0MnfRVuSMg7zsjVnWPnLWvE0lf/XiEY=; b=TmktVyjvz10pyb19ZNIm/esqNAOpJ+nmp+SNy2MZ5CIOzA0y/riiDLUVrPuSmoV6GM OASHGMDO07jYur1z6iikvK1V8A6OQG4MEySk5L+TfHgq7Lvvz6z/did6z2oSgs1FqOwu Q55Lci7fl+eFK66oT57/yYQq8UWZp8biFijVgLBbG9+t1MH8kZ9s4QXKdxe4zqyCcdET kf6dQcu/hBk7Wug0pAWJDIDUVPAhqc1ZcLIIoj3F4benmA21lQc128NvG1DkPGCtCRYl uEWaYLfEzdFLf58XnbM/PxS1jciJ5fOIT98M+oDFmgVh0TN4OdtAImxdpuwilNCR7HAr UDyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773252228; x=1773857028; 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=sbGH08SDqlPh0MnfRVuSMg7zsjVnWPnLWvE0lf/XiEY=; b=nPmN1oWFh+6JR8c3ym2aaBQklOw1YuhoOLIbaP2bnL1NmCWgc1QneDl+K9GikL3a8x Ng5c6347tBvF1WTzFAfGLB0hqoSdCTmBlqG2Cbc+iLuYB0HwXAGKni6O9w48aY8ia7Ts nHW+YV+tQj2Kg0BsK6qKcQvnGa5Qyz0Ov2R53u1VZk8Q0Pwmuwj7a/NuScR2HlwC17nD H94Zi90iywKHoKQhh4oNRsLBt3VfN+dcG7eob0PxRb+08FIAH9jqhc7/TcXmqDFM7617 v/iHziwDZIB3DFethKAfvaPOHj6BtUEEZLGPSTVMrj3a90g2NXAr58w1WwxLngttlG3T JeEQ== X-Gm-Message-State: AOJu0YypRv27wripEShRA688RTXvAT95YiFXaUvRptgryakD3lsJvzi2 6c2FWl0GrrwLUGxDoMk/t9pZ3dnFv/wENWCUNy0x00L1deTs3aLETulL9r37Iytk8tZtl7R8JDb 0v5WvrNCHIaAbwLNbUuQ75rmi+Az/JlDZBA== X-Gm-Gg: ATEYQzx9gqeYYg/gWOb4IX+YnE24c6UMfar8YvBajzo+XRMOF4oTBFNSII7Bm/14rIH d6gLqEWKB6AKArbH1i0AqhM9cDfnO1JMElTGheR/NQjOq+LDi5TzoENTaVloNAr5FdlDw2ryBwI M9VeVf+8mIRRb4x9aHUaI9M7umOmwXQIqXzzotE0rW7mwMDm7nL7NGCsOSxhBc28uhCx7boZHLE DzqTPcDVdDSXhv2fIQIa2XeUZfMtJUVxBibQdYWj8OxszAgK1yd7g/HgPmSMDXTVLRhMqJpfo8c Lz6lEandWbvbbYNI59Hj+C1f4TDrPgbxDr6eWZCUwkhRkfwu X-Received: by 2002:a17:907:f495:b0:b93:62dd:a4a4 with SMTP id a640c23a62f3a-b972e6a5b85mr181518266b.51.1773252227599; Wed, 11 Mar 2026 11:03:47 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexandre Felipe Date: Wed, 11 Mar 2026 18:03:34 +0000 X-Gm-Features: AaiRm50wWrnvkqrvFudDDU5e84nFaJVWK49ol0u0mZlvIXvhEkHoRsEJLIQ672g Message-ID: Subject: Re: Addressing buffer private reference count scalability issue To: Andres Freund Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000204347064cc375ea" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000204347064cc375ea Content-Type: multipart/alternative; boundary="000000000000204344064cc375e8" --000000000000204344064cc375e8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Hackers, Please find attached version 2 of this patch and the results of the ReadBuffer/ReleaseBuffer benchmark For those who prefer plain text here goes an excerpt baseline patch num_buffers pattern 1 random 194.76 183.50 sequential 183.75 168.02 2 random 204.74 187.02 sequential 195.27 169.58 3 random 222.62 192.57 sequential 212.81 169.55 7 random 233.96 219.64 sequential 221.94 171.94 11 random 365.50 247.96 sequential 318.24 183.96 19 random 390.58 267.96 sequential 369.51 195.35 100 random 424.03 286.33 sequential 420.74 280.23 988 random 445.75 301.37 sequential 453.61 313.30 10000 random 587.13 418.91 sequential 497.92 394.10 On Sun, Mar 8, 2026 at 5:09=E2=80=AFPM Andres Freund w= rote: > Hi, > > On 2026-03-08 16:09:07 +0000, Alexandre Felipe wrote: > > 2. > > > > Refactoring reference counting: Before starting to change code and > > potentially breaking things I considered prudent to isolate it to > limit the > > damage. This code was part of a 8k+ LOC file. > > Not allowing, at least the fast paths, to be inlined will make the most > common > cases measurably slower, I've tried that. > I made it inline in this time. I placed in a separate file, I am including the .h at the top and the .c > > Here I assume that the buffer buffer sequence is independent enough fro= m > the > > array size, so I use the buffer as the hash key directly, omitting a ha= sh > > function call. > > I doubt that that's good enough. The hash table code relies on the bits > being > well mixed, but you won't get that with buffer ids. > Introduced murmurhash32, it is noticeably worse for sequential access (by buffer index), but has some mixing. > I'm rather sceptical that the overhead of needing to shift and mask is > worth > it. I suspect we'll also want to add more state for each entry (e.g. I > think > it may be worth getting rid of the io-in-progress resowner). > io-in-progress resowner name suggests that it runs only for reads... so maybe it could be taken out of the way of buffer hits? > > REFCOUNT_ARRAY_ENTRIES=3D0: since the simplehash is basically some a= rray > > lookup, it is worth trying to remove it completely and keep only the > hash. > > For small values we would be trading a few branches for a buffer % > SIZE, > > for the use case of prefetch where pin/unpin in a FIFO fashion, it > will > > save an 8-entry array lookup, and some extra data moves. > > I doubt that that's ok, in the vast majority of access we will have 0-2 > buffers pinned. And even when we have pinned more buffers, it's > *exceedingly* > common to access the same entry repeatedly (e.g. pin, lock, unlock, unpin= ), > adding a few cycles to each of those repeated accesses will quickly show > up. > I brought back the array, but I eliminated the linear search. 1. USE_REFCOUNT_CACHE_ENTRY will enable the last entry cache. 2a. the dynamic array case REFCOUNT_ARRAY_MAX_SIZE!=3DREFCOUNT_ARRAY_INITIAL_SIZE will grow the array when it reaches a certain level of occupation. I have set the default occupation level to 86% so that, if enabled, for a random input it will grow when we have about 2*size pins in total. If we find a sequential pattern then it will grow without growing the hash table. For the array lookup I don't use a hash, so for small number of pins it will be very fast. 2b. the static case REFCOUNT_ARRAY_MAX_SIZE=3D=3DREFCOUNT_ARRAY_INITIAL_SIZE will use a static array, just as we had before and will not perform the linear search. It still has to read the size and do mask input. I tested the 4 variations and the winner is with the static array without the cache for the last entry. I increased the array size from 8 to 32, since you suggested before that that this could help. At that point it would have the tradeoff of a longer linear search, so it may help even more now. > Incrementing/decrementing the count continue the same, just using > > 4 instead of 1, lock mode access will require one or two additional > > bitwise operations. > > > > No bit-shifts are required. > > I don't know how that last sentence can be true, given that: > > > -struct PrivateRefCountEntry > > +#define PRIVATEREFCOUNT_LOCKMODE_MASK 0x3 > > +#define ONE_PRIVATE_REFERENCE 4 /* 1 << 2 > */ > > + > > +#define PrivateRefCountGetLockMode(d) ((BufferLockMode)((d) & > PRIVATEREFCOUNT_LOCKMODE_MASK)) > > +#define PrivateRefCountSetLockMode(d, m) ((d) =3D ((d) & > ~PRIVATEREFCOUNT_LOCKMODE_MASK) | (m)) > > +#define PrivateRefCountGetRefCount(d) ((int32)((d) >> 2)) > > +#define PrivateRefCountIsZero(d) ((d) < > ONE_PRIVATE_REFERENCE) > > Involves shifts at least in PrivateRefCountGetRefCount().. > Yes, there was some unintended code there. I am adding SharedBufferHasSingleRef to replace the (...) =3D=3D 1 checks. The actual count is used only for debugging, so the shift there shouldn't be a problem. Regards, Alexandre --000000000000204344064cc375e8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hi Hacker= s,

Please find attached version 2 of t= his patch and the results of the
ReadBuffer/ReleaseBuffer benchma= rk

For those who prefer plain text here goes an excerpt
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 baseline =C2=A0 patch
num_buffers pattern =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
1 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 random =C2=A0 =C2=A0 =C2=A0 =C2=A0194.76 =C2=A0183.50
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sequential =C2=A0 =C2=A0183.75 =C2= =A0168.02
2 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 random =C2=A0 =C2=A0 =C2= =A0 =C2=A0204.74 =C2=A0187.02
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = sequential =C2=A0 =C2=A0195.27 =C2=A0169.58
3 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 random =C2=A0 =C2=A0 =C2=A0 =C2=A0222.62 =C2=A0192.57
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sequential =C2=A0 =C2=A0212.81 =C2=A0169= .55
7 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 random =C2=A0 =C2=A0 =C2=A0 =C2= =A0233.96 =C2=A0219.64
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sequent= ial =C2=A0 =C2=A0221.94 =C2=A0171.94
11 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0random =C2=A0 =C2=A0 =C2=A0 =C2=A0365.50 =C2=A0247.96
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 sequential =C2=A0 =C2=A0318.24 =C2=A0183.96
= 19 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0random =C2=A0 =C2=A0 =C2=A0 =C2=A0390.= 58 =C2=A0267.96
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sequential =C2= =A0 =C2=A0369.51 =C2=A0195.35
100 =C2=A0 =C2=A0 =C2=A0 =C2=A0 random =C2= =A0 =C2=A0 =C2=A0 =C2=A0424.03 =C2=A0286.33
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 sequential =C2=A0 =C2=A0420.74 =C2=A0280.23
988 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 random =C2=A0 =C2=A0 =C2=A0 =C2=A0445.75 =C2=A0301.37
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sequential =C2=A0 =C2=A0453.61 = =C2=A0313.30
10000 =C2=A0 =C2=A0 =C2=A0 random =C2=A0 =C2=A0 =C2=A0 =C2= =A0587.13 =C2=A0418.91
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sequent= ial =C2=A0 =C2=A0497.92 =C2=A0394.10

On Sun, Mar 8, 2026 at 5:09=E2= =80=AFPM Andres Freund <andres@anarazel.de> wrote:
Hi,

On 2026-03-08 16:09:07 +0000, Alexandre Felipe wrote:
>=C2=A0 =C2=A0 2.
>
>=C2=A0 =C2=A0 Refactoring reference counting: Before starting to change= code and
>=C2=A0 =C2=A0 potentially breaking things I considered prudent to isola= te it to limit the
>=C2=A0 =C2=A0 damage. This code was part of a 8k+ LOC file.

Not allowing, at least the fast paths, to be inlined will make the most com= mon
cases measurably slower, I've tried that.

I made it inline in this time. I placed in a separate file, I am inc= luding the
.h at the top and the .c=C2=A0
=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex"> > Here I assume that the buffer buffer sequence is independent enough fr= om the
> array size, so I use the buffer as the hash key directly, omitting a h= ash
> function call.

I doubt that that's good enough. The hash table code relies on the bits= being
well mixed, but you won't get that with buffer ids.

Introduced murmurhash32, it is noticeably worse for sequen= tial access=C2=A0
(by buffer index), but has some mixing.=C2=A0
=C2=A0
I'm rather sceptical that the overhead of needing to shift and mask is = worth
it. I suspect we'll also want to add more state for each entry (e.g. I = think
it may be worth getting rid of the io-in-progress resowner).

io-in-progress resowner name suggests that it runs on= ly for reads...
so maybe it could be taken out of the way of buff= er hits?
=C2=A0
>=C2=A0 =C2=A0 REFCOUNT_ARRAY_ENTRIES=3D0: since the simplehash is basic= ally some array
>=C2=A0 =C2=A0 lookup, it is worth trying to remove it completely and ke= ep only the hash.
>=C2=A0 =C2=A0 For small values we would be trading a few branches for a= buffer % SIZE,
>=C2=A0 =C2=A0 for the use case of prefetch where pin/unpin in a FIFO fa= shion, it will
>=C2=A0 =C2=A0 save an 8-entry array lookup, and some extra data moves.<= br>
I doubt that that's ok, in the vast majority of access we will have 0-2=
buffers pinned. And even when we have pinned more buffers, it's *exceed= ingly*
common to access the same entry repeatedly (e.g. pin, lock, unlock, unpin),=
adding a few cycles to each of those repeated accesses will quickly show up= .

I brought back the array, but I elimi= nated the linear search.

1. USE_REFCOUNT_CACHE_ENT= RY will enable the last entry cache.

2a. the dynam= ic array case
REFCOUNT_ARRAY_MAX_SIZE!=3DREFCOUNT_ARRAY_INITIAL_S= IZE
will grow the array when it reaches a certain level of occupa= tion.
I have set the default occupation level to 86% so that, if = enabled, for a
random input it will grow when we have about 2*siz= e pins in total.
If we find a sequential pattern then it will gro= w without growing the hash table.
For the array lookup I don'= t use a hash, so for small number of pins
it will be very fast.

2b. the static case
REFCOUNT_ARRAY_MAX_SI= ZE=3D=3DREFCOUNT_ARRAY_INITIAL_SIZE
will use a static array, just= as we had before and will not perform the linear
search. It stil= l has to read the size and do mask input.

I tested= the 4 variations and the winner is with the static array without
the cache for the last entry.
I increased the array size from 8 = to 32, since you suggested before that
that this could help. At t= hat point it would have the tradeoff of a longer
linear search, s= o it may help even more now.

> Incrementing/decrementing the count continue t= he same, just using
> 4 instead of 1, lock mode access will require one or two additional > bitwise operations.
>
> No bit-shifts are required.

I don't know how that last sentence can be true, given that:

> -struct PrivateRefCountEntry
> +#define PRIVATEREFCOUNT_LOCKMODE_MASK=C2=A0 =C2=A0 =C2=A0 =C2=A0 0x3<= br> > +#define ONE_PRIVATE_REFERENCE=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 4=C2=A0 =C2=A0 =C2=A0 =C2=A0/= * 1 << 2 */
> +
> +#define PrivateRefCountGetLockMode(d)=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((Bu= fferLockMode)((d) & PRIVATEREFCOUNT_LOCKMODE_MASK))
> +#define PrivateRefCountSetLockMode(d, m) ((d) =3D ((d) & ~PRIVATE= REFCOUNT_LOCKMODE_MASK) | (m))
> +#define PrivateRefCountGetRefCount(d)=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((in= t32)((d) >> 2))
> +#define PrivateRefCountIsZero(d)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0((d) < ONE_PRIVATE_REFERENCE)

Involves shifts at least in PrivateRefCountGetRefCount()..
=

Yes, there was some unintended code there.
I = am adding SharedBufferHasSingleRef to replace the (...) =3D=3D 1 checks.
The actual count is used only for debugging, so the shift there sho= uldn't
be a problem.

Regards,
Alexand= re


--000000000000204344064cc375e8-- --000000000000204347064cc375ea Content-Type: image/png; name="compare-read.png" Content-Disposition: attachment; filename="compare-read.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmcjoq56 iVBORw0KGgoAAAANSUhEUgAABcwAAALiCAYAAADkTJXfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90 bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAABcS AAAXEgFnn9JSAAEAAElEQVR4nOzdd1gUx/8H8PfRe1dRUbBiL6jYBbuCBXvvmpiILWpiNEbsMTFG jTF2sH3tmth7V+zYGyjYUUGQovT9/cHvNiy7B0cT0ffreXj0ZmdmZ+/27mY/NzujEgRBABERERER ERERERHRF04nvxtARERERERERERERPQpYMCciIiIiIiIiIiIiAgMmBMRERERERERERERAWDAnIiI iIiIiIiIiIgIAAPmREREREREREREREQAGDAnIiIiIiIiIiIiIgLAgDkREREREREREREREQAGzImI iIiIiIiIiIiIADBgTkREREREREREREQEgAFzIiIiIiIiIiIiIiIADJgTEREREREREREREQFgwJyI iIiIiIiIiIiICAAD5kREREREREREREREABgwJyIiIiIiIiIiIiICwIA5ERFRgaFSqWR/ISEh+d2s PBcSEqJ47ES57fnz55g4cSJq164Na2tr6OrqSs45Hx+f/G4iEX3GBg4cKPuu4+cOERHRx6eX3w0g IiICAD8/PwwaNCjDPPr6+jAzM0Px4sVRuXJltGnTBl27doWZmdlHamXBFBERgcKFCyMpKQkqlQpP njyBg4MDQkJCUKpUqQzL6urqwtTUFIUKFYKzszOaNm2Knj17wsHB4SO1nj4FJ06cQNOmTTPNZ2Ji AisrK1SoUAENGjRAv379UL58+Y/Qwpzz9/dHmzZtEBUVld9NIVJ0/vx5HDx4EGfOnMGjR4/w9u1b xMTEwNTUFPb29qhYsSIaN24MT09PODs753dziYiIiAosjjAnIqICIzExEREREbh16xY2b96MQYMG oVy5cti/f39+N+2TtmvXLiQlJQEA6tSpk6Vgd3JyMqKiovDw4UPs27cPEyZMQLly5TBnzpy8ai4V YO/fv8eLFy9w7NgxzJw5ExUqVMDXX3+N2NjY/G5ahpKTk9GvXz8Gy+mTdPDgQdStWxf169eHj48P jhw5gkePHiEyMhJJSUl49+4d7t+/j3/++Qfjxo1DhQoV0KZNm/xuNhEREVGBxRHmRERUoIWGhqJj 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 ym7lV9KvXz9Uq1YNJ0+exOXLl3H37l08e/YMkZGRSExMhLGxMQoVKoQKFSqIC6RmFBDv2rUr2rdv j23btuHAgQO4cuUKQkNDERUVBUNDQ1hbW6NMmTKoVq0a3N3d0bJly3wPMGuSW69Xfujfvz86d+6M 9evX4/Dhw7h69SrCwsIQFxcHKysrODk5oUGDBujTp49kgdfPQb9+/VCjRg3MmzcPx48fR2hoKCws LFC+fHn07NkTw4cPV5wb+mPz9PTEo0eP8M8//2Dfvn24ePGi+F6xsLBA4cKFxfedph8Z8/scbdOm Ddq0aQN/f38cPHgQZ86cwcOHD/H27VvExsbC1NQU9vb2qFSpEho3box27dpp/CwtUqQI9u7di8uX L2PDhg04e/YsQkJCEBkZCUNDQ9ja2qJmzZpo2bIl+vXrB3Nz81w7jrzWsWNH3Lp1CwsWLMDevXvx 9OlT6OnpwdnZGb169cK3336r8bu0oJzPANCkSRPcu3cPx48fx6VLl3Dnzh08efIEb9++RUJCAoyM jGBra4ty5crBzc0N/fr1ky2GmlabNm3w6NEjbNmyBfv27cPly5fx6tUrvH//HhYWFnBwcEC9evXQ rVs3WZ+LiIjoc6UShDQT+xEREVGB1bx5c3Ek+tKlS/H111/nc4uIiIhyl4+PD6ZNmyZJGzBggGy+ dyIiIqLs4pQsREREn4Hw8HCcOnUKQOrt2l5eXvnbICIiIiIiIqICiFOyEBERfQbCw8MxefJkAICd nV2W5rcmIiIiIiIiolQMmBMREX0GypcvDx8fn/xuBhEREREREVGBxilZiIiIiIiIiIiIiIjAgDkR EREREREREREREQBAJQiCkN+NICIiIiIiIiIiIiLKbxxhTkREREREREREREQEBsyJiIiIiIiIiIiI iAAwYE5EREREREREREREBIABcyIiIiIiIiIiIiIiAAyYExEREREREREREREBYMCciIiIiIiIiIiI iAgAA+ZERERERERERERERAAYMCciIiIiIiIiIiIiAsCAORERERERERERERERAAbMiYiIiIiIiIiI iIgAMGBORERERERERERERASAAXMiIiIiIiIiIiIiIgAMmBMRERERERERERERAWDAnIiIiIiIiIiI iIgIAAPmREREREREREREREQAGDAnIiIiIiIiIiIiIgLAgDkREREREREREREREQAGzImIiIiIiIiI iIiIADBgTkREREREREREREQEgAFzIiIiIiIiIiIiIiIADJgTEREREREREREREQFgwJyIiIiIiIiI iIiICAAD5kREREREREREREREABgwJyIiIiIiIiIiIiICwIA5EREREREREREREREABsyJiIiIiIiI iIiIiAAwYE5EREREREREREREBIABcyIiIiIiIiIiIiIiAAyYExEREREREREREREBYMCciIiIiIiI iIiIiAgAA+ZERERERERERERERAAYMCci+uQMHDgQKpUKAwcOzNV6/fz8oFKp4OTklKv1EhERERHl hrzqBxMREWUFA+ZEXyhBELB161Z06tQJjo6OMDY2hpmZGcqUKYNGjRrhu+++w86dOxEVFZXfTf1s nDhxAj4+PvDz88vvpuSKunXrQqVSQaVSYcWKFfndnM+Sj4+P+Byn/TMyMoKDgwM6dOiALVu2QBCE XNuntuepn58ffHx8cOLEiVzbNxEREWmmqV9gaGiIYsWKoXXr1li5ciUSExPzu6mkhR9++EF8Dfv0 6ZPfzfksnThxQvE9o6enh0KFCsHNzQ3z589HTExMru0zJCQEPj4+8PHxybRtn9O1IdHnhgFzoi9Q ZGQkmjZtiu7du+Off/7BkydPkJSUBENDQzx58gRnz57FH3/8gc6dO2PHjh353dzPxokTJzBt2rRM O0VFixaFs7MzihYt+nEalg23bt3CxYsXxcerV6/Ox9Z8GYoUKSL+qVQqPH/+HLt370aPHj3g6emJ +Pj4XNmPtuepn58fpk2bxoA5ERFRPkjbL9DT08PLly9x6NAhDBs2DA0aNEBERER+N5EykJSUhLVr 14qPd+zYgcjIyPxr0BfA2tpafM+YmpoiLCwMp06dwrhx41CjRg2EhITkyn5CQkIwbdo0TJs2LcN8 2va5iSh/MGBO9AXq378/Tp48CV1dXYwbNw4PHjxAfHw8wsPD8eHDB1y/fh1z585F9erV87upX6Q5 c+bg3r17mDNnTn43RaNVq1YBSL1t1tzcHOfPn8edO3fyuVWft9DQUPEvNjYWt27dQsuWLQEA+/fv x08//ZTPLSQiIqKPJX2/4PHjxxg2bBgA4PLlyxg1alQ+t5AysnfvXoSGhqJy5cpo1qwZ4uLi8L// /S+/m/VZ27Fjh/ieeffuHV6+fIkxY8YAAB4+fIju3bvnbwOJ6JPCgDnRFyYwMBC7d+8GAMycORPz 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 P5f08ySiBkDKvUraHnVQvUdMtU2LzGPAnIiIqC6p+jifPAzoOaN6m0rmpADn46UdKzgBLQfqlkqx Z0mWnBTgx2mmF6Ah/YGH10r/GemXZKkoBirLAGe3u9vS9+seI3MGlAro1HE3V/qFiOq80oIyrH1i k8PGVylVOLDyKA6sPGrzWE+snQgPP3eLznFycsKkSZPwySef4MiRI9qgJQCkp6fj4MGDmDRpEry8 vKBUKpGWlmZQSmX//v0YOnQoli9fjv/9738G17h48SKOHz9uMlCuERsbi/nz58PZ+e4trEKhwOjR ozF//nzExsbqBDUBYN++fVi+fDmee+45AIBKpcL999+PrVu34urVq2jRooU2QP71118jMjLSosaf cXFxCA4OxokTJ+Dh4aHdXllZiaKiIgDQCZiPGzdOmw1e1YEDB9Cqle7j+OfPn0efPn3w7rvvYs2a NQDUAfPU1FTs27cP0dHROlnqxmRkZODpp5+Gv78/Dh06hNatW2v3lZeXIy8vT/L7lfLzBIDVq1cj ISEBEydOxPfffw/hny+aH3/8cTz00EP417/+hcOH1WuDkpISPP7441AqlTh48CB69eqlvZ5SqdTJ BLfkM/DXX39hzpw5aN++Pfbv369T172oqAiVlZU67+369esYMmQIvvnmGzg5OQEA5s+fj7lz52LL li2YOnUqACArKwszZsxAhw4dsHfvXvj7+2vn8eijj+KLL77A9OnT0b8/6xETESQmGqnUQfWWg3jv UIuwJAsREVFdof84X9L76tfH1lTv9W+JP56sQxMw9tdb9NmrJItmLubqlsvDLFt46pdkAQyD/On7 dF93GA/833lg0OtA50fV/zZX+oWIqA547LHHAKizyav67rvvoFKptPtlMplo3fHBgwejU6dO+P33 30XHf+WVVyQFywEgJCREJ1AKqIP6Tz31FAoLC3VKd2i0adMGzz77rPa1IAiYOnUqVCoVjh8/Lum6 5ri6umoDrBrOzs7w8/OTPIZ+sBwA2rVrh6FDhxr92Um1bt06lJaWYs6cOTrBckA998aNG0seS+rP 85tvvoEgCFi4cKE2WA4ADz74IIYOHYo///wTFy6oG3XHx8cjKysLzz77rE6wHFB/rpo1a6Z9bcln YMWKFVCpVHj//fcNmqB6eXmJ/vl88MEHOn+WTzzxBADg2LFj2m3r1q1DUVERPvzwQ22wXDMPzZct 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 gg== --000000000000204347064cc375ea Content-Type: application/x-patch; name="v2-0004-Compact-PrivateRefCountEntry.patch" Content-Disposition: attachment; filename="v2-0004-Compact-PrivateRefCountEntry.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmci98u2 RnJvbSA0Yjk2YTcyM2JmYzNhNmZlNzhlMDViYzNjZTQ1NGIwYjE2MDY3OWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmUgRmVsaXBlIDxvLmFsZXhhbmRyZS5mZWxpcGVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDExIE1hciAyMDI2IDEyOjA4OjAzICswMDAwClN1YmplY3Q6 IFtQQVRDSCA0LzVdIENvbXBhY3QgUHJpdmF0ZVJlZkNvdW50RW50cnkKClRoZSBwcmV2aW91cyBp bXBsZW1lbnRhdGlvbiB1c2VkIGFuIDgtYnl0ZXMgKDY0LWJpdCkgZW50cnkgdG8gc3RvcmUKYSB1 aW50MzIgY291bnQgYW5kIGFuIHVpbnQzMiBsb2NrIG1vZGUuIFRoYXQgaXMgZmluZSB3aGVuIHdl IHN0b3JlCnRoZSBkYXRhIHNlcGFyYXRlIGZyb20gdGhlIGtleSAoYnVmZmVyKS4gQnV0IGluIHRo ZSBzaW1wbGVoYXNoCntrZXksIHZhbHVlfSBhcmUgc3RvcmVkIHRvZ2V0aGVyLCBzbyBlYWNoIGVu dHJ5IGlzIDEyLWJ5dGVzLgpUaGlzIGlzIHNvbWV3aGF0IGF3a3dhcmQgYXMgd2UgaGF2ZSB0byBl aXRoZXIgcGFkIHRoZSBlbnRyeSB0byAxNi1ieXRlcywKb3IgdGhlIGFjY2VzcyB3aWxsIGJlIGFu IGFsdGVybmF0aW5nIGFsaWduZWQvbWlzYWxpZ25lZCBhZGRyZXNlcy4KCkxvY2sgY2FuIGFzc3Vt ZSBvbmx5IDQgdmFsdWVzLCBhbmQgMl4zMCBpcyBhIGRlY2VudCBsaW1pdCBmb3IgdGhlCm51bWJl ciBvZiBwaW5zIG9uIGEgc2luZ2xlIGJ1ZmZlci4gU28gdGhpcyBjaGFuZ2UgaXMgcGFja2luZyB0 aGUKe2NvdW50WzMxOjJdLCBsb2NrWzE6MF19IGludG8gYSBzaW5nbGUgdWludDMyLgoKSW5jcmVt ZW50aW5nL2RlY3JlbWVudGluZyB0aGUgY291bnQgY29udGludWUgdGhlIHNhbWUsIGp1c3QgdXNp bmcKNCBpbnN0ZWFkIG9mIDEsIGxvY2sgbW9kZSBhY2Nlc3Mgd2lsbCByZXF1aXJlIG9uZSBvciB0 d28gYWRkaXRpb25hbApiaXR3aXNlIG9wZXJhdGlvbnMuIFRoZSBleGFjdCBjb3VudCByZXF1aXJl cyBvbmUgc2hpZnQsIGFuZCBpcyB1c2VkCm9ubHkgZm9yIGRlYnVnZ2luZy4gQSBzcGVjaWFsIGZ1 bmN0aW9uIGlzIHByb3ZpZGVkIHRvIGNoZWNrIHdoZXRoZXIKY291bnQgPT0gMS4KCgpObyBiaXQt c2hpZnRzIGFyZSByZXF1aXJlZC4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3JfcmVmY250LmMgfCAxODYgKysrKysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZtZ3JfcmVmY250LmggfCAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNzYg aW5zZXJ0aW9ucygrKSwgMTEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1ncl9yZWZjbnQuYwppbmRleCBkZDk1ZDk1M2Y2Li5iZjg0ZTlmNjJlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3JfcmVmY250LmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyX3JlZmNudC5jCkBAIC00Nyw0NyArNDcsNDUg QEAKICNpbmNsdWRlICJidWZtZ3JfcmVmY250LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CiAKLS8qIFN0cnVjdHVyZSBkZWZpbml0aW9ucyAtIGludGVybmFsIHRvIHRoaXMgZmlsZSAqLwot dHlwZWRlZiBzdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50RGF0YQorLyoKKyAqIEltcGxlbWVudGF0aW9u IGRldGFpbHMgLSBvcGFxdWUgdG8gY2FsbGVycy4KKyAqIFBhY2tlZCByZWZjb3VudCBhbmQgbG9j a21vZGUgaW4gYSBzaW5nbGUgdWludDMyOgorICogICBCaXRzIDAtMTogIGxvY2ttb2RlICg0IHZh bHVlczogVU5MT0NLLCBTSEFSRSwgU0hBUkVfRVhDTFVTSVZFLCBFWENMVVNJVkUpCisgKiAgIEJp dHMgMi0zMTogcmVmY291bnQgKDMwIGJpdHMsIG1heCB+MSBiaWxsaW9uKQorICovCitzdHJ1Y3Qg UHJpdmF0ZVJlZkNvdW50RW50cnkKIHsKLQlpbnQzMgkJcmVmY291bnQ7Ci0JQnVmZmVyTG9ja01v ZGUgbG9ja21vZGU7Ci19IFByaXZhdGVSZWZDb3VudERhdGE7CisJQnVmZmVyCQlidWZmZXI7CisJ dWludDMyCQlkYXRhOworfTsKIAotc3RydWN0IFByaXZhdGVSZWZDb3VudEVudHJ5CisjZGVmaW5l IFBSSVZBVEVSRUZDT1VOVF9MT0NLTU9ERV9NQVNLCTB4MworI2RlZmluZSBPTkVfUFJJVkFURV9S RUZFUkVOQ0UJCQk0CS8qIDEgPDwgMiAqLworCisjZGVmaW5lIFByaXZhdGVSZWZDb3VudElzWmVy byhkKQkJKChkKSA8IE9ORV9QUklWQVRFX1JFRkVSRU5DRSkKKworc3RydWN0IFByaXZhdGVSZWZD b3VudEl0ZXJhdG9yCiB7Ci0JQnVmZmVyCQlidWZmZXI7CQkvKiBoYXNoIGtleSAtIEludmFsaWRC dWZmZXIgbWVhbnMgZW1wdHkgKi8KLQlQcml2YXRlUmVmQ291bnREYXRhIGRhdGE7CisJaW50CQkJ YXJyYXlfaW5kZXg7CisJYm9vbAkJaW5faGFzaDsKKwl2b2lkCSAgICpoYXNoX3N0YXR1czsKIH07 CiAKLS8qCi0gKiBEZWZpbmUgc2ltcGxlaGFzaCBwYXJhbWV0ZXJzIGZvciB0aGUgb3ZlcmZsb3cg aGFzaCB0YWJsZS4KLSAqIFdlIHVzZSBidWZmZXIgPT0gSW52YWxpZEJ1ZmZlciBhcyB0aGUgImVt cHR5IiBtYXJrZXIgdG8gYXZvaWQgbmVlZGluZwotICogYSBzZXBhcmF0ZSBzdGF0dXMgZmllbGQu Ci0gKi8KKy8qIERlZmluZSBzaW1wbGVoYXNoIGZvciBwcml2YXRlIHJlZmNvdW50IG92ZXJmbG93 IGhhc2ggdGFibGUgKi8KICNkZWZpbmUgU0hfUFJFRklYIHJlZmNvdW50CiAjZGVmaW5lIFNIX0VM RU1FTlRfVFlQRSBQcml2YXRlUmVmQ291bnRFbnRyeQogI2RlZmluZSBTSF9LRVlfVFlQRSBCdWZm ZXIKICNkZWZpbmUgU0hfS0VZIGJ1ZmZlcgotI2RlZmluZSBTSF9IQVNIX0tFWSh0Yiwga2V5KSBt dXJtdXJoYXNoMzIoa2V5KQorI2RlZmluZSBTSF9IQVNIX0tFWSh0Yiwga2V5KSAoKHVpbnQzMikg bXVybXVyaGFzaDMyKGtleSkpCiAjZGVmaW5lIFNIX0VRVUFMKHRiLCBhLCBiKSAoKGEpID09IChi KSkKICNkZWZpbmUgU0hfU0NPUEUgc3RhdGljIGlubGluZQotI2RlZmluZSBTSF9ERUZJTkUKLSNk ZWZpbmUgU0hfREVDTEFSRQotLyogVXNlIGJ1ZmZlciBmaWVsZCBhcyBlbXB0eSBtYXJrZXIgLSBu byBzZXBhcmF0ZSBzdGF0dXMgbmVlZGVkICovCiAjZGVmaW5lIFNIX0VOVFJZX0VNUFRZKGVudHJ5 KSAoKGVudHJ5KS0+YnVmZmVyID09IEludmFsaWRCdWZmZXIpCiAjZGVmaW5lIFNIX01BS0VfRU1Q VFkoZW50cnkpICgoZW50cnkpLT5idWZmZXIgPSBJbnZhbGlkQnVmZmVyKQotI2RlZmluZSBTSF9N QUtFX0lOX1VTRShlbnRyeSkgKCh2b2lkKTApICAvKiBrZXkgYXNzaWdubWVudCBoYW5kbGVzIHRo aXMgKi8KKyNkZWZpbmUgU0hfTUFLRV9JTl9VU0UoZW50cnkpICgodm9pZCkgMCkKKyNkZWZpbmUg U0hfREVDTEFSRQorI2RlZmluZSBTSF9ERUZJTkUKICNpbmNsdWRlICJsaWIvc2ltcGxlaGFzaC5o IgogCi1zdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50SXRlcmF0b3IKLXsKLQlpbnQJCQlhcnJheV9pbmRl eDsKLQlib29sCQlpbl9oYXNoOwotCXJlZmNvdW50X2l0ZXJhdG9yIGhhc2hfaXRlcjsKLQlib29s CQloYXNoX2l0ZXJfdmFsaWQ7Ci19OwotCiAvKiBQcml2YXRlIHJlZmNvdW50IGFycmF5IGFuZCBr ZXlzICovCiAjZGVmaW5lIFJFRkNPVU5UX0FSUkFZX0VOVFJJRVMgOAogc3RhdGljIEJ1ZmZlciBQ cml2YXRlUmVmQ291bnRBcnJheUtleXNbUkVGQ09VTlRfQVJSQVlfRU5UUklFU107CkBAIC0xMTIs OSArMTEwLDkgQEAgc3RhdGljIGludAlQcml2YXRlUmVmQ291bnRFbnRyeUxhc3QgPSAtMTsKIHN0 YXRpYyB1aW50MzIgTWF4UHJvcG9ydGlvbmFsUGlucyA9IDA7CiAKIC8qIEZvcndhcmQgZGVjbGFy YXRpb25zICovCi1zdGF0aWMgdm9pZCBSZXNlcnZlUHJpdmF0ZVJlZkNvdW50RW50cnkodm9pZCk7 CitzdGF0aWMgdm9pZCBSZXNlcnZlUHJpdmF0ZVJlZkNvdW50RW50cnkoQnVmZmVyIGJ1ZmZlcik7 CiBzdGF0aWMgUHJpdmF0ZVJlZkNvdW50RW50cnkgKk5ld1ByaXZhdGVSZWZDb3VudEVudHJ5KEJ1 ZmZlciBidWZmZXIpOwotc3RhdGljIHBnX25vaW5saW5lIFByaXZhdGVSZWZDb3VudEVudHJ5ICpH ZXRQcml2YXRlUmVmQ291bnRFbnRyeVNsb3coQnVmZmVyIGJ1ZmZlciwgYm9vbCBkb19tb3ZlKTsK K3N0YXRpYyBwZ19ub2lubGluZSBQcml2YXRlUmVmQ291bnRFbnRyeSAqR2V0UHJpdmF0ZVJlZkNv dW50RW50cnlTbG93KEJ1ZmZlciBidWZmZXIpOwogCiAvKgogICogSW5pdGlhbGl6ZSBwcml2YXRl IHJlZmNvdW50IHRyYWNraW5nIGZvciB0aGlzIGJhY2tlbmQuCkBAIC0xMzMsNyArMTMxLDcgQEAg SW5pdFByaXZhdGVSZWZDb3VudCh2b2lkKQogCW1lbXNldCgmUHJpdmF0ZVJlZkNvdW50QXJyYXks IDAsIHNpemVvZihQcml2YXRlUmVmQ291bnRBcnJheSkpOwogCW1lbXNldCgmUHJpdmF0ZVJlZkNv dW50QXJyYXlLZXlzLCAwLCBzaXplb2YoUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzKSk7CiAKLQlQ cml2YXRlUmVmQ291bnRIYXNoID0gcmVmY291bnRfY3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0 LCAxNiwgTlVMTCk7CisJUHJpdmF0ZVJlZkNvdW50SGFzaCA9IHJlZmNvdW50X2NyZWF0ZShDdXJy ZW50TWVtb3J5Q29udGV4dCwgNjQsIE5VTEwpOwogfQogCiAvKgpAQCAtMTQxLDE1ICsxMzksMTUg QEAgSW5pdFByaXZhdGVSZWZDb3VudCh2b2lkKQogICogZW50cnkuCiAgKi8KIHN0YXRpYyB2b2lk Ci1SZXNlcnZlUHJpdmF0ZVJlZkNvdW50RW50cnkodm9pZCkKK1Jlc2VydmVQcml2YXRlUmVmQ291 bnRFbnRyeShCdWZmZXIgYnVmZmVyKQogewogCS8qIEFscmVhZHkgcmVzZXJ2ZWQgKG9yIGZyZWVk KSwgbm90aGluZyB0byBkbyAqLwogCWlmIChSZXNlcnZlZFJlZkNvdW50U2xvdCAhPSAtMSkKIAkJ cmV0dXJuOwogCiAJLyoKLQkgKiBGaXJzdCBzZWFyY2ggZm9yIGEgZnJlZSBlbnRyeSB0aGUgYXJy YXksIHRoYXQnbGwgYmUgc3VmZmljaWVudCBpbiB0aGUKLQkgKiBtYWpvcml0eSBvZiBjYXNlcy4K KwkgKiBGaXJzdCBzZWFyY2ggZm9yIGEgZnJlZSBlbnRyeSBpbiB0aGUgYXJyYXksIHRoYXQnbGwg YmUgc3VmZmljaWVudCBpbgorCSAqIHRoZSBtYWpvcml0eSBvZiBjYXNlcy4KIAkgKi8KIAl7CiAJ CWludAkJCWk7CkBAIC0xNTksMTEgKzE1Nyw5IEBAIFJlc2VydmVQcml2YXRlUmVmQ291bnRFbnRy eSh2b2lkKQogCQkJaWYgKFByaXZhdGVSZWZDb3VudEFycmF5S2V5c1tpXSA9PSBJbnZhbGlkQnVm ZmVyKQogCQkJewogCQkJCVJlc2VydmVkUmVmQ291bnRTbG90ID0gaTsKKwkJCQlyZXR1cm47CiAJ CQl9CiAJCX0KLQotCQlpZiAoUmVzZXJ2ZWRSZWZDb3VudFNsb3QgIT0gLTEpCi0JCQlyZXR1cm47 CiAJfQogCiAJLyoKQEAgLTE5NiwxMCArMTkyLDcgQEAgUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVu dHJ5KHZvaWQpCiAJCS8qIGNsZWFyIHRoZSBub3cgZnJlZSBhcnJheSBzbG90ICovCiAJCVByaXZh dGVSZWZDb3VudEFycmF5S2V5c1t2aWN0aW1fc2xvdF0gPSBJbnZhbGlkQnVmZmVyOwogCQl2aWN0 aW1fZW50cnktPmJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0KLQkJbWVtc2V0KCZ2aWN0aW1fZW50 cnktPmRhdGEsIDAsIHNpemVvZih2aWN0aW1fZW50cnktPmRhdGEpKTsKLQkJdmljdGltX2VudHJ5 LT5kYXRhLnJlZmNvdW50ID0gMDsKLQkJdmljdGltX2VudHJ5LT5kYXRhLmxvY2ttb2RlID0gQlVG RkVSX0xPQ0tfVU5MT0NLOworCQl2aWN0aW1fZW50cnktPmRhdGEgPSAwOwogCiAJCVByaXZhdGVS ZWZDb3VudE92ZXJmbG93ZWQrKzsKIAl9CkBAIC0yMjIsOCArMjE1LDcgQEAgTmV3UHJpdmF0ZVJl ZkNvdW50RW50cnkoQnVmZmVyIGJ1ZmZlcikKIAkvKiBhbmQgZmlsbCBpdCAqLwogCVByaXZhdGVS ZWZDb3VudEFycmF5S2V5c1tSZXNlcnZlZFJlZkNvdW50U2xvdF0gPSBidWZmZXI7CiAJcmVzLT5i dWZmZXIgPSBidWZmZXI7Ci0JcmVzLT5kYXRhLnJlZmNvdW50ID0gMDsKLQlyZXMtPmRhdGEubG9j a21vZGUgPSBCVUZGRVJfTE9DS19VTkxPQ0s7CisJcmVzLT5kYXRhID0gMDsKIAogCS8qIHVwZGF0 ZSBjYWNoZSBmb3IgdGhlIG5leHQgbG9va3VwICovCiAJUHJpdmF0ZVJlZkNvdW50RW50cnlMYXN0 ID0gUmVzZXJ2ZWRSZWZDb3VudFNsb3Q7CkBAIC0yMzcsMTAgKzIyOSw5IEBAIE5ld1ByaXZhdGVS ZWZDb3VudEVudHJ5KEJ1ZmZlciBidWZmZXIpCiAgKiBTbG93LXBhdGggZm9yIEdldFNoYXJlZEJ1 ZmZlckVudHJ5KCkuCiAgKi8KIHN0YXRpYyBwZ19ub2lubGluZSBQcml2YXRlUmVmQ291bnRFbnRy eSAqCi1HZXRQcml2YXRlUmVmQ291bnRFbnRyeVNsb3coQnVmZmVyIGJ1ZmZlciwgYm9vbCBkb19t b3ZlKQorR2V0UHJpdmF0ZVJlZkNvdW50RW50cnlTbG93KEJ1ZmZlciBidWZmZXIpCiB7CiAJUHJp dmF0ZVJlZkNvdW50RW50cnkgKnJlczsKLQlpbnQJCQltYXRjaCA9IC0xOwogCWludAkJCWk7CiAK IAkvKgpAQCAtMjUwLDE2ICsyNDEsMTEgQEAgR2V0UHJpdmF0ZVJlZkNvdW50RW50cnlTbG93KEJ1 ZmZlciBidWZmZXIsIGJvb2wgZG9fbW92ZSkKIAl7CiAJCWlmIChQcml2YXRlUmVmQ291bnRBcnJh eUtleXNbaV0gPT0gYnVmZmVyKQogCQl7Ci0JCQltYXRjaCA9IGk7CisJCQlQcml2YXRlUmVmQ291 bnRFbnRyeUxhc3QgPSBpOworCQkJcmV0dXJuICZQcml2YXRlUmVmQ291bnRBcnJheVtpXTsKIAkJ fQogCX0KIAotCWlmIChsaWtlbHkobWF0Y2ggIT0gLTEpKQotCXsKLQkJUHJpdmF0ZVJlZkNvdW50 RW50cnlMYXN0ID0gbWF0Y2g7Ci0JCXJldHVybiAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbbWF0Y2hd OwotCX0KLQogCS8qCiAJICogT25seSBsb29rIHVwIHRoZSBidWZmZXIgaW4gdGhlIGhhc2h0YWJs ZSBpZiB3ZSd2ZSBwcmV2aW91c2x5IG92ZXJmbG93ZWQuCiAJICovCkBAIC0yNjcsNDEgKzI1Mywx MSBAQCBHZXRQcml2YXRlUmVmQ291bnRFbnRyeVNsb3coQnVmZmVyIGJ1ZmZlciwgYm9vbCBkb19t b3ZlKQogCQlyZXR1cm4gTlVMTDsKIAogCXJlcyA9IHJlZmNvdW50X2xvb2t1cChQcml2YXRlUmVm Q291bnRIYXNoLCBidWZmZXIpOwotCi0JaWYgKHJlcyA9PSBOVUxMKQotCQlyZXR1cm4gTlVMTDsK LQllbHNlIGlmICghZG9fbW92ZSkKLQl7Ci0JCXJldHVybiByZXM7Ci0JfQotCWVsc2UKLQl7Ci0J CS8qIG1vdmUgYnVmZmVyIGZyb20gaGFzaHRhYmxlIGludG8gdGhlIGZyZWUgYXJyYXkgc2xvdCAq LwotCQlQcml2YXRlUmVmQ291bnRFbnRyeSAqZnJlZTsKLQotCQlSZXNlcnZlUHJpdmF0ZVJlZkNv dW50RW50cnkoKTsKLQotCQlBc3NlcnQoUmVzZXJ2ZWRSZWZDb3VudFNsb3QgIT0gLTEpOwotCQlm cmVlID0gJlByaXZhdGVSZWZDb3VudEFycmF5W1Jlc2VydmVkUmVmQ291bnRTbG90XTsKLQkJQXNz ZXJ0KGZyZWUtPmJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyKTsKLQotCQlmcmVlLT5idWZmZXIgPSBi dWZmZXI7Ci0JCWZyZWUtPmRhdGEgPSByZXMtPmRhdGE7Ci0JCVByaXZhdGVSZWZDb3VudEFycmF5 S2V5c1tSZXNlcnZlZFJlZkNvdW50U2xvdF0gPSBidWZmZXI7Ci0JCVByaXZhdGVSZWZDb3VudEVu dHJ5TGFzdCA9IFJlc2VydmVkUmVmQ291bnRTbG90OwotCi0JCVJlc2VydmVkUmVmQ291bnRTbG90 ID0gLTE7Ci0KLQkJcmVmY291bnRfZGVsZXRlX2l0ZW0oUHJpdmF0ZVJlZkNvdW50SGFzaCwgcmVz KTsKLQkJQXNzZXJ0KFByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQgPiAwKTsKLQkJUHJpdmF0ZVJl ZkNvdW50T3ZlcmZsb3dlZC0tOwotCi0JCXJldHVybiBmcmVlOwotCX0KKwlyZXR1cm4gcmVzOwog fQogCiAvKgotICogUmV0dXJuIHRoZSBQcml2YXRlUmVmQ291bnRFbnRyeSBmb3IgdGhlIHBhc3Nl ZCBidWZmZXIuCisgKiBSZXR1cm4gdGhlIFByaXZhdGVSZWZDb3VudCBlbnRyeSBmb3IgdGhlIHBh c3NlZCBidWZmZXIuCiAgKiBSZXR1cm5zIE5VTEwgaWYgdGhlIGJ1ZmZlciBpcyBub3QgY3VycmVu dGx5IHBpbm5lZC4KICAqLwogc3RhdGljIFByaXZhdGVSZWZDb3VudEVudHJ5ICoKQEAgLTMxNyw3 ICsyNzMsNyBAQCBHZXRTaGFyZWRCdWZmZXJFbnRyeShCdWZmZXIgYnVmZmVyKQogCQlyZXR1cm4g JlByaXZhdGVSZWZDb3VudEFycmF5W1ByaXZhdGVSZWZDb3VudEVudHJ5TGFzdF07CiAJfQogCi0J cmV0dXJuIEdldFByaXZhdGVSZWZDb3VudEVudHJ5U2xvdyhidWZmZXIsIGZhbHNlKTsKKwlyZXR1 cm4gR2V0UHJpdmF0ZVJlZkNvdW50RW50cnlTbG93KGJ1ZmZlcik7CiB9CiAKIC8qCkBAIC0zMzMs OSArMjg5LDkgQEAgU2hhcmVkQnVmZmVyQ3JlYXRlUmVmKEJ1ZmZlciBidWZmZXIpCiAJQXNzZXJ0 KEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSk7CiAJQXNzZXJ0KCFCdWZmZXJJc0xvY2FsKGJ1ZmZlcikp OwogCi0JUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CisJUmVzZXJ2ZVByaXZhdGVSZWZD b3VudEVudHJ5KGJ1ZmZlcik7CiAJcmVmID0gTmV3UHJpdmF0ZVJlZkNvdW50RW50cnkoYnVmZmVy KTsKLQlyZWYtPmRhdGEucmVmY291bnQrKzsKKwlyZWYtPmRhdGEgPSBPTkVfUFJJVkFURV9SRUZF UkVOQ0U7CiAKIAlyZXR1cm4gcmVmOwogfQpAQCAtMzQ4LDggKzMwNCw4IEBAIHN0YXRpYyB2b2lk CiBTaGFyZWRCdWZmZXJSZWZFeGlzdGluZyhQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmKQogewog CUFzc2VydChyZWYgIT0gTlVMTCk7Ci0JQXNzZXJ0KHJlZi0+ZGF0YS5yZWZjb3VudCA+IDApOwot CXJlZi0+ZGF0YS5yZWZjb3VudCsrOworCUFzc2VydCghUHJpdmF0ZVJlZkNvdW50SXNaZXJvKHJl Zi0+ZGF0YSkpOworCXJlZi0+ZGF0YSArPSBPTkVfUFJJVkFURV9SRUZFUkVOQ0U7CiB9CiAKIC8q CkBAIC0zNjEsMTQgKzMxNywxNCBAQCBzdGF0aWMgYm9vbAogU2hhcmVkQnVmZmVyVW5yZWYoUHJp dmF0ZVJlZkNvdW50RW50cnkgKnJlZikKIHsKIAlBc3NlcnQocmVmICE9IE5VTEwpOwotCUFzc2Vy dChyZWYtPmRhdGEucmVmY291bnQgPiAwKTsKKwlBc3NlcnQoIVByaXZhdGVSZWZDb3VudElzWmVy byhyZWYtPmRhdGEpKTsKIAotCXJlZi0+ZGF0YS5yZWZjb3VudC0tOworCXJlZi0+ZGF0YSAtPSBP TkVfUFJJVkFURV9SRUZFUkVOQ0U7CiAKLQlpZiAocmVmLT5kYXRhLnJlZmNvdW50ID09IDApCisJ aWYgKFByaXZhdGVSZWZDb3VudElzWmVybyhyZWYtPmRhdGEpKQogCXsKIAkJLyogTm8gbW9yZSBy ZWZlcmVuY2VzIC0gY2xlYW4gdXAgdGhlIGVudHJ5ICovCi0JCUFzc2VydChyZWYtPmRhdGEubG9j a21vZGUgPT0gQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJQXNzZXJ0KFNoYXJlZEJ1ZmZlckdldExv Y2tNb2RlKHJlZikgPT0gQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAogCQlpZiAocmVmID49ICZQcml2 YXRlUmVmQ291bnRBcnJheVswXSAmJgogCQkJcmVmIDwgJlByaXZhdGVSZWZDb3VudEFycmF5W1JF RkNPVU5UX0FSUkFZX0VOVFJJRVNdKQpAQCAtMzc5LDcgKzMzNSw4IEBAIFNoYXJlZEJ1ZmZlclVu cmVmKFByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYpCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlyZWZj b3VudF9kZWxldGVfaXRlbShQcml2YXRlUmVmQ291bnRIYXNoLCByZWYpOworCQkJLyogY291bGQg bWFrZSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCBieSB1c2luZyB0aGUgcG9pbnRlciAqLworCQkJ cmVmY291bnRfZGVsZXRlKFByaXZhdGVSZWZDb3VudEhhc2gsIHJlZi0+YnVmZmVyKTsKIAkJCUFz c2VydChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID4gMCk7CiAJCQlQcml2YXRlUmVmQ291bnRP dmVyZmxvd2VkLS07CiAJCX0KQEAgLTM5MCwyNSArMzQ3LDE2IEBAIFNoYXJlZEJ1ZmZlclVucmVm KFByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYpCiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKgotICog QWNjZXNzb3JzIGZvciByZWZjb3VudCBlbnRyeSBmaWVsZHMuCi0gKi8KLXN0YXRpYyBpbnQzMgot U2hhcmVkQnVmZmVyUmVmQ291bnQoUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZikKLXsKLQlyZXR1 cm4gcmVmLT5kYXRhLnJlZmNvdW50OwotfQotCiBzdGF0aWMgQnVmZmVyTG9ja01vZGUKIFNoYXJl ZEJ1ZmZlckdldExvY2tNb2RlKFByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYpCiB7Ci0JcmV0dXJu IHJlZi0+ZGF0YS5sb2NrbW9kZTsKKwlyZXR1cm4gKEJ1ZmZlckxvY2tNb2RlKShyZWYtPmRhdGEg JiBQUklWQVRFUkVGQ09VTlRfTE9DS01PREVfTUFTSyk7CiB9CiAKIHN0YXRpYyB2b2lkCiBTaGFy ZWRCdWZmZXJTZXRMb2NrTW9kZShQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmLCBCdWZmZXJMb2Nr TW9kZSBtb2RlKQogewotCXJlZi0+ZGF0YS5sb2NrbW9kZSA9IG1vZGU7CisJcmVmLT5kYXRhID0g KHJlZi0+ZGF0YSAmIH5QUklWQVRFUkVGQ09VTlRfTE9DS01PREVfTUFTSykgfCBtb2RlOwogfQog CiAvKgpAQCAtNDE3LDcgKzM2NSwxOCBAQCBTaGFyZWRCdWZmZXJTZXRMb2NrTW9kZShQcml2YXRl UmVmQ291bnRFbnRyeSAqcmVmLCBCdWZmZXJMb2NrTW9kZSBtb2RlKQogc3RhdGljIGJvb2wKIFNo YXJlZEJ1ZmZlckhhc1NpbmdsZVJlZihQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmKQogewotCXJl dHVybiByZWYgIT0gTlVMTCAmJiByZWYtPmRhdGEucmVmY291bnQgPT0gMTsKKwlyZXR1cm4gcmVm ICE9IE5VTEwgJiYKKwkJICAgcmVmLT5kYXRhID49IE9ORV9QUklWQVRFX1JFRkVSRU5DRSAmJgor CQkgICByZWYtPmRhdGEgPCAoMiAqIE9ORV9QUklWQVRFX1JFRkVSRU5DRSk7Cit9CisKKy8qCisg KiBHZXQgdGhlIHJlZmNvdW50IGZvciBhIGJ1ZmZlciBlbnRyeSAoZm9yIGRlYnVnIG91dHB1dCBv bmx5KS4KKyAqLworc3RhdGljIGludDMyCitTaGFyZWRCdWZmZXJSZWZDb3VudChQcml2YXRlUmVm Q291bnRFbnRyeSAqcmVmKQoreworCXJldHVybiAoaW50MzIpKHJlZi0+ZGF0YSA+PiAyKTsKIH0K IAogLyoKQEAgLTQ4OCw3ICs0NDcsNyBAQCBBc3NlcnRCdWZmZXJMb2Nrc1Blcm1pdENhdGFsb2dS ZWFkKHZvaWQpCiAJCWlmIChidWYgPT0gSW52YWxpZEJ1ZmZlcikKIAkJCWNvbnRpbnVlOwogCi0J CUFzc2VydE5vdENhdGFsb2dCdWZmZXJMb2NrKGJ1ZiwgcmVzLT5kYXRhLmxvY2ttb2RlKTsKKwkJ QXNzZXJ0Tm90Q2F0YWxvZ0J1ZmZlckxvY2soYnVmLCBTaGFyZWRCdWZmZXJHZXRMb2NrTW9kZShy ZXMpKTsKIAl9CiAJRnJlZVByaXZhdGVSZWZDb3VudEl0ZXJhdG9yKGl0ZXIpOwogfQpAQCAtNTA0 LDcgKzQ2Myw3IEBAIEluaXRQcml2YXRlUmVmQ291bnRJdGVyYXRvcih2b2lkKQogCiAJaXRlci0+ YXJyYXlfaW5kZXggPSAwOwogCWl0ZXItPmluX2hhc2ggPSBmYWxzZTsKLQlpdGVyLT5oYXNoX2l0 ZXJfdmFsaWQgPSBmYWxzZTsKKwlpdGVyLT5oYXNoX3N0YXR1cyA9IE5VTEw7CiAJcmV0dXJuIGl0 ZXI7CiB9CiAKQEAgLTUzMCwyMCArNDg5LDIzIEBAIEdldE5leHRQcml2YXRlUmVmQ291bnRFbnRy eShQcml2YXRlUmVmQ291bnRJdGVyYXRvciAqaXRlcikKIAkJaXRlci0+aW5faGFzaCA9IHRydWU7 CiAJCWlmIChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID4gMCkKIAkJewotCQkJcmVmY291bnRf c3RhcnRfaXRlcmF0ZShQcml2YXRlUmVmQ291bnRIYXNoLCAmaXRlci0+aGFzaF9pdGVyKTsKLQkJ CWl0ZXItPmhhc2hfaXRlcl92YWxpZCA9IHRydWU7CisJCQlyZWZjb3VudF9pdGVyYXRvciAqaGl0 ZXIgPSBwYWxsb2Moc2l6ZW9mKHJlZmNvdW50X2l0ZXJhdG9yKSk7CisKKwkJCXJlZmNvdW50X3N0 YXJ0X2l0ZXJhdGUoUHJpdmF0ZVJlZkNvdW50SGFzaCwgaGl0ZXIpOworCQkJaXRlci0+aGFzaF9z dGF0dXMgPSBoaXRlcjsKIAkJfQogCX0KIAotCWlmIChpdGVyLT5oYXNoX2l0ZXJfdmFsaWQpCisJ aWYgKGl0ZXItPmhhc2hfc3RhdHVzICE9IE5VTEwpCiAJewogCQlQcml2YXRlUmVmQ291bnRFbnRy eSAqcmVzOwogCi0JCXJlcyA9IHJlZmNvdW50X2l0ZXJhdGUoUHJpdmF0ZVJlZkNvdW50SGFzaCwg Jml0ZXItPmhhc2hfaXRlcik7CisJCXJlcyA9IHJlZmNvdW50X2l0ZXJhdGUoUHJpdmF0ZVJlZkNv dW50SGFzaCwgKHJlZmNvdW50X2l0ZXJhdG9yICopIGl0ZXItPmhhc2hfc3RhdHVzKTsKIAkJaWYg KHJlcyAhPSBOVUxMKQogCQkJcmV0dXJuIHJlczsKIAotCQlpdGVyLT5oYXNoX2l0ZXJfdmFsaWQg PSBmYWxzZTsKKwkJcGZyZWUoaXRlci0+aGFzaF9zdGF0dXMpOworCQlpdGVyLT5oYXNoX3N0YXR1 cyA9IE5VTEw7CiAJfQogCiAJcmV0dXJuIE5VTEw7CkBAIC01NTUsNiArNTE3LDggQEAgR2V0TmV4 dFByaXZhdGVSZWZDb3VudEVudHJ5KFByaXZhdGVSZWZDb3VudEl0ZXJhdG9yICppdGVyKQogdm9p ZAogRnJlZVByaXZhdGVSZWZDb3VudEl0ZXJhdG9yKFByaXZhdGVSZWZDb3VudEl0ZXJhdG9yICpp dGVyKQogeworCWlmIChpdGVyLT5oYXNoX3N0YXR1cyAhPSBOVUxMKQorCQlwZnJlZShpdGVyLT5o YXNoX3N0YXR1cyk7CiAJcGZyZWUoaXRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuaCBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1ncl9yZWZjbnQuaAppbmRleCBmMmE2ZjQ1ZDg0Li44ZDMxZjZlZTZmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3JfcmVmY250LmgKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyX3JlZmNudC5oCkBAIC0zOSw4ICszOSw4IEBA IHN0YXRpYyB2b2lkIFNoYXJlZEJ1ZmZlclJlZkV4aXN0aW5nKFByaXZhdGVSZWZDb3VudEVudHJ5 ICpyZWYpOwogc3RhdGljIGJvb2wgU2hhcmVkQnVmZmVyVW5yZWYoUHJpdmF0ZVJlZkNvdW50RW50 cnkgKnJlZik7CiBzdGF0aWMgQnVmZmVyTG9ja01vZGUgU2hhcmVkQnVmZmVyR2V0TG9ja01vZGUo UHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZik7CiBzdGF0aWMgdm9pZCBTaGFyZWRCdWZmZXJTZXRM b2NrTW9kZShQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmLCBCdWZmZXJMb2NrTW9kZSBtb2RlKTsK LXN0YXRpYyBpbnQzMiBTaGFyZWRCdWZmZXJSZWZDb3VudChQcml2YXRlUmVmQ291bnRFbnRyeSAq cmVmKTsKIHN0YXRpYyBib29sIFNoYXJlZEJ1ZmZlckhhc1NpbmdsZVJlZihQcml2YXRlUmVmQ291 bnRFbnRyeSAqcmVmKTsKK3N0YXRpYyBpbnQzMiBTaGFyZWRCdWZmZXJSZWZDb3VudChQcml2YXRl UmVmQ291bnRFbnRyeSAqcmVmKTsKIAogLyogUGluIGxpbWl0aW5nICovCiBleHRlcm4gdWludDMy IEdldFBpbkxpbWl0KHZvaWQpOwotLSAKMi4zNC4xCgo= --000000000000204347064cc375ea Content-Type: application/x-patch; name="v2-0002-Refactoring-reference-counting.patch" Content-Disposition: attachment; filename="v2-0002-Refactoring-reference-counting.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmci9964 RnJvbSA1ZGU5MGZjZDE0ZTVkMzJjMzE2NWMzZTdhMjc4YWRhYTQ0ZjRkOWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmUgRmVsaXBlIDxvLmFsZXhhbmRyZS5mZWxpcGVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDExIE1hciAyMDI2IDEyOjA1OjUwICswMDAwClN1YmplY3Q6 IFtQQVRDSCAyLzVdIFJlZmFjdG9yaW5nIHJlZmVyZW5jZSBjb3VudGluZwoKVGhpcyBtb3ZlcyB0 aGUgcHJpdmF0ZSByZWZlcmVuY2UgY291bnQgbG9naWMgb3V0IG9mCmJhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmZm1nci5jIHRoYXQgaXMgc3RpbGwgODAwMCsKbGluZXMgbG9uZy4gUHJlcGFyaW5n IGZvciB0aGUgY2hhbmdlcyB0byBjb21lLgoKLS0tCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvTWFr ZWZpbGUgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j ICAgICAgICB8IDcwNCArKystLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1ncl9yZWZjbnQuYyB8IDYxNSArKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuaCB8ICA1OSArKwogNSBmaWxlcyBjaGFu Z2VkLCA3NTEgaW5zZXJ0aW9ucygrKSwgNjMyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuaAoKZGlm ZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDRlOTExMzk1ZmUuLmZkZGI3 Zjg2MWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNDMsMyAr NDMsNSBAQCBsaWIqLnBjCiAvUmVsZWFzZS8KIC90bXBfaW5zdGFsbC8KIC9wb3J0bG9jay8KKwor LioKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL01ha2Vm aWxlCmluZGV4IGZkN2M0MGRjYjAuLjZmNDU2NzRjYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L01ha2VmaWxlCkBAIC0yMCwzICsyMCw2IEBAIE9CSlMgPSBcCiAJbG9jYWxidWYubwogCiBpbmNs dWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCisKKyMgYnVmbWdyLmMgaW5j bHVkZXMgYnVmbWdyX3JlZmNudC5jIGZvciBpbmxpbmluZworYnVmbWdyLm86IGJ1Zm1ncl9yZWZj bnQuYyBidWZtZ3JfcmVmY250LmgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDA1NDZlZTAxOTMuLjgyYWYyODJmNzAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9haW8uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgImJ1Zm1ncl9yZWZjbnQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2xtZ3IuaCIKQEAgLTcwLDcgKzcxLDYgQEAKICNpbmNsdWRlICJ1dGlscy90aW1lc3Rh bXAuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKLQogLyogTm90ZTogdGhlc2Ug dHdvIG1hY3JvcyBvbmx5IHdvcmsgb24gc2hhcmVkIGJ1ZmZlcnMsIG5vdCBsb2NhbCBvbmVzISAq LwogI2RlZmluZSBCdWZIZHJHZXRCbG9jayhidWZIZHIpCSgoQmxvY2spIChCdWZmZXJCbG9ja3Mg KyAoKFNpemUpIChidWZIZHIpLT5idWZfaWQpICogQkxDS1NaKSkKICNkZWZpbmUgQnVmZmVyR2V0 TFNOKGJ1ZkhkcikJKFBhZ2VHZXRMU04oQnVmSGRyR2V0QmxvY2soYnVmSGRyKSkpCkBAIC05Myw0 MyArOTMsNiBAQAogICovCiAjZGVmaW5lIEJVRl9EUk9QX0ZVTExfU0NBTl9USFJFU0hPTEQJCSh1 aW50NjQpIChOQnVmZmVycyAvIDMyKQogCi0vKgotICogVGhpcyBpcyBzZXBhcmF0ZWQgb3V0IGZy b20gUHJpdmF0ZVJlZkNvdW50RW50cnkgdG8gYWxsb3cgZm9yIGNvcHlpbmcgYWxsCi0gKiB0aGUg ZGF0YSBtZW1iZXJzIHZpYSBzdHJ1Y3QgYXNzaWdubWVudC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3Qg UHJpdmF0ZVJlZkNvdW50RGF0YQotewotCS8qCi0JICogSG93IG1hbnkgdGltZXMgaGFzIHRoZSBi dWZmZXIgYmVlbiBwaW5uZWQgYnkgdGhpcyBiYWNrZW5kLgotCSAqLwotCWludDMyCQlyZWZjb3Vu dDsKLQotCS8qCi0JICogSXMgdGhlIGJ1ZmZlciBsb2NrZWQgYnkgdGhpcyBiYWNrZW5kPyBCVUZG RVJfTE9DS19VTkxPQ0sgaW5kaWNhdGVzIHRoYXQKLQkgKiB0aGUgYnVmZmVyIGlzIG5vdCBsb2Nr ZWQuCi0JICovCi0JQnVmZmVyTG9ja01vZGUgbG9ja21vZGU7Ci19IFByaXZhdGVSZWZDb3VudERh dGE7Ci0KLXR5cGVkZWYgc3RydWN0IFByaXZhdGVSZWZDb3VudEVudHJ5Ci17Ci0JLyoKLQkgKiBO b3RlIHRoYXQgdGhpcyBuZWVkcyB0byBiZSBzYW1lIGFzIHRoZSBlbnRyeSdzIGNvcnJlc3BvbmRp bmcKLQkgKiBQcml2YXRlUmVmQ291bnRBcnJheUtleXNbaV0sIGlmIHRoZSBlbnRyeSBpcyBzdG9y ZWQgaW4gdGhlIGFycmF5LiBXZQotCSAqIHN0b3JlIGl0IGluIGJvdGggcGxhY2VzIGFzIHRoaXMg aXMgdXNlZCBmb3IgdGhlIGhhc2h0YWJsZSBrZXkgYW5kCi0JICogYmVjYXVzZSBpdCBpcyBtb3Jl IGNvbnZlbmllbnQgKHBhc3NpbmcgYXJvdW5kIGEgUHJpdmF0ZVJlZkNvdW50RW50cnkKLQkgKiBz dWZmaWNlcyB0byBpZGVudGlmeSB0aGUgYnVmZmVyKSBhbmQgZmFzdGVyIChjaGVja2luZyB0aGUg a2V5cyBhcnJheSBpcwotCSAqIGZhc3RlciB3aGVuIGNoZWNraW5nIG1hbnkgZW50cmllcywgY2hl Y2tpbmcgdGhlIGVudHJ5IGlzIGZhc3RlciBpZiBqdXN0Ci0JICogY2hlY2tpbmcgYSBzaW5nbGUg ZW50cnkpLgotCSAqLwotCUJ1ZmZlcgkJYnVmZmVyOwotCi0JUHJpdmF0ZVJlZkNvdW50RGF0YSBk YXRhOwotfSBQcml2YXRlUmVmQ291bnRFbnRyeTsKLQotLyogNjQgYnl0ZXMsIGFib3V0IHRoZSBz aXplIG9mIGEgY2FjaGUgbGluZSBvbiBjb21tb24gc3lzdGVtcyAqLwotI2RlZmluZSBSRUZDT1VO VF9BUlJBWV9FTlRSSUVTIDgKLQogLyoKICAqIFN0YXR1cyBvZiBidWZmZXJzIHRvIGNoZWNrcG9p bnQgZm9yIGEgcGFydGljdWxhciB0YWJsZXNwYWNlLCB1c2VkCiAgKiBpbnRlcm5hbGx5IGluIEJ1 ZmZlclN5bmMuCkBAIC0yMTMsNTUgKzE3Niw2IEBAIGludAkJCWJhY2tlbmRfZmx1c2hfYWZ0ZXIg PSBERUZBVUxUX0JBQ0tFTkRfRkxVU0hfQUZURVI7CiAvKiBsb2NhbCBzdGF0ZSBmb3IgTG9ja0J1 ZmZlckZvckNsZWFudXAgKi8KIHN0YXRpYyBCdWZmZXJEZXNjICpQaW5Db3VudFdhaXRCdWYgPSBO VUxMOwogCi0vKgotICogQmFja2VuZC1Qcml2YXRlIHJlZmNvdW50IG1hbmFnZW1lbnQ6Ci0gKgot ICogRWFjaCBidWZmZXIgYWxzbyBoYXMgYSBwcml2YXRlIHJlZmNvdW50IHRoYXQga2VlcHMgdHJh Y2sgb2YgdGhlIG51bWJlciBvZgotICogdGltZXMgdGhlIGJ1ZmZlciBpcyBwaW5uZWQgaW4gdGhl IGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgaXMgc28gdGhhdCB0aGUKLSAqIHNoYXJlZCByZWZjb3Vu dCBuZWVkcyB0byBiZSBtb2RpZmllZCBvbmx5IG9uY2UgaWYgYSBidWZmZXIgaXMgcGlubmVkIG1v cmUKLSAqIHRoYW4gb25jZSBieSBhbiBpbmRpdmlkdWFsIGJhY2tlbmQuICBJdCdzIGFsc28gdXNl ZCB0byBjaGVjayB0aGF0IG5vCi0gKiBidWZmZXJzIGFyZSBzdGlsbCBwaW5uZWQgYXQgdGhlIGVu ZCBvZiB0cmFuc2FjdGlvbnMgYW5kIHdoZW4gZXhpdGluZy4gV2UKLSAqIGFsc28gdXNlIHRoaXMg bWVjaGFuaXNtIHRvIHRyYWNrIHdoZXRoZXIgdGhpcyBiYWNrZW5kIGhhcyBhIGJ1ZmZlciBsb2Nr ZWQsCi0gKiBhbmQsIGlmIHNvLCBpbiB3aGF0IG1vZGUuCi0gKgotICoKLSAqIFRvIGF2b2lkIC0g YXMgd2UgdXNlZCB0byAtIHJlcXVpcmluZyBhbiBhcnJheSB3aXRoIE5CdWZmZXJzIGVudHJpZXMg dG8ga2VlcAotICogdHJhY2sgb2YgbG9jYWwgYnVmZmVycywgd2UgdXNlIGEgc21hbGwgc2VxdWVu dGlhbGx5IHNlYXJjaGVkIGFycmF5Ci0gKiAoUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzLCB3aXRo IHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgc3RvcmVkIGluCi0gKiBQcml2YXRlUmVmQ291bnRBcnJh eSkgYW5kIGFuIG92ZXJmbG93IGhhc2ggdGFibGUgKFByaXZhdGVSZWZDb3VudEhhc2gpIHRvCi0g KiBrZWVwIHRyYWNrIG9mIGJhY2tlbmQgbG9jYWwgcGlucy4KLSAqCi0gKiBVbnRpbCBubyBtb3Jl IHRoYW4gUkVGQ09VTlRfQVJSQVlfRU5UUklFUyBidWZmZXJzIGFyZSBwaW5uZWQgYXQgb25jZSwg YWxsCi0gKiByZWZjb3VudHMgYXJlIGtlcHQgdHJhY2sgb2YgaW4gdGhlIGFycmF5OyBhZnRlciB0 aGF0LCBuZXcgYXJyYXkgZW50cmllcwotICogZGlzcGxhY2Ugb2xkIG9uZXMgaW50byB0aGUgaGFz aCB0YWJsZS4gVGhhdCB3YXkgYSBmcmVxdWVudGx5IHVzZWQgZW50cnkKLSAqIGNhbid0IGdldCAi c3R1Y2siIGluIHRoZSBoYXNodGFibGUgd2hpbGUgaW5mcmVxdWVudCBvbmVzIGNsb2cgdGhlIGFy cmF5LgotICoKLSAqIE5vdGUgdGhhdCBpbiBtb3N0IHNjZW5hcmlvcyB0aGUgbnVtYmVyIG9mIHBp bm5lZCBidWZmZXJzIHdpbGwgbm90IGV4Y2VlZAotICogUkVGQ09VTlRfQVJSQVlfRU5UUklFUy4K LSAqCi0gKgotICogVG8gZW50ZXIgYSBidWZmZXIgaW50byB0aGUgcmVmY291bnQgdHJhY2tpbmcg bWVjaGFuaXNtIGZpcnN0IHJlc2VydmUgYSBmcmVlCi0gKiBlbnRyeSB1c2luZyBSZXNlcnZlUHJp dmF0ZVJlZkNvdW50RW50cnkoKSBhbmQgdGhlbiBsYXRlciwgaWYgbmVjZXNzYXJ5LAotICogZmls bCBpdCB3aXRoIE5ld1ByaXZhdGVSZWZDb3VudEVudHJ5KCkuIFRoYXQgc3BsaXQgbGV0cyB1cyBh dm9pZCBkb2luZwotICogbWVtb3J5IGFsbG9jYXRpb25zIGluIE5ld1ByaXZhdGVSZWZDb3VudEVu dHJ5KCkgd2hpY2ggY2FuIGJlIGltcG9ydGFudAotICogYmVjYXVzZSBpbiBzb21lIHNjZW5hcmlv cyBpdCdzIGNhbGxlZCB3aXRoIGEgc3BpbmxvY2sgaGVsZC4uLgotICovCi1zdGF0aWMgQnVmZmVy IFByaXZhdGVSZWZDb3VudEFycmF5S2V5c1tSRUZDT1VOVF9BUlJBWV9FTlRSSUVTXTsKLXN0YXRp YyBzdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50RW50cnkgUHJpdmF0ZVJlZkNvdW50QXJyYXlbUkVGQ09V TlRfQVJSQVlfRU5UUklFU107Ci1zdGF0aWMgSFRBQiAqUHJpdmF0ZVJlZkNvdW50SGFzaCA9IE5V TEw7Ci1zdGF0aWMgaW50MzIgUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCA9IDA7Ci1zdGF0aWMg dWludDMyIFByaXZhdGVSZWZDb3VudENsb2NrID0gMDsKLXN0YXRpYyBpbnQJUmVzZXJ2ZWRSZWZD b3VudFNsb3QgPSAtMTsKLXN0YXRpYyBpbnQJUHJpdmF0ZVJlZkNvdW50RW50cnlMYXN0ID0gLTE7 Ci0KLXN0YXRpYyB1aW50MzIgTWF4UHJvcG9ydGlvbmFsUGluczsKLQotc3RhdGljIHZvaWQgUmVz ZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KHZvaWQpOwotc3RhdGljIFByaXZhdGVSZWZDb3VudEVu dHJ5ICpOZXdQcml2YXRlUmVmQ291bnRFbnRyeShCdWZmZXIgYnVmZmVyKTsKLXN0YXRpYyBQcml2 YXRlUmVmQ291bnRFbnRyeSAqR2V0UHJpdmF0ZVJlZkNvdW50RW50cnkoQnVmZmVyIGJ1ZmZlciwg Ym9vbCBkb19tb3ZlKTsKLXN0YXRpYyBpbmxpbmUgaW50MzIgR2V0UHJpdmF0ZVJlZkNvdW50KEJ1 ZmZlciBidWZmZXIpOwotc3RhdGljIHZvaWQgRm9yZ2V0UHJpdmF0ZVJlZkNvdW50RW50cnkoUHJp dmF0ZVJlZkNvdW50RW50cnkgKnJlZik7Ci0KIC8qIFJlc291cmNlT3duZXIgY2FsbGJhY2tzIHRv IGhvbGQgaW4tcHJvZ3Jlc3MgSS9PcyBhbmQgYnVmZmVyIHBpbnMgKi8KIHN0YXRpYyB2b2lkIFJl c093bmVyUmVsZWFzZUJ1ZmZlcklPKERhdHVtIHJlcyk7CiBzdGF0aWMgY2hhciAqUmVzT3duZXJQ cmludEJ1ZmZlcklPKERhdHVtIHJlcyk7CkBAIC0yODYsMzAxICsyMDAsNiBAQCBjb25zdCBSZXNv dXJjZU93bmVyRGVzYyBidWZmZXJfcmVzb3duZXJfZGVzYyA9CiAJLkRlYnVnUHJpbnQgPSBSZXNP d25lclByaW50QnVmZmVyCiB9OwogCi0vKgotICogRW5zdXJlIHRoYXQgdGhlIFByaXZhdGVSZWZD b3VudEFycmF5IGhhcyBzdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIG9uZSBtb3JlCi0gKiBlbnRy eS4gVGhpcyBoYXMgdG8gYmUgY2FsbGVkIGJlZm9yZSB1c2luZyBOZXdQcml2YXRlUmVmQ291bnRF bnRyeSgpIHRvIGZpbGwKLSAqIGEgbmV3IGVudHJ5IC0gYnV0IGl0J3MgcGVyZmVjdGx5IGZpbmUg dG8gbm90IHVzZSBhIHJlc2VydmVkIGVudHJ5LgotICovCi1zdGF0aWMgdm9pZAotUmVzZXJ2ZVBy aXZhdGVSZWZDb3VudEVudHJ5KHZvaWQpCi17Ci0JLyogQWxyZWFkeSByZXNlcnZlZCAob3IgZnJl ZWQpLCBub3RoaW5nIHRvIGRvICovCi0JaWYgKFJlc2VydmVkUmVmQ291bnRTbG90ICE9IC0xKQot CQlyZXR1cm47Ci0KLQkvKgotCSAqIEZpcnN0IHNlYXJjaCBmb3IgYSBmcmVlIGVudHJ5IHRoZSBh cnJheSwgdGhhdCdsbCBiZSBzdWZmaWNpZW50IGluIHRoZQotCSAqIG1ham9yaXR5IG9mIGNhc2Vz LgotCSAqLwotCXsKLQkJaW50CQkJaTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgUkVGQ09VTlRfQVJS QVlfRU5UUklFUzsgaSsrKQotCQl7Ci0JCQlpZiAoUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzW2ld ID09IEludmFsaWRCdWZmZXIpCi0JCQl7Ci0JCQkJUmVzZXJ2ZWRSZWZDb3VudFNsb3QgPSBpOwot Ci0JCQkJLyoKLQkJCQkgKiBXZSBjb3VsZCByZXR1cm4gaW1tZWRpYXRlbHksIGJ1dCBpdGVyYXRp bmcgdGlsbCB0aGUgZW5kIG9mCi0JCQkJICogdGhlIGFycmF5IGFsbG93cyBjb21waWxlci1hdXRv dmVjdG9yaXphdGlvbi4KLQkJCQkgKi8KLQkJCX0KLQkJfQotCi0JCWlmIChSZXNlcnZlZFJlZkNv dW50U2xvdCAhPSAtMSkKLQkJCXJldHVybjsKLQl9Ci0KLQkvKgotCSAqIE5vIGx1Y2suIEFsbCBh cnJheSBlbnRyaWVzIGFyZSBmdWxsLiBNb3ZlIG9uZSBhcnJheSBlbnRyeSBpbnRvIHRoZSBoYXNo Ci0JICogdGFibGUuCi0JICovCi0JewotCQkvKgotCQkgKiBNb3ZlIGVudHJ5IGZyb20gdGhlIGN1 cnJlbnQgY2xvY2sgcG9zaXRpb24gaW4gdGhlIGFycmF5IGludG8gdGhlCi0JCSAqIGhhc2h0YWJs ZS4gVXNlIHRoYXQgc2xvdC4KLQkJICovCi0JCWludAkJCXZpY3RpbV9zbG90OwotCQlQcml2YXRl UmVmQ291bnRFbnRyeSAqdmljdGltX2VudHJ5OwotCQlQcml2YXRlUmVmQ291bnRFbnRyeSAqaGFz aGVudDsKLQkJYm9vbAkJZm91bmQ7Ci0KLQkJLyogc2VsZWN0IHZpY3RpbSBzbG90ICovCi0JCXZp Y3RpbV9zbG90ID0gUHJpdmF0ZVJlZkNvdW50Q2xvY2srKyAlIFJFRkNPVU5UX0FSUkFZX0VOVFJJ RVM7Ci0JCXZpY3RpbV9lbnRyeSA9ICZQcml2YXRlUmVmQ291bnRBcnJheVt2aWN0aW1fc2xvdF07 Ci0JCVJlc2VydmVkUmVmQ291bnRTbG90ID0gdmljdGltX3Nsb3Q7Ci0KLQkJLyogQmV0dGVyIGJl IHVzZWQsIG90aGVyd2lzZSB3ZSBzaG91bGRuJ3QgZ2V0IGhlcmUuICovCi0JCUFzc2VydChQcml2 YXRlUmVmQ291bnRBcnJheUtleXNbdmljdGltX3Nsb3RdICE9IEludmFsaWRCdWZmZXIpOwotCQlB c3NlcnQoUHJpdmF0ZVJlZkNvdW50QXJyYXlbdmljdGltX3Nsb3RdLmJ1ZmZlciAhPSBJbnZhbGlk QnVmZmVyKTsKLQkJQXNzZXJ0KFByaXZhdGVSZWZDb3VudEFycmF5S2V5c1t2aWN0aW1fc2xvdF0g PT0gUHJpdmF0ZVJlZkNvdW50QXJyYXlbdmljdGltX3Nsb3RdLmJ1ZmZlcik7Ci0KLQkJLyogZW50 ZXIgdmljdGltIGFycmF5IGVudHJ5IGludG8gaGFzaHRhYmxlICovCi0JCWhhc2hlbnQgPSBoYXNo X3NlYXJjaChQcml2YXRlUmVmQ291bnRIYXNoLAotCQkJCQkJCSAgJlByaXZhdGVSZWZDb3VudEFy cmF5S2V5c1t2aWN0aW1fc2xvdF0sCi0JCQkJCQkJICBIQVNIX0VOVEVSLAotCQkJCQkJCSAgJmZv dW5kKTsKLQkJQXNzZXJ0KCFmb3VuZCk7Ci0JCS8qIG1vdmUgZGF0YSBmcm9tIHRoZSBlbnRyeSBp biB0aGUgYXJyYXkgdG8gdGhlIGhhc2ggZW50cnkgKi8KLQkJaGFzaGVudC0+ZGF0YSA9IHZpY3Rp bV9lbnRyeS0+ZGF0YTsKLQotCQkvKiBjbGVhciB0aGUgbm93IGZyZWUgYXJyYXkgc2xvdCAqLwot CQlQcml2YXRlUmVmQ291bnRBcnJheUtleXNbdmljdGltX3Nsb3RdID0gSW52YWxpZEJ1ZmZlcjsK LQkJdmljdGltX2VudHJ5LT5idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwotCi0JCS8qIGNsZWFyIHRo ZSB3aG9sZSBkYXRhIG1lbWJlciwganVzdCBmb3IgZnV0dXJlIHByb29maW5nICovCi0JCW1lbXNl dCgmdmljdGltX2VudHJ5LT5kYXRhLCAwLCBzaXplb2YodmljdGltX2VudHJ5LT5kYXRhKSk7Ci0J CXZpY3RpbV9lbnRyeS0+ZGF0YS5yZWZjb3VudCA9IDA7Ci0JCXZpY3RpbV9lbnRyeS0+ZGF0YS5s b2NrbW9kZSA9IEJVRkZFUl9MT0NLX1VOTE9DSzsKLQotCQlQcml2YXRlUmVmQ291bnRPdmVyZmxv d2VkKys7Ci0JfQotfQotCi0vKgotICogRmlsbCBhIHByZXZpb3VzbHkgcmVzZXJ2ZWQgcmVmY291 bnQgZW50cnkuCi0gKi8KLXN0YXRpYyBQcml2YXRlUmVmQ291bnRFbnRyeSAqCi1OZXdQcml2YXRl UmVmQ291bnRFbnRyeShCdWZmZXIgYnVmZmVyKQotewotCVByaXZhdGVSZWZDb3VudEVudHJ5ICpy ZXM7Ci0KLQkvKiBvbmx5IGFsbG93ZWQgdG8gYmUgY2FsbGVkIHdoZW4gYSByZXNlcnZhdGlvbiBo YXMgYmVlbiBtYWRlICovCi0JQXNzZXJ0KFJlc2VydmVkUmVmQ291bnRTbG90ICE9IC0xKTsKLQot CS8qIHVzZSB1cCB0aGUgcmVzZXJ2ZWQgZW50cnkgKi8KLQlyZXMgPSAmUHJpdmF0ZVJlZkNvdW50 QXJyYXlbUmVzZXJ2ZWRSZWZDb3VudFNsb3RdOwotCi0JLyogYW5kIGZpbGwgaXQgKi8KLQlQcml2 YXRlUmVmQ291bnRBcnJheUtleXNbUmVzZXJ2ZWRSZWZDb3VudFNsb3RdID0gYnVmZmVyOwotCXJl cy0+YnVmZmVyID0gYnVmZmVyOwotCXJlcy0+ZGF0YS5yZWZjb3VudCA9IDA7Ci0JcmVzLT5kYXRh LmxvY2ttb2RlID0gQlVGRkVSX0xPQ0tfVU5MT0NLOwotCi0JLyogdXBkYXRlIGNhY2hlIGZvciB0 aGUgbmV4dCBsb29rdXAgKi8KLQlQcml2YXRlUmVmQ291bnRFbnRyeUxhc3QgPSBSZXNlcnZlZFJl ZkNvdW50U2xvdDsKLQotCVJlc2VydmVkUmVmQ291bnRTbG90ID0gLTE7Ci0KLQlyZXR1cm4gcmVz OwotfQotCi0vKgotICogU2xvdy1wYXRoIGZvciBHZXRQcml2YXRlUmVmQ291bnRFbnRyeSgpLiBU aGlzIGlzIGJpZyBlbm91Z2ggdG8gbm90IGJlIHdvcnRoCi0gKiBpbmxpbmluZy4gVGhpcyBwYXJ0 aWN1bGFybHkgc2VlbXMgdG8gYmUgdHJ1ZSBpZiB0aGUgY29tcGlsZXIgaXMgY2FwYWJsZSBvZgot ICogYXV0by12ZWN0b3JpemluZyB0aGUgY29kZSwgYXMgdGhhdCBpbXBvc2VzIGFkZGl0aW9uYWwg c3RhY2stYWxpZ25tZW50Ci0gKiByZXF1aXJlbWVudHMgZXRjLgotICovCi1zdGF0aWMgcGdfbm9p bmxpbmUgUHJpdmF0ZVJlZkNvdW50RW50cnkgKgotR2V0UHJpdmF0ZVJlZkNvdW50RW50cnlTbG93 KEJ1ZmZlciBidWZmZXIsIGJvb2wgZG9fbW92ZSkKLXsKLQlQcml2YXRlUmVmQ291bnRFbnRyeSAq cmVzOwotCWludAkJCW1hdGNoID0gLTE7Ci0JaW50CQkJaTsKLQotCS8qCi0JICogRmlyc3Qgc2Vh cmNoIGZvciByZWZlcmVuY2VzIGluIHRoZSBhcnJheSwgdGhhdCdsbCBiZSBzdWZmaWNpZW50IGlu IHRoZQotCSAqIG1ham9yaXR5IG9mIGNhc2VzLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBSRUZD T1VOVF9BUlJBWV9FTlRSSUVTOyBpKyspCi0JewotCQlpZiAoUHJpdmF0ZVJlZkNvdW50QXJyYXlL ZXlzW2ldID09IGJ1ZmZlcikKLQkJewotCQkJbWF0Y2ggPSBpOwotCQkJLyogc2VlIFJlc2VydmVQ cml2YXRlUmVmQ291bnRFbnRyeSgpIGZvciB3aHkgd2UgZG9uJ3QgcmV0dXJuICovCi0JCX0KLQl9 Ci0KLQlpZiAobGlrZWx5KG1hdGNoICE9IC0xKSkKLQl7Ci0JCS8qIHVwZGF0ZSBjYWNoZSBmb3Ig dGhlIG5leHQgbG9va3VwICovCi0JCVByaXZhdGVSZWZDb3VudEVudHJ5TGFzdCA9IG1hdGNoOwot Ci0JCXJldHVybiAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbbWF0Y2hdOwotCX0KLQotCS8qCi0JICog QnkgaGVyZSB3ZSBrbm93IHRoYXQgdGhlIGJ1ZmZlciwgaWYgYWxyZWFkeSBwaW5uZWQsIGlzbid0 IHJlc2lkaW5nIGluCi0JICogdGhlIGFycmF5LgotCSAqCi0JICogT25seSBsb29rIHVwIHRoZSBi dWZmZXIgaW4gdGhlIGhhc2h0YWJsZSBpZiB3ZSd2ZSBwcmV2aW91c2x5IG92ZXJmbG93ZWQKLQkg KiBpbnRvIGl0LgotCSAqLwotCWlmIChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID09IDApCi0J CXJldHVybiBOVUxMOwotCi0JcmVzID0gaGFzaF9zZWFyY2goUHJpdmF0ZVJlZkNvdW50SGFzaCwg JmJ1ZmZlciwgSEFTSF9GSU5ELCBOVUxMKTsKLQotCWlmIChyZXMgPT0gTlVMTCkKLQkJcmV0dXJu IE5VTEw7Ci0JZWxzZSBpZiAoIWRvX21vdmUpCi0JewotCQkvKiBjYWxsZXIgZG9lc24ndCB3YW50 IHVzIHRvIG1vdmUgdGhlIGhhc2ggZW50cnkgaW50byB0aGUgYXJyYXkgKi8KLQkJcmV0dXJuIHJl czsKLQl9Ci0JZWxzZQotCXsKLQkJLyogbW92ZSBidWZmZXIgZnJvbSBoYXNodGFibGUgaW50byB0 aGUgZnJlZSBhcnJheSBzbG90ICovCi0JCWJvb2wJCWZvdW5kOwotCQlQcml2YXRlUmVmQ291bnRF bnRyeSAqZnJlZTsKLQotCQkvKiBFbnN1cmUgdGhlcmUncyBhIGZyZWUgYXJyYXkgc2xvdCAqLwot CQlSZXNlcnZlUHJpdmF0ZVJlZkNvdW50RW50cnkoKTsKLQotCQkvKiBVc2UgdXAgdGhlIHJlc2Vy dmVkIHNsb3QgKi8KLQkJQXNzZXJ0KFJlc2VydmVkUmVmQ291bnRTbG90ICE9IC0xKTsKLQkJZnJl ZSA9ICZQcml2YXRlUmVmQ291bnRBcnJheVtSZXNlcnZlZFJlZkNvdW50U2xvdF07Ci0JCUFzc2Vy dChQcml2YXRlUmVmQ291bnRBcnJheUtleXNbUmVzZXJ2ZWRSZWZDb3VudFNsb3RdID09IGZyZWUt PmJ1ZmZlcik7Ci0JCUFzc2VydChmcmVlLT5idWZmZXIgPT0gSW52YWxpZEJ1ZmZlcik7Ci0KLQkJ LyogYW5kIGZpbGwgaXQgKi8KLQkJZnJlZS0+YnVmZmVyID0gYnVmZmVyOwotCQlmcmVlLT5kYXRh ID0gcmVzLT5kYXRhOwotCQlQcml2YXRlUmVmQ291bnRBcnJheUtleXNbUmVzZXJ2ZWRSZWZDb3Vu dFNsb3RdID0gYnVmZmVyOwotCQkvKiB1cGRhdGUgY2FjaGUgZm9yIHRoZSBuZXh0IGxvb2t1cCAq LwotCQlQcml2YXRlUmVmQ291bnRFbnRyeUxhc3QgPSBtYXRjaDsKLQotCQlSZXNlcnZlZFJlZkNv dW50U2xvdCA9IC0xOwotCi0KLQkJLyogZGVsZXRlIGZyb20gaGFzaHRhYmxlICovCi0JCWhhc2hf c2VhcmNoKFByaXZhdGVSZWZDb3VudEhhc2gsICZidWZmZXIsIEhBU0hfUkVNT1ZFLCAmZm91bmQp OwotCQlBc3NlcnQoZm91bmQpOwotCQlBc3NlcnQoUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCA+ IDApOwotCQlQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkLS07Ci0KLQkJcmV0dXJuIGZyZWU7Ci0J fQotfQotCi0vKgotICogUmV0dXJuIHRoZSBQcml2YXRlUmVmQ291bnQgZW50cnkgZm9yIHRoZSBw YXNzZWQgYnVmZmVyLgotICoKLSAqIFJldHVybnMgTlVMTCBpZiBhIGJ1ZmZlciBkb2Vzbid0IGhh dmUgYSByZWZjb3VudCBlbnRyeS4gT3RoZXJ3aXNlLCBpZgotICogZG9fbW92ZSBpcyB0cnVlLCBh bmQgdGhlIGVudHJ5IHJlc2lkZXMgaW4gdGhlIGhhc2h0YWJsZSB0aGUgZW50cnkgaXMKLSAqIG9w dGltaXplZCBmb3IgZnJlcXVlbnQgYWNjZXNzIGJ5IG1vdmluZyBpdCB0byB0aGUgYXJyYXkuCi0g Ki8KLXN0YXRpYyBpbmxpbmUgUHJpdmF0ZVJlZkNvdW50RW50cnkgKgotR2V0UHJpdmF0ZVJlZkNv dW50RW50cnkoQnVmZmVyIGJ1ZmZlciwgYm9vbCBkb19tb3ZlKQotewotCUFzc2VydChCdWZmZXJJ c1ZhbGlkKGJ1ZmZlcikpOwotCUFzc2VydCghQnVmZmVySXNMb2NhbChidWZmZXIpKTsKLQotCS8q Ci0JICogSXQncyB2ZXJ5IGNvbW1vbiB0byBsb29rIHVwIHRoZSBzYW1lIGJ1ZmZlciByZXBlYXRl ZGx5LiBUbyBtYWtlIHRoYXQKLQkgKiBmYXN0LCB3ZSBoYXZlIGEgb25lLWVudHJ5IGNhY2hlLgot CSAqCi0JICogSW4gY29udHJhc3QgdG8gdGhlIGxvb3AgaW4gR2V0UHJpdmF0ZVJlZkNvdW50RW50 cnlTbG93KCksIGhlcmUgaXQKLQkgKiBmYXN0ZXIgdG8gY2hlY2sgUHJpdmF0ZVJlZkNvdW50QXJy YXlbXS5idWZmZXIsIGFzIGluIHRoZSBjYXNlIG9mIGEgaGl0Ci0JICogZmV3ZXIgYWRkcmVzc2Vz IGFyZSBjb21wdXRlZCBhbmQgZmV3ZXIgY2FjaGVsaW5lcyBhcmUgYWNjZXNzZWQuIFdoZXJlYXMK LQkgKiBpbiBHZXRQcml2YXRlUmVmQ291bnRFbnRyeVNsb3coKSdzIGNhc2UsIGNoZWNraW5nCi0J ICogUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzIHNhdmVzIGEgbG90IG9mIG1lbW9yeSBhY2Nlc3Nl cy4KLQkgKi8KLQlpZiAobGlrZWx5KFByaXZhdGVSZWZDb3VudEVudHJ5TGFzdCAhPSAtMSkgJiYK LQkJbGlrZWx5KFByaXZhdGVSZWZDb3VudEFycmF5W1ByaXZhdGVSZWZDb3VudEVudHJ5TGFzdF0u YnVmZmVyID09IGJ1ZmZlcikpCi0JewotCQlyZXR1cm4gJlByaXZhdGVSZWZDb3VudEFycmF5W1By aXZhdGVSZWZDb3VudEVudHJ5TGFzdF07Ci0JfQotCi0JLyoKLQkgKiBUaGUgY29kZSBmb3IgdGhl IGNhY2hlZCBsb29rdXAgaXMgc21hbGwgZW5vdWdoIHRvIGJlIHdvcnRoIGlubGluaW5nCi0JICog aW50byB0aGUgY2FsbGVyLiBJbiB0aGUgbWlzcyBjYXNlIGhvd2V2ZXIsIHRoYXQgZW1waXJpY2Fs bHkgZG9lc24ndAotCSAqIHNlZW0gd29ydGggaXQuCi0JICovCi0JcmV0dXJuIEdldFByaXZhdGVS ZWZDb3VudEVudHJ5U2xvdyhidWZmZXIsIGRvX21vdmUpOwotfQotCi0vKgotICogUmV0dXJucyBo b3cgbWFueSB0aW1lcyB0aGUgcGFzc2VkIGJ1ZmZlciBpcyBwaW5uZWQgYnkgdGhpcyBiYWNrZW5k LgotICoKLSAqIE9ubHkgd29ya3MgZm9yIHNoYXJlZCBtZW1vcnkgYnVmZmVycyEKLSAqLwotc3Rh dGljIGlubGluZSBpbnQzMgotR2V0UHJpdmF0ZVJlZkNvdW50KEJ1ZmZlciBidWZmZXIpCi17Ci0J UHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZjsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGJ1ZmZl cikpOwotCUFzc2VydCghQnVmZmVySXNMb2NhbChidWZmZXIpKTsKLQotCS8qCi0JICogTm90IG1v dmluZyB0aGUgZW50cnkgLSB0aGF0J3Mgb2sgZm9yIHRoZSBjdXJyZW50IHVzZXJzLCBidXQgd2Ug bWlnaHQKLQkgKiB3YW50IHRvIGNoYW5nZSB0aGlzIG9uZSBkYXkuCi0JICovCi0JcmVmID0gR2V0 UHJpdmF0ZVJlZkNvdW50RW50cnkoYnVmZmVyLCBmYWxzZSk7Ci0KLQlpZiAocmVmID09IE5VTEwp Ci0JCXJldHVybiAwOwotCXJldHVybiByZWYtPmRhdGEucmVmY291bnQ7Ci19Ci0KLS8qCi0gKiBS ZWxlYXNlIHJlc291cmNlcyB1c2VkIHRvIHRyYWNrIHRoZSByZWZlcmVuY2UgY291bnQgb2YgYSBi dWZmZXIgd2hpY2ggd2Ugbm8KLSAqIGxvbmdlciBoYXZlIHBpbm5lZCBhbmQgZG9uJ3Qgd2FudCB0 byBwaW4gYWdhaW4gaW1tZWRpYXRlbHkuCi0gKi8KLXN0YXRpYyB2b2lkCi1Gb3JnZXRQcml2YXRl UmVmQ291bnRFbnRyeShQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmKQotewotCUFzc2VydChyZWYt PmRhdGEucmVmY291bnQgPT0gMCk7Ci0JQXNzZXJ0KHJlZi0+ZGF0YS5sb2NrbW9kZSA9PSBCVUZG RVJfTE9DS19VTkxPQ0spOwotCi0JaWYgKHJlZiA+PSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbMF0g JiYKLQkJcmVmIDwgJlByaXZhdGVSZWZDb3VudEFycmF5W1JFRkNPVU5UX0FSUkFZX0VOVFJJRVNd KQotCXsKLQkJcmVmLT5idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwotCQlQcml2YXRlUmVmQ291bnRB cnJheUtleXNbcmVmIC0gUHJpdmF0ZVJlZkNvdW50QXJyYXldID0gSW52YWxpZEJ1ZmZlcjsKLQot Ci0JCS8qCi0JCSAqIE1hcmsgdGhlIGp1c3QgdXNlZCBlbnRyeSBhcyByZXNlcnZlZCAtIGluIG1h bnkgc2NlbmFyaW9zIHRoYXQKLQkJICogYWxsb3dzIHVzIHRvIGF2b2lkIGV2ZXIgaGF2aW5nIHRv IHNlYXJjaCB0aGUgYXJyYXkvaGFzaCBmb3IgZnJlZQotCQkgKiBlbnRyaWVzLgotCQkgKi8KLQkJ UmVzZXJ2ZWRSZWZDb3VudFNsb3QgPSByZWYgLSBQcml2YXRlUmVmQ291bnRBcnJheTsKLQl9Ci0J ZWxzZQotCXsKLQkJYm9vbAkJZm91bmQ7Ci0JCUJ1ZmZlcgkJYnVmZmVyID0gcmVmLT5idWZmZXI7 Ci0KLQkJaGFzaF9zZWFyY2goUHJpdmF0ZVJlZkNvdW50SGFzaCwgJmJ1ZmZlciwgSEFTSF9SRU1P VkUsICZmb3VuZCk7Ci0JCUFzc2VydChmb3VuZCk7Ci0JCUFzc2VydChQcml2YXRlUmVmQ291bnRP dmVyZmxvd2VkID4gMCk7Ci0JCVByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQtLTsKLQl9Ci19Ci0K IC8qCiAgKiBCdWZmZXJJc1Bpbm5lZAogICoJCVRydWUgaWZmIHRoZSBidWZmZXIgaXMgcGlubmVk IChhbHNvIGNoZWNrcyBmb3IgdmFsaWQgYnVmZmVyIG51bWJlcikuCkBAIC01OTYsNyArMjE1LDcg QEAgRm9yZ2V0UHJpdmF0ZVJlZkNvdW50RW50cnkoUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZikK IAkJQnVmZmVySXNMb2NhbChidWZudW0pID8gXAogCQkJKExvY2FsUmVmQ291bnRbLShidWZudW0p IC0gMV0gPiAwKSBcCiAJCTogXAotCShHZXRQcml2YXRlUmVmQ291bnQoYnVmbnVtKSA+IDApIFwK KwkoR2V0U2hhcmVkQnVmZmVyRW50cnkoYnVmbnVtKSAhPSBOVUxMKSBcCiApCiAKIApAQCAtNjUz LDcgKzI3Miw2IEBAIHN0YXRpYyB2b2lkIFJlbGF0aW9uQ29weVN0b3JhZ2VVc2luZ0J1ZmZlcihS ZWxGaWxlTG9jYXRvciBzcmNsb2NhdG9yLAogCQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGRz dGxvY2F0b3IsCiAJCQkJCQkJCQkJICAgRm9ya051bWJlciBmb3JrTnVtLCBib29sIHBlcm1hbmVu dCk7CiBzdGF0aWMgdm9pZCBBdFByb2NFeGl0X0J1ZmZlcnMoaW50IGNvZGUsIERhdHVtIGFyZyk7 Ci1zdGF0aWMgdm9pZCBDaGVja0ZvckJ1ZmZlckxlYWtzKHZvaWQpOwogI2lmZGVmIFVTRV9BU1NF UlRfQ0hFQ0tJTkcKIHN0YXRpYyB2b2lkIEFzc2VydE5vdENhdGFsb2dCdWZmZXJMb2NrKEJ1ZmZl ciBidWZmZXIsIEJ1ZmZlckxvY2tNb2RlIG1vZGUpOwogI2VuZGlmCkBAIC04MTIsNyArNDMwLDYg QEAgUmVhZFJlY2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051bWJlciBm b3JrTnVtLCBCbG9ja051bWJlciBibG9ja04KIAlBc3NlcnQoQnVmZmVySXNWYWxpZChyZWNlbnRf YnVmZmVyKSk7CiAKIAlSZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50UmVzb3VyY2VPd25lcik7 Ci0JUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CiAJSW5pdEJ1ZmZlclRhZygmdGFnLCAm cmxvY2F0b3IsIGZvcmtOdW0sIGJsb2NrTnVtKTsKIAogCWlmIChCdWZmZXJJc0xvY2FsKHJlY2Vu dF9idWZmZXIpKQpAQCAtMjExNSw3ICsxNzMyLDYgQEAgQnVmZmVyQWxsb2MoU01nclJlbGF0aW9u IHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsIEZvcmtOdW1iZXIgZm9ya051bSwKIAogCS8qIE1h a2Ugc3VyZSB3ZSB3aWxsIGhhdmUgcm9vbSB0byByZW1lbWJlciB0aGUgYnVmZmVyIHBpbiAqLwog CVJlc291cmNlT3duZXJFbmxhcmdlKEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKLQlSZXNlcnZlUHJp dmF0ZVJlZkNvdW50RW50cnkoKTsKIAogCS8qIGNyZWF0ZSBhIHRhZyBzbyB3ZSBjYW4gbG9va3Vw IHRoZSBidWZmZXIgKi8KIAlJbml0QnVmZmVyVGFnKCZuZXdUYWcsICZzbWdyLT5zbWdyX3Jsb2Nh dG9yLmxvY2F0b3IsIGZvcmtOdW0sIGJsb2NrTnVtKTsKQEAgLTIzMjcsNyArMTk0Myw3IEBAIHJl dHJ5OgogCQlVbmxvY2tCdWZIZHIoYnVmKTsKIAkJTFdMb2NrUmVsZWFzZShvbGRQYXJ0aXRpb25M b2NrKTsKIAkJLyogc2FmZXR5IGNoZWNrOiBzaG91bGQgZGVmaW5pdGVseSBub3QgYmUgb3VyICpv d24qIHBpbiAqLwotCQlpZiAoR2V0UHJpdmF0ZVJlZkNvdW50KEJ1ZmZlckRlc2NyaXB0b3JHZXRC dWZmZXIoYnVmKSkgPiAwKQorCQlpZiAoR2V0U2hhcmVkQnVmZmVyRW50cnkoQnVmZmVyRGVzY3Jp cHRvckdldEJ1ZmZlcihidWYpKSAhPSBOVUxMKQogCQkJZWxvZyhFUlJPUiwgImJ1ZmZlciBpcyBw aW5uZWQgaW4gSW52YWxpZGF0ZUJ1ZmZlciIpOwogCQlXYWl0SU8oYnVmKTsKIAkJZ290byByZXRy eTsKQEAgLTIzODAsNyArMTk5Niw3IEBAIEludmFsaWRhdGVWaWN0aW1CdWZmZXIoQnVmZmVyRGVz YyAqYnVmX2hkcikKIAlMV0xvY2sJICAgKnBhcnRpdGlvbl9sb2NrOwogCUJ1ZmZlclRhZwl0YWc7 CiAKLQlBc3NlcnQoR2V0UHJpdmF0ZVJlZkNvdW50KEJ1ZmZlckRlc2NyaXB0b3JHZXRCdWZmZXIo YnVmX2hkcikpID09IDEpOworCUFzc2VydChHZXRTaGFyZWRCdWZmZXJFbnRyeShCdWZmZXJEZXNj cmlwdG9yR2V0QnVmZmVyKGJ1Zl9oZHIpKSAhPSBOVUxMKTsKIAogCS8qIGhhdmUgYnVmZmVyIHBp bm5lZCwgc28gaXQncyBzYWZlIHRvIHJlYWQgdGFnIHdpdGhvdXQgbG9jayAqLwogCXRhZyA9IGJ1 Zl9oZHItPnRhZzsKQEAgLTI0NjEsNyArMjA3Nyw2IEBAIEdldFZpY3RpbUJ1ZmZlcihCdWZmZXJB Y2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgSU9Db250ZXh0IGlvX2NvbnRleHQpCiAJICogRW5zdXJl LCBiZWZvcmUgd2UgcGluIGEgdmljdGltIGJ1ZmZlciwgdGhhdCB0aGVyZSdzIGEgZnJlZSByZWZj b3VudAogCSAqIGVudHJ5IGFuZCByZXNvdXJjZSBvd25lciBzbG90IGZvciB0aGUgcGluLgogCSAq LwotCVJlc2VydmVQcml2YXRlUmVmQ291bnRFbnRyeSgpOwogCVJlc291cmNlT3duZXJFbmxhcmdl KEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKIAogCS8qIHdlIHJldHVybiBoZXJlIGlmIGEgcHJvc3Bl Y3RpdmUgdmljdGltIGJ1ZmZlciBnZXRzIHVzZWQgY29uY3VycmVudGx5ICovCkBAIC0yNTkxLDY0 ICsyMjA2LDYgQEAgYWdhaW46CiAJcmV0dXJuIGJ1ZjsKIH0KIAotLyoKLSAqIFJldHVybiB0aGUg bWF4aW11bSBudW1iZXIgb2YgYnVmZmVycyB0aGF0IGEgYmFja2VuZCBzaG91bGQgdHJ5IHRvIHBp biBvbmNlLAotICogdG8gYXZvaWQgZXhjZWVkaW5nIGl0cyBmYWlyIHNoYXJlLiAgVGhpcyBpcyB0 aGUgaGlnaGVzdCB2YWx1ZSB0aGF0Ci0gKiBHZXRBZGRpdGlvbmFsUGluTGltaXQoKSBjb3VsZCBl dmVyIHJldHVybi4gIE5vdGUgdGhhdCBpdCBtYXkgYmUgemVybyBvbiBhCi0gKiBzeXN0ZW0gd2l0 aCBhIHZlcnkgc21hbGwgYnVmZmVyIHBvb2wgcmVsYXRpdmUgdG8gbWF4X2Nvbm5lY3Rpb25zLgot ICovCi11aW50MzIKLUdldFBpbkxpbWl0KHZvaWQpCi17Ci0JcmV0dXJuIE1heFByb3BvcnRpb25h bFBpbnM7Ci19Ci0KLS8qCi0gKiBSZXR1cm4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGFkZGl0aW9u YWwgYnVmZmVycyB0aGF0IHRoaXMgYmFja2VuZCBzaG91bGQKLSAqIHBpbiBpZiBpdCB3YW50cyB0 byBzdGF5IHVuZGVyIHRoZSBwZXItYmFja2VuZCBsaW1pdCwgY29uc2lkZXJpbmcgdGhlIG51bWJl cgotICogb2YgYnVmZmVycyBpdCBoYXMgYWxyZWFkeSBwaW5uZWQuICBVbmxpa2UgTGltaXRBZGRp dGlvbmFsUGlucygpLCB0aGUgbGltaXQKLSAqIHJldHVybiBieSB0aGlzIGZ1bmN0aW9uIGNhbiBi ZSB6ZXJvLgotICovCi11aW50MzIKLUdldEFkZGl0aW9uYWxQaW5MaW1pdCh2b2lkKQotewotCXVp bnQzMgkJZXN0aW1hdGVkX3BpbnNfaGVsZDsKLQotCS8qCi0JICogV2UgZ2V0IHRoZSBudW1iZXIg b2YgIm92ZXJmbG93ZWQiIHBpbnMgZm9yIGZyZWUsIGJ1dCBkb24ndCBrbm93IHRoZQotCSAqIG51 bWJlciBvZiBwaW5zIGluIFByaXZhdGVSZWZDb3VudEFycmF5LiAgVGhlIGNvc3Qgb2YgY2FsY3Vs YXRpbmcgdGhhdAotCSAqIGV4YWN0bHkgZG9lc24ndCBzZWVtIHdvcnRoIGl0LCBzbyBqdXN0IGFz c3VtZSB0aGUgbWF4LgotCSAqLwotCWVzdGltYXRlZF9waW5zX2hlbGQgPSBQcml2YXRlUmVmQ291 bnRPdmVyZmxvd2VkICsgUkVGQ09VTlRfQVJSQVlfRU5UUklFUzsKLQotCS8qIElzIHRoaXMgYmFj a2VuZCBhbHJlYWR5IGhvbGRpbmcgbW9yZSB0aGFuIGl0cyBmYWlyIHNoYXJlPyAqLwotCWlmIChl c3RpbWF0ZWRfcGluc19oZWxkID4gTWF4UHJvcG9ydGlvbmFsUGlucykKLQkJcmV0dXJuIDA7Ci0K LQlyZXR1cm4gTWF4UHJvcG9ydGlvbmFsUGlucyAtIGVzdGltYXRlZF9waW5zX2hlbGQ7Ci19Ci0K LS8qCi0gKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHBpbnMgYSBiYXRjaCBvcGVyYXRpb24gbWF5IGFk ZGl0aW9uYWxseSBhY3F1aXJlLCB0bwotICogYXZvaWQgcnVubmluZyBvdXQgb2YgcGlubmFibGUg YnVmZmVycy4KLSAqCi0gKiBPbmUgYWRkaXRpb25hbCBwaW4gaXMgYWx3YXlzIGFsbG93ZWQsIG9u IHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIG9wZXJhdGlvbgotICogcmVxdWlyZXMgYXQgbGVhc3Qg b25lIHRvIG1ha2UgcHJvZ3Jlc3MuCi0gKi8KLXZvaWQKLUxpbWl0QWRkaXRpb25hbFBpbnModWlu dDMyICphZGRpdGlvbmFsX3BpbnMpCi17Ci0JdWludDMyCQlsaW1pdDsKLQotCWlmICgqYWRkaXRp b25hbF9waW5zIDw9IDEpCi0JCXJldHVybjsKLQotCWxpbWl0ID0gR2V0QWRkaXRpb25hbFBpbkxp bWl0KCk7Ci0JbGltaXQgPSBNYXgobGltaXQsIDEpOwotCWlmIChsaW1pdCA8ICphZGRpdGlvbmFs X3BpbnMpCi0JCSphZGRpdGlvbmFsX3BpbnMgPSBsaW1pdDsKLX0KLQogLyoKICAqIExvZ2ljIHNo YXJlZCBiZXR3ZWVuIEV4dGVuZEJ1ZmZlcmVkUmVsQnkoKSwgRXh0ZW5kQnVmZmVyZWRSZWxUbygp LiBKdXN0IHRvCiAgKiBhdm9pZCBkdXBsaWNhdGluZyB0aGUgdHJhY2luZyBhbmQgcmVscGVyc2lz dGVuY2UgcmVsYXRlZCBsb2dpYy4KQEAgLTI4MTIsNyArMjM2OSw2IEBAIEV4dGVuZEJ1ZmZlcmVk UmVsU2hhcmVkKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAKIAkJLyogaW4gY2FzZSB3ZSBu ZWVkIHRvIHBpbiBhbiBleGlzdGluZyBidWZmZXIgYmVsb3cgKi8KIAkJUmVzb3VyY2VPd25lckVu bGFyZ2UoQ3VycmVudFJlc291cmNlT3duZXIpOwotCQlSZXNlcnZlUHJpdmF0ZVJlZkNvdW50RW50 cnkoKTsKIAogCQlJbml0QnVmZmVyVGFnKCZ0YWcsICZCTVJfR0VUX1NNR1IoYm1yKS0+c21ncl9y bG9jYXRvci5sb2NhdG9yLCBmb3JrLAogCQkJCQkgIGZpcnN0X2Jsb2NrICsgaSk7CkBAIC0zMTg1 LDkgKzI3NDEsOCBAQCBQaW5CdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwKIAlQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmOwogCiAJQXNzZXJ0KCFC dWZmZXJJc0xvY2FsKGIpKTsKLQlBc3NlcnQoUmVzZXJ2ZWRSZWZDb3VudFNsb3QgIT0gLTEpOwog Ci0JcmVmID0gR2V0UHJpdmF0ZVJlZkNvdW50RW50cnkoYiwgdHJ1ZSk7CisJcmVmID0gR2V0U2hh cmVkQnVmZmVyRW50cnkoYik7CiAKIAlpZiAocmVmID09IE5VTEwpCiAJewpAQCAtMzI1Nyw4ICsy ODEyLDcgQEAgUGluQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg c3RyYXRlZ3ksCiAJCSAqLwogCQlyZXN1bHQgPSAocGdfYXRvbWljX3JlYWRfdTY0KCZidWYtPnN0 YXRlKSAmIEJNX1ZBTElEKSAhPSAwOwogCi0JCUFzc2VydChyZWYtPmRhdGEucmVmY291bnQgPiAw KTsKLQkJcmVmLT5kYXRhLnJlZmNvdW50Kys7CisJCVNoYXJlZEJ1ZmZlclJlZkV4aXN0aW5nKHJl Zik7CiAJCVJlc291cmNlT3duZXJSZW1lbWJlckJ1ZmZlcihDdXJyZW50UmVzb3VyY2VPd25lciwg Yik7CiAJfQogCkBAIC0zMjk2LDcgKzI4NTAsNyBAQCBQaW5CdWZmZXJfTG9ja2VkKEJ1ZmZlckRl c2MgKmJ1ZikKIAkgKiBBcyBleHBsYWluZWQsIFdlIGRvbid0IGV4cGVjdCBhbnkgcHJlZXhpc3Rp bmcgcGlucy4gVGhhdCBhbGxvd3MgdXMgdG8KIAkgKiBtYW5pcHVsYXRlIHRoZSBQcml2YXRlUmVm Q291bnQgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBzcGlubG9jawogCSAqLwotCUFzc2VydChHZXRQcml2 YXRlUmVmQ291bnRFbnRyeShCdWZmZXJEZXNjcmlwdG9yR2V0QnVmZmVyKGJ1ZiksIGZhbHNlKSA9 PSBOVUxMKTsKKwlBc3NlcnQoR2V0U2hhcmVkQnVmZmVyRW50cnkoQnVmZmVyRGVzY3JpcHRvckdl dEJ1ZmZlcihidWYpKSA9PSBOVUxMKTsKIAogCS8qCiAJICogU2luY2Ugd2UgaG9sZCB0aGUgYnVm ZmVyIHNwaW5sb2NrLCB3ZSBjYW4gdXBkYXRlIHRoZSBidWZmZXIgc3RhdGUgYW5kCkBAIC0zMzcz LDExICsyOTI3LDEwIEBAIFVucGluQnVmZmVyTm9Pd25lcihCdWZmZXJEZXNjICpidWYpCiAJQXNz ZXJ0KCFCdWZmZXJJc0xvY2FsKGIpKTsKIAogCS8qIG5vdCBtb3ZpbmcgYXMgd2UncmUgbGlrZWx5 IGRlbGV0aW5nIGl0IHNvb24gYW55d2F5ICovCi0JcmVmID0gR2V0UHJpdmF0ZVJlZkNvdW50RW50 cnkoYiwgZmFsc2UpOworCXJlZiA9IEdldFNoYXJlZEJ1ZmZlckVudHJ5KGIpOwogCUFzc2VydChy ZWYgIT0gTlVMTCk7Ci0JQXNzZXJ0KHJlZi0+ZGF0YS5yZWZjb3VudCA+IDApOwotCXJlZi0+ZGF0 YS5yZWZjb3VudC0tOwotCWlmIChyZWYtPmRhdGEucmVmY291bnQgPT0gMCkKKworCWlmIChTaGFy ZWRCdWZmZXJVbnJlZihyZWYpKQogCXsKIAkJdWludDY0CQlvbGRfYnVmX3N0YXRlOwogCkBAIC0z NDAyLDggKzI5NTUsNiBAQCBVbnBpbkJ1ZmZlck5vT3duZXIoQnVmZmVyRGVzYyAqYnVmKQogCQkv KiBTdXBwb3J0IExvY2tCdWZmZXJGb3JDbGVhbnVwKCkgKi8KIAkJaWYgKG9sZF9idWZfc3RhdGUg JiBCTV9QSU5fQ09VTlRfV0FJVEVSKQogCQkJV2FrZVBpbkNvdW50V2FpdGVyKGJ1Zik7Ci0KLQkJ Rm9yZ2V0UHJpdmF0ZVJlZkNvdW50RW50cnkocmVmKTsKIAl9CiB9CiAKQEAgLTM0MTQsMTAgKzI5 NjUsNyBAQCBVbnBpbkJ1ZmZlck5vT3duZXIoQnVmZmVyRGVzYyAqYnVmKQogaW5saW5lIHZvaWQK IFRyYWNrTmV3QnVmZmVyUGluKEJ1ZmZlciBidWYpCiB7Ci0JUHJpdmF0ZVJlZkNvdW50RW50cnkg KnJlZjsKLQotCXJlZiA9IE5ld1ByaXZhdGVSZWZDb3VudEVudHJ5KGJ1Zik7Ci0JcmVmLT5kYXRh LnJlZmNvdW50Kys7CisJU2hhcmVkQnVmZmVyQ3JlYXRlUmVmKGJ1Zik7CiAKIAlSZXNvdXJjZU93 bmVyUmVtZW1iZXJCdWZmZXIoQ3VycmVudFJlc291cmNlT3duZXIsIGJ1Zik7CiAKQEAgLTQwMzcs NyArMzU4NSw2IEBAIFN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3JlY2VudGx5 X3VzZWQsIFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJQnVmZmVyVGFnCXRhZzsKIAog CS8qIE1ha2Ugc3VyZSB3ZSBjYW4gaGFuZGxlIHRoZSBwaW4gKi8KLQlSZXNlcnZlUHJpdmF0ZVJl ZkNvdW50RW50cnkoKTsKIAlSZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50UmVzb3VyY2VPd25l cik7CiAKIAkvKgpAQCAtNDEwMSwxMSArMzY0OCw5IEBAIFN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9p ZCwgYm9vbCBza2lwX3JlY2VudGx5X3VzZWQsIFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQp CiB2b2lkCiBBdEVPWGFjdF9CdWZmZXJzKGJvb2wgaXNDb21taXQpCiB7Ci0JQ2hlY2tGb3JCdWZm ZXJMZWFrcygpOworCUNoZWNrUHJpdmF0ZVJlZkNvdW50TGVha3MoKTsKIAogCUF0RU9YYWN0X0xv Y2FsQnVmZmVycyhpc0NvbW1pdCk7Ci0KLQlBc3NlcnQoUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dl ZCA9PSAwKTsKIH0KIAogLyoKQEAgLTQxMTgsMjUgKzM2NjMsOCBAQCBBdEVPWGFjdF9CdWZmZXJz KGJvb2wgaXNDb21taXQpCiB2b2lkCiBJbml0QnVmZmVyTWFuYWdlckFjY2Vzcyh2b2lkKQogewot CUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JLyoKLQkgKiBBbiBhZHZpc29yeSBsaW1pdCBvbiB0aGUg bnVtYmVyIG9mIHBpbnMgZWFjaCBiYWNrZW5kIHNob3VsZCBob2xkLCBiYXNlZAotCSAqIG9uIHNo YXJlZF9idWZmZXJzIGFuZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcG9zc2li bGUuCi0JICogVGhhdCdzIHZlcnkgcGVzc2ltaXN0aWMsIGJ1dCBvdXRzaWRlIHRveS1zaXplZCBz aGFyZWRfYnVmZmVycyBpdCBzaG91bGQKLQkgKiBhbGxvdyBwbGVudHkgb2YgcGlucy4gIExpbWl0 QWRkaXRpb25hbFBpbnMoKSBhbmQKLQkgKiBHZXRBZGRpdGlvbmFsUGluTGltaXQoKSBjYW4gYmUg dXNlZCB0byBjaGVjayB0aGUgcmVtYWluaW5nIGJhbGFuY2UuCi0JICovCi0JTWF4UHJvcG9ydGlv bmFsUGlucyA9IE5CdWZmZXJzIC8gKE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyk7 Ci0KLQltZW1zZXQoJlByaXZhdGVSZWZDb3VudEFycmF5LCAwLCBzaXplb2YoUHJpdmF0ZVJlZkNv dW50QXJyYXkpKTsKLQltZW1zZXQoJlByaXZhdGVSZWZDb3VudEFycmF5S2V5cywgMCwgc2l6ZW9m KFByaXZhdGVSZWZDb3VudEFycmF5S2V5cykpOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihCdWZmZXIpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQcml2YXRlUmVmQ291bnRF bnRyeSk7CiAKLQlQcml2YXRlUmVmQ291bnRIYXNoID0gaGFzaF9jcmVhdGUoIlByaXZhdGVSZWZD b3VudCIsIDEwMCwgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JT KTsKKwlJbml0UHJpdmF0ZVJlZkNvdW50KCk7CiAKIAkvKgogCSAqIEF0UHJvY0V4aXRfQnVmZmVy cyBuZWVkcyBMV0xvY2sgYWNjZXNzLCBhbmQgdGhlcmVieSBoYXMgdG8gYmUgY2FsbGVkIGF0CkBA IC00MTU1LDExMiArMzY4MywxMyBAQCBBdFByb2NFeGl0X0J1ZmZlcnMoaW50IGNvZGUsIERhdHVt IGFyZykKIHsKIAlVbmxvY2tCdWZmZXJzKCk7CiAKLQlDaGVja0ZvckJ1ZmZlckxlYWtzKCk7CisJ Q2hlY2tQcml2YXRlUmVmQ291bnRMZWFrcygpOwogCiAJLyogbG9jYWxidWYuYyBuZWVkcyBhIGNo YW5jZSB0b28gKi8KIAlBdFByb2NFeGl0X0xvY2FsQnVmZmVycygpOwogfQogCi0vKgotICoJCUNo ZWNrRm9yQnVmZmVyTGVha3MgLSBlbnN1cmUgdGhpcyBiYWNrZW5kIGhvbGRzIG5vIGJ1ZmZlciBw aW5zCi0gKgotICoJCUFzIG9mIFBvc3RncmVTUUwgOC4wLCBidWZmZXIgcGlucyBzaG91bGQgZ2V0 IHJlbGVhc2VkIGJ5IHRoZQotICoJCVJlc291cmNlT3duZXIgbWVjaGFuaXNtLiAgVGhpcyByb3V0 aW5lIGlzIGp1c3QgYSBkZWJ1Z2dpbmcKLSAqCQljcm9zcy1jaGVjayB0aGF0IG5vIHBpbnMgcmVt YWluLgotICovCi1zdGF0aWMgdm9pZAotQ2hlY2tGb3JCdWZmZXJMZWFrcyh2b2lkKQotewogI2lm ZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQlpbnQJCQlSZWZDb3VudEVycm9ycyA9IDA7Ci0JUHJp dmF0ZVJlZkNvdW50RW50cnkgKnJlczsKLQlpbnQJCQlpOwotCWNoYXIJICAgKnM7Ci0KLQkvKiBj aGVjayB0aGUgYXJyYXkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgUkVGQ09VTlRfQVJSQVlfRU5UUklF UzsgaSsrKQotCXsKLQkJaWYgKFByaXZhdGVSZWZDb3VudEFycmF5S2V5c1tpXSAhPSBJbnZhbGlk QnVmZmVyKQotCQl7Ci0JCQlyZXMgPSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbaV07Ci0KLQkJCXMg PSBEZWJ1Z1ByaW50QnVmZmVyUmVmY291bnQocmVzLT5idWZmZXIpOwotCQkJZWxvZyhXQVJOSU5H LCAiYnVmZmVyIHJlZmNvdW50IGxlYWs6ICVzIiwgcyk7Ci0JCQlwZnJlZShzKTsKLQotCQkJUmVm Q291bnRFcnJvcnMrKzsKLQkJfQotCX0KLQotCS8qIGlmIG5lY2Vzc2FyeSBzZWFyY2ggdGhlIGhh c2ggKi8KLQlpZiAoUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCkKLQl7Ci0JCUhBU0hfU0VRX1NU QVRVUyBoc3RhdDsKLQotCQloYXNoX3NlcV9pbml0KCZoc3RhdCwgUHJpdmF0ZVJlZkNvdW50SGFz aCk7Ci0JCXdoaWxlICgocmVzID0gKFByaXZhdGVSZWZDb3VudEVudHJ5ICopIGhhc2hfc2VxX3Nl YXJjaCgmaHN0YXQpKSAhPSBOVUxMKQotCQl7Ci0JCQlzID0gRGVidWdQcmludEJ1ZmZlclJlZmNv dW50KHJlcy0+YnVmZmVyKTsKLQkJCWVsb2coV0FSTklORywgImJ1ZmZlciByZWZjb3VudCBsZWFr OiAlcyIsIHMpOwotCQkJcGZyZWUocyk7Ci0JCQlSZWZDb3VudEVycm9ycysrOwotCQl9Ci0JfQot Ci0JQXNzZXJ0KFJlZkNvdW50RXJyb3JzID09IDApOwotI2VuZGlmCi19Ci0KLSNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HCi0vKgotICogQ2hlY2sgZm9yIGV4Y2x1c2l2ZS1sb2NrZWQgY2F0YWxv ZyBidWZmZXJzLiAgVGhpcyBpcyB0aGUgY29yZSBvZgotICogQXNzZXJ0Q291bGRHZXRSZWxhdGlv bigpLgotICoKLSAqIEEgYmFja2VuZCB3b3VsZCBzZWxmLWRlYWRsb2NrIG9uIHRoZSBjb250ZW50 IGxvY2sgaWYgdGhlIGNhdGFsb2cgc2NhbiByZWFkCi0gKiB0aGUgZXhjbHVzaXZlLWxvY2tlZCBi dWZmZXIuICBUaGUgbWFpbiB0aHJlYXQgaXMgZXhjbHVzaXZlLWxvY2tlZCBidWZmZXJzCi0gKiBv ZiBjYXRhbG9ncyB1c2VkIGluIHJlbGNhY2hlLCBiZWNhdXNlIGEgY2F0Y2FjaGUgc2VhcmNoIG9u IGFueSBjYXRhbG9nIG1heQotICogYnVpbGQgdGhhdCBjYXRhbG9nJ3MgcmVsY2FjaGUgZW50cnku ICBXZSBkb24ndCBoYXZlIGFuIGludmVudG9yeSBvZgotICogY2F0YWxvZ3MgcmVsY2FjaGUgdXNl cywgc28ganVzdCBjaGVjayBidWZmZXJzIG9mIG1vc3QgY2F0YWxvZ3MuCi0gKgotICogSXQncyBi ZXR0ZXIgdG8gbWluaW1pemUgd2FpdHMgd2hpbGUgaG9sZGluZyBhbiBleGNsdXNpdmUgYnVmZmVy IGxvY2ssIHNvIGl0Ci0gKiB3b3VsZCBiZSBuaWNlIHRvIGJyb2FkZW4gdGhpcyBjaGVjayBub3Qg dG8gYmUgY2F0YWxvZy1zcGVjaWZpYy4gIEhvd2V2ZXIsCi0gKiBidHRleHRjbXAoKSBhY2Nlc3Nl cyBwZ19jb2xsYXRpb24sIGFuZCBub24tY29yZSBvcGNsYXNzZXMgbWlnaHQgc2ltaWxhcmx5Ci0g KiByZWFkIHRhYmxlcy4gIFRoYXQgaXMgZGVhZGxvY2stZnJlZSBhcyBsb25nIGFzIHRoZXJlJ3Mg bm8gbG9vcCBpbiB0aGUKLSAqIGRlcGVuZGVuY3kgZ3JhcGg6IG1vZGlmeWluZyB0YWJsZSBBIG1h eSBjYXVzZSBhbiBvcGNsYXNzIHRvIHJlYWQgdGFibGUgQiwKLSAqIGJ1dCBpdCBtdXN0IG5vdCBj YXVzZSBhIHJlYWQgb2YgdGFibGUgQS4KLSAqLwotdm9pZAotQXNzZXJ0QnVmZmVyTG9ja3NQZXJt aXRDYXRhbG9nUmVhZCh2b2lkKQotewotCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXM7Ci0KLQkv KiBjaGVjayB0aGUgYXJyYXkgKi8KLQlmb3IgKGludCBpID0gMDsgaSA8IFJFRkNPVU5UX0FSUkFZ X0VOVFJJRVM7IGkrKykKLQl7Ci0JCWlmIChQcml2YXRlUmVmQ291bnRBcnJheUtleXNbaV0gIT0g SW52YWxpZEJ1ZmZlcikKLQkJewotCQkJcmVzID0gJlByaXZhdGVSZWZDb3VudEFycmF5W2ldOwot Ci0JCQlpZiAocmVzLT5idWZmZXIgPT0gSW52YWxpZEJ1ZmZlcikKLQkJCQljb250aW51ZTsKLQot CQkJQXNzZXJ0Tm90Q2F0YWxvZ0J1ZmZlckxvY2socmVzLT5idWZmZXIsIHJlcy0+ZGF0YS5sb2Nr bW9kZSk7Ci0JCX0KLQl9Ci0KLQkvKiBpZiBuZWNlc3Nhcnkgc2VhcmNoIHRoZSBoYXNoICovCi0J aWYgKFByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQpCi0JewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0 YXQ7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmaHN0YXQsIFByaXZhdGVSZWZDb3VudEhhc2gpOwotCQl3 aGlsZSAoKHJlcyA9IChQcml2YXRlUmVmQ291bnRFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhz dGF0KSkgIT0gTlVMTCkKLQkJewotCQkJQXNzZXJ0Tm90Q2F0YWxvZ0J1ZmZlckxvY2socmVzLT5i dWZmZXIsIHJlcy0+ZGF0YS5sb2NrbW9kZSk7Ci0JCX0KLQl9Ci19Ci0KIHN0YXRpYyB2b2lkCiBB c3NlcnROb3RDYXRhbG9nQnVmZmVyTG9jayhCdWZmZXIgYnVmZmVyLCBCdWZmZXJMb2NrTW9kZSBt b2RlKQogewpAQCAtNDMxMiw4ICszNzQxLDEwIEBAIERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChC dWZmZXIgYnVmZmVyKQogCX0KIAllbHNlCiAJeworCQlQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVm ID0gR2V0U2hhcmVkQnVmZmVyRW50cnkoYnVmZmVyKTsKKwogCQlidWYgPSBHZXRCdWZmZXJEZXNj cmlwdG9yKGJ1ZmZlciAtIDEpOwotCQlsb2Njb3VudCA9IEdldFByaXZhdGVSZWZDb3VudChidWZm ZXIpOworCQlsb2Njb3VudCA9IHJlZiA/IFNoYXJlZEJ1ZmZlclJlZkNvdW50KHJlZikgOiAwOwog CQliYWNrZW5kID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAl9CiAKQEAgLTUxMDAsNyArNDUzMSw2 IEBAIEZsdXNoUmVsYXRpb25CdWZmZXJzKFJlbGF0aW9uIHJlbCkKIAkJCQllcnJvcl9jb250ZXh0 X3N0YWNrID0gJmVycmNhbGxiYWNrOwogCiAJCQkJLyogTWFrZSBzdXJlIHdlIGNhbiBoYW5kbGUg dGhlIHBpbiAqLwotCQkJCVJlc2VydmVQcml2YXRlUmVmQ291bnRFbnRyeSgpOwogCQkJCVJlc291 cmNlT3duZXJFbmxhcmdlKEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKIAogCQkJCS8qCkBAIC01MTM2 LDcgKzQ1NjYsNiBAQCBGbHVzaFJlbGF0aW9uQnVmZmVycyhSZWxhdGlvbiByZWwpCiAJCQljb250 aW51ZTsKIAogCQkvKiBNYWtlIHN1cmUgd2UgY2FuIGhhbmRsZSB0aGUgcGluICovCi0JCVJlc2Vy dmVQcml2YXRlUmVmQ291bnRFbnRyeSgpOwogCQlSZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50 UmVzb3VyY2VPd25lcik7CiAKIAkJYnVmX3N0YXRlID0gTG9ja0J1ZkhkcihidWZIZHIpOwpAQCAt NTIzMSw3ICs0NjYwLDYgQEAgRmx1c2hSZWxhdGlvbnNBbGxCdWZmZXJzKFNNZ3JSZWxhdGlvbiAq c21ncnMsIGludCBucmVscykKIAkJCWNvbnRpbnVlOwogCiAJCS8qIE1ha2Ugc3VyZSB3ZSBjYW4g aGFuZGxlIHRoZSBwaW4gKi8KLQkJUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CiAJCVJl c291cmNlT3duZXJFbmxhcmdlKEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKIAogCQlidWZfc3RhdGUg PSBMb2NrQnVmSGRyKGJ1Zkhkcik7CkBAIC01NDU3LDcgKzQ4ODUsNiBAQCBGbHVzaERhdGFiYXNl QnVmZmVycyhPaWQgZGJpZCkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIE1ha2Ugc3VyZSB3ZSBjYW4g aGFuZGxlIHRoZSBwaW4gKi8KLQkJUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CiAJCVJl c291cmNlT3duZXJFbmxhcmdlKEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKIAogCQlidWZfc3RhdGUg PSBMb2NrQnVmSGRyKGJ1Zkhkcik7CkBAIC01NTMyLDE3ICs0OTU5LDE4IEBAIFVubG9ja1JlbGVh c2VCdWZmZXIoQnVmZmVyIGJ1ZmZlcikKIHZvaWQKIEluY3JCdWZmZXJSZWZDb3VudChCdWZmZXIg YnVmZmVyKQogewotCUFzc2VydChCdWZmZXJJc1Bpbm5lZChidWZmZXIpKTsKIAlSZXNvdXJjZU93 bmVyRW5sYXJnZShDdXJyZW50UmVzb3VyY2VPd25lcik7CiAJaWYgKEJ1ZmZlcklzTG9jYWwoYnVm ZmVyKSkKKwl7CisJCUFzc2VydChMb2NhbFJlZkNvdW50Wy1idWZmZXIgLSAxXSA+IDApOwogCQlM b2NhbFJlZkNvdW50Wy1idWZmZXIgLSAxXSsrOworCX0KIAllbHNlCiAJewotCQlQcml2YXRlUmVm Q291bnRFbnRyeSAqcmVmOworCQlQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmID0gR2V0U2hhcmVk QnVmZmVyRW50cnkoYnVmZmVyKTsKIAotCQlyZWYgPSBHZXRQcml2YXRlUmVmQ291bnRFbnRyeShi dWZmZXIsIHRydWUpOwogCQlBc3NlcnQocmVmICE9IE5VTEwpOwotCQlyZWYtPmRhdGEucmVmY291 bnQrKzsKKwkJU2hhcmVkQnVmZmVyUmVmRXhpc3RpbmcocmVmKTsKIAl9CiAJUmVzb3VyY2VPd25l clJlbWVtYmVyQnVmZmVyKEN1cnJlbnRSZXNvdXJjZU93bmVyLCBidWZmZXIpOwogfQpAQCAtNTU2 MSwxMSArNDk4OSw5IEBAIE1hcmtTaGFyZWRCdWZmZXJEaXJ0eUhpbnQoQnVmZmVyIGJ1ZmZlciwg QnVmZmVyRGVzYyAqYnVmSGRyLCB1aW50NjQgbG9ja3N0YXRlLAogewogCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKLQlBc3NlcnQoR2V0UHJpdmF0ZVJlZkNvdW50KGJ1ZmZl cikgPiAwKTsKLQorCUFzc2VydChHZXRTaGFyZWRCdWZmZXJFbnRyeShidWZmZXIpICE9IE5VTEwp OwogCS8qIGhlcmUsIGVpdGhlciBzaGFyZS1leGNsdXNpdmUgb3IgZXhjbHVzaXZlIGxvY2sgaXMg T0sgKi8KLQlBc3NlcnQoQnVmZmVyTG9ja0hlbGRCeU1lSW5Nb2RlKGJ1ZkhkciwgQlVGRkVSX0xP Q0tfRVhDTFVTSVZFKSB8fAotCQkgICBCdWZmZXJMb2NrSGVsZEJ5TWVJbk1vZGUoYnVmSGRyLCBC VUZGRVJfTE9DS19TSEFSRV9FWENMVVNJVkUpKTsKKwlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1l KGJ1ZmZlcikpOwogCiAJLyoKIAkgKiBUaGlzIHJvdXRpbmUgbWlnaHQgZ2V0IGNhbGxlZCBtYW55 IHRpbWVzIG9uIHRoZSBzYW1lIHBhZ2UsIGlmIHdlIGFyZQpAQCAtNTc3NywxMiArNTIwMywxMiBA QCBCdWZmZXJMb2NrQWNxdWlyZShCdWZmZXIgYnVmZmVyLCBCdWZmZXJEZXNjICpidWZfaGRyLCBC dWZmZXJMb2NrTW9kZSBtb2RlKQogCSAqIEdldCByZWZlcmVuY2UgdG8gdGhlIHJlZmNvdW50IGVu dHJ5IGJlZm9yZSB3ZSBob2xkIHRoZSBsb2NrLCBpdCBzZWVtcwogCSAqIGJldHRlciB0byBkbyBi ZWZvcmUgaG9sZGluZyB0aGUgbG9jay4KIAkgKi8KLQllbnRyeSA9IEdldFByaXZhdGVSZWZDb3Vu dEVudHJ5KGJ1ZmZlciwgdHJ1ZSk7CisJZW50cnkgPSBHZXRTaGFyZWRCdWZmZXJFbnRyeShidWZm ZXIpOwogCiAJLyoKIAkgKiBXZSBiZXR0ZXIgbm90IGFscmVhZHkgaG9sZCBhIGxvY2sgb24gdGhl IGJ1ZmZlci4KIAkgKi8KLQlBc3NlcnQoZW50cnktPmRhdGEubG9ja21vZGUgPT0gQlVGRkVSX0xP Q0tfVU5MT0NLKTsKKwlBc3NlcnQoU2hhcmVkQnVmZmVyR2V0TG9ja01vZGUoZW50cnkpID09IEJV RkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkvKgogCSAqIExvY2sgb3V0IGNhbmNlbC9kaWUgaW50ZXJy dXB0cyB1bnRpbCB3ZSBleGl0IHRoZSBjb2RlIHNlY3Rpb24gcHJvdGVjdGVkCkBAIC01ODcxLDcg KzUyOTcsNyBAQCBCdWZmZXJMb2NrQWNxdWlyZShCdWZmZXIgYnVmZmVyLCBCdWZmZXJEZXNjICpi dWZfaGRyLCBCdWZmZXJMb2NrTW9kZSBtb2RlKQogCX0KIAogCS8qIFJlbWVtYmVyIHRoYXQgd2Ug bm93IGhvbGQgdGhpcyBsb2NrICovCi0JZW50cnktPmRhdGEubG9ja21vZGUgPSBtb2RlOworCVNo YXJlZEJ1ZmZlclNldExvY2tNb2RlKGVudHJ5LCBtb2RlKTsKIAogCS8qCiAJICogRml4IHRoZSBw cm9jZXNzIHdhaXQgc2VtYXBob3JlJ3MgY291bnQgZm9yIGFueSBhYnNvcmJlZCB3YWtldXBzLgpA QCAtNTkyMiw3ICs1MzQ4LDcgQEAgQnVmZmVyTG9ja1VubG9jayhCdWZmZXIgYnVmZmVyLCBCdWZm ZXJEZXNjICpidWZfaGRyKQogc3RhdGljIGJvb2wKIEJ1ZmZlckxvY2tDb25kaXRpb25hbChCdWZm ZXIgYnVmZmVyLCBCdWZmZXJEZXNjICpidWZfaGRyLCBCdWZmZXJMb2NrTW9kZSBtb2RlKQogewot CVByaXZhdGVSZWZDb3VudEVudHJ5ICplbnRyeSA9IEdldFByaXZhdGVSZWZDb3VudEVudHJ5KGJ1 ZmZlciwgdHJ1ZSk7CisJUHJpdmF0ZVJlZkNvdW50RW50cnkgKmVudHJ5ID0gR2V0U2hhcmVkQnVm ZmVyRW50cnkoYnVmZmVyKTsKIAlib29sCQltdXN0d2FpdDsKIAogCS8qCkBAIC01OTMwLDcgKzUz NTYsNyBAQCBCdWZmZXJMb2NrQ29uZGl0aW9uYWwoQnVmZmVyIGJ1ZmZlciwgQnVmZmVyRGVzYyAq YnVmX2hkciwgQnVmZmVyTG9ja01vZGUgbW9kZSkKIAkgKiBhbHJlYWR5IGhhcyBsb2NrZWQsIHJl dHVybiBmYWxzZSwgaW5kZXBlbmRlbnQgb2YgdGhlIGV4aXN0aW5nIGFuZAogCSAqIGRlc2lyZWQg bG9jayBsZXZlbC4KIAkgKi8KLQlpZiAoZW50cnktPmRhdGEubG9ja21vZGUgIT0gQlVGRkVSX0xP Q0tfVU5MT0NLKQorCWlmIChTaGFyZWRCdWZmZXJHZXRMb2NrTW9kZShlbnRyeSkgIT0gQlVGRkVS X0xPQ0tfVU5MT0NLKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKgpAQCAtNTk1MCw3ICs1Mzc2LDcg QEAgQnVmZmVyTG9ja0NvbmRpdGlvbmFsKEJ1ZmZlciBidWZmZXIsIEJ1ZmZlckRlc2MgKmJ1Zl9o ZHIsIEJ1ZmZlckxvY2tNb2RlIG1vZGUpCiAJfQogCWVsc2UKIAl7Ci0JCWVudHJ5LT5kYXRhLmxv Y2ttb2RlID0gbW9kZTsKKwkJU2hhcmVkQnVmZmVyU2V0TG9ja01vZGUoZW50cnksIG1vZGUpOwog CX0KIAogCXJldHVybiAhbXVzdHdhaXQ7CkBAIC02MTYwLDExICs1NTg2LDExIEBAIEJ1ZmZlckxv Y2tEaXNvd25JbnRlcm5hbChCdWZmZXIgYnVmZmVyLCBCdWZmZXJEZXNjICpidWZfaGRyKQogCUJ1 ZmZlckxvY2tNb2RlIG1vZGU7CiAJUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZjsKIAotCXJlZiA9 IEdldFByaXZhdGVSZWZDb3VudEVudHJ5KGJ1ZmZlciwgZmFsc2UpOworCXJlZiA9IEdldFNoYXJl ZEJ1ZmZlckVudHJ5KGJ1ZmZlcik7CiAJaWYgKHJlZiA9PSBOVUxMKQogCQllbG9nKEVSUk9SLCAi bG9jayAlZCBpcyBub3QgaGVsZCIsIGJ1ZmZlcik7Ci0JbW9kZSA9IHJlZi0+ZGF0YS5sb2NrbW9k ZTsKLQlyZWYtPmRhdGEubG9ja21vZGUgPSBCVUZGRVJfTE9DS19VTkxPQ0s7CisJbW9kZSA9IFNo YXJlZEJ1ZmZlckdldExvY2tNb2RlKHJlZik7CisJU2hhcmVkQnVmZmVyU2V0TG9ja01vZGUocmVm LCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCiAJcmV0dXJuIG1vZGU7CiB9CkBAIC02Mzk4LDEyICs1 ODI0LDEyIEBAIHN0YXRpYyBib29sCiBCdWZmZXJMb2NrSGVsZEJ5TWVJbk1vZGUoQnVmZmVyRGVz YyAqYnVmX2hkciwgQnVmZmVyTG9ja01vZGUgbW9kZSkKIHsKIAlQcml2YXRlUmVmQ291bnRFbnRy eSAqZW50cnkgPQotCQlHZXRQcml2YXRlUmVmQ291bnRFbnRyeShCdWZmZXJEZXNjcmlwdG9yR2V0 QnVmZmVyKGJ1Zl9oZHIpLCBmYWxzZSk7CisJCUdldFNoYXJlZEJ1ZmZlckVudHJ5KEJ1ZmZlckRl c2NyaXB0b3JHZXRCdWZmZXIoYnVmX2hkcikpOwogCiAJaWYgKCFlbnRyeSkKIAkJcmV0dXJuIGZh bHNlOwogCWVsc2UKLQkJcmV0dXJuIGVudHJ5LT5kYXRhLmxvY2ttb2RlID09IG1vZGU7CisJCXJl dHVybiBTaGFyZWRCdWZmZXJHZXRMb2NrTW9kZShlbnRyeSkgPT0gbW9kZTsKIH0KIAogLyoKQEAg LTY0MTYsMTIgKzU4NDIsMTIgQEAgc3RhdGljIGJvb2wKIEJ1ZmZlckxvY2tIZWxkQnlNZShCdWZm ZXJEZXNjICpidWZfaGRyKQogewogCVByaXZhdGVSZWZDb3VudEVudHJ5ICplbnRyeSA9Ci0JCUdl dFByaXZhdGVSZWZDb3VudEVudHJ5KEJ1ZmZlckRlc2NyaXB0b3JHZXRCdWZmZXIoYnVmX2hkciks IGZhbHNlKTsKKwkJR2V0U2hhcmVkQnVmZmVyRW50cnkoQnVmZmVyRGVzY3JpcHRvckdldEJ1ZmZl cihidWZfaGRyKSk7CiAKIAlpZiAoIWVudHJ5KQogCQlyZXR1cm4gZmFsc2U7CiAJZWxzZQotCQly ZXR1cm4gZW50cnktPmRhdGEubG9ja21vZGUgIT0gQlVGRkVSX0xPQ0tfVU5MT0NLOworCQlyZXR1 cm4gU2hhcmVkQnVmZmVyR2V0TG9ja01vZGUoZW50cnkpICE9IEJVRkZFUl9MT0NLX1VOTE9DSzsK IH0KIAogLyoKQEAgLTY1MTcsOSArNTk0MywxMyBAQCBDaGVja0J1ZmZlcklzUGlubmVkT25jZShC dWZmZXIgYnVmZmVyKQogCX0KIAllbHNlCiAJewotCQlpZiAoR2V0UHJpdmF0ZVJlZkNvdW50KGJ1 ZmZlcikgIT0gMSkKLQkJCWVsb2coRVJST1IsICJpbmNvcnJlY3QgbG9jYWwgcGluIGNvdW50OiAl ZCIsCi0JCQkJIEdldFByaXZhdGVSZWZDb3VudChidWZmZXIpKTsKKwkJeworCQkJUHJpdmF0ZVJl ZkNvdW50RW50cnkgKnJlZiA9IEdldFNoYXJlZEJ1ZmZlckVudHJ5KGJ1ZmZlcik7CisKKwkJCWlm ICghcmVmIHx8ICFTaGFyZWRCdWZmZXJIYXNTaW5nbGVSZWYocmVmKSkKKwkJCQllbG9nKEVSUk9S LCAiaW5jb3JyZWN0IHBpbiBjb3VudDogJWQiLAorCQkJCQkgcmVmID8gU2hhcmVkQnVmZmVyUmVm Q291bnQocmVmKSA6IDApOworCQl9CiAJfQogfQogCkBAIC02NzAwLDcgKzYxMzAsNyBAQCBIb2xk aW5nQnVmZmVyUGluVGhhdERlbGF5c1JlY292ZXJ5KHZvaWQpCiAJaWYgKGJ1ZmlkIDwgMCkKIAkJ cmV0dXJuIGZhbHNlOwogCi0JaWYgKEdldFByaXZhdGVSZWZDb3VudChidWZpZCArIDEpID4gMCkK KwlpZiAoR2V0U2hhcmVkQnVmZmVyRW50cnkoYnVmaWQgKyAxKSAhPSBOVUxMKQogCQlyZXR1cm4g dHJ1ZTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTY3MzUsMTAgKzYxNjUsMTMgQEAgQ29uZGl0aW9u YWxMb2NrQnVmZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVyKQogCX0KIAogCS8qIFRoZXJlIHNo b3VsZCBiZSBleGFjdGx5IG9uZSBsb2NhbCBwaW4gKi8KLQlyZWZjb3VudCA9IEdldFByaXZhdGVS ZWZDb3VudChidWZmZXIpOwotCUFzc2VydChyZWZjb3VudCk7Ci0JaWYgKHJlZmNvdW50ICE9IDEp Ci0JCXJldHVybiBmYWxzZTsKKwl7CisJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYgPSBHZXRT aGFyZWRCdWZmZXJFbnRyeShidWZmZXIpOworCisJCUFzc2VydChyZWYgIT0gTlVMTCk7CisJCWlm ICghU2hhcmVkQnVmZmVySGFzU2luZ2xlUmVmKHJlZikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQog CiAJLyogVHJ5IHRvIGFjcXVpcmUgbG9jayAqLwogCWlmICghQ29uZGl0aW9uYWxMb2NrQnVmZmVy KGJ1ZmZlcikpCkBAIC02NzkwLDggKzYyMjMsMTIgQEAgSXNCdWZmZXJDbGVhbnVwT0soQnVmZmVy IGJ1ZmZlcikKIAl9CiAKIAkvKiBUaGVyZSBzaG91bGQgYmUgZXhhY3RseSBvbmUgbG9jYWwgcGlu ICovCi0JaWYgKEdldFByaXZhdGVSZWZDb3VudChidWZmZXIpICE9IDEpCi0JCXJldHVybiBmYWxz ZTsKKwl7CisJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYgPSBHZXRTaGFyZWRCdWZmZXJFbnRy eShidWZmZXIpOworCisJCWlmICghU2hhcmVkQnVmZmVySGFzU2luZ2xlUmVmKHJlZikpCisJCQly ZXR1cm4gZmFsc2U7CisJfQogCiAJYnVmSGRyID0gR2V0QnVmZmVyRGVzY3JpcHRvcihidWZmZXIg LSAxKTsKIApAQCAtNjgyNywxMiArNjI2NCwxMiBAQCBTaGFyZWRCdWZmZXJCZWdpblNldEhpbnRC aXRzKEJ1ZmZlciBidWZmZXIsIEJ1ZmZlckRlc2MgKmJ1Zl9oZHIsIHVpbnQ2NCAqbG9ja3N0YQog CVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWY7CiAJQnVmZmVyTG9ja01vZGUgbW9kZTsKIAotCXJl ZiA9IEdldFByaXZhdGVSZWZDb3VudEVudHJ5KGJ1ZmZlciwgdHJ1ZSk7CisJcmVmID0gR2V0U2hh cmVkQnVmZmVyRW50cnkoYnVmZmVyKTsKIAogCWlmIChyZWYgPT0gTlVMTCkKIAkJZWxvZyhFUlJP UiwgImJ1ZmZlciBpcyBub3QgcGlubmVkIik7CiAKLQltb2RlID0gcmVmLT5kYXRhLmxvY2ttb2Rl OworCW1vZGUgPSBTaGFyZWRCdWZmZXJHZXRMb2NrTW9kZShyZWYpOwogCWlmIChtb2RlID09IEJV RkZFUl9MT0NLX1VOTE9DSykKIAkJZWxvZyhFUlJPUiwgImJ1ZmZlciBpcyBub3QgbG9ja2VkIik7 CiAKQEAgLTY4NzQsNyArNjMxMSw3IEBAIFNoYXJlZEJ1ZmZlckJlZ2luU2V0SGludEJpdHMoQnVm ZmVyIGJ1ZmZlciwgQnVmZmVyRGVzYyAqYnVmX2hkciwgdWludDY0ICpsb2Nrc3RhCiAJCWlmIChs aWtlbHkocGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTY0KCZidWZfaGRyLT5zdGF0ZSwKIAkJ CQkJCQkJCQkJCSAgJm9sZF9zdGF0ZSwgZGVzaXJlZF9zdGF0ZSkpKQogCQl7Ci0JCQlyZWYtPmRh dGEubG9ja21vZGUgPSBCVUZGRVJfTE9DS19TSEFSRV9FWENMVVNJVkU7CisJCQlTaGFyZWRCdWZm ZXJTZXRMb2NrTW9kZShyZWYsIEJVRkZFUl9MT0NLX1NIQVJFX0VYQ0xVU0lWRSk7CiAJCQkqbG9j a3N0YXRlID0gZGVzaXJlZF9zdGF0ZTsKIAogCQkJcmV0dXJuIHRydWU7CkBAIC03NjQ3LDcgKzcw ODQsNyBAQCBSZXNPd25lclJlbGVhc2VCdWZmZXIoRGF0dW0gcmVzKQogCXsKIAkJUHJpdmF0ZVJl ZkNvdW50RW50cnkgKnJlZjsKIAotCQlyZWYgPSBHZXRQcml2YXRlUmVmQ291bnRFbnRyeShidWZm ZXIsIGZhbHNlKTsKKwkJcmVmID0gR2V0U2hhcmVkQnVmZmVyRW50cnkoYnVmZmVyKTsKIAogCQkv KiBub3QgaGF2aW5nIGEgcHJpdmF0ZSByZWZjb3VudCB3b3VsZCBpbXBseSByZXNvd25lciBjb3Jy dXB0aW9uICovCiAJCUFzc2VydChyZWYgIT0gTlVMTCk7CkBAIC03NjU2LDcgKzcwOTMsNyBAQCBS ZXNPd25lclJlbGVhc2VCdWZmZXIoRGF0dW0gcmVzKQogCQkgKiBJZiB0aGUgYnVmZmVyIHdhcyBs b2NrZWQgYXQgdGhlIHRpbWUgb2YgdGhlIHJlc293bmVyIHJlbGVhc2UsCiAJCSAqIHJlbGVhc2Ug dGhlIGxvY2sgbm93LiBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBhZnRlciBlcnJvcnMuCiAJCSAq LwotCQlpZiAocmVmLT5kYXRhLmxvY2ttb2RlICE9IEJVRkZFUl9MT0NLX1VOTE9DSykKKwkJaWYg KFNoYXJlZEJ1ZmZlckdldExvY2tNb2RlKHJlZikgIT0gQlVGRkVSX0xPQ0tfVU5MT0NLKQogCQl7 CiAJCQlCdWZmZXJEZXNjICpidWYgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGJ1ZmZlciAtIDEpOwog CkBAIC03NzQ5LDcgKzcxODYsNiBAQCBFdmljdFVucGlubmVkQnVmZmVyKEJ1ZmZlciBidWYsIGJv b2wgKmJ1ZmZlcl9mbHVzaGVkKQogCiAJLyogTWFrZSBzdXJlIHdlIGNhbiBwaW4gdGhlIGJ1ZmZl ci4gKi8KIAlSZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50UmVzb3VyY2VPd25lcik7Ci0JUmVz ZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CiAKIAlkZXNjID0gR2V0QnVmZmVyRGVzY3JpcHRv cihidWYgLSAxKTsKIAlMb2NrQnVmSGRyKGRlc2MpOwpAQCAtNzc5MCw3ICs3MjI2LDYgQEAgRXZp Y3RBbGxVbnBpbm5lZEJ1ZmZlcnMoaW50MzIgKmJ1ZmZlcnNfZXZpY3RlZCwgaW50MzIgKmJ1ZmZl cnNfZmx1c2hlZCwKIAkJCWNvbnRpbnVlOwogCiAJCVJlc291cmNlT3duZXJFbmxhcmdlKEN1cnJl bnRSZXNvdXJjZU93bmVyKTsKLQkJUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CiAKIAkJ TG9ja0J1ZkhkcihkZXNjKTsKIApAQCAtNzg0NCw3ICs3Mjc5LDYgQEAgRXZpY3RSZWxVbnBpbm5l ZEJ1ZmZlcnMoUmVsYXRpb24gcmVsLCBpbnQzMiAqYnVmZmVyc19ldmljdGVkLAogCiAJCS8qIE1h a2Ugc3VyZSB3ZSBjYW4gcGluIHRoZSBidWZmZXIuICovCiAJCVJlc291cmNlT3duZXJFbmxhcmdl KEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKLQkJUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7 CiAKIAkJYnVmX3N0YXRlID0gTG9ja0J1ZkhkcihkZXNjKTsKIApAQCAtNzkzNiw3ICs3MzcwLDYg QEAgTWFya0RpcnR5VW5waW5uZWRCdWZmZXIoQnVmZmVyIGJ1ZiwgYm9vbCAqYnVmZmVyX2FscmVh ZHlfZGlydHkpCiAKIAkvKiBNYWtlIHN1cmUgd2UgY2FuIHBpbiB0aGUgYnVmZmVyLiAqLwogCVJl c291cmNlT3duZXJFbmxhcmdlKEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKLQlSZXNlcnZlUHJpdmF0 ZVJlZkNvdW50RW50cnkoKTsKIAogCWRlc2MgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGJ1ZiAtIDEp OwogCUxvY2tCdWZIZHIoZGVzYyk7CkBAIC03OTg5LDcgKzc0MjIsNiBAQCBNYXJrRGlydHlSZWxV bnBpbm5lZEJ1ZmZlcnMoUmVsYXRpb24gcmVsLAogCiAJCS8qIE1ha2Ugc3VyZSB3ZSBjYW4gcGlu IHRoZSBidWZmZXIuICovCiAJCVJlc291cmNlT3duZXJFbmxhcmdlKEN1cnJlbnRSZXNvdXJjZU93 bmVyKTsKLQkJUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CiAKIAkJYnVmX3N0YXRlID0g TG9ja0J1ZkhkcihkZXNjKTsKIApAQCAtODA0MSw3ICs3NDczLDYgQEAgTWFya0RpcnR5QWxsVW5w aW5uZWRCdWZmZXJzKGludDMyICpidWZmZXJzX2RpcnRpZWQsCiAJCQljb250aW51ZTsKIAogCQlS ZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50UmVzb3VyY2VPd25lcik7Ci0JCVJlc2VydmVQcml2 YXRlUmVmQ291bnRFbnRyeSgpOwogCiAJCUxvY2tCdWZIZHIoZGVzYyk7CiAKQEAgLTg3NDAsMyAr ODE3MSwxMiBAQCBjb25zdCBQZ0Fpb0hhbmRsZUNhbGxiYWNrcyBhaW9fbG9jYWxfYnVmZmVyX3Jl YWR2X2NiID0gewogCS5jb21wbGV0ZV9sb2NhbCA9IGxvY2FsX2J1ZmZlcl9yZWFkdl9jb21wbGV0 ZSwKIAkucmVwb3J0ID0gYnVmZmVyX3JlYWR2X3JlcG9ydCwKIH07CisKKworLyoKKyAqIEludGVu dGlvbmFsbHkgaW5jbHVkZWQgYXQgdGhlIGJvdHRvbSBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4g aW5saW5lIAorICogZnVuY3Rpb25zIGJ1dCBkZXZlbG9wZXJzIGFyZSBmb3JjZWQgdG8gdXNlIGFj Y2Vzc29ycy4KKyAqIGJ1Zm1nci5jIHNob3VsZCBub3QgYmUgY29uY2VybmVkIHdpdGggYnVmbWdy X3JlZmNudC5jIGltcGxlbWVudGF0aW9uCisgKiBkZXRhaWxzLgorICovCisgI2luY2x1ZGUgImJ1 Zm1ncl9yZWZjbnQuYyIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1ncl9yZWZjbnQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mZWY4Zjk4MDM3Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyX3JlZmNudC5j CkBAIC0wLDAgKzEsNjE1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBidWZtZ3JfcmVm Y250LmMKKyAqCSAgQmFja2VuZC1wcml2YXRlIGJ1ZmZlciByZWZjb3VudCB0cmFja2luZworICoK KyAqIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIGJ1Zm1nci5jIHRvIGFsbG93 IHRoZSBjb21waWxlcgorICogdG8gaW5saW5lIGZ1bmN0aW9ucy4gRG8gbm90IGNvbXBpbGUgdGhp cyBmaWxlIHNlcGFyYXRlbHkuCisgKgorICogRWFjaCBidWZmZXIgaGFzIGEgcHJpdmF0ZSByZWZj b3VudCB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YKKyAqIHRpbWVzIHRoZSBidWZm ZXIgaXMgcGlubmVkIGluIHRoZSBjdXJyZW50IHByb2Nlc3MuICBUaGlzIGlzIHNvIHRoYXQgdGhl CisgKiBzaGFyZWQgcmVmY291bnQgbmVlZHMgdG8gYmUgbW9kaWZpZWQgb25seSBvbmNlIGlmIGEg YnVmZmVyIGlzIHBpbm5lZCBtb3JlCisgKiB0aGFuIG9uY2UgYnkgYW4gaW5kaXZpZHVhbCBiYWNr ZW5kLiBUaGlzIG1lY2hhbmlzbSBpcyBhbHNvIHVzZWQgdG8gdHJhY2sKKyAqIHdoZXRoZXIgdGhp cyBiYWNrZW5kIGhhcyBhIGJ1ZmZlciBsb2NrZWQsIGFuZCwgaWYgc28sIGluIHdoYXQgbW9kZS4K KyAqCisgKiBUbyBhdm9pZCAtIGFzIHdlIHVzZWQgdG8gLSByZXF1aXJpbmcgYW4gYXJyYXkgd2l0 aCBOQnVmZmVycyBlbnRyaWVzIHRvIGtlZXAKKyAqIHRyYWNrIG9mIGxvY2FsIGJ1ZmZlcnMsIHdl IHVzZSBhIHNtYWxsIHNlcXVlbnRpYWxseSBzZWFyY2hlZCBhcnJheQorICogKFByaXZhdGVSZWZD b3VudEFycmF5S2V5cywgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIHN0b3JlZCBpbgorICog UHJpdmF0ZVJlZkNvdW50QXJyYXkpIGFuZCBhbiBvdmVyZmxvdyBoYXNoIHRhYmxlIChQcml2YXRl UmVmQ291bnRIYXNoKSB0bworICoga2VlcCB0cmFjayBvZiBiYWNrZW5kIGxvY2FsIHBpbnMuCisg KgorICogVW50aWwgbm8gbW9yZSB0aGFuIFJFRkNPVU5UX0FSUkFZX0VOVFJJRVMgYnVmZmVycyBh cmUgcGlubmVkIGF0IG9uY2UsIGFsbAorICogcmVmY291bnRzIGFyZSBrZXB0IHRyYWNrIG9mIGlu IHRoZSBhcnJheTsgYWZ0ZXIgdGhhdCwgbmV3IGFycmF5IGVudHJpZXMKKyAqIGRpc3BsYWNlIG9s ZCBvbmVzIGludG8gdGhlIGhhc2ggdGFibGUuIFRoYXQgd2F5IGEgZnJlcXVlbnRseSB1c2VkIGVu dHJ5CisgKiBjYW4ndCBnZXQgInN0dWNrIiBpbiB0aGUgaGFzaHRhYmxlIHdoaWxlIGluZnJlcXVl bnQgb25lcyBjbG9nIHRoZSBhcnJheS4KKyAqCisgKiBUaGlzIHdhcyBpbml0aWFsbHkgZGVzaWdu ZWQgdHJ5aW5nIHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUKKyAqIG51bWJlciBv ZiBwaW5uZWQgYnVmZmVycyBpcyBleHBlY3RlZCB0byBub3QgZXhjZWVkIFJFRkNPVU5UX0FSUkFZ X0VOVFJJRVMuCisgKiBIb3dldmVyIHRoaXMgbWlnaHQgbm90IGJlIHRoZSBjYXNlIHdpdGggdGhl IGludHJvZHVjdGlvbiBvZiBwcmVmZXRjaGluZy4KKyAqCisgKiBUbyBlbnRlciBhIGJ1ZmZlciBp bnRvIHRoZSByZWZjb3VudCB0cmFja2luZyBtZWNoYW5pc20gZmlyc3QgcmVzZXJ2ZSBhIGZyZWUK KyAqIGVudHJ5IHVzaW5nIFJlc2VydmVQcml2YXRlUmVmQ291bnRFbnRyeSgpIGFuZCB0aGVuIGxh dGVyLCBpZiBuZWNlc3NhcnksCisgKiBmaWxsIGl0IHdpdGggTmV3UHJpdmF0ZVJlZkNvdW50RW50 cnkoKS4gVGhhdCBzcGxpdCBsZXRzIHVzIGF2b2lkIGRvaW5nCisgKiBtZW1vcnkgYWxsb2NhdGlv bnMgaW4gTmV3UHJpdmF0ZVJlZkNvdW50RW50cnkoKSB3aGljaCBjYW4gYmUgaW1wb3J0YW50Cisg KiBiZWNhdXNlIGluIHNvbWUgc2NlbmFyaW9zIGl0J3MgY2FsbGVkIHdpdGggYSBzcGlubG9jayBo ZWxkLi4uCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5U SUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQu YworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNo LmgiCisKKy8qIFN0cnVjdHVyZSBkZWZpbml0aW9ucyAtIGludGVybmFsIHRvIHRoaXMgZmlsZSAq LwordHlwZWRlZiBzdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50RGF0YQoreworCWludDMyCQlyZWZjb3Vu dDsKKwlCdWZmZXJMb2NrTW9kZSBsb2NrbW9kZTsKK30gUHJpdmF0ZVJlZkNvdW50RGF0YTsKKwor c3RydWN0IFByaXZhdGVSZWZDb3VudEVudHJ5Cit7CisJQnVmZmVyCQlidWZmZXI7CisJUHJpdmF0 ZVJlZkNvdW50RGF0YSBkYXRhOworfTsKKworc3RydWN0IFByaXZhdGVSZWZDb3VudEl0ZXJhdG9y Cit7CisJaW50CQkJYXJyYXlfaW5kZXg7CisJYm9vbAkJaW5faGFzaDsKKwlIQVNIX1NFUV9TVEFU VVMgKmhhc2hfc3RhdHVzOworfTsKKworLyogUHJpdmF0ZSByZWZjb3VudCBhcnJheSBhbmQga2V5 cyAqLworI2RlZmluZSBSRUZDT1VOVF9BUlJBWV9FTlRSSUVTIDgKK3N0YXRpYyBCdWZmZXIgUHJp dmF0ZVJlZkNvdW50QXJyYXlLZXlzW1JFRkNPVU5UX0FSUkFZX0VOVFJJRVNdOworc3RhdGljIHN0 cnVjdCBQcml2YXRlUmVmQ291bnRFbnRyeSBQcml2YXRlUmVmQ291bnRBcnJheVtSRUZDT1VOVF9B UlJBWV9FTlRSSUVTXTsKKworLyogT3ZlcmZsb3cgaGFzaCB0YWJsZSBmb3Igd2hlbiBhcnJheSBp cyBmdWxsICovCitzdGF0aWMgSFRBQiAqUHJpdmF0ZVJlZkNvdW50SGFzaCA9IE5VTEw7CisKKy8q IENvdW50IG9mIGVudHJpZXMgdGhhdCBoYXZlIG92ZXJmbG93ZWQgaW50byB0aGUgaGFzaCB0YWJs ZSAqLworc3RhdGljIGludDMyIFByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQgPSAwOworCisvKiBD bG9jayBoYW5kIGZvciBzZWxlY3RpbmcgdmljdGltIHdoZW4gYXJyYXkgaXMgZnVsbCAqLworc3Rh dGljIHVpbnQzMiBQcml2YXRlUmVmQ291bnRDbG9jayA9IDA7CisKKy8qIFJlc2VydmVkIHNsb3Qg aW5kZXgsIG9yIC0xIGlmIG5vbmUgcmVzZXJ2ZWQgKi8KK3N0YXRpYyBpbnQJUmVzZXJ2ZWRSZWZD b3VudFNsb3QgPSAtMTsKKworLyogQ2FjaGUgZm9yIGxhc3QgYWNjZXNzZWQgZW50cnkgKi8KK3N0 YXRpYyBpbnQJUHJpdmF0ZVJlZkNvdW50RW50cnlMYXN0ID0gLTE7CisKKy8qIEFkdmlzb3J5IGxp bWl0IG9uIHRoZSBudW1iZXIgb2YgcGlucyBlYWNoIGJhY2tlbmQgc2hvdWxkIGhvbGQgKi8KK3N0 YXRpYyB1aW50MzIgTWF4UHJvcG9ydGlvbmFsUGlucyA9IDA7CisKKy8qIEZvcndhcmQgZGVjbGFy YXRpb25zICovCitzdGF0aWMgdm9pZCBSZXNlcnZlUHJpdmF0ZVJlZkNvdW50RW50cnkodm9pZCk7 CitzdGF0aWMgUHJpdmF0ZVJlZkNvdW50RW50cnkgKk5ld1ByaXZhdGVSZWZDb3VudEVudHJ5KEJ1 ZmZlciBidWZmZXIpOworc3RhdGljIHBnX25vaW5saW5lIFByaXZhdGVSZWZDb3VudEVudHJ5ICpH ZXRQcml2YXRlUmVmQ291bnRFbnRyeVNsb3coQnVmZmVyIGJ1ZmZlciwgYm9vbCBkb19tb3ZlKTsK KworLyoKKyAqIEluaXRpYWxpemUgcHJpdmF0ZSByZWZjb3VudCB0cmFja2luZyBmb3IgdGhpcyBi YWNrZW5kLgorICovCit2b2lkCitJbml0UHJpdmF0ZVJlZkNvdW50KHZvaWQpCit7CisJSEFTSENU TAkJaGFzaF9jdGw7CisKKworCS8qCisJICogQW4gYWR2aXNvcnkgbGltaXQgb24gdGhlIG51bWJl ciBvZiBwaW5zIGVhY2ggYmFja2VuZCBzaG91bGQgaG9sZCwgYmFzZWQKKwkgKiBvbiBzaGFyZWRf YnVmZmVycyBhbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHBvc3NpYmxlLgor CSAqIFRoYXQncyB2ZXJ5IHBlc3NpbWlzdGljLCBidXQgb3V0c2lkZSB0b3ktc2l6ZWQgc2hhcmVk X2J1ZmZlcnMgaXQgc2hvdWxkCisJICogYWxsb3cgcGxlbnR5IG9mIHBpbnMuICBMaW1pdEFkZGl0 aW9uYWxQaW5zKCkgYW5kCisJICogR2V0QWRkaXRpb25hbFBpbkxpbWl0KCkgY2FuIGJlIHVzZWQg dG8gY2hlY2sgdGhlIHJlbWFpbmluZyBiYWxhbmNlLgorCSAqLworCSBNYXhQcm9wb3J0aW9uYWxQ aW5zID0gTkJ1ZmZlcnMgLyAoTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTKTsKKwor CW1lbXNldCgmUHJpdmF0ZVJlZkNvdW50QXJyYXksIDAsIHNpemVvZihQcml2YXRlUmVmQ291bnRB cnJheSkpOworCW1lbXNldCgmUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzLCAwLCBzaXplb2YoUHJp dmF0ZVJlZkNvdW50QXJyYXlLZXlzKSk7CisKKwloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKEJ1 ZmZlcik7CisJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFByaXZhdGVSZWZDb3VudEVudHJ5 KTsKKworCVByaXZhdGVSZWZDb3VudEhhc2ggPSBoYXNoX2NyZWF0ZSgiUHJpdmF0ZVJlZkNvdW50 IiwgMTAwLCAmaGFzaF9jdGwsCisJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwor fQorCisvKgorICogRW5zdXJlIHRoYXQgdGhlIFByaXZhdGVSZWZDb3VudEFycmF5IGhhcyBzdWZm aWNpZW50IHNwYWNlIHRvIHN0b3JlIG9uZSBtb3JlCisgKiBlbnRyeS4KKyAqLworc3RhdGljIHZv aWQKK1Jlc2VydmVQcml2YXRlUmVmQ291bnRFbnRyeSh2b2lkKQoreworCS8qIEFscmVhZHkgcmVz ZXJ2ZWQgKG9yIGZyZWVkKSwgbm90aGluZyB0byBkbyAqLworCWlmIChSZXNlcnZlZFJlZkNvdW50 U2xvdCAhPSAtMSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGaXJzdCBzZWFyY2ggZm9yIGEgZnJl ZSBlbnRyeSB0aGUgYXJyYXksIHRoYXQnbGwgYmUgc3VmZmljaWVudCBpbiB0aGUKKwkgKiBtYWpv cml0eSBvZiBjYXNlcy4KKwkgKi8KKwl7CisJCWludAkJCWk7CisKKwkJZm9yIChpID0gMDsgaSA8 IFJFRkNPVU5UX0FSUkFZX0VOVFJJRVM7IGkrKykKKwkJeworCQkJaWYgKFByaXZhdGVSZWZDb3Vu dEFycmF5S2V5c1tpXSA9PSBJbnZhbGlkQnVmZmVyKQorCQkJeworCQkJCVJlc2VydmVkUmVmQ291 bnRTbG90ID0gaTsKKwkJCX0KKwkJfQorCisJCWlmIChSZXNlcnZlZFJlZkNvdW50U2xvdCAhPSAt MSkKKwkJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIE5vIGx1Y2suIEFsbCBhcnJheSBlbnRyaWVz IGFyZSBmdWxsLiBNb3ZlIG9uZSBhcnJheSBlbnRyeSBpbnRvIHRoZSBoYXNoCisJICogdGFibGUu CisJICovCisJeworCQlpbnQJCQl2aWN0aW1fc2xvdDsKKwkJUHJpdmF0ZVJlZkNvdW50RW50cnkg KnZpY3RpbV9lbnRyeTsKKwkJUHJpdmF0ZVJlZkNvdW50RW50cnkgKmhhc2hlbnQ7CisJCWJvb2wJ CWZvdW5kOworCisJCS8qIHNlbGVjdCB2aWN0aW0gc2xvdCAqLworCQl2aWN0aW1fc2xvdCA9IFBy aXZhdGVSZWZDb3VudENsb2NrKysgJSBSRUZDT1VOVF9BUlJBWV9FTlRSSUVTOworCQl2aWN0aW1f ZW50cnkgPSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbdmljdGltX3Nsb3RdOworCQlSZXNlcnZlZFJl ZkNvdW50U2xvdCA9IHZpY3RpbV9zbG90OworCisJCS8qIEJldHRlciBiZSB1c2VkLCBvdGhlcndp c2Ugd2Ugc2hvdWxkbid0IGdldCBoZXJlLiAqLworCQlBc3NlcnQoUHJpdmF0ZVJlZkNvdW50QXJy YXlLZXlzW3ZpY3RpbV9zbG90XSAhPSBJbnZhbGlkQnVmZmVyKTsKKwkJQXNzZXJ0KFByaXZhdGVS ZWZDb3VudEFycmF5W3ZpY3RpbV9zbG90XS5idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcik7CisJCUFz c2VydChQcml2YXRlUmVmQ291bnRBcnJheUtleXNbdmljdGltX3Nsb3RdID09IFByaXZhdGVSZWZD b3VudEFycmF5W3ZpY3RpbV9zbG90XS5idWZmZXIpOworCisJCS8qIGVudGVyIHZpY3RpbSBhcnJh eSBlbnRyeSBpbnRvIGhhc2h0YWJsZSAqLworCQloYXNoZW50ID0gaGFzaF9zZWFyY2goUHJpdmF0 ZVJlZkNvdW50SGFzaCwKKwkJCQkJCQkgICZQcml2YXRlUmVmQ291bnRBcnJheUtleXNbdmljdGlt X3Nsb3RdLAorCQkJCQkJCSAgSEFTSF9FTlRFUiwKKwkJCQkJCQkgICZmb3VuZCk7CisJCUFzc2Vy dCghZm91bmQpOworCQloYXNoZW50LT5kYXRhID0gdmljdGltX2VudHJ5LT5kYXRhOworCisJCS8q IGNsZWFyIHRoZSBub3cgZnJlZSBhcnJheSBzbG90ICovCisJCVByaXZhdGVSZWZDb3VudEFycmF5 S2V5c1t2aWN0aW1fc2xvdF0gPSBJbnZhbGlkQnVmZmVyOworCQl2aWN0aW1fZW50cnktPmJ1ZmZl ciA9IEludmFsaWRCdWZmZXI7CisKKwkJbWVtc2V0KCZ2aWN0aW1fZW50cnktPmRhdGEsIDAsIHNp emVvZih2aWN0aW1fZW50cnktPmRhdGEpKTsKKwkJdmljdGltX2VudHJ5LT5kYXRhLnJlZmNvdW50 ID0gMDsKKwkJdmljdGltX2VudHJ5LT5kYXRhLmxvY2ttb2RlID0gQlVGRkVSX0xPQ0tfVU5MT0NL OworCisJCVByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQrKzsKKwl9Cit9CisKKy8qCisgKiBDcmVh dGUgYSBuZXcgcmVmY291bnQgZW50cnkgZm9yIHRoZSBnaXZlbiBidWZmZXIuCisgKi8KK3N0YXRp YyBQcml2YXRlUmVmQ291bnRFbnRyeSAqCitOZXdQcml2YXRlUmVmQ291bnRFbnRyeShCdWZmZXIg YnVmZmVyKQoreworCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXM7CisKKwkvKiBvbmx5IGFsbG93 ZWQgdG8gYmUgY2FsbGVkIHdoZW4gYSByZXNlcnZhdGlvbiBoYXMgYmVlbiBtYWRlICovCisJQXNz ZXJ0KFJlc2VydmVkUmVmQ291bnRTbG90ICE9IC0xKTsKKworCS8qIHVzZSB1cCB0aGUgcmVzZXJ2 ZWQgZW50cnkgKi8KKwlyZXMgPSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbUmVzZXJ2ZWRSZWZDb3Vu dFNsb3RdOworCisJLyogYW5kIGZpbGwgaXQgKi8KKwlQcml2YXRlUmVmQ291bnRBcnJheUtleXNb UmVzZXJ2ZWRSZWZDb3VudFNsb3RdID0gYnVmZmVyOworCXJlcy0+YnVmZmVyID0gYnVmZmVyOwor CXJlcy0+ZGF0YS5yZWZjb3VudCA9IDA7CisJcmVzLT5kYXRhLmxvY2ttb2RlID0gQlVGRkVSX0xP Q0tfVU5MT0NLOworCisJLyogdXBkYXRlIGNhY2hlIGZvciB0aGUgbmV4dCBsb29rdXAgKi8KKwlQ cml2YXRlUmVmQ291bnRFbnRyeUxhc3QgPSBSZXNlcnZlZFJlZkNvdW50U2xvdDsKKworCVJlc2Vy dmVkUmVmQ291bnRTbG90ID0gLTE7CisKKwlyZXR1cm4gcmVzOworfQorCisvKgorICogU2xvdy1w YXRoIGZvciBHZXRTaGFyZWRCdWZmZXJFbnRyeSgpLgorICovCitzdGF0aWMgcGdfbm9pbmxpbmUg UHJpdmF0ZVJlZkNvdW50RW50cnkgKgorR2V0UHJpdmF0ZVJlZkNvdW50RW50cnlTbG93KEJ1ZmZl ciBidWZmZXIsIGJvb2wgZG9fbW92ZSkKK3sKKwlQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVzOwor CWludAkJCW1hdGNoID0gLTE7CisJaW50CQkJaTsKKworCS8qCisJICogRmlyc3Qgc2VhcmNoIGZv ciByZWZlcmVuY2VzIGluIHRoZSBhcnJheS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgUkVGQ09V TlRfQVJSQVlfRU5UUklFUzsgaSsrKQorCXsKKwkJaWYgKFByaXZhdGVSZWZDb3VudEFycmF5S2V5 c1tpXSA9PSBidWZmZXIpCisJCXsKKwkJCW1hdGNoID0gaTsKKwkJfQorCX0KKworCWlmIChsaWtl bHkobWF0Y2ggIT0gLTEpKQorCXsKKwkJUHJpdmF0ZVJlZkNvdW50RW50cnlMYXN0ID0gbWF0Y2g7 CisJCXJldHVybiAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbbWF0Y2hdOworCX0KKworCS8qCisJICog T25seSBsb29rIHVwIHRoZSBidWZmZXIgaW4gdGhlIGhhc2h0YWJsZSBpZiB3ZSd2ZSBwcmV2aW91 c2x5IG92ZXJmbG93ZWQuCisJICovCisJaWYgKFByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQgPT0g MCkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXMgPSBoYXNoX3NlYXJjaChQcml2YXRlUmVmQ291bnRI YXNoLCAmYnVmZmVyLCBIQVNIX0ZJTkQsIE5VTEwpOworCisJaWYgKHJlcyA9PSBOVUxMKQorCQly ZXR1cm4gTlVMTDsKKwllbHNlIGlmICghZG9fbW92ZSkKKwl7CisJCXJldHVybiByZXM7CisJfQor CWVsc2UKKwl7CisJCS8qIG1vdmUgYnVmZmVyIGZyb20gaGFzaHRhYmxlIGludG8gdGhlIGZyZWUg YXJyYXkgc2xvdCAqLworCQlib29sCQlmb3VuZDsKKwkJUHJpdmF0ZVJlZkNvdW50RW50cnkgKmZy ZWU7CisKKwkJUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KCk7CisKKwkJQXNzZXJ0KFJlc2Vy dmVkUmVmQ291bnRTbG90ICE9IC0xKTsKKwkJZnJlZSA9ICZQcml2YXRlUmVmQ291bnRBcnJheVtS ZXNlcnZlZFJlZkNvdW50U2xvdF07CisJCUFzc2VydChmcmVlLT5idWZmZXIgPT0gSW52YWxpZEJ1 ZmZlcik7CisKKwkJZnJlZS0+YnVmZmVyID0gYnVmZmVyOworCQlmcmVlLT5kYXRhID0gcmVzLT5k YXRhOworCQlQcml2YXRlUmVmQ291bnRBcnJheUtleXNbUmVzZXJ2ZWRSZWZDb3VudFNsb3RdID0g YnVmZmVyOworCQlQcml2YXRlUmVmQ291bnRFbnRyeUxhc3QgPSBSZXNlcnZlZFJlZkNvdW50U2xv dDsKKworCQlSZXNlcnZlZFJlZkNvdW50U2xvdCA9IC0xOworCisJCWhhc2hfc2VhcmNoKFByaXZh dGVSZWZDb3VudEhhc2gsICZidWZmZXIsIEhBU0hfUkVNT1ZFLCAmZm91bmQpOworCQlBc3NlcnQo Zm91bmQpOworCQlBc3NlcnQoUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCA+IDApOworCQlQcml2 YXRlUmVmQ291bnRPdmVyZmxvd2VkLS07CisKKwkJcmV0dXJuIGZyZWU7CisJfQorfQorCisvKgor ICogUmV0dXJuIHRoZSBQcml2YXRlUmVmQ291bnRFbnRyeSBmb3IgdGhlIHBhc3NlZCBidWZmZXIu CisgKiBSZXR1cm5zIE5VTEwgaWYgdGhlIGJ1ZmZlciBpcyBub3QgY3VycmVudGx5IHBpbm5lZC4K KyAqLworc3RhdGljIFByaXZhdGVSZWZDb3VudEVudHJ5ICoKK0dldFNoYXJlZEJ1ZmZlckVudHJ5 KEJ1ZmZlciBidWZmZXIpCit7CisJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSk7CisJQXNz ZXJ0KCFCdWZmZXJJc0xvY2FsKGJ1ZmZlcikpOworCisJLyogRmFzdCBwYXRoOiBjaGVjayBvbmUt ZW50cnkgY2FjaGUgKi8KKwlpZiAobGlrZWx5KFByaXZhdGVSZWZDb3VudEVudHJ5TGFzdCAhPSAt MSkgJiYKKwkJbGlrZWx5KFByaXZhdGVSZWZDb3VudEFycmF5W1ByaXZhdGVSZWZDb3VudEVudHJ5 TGFzdF0uYnVmZmVyID09IGJ1ZmZlcikpCisJeworCQlyZXR1cm4gJlByaXZhdGVSZWZDb3VudEFy cmF5W1ByaXZhdGVSZWZDb3VudEVudHJ5TGFzdF07CisJfQorCisJcmV0dXJuIEdldFByaXZhdGVS ZWZDb3VudEVudHJ5U2xvdyhidWZmZXIsIGZhbHNlKTsKK30KKworLyoKKyAqIENyZWF0ZSBhIG5l dyByZWZjb3VudCBlbnRyeSBmb3IgYSBidWZmZXIgdGhhdCBpcyBrbm93biB0byBub3QgYmUgcGlu bmVkLgorICogVGhpcyBpcyBhIGZhc3QgcGF0aCB0aGF0IHNraXBzIHRoZSBjYWNoZS9oYXNoIGxv b2t1cC4KKyAqIFJldHVybnMgdGhlIG5ldyBlbnRyeSBwb2ludGVyIHdpdGggcmVmY291bnQgYWxy ZWFkeSBpbmNyZW1lbnRlZC4KKyAqLworc3RhdGljIFByaXZhdGVSZWZDb3VudEVudHJ5ICoKK1No YXJlZEJ1ZmZlckNyZWF0ZVJlZihCdWZmZXIgYnVmZmVyKQoreworCVByaXZhdGVSZWZDb3VudEVu dHJ5ICpyZWY7CisKKwlBc3NlcnQoQnVmZmVySXNWYWxpZChidWZmZXIpKTsKKwlBc3NlcnQoIUJ1 ZmZlcklzTG9jYWwoYnVmZmVyKSk7CisKKwlSZXNlcnZlUHJpdmF0ZVJlZkNvdW50RW50cnkoKTsK KwlyZWYgPSBOZXdQcml2YXRlUmVmQ291bnRFbnRyeShidWZmZXIpOworCXJlZi0+ZGF0YS5yZWZj b3VudCsrOworCisJcmV0dXJuIHJlZjsKK30KKworLyoKKyAqIEluY3JlbWVudCB0aGUgcHJpdmF0 ZSByZWZjb3VudCBmb3IgYW4gZXhpc3RpbmcgZW50cnkuCisgKiBVc2Ugd2hlbiB5b3UgYWxyZWFk eSBoYXZlIHRoZSBlbnRyeSBmcm9tIGEgcHJldmlvdXMgbG9va3VwLgorICovCitzdGF0aWMgdm9p ZAorU2hhcmVkQnVmZmVyUmVmRXhpc3RpbmcoUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZikKK3sK KwlBc3NlcnQocmVmICE9IE5VTEwpOworCUFzc2VydChyZWYtPmRhdGEucmVmY291bnQgPiAwKTsK KwlyZWYtPmRhdGEucmVmY291bnQrKzsKK30KKworLyoKKyAqIERlY3JlbWVudCB0aGUgcHJpdmF0 ZSByZWZjb3VudCBmb3IgYSBidWZmZXIuCisgKiBJZiB0aGUgcmVmY291bnQgcmVhY2hlcyB6ZXJv LCByZW1vdmVzIHRoZSBlbnRyeSBhbmQgcmV0dXJucyB0cnVlLgorICogUmV0dXJucyBmYWxzZSBp ZiB0aGUgYnVmZmVyIHN0aWxsIGhhcyByZWZlcmVuY2VzLgorICovCitzdGF0aWMgYm9vbAorU2hh cmVkQnVmZmVyVW5yZWYoUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZikKK3sKKwlBc3NlcnQocmVm ICE9IE5VTEwpOworCUFzc2VydChyZWYtPmRhdGEucmVmY291bnQgPiAwKTsKKworCXJlZi0+ZGF0 YS5yZWZjb3VudC0tOworCisJaWYgKHJlZi0+ZGF0YS5yZWZjb3VudCA9PSAwKQorCXsKKwkJLyog Tm8gbW9yZSByZWZlcmVuY2VzIC0gY2xlYW4gdXAgdGhlIGVudHJ5ICovCisJCUFzc2VydChyZWYt PmRhdGEubG9ja21vZGUgPT0gQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCQlpZiAocmVmID49ICZQ cml2YXRlUmVmQ291bnRBcnJheVswXSAmJgorCQkJcmVmIDwgJlByaXZhdGVSZWZDb3VudEFycmF5 W1JFRkNPVU5UX0FSUkFZX0VOVFJJRVNdKQorCQl7CisJCQlyZWYtPmJ1ZmZlciA9IEludmFsaWRC dWZmZXI7CisJCQlQcml2YXRlUmVmQ291bnRBcnJheUtleXNbcmVmIC0gUHJpdmF0ZVJlZkNvdW50 QXJyYXldID0gSW52YWxpZEJ1ZmZlcjsKKwkJCVJlc2VydmVkUmVmQ291bnRTbG90ID0gcmVmIC0g UHJpdmF0ZVJlZkNvdW50QXJyYXk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlib29sCQlmb3VuZDsK KwkJCUJ1ZmZlcgkJYnVmZmVyID0gcmVmLT5idWZmZXI7CisKKwkJCWhhc2hfc2VhcmNoKFByaXZh dGVSZWZDb3VudEhhc2gsICZidWZmZXIsIEhBU0hfUkVNT1ZFLCAmZm91bmQpOworCQkJQXNzZXJ0 KGZvdW5kKTsKKwkJCUFzc2VydChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID4gMCk7CisJCQlQ cml2YXRlUmVmQ291bnRPdmVyZmxvd2VkLS07CisJCX0KKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBBY2Nlc3NvcnMgZm9yIHJlZmNvdW50IGVudHJ5 IGZpZWxkcy4KKyAqLworc3RhdGljIGludDMyCitTaGFyZWRCdWZmZXJSZWZDb3VudChQcml2YXRl UmVmQ291bnRFbnRyeSAqcmVmKQoreworCXJldHVybiByZWYtPmRhdGEucmVmY291bnQ7Cit9CisK K3N0YXRpYyBCdWZmZXJMb2NrTW9kZQorU2hhcmVkQnVmZmVyR2V0TG9ja01vZGUoUHJpdmF0ZVJl ZkNvdW50RW50cnkgKnJlZikKK3sKKwlyZXR1cm4gcmVmLT5kYXRhLmxvY2ttb2RlOworfQorCitz dGF0aWMgdm9pZAorU2hhcmVkQnVmZmVyU2V0TG9ja01vZGUoUHJpdmF0ZVJlZkNvdW50RW50cnkg KnJlZiwgQnVmZmVyTG9ja01vZGUgbW9kZSkKK3sKKwlyZWYtPmRhdGEubG9ja21vZGUgPSBtb2Rl OworfQorCisvKgorICogQ2hlY2sgaWYgdGhlIGVudHJ5IGhhcyBleGFjdGx5IG9uZSByZWZlcmVu Y2UuCisgKi8KK3N0YXRpYyBib29sCitTaGFyZWRCdWZmZXJIYXNTaW5nbGVSZWYoUHJpdmF0ZVJl ZkNvdW50RW50cnkgKnJlZikKK3sKKwlyZXR1cm4gcmVmICE9IE5VTEwgJiYgcmVmLT5kYXRhLnJl ZmNvdW50ID09IDE7Cit9CisKKy8qCisgKiBDaGVjayBmb3IgYnVmZmVyIHJlZmNvdW50IGxlYWtz LgorICovCit2b2lkCitDaGVja1ByaXZhdGVSZWZDb3VudExlYWtzKHZvaWQpCit7CisjaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORworCWludAkJCVJlZkNvdW50RXJyb3JzID0gMDsKKwlQcml2YXRl UmVmQ291bnRFbnRyeSAqcmVzOworCWludAkJCWk7CisJY2hhcgkgICAqczsKKworCS8qIGNoZWNr IHRoZSBhcnJheSAqLworCWZvciAoaSA9IDA7IGkgPCBSRUZDT1VOVF9BUlJBWV9FTlRSSUVTOyBp KyspCisJeworCQlpZiAoUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzW2ldICE9IEludmFsaWRCdWZm ZXIpCisJCXsKKwkJCXJlcyA9ICZQcml2YXRlUmVmQ291bnRBcnJheVtpXTsKKworCQkJcyA9IERl YnVnUHJpbnRCdWZmZXJSZWZjb3VudChyZXMtPmJ1ZmZlcik7CisJCQllbG9nKFdBUk5JTkcsICJi dWZmZXIgcmVmY291bnQgbGVhazogJXMiLCBzKTsKKwkJCXBmcmVlKHMpOworCisJCQlSZWZDb3Vu dEVycm9ycysrOworCQl9CisJfQorCisJLyogaWYgbmVjZXNzYXJ5IHNlYXJjaCB0aGUgaGFzaCAq LworCWlmIChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkKQorCXsKKwkJSEFTSF9TRVFfU1RBVFVT IGhzdGF0OworCisJCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBQcml2YXRlUmVmQ291bnRIYXNoKTsK KwkJd2hpbGUgKChyZXMgPSAoUHJpdmF0ZVJlZkNvdW50RW50cnkgKikgaGFzaF9zZXFfc2VhcmNo KCZoc3RhdCkpICE9IE5VTEwpCisJCXsKKwkJCXMgPSBEZWJ1Z1ByaW50QnVmZmVyUmVmY291bnQo cmVzLT5idWZmZXIpOworCQkJZWxvZyhXQVJOSU5HLCAiYnVmZmVyIHJlZmNvdW50IGxlYWs6ICVz Iiwgcyk7CisJCQlwZnJlZShzKTsKKwkJCVJlZkNvdW50RXJyb3JzKys7CisJCX0KKwl9CisKKwlB c3NlcnQoUmVmQ291bnRFcnJvcnMgPT0gMCk7CisjZW5kaWYKK30KKworI2lmZGVmIFVTRV9BU1NF UlRfQ0hFQ0tJTkcKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gLSBkZWZpbmVkIGluIGJ1Zm1nci5j ICovCitzdGF0aWMgdm9pZCBBc3NlcnROb3RDYXRhbG9nQnVmZmVyTG9jayhCdWZmZXIgYnVmZmVy LCBCdWZmZXJMb2NrTW9kZSBtb2RlKTsKKworLyoKKyAqIENoZWNrIGZvciBleGNsdXNpdmUtbG9j a2VkIGNhdGFsb2cgYnVmZmVycy4gIFRoaXMgaXMgdGhlIGNvcmUgb2YKKyAqIEFzc2VydENvdWxk R2V0UmVsYXRpb24oKS4KKyAqLwordm9pZAorQXNzZXJ0QnVmZmVyTG9ja3NQZXJtaXRDYXRhbG9n UmVhZCh2b2lkKQoreworCVByaXZhdGVSZWZDb3VudEl0ZXJhdG9yICppdGVyOworCVByaXZhdGVS ZWZDb3VudEVudHJ5ICpyZXM7CisKKwlpdGVyID0gSW5pdFByaXZhdGVSZWZDb3VudEl0ZXJhdG9y KCk7CisJd2hpbGUgKChyZXMgPSBHZXROZXh0UHJpdmF0ZVJlZkNvdW50RW50cnkoaXRlcikpICE9 IE5VTEwpCisJeworCQlCdWZmZXIJCWJ1ZiA9IHJlcy0+YnVmZmVyOworCisJCWlmIChidWYgPT0g SW52YWxpZEJ1ZmZlcikKKwkJCWNvbnRpbnVlOworCisJCUFzc2VydE5vdENhdGFsb2dCdWZmZXJM b2NrKGJ1ZiwgcmVzLT5kYXRhLmxvY2ttb2RlKTsKKwl9CisJRnJlZVByaXZhdGVSZWZDb3VudEl0 ZXJhdG9yKGl0ZXIpOworfQorI2VuZGlmCisKKy8qCisgKiBJbml0aWFsaXplIGFuIGl0ZXJhdG9y IGZvciB3YWxraW5nIGFsbCBwcml2YXRlIHJlZmNvdW50IGVudHJpZXMuCisgKi8KK1ByaXZhdGVS ZWZDb3VudEl0ZXJhdG9yICoKK0luaXRQcml2YXRlUmVmQ291bnRJdGVyYXRvcih2b2lkKQorewor CVByaXZhdGVSZWZDb3VudEl0ZXJhdG9yICppdGVyID0gcGFsbG9jKHNpemVvZihQcml2YXRlUmVm Q291bnRJdGVyYXRvcikpOworCisJaXRlci0+YXJyYXlfaW5kZXggPSAwOworCWl0ZXItPmluX2hh c2ggPSBmYWxzZTsKKwlpdGVyLT5oYXNoX3N0YXR1cyA9IE5VTEw7CisJcmV0dXJuIGl0ZXI7Cit9 CisKKy8qCisgKiBHZXQgdGhlIG5leHQgcHJpdmF0ZSByZWZjb3VudCBlbnRyeS4KKyAqIFJldHVy bnMgTlVMTCB3aGVuIGl0ZXJhdGlvbiBpcyBjb21wbGV0ZS4KKyAqLworUHJpdmF0ZVJlZkNvdW50 RW50cnkgKgorR2V0TmV4dFByaXZhdGVSZWZDb3VudEVudHJ5KFByaXZhdGVSZWZDb3VudEl0ZXJh dG9yICppdGVyKQoreworCS8qIEZpcnN0IGl0ZXJhdGUgdGhyb3VnaCB0aGUgYXJyYXkgKi8KKwl3 aGlsZSAoIWl0ZXItPmluX2hhc2ggJiYgaXRlci0+YXJyYXlfaW5kZXggPCBSRUZDT1VOVF9BUlJB WV9FTlRSSUVTKQorCXsKKwkJaW50CQkJaWR4ID0gaXRlci0+YXJyYXlfaW5kZXgrKzsKKworCQlp ZiAoUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzW2lkeF0gIT0gSW52YWxpZEJ1ZmZlcikKKwkJCXJl dHVybiAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbaWR4XTsKKwl9CisKKwkvKiBUaGVuIGl0ZXJhdGUg dGhyb3VnaCB0aGUgaGFzaCBpZiB0aGVyZSBhcmUgb3ZlcmZsb3dlZCBlbnRyaWVzICovCisJaWYg KCFpdGVyLT5pbl9oYXNoKQorCXsKKwkJaXRlci0+aW5faGFzaCA9IHRydWU7CisJCWlmIChQcml2 YXRlUmVmQ291bnRPdmVyZmxvd2VkID4gMCkKKwkJeworCQkJaXRlci0+aGFzaF9zdGF0dXMgPSBw YWxsb2Moc2l6ZW9mKEhBU0hfU0VRX1NUQVRVUykpOworCQkJaGFzaF9zZXFfaW5pdChpdGVyLT5o YXNoX3N0YXR1cywgUHJpdmF0ZVJlZkNvdW50SGFzaCk7CisJCX0KKwl9CisKKwlpZiAoaXRlci0+ aGFzaF9zdGF0dXMgIT0gTlVMTCkKKwl7CisJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXM7CisK KwkJcmVzID0gKFByaXZhdGVSZWZDb3VudEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaChpdGVyLT5o YXNoX3N0YXR1cyk7CisJCWlmIChyZXMgIT0gTlVMTCkKKwkJCXJldHVybiByZXM7CisKKwkJcGZy ZWUoaXRlci0+aGFzaF9zdGF0dXMpOworCQlpdGVyLT5oYXNoX3N0YXR1cyA9IE5VTEw7CisJfQor CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBGcmVlIGFuIGl0ZXJhdG9yIGZyb20gSW5pdFBy aXZhdGVSZWZDb3VudEl0ZXJhdG9yLgorICovCit2b2lkCitGcmVlUHJpdmF0ZVJlZkNvdW50SXRl cmF0b3IoUHJpdmF0ZVJlZkNvdW50SXRlcmF0b3IgKml0ZXIpCit7CisJaWYgKGl0ZXItPmhhc2hf c3RhdHVzICE9IE5VTEwpCisJeworCQloYXNoX3NlcV90ZXJtKGl0ZXItPmhhc2hfc3RhdHVzKTsK KwkJcGZyZWUoaXRlci0+aGFzaF9zdGF0dXMpOworCX0KKwlwZnJlZShpdGVyKTsKK30KKworCisv KgorICogUmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBidWZmZXJzIHRoYXQgYSBiYWNrZW5k IHNob3VsZCB0cnkgdG8gcGluIG9uY2UsCisgKiB0byBhdm9pZCBleGNlZWRpbmcgaXRzIGZhaXIg c2hhcmUuICBUaGlzIGlzIHRoZSBoaWdoZXN0IHZhbHVlIHRoYXQKKyAqIEdldEFkZGl0aW9uYWxQ aW5MaW1pdCgpIGNvdWxkIGV2ZXIgcmV0dXJuLiAgTm90ZSB0aGF0IGl0IG1heSBiZSB6ZXJvIG9u IGEKKyAqIHN5c3RlbSB3aXRoIGEgdmVyeSBzbWFsbCBidWZmZXIgcG9vbCByZWxhdGl2ZSB0byBt YXhfY29ubmVjdGlvbnMuCisgKi8KKyB1aW50MzIKKyBHZXRQaW5MaW1pdCh2b2lkKQorIHsKKwkg cmV0dXJuIE1heFByb3BvcnRpb25hbFBpbnM7CisgfQorCisgLyoKKyAgKiBSZXR1cm4gdGhlIG1h eGltdW0gbnVtYmVyIG9mIGFkZGl0aW9uYWwgYnVmZmVycyB0aGF0IHRoaXMgYmFja2VuZCBzaG91 bGQKKyAgKiBwaW4gaWYgaXQgd2FudHMgdG8gc3RheSB1bmRlciB0aGUgcGVyLWJhY2tlbmQgbGlt aXQsIGNvbnNpZGVyaW5nIHRoZSBudW1iZXIKKyAgKiBvZiBidWZmZXJzIGl0IGhhcyBhbHJlYWR5 IHBpbm5lZC4gIFVubGlrZSBMaW1pdEFkZGl0aW9uYWxQaW5zKCksIHRoZSBsaW1pdAorICAqIHJl dHVybiBieSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB6ZXJvLgorICAqLworIHVpbnQzMgorIEdldEFk ZGl0aW9uYWxQaW5MaW1pdCh2b2lkKQorIHsKKwkgdWludDMyCQllc3RpbWF0ZWRfcGluc19oZWxk OworCisJIC8qCisJICAqIFdlIGdldCB0aGUgbnVtYmVyIG9mICJvdmVyZmxvd2VkIiBwaW5zIGZv ciBmcmVlLCBidXQgZG9uJ3Qga25vdyB0aGUKKwkgICogbnVtYmVyIG9mIHBpbnMgaW4gUHJpdmF0 ZVJlZkNvdW50QXJyYXkuICBUaGUgY29zdCBvZiBjYWxjdWxhdGluZyB0aGF0CisJICAqIGV4YWN0 bHkgZG9lc24ndCBzZWVtIHdvcnRoIGl0LCBzbyBqdXN0IGFzc3VtZSB0aGUgbWF4LgorCSAgKi8K KwkgZXN0aW1hdGVkX3BpbnNfaGVsZCA9IFByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQgKyBSRUZD T1VOVF9BUlJBWV9FTlRSSUVTOworCisJIC8qIElzIHRoaXMgYmFja2VuZCBhbHJlYWR5IGhvbGRp bmcgbW9yZSB0aGFuIGl0cyBmYWlyIHNoYXJlPyAqLworCSBpZiAoZXN0aW1hdGVkX3BpbnNfaGVs ZCA+IE1heFByb3BvcnRpb25hbFBpbnMpCisJCSByZXR1cm4gMDsKKworCSByZXR1cm4gTWF4UHJv cG9ydGlvbmFsUGlucyAtIGVzdGltYXRlZF9waW5zX2hlbGQ7CisgfQorCisgLyoKKyAgKiBMaW1p dCB0aGUgbnVtYmVyIG9mIHBpbnMgYSBiYXRjaCBvcGVyYXRpb24gbWF5IGFkZGl0aW9uYWxseSBh Y3F1aXJlLCB0bworICAqIGF2b2lkIHJ1bm5pbmcgb3V0IG9mIHBpbm5hYmxlIGJ1ZmZlcnMuCisg ICoKKyAgKiBPbmUgYWRkaXRpb25hbCBwaW4gaXMgYWx3YXlzIGFsbG93ZWQsIG9uIHRoZSBhc3N1 bXB0aW9uIHRoYXQgdGhlIG9wZXJhdGlvbgorICAqIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSB0byBt YWtlIHByb2dyZXNzLgorICAqLworIHZvaWQKKyBMaW1pdEFkZGl0aW9uYWxQaW5zKHVpbnQzMiAq YWRkaXRpb25hbF9waW5zKQorIHsKKwkgdWludDMyCQlsaW1pdDsKKworCSBpZiAoKmFkZGl0aW9u YWxfcGlucyA8PSAxKQorCQkgcmV0dXJuOworCisJIGxpbWl0ID0gR2V0QWRkaXRpb25hbFBpbkxp bWl0KCk7CisJIGxpbWl0ID0gTWF4KGxpbWl0LCAxKTsKKwkgaWYgKGxpbWl0IDwgKmFkZGl0aW9u YWxfcGlucykKKwkJICphZGRpdGlvbmFsX3BpbnMgPSBsaW1pdDsKKyB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3JfcmVmY250LmggYi9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9idWZtZ3JfcmVmY250LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZjJhNmY0NWQ4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuaApAQCAtMCwwICsxLDU5IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBidWZtZ3JfcmVmY250LmgKKyAqCSAgQmFja2VuZC1wcml2YXRlIGJ1 ZmZlciByZWZjb3VudCB0cmFja2luZworICoKKyAqIFRoaXMgaGVhZGVyIHByb3ZpZGVzIG9wYXF1 ZSBkZWNsYXJhdGlvbnMgZm9yIHRoZSBwcml2YXRlIHJlZmNvdW50CisgKiB0cmFja2luZyBzeXN0 ZW0uIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBidWZtZ3JfcmVmY250LmMgd2hpY2ggaXMKKyAq IGluY2x1ZGVkIGF0IHRoZSBlbmQgb2YgYnVmbWdyLmMgZm9yIGlubGluaW5nLgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3JfcmVmY250LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRl ZiBCVUZNR1JfUkVGQ05UX0gKKyNkZWZpbmUgQlVGTUdSX1JFRkNOVF9ICisKKyNpbmNsdWRlICJz dG9yYWdlL2J1Zi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisKKy8qIE9wYXF1ZSBo YW5kbGUgdG8gYSBwcml2YXRlIHJlZmNvdW50IGVudHJ5ICovCit0eXBlZGVmIHN0cnVjdCBQcml2 YXRlUmVmQ291bnRFbnRyeSBQcml2YXRlUmVmQ291bnRFbnRyeTsKKworLyogT3BhcXVlIGhhbmRs ZSB0byBhbiBpdGVyYXRvciAqLwordHlwZWRlZiBzdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50SXRlcmF0 b3IgUHJpdmF0ZVJlZkNvdW50SXRlcmF0b3I7CisKKy8qIEluaXRpYWxpemF0aW9uICovCitleHRl cm4gdm9pZCBJbml0UHJpdmF0ZVJlZkNvdW50KHZvaWQpOworCisvKgorICogSG90LXBhdGggZnVu Y3Rpb25zIC0gZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisgKiBEZWZpbmVkIGFzIHN0YXRpYyBpbiBi dWZtZ3JfcmVmY250LmMgd2hpY2ggaXMgaW5jbHVkZWQgaW4gYnVmbWdyLmMuCisgKi8KK3N0YXRp YyBQcml2YXRlUmVmQ291bnRFbnRyeSAqR2V0U2hhcmVkQnVmZmVyRW50cnkoQnVmZmVyIGJ1ZmZl cik7CitzdGF0aWMgUHJpdmF0ZVJlZkNvdW50RW50cnkgKlNoYXJlZEJ1ZmZlckNyZWF0ZVJlZihC dWZmZXIgYnVmZmVyKTsKK3N0YXRpYyB2b2lkIFNoYXJlZEJ1ZmZlclJlZkV4aXN0aW5nKFByaXZh dGVSZWZDb3VudEVudHJ5ICpyZWYpOworc3RhdGljIGJvb2wgU2hhcmVkQnVmZmVyVW5yZWYoUHJp dmF0ZVJlZkNvdW50RW50cnkgKnJlZik7CitzdGF0aWMgQnVmZmVyTG9ja01vZGUgU2hhcmVkQnVm ZmVyR2V0TG9ja01vZGUoUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZik7CitzdGF0aWMgdm9pZCBT aGFyZWRCdWZmZXJTZXRMb2NrTW9kZShQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmLCBCdWZmZXJM b2NrTW9kZSBtb2RlKTsKK3N0YXRpYyBpbnQzMiBTaGFyZWRCdWZmZXJSZWZDb3VudChQcml2YXRl UmVmQ291bnRFbnRyeSAqcmVmKTsKK3N0YXRpYyBib29sIFNoYXJlZEJ1ZmZlckhhc1NpbmdsZVJl ZihQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVmKTsKKworLyogUGluIGxpbWl0aW5nICovCitleHRl cm4gdWludDMyIEdldFBpbkxpbWl0KHZvaWQpOworZXh0ZXJuIHVpbnQzMiBHZXRBZGRpdGlvbmFs UGluTGltaXQodm9pZCk7CitleHRlcm4gdm9pZCBMaW1pdEFkZGl0aW9uYWxQaW5zKHVpbnQzMiAq YWRkaXRpb25hbF9waW5zKTsKKworLyogTGVhayBjaGVja2luZyAqLworZXh0ZXJuIHZvaWQgQ2hl Y2tQcml2YXRlUmVmQ291bnRMZWFrcyh2b2lkKTsKKworLyogSXRlcmF0b3IgZnVuY3Rpb25zICov CitleHRlcm4gUHJpdmF0ZVJlZkNvdW50SXRlcmF0b3IgKkluaXRQcml2YXRlUmVmQ291bnRJdGVy YXRvcih2b2lkKTsKK2V4dGVybiBQcml2YXRlUmVmQ291bnRFbnRyeSAqR2V0TmV4dFByaXZhdGVS ZWZDb3VudEVudHJ5KFByaXZhdGVSZWZDb3VudEl0ZXJhdG9yICppdGVyKTsKK2V4dGVybiB2b2lk IEZyZWVQcml2YXRlUmVmQ291bnRJdGVyYXRvcihQcml2YXRlUmVmQ291bnRJdGVyYXRvciAqaXRl cik7CisKKworI2VuZGlmCQkJCQkJCS8qIEJVRk1HUl9SRUZDTlRfSCAqLwotLSAKMi4zNC4xCgo= --000000000000204347064cc375ea Content-Type: application/x-patch; name="v2-0003-Using-simplehash.patch" Content-Disposition: attachment; filename="v2-0003-Using-simplehash.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmci98z3 RnJvbSBiZjE0NjU5OGNkOTQxMTBkYTI1NWM2ZmI0NWI0YTVjNTgwMDJhOTFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmUgRmVsaXBlIDxvLmFsZXhhbmRyZS5mZWxpcGVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDExIE1hciAyMDI2IDEyOjA3OjU0ICswMDAwClN1YmplY3Q6 IFtQQVRDSCAzLzVdIFVzaW5nIHNpbXBsZWhhc2gKClRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIEhU QUIgaW1wbGVtZW50YXRpb24gd2l0aCBhIHNpbXBsZWhhc2gKYXMgc3VnZ2VzdGVkIGJ5IEFuZHJl cyBGcmV1bmQgWzFdLiBUaGUgc2ltcGxlaGFzaCBpbXBsZW1lbnRzIGEgdGVtcGxhdGVkCm9wZW4g YWRkcmVzc2luZyBoYXNoLCB3aGljaCBoYXZlIGVudHJ5IHNpemUgaW5mb3JtYXRpb24gYXQgY29t cGlsZSB0aW1lLgoKVGhlIGFjY2VzcyBzdHJhdGVneSBvZiB0aGUgc2ltcGxlaGFzaCBpcyB2ZXJ5 IGNsb3NlIHRvIHRoZSBwbGFpbiBhcnJheQp0aGF0IHdhcyBzZWVuIHRvIGJlIHZlcnkgZWZmaWNp ZW50IGNvbXBhcmVkIHRvIHRoZSBIVEFCIGltcGxlbWVudGF0aW9uLAp3aXRoIHRoZSBhZGRpdGlv bmFsIGFkdmFudGFnZSBvZiB1c2luZyB0aGUga2V5IHZhbHVlIHRvIGluaXRpYWxpemUgdGhlCnNl YXJjaCBjbG9zZXIgdG8gd2hlcmUgdGhlIGtleSBhY3R1YWxseSBpcywgaW5zdGVhZCBvZiBhbHdh eXMgc2Nhbm5pbmcKdGhlIGVudGlyZSBhcnJheS4KCkFkZHMgb25lIG1hY3JvIHRvIHRoZSBzaW1w bGVoYXNoIGltcGxlbWVudGF0aW9uIGVuYWJsZSBvdmVycmlkaW5nIHRoZQplbXB0eSBwb3NpdGlv biBkZXRlY3Rpb24sIHRvIGVuYWJsZSB1c2luZyBidWZmZXIgPT0gSW52YWxpZEJ1ZmZlcgppbnN0 ZWFkIG9mIHJlcXVpcmluZyBhIHNlcGFyYXRlIHN0YXR1cyBmaWVsZC4KClsxXSBodHRwczovL3d3 dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL3M1cDdpb3U3cGRoeGh2bXY0cm9obXNrd3FtcjM2 ZGM0cnlidndsZXA1eXZ3cmpzNHBhJTQwNm94c2VtbXM1bXc0CgotLS0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuYyB8IDg5ICsrKysrKysrKysrLS0tLS0tLS0tLS0K IHNyYy9pbmNsdWRlL2xpYi9zaW1wbGVoYXNoLmggICAgICAgICAgICAgICB8IDU5ICsrKysrKysr Ky0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuYwppbmRleCBmZWY4 Zjk4MDM3Li5kZDk1ZDk1M2Y2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9idWZtZ3JfcmVmY250LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy X3JlZmNudC5jCkBAIC00Miw3ICs0MiwxMCBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAot I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCisj aW5jbHVkZSAic3RvcmFnZS9idWZfaW50ZXJuYWxzLmgiCisjaW5jbHVkZSAiYnVmbWdyX3JlZmNu dC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAvKiBTdHJ1Y3R1cmUgZGVmaW5pdGlv bnMgLSBpbnRlcm5hbCB0byB0aGlzIGZpbGUgKi8KIHR5cGVkZWYgc3RydWN0IFByaXZhdGVSZWZD b3VudERhdGEKQEAgLTUzLDE1ICs1NiwzNiBAQCB0eXBlZGVmIHN0cnVjdCBQcml2YXRlUmVmQ291 bnREYXRhCiAKIHN0cnVjdCBQcml2YXRlUmVmQ291bnRFbnRyeQogewotCUJ1ZmZlcgkJYnVmZmVy OworCUJ1ZmZlcgkJYnVmZmVyOwkJLyogaGFzaCBrZXkgLSBJbnZhbGlkQnVmZmVyIG1lYW5zIGVt cHR5ICovCiAJUHJpdmF0ZVJlZkNvdW50RGF0YSBkYXRhOwogfTsKIAorLyoKKyAqIERlZmluZSBz aW1wbGVoYXNoIHBhcmFtZXRlcnMgZm9yIHRoZSBvdmVyZmxvdyBoYXNoIHRhYmxlLgorICogV2Ug dXNlIGJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyIGFzIHRoZSAiZW1wdHkiIG1hcmtlciB0byBhdm9p ZCBuZWVkaW5nCisgKiBhIHNlcGFyYXRlIHN0YXR1cyBmaWVsZC4KKyAqLworI2RlZmluZSBTSF9Q UkVGSVggcmVmY291bnQKKyNkZWZpbmUgU0hfRUxFTUVOVF9UWVBFIFByaXZhdGVSZWZDb3VudEVu dHJ5CisjZGVmaW5lIFNIX0tFWV9UWVBFIEJ1ZmZlcgorI2RlZmluZSBTSF9LRVkgYnVmZmVyCisj ZGVmaW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpIG11cm11cmhhc2gzMihrZXkpCisjZGVmaW5lIFNI X0VRVUFMKHRiLCBhLCBiKSAoKGEpID09IChiKSkKKyNkZWZpbmUgU0hfU0NPUEUgc3RhdGljIGlu bGluZQorI2RlZmluZSBTSF9ERUZJTkUKKyNkZWZpbmUgU0hfREVDTEFSRQorLyogVXNlIGJ1ZmZl ciBmaWVsZCBhcyBlbXB0eSBtYXJrZXIgLSBubyBzZXBhcmF0ZSBzdGF0dXMgbmVlZGVkICovCisj ZGVmaW5lIFNIX0VOVFJZX0VNUFRZKGVudHJ5KSAoKGVudHJ5KS0+YnVmZmVyID09IEludmFsaWRC dWZmZXIpCisjZGVmaW5lIFNIX01BS0VfRU1QVFkoZW50cnkpICgoZW50cnkpLT5idWZmZXIgPSBJ bnZhbGlkQnVmZmVyKQorI2RlZmluZSBTSF9NQUtFX0lOX1VTRShlbnRyeSkgKCh2b2lkKTApICAv KiBrZXkgYXNzaWdubWVudCBoYW5kbGVzIHRoaXMgKi8KKyNpbmNsdWRlICJsaWIvc2ltcGxlaGFz aC5oIgorCiBzdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50SXRlcmF0b3IKIHsKIAlpbnQJCQlhcnJheV9p bmRleDsKIAlib29sCQlpbl9oYXNoOwotCUhBU0hfU0VRX1NUQVRVUyAqaGFzaF9zdGF0dXM7CisJ cmVmY291bnRfaXRlcmF0b3IgaGFzaF9pdGVyOworCWJvb2wJCWhhc2hfaXRlcl92YWxpZDsKIH07 CiAKIC8qIFByaXZhdGUgcmVmY291bnQgYXJyYXkgYW5kIGtleXMgKi8KQEAgLTcwLDcgKzk0LDcg QEAgc3RhdGljIEJ1ZmZlciBQcml2YXRlUmVmQ291bnRBcnJheUtleXNbUkVGQ09VTlRfQVJSQVlf RU5UUklFU107CiBzdGF0aWMgc3RydWN0IFByaXZhdGVSZWZDb3VudEVudHJ5IFByaXZhdGVSZWZD b3VudEFycmF5W1JFRkNPVU5UX0FSUkFZX0VOVFJJRVNdOwogCiAvKiBPdmVyZmxvdyBoYXNoIHRh YmxlIGZvciB3aGVuIGFycmF5IGlzIGZ1bGwgKi8KLXN0YXRpYyBIVEFCICpQcml2YXRlUmVmQ291 bnRIYXNoID0gTlVMTDsKK3N0YXRpYyByZWZjb3VudF9oYXNoICpQcml2YXRlUmVmQ291bnRIYXNo ID0gTlVMTDsKIAogLyogQ291bnQgb2YgZW50cmllcyB0aGF0IGhhdmUgb3ZlcmZsb3dlZCBpbnRv IHRoZSBoYXNoIHRhYmxlICovCiBzdGF0aWMgaW50MzIgUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dl ZCA9IDA7CkBAIC05OCwyNiArMTIyLDE4IEBAIHN0YXRpYyBwZ19ub2lubGluZSBQcml2YXRlUmVm Q291bnRFbnRyeSAqR2V0UHJpdmF0ZVJlZkNvdW50RW50cnlTbG93KEJ1ZmZlciBidWZmCiB2b2lk CiBJbml0UHJpdmF0ZVJlZkNvdW50KHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQog CS8qCiAJICogQW4gYWR2aXNvcnkgbGltaXQgb24gdGhlIG51bWJlciBvZiBwaW5zIGVhY2ggYmFj a2VuZCBzaG91bGQgaG9sZCwgYmFzZWQKIAkgKiBvbiBzaGFyZWRfYnVmZmVycyBhbmQgdGhlIG1h eGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHBvc3NpYmxlLgogCSAqIFRoYXQncyB2ZXJ5IHBl c3NpbWlzdGljLCBidXQgb3V0c2lkZSB0b3ktc2l6ZWQgc2hhcmVkX2J1ZmZlcnMgaXQgc2hvdWxk CiAJICogYWxsb3cgcGxlbnR5IG9mIHBpbnMuICBMaW1pdEFkZGl0aW9uYWxQaW5zKCkgYW5kCiAJ ICogR2V0QWRkaXRpb25hbFBpbkxpbWl0KCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgdGhlIHJlbWFp bmluZyBiYWxhbmNlLgotCSAqLwotCSBNYXhQcm9wb3J0aW9uYWxQaW5zID0gTkJ1ZmZlcnMgLyAo TWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTKTsKLQorCSovCisJTWF4UHJvcG9ydGlv bmFsUGlucyA9IE5CdWZmZXJzIC8gKE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyk7 CiAJbWVtc2V0KCZQcml2YXRlUmVmQ291bnRBcnJheSwgMCwgc2l6ZW9mKFByaXZhdGVSZWZDb3Vu dEFycmF5KSk7CiAJbWVtc2V0KCZQcml2YXRlUmVmQ291bnRBcnJheUtleXMsIDAsIHNpemVvZihQ cml2YXRlUmVmQ291bnRBcnJheUtleXMpKTsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2Yo QnVmZmVyKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUHJpdmF0ZVJlZkNvdW50RW50 cnkpOwotCi0JUHJpdmF0ZVJlZkNvdW50SGFzaCA9IGhhc2hfY3JlYXRlKCJQcml2YXRlUmVmQ291 bnQiLCAxMDAsICZoYXNoX2N0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7 CisJUHJpdmF0ZVJlZkNvdW50SGFzaCA9IHJlZmNvdW50X2NyZWF0ZShDdXJyZW50TWVtb3J5Q29u dGV4dCwgMTYsIE5VTEwpOwogfQogCiAvKgpAQCAtMTcxLDEwICsxODcsOSBAQCBSZXNlcnZlUHJp dmF0ZVJlZkNvdW50RW50cnkodm9pZCkKIAkJQXNzZXJ0KFByaXZhdGVSZWZDb3VudEFycmF5S2V5 c1t2aWN0aW1fc2xvdF0gPT0gUHJpdmF0ZVJlZkNvdW50QXJyYXlbdmljdGltX3Nsb3RdLmJ1ZmZl cik7CiAKIAkJLyogZW50ZXIgdmljdGltIGFycmF5IGVudHJ5IGludG8gaGFzaHRhYmxlICovCi0J CWhhc2hlbnQgPSBoYXNoX3NlYXJjaChQcml2YXRlUmVmQ291bnRIYXNoLAotCQkJCQkJCSAgJlBy aXZhdGVSZWZDb3VudEFycmF5S2V5c1t2aWN0aW1fc2xvdF0sCi0JCQkJCQkJICBIQVNIX0VOVEVS LAotCQkJCQkJCSAgJmZvdW5kKTsKKwkJaGFzaGVudCA9IHJlZmNvdW50X2luc2VydChQcml2YXRl UmVmQ291bnRIYXNoLAorCQkJCQkJCQkgIFByaXZhdGVSZWZDb3VudEFycmF5S2V5c1t2aWN0aW1f c2xvdF0sCisJCQkJCQkJCSAgJmZvdW5kKTsKIAkJQXNzZXJ0KCFmb3VuZCk7CiAJCWhhc2hlbnQt PmRhdGEgPSB2aWN0aW1fZW50cnktPmRhdGE7CiAKQEAgLTI1MSw3ICsyNjYsNyBAQCBHZXRQcml2 YXRlUmVmQ291bnRFbnRyeVNsb3coQnVmZmVyIGJ1ZmZlciwgYm9vbCBkb19tb3ZlKQogCWlmIChQ cml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID09IDApCiAJCXJldHVybiBOVUxMOwogCi0JcmVzID0g aGFzaF9zZWFyY2goUHJpdmF0ZVJlZkNvdW50SGFzaCwgJmJ1ZmZlciwgSEFTSF9GSU5ELCBOVUxM KTsKKwlyZXMgPSByZWZjb3VudF9sb29rdXAoUHJpdmF0ZVJlZkNvdW50SGFzaCwgYnVmZmVyKTsK IAogCWlmIChyZXMgPT0gTlVMTCkKIAkJcmV0dXJuIE5VTEw7CkBAIC0yNjIsNyArMjc3LDYgQEAg R2V0UHJpdmF0ZVJlZkNvdW50RW50cnlTbG93KEJ1ZmZlciBidWZmZXIsIGJvb2wgZG9fbW92ZSkK IAllbHNlCiAJewogCQkvKiBtb3ZlIGJ1ZmZlciBmcm9tIGhhc2h0YWJsZSBpbnRvIHRoZSBmcmVl IGFycmF5IHNsb3QgKi8KLQkJYm9vbAkJZm91bmQ7CiAJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpm cmVlOwogCiAJCVJlc2VydmVQcml2YXRlUmVmQ291bnRFbnRyeSgpOwpAQCAtMjc4LDggKzI5Miw3 IEBAIEdldFByaXZhdGVSZWZDb3VudEVudHJ5U2xvdyhCdWZmZXIgYnVmZmVyLCBib29sIGRvX21v dmUpCiAKIAkJUmVzZXJ2ZWRSZWZDb3VudFNsb3QgPSAtMTsKIAotCQloYXNoX3NlYXJjaChQcml2 YXRlUmVmQ291bnRIYXNoLCAmYnVmZmVyLCBIQVNIX1JFTU9WRSwgJmZvdW5kKTsKLQkJQXNzZXJ0 KGZvdW5kKTsKKwkJcmVmY291bnRfZGVsZXRlX2l0ZW0oUHJpdmF0ZVJlZkNvdW50SGFzaCwgcmVz KTsKIAkJQXNzZXJ0KFByaXZhdGVSZWZDb3VudE92ZXJmbG93ZWQgPiAwKTsKIAkJUHJpdmF0ZVJl ZkNvdW50T3ZlcmZsb3dlZC0tOwogCkBAIC0zNjYsMTEgKzM3OSw3IEBAIFNoYXJlZEJ1ZmZlclVu cmVmKFByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYpCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlib29s CQlmb3VuZDsKLQkJCUJ1ZmZlcgkJYnVmZmVyID0gcmVmLT5idWZmZXI7Ci0KLQkJCWhhc2hfc2Vh cmNoKFByaXZhdGVSZWZDb3VudEhhc2gsICZidWZmZXIsIEhBU0hfUkVNT1ZFLCAmZm91bmQpOwot CQkJQXNzZXJ0KGZvdW5kKTsKKwkJCXJlZmNvdW50X2RlbGV0ZV9pdGVtKFByaXZhdGVSZWZDb3Vu dEhhc2gsIHJlZik7CiAJCQlBc3NlcnQoUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCA+IDApOwog CQkJUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZC0tOwogCQl9CkBAIC00NDEsMTAgKzQ1MCwxMCBA QCBDaGVja1ByaXZhdGVSZWZDb3VudExlYWtzKHZvaWQpCiAJLyogaWYgbmVjZXNzYXJ5IHNlYXJj aCB0aGUgaGFzaCAqLwogCWlmIChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkKQogCXsKLQkJSEFT SF9TRVFfU1RBVFVTIGhzdGF0OworCQlyZWZjb3VudF9pdGVyYXRvciBpdGVyOwogCi0JCWhhc2hf c2VxX2luaXQoJmhzdGF0LCBQcml2YXRlUmVmQ291bnRIYXNoKTsKLQkJd2hpbGUgKChyZXMgPSAo UHJpdmF0ZVJlZkNvdW50RW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwp CisJCXJlZmNvdW50X3N0YXJ0X2l0ZXJhdGUoUHJpdmF0ZVJlZkNvdW50SGFzaCwgJml0ZXIpOwor CQl3aGlsZSAoKHJlcyA9IHJlZmNvdW50X2l0ZXJhdGUoUHJpdmF0ZVJlZkNvdW50SGFzaCwgJml0 ZXIpKSAhPSBOVUxMKQogCQl7CiAJCQlzID0gRGVidWdQcmludEJ1ZmZlclJlZmNvdW50KHJlcy0+ YnVmZmVyKTsKIAkJCWVsb2coV0FSTklORywgImJ1ZmZlciByZWZjb3VudCBsZWFrOiAlcyIsIHMp OwpAQCAtNDk1LDcgKzUwNCw3IEBAIEluaXRQcml2YXRlUmVmQ291bnRJdGVyYXRvcih2b2lkKQog CiAJaXRlci0+YXJyYXlfaW5kZXggPSAwOwogCWl0ZXItPmluX2hhc2ggPSBmYWxzZTsKLQlpdGVy LT5oYXNoX3N0YXR1cyA9IE5VTEw7CisJaXRlci0+aGFzaF9pdGVyX3ZhbGlkID0gZmFsc2U7CiAJ cmV0dXJuIGl0ZXI7CiB9CiAKQEAgLTUyMSwyMSArNTMwLDIwIEBAIEdldE5leHRQcml2YXRlUmVm Q291bnRFbnRyeShQcml2YXRlUmVmQ291bnRJdGVyYXRvciAqaXRlcikKIAkJaXRlci0+aW5faGFz aCA9IHRydWU7CiAJCWlmIChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID4gMCkKIAkJewotCQkJ aXRlci0+aGFzaF9zdGF0dXMgPSBwYWxsb2Moc2l6ZW9mKEhBU0hfU0VRX1NUQVRVUykpOwotCQkJ aGFzaF9zZXFfaW5pdChpdGVyLT5oYXNoX3N0YXR1cywgUHJpdmF0ZVJlZkNvdW50SGFzaCk7CisJ CQlyZWZjb3VudF9zdGFydF9pdGVyYXRlKFByaXZhdGVSZWZDb3VudEhhc2gsICZpdGVyLT5oYXNo X2l0ZXIpOworCQkJaXRlci0+aGFzaF9pdGVyX3ZhbGlkID0gdHJ1ZTsKIAkJfQogCX0KIAotCWlm IChpdGVyLT5oYXNoX3N0YXR1cyAhPSBOVUxMKQorCWlmIChpdGVyLT5oYXNoX2l0ZXJfdmFsaWQp CiAJewogCQlQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVzOwogCi0JCXJlcyA9IChQcml2YXRlUmVm Q291bnRFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goaXRlci0+aGFzaF9zdGF0dXMpOworCQlyZXMg PSByZWZjb3VudF9pdGVyYXRlKFByaXZhdGVSZWZDb3VudEhhc2gsICZpdGVyLT5oYXNoX2l0ZXIp OwogCQlpZiAocmVzICE9IE5VTEwpCiAJCQlyZXR1cm4gcmVzOwogCi0JCXBmcmVlKGl0ZXItPmhh c2hfc3RhdHVzKTsKLQkJaXRlci0+aGFzaF9zdGF0dXMgPSBOVUxMOworCQlpdGVyLT5oYXNoX2l0 ZXJfdmFsaWQgPSBmYWxzZTsKIAl9CiAKIAlyZXR1cm4gTlVMTDsKQEAgLTU0NywxMSArNTU1LDYg QEAgR2V0TmV4dFByaXZhdGVSZWZDb3VudEVudHJ5KFByaXZhdGVSZWZDb3VudEl0ZXJhdG9yICpp dGVyKQogdm9pZAogRnJlZVByaXZhdGVSZWZDb3VudEl0ZXJhdG9yKFByaXZhdGVSZWZDb3VudEl0 ZXJhdG9yICppdGVyKQogewotCWlmIChpdGVyLT5oYXNoX3N0YXR1cyAhPSBOVUxMKQotCXsKLQkJ aGFzaF9zZXFfdGVybShpdGVyLT5oYXNoX3N0YXR1cyk7Ci0JCXBmcmVlKGl0ZXItPmhhc2hfc3Rh dHVzKTsKLQl9CiAJcGZyZWUoaXRlcik7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xp Yi9zaW1wbGVoYXNoLmggYi9zcmMvaW5jbHVkZS9saWIvc2ltcGxlaGFzaC5oCmluZGV4IDg0ODcx OTIzMmEuLjNjMDNhN2U5YzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYi9zaW1wbGVoYXNo LmgKKysrIGIvc3JjL2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaApAQCAtMjg3LDYgKzI4NywyMCBA QCBTSF9TQ09QRSB2b2lkIFNIX1NUQVQoU0hfVFlQRSAqIHRiKTsKICNkZWZpbmUgU0hfQ09NUEFS RV9LRVlTKHRiLCBhaGFzaCwgYWtleSwgYikgKFNIX0VRVUFMKHRiLCBiLT5TSF9LRVksIGFrZXkp KQogI2VuZGlmCiAKKy8qCisgKiBNYWNyb3MgdG8gY2hlY2svc2V0IGVudHJ5IHN0YXR1cy4gVXNl cnMgY2FuIG92ZXJyaWRlIHRoZXNlIHRvIGF2b2lkCisgKiBuZWVkaW5nIGEgc2VwYXJhdGUgc3Rh dHVzIGZpZWxkIGlmIHRoZWlyIGtleSB0eXBlIGhhcyBhbiAiaW52YWxpZCIgdmFsdWUuCisgKi8K KyNpZm5kZWYgU0hfRU5UUllfRU1QVFkKKyNkZWZpbmUgU0hfRU5UUllfRU1QVFkoZW50cnkpICgo ZW50cnkpLT5zdGF0dXMgPT0gU0hfU1RBVFVTX0VNUFRZKQorI2VuZGlmCisjaWZuZGVmIFNIX01B S0VfRU1QVFkKKyNkZWZpbmUgU0hfTUFLRV9FTVBUWShlbnRyeSkgKChlbnRyeSktPnN0YXR1cyA9 IFNIX1NUQVRVU19FTVBUWSkKKyNlbmRpZgorI2lmbmRlZiBTSF9NQUtFX0lOX1VTRQorI2RlZmlu ZSBTSF9NQUtFX0lOX1VTRShlbnRyeSkgKChlbnRyeSktPnN0YXR1cyA9IFNIX1NUQVRVU19JTl9V U0UpCisjZW5kaWYKKwogLyoKICAqIFdyYXAgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBpbiBp bmNsdWRlIGd1YXJkcywgdG8gYXZvaWQgbXVsdGlwbGUKICAqIGRlZmluaXRpb24gZXJyb3JzIGlm IHRoaXMgaGVhZGVyIGlzIGluY2x1ZGVkIG1vcmUgdGhhbiBvbmNlLiAgVGhlIHJlc3Qgb2YKQEAg LTU0NCw3ICs1NTgsNyBAQCBTSF9HUk9XKFNIX1RZUEUgKiB0YiwgdWludDY0IG5ld3NpemUpCiAJ CXVpbnQzMgkJaGFzaDsKIAkJdWludDMyCQlvcHRpbWFsOwogCi0JCWlmIChvbGRlbnRyeS0+c3Rh dHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmIChTSF9FTlRSWV9FTVBUWShvbGRlbnRyeSkp CiAJCXsKIAkJCXN0YXJ0ZWxlbSA9IGk7CiAJCQlicmVhazsKQEAgLTU2Niw3ICs1ODAsNyBAQCBT SF9HUk9XKFNIX1RZUEUgKiB0YiwgdWludDY0IG5ld3NpemUpCiAJewogCQlTSF9FTEVNRU5UX1RZ UEUgKm9sZGVudHJ5ID0gJm9sZGRhdGFbY29weWVsZW1dOwogCi0JCWlmIChvbGRlbnRyeS0+c3Rh dHVzID09IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmICghU0hfRU5UUllfRU1QVFkob2xkZW50cnkp KQogCQl7CiAJCQl1aW50MzIJCWhhc2g7CiAJCQl1aW50MzIJCXN0YXJ0ZWxlbTI7CkBAIC01ODIs NyArNTk2LDcgQEAgU0hfR1JPVyhTSF9UWVBFICogdGIsIHVpbnQ2NCBuZXdzaXplKQogCQkJewog CQkJCW5ld2VudHJ5ID0gJm5ld2RhdGFbY3VyZWxlbV07CiAKLQkJCQlpZiAobmV3ZW50cnktPnN0 YXR1cyA9PSBTSF9TVEFUVVNfRU1QVFkpCisJCQkJaWYgKFNIX0VOVFJZX0VNUFRZKG5ld2VudHJ5 KSkKIAkJCQl7CiAJCQkJCWJyZWFrOwogCQkJCX0KQEAgLTY1MywxNCArNjY3LDE0IEBAIHJlc3Rh cnQ6CiAJCVNIX0VMRU1FTlRfVFlQRSAqZW50cnkgPSAmZGF0YVtjdXJlbGVtXTsKIAogCQkvKiBh bnkgZW1wdHkgYnVja2V0IGNhbiBkaXJlY3RseSBiZSB1c2VkICovCi0JCWlmIChlbnRyeS0+c3Rh dHVzID09IFNIX1NUQVRVU19FTVBUWSkKKwkJaWYgKFNIX0VOVFJZX0VNUFRZKGVudHJ5KSkKIAkJ ewogCQkJdGItPm1lbWJlcnMrKzsKIAkJCWVudHJ5LT5TSF9LRVkgPSBrZXk7CiAjaWZkZWYgU0hf U1RPUkVfSEFTSAogCQkJU0hfR0VUX0hBU0godGIsIGVudHJ5KSA9IGhhc2g7CiAjZW5kaWYKLQkJ CWVudHJ5LT5zdGF0dXMgPSBTSF9TVEFUVVNfSU5fVVNFOworCQkJU0hfTUFLRV9JTl9VU0UoZW50 cnkpOwogCQkJKmZvdW5kID0gZmFsc2U7CiAJCQlyZXR1cm4gZW50cnk7CiAJCX0KQEAgLTY3NSw3 ICs2ODksNyBAQCByZXN0YXJ0OgogCiAJCWlmIChTSF9DT01QQVJFX0tFWVModGIsIGhhc2gsIGtl eSwgZW50cnkpKQogCQl7Ci0JCQlBc3NlcnQoZW50cnktPnN0YXR1cyA9PSBTSF9TVEFUVVNfSU5f VVNFKTsKKwkJCUFzc2VydCghU0hfRU5UUllfRU1QVFkoZW50cnkpKTsKIAkJCSpmb3VuZCA9IHRy dWU7CiAJCQlyZXR1cm4gZW50cnk7CiAJCX0KQEAgLTY5OSw3ICs3MTMsNyBAQCByZXN0YXJ0Ogog CQkJCWVtcHR5ZWxlbSA9IFNIX05FWFQodGIsIGVtcHR5ZWxlbSwgc3RhcnRlbGVtKTsKIAkJCQll bXB0eWVudHJ5ID0gJmRhdGFbZW1wdHllbGVtXTsKIAotCQkJCWlmIChlbXB0eWVudHJ5LT5zdGF0 dXMgPT0gU0hfU1RBVFVTX0VNUFRZKQorCQkJCWlmIChTSF9FTlRSWV9FTVBUWShlbXB0eWVudHJ5 KSkKIAkJCQl7CiAJCQkJCWxhc3RlbnRyeSA9IGVtcHR5ZW50cnk7CiAJCQkJCWJyZWFrOwpAQCAt NzQ4LDcgKzc2Miw3IEBAIHJlc3RhcnQ6CiAjaWZkZWYgU0hfU1RPUkVfSEFTSAogCQkJU0hfR0VU X0hBU0godGIsIGVudHJ5KSA9IGhhc2g7CiAjZW5kaWYKLQkJCWVudHJ5LT5zdGF0dXMgPSBTSF9T VEFUVVNfSU5fVVNFOworCQkJU0hfTUFLRV9JTl9VU0UoZW50cnkpOwogCQkJKmZvdW5kID0gZmFs c2U7CiAJCQlyZXR1cm4gZW50cnk7CiAJCX0KQEAgLTgxMCwxMiArODI0LDEyIEBAIFNIX0xPT0tV UF9IQVNIX0lOVEVSTkFMKFNIX1RZUEUgKiB0YiwgU0hfS0VZX1RZUEUga2V5LCB1aW50MzIgaGFz aCkKIAl7CiAJCVNIX0VMRU1FTlRfVFlQRSAqZW50cnkgPSAmdGItPmRhdGFbY3VyZWxlbV07CiAK LQkJaWYgKGVudHJ5LT5zdGF0dXMgPT0gU0hfU1RBVFVTX0VNUFRZKQorCQlpZiAoU0hfRU5UUllf RU1QVFkoZW50cnkpKQogCQl7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQogCi0JCUFzc2VydChlbnRy eS0+c3RhdHVzID09IFNIX1NUQVRVU19JTl9VU0UpOworCQlBc3NlcnQoIVNIX0VOVFJZX0VNUFRZ KGVudHJ5KSk7CiAKIAkJaWYgKFNIX0NPTVBBUkVfS0VZUyh0YiwgaGFzaCwga2V5LCBlbnRyeSkp CiAJCQlyZXR1cm4gZW50cnk7CkBAIC04NjgsMTAgKzg4MiwxMCBAQCBTSF9ERUxFVEUoU0hfVFlQ RSAqIHRiLCBTSF9LRVlfVFlQRSBrZXkpCiAJewogCQlTSF9FTEVNRU5UX1RZUEUgKmVudHJ5ID0g JnRiLT5kYXRhW2N1cmVsZW1dOwogCi0JCWlmIChlbnRyeS0+c3RhdHVzID09IFNIX1NUQVRVU19F TVBUWSkKKwkJaWYgKFNIX0VOVFJZX0VNUFRZKGVudHJ5KSkKIAkJCXJldHVybiBmYWxzZTsKIAot CQlpZiAoZW50cnktPnN0YXR1cyA9PSBTSF9TVEFUVVNfSU5fVVNFICYmCisJCWlmICghU0hfRU5U UllfRU1QVFkoZW50cnkpICYmCiAJCQlTSF9DT01QQVJFX0tFWVModGIsIGhhc2gsIGtleSwgZW50 cnkpKQogCQl7CiAJCQlTSF9FTEVNRU5UX1RZUEUgKmxhc3RlbnRyeSA9IGVudHJ5OwpAQCAtODk0 LDkgKzkwOCw5IEBAIFNIX0RFTEVURShTSF9UWVBFICogdGIsIFNIX0tFWV9UWVBFIGtleSkKIAkJ CQljdXJlbGVtID0gU0hfTkVYVCh0YiwgY3VyZWxlbSwgc3RhcnRlbGVtKTsKIAkJCQljdXJlbnRy eSA9ICZ0Yi0+ZGF0YVtjdXJlbGVtXTsKIAotCQkJCWlmIChjdXJlbnRyeS0+c3RhdHVzICE9IFNI X1NUQVRVU19JTl9VU0UpCisJCQkJaWYgKFNIX0VOVFJZX0VNUFRZKGN1cmVudHJ5KSkKIAkJCQl7 Ci0JCQkJCWxhc3RlbnRyeS0+c3RhdHVzID0gU0hfU1RBVFVTX0VNUFRZOworCQkJCQlTSF9NQUtF X0VNUFRZKGxhc3RlbnRyeSk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtOTA2LDcgKzkyMCw3 IEBAIFNIX0RFTEVURShTSF9UWVBFICogdGIsIFNIX0tFWV9UWVBFIGtleSkKIAkJCQkvKiBjdXJy ZW50IGlzIGF0IG9wdGltYWwgcG9zaXRpb24sIGRvbmUgKi8KIAkJCQlpZiAoY3Vyb3B0aW1hbCA9 PSBjdXJlbGVtKQogCQkJCXsKLQkJCQkJbGFzdGVudHJ5LT5zdGF0dXMgPSBTSF9TVEFUVVNfRU1Q VFk7CisJCQkJCVNIX01BS0VfRU1QVFkobGFzdGVudHJ5KTsKIAkJCQkJYnJlYWs7CiAJCQkJfQog CkBAIC05NTcsOSArOTcxLDkgQEAgU0hfREVMRVRFX0lURU0oU0hfVFlQRSAqIHRiLCBTSF9FTEVN RU5UX1RZUEUgKiBlbnRyeSkKIAkJY3VyZWxlbSA9IFNIX05FWFQodGIsIGN1cmVsZW0sIHN0YXJ0 ZWxlbSk7CiAJCWN1cmVudHJ5ID0gJnRiLT5kYXRhW2N1cmVsZW1dOwogCi0JCWlmIChjdXJlbnRy eS0+c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmIChTSF9FTlRSWV9FTVBUWShjdXJl bnRyeSkpCiAJCXsKLQkJCWxhc3RlbnRyeS0+c3RhdHVzID0gU0hfU1RBVFVTX0VNUFRZOworCQkJ U0hfTUFLRV9FTVBUWShsYXN0ZW50cnkpOwogCQkJYnJlYWs7CiAJCX0KIApAQCAtOTY5LDcgKzk4 Myw3IEBAIFNIX0RFTEVURV9JVEVNKFNIX1RZUEUgKiB0YiwgU0hfRUxFTUVOVF9UWVBFICogZW50 cnkpCiAJCS8qIGN1cnJlbnQgaXMgYXQgb3B0aW1hbCBwb3NpdGlvbiwgZG9uZSAqLwogCQlpZiAo Y3Vyb3B0aW1hbCA9PSBjdXJlbGVtKQogCQl7Ci0JCQlsYXN0ZW50cnktPnN0YXR1cyA9IFNIX1NU QVRVU19FTVBUWTsKKwkJCVNIX01BS0VfRU1QVFkobGFzdGVudHJ5KTsKIAkJCWJyZWFrOwogCQl9 CiAKQEAgLTk5Nyw3ICsxMDExLDcgQEAgU0hfU1RBUlRfSVRFUkFURShTSF9UWVBFICogdGIsIFNI X0lURVJBVE9SICogaXRlcikKIAl7CiAJCVNIX0VMRU1FTlRfVFlQRSAqZW50cnkgPSAmdGItPmRh dGFbaV07CiAKLQkJaWYgKGVudHJ5LT5zdGF0dXMgIT0gU0hfU1RBVFVTX0lOX1VTRSkKKwkJaWYg KFNIX0VOVFJZX0VNUFRZKGVudHJ5KSkKIAkJewogCQkJc3RhcnRlbGVtID0gaTsKIAkJCWJyZWFr OwpAQCAtMTA2Myw3ICsxMDc3LDcgQEAgU0hfSVRFUkFURShTSF9UWVBFICogdGIsIFNIX0lURVJB VE9SICogaXRlcikKIAogCQlpZiAoKGl0ZXItPmN1ciAmIHRiLT5zaXplbWFzaykgPT0gKGl0ZXIt PmVuZCAmIHRiLT5zaXplbWFzaykpCiAJCQlpdGVyLT5kb25lID0gdHJ1ZTsKLQkJaWYgKGVsZW0t PnN0YXR1cyA9PSBTSF9TVEFUVVNfSU5fVVNFKQorCQlpZiAoIVNIX0VOVFJZX0VNUFRZKGVsZW0p KQogCQl7CiAJCQlyZXR1cm4gZWxlbTsKIAkJfQpAQCAtMTE0MCw3ICsxMTU0LDcgQEAgU0hfU1RB VChTSF9UWVBFICogdGIpCiAKIAkJZWxlbSA9ICZ0Yi0+ZGF0YVtpXTsKIAotCQlpZiAoZWxlbS0+ c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmIChTSF9FTlRSWV9FTVBUWShlbGVtKSkK IAkJCWNvbnRpbnVlOwogCiAJCWhhc2ggPSBTSF9FTlRSWV9IQVNIKHRiLCBlbGVtKTsKQEAgLTEy MDUsNiArMTIxOSw5IEBAIFNIX1NUQVQoU0hfVFlQRSAqIHRiKQogI3VuZGVmIFNIX1NUT1JFX0hB U0gKICN1bmRlZiBTSF9VU0VfTk9OREVGQVVMVF9BTExPQ0FUT1IKICN1bmRlZiBTSF9FUVVBTAor I3VuZGVmIFNIX0VOVFJZX0VNUFRZCisjdW5kZWYgU0hfTUFLRV9FTVBUWQorI3VuZGVmIFNIX01B S0VfSU5fVVNFCiAKIC8qIHVuZGVmaW5lIGxvY2FsbHkgZGVjbGFyZWQgbWFjcm9zICovCiAjdW5k ZWYgU0hfTUFLRV9QUkVGSVgKLS0gCjIuMzQuMQoK --000000000000204347064cc375ea Content-Type: application/x-patch; name="v2-0001-Benchmark-buffer-pinning.patch" Content-Disposition: attachment; filename="v2-0001-Benchmark-buffer-pinning.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmci99b5 RnJvbSAzNmI2OWUyMDI4YzhmZWJiMzVjYTJjNDUzMjczODQyNTFjNDRiNzc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmUgRmVsaXBlIDxvLmFsZXhhbmRyZS5mZWxpcGVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDExIE1hciAyMDI2IDEyOjA1OjUwICswMDAwClN1YmplY3Q6 IFtQQVRDSCAxLzVdIEJlbmNobWFyayBidWZmZXIgcGlubmluZwoKLS0tCiBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYnVmZmVyX3Bpbi9NYWtlZmlsZSAgICAgfCAgMTggKwogc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2J1ZmZlcl9waW4vYmVuY2htYXJrLnB5IHwgMTg1ICsrKysrKysrKysKIC4uLi9tb2R1 bGVzL3Rlc3RfYnVmZmVyX3Bpbi9yZXF1aXJlbWVudHMudHh0ICB8ICAgOSArCiAuLi4vdGVzdF9i dWZmZXJfcGluL3Rlc3RfYnVmZmVyX3Bpbi0tMS4wLnNxbCAgfCAgNjYgKysrKwogLi4uL21vZHVs ZXMvdGVzdF9idWZmZXJfcGluL3Rlc3RfYnVmZmVyX3Bpbi5jIHwgMzIzICsrKysrKysrKysrKysr KysrKwogLi4uL3Rlc3RfYnVmZmVyX3Bpbi90ZXN0X2J1ZmZlcl9waW4uY29udHJvbCAgIHwgICA0 ICsKIDYgZmlsZXMgY2hhbmdlZCwgNjA1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bpbi9NYWtlZmlsZQogY3JlYXRlIG1vZGUg MTAwNzU1IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9idWZmZXJfcGluL2JlbmNobWFyay5weQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9idWZmZXJfcGluL3JlcXVpcmVt ZW50cy50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVy X3Bpbi90ZXN0X2J1ZmZlcl9waW4tLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bpbi90ZXN0X2J1ZmZlcl9waW4uYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9idWZmZXJfcGluL3Rlc3RfYnVmZmVyX3Bpbi5j b250cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2J1ZmZlcl9waW4vTWFr ZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bpbi9NYWtlZmlsZQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNzA3Zjg0YzViCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2J1ZmZlcl9waW4vTWFrZWZpbGUKQEAgLTAsMCAr MSwxOCBAQAorTU9EVUxFX2JpZyA9IHRlc3RfYnVmZmVyX3BpbgorT0JKUyA9IHRlc3RfYnVmZmVy X3Bpbi5vCisKK0VYVEVOU0lPTiA9IHRlc3RfYnVmZmVyX3BpbgorREFUQSA9IHRlc3RfYnVmZmVy X3Bpbi0tMS4wLnNxbAorCitQR0ZJTEVERVNDID0gInRlc3RfYnVmZmVyX3BpbiAtIGJ1ZmZlciBw aW5uaW5nIGJlbmNobWFya3MiCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25m aWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMp CitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3BpbgordG9wX2J1 aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1r CitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2J1ZmZlcl9waW4vYmVu Y2htYXJrLnB5IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2J1ZmZlcl9waW4vYmVuY2htYXJrLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAuLjAwNDA0NGJjNWMKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bpbi9iZW5jaG1hcmsu cHkKQEAgLTAsMCArMSwxODUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyIiIgorQnVmZmVy IHBpbm5pbmcgYmVuY2htYXJrIC0gcnVucyBTUUwgYmVuY2htYXJrcyBhbmQgc2F2ZXMgcmVzdWx0 cy4KKworVXNhZ2U6CisgICAgcHl0aG9uMyBiZW5jaG1hcmsucHkgW29wdGlvbnNdCisKK0V4YW1w bGVzOgorICAgIHB5dGhvbjMgYmVuY2htYXJrLnB5IC0tcG9ydCA1NDM0IC0tbmFtZSBwZzE4LWJh c2VsaW5lIC0tdGl0bGUgIlBvc3RncmVTUUwgMTggQmFzZWxpbmUiCisgICAgcHl0aG9uMyBiZW5j aG1hcmsucHkgLS1wb3J0IDU0MzQgLS1uYW1lIHBhdGNoLTAwMDUgLS10aXRsZSAiV2l0aCBQYXRj aCAwMDA1IgorIiIiCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG51bXB5IGFzIG5wCitpbXBv cnQgcGFuZGFzIGFzIHBkCitmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGNyZWF0ZV9lbmdpbmUsIHRl eHQKK2ltcG9ydCBtYXRwbG90bGliCittYXRwbG90bGliLnVzZSgnQWdnJykKK2ltcG9ydCBtYXRw bG90bGliLnB5cGxvdCBhcyBwbHQKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorCisKK2RlZiBn ZW9tc3BhY2VfaW50KHN0YXJ0LCBzdG9wLCBudW0pOgorICAgICIiIkdlbmVyYXRlIGdlb21ldHJp Y2FsbHkgc3BhY2VkIGludGVnZXJzLCBwdXNoaW5nIGR1cGxpY2F0ZXMgZm9yd2FyZC4iIiIKKyAg ICByYXcgPSBucC5nZW9tc3BhY2Uoc3RhcnQsIHN0b3AsIG51bSkKKyAgICByZXN1bHQgPSBbXQor ICAgIGZvciB2IGluIHJhdzoKKyAgICAgICAgY2FuZGlkYXRlID0gbWF4KGludChyb3VuZCh2KSks IHJlc3VsdFstMV0gKyAxIGlmIHJlc3VsdCBlbHNlIDEpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo Y2FuZGlkYXRlKQorICAgIHJldHVybiByZXN1bHQKKworCitkZWYgZW5zdXJlX3Rlc3RfdGFibGUo Y29ubiwgdGFibGVfbmFtZSwgbWluX2Jsb2Nrcyk6CisgICAgIiIiQ3JlYXRlIGEgdGFibGUgd2l0 aCBlbm91Z2ggYmxvY2tzIGZvciB0aGUgYmVuY2htYXJrLiIiIgorICAgIHJvd3NfbmVlZGVkID0g bWluX2Jsb2NrcyAqIDIyNiArIDEwMDAwCisgICAgcHJpbnQoZiJDcmVhdGluZyB0YWJsZSB7dGFi bGVfbmFtZX0gd2l0aCB+e21pbl9ibG9ja3N9IGJsb2Nrcy4uLiIpCisgICAgY29ubi5leGVjdXRl KHRleHQoZiJEUk9QIFRBQkxFIElGIEVYSVNUUyB7dGFibGVfbmFtZX0iKSkKKyAgICBjb25uLmV4 ZWN1dGUodGV4dChmIkNSRUFURSBVTkxPR0dFRCBUQUJMRSB7dGFibGVfbmFtZX0gQVMgU0VMRUNU IGdlbmVyYXRlX3NlcmllcygxLCB7cm93c19uZWVkZWR9KSBBUyBpZCIpKQorICAgIHJlc3VsdCA9 IGNvbm4uZXhlY3V0ZSh0ZXh0KGYiU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3t0YWJsZV9uYW1l fScpIC8gODE5MiBhcyBibG9ja3MiKSkuZmV0Y2hvbmUoKQorICAgIGFzc2VydCByZXN1bHRbMF0g Pj0gbWluX2Jsb2NrcywgZiJUYWJsZSB7dGFibGVfbmFtZX0gaGFzIHtyZXN1bHRbMF19IGJsb2Nr cywgZXhwZWN0ZWQgYXQgbGVhc3Qge21pbl9ibG9ja3N9IgorCitkZWYgcnVuX2JlbmNobWFyayhj b25uLCBmdW5jX3RlbXBsYXRlLCBidWZmZXJfY291bnRzKToKKyAgICAiIiJSdW4gYSBiZW5jaG1h cmsgZnVuY3Rpb24gYWNyb3NzIGFsbCBidWZmZXIgY291bnRzIGFuZCBwYXR0ZXJucyBpbiBvbmUg cXVlcnkuIiIiCisgICAgYXJyYXlfc3RyID0gc3RyKGJ1ZmZlcl9jb3VudHMpCisgICAgc3FsID0g dGV4dChmIiIiCisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgQ0FTRSBXSEVOIHIucmFuZG9t IFRIRU4gJ3JhbmRvbScgRUxTRSAnc2VxdWVudGlhbCcgRU5EIGFzIHBhdHRlcm4sCisgICAgICAg ICAgICBiLm51bV9idWZmZXJzLAorICAgICAgICAgICAgcGVyY2VudGlsZV9jb250KDAuNSkgV0lU SElOIEdST1VQIChPUkRFUiBCWSBiZW5jaC5wZXJfb3BfbnMpIGFzIG1lZGlhbl9ucworICAgICAg ICBGUk9NCisgICAgICAgICAgICB1bm5lc3QoQVJSQVlbZmFsc2UsIHRydWVdKSBBUyByKHJhbmRv bSksCisgICAgICAgICAgICB1bm5lc3QoQVJSQVlbe2FycmF5X3N0cn1dKSBBUyBiKG51bV9idWZm ZXJzKSwKKyAgICAgICAgICAgIExBVEVSQUwge2Z1bmNfdGVtcGxhdGV9IEFTIGJlbmNoCisgICAg ICAgIFdIRVJFIGJlbmNoLml0ZXJhdGlvbiA+IDAKKyAgICAgICAgR1JPVVAgQlkgci5yYW5kb20s IGIubnVtX2J1ZmZlcnMKKyAgICAgICAgT1JERVIgQlkgci5yYW5kb20sIGIubnVtX2J1ZmZlcnMK KyAgICAiIiIpCisgICAgcmV0dXJuIFtkaWN0KHJvdy5fbWFwcGluZykgZm9yIHJvdyBpbiBjb25u LmV4ZWN1dGUoc3FsKV0KKworCitkZWYgc2F2ZV9yZXN1bHRzKHJlc3VsdHNfZGlyLCBuYW1lLCBy ZXN1bHRzX2RpY3QsIHRpdGxlKToKKyAgICAiIiJTYXZlIGJlbmNobWFyayByZXN1bHRzIHRvIENT ViBhbmQgZ2VuZXJhdGUgU1ZHIHBsb3QuIiIiCisgICAgcmVzdWx0c19kaXIgPSBQYXRoKHJlc3Vs dHNfZGlyKQorICAgIHJlc3VsdHNfZGlyLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1 ZSkKKworICAgIGFsbF9kYXRhID0gW10KKyAgICBmb3IgYmVuY2hfbmFtZSwgZGF0YSBpbiByZXN1 bHRzX2RpY3QuaXRlbXMoKToKKyAgICAgICAgZGYgPSBwZC5EYXRhRnJhbWUoZGF0YSkKKyAgICAg ICAgZGZbJ2JlbmNobWFyayddID0gYmVuY2hfbmFtZQorICAgICAgICBhbGxfZGF0YS5hcHBlbmQo ZGYpCisKKyAgICBjb21iaW5lZF9kZiA9IHBkLmNvbmNhdChhbGxfZGF0YSwgaWdub3JlX2luZGV4 PVRydWUpCisKKyAgICBjc3ZfcGF0aCA9IHJlc3VsdHNfZGlyIC8gZiJ7bmFtZX0uY3N2IgorICAg IGNvbWJpbmVkX2RmLnRvX2Nzdihjc3ZfcGF0aCwgaW5kZXg9RmFsc2UpCisgICAgcHJpbnQoZiJT YXZlZCBDU1Y6IHtjc3ZfcGF0aH0iKQorICAgIHJldHVybiBjb21iaW5lZF9kZgorCisKK2RlZiBw bG90X3Jlc3VsdHMocmVzdWx0c19kaXIsIG5hbWUsIHJlc3VsdHNfZGljdCwgdGl0bGUpOgorICAg ICIiIkdlbmVyYXRlIFNWRyBwbG90IGZyb20gYmVuY2htYXJrIHJlc3VsdHMuIiIiCisgICAgcmVz dWx0c19kaXIgPSBQYXRoKHJlc3VsdHNfZGlyKQorCisgICAgZmlnLCBheCA9IHBsdC5zdWJwbG90 cyhmaWdzaXplPSgxMCwgNikpCisKKyAgICBiZW5jaG1hcmtzID0gWworICAgICAgICAoJ3JlYWQn LCAnYmx1ZScsICdvJywgJ1JlYWRCdWZmZXIvUmVsZWFzZUJ1ZmZlcicpLAorICAgICAgICAoJ3Bp bm5pbmcnLCAnZ3JlZW4nLCAncycsICdJbmNyQnVmZmVyUmVmQ291bnQvUmVsZWFzZUJ1ZmZlcicp LAorICAgICAgICAoJ2xvY2tpbmcnLCAncHVycGxlJywgJ2QnLCAnTG9ja0J1ZmZlci9VbmxvY2tC dWZmZXInKSwKKyAgICAgICAgKCdyZXNvd25lcicsICdyZWQnLCAnXicsICdSZXNvdXJjZU93bmVy IFJlbWVtYmVyL0ZvcmdldCcpLAorICAgIF0KKworICAgIGZvciBiZW5jaF9uYW1lLCBjb2xvciwg bWFya2VyLCBsYWJlbCBpbiBiZW5jaG1hcmtzOgorICAgICAgICBpZiBiZW5jaF9uYW1lIG5vdCBp biByZXN1bHRzX2RpY3Q6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBkZiA9IHBkLkRh dGFGcmFtZShyZXN1bHRzX2RpY3RbYmVuY2hfbmFtZV0pCisKKyAgICAgICAgc2VxX2RhdGEgPSBk ZltkZlsncGF0dGVybiddID09ICdzZXF1ZW50aWFsJ10KKyAgICAgICAgYXgucGxvdChzZXFfZGF0 YVsnbnVtX2J1ZmZlcnMnXSwgc2VxX2RhdGFbJ21lZGlhbl9ucyddLAorICAgICAgICAgICAgICAg IGNvbG9yPWNvbG9yLCBsaW5lc3R5bGU9Jy0nLCBtYXJrZXI9bWFya2VyLAorICAgICAgICAgICAg ICAgIGxpbmV3aWR0aD0yLCBtYXJrZXJzaXplPTYsIGxhYmVsPWYne2xhYmVsfSAoc2VxKScpCisK KyAgICAgICAgcmFuZF9kYXRhID0gZGZbZGZbJ3BhdHRlcm4nXSA9PSAncmFuZG9tJ10KKyAgICAg ICAgYXgucGxvdChyYW5kX2RhdGFbJ251bV9idWZmZXJzJ10sIHJhbmRfZGF0YVsnbWVkaWFuX25z J10sCisgICAgICAgICAgICAgICAgY29sb3I9Y29sb3IsIGxpbmVzdHlsZT0nLS0nLCBtYXJrZXI9 bWFya2VyLAorICAgICAgICAgICAgICAgIGxpbmV3aWR0aD0yLCBtYXJrZXJzaXplPTYsIGxhYmVs PWYne2xhYmVsfSAocmFuZCknKQorCisgICAgYXguc2V0X3hsYWJlbCgnTnVtYmVyIG9mIEJ1ZmZl cnMgKHNsaWRpbmcgd2luZG93KScpCisgICAgYXguc2V0X3lsYWJlbCgnVGltZSBwZXIgb3BlcmF0 aW9uIChucyknKQorICAgIGF4LnNldF90aXRsZSh0aXRsZSkKKyAgICBheC5zZXRfeWxpbSgwLCBO b25lKQorICAgIGF4LmdyaWQoVHJ1ZSwgYWxwaGE9MC4zKQorICAgIGF4LnNldF94c2NhbGUoJ2xv ZycsIGJhc2U9MikKKyAgICBheC5sZWdlbmQoZm9udHNpemU9OCwgbG9jPSd1cHBlciBsZWZ0JykK KworICAgIHBsdC50aWdodF9sYXlvdXQoKQorICAgIHN2Z19wYXRoID0gcmVzdWx0c19kaXIgLyBm IntuYW1lfS5zdmciCisgICAgcGx0LnNhdmVmaWcoc3ZnX3BhdGgsIGZvcm1hdD0nc3ZnJykKKyAg ICBwbHQuY2xvc2UoKQorICAgIHByaW50KGYiU2F2ZWQgU1ZHOiB7c3ZnX3BhdGh9IikKKworCitk ZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0 aW9uPSdCdWZmZXIgcGlubmluZyBiZW5jaG1hcmsnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo Jy0taXRlcmF0aW9ucycsICctbicsIHR5cGU9aW50LCBkZWZhdWx0PTEwMDAwLAorICAgICAgICAg ICAgICAgICAgICAgICAgaGVscD0nTnVtYmVyIG9mIG9wZXJhdGlvbnMgcGVyIHNhbXBsZSAoZGVm YXVsdDogMTAwMDApJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXNhbXBsZXMnLCB0eXBl PWludCwgZGVmYXVsdD01MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J051bWJlciBv ZiBzYW1wbGVzIHBlciBkYXRhIHBvaW50IChkZWZhdWx0OiA1MCknKQorICAgIHBhcnNlci5hZGRf YXJndW1lbnQoJy0tcG9ydCcsIHR5cGU9aW50LCBkZWZhdWx0PTU0MzIsCisgICAgICAgICAgICAg ICAgICAgICAgICBoZWxwPSdQb3N0Z3JlU1FMIHBvcnQgKGRlZmF1bHQ6IDU0MzIpJykKKyAgICBw YXJzZXIuYWRkX2FyZ3VtZW50KCctLXBvaW50cycsIHR5cGU9aW50LCBkZWZhdWx0PTUwLAorICAg ICAgICAgICAgICAgICAgICAgICAgaGVscD0nTnVtYmVyIG9mIGRhdGEgcG9pbnRzIChkZWZhdWx0 OiAyMDApJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1heC1kaXN0JywgdHlwZT1pbnQs IGRlZmF1bHQ9NTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTWF4aW11bSBidWZm ZXIgY291bnQgdG8gdGVzdCAoZGVmYXVsdDogNTEyKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu dCgnLS1uYW1lJywgZGVmYXVsdD0nYmVuY2htYXJrJywKKyAgICAgICAgICAgICAgICAgICAgICAg IGhlbHA9J05hbWUgZm9yIG91dHB1dCBmaWxlcyAoZGVmYXVsdDogYmVuY2htYXJrKScpCisgICAg cGFyc2VyLmFkZF9hcmd1bWVudCgnLS10aXRsZScsIGRlZmF1bHQ9J1Bvc3RncmVTUUwgQnVmZmVy IFBpbm5pbmcgUGVyZm9ybWFuY2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVGl0 bGUgZm9yIHRoZSBwbG90JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlc3VsdHMtZGly JywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRGlyZWN0b3J5 IGZvciByZXN1bHRzIChkZWZhdWx0OiAuL3Jlc3VsdHMpJykKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt ZW50KCctLXRhYmxlJywgZGVmYXVsdD0nYmVuY2hfbGFyZ2UnLAorICAgICAgICAgICAgICAgICAg ICAgICAgaGVscD0nVGFibGUgbmFtZSB0byB1c2UgZm9yIGJlbmNobWFya3MgKGRlZmF1bHQ6IGJl bmNoX2xhcmdlKScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFy Z3MucmVzdWx0c19kaXIgaXMgTm9uZToKKyAgICAgICAgYXJncy5yZXN1bHRzX2RpciA9IFBhdGgo X19maWxlX18pLnBhcmVudCAvICdyZXN1bHRzJworCisgICAgZW5naW5lID0gY3JlYXRlX2VuZ2lu ZShmJ3Bvc3RncmVzcWw6Ly9sb2NhbGhvc3Q6e2FyZ3MucG9ydH0vcG9zdGdyZXMnKQorICAgIGJ1 ZmZlcl9jb3VudHMgPSBnZW9tc3BhY2VfaW50KDEsIGFyZ3MubWF4X2Rpc3QsIGFyZ3MucG9pbnRz KQorCisgICAgbWluX2Jsb2Nrc19uZWVkZWQgPSBhcmdzLm1heF9kaXN0ICsgMTAwCisKKyAgICB3 aXRoIGVuZ2luZS5jb25uZWN0KCkuZXhlY3V0aW9uX29wdGlvbnMoaXNvbGF0aW9uX2xldmVsPSJB VVRPQ09NTUlUIikgYXMgY29ubjoKKyAgICAgICAgY29ubi5leGVjdXRlKHRleHQoIkNSRUFURSBF WFRFTlNJT04gSUYgTk9UIEVYSVNUUyB0ZXN0X2J1ZmZlcl9waW4iKSkKKyAgICAgICAgZW5zdXJl X3Rlc3RfdGFibGUoY29ubiwgYXJncy50YWJsZSwgbWluX2Jsb2Nrc19uZWVkZWQpCisKKworICAg ICAgICBuLCBzID0gYXJncy5pdGVyYXRpb25zLCBhcmdzLnNhbXBsZXMKKyAgICAgICAgcHJpbnQo ZiJcblJ1bm5pbmcgYmVuY2htYXJrczoge259IGl0ZXJhdGlvbnMsIHtzfSBzYW1wbGVzLCBtYXgg e2FyZ3MubWF4X2Rpc3R9IGJ1ZmZlcnMiKQorCisgICAgICAgIHJlc3VsdHMgPSB7fQorCisgICAg ICAgIHByaW50KCIgIFJ1bm5pbmc6IGJlbmNoX3Bpbm5pbmcuLi4iKQorICAgICAgICByZXN1bHRz WydwaW5uaW5nJ10gPSBydW5fYmVuY2htYXJrKGNvbm4sCisgICAgICAgICAgICBmImJlbmNoX3Bp bm5pbmcoJ3thcmdzLnRhYmxlfScsIGIubnVtX2J1ZmZlcnMsIHtufSwge3N9LCByLnJhbmRvbSki LAorICAgICAgICAgICAgYnVmZmVyX2NvdW50cykKKworICAgICAgICBwcmludCgiICBSdW5uaW5n OiBiZW5jaF9wcmVmZXRjaF9waXBlbGluZS4uLiIpCisgICAgICAgIHJlc3VsdHNbJ3JlYWQnXSA9 IHJ1bl9iZW5jaG1hcmsoY29ubiwKKyAgICAgICAgICAgIGYiYmVuY2hfcHJlZmV0Y2hfcGlwZWxp bmUoJ3thcmdzLnRhYmxlfScsIGIubnVtX2J1ZmZlcnMsIHtufSwge3N9LCByLnJhbmRvbSkiLAor ICAgICAgICAgICAgYnVmZmVyX2NvdW50cykKKworICAgICAgICBwcmludCgiICBSdW5uaW5nOiBi ZW5jaF9yZXNvd25lci4uLiIpCisgICAgICAgIHJlc3VsdHNbJ3Jlc293bmVyJ10gPSBydW5fYmVu Y2htYXJrKGNvbm4sCisgICAgICAgICAgICBmImJlbmNoX3Jlc293bmVyKGIubnVtX2J1ZmZlcnMs IHtufSwge3N9LCByLnJhbmRvbSkiLAorICAgICAgICAgICAgYnVmZmVyX2NvdW50cykKKworICAg IHNhdmVfcmVzdWx0cyhhcmdzLnJlc3VsdHNfZGlyLCBhcmdzLm5hbWUsIHJlc3VsdHMsIGFyZ3Mu dGl0bGUpCisgICAgcGxvdF9yZXN1bHRzKGFyZ3MucmVzdWx0c19kaXIsIGFyZ3MubmFtZSwgcmVz dWx0cywgYXJncy50aXRsZSkKKworICAgIHByaW50KGYiXG5Eb25lISBSZXN1bHRzIHNhdmVkIHRv IHthcmdzLnJlc3VsdHNfZGlyfS97YXJncy5uYW1lfS4qIikKKworCitpZiBfX25hbWVfXyA9PSAn X19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2J1ZmZlcl9waW4vcmVxdWlyZW1lbnRzLnR4dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9idWZm ZXJfcGluL3JlcXVpcmVtZW50cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uZTczYWI1NjkyNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9idWZmZXJfcGluL3JlcXVpcmVtZW50cy50eHQKQEAgLTAsMCArMSw5IEBACisjIFJlcXVpcmVt ZW50cyBmb3IgYmVuY2htYXJrLnB5CisjIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQK KyPCoG5vdCBlbmZvcmNpbmcgdmVyc2lvbnMsIGFzIGl0IG1pZ2h0IHNpbXBseQorI8Kgd29yayB3 aXRoIHlvdXIgaW5zdGFsbGVkIHZlcnNpb25zCitudW1weSAgICAgICAgICAgICMgdGVzdGVkIHdp dGggMS4yNCsKK3BhbmRhcyAgICAgICAgICAgIyB0ZXN0ZWQgd2l0aCAyLjArCitzcWxhbGNoZW15 ICAgICAgICMgdGVzdGVkIHdpdGggMi4wKworbWF0cGxvdGxpYiAgICAgICAjIHRlc3RlZCB3aXRo IDMuNysKK3BzeWNvcGcyLWJpbmFyeSAgIyB0ZXN0ZWQgd2l0aCAyLjkrCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bpbi90ZXN0X2J1ZmZlcl9waW4tLTEuMC5zcWwg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bpbi90ZXN0X2J1ZmZlcl9waW4tLTEuMC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGM0M2M0MTQ5NgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9idWZmZXJfcGluL3Rlc3RfYnVm ZmVyX3Bpbi0tMS4wLnNxbApAQCAtMCwwICsxLDY2IEBACisvKiB0ZXN0X2J1ZmZlcl9waW4tLTEu MC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0 aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lP TiB0ZXN0X2J1ZmZlcl9waW4iIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVO Q1RJT04gYmVuY2hfcHJlZmV0Y2hfcGlwZWxpbmUoCisgICAgcmVsbmFtZSB0ZXh0LAorICAgIHBy ZWZldGNoX2Rpc3QgaW50LAorICAgIG51bV9vcHMgaW50LAorICAgIGl0ZXJhdGlvbnMgaW50LAor ICAgIHJhbmRvbV9hY2Nlc3MgYm9vbAorKQorUkVUVVJOUyBUQUJMRShpdGVyYXRpb24gaW50LCB0 b3RhbF9ucyBiaWdpbnQsIHBlcl9vcF9ucyBmbG9hdDgpCitBUyAnTU9EVUxFX1BBVEhOQU1FJywg J2JlbmNoX3ByZWZldGNoX3BpcGVsaW5lJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKK0NPTU1FTlQg T04gRlVOQ1RJT04gYmVuY2hfcHJlZmV0Y2hfcGlwZWxpbmUgSVMKKydCZW5jaG1hcmsgYnVmZmVy IHBpbm5pbmcgd2l0aCBzbGlkaW5nIHdpbmRvdyBwcmVmZXRjaCBzaW11bGF0aW9uLgorQXJndW1l bnRzOgorICByZWxuYW1lICAgICAgICAtIG5hbWUgb2YgdGhlIHJlbGF0aW9uIHRvIHVzZQorICBw cmVmZXRjaF9kaXN0ICAtIG51bWJlciBvZiBidWZmZXJzIHRvIGtlZXAgcGlubmVkIChzbGlkaW5n IHdpbmRvdyBzaXplKQorICBudW1fb3BzICAgICAgICAtIG51bWJlciBvZiBwaW4vdW5waW4gb3Bl cmF0aW9ucyB0byBwZXJmb3JtCisgIGl0ZXJhdGlvbnMgICAgIC0gbnVtYmVyIG9mIHRpbWVzIHRv IHJlcGVhdCB0aGUgYmVuY2htYXJrCisgIHJhbmRvbV9hY2Nlc3MgIC0gaWYgdHJ1ZSwgYWNjZXNz IGJsb2NrcyByYW5kb21seTsgaWYgZmFsc2UsIHNlcXVlbnRpYWxseQorJzsKKworQ1JFQVRFIEZV TkNUSU9OIGJlbmNoX3Bpbm5pbmcoCisgICAgcmVsbmFtZSB0ZXh0LAorICAgIG51bV9idWZmZXJz IGludCwKKyAgICBudW1fb3BzIGludCwKKyAgICBpdGVyYXRpb25zIGludCwKKyAgICByYW5kb21f YWNjZXNzIGJvb2wKKykKK1JFVFVSTlMgVEFCTEUoaXRlcmF0aW9uIGludCwgdG90YWxfbnMgYmln aW50LCBwZXJfb3BfbnMgZmxvYXQ4KQorQVMgJ01PRFVMRV9QQVRITkFNRScsICdiZW5jaF9waW5u aW5nJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKK0NPTU1FTlQgT04gRlVOQ1RJT04gYmVuY2hfcGlu bmluZyBJUworJ0JlbmNobWFyayBwdXJlIHBpbi91bnBpbiBvcGVyYXRpb25zIHdpdGhvdXQgYnVm ZmVyIGxvb2t1cC4KK1VzZXMgSW5jckJ1ZmZlclJlZkNvdW50L1JlbGVhc2VCdWZmZXIgb24gcHJl LXBpbm5lZCBidWZmZXJzIHRvIGlzb2xhdGUKK3JlZmNvdW50IHRyYWNraW5nIG92ZXJoZWFkIGZy b20gYnVmZmVyIHRhYmxlIGxvb2t1cHMgYW5kIEkvTy4KK0FyZ3VtZW50czoKKyAgcmVsbmFtZSAg ICAgICAtIG5hbWUgb2YgdGhlIHJlbGF0aW9uIHRvIHVzZSBmb3IgcGlubmluZyBidWZmZXJzCisg IG51bV9idWZmZXJzICAgLSBudW1iZXIgb2YgYnVmZmVycyB0byBrZWVwIGFzIGJhc2UgcGlucwor ICBudW1fb3BzICAgICAgIC0gbnVtYmVyIG9mIHBpbi91bnBpbiBwYWlycyB0byBwZXJmb3JtCisg IGl0ZXJhdGlvbnMgICAgLSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBiZW5jaG1hcmsK KyAgcmFuZG9tX2FjY2VzcyAtIGlmIHRydWUsIGFjY2VzcyBidWZmZXJzIHJhbmRvbWx5OyBpZiBm YWxzZSwgc2VxdWVudGlhbGx5JzsKKworQ1JFQVRFIEZVTkNUSU9OIGJlbmNoX3Jlc293bmVyKAor ICAgIG51bV9idWZmZXJzIGludCwKKyAgICBudW1fb3BzIGludCwKKyAgICBpdGVyYXRpb25zIGlu dCwKKyAgICByYW5kb21fYWNjZXNzIGJvb2wKKykKK1JFVFVSTlMgVEFCTEUoaXRlcmF0aW9uIGlu dCwgdG90YWxfbnMgYmlnaW50LCBwZXJfb3BfbnMgZmxvYXQ4KQorQVMgJ01PRFVMRV9QQVRITkFN RScsICdiZW5jaF9yZXNvd25lcicKK0xBTkdVQUdFIEMgU1RSSUNUOworCitDT01NRU5UIE9OIEZV TkNUSU9OIGJlbmNoX3Jlc293bmVyIElTCisnQmVuY2htYXJrIFJlc291cmNlT3duZXIgcmVtZW1i ZXIvZm9yZ2V0IG9wZXJhdGlvbnMgb25seS4KK1VzZXMgZmFrZSByZXNvdXJjZSB2YWx1ZXMgLSBu byBhY3R1YWwgcmVzb3VyY2VzIGFyZSB0cmFja2VkLgorQXJndW1lbnRzOgorICBudW1fYnVmZmVy cyAgIC0gbnVtYmVyIG9mIGZha2UgcmVzb3VyY2VzIHRvIHRyYWNrCisgIG51bV9vcHMgICAgICAg LSBudW1iZXIgb2YgcmVtZW1iZXIvZm9yZ2V0IHBhaXJzIHRvIHBlcmZvcm0KKyAgaXRlcmF0aW9u cyAgICAtIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIGJlbmNobWFyaworICByYW5kb21f YWNjZXNzIC0gaWYgdHJ1ZSwgYWNjZXNzIHJlc291cmNlcyByYW5kb21seTsgaWYgZmFsc2UsIHNl cXVlbnRpYWxseSc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bp bi90ZXN0X2J1ZmZlcl9waW4uYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9idWZmZXJfcGluL3Rl c3RfYnVmZmVyX3Bpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdi NmM5MTY3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVy X3Bpbi90ZXN0X2J1ZmZlcl9waW4uYwpAQCAtMCwwICsxLDMyMyBAQAorLyoKKyAqIHRlc3RfYnVm ZmVyX3Bpbi5jIC0gQnVmZmVyIHBpbm5pbmcgYmVuY2htYXJrCisgKi8KKworI2luY2x1ZGUgInBv c3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgorI2luY2x1ZGUgImZt Z3IuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5j bHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2lu dGVybmFscy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNv d25lci5oIgorI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKKworUEdfTU9EVUxFX01BR0lDOwor CitQR19GVU5DVElPTl9JTkZPX1YxKGJlbmNoX3ByZWZldGNoX3BpcGVsaW5lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoYmVuY2hfcGlubmluZyk7CitQR19GVU5DVElPTl9JTkZPX1YxKGJlbmNoX3Jl c293bmVyKTsKKworLyogQ3VzdG9tIFJlc291cmNlT3duZXJEZXNjIGZvciBiZW5jaG1hcmsgLSBk b2VzIG5vdGhpbmcgb24gcmVsZWFzZSAqLworc3RhdGljIHZvaWQgYmVuY2hfcmVsZWFzZV9yZXNv dXJjZShEYXR1bSByZXMpIHsgLyogbm8tb3AgKi8gfQorCitzdGF0aWMgY29uc3QgUmVzb3VyY2VP d25lckRlc2MgYmVuY2hfcmVzb3duZXJfZGVzYyA9IHsKKwkubmFtZSA9ICJCZW5jaG1hcmtSZXNv dXJjZSIsCisJLnJlbGVhc2VfcGhhc2UgPSBSRVNPVVJDRV9SRUxFQVNFX0FGVEVSX0xPQ0tTLAor CS5yZWxlYXNlX3ByaW9yaXR5ID0gUkVMRUFTRV9QUklPX0ZJUlNULAorCS5SZWxlYXNlUmVzb3Vy Y2UgPSBiZW5jaF9yZWxlYXNlX3Jlc291cmNlLAorCS5EZWJ1Z1ByaW50ID0gTlVMTCwKK307CisK Ky8qCisgKiBHZW5lcmF0ZSBhbiBhY2Nlc3Mgc2VxdWVuY2UgZm9yIGJlbmNobWFya2luZy4KKyAq IElmIHJhbmRvbV9hY2Nlc3MgaXMgdHJ1ZSwgdXNlcyBGaXNoZXItWWF0ZXMgc2h1ZmZsZS4KKyAq IE90aGVyd2lzZSwgZ2VuZXJhdGVzIHNlcXVlbnRpYWwgcGF0dGVybiBtb2R1bG8gbnVtX2l0ZW1z LgorICovCitzdGF0aWMgdm9pZAorZ2VuZXJhdGVfYWNjZXNzX3NlcXVlbmNlKGludCAqc2VxdWVu Y2UsIGludCBudW1fb3BlcmF0aW9ucywgaW50IG51bV9pdGVtcywgYm9vbCByYW5kb21fYWNjZXNz KQoreworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX29wZXJhdGlvbnM7IGkrKykKKwkJc2VxdWVu Y2VbaV0gPSBpICUgbnVtX2l0ZW1zOworCisJaWYgKHJhbmRvbV9hY2Nlc3MpCisJeworCQlmb3Ig KGludCBpID0gbnVtX29wZXJhdGlvbnMgLSAxOyBpID4gMDsgaS0tKQorCQl7CisJCQlpbnQgaiA9 IHBnX3BybmdfdWludDY0X3JhbmdlKCZwZ19nbG9iYWxfcHJuZ19zdGF0ZSwgMCwgaSk7CisJCQlp bnQgdG1wID0gc2VxdWVuY2VbaV07CisJCQlzZXF1ZW5jZVtpXSA9IHNlcXVlbmNlW2pdOworCQkJ c2VxdWVuY2Vbal0gPSB0bXA7CisJCX0KKwl9Cit9CisKKworLyoKKyAqIGJlbmNoX3Bpbm5pbmcg LSBiZW5jaG1hcmsgcHVyZSBwaW4vdW5waW4gb3BlcmF0aW9ucworICoKKyAqIFdhcm1zIHVwIHRo ZSBjYWNoZSBieSByZWFkaW5nIGFsbCBibG9ja3MgaW4gdGhlIHJlbGF0aW9uLgorICogUHJlY29t cHV0ZSBhIGJsb2NrIHNlcXVlbmNlIGluIHdoaWNoIHRoZSBidWZmZXJzIHdpbGwgYmUgcmVhZC4K KyAqIFRoZW4gc2NhbiB0aW1lcyByZXBlYXRlZGx5IGEgc2NhbiBmb2xsb3dpbmcgdGhlIGJsb2Nr IHNlcXVlbmNlLgorICogd2l0aCBhIGZpeGVkIGRpc3RhbmNlIG9mIGBudW1fYnVmZmVyc2AgKHBs dXMgcmFtcCB1cCBhbmQgcmFtcCBkb3duKQorKi8KK0RhdHVtCitiZW5jaF9wcmVmZXRjaF9waXBl bGluZShQR19GVU5DVElPTl9BUkdTKQoreworCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1 cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKKwl0ZXh0CSAgICpyZWxuYW1lX3RleHQg PSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKKwlpbnQJCQludW1fYnVmZmVycyA9IFBHX0dFVEFSR19J TlQzMigxKTsKKwlpbnQJCQludW1fb3BlcmF0aW9ucyA9IFBHX0dFVEFSR19JTlQzMigyKTsKKwlp bnQJCQlpdGVyYXRpb25zID0gUEdfR0VUQVJHX0lOVDMyKDMpOworCWJvb2wJCXJhbmRvbV9hY2Nl c3MgPSBQR19HRVRBUkdfQk9PTCg0KTsKKworCU9pZAkJCXJlbGlkOworCVJlbGF0aW9uCXJlbDsK KwlCbG9ja051bWJlciBuYmxvY2tzOworCUJ1ZmZlcgkgICAqcGlwZWxpbmU7CisJaW50CQkgICAq YmxvY2tfc2VxdWVuY2U7CisJaW50CQkJaXRlcjsKKworCVR1cGxlc3RvcmVzdGF0ZSAqdHVwc3Rv cmU7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0dW0JCXZhbHVlc1szXTsKKwlib29sCQludWxs c1szXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKworCWlmIChudW1fYnVmZmVycyA8IDEgfHwg bnVtX29wZXJhdGlvbnMgPCBudW1fYnVmZmVycykKKwkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygi aW52YWxpZCBwYXJhbWV0ZXJzIikpKTsKKworCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAw KTsKKwl0dXBzdG9yZSA9IHJzaW5mby0+c2V0UmVzdWx0OworCXR1cGRlc2MgPSByc2luZm8tPnNl dERlc2M7CisKKwlyZWxpZCA9IFJhbmdlVmFyR2V0UmVsaWQobWFrZVJhbmdlVmFyRnJvbU5hbWVM aXN0KHRleHRUb1F1YWxpZmllZE5hbWVMaXN0KHJlbG5hbWVfdGV4dCkpLCBBY2Nlc3NTaGFyZUxv Y2ssIGZhbHNlKTsKKwlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2sp OworCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7CisKKwlpZiAobmJs b2NrcyA9PSAwKQorCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJyZWxhdGlvbiBoYXMgbm8gYmxv Y2tzIikpKTsKKworCXBpcGVsaW5lID0gcGFsbG9jMChudW1fYnVmZmVycyAqIHNpemVvZihCdWZm ZXIpKTsKKwlibG9ja19zZXF1ZW5jZSA9IHBhbGxvYyhudW1fb3BlcmF0aW9ucyAqIHNpemVvZihp bnQpKTsKKworCS8qIFdhcm0gdXAgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9vcGVyYXRp b25zICYmIGkgPCAoaW50KSBuYmxvY2tzOyBpKyspCisJeworCQlCdWZmZXIgYnVmID0gUmVhZEJ1 ZmZlcihyZWwsIGkpOworCQlSZWxlYXNlQnVmZmVyKGJ1Zik7CisJfQorCWdlbmVyYXRlX2FjY2Vz c19zZXF1ZW5jZShibG9ja19zZXF1ZW5jZSwgbnVtX29wZXJhdGlvbnMsIG5ibG9ja3MsIHJhbmRv bV9hY2Nlc3MpOworCisJZm9yIChpdGVyID0gMDsgaXRlciA8IGl0ZXJhdGlvbnM7IGl0ZXIrKykK Kwl7CisJCWluc3RyX3RpbWUJc3RhcnRfdGltZSwgZW5kX3RpbWU7CisJCWludDY0CQllbGFwc2Vk X25zOworCisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnRfdGltZSk7CisKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCBudW1fb3BlcmF0aW9ucyArIG51bV9idWZmZXJzOyBpKyspCisJCXsKKwkJ CWlmIChpID49IG51bV9idWZmZXJzKQorCQkJCVJlbGVhc2VCdWZmZXIocGlwZWxpbmVbKGkgLSBu dW1fYnVmZmVycykgJSBudW1fYnVmZmVyc10pOworCQkJaWYgKGkgPCBudW1fb3BlcmF0aW9ucykK KwkJCQlwaXBlbGluZVtpICUgbnVtX2J1ZmZlcnNdID0gUmVhZEJ1ZmZlcihyZWwsIGJsb2NrX3Nl cXVlbmNlW2ldKTsKKwkJfQorCisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kX3RpbWUpOwor CQlJTlNUUl9USU1FX1NVQlRSQUNUKGVuZF90aW1lLCBzdGFydF90aW1lKTsKKwkJZWxhcHNlZF9u cyA9IElOU1RSX1RJTUVfR0VUX05BTk9TRUMoZW5kX3RpbWUpOworCisJCXZhbHVlc1swXSA9IElu dDMyR2V0RGF0dW0oaXRlcik7CisJCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0oZWxhcHNlZF9u cyk7CisJCXZhbHVlc1syXSA9IEZsb2F0OEdldERhdHVtKChkb3VibGUpIGVsYXBzZWRfbnMgLyBu dW1fb3BlcmF0aW9ucyk7CisJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNj LCB2YWx1ZXMsIG51bGxzKTsKKwl9CisKKwlwZnJlZShwaXBlbGluZSk7CisJcGZyZWUoYmxvY2tf c2VxdWVuY2UpOworCXJlbGF0aW9uX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJl dHVybiAoRGF0dW0pIDA7Cit9CisKKy8qCisgKiBiZW5jaF9waW5uaW5nIC0gYmVuY2htYXJrIHB1 cmUgcGluL3VucGluIG9wZXJhdGlvbnMKKyAqCisgKiBQcmUtcmVhZHMgYnVmZmVycyBpbnRvIGNh Y2hlLCB0aGVuIHRpbWVzIEluY3JCdWZmZXJSZWZDb3VudC9SZWxlYXNlQnVmZmVyCisgKiBjeWNs ZXMgaW4gYSBwaXBlbGluZWQgZmFzaGlvbi4gVGhpcyBpcyBpbnRlbmRlZCB0byBzZXBhcmF0ZSB0 aGUKKyAqIHBpbiBjb3VudCBkZXBlbmRlbnQgcGFydCBvZiB0aGUgUmVhZEJ1ZmZlci9SZWxlYXNl QnVmZmVyIG9wZXJhdGlvbnMKKyAqLworRGF0dW0KK2JlbmNoX3Bpbm5pbmcoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2lu Zm8tPnJlc3VsdGluZm87CisJdGV4dAkgICAqcmVsbmFtZV90ZXh0ID0gUEdfR0VUQVJHX1RFWFRf UFAoMCk7CisJaW50CQkJbnVtX2J1ZmZlcnMgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisJaW50CQkJ bnVtX29wZXJhdGlvbnMgPSBQR19HRVRBUkdfSU5UMzIoMik7CisJaW50CQkJaXRlcmF0aW9ucyA9 IFBHX0dFVEFSR19JTlQzMigzKTsKKwlib29sCQlyYW5kb21fYWNjZXNzID0gUEdfR0VUQVJHX0JP T0woNCk7CisKKwlPaWQJCQlyZWxpZDsKKwlSZWxhdGlvbglyZWw7CisJQmxvY2tOdW1iZXIgbmJs b2NrczsKKwlCdWZmZXIJICAgKmJhc2VfYnVmZmVyczsKKwlCdWZmZXIJICAgKnBpcGVsaW5lOwor CWludAkJICAgKmFjY2Vzc19zZXF1ZW5jZTsKKwlpbnQJCQlpdGVyOworCisJVHVwbGVzdG9yZXN0 YXRlICp0dXBzdG9yZTsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlEYXR1bQkJdmFsdWVzWzNdOwor CWJvb2wJCW51bGxzWzNdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2V9OworCisJaWYgKG51bV9idWZm ZXJzIDwgMSB8fCBudW1fb3BlcmF0aW9ucyA8IG51bV9idWZmZXJzKQorCQllcmVwb3J0KEVSUk9S LCAoZXJybXNnKCJpbnZhbGlkIHBhcmFtZXRlcnMiKSkpOworCisJSW5pdE1hdGVyaWFsaXplZFNS RihmY2luZm8sIDApOworCXR1cHN0b3JlID0gcnNpbmZvLT5zZXRSZXN1bHQ7CisJdHVwZGVzYyA9 IHJzaW5mby0+c2V0RGVzYzsKKworCXJlbGlkID0gUmFuZ2VWYXJHZXRSZWxpZChtYWtlUmFuZ2VW YXJGcm9tTmFtZUxpc3QodGV4dFRvUXVhbGlmaWVkTmFtZUxpc3QocmVsbmFtZV90ZXh0KSksIEFj Y2Vzc1NoYXJlTG9jaywgZmFsc2UpOworCXJlbCA9IHJlbGF0aW9uX29wZW4ocmVsaWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVsKTsK KworCWlmICgoQmxvY2tOdW1iZXIpIG51bV9idWZmZXJzID4gbmJsb2NrcykKKwkJZXJlcG9ydChF UlJPUiwgKGVycm1zZygibm90IGVub3VnaCBibG9ja3MgaW4gcmVsYXRpb24iKSkpOworCisJYmFz ZV9idWZmZXJzID0gcGFsbG9jKG51bV9idWZmZXJzICogc2l6ZW9mKEJ1ZmZlcikpOworCXBpcGVs aW5lID0gcGFsbG9jKG51bV9idWZmZXJzICogc2l6ZW9mKEJ1ZmZlcikpOworCWFjY2Vzc19zZXF1 ZW5jZSA9IHBhbGxvYyhudW1fb3BlcmF0aW9ucyAqIHNpemVvZihpbnQpKTsKKworCWdlbmVyYXRl X2FjY2Vzc19zZXF1ZW5jZShhY2Nlc3Nfc2VxdWVuY2UsIG51bV9vcGVyYXRpb25zLCBudW1fYnVm ZmVycywgcmFuZG9tX2FjY2Vzcyk7CisKKwkvKiBQaW4gdGhlIGJ1ZmZlcnMgYXMgYmFzZSBwaW5z IChrZWVwcyB0aGVtIGluIGNhY2hlKSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2J1ZmZl cnM7IGkrKykKKwkJYmFzZV9idWZmZXJzW2ldID0gUmVhZEJ1ZmZlcihyZWwsIGkpOworCisJZm9y IChpdGVyID0gMDsgaXRlciA8IGl0ZXJhdGlvbnM7IGl0ZXIrKykKKwl7CisJCWluc3RyX3RpbWUJ c3RhcnRfdGltZSwgZW5kX3RpbWU7CisJCWludDY0CQllbGFwc2VkX25zOworCisJCUlOU1RSX1RJ TUVfU0VUX0NVUlJFTlQoc3RhcnRfdGltZSk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1f b3BlcmF0aW9ucyArIG51bV9idWZmZXJzOyBpKyspCisJCXsKKwkJCWlmIChpID49IG51bV9idWZm ZXJzKQorCQkJCVJlbGVhc2VCdWZmZXIocGlwZWxpbmVbKGkgLSBudW1fYnVmZmVycykgJSBudW1f YnVmZmVyc10pOworCQkJaWYgKGkgPCBudW1fb3BlcmF0aW9ucykKKwkJCXsKKwkJCQlCdWZmZXIg YnVmID0gYmFzZV9idWZmZXJzW2FjY2Vzc19zZXF1ZW5jZVtpXV07CisJCQkJSW5jckJ1ZmZlclJl ZkNvdW50KGJ1Zik7CisJCQkJcGlwZWxpbmVbaSAlIG51bV9idWZmZXJzXSA9IGJ1ZjsKKwkJCX0K KwkJfQorCisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kX3RpbWUpOworCQlJTlNUUl9USU1F X1NVQlRSQUNUKGVuZF90aW1lLCBzdGFydF90aW1lKTsKKwkJZWxhcHNlZF9ucyA9IElOU1RSX1RJ TUVfR0VUX05BTk9TRUMoZW5kX3RpbWUpOworCisJCXZhbHVlc1swXSA9IEludDMyR2V0RGF0dW0o aXRlcik7CisJCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0oZWxhcHNlZF9ucyk7CisJCXZhbHVl c1syXSA9IEZsb2F0OEdldERhdHVtKChkb3VibGUpIGVsYXBzZWRfbnMgLyBudW1fb3BlcmF0aW9u cyk7CisJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNjLCB2YWx1ZXMsIG51 bGxzKTsKKwl9CisKKwkvKiBSZWxlYXNlIGJhc2UgcGlucyAqLworCWZvciAoaW50IGkgPSAwOyBp IDwgbnVtX2J1ZmZlcnM7IGkrKykKKwkJUmVsZWFzZUJ1ZmZlcihiYXNlX2J1ZmZlcnNbaV0pOwor CisJcGZyZWUoYWNjZXNzX3NlcXVlbmNlKTsKKwlwZnJlZShwaXBlbGluZSk7CisJcGZyZWUoYmFz ZV9idWZmZXJzKTsKKwlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwly ZXR1cm4gKERhdHVtKSAwOworfQorCisvKgorICogYmVuY2hfcmVzb3duZXIgLSBiZW5jaG1hcmsg UmVzb3VyY2VPd25lciByZW1lbWJlci9mb3JnZXQgb3BlcmF0aW9ucworICoKKyAqIFVzZXMgZmFr ZSByZXNvdXJjZSB2YWx1ZXMgdG8gdGVzdCBwdXJlIFJlc291cmNlT3duZXIgdHJhY2tpbmcgb3Zl cmhlYWQKKyAqIHdpdGhvdXQgYW55IGFjdHVhbCByZXNvdXJjZSBvcGVyYXRpb25zLiBVc2VzIHNh bWUgcGlwZWxpbmVkIHN0cnVjdHVyZS4KKyAqLworRGF0dW0KK2JlbmNoX3Jlc293bmVyKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8g KikgZmNpbmZvLT5yZXN1bHRpbmZvOworCWludAkJCW51bV9idWZmZXJzID0gUEdfR0VUQVJHX0lO VDMyKDApOworCWludAkJCW51bV9vcGVyYXRpb25zID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCWlu dAkJCWl0ZXJhdGlvbnMgPSBQR19HRVRBUkdfSU5UMzIoMik7CisJYm9vbAkJcmFuZG9tX2FjY2Vz cyA9IFBHX0dFVEFSR19CT09MKDMpOworCisJRGF0dW0JICAgKnJlc291cmNlczsKKwlEYXR1bQkg ICAqcGlwZWxpbmU7CisJaW50CQkgICAqYWNjZXNzX3NlcXVlbmNlOworCWludAkJCWl0ZXI7CisK KwlUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlOworCVR1cGxlRGVzYwl0dXBkZXNjOworCURhdHVt CQl2YWx1ZXNbM107CisJYm9vbAkJbnVsbHNbM10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZX07CisK KwlpZiAobnVtX2J1ZmZlcnMgPCAxIHx8IG51bV9vcGVyYXRpb25zIDwgbnVtX2J1ZmZlcnMpCisJ CWVyZXBvcnQoRVJST1IsIChlcnJtc2coImludmFsaWQgcGFyYW1ldGVycyIpKSk7CisKKwlJbml0 TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CisJdHVwc3RvcmUgPSByc2luZm8tPnNldFJlc3Vs dDsKKwl0dXBkZXNjID0gcnNpbmZvLT5zZXREZXNjOworCisJcmVzb3VyY2VzID0gcGFsbG9jKG51 bV9idWZmZXJzICogc2l6ZW9mKERhdHVtKSk7CisJcGlwZWxpbmUgPSBwYWxsb2MobnVtX2J1ZmZl cnMgKiBzaXplb2YoRGF0dW0pKTsKKwlhY2Nlc3Nfc2VxdWVuY2UgPSBwYWxsb2MobnVtX29wZXJh dGlvbnMgKiBzaXplb2YoaW50KSk7CisKKwkvKiBVc2UgZmFrZSByZXNvdXJjZSB2YWx1ZXMgKHBv aW50ZXJzIHRvIGFycmF5IGVsZW1lbnRzIGZvciB1bmlxdWVuZXNzKSAqLworCWZvciAoaW50IGkg PSAwOyBpIDwgbnVtX2J1ZmZlcnM7IGkrKykKKwkJcmVzb3VyY2VzW2ldID0gUG9pbnRlckdldERh dHVtKCZyZXNvdXJjZXNbaV0pOworCisJZ2VuZXJhdGVfYWNjZXNzX3NlcXVlbmNlKGFjY2Vzc19z ZXF1ZW5jZSwgbnVtX29wZXJhdGlvbnMsIG51bV9idWZmZXJzLCByYW5kb21fYWNjZXNzKTsKKwor CWZvciAoaXRlciA9IDA7IGl0ZXIgPCBpdGVyYXRpb25zOyBpdGVyKyspCisJeworCQlpbnN0cl90 aW1lCXN0YXJ0X3RpbWUsIGVuZF90aW1lOworCQlpbnQ2NAkJZWxhcHNlZF9uczsKKworCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwg bnVtX29wZXJhdGlvbnMgKyBudW1fYnVmZmVyczsgaSsrKQorCQl7CisJCQlpZiAoaSA+PSBudW1f YnVmZmVycykKKwkJCQlSZXNvdXJjZU93bmVyRm9yZ2V0KEN1cnJlbnRSZXNvdXJjZU93bmVyLAor CQkJCQkJCQkJcGlwZWxpbmVbKGkgLSBudW1fYnVmZmVycykgJSBudW1fYnVmZmVyc10sCisJCQkJ CQkJCQkmYmVuY2hfcmVzb3duZXJfZGVzYyk7CisJCQlpZiAoaSA8IG51bV9vcGVyYXRpb25zKQor CQkJeworCQkJCURhdHVtCQlyZXMgPSByZXNvdXJjZXNbYWNjZXNzX3NlcXVlbmNlW2ldXTsKKwkJ CQlSZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50UmVzb3VyY2VPd25lcik7CisJCQkJUmVzb3Vy Y2VPd25lclJlbWVtYmVyKEN1cnJlbnRSZXNvdXJjZU93bmVyLCByZXMsICZiZW5jaF9yZXNvd25l cl9kZXNjKTsKKwkJCQlwaXBlbGluZVtpICUgbnVtX2J1ZmZlcnNdID0gcmVzOworCQkJfQorCQl9 CisKKwkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmRfdGltZSk7CisJCUlOU1RSX1RJTUVfU1VC VFJBQ1QoZW5kX3RpbWUsIHN0YXJ0X3RpbWUpOworCQllbGFwc2VkX25zID0gSU5TVFJfVElNRV9H RVRfTkFOT1NFQyhlbmRfdGltZSk7CisKKwkJdmFsdWVzWzBdID0gSW50MzJHZXREYXR1bShpdGVy KTsKKwkJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bShlbGFwc2VkX25zKTsKKwkJdmFsdWVzWzJd ID0gRmxvYXQ4R2V0RGF0dW0oKGRvdWJsZSkgZWxhcHNlZF9ucyAvIG51bV9vcGVyYXRpb25zKTsK KwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXModHVwc3RvcmUsIHR1cGRlc2MsIHZhbHVlcywgbnVsbHMp OworCX0KKworCXBmcmVlKGFjY2Vzc19zZXF1ZW5jZSk7CisJcGZyZWUocGlwZWxpbmUpOworCXBm cmVlKHJlc291cmNlcyk7CisKKwlyZXR1cm4gKERhdHVtKSAwOworfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2J1ZmZlcl9waW4vdGVzdF9idWZmZXJfcGluLmNvbnRyb2wgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYnVmZmVyX3Bpbi90ZXN0X2J1ZmZlcl9waW4uY29udHJvbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mMDY1OTQxNzEyCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2J1ZmZlcl9waW4vdGVzdF9idWZmZXJf cGluLmNvbnRyb2wKQEAgLTAsMCArMSw0IEBACitjb21tZW50ID0gJ3Rlc3RfYnVmZmVyX3BpbiAt IGJ1ZmZlciBwaW5uaW5nIGJlbmNobWFya3MnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9k dWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF9idWZmZXJfcGluJworcmVsb2NhdGFibGUgPSB0 cnVlCi0tIAoyLjM0LjEKCg== --000000000000204347064cc375ea Content-Type: application/x-patch; name="v2-0005-Array-direct-mapping.patch" Content-Disposition: attachment; filename="v2-0005-Array-direct-mapping.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmmci98e1 RnJvbSAzMzEzOGZmYjBkODM0YmM0NTJlOWQyZDE4MTlmMjE4NzFjNjQyMTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBib2IgPGJvYkB0cHJvLmlvPgpEYXRlOiBXZWQsIDExIE1hciAy MDI2IDEyOjA4OjA0ICswMDAwClN1YmplY3Q6IFtQQVRDSCA1LzVdIEFycmF5IGRpcmVjdCBtYXBw aW5nCgpJbnN0ZWFkIG9mIHNlYXJjaGluZyBhbGwgYXJyYXkgZW50cmllcywgZWFjaCBidWZmZXIg aXMgbWFwcGVkIHRvIGV4YWN0bHkKb25lIHNsb3QgYXQgaW5kZXggKGJ1ZmZlciAlIFJFRkNPVU5U X0FSUkFZX0VOVFJJRVMpLiBDb2xsaXNpb25zIGFyZQpyZXNvbHZlZCBieSBldmljdGluZyB0byB0 aGUgaGFzaCB0YWJsZS4KClRoaXMgc2ltcGxpZmllcyBsb29rdXAgdG8gTygxKSBmb3IgdGhlIGFy cmF5IGNoZWNrIGFuZCBzaG91bGQgaW1wcm92ZQpwZXJmb3JtYW5jZSBmb3IgbnVtX2J1ZmZlcnMg PiA4IHdoaWxlIG1haW50YWluaW5nIHBlcmZvcm1hbmNlIGZvcgpzbWFsbCBudW1iZXJzIG9mIGJ1 ZmZlcnMuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyX3JlZmNudC5jIHwg MzA3ICsrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25z KCspLCAxNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyX3JlZmNudC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy X3JlZmNudC5jCmluZGV4IGJmODRlOWY2MmUuLjcyNjY5N2ViZjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1ncl9yZWZjbnQuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9idWZtZ3JfcmVmY250LmMKQEAgLTEyLDI2ICsxMiwxNSBAQAogICogdGhh biBvbmNlIGJ5IGFuIGluZGl2aWR1YWwgYmFja2VuZC4gVGhpcyBtZWNoYW5pc20gaXMgYWxzbyB1 c2VkIHRvIHRyYWNrCiAgKiB3aGV0aGVyIHRoaXMgYmFja2VuZCBoYXMgYSBidWZmZXIgbG9ja2Vk LCBhbmQsIGlmIHNvLCBpbiB3aGF0IG1vZGUuCiAgKgotICogVG8gYXZvaWQgLSBhcyB3ZSB1c2Vk IHRvIC0gcmVxdWlyaW5nIGFuIGFycmF5IHdpdGggTkJ1ZmZlcnMgZW50cmllcyB0byBrZWVwCi0g KiB0cmFjayBvZiBsb2NhbCBidWZmZXJzLCB3ZSB1c2UgYSBzbWFsbCBzZXF1ZW50aWFsbHkgc2Vh cmNoZWQgYXJyYXkKLSAqIChQcml2YXRlUmVmQ291bnRBcnJheUtleXMsIHdpdGggdGhlIGNvcnJl c3BvbmRpbmcgZGF0YSBzdG9yZWQgaW4KLSAqIFByaXZhdGVSZWZDb3VudEFycmF5KSBhbmQgYW4g b3ZlcmZsb3cgaGFzaCB0YWJsZSAoUHJpdmF0ZVJlZkNvdW50SGFzaCkgdG8KLSAqIGtlZXAgdHJh Y2sgb2YgYmFja2VuZCBsb2NhbCBwaW5zLgorICogVG8gYXZvaWQgcmVxdWlyaW5nIGFuIGFycmF5 IHdpdGggTkJ1ZmZlcnMgZW50cmllcywgd2UgdXNlIGEgZHluYW1pY2FsbHkKKyAqIHNpemVkIGRp cmVjdC1tYXBwZWQgYXJyYXkgKFByaXZhdGVSZWZDb3VudEFycmF5KSBhbmQgYW4gb3ZlcmZsb3cg aGFzaCB0YWJsZQorICogKFByaXZhdGVSZWZDb3VudEhhc2gpLiBFYWNoIGJ1ZmZlciBtYXBzIHRv IGV4YWN0bHkgb25lIGFycmF5IHNsb3QgYXQKKyAqIGluZGV4IChidWZmZXIgJiBtYXNrKS4gV2hl biBhIGNvbGxpc2lvbiBvY2N1cnMgKHR3byBkaWZmZXJlbnQgYnVmZmVycworICogbWFwIHRvIHRo ZSBzYW1lIHNsb3QpLCB0aGUgZXhpc3RpbmcgZW50cnkgaXMgZXZpY3RlZCB0byB0aGUgaGFzaCB0 YWJsZS4KKyAqIFRoZSBhcnJheSBncm93cyBhdXRvbWF0aWNhbGx5IHdoZW4gb2NjdXBhdGlvbiBl eGNlZWRzIGEgc3BlY2lmaWVkIHRocmVzaG9sZC4KICAqCi0gKiBVbnRpbCBubyBtb3JlIHRoYW4g UkVGQ09VTlRfQVJSQVlfRU5UUklFUyBidWZmZXJzIGFyZSBwaW5uZWQgYXQgb25jZSwgYWxsCi0g KiByZWZjb3VudHMgYXJlIGtlcHQgdHJhY2sgb2YgaW4gdGhlIGFycmF5OyBhZnRlciB0aGF0LCBu ZXcgYXJyYXkgZW50cmllcwotICogZGlzcGxhY2Ugb2xkIG9uZXMgaW50byB0aGUgaGFzaCB0YWJs ZS4gVGhhdCB3YXkgYSBmcmVxdWVudGx5IHVzZWQgZW50cnkKLSAqIGNhbid0IGdldCAic3R1Y2si IGluIHRoZSBoYXNodGFibGUgd2hpbGUgaW5mcmVxdWVudCBvbmVzIGNsb2cgdGhlIGFycmF5Lgot ICoKLSAqIFRoaXMgd2FzIGluaXRpYWxseSBkZXNpZ25lZCB0cnlpbmcgdG8gb3B0aW1pemUgZm9y IHRoZSBjYXNlIHdoZXJlIHRoZQotICogbnVtYmVyIG9mIHBpbm5lZCBidWZmZXJzIGlzIGV4cGVj dGVkIHRvIG5vdCBleGNlZWQgUkVGQ09VTlRfQVJSQVlfRU5UUklFUy4KLSAqIEhvd2V2ZXIgdGhp cyBtaWdodCBub3QgYmUgdGhlIGNhc2Ugd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIHByZWZldGNo aW5nLgotICoKLSAqIFRvIGVudGVyIGEgYnVmZmVyIGludG8gdGhlIHJlZmNvdW50IHRyYWNraW5n IG1lY2hhbmlzbSBmaXJzdCByZXNlcnZlIGEgZnJlZQotICogZW50cnkgdXNpbmcgUmVzZXJ2ZVBy aXZhdGVSZWZDb3VudEVudHJ5KCkgYW5kIHRoZW4gbGF0ZXIsIGlmIG5lY2Vzc2FyeSwKLSAqIGZp bGwgaXQgd2l0aCBOZXdQcml2YXRlUmVmQ291bnRFbnRyeSgpLiBUaGF0IHNwbGl0IGxldHMgdXMg YXZvaWQgZG9pbmcKLSAqIG1lbW9yeSBhbGxvY2F0aW9ucyBpbiBOZXdQcml2YXRlUmVmQ291bnRF bnRyeSgpIHdoaWNoIGNhbiBiZSBpbXBvcnRhbnQKLSAqIGJlY2F1c2UgaW4gc29tZSBzY2VuYXJp b3MgaXQncyBjYWxsZWQgd2l0aCBhIHNwaW5sb2NrIGhlbGQuLi4KKyAqIFRoaXMgZGVzaWduIHBy b3ZpZGVzIE8oMSkgbG9va3VwIGZvciB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgdGhlcmUgYXJlIG5v CisgKiBjb2xsaXNpb25zLCB3aGlsZSBncmFjZWZ1bGx5IGhhbmRsaW5nIG92ZXJmbG93IHZpYSB0 aGUgaGFzaCB0YWJsZS4KICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCkBAIC04 NiwzMyArNzcsNDAgQEAgc3RydWN0IFByaXZhdGVSZWZDb3VudEl0ZXJhdG9yCiAjZGVmaW5lIFNI X0RFRklORQogI2luY2x1ZGUgImxpYi9zaW1wbGVoYXNoLmgiCiAKLS8qIFByaXZhdGUgcmVmY291 bnQgYXJyYXkgYW5kIGtleXMgKi8KLSNkZWZpbmUgUkVGQ09VTlRfQVJSQVlfRU5UUklFUyA4Ci1z dGF0aWMgQnVmZmVyIFByaXZhdGVSZWZDb3VudEFycmF5S2V5c1tSRUZDT1VOVF9BUlJBWV9FTlRS SUVTXTsKLXN0YXRpYyBzdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50RW50cnkgUHJpdmF0ZVJlZkNvdW50 QXJyYXlbUkVGQ09VTlRfQVJSQVlfRU5UUklFU107CisvKgorICogUHJpdmF0ZSByZWZjb3VudCBh cnJheSAtIGRpcmVjdC1tYXBwZWQgYnkgKGJ1ZmZlciAmIG1hc2spLgorICogRWFjaCBidWZmZXIg bWFwcyB0byBleGFjdGx5IG9uZSBzbG90LiBDb2xsaXNpb25zIGV2aWN0IHRvIGhhc2ggdGFibGUu CisgKiAKKyAqIENvbnNpZGVyIGFuIGFycmF5IHdpdGggTiBzbG90cywgYWZ0ZXIgc3RvcmluZyBu IHJhbmRvbSBidWZmZXJzCisgKiAgCisgKiAgLSBUaGUgcHJvYmFiaWxpdHkgb2YgYSBzaW5nbGUg YnVmZmVyIGhpdHRpbmcgYSBnaXZlbiBzbG90IGlzIDEvTgorICogIC0gVGhlIHByb2JhYmlsaXR5 IG9mIGEgc2luZ2xlIGJ1ZmZlciBub3QgaGl0dGluZyBhIGdpdmVuIHNsb3QgaXMgMS0xL04KKyAq ICAtIFRoZSBwcm9iYWJpbGl0eSBvZiBuIGJ1ZmZlcnMgbm90IGhpdHRpbmcgYSBnaXZlbiBzbG90 IGlzICgxLTEvTilebgorICogIC0gdGhlIGV4cGVjdGVkIG51bWJlciBvZiB2YWNhbnQgc2xvdHMg aXMgTiAqICgxLTEvTilebiB+IE4gKiBlXigtbi9OKQorICogCisgKiBUaGUgbGFzdCBhcHByb3hp bWF0aW9uIHNob3VsZCBiZSBub3QgdG9vIGJhZCBmb3IgbGFyZ2UgbnVtYmVyLAorICogYW5kIHRo YXQgZ2l2ZXMgZS5nLiA2MyUgb2NjdXBhdGlvbiBmb3IgbiA9IE4sIDg2JSBvY3VwYXRpb24gZm9y IG4gPSAyKk4KKyAqLworI2RlZmluZSBSRUZDT1VOVF9BUlJBWV9JTklUSUFMX1NJWkUJCTgKKyNk ZWZpbmUgUkVGQ09VTlRfQVJSQVlfTUFYX09DQ1VQQVRJT04JMC44NgorI2RlZmluZSBSRUZDT1VO VF9BUlJBWV9NQVhfU0laRQkJCSgxIDw8IDIwKQkvKiAxTSBlbnRyaWVzIG1heCAqLworCitzdGF0 aWMgc3RydWN0IFByaXZhdGVSZWZDb3VudEVudHJ5ICpQcml2YXRlUmVmQ291bnRBcnJheSA9IE5V TEw7CitzdGF0aWMgaW50MzIgUHJpdmF0ZVJlZkNvdW50QXJyYXlNYXNrID0gMDsJCS8qIChzaXpl IC0gMSkgZm9yIGZhc3QgbW9kdWxvICovCitzdGF0aWMgaW50MzIgUHJpdmF0ZVJlZkNvdW50QXJy YXlVc2VkID0gMDsJCS8qIGVudHJpZXMgaW4gdGhlIGFycmF5ICovCitzdGF0aWMgaW50MzIgUHJp dmF0ZVJlZkNvdW50QXJyYXlUb2xlcmF0ZWQgPSAwOwkvKiBncm93IHdoZW4gVXNlZCBleGNlZWRz IHRoaXMgKi8KIAotLyogT3ZlcmZsb3cgaGFzaCB0YWJsZSBmb3Igd2hlbiBhcnJheSBpcyBmdWxs ICovCisvKiBPdmVyZmxvdyBoYXNoIHRhYmxlIGZvciBjb2xsaXNpb25zICovCiBzdGF0aWMgcmVm Y291bnRfaGFzaCAqUHJpdmF0ZVJlZkNvdW50SGFzaCA9IE5VTEw7CiAKLS8qIENvdW50IG9mIGVu dHJpZXMgdGhhdCBoYXZlIG92ZXJmbG93ZWQgaW50byB0aGUgaGFzaCB0YWJsZSAqLworLyogQ291 bnQgb2YgZW50cmllcyBpbiB0aGUgaGFzaCB0YWJsZSAqLwogc3RhdGljIGludDMyIFByaXZhdGVS ZWZDb3VudE92ZXJmbG93ZWQgPSAwOwogCi0vKiBDbG9jayBoYW5kIGZvciBzZWxlY3Rpbmcgdmlj dGltIHdoZW4gYXJyYXkgaXMgZnVsbCAqLwotc3RhdGljIHVpbnQzMiBQcml2YXRlUmVmQ291bnRD bG9jayA9IDA7Ci0KLS8qIFJlc2VydmVkIHNsb3QgaW5kZXgsIG9yIC0xIGlmIG5vbmUgcmVzZXJ2 ZWQgKi8KLXN0YXRpYyBpbnQJUmVzZXJ2ZWRSZWZDb3VudFNsb3QgPSAtMTsKLQotLyogQ2FjaGUg Zm9yIGxhc3QgYWNjZXNzZWQgZW50cnkgKi8KLXN0YXRpYyBpbnQJUHJpdmF0ZVJlZkNvdW50RW50 cnlMYXN0ID0gLTE7Ci0KIC8qIEFkdmlzb3J5IGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgcGlucyBl YWNoIGJhY2tlbmQgc2hvdWxkIGhvbGQgKi8KIHN0YXRpYyB1aW50MzIgTWF4UHJvcG9ydGlvbmFs UGlucyA9IDA7CiAKLS8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgdm9pZCBSZXNl cnZlUHJpdmF0ZVJlZkNvdW50RW50cnkoQnVmZmVyIGJ1ZmZlcik7Ci1zdGF0aWMgUHJpdmF0ZVJl ZkNvdW50RW50cnkgKk5ld1ByaXZhdGVSZWZDb3VudEVudHJ5KEJ1ZmZlciBidWZmZXIpOwotc3Rh dGljIHBnX25vaW5saW5lIFByaXZhdGVSZWZDb3VudEVudHJ5ICpHZXRQcml2YXRlUmVmQ291bnRF bnRyeVNsb3coQnVmZmVyIGJ1ZmZlcik7CisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdGF0 aWMgdm9pZCBHcm93UHJpdmF0ZVJlZkNvdW50QXJyYXkodm9pZCk7CiAKIC8qCiAgKiBJbml0aWFs aXplIHByaXZhdGUgcmVmY291bnQgdHJhY2tpbmcgZm9yIHRoaXMgYmFja2VuZC4KQEAgLTEyNiwx NzQgKzEyNCwxMzUgQEAgSW5pdFByaXZhdGVSZWZDb3VudCh2b2lkKQogCSAqIFRoYXQncyB2ZXJ5 IHBlc3NpbWlzdGljLCBidXQgb3V0c2lkZSB0b3ktc2l6ZWQgc2hhcmVkX2J1ZmZlcnMgaXQgc2hv dWxkCiAJICogYWxsb3cgcGxlbnR5IG9mIHBpbnMuICBMaW1pdEFkZGl0aW9uYWxQaW5zKCkgYW5k CiAJICogR2V0QWRkaXRpb25hbFBpbkxpbWl0KCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgdGhlIHJl bWFpbmluZyBiYWxhbmNlLgotCSovCisJICovCiAJTWF4UHJvcG9ydGlvbmFsUGlucyA9IE5CdWZm ZXJzIC8gKE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyk7Ci0JbWVtc2V0KCZQcml2 YXRlUmVmQ291bnRBcnJheSwgMCwgc2l6ZW9mKFByaXZhdGVSZWZDb3VudEFycmF5KSk7Ci0JbWVt c2V0KCZQcml2YXRlUmVmQ291bnRBcnJheUtleXMsIDAsIHNpemVvZihQcml2YXRlUmVmQ291bnRB cnJheUtleXMpKTsKIAotCVByaXZhdGVSZWZDb3VudEhhc2ggPSByZWZjb3VudF9jcmVhdGUoQ3Vy cmVudE1lbW9yeUNvbnRleHQsIDY0LCBOVUxMKTsKKwkvKiBJbml0aWFsaXplIHRoZSBkaXJlY3Qt bWFwcGVkIGFycmF5ICovCisJUHJpdmF0ZVJlZkNvdW50QXJyYXlNYXNrID0gUkVGQ09VTlRfQVJS QVlfSU5JVElBTF9TSVpFIC0gMTsKKwlQcml2YXRlUmVmQ291bnRBcnJheVVzZWQgPSAwOworCVBy aXZhdGVSZWZDb3VudEFycmF5VG9sZXJhdGVkID0gKGludDMyKShSRUZDT1VOVF9BUlJBWV9JTklU SUFMX1NJWkUgKiBSRUZDT1VOVF9BUlJBWV9NQVhfT0NDVVBBVElPTik7CisJUHJpdmF0ZVJlZkNv dW50QXJyYXkgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJ CQlSRUZDT1VOVF9BUlJBWV9JTklUSUFMX1NJWkUgKiBzaXplb2YoUHJpdmF0ZVJlZkNvdW50RW50 cnkpKTsKKworCVByaXZhdGVSZWZDb3VudEhhc2ggPSByZWZjb3VudF9jcmVhdGUoVG9wTWVtb3J5 Q29udGV4dCwgNjQsIE5VTEwpOwogfQogCiAvKgotICogRW5zdXJlIHRoYXQgdGhlIFByaXZhdGVS ZWZDb3VudEFycmF5IGhhcyBzdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIG9uZSBtb3JlCi0gKiBl bnRyeS4KKyAqIEdyb3cgdGhlIHByaXZhdGUgcmVmY291bnQgYXJyYXkgd2hlbiB1c2FnZSBleGNl ZWRzIHRvbGVyYXRlZCBvY2N1cGF0aW9uLgorICogRG91YmxlcyB0aGUgc2l6ZSBhbmQgcmVoYXNo ZXMgYWxsIGV4aXN0aW5nIGVudHJpZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1SZXNlcnZlUHJpdmF0 ZVJlZkNvdW50RW50cnkoQnVmZmVyIGJ1ZmZlcikKK0dyb3dQcml2YXRlUmVmQ291bnRBcnJheSh2 b2lkKQogewotCS8qIEFscmVhZHkgcmVzZXJ2ZWQgKG9yIGZyZWVkKSwgbm90aGluZyB0byBkbyAq LwotCWlmIChSZXNlcnZlZFJlZkNvdW50U2xvdCAhPSAtMSkKKwlQcml2YXRlUmVmQ291bnRFbnRy eSAqb2xkX2FycmF5ID0gUHJpdmF0ZVJlZkNvdW50QXJyYXk7CisJaW50MzIJCW9sZF9zaXplID0g UHJpdmF0ZVJlZkNvdW50QXJyYXlNYXNrICsgMTsKKwlpbnQzMgkJbmV3X3NpemUgPSBvbGRfc2l6 ZSAqIDI7CisJaW50MzIJCW5ld19tYXNrID0gbmV3X3NpemUgLSAxOworCWludDMyCQlpOworCisJ LyogRG9uJ3QgZ3JvdyBiZXlvbmQgbWF4aW11bSAqLworCWlmIChuZXdfc2l6ZSA+IFJFRkNPVU5U X0FSUkFZX01BWF9TSVpFKQogCQlyZXR1cm47CiAKLQkvKgotCSAqIEZpcnN0IHNlYXJjaCBmb3Ig YSBmcmVlIGVudHJ5IGluIHRoZSBhcnJheSwgdGhhdCdsbCBiZSBzdWZmaWNpZW50IGluCi0JICog dGhlIG1ham9yaXR5IG9mIGNhc2VzLgotCSAqLwotCXsKLQkJaW50CQkJaTsKLQotCQlmb3IgKGkg PSAwOyBpIDwgUkVGQ09VTlRfQVJSQVlfRU5UUklFUzsgaSsrKQotCQl7Ci0JCQlpZiAoUHJpdmF0 ZVJlZkNvdW50QXJyYXlLZXlzW2ldID09IEludmFsaWRCdWZmZXIpCi0JCQl7Ci0JCQkJUmVzZXJ2 ZWRSZWZDb3VudFNsb3QgPSBpOwotCQkJCXJldHVybjsKLQkJCX0KLQkJfQotCX0KLQotCS8qCi0J ICogTm8gbHVjay4gQWxsIGFycmF5IGVudHJpZXMgYXJlIGZ1bGwuIE1vdmUgb25lIGFycmF5IGVu dHJ5IGludG8gdGhlIGhhc2gKLQkgKiB0YWJsZS4KLQkgKi8KLQl7Ci0JCWludAkJCXZpY3RpbV9z bG90OwotCQlQcml2YXRlUmVmQ291bnRFbnRyeSAqdmljdGltX2VudHJ5OwotCQlQcml2YXRlUmVm Q291bnRFbnRyeSAqaGFzaGVudDsKLQkJYm9vbAkJZm91bmQ7Ci0KLQkJLyogc2VsZWN0IHZpY3Rp bSBzbG90ICovCi0JCXZpY3RpbV9zbG90ID0gUHJpdmF0ZVJlZkNvdW50Q2xvY2srKyAlIFJFRkNP VU5UX0FSUkFZX0VOVFJJRVM7Ci0JCXZpY3RpbV9lbnRyeSA9ICZQcml2YXRlUmVmQ291bnRBcnJh eVt2aWN0aW1fc2xvdF07Ci0JCVJlc2VydmVkUmVmQ291bnRTbG90ID0gdmljdGltX3Nsb3Q7Ci0K LQkJLyogQmV0dGVyIGJlIHVzZWQsIG90aGVyd2lzZSB3ZSBzaG91bGRuJ3QgZ2V0IGhlcmUuICov Ci0JCUFzc2VydChQcml2YXRlUmVmQ291bnRBcnJheUtleXNbdmljdGltX3Nsb3RdICE9IEludmFs aWRCdWZmZXIpOwotCQlBc3NlcnQoUHJpdmF0ZVJlZkNvdW50QXJyYXlbdmljdGltX3Nsb3RdLmJ1 ZmZlciAhPSBJbnZhbGlkQnVmZmVyKTsKLQkJQXNzZXJ0KFByaXZhdGVSZWZDb3VudEFycmF5S2V5 c1t2aWN0aW1fc2xvdF0gPT0gUHJpdmF0ZVJlZkNvdW50QXJyYXlbdmljdGltX3Nsb3RdLmJ1ZmZl cik7Ci0KLQkJLyogZW50ZXIgdmljdGltIGFycmF5IGVudHJ5IGludG8gaGFzaHRhYmxlICovCi0J CWhhc2hlbnQgPSByZWZjb3VudF9pbnNlcnQoUHJpdmF0ZVJlZkNvdW50SGFzaCwKLQkJCQkJCQkJ ICBQcml2YXRlUmVmQ291bnRBcnJheUtleXNbdmljdGltX3Nsb3RdLAotCQkJCQkJCQkgICZmb3Vu ZCk7Ci0JCUFzc2VydCghZm91bmQpOwotCQloYXNoZW50LT5kYXRhID0gdmljdGltX2VudHJ5LT5k YXRhOwotCi0JCS8qIGNsZWFyIHRoZSBub3cgZnJlZSBhcnJheSBzbG90ICovCi0JCVByaXZhdGVS ZWZDb3VudEFycmF5S2V5c1t2aWN0aW1fc2xvdF0gPSBJbnZhbGlkQnVmZmVyOwotCQl2aWN0aW1f ZW50cnktPmJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JCXZpY3RpbV9lbnRyeS0+ZGF0YSA9IDA7 Ci0KLQkJUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCsrOwotCX0KLX0KLQotLyoKLSAqIENyZWF0 ZSBhIG5ldyByZWZjb3VudCBlbnRyeSBmb3IgdGhlIGdpdmVuIGJ1ZmZlci4KLSAqLwotc3RhdGlj IFByaXZhdGVSZWZDb3VudEVudHJ5ICoKLU5ld1ByaXZhdGVSZWZDb3VudEVudHJ5KEJ1ZmZlciBi dWZmZXIpCi17Ci0JUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlczsKLQotCS8qIG9ubHkgYWxsb3dl ZCB0byBiZSBjYWxsZWQgd2hlbiBhIHJlc2VydmF0aW9uIGhhcyBiZWVuIG1hZGUgKi8KLQlBc3Nl cnQoUmVzZXJ2ZWRSZWZDb3VudFNsb3QgIT0gLTEpOwotCi0JLyogdXNlIHVwIHRoZSByZXNlcnZl ZCBlbnRyeSAqLwotCXJlcyA9ICZQcml2YXRlUmVmQ291bnRBcnJheVtSZXNlcnZlZFJlZkNvdW50 U2xvdF07Ci0KLQkvKiBhbmQgZmlsbCBpdCAqLwotCVByaXZhdGVSZWZDb3VudEFycmF5S2V5c1tS ZXNlcnZlZFJlZkNvdW50U2xvdF0gPSBidWZmZXI7Ci0JcmVzLT5idWZmZXIgPSBidWZmZXI7Ci0J cmVzLT5kYXRhID0gMDsKLQotCS8qIHVwZGF0ZSBjYWNoZSBmb3IgdGhlIG5leHQgbG9va3VwICov Ci0JUHJpdmF0ZVJlZkNvdW50RW50cnlMYXN0ID0gUmVzZXJ2ZWRSZWZDb3VudFNsb3Q7Ci0KLQlS ZXNlcnZlZFJlZkNvdW50U2xvdCA9IC0xOwotCi0JcmV0dXJuIHJlczsKLX0KLQotLyoKLSAqIFNs b3ctcGF0aCBmb3IgR2V0U2hhcmVkQnVmZmVyRW50cnkoKS4KLSAqLwotc3RhdGljIHBnX25vaW5s aW5lIFByaXZhdGVSZWZDb3VudEVudHJ5ICoKLUdldFByaXZhdGVSZWZDb3VudEVudHJ5U2xvdyhC dWZmZXIgYnVmZmVyKQotewotCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXM7Ci0JaW50CQkJaTsK KwkvKiBBbGxvY2F0ZSBuZXcgYXJyYXkgYW5kIHVwZGF0ZSBtZXRhZGF0YSAqLworCVByaXZhdGVS ZWZDb3VudEFycmF5ID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhUb3BNZW1vcnlDb250ZXh0LAor CQkJCQkJbmV3X3NpemUgKiBzaXplb2YoUHJpdmF0ZVJlZkNvdW50RW50cnkpKTsKKwlQcml2YXRl UmVmQ291bnRBcnJheU1hc2sgPSBuZXdfbWFzazsKKwlQcml2YXRlUmVmQ291bnRBcnJheVRvbGVy YXRlZCA9IChpbnQzMikobmV3X3NpemUgKiBSRUZDT1VOVF9BUlJBWV9NQVhfT0NDVVBBVElPTik7 CiAKIAkvKgotCSAqIEZpcnN0IHNlYXJjaCBmb3IgcmVmZXJlbmNlcyBpbiB0aGUgYXJyYXkuCisJ ICogUmVoYXNoIGVudHJpZXMgZnJvbSBvbGQgYXJyYXkuIFdoZW4gZG91YmxpbmcsIGVhY2ggb2xk IHNsb3QgbWFwcyB0bworCSAqIHR3byBwb3NzaWJsZSBuZXcgc2xvdHMgKHNsb3Qgb3Igc2xvdCAr IG9sZF9zaXplKSwgc28gZW50cmllcyBmcm9tCisJICogZGlmZmVyZW50IG9sZCBzbG90cyBjYW5u b3QgY29sbGlkZS4gUHJpdmF0ZVJlZkNvdW50QXJyYXlVc2VkIHN0YXlzIHNhbWUuCiAJICovCi0J Zm9yIChpID0gMDsgaSA8IFJFRkNPVU5UX0FSUkFZX0VOVFJJRVM7IGkrKykKKwlmb3IgKGkgPSAw OyBpIDwgb2xkX3NpemU7IGkrKykKIAl7Ci0JCWlmIChQcml2YXRlUmVmQ291bnRBcnJheUtleXNb aV0gPT0gYnVmZmVyKQorCQlpZiAob2xkX2FycmF5W2ldLmJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVy KQogCQl7Ci0JCQlQcml2YXRlUmVmQ291bnRFbnRyeUxhc3QgPSBpOwotCQkJcmV0dXJuICZQcml2 YXRlUmVmQ291bnRBcnJheVtpXTsKKwkJCWludAkJCW5ld19zbG90ID0gb2xkX2FycmF5W2ldLmJ1 ZmZlciAmIG5ld19tYXNrOworCisJCQlQcml2YXRlUmVmQ291bnRBcnJheVtuZXdfc2xvdF0gPSBv bGRfYXJyYXlbaV07CiAJCX0KIAl9CiAKLQkvKgotCSAqIE9ubHkgbG9vayB1cCB0aGUgYnVmZmVy IGluIHRoZSBoYXNodGFibGUgaWYgd2UndmUgcHJldmlvdXNseSBvdmVyZmxvd2VkLgotCSAqLwot CWlmIChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID09IDApCi0JCXJldHVybiBOVUxMOwotCi0J cmVzID0gcmVmY291bnRfbG9va3VwKFByaXZhdGVSZWZDb3VudEhhc2gsIGJ1ZmZlcik7Ci0JcmV0 dXJuIHJlczsKKwlwZnJlZShvbGRfYXJyYXkpOwogfQogCiAvKgogICogUmV0dXJuIHRoZSBQcml2 YXRlUmVmQ291bnQgZW50cnkgZm9yIHRoZSBwYXNzZWQgYnVmZmVyLgogICogUmV0dXJucyBOVUxM IGlmIHRoZSBidWZmZXIgaXMgbm90IGN1cnJlbnRseSBwaW5uZWQuCisgKgorICogV2l0aCBkaXJl Y3QtbWFwcGVkIGFycmF5LCBsb29rdXAgaXMgTygxKTogY2hlY2sgdGhlIHNsb3QgYXQKKyAqIChi dWZmZXIgJiBtYXNrKSwgdGhlbiBjaGVjayBoYXNoIHRhYmxlIGlmIG5lZWRlZC4KICAqLwogc3Rh dGljIFByaXZhdGVSZWZDb3VudEVudHJ5ICoKIEdldFNoYXJlZEJ1ZmZlckVudHJ5KEJ1ZmZlciBi dWZmZXIpCiB7CisJaW50CQkJc2xvdCA9IGJ1ZmZlciAmIFByaXZhdGVSZWZDb3VudEFycmF5TWFz azsKKwlQcml2YXRlUmVmQ291bnRFbnRyeSAqZW50cnkgPSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlb c2xvdF07CisKIAlBc3NlcnQoQnVmZmVySXNWYWxpZChidWZmZXIpKTsKIAlBc3NlcnQoIUJ1ZmZl cklzTG9jYWwoYnVmZmVyKSk7CiAKLQkvKiBGYXN0IHBhdGg6IGNoZWNrIG9uZS1lbnRyeSBjYWNo ZSAqLwotCWlmIChsaWtlbHkoUHJpdmF0ZVJlZkNvdW50RW50cnlMYXN0ICE9IC0xKSAmJgotCQls aWtlbHkoUHJpdmF0ZVJlZkNvdW50QXJyYXlbUHJpdmF0ZVJlZkNvdW50RW50cnlMYXN0XS5idWZm ZXIgPT0gYnVmZmVyKSkKLQl7Ci0JCXJldHVybiAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbUHJpdmF0 ZVJlZkNvdW50RW50cnlMYXN0XTsKLQl9CisJLyogQ2hlY2sgdGhlIGRpcmVjdC1tYXBwZWQgc2xv dCAqLworCWlmIChlbnRyeS0+YnVmZmVyID09IGJ1ZmZlcikKKwkJcmV0dXJuIGVudHJ5OwogCi0J cmV0dXJuIEdldFByaXZhdGVSZWZDb3VudEVudHJ5U2xvdyhidWZmZXIpOworCS8qIENoZWNrIGhh c2ggdGFibGUgaWYgdGhlcmUgYXJlIG92ZXJmbG93ZWQgZW50cmllcyAqLworCWlmIChQcml2YXRl UmVmQ291bnRPdmVyZmxvd2VkID4gMCkKKwkJcmV0dXJuIHJlZmNvdW50X2xvb2t1cChQcml2YXRl UmVmQ291bnRIYXNoLCBidWZmZXIpOworCisJcmV0dXJuIE5VTEw7CiB9CiAKIC8qCiAgKiBDcmVh dGUgYSBuZXcgcmVmY291bnQgZW50cnkgZm9yIGEgYnVmZmVyIHRoYXQgaXMga25vd24gdG8gbm90 IGJlIHBpbm5lZC4KLSAqIFRoaXMgaXMgYSBmYXN0IHBhdGggdGhhdCBza2lwcyB0aGUgY2FjaGUv aGFzaCBsb29rdXAuCi0gKiBSZXR1cm5zIHRoZSBuZXcgZW50cnkgcG9pbnRlciB3aXRoIHJlZmNv dW50IGFscmVhZHkgaW5jcmVtZW50ZWQuCisgKiBSZXR1cm5zIHRoZSBuZXcgZW50cnkgcG9pbnRl ciB3aXRoIHJlZmNvdW50IHNldCB0byAxLgorICoKKyAqIElmIHRoZSBkaXJlY3QtbWFwcGVkIHNs b3QgY29udGFpbnMgYSBkaWZmZXJlbnQgYnVmZmVyLCBpdCBpcyBldmljdGVkCisgKiB0byB0aGUg aGFzaCB0YWJsZSBmaXJzdC4gVGhlIGFycmF5IGdyb3dzIHdoZW4gb3ZlcmZsb3cgZXhjZWVkcyAy MCUgb2Ygc2l6ZS4KICAqLwogc3RhdGljIFByaXZhdGVSZWZDb3VudEVudHJ5ICoKIFNoYXJlZEJ1 ZmZlckNyZWF0ZVJlZihCdWZmZXIgYnVmZmVyKQogewotCVByaXZhdGVSZWZDb3VudEVudHJ5ICpy ZWY7CisJaW50CQkJc2xvdDsKKwlQcml2YXRlUmVmQ291bnRFbnRyeSAqZW50cnk7CisJYm9vbAkJ d2FzX2VtcHR5OwogCiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSk7CiAJQXNzZXJ0KCFC dWZmZXJJc0xvY2FsKGJ1ZmZlcikpOwogCi0JUmVzZXJ2ZVByaXZhdGVSZWZDb3VudEVudHJ5KGJ1 ZmZlcik7Ci0JcmVmID0gTmV3UHJpdmF0ZVJlZkNvdW50RW50cnkoYnVmZmVyKTsKLQlyZWYtPmRh dGEgPSBPTkVfUFJJVkFURV9SRUZFUkVOQ0U7CisJLyogR3JvdyB3aGVuIGFycmF5IHVzYWdlIGV4 Y2VlZHMgdG9sZXJhdGVkIG9jY3VwYXRpb24gKi8KKwlpZiAoUHJpdmF0ZVJlZkNvdW50QXJyYXlV c2VkID4gUHJpdmF0ZVJlZkNvdW50QXJyYXlUb2xlcmF0ZWQpCisJCUdyb3dQcml2YXRlUmVmQ291 bnRBcnJheSgpOworCisJc2xvdCA9IGJ1ZmZlciAmIFByaXZhdGVSZWZDb3VudEFycmF5TWFzazsK KwllbnRyeSA9ICZQcml2YXRlUmVmQ291bnRBcnJheVtzbG90XTsKKwl3YXNfZW1wdHkgPSAoZW50 cnktPmJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyKTsKKworCS8qIElmIHNsb3QgY29udGFpbnMgYSBk aWZmZXJlbnQgYnVmZmVyLCBldmljdCBpdCB0byBoYXNoIHRhYmxlICovCisJaWYgKCF3YXNfZW1w dHkgJiYgZW50cnktPmJ1ZmZlciAhPSBidWZmZXIpCisJeworCQlQcml2YXRlUmVmQ291bnRFbnRy eSAqaGFzaGVudDsKKwkJYm9vbAkJZm91bmQ7CisKKwkJaGFzaGVudCA9IHJlZmNvdW50X2luc2Vy dChQcml2YXRlUmVmQ291bnRIYXNoLCBlbnRyeS0+YnVmZmVyLCAmZm91bmQpOworCQlBc3NlcnQo IWZvdW5kKTsKKwkJaGFzaGVudC0+ZGF0YSA9IGVudHJ5LT5kYXRhOworCisJCVByaXZhdGVSZWZD b3VudE92ZXJmbG93ZWQrKzsKKwkJd2FzX2VtcHR5ID0gdHJ1ZTsKKwl9CisKKwkvKiBUcmFjayBh cnJheSB1c2FnZSAqLworCWlmICh3YXNfZW1wdHkpCisJCVByaXZhdGVSZWZDb3VudEFycmF5VXNl ZCsrOworCisJLyogVXNlIHRoZSBzbG90IGZvciBvdXIgYnVmZmVyICovCisJZW50cnktPmJ1ZmZl ciA9IGJ1ZmZlcjsKKwllbnRyeS0+ZGF0YSA9IE9ORV9QUklWQVRFX1JFRkVSRU5DRTsKIAotCXJl dHVybiByZWY7CisJcmV0dXJuIGVudHJ5OwogfQogCiAvKgpAQCAtMzI3LDE1ICsyODYsMTUgQEAg U2hhcmVkQnVmZmVyVW5yZWYoUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJlZikKIAkJQXNzZXJ0KFNo YXJlZEJ1ZmZlckdldExvY2tNb2RlKHJlZikgPT0gQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAogCQlp ZiAocmVmID49ICZQcml2YXRlUmVmQ291bnRBcnJheVswXSAmJgotCQkJcmVmIDwgJlByaXZhdGVS ZWZDb3VudEFycmF5W1JFRkNPVU5UX0FSUkFZX0VOVFJJRVNdKQorCQkJcmVmIDwgJlByaXZhdGVS ZWZDb3VudEFycmF5W1ByaXZhdGVSZWZDb3VudEFycmF5TWFzayArIDFdKQogCQl7CisJCQkvKiBB cnJheSBlbnRyeSAtIG1hcmsgYXMgZW1wdHkgKi8KIAkJCXJlZi0+YnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKLQkJCVByaXZhdGVSZWZDb3VudEFycmF5S2V5c1tyZWYgLSBQcml2YXRlUmVmQ291bnRB cnJheV0gPSBJbnZhbGlkQnVmZmVyOwotCQkJUmVzZXJ2ZWRSZWZDb3VudFNsb3QgPSByZWYgLSBQ cml2YXRlUmVmQ291bnRBcnJheTsKKwkJCVByaXZhdGVSZWZDb3VudEFycmF5VXNlZC0tOwogCQl9 CiAJCWVsc2UKIAkJewotCQkJLyogY291bGQgbWFrZSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCBi eSB1c2luZyB0aGUgcG9pbnRlciAqLworCQkJLyogSGFzaCB0YWJsZSBlbnRyeSAqLwogCQkJcmVm Y291bnRfZGVsZXRlKFByaXZhdGVSZWZDb3VudEhhc2gsIHJlZi0+YnVmZmVyKTsKIAkJCUFzc2Vy dChQcml2YXRlUmVmQ291bnRPdmVyZmxvd2VkID4gMCk7CiAJCQlQcml2YXRlUmVmQ291bnRPdmVy Zmxvd2VkLS07CkBAIC0zOTIsOSArMzUxLDkgQEAgQ2hlY2tQcml2YXRlUmVmQ291bnRMZWFrcyh2 b2lkKQogCWNoYXIJICAgKnM7CiAKIAkvKiBjaGVjayB0aGUgYXJyYXkgKi8KLQlmb3IgKGkgPSAw OyBpIDwgUkVGQ09VTlRfQVJSQVlfRU5UUklFUzsgaSsrKQorCWZvciAoaSA9IDA7IGkgPD0gUHJp dmF0ZVJlZkNvdW50QXJyYXlNYXNrOyBpKyspCiAJewotCQlpZiAoUHJpdmF0ZVJlZkNvdW50QXJy YXlLZXlzW2ldICE9IEludmFsaWRCdWZmZXIpCisJCWlmIChQcml2YXRlUmVmQ291bnRBcnJheVtp XS5idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKIAkJewogCQkJcmVzID0gJlByaXZhdGVSZWZDb3Vu dEFycmF5W2ldOwogCkBAIC00NzUsMTEgKzQzNCwxMSBAQCBQcml2YXRlUmVmQ291bnRFbnRyeSAq CiBHZXROZXh0UHJpdmF0ZVJlZkNvdW50RW50cnkoUHJpdmF0ZVJlZkNvdW50SXRlcmF0b3IgKml0 ZXIpCiB7CiAJLyogRmlyc3QgaXRlcmF0ZSB0aHJvdWdoIHRoZSBhcnJheSAqLwotCXdoaWxlICgh aXRlci0+aW5faGFzaCAmJiBpdGVyLT5hcnJheV9pbmRleCA8IFJFRkNPVU5UX0FSUkFZX0VOVFJJ RVMpCisJd2hpbGUgKCFpdGVyLT5pbl9oYXNoICYmIGl0ZXItPmFycmF5X2luZGV4IDw9IFByaXZh dGVSZWZDb3VudEFycmF5TWFzaykKIAl7CiAJCWludAkJCWlkeCA9IGl0ZXItPmFycmF5X2luZGV4 Kys7CiAKLQkJaWYgKFByaXZhdGVSZWZDb3VudEFycmF5S2V5c1tpZHhdICE9IEludmFsaWRCdWZm ZXIpCisJCWlmIChQcml2YXRlUmVmQ291bnRBcnJheVtpZHhdLmJ1ZmZlciAhPSBJbnZhbGlkQnVm ZmVyKQogCQkJcmV0dXJuICZQcml2YXRlUmVmQ291bnRBcnJheVtpZHhdOwogCX0KIApAQCAtNTQ3 LDExICs1MDYsOSBAQCBGcmVlUHJpdmF0ZVJlZkNvdW50SXRlcmF0b3IoUHJpdmF0ZVJlZkNvdW50 SXRlcmF0b3IgKml0ZXIpCiAJIHVpbnQzMgkJZXN0aW1hdGVkX3BpbnNfaGVsZDsKIAogCSAvKgot CSAgKiBXZSBnZXQgdGhlIG51bWJlciBvZiAib3ZlcmZsb3dlZCIgcGlucyBmb3IgZnJlZSwgYnV0 IGRvbid0IGtub3cgdGhlCi0JICAqIG51bWJlciBvZiBwaW5zIGluIFByaXZhdGVSZWZDb3VudEFy cmF5LiAgVGhlIGNvc3Qgb2YgY2FsY3VsYXRpbmcgdGhhdAotCSAgKiBleGFjdGx5IGRvZXNuJ3Qg c2VlbSB3b3J0aCBpdCwgc28ganVzdCBhc3N1bWUgdGhlIG1heC4KKwkgICogV2UgdHJhY2sgYXJy YXkgdXNhZ2UsIHNvIHdlIGNhbiBnZXQgYW4gYWNjdXJhdGUgY291bnQuCiAJICAqLwotCSBlc3Rp bWF0ZWRfcGluc19oZWxkID0gUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCArIFJFRkNPVU5UX0FS UkFZX0VOVFJJRVM7CisJIGVzdGltYXRlZF9waW5zX2hlbGQgPSBQcml2YXRlUmVmQ291bnRPdmVy Zmxvd2VkICsgUHJpdmF0ZVJlZkNvdW50QXJyYXlVc2VkOwogCiAJIC8qIElzIHRoaXMgYmFja2Vu ZCBhbHJlYWR5IGhvbGRpbmcgbW9yZSB0aGFuIGl0cyBmYWlyIHNoYXJlPyAqLwogCSBpZiAoZXN0 aW1hdGVkX3BpbnNfaGVsZCA+IE1heFByb3BvcnRpb25hbFBpbnMpCi0tIAoyLjM0LjEKCg== --000000000000204347064cc375ea--