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 1vdNrh-00HVSQ-2e for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Jan 2026 07:21:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vdNrf-00CT06-14 for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Jan 2026 07:21:56 +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 1vdNre-00CSzy-23 for pgsql-hackers@lists.postgresql.org; Wed, 07 Jan 2026 07:21:55 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vdNrc-004fvd-39 for pgsql-hackers@lists.postgresql.org; Wed, 07 Jan 2026 07:21:54 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-382fa66fa9dso7323171fa.0 for ; Tue, 06 Jan 2026 23:21:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767770510; x=1768375310; 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=Uiy1GX/54n5OEvfONuGrScqP5V2CmaG2nEGI4B8hC60=; b=GR9khqLMwpgh6S6oLS+zQvI1YvhongaEyXOtcBOWpiMQs7J87ewHzAR8kwb86w7xgp XeMQBCYIqUUy4NqaxqlUgBm3Kwo+6gfd0sSzNpbJidAxFlE3KTU1ztqR4u118JvM+nt6 pFvKlspbgEQa1H/p/n6/LR3dlQHUkQxA/zB6E8hjkOT7l/DBkQqO1Aki4a3FHyao2OEb fEs3t4yywv7vILOlF9X/CqO+TGAHnoeMGOE6xLJffSce818sex55EygIGa+Xz4/kh5AT 4LBP5C6PtO0l3R9gGTHzxTj04R8J1w+ajJBNwbdwBMBJLDz6w+5yd6dVchy6BpNfBSGV 71Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767770510; x=1768375310; 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=Uiy1GX/54n5OEvfONuGrScqP5V2CmaG2nEGI4B8hC60=; b=FPssNfWK8RzTA8UQk/sDSmZHuIYoWi2GyVGQ4j5x2GmsDFdVucwf0xw8y90uzF3McX SqCs/UDYxMW05a1n3AmgYxwq0n/FjoakEQITl+IYneFC4ZVwfnw1EZgHybf6d/T32uKk EcWi2WIgiLn5C1nK3ofwmKThRbMxI8I4awuSjh9vPAN4Efz207BNA83FG6p28zo6mKsl 8Tyhi4+9b58X2hEfTMfse0A+R8LNHu5gS7MrFMt5kqUaE4HqNU4x5eCODPCzpWszmwYP M4rbj3Q0aEzkQgfW1VRU5f/U63BImuO+9QHt8ITwEswLxqeqUqxsXc46Xbrz3nuhATN2 00jA== X-Forwarded-Encrypted: i=1; AJvYcCWOMnARisQyVZUzq7WWqXLdt9h2HK258r01XOq5P4HqEJNY/P5r6VCoyiDwQ7W6BJr78WkfLJpNISfeIN6d@lists.postgresql.org X-Gm-Message-State: AOJu0YzJa4gUYjY6BDA1PvzhnfmLH9BdlnJ6GySeS6Ky9sA6nrwj9yby yi2uUosFKuS5xjlRlV5eZvrcDIZ8Hu5C4EE+rConiKT177yZMAClrbW4b1HUKKsXfy+nH3BUIaM WOT/o2GCYwxpHG3ZLc1qGU+CO2ruBfDM= X-Gm-Gg: AY/fxX5jeAErW0ql7eXBizjXGNTBwuw1AfkXIsfhbYrbpWAkiCv3vy4R0tA4pIHkkDY m74ZtEzNG1lfJaBI9LftvtnwClXNAOXv8DWc8YL5C+SmRbEgzeQ1oyxPchrWYP8mjmm3wugw5cv SQYHLDP60+pNQsf+kH5nqrZp3COZI/ZlM4BOtflawEv6whd5NlPvLXOCvxBtSuPOxPmT+orN41g 1kBW/5csA3t7O06ZdIYeFZSCRnxHxUbDfCGDu20ru4pZsBWNVEpG1BZfURlp6I2j8ffLOLd X-Google-Smtp-Source: AGHT+IHJ1Y3r+V5ilnE2+F3bUEbZ7twRJZ1qzTuWqqLyPsEAm4svqa62fTn+hyZlGsRlA6YqmbC8IYjNUE3IPnOJN+U= X-Received: by 2002:a05:651c:1548:b0:383:b3:77fd with SMTP id 38308e7fff4ca-38300b37bfbmr3662191fa.10.1767770509474; Tue, 06 Jan 2026 23:21:49 -0800 (PST) MIME-Version: 1.0 References: <202512291435.5edkf3hnichv@alvherre.pgsql> In-Reply-To: From: Chao Li Date: Wed, 7 Jan 2026 15:21:36 +0800 X-Gm-Features: AQt7F2rKci9GrvKNeP9R76oRoJK8vcWQDMEaIZ3_UimPNWiObgzpQYXG-i03JjQ Message-ID: Subject: Re: Refactor replication origin state reset helpers To: Masahiko Sawada Cc: Ashutosh Bapat , =?UTF-8?Q?=C3=81lvaro_Herrera?= , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000431b610647c72528" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000431b610647c72528 Content-Type: multipart/alternative; boundary="000000000000431b600647c72526" --000000000000431b600647c72526 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jan 7, 2026 at 8:30=E2=80=AFAM Masahiko Sawada wrote: > On Mon, Dec 29, 2025 at 11:17=E2=80=AFPM Chao Li = wrote: > > > > On Tue, Dec 30, 2025 at 1:07=E2=80=AFPM Chao Li wrote: > >> > >> > >> On Tue, Dec 30, 2025 at 12:48=E2=80=AFPM Ashutosh Bapat < > ashutosh.bapat.oss@gmail.com> wrote: > >>> > >>> On Mon, Dec 29, 2025 at 8:14=E2=80=AFPM =C3=81lvaro Herrera > wrote: > >>> > > >>> > On 2025-Dec-24, Ashutosh Bapat wrote: > >>> > > >>> > > If we go this route, we at least need to declare the new function= s > as > >>> > > static inline and move them to a header file instead of .c file. > >>> > > >>> > Hmm, why would we make them static inline instead of standard > (extern) > >>> > functions? We use static inline functions when we want to avoid th= e > >>> > overhead of a function call in a hot code path, but I doubt that's > the > >>> > case here. Am I mistaken on this? > >>> > > >>> > >>> I wasn't aware that we are using static inline only in hot code paths= . > >>> Looking around I see most of the static inline functions are from > >>> modules which are used in hot code paths. So, yeah that seems to be > >>> the convention. I also see some exceptions like those in > >>> basebackup_sink.h - I don't think all of those are used in hot code > >>> paths. > >>> > >>> In this case, we are moving three assignments into their own > >>> functions. CPU instructions to call extern functions will be > >>> significant compared to CPU instructions for those assignments. stati= c > >>> inline functions, OTOH, would have similar performance as the existin= g > >>> code while providing modularization. If you feel that's not a good > >>> enough reason, I am ok keeping them extern. > >>> > >>> > > Further, does it make sense to put together all the state variabl= es > >>> > > into a single structure? > >>> > > >>> > Yeah -- keeping the threaded-backend project in mind, moving them t= o > a > >>> > single struct seems to make sense. I think it's a separate patch > though > >>> > because it'd be more invasive than Chao's initial patch, as those > >>> > variables are used in many places. > >>> > > >> > >> > >> Attached v3 patch set. Comparing to v2, the changes are: > >> > >> 0001: > >> * Combine the two cleanup functions into one and control them by a boo= l > flag. > >> * Change the helper function to be extern. > >> * Move out cleanup from reset function. > >> > >> 0002: Consolidate replication origin session globals into a single > state struct. > > > > > > Fixed a bug in v4. > > > > I've reviewed both patches. Here are some comments: > Thank you very much for the review. > > 0001 patch: > > +/* > + * Clear session replication origin state. > + * > + * If xact_only is true, only clear the per-transaction state. > + */ > +void > +replorigin_session_clear_state(bool xact_only) > +{ > + replorigin_session_origin_lsn =3D InvalidXLogRecPtr; > + replorigin_session_origin_timestamp =3D 0; > + if (!xact_only) > + replorigin_session_origin =3D InvalidRepOriginId; > +} > > Given that we already have session_replication_state, I am concerned > that the name replorigin_session_clear_state creates ambiguity. Could > we rename it to something like replorigin_session_clear()? > Agreed. > Additionally, I feel that the term "per-transaction state" in the > comments does not accurately describe these two fields. How about > renaming the xact_only parameter to clear_origin? This would make it > explicit that setting the flag to true clears > replorigin_session_origin as well. > Fixed. > > 0002 patch: > > +typedef struct RepOriginSessionState > +{ > + RepOriginId origin; > + XLogRecPtr origin_lsn; > + TimestampTz origin_timestamp; > +} RepOriginSessionState; > + > +extern PGDLLIMPORT RepOriginSessionState replorigin_session_state; > > replorigin_session_state is quite confusable with the existing > session_replication_state. Given that these values are used to add the > additional information to the transaction, how about the name > something like "replorigin_xact_state" or "replorigin_xact_origin"? > > Okay, I take replorigin_xact_state, and I renamed the structure name as well. Given replorigin_session_clear() only sets members of RepOriginXactState, I also renamed it to replorigin_xact_clear(). -- > +RepOriginSessionState replorigin_session_state =3D { > + InvalidRepOriginId, InvalidXLogRecPtr, 0 > +}; > > I think using designated initializers here would be better for > readability and robustness against future struct changes. Fixed. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/ --000000000000431b600647c72526 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Wed, = Jan 7, 2026 at 8:30=E2=80=AFAM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
On Mon, Dec 29, 2025 at 11:17=E2=80= =AFPM Chao Li <li.evan.chao@gmail.com> wrote:
>
> On Tue, Dec 30, 2025 at 1:07=E2=80=AFPM Chao Li <li.evan.chao@gmail.com> wr= ote:
>>
>>
>> On Tue, Dec 30, 2025 at 12:48=E2=80=AFPM Ashutosh Bapat <ashutosh.bapat.= oss@gmail.com> wrote:
>>>
>>> On Mon, Dec 29, 2025 at 8:14=E2=80=AFPM =C3=81lvaro Herrera &l= t;alvherre@kurile= mu.de> wrote:
>>> >
>>> > On 2025-Dec-24, Ashutosh Bapat wrote:
>>> >
>>> > > If we go this route, we at least need to declare the= new functions as
>>> > > static inline and move them to a header file instead= of .c file.
>>> >
>>> > Hmm, why would we make them static inline instead of stan= dard (extern)
>>> > functions?=C2=A0 We use static inline functions when we w= ant to avoid the
>>> > overhead of a function call in a hot code path, but I dou= bt that's the
>>> > case here.=C2=A0 Am I mistaken on this?
>>> >
>>>
>>> I wasn't aware that we are using static inline only in hot= code paths.
>>> Looking around I see most of the static inline functions are f= rom
>>> modules which are used in hot code paths. So, yeah that seems = to be
>>> the convention. I also see some exceptions like those in
>>> basebackup_sink.h - I don't think all of those are used in= hot code
>>> paths.
>>>
>>> In this case, we are moving three assignments into their own >>> functions. CPU instructions to call extern functions will be >>> significant compared to CPU instructions for those assignments= . static
>>> inline functions, OTOH, would have similar performance as the = existing
>>> code while providing modularization. If you feel that's no= t a good
>>> enough reason, I am ok keeping them extern.
>>>
>>> > > Further, does it make sense to put together all the = state variables
>>> > > into a single structure?
>>> >
>>> > Yeah -- keeping the threaded-backend project in mind, mov= ing them to a
>>> > single struct seems to make sense.=C2=A0 I think it's= a separate patch though
>>> > because it'd be more invasive than Chao's initial= patch, as those
>>> > variables are used in many places.
>>> >
>>
>>
>> Attached v3 patch set. Comparing to v2, the changes are:
>>
>> 0001:
>> * Combine the two cleanup functions into one and control them by a= bool flag.
>> * Change the helper function to be extern.
>> * Move out cleanup from reset function.
>>
>> 0002: Consolidate replication origin session globals into a single= state struct.
>
>
> Fixed a bug in v4.
>

I've reviewed both patches. Here are some comments:

Thank you very much for the review.
=C2=A0
=

0001 patch:

+/*
+ * Clear session replication origin state.
+ *
+ * If xact_only is true, only clear the per-transaction state.
+ */
+void
+replorigin_session_clear_state(bool xact_only)
+{
+=C2=A0 =C2=A0replorigin_session_origin_lsn =3D InvalidXLogRecPtr;
+=C2=A0 =C2=A0replorigin_session_origin_timestamp =3D 0;
+=C2=A0 =C2=A0if (!xact_only)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0replorigin_session_origin =3D InvalidRepOriginI= d;
+}

Given that we already have session_replication_state, I am concerned
that the name replorigin_session_clear_state creates ambiguity. Could
we rename it to something like replorigin_session_clear()?
=

Agreed.=C2=A0
=C2=A0
Additionally, I feel that the term "per-transaction state" in the=
comments does not accurately describe these two fields. How about
renaming the xact_only parameter to clear_origin? This would make it
explicit that setting the flag to true clears
replorigin_session_origin as well.

Fixe= d.
=C2=A0

0002 patch:

+typedef struct RepOriginSessionState
+{
+=C2=A0 =C2=A0RepOriginId origin;
+=C2=A0 =C2=A0XLogRecPtr=C2=A0 origin_lsn;
+=C2=A0 =C2=A0TimestampTz origin_timestamp;
+}=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RepOriginSessionState;
+
+extern PGDLLIMPORT RepOriginSessionState replorigin_session_state;

replorigin_session_state is quite confusable with the existing
session_replication_state. Given that these values are used to add the
additional information to the transaction, how about the name
something like "replorigin_xact_state" or "replorigin_xact_o= rigin"?


Okay, I take replorigin_xact_state, an= d I renamed the structure name as well.
=C2=A0
Given re= plorigin_session_clear() only sets members of=C2=A0RepOriginXactState, I al= so renamed it to replorigin_xact_clear().

--
+RepOriginSessionState replorigin_session_state =3D {
+=C2=A0 =C2=A0InvalidRepOriginId, InvalidXLogRecPtr, 0
+};

I think using designated initializers here would be better for
readability and robustness against future struct changes.
=
=C2=A0Fixed.=C2=A0


B= est regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.=
--000000000000431b600647c72526-- --000000000000431b610647c72528 Content-Type: application/octet-stream; name="v5-0001-Refactor-replication-origin-state-reset-helpers.patch" Content-Disposition: attachment; filename="v5-0001-Refactor-replication-origin-state-reset-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk3ow43z0 RnJvbSAyNDM5MTBiZTI4ODg4N2VkOTFiODNhN2Q0NTgyOGU1NTYzNTQ3ZThhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogV2VkLCAyNCBEZWMgMjAyNSAwOToxNzoyNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMS8y XSBSZWZhY3RvciByZXBsaWNhdGlvbiBvcmlnaW4gc3RhdGUgcmVzZXQgaGVscGVycwpNSU1FLVZl cnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVu dC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKRmFjdG9yIG91dCBjb21tb24gbG9naWMgZm9yIGNs ZWFyaW5nIHBlci10cmFuc2FjdGlvbiBhbmQgcGVyLXNlc3Npb24KcmVwbGljYXRpb24gb3JpZ2lu IHN0YXRlIGludG8gYSBkZWRpY2F0ZWQgaGVscGVyIGZ1bmN0aW9uLgoKVGhpcyByZW1vdmVzIGR1 cGxpY2F0ZWQgYXNzaWdubWVudHMgb2YgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiwKcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbl9sc24sIGFuZCByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3Rp bWVzdGFtcAphY3Jvc3MgbXVsdGlwbGUgY2FsbCBzaXRlcywgYW5kIG1ha2VzIHRoZSBpbnRlbmRl ZCBzY29wZSBvZiBlYWNoIHJlc2V0CihjbGVhciBwZXItdHJhbnNhY3Rpb24gc3RhdGUgdnMuIGNs ZWFyIHBlci1zZXNzaW9uIHN0YXRlKSBleHBsaWNpdC4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGlu dGVuZGVkLgoKQXV0aG9yOiBDaGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KUmV2aWV3ZWQtYnk6IE1h c2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQXNodXRv c2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiDDgWx2 YXJvIEhlcnJlcmEgPGFsdmhlcnJlQGt1cmlsZW11LmRlPgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBRW9XeDI9cFl2ZlJ0aFhIVHpTck9zZjVfRmZ5WTR6SnlLNHpWMnY0Vz15alVp ajFjQUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv b3JpZ2luLmMgICAgfCAyMCArKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyB8ICA0ICstLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgfCAxNCArKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICB8ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwg MjMgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggNzI2OGQ3YjVlNmMuLmMyN2U3OTBjM2E4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEyODcsNiArMTI4NywxOSBA QCByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpCiAJcmV0dXJuIHJl bW90ZV9sc247CiB9CiAKKy8qCisgKiBDbGVhciBzZXNzaW9uIHJlcGxpY2F0aW9uIG9yaWdpbiBz dGF0ZS4KKyAqCisgKiBPbmx5IHdoZW4gY2xlYXJfb3JpZ2luIGlzIHRydWUsIHRoZSBvcmlnaW4g SUQgaXMgYWxzbyBjbGVhcmVkLgorICovCit2b2lkCityZXBsb3JpZ2luX3Nlc3Npb25fY2xlYXIo Ym9vbCBjbGVhcl9vcmlnaW4pCit7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9 IDA7CisJaWYgKGNsZWFyX29yaWdpbikKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IElu dmFsaWRSZXBPcmlnaW5JZDsKK30KIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0MTIs OSArMTQyNSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9uX3Jlc2V0KFBHX0ZVTkNU SU9OX0FSR1MpCiAKIAlyZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKTsKIAotCXJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW4gPSBJbnZhbGlkUmVwT3JpZ2luSWQ7Ci0JcmVwbG9yaWdpbl9zZXNzaW9u X29yaWdpbl9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luX3RpbWVzdGFtcCA9IDA7CisJcmVwbG9yaWdpbl9zZXNzaW9uX2NsZWFyKHRydWUpOwogCiAJ UEdfUkVUVVJOX1ZPSUQoKTsKIH0KQEAgLTE0ODIsOCArMTQ5Myw3IEBAIHBnX3JlcGxpY2F0aW9u X29yaWdpbl94YWN0X3Jlc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJcmVwbG9yaWdpbl9jaGVj a19wcmVyZXF1aXNpdGVzKHRydWUsIGZhbHNlKTsKIAotCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90 aW1lc3RhbXAgPSAwOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9jbGVhcihmYWxzZSk7CiAKIAlQR19S RVRVUk5fVk9JRCgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKaW5kZXggNjdlNTc1MjAzODYuLjcyZTQ1YzJkZTE5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTMyMyw5ICszMjMsNyBAQCBQcm9jZXNz U3luY2luZ1RhYmxlc0ZvclN5bmMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJICogVGhpcyBp cyBuZWVkZWQgdG8gYWxsb3cgdGhlIG9yaWdpbiB0byBiZSBkcm9wcGVkLgogCQkgKi8KIAkJcmVw bG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBJ bnZhbGlkUmVwT3JpZ2luSWQ7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0g MDsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX2NsZWFyKHRydWUpOwogCiAJCS8qCiAJCSAqIERyb3Ag dGhlIHRhYmxlc3luYydzIG9yaWdpbiB0cmFja2luZyBpZiBleGlzdHMuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBhZDI4MWU3MDY5Yi4uNmFkOTljYzVhZmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtNjI3LDcgKzYy Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8o dm9pZCk7CiBzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0 aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqKndpbmZvKTsKIAotc3RhdGljIHZvaWQgcmVwbG9yaWdpbl9yZXNldChpbnQgY29kZSwg RGF0dW0gYXJnKTsKK3N0YXRpYyB2b2lkIG9uX2V4aXRfY2xlYXJfc3RhdGUoaW50IGNvZGUsIERh dHVtIGFyZyk7CiAKIC8qCiAgKiBGb3JtIHRoZSBvcmlnaW4gbmFtZSBmb3IgdGhlIHN1YnNjcmlw dGlvbi4KQEAgLTU1OTQsNyArNTU5NCw3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2lu X3N0YXJ0cG9zKQogCQkgKiB0cmFuc2FjdGlvbiBsb3NzIGFzIHRoYXQgdHJhbnNhY3Rpb24gd29u J3QgYmUgc2VudCBhZ2FpbiBieSB0aGUKIAkJICogc2VydmVyLgogCQkgKi8KLQkJcmVwbG9yaWdp bl9yZXNldCgwLCAoRGF0dW0pIDApOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fY2xlYXIodHJ1ZSk7 CiAKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCiAJCQlEaXNhYmxlU3Vic2Ny aXB0aW9uQW5kRXhpdCgpOwpAQCAtNTg2NSwxOCArNTg2NSwxNiBAQCBJbml0aWFsaXplTG9nUmVw V29ya2VyKHZvaWQpCiAJICogcmVwbGljYXRpb24gd29ya2VycyB0aGF0IHNldCB1cCBvcmlnaW5z IGFuZCBhcHBseSByZW1vdGUgdHJhbnNhY3Rpb25zCiAJICogYXJlIHByb3RlY3RlZC4KIAkgKi8K LQliZWZvcmVfc2htZW1fZXhpdChyZXBsb3JpZ2luX3Jlc2V0LCAoRGF0dW0pIDApOworCWJlZm9y ZV9zaG1lbV9leGl0KG9uX2V4aXRfY2xlYXJfc3RhdGUsIChEYXR1bSkgMCk7CiB9CiAKIC8qCi0g KiBSZXNldCB0aGUgb3JpZ2luIHN0YXRlLgorICogQ2FsbGJhY2sgb24gZXhpdCB0byByZXNldCB0 aGUgb3JpZ2luIHN0YXRlLgogICovCiBzdGF0aWMgdm9pZAotcmVwbG9yaWdpbl9yZXNldChpbnQg Y29kZSwgRGF0dW0gYXJnKQorb25fZXhpdF9jbGVhcl9zdGF0ZShpbnQgY29kZSwgRGF0dW0gYXJn KQogewotCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBJbnZhbGlkUmVwT3JpZ2luSWQ7Ci0J cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IDA7CisJcmVwbG9yaWdpbl9zZXNzaW9u X2NsZWFyKHRydWUpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vb3JpZ2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAppbmRleCAxZGE3 NzM2Mzk1NS4uMzA5YjgwMGJkNWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC02NSw2 ICs2NSw3IEBAIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQ dHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfY29tbWl0KTsK IGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBp bnQgYWNxdWlyZWRfYnkpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KHZv aWQpOworZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX2NsZWFyKGJvb2wgY2xlYXJfb3Jp Z2luKTsKIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3Mo Ym9vbCBmbHVzaCk7CiAKIC8qIENoZWNrcG9pbnQvU3RhcnR1cCBpbnRlZ3JhdGlvbiAqLwotLSAK Mi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000431b610647c72528 Content-Type: application/octet-stream; name="v5-0002-Consolidate-replication-origin-session-globals-in.patch" Content-Disposition: attachment; filename="v5-0002-Consolidate-replication-origin-session-globals-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk3ow4461 RnJvbSAxYmQ3MDUwNDYwZDgzMmIwNTZlMDVjMjkzZGU5YzQxOWQyM2FjOGJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogVHVlLCAzMCBEZWMgMjAyNSAxMjo1NTozMSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMi8y XSBDb25zb2xpZGF0ZSByZXBsaWNhdGlvbiBvcmlnaW4gc2Vzc2lvbiBnbG9iYWxzIGludG8gYQog c2luZ2xlIHN0YXRlIHN0cnVjdAoKUmVwbGFjZSB0aGUgc2VwYXJhdGUgZ2xvYmFsIHZhcmlhYmxl cyB1c2VkIHRvIHRyYWNrIHJlcGxpY2F0aW9uIG9yaWdpbgpzZXNzaW9uIHN0YXRlIChvcmlnaW4g SUQsIG9yaWdpbiBMU04sIGFuZCBvcmlnaW4gdGltZXN0YW1wKSB3aXRoIGEgc2luZ2xlClJlcE9y aWdpblhhY3RTdGF0ZSBzdHJ1Y3QuCgpUaGlzIHJlZmFjdG9yaW5nIGdyb3VwcyBsb2dpY2FsbHkg cmVsYXRlZCBzZXNzaW9uIHN0YXRlIGludG8gb25lIG9iamVjdCwKcmVkdWNpbmcgdGhlIHByb2xp ZmVyYXRpb24gb2YgbG9vc2VseSByZWxhdGVkIGdsb2JhbHMgYW5kIG1ha2luZyB0aGUgY29kZQpl YXNpZXIgdG8gcmVhZCBhbmQgcmVhc29uIGFib3V0LiBBbGwgZXhpc3RpbmcgdXNlcnMgYXJlIHVw ZGF0ZWQgdG8gcmVmZXIKdG8gcmVwbG9yaWdpbl94YWN0X3N0YXRlLntvcmlnaW4sIG9yaWdpbl9s c24sIG9yaWdpbl90aW1lc3RhbXB9LgoKVGhlcmUgaXMgbm8gaW50ZW5kZWQgYmVoYXZpb3IgY2hh bmdlOyB0aGlzIGlzIGEgbWVjaGFuaWNhbCBjbGVhbnVwIHRvCmltcHJvdmUgY2xhcml0eSBhbmQg bWFpbnRhaW5hYmlsaXR5IG9mIHJlcGxpY2F0aW9uIG9yaWdpbiBoYW5kbGluZy4KCkF1dGhvcjog Q2hhbyBMaSA8bGljQGhpZ2hnby5jb20+ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNh d2FkYS5tc2hrQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUVv V3gyPXBZdmZSdGhYSFR6U3JPc2Y1X0ZmeVk0ekp5SzR6VjJ2NFc9eWpVaWoxY0FAbWFpbC5nbWFp bC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jICAgICAgICAg fCAzMiArKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j ICAgICAgICAgICAgIHwgMzYgKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ2luc2VydC5jICAgICAgIHwgIDYgKystLQogLi4uL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDYgKystLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgIHwgMzIgKysrKysrKysrLS0tLS0tLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICA2ICsrLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDMyICsrKysrKysrLS0t LS0tLS0tCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgfCAx NCArKysrKy0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAg IHwgIDEgKwogOSBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwppbmRleCBlNTBhYmIzMzFjYy4u MzI5YzZiYmYzYzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3Bo YXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwpAQCAtMTE1 NywxMyArMTE1NywxMyBAQCBFbmRQcmVwYXJlKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0KQogCUFz c2VydChoZHItPm1hZ2ljID09IFRXT1BIQVNFX01BR0lDKTsKIAloZHItPnRvdGFsX2xlbiA9IHJl Y29yZHMudG90YWxfbGVuICsgc2l6ZW9mKHBnX2NyYzMyYyk7CiAKLQlyZXBsb3JpZ2luID0gKHJl cGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCi0JCQkJICBy ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCXJlcGxvcmln aW4gPSAocmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQg JiYKKwkJCQkgIHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJ ZCk7CiAKIAlpZiAocmVwbG9yaWdpbikKIAl7Ci0JCWhkci0+b3JpZ2luX2xzbiA9IHJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW5fbHNuOwotCQloZHItPm9yaWdpbl90aW1lc3RhbXAgPSByZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcDsKKwkJaGRyLT5vcmlnaW5fbHNuID0gcmVwbG9y aWdpbl94YWN0X3N0YXRlLm9yaWdpbl9sc247CisJCWhkci0+b3JpZ2luX3RpbWVzdGFtcCA9IHJl cGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGltZXN0YW1wOwogCX0KIAogCS8qCkBAIC0xMjEx LDcgKzEyMTEsNyBAQCBFbmRQcmVwYXJlKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0KQogCWlmIChy ZXBsb3JpZ2luKQogCXsKIAkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGljYXRp b24gb3JpZ2luICovCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW5fbHNuLAorCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2lu X3hhY3Rfc3RhdGUub3JpZ2luX2xzbiwKIAkJCQkJCQkJICAgZ3hhY3QtPnByZXBhcmVfZW5kX2xz bik7CiAJfQogCkBAIC0yMzMwLDggKzIzMzAsOCBAQCBSZWNvcmRUcmFuc2FjdGlvbkNvbW1pdFBy ZXBhcmVkKFRyYW5zYWN0aW9uSWQgeGlkLAogCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRp b24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLCBhcmUKIAkgKiB3ZSByZXBs YXlpbmcgcmVtb3RlIGFjdGlvbnM/CiAJICovCi0JcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgotCQkJCSAgcmVwbG9yaWdpbl9z ZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwlyZXBsb3JpZ2luID0gKHJlcGxv cmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICBy ZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOwogCiAJLyog TG9hZCB0aGUgaW5qZWN0aW9uIHBvaW50IGJlZm9yZSBlbnRlcmluZyB0aGUgY3JpdGljYWwgc2Vj dGlvbiAqLwogCUlOSkVDVElPTl9QT0lOVF9MT0FEKCJjb21taXQtYWZ0ZXItZGVsYXktY2hlY2tw b2ludCIpOwpAQCAtMjM3NiwyMyArMjM3NiwyMyBAQCBSZWNvcmRUcmFuc2FjdGlvbkNvbW1pdFBy ZXBhcmVkKFRyYW5zYWN0aW9uSWQgeGlkLAogCiAJaWYgKHJlcGxvcmlnaW4pCiAJCS8qIE1vdmUg TFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLwotCQlyZXBsb3JpZ2lu X3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJcmVwbG9y aWdpbl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl9sc24sCiAJ CQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5kKTsKIAogCS8qCiAJICogUmVjb3JkIGNvbW1pdCB0aW1l c3RhbXAuICBUaGUgdmFsdWUgY29tZXMgZnJvbSBwbGFpbiBjb21taXQgdGltZXN0YW1wCiAJICog aWYgcmVwbG9yaWdpbiBpcyBub3QgZW5hYmxlZCwgb3IgcmVwbG9yaWdpbiBhbHJlYWR5IHNldCBh IHZhbHVlIGZvciB1cwotCSAqIGluIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1w IG90aGVyd2lzZS4KKwkgKiBpbiByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFt cCBvdGhlcndpc2UuCiAJICoKIAkgKiBXZSBkb24ndCBuZWVkIHRvIFdBTC1sb2cgYW55dGhpbmcg aGVyZSwgYXMgdGhlIGNvbW1pdCByZWNvcmQgd3JpdHRlbgogCSAqIGFib3ZlIGFscmVhZHkgY29u dGFpbnMgdGhlIGRhdGEuCiAJICovCi0JaWYgKCFyZXBsb3JpZ2luIHx8IHJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW5fdGltZXN0YW1wID09IDApCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5f dGltZXN0YW1wID0gY29tbWl0dHM7CisJaWYgKCFyZXBsb3JpZ2luIHx8IHJlcGxvcmlnaW5feGFj dF9zdGF0ZS5vcmlnaW5fdGltZXN0YW1wID09IDApCisJCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5v cmlnaW5fdGltZXN0YW1wID0gY29tbWl0dHM7CiAKIAlUcmFuc2FjdGlvblRyZWVTZXRDb21taXRU c0RhdGEoeGlkLCBuY2hpbGRyZW4sIGNoaWxkcmVuLAotCQkJCQkJCQkgICByZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luX3RpbWVzdGFtcCwKLQkJCQkJCQkJICAgcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbik7CisJCQkJCQkJCSAgIHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGltZXN0YW1w LAorCQkJCQkJCQkgICByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luKTsKIAogCS8qCiAJICog V2UgZG9uJ3QgY3VycmVudGx5IHRyeSB0byBzbGVlcCBiZWZvcmUgZmx1c2ggaGVyZSAuLi4gbm9y IGlzIHRoZXJlIGFueQpAQCAtMjQ0NSw4ICsyNDQ1LDggQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9y dFByZXBhcmVkKFRyYW5zYWN0aW9uSWQgeGlkLAogCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGlj YXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLCBhcmUKIAkgKiB3ZSBy ZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CiAJICovCi0JcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgotCQkJCSAgcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwlyZXBsb3JpZ2luID0gKHJl cGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJ ICByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOwogCiAJ LyoKIAkgKiBDYXRjaCB0aGUgc2NlbmFyaW8gd2hlcmUgd2UgYWJvcnRlZCBwYXJ0d2F5IHRocm91 Z2gKQEAgLTI0NzIsNyArMjQ3Miw3IEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnRQcmVwYXJlZChU cmFuc2FjdGlvbklkIHhpZCwKIAogCWlmIChyZXBsb3JpZ2luKQogCQkvKiBNb3ZlIExTTnMgZm9y d2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KLQkJcmVwbG9yaWdpbl9zZXNzaW9u X2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJCXJlcGxvcmlnaW5fc2Vz c2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNuLAogCQkJCQkJCQkg ICBYYWN0TGFzdFJlY0VuZCk7CiAKIAkvKiBBbHdheXMgZmx1c2gsIHNpbmNlIHdlJ3JlIGFib3V0 IHRvIHJlbW92ZSB0aGUgMlBDIHN0YXRlIGZpbGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3Qu YwppbmRleCBjODU3ZTIzNTUyZi4uYzc3OWNlNzFmMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMKQEAgLTE0MTMsOCArMTQxMyw4IEBAIFJlY29yZFRyYW5zYWN0aW9uQ29tbWl0KHZvaWQp CiAJCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3Is IGluIG90aGVyIHdvcmRzLAogCQkgKiBhcmUgd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPwog CQkgKi8KLQkJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFs aWRSZXBPcmlnaW5JZCAmJgotCQkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9O b3RSZXBsaWNhdGVJZCk7CisJCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl94YWN0X3N0YXRlLm9y aWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkJICByZXBsb3JpZ2luX3hhY3Rfc3Rh dGUub3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOwogCiAJCS8qCiAJCSAqIE1hcmsgb3Vyc2Vs dmVzIGFzIHdpdGhpbiBvdXIgImNvbW1pdCBjcml0aWNhbCBzZWN0aW9uIi4gIFRoaXMKQEAgLTE0 NjIsMjUgKzE0NjIsMjUgQEAgUmVjb3JkVHJhbnNhY3Rpb25Db21taXQodm9pZCkKIAogCQlpZiAo cmVwbG9yaWdpbikKIAkJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9u IG9yaWdpbiAqLwotCQkJcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbl9sc24sCisJCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2lu X3hhY3Rfc3RhdGUub3JpZ2luX2xzbiwKIAkJCQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5kKTsKIAog CQkvKgogCQkgKiBSZWNvcmQgY29tbWl0IHRpbWVzdGFtcC4gIFRoZSB2YWx1ZSBjb21lcyBmcm9t IHBsYWluIGNvbW1pdAogCQkgKiB0aW1lc3RhbXAgaWYgdGhlcmUncyBubyByZXBsaWNhdGlvbiBv cmlnaW47IG90aGVyd2lzZSwgdGhlCi0JCSAqIHRpbWVzdGFtcCB3YXMgYWxyZWFkeSBzZXQgaW4g cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgYnkKLQkJICogcmVwbGljYXRpb24u CisJCSAqIHRpbWVzdGFtcCB3YXMgYWxyZWFkeSBzZXQgaW4gcmVwbG9yaWdpbl94YWN0X3N0YXRl Lm9yaWdpbl90aW1lc3RhbXAKKwkJICogYnkgcmVwbGljYXRpb24uCiAJCSAqCiAJCSAqIFdlIGRv bid0IG5lZWQgdG8gV0FMLWxvZyBhbnl0aGluZyBoZXJlLCBhcyB0aGUgY29tbWl0IHJlY29yZAog CQkgKiB3cml0dGVuIGFib3ZlIGFscmVhZHkgY29udGFpbnMgdGhlIGRhdGEuCiAJCSAqLwogCi0J CWlmICghcmVwbG9yaWdpbiB8fCByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9 PSAwKQotCQkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBHZXRDdXJyZW50 VHJhbnNhY3Rpb25TdG9wVGltZXN0YW1wKCk7CisJCWlmICghcmVwbG9yaWdpbiB8fCByZXBsb3Jp Z2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcCA9PSAwKQorCQkJcmVwbG9yaWdpbl94YWN0 X3N0YXRlLm9yaWdpbl90aW1lc3RhbXAgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25TdG9wVGltZXN0 YW1wKCk7CiAKIAkJVHJhbnNhY3Rpb25UcmVlU2V0Q29tbWl0VHNEYXRhKHhpZCwgbmNoaWxkcmVu LCBjaGlsZHJlbiwKLQkJCQkJCQkJCSAgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0 YW1wLAotCQkJCQkJCQkJICAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbik7CisJCQkJCQkJCQkg ICByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcCwKKwkJCQkJCQkJCSAgIHJl cGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4pOwogCX0KIAogCS8qCkBAIC0xODEwLDggKzE4MTAs OCBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCSAqIEFyZSB3ZSB1 c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRz LCBhcmUKIAkgKiB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CiAJICovCi0JcmVwbG9yaWdp biA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgot CQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwly ZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gSW52YWxpZFJlcE9y aWdpbklkICYmCisJCQkJICByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luICE9IERvTm90UmVw bGljYXRlSWQpOwogCiAJLyogRmV0Y2ggdGhlIGRhdGEgd2UgbmVlZCBmb3IgdGhlIGFib3J0IHJl Y29yZCAqLwogCW5yZWxzID0gc21nckdldFBlbmRpbmdEZWxldGVzKGZhbHNlLCAmcmVscyk7CkBA IC0xODM4LDcgKzE4MzgsNyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0 KQogCiAJaWYgKHJlcGxvcmlnaW4pCiAJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJl cGxpY2F0aW9uIG9yaWdpbiAqLwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UocmVw bG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl9sc24sCiAJCQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5k KTsKIAogCS8qCkBAIC01OTI4LDEyICs1OTI4LDEyIEBAIFhhY3RMb2dDb21taXRSZWNvcmQoVGlt ZXN0YW1wVHogY29tbWl0X3RpbWUsCiAJfQogCiAJLyogZHVtcCB0cmFuc2FjdGlvbiBvcmlnaW4g aW5mb3JtYXRpb24gKi8KLQlpZiAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlk UmVwT3JpZ2luSWQpCisJaWYgKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gSW52YWxp ZFJlcE9yaWdpbklkKQogCXsKIAkJeGxfeGluZm8ueGluZm8gfD0gWEFDVF9YSU5GT19IQVNfT1JJ R0lOOwogCi0JCXhsX29yaWdpbi5vcmlnaW5fbHNuID0gcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp bl9sc247Ci0JCXhsX29yaWdpbi5vcmlnaW5fdGltZXN0YW1wID0gcmVwbG9yaWdpbl9zZXNzaW9u X29yaWdpbl90aW1lc3RhbXA7CisJCXhsX29yaWdpbi5vcmlnaW5fbHNuID0gcmVwbG9yaWdpbl94 YWN0X3N0YXRlLm9yaWdpbl9sc247CisJCXhsX29yaWdpbi5vcmlnaW5fdGltZXN0YW1wID0gcmVw bG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3RhbXA7CiAJfQogCiAJaWYgKHhsX3hpbmZv LnhpbmZvICE9IDApCkBAIC02MDgxLDEyICs2MDgxLDEyIEBAIFhhY3RMb2dBYm9ydFJlY29yZChU aW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCSAqIER1bXAgdHJhbnNhY3Rpb24gb3JpZ2luIGluZm9y bWF0aW9uLiBXZSBuZWVkIHRoaXMgZHVyaW5nIHJlY292ZXJ5IHRvCiAJICogdXBkYXRlIHRoZSBy ZXBsaWNhdGlvbiBvcmlnaW4gcHJvZ3Jlc3MuCiAJICovCi0JaWYgKHJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkKQorCWlmIChyZXBsb3JpZ2luX3hhY3Rfc3Rh dGUub3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCkKIAl7CiAJCXhsX3hpbmZvLnhpbmZvIHw9 IFhBQ1RfWElORk9fSEFTX09SSUdJTjsKIAotCQl4bF9vcmlnaW4ub3JpZ2luX2xzbiA9IHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuOwotCQl4bF9vcmlnaW4ub3JpZ2luX3RpbWVzdGFtcCA9 IHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wOworCQl4bF9vcmlnaW4ub3JpZ2lu X2xzbiA9IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNuOworCQl4bF9vcmlnaW4ub3Jp Z2luX3RpbWVzdGFtcCA9IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGltZXN0YW1wOwog CX0KIAogCWlmICh4bF94aW5mby54aW5mbyAhPSAwKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ2luc2VydC5jCmluZGV4IDkyYzQ4ZTc2OGMzLi43Zjk0ODVlMDhlNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNlcnQuYwpAQCAtODYxLDExICs4NjEsMTEgQEAgWExvZ1Jl Y29yZEFzc2VtYmxlKFJtZ3JJZCBybWlkLCB1aW50OCBpbmZvLAogCiAJLyogZm9sbG93ZWQgYnkg dGhlIHJlY29yZCdzIG9yaWdpbiwgaWYgYW55ICovCiAJaWYgKChjdXJpbnNlcnRfZmxhZ3MgJiBY TE9HX0lOQ0xVREVfT1JJR0lOKSAmJgotCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IElu dmFsaWRSZXBPcmlnaW5JZCkKKwkJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbiAhPSBJbnZh bGlkUmVwT3JpZ2luSWQpCiAJewogCQkqKHNjcmF0Y2grKykgPSAoY2hhcikgWExSX0JMT0NLX0lE X09SSUdJTjsKLQkJbWVtY3B5KHNjcmF0Y2gsICZyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luLCBz aXplb2YocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbikpOwotCQlzY3JhdGNoICs9IHNpemVvZihy ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luKTsKKwkJbWVtY3B5KHNjcmF0Y2gsICZyZXBsb3JpZ2lu X3hhY3Rfc3RhdGUub3JpZ2luLCBzaXplb2YocmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbikp OworCQlzY3JhdGNoICs9IHNpemVvZihyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luKTsKIAl9 CiAKIAkvKiBmb2xsb3dlZCBieSB0b3BsZXZlbCBYSUQsIGlmIG5vdCBhbHJlYWR5IGluY2x1ZGVk IGluIHByZXZpb3VzIHJlY29yZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA1ZWJkMjM1M2ZlZC4uZmJjMTEz YjA5OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCkBAIC05NjIsNyArOTYyLDcgQEAgUGFyYWxsZWxBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJICogb3JpZ2luIHdoaWNoIHdhcyBhbHJlYWR5IGFjcXVp cmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KIAkgKi8KIAlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0 dXAob3JpZ2luaWQsIE15TG9naWNhbFJlcFdvcmtlci0+bGVhZGVyX3BpZCk7Ci0JcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmln aW4gPSBvcmlnaW5pZDsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAogCS8qCkBAIC0x NDMwLDggKzE0MzAsOCBAQCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0 YSAqYWJvcnRfZGF0YSkKIAkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0 IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24KIAkgKiBpbiBjYXNlIG9mIGNyYXNoLgog CSAqLwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gYWJvcnRfZGF0YS0+YWJvcnRf bHNuOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS0+ YWJvcnRfdGltZTsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX2xzbiA9IGFib3J0X2Rh dGEtPmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcCA9 IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CiAKIAkvKgogCSAqIElmIHRoZSB0d28gWElEcyBhcmUg dGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggYzI3ZTc5MGMzYTguLjk3Yzhm OGRkYjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTE2 MCw5ICsxNjAsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVwbGljYXRpb25TdGF0ZUN0bAogfSBSZXBs aWNhdGlvblN0YXRlQ3RsOwogCiAvKiBleHRlcm5hbCB2YXJpYWJsZXMgKi8KLVJlcE9yaWdpbklk IHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBJbnZhbGlkUmVwT3JpZ2luSWQ7IC8qIGFzc3Vt ZWQgaWRlbnRpdHkgKi8KLVhMb2dSZWNQdHIJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24g PSBJbnZhbGlkWExvZ1JlY1B0cjsKLVRpbWVzdGFtcFR6IHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fdGltZXN0YW1wID0gMDsKK1JlcE9yaWdpblhhY3RTdGF0ZSByZXBsb3JpZ2luX3hhY3Rfc3Rh dGUgPSB7CisJLm9yaWdpbiA9IEludmFsaWRSZXBPcmlnaW5JZCwKKwkub3JpZ2luX2xzbiA9IElu dmFsaWRYTG9nUmVjUHRyLAorCS5vcmlnaW5fdGltZXN0YW1wID0gMAorfTsKIAogLyoKICAqIEJh c2UgYWRkcmVzcyBpbnRvIGEgc2hhcmVkIG1lbW9yeSBhcnJheSBvZiByZXBsaWNhdGlvbiBzdGF0 ZXMgb2Ygc2l6ZQpAQCAtODk2LDcgKzg5OCw3IEBAIHJlcGxvcmlnaW5fcmVkbyhYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKICAqIFRlbGwgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBwcm9ncmVzcyBt YWNoaW5lcnkgdGhhdCBhIGNvbW1pdCBmcm9tICdub2RlJwogICogdGhhdCBvcmlnaW5hdGVkIGF0 IHRoZSBMU04gcmVtb3RlX2NvbW1pdCBvbiB0aGUgcmVtb3RlIG5vZGUgd2FzIHJlcGxheWVkCiAg KiBzdWNjZXNzZnVsbHkgYW5kIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkbyBzbyBhZ2Fpbi4gSW4g Y29tYmluYXRpb24gd2l0aAotICogc2V0dGluZyB1cCByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu X2xzbiBhbmQgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbgorICogc2V0dGluZyB1cCByZXBsb3Jp Z2luX3hhY3Rfc3RhdGUub3JpZ2luX2xzbiBhbmQgcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdp bgogICogdGhhdCBlbnN1cmVzIHdlIHdvbid0IGxvc2Uga25vd2xlZGdlIGFib3V0IHRoYXQgYWZ0 ZXIgYSBjcmFzaCBpZiB0aGUKICAqIHRyYW5zYWN0aW9uIGhhZCBhIHBlcnNpc3RlbnQgZWZmZWN0 ICh0aGluayBvZiBhc3luY2hyb25vdXMgY29tbWl0cykuCiAgKgpAQCAtMTI4OCwxNyArMTI5MCwx NyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpCiB9CiAKIC8q Ci0gKiBDbGVhciBzZXNzaW9uIHJlcGxpY2F0aW9uIG9yaWdpbiBzdGF0ZS4KKyAqIENsZWFyIHRo ZSB0cmFuc2FjdGlvbiByZXBsaWNhdGlvbiBvcmlnaW4gc3RhdGUuCiAgKgogICogT25seSB3aGVu IGNsZWFyX29yaWdpbiBpcyB0cnVlLCB0aGUgb3JpZ2luIElEIGlzIGFsc28gY2xlYXJlZC4KICAq Lwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX2NsZWFyKGJvb2wgY2xlYXJfb3JpZ2luKQorcmVw bG9yaWdpbl94YWN0X2NsZWFyKGJvb2wgY2xlYXJfb3JpZ2luKQogewotCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW5fbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JcmVwbG9yaWdpbl9zZXNzaW9u X29yaWdpbl90aW1lc3RhbXAgPSAwOworCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNu ID0gSW52YWxpZFhMb2dSZWNQdHI7CisJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1l c3RhbXAgPSAwOwogCWlmIChjbGVhcl9vcmlnaW4pCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW4gPSBJbnZhbGlkUmVwT3JpZ2luSWQ7CisJCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4g PSBJbnZhbGlkUmVwT3JpZ2luSWQ7CiB9CiAKIApAQCAtMTQwOCw3ICsxNDEwLDcgQEAgcGdfcmVw bGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAoUEdfRlVOQ1RJT05fQVJHUykKIAlwaWQgPSBQ R19HRVRBUkdfSU5UMzIoMSk7CiAJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgcGlk KTsKIAotCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW47CisJcmVwbG9yaWdpbl94 YWN0X3N0YXRlLm9yaWdpbiA9IG9yaWdpbjsKIAogCXBmcmVlKG5hbWUpOwogCkBAIC0xNDI1LDcg KzE0MjcsNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9yZXNldChQR19GVU5DVElP Tl9BUkdTKQogCiAJcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCk7CiAKLQlyZXBsb3JpZ2luX3Nl c3Npb25fY2xlYXIodHJ1ZSk7CisJcmVwbG9yaWdpbl94YWN0X2NsZWFyKHRydWUpOwogCiAJUEdf UkVUVVJOX1ZPSUQoKTsKIH0KQEAgLTE0MzgsNyArMTQ0MCw3IEBAIHBnX3JlcGxpY2F0aW9uX29y aWdpbl9zZXNzaW9uX2lzX3NldHVwKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJcmVwbG9yaWdpbl9j aGVja19wcmVyZXF1aXNpdGVzKGZhbHNlLCBmYWxzZSk7CiAKLQlQR19SRVRVUk5fQk9PTChyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCk7CisJUEdfUkVUVVJO X0JPT0wocmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQp OwogfQogCiAKQEAgLTE0ODIsOCArMTQ4NCw4IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl94YWN0 X3NldHVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygibm8gcmVwbGljYXRpb24gb3Jp Z2luIGlzIGNvbmZpZ3VyZWQiKSkpOwogCi0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24g PSBsb2NhdGlvbjsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IFBHX0dF VEFSR19USU1FU1RBTVBUWigxKTsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX2xzbiA9 IGxvY2F0aW9uOworCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGltZXN0YW1wID0gUEdf R0VUQVJHX1RJTUVTVEFNUFRaKDEpOwogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KQEAgLTE0OTMs NyArMTQ5NSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl94YWN0X3Jlc2V0KFBHX0ZVTkNUSU9O X0FSR1MpCiB7CiAJcmVwbG9yaWdpbl9jaGVja19wcmVyZXF1aXNpdGVzKHRydWUsIGZhbHNlKTsK IAotCXJlcGxvcmlnaW5fc2Vzc2lvbl9jbGVhcihmYWxzZSk7CisJcmVwbG9yaWdpbl94YWN0X2Ns ZWFyKGZhbHNlKTsKIAogCVBHX1JFVFVSTl9WT0lEKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA3MmU0NWMyZGUxOS4uODY0NDc2YjRhNzIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMzIz LDcgKzMyMyw3IEBAIFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yU3luYyhYTG9nUmVjUHRyIGN1cnJl bnRfbHNuKQogCQkgKiBUaGlzIGlzIG5lZWRlZCB0byBhbGxvdyB0aGUgb3JpZ2luIHRvIGJlIGRy b3BwZWQuCiAJCSAqLwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKTsKLQkJcmVwbG9yaWdp bl9zZXNzaW9uX2NsZWFyKHRydWUpOworCQlyZXBsb3JpZ2luX3hhY3RfY2xlYXIodHJ1ZSk7CiAK IAkJLyoKIAkJICogRHJvcCB0aGUgdGFibGVzeW5jJ3Mgb3JpZ2luIHRyYWNraW5nIGlmIGV4aXN0 cy4KQEAgLTEzMTgsNyArMTMxOCw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVj UHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlf bmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCwgMCk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKwkJcmVw bG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbiA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0cG9z ID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAKIAkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CkBAIC0xNDA1LDcgKzE0MDUsNyBAQCBMb2dpY2FsUmVwU3luY1Rh YmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCVVubG9ja1JlbGF0aW9uT2lk KFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlyZXBs b3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gPSBvcmlnaW5pZDsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luID0gb3JpZ2lu aWQ7CiAKIAkvKgogCSAqIElmIHRoZSB1c2VyIGRpZCBub3Qgb3B0IHRvIHJ1biBhcyB0aGUgb3du ZXIgb2YgdGhlIHN1YnNjcmlwdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKaW5kZXggNmFkOTljYzVhZmQuLjFmMjFiNTZhY2U2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTEzMTgsOCArMTMxOCw4IEBAIGFwcGx5X2hhbmRs ZV9wcmVwYXJlX2ludGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0 YSkKIAkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBm cm9tIGNvcnJlY3QgcG9zaXRpb24KIAkgKiBpbiBjYXNlIG9mIGNyYXNoLgogCSAqLwotCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gcHJlcGFyZV9kYXRhLT5lbmRfbHNuOwotCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gcHJlcGFyZV9kYXRhLT5wcmVwYXJlX3Rp bWU7CisJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl9sc24gPSBwcmVwYXJlX2RhdGEtPmVu ZF9sc247CisJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3RhbXAgPSBwcmVwYXJl X2RhdGEtPnByZXBhcmVfdGltZTsKIAogCVByZXBhcmVUcmFuc2FjdGlvbkJsb2NrKGdpZCk7CiB9 CkBAIC0xNDIxLDggKzE0MjEsOCBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmlu Z0luZm8gcykKIAkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVh bWluZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24KIAkgKiBpbiBjYXNlIG9mIGNyYXNoLgogCSAqLwot CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gcHJlcGFyZV9kYXRhLmVuZF9sc247Ci0J cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBwcmVwYXJlX2RhdGEuY29tbWl0 X3RpbWU7CisJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl9sc24gPSBwcmVwYXJlX2RhdGEu ZW5kX2xzbjsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcCA9IHByZXBh cmVfZGF0YS5jb21taXRfdGltZTsKIAogCUZpbmlzaFByZXBhcmVkVHJhbnNhY3Rpb24oZ2lkLCB0 cnVlKTsKIAllbmRfcmVwbGljYXRpb25fc3RlcCgpOwpAQCAtMTQ3OSw4ICsxNDc5LDggQEAgYXBw bHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAkJICogVXBkYXRlIG9y aWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0CiAJCSAq IHBvc2l0aW9uIGluIGNhc2Ugb2YgY3Jhc2guCiAJCSAqLwotCQlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luX2xzbiA9IHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbjsKLQkJcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSByb2xsYmFja19kYXRhLnJvbGxiYWNrX3RpbWU7 CisJCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNuID0gcm9sbGJhY2tfZGF0YS5yb2xs YmFja19lbmRfbHNuOworCQlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcCA9 IHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfdGltZTsKIAogCQkvKiBUaGVyZSBpcyBubyB0cmFuc2Fj dGlvbiB3aGVuIEFCT1JUL1JPTExCQUNLIFBSRVBBUkVEIGlzIGNhbGxlZCAqLwogCQliZWdpbl9y ZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0yNTI2LDggKzI1MjYsOCBAQCBhcHBseV9oYW5kbGVfY29t bWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIAkJICogVXBk YXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0 CiAJCSAqIHBvc2l0aW9uIGluIGNhc2Ugb2YgY3Jhc2guCiAJCSAqLwotCQlyZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luX2xzbiA9IGNvbW1pdF9kYXRhLT5lbmRfbHNuOwotCQlyZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0aW1lOworCQlyZXBs b3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX2xzbiA9IGNvbW1pdF9kYXRhLT5lbmRfbHNuOworCQly ZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21t aXR0aW1lOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCkBAIC0yOTQwLDcgKzI5 NDAsNyBAQCBhcHBseV9oYW5kbGVfdXBkYXRlX2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAq ZWRhdGEsCiAJCSAqLwogCQlpZiAoR2V0VHVwbGVUcmFuc2FjdGlvbkluZm8obG9jYWxzbG90LCAm Y29uZmxpY3R0dXBsZS54bWluLAogCQkJCQkJCQkJJmNvbmZsaWN0dHVwbGUub3JpZ2luLCAmY29u ZmxpY3R0dXBsZS50cykgJiYKLQkJCWNvbmZsaWN0dHVwbGUub3JpZ2luICE9IHJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW4pCisJCQljb25mbGljdHR1cGxlLm9yaWdpbiAhPSByZXBsb3JpZ2luX3hh Y3Rfc3RhdGUub3JpZ2luKQogCQl7CiAJCQlUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdDsKIApAQCAt Mjk4Miw3ICsyOTgyLDcgQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZV9pbnRlcm5hbChBcHBseUV4ZWN1 dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJICAgJmNvbmZsaWN0dHVwbGUueG1pbiwKIAkJCQkJ CQkJCSAgICZjb25mbGljdHR1cGxlLm9yaWdpbiwKIAkJCQkJCQkJCSAgICZjb25mbGljdHR1cGxl LnRzKSAmJgotCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbikKKwkJCWNvbmZsaWN0dHVwbGUub3JpZ2luICE9IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5v cmlnaW4pCiAJCQl0eXBlID0gQ1RfVVBEQVRFX0RFTEVURUQ7CiAJCWVsc2UKIAkJCXR5cGUgPSBD VF9VUERBVEVfTUlTU0lORzsKQEAgLTMxMzUsNyArMzEzNSw3IEBAIGFwcGx5X2hhbmRsZV9kZWxl dGVfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJICovCiAJCWlmIChHZXRU dXBsZVRyYW5zYWN0aW9uSW5mbyhsb2NhbHNsb3QsICZjb25mbGljdHR1cGxlLnhtaW4sCiAJCQkJ CQkJCQkmY29uZmxpY3R0dXBsZS5vcmlnaW4sICZjb25mbGljdHR1cGxlLnRzKSAmJgotCQkJY29u ZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbikKKwkJCWNvbmZs aWN0dHVwbGUub3JpZ2luICE9IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4pCiAJCXsKIAkJ CWNvbmZsaWN0dHVwbGUuc2xvdCA9IGxvY2Fsc2xvdDsKIAkJCVJlcG9ydEFwcGx5Q29uZmxpY3Qo ZXN0YXRlLCByZWxpbmZvLCBMT0csIENUX0RFTEVURV9PUklHSU5fRElGRkVSUywKQEAgLTM0Nzcs NyArMzQ3Nyw3IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0 YSAqZWRhdGEsCiAJCQkJCQkJCQkJCQkgICAmY29uZmxpY3R0dXBsZS54bWluLAogCQkJCQkJCQkJ CQkJICAgJmNvbmZsaWN0dHVwbGUub3JpZ2luLAogCQkJCQkJCQkJCQkJICAgJmNvbmZsaWN0dHVw bGUudHMpICYmCi0JCQkJCQljb25mbGljdHR1cGxlLm9yaWdpbiAhPSByZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luKQorCQkJCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl94YWN0 X3N0YXRlLm9yaWdpbikKIAkJCQkJCXR5cGUgPSBDVF9VUERBVEVfREVMRVRFRDsKIAkJCQkJZWxz ZQogCQkJCQkJdHlwZSA9IENUX1VQREFURV9NSVNTSU5HOwpAQCAtMzUwMyw3ICszNTAzLDcgQEAg YXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJ CQlpZiAoR2V0VHVwbGVUcmFuc2FjdGlvbkluZm8obG9jYWxzbG90LCAmY29uZmxpY3R0dXBsZS54 bWluLAogCQkJCQkJCQkJCQkmY29uZmxpY3R0dXBsZS5vcmlnaW4sCiAJCQkJCQkJCQkJCSZjb25m bGljdHR1cGxlLnRzKSAmJgotCQkJCQljb25mbGljdHR1cGxlLm9yaWdpbiAhPSByZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luKQorCQkJCQljb25mbGljdHR1cGxlLm9yaWdpbiAhPSByZXBsb3JpZ2lu X3hhY3Rfc3RhdGUub3JpZ2luKQogCQkJCXsKIAkJCQkJVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3Q7 CiAKQEAgLTU1OTQsNyArNTU5NCw3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0 YXJ0cG9zKQogCQkgKiB0cmFuc2FjdGlvbiBsb3NzIGFzIHRoYXQgdHJhbnNhY3Rpb24gd29uJ3Qg YmUgc2VudCBhZ2FpbiBieSB0aGUKIAkJICogc2VydmVyLgogCQkgKi8KLQkJcmVwbG9yaWdpbl9z ZXNzaW9uX2NsZWFyKHRydWUpOworCQlyZXBsb3JpZ2luX3hhY3RfY2xlYXIodHJ1ZSk7CiAKIAkJ aWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCiAJCQlEaXNhYmxlU3Vic2NyaXB0aW9u QW5kRXhpdCgpOwpAQCAtNTY1Miw3ICs1NjUyLDcgQEAgcnVuX2FwcGx5X3dvcmtlcih2b2lkKQog CWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVh dGUob3JpZ2lubmFtZSk7CiAJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsK LQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisJcmVwbG9yaWdpbl94YWN0 X3N0YXRlLm9yaWdpbiA9IG9yaWdpbmlkOwogCW9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5f c2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCkBAIC01ODc0LDcgKzU4NzQsNyBAQCBJbml0aWFsaXplTG9nUmVwV29ya2VyKHZvaWQpCiBz dGF0aWMgdm9pZAogb25fZXhpdF9jbGVhcl9zdGF0ZShpbnQgY29kZSwgRGF0dW0gYXJnKQogewot CXJlcGxvcmlnaW5fc2Vzc2lvbl9jbGVhcih0cnVlKTsKKwlyZXBsb3JpZ2luX3hhY3RfY2xlYXIo dHJ1ZSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmln aW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4IDMwOWI4MDBiZDVm Li42ZDU4ZmIyMDQ2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2lu LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKQEAgLTQwLDkgKzQwLDE0 IEBAIHR5cGVkZWYgc3RydWN0IHhsX3JlcGxvcmlnaW5fZHJvcAogICovCiAjZGVmaW5lIE1BWF9S T05BTUVfTEVOCTUxMgogCi1leHRlcm4gUEdETExJTVBPUlQgUmVwT3JpZ2luSWQgcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbjsKLWV4dGVybiBQR0RMTElNUE9SVCBYTG9nUmVjUHRyIHJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW5fbHNuOwotZXh0ZXJuIFBHRExMSU1QT1JUIFRpbWVzdGFtcFR6IHJl cGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wOwordHlwZWRlZiBzdHJ1Y3QgUmVwT3Jp Z2luWGFjdFN0YXRlCit7CisJUmVwT3JpZ2luSWQgb3JpZ2luOworCVhMb2dSZWNQdHIJb3JpZ2lu X2xzbjsKKwlUaW1lc3RhbXBUeiBvcmlnaW5fdGltZXN0YW1wOworfQkJCVJlcE9yaWdpblhhY3RT dGF0ZTsKKworZXh0ZXJuIFBHRExMSU1QT1JUIFJlcE9yaWdpblhhY3RTdGF0ZSByZXBsb3JpZ2lu X3hhY3Rfc3RhdGU7CiAKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2Fj dGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zOwpAQCAtNjUsOSArNzAsMTAgQEAgZXh0ZXJuIHZvaWQg cmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoWExvZ1JlY1B0ciByZW1vdGVfY29tbWl0LAogCQkJ CQkJCQkJICAgWExvZ1JlY1B0ciBsb2NhbF9jb21taXQpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhY3F1aXJlZF9ieSk7CiBleHRl cm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7Ci1leHRlcm4gdm9pZCByZXBs b3JpZ2luX3Nlc3Npb25fY2xlYXIoYm9vbCBjbGVhcl9vcmlnaW4pOwogZXh0ZXJuIFhMb2dSZWNQ dHIgcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIAorZXh0ZXJu IHZvaWQgcmVwbG9yaWdpbl94YWN0X2NsZWFyKGJvb2wgY2xlYXJfb3JpZ2luKTsKKwogLyogQ2hl Y2twb2ludC9TdGFydHVwIGludGVncmF0aW9uICovCiBleHRlcm4gdm9pZCBDaGVja1BvaW50UmVw bGljYXRpb25PcmlnaW4odm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwUmVwbGljYXRpb25Pcmln aW4odm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDA5ZTdmMWQ0MjBlLi45NGEx ZGJlZDQ2NiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI1NjksNiArMjU2OSw3IEBA IFJlb3JkZXJCdWZmZXJUdXBsZUNpZEtleQogUmVvcmRlckJ1ZmZlclVwZGF0ZVByb2dyZXNzVHhu Q0IKIFJlb3JkZXJUdXBsZQogUmVwT3JpZ2luSWQKK1JlcE9yaWdpblhhY3RTdGF0ZQogUmVwYXJh bWV0ZXJpemVGb3JlaWduUGF0aEJ5Q2hpbGRfZnVuY3Rpb24KIFJlcGxhY2VWYXJzRnJvbVRhcmdl dExpc3RfY29udGV4dAogUmVwbGFjZVZhcnNOb01hdGNoT3B0aW9uCi0tIAoyLjM5LjUgKEFwcGxl IEdpdC0xNTQpCgo= --000000000000431b610647c72528--