Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oT8jd-0002yL-4f for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Aug 2022 21:25:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oT8jb-00064k-U7 for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Aug 2022 21:25:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oT8jb-00064Y-4J for pgsql-hackers@lists.postgresql.org; Tue, 30 Aug 2022 21:25:23 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oT8jL-00042x-Nu for pgsql-hackers@lists.postgresql.org; Tue, 30 Aug 2022 21:25:22 +0000 Received: from [192.168.0.106] (unknown [176.214.189.156]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 1CB8721C3FAE; Wed, 31 Aug 2022 00:25:03 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1661894706; bh=Gk4/BvZxpiMqQ4qTqsZc9ALcISfajsyBLdklvdmbeZ4=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=OCepTddZFFbzZ8WSz1NWlCiCtYn61Zo1kXZU6HLNmic+r9kN2jNTYMQxs4LZV8V/D E63Zv5Ot6zgJQChbbj4qt8JiclrU8H6T3Ln1hAz0v/6MH/eGpbLWa+DaNmWGV5TZvS 8K6/jNKz+h4k61ZRIcnORBAKdfV44FgtlSSnwTfM= Content-Type: multipart/mixed; boundary="------------g00NurbAwSD8acROP1fIlyRc" Message-ID: Date: Wed, 31 Aug 2022 00:25:01 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: SQL/JSON features for v15 Content-Language: en-US To: Amit Langote , Alvaro Herrera Cc: Andrew Dunstan , "Jonathan S. Katz" , Tom Lane , Robert Haas , Andres Freund , PostgreSQL Hackers , Michael Paquier , John Naylor References: <20220830092008.6dbublx6la226zis@alvherre.pgsql> From: Nikita Glukhov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------g00NurbAwSD8acROP1fIlyRc Content-Type: multipart/alternative; boundary="------------g2p2sR5Tmo28zoO3KZeKc00I" --------------g2p2sR5Tmo28zoO3KZeKc00I Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 30.08.2022 11:09, Amit Langote wrote: >> - Added JSON_QUERY coercion to UTF8 bytea using pg_convert_to(). >> >> - Added immutability checks that were missed with elimination >> of coercion expressions. >> Coercions text::datetime, datetime1::datetime2 and even >> datetime::text for some datetime types are mutable. >> datetime::text can be made immutable by passing ISO date >> style into output functions (like in jsonpath). >> >> - Disabled non-Const expressions in DEFAULT ON EMPTY in non >> ERROR ON ERROR case. Non-constant expressions are tried to >> evaluate into Const directly inside transformExpr(). >> >> I am not sure if it's OK to eval_const_expressions() on a Query >> sub-expression during parse-analysis. IIUC, it is only correct to >> apply it to after the rewriting phase. >> >> I also was not sure. Maybe it can be moved to rewriting phase or >> even to execution phase. > I suppose we wouldn't need to bother with doing this when we > eventually move to supporting the DEFAULT expressions. >> Maybe it would be better to simply remove DEFAULT ON EMPTY. >> >> So +1 to this for now. >> >> See last patch #9. >> >> >> It is possible to easily split this patch into several subpatches, >> I will do it if needed. >> >> That would be nice indeed. >> >> I have extracted patches #1-6 with numerous safe input and type conversion >> functions. >> >> >> I'm wondering if you're going to change the PASSING values >> initialization to add the steps into the parent JsonExpr's ExprState, >> like the previous patch was doing? >> >> I forget to incorporate your changes for subsidary ExprStates elimination. >> See patch #8. > Thanks. Here are some comments. > > First of all, regarding 0009, my understanding was that we should > disallow DEFAULT expression ON ERROR too for now, so something like > the following does not occur: > > SELECT JSON_VALUE(jsonb '"err"', '$' RETURNING numeric DEFAULT ('{"' > || -1+a || '"}')::text ON ERROR) from foo; > ERROR: invalid input syntax for type numeric: "{"0"}" Personally, I don't like complete removal of DEFAULT behaviors, but I've done it in patch #10 (JsonBehavior node removed, grammar fixed). > Patches 0001-0006: On 30.08.2022 13:29, Amit Langote wrote: > On Tue, Aug 30, 2022 at 6:19 PM Alvaro Herrera wrote: >> On 2022-Aug-30, Amit Langote wrote: >> >>> Patches 0001-0006: >>> >>> Yeah, these add the overhead of an extra function call (typin() -> >>> typin_opt_error()) in possibly very common paths. Other than >>> refactoring *all* places that call typin() to use the new API, the >>> only other option seems to be to leave the typin() functions alone and >>> duplicate their code in typin_opt_error() versions for all the types >>> that this patch cares about. Though maybe, that's not necessarily a >>> better compromise than accepting the extra function call overhead. >> I think another possibility is to create a static inline function in the >> corresponding .c module (say boolin_impl() in bool.c), which is called >> by both the opt_error variant as well as the regular one. This would >> avoid the duplicate code as well as the added function-call overhead. > +1 I always thought about such internal inline functions, I 've added them in v10. > Patch 0007: > > + > + /* Override default coercion in OMIT QUOTES case */ > + if (ExecJsonQueryNeedsIOCoercion(jexpr, res, *resnull)) > + { > + char *str = JsonbUnquote(DatumGetJsonbP(res)); > ... > + else if (ret_typid == VARCHAROID || ret_typid == BPCHAROID || > + ret_typid == BYTEAOID) > + { > + Jsonb *jb = DatumGetJsonbP(res); > + char *str = JsonbToCString(NULL, &jb->root, VARSIZE(jb)); > + > + return ExecJsonStringCoercion(str, strlen(str), > ret_typid, ret_typmod); > + } > > I think it might be better to create ExecJsonQueryCoercion() similar > to ExecJsonValueCoercion() and put the above block in that function > rather than inlining it in ExecEvalJsonExprInternal(). Extracted ExecJsonQueryCoercion(). > + ExecJsonStringCoercion(const char *str, int32 len, Oid typid, int32 typmod) > > I'd suggest renaming this one to ExecJsonConvertCStringToText(). > > + ExecJsonCoercionToText(PGFunction outfunc, Datum value, Oid typid, > int32 typmod) > + ExecJsonDatetimeCoercion(Datum val, Oid val_typid, Oid typid, int32 typmod, > + ExecJsonBoolCoercion(bool val, Oid typid, int32 typmod, Datum *res) > > And also rename these to sound like verbs: > > ExecJsonCoerceToText > ExecJsonCoerceDatetime[ToType] > ExecJsonCoerceBool[ToType] Fixed. > + /* > + * XXX coercion to text is done using output functions, and they > + * are mutable for non-time[tz] types due to using of DateStyle. > + * We can pass USE_ISO_DATES, which is used inside jsonpath, to > + * make these coercions and JSON_VALUE(RETURNING text) immutable. > + * > + * XXX Also timestamp[tz] output functions can throw "out of range" > + * error, but this error seem to be not possible. > + */ > > Are we planning to fix these before committing? I don't know, but the first issue is critical for building functional indexes on JSON_VALUE(). > +static Datum > +JsonbPGetTextDatum(Jsonb *jb) > > Maybe static inline? Fixed. > - coercion = &coercions->composite; > - res = JsonbPGetDatum(JsonbValueToJsonb(item)); > + Assert(0); /* non-scalars must be rejected by JsonPathValue() */ > > I didn't notice any changes to JsonPathValue(). Is the new comment > referring to an existing behavior of JsonPathValue() or something that > must be done by the patch? JsonPathValue() has a check for non-scalars items, this is simply a new comment. > @@ -411,6 +411,26 @@ contain_mutable_functions_walker(Node *node, void *context) > { > JsonExpr *jexpr = castNode(JsonExpr, node); > Const *cnst; > + bool returns_datetime; > + > + /* > + * Input fuctions for datetime types are stable. They can be > + * called in JSON_VALUE(), when the resulting SQL/JSON is a > + * string. > + */ > ... > > > Sorry if you've mentioned it before, but are these hunks changing > contain_mutable_functions_walker() fixing a bug? That is, did the > original SQL/JSON patch miss doing this? In the original patch there were checks for mutability of expressions contained in JsonCoercion nodes. After their removal, we need to use hardcoded checks. > + Oid collation; /* OID of collation, or InvalidOid if none */ > > I think the comment should rather say: /* Collation of , ... */ Fixed. > + > +bool > +expr_can_throw_errors(Node *expr) > +{ > + if (!expr) > + return false; > + > + if (IsA(expr, Const)) > + return false; > + > + /* TODO consider more cases */ > + return true; > +} > > +extern bool expr_can_throw_errors(Node *expr); > + > > Not used anymore. expr_can_throw_errors() removed. > Patch 0008: > > Thanks for re-introducing this. > > +bool > +ExecEvalJsonExprSkip(ExprState *state, ExprEvalStep *op) > +{ > + JsonExprState *jsestate = op->d.jsonexpr_skip.jsestate; > + > + /* > + * Skip if either of the input expressions has turned out to be > + * NULL, though do execute domain checks for NULLs, which are > + * handled by the coercion step. > + */ > > I think the part starting with ", though" is no longer necessary. Fixed. > + * Return value: > + * 1 - Ok, jump to the end of JsonExpr > + * 0 - empty result, need to execute DEFAULT ON EMPTY expression > + * -1 - error occured, need to execute DEFAULT ON ERROR expression > > ...need to execute ON EMPTY/ERROR behavior > > + return 0; /* jump to ON EMPTY expression */ > ... > + return -1; /* jump to ON ERROR expression */ > > Likewise: > > /* jump to handle ON EMPTY/ERROR behavior */ > > + * Jump to coercion step if true was returned, > + * which signifies skipping of JSON path evaluation, > ... > > Jump to "end" if true was returned. Fixed, but I leaved "expression" instead of "behavior" because these jumps are needed only for execution of DEFAULT expressions. -- Nikita Glukhov Postgres Professional:http://www.postgrespro.com The Russian Postgres Company --------------g2p2sR5Tmo28zoO3KZeKc00I Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit


On 30.08.2022 11:09, Amit Langote wrote:
 - Added JSON_QUERY coercion to UTF8 bytea using pg_convert_to().

 - Added immutability checks that were missed with elimination
   of coercion expressions.
   Coercions text::datetime, datetime1::datetime2 and even
   datetime::text for some datetime types are mutable.
   datetime::text can be made immutable by passing ISO date
   style into output functions (like in jsonpath).

 - Disabled non-Const expressions in DEFAULT ON EMPTY in non
   ERROR ON ERROR case.  Non-constant expressions are tried to
   evaluate into Const directly inside transformExpr().

I am not sure if it's OK to eval_const_expressions() on a Query
sub-expression during parse-analysis.  IIUC, it is only correct to
apply it to after the rewriting phase.

I also was not sure. Maybe it can be moved to rewriting phase or
even to execution phase.
I suppose we wouldn't need to bother with doing this when we
eventually move to supporting the DEFAULT expressions.

      
   Maybe it would be better to simply remove DEFAULT ON EMPTY.

So +1 to this for now.

See last patch #9.


It is possible to easily split this patch into several subpatches,
I will do it if needed.

That would be nice indeed.

I have extracted patches #1-6 with numerous safe input and type conversion
functions.


I'm wondering if you're going to change the PASSING values
initialization to add the steps into the parent JsonExpr's ExprState,
like the previous patch was doing?

I forget to incorporate your changes for subsidary ExprStates elimination.
See patch #8.
Thanks.  Here are some comments.

First of all, regarding 0009, my understanding was that we should
disallow DEFAULT expression ON ERROR too for now, so something like
the following does not occur:

SELECT JSON_VALUE(jsonb '"err"', '$' RETURNING numeric DEFAULT ('{"'
|| -1+a || '"}')::text ON ERROR) from foo;
ERROR:  invalid input syntax for type numeric: "{"0"}"
Personally, I don't like complete removal of DEFAULT behaviors, but 
I've done it in patch #10 (JsonBehavior node removed, grammar fixed).

Patches 0001-0006:

On 30.08.2022 13:29, Amit Langote wrote:
On Tue, Aug 30, 2022 at 6:19 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
On 2022-Aug-30, Amit Langote wrote:

Patches 0001-0006:

Yeah, these add the overhead of an extra function call (typin() ->
typin_opt_error()) in possibly very common paths.  Other than
refactoring *all* places that call typin() to use the new API, the
only other option seems to be to leave the typin() functions alone and
duplicate their code in typin_opt_error() versions for all the types
that this patch cares about.  Though maybe, that's not necessarily a
better compromise than accepting the extra function call overhead.
I think another possibility is to create a static inline function in the
corresponding .c module (say boolin_impl() in bool.c), which is called
by both the opt_error variant as well as the regular one.  This would
avoid the duplicate code as well as the added function-call overhead.
+1
I always thought about such internal inline functions, I 've added them in v10.

Patch 0007:

+
+           /* Override default coercion in OMIT QUOTES case */
+           if (ExecJsonQueryNeedsIOCoercion(jexpr, res, *resnull))
+           {
+               char       *str = JsonbUnquote(DatumGetJsonbP(res));
...
+           else if (ret_typid == VARCHAROID || ret_typid == BPCHAROID ||
+                    ret_typid == BYTEAOID)
+           {
+               Jsonb      *jb = DatumGetJsonbP(res);
+               char       *str = JsonbToCString(NULL, &jb->root, VARSIZE(jb));
+
+               return ExecJsonStringCoercion(str, strlen(str),
ret_typid, ret_typmod);
+           }

I think it might be better to create ExecJsonQueryCoercion() similar
to ExecJsonValueCoercion() and put the above block in that function
rather than inlining it in ExecEvalJsonExprInternal().
Extracted ExecJsonQueryCoercion().

+ ExecJsonStringCoercion(const char *str, int32 len, Oid typid, int32 typmod)

I'd suggest renaming this one to ExecJsonConvertCStringToText().

+ ExecJsonCoercionToText(PGFunction outfunc, Datum value, Oid typid,
int32 typmod)
+ ExecJsonDatetimeCoercion(Datum val, Oid val_typid, Oid typid, int32 typmod,
+ ExecJsonBoolCoercion(bool val, Oid typid, int32 typmod, Datum *res)

And also rename these to sound like verbs:

ExecJsonCoerceToText
ExecJsonCoerceDatetime[ToType]
ExecJsonCoerceBool[ToType]
Fixed.

+   /*
+    * XXX coercion to text is done using output functions, and they
+    * are mutable for non-time[tz] types due to using of DateStyle.
+    * We can pass USE_ISO_DATES, which is used inside jsonpath, to
+    * make these coercions and JSON_VALUE(RETURNING text) immutable.
+    *
+    * XXX Also timestamp[tz] output functions can throw "out of range"
+    * error, but this error seem to be not possible.
+    */

Are we planning to fix these before committing?
I don't know,  but the first issue is critical for building functional indexes 
on JSON_VALUE().

+static Datum
+JsonbPGetTextDatum(Jsonb *jb)

Maybe static inline?
Fixed.

-           coercion = &coercions->composite;
-           res = JsonbPGetDatum(JsonbValueToJsonb(item));
+           Assert(0);  /* non-scalars must be rejected by JsonPathValue() */

I didn't notice any changes to JsonPathValue().  Is the new comment
referring to an existing behavior of JsonPathValue() or something that
must be done by the patch?
JsonPathValue() has a check for non-scalars items, this is simply a new comment.


@@ -411,6 +411,26 @@ contain_mutable_functions_walker(Node *node, void *context)
    {
        JsonExpr   *jexpr = castNode(JsonExpr, node);
        Const      *cnst;
+       bool        returns_datetime;
+
+       /*
+        * Input fuctions for datetime types are stable.  They can be
+        * called in JSON_VALUE(), when the resulting SQL/JSON is a
+        * string.
+        */
...


Sorry if you've mentioned it before, but are these hunks changing
contain_mutable_functions_walker() fixing a bug?  That is, did the
original SQL/JSON patch miss doing this?
In the original patch there were checks for mutability of expressions contained 
in JsonCoercion nodes.  After their removal, we need to use hardcoded checks.

+   Oid         collation;      /* OID of collation, or InvalidOid if none */

I think the comment should rather say: /* Collation of <what>, ... */
Fixed.

+
+bool
+expr_can_throw_errors(Node *expr)
+{
+   if (!expr)
+       return false;
+
+   if (IsA(expr, Const))
+       return false;
+
+   /* TODO consider more cases */
+   return true;
+}

+extern bool expr_can_throw_errors(Node *expr);
+

Not used anymore.
expr_can_throw_errors() removed.

Patch 0008:

Thanks for re-introducing this.

+bool
+ExecEvalJsonExprSkip(ExprState *state, ExprEvalStep *op)
+{
+   JsonExprState *jsestate = op->d.jsonexpr_skip.jsestate;
+
+   /*
+    * Skip if either of the input expressions has turned out to be
+    * NULL, though do execute domain checks for NULLs, which are
+    * handled by the coercion step.
+    */

I think the part starting with ", though" is no longer necessary.
Fixed.

+ * Return value:
+ *   1 - Ok, jump to the end of JsonExpr
+ *   0 - empty result, need to execute DEFAULT ON EMPTY expression
+ *  -1 - error occured, need to execute DEFAULT ON ERROR expression

...need to execute ON EMPTY/ERROR behavior

+           return 0;   /* jump to ON EMPTY expression */
...
+           return -1;  /* jump to ON ERROR expression */

Likewise:

/* jump to handle ON EMPTY/ERROR behavior */

+                    * Jump to coercion step if true was returned,
+                    * which signifies skipping of JSON path evaluation,
...

Jump to "end" if true was returned.
Fixed, but I leaved "expression" instead of "behavior" because
these jumps are needed only for execution of DEFAULT expressions.



-- 
Nikita Glukhov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

--------------g2p2sR5Tmo28zoO3KZeKc00I-- --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0001-Add-safe-input-function-for-bool.patch" Content-Disposition: attachment; filename="v10-0001-Add-safe-input-function-for-bool.patch" Content-Transfer-Encoding: base64 RnJvbSAzNmI0MTYwODI1ZjU2ODY4MjlmN2M2YTY0MmI0N2I0NDllZTVhMTdkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjkgQXVnIDIwMjIgMjM6NTM6MDYgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwMS8xMF0gQWRkIHNhZmUgaW5wdXQgZnVuY3Rpb24gZm9yIGJvb2wK Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Jvb2wuYyB8IDM5ICsrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCB8 ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Jvb2wuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ib29sLmMKaW5kZXggY2Q3MzM1Mjg3ZjkuLmE2MDA0NDA2NmMz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYm9vbC5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ib29sLmMKQEAgLTEyNiwxMiArMTI2LDEwIEBAIHBhcnNlX2Jv b2xfd2l0aF9sZW4oY29uc3QgY2hhciAqdmFsdWUsIHNpemVfdCBsZW4sIGJvb2wgKnJlc3Vs dCkKICAqCiAgKiBJbiB0aGUgc3dpdGNoIHN0YXRlbWVudCwgY2hlY2sgdGhlIG1vc3QtdXNl ZCBwb3NzaWJpbGl0aWVzIGZpcnN0LgogICovCi1EYXR1bQotYm9vbGluKFBHX0ZVTkNUSU9O X0FSR1MpCitzdGF0aWMgaW5saW5lIGJvb2wKK2Jvb2xpbl9pbnRlcm5hbChjb25zdCBjaGFy ICppbl9zdHIsIHNpemVfdAlsZW4sIGJvb2wgKmVycm9yKQogewotCWNvbnN0IGNoYXIgKmlu X3N0ciA9IFBHX0dFVEFSR19DU1RSSU5HKDApOwogCWNvbnN0IGNoYXIgKnN0cjsKLQlzaXpl X3QJCWxlbjsKIAlib29sCQlyZXN1bHQ7CiAKIAkvKgpAQCAtMTM5LDIyICsxMzcsMzkgQEAg Ym9vbGluKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJc3RyID0gaW5fc3RyOwogCXdoaWxl IChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqc3RyKSkKKwl7CiAJCXN0cisrOworCQlsZW4t LTsKKwl9CiAKLQlsZW4gPSBzdHJsZW4oc3RyKTsKIAl3aGlsZSAobGVuID4gMCAmJiBpc3Nw YWNlKCh1bnNpZ25lZCBjaGFyKSBzdHJbbGVuIC0gMV0pKQogCQlsZW4tLTsKIAogCWlmIChw YXJzZV9ib29sX3dpdGhfbGVuKHN0ciwgbGVuLCAmcmVzdWx0KSkKLQkJUEdfUkVUVVJOX0JP T0wocmVzdWx0KTsKKwkJcmV0dXJuIHJlc3VsdDsKKworCWlmICghZXJyb3IpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5U QVRJT04pLAorCQkJCSBlcnJtc2coImludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlICVz OiBcIiVzXCIiLAorCQkJCQkJImJvb2xlYW4iLCBpbl9zdHIpKSk7CisKKwkqZXJyb3IgPSB0 cnVlOworCXJldHVybiBmYWxzZTsKK30KKworYm9vbAorYm9vbGluX29wdF9lcnJvcihjb25z dCBjaGFyICppbl9zdHIsIHNpemVfdAlsZW4sIGJvb2wgKmVycm9yKQoreworCXJldHVybiBi b29saW5faW50ZXJuYWwoaW5fc3RyLCBsZW4sIGVycm9yKTsKK30KIAotCWVyZXBvcnQoRVJS T1IsCi0JCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiks Ci0JCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wi IiwKLQkJCQkJImJvb2xlYW4iLCBpbl9zdHIpKSk7CitEYXR1bQorYm9vbGluKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7CiAK LQkvKiBub3QgcmVhY2hlZCAqLwotCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwlQR19SRVRV Uk5fQk9PTChib29saW5faW50ZXJuYWwoc3RyLCBzdHJsZW4oc3RyKSwgTlVMTCkpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKaW5kZXggMjIxYzNlNmMzZGUuLjJjMDNjZTRmZTEy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKQEAgLTI0LDYgKzI0LDcgQEAKIC8qIGJvb2wuYyAq LwogZXh0ZXJuIGJvb2wgcGFyc2VfYm9vbChjb25zdCBjaGFyICp2YWx1ZSwgYm9vbCAqcmVz dWx0KTsKIGV4dGVybiBib29sIHBhcnNlX2Jvb2xfd2l0aF9sZW4oY29uc3QgY2hhciAqdmFs dWUsIHNpemVfdCBsZW4sIGJvb2wgKnJlc3VsdCk7CitleHRlcm4gYm9vbCBib29saW5fb3B0 X2Vycm9yKGNvbnN0IGNoYXIgKnZhbHVlLCBzaXplX3QJbGVuLCBib29sICplcnJvcik7CiAK IC8qIGRvbWFpbnMuYyAqLwogZXh0ZXJuIHZvaWQgZG9tYWluX2NoZWNrKERhdHVtIHZhbHVl LCBib29sIGlzbnVsbCwgT2lkIGRvbWFpblR5cGUsCi0tIAoyLjE3LjEKCg== --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0002-Add-safe-input-function-for-int8.patch" Content-Disposition: attachment; filename="v10-0002-Add-safe-input-function-for-int8.patch" Content-Transfer-Encoding: base64 RnJvbSAyYmZhZDBjOTFjZjBmMzA5MDU4Njc4NjFlZTcyMzhmMmQwNTM2MWIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMjIgMDA6MTM6NTQgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwMi8xMF0gQWRkIHNhZmUgaW5wdXQgZnVuY3Rpb24gZm9yIGludDgK Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMgfCAyOCArKysrKysrKysr KysrKysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oICAgICB8 ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtdXRpbHMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9udW11dGlscy5jCmluZGV4IGNjM2Y5NWQzOTkwLi4xYWQ0 NGU5YmYzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMKQEAgLTI0Nyw4ICsyNDcs OCBAQCBpbnZhbGlkX3N5bnRheDoKICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb3N0IG5l Z2F0aXZlIG51bWJlciwgd2hpY2ggY2FuJ3QgYmUgcmVwcmVzZW50ZWQgYXMgYQogICogcG9z aXRpdmUgbnVtYmVyLgogICovCi1pbnQ2NAotcGdfc3RydG9pbnQ2NChjb25zdCBjaGFyICpz KQorc3RhdGljIGlubGluZSBpbnQ2NAorcGdfc3RydG9pbnQ2NF9pbnRlcm5hbChjb25zdCBj aGFyICpzLCBib29sICplcnJvcikKIHsKIAljb25zdCBjaGFyICpwdHIgPSBzOwogCWludDY0 CQl0bXAgPSAwOwpAQCAtMzA3LDEyICszMDcsMjQgQEAgcGdfc3RydG9pbnQ2NChjb25zdCBj aGFyICpzKQogCXJldHVybiB0bXA7CiAKIG91dF9vZl9yYW5nZToKKwlpZiAoZXJyb3IpCisJ eworCQkqZXJyb3IgPSB0cnVlOworCQlyZXR1cm4gMDsKKwl9CisKIAllcmVwb3J0KEVSUk9S LAogCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJ CQkgZXJybXNnKCJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlICVzIiwK IAkJCQkJcywgImJpZ2ludCIpKSk7CiAKIGludmFsaWRfc3ludGF4OgorCWlmIChlcnJvcikK Kwl7CisJCSplcnJvciA9IHRydWU7CisJCXJldHVybiAwOworCX0KKwogCWVyZXBvcnQoRVJS T1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiks CiAJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wi IiwKQEAgLTMyMSw2ICszMzMsMTggQEAgaW52YWxpZF9zeW50YXg6CiAJcmV0dXJuIDA7CQkJ CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiB9CiAKK2ludDY0CitwZ19zdHJ0b2ludDY0 X29wdF9lcnJvcihjb25zdCBjaGFyICpzLCBib29sICplcnJvcikKK3sKKwlyZXR1cm4gcGdf c3RydG9pbnQ2NF9pbnRlcm5hbChzLCBlcnJvcik7Cit9CisKK2ludDY0CitwZ19zdHJ0b2lu dDY0KGNvbnN0IGNoYXIgKnMpCit7CisJcmV0dXJuIHBnX3N0cnRvaW50NjRfaW50ZXJuYWwo cywgTlVMTCk7Cit9CisKIC8qCiAgKiBwZ19pdG9hOiBjb252ZXJ0cyBhIHNpZ25lZCAxNi1i aXQgaW50ZWdlciB0byBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uCiAgKiBhbmQgcmV0dXJu cyBzdHJsZW4oYSkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAppbmRleCAyYzAzY2U0ZmUxMi4uNWUx YWEzN2MxZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaApAQCAtNDcsNiArNDcsNyBAQCBleHRl cm4gaW50CW5hbWVzdHJjbXAoTmFtZSBuYW1lLCBjb25zdCBjaGFyICpzdHIpOwogZXh0ZXJu IGludDE2IHBnX3N0cnRvaW50MTYoY29uc3QgY2hhciAqcyk7CiBleHRlcm4gaW50MzIgcGdf c3RydG9pbnQzMihjb25zdCBjaGFyICpzKTsKIGV4dGVybiBpbnQ2NCBwZ19zdHJ0b2ludDY0 KGNvbnN0IGNoYXIgKnMpOworZXh0ZXJuIGludDY0IHBnX3N0cnRvaW50NjRfb3B0X2Vycm9y KGNvbnN0IGNoYXIgKnMsIGJvb2wgKmVycm9yKTsKIGV4dGVybiBpbnQJcGdfaXRvYShpbnQx NiBpLCBjaGFyICphKTsKIGV4dGVybiBpbnQJcGdfdWx0b2Ffbih1aW50MzIgbCwgY2hhciAq YSk7CiBleHRlcm4gaW50CXBnX3VsbHRvYV9uKHVpbnQ2NCBsLCBjaGFyICphKTsKLS0gCjIu MTcuMQoK --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0003-Add-safe-input-function-for-float4.patch" Content-Disposition: attachment; filename="v10-0003-Add-safe-input-function-for-float4.patch" Content-Transfer-Encoding: base64 RnJvbSA1MDBhODgxODI4MmVmZjc5MDU0YzkwMjgyZTZlZTNhNDFjMDA1MDZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMjIgMDA6MTM6MzYgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwMy8xMF0gQWRkIHNhZmUgaW5wdXQgZnVuY3Rpb24gZm9yIGZsb2F0 NAoKLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZmxvYXQuYyB8IDc2ICsrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oICAg ICB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvZmxvYXQuYwppbmRleCBmYzhmMzlhN2E5OC4uYmEyMjAx NTJlYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCkBAIC03Myw2ICs3MywxNiBAQCBzdGF0 aWMgZG91YmxlIHNpbmRfcTEoZG91YmxlIHgpOwogc3RhdGljIGRvdWJsZSBjb3NkX3ExKGRv dWJsZSB4KTsKIHN0YXRpYyB2b2lkIGluaXRfZGVncmVlX2NvbnN0YW50cyh2b2lkKTsKIAor LyogQ29udmVuaWVuY2UgbWFjcm86IHNldCAqaGF2ZV9lcnJvciBmbGFnIChpZiBwcm92aWRl ZCkgb3IgdGhyb3cgZXJyb3IgKi8KKyNkZWZpbmUgUkVUVVJOX0VSUk9SKHRocm93X2Vycm9y LCBoYXZlX2Vycm9yKSBcCitkbyB7IFwKKwlpZiAoaGF2ZV9lcnJvcikgeyBcCisJCSpoYXZl X2Vycm9yID0gdHJ1ZTsgXAorCQlyZXR1cm4gMC4wOyBcCisJfSBlbHNlIHsgXAorCQl0aHJv d19lcnJvcjsgXAorCX0gXAorfSB3aGlsZSAoMCkKIAogLyoKICAqIFdlIHVzZSB0aGVzZSBv dXQtb2YtbGluZSBlcmVwb3J0KCkgY2FsbHMgdG8gcmVwb3J0IGZsb2F0IG92ZXJmbG93LApA QCAtMTU5LDEwICsxNjksOSBAQCBpc19pbmZpbml0ZShkb3VibGUgdmFsKQogICogcmVzdWx0 IG9mIDB4QUU0M0ZFcC0xMDcuCiAgKgogICovCi1EYXR1bQotZmxvYXQ0aW4oUEdfRlVOQ1RJ T05fQVJHUykKK3N0YXRpYyBmbG9hdAorZmxvYXQ0aW5faW50ZXJuYWwoY2hhciAqbnVtLCBi b29sICpoYXZlX2Vycm9yKQogewotCWNoYXIJICAgKm51bSA9IFBHX0dFVEFSR19DU1RSSU5H KDApOwogCWNoYXIJICAgKm9yaWdfbnVtOwogCWZsb2F0CQl2YWw7CiAJY2hhcgkgICAqZW5k cHRyOwpAQCAtMTgzLDEwICsxOTIsMTEgQEAgZmxvYXQ0aW4oUEdfRlVOQ1RJT05fQVJHUykK IAkgKiBzdHJ0b2QoKSBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zLgogCSAqLwogCWlmICgqbnVt ID09ICdcMCcpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAotCQkJCSBlcnJtc2coImludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlICVzOiBcIiVzXCIiLAotCQkJCQkJInJlYWwiLCBvcmlnX251bSkp KTsKKwkJUkVUVVJOX0VSUk9SKGVyZXBvcnQoRVJST1IsCisJCQkJCQkJIChlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCQkgIGVycm1zZygi aW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCisJCQkJCQkJCQkg InJlYWwiLCBvcmlnX251bSkpKSwKKwkJCQkJIGhhdmVfZXJyb3IpOwogCiAJZXJybm8gPSAw OwogCXZhbCA9IHN0cnRvZihudW0sICZlbmRwdHIpOwpAQCAtMjU3LDE2ICsyNjcsMTggQEAg ZmxvYXQ0aW4oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkodmFsID49IEhVR0VfVkFMRiB8fCB2 YWwgPD0gLUhVR0VfVkFMRikKICNlbmRpZgogCQkJCSkKLQkJCQllcmVwb3J0KEVSUk9SLAot CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCi0J CQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIHJlYWwiLAot CQkJCQkJCQlvcmlnX251bSkpKTsKKwkJCQlSRVRVUk5fRVJST1IoZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkJCSAoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdF KSwKKwkJCQkJCQkJCSAgZXJybXNnKCJcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBl IHJlYWwiLAorCQkJCQkJCQkJCQkgb3JpZ19udW0pKSksCisJCQkJCQkJIGhhdmVfZXJyb3Ip OwogCQl9CiAJCWVsc2UKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKLQkJCQkJIGVycm1zZygiaW52YWxp ZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCi0JCQkJCQkJInJlYWwiLCBv cmlnX251bSkpKTsKKwkJCVJFVFVSTl9FUlJPUihlcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkg KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJ CQkgIGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIs CisJCQkJCQkJCQkJICJyZWFsIiwgb3JpZ19udW0pKSksCisJCQkJCQkgaGF2ZV9lcnJvcik7 CiAJfQogCiAJLyogc2tpcCB0cmFpbGluZyB3aGl0ZXNwYWNlICovCkBAIC0yNzUsMTIgKzI4 NywyNSBAQCBmbG9hdDRpbihQR19GVU5DVElPTl9BUkdTKQogCiAJLyogaWYgdGhlcmUgaXMg YW55IGp1bmsgbGVmdCBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIGJhaWwgb3V0ICovCiAJ aWYgKCplbmRwdHIgIT0gJ1wwJykKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCi0JCQkJIGVycm1zZygiaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCi0JCQkJCQkicmVhbCIs IG9yaWdfbnVtKSkpOworCQlSRVRVUk5fRVJST1IoZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkg KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJ CSAgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wiIiwK KwkJCQkJCQkJCSAicmVhbCIsIG9yaWdfbnVtKSkpLAorCQkJCQkgaGF2ZV9lcnJvcik7CiAK LQlQR19SRVRVUk5fRkxPQVQ0KHZhbCk7CisJcmV0dXJuIHZhbDsKK30KKworRGF0dW0KK2Zs b2F0NGluKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJUEdfUkVUVVJOX0ZMT0FUNChmbG9hdDRp bl9pbnRlcm5hbChQR19HRVRBUkdfQ1NUUklORygwKSwgTlVMTCkpOworfQorCitmbG9hdAor ZmxvYXQ0aW5fb3B0X2Vycm9yKGNoYXIJKm51bSwgYm9vbCAqaGF2ZV9lcnJvcikKK3sKKwly ZXR1cm4gZmxvYXQ0aW5faW50ZXJuYWwobnVtLCBoYXZlX2Vycm9yKTsKIH0KIAogLyoKQEAg LTM0MCwxNyArMzY1LDYgQEAgZmxvYXQ4aW4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fRkxPQVQ4KGZsb2F0OGluX2ludGVybmFsKG51bSwgTlVMTCwgImRvdWJsZSBwcmVjaXNp b24iLCBudW0pKTsKIH0KIAotLyogQ29udmVuaWVuY2UgbWFjcm86IHNldCAqaGF2ZV9lcnJv ciBmbGFnIChpZiBwcm92aWRlZCkgb3IgdGhyb3cgZXJyb3IgKi8KLSNkZWZpbmUgUkVUVVJO X0VSUk9SKHRocm93X2Vycm9yLCBoYXZlX2Vycm9yKSBcCi1kbyB7IFwKLQlpZiAoaGF2ZV9l cnJvcikgeyBcCi0JCSpoYXZlX2Vycm9yID0gdHJ1ZTsgXAotCQlyZXR1cm4gMC4wOyBcCi0J fSBlbHNlIHsgXAotCQl0aHJvd19lcnJvcjsgXAotCX0gXAotfSB3aGlsZSAoMCkKLQogLyoK ICAqIGZsb2F0OGluX2ludGVybmFsX29wdF9lcnJvciAtIGd1dHMgb2YgZmxvYXQ4aW4oKQog ICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmggYi9zcmMvaW5jbHVk ZS91dGlscy9mbG9hdC5oCmluZGV4IDRiZjBlM2FjMDdhLi4wYWQ0ZDlmMzk3MyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZmxvYXQuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9mbG9hdC5oCkBAIC00Niw2ICs0Niw3IEBAIGV4dGVybiBmbG9hdDggZmxvYXQ4aW5faW50 ZXJuYWwoY2hhciAqbnVtLCBjaGFyICoqZW5kcHRyX3AsCiBleHRlcm4gZmxvYXQ4IGZsb2F0 OGluX2ludGVybmFsX29wdF9lcnJvcihjaGFyICpudW0sIGNoYXIgKiplbmRwdHJfcCwKIAkJ CQkJCQkJCQkgIGNvbnN0IGNoYXIgKnR5cGVfbmFtZSwgY29uc3QgY2hhciAqb3JpZ19zdHJp bmcsCiAJCQkJCQkJCQkJICBib29sICpoYXZlX2Vycm9yKTsKK2V4dGVybiBmbG9hdCBmbG9h dDRpbl9vcHRfZXJyb3IoY2hhciAqbnVtLCBib29sICpoYXZlX2Vycm9yKTsKIGV4dGVybiBj aGFyICpmbG9hdDhvdXRfaW50ZXJuYWwoZmxvYXQ4IG51bSk7CiBleHRlcm4gaW50CWZsb2F0 NF9jbXBfaW50ZXJuYWwoZmxvYXQ0IGEsIGZsb2F0NCBiKTsKIGV4dGVybiBpbnQJZmxvYXQ4 X2NtcF9pbnRlcm5hbChmbG9hdDggYSwgZmxvYXQ4IGIpOwotLSAKMi4xNy4xCgo= --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0004-Add-safe-input-and-type-conversion-functions-for.patch" Content-Disposition: attachment; filename*0="v10-0004-Add-safe-input-and-type-conversion-functions-for.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2NzJiNTE3NDJlMmZhYjQxZWQ3Y2NiZDU4ZTFkMDI3NmYyYjZlZDQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjkgQXVnIDIwMjIgMjM6NTU6NTIgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwNC8xMF0gQWRkIHNhZmUgaW5wdXQgYW5kIHR5cGUgY29udmVyc2lv biBmdW5jdGlvbnMgZm9yCiBudW1lcmljCgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9u dW1lcmljLmMgfCAyNTggKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9p bmNsdWRlL3V0aWxzL251bWVyaWMuaCAgICAgfCAgIDYgKy0KIDIgZmlsZXMgY2hhbmdlZCwg MTg3IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVt ZXJpYy5jCmluZGV4IDkyMGE2M2IwMDgxLi5mNTgwMDM2Yzc3MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbnVtZXJpYy5jCkBAIC00OTgsNyArNDk4LDcgQEAgc3RhdGljIHZvaWQgZnJlZV92YXIo TnVtZXJpY1ZhciAqdmFyKTsKIHN0YXRpYyB2b2lkIHplcm9fdmFyKE51bWVyaWNWYXIgKnZh cik7CiAKIHN0YXRpYyBjb25zdCBjaGFyICpzZXRfdmFyX2Zyb21fc3RyKGNvbnN0IGNoYXIg KnN0ciwgY29uc3QgY2hhciAqY3AsCi0JCQkJCQkJCQlOdW1lcmljVmFyICpkZXN0KTsKKwkJ CQkJCQkJCU51bWVyaWNWYXIgKmRlc3QsIGJvb2wgKmhhdmVfZXJyb3IpOwogc3RhdGljIHZv aWQgc2V0X3Zhcl9mcm9tX251bShOdW1lcmljIHZhbHVlLCBOdW1lcmljVmFyICpkZXN0KTsK IHN0YXRpYyB2b2lkIGluaXRfdmFyX2Zyb21fbnVtKE51bWVyaWMgbnVtLCBOdW1lcmljVmFy ICpkZXN0KTsKIHN0YXRpYyB2b2lkIHNldF92YXJfZnJvbV92YXIoY29uc3QgTnVtZXJpY1Zh ciAqdmFsdWUsIE51bWVyaWNWYXIgKmRlc3QpOwpAQCAtNTEyLDggKzUxMiw4IEBAIHN0YXRp YyBOdW1lcmljIGR1cGxpY2F0ZV9udW1lcmljKE51bWVyaWMgbnVtKTsKIHN0YXRpYyBOdW1l cmljIG1ha2VfcmVzdWx0KGNvbnN0IE51bWVyaWNWYXIgKnZhcik7CiBzdGF0aWMgTnVtZXJp YyBtYWtlX3Jlc3VsdF9vcHRfZXJyb3IoY29uc3QgTnVtZXJpY1ZhciAqdmFyLCBib29sICpl cnJvcik7CiAKLXN0YXRpYyB2b2lkIGFwcGx5X3R5cG1vZChOdW1lcmljVmFyICp2YXIsIGlu dDMyIHR5cG1vZCk7Ci1zdGF0aWMgdm9pZCBhcHBseV90eXBtb2Rfc3BlY2lhbChOdW1lcmlj IG51bSwgaW50MzIgdHlwbW9kKTsKK3N0YXRpYyBib29sIGFwcGx5X3R5cG1vZChOdW1lcmlj VmFyICp2YXIsIGludDMyIHR5cG1vZCwgYm9vbCAqZXJyb3IpOworc3RhdGljIHZvaWQgYXBw bHlfdHlwbW9kX3NwZWNpYWwoTnVtZXJpYyBudW0sIGludDMyIHR5cG1vZCwgYm9vbCAqZXJy b3IpOwogCiBzdGF0aWMgYm9vbCBudW1lcmljdmFyX3RvX2ludDMyKGNvbnN0IE51bWVyaWNW YXIgKnZhciwgaW50MzIgKnJlc3VsdCk7CiBzdGF0aWMgYm9vbCBudW1lcmljdmFyX3RvX2lu dDY0KGNvbnN0IE51bWVyaWNWYXIgKnZhciwgaW50NjQgKnJlc3VsdCk7CkBAIC02MDcsMjEg KzYwNywyNSBAQCBzdGF0aWMgdm9pZCBhY2N1bV9zdW1fY29tYmluZShOdW1lcmljU3VtQWNj dW0gKmFjY3VtLCBOdW1lcmljU3VtQWNjdW0gKmFjY3VtMik7CiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKi8KIAorLyogQ29udmVuaWVuY2UgbWFjcm86IHNldCAqaGF2ZV9lcnJvciBmbGFn IChpZiBwcm92aWRlZCkgb3IgdGhyb3cgZXJyb3IgKi8KKyNkZWZpbmUgUkVUVVJOX0VSUk9S KHRocm93X2Vycm9yLCBoYXZlX2Vycm9yKSBcCitkbyB7IFwKKwlpZiAoaGF2ZV9lcnJvcikg eyBcCisJCSooaGF2ZV9lcnJvcikgPSB0cnVlOyBcCisJCXJldHVybiBOVUxMOyBcCisJfSBl bHNlIHsgXAorCQl0aHJvd19lcnJvcjsgXAorCX0gXAorfSB3aGlsZSAoMCkKIAogLyoKICAq IG51bWVyaWNfaW4oKSAtCiAgKgogICoJSW5wdXQgZnVuY3Rpb24gZm9yIG51bWVyaWMgZGF0 YSB0eXBlCiAgKi8KLURhdHVtCi1udW1lcmljX2luKFBHX0ZVTkNUSU9OX0FSR1MpCitzdGF0 aWMgaW5saW5lIE51bWVyaWMKK251bWVyaWNfaW5faW50ZXJuYWwoY2hhciAqc3RyLCBpbnQz MiB0eXBtb2QsIGJvb2wgKmhhdmVfZXJyb3IpCiB7Ci0JY2hhcgkgICAqc3RyID0gUEdfR0VU QVJHX0NTVFJJTkcoMCk7Ci0KLSNpZmRlZiBOT1RfVVNFRAotCU9pZAkJCXR5cGVsZW0gPSBQ R19HRVRBUkdfT0lEKDEpOwotI2VuZGlmCi0JaW50MzIJCXR5cG1vZCA9IFBHX0dFVEFSR19J TlQzMigyKTsKIAlOdW1lcmljCQlyZXM7CiAJY29uc3QgY2hhciAqY3A7CiAKQEAgLTY4Miw3 ICs2ODYsMTAgQEAgbnVtZXJpY19pbihQR19GVU5DVElPTl9BUkdTKQogCiAJCWluaXRfdmFy KCZ2YWx1ZSk7CiAKLQkJY3AgPSBzZXRfdmFyX2Zyb21fc3RyKHN0ciwgY3AsICZ2YWx1ZSk7 CisJCWNwID0gc2V0X3Zhcl9mcm9tX3N0cihzdHIsIGNwLCAmdmFsdWUsIGhhdmVfZXJyb3Ip OworCisJCWlmICghY3ApCisJCQlyZXR1cm4gTlVMTDsJLyogZXJyb3IgKi8KIAogCQkvKgog CQkgKiBXZSBkdXBsaWNhdGUgYSBmZXcgbGluZXMgb2YgY29kZSBoZXJlIGJlY2F1c2Ugd2Ug d291bGQgbGlrZSB0bwpAQCAtNjkzLDM4ICs3MDAsNjUgQEAgbnVtZXJpY19pbihQR19GVU5D VElPTl9BUkdTKQogCQl3aGlsZSAoKmNwKQogCQl7CiAJCQlpZiAoIWlzc3BhY2UoKHVuc2ln bmVkIGNoYXIpICpjcCkpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKLQkJCQkJCSBlcnJtc2coImlu dmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlICVzOiBcIiVzXCIiLAotCQkJCQkJCQkibnVt ZXJpYyIsIHN0cikpKTsKKwkJCQlSRVRVUk5fRVJST1IoZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJCSAoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJ CQkJCQkJCQkgIGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwi JXNcIiIsCisJCQkJCQkJCQkJCSAibnVtZXJpYyIsIHN0cikpKSwKKwkJCQkJCQkgaGF2ZV9l cnJvcik7CiAJCQljcCsrOwogCQl9CiAKLQkJYXBwbHlfdHlwbW9kKCZ2YWx1ZSwgdHlwbW9k KTsKKwkJaWYgKCFhcHBseV90eXBtb2QoJnZhbHVlLCB0eXBtb2QsIGhhdmVfZXJyb3IpKQor CQkJcmV0dXJuIE5VTEw7IC8qIGVycm9yICovCiAKLQkJcmVzID0gbWFrZV9yZXN1bHQoJnZh bHVlKTsKKwkJcmVzID0gbWFrZV9yZXN1bHRfb3B0X2Vycm9yKCZ2YWx1ZSwgaGF2ZV9lcnJv cik7CiAJCWZyZWVfdmFyKCZ2YWx1ZSk7CiAKLQkJUEdfUkVUVVJOX05VTUVSSUMocmVzKTsK KwkJcmV0dXJuIHJlczsKIAl9CiAKIAkvKiBTaG91bGQgYmUgbm90aGluZyBsZWZ0IGJ1dCBz cGFjZXMgKi8KIAl3aGlsZSAoKmNwKQogCXsKIAkJaWYgKCFpc3NwYWNlKCh1bnNpZ25lZCBj aGFyKSAqY3ApKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAotCQkJCQkgZXJybXNnKCJpbnZhbGlkIGlu cHV0IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wiIiwKLQkJCQkJCQkibnVtZXJpYyIsIHN0 cikpKTsKKwkJCVJFVFVSTl9FUlJPUihlcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkgKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJCQkgIGVy cm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsCisJCQkJ CQkJCQkJICJudW1lcmljIiwgc3RyKSkpLAorCQkJCQkJIGhhdmVfZXJyb3IpOworCiAJCWNw Kys7CiAJfQogCiAJLyogQXMgYWJvdmUsIHRocm93IGFueSB0eXBtb2QgZXJyb3IgYWZ0ZXIg ZmluaXNoaW5nIHN5bnRheCBjaGVjayAqLwotCWFwcGx5X3R5cG1vZF9zcGVjaWFsKHJlcywg dHlwbW9kKTsKKwlhcHBseV90eXBtb2Rfc3BlY2lhbChyZXMsIHR5cG1vZCwgaGF2ZV9lcnJv cik7CiAKLQlQR19SRVRVUk5fTlVNRVJJQyhyZXMpOworCXJldHVybiByZXM7CiB9CiAKKy8q CisgKiBudW1lcmljX2luKCkgLQorICoKKyAqCUlucHV0IGZ1bmN0aW9uIGZvciBudW1lcmlj IGRhdGEgdHlwZQorICovCitEYXR1bQorbnVtZXJpY19pbihQR19GVU5DVElPTl9BUkdTKQor eworCWNoYXIJICAgKnN0ciA9IFBHX0dFVEFSR19DU1RSSU5HKDApOworCisjaWZkZWYgTk9U X1VTRUQKKwlPaWQJCQl0eXBlbGVtID0gUEdfR0VUQVJHX09JRCgxKTsKKyNlbmRpZgorCWlu dDMyCQl0eXBtb2QgPSBQR19HRVRBUkdfSU5UMzIoMik7CisKKwlQR19SRVRVUk5fTlVNRVJJ QyhudW1lcmljX2luX2ludGVybmFsKHN0ciwgdHlwbW9kLCBOVUxMKSk7Cit9CisKK051bWVy aWMKK251bWVyaWNfaW5fb3B0X2Vycm9yKGNoYXIgKnN0ciwgaW50MzIgdHlwbW9kLCBib29s ICpoYXZlX2Vycm9yKQoreworCXJldHVybiBudW1lcmljX2luX2ludGVybmFsKHN0ciwgdHlw bW9kLCBoYXZlX2Vycm9yKTsKK30KIAogLyoKICAqIG51bWVyaWNfb3V0KCkgLQpAQCAtMTA1 OCw3ICsxMDkyLDcgQEAgbnVtZXJpY19yZWN2KFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQl0 cnVuY192YXIoJnZhbHVlLCB2YWx1ZS5kc2NhbGUpOwogCi0JCWFwcGx5X3R5cG1vZCgmdmFs dWUsIHR5cG1vZCk7CisJCWFwcGx5X3R5cG1vZCgmdmFsdWUsIHR5cG1vZCwgTlVMTCk7CiAK IAkJcmVzID0gbWFrZV9yZXN1bHQoJnZhbHVlKTsKIAl9CkBAIC0xMDY3LDcgKzExMDEsNyBA QCBudW1lcmljX3JlY3YoUEdfRlVOQ1RJT05fQVJHUykKIAkJLyogYXBwbHlfdHlwbW9kX3Nw ZWNpYWwgd2FudHMgdXMgdG8gbWFrZSB0aGUgTnVtZXJpYyBmaXJzdCAqLwogCQlyZXMgPSBt YWtlX3Jlc3VsdCgmdmFsdWUpOwogCi0JCWFwcGx5X3R5cG1vZF9zcGVjaWFsKHJlcywgdHlw bW9kKTsKKwkJYXBwbHlfdHlwbW9kX3NwZWNpYWwocmVzLCB0eXBtb2QsIE5VTEwpOwogCX0K IAogCWZyZWVfdmFyKCZ2YWx1ZSk7CkBAIC0xMTgwLDcgKzEyMTQsNyBAQCBudW1lcmljCQko UEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAlpZiAoTlVNRVJJQ19JU19TUEVDSUFMKG51bSkp CiAJewotCQlhcHBseV90eXBtb2Rfc3BlY2lhbChudW0sIHR5cG1vZCk7CisJCWFwcGx5X3R5 cG1vZF9zcGVjaWFsKG51bSwgdHlwbW9kLCBOVUxMKTsKIAkJUEdfUkVUVVJOX05VTUVSSUMo ZHVwbGljYXRlX251bWVyaWMobnVtKSk7CiAJfQogCkBAIC0xMjMxLDcgKzEyNjUsNyBAQCBu dW1lcmljCQkoUEdfRlVOQ1RJT05fQVJHUykKIAlpbml0X3ZhcigmdmFyKTsKIAogCXNldF92 YXJfZnJvbV9udW0obnVtLCAmdmFyKTsKLQlhcHBseV90eXBtb2QoJnZhciwgdHlwbW9kKTsK KwlhcHBseV90eXBtb2QoJnZhciwgdHlwbW9kLCBOVUxMKTsKIAluZXcgPSBtYWtlX3Jlc3Vs dCgmdmFyKTsKIAogCWZyZWVfdmFyKCZ2YXIpOwpAQCAtNDIxOSw4ICs0MjUzLDggQEAgaW50 NF9udW1lcmljKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX05VTUVSSUMoaW50NjRf dG9fbnVtZXJpYyh2YWwpKTsKIH0KIAotaW50MzIKLW51bWVyaWNfaW50NF9vcHRfZXJyb3Io TnVtZXJpYyBudW0sIGJvb2wgKmhhdmVfZXJyb3IpCitzdGF0aWMgaW5saW5lIGludDMyCitu dW1lcmljX2ludDRfaW50ZXJuYWwoTnVtZXJpYyBudW0sIGJvb2wgKmhhdmVfZXJyb3IpCiB7 CiAJTnVtZXJpY1Zhcgl4OwogCWludDMyCQlyZXN1bHQ7CkBAIC00Mjc0LDcgKzQzMDgsMTMg QEAgbnVtZXJpY19pbnQ0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJTnVtZXJpYwkJbnVtID0g UEdfR0VUQVJHX05VTUVSSUMoMCk7CiAKLQlQR19SRVRVUk5fSU5UMzIobnVtZXJpY19pbnQ0 X29wdF9lcnJvcihudW0sIE5VTEwpKTsKKwlQR19SRVRVUk5fSU5UMzIobnVtZXJpY19pbnQ0 X2ludGVybmFsKG51bSwgTlVMTCkpOworfQorCitpbnQzMgorbnVtZXJpY19pbnQ0X29wdF9l cnJvcihOdW1lcmljIG51bSwgYm9vbCAqaGF2ZV9lcnJvcikKK3sKKwlyZXR1cm4gbnVtZXJp Y19pbnQ0X2ludGVybmFsKG51bSwgaGF2ZV9lcnJvcik7CiB9CiAKIC8qCkBAIC00MzA4LDE1 ICs0MzQ4LDIwIEBAIGludDhfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdTKQogfQogCiAKLURh dHVtCi1udW1lcmljX2ludDgoUEdfRlVOQ1RJT05fQVJHUykKK3N0YXRpYyBpbmxpbmUgaW50 NjQKK251bWVyaWNfaW50OF9pbnRlcm5hbChOdW1lcmljIG51bSwgYm9vbCAqaGF2ZV9lcnJv cikKIHsKLQlOdW1lcmljCQludW0gPSBQR19HRVRBUkdfTlVNRVJJQygwKTsKIAlOdW1lcmlj VmFyCXg7CiAJaW50NjQJCXJlc3VsdDsKIAogCWlmIChOVU1FUklDX0lTX1NQRUNJQUwobnVt KSkKIAl7CisJCWlmIChoYXZlX2Vycm9yKQorCQl7CisJCQkqaGF2ZV9lcnJvciA9IHRydWU7 CisJCQlyZXR1cm4gMDsKKwkJfQorCiAJCWlmIChOVU1FUklDX0lTX05BTihudW0pKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLApAQCAtNDMzMSwxMyArNDM3NiwzMiBAQCBudW1lcmljX2ludDgoUEdfRlVOQ1RJ T05fQVJHUykKIAlpbml0X3Zhcl9mcm9tX251bShudW0sICZ4KTsKIAogCWlmICghbnVtZXJp Y3Zhcl90b19pbnQ2NCgmeCwgJnJlc3VsdCkpCisJeworCQlpZiAoaGF2ZV9lcnJvcikKKwkJ eworCQkJKmhhdmVfZXJyb3IgPSB0cnVlOworCQkJcmV0dXJuIDA7CisJCX0KKwogCQllcmVw b3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0Zf UkFOR0UpLAogCQkJCSBlcnJtc2coImJpZ2ludCBvdXQgb2YgcmFuZ2UiKSkpOworCX0KIAot CVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOworCXJldHVybiByZXN1bHQ7Cit9CisKK0RhdHVt CitudW1lcmljX2ludDgoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fSU5UNjQo bnVtZXJpY19pbnQ4X2ludGVybmFsKFBHX0dFVEFSR19OVU1FUklDKDApLCBOVUxMKSk7CiB9 CiAKK2ludDY0CitudW1lcmljX2ludDhfb3B0X2Vycm9yKE51bWVyaWMgbnVtLCBib29sICpo YXZlX2Vycm9yKQoreworCXJldHVybiBudW1lcmljX2ludDhfaW50ZXJuYWwobnVtLCBoYXZl X2Vycm9yKTsKK30KIAogRGF0dW0KIGludDJfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdTKQpA QCAtNDM0NywxNyArNDQxMSwyMCBAQCBpbnQyX251bWVyaWMoUEdfRlVOQ1RJT05fQVJHUykK IAlQR19SRVRVUk5fTlVNRVJJQyhpbnQ2NF90b19udW1lcmljKHZhbCkpOwogfQogCi0KLURh dHVtCi1udW1lcmljX2ludDIoUEdfRlVOQ1RJT05fQVJHUykKK3N0YXRpYyBpbmxpbmUgaW50 MTYKK251bWVyaWNfaW50Ml9pbnRlcm5hbChOdW1lcmljIG51bSwgYm9vbCAqaGF2ZV9lcnJv cikKIHsKLQlOdW1lcmljCQludW0gPSBQR19HRVRBUkdfTlVNRVJJQygwKTsKIAlOdW1lcmlj VmFyCXg7CiAJaW50NjQJCXZhbDsKLQlpbnQxNgkJcmVzdWx0OwogCiAJaWYgKE5VTUVSSUNf SVNfU1BFQ0lBTChudW0pKQogCXsKKwkJaWYgKGhhdmVfZXJyb3IpCisJCXsKKwkJCSpoYXZl X2Vycm9yID0gdHJ1ZTsKKwkJCXJldHVybiAwOworCQl9CisKIAkJaWYgKE5VTUVSSUNfSVNf TkFOKG51bSkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC00MzcyLDIxICs0NDM5LDQ2IEBAIG51bWVyaWNf aW50MihQR19GVU5DVElPTl9BUkdTKQogCWluaXRfdmFyX2Zyb21fbnVtKG51bSwgJngpOwog CiAJaWYgKCFudW1lcmljdmFyX3RvX2ludDY0KCZ4LCAmdmFsKSkKKwl7CisJCWlmIChoYXZl X2Vycm9yKQorCQl7CisJCQkqaGF2ZV9lcnJvciA9IHRydWU7CisJCQlyZXR1cm4gMDsKKwkJ fQorCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZB TFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygic21hbGxpbnQgb3V0IG9mIHJhbmdl IikpKTsKKwl9CiAKIAlpZiAodW5saWtlbHkodmFsIDwgUEdfSU5UMTZfTUlOKSB8fCB1bmxp a2VseSh2YWwgPiBQR19JTlQxNl9NQVgpKQorCXsKKwkJaWYgKGhhdmVfZXJyb3IpCisJCXsK KwkJCSpoYXZlX2Vycm9yID0gdHJ1ZTsKKwkJCXJldHVybiAwOworCQl9CisKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JB TkdFKSwKIAkJCQkgZXJybXNnKCJzbWFsbGludCBvdXQgb2YgcmFuZ2UiKSkpOworCX0KIAog CS8qIERvd24tY29udmVydCB0byBpbnQyICovCi0JcmVzdWx0ID0gKGludDE2KSB2YWw7CisJ cmV0dXJuIChpbnQxNikgdmFsOworfQogCi0JUEdfUkVUVVJOX0lOVDE2KHJlc3VsdCk7CitE YXR1bQorbnVtZXJpY19pbnQyKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJUEdfUkVUVVJOX0lO VDE2KG51bWVyaWNfaW50Ml9pbnRlcm5hbChQR19HRVRBUkdfTlVNRVJJQygwKSwgTlVMTCkp OwogfQogCitpbnQxNgorbnVtZXJpY19pbnQyX29wdF9lcnJvcihOdW1lcmljIG51bSwgYm9v bCAqaGF2ZV9lcnJvcikKK3sKKwlyZXR1cm4gbnVtZXJpY19pbnQyX2ludGVybmFsKG51bSwg aGF2ZV9lcnJvcik7Cit9CiAKIERhdHVtCiBmbG9hdDhfbnVtZXJpYyhQR19GVU5DVElPTl9B UkdTKQpAQCAtNDQxMiw3ICs0NTA0LDcgQEAgZmxvYXQ4X251bWVyaWMoUEdfRlVOQ1RJT05f QVJHUykKIAlpbml0X3ZhcigmcmVzdWx0KTsKIAogCS8qIEFzc3VtZSB3ZSBuZWVkIG5vdCB3 b3JyeSBhYm91dCBsZWFkaW5nL3RyYWlsaW5nIHNwYWNlcyAqLwotCSh2b2lkKSBzZXRfdmFy X2Zyb21fc3RyKGJ1ZiwgYnVmLCAmcmVzdWx0KTsKKwkodm9pZCkgc2V0X3Zhcl9mcm9tX3N0 cihidWYsIGJ1ZiwgJnJlc3VsdCwgTlVMTCk7CiAKIAlyZXMgPSBtYWtlX3Jlc3VsdCgmcmVz dWx0KTsKIApAQCAtNDUwNSw3ICs0NTk3LDcgQEAgZmxvYXQ0X251bWVyaWMoUEdfRlVOQ1RJ T05fQVJHUykKIAlpbml0X3ZhcigmcmVzdWx0KTsKIAogCS8qIEFzc3VtZSB3ZSBuZWVkIG5v dCB3b3JyeSBhYm91dCBsZWFkaW5nL3RyYWlsaW5nIHNwYWNlcyAqLwotCSh2b2lkKSBzZXRf dmFyX2Zyb21fc3RyKGJ1ZiwgYnVmLCAmcmVzdWx0KTsKKwkodm9pZCkgc2V0X3Zhcl9mcm9t X3N0cihidWYsIGJ1ZiwgJnJlc3VsdCwgTlVMTCk7CiAKIAlyZXMgPSBtYWtlX3Jlc3VsdCgm cmVzdWx0KTsKIApAQCAtNjgxMSw3ICs2OTAzLDggQEAgemVyb192YXIoTnVtZXJpY1ZhciAq dmFyKQogICogcmVwb3J0cy4gIChUeXBpY2FsbHkgY3Agd291bGQgYmUgdGhlIHNhbWUgZXhj ZXB0IGFkdmFuY2VkIG92ZXIgc3BhY2VzLikKICAqLwogc3RhdGljIGNvbnN0IGNoYXIgKgot c2V0X3Zhcl9mcm9tX3N0cihjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmNwLCBOdW1l cmljVmFyICpkZXN0KQorc2V0X3Zhcl9mcm9tX3N0cihjb25zdCBjaGFyICpzdHIsIGNvbnN0 IGNoYXIgKmNwLCBOdW1lcmljVmFyICpkZXN0LAorCQkJCSBib29sICpoYXZlX2Vycm9yKQog ewogCWJvb2wJCWhhdmVfZHAgPSBmYWxzZTsKIAlpbnQJCQlpOwpAQCAtNjg0OSwxMCArNjk0 MiwxMSBAQCBzZXRfdmFyX2Zyb21fc3RyKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAq Y3AsIE51bWVyaWNWYXIgKmRlc3QpCiAJfQogCiAJaWYgKCFpc2RpZ2l0KCh1bnNpZ25lZCBj aGFyKSAqY3ApKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKLQkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0 IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wiIiwKLQkJCQkJCSJudW1lcmljIiwgc3RyKSkp OworCQlSRVRVUk5fRVJST1IoZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkgKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJCSAgZXJybXNnKCJp bnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wiIiwKKwkJCQkJCQkJCSAi bnVtZXJpYyIsIHN0cikpKSwKKwkJCQkJIGhhdmVfZXJyb3IpOwogCiAJZGVjZGlnaXRzID0g KHVuc2lnbmVkIGNoYXIgKikgcGFsbG9jKHN0cmxlbihjcCkgKyBERUNfRElHSVRTICogMik7 CiAKQEAgLTY4NzMsMTAgKzY5NjcsMTEgQEAgc2V0X3Zhcl9mcm9tX3N0cihjb25zdCBjaGFy ICpzdHIsIGNvbnN0IGNoYXIgKmNwLCBOdW1lcmljVmFyICpkZXN0KQogCQllbHNlIGlmICgq Y3AgPT0gJy4nKQogCQl7CiAJCQlpZiAoaGF2ZV9kcCkKLQkJCQllcmVwb3J0KEVSUk9SLAot CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAot CQkJCQkJIGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNc IiIsCi0JCQkJCQkJCSJudW1lcmljIiwgc3RyKSkpOworCQkJCVJFVFVSTl9FUlJPUihlcmVw b3J0KEVSUk9SLAorCQkJCQkJCQkJIChlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JF UFJFU0VOVEFUSU9OKSwKKwkJCQkJCQkJCSAgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRh eCBmb3IgdHlwZSAlczogXCIlc1wiIiwKKwkJCQkJCQkJCQkJICJudW1lcmljIiwgc3RyKSkp LAorCQkJCQkJCSBoYXZlX2Vycm9yKTsKIAkJCWhhdmVfZHAgPSB0cnVlOwogCQkJY3ArKzsK IAkJfQpAQCAtNjg5NywxMCArNjk5MiwxMSBAQCBzZXRfdmFyX2Zyb21fc3RyKGNvbnN0IGNo YXIgKnN0ciwgY29uc3QgY2hhciAqY3AsIE51bWVyaWNWYXIgKmRlc3QpCiAJCWNwKys7CiAJ CWV4cG9uZW50ID0gc3RydG9sKGNwLCAmZW5kcHRyLCAxMCk7CiAJCWlmIChlbmRwdHIgPT0g Y3ApCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf VEVYVF9SRVBSRVNFTlRBVElPTiksCi0JCQkJCSBlcnJtc2coImludmFsaWQgaW5wdXQgc3lu dGF4IGZvciB0eXBlICVzOiBcIiVzXCIiLAotCQkJCQkJCSJudW1lcmljIiwgc3RyKSkpOwor CQkJUkVUVVJOX0VSUk9SKGVyZXBvcnQoRVJST1IsCisJCQkJCQkJCSAoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCQkJCSAgZXJybXNnKCJp bnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAlczogXCIlc1wiIiwKKwkJCQkJCQkJCQkg Im51bWVyaWMiLCBzdHIpKSksCisJCQkJCQkgaGF2ZV9lcnJvcik7CiAJCWNwID0gZW5kcHRy OwogCiAJCS8qCkBAIC02OTEyLDkgKzcwMDgsMTAgQEAgc2V0X3Zhcl9mcm9tX3N0cihjb25z dCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmNwLCBOdW1lcmljVmFyICpkZXN0KQogCQkgKiBm b3IgY29uc2lzdGVuY3kgdXNlIHRoZSBzYW1lIGVyZXBvcnQgZXJyY29kZS90ZXh0IGFzIG1h a2VfcmVzdWx0KCkuCiAJCSAqLwogCQlpZiAoZXhwb25lbnQgPj0gSU5UX01BWCAvIDIgfHwg ZXhwb25lbnQgPD0gLShJTlRfTUFYIC8gMikpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQko ZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKLQkJCQkJIGVy cm1zZygidmFsdWUgb3ZlcmZsb3dzIG51bWVyaWMgZm9ybWF0IikpKTsKKwkJCVJFVFVSTl9F UlJPUihlcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkgKGVycmNvZGUoRVJSQ09ERV9OVU1FUklD X1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJCQkJCSAgZXJybXNnKCJ2YWx1ZSBvdmVyZmxv d3MgbnVtZXJpYyBmb3JtYXQiKSkpLAorCQkJCQkJIGhhdmVfZXJyb3IpOwogCQlkd2VpZ2h0 ICs9IChpbnQpIGV4cG9uZW50OwogCQlkc2NhbGUgLT0gKGludCkgZXhwb25lbnQ7CiAJCWlm IChkc2NhbGUgPCAwKQpAQCAtNzQyMCwxNyArNzUxNywxMCBAQCBtYWtlX3Jlc3VsdF9vcHRf ZXJyb3IoY29uc3QgTnVtZXJpY1ZhciAqdmFyLCBib29sICpoYXZlX2Vycm9yKQogCWlmIChO VU1FUklDX1dFSUdIVChyZXN1bHQpICE9IHdlaWdodCB8fAogCQlOVU1FUklDX0RTQ0FMRShy ZXN1bHQpICE9IHZhci0+ZHNjYWxlKQogCXsKLQkJaWYgKGhhdmVfZXJyb3IpCi0JCXsKLQkJ CSpoYXZlX2Vycm9yID0gdHJ1ZTsKLQkJCXJldHVybiBOVUxMOwotCQl9Ci0JCWVsc2UKLQkJ ewotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZB TFVFX09VVF9PRl9SQU5HRSksCi0JCQkJCSBlcnJtc2coInZhbHVlIG92ZXJmbG93cyBudW1l cmljIGZvcm1hdCIpKSk7Ci0JCX0KKwkJUkVUVVJOX0VSUk9SKGVyZXBvcnQoRVJST1IsCisJ CQkJCQkJIChlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAor CQkJCQkJCSAgZXJybXNnKCJ2YWx1ZSBvdmVyZmxvd3MgbnVtZXJpYyBmb3JtYXQiKSkpLAor CQkJCQkgaGF2ZV9lcnJvcik7CiAJfQogCiAJZHVtcF9udW1lcmljKCJtYWtlX3Jlc3VsdCgp IiwgcmVzdWx0KTsKQEAgLTc0NTYsOCArNzU0Niw4IEBAIG1ha2VfcmVzdWx0KGNvbnN0IE51 bWVyaWNWYXIgKnZhcikKICAqCURvIGJvdW5kcyBjaGVja2luZyBhbmQgcm91bmRpbmcgYWNj b3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgdHlwbW9kLgogICoJTm90ZSB0aGF0IHRoaXMgaXMg b25seSBhcHBsaWVkIHRvIG5vcm1hbCBmaW5pdGUgdmFsdWVzLgogICovCi1zdGF0aWMgdm9p ZAotYXBwbHlfdHlwbW9kKE51bWVyaWNWYXIgKnZhciwgaW50MzIgdHlwbW9kKQorc3RhdGlj IGJvb2wKK2FwcGx5X3R5cG1vZChOdW1lcmljVmFyICp2YXIsIGludDMyIHR5cG1vZCwgYm9v bCAqaGF2ZV9lcnJvcikKIHsKIAlpbnQJCQlwcmVjaXNpb247CiAJaW50CQkJc2NhbGU7CkBA IC03NDY3LDcgKzc1NTcsNyBAQCBhcHBseV90eXBtb2QoTnVtZXJpY1ZhciAqdmFyLCBpbnQz MiB0eXBtb2QpCiAKIAkvKiBEbyBub3RoaW5nIGlmIHdlIGhhdmUgYW4gaW52YWxpZCB0eXBt b2QgKi8KIAlpZiAoIWlzX3ZhbGlkX251bWVyaWNfdHlwbW9kKHR5cG1vZCkpCi0JCXJldHVy bjsKKwkJcmV0dXJuIHRydWU7CiAKIAlwcmVjaXNpb24gPSBudW1lcmljX3R5cG1vZF9wcmVj aXNpb24odHlwbW9kKTsKIAlzY2FsZSA9IG51bWVyaWNfdHlwbW9kX3NjYWxlKHR5cG1vZCk7 CkBAIC03NTE0LDYgKzc2MDQsMTMgQEAgYXBwbHlfdHlwbW9kKE51bWVyaWNWYXIgKnZhciwg aW50MzIgdHlwbW9kKQogI2Vycm9yIHVuc3VwcG9ydGVkIE5CQVNFCiAjZW5kaWYKIAkJCQlp ZiAoZGRpZ2l0cyA+IG1heGRpZ2l0cykKKwkJCQl7CisJCQkJCWlmIChoYXZlX2Vycm9yKQor CQkJCQl7CisJCQkJCQkqaGF2ZV9lcnJvciA9IHRydWU7CisJCQkJCQlyZXR1cm4gZmFsc2U7 CisJCQkJCX0KKwogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJCQkJCSBlcnJtc2coIm51bWVy aWMgZmllbGQgb3ZlcmZsb3ciKSwKQEAgLTc1MjMsMTEgKzc2MjAsMTQgQEAgYXBwbHlfdHlw bW9kKE51bWVyaWNWYXIgKnZhciwgaW50MzIgdHlwbW9kKQogCQkJCQkJCQkJICAgbWF4ZGln aXRzID8gIjEwXiIgOiAiIiwKIAkJCQkJCQkJCSAgIG1heGRpZ2l0cyA/IG1heGRpZ2l0cyA6 IDEKIAkJCQkJCQkJCSAgICkpKTsKKwkJCQl9CiAJCQkJYnJlYWs7CiAJCQl9CiAJCQlkZGln aXRzIC09IERFQ19ESUdJVFM7CiAJCX0KIAl9CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoK QEAgLTc1MzcsNyArNzYzNyw3IEBAIGFwcGx5X3R5cG1vZChOdW1lcmljVmFyICp2YXIsIGlu dDMyIHR5cG1vZCkKICAqCUZvciBjb252ZW5pZW5jZSBvZiBtb3N0IGNhbGxlcnMsIHRoZSB2 YWx1ZSBpcyBwcmVzZW50ZWQgaW4gcGFja2VkIGZvcm0uCiAgKi8KIHN0YXRpYyB2b2lkCi1h cHBseV90eXBtb2Rfc3BlY2lhbChOdW1lcmljIG51bSwgaW50MzIgdHlwbW9kKQorYXBwbHlf dHlwbW9kX3NwZWNpYWwoTnVtZXJpYyBudW0sIGludDMyIHR5cG1vZCwgYm9vbCAqaGF2ZV9l cnJvcikKIHsKIAlpbnQJCQlwcmVjaXNpb247CiAJaW50CQkJc2NhbGU7CkBAIC03NTYwLDYg Kzc2NjAsMTIgQEAgYXBwbHlfdHlwbW9kX3NwZWNpYWwoTnVtZXJpYyBudW0sIGludDMyIHR5 cG1vZCkKIAlwcmVjaXNpb24gPSBudW1lcmljX3R5cG1vZF9wcmVjaXNpb24odHlwbW9kKTsK IAlzY2FsZSA9IG51bWVyaWNfdHlwbW9kX3NjYWxlKHR5cG1vZCk7CiAKKwlpZiAoaGF2ZV9l cnJvcikKKwl7CisJCSpoYXZlX2Vycm9yID0gdHJ1ZTsKKwkJcmV0dXJuOworCX0KKwogCWVy ZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09G X1JBTkdFKSwKIAkJCSBlcnJtc2coIm51bWVyaWMgZmllbGQgb3ZlcmZsb3ciKSwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL251bWVyaWMuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L251bWVyaWMuaAppbmRleCAzY2FhNzRkZmU3YS4uZjMyODA3Y2ZkYWEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL251bWVyaWMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9u dW1lcmljLmgKQEAgLTg1LDYgKzg1LDEwIEBAIGV4dGVybiBOdW1lcmljIG51bWVyaWNfZGl2 X29wdF9lcnJvcihOdW1lcmljIG51bTEsIE51bWVyaWMgbnVtMiwKIAkJCQkJCQkJCSBib29s ICpoYXZlX2Vycm9yKTsKIGV4dGVybiBOdW1lcmljIG51bWVyaWNfbW9kX29wdF9lcnJvcihO dW1lcmljIG51bTEsIE51bWVyaWMgbnVtMiwKIAkJCQkJCQkJCSBib29sICpoYXZlX2Vycm9y KTsKLWV4dGVybiBpbnQzMiBudW1lcmljX2ludDRfb3B0X2Vycm9yKE51bWVyaWMgbnVtLCBi b29sICplcnJvcik7CitleHRlcm4gaW50MTYgbnVtZXJpY19pbnQyX29wdF9lcnJvcihOdW1l cmljIG51bSwgYm9vbCAqaGF2ZV9lcnJvcik7CitleHRlcm4gaW50MzIgbnVtZXJpY19pbnQ0 X29wdF9lcnJvcihOdW1lcmljIG51bSwgYm9vbCAqaGF2ZV9lcnJvcik7CitleHRlcm4gaW50 NjQgbnVtZXJpY19pbnQ4X29wdF9lcnJvcihOdW1lcmljIG51bSwgYm9vbCAqaGF2ZV9lcnJv cik7CitleHRlcm4gTnVtZXJpYyBudW1lcmljX2luX29wdF9lcnJvcihjaGFyICpzdHIsIGlu dDMyIHR5cG1vZCwKKwkJCQkJCQkJCWJvb2wgKmhhdmVfZXJyb3IpOwogCiAjZW5kaWYJCQkJ CQkJLyogX1BHX05VTUVSSUNfSF8gKi8KLS0gCjIuMTcuMQoK --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0005-Add-safe-input-and-type-conversion-functions-for.patch" Content-Disposition: attachment; filename*0="v10-0005-Add-safe-input-and-type-conversion-functions-for.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2NWE4ZGU2ZmQyZDc3ZmY0ZGQ1OTRjMGUzOWE0YWM1OWRlMzljNjM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjkgQXVnIDIwMjIgMjM6NTQ6NDUgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwNS8xMF0gQWRkIHNhZmUgaW5wdXQgYW5kIHR5cGUgY29udmVyc2lv biBmdW5jdGlvbnMgZm9yCiBkYXRldGltZSB0eXBlcwoKLS0tCiBjb250cmliL2FkbWlucGFj ay9hZG1pbnBhY2suYyAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRl LmMgICAgICB8IDMyNSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jICB8ICAxNiArLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3RpbWVzdGFtcC5jIHwgMTM4ICsrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjLmMgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvdXRpbHMvZGF0ZS5oICAg ICAgICAgIHwgIDEzICsrCiBzcmMvaW5jbHVkZS91dGlscy9kYXRldGltZS5oICAgICAgfCAg IDYgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oICAgICB8ICAgNiArCiA4IGZp bGVzIGNoYW5nZWQsIDQyMyBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb250cmliL2FkbWlucGFjay9hZG1pbnBhY2suYyBiL2NvbnRyaWIvYWRtaW5w YWNrL2FkbWlucGFjay5jCmluZGV4IDAzYWRkZjFkYzVmLi40YmY3OTVkNDJhNCAxMDA2NDQK LS0tIGEvY29udHJpYi9hZG1pbnBhY2svYWRtaW5wYWNrLmMKKysrIGIvY29udHJpYi9hZG1p bnBhY2svYWRtaW5wYWNrLmMKQEAgLTU3MSw3ICs1NzEsNyBAQCBwZ19sb2dkaXJfbHNfaW50 ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCWlmIChQYXJzZURhdGVUaW1lKHRp bWVzdGFtcGJ1ZiwgbG93c3RyLCBNQVhEQVRFTEVOLCBmaWVsZCwgZnR5cGUsIE1BWERBVEVG SUVMRFMsICZuZikpCiAJCQljb250aW51ZTsKIAotCQlpZiAoRGVjb2RlRGF0ZVRpbWUoZmll bGQsIGZ0eXBlLCBuZiwgJmR0eXBlLCAmZGF0ZSwgJmZzZWMsICZ0eikpCisJCWlmIChEZWNv ZGVEYXRlVGltZShmaWVsZCwgZnR5cGUsIG5mLCAmZHR5cGUsICZkYXRlLCAmZnNlYywgJnR6 LCB0cnVlKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIFNlZW1zIHRoZSB0aW1lc3RhbXAgaXMg T0s7IHByZXBhcmUgYW5kIHJldHVybiB0dXBsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2RhdGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMKaW5k ZXggMDgxZGZhMjQ1MGYuLmE1NjRlMTM0ZWFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMKQEAg LTEwOCwxMCArMTA4LDkgQEAgYW55dGltZV90eXBtb2RvdXQoYm9vbCBpc3R6LCBpbnQzMiB0 eXBtb2QpCiAvKiBkYXRlX2luKCkKICAqIEdpdmVuIGRhdGUgdGV4dCBzdHJpbmcsIGNvbnZl cnQgdG8gaW50ZXJuYWwgZGF0ZSBmb3JtYXQuCiAgKi8KLURhdHVtCi1kYXRlX2luKFBHX0ZV TkNUSU9OX0FSR1MpCitzdGF0aWMgaW5saW5lIERhdGVBRFQKK2RhdGVfaW5faW50ZXJuYWwo Y2hhciAqc3RyLCBib29sICplcnJvcikKIHsKLQljaGFyCSAgICpzdHIgPSBQR19HRVRBUkdf Q1NUUklORygwKTsKIAlEYXRlQURUCQlkYXRlOwogCWZzZWNfdAkJZnNlYzsKIAlzdHJ1Y3Qg cGdfdG0gdHQsCkBAIC0xMjcsOSArMTI2LDE4IEBAIGRhdGVfaW4oUEdfRlVOQ1RJT05fQVJH UykKIAlkdGVyciA9IFBhcnNlRGF0ZVRpbWUoc3RyLCB3b3JrYnVmLCBzaXplb2Yod29ya2J1 ZiksCiAJCQkJCQkgIGZpZWxkLCBmdHlwZSwgTUFYREFURUZJRUxEUywgJm5mKTsKIAlpZiAo ZHRlcnIgPT0gMCkKLQkJZHRlcnIgPSBEZWNvZGVEYXRlVGltZShmaWVsZCwgZnR5cGUsIG5m LCAmZHR5cGUsIHRtLCAmZnNlYywgJnR6cCk7CisJCWR0ZXJyID0gRGVjb2RlRGF0ZVRpbWUo ZmllbGQsIGZ0eXBlLCBuZiwgJmR0eXBlLCB0bSwgJmZzZWMsICZ0enAsCisJCQkJCQkJICAg IWVycm9yKTsKIAlpZiAoZHRlcnIgIT0gMCkKKwl7CisJCWlmIChlcnJvcikKKwkJeworCQkJ KmVycm9yID0gdHJ1ZTsKKwkJCXJldHVybiAwOworCQl9CisKIAkJRGF0ZVRpbWVQYXJzZUVy cm9yKGR0ZXJyLCBzdHIsICJkYXRlIik7CisJfQogCiAJc3dpdGNoIChkdHlwZSkKIAl7CkBA IC0xNDksMjUgKzE1Nyw2MiBAQCBkYXRlX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlQR19S RVRVUk5fREFURUFEVChkYXRlKTsKIAogCQlkZWZhdWx0OgorCQkJaWYgKCplcnJvcikKKwkJ CXsKKwkJCQkqZXJyb3IgPSB0cnVlOworCQkJCXJldHVybiAwOworCQkJfQorCiAJCQlEYXRl VGltZVBhcnNlRXJyb3IoRFRFUlJfQkFEX0ZPUk1BVCwgc3RyLCAiZGF0ZSIpOwogCQkJYnJl YWs7CiAJfQogCiAJLyogUHJldmVudCBvdmVyZmxvdyBpbiBKdWxpYW4tZGF5IHJvdXRpbmVz ICovCiAJaWYgKCFJU19WQUxJRF9KVUxJQU4odG0tPnRtX3llYXIsIHRtLT50bV9tb24sIHRt LT50bV9tZGF5KSkKKwl7CisJCWlmIChlcnJvcikKKwkJeworCQkJKmVycm9yID0gdHJ1ZTsK KwkJCXJldHVybiAwOworCQl9CisKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygiZGF0 ZSBvdXQgb2YgcmFuZ2U6IFwiJXNcIiIsIHN0cikpKTsKKwl9CiAKIAlkYXRlID0gZGF0ZTJq KHRtLT50bV95ZWFyLCB0bS0+dG1fbW9uLCB0bS0+dG1fbWRheSkgLSBQT1NUR1JFU19FUE9D SF9KREFURTsKIAogCS8qIE5vdyBjaGVjayBmb3IganVzdC1vdXQtb2YtcmFuZ2UgZGF0ZXMg Ki8KIAlpZiAoIUlTX1ZBTElEX0RBVEUoZGF0ZSkpCisJeworCQlpZiAoZXJyb3IpCisJCXsK KwkJCSplcnJvciA9IHRydWU7CisJCQlyZXR1cm4gMDsKKwkJfQorCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0Up LAogCQkJCSBlcnJtc2coImRhdGUgb3V0IG9mIHJhbmdlOiBcIiVzXCIiLCBzdHIpKSk7CisJ fQogCi0JUEdfUkVUVVJOX0RBVEVBRFQoZGF0ZSk7CisJcmV0dXJuIGRhdGU7Cit9CisKKy8q IGRhdGVfaW4oKQorICogR2l2ZW4gZGF0ZSB0ZXh0IHN0cmluZywgY29udmVydCB0byBpbnRl cm5hbCBkYXRlIGZvcm1hdC4KKyAqLworRGF0dW0KK2RhdGVfaW4oUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlQR19SRVRVUk5fREFURUFEVChkYXRlX2luX2ludGVybmFsKFBHX0dFVEFSR19D U1RSSU5HKDApLCBOVUxMKSk7Cit9CisKK0RhdGVBRFQKK2RhdGVfaW5fb3B0X2Vycm9yKGNo YXIgKnN0ciwgYm9vbCAqZXJyb3IpCit7CisJcmV0dXJuIGRhdGVfaW5faW50ZXJuYWwoc3Ry LCBlcnJvcik7CiB9CiAKIC8qIGRhdGVfb3V0KCkKQEAgLTEyODYsMTAgKzEzMzEsOSBAQCBk YXRlX3RpbWVzdGFtcChQR19GVU5DVElPTl9BUkdTKQogLyogdGltZXN0YW1wX2RhdGUoKQog ICogQ29udmVydCB0aW1lc3RhbXAgdG8gZGF0ZSBkYXRhIHR5cGUuCiAgKi8KLURhdHVtCi10 aW1lc3RhbXBfZGF0ZShQR19GVU5DVElPTl9BUkdTKQorc3RhdGljIGlubGluZSBEYXRlQURU Cit0aW1lc3RhbXBfZGF0ZV9pbnRlcm5hbChUaW1lc3RhbXAgdGltZXN0YW1wLCBib29sICpl cnJvcikKIHsKLQlUaW1lc3RhbXAJdGltZXN0YW1wID0gUEdfR0VUQVJHX1RJTUVTVEFNUCgw KTsKIAlEYXRlQURUCQlyZXN1bHQ7CiAJc3RydWN0IHBnX3RtIHR0LAogCQkJICAgKnRtID0g JnR0OwpAQCAtMTMwMiwxNiArMTM0NiwzOCBAQCB0aW1lc3RhbXBfZGF0ZShQR19GVU5DVElP Tl9BUkdTKQogCWVsc2UKIAl7CiAJCWlmICh0aW1lc3RhbXAydG0odGltZXN0YW1wLCBOVUxM LCB0bSwgJmZzZWMsIE5VTEwsIE5VTEwpICE9IDApCisJCXsKKwkJCWlmIChlcnJvcikKKwkJ CXsKKwkJCQkqZXJyb3IgPSB0cnVlOworCQkJCXJldHVybiAwOworCQkJfQorCiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9P Rl9SQU5HRSksCiAJCQkJCSBlcnJtc2coInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkpOwor CQl9CiAKIAkJcmVzdWx0ID0gZGF0ZTJqKHRtLT50bV95ZWFyLCB0bS0+dG1fbW9uLCB0bS0+ dG1fbWRheSkgLSBQT1NUR1JFU19FUE9DSF9KREFURTsKIAl9CiAKLQlQR19SRVRVUk5fREFU RUFEVChyZXN1bHQpOworCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qIHRpbWVzdGFtcF9kYXRl KCkKKyAqIENvbnZlcnQgdGltZXN0YW1wIHRvIGRhdGUgZGF0YSB0eXBlLgorICovCitEYXR1 bQordGltZXN0YW1wX2RhdGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fREFU RUFEVCh0aW1lc3RhbXBfZGF0ZV9pbnRlcm5hbChQR19HRVRBUkdfVElNRVNUQU1QKDApLCBO VUxMKSk7Cit9CisKK0RhdGVBRFQKK3RpbWVzdGFtcF9kYXRlX29wdF9lcnJvcihUaW1lc3Rh bXAgdGltZXN0YW1wLCBib29sICplcnJvcikKK3sKKwlyZXR1cm4gdGltZXN0YW1wX2RhdGVf aW50ZXJuYWwodGltZXN0YW1wLCBlcnJvcik7Cit9CiAKIC8qIGRhdGVfdGltZXN0YW1wdHoo KQogICogQ29udmVydCBkYXRlIHRvIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSBkYXRhIHR5 cGUuCkBAIC0xMzI3LDE0ICsxMzkzLDkgQEAgZGF0ZV90aW1lc3RhbXB0eihQR19GVU5DVElP Tl9BUkdTKQogCVBHX1JFVFVSTl9USU1FU1RBTVAocmVzdWx0KTsKIH0KIAotCi0vKiB0aW1l c3RhbXB0el9kYXRlKCkKLSAqIENvbnZlcnQgdGltZXN0YW1wIHdpdGggdGltZSB6b25lIHRv IGRhdGUgZGF0YSB0eXBlLgotICovCi1EYXR1bQotdGltZXN0YW1wdHpfZGF0ZShQR19GVU5D VElPTl9BUkdTKQorc3RhdGljIGlubGluZSBEYXRlQURUCit0aW1lc3RhbXB0el9kYXRlX2lu dGVybmFsKFRpbWVzdGFtcFR6IHRpbWVzdGFtcCwgYm9vbCAqZXJyb3IpCiB7Ci0JVGltZXN0 YW1wVHogdGltZXN0YW1wID0gUEdfR0VUQVJHX1RJTUVTVEFNUCgwKTsKIAlEYXRlQURUCQly ZXN1bHQ7CiAJc3RydWN0IHBnX3RtIHR0LAogCQkJICAgKnRtID0gJnR0OwpAQCAtMTM0OCwz MCArMTQwOSw0NiBAQCB0aW1lc3RhbXB0el9kYXRlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZWxz ZQogCXsKIAkJaWYgKHRpbWVzdGFtcDJ0bSh0aW1lc3RhbXAsICZ0eiwgdG0sICZmc2VjLCBO VUxMLCBOVUxMKSAhPSAwKQorCQl7CisJCQlpZiAoZXJyb3IpCisJCQl7CisJCQkJKmVycm9y ID0gdHJ1ZTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJ CQkgZXJybXNnKCJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIikpKTsKKwkJfQogCiAJCXJlc3Vs dCA9IGRhdGUyaih0bS0+dG1feWVhciwgdG0tPnRtX21vbiwgdG0tPnRtX21kYXkpIC0gUE9T VEdSRVNfRVBPQ0hfSkRBVEU7CiAJfQogCi0JUEdfUkVUVVJOX0RBVEVBRFQocmVzdWx0KTsK KwlyZXR1cm4gcmVzdWx0OwogfQogCisvKiB0aW1lc3RhbXB0el9kYXRlKCkKKyAqIENvbnZl cnQgdGltZXN0YW1wIHdpdGggdGltZSB6b25lIHRvIGRhdGUgZGF0YSB0eXBlLgorICovCitE YXR1bQordGltZXN0YW1wdHpfZGF0ZShQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVS Tl9EQVRFQURUKHRpbWVzdGFtcHR6X2RhdGVfaW50ZXJuYWwoUEdfR0VUQVJHX1RJTUVTVEFN UCgwKSwgTlVMTCkpOworfQorCitEYXRlQURUCit0aW1lc3RhbXB0el9kYXRlX29wdF9lcnJv cihUaW1lc3RhbXBUeiB0aW1lc3RhbXAsIGJvb2wgKmVycm9yKQoreworCXJldHVybiB0aW1l c3RhbXB0el9kYXRlX2ludGVybmFsKHRpbWVzdGFtcCwgZXJyb3IpOworfQogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKICAqCSBUaW1lIEFEVAogICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogCi1EYXR1bQotdGltZV9pbihQR19GVU5DVElPTl9BUkdTKQorc3RhdGljIGlubGlu ZSBUaW1lQURUCit0aW1lX2luX2ludGVybmFsKGNoYXIgKnN0ciwgaW50MzIgdHlwbW9kLCBi b29sICplcnJvcikKIHsKLQljaGFyCSAgICpzdHIgPSBQR19HRVRBUkdfQ1NUUklORygwKTsK LQotI2lmZGVmIE5PVF9VU0VECi0JT2lkCQkJdHlwZWxlbSA9IFBHX0dFVEFSR19PSUQoMSk7 Ci0jZW5kaWYKLQlpbnQzMgkJdHlwbW9kID0gUEdfR0VUQVJHX0lOVDMyKDIpOwogCVRpbWVB RFQJCXJlc3VsdDsKIAlmc2VjX3QJCWZzZWM7CiAJc3RydWN0IHBnX3RtIHR0LApAQCAtMTM4 NywxNCArMTQ2NCw0MSBAQCB0aW1lX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZHRlcnIgPSBQ YXJzZURhdGVUaW1lKHN0ciwgd29ya2J1Ziwgc2l6ZW9mKHdvcmtidWYpLAogCQkJCQkJICBm aWVsZCwgZnR5cGUsIE1BWERBVEVGSUVMRFMsICZuZik7CiAJaWYgKGR0ZXJyID09IDApCi0J CWR0ZXJyID0gRGVjb2RlVGltZU9ubHkoZmllbGQsIGZ0eXBlLCBuZiwgJmR0eXBlLCB0bSwg JmZzZWMsICZ0eik7CisJCWR0ZXJyID0gRGVjb2RlVGltZU9ubHkoZmllbGQsIGZ0eXBlLCBu ZiwgJmR0eXBlLCB0bSwgJmZzZWMsICZ0eiwKKwkJCQkJCQkgICAhZXJyb3IpOwogCWlmIChk dGVyciAhPSAwKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0cnVlOwor CQkJcmV0dXJuIDA7CisJCX0KKwogCQlEYXRlVGltZVBhcnNlRXJyb3IoZHRlcnIsIHN0ciwg InRpbWUiKTsKKwl9CiAKIAl0bTJ0aW1lKHRtLCBmc2VjLCAmcmVzdWx0KTsKIAlBZGp1c3RU aW1lRm9yVHlwbW9kKCZyZXN1bHQsIHR5cG1vZCk7CiAKLQlQR19SRVRVUk5fVElNRUFEVChy ZXN1bHQpOworCXJldHVybiByZXN1bHQ7Cit9CisKK0RhdHVtCit0aW1lX2luKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7Cisj aWZkZWYgTk9UX1VTRUQKKwlPaWQJCQl0eXBlbGVtID0gUEdfR0VUQVJHX09JRCgxKTsKKyNl bmRpZgorCWludDMyCQl0eXBtb2QgPSBQR19HRVRBUkdfSU5UMzIoMik7CisKKwlQR19SRVRV Uk5fVElNRUFEVCh0aW1lX2luX2ludGVybmFsKHN0ciwgdHlwbW9kLCBOVUxMKSk7Cit9CisK K1RpbWVBRFQKK3RpbWVfaW5fb3B0X2Vycm9yKGNoYXIgKnN0ciwgaW50MzIgdHlwbW9kLCBi b29sICplcnJvcikKK3sKKwlyZXR1cm4gdGltZV9pbl9pbnRlcm5hbChzdHIsIHR5cG1vZCwg ZXJyb3IpOwogfQogCiAvKiB0bTJ0aW1lKCkKQEAgLTE4ODksMjIgKzE5OTMsMzIgQEAgb3Zl cmxhcHNfdGltZShQR19GVU5DVElPTl9BUkdTKQogLyogdGltZXN0YW1wX3RpbWUoKQogICog Q29udmVydCB0aW1lc3RhbXAgdG8gdGltZSBkYXRhIHR5cGUuCiAgKi8KLURhdHVtCi10aW1l c3RhbXBfdGltZShQR19GVU5DVElPTl9BUkdTKQorc3RhdGljIGlubGluZSBUaW1lQURUCit0 aW1lc3RhbXBfdGltZV9pbnRlcm5hbChUaW1lc3RhbXAgdGltZXN0YW1wLCBib29sICppc251 bGwsIGJvb2wgKmVycm9yKQogewotCVRpbWVzdGFtcAl0aW1lc3RhbXAgPSBQR19HRVRBUkdf VElNRVNUQU1QKDApOwogCVRpbWVBRFQJCXJlc3VsdDsKIAlzdHJ1Y3QgcGdfdG0gdHQsCiAJ CQkgICAqdG0gPSAmdHQ7CiAJZnNlY190CQlmc2VjOwogCiAJaWYgKFRJTUVTVEFNUF9OT1Rf RklOSVRFKHRpbWVzdGFtcCkpCi0JCVBHX1JFVFVSTl9OVUxMKCk7CisJeworCQkqaXNudWxs ID0gdHJ1ZTsKKwkJcmV0dXJuIDA7CisJfQogCiAJaWYgKHRpbWVzdGFtcDJ0bSh0aW1lc3Rh bXAsIE5VTEwsIHRtLCAmZnNlYywgTlVMTCwgTlVMTCkgIT0gMCkKKwl7CisJCWlmIChlcnJv cikKKwkJeworCQkJKmVycm9yID0gKmlzbnVsbCA9IHRydWU7CisJCQlyZXR1cm4gKERhdHVt KSAwOworCQl9CisKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygidGltZXN0YW1wIG91 dCBvZiByYW5nZSIpKSk7CisJfQogCiAJLyoKIAkgKiBDb3VsZCBhbHNvIGRvIHRoaXMgd2l0 aCB0aW1lID0gKHRpbWVzdGFtcCAvIFVTRUNTX1BFUl9EQVkgKgpAQCAtMTkxMiwxNyArMjAy NiwzOSBAQCB0aW1lc3RhbXBfdGltZShQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCXJlc3Vs dCA9ICgoKCh0bS0+dG1faG91ciAqIE1JTlNfUEVSX0hPVVIgKyB0bS0+dG1fbWluKSAqIFNF Q1NfUEVSX01JTlVURSkgKyB0bS0+dG1fc2VjKSAqCiAJCQkgIFVTRUNTX1BFUl9TRUMpICsg ZnNlYzsKKwkqaXNudWxsID0gZmFsc2U7CiAKLQlQR19SRVRVUk5fVElNRUFEVChyZXN1bHQp OworCXJldHVybiByZXN1bHQ7CiB9CiAKLS8qIHRpbWVzdGFtcHR6X3RpbWUoKQotICogQ29u dmVydCB0aW1lc3RhbXB0eiB0byB0aW1lIGRhdGEgdHlwZS4KKy8qIHRpbWVzdGFtcF90aW1l KCkKKyAqIENvbnZlcnQgdGltZXN0YW1wIHRvIHRpbWUgZGF0YSB0eXBlLgogICovCiBEYXR1 bQotdGltZXN0YW1wdHpfdGltZShQR19GVU5DVElPTl9BUkdTKQordGltZXN0YW1wX3RpbWUo UEdfRlVOQ1RJT05fQVJHUykKK3sKKwlib29sCQlpc251bGw7CisJVGltZUFEVAkJdGltZSA9 CisJCXRpbWVzdGFtcF90aW1lX2ludGVybmFsKFBHX0dFVEFSR19USU1FU1RBTVAoMCksICZp c251bGwsIE5VTEwpOworCisJaWYgKGlzbnVsbCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwll bHNlCisJCVBHX1JFVFVSTl9USU1FQURUKHRpbWUpOworfQorCitUaW1lQURUCit0aW1lc3Rh bXBfdGltZV9vcHRfZXJyb3IoVGltZXN0YW1wIHRpbWVzdGFtcCwgYm9vbCAqaXNudWxsLCBi b29sICplcnJvcikKK3sKKwlyZXR1cm4gdGltZXN0YW1wX3RpbWVfaW50ZXJuYWwodGltZXN0 YW1wLCBpc251bGwsIGVycm9yKTsKK30KKworLyogdGltZXN0YW1wdHpfdGltZV9vcHRfZXJy b3IoKQorICogQ29udmVydCB0aW1lc3RhbXB0eiB0byB0aW1lIGRhdGEgdHlwZS4KKyAqLwor c3RhdGljIGlubGluZSBUaW1lQURUCit0aW1lc3RhbXB0el90aW1lX2ludGVybmFsKFRpbWVz dGFtcFR6IHRpbWVzdGFtcCwgYm9vbCAqaXNudWxsLCBib29sICplcnJvcikKIHsKLQlUaW1l c3RhbXBUeiB0aW1lc3RhbXAgPSBQR19HRVRBUkdfVElNRVNUQU1QKDApOwogCVRpbWVBRFQJ CXJlc3VsdDsKIAlzdHJ1Y3QgcGdfdG0gdHQsCiAJCQkgICAqdG0gPSAmdHQ7CkBAIC0xOTMw LDEyICsyMDY2LDIzIEBAIHRpbWVzdGFtcHR6X3RpbWUoUEdfRlVOQ1RJT05fQVJHUykKIAlm c2VjX3QJCWZzZWM7CiAKIAlpZiAoVElNRVNUQU1QX05PVF9GSU5JVEUodGltZXN0YW1wKSkK LQkJUEdfUkVUVVJOX05VTEwoKTsKKwl7CisJCSppc251bGwgPSB0cnVlOworCQlyZXR1cm4g MDsKKwl9CiAKIAlpZiAodGltZXN0YW1wMnRtKHRpbWVzdGFtcCwgJnR6LCB0bSwgJmZzZWMs IE5VTEwsIE5VTEwpICE9IDApCisJeworCQlpZiAoZXJyb3IpCisJCXsKKwkJCSplcnJvciA9 ICppc251bGwgPSB0cnVlOworCQkJcmV0dXJuIDA7CisJCX0KKwogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVfT1VUX09GX1JBTkdFKSwK IAkJCQkgZXJybXNnKCJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIikpKTsKKwl9CiAKIAkvKgog CSAqIENvdWxkIGFsc28gZG8gdGhpcyB3aXRoIHRpbWUgPSAodGltZXN0YW1wIC8gVVNFQ1Nf UEVSX0RBWSAqCkBAIC0xOTQzLDggKzIwOTAsMzEgQEAgdGltZXN0YW1wdHpfdGltZShQR19G VU5DVElPTl9BUkdTKQogCSAqLwogCXJlc3VsdCA9ICgoKCh0bS0+dG1faG91ciAqIE1JTlNf UEVSX0hPVVIgKyB0bS0+dG1fbWluKSAqIFNFQ1NfUEVSX01JTlVURSkgKyB0bS0+dG1fc2Vj KSAqCiAJCQkgIFVTRUNTX1BFUl9TRUMpICsgZnNlYzsKKwkqaXNudWxsID0gZmFsc2U7CiAK LQlQR19SRVRVUk5fVElNRUFEVChyZXN1bHQpOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8q IHRpbWVzdGFtcHR6X3RpbWUoKQorICogQ29udmVydCB0aW1lc3RhbXB0eiB0byB0aW1lIGRh dGEgdHlwZS4KKyAqLworRGF0dW0KK3RpbWVzdGFtcHR6X3RpbWUoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlib29sCQlpc251bGw7CisJVGltZUFEVAkJcmVzdWx0ID0KKwkJdGltZXN0YW1w dHpfdGltZV9pbnRlcm5hbChQR19HRVRBUkdfVElNRVNUQU1QKDApLCAmaXNudWxsLCBOVUxM KTsKKworCWlmIChpc251bGwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisJZWxzZQorCQlQR19S RVRVUk5fVElNRUFEVChyZXN1bHQpOworfQorCitUaW1lQURUCit0aW1lc3RhbXB0el90aW1l X29wdF9lcnJvcihUaW1lc3RhbXBUeiB0aW1lc3RhbXAsIGJvb2wgKmlzbnVsbCwgYm9vbCAq ZXJyb3IpCit7CisJcmV0dXJuIHRpbWVzdGFtcHR6X3RpbWVfaW50ZXJuYWwodGltZXN0YW1w LCBpc251bGwsIGVycm9yKTsKIH0KIAogLyogZGF0ZXRpbWVfdGltZXN0YW1wKCkKQEAgLTIy NDksMTUgKzI0MTksOSBAQCB0bTJ0aW1ldHooc3RydWN0IHBnX3RtICp0bSwgZnNlY190IGZz ZWMsIGludCB0eiwgVGltZVR6QURUICpyZXN1bHQpCiAJcmV0dXJuIDA7CiB9CiAKLURhdHVt Ci10aW1ldHpfaW4oUEdfRlVOQ1RJT05fQVJHUykKK3N0YXRpYyBpbmxpbmUgVGltZVR6QURU ICoKK3RpbWV0el9pbl9pbnRlcm5hbChjaGFyICpzdHIsIGludDMyIHR5cG1vZCwgYm9vbCAq ZXJyb3IpCiB7Ci0JY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7Ci0KLSNp ZmRlZiBOT1RfVVNFRAotCU9pZAkJCXR5cGVsZW0gPSBQR19HRVRBUkdfT0lEKDEpOwotI2Vu ZGlmCi0JaW50MzIJCXR5cG1vZCA9IFBHX0dFVEFSR19JTlQzMigyKTsKIAlUaW1lVHpBRFQg ICpyZXN1bHQ7CiAJZnNlY190CQlmc2VjOwogCXN0cnVjdCBwZ190bSB0dCwKQEAgLTIyNzMs MTUgKzI0MzcsNDMgQEAgdGltZXR6X2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZHRlcnIgPSBQ YXJzZURhdGVUaW1lKHN0ciwgd29ya2J1Ziwgc2l6ZW9mKHdvcmtidWYpLAogCQkJCQkJICBm aWVsZCwgZnR5cGUsIE1BWERBVEVGSUVMRFMsICZuZik7CiAJaWYgKGR0ZXJyID09IDApCi0J CWR0ZXJyID0gRGVjb2RlVGltZU9ubHkoZmllbGQsIGZ0eXBlLCBuZiwgJmR0eXBlLCB0bSwg JmZzZWMsICZ0eik7CisJCWR0ZXJyID0gRGVjb2RlVGltZU9ubHkoZmllbGQsIGZ0eXBlLCBu ZiwgJmR0eXBlLCB0bSwgJmZzZWMsICZ0eiwKKwkJCQkJCQkgICAhZXJyb3IpOwogCWlmIChk dGVyciAhPSAwKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0cnVlOwor CQkJcmV0dXJuIE5VTEw7CisJCX0KKwogCQlEYXRlVGltZVBhcnNlRXJyb3IoZHRlcnIsIHN0 ciwgInRpbWUgd2l0aCB0aW1lIHpvbmUiKTsKKwl9CiAKIAlyZXN1bHQgPSAoVGltZVR6QURU ICopIHBhbGxvYyhzaXplb2YoVGltZVR6QURUKSk7CiAJdG0ydGltZXR6KHRtLCBmc2VjLCB0 eiwgcmVzdWx0KTsKIAlBZGp1c3RUaW1lRm9yVHlwbW9kKCYocmVzdWx0LT50aW1lKSwgdHlw bW9kKTsKIAotCVBHX1JFVFVSTl9USU1FVFpBRFRfUChyZXN1bHQpOworCXJldHVybiByZXN1 bHQ7Cit9CisKK0RhdHVtCit0aW1ldHpfaW4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljaGFy CSAgICpzdHIgPSBQR19HRVRBUkdfQ1NUUklORygwKTsKKworI2lmZGVmIE5PVF9VU0VECisJ T2lkCQkJdHlwZWxlbSA9IFBHX0dFVEFSR19PSUQoMSk7CisjZW5kaWYKKwlpbnQzMgkJdHlw bW9kID0gUEdfR0VUQVJHX0lOVDMyKDIpOworCisJUEdfUkVUVVJOX1RJTUVUWkFEVF9QKHRp bWV0el9pbl9pbnRlcm5hbChzdHIsIHR5cG1vZCwgTlVMTCkpOworfQorCitUaW1lVHpBRFQg KgordGltZXR6X2luX29wdF9lcnJvcihjaGFyICpzdHIsIGludDMyIHR5cG1vZCwgYm9vbCAq ZXJyb3IpCit7CisJcmV0dXJuIHRpbWV0el9pbl9pbnRlcm5hbChzdHIsIHR5cG1vZCwgZXJy b3IpOwogfQogCiBEYXR1bQpAQCAtMjgxMiwxMCArMzAwNCw5IEBAIHRpbWVfdGltZXR6KFBH X0ZVTkNUSU9OX0FSR1MpCiAvKiB0aW1lc3RhbXB0el90aW1ldHooKQogICogQ29udmVydCB0 aW1lc3RhbXAgdG8gdGltZXR6IGRhdGEgdHlwZS4KICAqLwotRGF0dW0KLXRpbWVzdGFtcHR6 X3RpbWV0eihQR19GVU5DVElPTl9BUkdTKQorc3RhdGljIGlubGluZSBUaW1lVHpBRFQgKgor dGltZXN0YW1wdHpfdGltZXR6X2ludGVybmFsKFRpbWVzdGFtcFR6IHRpbWVzdGFtcCwgYm9v bCAqZXJyb3IpCiB7Ci0JVGltZXN0YW1wVHogdGltZXN0YW1wID0gUEdfR0VUQVJHX1RJTUVT VEFNUCgwKTsKIAlUaW1lVHpBRFQgICpyZXN1bHQ7CiAJc3RydWN0IHBnX3RtIHR0LAogCQkJ ICAgKnRtID0gJnR0OwpAQCAtMjgyMywyMCArMzAxNCw0OCBAQCB0aW1lc3RhbXB0el90aW1l dHooUEdfRlVOQ1RJT05fQVJHUykKIAlmc2VjX3QJCWZzZWM7CiAKIAlpZiAoVElNRVNUQU1Q X05PVF9GSU5JVEUodGltZXN0YW1wKSkKLQkJUEdfUkVUVVJOX05VTEwoKTsKKwkJcmV0dXJu IE5VTEw7CiAKIAlpZiAodGltZXN0YW1wMnRtKHRpbWVzdGFtcCwgJnR6LCB0bSwgJmZzZWMs IE5VTEwsIE5VTEwpICE9IDApCisJeworCQlpZiAoZXJyb3IpCisJCXsKKwkJCSplcnJvciA9 IHRydWU7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJCSBl cnJtc2coInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkpOworCX0KIAogCXJlc3VsdCA9IChU aW1lVHpBRFQgKikgcGFsbG9jKHNpemVvZihUaW1lVHpBRFQpKTsKIAogCXRtMnRpbWV0eih0 bSwgZnNlYywgdHosIHJlc3VsdCk7CiAKLQlQR19SRVRVUk5fVElNRVRaQURUX1AocmVzdWx0 KTsKKwlyZXR1cm4gcmVzdWx0OwogfQogCisvKiB0aW1lc3RhbXB0el90aW1ldHooKQorICog Q29udmVydCB0aW1lc3RhbXAgdG8gdGltZXR6IGRhdGEgdHlwZS4KKyAqLworRGF0dW0KK3Rp bWVzdGFtcHR6X3RpbWV0eihQR19GVU5DVElPTl9BUkdTKQoreworCVRpbWVUekFEVCAgKnJl c3VsdCA9CisJCXRpbWVzdGFtcHR6X3RpbWV0el9pbnRlcm5hbChQR19HRVRBUkdfVElNRVNU QU1QKDApLCBOVUxMKTsKKworCWlmIChyZXN1bHQpCisJCVBHX1JFVFVSTl9USU1FVFpBRFRf UChyZXN1bHQpOworCWVsc2UKKwkJUEdfUkVUVVJOX05VTEwoKTsKK30KKworVGltZVR6QURU ICoKK3RpbWVzdGFtcHR6X3RpbWV0el9vcHRfZXJyb3IoVGltZXN0YW1wVHogdGltZXN0YW1w LCBib29sICplcnJvcikKK3sKKwlyZXR1cm4gdGltZXN0YW1wdHpfdGltZXR6X2ludGVybmFs KHRpbWVzdGFtcCwgZXJyb3IpOworfQogCiAvKiBkYXRldGltZXR6X3RpbWVzdGFtcHR6KCkK ICAqIENvbnZlcnQgZGF0ZSBhbmQgdGltZXR6IHRvIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9u ZSBkYXRhIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZXRp bWUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jCmluZGV4IDQzZmZmNTBk NDkwLi4zMjc1ZTVmZDk0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Rh dGV0aW1lLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMKQEAgLTk3 MSw3ICs5NzEsOCBAQCBQYXJzZURhdGVUaW1lKGNvbnN0IGNoYXIgKnRpbWVzdHIsIGNoYXIg KndvcmtidWYsIHNpemVfdCBidWZsZW4sCiAgKi8KIGludAogRGVjb2RlRGF0ZVRpbWUoY2hh ciAqKmZpZWxkLCBpbnQgKmZ0eXBlLCBpbnQgbmYsCi0JCQkgICBpbnQgKmR0eXBlLCBzdHJ1 Y3QgcGdfdG0gKnRtLCBmc2VjX3QgKmZzZWMsIGludCAqdHpwKQorCQkJICAgaW50ICpkdHlw ZSwgc3RydWN0IHBnX3RtICp0bSwgZnNlY190ICpmc2VjLCBpbnQgKnR6cCwKKwkJCSAgIGJv b2wgdGhyb3dfZXJyb3JzKQogewogCWludAkJCWZtYXNrID0gMCwKIAkJCQl0bWFzaywKQEAg LTExMTQsOCArMTExNSwxMyBAQCBEZWNvZGVEYXRlVGltZShjaGFyICoqZmllbGQsIGludCAq ZnR5cGUsIGludCBuZiwKIAkJCQkJCQkvKgogCQkJCQkJCSAqIFdlIHNob3VsZCByZXR1cm4g YW4gZXJyb3IgY29kZSBpbnN0ZWFkIG9mCiAJCQkJCQkJICogZXJlcG9ydCdpbmcgZGlyZWN0 bHksIGJ1dCB0aGVuIHRoZXJlIGlzIG5vIHdheQotCQkJCQkJCSAqIHRvIHJlcG9ydCB0aGUg YmFkIHRpbWUgem9uZSBuYW1lLgorCQkJCQkJCSAqIHRvIHJlcG9ydCB0aGUgYmFkIHRpbWUg em9uZSBuYW1lLiAgQnV0CisJCQkJCQkJICogdGhyb3dpbmcgZXJyb3JzIGlzIGRpc2FsbG93 ZWQsIHNpbXBseQorCQkJCQkJCSAqIHJldHVybiBlcnJvciBjb2RlLgogCQkJCQkJCSAqLwor CQkJCQkJCWlmICghdGhyb3dfZXJyb3JzKQorCQkJCQkJCQlyZXR1cm4gRFRFUlJfQkFEX0ZP Uk1BVDsKKwogCQkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJCQkJCSBlcnJtc2coInRpbWUg em9uZSBcIiVzXCIgbm90IHJlY29nbml6ZWQiLApAQCAtMTkyMSw3ICsxOTI3LDggQEAgRGV0 ZXJtaW5lVGltZVpvbmVBYmJyZXZPZmZzZXRJbnRlcm5hbChwZ190aW1lX3QgdCwgY29uc3Qg Y2hhciAqYWJiciwgcGdfdHogKnR6cCwKICAqLwogaW50CiBEZWNvZGVUaW1lT25seShjaGFy ICoqZmllbGQsIGludCAqZnR5cGUsIGludCBuZiwKLQkJCSAgIGludCAqZHR5cGUsIHN0cnVj dCBwZ190bSAqdG0sIGZzZWNfdCAqZnNlYywgaW50ICp0enApCisJCQkgICBpbnQgKmR0eXBl LCBzdHJ1Y3QgcGdfdG0gKnRtLCBmc2VjX3QgKmZzZWMsIGludCAqdHpwLAorCQkJICAgYm9v bCB0aHJvd19lcnJvcnMpCiB7CiAJaW50CQkJZm1hc2sgPSAwLAogCQkJCXRtYXNrLApAQCAt MjAyMiw2ICsyMDI5LDkgQEAgRGVjb2RlVGltZU9ubHkoY2hhciAqKmZpZWxkLCBpbnQgKmZ0 eXBlLCBpbnQgbmYsCiAJCQkJCQkJICogZXJlcG9ydCdpbmcgZGlyZWN0bHksIGJ1dCB0aGVu IHRoZXJlIGlzIG5vIHdheQogCQkJCQkJCSAqIHRvIHJlcG9ydCB0aGUgYmFkIHRpbWUgem9u ZSBuYW1lLgogCQkJCQkJCSAqLworCQkJCQkJCWlmICghdGhyb3dfZXJyb3JzKQorCQkJCQkJ CQlyZXR1cm4gRFRFUlJfQkFEX0ZPUk1BVDsKKwogCQkJCQkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJ CQkJCQkJCSBlcnJtc2coInRpbWUgem9uZSBcIiVzXCIgbm90IHJlY29nbml6ZWQiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCmluZGV4IDQ5Y2RiMjkwYWMyLi41NWU1NDg2ZjQ4 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwpAQCAtMTM5LDE4ICsxMzksMTIg QEAgYW55dGltZXN0YW1wX3R5cG1vZG91dChib29sIGlzdHosIGludDMyIHR5cG1vZCkKICAq CSBVU0VSIEkvTyBST1VUSU5FUwkJCQkJCQkJCQkJCQkJICoKICAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KIAotLyogdGltZXN0YW1wX2luKCkKLSAqIENvbnZlcnQgYSBzdHJpbmcgdG8g aW50ZXJuYWwgZm9ybS4KKy8qIHRpbWVzdGFtcF9pbl9pbnRlcm5hbCgpCisgKiBDb252ZXJ0 IGEgc3RyaW5nIHRvIGludGVybmFsIGZvcm0sIHJldHVybmluZyBlcnJvciBpbnN0ZWFkIG9m IHRocm93aW5nIGlmIG5lZWRlZC4KICAqLwotRGF0dW0KLXRpbWVzdGFtcF9pbihQR19GVU5D VElPTl9BUkdTKQorc3RhdGljIGlubGluZSBUaW1lc3RhbXAKK3RpbWVzdGFtcF9pbl9pbnRl cm5hbChjaGFyICpzdHIsIGludDMyIHR5cG1vZCwgYm9vbCAqZXJyb3IpCiB7Ci0JY2hhcgkg ICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7Ci0KLSNpZmRlZiBOT1RfVVNFRAotCU9p ZAkJCXR5cGVsZW0gPSBQR19HRVRBUkdfT0lEKDEpOwotI2VuZGlmCi0JaW50MzIJCXR5cG1v ZCA9IFBHX0dFVEFSR19JTlQzMigyKTsKIAlUaW1lc3RhbXAJcmVzdWx0OwogCWZzZWNfdAkJ ZnNlYzsKIAlzdHJ1Y3QgcGdfdG0gdHQsCkBAIC0xNjYsMTcgKzE2MCwzNCBAQCB0aW1lc3Rh bXBfaW4oUEdfRlVOQ1RJT05fQVJHUykKIAlkdGVyciA9IFBhcnNlRGF0ZVRpbWUoc3RyLCB3 b3JrYnVmLCBzaXplb2Yod29ya2J1ZiksCiAJCQkJCQkgIGZpZWxkLCBmdHlwZSwgTUFYREFU RUZJRUxEUywgJm5mKTsKIAlpZiAoZHRlcnIgPT0gMCkKLQkJZHRlcnIgPSBEZWNvZGVEYXRl VGltZShmaWVsZCwgZnR5cGUsIG5mLCAmZHR5cGUsIHRtLCAmZnNlYywgJnR6KTsKKwkJZHRl cnIgPSBEZWNvZGVEYXRlVGltZShmaWVsZCwgZnR5cGUsIG5mLCAmZHR5cGUsIHRtLCAmZnNl YywgJnR6LAorCQkJCQkJCSAgICFlcnJvcik7CiAJaWYgKGR0ZXJyICE9IDApCisJeworCQlp ZiAoZXJyb3IpCisJCXsKKwkJCSplcnJvciA9IHRydWU7CisJCQlyZXR1cm4gMDsKKwkJfQor CiAJCURhdGVUaW1lUGFyc2VFcnJvcihkdGVyciwgc3RyLCAidGltZXN0YW1wIik7CisJfQog CiAJc3dpdGNoIChkdHlwZSkKIAl7CiAJCWNhc2UgRFRLX0RBVEU6CiAJCQlpZiAodG0ydGlt ZXN0YW1wKHRtLCBmc2VjLCBOVUxMLCAmcmVzdWx0KSAhPSAwKQorCQkJeworCQkJCWlmIChl cnJvcikKKwkJCQl7CisJCQkJCSplcnJvciA9IHRydWU7CisJCQkJCXJldHVybiAwOworCQkJ CX0KKwogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEVU SU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJCQkgZXJybXNnKCJ0aW1lc3RhbXAgb3V0 IG9mIHJhbmdlOiBcIiVzXCIiLCBzdHIpKSk7CisJCQl9CiAJCQlicmVhazsKIAogCQljYXNl IERUS19FUE9DSDoKQEAgLTE5NywxMSArMjA4LDMzIEBAIHRpbWVzdGFtcF9pbihQR19GVU5D VElPTl9BUkdTKQogCQkJVElNRVNUQU1QX05PRU5EKHJlc3VsdCk7CiAJfQogCi0JQWRqdXN0 VGltZXN0YW1wRm9yVHlwbW9kKCZyZXN1bHQsIHR5cG1vZCk7CisJQWRqdXN0VGltZXN0YW1w Rm9yVHlwbW9kRXJyb3IoJnJlc3VsdCwgdHlwbW9kLCBlcnJvcik7CiAKIAlQR19SRVRVUk5f VElNRVNUQU1QKHJlc3VsdCk7CiB9CiAKKy8qIHRpbWVzdGFtcF9pbigpCisgKiBDb252ZXJ0 IGEgc3RyaW5nIHRvIGludGVybmFsIGZvcm0uCisgKi8KK0RhdHVtCit0aW1lc3RhbXBfaW4o UEdfRlVOQ1RJT05fQVJHUykKK3sKKwljaGFyCSAgICpzdHIgPSBQR19HRVRBUkdfQ1NUUklO RygwKTsKKworI2lmZGVmIE5PVF9VU0VECisJT2lkCQkJdHlwZWxlbSA9IFBHX0dFVEFSR19P SUQoMSk7CisjZW5kaWYKKwlpbnQzMgkJdHlwbW9kID0gUEdfR0VUQVJHX0lOVDMyKDIpOwor CisJUEdfUkVUVVJOX1RJTUVTVEFNUCh0aW1lc3RhbXBfaW5faW50ZXJuYWwoc3RyLCB0eXBt b2QsIE5VTEwpKTsKK30KKworVGltZXN0YW1wCit0aW1lc3RhbXBfaW5fb3B0X2Vycm9yKGNo YXIgKnN0ciwgaW50MzIgdHlwbW9kLCBib29sICplcnJvcikKK3sKKwlyZXR1cm4gdGltZXN0 YW1wX2luX2ludGVybmFsKHN0ciwgdHlwbW9kLCBlcnJvcik7Cit9CisKIC8qIHRpbWVzdGFt cF9vdXQoKQogICogQ29udmVydCBhIHRpbWVzdGFtcCB0byBleHRlcm5hbCBmb3JtLgogICov CkBAIC00MDAsMTUgKzQzMyw5IEBAIEFkanVzdFRpbWVzdGFtcEZvclR5cG1vZChUaW1lc3Rh bXAgKnRpbWUsIGludDMyIHR5cG1vZCkKIC8qIHRpbWVzdGFtcHR6X2luKCkKICAqIENvbnZl cnQgYSBzdHJpbmcgdG8gaW50ZXJuYWwgZm9ybS4KICAqLwotRGF0dW0KLXRpbWVzdGFtcHR6 X2luKFBHX0ZVTkNUSU9OX0FSR1MpCitzdGF0aWMgaW5saW5lIFRpbWVzdGFtcFR6Cit0aW1l c3RhbXB0el9pbl9pbnRlcm5hbChjaGFyICpzdHIsIGludDMyIHR5cG1vZCwgYm9vbCAqZXJy b3IpCiB7Ci0JY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7Ci0KLSNpZmRl ZiBOT1RfVVNFRAotCU9pZAkJCXR5cGVsZW0gPSBQR19HRVRBUkdfT0lEKDEpOwotI2VuZGlm Ci0JaW50MzIJCXR5cG1vZCA9IFBHX0dFVEFSR19JTlQzMigyKTsKIAlUaW1lc3RhbXBUeiBy ZXN1bHQ7CiAJZnNlY190CQlmc2VjOwogCXN0cnVjdCBwZ190bSB0dCwKQEAgLTQyNCwxNyAr NDUxLDM0IEBAIHRpbWVzdGFtcHR6X2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZHRlcnIgPSBQ YXJzZURhdGVUaW1lKHN0ciwgd29ya2J1Ziwgc2l6ZW9mKHdvcmtidWYpLAogCQkJCQkJICBm aWVsZCwgZnR5cGUsIE1BWERBVEVGSUVMRFMsICZuZik7CiAJaWYgKGR0ZXJyID09IDApCi0J CWR0ZXJyID0gRGVjb2RlRGF0ZVRpbWUoZmllbGQsIGZ0eXBlLCBuZiwgJmR0eXBlLCB0bSwg JmZzZWMsICZ0eik7CisJCWR0ZXJyID0gRGVjb2RlRGF0ZVRpbWUoZmllbGQsIGZ0eXBlLCBu ZiwgJmR0eXBlLCB0bSwgJmZzZWMsICZ0eiwKKwkJCQkJCQkgICAhZXJyb3IpOwogCWlmIChk dGVyciAhPSAwKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0cnVlOwor CQkJcmV0dXJuIDA7CisJCX0KKwogCQlEYXRlVGltZVBhcnNlRXJyb3IoZHRlcnIsIHN0ciwg InRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSIpOworCX0KIAogCXN3aXRjaCAoZHR5cGUpCiAJ ewogCQljYXNlIERUS19EQVRFOgogCQkJaWYgKHRtMnRpbWVzdGFtcCh0bSwgZnNlYywgJnR6 LCAmcmVzdWx0KSAhPSAwKQorCQkJeworCQkJCWlmIChlcnJvcikKKwkJCQl7CisJCQkJCSpl cnJvciA9IHRydWU7CisJCQkJCXJldHVybiAwOworCQkJCX0KKwogCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5H RSksCiAJCQkJCQkgZXJybXNnKCJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlOiBcIiVzXCIiLCBz dHIpKSk7CisJCQl9CiAJCQlicmVhazsKIAogCQljYXNlIERUS19FUE9DSDoKQEAgLTQ1NSw5 ICs0OTksMzAgQEAgdGltZXN0YW1wdHpfaW4oUEdfRlVOQ1RJT05fQVJHUykKIAkJCVRJTUVT VEFNUF9OT0VORChyZXN1bHQpOwogCX0KIAotCUFkanVzdFRpbWVzdGFtcEZvclR5cG1vZCgm cmVzdWx0LCB0eXBtb2QpOworCUFkanVzdFRpbWVzdGFtcEZvclR5cG1vZEVycm9yKCZyZXN1 bHQsIHR5cG1vZCwgZXJyb3IpOwogCi0JUEdfUkVUVVJOX1RJTUVTVEFNUFRaKHJlc3VsdCk7 CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyogdGltZXN0YW1wdHpfaW4oKQorICogQ29udmVy dCBhIHN0cmluZyB0byBpbnRlcm5hbCBmb3JtLgorICovCitEYXR1bQordGltZXN0YW1wdHpf aW4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljaGFyCSAgICpzdHIgPSBQR19HRVRBUkdfQ1NU UklORygwKTsKKyNpZmRlZiBOT1RfVVNFRAorCU9pZAkJCXR5cGVsZW0gPSBQR19HRVRBUkdf T0lEKDEpOworI2VuZGlmCisJaW50MzIJCXR5cG1vZCA9IFBHX0dFVEFSR19JTlQzMigyKTsK KworCVBHX1JFVFVSTl9USU1FU1RBTVBUWih0aW1lc3RhbXB0el9pbl9pbnRlcm5hbChzdHIs IHR5cG1vZCwgTlVMTCkpOworfQorCitUaW1lc3RhbXBUegordGltZXN0YW1wdHpfaW5fb3B0 X2Vycm9yKGNoYXIgKnN0ciwgaW50MzIgdHlwbW9kLCBib29sICplcnJvcikKK3sKKwlyZXR1 cm4gdGltZXN0YW1wdHpfaW5faW50ZXJuYWwoc3RyLCB0eXBtb2QsIGVycm9yKTsKIH0KIAog LyoKQEAgLTU2MTQsOCArNTY3OSw4IEBAIHRpbWVzdGFtcHR6X3RpbWVzdGFtcChQR19GVU5D VElPTl9BUkdTKQogCVBHX1JFVFVSTl9USU1FU1RBTVAodGltZXN0YW1wdHoydGltZXN0YW1w KHRpbWVzdGFtcCkpOwogfQogCi1zdGF0aWMgVGltZXN0YW1wCi10aW1lc3RhbXB0ejJ0aW1l c3RhbXAoVGltZXN0YW1wVHogdGltZXN0YW1wKQorVGltZXN0YW1wCit0aW1lc3RhbXB0ejJ0 aW1lc3RhbXBfb3B0X2Vycm9yKFRpbWVzdGFtcFR6IHRpbWVzdGFtcCwgYm9vbCAqZXJyb3Ip CiB7CiAJVGltZXN0YW1wCXJlc3VsdDsKIAlzdHJ1Y3QgcGdfdG0gdHQsCkBAIC01NjI4LDE3 ICs1NjkzLDQwIEBAIHRpbWVzdGFtcHR6MnRpbWVzdGFtcChUaW1lc3RhbXBUeiB0aW1lc3Rh bXApCiAJZWxzZQogCXsKIAkJaWYgKHRpbWVzdGFtcDJ0bSh0aW1lc3RhbXAsICZ0eiwgdG0s ICZmc2VjLCBOVUxMLCBOVUxMKSAhPSAwKQorCQl7CisJCQlpZiAoZXJyb3IpCisJCQl7CisJ CQkJKmVycm9yID0gdHJ1ZTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwogCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFO R0UpLAogCQkJCQkgZXJybXNnKCJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIikpKTsKKwkJfQor CiAJCWlmICh0bTJ0aW1lc3RhbXAodG0sIGZzZWMsIE5VTEwsICZyZXN1bHQpICE9IDApCisJ CXsKKwkJCWlmIChlcnJvcikKKwkJCXsKKwkJCQkqZXJyb3IgPSB0cnVlOworCQkJCXJldHVy biAwOworCQkJfQorCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJCSBlcnJtc2coInRpbWVzdGFt cCBvdXQgb2YgcmFuZ2UiKSkpOworCQl9CiAJfQogCXJldHVybiByZXN1bHQ7CiB9CiAKK3N0 YXRpYyBUaW1lc3RhbXAKK3RpbWVzdGFtcHR6MnRpbWVzdGFtcChUaW1lc3RhbXBUeiB0aW1l c3RhbXApCit7CisJcmV0dXJuIHRpbWVzdGFtcHR6MnRpbWVzdGFtcF9vcHRfZXJyb3IodGlt ZXN0YW1wLCBOVUxMKTsKK30KKwogLyogdGltZXN0YW1wdHpfem9uZSgpCiAgKiBFdmFsdWF0 ZSB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUgdHlwZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWUg em9uZS4KICAqIFJldHVybnMgYSB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYwppbmRleCA5ZmJiZmIxYmU1NC4uNzg3N2JjZTYwNDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYwpAQCAtMTI4NjYsNyArMTI4NjYsNyBAQCBjaGVja19yZWNvdmVyeV90 YXJnZXRfdGltZShjaGFyICoqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3Vy Y2UpCiAJCQlkdGVyciA9IFBhcnNlRGF0ZVRpbWUoc3RyLCB3b3JrYnVmLCBzaXplb2Yod29y a2J1ZiksCiAJCQkJCQkJCSAgZmllbGQsIGZ0eXBlLCBNQVhEQVRFRklFTERTLCAmbmYpOwog CQkJaWYgKGR0ZXJyID09IDApCi0JCQkJZHRlcnIgPSBEZWNvZGVEYXRlVGltZShmaWVsZCwg ZnR5cGUsIG5mLCAmZHR5cGUsIHRtLCAmZnNlYywgJnR6KTsKKwkJCQlkdGVyciA9IERlY29k ZURhdGVUaW1lKGZpZWxkLCBmdHlwZSwgbmYsICZkdHlwZSwgdG0sICZmc2VjLCAmdHosIHRy dWUpOwogCQkJaWYgKGR0ZXJyICE9IDApCiAJCQkJcmV0dXJuIGZhbHNlOwogCQkJaWYgKGR0 eXBlICE9IERUS19EQVRFKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZGF0ZS5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvZGF0ZS5oCmluZGV4IDkxYWUyNDI1NGRmLi5mMjkxNjhh MDI1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZGF0ZS5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL2RhdGUuaApAQCAtODcsNCArODcsMTcgQEAgZXh0ZXJuIGJvb2wgdGlt ZV9vdmVyZmxvd3MoaW50IGhvdXIsIGludCBtaW4sIGludCBzZWMsIGZzZWNfdCBmc2VjKTsK IGV4dGVybiBib29sIGZsb2F0X3RpbWVfb3ZlcmZsb3dzKGludCBob3VyLCBpbnQgbWluLCBk b3VibGUgc2VjKTsKIGV4dGVybiB2b2lkIEFkanVzdFRpbWVGb3JUeXBtb2QoVGltZUFEVCAq dGltZSwgaW50MzIgdHlwbW9kKTsKIAorZXh0ZXJuIERhdGVBRFQgdGltZXN0YW1wX2RhdGVf b3B0X2Vycm9yKFRpbWVzdGFtcCB0aW1lc3RhbXAsIGJvb2wgKmVycm9yKTsKK2V4dGVybiBU aW1lQURUIHRpbWVzdGFtcF90aW1lX29wdF9lcnJvcihUaW1lc3RhbXAgdGltZXN0YW1wLAor CQkJCQkJCQkJCWJvb2wgKmlzbnVsbCwgYm9vbCAqZXJyb3IpOworCitleHRlcm4gRGF0ZUFE VCB0aW1lc3RhbXB0el9kYXRlX29wdF9lcnJvcihUaW1lc3RhbXAgdGltZXN0YW1wLCBib29s ICplcnJvcik7CitleHRlcm4gVGltZUFEVCB0aW1lc3RhbXB0el90aW1lX29wdF9lcnJvcihU aW1lc3RhbXBUeiB0aW1lc3RhbXAsCisJCQkJCQkJCQkJICBib29sICppc251bGwsIGJvb2wg KmVycm9yKTsKK2V4dGVybiBUaW1lVHpBRFQgKnRpbWVzdGFtcHR6X3RpbWV0el9vcHRfZXJy b3IoVGltZXN0YW1wVHogdGltZXN0YW1wLAorCQkJCQkJCQkJCQkgICBib29sICplcnJvcik7 CitleHRlcm4gRGF0ZUFEVCBkYXRlX2luX29wdF9lcnJvcihjaGFyICpzdHIsIGJvb2wgKmVy cm9yKTsKK2V4dGVybiBUaW1lQURUIHRpbWVfaW5fb3B0X2Vycm9yKGNoYXIgKnN0ciwgaW50 MzIgdHlwbW9kLCBib29sICplcnJvcik7CitleHRlcm4gVGltZVR6QURUICp0aW1ldHpfaW5f b3B0X2Vycm9yKGNoYXIgKnN0ciwgaW50MzIgdHlwbW9kLCBib29sICplcnJvcik7CisKICNl bmRpZgkJCQkJCQkvKiBEQVRFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2RhdGV0aW1lLmggYi9zcmMvaW5jbHVkZS91dGlscy9kYXRldGltZS5oCmluZGV4IDQ1Mjdl ODI1MTc3Li42ODI0MWQ3YzRjYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZGF0 ZXRpbWUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9kYXRldGltZS5oCkBAIC0yOTUsMTEg KzI5NSwxMyBAQCBleHRlcm4gaW50CVBhcnNlRGF0ZVRpbWUoY29uc3QgY2hhciAqdGltZXN0 ciwgY2hhciAqd29ya2J1Ziwgc2l6ZV90IGJ1ZmxlbiwKIAkJCQkJCSAgaW50IG1heGZpZWxk cywgaW50ICpudW1maWVsZHMpOwogZXh0ZXJuIGludAlEZWNvZGVEYXRlVGltZShjaGFyICoq ZmllbGQsIGludCAqZnR5cGUsCiAJCQkJCQkgICBpbnQgbmYsIGludCAqZHR5cGUsCi0JCQkJ CQkgICBzdHJ1Y3QgcGdfdG0gKnRtLCBmc2VjX3QgKmZzZWMsIGludCAqdHpwKTsKKwkJCQkJ CSAgIHN0cnVjdCBwZ190bSAqdG0sIGZzZWNfdCAqZnNlYywgaW50ICp0enAsCisJCQkJCQkg ICBib29sIHRocm93X2Vycm9ycyk7CiBleHRlcm4gaW50CURlY29kZVRpbWV6b25lKGNoYXIg KnN0ciwgaW50ICp0enApOwogZXh0ZXJuIGludAlEZWNvZGVUaW1lT25seShjaGFyICoqZmll bGQsIGludCAqZnR5cGUsCiAJCQkJCQkgICBpbnQgbmYsIGludCAqZHR5cGUsCi0JCQkJCQkg ICBzdHJ1Y3QgcGdfdG0gKnRtLCBmc2VjX3QgKmZzZWMsIGludCAqdHpwKTsKKwkJCQkJCSAg IHN0cnVjdCBwZ190bSAqdG0sIGZzZWNfdCAqZnNlYywgaW50ICp0enAsCisJCQkJCQkgICBi b29sIHRocm93X2Vycm9ycyk7CiBleHRlcm4gaW50CURlY29kZUludGVydmFsKGNoYXIgKipm aWVsZCwgaW50ICpmdHlwZSwgaW50IG5mLCBpbnQgcmFuZ2UsCiAJCQkJCQkgICBpbnQgKmR0 eXBlLCBzdHJ1Y3QgcGdfaXRtX2luICppdG1faW4pOwogZXh0ZXJuIGludAlEZWNvZGVJU084 NjAxSW50ZXJ2YWwoY2hhciAqc3RyLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv dGltZXN0YW1wLmggYi9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaAppbmRleCBlZGYz YTk3MzE4Ni4uMjY4NWQxNDM0MmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Rp bWVzdGFtcC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCkBAIC0xMDIs OCArMTAyLDE0IEBAIGV4dGVybiBpbnQJdGltZXN0YW1wX2NtcF9pbnRlcm5hbChUaW1lc3Rh bXAgZHQxLCBUaW1lc3RhbXAgZHQyKTsKIAogZXh0ZXJuIFRpbWVzdGFtcFR6IHRpbWVzdGFt cDJ0aW1lc3RhbXB0el9vcHRfb3ZlcmZsb3coVGltZXN0YW1wIHRpbWVzdGFtcCwKIAkJCQkJ CQkJCQkJCQkgIGludCAqb3ZlcmZsb3cpOworZXh0ZXJuIFRpbWVzdGFtcCB0aW1lc3RhbXB0 ejJ0aW1lc3RhbXBfb3B0X2Vycm9yKFRpbWVzdGFtcFR6IHRpbWVzdGFtcCwKKwkJCQkJCQkJ CQkJCSBib29sICplcnJvcik7CiBleHRlcm4gaW50MzIgdGltZXN0YW1wX2NtcF90aW1lc3Rh bXB0el9pbnRlcm5hbChUaW1lc3RhbXAgdGltZXN0YW1wVmFsLAogCQkJCQkJCQkJCQkJVGlt ZXN0YW1wVHogZHQyKTsKK2V4dGVybiBUaW1lc3RhbXAgdGltZXN0YW1wX2luX29wdF9lcnJv cihjaGFyICpzdHIsIGludDMyIHR5cG1vZCwKKwkJCQkJCQkJCQlib29sICplcnJvcik7Citl eHRlcm4gVGltZXN0YW1wVHogdGltZXN0YW1wdHpfaW5fb3B0X2Vycm9yKGNoYXIgKnN0ciwg aW50MzIgdHlwbW9kLAorCQkJCQkJCQkJCQlib29sICplcnJvcik7CiAKIGV4dGVybiBpbnQJ aXNvd2VlazJqKGludCB5ZWFyLCBpbnQgd2Vlayk7CiBleHRlcm4gdm9pZCBpc293ZWVrMmRh dGUoaW50IHdveSwgaW50ICp5ZWFyLCBpbnQgKm1vbiwgaW50ICptZGF5KTsKLS0gCjIuMTcu MQoK --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0006-Add-safe-input-function-for-jsonb.patch" Content-Disposition: attachment; filename="v10-0006-Add-safe-input-function-for-jsonb.patch" Content-Transfer-Encoding: base64 RnJvbSBjZmRiZjRhN2Y2ZGExNzA5NmU4ZmYxYTI1MzQ0NTI2NDdkZTI4MmYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjkgQXVnIDIwMjIgMjM6NTY6NDUgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwNi8xMF0gQWRkIHNhZmUgaW5wdXQgZnVuY3Rpb24gZm9yIGpzb25i CgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIHwgMjYgKysrKysrKysrKysr KysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmggICAgIHwgIDIgKysK IDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IGY3MDBjNWI0YzkzLi4xZGE1MTlkYWFlZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTQ2LDcgKzQ2LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg SnNvbmJBZ2dTdGF0ZQogCU9pZAkJCXZhbF9vdXRwdXRfZnVuYzsKIH0gSnNvbmJBZ2dTdGF0 ZTsKIAotc3RhdGljIGlubGluZSBEYXR1bSBqc29uYl9mcm9tX2NzdHJpbmcoY2hhciAqanNv biwgaW50IGxlbiwgYm9vbCB1bmlxdWVfa2V5cyk7CiBzdGF0aWMgc2l6ZV90IGNoZWNrU3Ry aW5nTGVuKHNpemVfdCBsZW4pOwogc3RhdGljIHZvaWQganNvbmJfaW5fb2JqZWN0X3N0YXJ0 KHZvaWQgKnBzdGF0ZSk7CiBzdGF0aWMgdm9pZCBqc29uYl9pbl9vYmplY3RfZW5kKHZvaWQg KnBzdGF0ZSk7CkBAIC03Nyw3ICs3Niw3IEBAIGpzb25iX2luKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CiAJY2hhcgkgICAqanNvbiA9IFBHX0dFVEFSR19DU1RSSU5HKDApOwogCi0JcmV0dXJu IGpzb25iX2Zyb21fY3N0cmluZyhqc29uLCBzdHJsZW4oanNvbiksIGZhbHNlKTsKKwlQR19S RVRVUk5fREFUVU0oanNvbmJfZnJvbV9jc3RyaW5nKGpzb24sIHN0cmxlbihqc29uKSwgZmFs c2UsIE5VTEwpKTsKIH0KIAogLyoKQEAgLTEwMSw3ICsxMDAsNyBAQCBqc29uYl9yZWN2KFBH X0ZVTkNUSU9OX0FSR1MpCiAJZWxzZQogCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQganNv bmIgdmVyc2lvbiBudW1iZXIgJWQiLCB2ZXJzaW9uKTsKIAotCXJldHVybiBqc29uYl9mcm9t X2NzdHJpbmcoc3RyLCBuYnl0ZXMsIGZhbHNlKTsKKwlyZXR1cm4ganNvbmJfZnJvbV9jc3Ry aW5nKHN0ciwgbmJ5dGVzLCBmYWxzZSwgTlVMTCk7CiB9CiAKIC8qCkBAIC0xNDcsNyArMTQ2 LDcgQEAganNvbmJfZnJvbV90ZXh0KHRleHQgKmpzLCBib29sIHVuaXF1ZV9rZXlzKQogewog CXJldHVybiBqc29uYl9mcm9tX2NzdHJpbmcoVkFSREFUQV9BTlkoanMpLAogCQkJCQkJCSAg VkFSU0laRV9BTllfRVhIRFIoanMpLAotCQkJCQkJCSAgdW5pcXVlX2tleXMpOworCQkJCQkJ CSAgdW5pcXVlX2tleXMsIE5VTEwpOwogfQogCiAvKgpAQCAtMjM5LDEyICsyMzgsMTMgQEAg anNvbmJfdHlwZW9mKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKgogICogVXNlcyB0aGUganNvbiBw YXJzZXIgKHdpdGggaG9va3MpIHRvIGNvbnN0cnVjdCBhIGpzb25iLgogICovCi1zdGF0aWMg aW5saW5lIERhdHVtCi1qc29uYl9mcm9tX2NzdHJpbmcoY2hhciAqanNvbiwgaW50IGxlbiwg Ym9vbCB1bmlxdWVfa2V5cykKK0RhdHVtCitqc29uYl9mcm9tX2NzdHJpbmcoY2hhciAqanNv biwgaW50IGxlbiwgYm9vbCB1bmlxdWVfa2V5cywgYm9vbCAqZXJyb3IpCiB7CiAJSnNvbkxl eENvbnRleHQgKmxleDsKIAlKc29uYkluU3RhdGUgc3RhdGU7CiAJSnNvblNlbUFjdGlvbiBz ZW07CisJSnNvblBhcnNlRXJyb3JUeXBlIHJlc3VsdDsKIAogCW1lbXNldCgmc3RhdGUsIDAs IHNpemVvZihzdGF0ZSkpOwogCW1lbXNldCgmc2VtLCAwLCBzaXplb2Yoc2VtKSk7CkBAIC0y NjEsMTAgKzI2MSwyMCBAQCBqc29uYl9mcm9tX2NzdHJpbmcoY2hhciAqanNvbiwgaW50IGxl biwgYm9vbCB1bmlxdWVfa2V5cykKIAlzZW0uc2NhbGFyID0ganNvbmJfaW5fc2NhbGFyOwog CXNlbS5vYmplY3RfZmllbGRfc3RhcnQgPSBqc29uYl9pbl9vYmplY3RfZmllbGRfc3RhcnQ7 CiAKLQlwZ19wYXJzZV9qc29uX29yX2VyZXBvcnQobGV4LCAmc2VtKTsKKwlyZXN1bHQgPSBw Z19wYXJzZV9qc29uKGxleCwgJnNlbSk7CisJaWYgKHJlc3VsdCAhPSBKU09OX1NVQ0NFU1Mp CisJeworCQlpZiAoZXJyb3IpCisJCXsKKwkJCSplcnJvciA9IHRydWU7CisJCQlyZXR1cm4g KERhdHVtKSAwOworCQl9CisKKwkJanNvbl9lcmVwb3J0X2Vycm9yKHJlc3VsdCwgbGV4KTsK Kwl9CiAKIAkvKiBhZnRlciBwYXJzaW5nLCB0aGUgaXRlbSBtZW1iZXIgaGFzIHRoZSBjb21w b3NlZCBqc29uYiBzdHJ1Y3R1cmUgKi8KLQlQR19SRVRVUk5fUE9JTlRFUihKc29uYlZhbHVl VG9Kc29uYihzdGF0ZS5yZXMpKTsKKwlyZXR1cm4gSnNvbmJQR2V0RGF0dW0oSnNvbmJWYWx1 ZVRvSnNvbmIoc3RhdGUucmVzKSk7CiB9CiAKIHN0YXRpYyBzaXplX3QKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5o CmluZGV4IGJhZTQ2NmI1MjM0Li5kNTU3NGZhYTc5ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmIuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oCkBAIC00 MjAsNiArNDIwLDggQEAgZXh0ZXJuIHZvaWQgSnNvbmJIYXNoU2NhbGFyVmFsdWVFeHRlbmRl ZChjb25zdCBKc29uYlZhbHVlICpzY2FsYXJWYWwsCiAKIC8qIGpzb25iLmMgc3VwcG9ydCBm dW5jdGlvbnMgKi8KIGV4dGVybiBEYXR1bSBqc29uYl9mcm9tX3RleHQodGV4dCAqanMsIGJv b2wgdW5pcXVlX2tleXMpOworZXh0ZXJuIERhdHVtIGpzb25iX2Zyb21fY3N0cmluZyhjaGFy ICpqc29uLCBpbnQgbGVuLCBib29sIHVuaXF1ZV9rZXlzLAorCQkJCQkJCQlib29sICplcnJv cik7CiBleHRlcm4gY2hhciAqSnNvbmJUb0NTdHJpbmcoU3RyaW5nSW5mbyBvdXQsIEpzb25i Q29udGFpbmVyICppbiwKIAkJCQkJCQlpbnQgZXN0aW1hdGVkX2xlbik7CiBleHRlcm4gY2hh ciAqSnNvbmJUb0NTdHJpbmdJbmRlbnQoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFpbmVy ICppbiwKLS0gCjIuMTcuMQoK --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0007-Remove-subtransactions-in-SQL-JSON-execution.patch" Content-Disposition: attachment; filename*0="v10-0007-Remove-subtransactions-in-SQL-JSON-execution.patch" Content-Transfer-Encoding: base64 RnJvbSAyNzIyODgyZmYwZWQ0NzZhZmU1YTYzMTllMTZkMDQzOTIyMzJiNDIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMjIgMjM6MDE6MzAgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwNy8xMF0gUmVtb3ZlIHN1YnRyYW5zYWN0aW9ucyBpbiBTUUwvSlNP TiBleGVjdXRpb24KCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAg ICAgICAgICB8IDE4MCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVy cC5jICAgICAgIHwgOTQ4ICsrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9qaXQv bGx2bS9sbHZtaml0X2V4cHIuYyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9qaXQv bGx2bS9sbHZtaml0X3R5cGVzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgIHwgIDkxICstCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAgICAgIHwgIDczICstCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgIHwgMjI2ICsrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbnBhdGguYyAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgIHwgIDQ5ICstCiBzcmMvaW5jbHVkZS9u b2Rlcy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgIHwgIDM2ICstCiBzcmMvaW5jbHVkZS9v cHRpbWl6ZXIvY2xhdXNlcy5oICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2pzb25wYXRoLmggICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQgfCAzMjcgKysrKystLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwgICAgICB8ICA3MiArLQogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICB8ICAgMSAtCiAxNSBmaWxlcyBj aGFuZ2VkLCAxMTM0IGluc2VydGlvbnMoKyksIDg4NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYwppbmRleCBkMGE1N2M3YWFlZS4uZjUwZTBkNzAzZjggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtODYsNyArODYsOSBAQCBzdGF0aWMgdm9pZCBF eGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpzdGF0ZSwgQWdnU3RhdGUgKmFnZ3N0 YXRlLAogCQkJCQkJCQkgIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBBZ2dTdGF0ZVBlclRy YW5zIHBlcnRyYW5zLAogCQkJCQkJCQkgIGludCB0cmFuc25vLCBpbnQgc2V0bm8sIGludCBz ZXRvZmYsIGJvb2wgaXNoYXNoLAogCQkJCQkJCQkgIGJvb2wgbnVsbGNoZWNrKTsKLQorc3Rh dGljIHZvaWQgRXhlY0luaXRKc29uRXhwcihKc29uRXhwciAqamV4cHIsIEV4cHJTdGF0ZSAq c3RhdGUsCisJCQkJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwKKwkJCQkJCQkgRGF0dW0g KnJlc3YsIGJvb2wgKnJlc251bGwpOwogCiBzdGF0aWMgRXhwclN0YXRlICoKIEV4ZWNJbml0 RXhwckludGVybmFsKEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50LCBQYXJhbUxpc3RJ bmZvIGV4dF9wYXJhbXMsCkBAIC0yNTU5LDExNCArMjU2MSw5IEBAIEV4ZWNJbml0RXhwclJl YyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJfQogCiAJCWNhc2UgVF9Kc29u RXhwcjoKLQkJCXsKLQkJCQlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHBy LCBub2RlKTsKLQkJCQlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9m KEpzb25FeHByU3RhdGUpKTsKLQkJCQlMaXN0Q2VsbCAgICphcmdleHBybGM7Ci0JCQkJTGlz dENlbGwgICAqYXJnbmFtZWxjOwotCi0JCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0pTT05F WFBSOwotCQkJCXNjcmF0Y2guZC5qc29uZXhwci5qc2VzdGF0ZSA9IGpzZXN0YXRlOwotCi0J CQkJanNlc3RhdGUtPmpzZXhwciA9IGpleHByOwotCi0JCQkJanNlc3RhdGUtPmZvcm1hdHRl ZF9leHByID0KLQkJCQkJcGFsbG9jKHNpemVvZigqanNlc3RhdGUtPmZvcm1hdHRlZF9leHBy KSk7Ci0KLQkJCQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPmZvcm1hdHRlZF9l eHByLCBzdGF0ZSwKLQkJCQkJCQkJJmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci0+dmFsdWUs Ci0JCQkJCQkJCSZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHItPmlzbnVsbCk7Ci0KLQkJCQlq c2VzdGF0ZS0+cGF0aHNwZWMgPQotCQkJCQlwYWxsb2Moc2l6ZW9mKCpqc2VzdGF0ZS0+cGF0 aHNwZWMpKTsKLQotCQkJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+cGF0aF9z cGVjLCBzdGF0ZSwKLQkJCQkJCQkJJmpzZXN0YXRlLT5wYXRoc3BlYy0+dmFsdWUsCi0JCQkJ CQkJCSZqc2VzdGF0ZS0+cGF0aHNwZWMtPmlzbnVsbCk7Ci0KLQkJCQlqc2VzdGF0ZS0+cmVz X2V4cHIgPQotCQkJCQlwYWxsb2Moc2l6ZW9mKCpqc2VzdGF0ZS0+cmVzX2V4cHIpKTsKLQot CQkJCWpzZXN0YXRlLT5yZXN1bHRfZXhwciA9IGpleHByLT5yZXN1bHRfY29lcmNpb24KLQkJ CQkJPyBFeGVjSW5pdEV4cHJXaXRoQ2FzZVZhbHVlKChFeHByICopIGpleHByLT5yZXN1bHRf Y29lcmNpb24tPmV4cHIsCi0JCQkJCQkJCQkJCQlzdGF0ZS0+cGFyZW50LAotCQkJCQkJCQkJ CQkJJmpzZXN0YXRlLT5yZXNfZXhwci0+dmFsdWUsCi0JCQkJCQkJCQkJCQkmanNlc3RhdGUt PnJlc19leHByLT5pc251bGwpCi0JCQkJCTogTlVMTDsKLQotCQkJCWpzZXN0YXRlLT5kZWZh dWx0X29uX2VtcHR5ID0gIWpleHByLT5vbl9lbXB0eSA/IE5VTEwgOgotCQkJCQlFeGVjSW5p dEV4cHIoKEV4cHIgKikgamV4cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIsCi0JCQkJCQkJ CSBzdGF0ZS0+cGFyZW50KTsKLQotCQkJCWpzZXN0YXRlLT5kZWZhdWx0X29uX2Vycm9yID0K LQkJCQkJRXhlY0luaXRFeHByKChFeHByICopIGpleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9l eHByLAotCQkJCQkJCQkgc3RhdGUtPnBhcmVudCk7Ci0KLQkJCQlpZiAoamV4cHItPm9taXRf cXVvdGVzIHx8Ci0JCQkJCShqZXhwci0+cmVzdWx0X2NvZXJjaW9uICYmIGpleHByLT5yZXN1 bHRfY29lcmNpb24tPnZpYV9pbykpCi0JCQkJewotCQkJCQlPaWQJCQl0eXBpbnB1dDsKLQot CQkJCQkvKiBsb29rdXAgdGhlIHJlc3VsdCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24gKi8KLQkJ CQkJZ2V0VHlwZUlucHV0SW5mbyhqZXhwci0+cmV0dXJuaW5nLT50eXBpZCwgJnR5cGlucHV0 LAotCQkJCQkJCQkJICZqc2VzdGF0ZS0+aW5wdXQudHlwaW9wYXJhbSk7Ci0JCQkJCWZtZ3Jf aW5mbyh0eXBpbnB1dCwgJmpzZXN0YXRlLT5pbnB1dC5mdW5jKTsKLQkJCQl9Ci0KLQkJCQlq c2VzdGF0ZS0+YXJncyA9IE5JTDsKLQotCQkJCWZvcmJvdGgoYXJnZXhwcmxjLCBqZXhwci0+ cGFzc2luZ192YWx1ZXMsCi0JCQkJCQlhcmduYW1lbGMsIGpleHByLT5wYXNzaW5nX25hbWVz KQotCQkJCXsKLQkJCQkJRXhwcgkgICAqYXJnZXhwciA9IChFeHByICopIGxmaXJzdChhcmdl eHBybGMpOwotCQkJCQlTdHJpbmcJICAgKmFyZ25hbWUgPSBsZmlyc3Rfbm9kZShTdHJpbmcs IGFyZ25hbWVsYyk7Ci0JCQkJCUpzb25QYXRoVmFyaWFibGVFdmFsQ29udGV4dCAqdmFyID0g cGFsbG9jKHNpemVvZigqdmFyKSk7Ci0KLQkJCQkJdmFyLT5uYW1lID0gcHN0cmR1cChhcmdu YW1lLT5zdmFsKTsKLQkJCQkJdmFyLT50eXBpZCA9IGV4cHJUeXBlKChOb2RlICopIGFyZ2V4 cHIpOwotCQkJCQl2YXItPnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5vZGUgKikgYXJnZXhwcik7 Ci0JCQkJCXZhci0+ZXN0YXRlID0gRXhlY0luaXRFeHByKGFyZ2V4cHIsIHN0YXRlLT5wYXJl bnQpOwotCQkJCQl2YXItPmVjb250ZXh0ID0gTlVMTDsKLQkJCQkJdmFyLT5tY3h0ID0gTlVM TDsKLQkJCQkJdmFyLT5ldmFsdWF0ZWQgPSBmYWxzZTsKLQkJCQkJdmFyLT52YWx1ZSA9IChE YXR1bSkgMDsKLQkJCQkJdmFyLT5pc251bGwgPSB0cnVlOwotCi0JCQkJCWpzZXN0YXRlLT5h cmdzID0KLQkJCQkJCWxhcHBlbmQoanNlc3RhdGUtPmFyZ3MsIHZhcik7Ci0JCQkJfQotCi0J CQkJanNlc3RhdGUtPmNhY2hlID0gTlVMTDsKLQotCQkJCWlmIChqZXhwci0+Y29lcmNpb25z KQotCQkJCXsKLQkJCQkJSnNvbkNvZXJjaW9uICoqY29lcmNpb247Ci0JCQkJCXN0cnVjdCBK c29uQ29lcmNpb25TdGF0ZSAqY3N0YXRlOwotCQkJCQlEYXR1bQkgICAqY2FzZXZhbDsKLQkJ CQkJYm9vbAkgICAqY2FzZW51bGw7Ci0KLQkJCQkJanNlc3RhdGUtPmNvZXJjaW9uX2V4cHIg PQotCQkJCQkJcGFsbG9jKHNpemVvZigqanNlc3RhdGUtPmNvZXJjaW9uX2V4cHIpKTsKLQot CQkJCQljYXNldmFsID0gJmpzZXN0YXRlLT5jb2VyY2lvbl9leHByLT52YWx1ZTsKLQkJCQkJ Y2FzZW51bGwgPSAmanNlc3RhdGUtPmNvZXJjaW9uX2V4cHItPmlzbnVsbDsKLQotCQkJCQlm b3IgKGNzdGF0ZSA9ICZqc2VzdGF0ZS0+Y29lcmNpb25zLm51bGwsCi0JCQkJCQkgY29lcmNp b24gPSAmamV4cHItPmNvZXJjaW9ucy0+bnVsbDsKLQkJCQkJCSBjb2VyY2lvbiA8PSAmamV4 cHItPmNvZXJjaW9ucy0+Y29tcG9zaXRlOwotCQkJCQkJIGNvZXJjaW9uKyssIGNzdGF0ZSsr KQotCQkJCQl7Ci0JCQkJCQljc3RhdGUtPmNvZXJjaW9uID0gKmNvZXJjaW9uOwotCQkJCQkJ Y3N0YXRlLT5lc3RhdGUgPSAqY29lcmNpb24gPwotCQkJCQkJCUV4ZWNJbml0RXhwcldpdGhD YXNlVmFsdWUoKEV4cHIgKikgKCpjb2VyY2lvbiktPmV4cHIsCi0JCQkJCQkJCQkJCQkJICBz dGF0ZS0+cGFyZW50LAotCQkJCQkJCQkJCQkJCSAgY2FzZXZhbCwgY2FzZW51bGwpIDogTlVM TDsKLQkJCQkJfQotCQkJCX0KLQotCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3Jh dGNoKTsKLQkJCQlicmVhazsKLQkJCX0KKwkJCUV4ZWNJbml0SnNvbkV4cHIoY2FzdE5vZGUo SnNvbkV4cHIsIG5vZGUpLCBzdGF0ZSwgJnNjcmF0Y2gsCisJCQkJCQkJIHJlc3YsIHJlc251 bGwpOworCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgbm9kZSB0eXBlOiAlZCIsCkBAIC00MjU3LDMgKzQxNTQsNjggQEAgRXhlY0J1aWxk UGFyYW1TZXRFcXVhbChUdXBsZURlc2MgZGVzYywKIAogCXJldHVybiBzdGF0ZTsKIH0KKwor c3RhdGljIHZvaWQKK0V4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpleHByLCBFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsCisJCQkJIERhdHVtICpyZXN2LCBi b29sICpyZXNudWxsKQoreworCUpzb25FeHByU3RhdGUgKmpzZXN0YXRlOworCUxpc3RDZWxs ICAgKmFyZ2V4cHJsYzsKKwlMaXN0Q2VsbCAgICphcmduYW1lbGM7CisKKwkvKiBKU09OX1RB QkxFIHByZXVkby1mdW5jdGlvbiByZXR1cm5zIGNvbnRleHQgaXRlbSBhcyBhIHJlc3VsdCAq LworCWlmIChqZXhwci0+b3AgPT0gSlNPTl9UQUJMRV9PUCkKKwl7CisJCUV4ZWNJbml0RXhw clJlYygoRXhwciAqKSBqZXhwci0+Zm9ybWF0dGVkX2V4cHIsIHN0YXRlLAorCQkJCQkJcmVz diwgcmVzbnVsbCk7CisJCXJldHVybjsKKwl9CisKKwlqc2VzdGF0ZSA9IHBhbGxvYzAoc2l6 ZW9mKEpzb25FeHByU3RhdGUpKTsKKwlqc2VzdGF0ZS0+anNleHByID0gamV4cHI7CisKKwlz Y3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pTT05FWFBSOworCXNjcmF0Y2gtPmQuanNvbmV4cHIu anNlc3RhdGUgPSBqc2VzdGF0ZTsKKworCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhw ci0+Zm9ybWF0dGVkX2V4cHIsIHN0YXRlLAorCQkJCQkmanNlc3RhdGUtPmZvcm1hdHRlZF9l eHByLnZhbHVlLAorCQkJCQkmanNlc3RhdGUtPmZvcm1hdHRlZF9leHByLmlzbnVsbCk7CisK KwlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPnBhdGhfc3BlYywgc3RhdGUsCisJ CQkJCSZqc2VzdGF0ZS0+cGF0aHNwZWMudmFsdWUsCisJCQkJCSZqc2VzdGF0ZS0+cGF0aHNw ZWMuaXNudWxsKTsKKworCWlmIChqZXhwci0+b25fZW1wdHkpCisJCWpzZXN0YXRlLT5kZWZh dWx0X29uX2VtcHR5ID0KKwkJCUV4ZWNJbml0RXhwcigoRXhwciAqKSBqZXhwci0+b25fZW1w dHktPmRlZmF1bHRfZXhwciwKKwkJCQkJCSBzdGF0ZS0+cGFyZW50KTsKKworCWpzZXN0YXRl LT5kZWZhdWx0X29uX2Vycm9yID0KKwkJRXhlY0luaXRFeHByKChFeHByICopIGpleHByLT5v bl9lcnJvci0+ZGVmYXVsdF9leHByLAorCQkJCQkgc3RhdGUtPnBhcmVudCk7CisKKwlqc2Vz dGF0ZS0+YXJncyA9IE5JTDsKKworCWZvcmJvdGgoYXJnZXhwcmxjLCBqZXhwci0+cGFzc2lu Z192YWx1ZXMsCisJCQlhcmduYW1lbGMsIGpleHByLT5wYXNzaW5nX25hbWVzKQorCXsKKwkJ RXhwcgkgICAqYXJnZXhwciA9IChFeHByICopIGxmaXJzdChhcmdleHBybGMpOworCQlTdHJp bmcJICAgKmFyZ25hbWUgPSBsZmlyc3Rfbm9kZShTdHJpbmcsIGFyZ25hbWVsYyk7CisJCUpz b25QYXRoVmFyaWFibGVFdmFsQ29udGV4dCAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7 CisKKwkJdmFyLT5uYW1lID0gcHN0cmR1cChhcmduYW1lLT5zdmFsKTsKKwkJdmFyLT50eXBp ZCA9IGV4cHJUeXBlKChOb2RlICopIGFyZ2V4cHIpOworCQl2YXItPnR5cG1vZCA9IGV4cHJU eXBtb2QoKE5vZGUgKikgYXJnZXhwcik7CisJCXZhci0+ZXN0YXRlID0gRXhlY0luaXRFeHBy KGFyZ2V4cHIsIHN0YXRlLT5wYXJlbnQpOworCQl2YXItPmVjb250ZXh0ID0gTlVMTDsKKwkJ dmFyLT5tY3h0ID0gTlVMTDsKKwkJdmFyLT5ldmFsdWF0ZWQgPSBmYWxzZTsKKwkJdmFyLT52 YWx1ZSA9IChEYXR1bSkgMDsKKwkJdmFyLT5pc251bGwgPSB0cnVlOworCisJCWpzZXN0YXRl LT5hcmdzID0KKwkJCWxhcHBlbmQoanNlc3RhdGUtPmFyZ3MsIHZhcik7CisJfQorCisJRXhw ckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYwppbmRleCA2MzY3OTRjYTZmMS4uNTZmN2JkMmE1YWMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNzUsNiArNzUsNyBAQAog I2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2lu Y2x1ZGUgInV0aWxzL2V4cGFuZGVkcmVjb3JkLmgiCisjaW5jbHVkZSAidXRpbHMvZmxvYXQu aCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIK ICNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKQEAgLTE4NDQsNyArMTg0NSw3IEBAIEV4 ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwg Ym9vbCAqaXNudWxsKQogCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSKQogCQl7CiAJCQkvKiB0 b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxlbWVudGF0aW9uICovCi0JCQlFeGVjRXZh bEpzb24oc3RhdGUsIG9wLCBlY29udGV4dCk7CisJCQlFeGVjRXZhbEpzb25FeHByKHN0YXRl LCBvcCwgZWNvbnRleHQpOwogCQkJRUVPX05FWFQoKTsKIAkJfQogCkBAIC00NzAwLDk2ICs0 NzAxLDYgQEAgRXhlY0V2YWxKc29uQ29uc3RydWN0b3IoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwKIAkqb3AtPnJlc251bGwgPSBpc251bGw7CiB9CiAKLS8qCi0gKiBF dmFsdWF0ZSBhIEpTT04gZXJyb3IvZW1wdHkgYmVoYXZpb3IgcmVzdWx0LgotICovCi1zdGF0 aWMgRGF0dW0KLUV4ZWNFdmFsSnNvbkJlaGF2aW9yKEV4cHJDb250ZXh0ICplY29udGV4dCwg SnNvbkJlaGF2aW9yICpiZWhhdmlvciwKLQkJCQkJIEV4cHJTdGF0ZSAqZGVmYXVsdF9lc3Rh dGUsIGJvb2wgKmlzX251bGwpCi17Ci0JKmlzX251bGwgPSBmYWxzZTsKLQotCXN3aXRjaCAo YmVoYXZpb3ItPmJ0eXBlKQotCXsKLQkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZ OgotCQkJcmV0dXJuIEpzb25iUEdldERhdHVtKEpzb25iTWFrZUVtcHR5QXJyYXkoKSk7Ci0K LQkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVDoKLQkJCXJldHVybiBKc29uYlBH ZXREYXR1bShKc29uYk1ha2VFbXB0eU9iamVjdCgpKTsKLQotCQljYXNlIEpTT05fQkVIQVZJ T1JfVFJVRToKLQkJCXJldHVybiBCb29sR2V0RGF0dW0odHJ1ZSk7Ci0KLQkJY2FzZSBKU09O X0JFSEFWSU9SX0ZBTFNFOgotCQkJcmV0dXJuIEJvb2xHZXREYXR1bShmYWxzZSk7Ci0KLQkJ Y2FzZSBKU09OX0JFSEFWSU9SX05VTEw6Ci0JCWNhc2UgSlNPTl9CRUhBVklPUl9VTktOT1dO OgotCQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFk6Ci0JCQkqaXNfbnVsbCA9IHRydWU7Ci0J CQlyZXR1cm4gKERhdHVtKSAwOwotCi0JCWNhc2UgSlNPTl9CRUhBVklPUl9ERUZBVUxUOgot CQkJcmV0dXJuIEV4ZWNFdmFsRXhwcihkZWZhdWx0X2VzdGF0ZSwgZWNvbnRleHQsIGlzX251 bGwpOwotCi0JCWRlZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9K U09OIGJlaGF2aW9yICVkIiwgYmVoYXZpb3ItPmJ0eXBlKTsKLQkJCXJldHVybiAoRGF0dW0p IDA7Ci0JfQotfQotCi0vKgotICogRXZhbHVhdGUgYSBjb2VyY2lvbiBvZiBhIEpTT04gaXRl bSB0byB0aGUgdGFyZ2V0IHR5cGUuCi0gKi8KLXN0YXRpYyBEYXR1bQotRXhlY0V2YWxKc29u RXhwckNvZXJjaW9uKEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCwK LQkJCQkJCSBEYXR1bSByZXMsIGJvb2wgKmlzTnVsbCwgdm9pZCAqcCwgYm9vbCAqZXJyb3Ip Ci17Ci0JRXhwclN0YXRlICAqZXN0YXRlID0gcDsKLQlKc29uRXhwclN0YXRlICpqc2VzdGF0 ZTsKLQotCWlmIChlc3RhdGUpCQkJCQkvKiBjb2VyY2UgdXNpbmcgc3BlY2lmaWVkIGV4cHJl c3Npb24gKi8KLQkJcmV0dXJuIEV4ZWNFdmFsRXhwcihlc3RhdGUsIGVjb250ZXh0LCBpc051 bGwpOwotCi0JanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKLQotCWlmIChq c2VzdGF0ZS0+anNleHByLT5vcCAhPSBKU09OX0VYSVNUU19PUCkKLQl7Ci0JCUpzb25Db2Vy Y2lvbiAqY29lcmNpb24gPSBqc2VzdGF0ZS0+anNleHByLT5yZXN1bHRfY29lcmNpb247Ci0J CUpzb25FeHByICAgKmpleHByID0ganNlc3RhdGUtPmpzZXhwcjsKLQkJSnNvbmIJICAgKmpi ID0gKmlzTnVsbCA/IE5VTEwgOiBEYXR1bUdldEpzb25iUChyZXMpOwotCi0JCWlmICgoY29l cmNpb24gJiYgY29lcmNpb24tPnZpYV9pbykgfHwKLQkJCShqZXhwci0+b21pdF9xdW90ZXMg JiYgISppc051bGwgJiYKLQkJCSBKQl9ST09UX0lTX1NDQUxBUihqYikpKQotCQl7Ci0JCQkv KiBzdHJpcCBxdW90ZXMgYW5kIGNhbGwgdHlwaW5wdXQgZnVuY3Rpb24gKi8KLQkJCWNoYXIJ ICAgKnN0ciA9ICppc051bGwgPyBOVUxMIDogSnNvbmJVbnF1b3RlKGpiKTsKLQotCQkJcmV0 dXJuIElucHV0RnVuY3Rpb25DYWxsKCZqc2VzdGF0ZS0+aW5wdXQuZnVuYywgc3RyLAotCQkJ CQkJCQkJIGpzZXN0YXRlLT5pbnB1dC50eXBpb3BhcmFtLAotCQkJCQkJCQkJIGpleHByLT5y ZXR1cm5pbmctPnR5cG1vZCk7Ci0JCX0KLQkJZWxzZSBpZiAoY29lcmNpb24gJiYgY29lcmNp b24tPnZpYV9wb3B1bGF0ZSkKLQkJCXJldHVybiBqc29uX3BvcHVsYXRlX3R5cGUocmVzLCBK U09OQk9JRCwKLQkJCQkJCQkJCSAgamV4cHItPnJldHVybmluZy0+dHlwaWQsCi0JCQkJCQkJ CQkgIGpleHByLT5yZXR1cm5pbmctPnR5cG1vZCwKLQkJCQkJCQkJCSAgJmpzZXN0YXRlLT5j YWNoZSwKLQkJCQkJCQkJCSAgZWNvbnRleHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeSwKLQkJ CQkJCQkJCSAgaXNOdWxsKTsKLQl9Ci0KLQlpZiAoanNlc3RhdGUtPnJlc3VsdF9leHByKQot CXsKLQkJanNlc3RhdGUtPnJlc19leHByLT52YWx1ZSA9IHJlczsKLQkJanNlc3RhdGUtPnJl c19leHByLT5pc251bGwgPSAqaXNOdWxsOwotCi0JCXJlcyA9IEV4ZWNFdmFsRXhwcihqc2Vz dGF0ZS0+cmVzdWx0X2V4cHIsIGVjb250ZXh0LCBpc051bGwpOwotCX0KLQotCXJldHVybiBy ZXM7Ci19Ci0KIC8qCiAgKiBFdmFsdWF0ZSBhIEpTT04gcGF0aCB2YXJpYWJsZSBjYWNoaW5n IGNvbXB1dGVkIHZhbHVlLgogICovCkBAIC00ODQzLDg1ICs0NzU0LDQyMCBAQCBFdmFsSnNv blBhdGhWYXIodm9pZCAqY3h0LCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbiwKIAly ZXR1cm4gaWQ7CiB9CiAKLS8qCi0gKiBQcmVwYXJlIFNRTC9KU09OIGl0ZW0gY29lcmNpb24g dG8gdGhlIG91dHB1dCB0eXBlLiBSZXR1cm5lZCBhIGRhdHVtIG9mIHRoZQotICogY29ycmVz cG9uZGluZyBTUUwgdHlwZSBhbmQgYSBwb2ludGVyIHRvIHRoZSBjb2VyY2lvbiBzdGF0ZS4K LSAqLwotRGF0dW0KLUV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbihKc29uYlZhbHVlICpp dGVtLAotCQkJCQkJCUpzb25SZXR1cm5pbmcgKnJldHVybmluZywKLQkJCQkJCQlzdHJ1Y3Qg SnNvbkNvZXJjaW9uc1N0YXRlICpjb2VyY2lvbnMsCi0JCQkJCQkJc3RydWN0IEpzb25Db2Vy Y2lvblN0YXRlICoqcGNvZXJjaW9uKQorLyogQ29lcmNlIEMgc3RyaW5nIHRvIHRleHQsIHZh cmNoYXIoTiksIG9yIGJwY2hhcihOKSAqLworc3RhdGljIERhdHVtCitFeGVjSnNvbkNvZXJj ZUNTdHJpbmdUb1RleHQoY29uc3QgY2hhciAqc3RyLCBpbnQzMiBsZW4sCisJCQkJCQkJT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QpCiB7Ci0Jc3RydWN0IEpzb25Db2VyY2lvblN0YXRlICpj b2VyY2lvbjsKLQlEYXR1bQkJcmVzOwotCUpzb25iVmFsdWUJYnVmOworCWlmICh0eXBpZCA9 PSBCWVRFQU9JRCkKKwl7CisJCXRleHQJICAgKnR4dCA9IGNzdHJpbmdfdG9fdGV4dF93aXRo X2xlbihzdHIsIGxlbik7CisJCU5hbWVEYXRhCWVuY29kaW5nID0gezB9OwogCi0JaWYgKGl0 ZW0tPnR5cGUgPT0gamJ2QmluYXJ5ICYmCi0JCUpzb25Db250YWluZXJJc1NjYWxhcihpdGVt LT52YWwuYmluYXJ5LmRhdGEpKQorCQkvKiBVVEY4IGlzIHRoZSBvbmx5IG9uZSBzdXBwb3J0 ZWQgZW5jb2RpbmcgKi8KKwkJc3RyY3B5KE5hbWVTdHIoZW5jb2RpbmcpLCAiVVRGOCIpOwor CisJCXJldHVybiBEaXJlY3RGdW5jdGlvbkNhbGwyKHBnX2NvbnZlcnRfdG8sCisJCQkJCQkJ CSAgIFBvaW50ZXJHZXREYXR1bSh0eHQpLAorCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0o JmVuY29kaW5nKSk7CisJfQorCWVsc2UgaWYgKHR5cGlkID09IFRFWFRPSUQgfHwgdHlwaWQg PT0gSlNPTk9JRCB8fCB0eXBtb2QgPD0gVkFSSERSU1opCisJCXJldHVybiBQb2ludGVyR2V0 RGF0dW0oY3N0cmluZ190b190ZXh0X3dpdGhfbGVuKHN0ciwgbGVuKSk7CisJZWxzZQogCXsK LQkJYm9vbAkJcmVzIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwkJY2hhcgkgICAqdHh0 OworCQlpbnQzMgkJc2l6ZTsKIAotCQlyZXMgPSBKc29uYkV4dHJhY3RTY2FsYXIoaXRlbS0+ dmFsLmJpbmFyeS5kYXRhLCAmYnVmKTsKLQkJaXRlbSA9ICZidWY7Ci0JCUFzc2VydChyZXMp OworCQlsZW4gPSBWQVJIRFJTWiArIGxlbjsKKworCQlpZiAodHlwaWQgPT0gQlBDSEFST0lE KQorCQkJc2l6ZSA9IHR5cG1vZDsKKwkJZWxzZQorCQkJc2l6ZSA9IE1pbihsZW4sIHR5cG1v ZCk7CisKKwkJdHh0ID0gcGFsbG9jKHNpemUpOworCQlTRVRfVkFSU0laRSh0eHQsIHNpemUp OworCisJCW1lbWNweShWQVJEQVRBKHR4dCksIHN0ciwgTWluKHNpemUsIGxlbikgLSBWQVJI RFJTWik7CisKKwkJaWYgKGxlbiA8IHNpemUpCisJCQltZW1zZXQodHh0ICsgbGVuLCAnICcs IHNpemUgLSBsZW4pOworCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0odHh0KTsKIAl9Cit9 CiAKLQkvKiBnZXQgY29lcmNpb24gc3RhdGUgcmVmZXJlbmNlIGFuZCBkYXR1bSBvZiB0aGUg Y29ycmVzcG9uZGluZyBTUUwgdHlwZSAqLworLyogQ29lcmNlIFNRTC9KU09OIGl0ZW0gdG8g dGV4dCAqLworc3RhdGljIERhdHVtCitFeGVjSnNvbkNvZXJjZVRvVGV4dChQR0Z1bmN0aW9u IG91dGZ1bmMsIERhdHVtIHZhbHVlLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCkKK3sKKwlj aGFyCSAgICpzdHIgPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxsMShvdXRm dW5jLCB2YWx1ZSkpOworCisJcmV0dXJuIEV4ZWNKc29uQ29lcmNlQ1N0cmluZ1RvVGV4dChz dHIsIHN0cmxlbihzdHIpLCB0eXBpZCwgdHlwbW9kKTsKK30KKworLyogQ29lcmNlIGRhdGV0 aW1lIFNRTC9KU09OIGl0ZW0gdG8gdGhlIG91dHB1dCB0eXBpZCAqLworc3RhdGljIERhdHVt CitFeGVjSnNvbkNvZXJjZURhdGV0aW1lKERhdHVtIHZhbCwgT2lkIHZhbF90eXBpZCwgT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9vbCAqZXJy b3IpCit7CisJaWYgKHZhbF90eXBpZCA9PSB0eXBpZCkKKwkJcmV0dXJuIHZhbDsKKworCS8q CisJICogWFhYIGNvZXJjaW9uIHRvIHRleHQgaXMgZG9uZSB1c2luZyBvdXRwdXQgZnVuY3Rp b25zLCBhbmQgdGhleQorCSAqIGFyZSBtdXRhYmxlIGZvciBub24tdGltZVt0el0gdHlwZXMg ZHVlIHRvIHVzaW5nIG9mIERhdGVTdHlsZS4KKwkgKiBXZSBjYW4gcGFzcyBVU0VfSVNPX0RB VEVTLCB3aGljaCBpcyB1c2VkIGluc2lkZSBqc29ucGF0aCwgdG8KKwkgKiBtYWtlIHRoZXNl IGNvZXJjaW9ucyBhbmQgSlNPTl9WQUxVRShSRVRVUk5JTkcgdGV4dCkgaW1tdXRhYmxlLgor CSAqCisJICogWFhYIEFsc28gdGltZXN0YW1wW3R6XSBvdXRwdXQgZnVuY3Rpb25zIGNhbiB0 aHJvdyAib3V0IG9mIHJhbmdlIgorCSAqIGVycm9yLCBidXQgdGhpcyBlcnJvciBzZWVtIHRv IGJlIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlzd2l0Y2ggKHZhbF90eXBpZCkKKwl7CisJCWNh c2UgREFURU9JRDoKKwkJCWlmICh0eXBpZCA9PSBURVhUT0lEIHx8IHR5cGlkID09IFZBUkNI QVJPSUQgfHwgdHlwaWQgPT0gQlBDSEFST0lEKQorCQkJCXJldHVybiBFeGVjSnNvbkNvZXJj ZVRvVGV4dChkYXRlX291dCwgdmFsLCB0eXBpZCwgdHlwbW9kKTsKKwkJCWVsc2UgaWYgKHR5 cGlkID09IERBVEVPSUQpCisJCQkJcmV0dXJuIHZhbDsKKwkJCWVsc2UgaWYgKHR5cGlkID09 IFRJTUVTVEFNUE9JRCkKKwkJCXsKKwkJCQlpbnQJCQlvdmVyZmxvdyA9IDA7CisJCQkJVGlt ZXN0YW1wCXRzID0KKwkJCQkJZGF0ZTJ0aW1lc3RhbXBfb3B0X292ZXJmbG93KERhdHVtR2V0 RGF0ZUFEVCh2YWwpLAorCQkJCQkJCQkJCQkJZXJyb3IgPyAmb3ZlcmZsb3cgOiBOVUxMKTsK KworCQkJCWlmIChvdmVyZmxvdykKKwkJCQl7CisJCQkJCSplcnJvciA9IHRydWU7CisJCQkJ CXJldHVybiAoRGF0dW0pIDA7CisJCQkJfQorCisJCQkJcmV0dXJuIFRpbWVzdGFtcEdldERh dHVtKHRzKTsKKwkJCX0KKwkJCWVsc2UgaWYgKHR5cGlkID09IFRJTUVTVEFNUFRaT0lEKQor CQkJeworCQkJCWludAkJCW92ZXJmbG93ID0gMDsKKwkJCQlUaW1lc3RhbXBUeglyZXMgPQor CQkJCQlkYXRlMnRpbWVzdGFtcHR6X29wdF9vdmVyZmxvdyhEYXR1bUdldERhdGVBRFQodmFs KSwKKwkJCQkJCQkJCQkJCSAgZXJyb3IgPyAmb3ZlcmZsb3cgOiBOVUxMKTsKKworCQkJCWlm IChvdmVyZmxvdykKKwkJCQl7CisJCQkJCSplcnJvciA9IHRydWU7CisJCQkJCXJldHVybiAo RGF0dW0pIDA7CisJCQkJfQorCisJCQkJcmV0dXJuIFRpbWVzdGFtcFR6R2V0RGF0dW0ocmVz KTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlicmVhazsgLyogTm8gY2FzdCAqLworCisJCWNhc2Ug VElNRU9JRDoKKwkJCWlmICh0eXBpZCA9PSBURVhUT0lEIHx8IHR5cGlkID09IFZBUkNIQVJP SUQgfHwgdHlwaWQgPT0gQlBDSEFST0lEKQorCQkJCXJldHVybiBFeGVjSnNvbkNvZXJjZVRv VGV4dCh0aW1lX291dCwgdmFsLCB0eXBpZCwgdHlwbW9kKTsKKwkJCWVsc2UgaWYgKHR5cGlk ID09IFRJTUVPSUQpCisJCQkJcmV0dXJuIHZhbDsKKwkJCWVsc2UgaWYgKHR5cGlkID09IFRJ TUVUWk9JRCkKKwkJCQlyZXR1cm4gRGlyZWN0RnVuY3Rpb25DYWxsMSh0aW1lX3RpbWV0eiwg dmFsKTsKKwkJCWVsc2UKKwkJCQlicmVhazsJLyogTm8gY2FzdCAqLworCisJCWNhc2UgVElN RVRaT0lEOgorCQkJaWYgKHR5cGlkID09IFRFWFRPSUQgfHwgdHlwaWQgPT0gVkFSQ0hBUk9J RCB8fCB0eXBpZCA9PSBCUENIQVJPSUQpCisJCQkJcmV0dXJuIEV4ZWNKc29uQ29lcmNlVG9U ZXh0KHRpbWV0el9vdXQsIHZhbCwgdHlwaWQsIHR5cG1vZCk7CisJCQllbHNlIGlmICh0eXBp ZCA9PSBUSU1FVFpPSUQpCisJCQkJcmV0dXJuIHZhbDsKKwkJCWVsc2UgaWYgKHR5cGlkID09 IFRJTUVPSUQpCisJCQkJcmV0dXJuIERpcmVjdEZ1bmN0aW9uQ2FsbDEodGltZXR6X3RpbWUs IHZhbCk7CisJCQllbHNlCisJCQkJYnJlYWs7CisKKwkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJ CQlpZiAodHlwaWQgPT0gVEVYVE9JRCB8fCB0eXBpZCA9PSBWQVJDSEFST0lEIHx8IHR5cGlk ID09IEJQQ0hBUk9JRCkKKwkJCQlyZXR1cm4gRXhlY0pzb25Db2VyY2VUb1RleHQodGltZXN0 YW1wX291dCwgdmFsLCB0eXBpZCwgdHlwbW9kKTsKKwkJCWVsc2UgaWYgKHR5cGlkID09IFRJ TUVTVEFNUE9JRCkKKwkJCQlyZXR1cm4gdmFsOworCQkJZWxzZSBpZiAodHlwaWQgPT0gREFU RU9JRCkKKwkJCQlyZXR1cm4gdGltZXN0YW1wX2RhdGVfb3B0X2Vycm9yKERhdHVtR2V0VGlt ZXN0YW1wKHZhbCksIGVycm9yKTsKKwkJCWVsc2UgaWYgKHR5cGlkID09IFRJTUVPSUQpCisJ CQl7CisJCQkJVGltZUFEVAkJdGltZSA9CisJCQkJCXRpbWVzdGFtcF90aW1lX29wdF9lcnJv cihEYXR1bUdldFRpbWVzdGFtcCh2YWwpLAorCQkJCQkJCQkJCQkgaXNudWxsLCBlcnJvcik7 CisKKwkJCQlpZiAoKGVycm9yICYmICplcnJvcikgfHwgKmlzbnVsbCkKKwkJCQkJcmV0dXJu IChEYXR1bSkgMDsKKwkJCQllbHNlCisJCQkJCXJldHVybiBUaW1lQURUR2V0RGF0dW0odGlt ZSk7CisJCQl9CisJCQllbHNlIGlmICh0eXBpZCA9PSBUSU1FU1RBTVBUWk9JRCkKKwkJCXsK KwkJCQlpbnQJCQlvdmVyZmxvdyA9IDA7CisJCQkJVGltZXN0YW1wVHogdHN0eiA9CisJCQkJ CXRpbWVzdGFtcDJ0aW1lc3RhbXB0el9vcHRfb3ZlcmZsb3coRGF0dW1HZXRUaW1lc3RhbXAo dmFsKSwKKwkJCQkJCQkJCQkJCQkgICBlcnJvciA/ICZvdmVyZmxvdyA6IE5VTEwpOworCisJ CQkJaWYgKG92ZXJmbG93KQorCQkJCXsKKwkJCQkJKmVycm9yID0gdHJ1ZTsKKwkJCQkJcmV0 dXJuIChEYXR1bSkgMDsKKwkJCQl9CisKKwkJCQlyZXR1cm4gVGltZXN0YW1wVHpHZXREYXR1 bSh0c3R6KTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlicmVhazsJLyogTm8gY2FzdCAqLworCisJ CWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQlpZiAodHlwaWQgPT0gVEVYVE9JRCB8fCB0eXBp ZCA9PSBWQVJDSEFST0lEIHx8IHR5cGlkID09IEJQQ0hBUk9JRCkKKwkJCQlyZXR1cm4gRXhl Y0pzb25Db2VyY2VUb1RleHQodGltZXN0YW1wdHpfb3V0LCB2YWwsIHR5cGlkLCB0eXBtb2Qp OworCQkJZWxzZSBpZiAodHlwaWQgPT0gVElNRVNUQU1QVFpPSUQpCisJCQkJcmV0dXJuIHZh bDsKKwkJCWVsc2UgaWYgKHR5cGlkID09IERBVEVPSUQpCisJCQkJcmV0dXJuIHRpbWVzdGFt cHR6X2RhdGVfb3B0X2Vycm9yKERhdHVtR2V0VGltZXN0YW1wVHoodmFsKSwgZXJyb3IpOwor CQkJZWxzZSBpZiAodHlwaWQgPT0gVElNRU9JRCkKKwkJCXsKKwkJCQlUaW1lQURUCQl0aW1l ID0KKwkJCQkJdGltZXN0YW1wdHpfdGltZV9vcHRfZXJyb3IoRGF0dW1HZXRUaW1lc3RhbXBU eih2YWwpLAorCQkJCQkJCQkJCQkgICBpc251bGwsIGVycm9yKTsKKworCQkJCWlmICgoZXJy b3IgJiYgKmVycm9yKSB8fCAqaXNudWxsKQorCQkJCQlyZXR1cm4gKERhdHVtKSAwOworCQkJ CWVsc2UKKwkJCQkJcmV0dXJuIFRpbWVBRFRHZXREYXR1bSh0aW1lKTsKKwkJCX0KKwkJCWVs c2UgaWYgKHR5cGlkID09IFRJTUVUWk9JRCkKKwkJCXsKKwkJCQlUaW1lVHpBRFQgICpyZXN1 bHQgPQorCQkJCQl0aW1lc3RhbXB0el90aW1ldHpfb3B0X2Vycm9yKERhdHVtR2V0VGltZXN0 YW1wVHoodmFsKSwgZXJyb3IpOworCisJCQkJaWYgKChlcnJvciAmJiAqZXJyb3IpIHx8ICFy ZXN1bHQpCisJCQkJeworCQkJCQkqaXNudWxsID0gdHJ1ZTsKKwkJCQkJcmV0dXJuIChEYXR1 bSkgMDsKKwkJCQl9CisKKwkJCQlyZXR1cm4gVGltZVR6QURUUEdldERhdHVtKHJlc3VsdCk7 CisJCQl9CisJCQllbHNlIGlmICh0eXBpZCA9PSBUSU1FU1RBTVBPSUQpCisJCQl7CisJCQkJ VGltZXN0YW1wCXRzID0KKwkJCQkJdGltZXN0YW1wdHoydGltZXN0YW1wX29wdF9lcnJvcihE YXR1bUdldFRpbWVzdGFtcFR6KHZhbCksCisJCQkJCQkJCQkJCQkJZXJyb3IpOworCisJCQkJ aWYgKGVycm9yICYmICplcnJvcikKKwkJCQkJcmV0dXJuIChEYXR1bSkgMDsKKworCQkJCXJl dHVybiBUaW1lc3RhbXBHZXREYXR1bSh0cyk7CisJCQl9CisJCQllbHNlCisJCQkJYnJlYWs7 CS8qIE5vIGNhc3QgKi8KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQganNvbmIgZGF0ZXRpbWUgdHlwZSBvaWQgJXUiLCB2YWxfdHlwaWQpOworCQkJYnJlYWs7 CisJfQorCisJaWYgKCFlcnJvcikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVS UkNPREVfU1FMX0pTT05fSVRFTV9DQU5OT1RfQkVfQ0FTVF9UT19UQVJHRVRfVFlQRSksCisJ CQkgZXJybXNnKCJTUUwvSlNPTiBpdGVtIGNhbm5vdCBiZSBjYXN0IHRvIHRhcmdldCB0eXBl IikpKTsKKworCSplcnJvciA9IHRydWU7CisJKmlzbnVsbCA9IHRydWU7CisKKwlyZXR1cm4g KERhdHVtKSAwOworfQorCisvKiBDb2VyY2UgYm9vbGVhbiBTUUwvSlNPTiBpdGVtIG9yIEpT T05fRVhJU1RTIHJlc3VsdCB0byB0aGUgb3V0cHV0IHR5cGUgKi8KK3N0YXRpYyBib29sCitF eGVjSnNvbkNvZXJjZUJvb2woYm9vbCB2YWwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBE YXR1bSAqcmVzKQoreworCWlmICh0eXBpZCA9PSBCT09MT0lEKQorCQkqcmVzID0gQm9vbEdl dERhdHVtKHZhbCk7CisJZWxzZSBpZiAodHlwaWQgPT0gSU5UNE9JRCkKKwkJLyogV2Ugb25s eSBoYXZlIGNhc3QgYm9vbDo6aW50NCBpbiB0aGUgY2F0YWxvZy4gKi8KKwkJKnJlcyA9IElu dDMyR2V0RGF0dW0odmFsID8gMSA6IDApOworCWVsc2UgaWYgKHR5cGlkID09IFRFWFRPSUQg fHwgdHlwaWQgPT0gVkFSQ0hBUk9JRCB8fCB0eXBpZCA9PSBCUENIQVJPSUQpCisJCS8qCisJ CSAqIGJvb2w6OnRleHQgcmV0dXJucyAndHJ1ZScgLyAnZmFsc2UnLAorCQkgKiBib29sb3V0 KCkgcmV0dXJucyAndCcgLyAnZicuCisJCSAqLworCQkqcmVzID0gRXhlY0pzb25Db2VyY2VD U3RyaW5nVG9UZXh0KHZhbCA/ICJ0cnVlIiA6ICJmYWxzZSIsCisJCQkJCQkJCQkJICAgdmFs ID8gNCA6IDUsIHR5cGlkLCB0eXBtb2QpOworCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworCisJ cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgRGF0dW0KK0pzb25iUEdldFRleHRE YXR1bShKc29uYiAqamIpCit7CisJY2hhcgkgICAqc3RyID0gSnNvbmJUb0NTdHJpbmcoTlVM TCwgJmpiLT5yb290LCBWQVJTSVpFKGpiKSk7CisJRGF0dW0JCXJlcyA9IENTdHJpbmdHZXRU ZXh0RGF0dW0oc3RyKTsKKworCXBmcmVlKHN0cik7CisJcmV0dXJuIHJlczsKK30KKworLyog Q29lcmNlIFNRTC9KU09OIGl0ZW0gdG8gdGhlIG91dHB1dCB0eXBpZCAqLworc3RhdGljIERh dHVtCitFeGVjSnNvblZhbHVlQ29lcmNpb24oSnNvbmJWYWx1ZSAqaXRlbSwgT2lkIHR5cGlk LCBpbnQzMiB0eXBtb2QsCisJCQkJCSAgYm9vbCAqaXNudWxsLCBib29sICplcnJvcikKK3sK KwkqaXNudWxsID0gZmFsc2U7CisKKwkvKiBTcGVjaWFsIGNhc2UgZm9yIGpzb24gYW5kIGpz b25iIG91dHB1dCB0eXBlcyAqLworCWlmICh0eXBpZCA9PSBKU09OQk9JRCkKKwkJcmV0dXJu IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGl0ZW0pKTsKKworCWlmICh0eXBp ZCA9PSBKU09OT0lEKQorCQlyZXR1cm4gSnNvbmJQR2V0VGV4dERhdHVtKEpzb25iVmFsdWVU b0pzb25iKGl0ZW0pKTsKKworCS8qCisJICogQ29lcmNpb24gbWV0aG9kIGFuZCBzZXQgb2Yg c3VwcG9ydGVkIG91dHB1dCB0eXBlcyBhcmUgZGV0ZXJtaW5lZAorCSAqIGJ5IHRoZSBpdGVt IHR5cGUuCisJICovCiAJc3dpdGNoIChpdGVtLT50eXBlKQogCXsKIAkJY2FzZSBqYnZOdWxs OgotCQkJY29lcmNpb24gPSAmY29lcmNpb25zLT5udWxsOwotCQkJcmVzID0gKERhdHVtKSAw OwotCQkJYnJlYWs7CisJCQlBc3NlcnQoMCk7IC8qIG11c3QgYmUgaGFuZGxlZCBieSB0aGUg Y2FsbGVyICovCisJCQkqaXNudWxsID0gdHJ1ZTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CiAK IAkJY2FzZSBqYnZTdHJpbmc6Ci0JCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPnN0cmluZzsK LQkJCXJlcyA9IFBvaW50ZXJHZXREYXR1bShjc3RyaW5nX3RvX3RleHRfd2l0aF9sZW4oaXRl bS0+dmFsLnN0cmluZy52YWwsCi0JCQkJCQkJCQkJCQkJCSAgIGl0ZW0tPnZhbC5zdHJpbmcu bGVuKSk7Ci0JCQlicmVhazsKKwkJCWlmICh0eXBpZCA9PSBURVhUT0lEIHx8IHR5cGlkID09 IFZBUkNIQVJPSUQgfHwgdHlwaWQgPT0gQlBDSEFST0lEKQorCQkJeworCQkJCXJldHVybiBF eGVjSnNvbkNvZXJjZUNTdHJpbmdUb1RleHQoaXRlbS0+dmFsLnN0cmluZy52YWwsCisJCQkJ CQkJCQkJCQkgICBpdGVtLT52YWwuc3RyaW5nLmxlbiwKKwkJCQkJCQkJCQkJCSAgIHR5cGlk LCB0eXBtb2QpOworCQkJfQorCQkJZWxzZSBpZiAodHlwaWQgPT0gSU5UMk9JRCB8fCB0eXBp ZCA9PSBJTlQ0T0lEIHx8IHR5cGlkID09IElOVDhPSUQpCisJCQl7CisJCQkJY2hhcgkgICAq c3RyID0gcG5zdHJkdXAoaXRlbS0+dmFsLnN0cmluZy52YWwsCisJCQkJCQkJCQkJICAgaXRl bS0+dmFsLnN0cmluZy5sZW4pOworCisJCQkJaWYgKGVycm9yKQorCQkJCXsKKwkJCQkJaW50 NjQJCXZhbCA9IHBnX3N0cnRvaW50NjRfb3B0X2Vycm9yKHN0ciwgZXJyb3IpOworCisJCQkJ CWlmICgqZXJyb3IpCisJCQkJCQlyZXR1cm4gKERhdHVtKSAwOworCisJCQkJCWlmICh0eXBp ZCA9PSBJTlQyT0lEKQorCQkJCQl7CisJCQkJCQlpZiAodmFsIDw9IFBHX0lOVDE2X01BWCB8 fCB2YWwgPj0gUEdfSU5UMTZfTUlOKQorCQkJCQkJCXJldHVybiBJbnQxNkdldERhdHVtKChp bnQxNikgdmFsKTsKKwkJCQkJfQorCQkJCQllbHNlIGlmICh0eXBpZCA9PSBJTlQ0T0lEKQor CQkJCQl7CisJCQkJCQlpZiAodmFsIDw9IFBHX0lOVDMyX01BWCB8fCB2YWwgPj0gUEdfSU5U MzJfTUlOKQorCQkJCQkJCXJldHVybiBJbnQzMkdldERhdHVtKChpbnQzMikgdmFsKTsKKwkJ CQkJfQorCQkJCQllbHNlCisJCQkJCQlyZXR1cm4gSW50NjRHZXREYXR1bSh2YWwpOworCisJ CQkJCSplcnJvciA9IHRydWU7CisJCQkJCXJldHVybiAoRGF0dW0pIDA7CisJCQkJfQorCQkJ CWVsc2UgaWYgKHR5cGlkID09IElOVDJPSUQpCisJCQkJCXJldHVybiBJbnQxNkdldERhdHVt KHBnX3N0cnRvaW50MTYoc3RyKSk7CisJCQkJZWxzZSBpZiAodHlwaWQgPT0gSU5UNE9JRCkK KwkJCQkJcmV0dXJuIEludDMyR2V0RGF0dW0ocGdfc3RydG9pbnQzMihzdHIpKTsKKwkJCQll bHNlCisJCQkJCXJldHVybiBJbnQ2NEdldERhdHVtKHBnX3N0cnRvaW50NjQoc3RyKSk7CisJ CQl9CisJCQllbHNlIGlmICh0eXBpZCA9PSBCT09MT0lEKQorCQkJeworCQkJCXJldHVybiBC b29sR2V0RGF0dW0oYm9vbGluX29wdF9lcnJvcihpdGVtLT52YWwuc3RyaW5nLnZhbCwKKwkJ CQkJCQkJCQkJCQkgaXRlbS0+dmFsLnN0cmluZy5sZW4sCisJCQkJCQkJCQkJCQkJIGVycm9y KSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJY2hhcgkgICAqc3RyID0gcG5zdHJkdXAo aXRlbS0+dmFsLnN0cmluZy52YWwsCisJCQkJCQkJCQkJICAgaXRlbS0+dmFsLnN0cmluZy5s ZW4pOworCisJCQkJaWYgKHR5cGlkID09IEZMT0FUNE9JRCkKKwkJCQkJcmV0dXJuIEZsb2F0 NEdldERhdHVtKGZsb2F0NGluX29wdF9lcnJvcihzdHIsIGVycm9yKSk7CisJCQkJZWxzZSBp ZiAodHlwaWQgPT0gRkxPQVQ4T0lEKQorCQkJCQlyZXR1cm4gRmxvYXQ4R2V0RGF0dW0oCisJ CQkJCQlmbG9hdDhpbl9pbnRlcm5hbF9vcHRfZXJyb3Ioc3RyLCBOVUxMLAorCQkJCQkJCQkJ CQkJCSJkb3VibGUgcHJlY2lzaW9uIiwKKwkJCQkJCQkJCQkJCQlzdHIsIGVycm9yKSk7CisJ CQkJZWxzZSBpZiAodHlwaWQgPT0gTlVNRVJJQ09JRCkKKwkJCQkJcmV0dXJuIE51bWVyaWNH ZXREYXR1bShudW1lcmljX2luX29wdF9lcnJvcihzdHIsIHR5cG1vZCwgZXJyb3IpKTsKKwkJ CQllbHNlIGlmICh0eXBpZCA9PSBEQVRFT0lEKQorCQkJCQlyZXR1cm4gRGF0ZUFEVEdldERh dHVtKGRhdGVfaW5fb3B0X2Vycm9yKHN0ciwgZXJyb3IpKTsKKwkJCQllbHNlIGlmICh0eXBp ZCA9PSBUSU1FT0lEKQorCQkJCQlyZXR1cm4gVGltZUFEVEdldERhdHVtKHRpbWVfaW5fb3B0 X2Vycm9yKHN0ciwgdHlwbW9kLCBlcnJvcikpOworCQkJCWVsc2UgaWYgKHR5cGlkID09IFRJ TUVUWk9JRCkKKwkJCQkJcmV0dXJuIFRpbWVUekFEVFBHZXREYXR1bSh0aW1ldHpfaW5fb3B0 X2Vycm9yKHN0ciwgdHlwbW9kLCBlcnJvcikpOworCQkJCWVsc2UgaWYgKHR5cGlkID09IFRJ TUVTVEFNUE9JRCkKKwkJCQkJcmV0dXJuIFRpbWVzdGFtcEdldERhdHVtKHRpbWVzdGFtcF9p bl9vcHRfZXJyb3Ioc3RyLCB0eXBtb2QsIGVycm9yKSk7CisJCQkJZWxzZSBpZiAodHlwaWQg PT0gVElNRVNUQU1QVFpPSUQpCisJCQkJCXJldHVybiBUaW1lc3RhbXBUekdldERhdHVtKHRp bWVzdGFtcHR6X2luX29wdF9lcnJvcihzdHIsIHR5cG1vZCwgZXJyb3IpKTsKKwkJCQllbHNl CisJCQkJCWJyZWFrOwkvKiBObyBjYXN0ICovCisJCQl9CiAKIAkJY2FzZSBqYnZOdW1lcmlj OgotCQkJY29lcmNpb24gPSAmY29lcmNpb25zLT5udW1lcmljOwotCQkJcmVzID0gTnVtZXJp Y0dldERhdHVtKGl0ZW0tPnZhbC5udW1lcmljKTsKLQkJCWJyZWFrOworCQkJeworCQkJCU51 bWVyaWMJCW51bSA9IGl0ZW0tPnZhbC5udW1lcmljOworCisJCQkJaWYgKHR5cGlkID09IE5V TUVSSUNPSUQpCisJCQkJCXJldHVybiBOdW1lcmljR2V0RGF0dW0obnVtKTsKKwkJCQllbHNl IGlmICh0eXBpZCA9PSBURVhUT0lEIHx8IHR5cGlkID09IFZBUkNIQVJPSUQgfHwgdHlwaWQg PT0gQlBDSEFST0lEKQorCQkJCQlyZXR1cm4gRXhlY0pzb25Db2VyY2VUb1RleHQobnVtZXJp Y19vdXQsIE51bWVyaWNHZXREYXR1bShudW0pLCB0eXBpZCwgdHlwbW9kKTsKKwkJCQllbHNl IGlmICh0eXBpZCA9PSBJTlQyT0lEKQorCQkJCQlyZXR1cm4gSW50MTZHZXREYXR1bShudW1l cmljX2ludDJfb3B0X2Vycm9yKG51bSwgZXJyb3IpKTsKKwkJCQllbHNlIGlmICh0eXBpZCA9 PSBJTlQ0T0lEKQorCQkJCQlyZXR1cm4gSW50MzJHZXREYXR1bShudW1lcmljX2ludDRfb3B0 X2Vycm9yKG51bSwgZXJyb3IpKTsKKwkJCQllbHNlIGlmICh0eXBpZCA9PSBJTlQ4T0lEKQor CQkJCQlyZXR1cm4gSW50NjRHZXREYXR1bShudW1lcmljX2ludDhfb3B0X2Vycm9yKG51bSwg ZXJyb3IpKTsKKwkJCQllbHNlIGlmICh0eXBpZCA9PSBGTE9BVDRPSUQgfHwgdHlwaWQgPT0g RkxPQVQ4T0lEKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogWFhYIG51bWVyaWNfZmxvYXQ4 KCkgYWxzbyB1c2VzIEkvTyBjb2VyY2lvbiwgYnV0CisJCQkJCSAqIGl0IGhhcyBzcGVjaWFs IGhhbmRsaW5nIG9mIEluZiBhbmQgTmFOLgorCQkJCQkgKi8KKwkJCQkJRGF0dW0JCWNzdHIg PSBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LAorCQkJCQkJCQkJCQkJCQkgICBO dW1lcmljR2V0RGF0dW0obnVtKSk7CisJCQkJCWNoYXIJICAgKnN0ciA9IERhdHVtR2V0Q1N0 cmluZyhjc3RyKTsKIAotCQljYXNlIGpidkJvb2w6Ci0JCQljb2VyY2lvbiA9ICZjb2VyY2lv bnMtPmJvb2xlYW47Ci0JCQlyZXMgPSBCb29sR2V0RGF0dW0oaXRlbS0+dmFsLmJvb2xlYW4p OwotCQkJYnJlYWs7CisJCQkJCWlmICh0eXBpZCA9PSBGTE9BVDRPSUQpCisJCQkJCQlyZXR1 cm4gRmxvYXQ0R2V0RGF0dW0oZmxvYXQ0aW5fb3B0X2Vycm9yKHN0ciwgZXJyb3IpKTsKKwkJ CQkJZWxzZQorCQkJCQkJcmV0dXJuIEZsb2F0OEdldERhdHVtKAorCQkJCQkJCWZsb2F0OGlu X2ludGVybmFsX29wdF9lcnJvcihzdHIsIE5VTEwsCisJCQkJCQkJCQkJCQkJCSJkb3VibGUg cHJlY2lzaW9uIiwKKwkJCQkJCQkJCQkJCQkJc3RyLCBlcnJvcikpOworCQkJCX0KKwkJCQll bHNlCisJCQkJCWJyZWFrOwkvKiBObyBjYXN0ICovCisJCQl9CiAKLQkJY2FzZSBqYnZEYXRl dGltZToKLQkJCXJlcyA9IGl0ZW0tPnZhbC5kYXRldGltZS52YWx1ZTsKLQkJCXN3aXRjaCAo aXRlbS0+dmFsLmRhdGV0aW1lLnR5cGlkKQorCQljYXNlIGpidkJvb2w6CiAJCQl7Ci0JCQkJ Y2FzZSBEQVRFT0lEOgotCQkJCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPmRhdGU7Ci0JCQkJ CWJyZWFrOwotCQkJCWNhc2UgVElNRU9JRDoKLQkJCQkJY29lcmNpb24gPSAmY29lcmNpb25z LT50aW1lOwotCQkJCQlicmVhazsKLQkJCQljYXNlIFRJTUVUWk9JRDoKLQkJCQkJY29lcmNp b24gPSAmY29lcmNpb25zLT50aW1ldHo7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgVElNRVNU QU1QT0lEOgotCQkJCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPnRpbWVzdGFtcDsKLQkJCQkJ YnJlYWs7Ci0JCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKLQkJCQkJY29lcmNpb24gPSAmY29l cmNpb25zLT50aW1lc3RhbXB0ejsKLQkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJ ZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQganNvbmIgZGF0ZXRpbWUgdHlwZSBvaWQgJXUiLAot CQkJCQkJIGl0ZW0tPnZhbC5kYXRldGltZS50eXBpZCk7Ci0JCQkJCXJldHVybiAoRGF0dW0p IDA7CisJCQkJRGF0dW0JCXJlczsKKworCQkJCWlmIChFeGVjSnNvbkNvZXJjZUJvb2woaXRl bS0+dmFsLmJvb2xlYW4sIHR5cGlkLCB0eXBtb2QsICZyZXMpKQorCQkJCQlyZXR1cm4gcmVz OworCisJCQkJYnJlYWs7IC8qIE5vIGNhc3QgKi8KIAkJCX0KLQkJCWJyZWFrOworCisJCWNh c2UgamJ2RGF0ZXRpbWU6CisJCQlyZXR1cm4gRXhlY0pzb25Db2VyY2VEYXRldGltZShpdGVt LT52YWwuZGF0ZXRpbWUudmFsdWUsCisJCQkJCQkJCQkJICBpdGVtLT52YWwuZGF0ZXRpbWUu dHlwaWQsCisJCQkJCQkJCQkJICB0eXBpZCwgdHlwbW9kLCBpc251bGwsIGVycm9yKTsKIAog CQljYXNlIGpidkFycmF5OgogCQljYXNlIGpidk9iamVjdDoKIAkJY2FzZSBqYnZCaW5hcnk6 Ci0JCQljb2VyY2lvbiA9ICZjb2VyY2lvbnMtPmNvbXBvc2l0ZTsKLQkJCXJlcyA9IEpzb25i UEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGl0ZW0pKTsKKwkJCUFzc2VydCgwKTsJLyog bm9uLXNjYWxhcnMgbXVzdCBiZSByZWplY3RlZCBieSBKc29uUGF0aFZhbHVlKCkgKi8KIAkJ CWJyZWFrOwogCiAJCWRlZmF1bHQ6CkBAIC00OTI5LDk5ICs1MTc1LDE4NCBAQCBFeGVjUHJl cGFyZUpzb25JdGVtQ29lcmNpb24oSnNvbmJWYWx1ZSAqaXRlbSwKIAkJCXJldHVybiAoRGF0 dW0pIDA7CiAJfQogCi0JKnBjb2VyY2lvbiA9IGNvZXJjaW9uOworCWlmICghZXJyb3IpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX0lURU1fQ0FO Tk9UX0JFX0NBU1RfVE9fVEFSR0VUX1RZUEUpLAorCQkJIGVycm1zZygiU1FML0pTT04gaXRl bSBjYW5ub3QgYmUgY2FzdCB0byB0YXJnZXQgdHlwZSIpKSk7CiAKLQlyZXR1cm4gcmVzOwor CSplcnJvciA9IHRydWU7CisJKmlzbnVsbCA9IHRydWU7CisKKwlyZXR1cm4gKERhdHVtKSAw OwogfQogCi10eXBlZGVmIERhdHVtICgqSnNvbkZ1bmMpIChFeHByRXZhbFN0ZXAgKm9wLCBF eHByQ29udGV4dCAqZWNvbnRleHQsCi0JCQkJCQkgICBEYXR1bSBpdGVtLCBib29sICpyZXNu dWxsLCB2b2lkICpwLCBib29sICplcnJvcik7CisvKgorICogQ2hlY2sgd2hldGhlciB3ZSBu ZWVkIHRvIG92ZXJyaWRlIGRlZmF1bHQgY29lcmNpb24gaW4KKyAqIEpTT05fUVVFUlkoT01J VCBRVU9URVMpIGNhc2UuCisgKi8KK3N0YXRpYyBib29sCitFeGVjSnNvblF1ZXJ5TmVlZHNJ T0NvZXJjaW9uKEpzb25FeHByICpqc2V4cHIsIERhdHVtIHJlcykKK3sKKwlpZiAoanNleHBy LT5vbWl0X3F1b3RlcykKKwl7CisJCUpzb25iCSAgICpqYiA9IERhdHVtR2V0SnNvbmJQKHJl cyk7CisJCUpzb25iVmFsdWUJamJ2OworCisJCS8qIENvZXJjZSBzdHJpbmcgaXRlbXMgdmlh IEkvTyBpbiBPTUlUIFFVT1RFUyBjYXNlICovCisJCXJldHVybiBKc29uYkV4dHJhY3RTY2Fs YXIoJmpiLT5yb290LCAmamJ2KSAmJgorCQkJamJ2LnR5cGUgPT0gamJ2U3RyaW5nOworCX0K KworCXJldHVybiBmYWxzZTsKK30KIAorLyogQ29lcmNlIEpTT05CIGRhdHVtIHRvIHRoZSBv dXRwdXQgdHlwaWQodHlwbW9kKSAqLwogc3RhdGljIERhdHVtCi1FeGVjRXZhbEpzb25FeHBy U3VidHJhbnMoSnNvbkZ1bmMgZnVuYywgRXhwckV2YWxTdGVwICpvcCwKLQkJCQkJCSBFeHBy Q29udGV4dCAqZWNvbnRleHQsCi0JCQkJCQkgRGF0dW0gcmVzLCBib29sICpyZXNudWxsLAot CQkJCQkJIHZvaWQgKnAsIGJvb2wgKmVycm9yLCBib29sIHN1YnRyYW5zKQorRXhlY0pzb25R dWVyeUNvZXJjaW9uKEpzb25FeHByICpqZXhwciwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2Qs CisJCQkJCSAgRGF0dW0gamIsIGJvb2wgKmVycm9yKQogewotCU1lbW9yeUNvbnRleHQgb2xk Y29udGV4dDsKLQlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCS8qIE92ZXJyaWRlIGRlZmF1 bHQgY29lcmNpb24gaW4gT01JVCBRVU9URVMgY2FzZSAqLworCWlmIChFeGVjSnNvblF1ZXJ5 TmVlZHNJT0NvZXJjaW9uKGpleHByLCBqYikpCisJeworCQljaGFyCSAgICpzdHIgPSBKc29u YlVucXVvdGUoRGF0dW1HZXRKc29uYlAoamIpKTsKIAotCWlmICghc3VidHJhbnMpCi0JCS8q IE5vIG5lZWQgdG8gdXNlIHN1YnRyYW5zYWN0aW9ucy4gKi8KLQkJcmV0dXJuIGZ1bmMob3As IGVjb250ZXh0LCByZXMsIHJlc251bGwsIHAsIGVycm9yKTsKKwkJaWYgKHR5cGlkID09IEpT T05CT0lEKQorCQl7CisJCQlEYXR1bQkJcmVzID0KKwkJCQlqc29uYl9mcm9tX2NzdHJpbmco c3RyLCBzdHJsZW4oc3RyKSwgZmFsc2UsIGVycm9yKTsKIAotCS8qCi0JICogV2Ugc2hvdWxk IGNhdGNoIGV4Y2VwdGlvbnMgb2YgY2F0ZWdvcnkgRVJSQ09ERV9EQVRBX0VYQ0VQVElPTiBh bmQKLQkgKiBleGVjdXRlIHRoZSBjb3JyZXNwb25kaW5nIE9OIEVSUk9SIGJlaGF2aW9yIHRo ZW4uCi0JICovCi0Jb2xkY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCW9sZG93 bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJCQlpZiAoZXJyb3IgJiYgKmVycm9yKQor CQkJCXJldHVybiAoRGF0dW0pIDA7CiAKLQlBc3NlcnQoZXJyb3IpOworCQkJcmV0dXJuIHJl czsKKwkJfQorCQllbHNlIGlmICh0eXBpZCA9PSBKU09OT0lEKQorCQl7CisJCQl0ZXh0CSAg ICpqc29uID0gY3N0cmluZ190b190ZXh0KHN0cik7CisJCQlKc29uTGV4Q29udGV4dCAqbGV4 OworCQkJSnNvblBhcnNlRXJyb3JUeXBlIHJlc3VsdDsKIAotCUJlZ2luSW50ZXJuYWxTdWJU cmFuc2FjdGlvbihOVUxMKTsKLQkvKiBXYW50IHRvIGV4ZWN1dGUgZXhwcmVzc2lvbnMgaW5z aWRlIGZ1bmN0aW9uJ3MgbWVtb3J5IGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CisJCQkvKiB2YWxpZGF0ZSBqc29uICovCisJCQlsZXggPSBtYWtl SnNvbkxleENvbnRleHQoanNvbiwgZmFsc2UpOworCQkJcmVzdWx0ID0gcGdfcGFyc2VfanNv bihsZXgsICZudWxsU2VtQWN0aW9uKTsKIAotCVBHX1RSWSgpOworCQkJaWYgKHJlc3VsdCAh PSBKU09OX1NVQ0NFU1MpCisJCQl7CisJCQkJaWYgKGVycm9yKQorCQkJCXsKKwkJCQkJKmVy cm9yID0gdHJ1ZTsKKwkJCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJCQl9CisKKwkJCQlqc29u X2VyZXBvcnRfZXJyb3IocmVzdWx0LCBsZXgpOworCQkJfQorCisJCQlyZXR1cm4gUG9pbnRl ckdldERhdHVtKGpzb24pOworCQl9CisJCWVsc2UgaWYgKHR5cGlkID09IFRFWFRPSUQgfHwg dHlwaWQgPT0gVkFSQ0hBUk9JRCB8fAorCQkJCSB0eXBpZCA9PSBCUENIQVJPSUQgfHwgdHlw aWQgPT0gQllURUFPSUQpCisJCQlyZXR1cm4gRXhlY0pzb25Db2VyY2VDU3RyaW5nVG9UZXh0 KHN0ciwgc3RybGVuKHN0ciksIHR5cGlkLCB0eXBtb2QpOworCX0KKwllbHNlIGlmICh0eXBp ZCA9PSBKU09OQk9JRCkKKwkJcmV0dXJuIGpiOworCWVsc2UgaWYgKHR5cGlkID09IEpTT05P SUQgfHwgdHlwaWQgPT0gVEVYVE9JRCkKKwkJcmV0dXJuIEpzb25iUEdldFRleHREYXR1bShE YXR1bUdldEpzb25iUChqYikpOworCWVsc2UgaWYgKHR5cGlkID09IFZBUkNIQVJPSUQgfHwg dHlwaWQgPT0gQlBDSEFST0lEIHx8IHR5cGlkID09IEJZVEVBT0lEKQogCXsKLQkJcmVzID0g ZnVuYyhvcCwgZWNvbnRleHQsIHJlcywgcmVzbnVsbCwgcCwgZXJyb3IpOworCQlKc29uYgkg ICAqanNvbmIgPSBEYXR1bUdldEpzb25iUChqYik7CisJCWNoYXIJICAgKnN0ciA9IEpzb25i VG9DU3RyaW5nKE5VTEwsICZqc29uYi0+cm9vdCwgVkFSU0laRShqc29uYikpOwogCi0JCS8q IENvbW1pdCB0aGUgaW5uZXIgdHJhbnNhY3Rpb24sIHJldHVybiB0byBvdXRlciB4YWN0IGNv bnRleHQgKi8KLQkJUmVsZWFzZUN1cnJlbnRTdWJUcmFuc2FjdGlvbigpOwotCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Ci0JCUN1cnJlbnRSZXNvdXJjZU93bmVyID0g b2xkb3duZXI7CisJCXJldHVybiBFeGVjSnNvbkNvZXJjZUNTdHJpbmdUb1RleHQoc3RyLCBz dHJsZW4oc3RyKSwgdHlwaWQsIHR5cG1vZCk7CiAJfQotCVBHX0NBVENIKCk7CisKKwlBc3Nl cnQoMCk7CS8qIHVuc3VwcG9ydGVkIG91dHB1dCB0eXBlICovCisJKmVycm9yID0gdHJ1ZTsK KwlyZXR1cm4gKERhdHVtKSAwOworfQorCisvKgorICogRXZhbHVhdGUgYSBKU09OIGVycm9y L2VtcHR5IGJlaGF2aW9yIGFuZCBjb2VyY2UgcmVzdWx0IHRvIHRoZSBvdXRwdXQKKyAqIHR5 cGUuCisgKi8KK3N0YXRpYyBEYXR1bQorRXhlY0V2YWxKc29uQmVoYXZpb3IoRXhwckNvbnRl eHQgKmVjb250ZXh0LCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yLAorCQkJCQkgRXhwclN0YXRl ICpkZWZhdWx0X2VzdGF0ZSwKKwkJCQkJIE9pZCByZXRfdHlwaWQsIGludDMyIHJldF90eXBt b2QsIGJvb2wgKmlzX251bGwpCit7CisJKmlzX251bGwgPSBmYWxzZTsKKworCXN3aXRjaCAo YmVoYXZpb3ItPmJ0eXBlKQogCXsKLQkJRXJyb3JEYXRhICAqZWRhdGE7Ci0JCWludAkJCWVj YXRlZ29yeTsKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOgorCQkJaWYgKHJl dF90eXBpZCA9PSBKU09OQk9JRCkKKwkJCQlyZXR1cm4gSnNvbmJQR2V0RGF0dW0oSnNvbmJN YWtlRW1wdHlBcnJheSgpKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlBc3NlcnQocmV0X3R5cGlk ID09IEpTT05PSUQgfHwgcmV0X3R5cGlkID09IFRFWFRPSUQgfHwKKwkJCQkJICAgcmV0X3R5 cGlkID09IFZBUkNIQVJPSUQgfHwgcmV0X3R5cGlkID09IEJQQ0hBUk9JRCB8fAorCQkJCQkg ICByZXRfdHlwaWQgPT0gQllURUFPSUQpOwogCi0JCS8qIFNhdmUgZXJyb3IgaW5mbyBpbiBv bGRjb250ZXh0ICovCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKLQkJ ZWRhdGEgPSBDb3B5RXJyb3JEYXRhKCk7Ci0JCUZsdXNoRXJyb3JTdGF0ZSgpOworCQkJCXJl dHVybiBFeGVjSnNvbkNvZXJjZUNTdHJpbmdUb1RleHQoIltdIiwgMiwgcmV0X3R5cGlkLCBy ZXRfdHlwbW9kKTsKKwkJCX0KIAotCQkvKiBBYm9ydCB0aGUgaW5uZXIgdHJhbnNhY3Rpb24g Ki8KLQkJUm9sbGJhY2tBbmRSZWxlYXNlQ3VycmVudFN1YlRyYW5zYWN0aW9uKCk7Ci0JCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKLQkJQ3VycmVudFJlc291cmNlT3du ZXIgPSBvbGRvd25lcjsKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVDoKKwkJ CWlmIChyZXRfdHlwaWQgPT0gSlNPTkJPSUQpCisJCQkJcmV0dXJuIEpzb25iUEdldERhdHVt KEpzb25iTWFrZUVtcHR5T2JqZWN0KCkpOworCQkJZWxzZQorCQkJeworCQkJCUFzc2VydChy ZXRfdHlwaWQgPT0gSlNPTk9JRCB8fCByZXRfdHlwaWQgPT0gVEVYVE9JRCB8fAorCQkJCQkg ICByZXRfdHlwaWQgPT0gVkFSQ0hBUk9JRCB8fCByZXRfdHlwaWQgPT0gQlBDSEFST0lEIHx8 CisJCQkJCSAgIHJldF90eXBpZCA9PSBCWVRFQU9JRCk7CisKKwkJCQlyZXR1cm4gRXhlY0pz b25Db2VyY2VDU3RyaW5nVG9UZXh0KCJ7fSIsIDIsIHJldF90eXBpZCwgcmV0X3R5cG1vZCk7 CisJCQl9CiAKLQkJZWNhdGVnb3J5ID0gRVJSQ09ERV9UT19DQVRFR09SWShlZGF0YS0+c3Fs ZXJyY29kZSk7CisJCWNhc2UgSlNPTl9CRUhBVklPUl9UUlVFOgorCQljYXNlIEpTT05fQkVI QVZJT1JfRkFMU0U6CisJCQl7CisJCQkJRGF0dW0JCXJlczsKKwkJCQlib29sCQlvayBQR19V U0VEX0ZPUl9BU1NFUlRTX09OTFkgPQorCQkJCQlFeGVjSnNvbkNvZXJjZUJvb2woYmVoYXZp b3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfVFJVRSwKKwkJCQkJCQkJCSAgIHJldF90eXBp ZCwgcmV0X3R5cG1vZCwgJnJlcyk7CiAKLQkJaWYgKGVjYXRlZ29yeSAhPSBFUlJDT0RFX0RB VEFfRVhDRVBUSU9OICYmCS8qIGpzb25wYXRoIGFuZCBvdGhlciBkYXRhCi0JCQkJCQkJCQkJ CQkJICogZXJyb3JzICovCi0JCQllY2F0ZWdvcnkgIT0gRVJSQ09ERV9JTlRFR1JJVFlfQ09O U1RSQUlOVF9WSU9MQVRJT04pCS8qIGRvbWFpbiBlcnJvcnMgKi8KLQkJCVJlVGhyb3dFcnJv cihlZGF0YSk7CisJCQkJQXNzZXJ0KG9rKTsgLyogcmV0dXJuaW5nIHR5cGUgbXVzdCBiZSBj aGVja2VkIGluIHBhcnNlciAqLwogCi0JCXJlcyA9IChEYXR1bSkgMDsKLQkJKmVycm9yID0g dHJ1ZTsKLQl9Ci0JUEdfRU5EX1RSWSgpOworCQkJCXJldHVybiByZXM7CisJCQl9CiAKLQly ZXR1cm4gcmVzOwotfQorCQljYXNlIEpTT05fQkVIQVZJT1JfTlVMTDoKKwkJY2FzZSBKU09O X0JFSEFWSU9SX1VOS05PV046CisJCWNhc2UgSlNPTl9CRUhBVklPUl9FTVBUWToKKwkJCSpp c19udWxsID0gdHJ1ZTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CiAKKwkJY2FzZSBKU09OX0JF SEFWSU9SX0RFRkFVTFQ6CisJCQkvKgorCQkJICogRXhlY3V0ZSBERUZBVUxUIGV4cHJlc3Np b24uCisJCQkgKiBDb2VyY2lvbiBpcyBub3QgbmVlZGVkIGhlcmUsIGJlY2F1c2UgZXhwcmVz c2lvbiBpcworCQkJICogYWxyZWFkeSBjb2VyY2VkIHRvIHRoZSB0YXJnZXQgdHlwZSBieSB0 aGUgcGFyc2VyLgorCQkJICovCisJCQlyZXR1cm4gRXhlY0V2YWxFeHByKGRlZmF1bHRfZXN0 YXRlLCBlY29udGV4dCwgaXNfbnVsbCk7CiAKLXR5cGVkZWYgc3RydWN0Ci17Ci0JSnNvblBh dGggICAqcGF0aDsKLQlib29sCSAgICplcnJvcjsKLQlib29sCQljb2VyY2lvbkluU3VidHJh bnM7Ci19IEV4ZWNFdmFsSnNvbkV4cHJDb250ZXh0OworCQlkZWZhdWx0OgorCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBTUUwvSlNPTiBiZWhhdmlvciAlZCIsIGJlaGF2aW9yLT5i dHlwZSk7CisJCQlyZXR1cm4gKERhdHVtKSAwOworCX0KK30KIAogc3RhdGljIERhdHVtCi1F eGVjRXZhbEpzb25FeHByKEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4 dCwKLQkJCQkgRGF0dW0gaXRlbSwgYm9vbCAqcmVzbnVsbCwgdm9pZCAqcGN4dCwKLQkJCQkg Ym9vbCAqZXJyb3IpCitFeGVjRXZhbEpzb25FeHBySW50ZXJuYWwoRXhwclN0YXRlICpzdGF0 ZSwKKwkJCQkJCSBKc29uRXhwclN0YXRlICpqc2VzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0LAorCQkJCQkJIEpzb25QYXRoICpwYXRoLCBEYXR1bSBpdGVtLCBib29sICpyZXNudWxs LAorCQkJCQkJIGJvb2wgKmVycm9yKQogewotCUV4ZWNFdmFsSnNvbkV4cHJDb250ZXh0ICpj eHQgPSBwY3h0OwotCUpzb25QYXRoICAgKnBhdGggPSBjeHQtPnBhdGg7Ci0JSnNvbkV4cHJT dGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKIAlKc29uRXhwciAg ICpqZXhwciA9IGpzZXN0YXRlLT5qc2V4cHI7Ci0JRXhwclN0YXRlICAqZXN0YXRlID0gTlVM TDsKIAlib29sCQllbXB0eSA9IGZhbHNlOwogCURhdHVtCQlyZXMgPSAoRGF0dW0pIDA7CisJ T2lkCQkJcmV0X3R5cGlkID0gamV4cHItPnJldHVybmluZy0+dHlwaWQ7CisJaW50MzIJCXJl dF90eXBtb2QgPSBqZXhwci0+cmV0dXJuaW5nLT50eXBtb2Q7CisKKwkqcmVzbnVsbCA9IHRy dWU7CiAKIAlzd2l0Y2ggKGpleHByLT5vcCkKIAl7CkBAIC01MDI5LDcwICs1MzYwLDM1IEBA IEV4ZWNFdmFsSnNvbkV4cHIoRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250 ZXh0LAogCQkJcmVzID0gSnNvblBhdGhRdWVyeShpdGVtLCBwYXRoLCBqZXhwci0+d3JhcHBl ciwgJmVtcHR5LCBlcnJvciwKIAkJCQkJCQkJanNlc3RhdGUtPmFyZ3MpOwogCQkJaWYgKGVy cm9yICYmICplcnJvcikKLQkJCXsKLQkJCQkqcmVzbnVsbCA9IHRydWU7CiAJCQkJcmV0dXJu IChEYXR1bSkgMDsKLQkJCX0KLQkJCSpyZXNudWxsID0gIURhdHVtR2V0UG9pbnRlcihyZXMp OwotCQkJYnJlYWs7CisKKwkJCWlmIChlbXB0eSkKKwkJCQlicmVhazsKKworCQkJQXNzZXJ0 KERhdHVtR2V0UG9pbnRlcihyZXMpKTsKKwkJCSpyZXNudWxsID0gZmFsc2U7CisKKwkJCXJl dHVybiBFeGVjSnNvblF1ZXJ5Q29lcmNpb24oamV4cHIsIHJldF90eXBpZCwgcmV0X3R5cG1v ZCwKKwkJCQkJCQkJCQkgcmVzLCBlcnJvcik7CiAKIAkJY2FzZSBKU09OX1ZBTFVFX09QOgog CQkJewotCQkJCXN0cnVjdCBKc29uQ29lcmNpb25TdGF0ZSAqamNzdGF0ZTsKIAkJCQlKc29u YlZhbHVlICpqYnYgPSBKc29uUGF0aFZhbHVlKGl0ZW0sIHBhdGgsICZlbXB0eSwgZXJyb3Is CiAJCQkJCQkJCQkJCQlqc2VzdGF0ZS0+YXJncyk7CiAKIAkJCQlpZiAoZXJyb3IgJiYgKmVy cm9yKQogCQkJCQlyZXR1cm4gKERhdHVtKSAwOwogCi0JCQkJaWYgKCFqYnYpCQkvKiBOVUxM IG9yIGVtcHR5ICovCi0JCQkJCWJyZWFrOwotCi0JCQkJQXNzZXJ0KCFlbXB0eSk7Ci0KLQkJ CQkqcmVzbnVsbCA9IGZhbHNlOwotCi0JCQkJLyogY29lcmNlIHNjYWxhciBpdGVtIHRvIHRo ZSBvdXRwdXQgdHlwZSAqLwotCQkJCWlmIChqZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBK U09OT0lEIHx8Ci0JCQkJCWpleHByLT5yZXR1cm5pbmctPnR5cGlkID09IEpTT05CT0lEKQot CQkJCXsKLQkJCQkJLyogVXNlIHJlc3VsdCBjb2VyY2lvbiBmcm9tIGpzb25bYl0gdG8gdGhl IG91dHB1dCB0eXBlICovCi0JCQkJCXJlcyA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVU b0pzb25iKGpidikpOworCQkJCWlmIChlbXB0eSkKIAkJCQkJYnJlYWs7Ci0JCQkJfQogCi0J CQkJLyogVXNlIGNvZXJjaW9uIGZyb20gU1FML0pTT04gaXRlbSB0eXBlIHRvIHRoZSBvdXRw dXQgdHlwZSAqLwotCQkJCXJlcyA9IEV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbihqYnYs Ci0JCQkJCQkJCQkJCQkgIGpzZXN0YXRlLT5qc2V4cHItPnJldHVybmluZywKLQkJCQkJCQkJ CQkJCSAgJmpzZXN0YXRlLT5jb2VyY2lvbnMsCi0JCQkJCQkJCQkJCQkgICZqY3N0YXRlKTsK KwkJCQlpZiAoIWpidikKKwkJCQkJcmV0dXJuIChEYXR1bSkgMDsJLyogTlVMTCAqLwogCi0J CQkJaWYgKGpjc3RhdGUtPmNvZXJjaW9uICYmCi0JCQkJCShqY3N0YXRlLT5jb2VyY2lvbi0+ dmlhX2lvIHx8Ci0JCQkJCSBqY3N0YXRlLT5jb2VyY2lvbi0+dmlhX3BvcHVsYXRlKSkKLQkJ CQl7Ci0JCQkJCWlmIChlcnJvcikKLQkJCQkJewotCQkJCQkJKmVycm9yID0gdHJ1ZTsKLQkJ CQkJCXJldHVybiAoRGF0dW0pIDA7Ci0JCQkJCX0KLQotCQkJCQkvKgotCQkJCQkgKiBDb2Vy Y2lvbiB2aWEgSS9PIG1lYW5zIGhlcmUgdGhhdCB0aGUgY2FzdCB0byB0aGUgdGFyZ2V0Ci0J CQkJCSAqIHR5cGUgc2ltcGx5IGRvZXMgbm90IGV4aXN0LgotCQkJCQkgKi8KLQkJCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX0lURU1fQ0FO Tk9UX0JFX0NBU1RfVE9fVEFSR0VUX1RZUEUpLAotCQkJCQkJCSBlcnJtc2coIlNRTC9KU09O IGl0ZW0gY2Fubm90IGJlIGNhc3QgdG8gdGFyZ2V0IHR5cGUiKSkpOwotCQkJCX0KLQkJCQll bHNlIGlmICghamNzdGF0ZS0+ZXN0YXRlKQotCQkJCQlyZXR1cm4gcmVzOyAvKiBubyBjb2Vy Y2lvbiAqLworCQkJCUFzc2VydChqYnYtPnR5cGUgIT0gamJ2TnVsbCk7CiAKLQkJCQkvKiBj b2VyY2UgdXNpbmcgc3BlY2lmaWMgZXhwcmVzc2lvbiAqLwotCQkJCWVzdGF0ZSA9IGpjc3Rh dGUtPmVzdGF0ZTsKLQkJCQlqc2VzdGF0ZS0+Y29lcmNpb25fZXhwci0+dmFsdWUgPSByZXM7 Ci0JCQkJanNlc3RhdGUtPmNvZXJjaW9uX2V4cHItPmlzbnVsbCA9ICpyZXNudWxsOwotCQkJ CWJyZWFrOworCQkJCXJldHVybiBFeGVjSnNvblZhbHVlQ29lcmNpb24oamJ2LCByZXRfdHlw aWQsIHJldF90eXBtb2QsCisJCQkJCQkJCQkJCSByZXNudWxsLCBlcnJvcik7CiAJCQl9CiAK IAkJY2FzZSBKU09OX0VYSVNUU19PUDoKQEAgLTUxMDEsMTEzICs1Mzk3LDY4IEBAIEV4ZWNF dmFsSnNvbkV4cHIoRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0LAog CQkJCQkJCQkJCQkJCWpzZXN0YXRlLT5hcmdzLAogCQkJCQkJCQkJCQkJCWVycm9yKTsKIAot CQkJCSpyZXNudWxsID0gZXJyb3IgJiYgKmVycm9yOwotCQkJCXJlcyA9IEJvb2xHZXREYXR1 bShleGlzdHMpOwotCi0JCQkJaWYgKCFqc2VzdGF0ZS0+cmVzdWx0X2V4cHIpCi0JCQkJCXJl dHVybiByZXM7CisJCQkJaWYgKCFlcnJvciB8fCAhKmVycm9yKQorCQkJCXsKKwkJCQkJLyog U2hvdWxkIHN1Y2NlZWQsIG91dHB1dCB0eXBlIGlzIGNoZWNrZWQgYnkgcGFyc2VyICovCisJ CQkJCSh2b2lkKSBFeGVjSnNvbkNvZXJjZUJvb2woZXhpc3RzLCByZXRfdHlwaWQsIHJldF90 eXBtb2QsICZyZXMpOworCQkJCQkqcmVzbnVsbCA9IGZhbHNlOworCQkJCX0KIAotCQkJCS8q IGNvZXJjZSB1c2luZyByZXN1bHQgZXhwcmVzc2lvbiAqLwotCQkJCWVzdGF0ZSA9IGpzZXN0 YXRlLT5yZXN1bHRfZXhwcjsKLQkJCQlqc2VzdGF0ZS0+cmVzX2V4cHItPnZhbHVlID0gcmVz OwotCQkJCWpzZXN0YXRlLT5yZXNfZXhwci0+aXNudWxsID0gKnJlc251bGw7Ci0JCQkJYnJl YWs7CisJCQkJcmV0dXJuIHJlczsKIAkJCX0KIAotCQljYXNlIEpTT05fVEFCTEVfT1A6Ci0J CQkqcmVzbnVsbCA9IGZhbHNlOwotCQkJcmV0dXJuIGl0ZW07Ci0KIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBvcCAlZCIs IGpleHByLT5vcCk7CiAJCQlyZXR1cm4gKERhdHVtKSAwOwogCX0KIAotCWlmIChlbXB0eSkK LQl7Ci0JCUFzc2VydChqZXhwci0+b25fZW1wdHkpOwkvKiBpdCBpcyBub3QgSlNPTl9FWElT VFMgKi8KKwlBc3NlcnQoZW1wdHkpOworCUFzc2VydChqZXhwci0+b25fZW1wdHkpOwkvKiBp dCBpcyBub3QgSlNPTl9FWElTVFMgKi8KIAotCQlpZiAoamV4cHItPm9uX2VtcHR5LT5idHlw ZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQorCWlmIChqZXhwci0+b25fZW1wdHktPmJ0eXBl ID09IEpTT05fQkVIQVZJT1JfRVJST1IpCisJeworCQlpZiAoZXJyb3IpCiAJCXsKLQkJCWlm IChlcnJvcikKLQkJCXsKLQkJCQkqZXJyb3IgPSB0cnVlOwotCQkJCXJldHVybiAoRGF0dW0p IDA7Ci0JCQl9Ci0KLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVf Tk9fU1FMX0pTT05fSVRFTSksCi0JCQkJCSBlcnJtc2coIm5vIFNRTC9KU09OIGl0ZW0iKSkp OworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CiAJCX0KIAotCQlp ZiAoamV4cHItPm9uX2VtcHR5LT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpCi0K LQkJCS8qCi0JCQkgKiBFeGVjdXRlIERFRkFVTFQgZXhwcmVzc2lvbiBhcyBhIGNvZXJjaW9u IGV4cHJlc3Npb24sIGJlY2F1c2UKLQkJCSAqIGl0cyByZXN1bHQgaXMgYWxyZWFkeSBjb2Vy Y2VkIHRvIHRoZSB0YXJnZXQgdHlwZS4KLQkJCSAqLwotCQkJZXN0YXRlID0ganNlc3RhdGUt PmRlZmF1bHRfb25fZW1wdHk7Ci0JCWVsc2UKLQkJCS8qIEV4ZWN1dGUgT04gRU1QVFkgYmVo YXZpb3IgKi8KLQkJCXJlcyA9IEV4ZWNFdmFsSnNvbkJlaGF2aW9yKGVjb250ZXh0LCBqZXhw ci0+b25fZW1wdHksCi0JCQkJCQkJCQkgICBqc2VzdGF0ZS0+ZGVmYXVsdF9vbl9lbXB0eSwK LQkJCQkJCQkJCSAgIHJlc251bGwpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfTk9fU1FMX0pTT05fSVRFTSksCisJCQkJIGVycm1zZygibm8gU1FML0pTT04g aXRlbSIpKSk7CiAJfQogCi0JcmV0dXJuIEV4ZWNFdmFsSnNvbkV4cHJTdWJ0cmFucyhFeGVj RXZhbEpzb25FeHByQ29lcmNpb24sIG9wLCBlY29udGV4dCwKLQkJCQkJCQkJCXJlcywgcmVz bnVsbCwgZXN0YXRlLCBlcnJvciwKLQkJCQkJCQkJCWN4dC0+Y29lcmNpb25JblN1YnRyYW5z KTsKLX0KLQotYm9vbAotRXhlY0V2YWxKc29uTmVlZHNTdWJUcmFuc2FjdGlvbihKc29uRXhw ciAqanNleHByLAotCQkJCQkJCQlzdHJ1Y3QgSnNvbkNvZXJjaW9uc1N0YXRlICpjb2VyY2lv bnMpCi17Ci0JaWYgKGpzZXhwci0+b25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1Jf RVJST1IpCi0JCXJldHVybiBmYWxzZTsKLQotCWlmIChqc2V4cHItPm9wID09IEpTT05fRVhJ U1RTX09QICYmICFqc2V4cHItPnJlc3VsdF9jb2VyY2lvbikKLQkJcmV0dXJuIGZhbHNlOwot Ci0JaWYgKCFjb2VyY2lvbnMpCi0JCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwor CS8qIEV4ZWN1dGUgT04gRU1QVFkgYmVoYXZpb3IgKi8KKwlyZXR1cm4gRXhlY0V2YWxKc29u QmVoYXZpb3IoZWNvbnRleHQsIGpleHByLT5vbl9lbXB0eSwKKwkJCQkJCQkJanNlc3RhdGUt PmRlZmF1bHRfb25fZW1wdHksCisJCQkJCQkJCXJldF90eXBpZCwgcmV0X3R5cG1vZCwgcmVz bnVsbCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCQlFeGVjRXZhbEpzb24KKyAqCQlFeGVj RXZhbEpzb25FeHByCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKLUV4ZWNFdmFsSnNvbihF eHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRl eHQpCitFeGVjRXZhbEpzb25FeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIHsKLQlFeGVjRXZhbEpzb25FeHByQ29udGV4 dCBjeHQ7CiAJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2Vz dGF0ZTsKIAlKc29uRXhwciAgICpqZXhwciA9IGpzZXN0YXRlLT5qc2V4cHI7CiAJRGF0dW0J CWl0ZW07Ci0JRGF0dW0JCXJlcyA9IChEYXR1bSkgMDsKKwlEYXR1bQkJcmVzOwogCUpzb25Q YXRoICAgKnBhdGg7CiAJTGlzdENlbGwgICAqbGM7CiAJYm9vbAkJZXJyb3IgPSBmYWxzZTsK LQlib29sCQluZWVkU3VidHJhbnM7CiAJYm9vbAkJdGhyb3dFcnJvcnMgPSBqZXhwci0+b25f ZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CiAKLQkqb3AtPnJlc251bGwg PSB0cnVlOwkJLyogdW50aWwgd2UgZ2V0IGEgcmVzdWx0ICovCi0JKm9wLT5yZXN2YWx1ZSA9 IChEYXR1bSkgMDsKLQotCWlmIChqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHItPmlzbnVsbCB8 fCBqc2VzdGF0ZS0+cGF0aHNwZWMtPmlzbnVsbCkKKwlpZiAoanNlc3RhdGUtPmZvcm1hdHRl ZF9leHByLmlzbnVsbCB8fCBqc2VzdGF0ZS0+cGF0aHNwZWMuaXNudWxsKQogCXsKLQkJLyog ZXhlY3V0ZSBkb21haW4gY2hlY2tzIGZvciBOVUxMcyAqLwotCQkodm9pZCkgRXhlY0V2YWxK c29uRXhwckNvZXJjaW9uKG9wLCBlY29udGV4dCwgcmVzLCBvcC0+cmVzbnVsbCwKLQkJCQkJ CQkJCQlOVUxMLCBOVUxMKTsKLQotCQlBc3NlcnQoKm9wLT5yZXNudWxsKTsKKwkJKm9wLT5y ZXNudWxsID0gdHJ1ZTsKKwkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKIAkJcmV0dXJu OwogCX0KIAotCWl0ZW0gPSBqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHItPnZhbHVlOwotCXBh dGggPSBEYXR1bUdldEpzb25QYXRoUChqc2VzdGF0ZS0+cGF0aHNwZWMtPnZhbHVlKTsKKwlp dGVtID0ganNlc3RhdGUtPmZvcm1hdHRlZF9leHByLnZhbHVlOworCXBhdGggPSBEYXR1bUdl dEpzb25QYXRoUChqc2VzdGF0ZS0+cGF0aHNwZWMudmFsdWUpOwogCiAJLyogcmVzZXQgSlNP TiBwYXRoIHZhcmlhYmxlIGNvbnRleHRzICovCiAJZm9yZWFjaChsYywganNlc3RhdGUtPmFy Z3MpCkBAIC01MjE4LDI5ICs1NDY5LDIwIEBAIEV4ZWNFdmFsSnNvbihFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAJCXZhci0+ ZXZhbHVhdGVkID0gZmFsc2U7CiAJfQogCi0JbmVlZFN1YnRyYW5zID0gRXhlY0V2YWxKc29u TmVlZHNTdWJUcmFuc2FjdGlvbihqZXhwciwgJmpzZXN0YXRlLT5jb2VyY2lvbnMpOwotCi0J Y3h0LnBhdGggPSBwYXRoOwotCWN4dC5lcnJvciA9IHRocm93RXJyb3JzID8gTlVMTCA6ICZl cnJvcjsKLQljeHQuY29lcmNpb25JblN1YnRyYW5zID0gIW5lZWRTdWJ0cmFucyAmJiAhdGhy b3dFcnJvcnM7Ci0JQXNzZXJ0KCFuZWVkU3VidHJhbnMgfHwgY3h0LmVycm9yKTsKLQotCXJl cyA9IEV4ZWNFdmFsSnNvbkV4cHJTdWJ0cmFucyhFeGVjRXZhbEpzb25FeHByLCBvcCwgZWNv bnRleHQsIGl0ZW0sCi0JCQkJCQkJCSAgIG9wLT5yZXNudWxsLCAmY3h0LCBjeHQuZXJyb3Is Ci0JCQkJCQkJCSAgIG5lZWRTdWJ0cmFucyk7CisJcmVzID0gRXhlY0V2YWxKc29uRXhwcklu dGVybmFsKHN0YXRlLCBqc2VzdGF0ZSwgZWNvbnRleHQsCisJCQkJCQkJCSAgIHBhdGgsIGl0 ZW0sIG9wLT5yZXNudWxsLAorCQkJCQkJCQkgICB0aHJvd0Vycm9ycyA/IE5VTEwgOiAmZXJy b3IpOwogCiAJaWYgKGVycm9yKQogCXsKKwkJQXNzZXJ0KCF0aHJvd0Vycm9ycyk7CisKIAkJ LyogRXhlY3V0ZSBPTiBFUlJPUiBiZWhhdmlvciAqLwogCQlyZXMgPSBFeGVjRXZhbEpzb25C ZWhhdmlvcihlY29udGV4dCwgamV4cHItPm9uX2Vycm9yLAogCQkJCQkJCQkgICBqc2VzdGF0 ZS0+ZGVmYXVsdF9vbl9lcnJvciwKKwkJCQkJCQkJICAgamV4cHItPnJldHVybmluZy0+dHlw aWQsCisJCQkJCQkJCSAgIGpleHByLT5yZXR1cm5pbmctPnR5cG1vZCwKIAkJCQkJCQkJICAg b3AtPnJlc251bGwpOwotCi0JCS8qIHJlc3VsdCBpcyBhbHJlYWR5IGNvZXJjZWQgaW4gREVG QVVMVCBiZWhhdmlvciBjYXNlICovCi0JCWlmIChqZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9 IEpTT05fQkVIQVZJT1JfREVGQVVMVCkKLQkJCXJlcyA9IEV4ZWNFdmFsSnNvbkV4cHJDb2Vy Y2lvbihvcCwgZWNvbnRleHQsIHJlcywKLQkJCQkJCQkJCQkgICBvcC0+cmVzbnVsbCwKLQkJ CQkJCQkJCQkgICBOVUxMLCBOVUxMKTsKIAl9CiAKIAkqb3AtPnJlc3ZhbHVlID0gcmVzOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMv YmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCBiZDM5NjUxNDNkYS4uZmQ3 MjYzMGY1ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0yNDA4 LDcgKzI0MDgsNyBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJ CWJyZWFrOwogCiAJCQljYXNlIEVFT1BfSlNPTkVYUFI6Ci0JCQkJYnVpbGRfRXZhbFhGdW5j KGIsIG1vZCwgIkV4ZWNFdmFsSnNvbiIsCisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwg IkV4ZWNFdmFsSnNvbkV4cHIiLAogCQkJCQkJCQl2X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7 CiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyBiL3Ny Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwppbmRleCAzNzM0NzFhZDI3Zi4u MzdmZTY0NjU0YjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRf dHlwZXMuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAg LTEzNSw3ICsxMzUsNyBAQCB2b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlF eGVjRXZhbFhtbEV4cHIsCiAJRXhlY0V2YWxKc29uQ29uc3RydWN0b3IsCiAJRXhlY0V2YWxK c29uSXNQcmVkaWNhdGUsCi0JRXhlY0V2YWxKc29uLAorCUV4ZWNFdmFsSnNvbkV4cHIsCiAJ TWFrZUV4cGFuZGVkT2JqZWN0UmVhZE9ubHlJbnRlcm5hbCwKIAlzbG90X2dldG1pc3Npbmdh dHRycywKIAlzbG90X2dldHNvbWVhdHRyc19pbnQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmlu ZGV4IGMzMzRkYWFlMzkyLi5lMDI0MGJlZWVhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMK QEAgLTI2Niw5ICsyNjYsNiBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNl IFRfSnNvbkV4cHI6CiAJCQl0eXBlID0gKChjb25zdCBKc29uRXhwciAqKSBleHByKS0+cmV0 dXJuaW5nLT50eXBpZDsKIAkJCWJyZWFrOwotCQljYXNlIFRfSnNvbkNvZXJjaW9uOgotCQkJ dHlwZSA9IGV4cHJUeXBlKCgoY29uc3QgSnNvbkNvZXJjaW9uICopIGV4cHIpLT5leHByKTsK LQkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBu b2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CiAJCQl0eXBlID0gSW52YWxp ZE9pZDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwpAQCAtNTA3LDggKzUwNCw2IEBAIGV4 cHJUeXBtb2QoY29uc3QgTm9kZSAqZXhwcikKIAkJCXJldHVybiAoKGNvbnN0IEpzb25Db25z dHJ1Y3RvckV4cHIgKikgZXhwciktPnJldHVybmluZy0+dHlwbW9kOwogCQljYXNlIFRfSnNv bkV4cHI6CiAJCQlyZXR1cm4gKChKc29uRXhwciAqKSBleHByKS0+cmV0dXJuaW5nLT50eXBt b2Q7Ci0JCWNhc2UgVF9Kc29uQ29lcmNpb246Ci0JCQlyZXR1cm4gZXhwclR5cG1vZCgoKGNv bnN0IEpzb25Db2VyY2lvbiAqKSBleHByKS0+ZXhwcik7CiAJCWRlZmF1bHQ6CiAJCQlicmVh azsKIAl9CkBAIC0xMDEwLDE0ICsxMDA1LDEyIEBAIGV4cHJDb2xsYXRpb24oY29uc3QgTm9k ZSAqZXhwcikKIAkJY2FzZSBUX0pzb25FeHByOgogCQkJewogCQkJCUpzb25FeHByICAgKmpl eHByID0gKEpzb25FeHByICopIGV4cHI7Ci0JCQkJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9 IGpleHByLT5yZXN1bHRfY29lcmNpb247CiAKLQkJCQlpZiAoIWNvZXJjaW9uKQotCQkJCQlj b2xsID0gSW52YWxpZE9pZDsKLQkJCQllbHNlIGlmIChjb2VyY2lvbi0+ZXhwcikKLQkJCQkJ Y29sbCA9IGV4cHJDb2xsYXRpb24oY29lcmNpb24tPmV4cHIpOwotCQkJCWVsc2UgaWYgKGNv ZXJjaW9uLT52aWFfaW8gfHwgY29lcmNpb24tPnZpYV9wb3B1bGF0ZSkKLQkJCQkJY29sbCA9 IGNvZXJjaW9uLT5jb2xsYXRpb247CisJCQkJaWYgKGpleHByLT5yZXR1cm5pbmctPnR5cGlk ID09IFRFWFRPSUQgfHwKKwkJCQkJamV4cHItPnJldHVybmluZy0+dHlwaWQgPT0gQ0hBUk9J RCB8fAorCQkJCQlqZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBWQVJDSEFST0lEIHx8CisJ CQkJCWpleHByLT5yZXR1cm5pbmctPnR5cGlkID09IEJQQ0hBUk9JRCkKKwkJCQkJY29sbCA9 IGpleHByLT5jb2xsYXRpb247CiAJCQkJZWxzZQogCQkJCQljb2xsID0gSW52YWxpZE9pZDsK IAkJCX0KQEAgLTEyNTUsMTQgKzEyNDgsMTIgQEAgZXhwclNldENvbGxhdGlvbihOb2RlICpl eHByLCBPaWQgY29sbGF0aW9uKQogCQljYXNlIFRfSnNvbkV4cHI6CiAJCQl7CiAJCQkJSnNv bkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgZXhwcjsKLQkJCQlKc29uQ29lcmNpb24g KmNvZXJjaW9uID0gamV4cHItPnJlc3VsdF9jb2VyY2lvbjsKIAotCQkJCWlmICghY29lcmNp b24pCi0JCQkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsKLQkJCQllbHNlIGlm IChjb2VyY2lvbi0+ZXhwcikKLQkJCQkJZXhwclNldENvbGxhdGlvbihjb2VyY2lvbi0+ZXhw ciwgY29sbGF0aW9uKTsKLQkJCQllbHNlIGlmIChjb2VyY2lvbi0+dmlhX2lvIHx8IGNvZXJj aW9uLT52aWFfcG9wdWxhdGUpCi0JCQkJCWNvZXJjaW9uLT5jb2xsYXRpb24gPSBjb2xsYXRp b247CisJCQkJaWYgKGpleHByLT5yZXR1cm5pbmctPnR5cGlkID09IFRFWFRPSUQgfHwKKwkJ CQkJamV4cHItPnJldHVybmluZy0+dHlwaWQgPT0gQ0hBUk9JRCB8fAorCQkJCQlqZXhwci0+ cmV0dXJuaW5nLT50eXBpZCA9PSBWQVJDSEFST0lEIHx8CisJCQkJCWpleHByLT5yZXR1cm5p bmctPnR5cGlkID09IEJQQ0hBUk9JRCkKKwkJCQkJamV4cHItPmNvbGxhdGlvbiA9IGNvbGxh dGlvbjsKIAkJCQllbHNlCiAJCQkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsK IAkJCX0KQEAgLTI1MDcsOCArMjQ5OCw2IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9k ZSAqbm9kZSwKIAogCQkJCWlmICh3YWxrZXIoamV4cHItPmZvcm1hdHRlZF9leHByLCBjb250 ZXh0KSkKIAkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJaWYgKHdhbGtlcihqZXhwci0+cmVzdWx0 X2NvZXJjaW9uLCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYgKHdhbGtl cihqZXhwci0+cGFzc2luZ192YWx1ZXMsIGNvbnRleHQpKQogCQkJCQlyZXR1cm4gdHJ1ZTsK IAkJCQkvKiB3ZSBhc3N1bWUgd2Fsa2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBwYXNzaW5nX25h bWVzICovCkBAIC0yNTE3LDM2ICsyNTA2LDYgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcihO b2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAod2Fsa2VyKGpleHByLT5v bl9lcnJvci0+ZGVmYXVsdF9leHByLCBjb250ZXh0KSkKIAkJCQkJcmV0dXJuIHRydWU7Ci0J CQkJaWYgKHdhbGtlcihqZXhwci0+Y29lcmNpb25zLCBjb250ZXh0KSkKLQkJCQkJcmV0dXJu IHRydWU7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2FzZSBUX0pzb25Db2VyY2lvbjoKLQkJCXJl dHVybiB3YWxrZXIoKChKc29uQ29lcmNpb24gKikgbm9kZSktPmV4cHIsIGNvbnRleHQpOwot CQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbnM6Ci0JCQl7Ci0JCQkJSnNvbkl0ZW1Db2VyY2lv bnMgKmNvZXJjaW9ucyA9IChKc29uSXRlbUNvZXJjaW9ucyAqKSBub2RlOwotCi0JCQkJaWYg KHdhbGtlcihjb2VyY2lvbnMtPm51bGwsIGNvbnRleHQpKQotCQkJCQlyZXR1cm4gdHJ1ZTsK LQkJCQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+c3RyaW5nLCBjb250ZXh0KSkKLQkJCQkJcmV0 dXJuIHRydWU7Ci0JCQkJaWYgKHdhbGtlcihjb2VyY2lvbnMtPm51bWVyaWMsIGNvbnRleHQp KQotCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQlpZiAod2Fsa2VyKGNvZXJjaW9ucy0+Ym9vbGVh biwgY29udGV4dCkpCi0JCQkJCXJldHVybiB0cnVlOwotCQkJCWlmICh3YWxrZXIoY29lcmNp b25zLT5kYXRlLCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIHRydWU7Ci0JCQkJaWYgKHdhbGtl cihjb2VyY2lvbnMtPnRpbWUsIGNvbnRleHQpKQotCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQlp ZiAod2Fsa2VyKGNvZXJjaW9ucy0+dGltZXR6LCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIHRy dWU7Ci0JCQkJaWYgKHdhbGtlcihjb2VyY2lvbnMtPnRpbWVzdGFtcCwgY29udGV4dCkpCi0J CQkJCXJldHVybiB0cnVlOwotCQkJCWlmICh3YWxrZXIoY29lcmNpb25zLT50aW1lc3RhbXB0 eiwgY29udGV4dCkpCi0JCQkJCXJldHVybiB0cnVlOwotCQkJCWlmICh3YWxrZXIoY29lcmNp b25zLT5jb21wb3NpdGUsIGNvbnRleHQpKQotCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJ CWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMzU3Niw3ICszNTM1LDYgQEAgZXhwcmVzc2lvbl90 cmVlX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQlGTEFUQ09QWShuZXdub2RlLCBqZXhwciwg SnNvbkV4cHIpOwogCQkJCU1VVEFURShuZXdub2RlLT5wYXRoX3NwZWMsIGpleHByLT5wYXRo X3NwZWMsIE5vZGUgKik7CiAJCQkJTVVUQVRFKG5ld25vZGUtPmZvcm1hdHRlZF9leHByLCBq ZXhwci0+Zm9ybWF0dGVkX2V4cHIsIE5vZGUgKik7Ci0JCQkJTVVUQVRFKG5ld25vZGUtPnJl c3VsdF9jb2VyY2lvbiwgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwgSnNvbkNvZXJjaW9uICop OwogCQkJCU1VVEFURShuZXdub2RlLT5wYXNzaW5nX3ZhbHVlcywgamV4cHItPnBhc3Npbmdf dmFsdWVzLCBMaXN0ICopOwogCQkJCS8qIGFzc3VtZSBtdXRhdG9yIGRvZXMgbm90IGNhcmUg YWJvdXQgcGFzc2luZ19uYW1lcyAqLwogCQkJCWlmIChuZXdub2RlLT5vbl9lbXB0eSkKQEAg LTM1ODcsMzUgKzM1NDUsNiBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihOb2RlICpub2Rl LAogCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7Ci0JCWNh c2UgVF9Kc29uQ29lcmNpb246Ci0JCQl7Ci0JCQkJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9 IChKc29uQ29lcmNpb24gKikgbm9kZTsKLQkJCQlKc29uQ29lcmNpb24gKm5ld25vZGU7Ci0K LQkJCQlGTEFUQ09QWShuZXdub2RlLCBjb2VyY2lvbiwgSnNvbkNvZXJjaW9uKTsKLQkJCQlN VVRBVEUobmV3bm9kZS0+ZXhwciwgY29lcmNpb24tPmV4cHIsIE5vZGUgKik7Ci0JCQkJcmV0 dXJuIChOb2RlICopIG5ld25vZGU7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2FzZSBUX0pzb25J dGVtQ29lcmNpb25zOgotCQkJewotCQkJCUpzb25JdGVtQ29lcmNpb25zICpjb2VyY2lvbnMg PSAoSnNvbkl0ZW1Db2VyY2lvbnMgKikgbm9kZTsKLQkJCQlKc29uSXRlbUNvZXJjaW9ucyAq bmV3bm9kZTsKLQotCQkJCUZMQVRDT1BZKG5ld25vZGUsIGNvZXJjaW9ucywgSnNvbkl0ZW1D b2VyY2lvbnMpOwotCQkJCU1VVEFURShuZXdub2RlLT5udWxsLCBjb2VyY2lvbnMtPm51bGws IEpzb25Db2VyY2lvbiAqKTsKLQkJCQlNVVRBVEUobmV3bm9kZS0+c3RyaW5nLCBjb2VyY2lv bnMtPnN0cmluZywgSnNvbkNvZXJjaW9uICopOwotCQkJCU1VVEFURShuZXdub2RlLT5udW1l cmljLCBjb2VyY2lvbnMtPm51bWVyaWMsIEpzb25Db2VyY2lvbiAqKTsKLQkJCQlNVVRBVEUo bmV3bm9kZS0+Ym9vbGVhbiwgY29lcmNpb25zLT5ib29sZWFuLCBKc29uQ29lcmNpb24gKik7 Ci0JCQkJTVVUQVRFKG5ld25vZGUtPmRhdGUsIGNvZXJjaW9ucy0+ZGF0ZSwgSnNvbkNvZXJj aW9uICopOwotCQkJCU1VVEFURShuZXdub2RlLT50aW1lLCBjb2VyY2lvbnMtPnRpbWUsIEpz b25Db2VyY2lvbiAqKTsKLQkJCQlNVVRBVEUobmV3bm9kZS0+dGltZXR6LCBjb2VyY2lvbnMt PnRpbWV0eiwgSnNvbkNvZXJjaW9uICopOwotCQkJCU1VVEFURShuZXdub2RlLT50aW1lc3Rh bXAsIGNvZXJjaW9ucy0+dGltZXN0YW1wLCBKc29uQ29lcmNpb24gKik7Ci0JCQkJTVVUQVRF KG5ld25vZGUtPnRpbWVzdGFtcHR6LCBjb2VyY2lvbnMtPnRpbWVzdGFtcHR6LCBKc29uQ29l cmNpb24gKik7Ci0JCQkJTVVUQVRFKG5ld25vZGUtPmNvbXBvc2l0ZSwgY29lcmNpb25zLT5j b21wb3NpdGUsIEpzb25Db2VyY2lvbiAqKTsKLQkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9k ZTsKLQkJCX0KLQkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhub2RlKSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggNTMzZGY4NmZmNzcuLjZl YjkyMzg5MmY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1 c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC00 MTEsNiArNDExLDI2IEBAIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnNfd2Fsa2VyKE5vZGUg Km5vZGUsIHZvaWQgKmNvbnRleHQpCiAJewogCQlKc29uRXhwciAgICpqZXhwciA9IGNhc3RO b2RlKEpzb25FeHByLCBub2RlKTsKIAkJQ29uc3QJICAgKmNuc3Q7CisJCWJvb2wJCXJldHVy bnNfZGF0ZXRpbWU7CisKKwkJLyoKKwkJICogSW5wdXQgZnVjdGlvbnMgZm9yIGRhdGV0aW1l IHR5cGVzIGFyZSBzdGFibGUuICBUaGV5IGNhbiBiZQorCQkgKiBjYWxsZWQgaW4gSlNPTl9W QUxVRSgpLCB3aGVuIHRoZSByZXN1bHRpbmcgU1FML0pTT04gaXMgYQorCQkgKiBzdHJpbmcu CisJCSAqLworCQlpZiAoamV4cHItPnJldHVybmluZy0+dHlwaWQgPT0gREFURU9JRCB8fAor CQkJamV4cHItPnJldHVybmluZy0+dHlwaWQgPT0gVElNRU9JRCB8fAorCQkJamV4cHItPnJl dHVybmluZy0+dHlwaWQgPT0gVElNRVRaT0lEIHx8CisJCQlqZXhwci0+cmV0dXJuaW5nLT50 eXBpZCA9PSBUSU1FU1RBTVBPSUQgfHwKKwkJCWpleHByLT5yZXR1cm5pbmctPnR5cGlkID09 IFRJTUVTVEFNUFRaT0lEKQorCQkJcmV0dXJuIHRydWU7CisKKwkJLyoKKwkJICogcGdfY29u dmVydF90bygpLCB3aGljaCBpcyB1c2VkIGZvciBpbXBsZW1lbnRhdGlvbiBvZgorCQkgKiBK U09OX1FVRVJZKFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiksIGlzIHN0YWJsZS4KKwkJ ICovCisJCWlmIChqZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBCWVRFQU9JRCkKKwkJCXJl dHVybiB0cnVlOwogCiAJCWlmICghSXNBKGpleHByLT5wYXRoX3NwZWMsIENvbnN0KSkKIAkJ CXJldHVybiB0cnVlOwpAQCAtNDIxLDggKzQ0MSwzMiBAQCBjb250YWluX211dGFibGVfZnVu Y3Rpb25zX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQlpZiAoY25zdC0+ Y29uc3Rpc251bGwpCiAJCQlyZXR1cm4gZmFsc2U7CiAKLQkJcmV0dXJuIGpzcElzTXV0YWJs ZShEYXR1bUdldEpzb25QYXRoUChjbnN0LT5jb25zdHZhbHVlKSwKLQkJCQkJCQlqZXhwci0+ cGFzc2luZ19uYW1lcywgamV4cHItPnBhc3NpbmdfdmFsdWVzKTsKKwkJaWYgKGpzcElzTXV0 YWJsZShEYXR1bUdldEpzb25QYXRoUChjbnN0LT5jb25zdHZhbHVlKSwKKwkJCQkJCSBqZXhw ci0+cGFzc2luZ19uYW1lcywgamV4cHItPnBhc3NpbmdfdmFsdWVzLAorCQkJCQkJICZyZXR1 cm5zX2RhdGV0aW1lKSkKKwkJCXJldHVybiB0cnVlOworCisJCWlmIChyZXR1cm5zX2RhdGV0 aW1lICYmIGpleHByLT5vcCA9PSBKU09OX1ZBTFVFX09QKQorCQl7CisJCQkvKgorCQkJICog U29tZSBkYXRldGltZSB0eXBlcyBoYXZlIG11dGFibGUgb3V0cHV0IGZ1bmN0aW9ucywKKwkJ CSAqIHNvIGlmIHJldHVybmluZyBzdHJpbmcgdHlwZXMgd2hvbGUgZXhwcmVzc2lvbiBpcyBt dXRhYmxlLgorCQkJICogVE9ETyBjaGVjayBpbmRpdmlkdWFsIGRhdGV0aW1lIHR5cGUgaWYg aXQgaXMga25vd24uCisJCQkgKgorCQkJICogT3RoZXIgbm9uLUpTT04gb3V0cHV0IHR5cGVz IGhhdmUgbm8gY29udmVyc2lvbiBmcm9tCisJCQkgKiBkYXRldGltZSB0eXBlcy4KKwkJCSAq CisJCQkgKiBEYXRldGltZSByZXR1cm5pbmcgdHlwZXMgd2VyZSBjaGVja2VkIGFib3ZlLCBu byBuZWVkIHRvCisJCQkgKiBjaGVjayB0aGVtIGhlcmUuICBCdXQgY29udmVyc2lvbiBiZXR3 ZWVuIHRoZW0gYWxzbyBjYW4KKwkJCSAqIGJlIG11dGFibGUuCisJCQkgKi8KKwkJCWlmIChq ZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBURVhUT0lEIHx8CisJCQkJamV4cHItPnJldHVy bmluZy0+dHlwaWQgPT0gVkFSQ0hBUk9JRCB8fAorCQkJCWpleHByLT5yZXR1cm5pbmctPnR5 cGlkID09IEJQQ0hBUk9JRCkKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCisJCXJldHVybiBm YWxzZTsKIAl9CiAKIAlpZiAoSXNBKG5vZGUsIFNRTFZhbHVlRnVuY3Rpb24pKQpAQCAtODk2 LDE4ICs5NDAsNiBAQCBtYXhfcGFyYWxsZWxfaGF6YXJkX3dhbGtlcihOb2RlICpub2RlLCBt YXhfcGFyYWxsZWxfaGF6YXJkX2NvbnRleHQgKmNvbnRleHQpCiAJCQkJCQkJCSBjb250ZXh0 LCAwKTsKIAl9CiAKLQkvKiBKc29uRXhwciBpcyBwYXJhbGxlbC11bnNhZmUgaWYgc3VidHJh bnNhY3Rpb25zIGNhbiBiZSB1c2VkLiAqLwotCWVsc2UgaWYgKElzQShub2RlLCBKc29uRXhw cikpCi0JewotCQlKc29uRXhwciAgICpqc2V4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKLQot CQlpZiAoRXhlY0V2YWxKc29uTmVlZHNTdWJUcmFuc2FjdGlvbihqc2V4cHIsIE5VTEwpKQot CQl7Ci0JCQljb250ZXh0LT5tYXhfaGF6YXJkID0gUFJPUEFSQUxMRUxfVU5TQUZFOwotCQkJ cmV0dXJuIHRydWU7Ci0JCX0KLQl9Ci0KIAkvKiBSZWN1cnNlIHRvIGNoZWNrIGFyZ3VtZW50 cyAqLwogCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsCiAJCQkJCQkJCSAg bWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIsCkBAIC01MzIzLDMgKzUzNTUsMTYgQEAgcHVs bF9wYXJhbWlkc193YWxrZXIoTm9kZSAqbm9kZSwgQml0bWFwc2V0ICoqY29udGV4dCkKIAly ZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBwdWxsX3BhcmFtaWRzX3dhbGtl ciwKIAkJCQkJCQkJICAodm9pZCAqKSBjb250ZXh0KTsKIH0KKworYm9vbAorZXhwcl9jYW5f dGhyb3dfZXJyb3JzKE5vZGUgKmV4cHIpCit7CisJaWYgKCFleHByKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoSXNBKGV4cHIsIENvbnN0KSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyog VE9ETyBjb25zaWRlciBtb3JlIGNhc2VzICovCisJcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwppbmRleCBmYWJiNWY3MjA3Ni4uYzAyNTMwYTM2NzEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5v ZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBhcnNlci9hbmFseXpl LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2FnZy5oIgpAQCAtNDEwOCw3ICs0MTA5LDYg QEAgdHJhbnNmb3JtSnNvbkV4cHJDb21tb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVu Y0V4cHIgKmZ1bmMpCiAJLyogZm9ybWF0IGlzIGRldGVybWluZWQgYnkgY29udGV4dCBpdGVt IHR5cGUgKi8KIAlmb3JtYXQgPSBleHByVHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSA9 PSBKU09OQk9JRCA/IEpTX0ZPUk1BVF9KU09OQiA6IEpTX0ZPUk1BVF9KU09OOwogCi0JanNl eHByLT5yZXN1bHRfY29lcmNpb24gPSBOVUxMOwogCWpzZXhwci0+b21pdF9xdW90ZXMgPSBm YWxzZTsKIAogCWpzZXhwci0+Zm9ybWF0ID0gZnVuYy0+Y29tbW9uLT5leHByLT5mb3JtYXQ7 CkBAIC00MTY5LDQwICs0MTY5LDYgQEAgYXNzaWduRGVmYXVsdEpzb25SZXR1cm5pbmdUeXBl KE5vZGUgKmNvbnRleHRfaXRlbSwgSnNvbkZvcm1hdCAqY29udGV4dF9mb3JtYXQsCiAJcmV0 LT50eXBtb2QgPSAtMTsKIH0KIAotLyoKLSAqIFRyeSB0byBjb2VyY2UgZXhwcmVzc2lvbiB0 byB0aGUgb3V0cHV0IHR5cGUgb3IKLSAqIHVzZSBqc29uX3BvcHVsYXRlX3R5cGUoKSBmb3Ig Y29tcG9zaXRlLCBhcnJheSBhbmQgZG9tYWluIHR5cGVzIG9yCi0gKiB1c2UgY29lcmNpb24g dmlhIEkvTy4KLSAqLwotc3RhdGljIEpzb25Db2VyY2lvbiAqCi1jb2VyY2VKc29uRXhwcihQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIGNvbnN0IEpzb25SZXR1cm5pbmcgKnJl dHVybmluZykKLXsKLQljaGFyCQl0eXB0eXBlOwotCUpzb25Db2VyY2lvbiAqY29lcmNpb24g PSBtYWtlTm9kZShKc29uQ29lcmNpb24pOwotCi0JY29lcmNpb24tPmV4cHIgPSBjb2VyY2VK c29uRnVuY0V4cHIocHN0YXRlLCBleHByLCByZXR1cm5pbmcsIGZhbHNlKTsKLQotCWlmIChj b2VyY2lvbi0+ZXhwcikKLQl7Ci0JCWlmIChjb2VyY2lvbi0+ZXhwciA9PSBleHByKQotCQkJ Y29lcmNpb24tPmV4cHIgPSBOVUxMOwotCi0JCXJldHVybiBjb2VyY2lvbjsKLQl9Ci0KLQl0 eXB0eXBlID0gZ2V0X3R5cHR5cGUocmV0dXJuaW5nLT50eXBpZCk7Ci0KLQlpZiAocmV0dXJu aW5nLT50eXBpZCA9PSBSRUNPUkRPSUQgfHwKLQkJdHlwdHlwZSA9PSBUWVBUWVBFX0NPTVBP U0lURSB8fAotCQl0eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOIHx8Ci0JCXR5cGVfaXNfYXJy YXkocmV0dXJuaW5nLT50eXBpZCkpCi0JCWNvZXJjaW9uLT52aWFfcG9wdWxhdGUgPSB0cnVl OwotCWVsc2UKLQkJY29lcmNpb24tPnZpYV9pbyA9IHRydWU7Ci0KLQlyZXR1cm4gY29lcmNp b247Ci19Ci0KIC8qCiAgKiBUcmFuc2Zvcm0gYSBKU09OIG91dHB1dCBjbGF1c2Ugb2YgSlNP Tl9WQUxVRSBhbmQgSlNPTl9RVUVSWS4KICAqLwpAQCAtNDIxMCw4ICs0MTc2LDYgQEAgc3Rh dGljIHZvaWQKIHRyYW5zZm9ybUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0YXRlICpwc3Rh dGUsIEpzb25GdW5jRXhwciAqZnVuYywKIAkJCQkJCQlKc29uRXhwciAqanNleHByKQogewot CU5vZGUJICAgKmV4cHIgPSBqc2V4cHItPmZvcm1hdHRlZF9leHByOwotCiAJanNleHByLT5y ZXR1cm5pbmcgPSB0cmFuc2Zvcm1Kc29uT3V0cHV0KHBzdGF0ZSwgZnVuYy0+b3V0cHV0LCBm YWxzZSk7CiAKIAkvKiBKU09OX1ZBTFVFIHJldHVybnMgdGV4dCBieSBkZWZhdWx0ICovCkBA IC00MjI1LDE0ICs0MTg5LDQxIEBAIHRyYW5zZm9ybUpzb25GdW5jRXhwck91dHB1dChQYXJz ZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYywKIAl7CiAJCUpzb25SZXR1cm5p bmcgcmV0OwogCi0JCWlmIChmdW5jLT5vcCA9PSBKU09OX1ZBTFVFX09QICYmCi0JCQlqc2V4 cHItPnJldHVybmluZy0+dHlwaWQgIT0gSlNPTk9JRCAmJgotCQkJanNleHByLT5yZXR1cm5p bmctPnR5cGlkICE9IEpTT05CT0lEKQorCQlpZiAoZnVuYy0+b3AgPT0gSlNPTl9WQUxVRV9P UCkKIAkJewotCQkJLyogRm9yY2VkIGNvZXJjaW9uIHZpYSBJL08gZm9yIEpTT05fVkFMVUUg Zm9yIG5vbi1KU09OIHR5cGVzICovCi0JCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IG1h a2VOb2RlKEpzb25Db2VyY2lvbik7Ci0JCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbi0+ZXhw ciA9IE5VTEw7Ci0JCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbi0+dmlhX2lvID0gdHJ1ZTsK KwkJCS8qCisJCQkgKiBPbmx5IGEgbGltaXRlZCBsaXN0IG9mIG91dHB1dCB0eXBlcyBpcyBz dXBwb3J0ZWQgaW4KKwkJCSAqIEpTT05fVkFMVUUoKSBub3cuCisJCQkgKi8KKwkJCXN3aXRj aCAoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKQorCQkJeworCQkJCWNhc2UgSlNPTkJPSUQ6 CisJCQkJY2FzZSBKU09OT0lEOgorCQkJCWNhc2UgVEVYVE9JRDoKKwkJCQljYXNlIFZBUkNI QVJPSUQ6CisJCQkJY2FzZSBCUENIQVJPSUQ6CisJCQkJY2FzZSBCT09MT0lEOgorCQkJCWNh c2UgTlVNRVJJQ09JRDoKKwkJCQljYXNlIElOVDJPSUQ6CisJCQkJY2FzZSBJTlQ0T0lEOgor CQkJCWNhc2UgSU5UOE9JRDoKKwkJCQljYXNlIEZMT0FUNE9JRDoKKwkJCQljYXNlIEZMT0FU OE9JRDoKKwkJCQljYXNlIERBVEVPSUQ6CisJCQkJY2FzZSBUSU1FT0lEOgorCQkJCWNhc2Ug VElNRVRaT0lEOgorCQkJCWNhc2UgVElNRVNUQU1QT0lEOgorCQkJCWNhc2UgVElNRVNUQU1Q VFpPSUQ6CisJCQkJCWJyZWFrOyAvKiBPayAqLworCisJCQkJZGVmYXVsdDoKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJCQkJIGVycm1zZygicmV0dXJuaW5nIHR5cGUgJXMgaXMgbm90IHN1cHBv cnRlZCBpbiBKU09OX1ZBTFVFKCkiLAorCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoanNleHBy LT5yZXR1cm5pbmctPnR5cGlkKSksCisJCQkJCQkJIHBhcnNlcl9jb2VyY2lvbl9lcnJwb3Np dGlvbihwc3RhdGUsIGZ1bmMtPmxvY2F0aW9uLCAoTm9kZSAqKSBqc2V4cHIpKSk7CisJCQl9 CisKIAkJCXJldHVybjsKIAkJfQogCkBAIC00MjQxLDEzICs0MjMyLDIzIEBAIHRyYW5zZm9y bUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAq ZnVuYywKIAkJaWYgKHJldC50eXBpZCAhPSBqc2V4cHItPnJldHVybmluZy0+dHlwaWQgfHwK IAkJCXJldC50eXBtb2QgIT0ganNleHByLT5yZXR1cm5pbmctPnR5cG1vZCkKIAkJewotCQkJ Tm9kZQkgICAqcGxhY2Vob2xkZXIgPSBtYWtlQ2FzZVRlc3RFeHByKGV4cHIpOwotCi0JCQlB c3NlcnQoKChDYXNlVGVzdEV4cHIgKikgcGxhY2Vob2xkZXIpLT50eXBlSWQgPT0gcmV0LnR5 cGlkKTsKLQkJCUFzc2VydCgoKENhc2VUZXN0RXhwciAqKSBwbGFjZWhvbGRlciktPnR5cGVN b2QgPT0gcmV0LnR5cG1vZCk7CisJCQlzd2l0Y2ggKGpzZXhwci0+cmV0dXJuaW5nLT50eXBp ZCkKKwkJCXsKKwkJCQljYXNlIEpTT05CT0lEOgorCQkJCWNhc2UgSlNPTk9JRDoKKwkJCQlj YXNlIFRFWFRPSUQ6CisJCQkJY2FzZSBWQVJDSEFST0lEOgorCQkJCWNhc2UgQlBDSEFST0lE OgorCQkJCWNhc2UgQllURUFPSUQ6CisJCQkJCWJyZWFrOwogCi0JCQlqc2V4cHItPnJlc3Vs dF9jb2VyY2lvbiA9IGNvZXJjZUpzb25FeHByKHBzdGF0ZSwgcGxhY2Vob2xkZXIsCi0JCQkJ CQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCQlkZWZhdWx0OgorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCQkgZXJybXNnKCJyZXR1cm5pbmcgdHlwZSAlcyBpcyBub3Qgc3VwcG9y dGVkIGluIEpTT05fUVVFUlkoKSIsCisJCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShqc2V4cHIt PnJldHVybmluZy0+dHlwaWQpKSwKKwkJCQkJCQkgcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0 aW9uKHBzdGF0ZSwgZnVuYy0+bG9jYXRpb24sIChOb2RlICopIGpzZXhwcikpKTsKKwkJCX0K IAkJfQogCX0KIAllbHNlCkBAIC00MjU5LDggKzQyNjAsMTAgQEAgdHJhbnNmb3JtSnNvbkZ1 bmNFeHByT3V0cHV0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jLAog ICogQ29lcmNlIGFuIGV4cHJlc3Npb24gaW4gSlNPTiBERUZBVUxUIGJlaGF2aW9yIHRvIHRo ZSB0YXJnZXQgb3V0cHV0IHR5cGUuCiAgKi8KIHN0YXRpYyBOb2RlICoKLWNvZXJjZURlZmF1 bHRKc29uRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25FeHByICpqc2V4cHIsIE5vZGUg KmRlZmV4cHIpCitjb2VyY2VEZWZhdWx0SnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uRXhwciAqanNleHByLAorCQkJCQkgIGJvb2wgaXNfb25fZW1wdHksIE5vZGUgKmRlZmV4 cHIpCiB7CisJTm9kZQkgICAqb3JpZ19kZWZleHByID0gZGVmZXhwcjsKIAlpbnQJCQlsb2Nh dGlvbjsKIAlPaWQJCQlleHBydHlwZTsKIApAQCAtNDI5MCw2MyArNDI5MywzMSBAQCBjb2Vy Y2VEZWZhdWx0SnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRXhwciAqanNleHBy LCBOb2RlICpkZWZleHByKQogCQkJCQkJZm9ybWF0X3R5cGVfYmUoanNleHByLT5yZXR1cm5p bmctPnR5cGlkKSksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9u KSkpOwogCi0JcmV0dXJuIGRlZmV4cHI7Ci19CisJLyogRG9uJ3QgYWxsb3cgdW5zYWZlIERF RkFVTCBPTiBFTVBUWSBleHByZXNzaW9ucywgdW5sZXNzIEVSUk9SIE9OIEVSUk9SICovCisJ aWYgKCFpc19vbl9lbXB0eSB8fAorCQlqc2V4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09O X0JFSEFWSU9SX0VSUk9SKQorCQlyZXR1cm4gZGVmZXhwcjsKIAotLyoKLSAqIEluaXRpYWxp emUgU1FML0pTT04gaXRlbSBjb2VyY2lvbiBmcm9tIHRoZSBTUUwgdHlwZSAidHlwaWQiIHRv IHRoZSB0YXJnZXQKLSAqICJyZXR1cm5pbmciIHR5cGUuCi0gKi8KLXN0YXRpYyBKc29uQ29l cmNpb24gKgotaW5pdEpzb25JdGVtQ29lcmNpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBPaWQg dHlwaWQsCi0JCQkJCSBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcpCi17Ci0JTm9k ZQkgICAqZXhwcjsKKwlpZiAoIWV4cHJfY2FuX3Rocm93X2Vycm9ycyhkZWZleHByKSkKKwkJ cmV0dXJuIGRlZmV4cHI7CiAKLQlpZiAodHlwaWQgPT0gVU5LTk9XTk9JRCkKKwkvKiBUcnkg dG8gc2ltcGxpZnkgZXhwcmVzc2lvbiBpZiB0aGVyZSBpcyBub24tZW1wdHkgY29lcmNpb24g Ki8KKwlpZiAoZGVmZXhwciAhPSBvcmlnX2RlZmV4cHIgJiYKKwkJIWV4cHJfY2FuX3Rocm93 X2Vycm9ycyhvcmlnX2RlZmV4cHIpKQogCXsKLQkJZXhwciA9IChOb2RlICopIG1ha2VOdWxs Q29uc3QoVU5LTk9XTk9JRCwgLTEsIEludmFsaWRPaWQpOwotCX0KLQllbHNlCi0JewotCQlD YXNlVGVzdEV4cHIgKnBsYWNlaG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKwkJ ZGVmZXhwciA9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoTlVMTCwgZGVmZXhwcik7CiAKLQkJ cGxhY2Vob2xkZXItPnR5cGVJZCA9IHR5cGlkOwotCQlwbGFjZWhvbGRlci0+dHlwZU1vZCA9 IC0xOwotCQlwbGFjZWhvbGRlci0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKLQotCQlleHBy ID0gKE5vZGUgKikgcGxhY2Vob2xkZXI7CisJCWlmICghZXhwcl9jYW5fdGhyb3dfZXJyb3Jz KGRlZmV4cHIpKQorCQkJcmV0dXJuIGRlZmV4cHI7CiAJfQogCi0JcmV0dXJuIGNvZXJjZUpz b25FeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nKTsKLX0KKwllcmVwb3J0KEVSUk9SLAor CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1z ZygidW5zYWZlIERFRkFVTFQgT04gRU1QVFkgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0 ZWQiKSwKKwkJCSBlcnJoaW50KCJVc2UgRVJST1IgT04gRVJST1IgY2xhdXNlIG9yIHRyeSB0 byBzaW1wbGlmeSBleHByZXNzaW9uIGludG8gY29uc3RhbnQtbGlrZSBmb3JtLiIpLAorCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwogCi1zdGF0aWMgdm9p ZAotaW5pdEpzb25JdGVtQ29lcmNpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkl0ZW1D b2VyY2lvbnMgKmNvZXJjaW9ucywKLQkJCQkJICBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1 cm5pbmcsIE9pZCBjb250ZXh0SXRlbVR5cGVJZCkKLXsKLQlzdHJ1Y3QKLQl7Ci0JCUpzb25D b2VyY2lvbiAqKmNvZXJjaW9uOwotCQlPaWQJCQl0eXBpZDsKLQl9CQkgICAqcCwKLQkJCQlj b2VyY2lvblR5cGlkc1tdID0KLQl7Ci0JCXsmY29lcmNpb25zLT5udWxsLCBVTktOT1dOT0lE fSwKLQkJeyZjb2VyY2lvbnMtPnN0cmluZywgVEVYVE9JRH0sCi0JCXsmY29lcmNpb25zLT5u dW1lcmljLCBOVU1FUklDT0lEfSwKLQkJeyZjb2VyY2lvbnMtPmJvb2xlYW4sIEJPT0xPSUR9 LAotCQl7JmNvZXJjaW9ucy0+ZGF0ZSwgREFURU9JRH0sCi0JCXsmY29lcmNpb25zLT50aW1l LCBUSU1FT0lEfSwKLQkJeyZjb2VyY2lvbnMtPnRpbWV0eiwgVElNRVRaT0lEfSwKLQkJeyZj b2VyY2lvbnMtPnRpbWVzdGFtcCwgVElNRVNUQU1QT0lEfSwKLQkJeyZjb2VyY2lvbnMtPnRp bWVzdGFtcHR6LCBUSU1FU1RBTVBUWk9JRH0sCi0JCXsmY29lcmNpb25zLT5jb21wb3NpdGUs IGNvbnRleHRJdGVtVHlwZUlkfSwKLQkJe05VTEwsIEludmFsaWRPaWR9Ci0JfTsKLQotCWZv ciAocCA9IGNvZXJjaW9uVHlwaWRzOyBwLT5jb2VyY2lvbjsgcCsrKQotCQkqcC0+Y29lcmNp b24gPSBpbml0SnNvbkl0ZW1Db2VyY2lvbihwc3RhdGUsIHAtPnR5cGlkLCByZXR1cm5pbmcp OworCXJldHVybiBOVUxMOwogfQogCiAvKgpAQCAtNDM3MCwxNyArNDM0MSwxMyBAQCB0cmFu c2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1 bmMpCiAJCQlqc2V4cHItPnJldHVybmluZy0+Zm9ybWF0LT5lbmNvZGluZyA9IEpTX0VOQ19E RUZBVUxUOwogCiAJCQlqc2V4cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIgPQotCQkJCWNv ZXJjZURlZmF1bHRKc29uRXhwcihwc3RhdGUsIGpzZXhwciwKKwkJCQljb2VyY2VEZWZhdWx0 SnNvbkV4cHIocHN0YXRlLCBqc2V4cHIsIHRydWUsCiAJCQkJCQkJCQkgIGpzZXhwci0+b25f ZW1wdHktPmRlZmF1bHRfZXhwcik7CiAKIAkJCWpzZXhwci0+b25fZXJyb3ItPmRlZmF1bHRf ZXhwciA9Ci0JCQkJY29lcmNlRGVmYXVsdEpzb25FeHByKHBzdGF0ZSwganNleHByLAorCQkJ CWNvZXJjZURlZmF1bHRKc29uRXhwcihwc3RhdGUsIGpzZXhwciwgZmFsc2UsCiAJCQkJCQkJ CQkgIGpzZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhwcik7CiAKLQkJCWpzZXhwci0+Y29l cmNpb25zID0gbWFrZU5vZGUoSnNvbkl0ZW1Db2VyY2lvbnMpOwotCQkJaW5pdEpzb25JdGVt Q29lcmNpb25zKHBzdGF0ZSwganNleHByLT5jb2VyY2lvbnMsIGpzZXhwci0+cmV0dXJuaW5n LAotCQkJCQkJCQkgIGV4cHJUeXBlKGNvbnRleHRJdGVtRXhwcikpOwotCiAJCQlicmVhazsK IAogCQljYXNlIEpTT05fUVVFUllfT1A6CkBAIC00Mzg5LDExICs0MzU2LDExIEBAIHRyYW5z Zm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVu YykKIAkJCXRyYW5zZm9ybUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGZ1bmMsIGpzZXhw cik7CiAKIAkJCWpzZXhwci0+b25fZW1wdHktPmRlZmF1bHRfZXhwciA9Ci0JCQkJY29lcmNl RGVmYXVsdEpzb25FeHByKHBzdGF0ZSwganNleHByLAorCQkJCWNvZXJjZURlZmF1bHRKc29u RXhwcihwc3RhdGUsIGpzZXhwciwgdHJ1ZSwKIAkJCQkJCQkJCSAganNleHByLT5vbl9lbXB0 eS0+ZGVmYXVsdF9leHByKTsKIAogCQkJanNleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHBy ID0KLQkJCQljb2VyY2VEZWZhdWx0SnNvbkV4cHIocHN0YXRlLCBqc2V4cHIsCisJCQkJY29l cmNlRGVmYXVsdEpzb25FeHByKHBzdGF0ZSwganNleHByLCBmYWxzZSwKIAkJCQkJCQkJCSAg anNleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByKTsKIAogCQkJanNleHByLT53cmFwcGVy ID0gZnVuYy0+d3JhcHBlcjsKQEAgLTQ0MDksNiArNDM3Niw3IEBAIHRyYW5zZm9ybUpzb25G dW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAkJCWpz ZXhwci0+cmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID0gSlNfRk9STUFUX0RFRkFV TFQ7CiAJCQlqc2V4cHItPnJldHVybmluZy0+Zm9ybWF0LT5lbmNvZGluZyA9IEpTX0VOQ19E RUZBVUxUOwogCisJCQkvKiBDb2VyY2UgaW50ZXJtZWRpYXRlIGJvb2xlYW4gcmVzdWx0IHRv IHRoZSBvdXRwdXQgdHlwZSBpZiBuZWVkZWQgKi8KIAkJCWlmICghT2lkSXNWYWxpZChqc2V4 cHItPnJldHVybmluZy0+dHlwaWQpKQogCQkJewogCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50 eXBpZCA9IEJPT0xPSUQ7CkBAIC00NDE2LDMyICs0Mzg0LDIxIEBAIHRyYW5zZm9ybUpzb25G dW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAkJCX0K IAkJCWVsc2UgaWYgKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCAhPSBCT09MT0lEKQogCQkJ ewotCQkJCUNhc2VUZXN0RXhwciAqcGxhY2Vob2xkZXIgPSBtYWtlTm9kZShDYXNlVGVzdEV4 cHIpOwotCQkJCWludAkJCWxvY2F0aW9uID0gZXhwckxvY2F0aW9uKChOb2RlICopIGpzZXhw cik7Ci0KLQkJCQlwbGFjZWhvbGRlci0+dHlwZUlkID0gQk9PTE9JRDsKLQkJCQlwbGFjZWhv bGRlci0+dHlwZU1vZCA9IC0xOwotCQkJCXBsYWNlaG9sZGVyLT5jb2xsYXRpb24gPSBJbnZh bGlkT2lkOwotCi0JCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24gPSBtYWtlTm9kZShKc29u Q29lcmNpb24pOwotCQkJCWpzZXhwci0+cmVzdWx0X2NvZXJjaW9uLT5leHByID0KLQkJCQkJ Y29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgKE5vZGUgKikgcGxhY2Vob2xkZXIsIEJP T0xPSUQsCi0JCQkJCQkJCQkJICBqc2V4cHItPnJldHVybmluZy0+dHlwaWQsCi0JCQkJCQkJ CQkJICBqc2V4cHItPnJldHVybmluZy0+dHlwbW9kLAotCQkJCQkJCQkJCSAgQ09FUkNJT05f RVhQTElDSVQsCi0JCQkJCQkJCQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKLQkJCQkJCQkJ CQkgIGxvY2F0aW9uKTsKLQotCQkJCWlmICghanNleHByLT5yZXN1bHRfY29lcmNpb24tPmV4 cHIpCi0JCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5O T1RfQ09FUkNFKSwKLQkJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVz IiwKLQkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKEJPT0xPSUQpLAotCQkJCQkJCQkJZm9ybWF0 X3R5cGVfYmUoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSksCi0JCQkJCQkJIHBhcnNlcl9j b2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uLCAoTm9kZSAqKSBqc2V4cHIp KSk7CisJCQkJc3dpdGNoIChqc2V4cHItPnJldHVybmluZy0+dHlwaWQpCisJCQkJeworCQkJ CQljYXNlIElOVDRPSUQ6CisJCQkJCWNhc2UgVEVYVE9JRDoKKwkJCQkJY2FzZSBWQVJDSEFS T0lEOgorCQkJCQljYXNlIEJQQ0hBUk9JRDoKKwkJCQkJCWJyZWFrOwogCi0JCQkJaWYgKGpz ZXhwci0+cmVzdWx0X2NvZXJjaW9uLT5leHByID09IChOb2RlICopIHBsYWNlaG9sZGVyKQot CQkJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbi0+ZXhwciA9IE5VTEw7CisJCQkJCWRlZmF1 bHQ6CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJCSBlcnJtc2coInJldHVybmluZyB0eXBl ICVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTl9FWElTVFMoKSIsCisJCQkJCQkJCQkJZm9y bWF0X3R5cGVfYmUoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSksCisJCQkJCQkJCSBwYXJz ZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRlLCBmdW5jLT5sb2NhdGlvbiwgKE5vZGUg KikganNleHByKSkpOworCQkJCX0KIAkJCX0KIAkJCWJyZWFrOwogCkBAIC00NDU3LDcgKzQ0 MTQsNiBAQCB0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29u RnVuY0V4cHIgKmZ1bmMpCiAJCQkJCQkgZXJybXNnKCJKU09OX1RBQkxFKCkgaXMgbm90IHll dCBpbXBsZW1lbnRlZCBmb3IgdGhlIGpzb24gdHlwZSIpLAogCQkJCQkJIGVycmhpbnQoIlRy eSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0byBqc29uYiIpLAogCQkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGZ1bmMtPmxvY2F0aW9uKSkpOwotCiAJCQlicmVhazsKIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKaW5kZXggZGE5ZGY0YWU3NjYuLjljOWY5YWQ3 MDNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwpAQCAtMTMxOCw5ICsxMzE4LDEx IEBAIGpzcElzTXV0YWJsZVdhbGtlcihKc29uUGF0aEl0ZW0gKmpwaSwgSnNvblBhdGhNdXRh YmxlQ29udGV4dCAqY3h0KQogICogQ2hlY2sgd2hldGhlciBqc29ucGF0aCBleHByZXNzaW9u IGlzIGltbXV0YWJsZSBvciBub3QuCiAgKi8KIGJvb2wKLWpzcElzTXV0YWJsZShKc29uUGF0 aCAqcGF0aCwgTGlzdCAqdmFybmFtZXMsIExpc3QgKnZhcmV4cHJzKQoranNwSXNNdXRhYmxl KEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhwcnMsCisJCQkg Ym9vbCAqcmV0dXJuc19kYXRldGltZSkKIHsKIAlKc29uUGF0aE11dGFibGVDb250ZXh0IGN4 dDsKKwlKc29uUGF0aERhdGF0eXBlU3RhdHVzIHN0YXR1czsKIAlKc29uUGF0aEl0ZW0ganBp OwogCiAJY3h0LnZhcm5hbWVzID0gdmFybmFtZXM7CkBAIC0xMzMwLDcgKzEzMzIsOSBAQCBq c3BJc011dGFibGUoSnNvblBhdGggKnBhdGgsIExpc3QgKnZhcm5hbWVzLCBMaXN0ICp2YXJl eHBycykKIAljeHQubXV0YWJsZSA9IGZhbHNlOwogCiAJanNwSW5pdCgmanBpLCBwYXRoKTsK LQlqc3BJc011dGFibGVXYWxrZXIoJmpwaSwgJmN4dCk7CisJc3RhdHVzID0ganNwSXNNdXRh YmxlV2Fsa2VyKCZqcGksICZjeHQpOworCisJKnJldHVybnNfZGF0ZXRpbWUgPSBzdGF0dXMg IT0ganBkc05vbkRhdGVUaW1lOwogCiAJcmV0dXJuIGN4dC5tdXRhYmxlOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggYzhlZjkxN2ZmZTAuLmFkYWJmNTdjOTdiIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTc2Miw0MyArNzYyLDE0IEBAIHR5cGVkZWYg c3RydWN0IEpzb25FeHByU3RhdGUKIHsKIAlKc29uRXhwciAgICpqc2V4cHI7CQkJLyogb3Jp Z2luYWwgZXhwcmVzc2lvbiBub2RlICovCiAKLQlzdHJ1Y3QKLQl7Ci0JCUZtZ3JJbmZvCWZ1 bmM7CQkvKiB0eXBpbnB1dCBmdW5jdGlvbiBmb3Igb3V0cHV0IHR5cGUgKi8KLQkJT2lkCQkJ dHlwaW9wYXJhbTsKLQl9CQkJaW5wdXQ7CQkJLyogSS9PIGluZm8gZm9yIG91dHB1dCB0eXBl ICovCi0KIAlOdWxsYWJsZURhdHVtCi0JCQkgICAqZm9ybWF0dGVkX2V4cHIsIC8qIGZvcm1h dHRlZCBjb250ZXh0IGl0ZW0gdmFsdWUgKi8KLQkJCSAgICpyZXNfZXhwciwJCS8qIHJlc3Vs dCBpdGVtICovCi0JCQkgICAqY29lcmNpb25fZXhwciwJLyogaW5wdXQgZm9yIEpTT04gaXRl bSBjb2VyY2lvbiAqLwotCQkJICAgKnBhdGhzcGVjOwkJLyogcGF0aCBzcGVjaWZpY2F0aW9u IHZhbHVlICovCisJCQkJZm9ybWF0dGVkX2V4cHIsCS8qIGZvcm1hdHRlZCBjb250ZXh0IGl0 ZW0gdmFsdWUgKi8KKwkJCQljb2VyY2lvbl9leHByLAkvKiBpbnB1dCBmb3IgSlNPTiBpdGVt IGNvZXJjaW9uICovCisJCQkJcGF0aHNwZWM7CQkvKiBwYXRoIHNwZWNpZmljYXRpb24gdmFs dWUgKi8KIAotCUV4cHJTdGF0ZSAgKnJlc3VsdF9leHByOwkvKiBjb2VyY2VkIHRvIG91dHB1 dCB0eXBlICovCiAJRXhwclN0YXRlICAqZGVmYXVsdF9vbl9lbXB0eTsJLyogT04gRU1QVFkg REVGQVVMVCBleHByZXNzaW9uICovCiAJRXhwclN0YXRlICAqZGVmYXVsdF9vbl9lcnJvcjsJ LyogT04gRVJST1IgREVGQVVMVCBleHByZXNzaW9uICovCiAJTGlzdAkgICAqYXJnczsJCQkv KiBwYXNzaW5nIGFyZ3VtZW50cyAqLwotCi0Jdm9pZAkgICAqY2FjaGU7CQkJLyogY2FjaGUg Zm9yIGpzb25fcG9wdWxhdGVfdHlwZSgpICovCi0KLQlzdHJ1Y3QgSnNvbkNvZXJjaW9uc1N0 YXRlCi0JewotCQlzdHJ1Y3QgSnNvbkNvZXJjaW9uU3RhdGUKLQkJewotCQkJSnNvbkNvZXJj aW9uICpjb2VyY2lvbjsgLyogY29lcmNpb24gZXhwcmVzc2lvbiAqLwotCQkJRXhwclN0YXRl ICAqZXN0YXRlOyAvKiBjb2VyY2lvbiBleHByZXNzaW9uIHN0YXRlICovCi0JCX0JCQludWxs LAotCQkJCQlzdHJpbmcsCi0JCW51bWVyaWMgICAgLAotCQkJCQlib29sZWFuLAotCQkJCQlk YXRlLAotCQkJCQl0aW1lLAotCQkJCQl0aW1ldHosCi0JCQkJCXRpbWVzdGFtcCwKLQkJCQkJ dGltZXN0YW1wdHosCi0JCQkJCWNvbXBvc2l0ZTsKLQl9CQkJY29lcmNpb25zOwkJLyogc3Rh dGVzIGZvciBjb2VyY2lvbiBmcm9tIFNRTC9KU09OIGl0ZW0KLQkJCQkJCQkJICogdHlwZXMg ZGlyZWN0bHkgdG8gdGhlIG91dHB1dCB0eXBlICovCiB9IEpzb25FeHByU3RhdGU7CiAKIC8q IGZ1bmN0aW9ucyBpbiBleGVjRXhwci5jICovCkBAIC04NjAsMTggKzgzMSw4IEBAIGV4dGVy biB2b2lkIEV4ZWNFdmFsU3lzVmFyKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsCiAJCQkJCQkgICBFeHByQ29udGV4dCAqZWNvbnRleHQsIFR1cGxlVGFibGVTbG90ICpz bG90KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbkNvbnN0cnVjdG9yKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRl eHQpOwotZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3AsCi0JCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKLWV4dGVybiBE YXR1bSBFeGVjUHJlcGFyZUpzb25JdGVtQ29lcmNpb24oc3RydWN0IEpzb25iVmFsdWUgKml0 ZW0sCi0JCQkJCQkJCQkJIEpzb25SZXR1cm5pbmcgKnJldHVybmluZywKLQkJCQkJCQkJCQkg c3RydWN0IEpzb25Db2VyY2lvbnNTdGF0ZSAqY29lcmNpb25zLAotCQkJCQkJCQkJCSBzdHJ1 Y3QgSnNvbkNvZXJjaW9uU3RhdGUgKipwamNzdGF0ZSk7Ci1leHRlcm4gYm9vbCBFeGVjRXZh bEpzb25OZWVkc1N1YlRyYW5zYWN0aW9uKEpzb25FeHByICpqc2V4cHIsCi0JCQkJCQkJCQkJ CXN0cnVjdCBKc29uQ29lcmNpb25zU3RhdGUgKik7Ci1leHRlcm4gRGF0dW0gRXhlY0V2YWxF eHByUGFzc2luZ0Nhc2VWYWx1ZShFeHByU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCQkJCQkgIEV4 cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsLAotCQkJCQkJCQkJCSAgRGF0dW0g Y2FzZXZhbF9kYXR1bSwKLQkJCQkJCQkJCQkgIGJvb2wgY2FzZXZhbF9pc251bGwpOworZXh0 ZXJuIHZvaWQgRXhlY0V2YWxKc29uRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wLAorCQkJCQkJCSBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogCiBleHRlcm4gdm9p ZCBFeGVjQWdnSW5pdEdyb3VwKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFu cyBwZXJ0cmFucywgQWdnU3RhdGVQZXJHcm91cCBwZXJncm91cCwKIAkJCQkJCQkgRXhwckNv bnRleHQgKmFnZ2NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJp bW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCAzYWE5NmJi Njg1NS4uMjVhMGZiOGE0NDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xNTUxLDM5 ICsxNTUxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkJlaGF2aW9yCiAJTm9kZQkgICAqZGVm YXVsdF9leHByOwkvKiBkZWZhdWx0IGV4cHJlc3Npb24sIGlmIGFueSAqLwogfSBKc29uQmVo YXZpb3I7CiAKLS8qCi0gKiBKc29uQ29lcmNpb24gLQotICoJCWNvZXJjaW9uIGZyb20gU1FM L0pTT04gaXRlbSB0eXBlcyB0byBTUUwgdHlwZXMKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgSnNv bkNvZXJjaW9uCi17Ci0JTm9kZVRhZwkJdHlwZTsKLQlOb2RlCSAgICpleHByOwkJCS8qIHJl c3VsdGluZyBleHByZXNzaW9uIGNvZXJjZWQgdG8gdGFyZ2V0IHR5cGUgKi8KLQlib29sCQl2 aWFfcG9wdWxhdGU7CS8qIGNvZXJjZSByZXN1bHQgdXNpbmcganNvbl9wb3B1bGF0ZV90eXBl KCk/ICovCi0JYm9vbAkJdmlhX2lvOwkJCS8qIGNvZXJjZSByZXN1bHQgdXNpbmcgdHlwZSBp bnB1dCBmdW5jdGlvbj8gKi8KLQlPaWQJCQljb2xsYXRpb247CQkvKiBjb2xsYXRpb24gZm9y IGNvZXJjaW9uIHZpYSBJL08gb3IgcG9wdWxhdGUgKi8KLX0gSnNvbkNvZXJjaW9uOwotCi0v KgotICogSnNvbkl0ZW1Db2VyY2lvbnMgLQotICoJCWV4cHJlc3Npb25zIGZvciBjb2VyY2lv biBmcm9tIFNRTC9KU09OIGl0ZW0gdHlwZXMgZGlyZWN0bHkgdG8gdGhlCi0gKgkJb3V0cHV0 IFNRTCB0eXBlCi0gKi8KLXR5cGVkZWYgc3RydWN0IEpzb25JdGVtQ29lcmNpb25zCi17Ci0J Tm9kZVRhZwkJdHlwZTsKLQlKc29uQ29lcmNpb24gKm51bGw7Ci0JSnNvbkNvZXJjaW9uICpz dHJpbmc7Ci0JSnNvbkNvZXJjaW9uICpudW1lcmljOwotCUpzb25Db2VyY2lvbiAqYm9vbGVh bjsKLQlKc29uQ29lcmNpb24gKmRhdGU7Ci0JSnNvbkNvZXJjaW9uICp0aW1lOwotCUpzb25D b2VyY2lvbiAqdGltZXR6OwotCUpzb25Db2VyY2lvbiAqdGltZXN0YW1wOwotCUpzb25Db2Vy Y2lvbiAqdGltZXN0YW1wdHo7Ci0JSnNvbkNvZXJjaW9uICpjb21wb3NpdGU7CS8qIGFycmF5 cyBhbmQgb2JqZWN0cyAqLwotfSBKc29uSXRlbUNvZXJjaW9uczsKLQogLyoKICAqIEpzb25F eHByIC0KICAqCQl0cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1ZBTFVFKCks IEpTT05fUVVFUlkoKSwgSlNPTl9FWElTVFMoKQpAQCAtMTU5Myw3ICsxNTYwLDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgSnNvbkV4cHIKIAlFeHByCQl4cHI7CiAJSnNvbkV4cHJPcAlvcDsJCQkJ LyoganNvbiBmdW5jdGlvbiBJRCAqLwogCU5vZGUJICAgKmZvcm1hdHRlZF9leHByOyAvKiBm b3JtYXR0ZWQgY29udGV4dCBpdGVtIGV4cHJlc3Npb24gKi8KLQlKc29uQ29lcmNpb24gKnJl c3VsdF9jb2VyY2lvbjsJLyogcmVzdWx0aW5nIGNvZXJjaW9uIHRvIFJFVFVSTklORyB0eXBl ICovCiAJSnNvbkZvcm1hdCAqZm9ybWF0OwkJCS8qIGNvbnRleHQgaXRlbSBmb3JtYXQgKEpT T04vSlNPTkIpICovCiAJTm9kZQkgICAqcGF0aF9zcGVjOwkJLyogSlNPTiBwYXRoIHNwZWNp ZmljYXRpb24gZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKnBhc3NpbmdfbmFtZXM7CS8qIFBB U1NJTkcgYXJndW1lbnQgbmFtZXMgKi8KQEAgLTE2MDEsOCArMTU2Nyw4IEBAIHR5cGVkZWYg c3RydWN0IEpzb25FeHByCiAJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOwkvKiBSRVRVUk5J TkcgY2xhdXNlIHR5cGUvZm9ybWF0IGluZm8gKi8KIAlKc29uQmVoYXZpb3IgKm9uX2VtcHR5 OwkJLyogT04gRU1QVFkgYmVoYXZpb3IgKi8KIAlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOwkJ LyogT04gRVJST1IgYmVoYXZpb3IgKi8KLQlKc29uSXRlbUNvZXJjaW9ucyAqY29lcmNpb25z OwkvKiBjb2VyY2lvbnMgZm9yIEpTT05fVkFMVUUgKi8KIAlKc29uV3JhcHBlciB3cmFwcGVy OwkJLyogV1JBUFBFUiBmb3IgSlNPTl9RVUVSWSAqLworCU9pZAkJCWNvbGxhdGlvbjsJCS8q IENvbGxhdGlvbiBvZiByZXN1bHQsIG9yIEludmFsaWRPaWQgaWYgbm9uZSAqLwogCWJvb2wJ CW9taXRfcXVvdGVzOwkvKiBLRUVQL09NSVQgUVVPVEVTIGZvciBKU09OX1FVRVJZICovCiAJ aW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAq LwogfSBKc29uRXhwcjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9jbGF1 c2VzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY2xhdXNlcy5oCmluZGV4IDZjNTIwM2Rj NDQ4Li40ZDYxYjg4YzE2MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Ns YXVzZXMuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY2xhdXNlcy5oCkBAIC01NSw0 ICs1NSw2IEBAIGV4dGVybiBRdWVyeSAqaW5saW5lX3NldF9yZXR1cm5pbmdfZnVuY3Rpb24o UGxhbm5lckluZm8gKnJvb3QsCiAKIGV4dGVybiBCaXRtYXBzZXQgKnB1bGxfcGFyYW1pZHMo RXhwciAqZXhwcik7CiAKK2V4dGVybiBib29sIGV4cHJfY2FuX3Rocm93X2Vycm9ycyhOb2Rl ICpleHByKTsKKwogI2VuZGlmCQkJCQkJCS8qIENMQVVTRVNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25w YXRoLmgKaW5kZXggOGU3OWI4ZGM5ZjAuLmU5MTM0YjdlYWI0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25w YXRoLmgKQEAgLTE3Nyw3ICsxNzcsOCBAQCBleHRlcm4gYm9vbCBqc3BHZXRCb29sKEpzb25Q YXRoSXRlbSAqdik7CiBleHRlcm4gY2hhciAqanNwR2V0U3RyaW5nKEpzb25QYXRoSXRlbSAq diwgaW50MzIgKmxlbik7CiBleHRlcm4gYm9vbCBqc3BHZXRBcnJheVN1YnNjcmlwdChKc29u UGF0aEl0ZW0gKnYsIEpzb25QYXRoSXRlbSAqZnJvbSwKIAkJCQkJCQkJIEpzb25QYXRoSXRl bSAqdG8sIGludCBpKTsKLWV4dGVybiBib29sIGpzcElzTXV0YWJsZShKc29uUGF0aCAqcGF0 aCwgTGlzdCAqdmFybmFtZXMsIExpc3QgKnZhcmV4cHJzKTsKK2V4dGVybiBib29sIGpzcElz TXV0YWJsZShKc29uUGF0aCAqcGF0aCwgTGlzdCAqdmFybmFtZXMsIExpc3QgKnZhcmV4cHJz LAorCQkJCQkJIGJvb2wgKnJldHVybnNfZGF0ZXRpbWUpOwogCiBleHRlcm4gY29uc3QgY2hh ciAqanNwT3BlcmF0aW9uTmFtZShKc29uUGF0aEl0ZW1UeXBlIHR5cGUpOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dAppbmRleCBlZjQ5NjEx MGFmMy4uMGUwN2JiYzg1OGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmJfc3FsanNvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q c29uYl9zcWxqc29uLm91dApAQCAtMTg0LDExICsxODQsMTEgQEAgU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICcxJywgJ3N0cmljdCAkWzFdJyBSRVRVUk5JTkcgdGV4dCBGQUxTRSBPTiBF UlJPUik7CiAoMSByb3cpCiAKIFNFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckWzBd JyBSRVRVUk5JTkcganNvbmIpOwotRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4g dG8ganNvbmIKK0VSUk9SOiAgcmV0dXJuaW5nIHR5cGUganNvbmIgaXMgbm90IHN1cHBvcnRl ZCBpbiBKU09OX0VYSVNUUygpCiBMSU5FIDE6IFNFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn MScsICckWzBdJyBSRVRVUk5JTkcganNvbmIpOwogICAgICAgICAgICAgICAgXgogU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICcxJywgJyRbMF0nIFJFVFVSTklORyBmbG9hdDQpOwotRVJS T1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gcmVhbAorRVJST1I6ICByZXR1cm5p bmcgdHlwZSByZWFsIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTl9FWElTVFMoKQogTElORSAx OiBTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJFswXScgUkVUVVJOSU5HIGZsb2F0 NCk7CiAgICAgICAgICAgICAgICBeCiAtLSBKU09OX1ZBTFVFCkBAIC0yNDIsNyArMjQyLDkg QEAgU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgdGV4dCk7 CiAKIC8qIGpzb25iIGJ5dGVhID8/PyAqLwogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEy MycsICckJyBSRVRVUk5JTkcgYnl0ZWEgRVJST1IgT04gRVJST1IpOwotRVJST1I6ICBTUUwv SlNPTiBpdGVtIGNhbm5vdCBiZSBjYXN0IHRvIHRhcmdldCB0eXBlCitFUlJPUjogIHJldHVy bmluZyB0eXBlIGJ5dGVhIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTl9WQUxVRSgpCitMSU5F IDI6IFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGJ5dGVh IEVSUk9SIE9OIC4uLgorICAgICAgICAgICAgICAgXgogU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJzEuMjMnLCAnJCcpOwogIGpzb25fdmFsdWUgCiAtLS0tLS0tLS0tLS0KQEAgLTM0OSwx NCArMzUxLDEyOSBAQCBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjIwMTctMDItMjAiJywg JyQnIFJFVFVSTklORyBkYXRlKSArIDk7CiAgMDMtMDEtMjAxNwogKDEgcm93KQogCi0tLSBU ZXN0IE5VTEwgY2hlY2tzIGV4ZWN1dGlvbiBpbiBkb21haW4gdHlwZXMKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICAnMS4yMycsICAnJCcgUkVUVVJOSU5HIGZsb2F0NCk7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgIDEuMjMKKygxIHJvdykKKworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgZmxvYXQ0KTsKKyBqc29u X3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgMS4yMworKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAgJyJuYW4iJywgJyQnIFJFVFVSTklORyBmbG9hdDQpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgTmFOCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciLWluZiInLCAnJCcgUkVUVVJOSU5HIGZsb2F0NCk7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAtSW5maW5pdHkKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJyJlcnIiJywgJyQnIFJFVFVSTklORyBmbG9hdDQgREVG QVVMVCAtMSBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAg ICAgLTEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJlcnIiJywgJyQn IFJFVFVSTklORyBmbG9hdDQgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlu cHV0IHN5bnRheCBmb3IgdHlwZSByZWFsOiAiZXJyIgorU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgICcxLjIzJywgICckJyBSRVRVUk5JTkcgZmxvYXQ4KTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgICAgICAgMS4yMworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBmbG9hdDgpOworIGpzb25fdmFsdWUgCist LS0tLS0tLS0tLS0KKyAgICAgICAxLjIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICAnIm5hbiInLCAnJCcgUkVUVVJOSU5HIGZsb2F0OCk7CisganNvbl92YWx1ZSAK Ky0tLS0tLS0tLS0tLQorICAgICAgICBOYU4KKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJyItaW5mIicsICckJyBSRVRVUk5JTkcgZmxvYXQ4KTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgIC1JbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5HIGZsb2F0OCBERUZBVUxUIC0xIE9O IEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAtMQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5H IGZsb2F0OCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4 IGZvciB0eXBlIGRvdWJsZSBwcmVjaXNpb246ICJlcnIiCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAgJzEuMjMnLCAgJyQnIFJFVFVSTklORyBudW1lcmljKTsKKyBqc29uX3ZhbHVlIAor LS0tLS0tLS0tLS0tCisgICAgICAgMS4yMworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBudW1lcmljKTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgICAgICAgMS4yMworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAgJyJuYW4iJywgJyQnIFJFVFVSTklORyBudW1lcmljKTsKKyBqc29uX3Zh bHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgIE5hTgorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnIi1pbmYiJywgJyQnIFJFVFVSTklORyBudW1lcmljKTsKKyBqc29u X3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgIC1JbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMgREVGQVVM VCAtMSBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAg LTEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJlcnIiJywgJyQnIFJF VFVSTklORyBudW1lcmljIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1 dCBzeW50YXggZm9yIHR5cGUgbnVtZXJpYzogImVyciIKKy0tIFRlc3QgZm9yIGRvbWFpbiB0 eXBlcwogQ1JFQVRFIERPTUFJTiBzcWxqc29uYl9pbnRfbm90X251bGwgQVMgaW50IE5PVCBO VUxMOworQ1JFQVRFIERPTUFJTiBzcWxqc29uYl9qc29uX25vdF9udWxsIEFTIGpzb24gTk9U IE5VTEwgQ0hFQ0sgKFZBTFVFOjp0ZXh0IDw+ICcwJyk7CitDUkVBVEUgRE9NQUlOIHNxbGpz b25iX2pzb25iX25vdF9udWxsIEFTIGpzb25iIE5PVCBOVUxMIENIRUNLIChWQUxVRSA8PiAn MCcpOworLS0gVGVzdCBjYXN0aW5nIHRvIGpzb25bYl0gZG9tYWlucyAoaXRlbXMgY2FzdGVk IGFzIGlzLCBzdHJpbmdzIGFyZSBub3QgdW5xdW90ZWQpCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnIjEiJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9qc29uX25vdF9udWxsKTsKK0VS Uk9SOiAgcmV0dXJuaW5nIHR5cGUgc3FsanNvbmJfanNvbl9ub3RfbnVsbCBpcyBub3Qgc3Vw cG9ydGVkIGluIEpTT05fVkFMVUUoKQorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnIjEiJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9qc29uX24uLi4KKyAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMSInLCAnJCcgUkVUVVJOSU5HIHNx bGpzb25iX2pzb25iX25vdF9udWxsKTsKK0VSUk9SOiAgcmV0dXJuaW5nIHR5cGUgc3FsanNv bmJfanNvbmJfbm90X251bGwgaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OX1ZBTFVFKCkKK0xJ TkUgMTogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxIicsICckJyBSRVRVUk5JTkcgc3Fs anNvbmJfanNvbmJfLi4uCisgICAgICAgICAgICAgICBeCistLSBUZXN0IE5VTEwgY2hlY2tz IGV4ZWN1dGlvbiBpbiBkb21haW4gdHlwZXMKIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcx JywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7Ci1FUlJPUjogIGRv bWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMK K0VSUk9SOiAgcmV0dXJuaW5nIHR5cGUgc3FsanNvbmJfaW50X25vdF9udWxsIGlzIG5vdCBz dXBwb3J0ZWQgaW4gSlNPTl9WQUxVRSgpCitMSU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVFKGpz b25iICcxJywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9uby4uLgorICAgICAgICAg ICAgICAgXgogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyBSRVRVUk5JTkcg c3FsanNvbmJfaW50X25vdF9udWxsIE5VTEwgT04gRVJST1IpOwotRVJST1I6ICBkb21haW4g c3FsanNvbmJfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitFUlJP UjogIHJldHVybmluZyB0eXBlIHNxbGpzb25iX2ludF9ub3RfbnVsbCBpcyBub3Qgc3VwcG9y dGVkIGluIEpTT05fVkFMVUUoKQorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm8uLi4KKyAgICAgICAgICAgICAg IF4KIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQuYScgUkVUVVJOSU5HIHNxbGpz b25iX2ludF9ub3RfbnVsbCBERUZBVUxUIE5VTEwgT04gRVJST1IpOwotRVJST1I6ICBkb21h aW4gc3FsanNvbmJfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitF UlJPUjogIHJldHVybmluZyB0eXBlIHNxbGpzb25iX2ludF9ub3RfbnVsbCBpcyBub3Qgc3Vw cG9ydGVkIGluIEpTT05fVkFMVUUoKQorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnMScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm8uLi4KKyAgICAgICAgICAg ICAgIF4KKy0tIFRlc3QgcmV0dXJuaW5nIG9mIG5vbi1zY2FsYXIgaXRlbXMKIFNFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdbXScsICckJyk7CiAganNvbl92YWx1ZSAKIC0tLS0tLS0tLS0t LQpAQCAtNDc4LDExICs1OTUsOSBAQCBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEpOwogKDEgcm93KQogCiBTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAy ICknIEFTIGEgUkVUVVJOSU5HIHBvaW50KTsKLSBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0t Ci0gKDEsMikKLSgxIHJvdykKLQorRVJST1I6ICByZXR1cm5pbmcgdHlwZSBwb2ludCBpcyBu b3Qgc3VwcG9ydGVkIGluIEpTT05fVkFMVUUoKQorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICkuLi4KKyAgICAg ICAgICAgICAgIF4KIC0tIFRlc3QgdGltZXN0YW1wdHogcGFzc2luZyBhbmQgb3V0cHV0CiBT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1w dHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CiAgICAgICAgICAganNvbl92 YWx1ZSAgICAgICAgICAKQEAgLTUxNCw2ICs2MjksMzYgQEAgU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEy OjM0OjU2ICsKICAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKICgxIHJvdykKIAorLS0g dGVzdCBlcnJvcnMgaW4gREVGQVVMVCBPTiBFTVBUWSBleHByZXNzaW9ucworU0VMRUNUIEpT T05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJOSU5HIGludAorICAgICAgICAgICAg ICAgICAgREVGQVVMVCAxIC8geCBPTiBFTVBUWQorICAgICAgICAgICAgICAgICAgREVGQVVM VCAyIE9OIEVSUk9SKQorRlJPTSAoVkFMVUVTICgxOjppbnQpLCAoMCkpIHgoeCk7CitFUlJP UjogIHVuc2FmZSBERUZBVUxUIE9OIEVNUFRZIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9y dGVkCitMSU5FIDI6ICAgICAgICAgICAgICAgICAgIERFRkFVTFQgMSAvIHggT04gRU1QVFkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgVXNlIEVSUk9S IE9OIEVSUk9SIGNsYXVzZSBvciB0cnkgdG8gc2ltcGxpZnkgZXhwcmVzc2lvbiBpbnRvIGNv bnN0YW50LWxpa2UgZm9ybS4KK1NFTEVDVCBKU09OX1ZBTFVFKCcxJzo6anNvbmIsICckLngn IFJFVFVSTklORyBpbnQgREVGQVVMVCAtMSBPTiBFTVBUWSk7CisganNvbl92YWx1ZSAKKy0t LS0tLS0tLS0tLQorICAgICAgICAgLTEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo JzEnOjpqc29uYiwgJyQueCcgUkVUVVJOSU5HIGludCBERUZBVUxUICctMScgT04gRU1QVFkp OworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgIC0xCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1ZBTFVFKCcxJzo6anNvbmIsICckLngnIFJFVFVSTklORyBpbnQgREVG QVVMVCAnZXJyJyBPTiBFTVBUWSk7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZv ciB0eXBlIGludGVnZXI6ICJlcnIiCitMSU5FIDE6IC4uLlNPTl9WQUxVRSgnMSc6Ompzb25i LCAnJC54JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgJ2VycicgT04gRS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K1NFTEVDVCBKU09OX1ZBTFVFKCcxJzo6anNvbmIsICckLngnIFJFVFVSTklORyBpbnQgREVG QVVMVCAtMTo6ZmxvYXQgT04gRU1QVFkpOworRVJST1I6ICB1bnNhZmUgREVGQVVMVCBPTiBF TVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZAorTElORSAxOiAuLi5TT05fVkFM VUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJOSU5HIGludCBERUZBVUxUIC0xOjpmbG9hdCAu Li4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgVXNlIEVSUk9SIE9OIEVSUk9SIGNsYXVzZSBvciB0cnkg dG8gc2ltcGxpZnkgZXhwcmVzc2lvbiBpbnRvIGNvbnN0YW50LWxpa2UgZm9ybS4KIC0tIEpT T05fUVVFUlkKIFNFTEVDVAogCUpTT05fUVVFUlkoanMsICckJyksCkBAIC04NTIsNDkgKzk5 NywzNSBAQCBGUk9NCiBDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWMgQVMgKGEgaW50LCB0IHRl eHQsIGpzIGpzb24sIGpiIGpzb25iLCBqc2EganNvbltdKTsKIENSRUFURSBUWVBFIHNxbGpz b25iX3JlY2EgQVMgKHJlY2Egc3FsanNvbmJfcmVjW10pOwogU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIi LCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0n IFJFVFVSTklORyBzcWxqc29uYl9yZWMpOwotICAgICAgICAgICAgICAgICAgICAganNvbl9x dWVyeSAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKDEsYWFhLCJbMSwgIiIyIiIsIHt9XSIs InsiIngiIjogWzEsICIiMiIiLCB7fV19IiwpCi0oMSByb3cpCi0KK0VSUk9SOiAgcmV0dXJu aW5nIHR5cGUgc3FsanNvbmJfcmVjIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTl9RVUVSWSgp CitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgImIiOiAiZm9v IiwgInQiOiAiYWFhIiwgIi4uLgorICAgICAgICAgICAgICAgXgogU0VMRUNUICogRlJPTSB1 bm5lc3QoKEpTT05fUVVFUlkoanNvbmIgJ3sianNhIjogIFt7ImEiOiAxLCAiYiI6IFsiZm9v Il19LCB7ImEiOiAyLCAiYyI6IHt9fSwgMTIzXX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25i X3JlYykpLmpzYSk7Ci0gICAgICAgICB1bm5lc3QgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotIHsiYSI6IDEsICJiIjogWyJmb28iXX0KLSB7ImEiOiAyLCAiYyI6IHt9 fQotIDEyMwotKDMgcm93cykKLQorRVJST1I6ICByZXR1cm5pbmcgdHlwZSBzcWxqc29uYl9y ZWMgaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OX1FVRVJZKCkKK0xJTkUgMTogU0VMRUNUICog RlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIgJ3sianNhIjogIFt7ImEiOiAxLCAiLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QgKiBGUk9NIHVubmVz dCgoSlNPTl9RVUVSWShqc29uYiAneyJyZWNhIjogW3siYSI6IDEsICJ0IjogWyJmb28iLCBb XV19LCB7ImEiOiAyLCAiamIiOiBbe30sIHRydWVdfV19JywgJyQnIFJFVFVSTklORyBzcWxq c29uYl9yZWNhKSkucmVjYSk7Ci0gYSB8ICAgICAgdCAgICAgIHwganMgfCAgICAgamIgICAg IHwganNhIAotLS0tKy0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0KLSAx IHwgWyJmb28iLCBbXV0gfCAgICB8ICAgICAgICAgICAgfCAKLSAyIHwgICAgICAgICAgICAg fCAgICB8IFt7fSwgdHJ1ZV0gfCAKLSgyIHJvd3MpCi0KK0VSUk9SOiAgcmV0dXJuaW5nIHR5 cGUgc3FsanNvbmJfcmVjYSBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT05fUVVFUlkoKQorTElO RSAxOiBTRUxFQ1QgKiBGUk9NIHVubmVzdCgoSlNPTl9RVUVSWShqc29uYiAneyJyZWNhIjog W3siYSI6IDEsICIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIEV4 dGVuc2lvbjogYXJyYXkgdHlwZXMgcmV0dXJuaW5nCiBTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzEsMixudWxsLCIzIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludFtdIFdJVEggV1JBUFBF Uik7Ci0gIGpzb25fcXVlcnkgIAotLS0tLS0tLS0tLS0tLS0KLSB7MSwyLE5VTEwsM30KLSgx IHJvdykKLQorRVJST1I6ICByZXR1cm5pbmcgdHlwZSBpbnRlZ2VyW10gaXMgbm90IHN1cHBv cnRlZCBpbiBKU09OX1FVRVJZKCkKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJFVFVSTklORyBpLi4uCisgICAgICAgICAgICAg ICBeCiBTRUxFQ1QgKiBGUk9NIHVubmVzdChKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwg InQiOiBbImZvbyIsIFtdXX0sIHsiYSI6IDIsICJqYiI6IFt7fSwgdHJ1ZV19XScsICckJyBS RVRVUk5JTkcgc3FsanNvbmJfcmVjW10pKTsKLSBhIHwgICAgICB0ICAgICAgfCBqcyB8ICAg ICBqYiAgICAgfCBqc2EgCi0tLS0rLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLS0tLSst LS0tLQotIDEgfCBbImZvbyIsIFtdXSB8ICAgIHwgICAgICAgICAgICB8IAotIDIgfCAgICAg ICAgICAgICB8ICAgIHwgW3t9LCB0cnVlXSB8IAotKDIgcm93cykKLQorRVJST1I6ICByZXR1 cm5pbmcgdHlwZSBzcWxqc29uYl9yZWNbXSBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT05fUVVF UlkoKQorTElORSAxOiBTRUxFQ1QgKiBGUk9NIHVubmVzdChKU09OX1FVRVJZKGpzb25iICdb eyJhIjogMSwgInQiOiBbImZvbyIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgogLS0gRXh0ZW5zaW9uOiBkb21haW4gdHlwZXMgcmV0dXJuaW5nCiBTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25v dF9udWxsKTsKLSBqc29uX3F1ZXJ5IAotLS0tLS0tLS0tLS0tCi0gICAgICAgICAgMQotKDEg cm93KQotCitFUlJPUjogIHJldHVybmluZyB0eXBlIHNxbGpzb25iX2ludF9ub3RfbnVsbCBp cyBub3Qgc3VwcG9ydGVkIGluIEpTT05fUVVFUlkoKQorTElORSAxOiBTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmIuLi4KKyAg ICAgICAgICAgICAgIF4KIFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICck LmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwpOwotRVJST1I6ICBkb21haW4g c3FsanNvbmJfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitFUlJP UjogIHJldHVybmluZyB0eXBlIHNxbGpzb25iX2ludF9ub3RfbnVsbCBpcyBub3Qgc3VwcG9y dGVkIGluIEpTT05fUVVFUlkoKQorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn eyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNvbmIuLi4KKyAgICAgICAgICAgICAg IF4KIC0tIFRlc3QgdGltZXN0YW1wdHogcGFzc2luZyBhbmQgb3V0cHV0CiBTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgt MDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CiAgICAgICAgICBqc29uX3F1ZXJ5ICAgICAg ICAgIApAQCAtMTAxOSw2ICsxMTUwLDI1IEBAIEVSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4 IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCiBDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRvICQuYSA/ IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsK IEVSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQg SU1NVVRBQkxFCiBDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA9PSAkeCldJyBQ QVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNv bmJfbXV0YWJpbGl0eSAoSlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyBpbnQpKTsgLS0g aW1tdXRhYmxlCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1ZBTFVFKGpzLCAnJCcgUkVUVVJOSU5HIGRhdGUpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGlu IGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1ZBTFVFKGpzLCAnJCcgUkVUVVJO SU5HIHRpbWUpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVz dCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1ZBTFVFKGpzLCAnJCcgUkVUVVJOSU5HIHRpbWV0eikpOworRVJST1I6 ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFC TEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUo anMsICckJyBSRVRVUk5JTkcgdGltZXN0YW1wKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBp bmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklO RyB0aW1lc3RhbXB0eikpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lv biBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckLmRhdGV0aW1lKCknKSk7CitFUlJPUjog IGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJM RQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9WQUxVRShq cywgJyQuZGF0ZXRpbWUoKVsqXVsxLDJdLioqJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4g aW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRF WCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckeCcgUEFTU0lO RyAnMjAyMi0wOC0yNSc6OmRhdGUgQVMgeCkpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5k ZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBP TiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckLmRhdGV0aW1lKCkn IFJFVFVSTklORyBpbnQpKTsgLS0gaW1tdXRhYmxlCitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpJykpOyAtLSBp bW11dGFibGUKIERST1AgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5OwogLS0gSlNPTl9U QUJMRQogLS0gU2hvdWxkIGZhaWwgKEpTT05fVEFCTEUgY2FuIGJlIHVzZWQgb25seSBpbiBG Uk9NIGNsYXVzZSkKQEAgLTEwNDgsNyArMTE5OCw2IEBAIFNFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnMTIzJywgJyQnCiAoMSByb3cpCiAKIC0tIEpTT05fVEFCTEU6IGJhc2lj IGZ1bmN0aW9uYWxpdHkKLUNSRUFURSBET01BSU4ganNvbmJfdGVzdF9kb21haW4gQVMgdGV4 dCBDSEVDSyAodmFsdWUgPD4gJ2ZvbycpOwogU0VMRUNUICoKIEZST00KIAkoVkFMVUVTCkBA IC0xMDY5LDcgKzEyMTgsNiBAQCBGUk9NCiAJCQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICck JywKIAkJCSJib29sIiBib29sIFBBVEggJyQnLAogCQkJIm51bWVyaWMiIG51bWVyaWMgUEFU SCAnJCcsCi0JCQkiZG9tYWluIiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKIAkJCWpz IGpzb24gUEFUSCAnJCcsCiAJCQlqYiBqc29uYiBQQVRIICckJywKIAkJCWpzdCB0ZXh0ICAg IEZPUk1BVCBKU09OICBQQVRIICckJywKQEAgLTEwODUsMjkgKzEyMzMsMjYgQEAgRlJPTQog CQkJZXhpc3RzNCB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIEZBTFNFIE9OIEVS Uk9SLAogCQkJanMyIGpzb24gUEFUSCAnJCcsCiAJCQlqc2IydyBqc29uYiBQQVRIICckJyBX SVRIIFdSQVBQRVIsCi0JCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKLQkJ CWlhIGludFtdIFBBVEggJyQnLAotCQkJdGEgdGV4dFtdIFBBVEggJyQnLAotCQkJamJhIGpz b25iW10gUEFUSCAnJCcKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTCiAJ CSkKIAkpIGp0CiAJT04gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgaWQgfCBpZDIgfCBpbnQgfCAgdGV4dCAgIHwgY2hhcig0KSB8IGJvb2wgfCBudW1lcmlj IHwgZG9tYWluICB8ICAgICAganMgICAgICB8ICAgICAgamIgICAgICB8ICAgICBqc3QgICAg ICB8IGpzYyAgfCBqc3YgIHwgICAgIGpzYiAgICAgIHwgICAgIGpzYnEgICAgIHwgYWFhIHwg YWFhMSB8IGV4aXN0czEgfCBleGlzdHMyIHwgZXhpc3RzMyB8IGV4aXN0czQgfCAgICAganMy ICAgICAgfCAgICAganNiMncgICAgICB8ICAgIGpzYjJxICAgICB8IGlhIHwgdGEgfCBqYmEg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLSstLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLSstLS0tLQotIDEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMSB8ICAgMSB8ICAgMSB8IDEgICAgICAgfCAxICAgICAgIHwg ICAgICB8ICAgICAgIDEgfCAxICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAg IHwgMSAgICAgICAgICAgIHwgMSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxICAgICAg ICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFs c2UgICB8IDEgICAgICAgICAgICB8IFsxXSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwg ICAgfCAgICB8IAotIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8ICAg ICB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAg IHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICB8 ICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgICAg ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgfCAgICB8IAotIHt9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMSB8ICAgMSB8ICAgICB8ICAgICAgICAgfCAgICAg ICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwge30gICAgICAgICAgIHwge30gICAg ICAgICAgIHwge30gICAgICAgICAgIHwge30gICB8IHt9ICAgfCB7fSAgICAgICAgICAgfCB7 fSAgICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAg IHwgZmFsc2UgICB8IHt9ICAgICAgICAgICB8IFt7fV0gICAgICAgICAgIHwge30gICAgICAg ICAgIHwgICAgfCAgICB8IAotIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAg MSB8ICAgMSB8ICAgMSB8IDEgICAgICAgfCAxICAgICAgIHwgICAgICB8ICAgICAgIDEgfCAx ICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwg MSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxICAgICAgICAgICAgfCAgICAgfCAgICAg IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IDEgICAgICAgICAg ICB8IFsxXSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgICAgfCAgICB8IAotIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6 IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMiB8ICAgMiB8ICAgMSB8IDEuMjMgICAg fCAxLjIzICAgIHwgICAgICB8ICAgIDEuMjMgfCAxLjIzICAgIHwgMS4yMyAgICAgICAgIHwg MS4yMyAgICAgICAgIHwgMS4yMyAgICAgICAgIHwgMS4yMyB8IDEuMjMgfCAxLjIzICAgICAg ICAgfCAxLjIzICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAg ICAgICAgIHwgZmFsc2UgICB8IDEuMjMgICAgICAgICB8IFsxLjIzXSAgICAgICAgIHwgMS4y MyAgICAgICAgIHwgICAgfCAgICB8IAotIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwi Il0gfCAgMyB8ICAgMyB8ICAgMiB8IDIgICAgICAgfCAyICAgICAgIHwgICAgICB8ICAgICAg IDIgfCAyICAgICAgIHwgIjIiICAgICAgICAgIHwgIjIiICAgICAgICAgIHwgIjIiICAgICAg ICAgIHwgIjIiICB8ICIyIiAgfCAiMiIgICAgICAgICAgfCAyICAgICAgICAgICAgfCAgICAg fCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8ICIyIiAg ICAgICAgICB8IFsiMiJdICAgICAgICAgIHwgMiAgICAgICAgICAgIHwgICAgfCAgICB8IAot IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7 ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNCB8ICAgNCB8ICAgICB8IGFh YWFhYWEgfCBhYWFhICAgIHwgICAgICB8ICAgICAgICAgfCBhYWFhYWFhIHwgImFhYWFhYWEi ICAgIHwgImFhYWFhYWEiICAgIHwgImFhYWFhYWEiICAgIHwgImFhYSB8ICJhYWEgfCAiYWFh YWFhYSIgICAgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAg IDAgfCAgICAgICAgIHwgZmFsc2UgICB8ICJhYWFhYWFhIiAgICB8IFsiYWFhYWFhYSJdICAg IHwgICAgICAgICAgICAgIHwgICAgfCAgICB8IAotIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFh IiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJc InN0clwiIl0gfCAgNSB8ICAgNSB8ICAgICB8IGZvbyAgICAgfCBmb28gICAgIHwgICAgICB8 ICAgICAgICAgfCAgICAgICAgIHwgImZvbyIgICAgICAgIHwgImZvbyIgICAgICAgIHwgImZv byIgICAgICAgIHwgImZvbyB8ICJmb28gfCAiZm9vIiAgICAgICAgfCAgICAgICAgICAgICAg fCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8 ICJmb28iICAgICAgICB8IFsiZm9vIl0gICAgICAgIHwgICAgICAgICAgICAgIHwgICAgfCAg ICB8IAotIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNiB8ICAgNiB8ICAg ICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgbnVs bCAgICAgICAgIHwgbnVsbCAgICAgICAgIHwgbnVsbCAgICAgICAgIHwgbnVsbCB8IG51bGwg fCBudWxsICAgICAgICAgfCBudWxsICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8 ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IG51bGwgICAgICAgICB8IFtudWxsXSAg ICAgICAgIHwgbnVsbCAgICAgICAgIHwgICAgfCAgICB8IAotIFsxLCAxLjIzLCAiMiIsICJh YWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwy XSIsICJcInN0clwiIl0gfCAgNyB8ICAgNyB8ICAgMCB8IGZhbHNlICAgfCBmYWxzICAgIHwg ZiAgICB8ICAgICAgICAgfCBmYWxzZSAgIHwgZmFsc2UgICAgICAgIHwgZmFsc2UgICAgICAg IHwgZmFsc2UgICAgICAgIHwgZmFscyB8IGZhbHMgfCBmYWxzZSAgICAgICAgfCBmYWxzZSAg ICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFs c2UgICB8IGZhbHNlICAgICAgICB8IFtmYWxzZV0gICAgICAgIHwgZmFsc2UgICAgICAgIHwg ICAgfCAgICB8IAotIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgOCB8ICAg OCB8ICAgMSB8IHRydWUgICAgfCB0cnVlICAgIHwgdCAgICB8ICAgICAgICAgfCB0cnVlICAg IHwgdHJ1ZSAgICAgICAgIHwgdHJ1ZSAgICAgICAgIHwgdHJ1ZSAgICAgICAgIHwgdHJ1ZSB8 IHRydWUgfCB0cnVlICAgICAgICAgfCB0cnVlICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAg ICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IHRydWUgICAgICAgICB8IFt0 cnVlXSAgICAgICAgIHwgdHJ1ZSAgICAgICAgIHwgICAgfCAgICB8IAotIFsxLCAxLjIzLCAi MiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30s ICJbMSwyXSIsICJcInN0clwiIl0gfCAgOSB8ICAgOSB8ICAgICB8ICAgICAgICAgfCAgICAg ICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgeyJhYWEiOiAxMjN9IHwgeyJhYWEi OiAxMjN9IHwgeyJhYWEiOiAxMjN9IHwgeyJhYSB8IHsiYWEgfCB7ImFhYSI6IDEyM30gfCB7 ImFhYSI6IDEyM30gfCAxMjMgfCAgMTIzIHwgdCAgICAgICB8ICAgICAgIDEgfCAgICAgICAx IHwgdHJ1ZSAgICB8IHsiYWFhIjogMTIzfSB8IFt7ImFhYSI6IDEyM31dIHwgeyJhYWEiOiAx MjN9IHwgICAgfCAgICB8IAotIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAx MCB8ICAxMCB8ICAgICB8IFsxLDJdICAgfCBbMSwyICAgIHwgICAgICB8ICAgICAgICAgfCBb MSwyXSAgIHwgIlsxLDJdIiAgICAgIHwgIlsxLDJdIiAgICAgIHwgIlsxLDJdIiAgICAgIHwg IlsxLCB8ICJbMSwgfCAiWzEsMl0iICAgICAgfCBbMSwgMl0gICAgICAgfCAgICAgfCAgICAg IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8ICJbMSwyXSIgICAg ICB8IFsiWzEsMl0iXSAgICAgIHwgWzEsIDJdICAgICAgIHwgICAgfCAgICB8IAotIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6 IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMSB8ICAxMSB8ICAgICB8ICJzdHIiICAg fCAic3RyICAgIHwgICAgICB8ICAgICAgICAgfCAic3RyIiAgIHwgIlwic3RyXCIiICAgIHwg Ilwic3RyXCIiICAgIHwgIlwic3RyXCIiICAgIHwgIlwicyB8ICJcInMgfCAiXCJzdHJcIiIg ICAgfCAic3RyIiAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAg ICAgICAgIHwgZmFsc2UgICB8ICJcInN0clwiIiAgICB8IFsiXCJzdHJcIiJdICAgIHwgInN0 ciIgICAgICAgIHwgICAgfCAgICB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAganMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBpZCB8IGlkMiB8IGludCB8ICB0ZXh0ICAgfCBjaGFyKDQpIHwgYm9vbCB8IG51bWVy aWMgfCAgICAgIGpzICAgICAgfCAgICAgIGpiICAgICAgfCAgICAganN0ICAgICAgfCBqc2Mg IHwganN2ICB8ICAgICBqc2IgICAgICB8ICAgICBqc2JxICAgICB8IGFhYSB8IGFhYTEgfCBl eGlzdHMxIHwgZXhpc3RzMiB8IGV4aXN0czMgfCBleGlzdHM0IHwgICAgIGpzMiAgICAgIHwg ICAgIGpzYjJ3ICAgICAgfCAgICBqc2IycSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLSst LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyAxICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDEgfCAgIDEgfCAgIDEgfCAxICAgICAgIHwgMSAgICAg ICB8ICAgICAgfCAgICAgICAxIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAg ICAgICAgICAgIHwgMSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxICAgICAgICAgICAg fCAgICAgfCAgICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8 IDEgICAgICAgICAgICB8IFsxXSAgICAgICAgICAgIHwgMQorIFtdICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICB8ICAgICB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwg ICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAg ICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAKKyB7fSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDEgfCAgIDEgfCAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAg fCAgICAgICAgIHwge30gICAgICAgICAgIHwge30gICAgICAgICAgIHwge30gICAgICAgICAg IHwge30gICB8IHt9ICAgfCB7fSAgICAgICAgICAgfCB7fSAgICAgICAgICAgfCAgICAgfCAg ICAgIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IHt9ICAgICAg ICAgICB8IFt7fV0gICAgICAgICAgIHwge30KKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJz dHJcIiJdIHwgIDEgfCAgIDEgfCAgIDEgfCAxICAgICAgIHwgMSAgICAgICB8ICAgICAgfCAg ICAgICAxIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwg MSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxICAgICAgICAgICAgfCAgICAgfCAgICAg IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8IDEgICAgICAgICAg ICB8IFsxXSAgICAgICAgICAgIHwgMQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwi Il0gfCAgMiB8ICAgMiB8ICAgMSB8IDEuMjMgICAgfCAxLjIzICAgIHwgICAgICB8ICAgIDEu MjMgfCAxLjIzICAgICAgICAgfCAxLjIzICAgICAgICAgfCAxLjIzICAgICAgICAgfCAxLjIz IHwgMS4yMyB8IDEuMjMgICAgICAgICB8IDEuMjMgICAgICAgICB8ICAgICB8ICAgICAgfCBm ICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgMS4yMyAgICAgICAgIHwg WzEuMjNdICAgICAgICAgfCAxLjIzCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9v IiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIi XSB8ICAzIHwgICAzIHwgICAyIHwgMiAgICAgICB8IDIgICAgICAgfCAgICAgIHwgICAgICAg MiB8ICIyIiAgICAgICAgICB8ICIyIiAgICAgICAgICB8ICIyIiAgICAgICAgICB8ICIyIiAg fCAiMiIgIHwgIjIiICAgICAgICAgIHwgMiAgICAgICAgICAgIHwgICAgIHwgICAgICB8IGYg ICAgICAgfCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlICAgfCAiMiIgICAgICAgICAgfCBb IjIiXSAgICAgICAgICB8IDIKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBu dWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwg IDQgfCAgIDQgfCAgICAgfCBhYWFhYWFhIHwgYWFhYSAgICB8ICAgICAgfCAgICAgICAgIHwg ImFhYWFhYWEiICAgIHwgImFhYWFhYWEiICAgIHwgImFhYWFhYWEiICAgIHwgImFhYSB8ICJh YWEgfCAiYWFhYWFhYSIgICAgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgZiAgICAg ICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UgICB8ICJhYWFhYWFhIiAgICB8IFsiYWFh YWFhYSJdICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwg ICA1IHwgICAgIHwgZm9vICAgICB8IGZvbyAgICAgfCAgICAgIHwgICAgICAgICB8ICJmb28i ICAgICAgICB8ICJmb28iICAgICAgICB8ICJmb28iICAgICAgICB8ICJmb28gfCAiZm9vIHwg ImZvbyIgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgIHwgICAgICB8IGYgICAgICAgfCAg ICAgICAwIHwgICAgICAgICB8IGZhbHNlICAgfCAiZm9vIiAgICAgICAgfCBbImZvbyJdICAg ICAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNl LCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNiB8ICAgNiB8 ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAgICAgfCBudWxsICAgICAg ICAgfCBudWxsICAgICAgICAgfCBudWxsICAgICAgICAgfCBudWxsIHwgbnVsbCB8IG51bGwg ICAgICAgICB8IG51bGwgICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwgICAgICAg MCB8ICAgICAgICAgfCBmYWxzZSAgIHwgbnVsbCAgICAgICAgIHwgW251bGxdICAgICAgICAg fCBudWxsCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2Us IHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA3IHwgICA3IHwg ICAwIHwgZmFsc2UgICB8IGZhbHMgICAgfCBmICAgIHwgICAgICAgICB8IGZhbHNlICAgICAg ICB8IGZhbHNlICAgICAgICB8IGZhbHNlICAgICAgICB8IGZhbHMgfCBmYWxzIHwgZmFsc2Ug ICAgICAgIHwgZmFsc2UgICAgICAgIHwgICAgIHwgICAgICB8IGYgICAgICAgfCAgICAgICAw IHwgICAgICAgICB8IGZhbHNlICAgfCBmYWxzZSAgICAgICAgfCBbZmFsc2VdICAgICAgICB8 IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2Us IHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwgICA4IHwg ICAxIHwgdHJ1ZSAgICB8IHRydWUgICAgfCB0ICAgIHwgICAgICAgICB8IHRydWUgICAgICAg ICB8IHRydWUgICAgICAgICB8IHRydWUgICAgICAgICB8IHRydWUgfCB0cnVlIHwgdHJ1ZSAg ICAgICAgIHwgdHJ1ZSAgICAgICAgIHwgICAgIHwgICAgICB8IGYgICAgICAgfCAgICAgICAw IHwgICAgICAgICB8IGZhbHNlICAgfCB0cnVlICAgICAgICAgfCBbdHJ1ZV0gICAgICAgICB8 IHRydWUKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwg dHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCAgIDkgfCAg ICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgeyJhYWEiOiAxMjN9 IHwgeyJhYWEiOiAxMjN9IHwgeyJhYWEiOiAxMjN9IHwgeyJhYSB8IHsiYWEgfCB7ImFhYSI6 IDEyM30gfCB7ImFhYSI6IDEyM30gfCAxMjMgfCAgMTIzIHwgdCAgICAgICB8ICAgICAgIDEg fCAgICAgICAxIHwgdHJ1ZSAgICB8IHsiYWFhIjogMTIzfSB8IFt7ImFhYSI6IDEyM31dIHwg eyJhYWEiOiAxMjN9CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDEwIHwg IDEwIHwgICAgIHwgWzEsMl0gICB8IFsxLDIgICAgfCAgICAgIHwgICAgICAgICB8ICJbMSwy XSIgICAgICB8ICJbMSwyXSIgICAgICB8ICJbMSwyXSIgICAgICB8ICJbMSwgfCAiWzEsIHwg IlsxLDJdIiAgICAgIHwgWzEsIDJdICAgICAgIHwgICAgIHwgICAgICB8IGYgICAgICAgfCAg ICAgICAwIHwgICAgICAgICB8IGZhbHNlICAgfCAiWzEsMl0iICAgICAgfCBbIlsxLDJdIl0g ICAgICB8IFsxLCAyXQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGws IGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMSB8 ICAxMSB8ICAgICB8ICJzdHIiICAgfCAic3RyICAgIHwgICAgICB8ICAgICAgICAgfCAiXCJz dHJcIiIgICAgfCAiXCJzdHJcIiIgICAgfCAiXCJzdHJcIiIgICAgfCAiXCJzIHwgIlwicyB8 ICJcInN0clwiIiAgICB8ICJzdHIiICAgICAgICB8ICAgICB8ICAgICAgfCBmICAgICAgIHwg ICAgICAgMCB8ICAgICAgICAgfCBmYWxzZSAgIHwgIlwic3RyXCIiICAgIHwgWyJcInN0clwi Il0gICAgfCAic3RyIgogKDE0IHJvd3MpCiAKIC0tIEpTT05fVEFCTEU6IFRlc3QgYmFja3dh cmQgcGFyc2luZwpAQCAtMTEyMyw3ICsxMjY4LDYgQEAgU0VMRUNUICogRlJPTQogCQkJImNo YXIoNCkiIGNoYXIoNCkgUEFUSCAnJCcsCiAJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKIAkJ CSJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAotCQkJImRvbWFpbiIganNvbmJfdGVzdF9k b21haW4gUEFUSCAnJCcsCiAJCQlqcyBqc29uIFBBVEggJyQnLAogCQkJamIganNvbmIgUEFU SCAnJCcsCiAJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCkBAIC0xMTM5 LDkgKzEyODMsNiBAQCBTRUxFQ1QgKiBGUk9NCiAJCQlqczIganNvbiBQQVRIICckJywKIAkJ CWpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEggV1JBUFBFUiwKIAkJCWpzYjJxIGpzb25iIFBB VEggJyQnIE9NSVQgUVVPVEVTLAotCQkJaWEgaW50W10gUEFUSCAnJCcsCi0JCQl0YSB0ZXh0 W10gUEFUSCAnJCcsCi0JCQlqYmEganNvbmJbXSBQQVRIICckJywKIAkJCU5FU1RFRCBQQVRI ICckWzFdJyBBUyBwMSBDT0xVTU5TICgKIAkJCQlhMSBpbnQsCiAJCQkJTkVTVEVEIFBBVEgg JyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TICgKQEAgLTExNjgsNyArMTMwOSw2IEBAIENSRUFU RSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLmpzb25iX3RhYmxlX3ZpZXcgQVMKICAgICAianNv bl90YWJsZSIuImNoYXIoNCkiLAogICAgICJqc29uX3RhYmxlIi5ib29sLAogICAgICJqc29u X3RhYmxlIi4ibnVtZXJpYyIsCi0gICAgImpzb25fdGFibGUiLmRvbWFpbiwKICAgICAianNv bl90YWJsZSIuanMsCiAgICAgImpzb25fdGFibGUiLmpiLAogICAgICJqc29uX3RhYmxlIi5q c3QsCkBAIC0xMTg0LDkgKzEzMjQsNiBAQCBDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1Ymxp Yy5qc29uYl90YWJsZV92aWV3IEFTCiAgICAgImpzb25fdGFibGUiLmpzMiwKICAgICAianNv bl90YWJsZSIuanNiMncsCiAgICAgImpzb25fdGFibGUiLmpzYjJxLAotICAgICJqc29uX3Rh YmxlIi5pYSwKLSAgICAianNvbl90YWJsZSIudGEsCi0gICAgImpzb25fdGFibGUiLmpiYSwK ICAgICAianNvbl90YWJsZSIuYTEsCiAgICAgImpzb25fdGFibGUiLmIxLAogICAgICJqc29u X3RhYmxlIi5hMTEsCkBAIC0xMjA1LDcgKzEzNDIsNiBAQCBDUkVBVEUgT1IgUkVQTEFDRSBW SUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3IEFTCiAgICAgICAgICAgICAgICAgImNoYXIo NCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywKICAgICAgICAgICAgICAgICBib29sIGJvb2xl YW4gUEFUSCAnJCcsCiAgICAgICAgICAgICAgICAgIm51bWVyaWMiIG51bWVyaWMgUEFUSCAn JCcsCi0gICAgICAgICAgICAgICAgZG9tYWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQn LAogICAgICAgICAgICAgICAgIGpzIGpzb24gUEFUSCAnJCcsCiAgICAgICAgICAgICAgICAg amIganNvbmIgUEFUSCAnJCcsCiAgICAgICAgICAgICAgICAganN0IHRleHQgRk9STUFUIEpT T04gUEFUSCAnJCcsCkBAIC0xMjIxLDkgKzEzNTcsNiBAQCBDUkVBVEUgT1IgUkVQTEFDRSBW SUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3IEFTCiAgICAgICAgICAgICAgICAganMyIGpz b24gUEFUSCAnJCcsCiAgICAgICAgICAgICAgICAganNiMncganNvbmIgUEFUSCAnJCcgV0lU SCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsCiAgICAgICAgICAgICAgICAganNiMnEganNvbmIg UEFUSCAnJCcgT01JVCBRVU9URVMsCi0gICAgICAgICAgICAgICAgaWEgaW50ZWdlcltdIFBB VEggJyQnLAotICAgICAgICAgICAgICAgIHRhIHRleHRbXSBQQVRIICckJywKLSAgICAgICAg ICAgICAgICBqYmEganNvbmJbXSBQQVRIICckJywKICAgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJFsxXScgQVMgcDEKICAgICAgICAgICAgICAgICBDT0xVTU5TICgKICAgICAgICAg ICAgICAgICAgICAgYTEgaW50ZWdlciBQQVRIICckLiJhMSInLApAQCAtMTI0OCwxNSArMTM4 MSwxNCBAQCBDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3 IEFTCiAgICAgICAgICAgICBQTEFOIChqc29uX3RhYmxlX3BhdGhfMSBPVVRFUiAoKHAxIE9V VEVSICJwMSAxIikgVU5JT04gKHAyIE9VVEVSICgicDI6MSIgVU5JT04gcDIyKSkpKQogICAg ICAgICApCiBFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00ganNv bmJfdGFibGVfdmlldzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVGFibGUgRnVuY3Rpb24g U2NhbiBvbiAianNvbl90YWJsZSIKLSAgIE91dHB1dDogImpzb25fdGFibGUiLmlkLCAianNv bl90YWJsZSIuaWQyLCAianNvbl90YWJsZSIuImludCIsICJqc29uX3RhYmxlIi50ZXh0LCAi anNvbl90YWJsZSIuImNoYXIoNCkiLCAianNvbl90YWJsZSIuYm9vbCwgImpzb25fdGFibGUi LiJudW1lcmljIiwgImpzb25fdGFibGUiLmRvbWFpbiwgImpzb25fdGFibGUiLmpzLCAianNv bl90YWJsZSIuamIsICJqc29uX3RhYmxlIi5qc3QsICJqc29uX3RhYmxlIi5qc2MsICJqc29u X3RhYmxlIi5qc3YsICJqc29uX3RhYmxlIi5qc2IsICJqc29uX3RhYmxlIi5qc2JxLCAianNv bl90YWJsZSIuYWFhLCAianNvbl90YWJsZSIuYWFhMSwgImpzb25fdGFibGUiLmV4aXN0czEs ICJqc29uX3RhYmxlIi5leGlzdHMyLCAianNvbl90YWJsZSIuZXhpc3RzMywgImpzb25fdGFi bGUiLmpzMiwgImpzb25fdGFibGUiLmpzYjJ3LCAianNvbl90YWJsZSIuanNiMnEsICJqc29u X3RhYmxlIi5pYSwgImpzb25fdGFibGUiLnRhLCAianNvbl90YWJsZSIuamJhLCAianNvbl90 YWJsZSIuYTEsICJqc29uX3RhYmxlIi5iMSwgImpzb25fdGFibGUiLmExMSwgImpzb25fdGFi bGUiLmEyMSwgImpzb25fdGFibGUiLmEyMgotICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNP Tl9UQUJMRSgnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzEgUEFT U0lORyAzIEFTIGEsICciZm9vIic6Ompzb25iIEFTICJiIGMiIENPTFVNTlMgKGlkIEZPUiBP UkRJTkFMSVRZLCBpZDIgRk9SIE9SRElOQUxJVFksICJpbnQiIGludGVnZXIgUEFUSCAnJCcs IHRleHQgdGV4dCBQQVRIICckJywgImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywg Ym9vbCBib29sZWFuIFBBVEggJyQnLCAibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9t YWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLCBqcyBqc29uIFBBVEggJyQnLCBqYiBq c29uYiBQQVRIICckJywganN0IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzYyBjaGFy YWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzdiBjaGFyYWN0ZXIgdmFyeWluZyg0 KSBGT1JNQVQgSlNPTiBQQVRIICckJywganNiIGpzb25iIFBBVEggJyQnLCBqc2JxIGpzb25i IFBBVEggJyQnIE9NSVQgUVVPVEVTLCBhYWEgaW50ZWdlciBQQVRIICckLiJhYWEiJywgYWFh MSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLCBleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEgg JyQuImFhYSInLCBleGlzdHMyIGludGVnZXIgRVhJU1RTIFBBVEggJyQuImFhYSInIFRSVUUg T04gRVJST1IsIGV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVO S05PV04gT04gRVJST1IsIGpzMiBqc29uIFBBVEggJyQnLCBqc2IydyBqc29uYiBQQVRIICck JyBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiwganNiMnEganNvbmIgUEFUSCAnJCcgT01J VCBRVU9URVMsIGlhIGludGVnZXJbXSBQQVRIICckJywgdGEgdGV4dFtdIFBBVEggJyQnLCBq YmEganNvbmJbXSBQQVRIICckJywgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxIENPTFVNTlMg KGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywgYjEgdGV4dCBQQVRIICckLiJiMSInLCBORVNU RUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVNTlMgKGExMSB0ZXh0IFBBVEggJyQuImEx MSInKSksIE5FU1RFRCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICggTkVTVEVEIFBBVEgg JyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TIChhMjEgdGV4dCBQQVRIICckLiJhMjEiJyksIE5F U1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09MVU1OUyAoYTIyIHRleHQgUEFUSCAnJC4iYTIy IicpKSkgUExBTiAoanNvbl90YWJsZV9wYXRoXzEgT1VURVIgKChwMSBPVVRFUiAicDEgMSIp IFVOSU9OIChwMiBPVVRFUiAoInAyOjEiIFVOSU9OIHAyMikpKSkpCisgICBPdXRwdXQ6ICJq c29uX3RhYmxlIi5pZCwgImpzb25fdGFibGUiLmlkMiwgImpzb25fdGFibGUiLiJpbnQiLCAi anNvbl90YWJsZSIudGV4dCwgImpzb25fdGFibGUiLiJjaGFyKDQpIiwgImpzb25fdGFibGUi LmJvb2wsICJqc29uX3RhYmxlIi4ibnVtZXJpYyIsICJqc29uX3RhYmxlIi5qcywgImpzb25f dGFibGUiLmpiLCAianNvbl90YWJsZSIuanN0LCAianNvbl90YWJsZSIuanNjLCAianNvbl90 YWJsZSIuanN2LCAianNvbl90YWJsZSIuanNiLCAianNvbl90YWJsZSIuanNicSwgImpzb25f dGFibGUiLmFhYSwgImpzb25fdGFibGUiLmFhYTEsICJqc29uX3RhYmxlIi5leGlzdHMxLCAi anNvbl90YWJsZSIuZXhpc3RzMiwgImpzb25fdGFibGUiLmV4aXN0czMsICJqc29uX3RhYmxl Ii5qczIsICJqc29uX3RhYmxlIi5qc2IydywgImpzb25fdGFibGUiLmpzYjJxLCAianNvbl90 YWJsZSIuYTEsICJqc29uX3RhYmxlIi5iMSwgImpzb25fdGFibGUiLmExMSwgImpzb25fdGFi bGUiLmEyMSwgImpzb25fdGFibGUiLmEyMgorICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNP Tl9UQUJMRSgnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzEgUEFT U0lORyAzIEFTIGEsICciZm9vIic6Ompzb25iIEFTICJiIGMiIENPTFVNTlMgKGlkIEZPUiBP UkRJTkFMSVRZLCBpZDIgRk9SIE9SRElOQUxJVFksICJpbnQiIGludGVnZXIgUEFUSCAnJCcs IHRleHQgdGV4dCBQQVRIICckJywgImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywg Ym9vbCBib29sZWFuIFBBVEggJyQnLCAibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywganMg anNvbiBQQVRIICckJywgamIganNvbmIgUEFUSCAnJCcsIGpzdCB0ZXh0IEZPUk1BVCBKU09O IFBBVEggJyQnLCBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLCBqc3Yg Y2hhcmFjdGVyIHZhcnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzYiBqc29uYiBQ QVRIICckJywganNicSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywgYWFhIGludGVnZXIg UEFUSCAnJC4iYWFhIicsIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywgZXhpc3RzMSBi b29sZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywgZXhpc3RzMiBpbnRlZ2VyIEVYSVNUUyBQ QVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLCBleGlzdHMzIHRleHQgRVhJU1RTIFBBVEgg J3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLCBqczIganNvbiBQQVRIICckJywg anNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsIGpzYjJx IGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLCBORVNURUQgUEFUSCAnJFsxXScgQVMgcDEg Q09MVU1OUyAoYTEgaW50ZWdlciBQQVRIICckLiJhMSInLCBiMSB0ZXh0IFBBVEggJyQuImIx IicsIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDEgMSIgQ09MVU1OUyAoYTExIHRleHQgUEFU SCAnJC4iYTExIicpKSwgTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyIENPTFVNTlMgKCBORVNU RUQgUEFUSCAnJFsqXScgQVMgInAyOjEiIENPTFVNTlMgKGEyMSB0ZXh0IFBBVEggJyQuImEy MSInKSwgTkVTVEVEIFBBVEggJyRbKl0nIEFTIHAyMiBDT0xVTU5TIChhMjIgdGV4dCBQQVRI ICckLiJhMjIiJykpKSBQTEFOIChqc29uX3RhYmxlX3BhdGhfMSBPVVRFUiAoKHAxIE9VVEVS ICJwMSAxIikgVU5JT04gKHAyIE9VVEVSICgicDI6MSIgVU5JT04gcDIyKSkpKSkKICgzIHJv d3MpCiAKIERST1AgVklFVyBqc29uYl90YWJsZV92aWV3OwotRFJPUCBET01BSU4ganNvbmJf dGVzdF9kb21haW47CiAtLSBKU09OX1RBQkxFOiBPTiBFTVBUWS9PTiBFUlJPUiBiZWhhdmlv cgogU0VMRUNUICoKIEZST00KQEAgLTEzMTgsMTUgKzE0NTAsMTUgQEAgU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQ0IEVYSVNUUyBQ QVRIICckLmEnKSk7CiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50MiBFWElTVFMgUEFUSCAnJC5hJykpOwotRVJS T1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gc21hbGxpbnQKK0VSUk9SOiAgcmV0 dXJuaW5nIHR5cGUgc21hbGxpbnQgaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OX0VYSVNUUygp CiBMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBpbnQyIEVYSS4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFNFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50OCBFWElTVFMgUEFUSCAnJC5h JykpOwotRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gYmlnaW50CitFUlJP UjogIHJldHVybmluZyB0eXBlIGJpZ2ludCBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT05fRVhJ U1RTKCkKIExJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIics ICckJyBDT0xVTU5TIChhIGludDggRVhJLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBmbG9hdDQgRVhJU1RTIFBB VEggJyQuYScpKTsKLUVSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIHJlYWwK K0VSUk9SOiAgcmV0dXJuaW5nIHR5cGUgcmVhbCBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT05f RVhJU1RTKCkKIExJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGZsb2F0NCBFLi4uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBjaGFyKDMpIEVYSVNU UyBQQVRIICckLmEnKSk7CkBAIC0xMzM2LDExICsxNDY4LDExIEBAIFNFTEVDVCAqIEZST00g SlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgY2hhcigzKSBFWElTVFMg UEFUSCAnJC5hJykpCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWElTVFMgUEFUSCAnJC5hJykpOwotRVJS T1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8ganNvbgorRVJST1I6ICByZXR1cm5p bmcgdHlwZSBqc29uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTl9FWElTVFMoKQogTElORSAx OiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMg KGEganNvbiBFWEkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJhIicsICckJyBDT0xVTU5TIChhIGpzb25iIEVYSVNUUyBQQVRIICckLmEnKSk7Ci1F UlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byBqc29uYgorRVJST1I6ICByZXR1 cm5pbmcgdHlwZSBqc29uYiBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT05fRVhJU1RTKCkKIExJ TkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xV TU5TIChhIGpzb25iIEVYLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0gSlNPTl9UQUJMRTogbmVzdGVkIHBh dGhzIGFuZCBwbGFucwpAQCAtMjEwMiwxMSArMjIzNCwxNCBAQCBzZXQgcGFyYWxsZWxfbGVh ZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CiAtLSBTaG91bGQgYmUgbm9uLXBhcmFsbGVsIGR1 ZSB0byBzdWJ0cmFuc2FjdGlvbnMKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBzdW0o SlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyBudW1lcmljKSkgRlJPTSB0ZXN0X3BhcmFs bGVsX2pzb25iX3ZhbHVlOwotICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSBBZ2dyZWdhdGUKLSAgIC0+ICBTZXEgU2NhbiBvbiB0ZXN0X3BhcmFsbGVsX2pzb25i X3ZhbHVlCi0oMiByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6 ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog NAorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgU2VxIFNjYW4gb24gdGVzdF9wYXJhbGxlbF9qc29uYl92YWx1ZQorKDUgcm93 cykKIAogU0VMRUNUIHN1bShKU09OX1ZBTFVFKGpzLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMp KSBGUk9NIHRlc3RfcGFyYWxsZWxfanNvbmJfdmFsdWU7CiAgICAgc3VtICAgICAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwKaW5kZXggZmZmMjUzNzQ4MDguLjQz YTE5NGFkMDlmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxq c29uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbApA QCAtODIsMTIgKzgyLDQzIEBAIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMTIzIicsICck JyBSRVRVUk5JTkcgaW50KSArIDIzNDsKIAogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIy MDE3LTAyLTIwIicsICckJyBSRVRVUk5JTkcgZGF0ZSkgKyA5OwogCi0tLSBUZXN0IE5VTEwg Y2hlY2tzIGV4ZWN1dGlvbiBpbiBkb21haW4gdHlwZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICAnMS4yMycsICAnJCcgUkVUVVJOSU5HIGZsb2F0NCk7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBmbG9hdDQpOworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgICcibmFuIicsICckJyBSRVRVUk5JTkcgZmxvYXQ0KTsKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICciLWluZiInLCAnJCcgUkVUVVJOSU5HIGZsb2F0NCk7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5HIGZsb2F0NCBERUZB VUxUIC0xIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciZXJyIicsICck JyBSRVRVUk5JTkcgZmxvYXQ0IEVSUk9SIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgICcxLjIzJywgICckJyBSRVRVUk5JTkcgZmxvYXQ4KTsKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVUVVJOSU5HIGZsb2F0OCk7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAgJyJuYW4iJywgJyQnIFJFVFVSTklORyBmbG9hdDgpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJyItaW5mIicsICckJyBSRVRVUk5JTkcgZmxvYXQ4KTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciZXJyIicsICckJyBSRVRVUk5JTkcgZmxvYXQ4 IERFRkFVTFQgLTEgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJlcnIi JywgJyQnIFJFVFVSTklORyBmbG9hdDggRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAgJzEuMjMnLCAgJyQnIFJFVFVSTklORyBudW1lcmljKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMpOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgICcibmFuIicsICckJyBSRVRVUk5JTkcgbnVtZXJp Yyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIi1pbmYiJywgJyQnIFJFVFVSTklORyBu dW1lcmljKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciZXJyIicsICckJyBSRVRVUk5J TkcgbnVtZXJpYyBERUZBVUxUIC0xIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICciZXJyIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyBFUlJPUiBPTiBFUlJPUik7CisK Ky0tIFRlc3QgZm9yIGRvbWFpbiB0eXBlcwogQ1JFQVRFIERPTUFJTiBzcWxqc29uYl9pbnRf bm90X251bGwgQVMgaW50IE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBzcWxqc29uYl9qc29u X25vdF9udWxsIEFTIGpzb24gTk9UIE5VTEwgQ0hFQ0sgKFZBTFVFOjp0ZXh0IDw+ICcwJyk7 CitDUkVBVEUgRE9NQUlOIHNxbGpzb25iX2pzb25iX25vdF9udWxsIEFTIGpzb25iIE5PVCBO VUxMIENIRUNLIChWQUxVRSA8PiAnMCcpOworCistLSBUZXN0IGNhc3RpbmcgdG8ganNvblti XSBkb21haW5zIChpdGVtcyBjYXN0ZWQgYXMgaXMsIHN0cmluZ3MgYXJlIG5vdCB1bnF1b3Rl ZCkKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMSInLCAnJCcgUkVUVVJOSU5HIHNxbGpz b25iX2pzb25fbm90X251bGwpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxIicsICck JyBSRVRVUk5JTkcgc3FsanNvbmJfanNvbmJfbm90X251bGwpOworCistLSBUZXN0IE5VTEwg Y2hlY2tzIGV4ZWN1dGlvbiBpbiBkb21haW4gdHlwZXMKIFNFTEVDVCBKU09OX1ZBTFVFKGpz b25iICcxJywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CiBTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRf bm90X251bGwgTlVMTCBPTiBFUlJPUik7CiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScs ICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVMVCBOVUxMIE9O IEVSUk9SKTsKIAorCistLSBUZXN0IHJldHVybmluZyBvZiBub24tc2NhbGFyIGl0ZW1zCiBT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcpOwogU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ1tdJywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKIFNFTEVDVCBKU09OX1ZBTFVFKGpz b25iICd7fScsICckJyk7CkBAIC0xMzMsNiArMTY0LDE3IEBAIFNFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAx MjozNDo1NiArCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJ TkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5J TkcganNvbik7CiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJ TkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5J TkcganNvbmIpOwogCistLSB0ZXN0IGVycm9ycyBpbiBERUZBVUxUIE9OIEVNUFRZIGV4cHJl c3Npb25zCitTRUxFQ1QgSlNPTl9WQUxVRSgnMSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcg aW50CisgICAgICAgICAgICAgICAgICBERUZBVUxUIDEgLyB4IE9OIEVNUFRZCisgICAgICAg ICAgICAgICAgICBERUZBVUxUIDIgT04gRVJST1IpCitGUk9NIChWQUxVRVMgKDE6OmludCks ICgwKSkgeCh4KTsKKworU0VMRUNUIEpTT05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVU VVJOSU5HIGludCBERUZBVUxUIC0xIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1ZBTFVFKCcx Jzo6anNvbmIsICckLngnIFJFVFVSTklORyBpbnQgREVGQVVMVCAnLTEnIE9OIEVNUFRZKTsK K1NFTEVDVCBKU09OX1ZBTFVFKCcxJzo6anNvbmIsICckLngnIFJFVFVSTklORyBpbnQgREVG QVVMVCAnZXJyJyBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9WQUxVRSgnMSc6Ompzb25iLCAn JC54JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgLTE6OmZsb2F0IE9OIEVNUFRZKTsKKwogLS0g SlNPTl9RVUVSWQogCiBTRUxFQ1QKQEAgLTMxOCw2ICszNjAsMjEgQEAgQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUo IllZLU1NLUREIikgPwogQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAuZGF0ZXRpbWUoKSA9PSAkeCldJyBQQVNT SU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOwogQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgMCB0byAkLmEgPyAoQC5kYXRldGlt ZSgpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CiBDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEg PyAoQC5kYXRldGltZSgiSEg6TUkiKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUg QVMgeCkpOworCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1ZBTFVFKGpzLCAnJCcgUkVUVVJOSU5HIGludCkpOyAtLSBpbW11dGFibGUKK0NSRUFURSBJ TkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckJyBSRVRV Uk5JTkcgZGF0ZSkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9WQUxVRShqcywgJyQnIFJFVFVSTklORyB0aW1lKSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1ZBTFVFKGpzLCAnJCcgUkVUVVJOSU5HIHRp bWV0eikpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9W QUxVRShqcywgJyQnIFJFVFVSTklORyB0aW1lc3RhbXApKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckJyBSRVRVUk5JTkcgdGlt ZXN0YW1wdHopKTsKKworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9WQUxVRShqcywgJyQuZGF0ZXRpbWUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckLmRhdGV0aW1lKClbKl1bMSwy XS4qKicpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f VkFMVUUoanMsICckeCcgUEFTU0lORyAnMjAyMi0wOC0yNSc6OmRhdGUgQVMgeCkpOworQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9WQUxVRShqcywgJyQu ZGF0ZXRpbWUoKScgUkVUVVJOSU5HIGludCkpOyAtLSBpbW11dGFibGUKKworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRp bWUoKScpKTsgLS0gaW1tdXRhYmxlCisKIERST1AgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmls aXR5OwogCiAtLSBKU09OX1RBQkxFCkBAIC0zMzgsOCArMzk1LDYgQEAgU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICcxMjMnLCAnJCcKIAlDT0xVTU5TIChpdGVtIGludCBQQVRI ICckJywgZm9vIGludCkpIGJhcjsKIAogLS0gSlNPTl9UQUJMRTogYmFzaWMgZnVuY3Rpb25h bGl0eQotQ1JFQVRFIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbiBBUyB0ZXh0IENIRUNLICh2 YWx1ZSA8PiAnZm9vJyk7Ci0KIFNFTEVDVCAqCiBGUk9NCiAJKFZBTFVFUwpAQCAtMzYwLDcg KzQxNSw2IEBAIEZST00KIAkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEggJyQnLAogCQkJImJv b2wiIGJvb2wgUEFUSCAnJCcsCiAJCQkibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKLQkJ CSJkb21haW4iIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAogCQkJanMganNvbiBQQVRI ICckJywKIAkJCWpiIGpzb25iIFBBVEggJyQnLAogCQkJanN0IHRleHQgICAgRk9STUFUIEpT T04gIFBBVEggJyQnLApAQCAtMzc3LDEwICs0MzEsNyBAQCBGUk9NCiAKIAkJCWpzMiBqc29u IFBBVEggJyQnLAogCQkJanNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAotCQkJ anNiMnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCi0JCQlpYSBpbnRbXSBQQVRIICck JywKLQkJCXRhIHRleHRbXSBQQVRIICckJywKLQkJCWpiYSBqc29uYltdIFBBVEggJyQnCisJ CQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUwogCQkpCiAJKSBqdAogCU9OIHRy dWU7CkBAIC0zOTksNyArNDUwLDYgQEAgU0VMRUNUICogRlJPTQogCQkJImNoYXIoNCkiIGNo YXIoNCkgUEFUSCAnJCcsCiAJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKIAkJCSJudW1lcmlj IiBudW1lcmljIFBBVEggJyQnLAotCQkJImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFU SCAnJCcsCiAJCQlqcyBqc29uIFBBVEggJyQnLAogCQkJamIganNvbmIgUEFUSCAnJCcsCiAJ CQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCkBAIC00MTYsOSArNDY2LDYg QEAgU0VMRUNUICogRlJPTQogCQkJanMyIGpzb24gUEFUSCAnJCcsCiAJCQlqc2IydyBqc29u YiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCiAJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlU IFFVT1RFUywKLQkJCWlhIGludFtdIFBBVEggJyQnLAotCQkJdGEgdGV4dFtdIFBBVEggJyQn LAotCQkJamJhIGpzb25iW10gUEFUSCAnJCcsCiAKIAkJCU5FU1RFRCBQQVRIICckWzFdJyBB UyBwMSBDT0xVTU5TICgKIAkJCQlhMSBpbnQsCkBAIC00NDMsNyArNDkwLDYgQEAgU0VMRUNU ICogRlJPTQogRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpz b25iX3RhYmxlX3ZpZXc7CiAKIERST1AgVklFVyBqc29uYl90YWJsZV92aWV3OwotRFJPUCBE T01BSU4ganNvbmJfdGVzdF9kb21haW47CiAKIC0tIEpTT05fVEFCTEU6IE9OIEVNUFRZL09O IEVSUk9SIGJlaGF2aW9yCiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCAzNWM5ZjFlZmNlMi4uOGEwNTg1OTk0ZWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CkBAIC0xMjM0LDcgKzEyMzQsNiBAQCBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9y CiBKc29uQmFzZU9iamVjdEluZm8KIEpzb25CZWhhdmlvcgogSnNvbkJlaGF2aW9yVHlwZQot SnNvbkNvZXJjaW9uCiBKc29uQ29tbW9uCiBKc29uQ29uc3RydWN0b3JFeHByCiBKc29uQ29u c3RydWN0b3JFeHByU3RhdGUKLS0gCjIuMTcuMQoK --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0008-Remove-subsidary-ExprStates-in-SQL-JSON-executio.patch" Content-Disposition: attachment; filename*0="v10-0008-Remove-subsidary-ExprStates-in-SQL-JSON-executio.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YTM1Mjc4NGZhOThkNjk0ZDVkNWQ0MWNmMjdjMThjYTI1MDRjZjBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjkgQXVnIDIwMjIgMjI6NDE6MDggKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwOC8xMF0gUmVtb3ZlIHN1YnNpZGFyeSBFeHByU3RhdGVzIGluIFNR TC9KU09OIGV4ZWN1dGlvbgoKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j ICAgICAgIHwgIDg4ICsrKysrKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ckludGVycC5jIHwgMjA1ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgIHwgIDcwICsrKysrKysrLQogc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGls cy9hZHQvanNvbnBhdGhfZXhlYy5jIHwgIDc5ICsrKysrKysrKy0KIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmggICAgICAgfCAgMjAgKystCiBzcmMvaW5jbHVkZS91dGlscy9q c29ucGF0aC5oICAgICAgICAgIHwgICA0IC0KIDcgZmlsZXMgY2hhbmdlZCwgMzE2IGluc2Vy dGlvbnMoKyksIDE1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpp bmRleCBmNTBlMGQ3MDNmOC4uNjgyMjdlYmVlMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHIuYwpAQCAtNDE1OSw5ICs0MTU5LDE2IEBAIHN0YXRpYyB2b2lkCiBFeGVjSW5pdEpzb25F eHByKEpzb25FeHByICpqZXhwciwgRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpz Y3JhdGNoLAogCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCkKIHsKKwlFeHByRXZh bFN0ZXAgKnN0ZXA7CiAJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGU7CiAJTGlzdENlbGwgICAq YXJnZXhwcmxjOwogCUxpc3RDZWxsICAgKmFyZ25hbWVsYzsKKwlpbnQJCQlza2lwX3N0ZXBf b2ZmOworCWludAkJCWV4ZWNwYXRoX3N0ZXBfb2ZmOworCWludAkJCWRvbmVfc3RlcF9vZmY7 CisJaW50CQkJZGVmYXVsdF9vbl9lbXB0eV9zdGVwX29mZiA9IC0xOworCWludAkJCWRlZmF1 bHRfb25fZXJyb3Jfc3RlcF9vZmYgPSAtMTsKKwlpbnQJCQlkZWZhdWx0X29uX2VtcHR5X2p1 bXBfb2ZmID0gLTE7CiAKIAkvKiBKU09OX1RBQkxFIHByZXVkby1mdW5jdGlvbiByZXR1cm5z IGNvbnRleHQgaXRlbSBhcyBhIHJlc3VsdCAqLwogCWlmIChqZXhwci0+b3AgPT0gSlNPTl9U QUJMRV9PUCkKQEAgLTQxNzQsOSArNDE4MSw2IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4 cHIgKmpleHByLCBFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsCiAJ anNlc3RhdGUgPSBwYWxsb2MwKHNpemVvZihKc29uRXhwclN0YXRlKSk7CiAJanNlc3RhdGUt PmpzZXhwciA9IGpleHByOwogCi0Jc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KU09ORVhQUjsK LQlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0YXRlID0ganNlc3RhdGU7Ci0KIAlFeGVjSW5p dEV4cHJSZWMoKEV4cHIgKikgamV4cHItPmZvcm1hdHRlZF9leHByLCBzdGF0ZSwKIAkJCQkJ JmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci52YWx1ZSwKIAkJCQkJJmpzZXN0YXRlLT5mb3Jt YXR0ZWRfZXhwci5pc251bGwpOwpAQCAtNDE4NSwxNSArNDE4OSwxMiBAQCBFeGVjSW5pdEpz b25FeHByKEpzb25FeHByICpqZXhwciwgRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpzY3JhdGNoLAogCQkJCQkmanNlc3RhdGUtPnBhdGhzcGVjLnZhbHVlLAogCQkJCQkmanNl c3RhdGUtPnBhdGhzcGVjLmlzbnVsbCk7CiAKLQlpZiAoamV4cHItPm9uX2VtcHR5KQotCQlq c2VzdGF0ZS0+ZGVmYXVsdF9vbl9lbXB0eSA9Ci0JCQlFeGVjSW5pdEV4cHIoKEV4cHIgKikg amV4cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIsCi0JCQkJCQkgc3RhdGUtPnBhcmVudCk7 Ci0KLQlqc2VzdGF0ZS0+ZGVmYXVsdF9vbl9lcnJvciA9Ci0JCUV4ZWNJbml0RXhwcigoRXhw ciAqKSBqZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhwciwKLQkJCQkJIHN0YXRlLT5wYXJl bnQpOworCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfU0tJUDsKKwlzY3JhdGNo LT5kLmpzb25leHByX3NraXAuanNlc3RhdGUgPSBqc2VzdGF0ZTsKKwlza2lwX3N0ZXBfb2Zm ID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNo KTsKIAorCS8qIFBBU1NJTkcgYXJncy4gKi8KIAlqc2VzdGF0ZS0+YXJncyA9IE5JTDsKIAog CWZvcmJvdGgoYXJnZXhwcmxjLCBqZXhwci0+cGFzc2luZ192YWx1ZXMsCkBAIC00MjA2LDE2 ICs0MjA3LDY5IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpleHByLCBFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsCiAJCXZhci0+bmFtZSA9IHBzdHJk dXAoYXJnbmFtZS0+c3ZhbCk7CiAJCXZhci0+dHlwaWQgPSBleHByVHlwZSgoTm9kZSAqKSBh cmdleHByKTsKIAkJdmFyLT50eXBtb2QgPSBleHByVHlwbW9kKChOb2RlICopIGFyZ2V4cHIp OwotCQl2YXItPmVzdGF0ZSA9IEV4ZWNJbml0RXhwcihhcmdleHByLCBzdGF0ZS0+cGFyZW50 KTsKKworCQkvKgorCQkgKiBBIHNlcGFyYXRlIEV4cHJTdGF0ZSBpcyBub3QgbmVjZXNzYXJ5 IGZvciB0aGVzZSBleHByZXNzaW9ucworCQkgKiB3aGVuIGJlaW5nIGV2YWx1YXRlZCBmb3Ig YSBKc29uRXhwciwgbGlrZSBpbiB0aGlzIGNhc2UsCisJCSAqIGJlY2F1c2UgdGhleSB3aWxs IGV2YWx1YXRlZCBhcyB0aGUgc3RlcHMgb2YgdGhlIEpzb25FeHByLgorCQkgKi8KKwkJdmFy LT5lc3RhdGUgPSBOVUxMOwogCQl2YXItPmVjb250ZXh0ID0gTlVMTDsKIAkJdmFyLT5tY3h0 ID0gTlVMTDsKLQkJdmFyLT5ldmFsdWF0ZWQgPSBmYWxzZTsKLQkJdmFyLT52YWx1ZSA9IChE YXR1bSkgMDsKLQkJdmFyLT5pc251bGwgPSB0cnVlOwogCi0JCWpzZXN0YXRlLT5hcmdzID0K LQkJCWxhcHBlbmQoanNlc3RhdGUtPmFyZ3MsIHZhcik7CisJCS8qCisJCSAqIE1hcmsgdGhl c2UgYXMgYWx3YXlzIGV2YWx1YXRlZCBiZWNhdXNlIHRoZXkgbXVzdCBoYXZlIGJlZW4KKwkJ ICogZXZhbHVhdGVkIGJlZm9yZSBKU09OIHBhdGggZXZhbHVhdGlvbiBiZWdpbnMsIGJlY2F1 c2Ugd2UKKwkJICogaGF2ZW4ndCBwdXNoZWQgdGhlIHN0ZXAgZm9yIHRoZSBsYXR0ZXIgeWV0 LgorCQkgKi8KKwkJdmFyLT5ldmFsdWF0ZWQgPSB0cnVlOworCisJCUV4ZWNJbml0RXhwclJl YygoRXhwciAqKSBhcmdleHByLCBzdGF0ZSwgJnZhci0+dmFsdWUsICZ2YXItPmlzbnVsbCk7 CisKKwkJanNlc3RhdGUtPmFyZ3MgPSBsYXBwZW5kKGpzZXN0YXRlLT5hcmdzLCB2YXIpOwog CX0KIAorCS8qIFN0ZXAgZm9yIHRoZSBhY3R1YWwgSlNPTiBwYXRoIGV2YWx1YXRpb24uICov CisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KU09ORVhQUl9QQVRIOworCXNjcmF0Y2gtPmQu anNvbmV4cHIuanNlc3RhdGUgPSBqc2VzdGF0ZTsKKwlleGVjcGF0aF9zdGVwX29mZiA9IHN0 YXRlLT5zdGVwc19sZW47CiAJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisK KwlpZiAoamV4cHItPm9uX2VtcHR5ICYmIGpleHByLT5vbl9lbXB0eS0+ZGVmYXVsdF9leHBy KQorCXsKKwkJZGVmYXVsdF9vbl9lbXB0eV9zdGVwX29mZiA9IHN0YXRlLT5zdGVwc19sZW47 CisJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+b25fZW1wdHktPmRlZmF1bHRf ZXhwciwgc3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVF T1BfSlVNUDsKKwkJZGVmYXVsdF9vbl9lbXB0eV9qdW1wX29mZiA9IHN0YXRlLT5zdGVwc19s ZW47CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCX0KKworCWlmIChq ZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhwcikKKwl7CisJCWRlZmF1bHRfb25fZXJyb3Jf c3RlcF9vZmYgPSBzdGF0ZS0+c3RlcHNfbGVuOworCQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIg KikgamV4cHItPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIsIHN0YXRlLCByZXN2LCByZXNudWxs KTsKKwl9CisKKwkvKiBBZGp1c3QganVtcCBsb2NhdGlvbnMgKi8KKwlkb25lX3N0ZXBfb2Zm ID0gc3RhdGUtPnN0ZXBzX2xlbjsKKworCS8qIEVFT1BfSlNPTkVYUFJfU0tJUCAqLworCXN0 ZXAgPSAmc3RhdGUtPnN0ZXBzW3NraXBfc3RlcF9vZmZdOworCXN0ZXAtPmQuanNvbmV4cHJf c2tpcC5qdW1wX2RvbmUgPSBkb25lX3N0ZXBfb2ZmOworCisJLyogRUVPUF9KU09ORVhQUl9Q QVRIICovCisJc3RlcCA9ICZzdGF0ZS0+c3RlcHNbZXhlY3BhdGhfc3RlcF9vZmZdOworCXN0 ZXAtPmQuanNvbmV4cHIuanVtcF9kb25lID0gZG9uZV9zdGVwX29mZjsKKwlzdGVwLT5kLmpz b25leHByLmp1bXBfZGVmYXVsdF9vbl9lbXB0eSA9CisJCWRlZmF1bHRfb25fZW1wdHlfc3Rl cF9vZmYgPiAwID8gZGVmYXVsdF9vbl9lbXB0eV9zdGVwX29mZiA6IGRvbmVfc3RlcF9vZmY7 CisJc3RlcC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRfb25fZXJyb3IgPQorCQlkZWZhdWx0 X29uX2Vycm9yX3N0ZXBfb2ZmID4gMCA/IGRlZmF1bHRfb25fZXJyb3Jfc3RlcF9vZmYgOiBk b25lX3N0ZXBfb2ZmOworCisJLyogRUVPUF9KVU1QICovCisJaWYgKGRlZmF1bHRfb25fZW1w dHlfanVtcF9vZmYgPiAwKQorCXsKKwkJc3RlcCA9ICZzdGF0ZS0+c3RlcHNbZGVmYXVsdF9v bl9lbXB0eV9qdW1wX29mZl07CisJCXN0ZXAtPmQuanVtcC5qdW1wZG9uZSA9IGRvbmVfc3Rl cF9vZmY7CisJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5k ZXggNTZmN2JkMmE1YWMuLjIyOTU5YWU1NjljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHBySW50ZXJwLmMKQEAgLTQ5MSw3ICs0OTEsOCBAQCBFeGVjSW50ZXJwRXhwcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJ JiZDQVNFX0VFT1BfU1VCUExBTiwKIAkJJiZDQVNFX0VFT1BfSlNPTl9DT05TVFJVQ1RPUiwK IAkJJiZDQVNFX0VFT1BfSVNfSlNPTiwKLQkJJiZDQVNFX0VFT1BfSlNPTkVYUFIsCisJCSYm Q0FTRV9FRU9QX0pTT05FWFBSX1NLSVAsCisJCSYmQ0FTRV9FRU9QX0pTT05FWFBSX1BBVEgs CiAJCSYmQ0FTRV9FRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUsCiAJCSYmQ0FTRV9FRU9Q X0FHR19ERVNFUklBTElaRSwKIAkJJiZDQVNFX0VFT1BfQUdHX1NUUklDVF9JTlBVVF9DSEVD S19BUkdTLApAQCAtMTg0MiwxMSArMTg0MywyNiBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCUVF T19ORVhUKCk7CiAJCX0KIAotCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSKQorCQlFRU9fQ0FT RShFRU9QX0pTT05FWFBSX1NLSVApCiAJCXsKIAkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBp bmxpbmUgaW1wbGVtZW50YXRpb24gKi8KLQkJCUV4ZWNFdmFsSnNvbkV4cHIoc3RhdGUsIG9w LCBlY29udGV4dCk7Ci0JCQlFRU9fTkVYVCgpOworCQkJaWYgKEV4ZWNFdmFsSnNvbkV4cHJT a2lwKHN0YXRlLCBvcCkpCisJCQkJRUVPX0pVTVAob3AtPmQuanNvbmV4cHJfc2tpcC5qdW1w X2RvbmUpOworCQkJZWxzZQorCQkJCUVFT19ORVhUKCk7CisJCX0KKworCQlFRU9fQ0FTRShF RU9QX0pTT05FWFBSX1BBVEgpCisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxp bmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCWludAkJCXJlcyA9IEV4ZWNFdmFsSnNvbkV4cHIo c3RhdGUsIG9wKTsKKworCQkJaWYgKHJlcyA9PSAwKQorCQkJCUVFT19KVU1QKG9wLT5kLmpz b25leHByLmp1bXBfZGVmYXVsdF9vbl9lbXB0eSk7CisJCQllbHNlIGlmIChyZXMgPT0gLTEp CisJCQkJRUVPX0pVTVAob3AtPmQuanNvbmV4cHIuanVtcF9kZWZhdWx0X29uX2Vycm9yKTsK KwkJCWVsc2UKKwkJCQlFRU9fSlVNUChvcC0+ZC5qc29uZXhwci5qdW1wX2RvbmUpOwogCQl9 CiAKIAkJRUVPX0NBU0UoRUVPUF9MQVNUKQpAQCAtNDcwMSw1OSArNDcxNyw2IEBAIEV4ZWNF dmFsSnNvbkNvbnN0cnVjdG9yKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3As CiAJKm9wLT5yZXNudWxsID0gaXNudWxsOwogfQogCi0vKgotICogRXZhbHVhdGUgYSBKU09O IHBhdGggdmFyaWFibGUgY2FjaGluZyBjb21wdXRlZCB2YWx1ZS4KLSAqLwotaW50Ci1FdmFs SnNvblBhdGhWYXIodm9pZCAqY3h0LCBjaGFyICp2YXJOYW1lLCBpbnQgdmFyTmFtZUxlbiwK LQkJCQlKc29uYlZhbHVlICp2YWwsIEpzb25iVmFsdWUgKmJhc2VPYmplY3QpCi17Ci0JSnNv blBhdGhWYXJpYWJsZUV2YWxDb250ZXh0ICp2YXIgPSBOVUxMOwotCUxpc3QJICAgKnZhcnMg PSBjeHQ7Ci0JTGlzdENlbGwgICAqbGM7Ci0JaW50CQkJaWQgPSAxOwotCi0JaWYgKCF2YXJO YW1lKQotCQlyZXR1cm4gbGlzdF9sZW5ndGgodmFycyk7Ci0KLQlmb3JlYWNoKGxjLCB2YXJz KQotCXsKLQkJdmFyID0gbGZpcnN0KGxjKTsKLQotCQlpZiAoIXN0cm5jbXAodmFyLT5uYW1l LCB2YXJOYW1lLCB2YXJOYW1lTGVuKSkKLQkJCWJyZWFrOwotCi0JCXZhciA9IE5VTEw7Ci0J CWlkKys7Ci0JfQotCi0JaWYgKCF2YXIpCi0JCXJldHVybiAtMTsKLQotCWlmICghdmFyLT5l dmFsdWF0ZWQpCi0JewotCQlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IHZhci0+bWN4dCA/Ci0J CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyh2YXItPm1jeHQpIDogTlVMTDsKLQotCQl2YXItPnZh bHVlID0gRXhlY0V2YWxFeHByKHZhci0+ZXN0YXRlLCB2YXItPmVjb250ZXh0LCAmdmFyLT5p c251bGwpOwotCQl2YXItPmV2YWx1YXRlZCA9IHRydWU7Ci0KLQkJaWYgKG9sZGN4dCkKLQkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwotCX0KLQotCWlmICh2YXItPmlzbnVs bCkKLQl7Ci0JCXZhbC0+dHlwZSA9IGpidk51bGw7Ci0JCXJldHVybiAwOwotCX0KLQotCUpz b25JdGVtRnJvbURhdHVtKHZhci0+dmFsdWUsIHZhci0+dHlwaWQsIHZhci0+dHlwbW9kLCB2 YWwpOwotCi0JKmJhc2VPYmplY3QgPSAqdmFsOwotCXJldHVybiBpZDsKLX0KLQogLyogQ29l cmNlIEMgc3RyaW5nIHRvIHRleHQsIHZhcmNoYXIoTiksIG9yIGJwY2hhcihOKSAqLwogc3Rh dGljIERhdHVtCiBFeGVjSnNvbkNvZXJjZUNTdHJpbmdUb1RleHQoY29uc3QgY2hhciAqc3Ry LCBpbnQzMiBsZW4sCkBAIC01Mjc1LDkgKzUyMzgsOCBAQCBFeGVjSnNvblF1ZXJ5Q29lcmNp b24oSnNvbkV4cHIgKmpleHByLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKICAqIHR5cGUu CiAgKi8KIHN0YXRpYyBEYXR1bQotRXhlY0V2YWxKc29uQmVoYXZpb3IoRXhwckNvbnRleHQg KmVjb250ZXh0LCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yLAotCQkJCQkgRXhwclN0YXRlICpk ZWZhdWx0X2VzdGF0ZSwKLQkJCQkJIE9pZCByZXRfdHlwaWQsIGludDMyIHJldF90eXBtb2Qs IGJvb2wgKmlzX251bGwpCitFeGVjRXZhbEpzb25CZWhhdmlvcihKc29uQmVoYXZpb3IgKmJl aGF2aW9yLCBPaWQgcmV0X3R5cGlkLAorCQkJCQkgaW50MzIgcmV0X3R5cG1vZCwgYm9vbCAq aXNfbnVsbCkKIHsKIAkqaXNfbnVsbCA9IGZhbHNlOwogCkBAIC01MzI3LDEyICs1Mjg5LDgg QEAgRXhlY0V2YWxKc29uQmVoYXZpb3IoRXhwckNvbnRleHQgKmVjb250ZXh0LCBKc29uQmVo YXZpb3IgKmJlaGF2aW9yLAogCQkJcmV0dXJuIChEYXR1bSkgMDsKIAogCQljYXNlIEpTT05f QkVIQVZJT1JfREVGQVVMVDoKLQkJCS8qCi0JCQkgKiBFeGVjdXRlIERFRkFVTFQgZXhwcmVz c2lvbi4KLQkJCSAqIENvZXJjaW9uIGlzIG5vdCBuZWVkZWQgaGVyZSwgYmVjYXVzZSBleHBy ZXNzaW9uIGlzCi0JCQkgKiBhbHJlYWR5IGNvZXJjZWQgdG8gdGhlIHRhcmdldCB0eXBlIGJ5 IHRoZSBwYXJzZXIuCi0JCQkgKi8KLQkJCXJldHVybiBFeGVjRXZhbEV4cHIoZGVmYXVsdF9l c3RhdGUsIGVjb250ZXh0LCBpc19udWxsKTsKKwkJCUFzc2VydCgwKTsKKwkJCXJldHVybiAo RGF0dW0pIDA7CS8qIG11c3QgYmUgaGFuZGxlZCBieSBjYWxsZXIgKi8KIAogCQlkZWZhdWx0 OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBTUUwvSlNPTiBiZWhhdmlvciAlZCIs IGJlaGF2aW9yLT5idHlwZSk7CkBAIC01MzQxLDI4ICs1Mjk5LDI3IEBAIEV4ZWNFdmFsSnNv bkJlaGF2aW9yKEV4cHJDb250ZXh0ICplY29udGV4dCwgSnNvbkJlaGF2aW9yICpiZWhhdmlv ciwKIH0KIAogc3RhdGljIERhdHVtCi1FeGVjRXZhbEpzb25FeHBySW50ZXJuYWwoRXhwclN0 YXRlICpzdGF0ZSwKLQkJCQkJCSBKc29uRXhwclN0YXRlICpqc2VzdGF0ZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LAorRXhlY0V2YWxKc29uRXhwckludGVybmFsKEV4cHJTdGF0ZSAqc3Rh dGUsIEpzb25FeHByU3RhdGUgKmpzZXN0YXRlLAogCQkJCQkJIEpzb25QYXRoICpwYXRoLCBE YXR1bSBpdGVtLCBib29sICpyZXNudWxsLAotCQkJCQkJIGJvb2wgKmVycm9yKQorCQkJCQkJ IGJvb2wgKmVtcHR5LCBib29sICplcnJvcikKIHsKIAlKc29uRXhwciAgICpqZXhwciA9IGpz ZXN0YXRlLT5qc2V4cHI7Ci0JYm9vbAkJZW1wdHkgPSBmYWxzZTsKIAlEYXR1bQkJcmVzID0g KERhdHVtKSAwOwogCU9pZAkJCXJldF90eXBpZCA9IGpleHByLT5yZXR1cm5pbmctPnR5cGlk OwogCWludDMyCQlyZXRfdHlwbW9kID0gamV4cHItPnJldHVybmluZy0+dHlwbW9kOwogCiAJ KnJlc251bGwgPSB0cnVlOworCSplbXB0eSA9IGZhbHNlOwogCiAJc3dpdGNoIChqZXhwci0+ b3ApCiAJewogCQljYXNlIEpTT05fUVVFUllfT1A6Ci0JCQlyZXMgPSBKc29uUGF0aFF1ZXJ5 KGl0ZW0sIHBhdGgsIGpleHByLT53cmFwcGVyLCAmZW1wdHksIGVycm9yLAorCQkJcmVzID0g SnNvblBhdGhRdWVyeShpdGVtLCBwYXRoLCBqZXhwci0+d3JhcHBlciwgZW1wdHksIGVycm9y LAogCQkJCQkJCQlqc2VzdGF0ZS0+YXJncyk7CiAJCQlpZiAoZXJyb3IgJiYgKmVycm9yKQog CQkJCXJldHVybiAoRGF0dW0pIDA7CiAKLQkJCWlmIChlbXB0eSkKKwkJCWlmICgqZW1wdHkp CiAJCQkJYnJlYWs7CiAKIAkJCUFzc2VydChEYXR1bUdldFBvaW50ZXIocmVzKSk7CkBAIC01 MzczLDEzICs1MzMwLDEzIEBAIEV4ZWNFdmFsSnNvbkV4cHJJbnRlcm5hbChFeHByU3RhdGUg KnN0YXRlLAogCiAJCWNhc2UgSlNPTl9WQUxVRV9PUDoKIAkJCXsKLQkJCQlKc29uYlZhbHVl ICpqYnYgPSBKc29uUGF0aFZhbHVlKGl0ZW0sIHBhdGgsICZlbXB0eSwgZXJyb3IsCisJCQkJ SnNvbmJWYWx1ZSAqamJ2ID0gSnNvblBhdGhWYWx1ZShpdGVtLCBwYXRoLCBlbXB0eSwgZXJy b3IsCiAJCQkJCQkJCQkJCQlqc2VzdGF0ZS0+YXJncyk7CiAKIAkJCQlpZiAoZXJyb3IgJiYg KmVycm9yKQogCQkJCQlyZXR1cm4gKERhdHVtKSAwOwogCi0JCQkJaWYgKGVtcHR5KQorCQkJ CWlmICgqZW1wdHkpCiAJCQkJCWJyZWFrOwogCiAJCQkJaWYgKCFqYnYpCkBAIC01NDEyLDc4 ICs1MzY5LDEwMCBAQCBFeGVjRXZhbEpzb25FeHBySW50ZXJuYWwoRXhwclN0YXRlICpzdGF0 ZSwKIAkJCXJldHVybiAoRGF0dW0pIDA7CiAJfQogCi0JQXNzZXJ0KGVtcHR5KTsKLQlBc3Nl cnQoamV4cHItPm9uX2VtcHR5KTsJLyogaXQgaXMgbm90IEpTT05fRVhJU1RTICovCisJQXNz ZXJ0KCplbXB0eSk7CiAKLQlpZiAoamV4cHItPm9uX2VtcHR5LT5idHlwZSA9PSBKU09OX0JF SEFWSU9SX0VSUk9SKQotCXsKLQkJaWYgKGVycm9yKQotCQl7Ci0JCQkqZXJyb3IgPSB0cnVl OwotCQkJcmV0dXJuIChEYXR1bSkgMDsKLQkJfQorCXJldHVybiAoRGF0dW0pIDA7Cit9CiAK LQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX05PX1NRTF9KU09OX0lU RU0pLAotCQkJCSBlcnJtc2coIm5vIFNRTC9KU09OIGl0ZW0iKSkpOworYm9vbAorRXhlY0V2 YWxKc29uRXhwclNraXAoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKK3sK KwlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IG9wLT5kLmpzb25leHByX3NraXAuanNlc3Rh dGU7CisKKwkvKgorCSAqIFNraXAgaWYgZWl0aGVyIG9mIHRoZSBpbnB1dCBleHByZXNzaW9u cyBoYXMgdHVybmVkIG91dCB0byBiZQorCSAqIE5VTEwuCisJICovCisJaWYgKGpzZXN0YXRl LT5mb3JtYXR0ZWRfZXhwci5pc251bGwgfHwKKwkJanNlc3RhdGUtPnBhdGhzcGVjLmlzbnVs bCkKKwl7CisJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9 IHRydWU7CisJCXJldHVybiB0cnVlOwogCX0KIAotCS8qIEV4ZWN1dGUgT04gRU1QVFkgYmVo YXZpb3IgKi8KLQlyZXR1cm4gRXhlY0V2YWxKc29uQmVoYXZpb3IoZWNvbnRleHQsIGpleHBy LT5vbl9lbXB0eSwKLQkJCQkJCQkJanNlc3RhdGUtPmRlZmF1bHRfb25fZW1wdHksCi0JCQkJ CQkJCXJldF90eXBpZCwgcmV0X3R5cG1vZCwgcmVzbnVsbCk7CisJLyoKKwkgKiBHbyBldmFs dWF0ZSB0aGUgUEFTU0lORyBhcmdzIGlmIGFueSBhbmQgc3Vic2VxdWVudGx5IEpTT04gcGF0 aAorCSAqIGl0c2VsZi4KKwkgKi8KKwlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlFeGVjRXZhbEpzb25FeHByCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogUmV0dXJu IHZhbHVlOgorICogICAxIC0gT2ssIGp1bXAgdG8gdGhlIGVuZCBvZiBKc29uRXhwcgorICog ICAwIC0gZW1wdHkgcmVzdWx0LCBuZWVkIHRvIGV4ZWN1dGUgREVGQVVMVCBPTiBFTVBUWSBl eHByZXNzaW9uCisgKiAgLTEgLSBlcnJvciBvY2N1cmVkLCBuZWVkIHRvIGV4ZWN1dGUgREVG QVVMVCBPTiBFUlJPUiBleHByZXNzaW9uCiAgKi8KLXZvaWQKLUV4ZWNFdmFsSnNvbkV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250 ZXh0KQoraW50CitFeGVjRXZhbEpzb25FeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFs U3RlcCAqb3ApCiB7CiAJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhw ci5qc2VzdGF0ZTsKIAlKc29uRXhwciAgICpqZXhwciA9IGpzZXN0YXRlLT5qc2V4cHI7CiAJ RGF0dW0JCWl0ZW07CiAJRGF0dW0JCXJlczsKIAlKc29uUGF0aCAgICpwYXRoOwotCUxpc3RD ZWxsICAgKmxjOworCWJvb2wJCWVtcHR5ID0gZmFsc2U7CiAJYm9vbAkJZXJyb3IgPSBmYWxz ZTsKLQlib29sCQl0aHJvd0Vycm9ycyA9IGpleHByLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNP Tl9CRUhBVklPUl9FUlJPUjsKLQotCWlmIChqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuaXNu dWxsIHx8IGpzZXN0YXRlLT5wYXRoc3BlYy5pc251bGwpCi0JewotCQkqb3AtPnJlc251bGwg PSB0cnVlOwotCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOwotCQlyZXR1cm47Ci0JfQor CWJvb2wJCXRocm93X2Vycm9ycyA9IGpleHByLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9C RUhBVklPUl9FUlJPUjsKIAogCWl0ZW0gPSBqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIudmFs dWU7CiAJcGF0aCA9IERhdHVtR2V0SnNvblBhdGhQKGpzZXN0YXRlLT5wYXRoc3BlYy52YWx1 ZSk7CiAKLQkvKiByZXNldCBKU09OIHBhdGggdmFyaWFibGUgY29udGV4dHMgKi8KLQlmb3Jl YWNoKGxjLCBqc2VzdGF0ZS0+YXJncykKKwlyZXMgPSBFeGVjRXZhbEpzb25FeHBySW50ZXJu YWwoc3RhdGUsIGpzZXN0YXRlLCBwYXRoLCBpdGVtLAorCQkJCQkJCQkgICBvcC0+cmVzbnVs bCwgJmVtcHR5LAorCQkJCQkJCQkgICB0aHJvd19lcnJvcnMgPyBOVUxMIDogJmVycm9yKTsK KworCWlmIChlbXB0eSAmJiAhZXJyb3IpCiAJewotCQlKc29uUGF0aFZhcmlhYmxlRXZhbENv bnRleHQgKnZhciA9IGxmaXJzdChsYyk7CisJCUFzc2VydChqZXhwci0+b25fZW1wdHkpOwkv KiBpdCBpcyBub3QgSlNPTl9FWElTVFMgKi8KIAotCQl2YXItPmVjb250ZXh0ID0gZWNvbnRl eHQ7Ci0JCXZhci0+ZXZhbHVhdGVkID0gZmFsc2U7Ci0JfQorCQlpZiAoamV4cHItPm9uX2Vt cHR5LT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQorCQl7CisJCQlpZiAodGhyb3df ZXJyb3JzKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX05P X1NRTF9KU09OX0lURU0pLAorCQkJCQkJIGVycm1zZygibm8gU1FML0pTT04gaXRlbSIpKSk7 CiAKLQlyZXMgPSBFeGVjRXZhbEpzb25FeHBySW50ZXJuYWwoc3RhdGUsIGpzZXN0YXRlLCBl Y29udGV4dCwKLQkJCQkJCQkJICAgcGF0aCwgaXRlbSwgb3AtPnJlc251bGwsCi0JCQkJCQkJ CSAgIHRocm93RXJyb3JzID8gTlVMTCA6ICZlcnJvcik7CisJCQllcnJvciA9IHRydWU7IC8q IGZhbGxiYWNrIHRvIGVycm9yIGJlaGF2aW9yICovCisJCX0KKwkJZWxzZSBpZiAoamV4cHIt Pm9uX2VtcHR5LT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpCisJCQlyZXR1cm4g MDsJLyoganVtcCB0byBERUZBVUxUIE9OIEVNUFRZIGV4cHJlc3Npb24gKi8KKwkJZWxzZQor CQkJLyogRXhlY3V0ZSBPTiBFTVBUWSBiZWhhdmlvciAqLworCQkJcmVzID0gRXhlY0V2YWxK c29uQmVoYXZpb3IoamV4cHItPm9uX2VtcHR5LAorCQkJCQkJCQkJICAgamV4cHItPnJldHVy bmluZy0+dHlwaWQsCisJCQkJCQkJCQkgICBqZXhwci0+cmV0dXJuaW5nLT50eXBtb2QsCisJ CQkJCQkJCQkgICBvcC0+cmVzbnVsbCk7CisJfQogCiAJaWYgKGVycm9yKQogCXsKLQkJQXNz ZXJ0KCF0aHJvd0Vycm9ycyk7CisJCUFzc2VydCghdGhyb3dfZXJyb3JzKTsKKworCQlpZiAo amV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpCisJCQly ZXR1cm4gLTE7CS8qIGp1bXAgdG8gREVGQVVMVCBPTiBFUlJPUiBleHByZXNzaW9uICovCiAK IAkJLyogRXhlY3V0ZSBPTiBFUlJPUiBiZWhhdmlvciAqLwotCQlyZXMgPSBFeGVjRXZhbEpz b25CZWhhdmlvcihlY29udGV4dCwgamV4cHItPm9uX2Vycm9yLAotCQkJCQkJCQkgICBqc2Vz dGF0ZS0+ZGVmYXVsdF9vbl9lcnJvciwKKwkJcmVzID0gRXhlY0V2YWxKc29uQmVoYXZpb3Io amV4cHItPm9uX2Vycm9yLAogCQkJCQkJCQkgICBqZXhwci0+cmV0dXJuaW5nLT50eXBpZCwK IAkJCQkJCQkJICAgamV4cHItPnJldHVybmluZy0+dHlwbW9kLAogCQkJCQkJCQkgICBvcC0+ cmVzbnVsbCk7CiAJfQogCiAJKm9wLT5yZXN2YWx1ZSA9IHJlczsKKwlyZXR1cm4gMTsJLyog anVtcCB0byB0aGUgZW5kIG9mIGV4cHJlc3Npb24gKi8KIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF9leHByLmMKaW5kZXggZmQ3MjYzMGY1ZTYuLmVkNTNhZDkzNDQzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMjQwNywxMSArMjQwNyw3MSBAQCBs bHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJCUxMVk1CdWlsZEJyKGIs IG9wYmxvY2tzW29wbm8gKyAxXSk7CiAJCQkJYnJlYWs7CiAKLQkJCWNhc2UgRUVPUF9KU09O RVhQUjoKLQkJCQlidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxKc29uRXhwciIs Ci0JCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKLQkJCQlMTFZNQnVpbGRCcihi LCBvcGJsb2Nrc1tvcG5vICsgMV0pOwotCQkJCWJyZWFrOworCQkJY2FzZSBFRU9QX0pTT05F WFBSX1NLSVA6CisJCQkJeworCQkJCQlMTFZNVmFsdWVSZWYgdl9yZXQ7CisKKwkJCQkJLyoK KwkJCQkJICogQ2FsbCBFeGVjRXZhbEpzb25FeHByU2tpcCgpIHRvIGRlY2lkZSBpZiBKU09O CisJCQkJCSAqIHBhdGggZXZhbHVhdGlvbiBjYW4gYmUgc2tpcHBlZC4gIFRoaXMgcmV0dXJu cworCQkJCQkgKiBib29sZWFuICJza2lwIiBmbGFnLgorCQkJCQkgKi8KKwkJCQkJdl9yZXQg PSBidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxKc29uRXhwclNraXAiLAorCQkJ CQkJCQkJCQl2X3N0YXRlLCBvcCk7CisJCQkJCXZfcmV0ID0gTExWTUJ1aWxkWkV4dChiLCB2 X3JldCwgVHlwZVN0b3JhZ2VCb29sLCAiIik7CisKKwkJCQkJLyoKKwkJCQkJICogSnVtcCB0 byBlbmQgaWYgdHJ1ZSB3YXMgcmV0dXJuZWQsIHdoaWNoIHNpZ25pZmllcworCQkJCQkgKiBz a2lwcGluZyBvZiBKU09OIHBhdGggZXZhbHVhdGlvbiwgZWxzZSB0byB0aGUKKwkJCQkJICog bmV4dCBzdGVwIHdoaWNoIG11c3QgcG9pbnQgdG8gdGhlIHN0ZXBzIHRvCisJCQkJCSAqIGV2 YWx1YXRlIFBBU1NJTkcgYXJncywgaWYgYW55LCBvciB0byB0aGUgSlNPTgorCQkJCQkgKiBw YXRoIGV2YWx1YXRpb24uCisJCQkJCSAqLworCQkJCQlMTFZNQnVpbGRDb25kQnIoYiwKKwkJ CQkJCQkJCUxMVk1CdWlsZElDbXAoYiwKKwkJCQkJCQkJCQkJCSAgTExWTUludEVRLAorCQkJ CQkJCQkJCQkJICB2X3JldCwKKwkJCQkJCQkJCQkJCSAgbF9zYm9vbF9jb25zdCgwKSwKKwkJ CQkJCQkJCQkJCSAgIiIpLAorCQkJCQkJCQkJb3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJ CQkJb3BibG9ja3Nbb3AtPmQuanNvbmV4cHJfc2tpcC5qdW1wX2RvbmVdKTsKKwkJCQkJYnJl YWs7CisJCQkJfQorCisJCQljYXNlIEVFT1BfSlNPTkVYUFJfUEFUSDoKKwkJCQl7CisJCQkJ CUxMVk1WYWx1ZVJlZiB2X3JldDsKKwkJCQkJTExWTVZhbHVlUmVmIHZfc3dpdGNoOworCQkJ CQlpbnQJCQluX2p1bXBzID0gMDsKKworCQkJCQl2X3JldCA9IGJ1aWxkX0V2YWxYRnVuYyhi LCBtb2QsICJFeGVjRXZhbEpzb25FeHByIiwKKwkJCQkJCQkJCQkJdl9zdGF0ZSwgb3ApOwor CisJCQkJCWlmIChvcC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRfb25fZW1wdHkgIT0gb3At PmQuanNvbmV4cHIuanVtcF9kb25lKQorCQkJCQkJbl9qdW1wcysrOworCisJCQkJCWlmIChv cC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRfb25fZXJyb3IgIT0gb3AtPmQuanNvbmV4cHIu anVtcF9kb25lKQorCQkJCQkJbl9qdW1wcysrOworCisJCQkJCWlmICghbl9qdW1wcykKKwkJ CQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wLT5kLmpzb25leHByLmp1bXBfZG9uZV0p OworCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCXZfc3dpdGNoID0gTExWTUJ1aWxkU3dpdGNo KGIsIHZfcmV0LAorCQkJCQkJCQkJCQkJICAgb3BibG9ja3Nbb3AtPmQuanNvbmV4cHIuanVt cF9kb25lXSwKKwkJCQkJCQkJCQkJCSAgIG5fanVtcHMpOworCisJCQkJCQlpZiAob3AtPmQu anNvbmV4cHIuanVtcF9kZWZhdWx0X29uX2VtcHR5ICE9IG9wLT5kLmpzb25leHByLmp1bXBf ZG9uZSkKKwkJCQkJCQlMTFZNQWRkQ2FzZSh2X3N3aXRjaCwgbF9pbnQzMl9jb25zdCgwKSwK KwkJCQkJCQkJCQlvcGJsb2Nrc1tvcC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRfb25fZW1w dHldKTsKKworCQkJCQkJaWYgKG9wLT5kLmpzb25leHByLmp1bXBfZGVmYXVsdF9vbl9lcnJv ciAhPSBvcC0+ZC5qc29uZXhwci5qdW1wX2RvbmUpCisJCQkJCQkJTExWTUFkZENhc2Uodl9z d2l0Y2gsIGxfaW50MzJfY29uc3QoLTEpLAorCQkJCQkJCQkJCW9wYmxvY2tzW29wLT5kLmpz b25leHByLmp1bXBfZGVmYXVsdF9vbl9lcnJvcl0pOworCQkJCQl9CisKKwkJCQkJYnJlYWs7 CisJCQkJfQogCiAJCQljYXNlIEVFT1BfTEFTVDoKIAkJCQlBc3NlcnQoZmFsc2UpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IDM3ZmU2NDY1NGI2Li5iOTE0 OGNlNTE1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBl cy5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwpAQCAtMTM2 LDYgKzEzNiw3IEBAIHZvaWQJICAgKnJlZmVyZW5jZWRfZnVuY3Rpb25zW10gPQogCUV4ZWNF dmFsSnNvbkNvbnN0cnVjdG9yLAogCUV4ZWNFdmFsSnNvbklzUHJlZGljYXRlLAogCUV4ZWNF dmFsSnNvbkV4cHIsCisJRXhlY0V2YWxKc29uRXhwclNraXAsCiAJTWFrZUV4cGFuZGVkT2Jq ZWN0UmVhZE9ubHlJbnRlcm5hbCwKIAlzbG90X2dldG1pc3NpbmdhdHRycywKIAlzbG90X2dl dHNvbWVhdHRyc19pbnQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpp bmRleCA1YjZhNDgwNTcyMS4uYjg5NDk3ODk3MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25wYXRoX2V4ZWMuYwpAQCAtMjg2LDYgKzI4Niw4IEBAIHN0YXRpYyBKc29uUGF0aEV4 ZWNSZXN1bHQgYXBwZW5kQm9vbFJlc3VsdChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJ CQkJCQkJCQkJICAgSnNvblBhdGhJdGVtICpqc3AsIEpzb25WYWx1ZUxpc3QgKmZvdW5kLCBK c29uUGF0aEJvb2wgcmVzKTsKIHN0YXRpYyB2b2lkIGdldEpzb25QYXRoSXRlbShKc29uUGF0 aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqaXRlbSwKIAkJCQkJCQlKc29uYlZh bHVlICp2YWx1ZSk7CitzdGF0aWMgaW50IGV2YWxKc29uUGF0aFZhcmlhYmxlKHZvaWQgKmN4 dCwgY2hhciAqdmFyTmFtZSwgaW50IHZhck5hbWVMZW4sCisJCQkJCQkJCUpzb25iVmFsdWUg KnZhbCwgSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCk7CiBzdGF0aWMgdm9pZCBnZXRKc29uUGF0 aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKIAkJCQkJCQkJSnNvblBhdGhJ dGVtICp2YXJpYWJsZSwgSnNvbmJWYWx1ZSAqdmFsdWUpOwogc3RhdGljIGludAlnZXRKc29u UGF0aFZhcmlhYmxlRnJvbUpzb25iKHZvaWQgKnZhcnNKc29uYiwgY2hhciAqdmFyTmFtZSwK QEAgLTIxNzIsNiArMjE3NCw3MSBAQCBnZXRKc29uUGF0aEl0ZW0oSnNvblBhdGhFeGVjQ29u dGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKml0ZW0sCiAJfQogfQogCisvKgorICogRXZhbHVh dGUgYSBKU09OIHBhdGggdmFyaWFibGUgY2FjaGluZyBjb21wdXRlZCB2YWx1ZS4KKyAqLwor c3RhdGljIGludAorZXZhbEpzb25QYXRoVmFyaWFibGUodm9pZCAqY3h0LCBjaGFyICp2YXJO YW1lLCBpbnQgdmFyTmFtZUxlbiwKKwkJCQkJIEpzb25iVmFsdWUgKnZhbCwgSnNvbmJWYWx1 ZSAqYmFzZU9iamVjdCkKK3sKKwlKc29uUGF0aFZhcmlhYmxlRXZhbENvbnRleHQgKnZhciA9 IE5VTEw7CisJTGlzdAkgICAqdmFycyA9IGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJ CQlpZCA9IDE7CisKKwlpZiAoIXZhck5hbWUpCisJCXJldHVybiBsaXN0X2xlbmd0aCh2YXJz KTsKKworCWZvcmVhY2gobGMsIHZhcnMpCisJeworCQl2YXIgPSBsZmlyc3QobGMpOworCisJ CWlmICghc3RybmNtcCh2YXItPm5hbWUsIHZhck5hbWUsIHZhck5hbWVMZW4pKQorCQkJYnJl YWs7CisKKwkJdmFyID0gTlVMTDsKKwkJaWQrKzsKKwl9CisKKwlpZiAoIXZhcikKKwkJcmV0 dXJuIC0xOworCisJLyoKKwkgKiBXaGVuIGJlbG9uZ2luZyB0byBhIEpzb25FeHByLCBwYXRo IHZhcmlhYmxlcyBhcmUgY29tcHV0ZWQgd2l0aCB0aGUKKwkgKiBKc29uRXhwcidzIEV4cHJT dGF0ZSAodmFyLT5lc3RhdGUgaXMgTlVMTCksIHNvIGRvbid0IG5lZWQgdG8gYmUgY29tcHV0 ZWQKKwkgKiBoZXJlLiAgSW4gc29tZSBvdGhlciBjYXNlcywgc3VjaCBhcyB3aGVuIHRoZSBw YXRoIHZhcmlhYmxlcyBiZWxvbmdpbmcKKwkgKiB0byBhIEpzb25UYWJsZSBpbnN0ZWFkLCB0 aG9zZSB2YXJpYWJsZXMgbXVzdCBiZSBldmFsdWF0ZWQgb24gdGhlaXIgb3duLAorCSAqIHdp dGhvdXQgdGhlIGVuY2xvc2luZyBKc29uRXhwciBpdHNlbGYgbmVlZGluZyB0byBiZSBldmFs dWF0ZWQsIHNvIG11c3QKKwkgKiBiZSBoYW5kbGVkIGhlcmUuCisJICovCisJaWYgKCF2YXIt PmVzdGF0ZSkKKwl7CisJCUFzc2VydCh2YXItPmV2YWx1YXRlZCk7CisJfQorCWVsc2UgaWYg KCF2YXItPmV2YWx1YXRlZCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gdmFyLT5t Y3h0ID8gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHZhci0+bWN4dCkgOiBOVUxMOworCisJCUFz c2VydCh2YXItPmVjb250ZXh0KTsKKwkJdmFyLT52YWx1ZSA9IEV4ZWNFdmFsRXhwcih2YXIt PmVzdGF0ZSwgdmFyLT5lY29udGV4dCwgJnZhci0+aXNudWxsKTsKKwkJdmFyLT5ldmFsdWF0 ZWQgPSB0cnVlOworCisJCWlmIChvbGRjeHQpCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKKwl9CisKKwlpZiAodmFyLT5pc251bGwpCisJeworCQl2YWwtPnR5cGUgPSBq YnZOdWxsOworCQlyZXR1cm4gMDsKKwl9CisKKwlKc29uSXRlbUZyb21EYXR1bSh2YXItPnZh bHVlLCB2YXItPnR5cGlkLCB2YXItPnR5cG1vZCwgdmFsKTsKKworCSpiYXNlT2JqZWN0ID0g KnZhbDsKKwlyZXR1cm4gaWQ7Cit9CisKIC8qCiAgKiBHZXQgdGhlIHZhbHVlIG9mIHZhcmlh YmxlIHBhc3NlZCB0byBqc29ucGF0aCBleGVjdXRvcgogICovCkBAIC0yOTAzLDcgKzI5NzAs NyBAQCBjb21wYXJlRGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFs MiwgT2lkIHR5cGlkMiwKIGJvb2wKIEpzb25QYXRoRXhpc3RzKERhdHVtIGpiLCBKc29uUGF0 aCAqanAsIExpc3QgKnZhcnMsIGJvb2wgKmVycm9yKQogewotCUpzb25QYXRoRXhlY1Jlc3Vs dCByZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIEV2YWxKc29uUGF0aFZhciwKKwlK c29uUGF0aEV4ZWNSZXN1bHQgcmVzID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBldmFs SnNvblBhdGhWYXJpYWJsZSwKIAkJCQkJCQkJCQkJIERhdHVtR2V0SnNvbmJQKGpiKSwgIWVy cm9yLCBOVUxMLAogCQkJCQkJCQkJCQkgdHJ1ZSk7CiAKQEAgLTI5MjUsOCArMjk5Miw4IEBA IEpzb25QYXRoUXVlcnkoRGF0dW0gamIsIEpzb25QYXRoICpqcCwgSnNvbldyYXBwZXIgd3Jh cHBlciwgYm9vbCAqZW1wdHksCiAJSnNvblBhdGhFeGVjUmVzdWx0IHJlcyBQR19VU0VEX0ZP Ul9BU1NFUlRTX09OTFk7CiAJaW50CQkJY291bnQ7CiAKLQlyZXMgPSBleGVjdXRlSnNvblBh dGgoanAsIHZhcnMsIEV2YWxKc29uUGF0aFZhciwgRGF0dW1HZXRKc29uYlAoamIpLCAhZXJy b3IsCi0JCQkJCQkgICZmb3VuZCwgdHJ1ZSk7CisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKGpw LCB2YXJzLCBldmFsSnNvblBhdGhWYXJpYWJsZSwKKwkJCQkJCSAgRGF0dW1HZXRKc29uYlAo amIpLCAhZXJyb3IsICZmb3VuZCwgdHJ1ZSk7CiAKIAlBc3NlcnQoZXJyb3IgfHwgIWpwZXJJ c0Vycm9yKHJlcykpOwogCkBAIC0yOTkyLDggKzMwNTksOCBAQCBKc29uUGF0aFZhbHVlKERh dHVtIGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LCBib29sICplcnJvciwgTGlzdCAq dmFycykKIAlKc29uUGF0aEV4ZWNSZXN1bHQganBlciBQR19VU0VEX0ZPUl9BU1NFUlRTX09O TFk7CiAJaW50CQkJY291bnQ7CiAKLQlqcGVyID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJz LCBFdmFsSnNvblBhdGhWYXIsIERhdHVtR2V0SnNvbmJQKGpiKSwgIWVycm9yLAotCQkJCQkJ ICAgJmZvdW5kLCB0cnVlKTsKKwlqcGVyID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBl dmFsSnNvblBhdGhWYXJpYWJsZSwKKwkJCQkJCSAgIERhdHVtR2V0SnNvbmJQKGpiKSwgIWVy cm9yLCAmZm91bmQsIHRydWUpOwogCiAJQXNzZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihq cGVyKSk7CiAKQEAgLTMzMDYsNyArMzM3Myw3IEBAIEpzb25UYWJsZVJlc2V0Q29udGV4dEl0 ZW0oSnNvblRhYmxlU2NhblN0YXRlICpzY2FuLCBEYXR1bSBpdGVtKQogCiAJb2xkY3h0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKHNjYW4tPm1jeHQpOwogCi0JcmVzID0gZXhlY3V0ZUpz b25QYXRoKHNjYW4tPnBhdGgsIHNjYW4tPmFyZ3MsIEV2YWxKc29uUGF0aFZhciwganMsCisJ cmVzID0gZXhlY3V0ZUpzb25QYXRoKHNjYW4tPnBhdGgsIHNjYW4tPmFyZ3MsIGV2YWxKc29u UGF0aFZhcmlhYmxlLCBqcywKIAkJCQkJCSAgc2Nhbi0+ZXJyb3JPbkVycm9yLCAmc2Nhbi0+ Zm91bmQsIGZhbHNlIC8qIEZJWE1FICovICk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGFkYWJmNTdjOTdiLi5i MDA1YmY0NDBkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIu aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC0yNDQsNyArMjQ0 LDggQEAgdHlwZWRlZiBlbnVtIEV4cHJFdmFsT3AKIAlFRU9QX1NVQlBMQU4sCiAJRUVPUF9K U09OX0NPTlNUUlVDVE9SLAogCUVFT1BfSVNfSlNPTiwKLQlFRU9QX0pTT05FWFBSLAorCUVF T1BfSlNPTkVYUFJfU0tJUCwKKwlFRU9QX0pTT05FWFBSX1BBVEgsCiAKIAkvKiBhZ2dyZWdh dGlvbiByZWxhdGVkIG5vZGVzICovCiAJRUVPUF9BR0dfU1RSSUNUX0RFU0VSSUFMSVpFLApA QCAtNjk2LDggKzY5NywxOCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJc3Ry dWN0CiAJCXsKIAkJCXN0cnVjdCBKc29uRXhwclN0YXRlICpqc2VzdGF0ZTsKKwkJCWludAkJ CWp1bXBfZG9uZTsKKwkJCWludAkJCWp1bXBfZGVmYXVsdF9vbl9lbXB0eTsgLyogT04gRU1Q VFkgREVGQVVMVCBleHByZXNzaW9uICovCisJCQlpbnQJCQlqdW1wX2RlZmF1bHRfb25fZXJy b3I7IC8qIE9OIEVSUk9SIERFRkFVTFQgZXhwcmVzc2lvbiAqLwogCQl9CQkJanNvbmV4cHI7 CiAKKwkJLyogZm9yIEVFT1BfSlNPTkVYUFJfU0tJUCAqLworCQlzdHJ1Y3QKKwkJeworCQkJ c3RydWN0IEpzb25FeHByU3RhdGUgKmpzZXN0YXRlOworCQkJaW50CQkJanVtcF9kb25lOwor CQl9CQkJanNvbmV4cHJfc2tpcDsKKwogCX0JCQlkOwogfSBFeHByRXZhbFN0ZXA7CiAKQEAg LTc2NCwxMSArNzc1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkV4cHJTdGF0ZQogCiAJTnVs bGFibGVEYXR1bQogCQkJCWZvcm1hdHRlZF9leHByLAkvKiBmb3JtYXR0ZWQgY29udGV4dCBp dGVtIHZhbHVlICovCi0JCQkJY29lcmNpb25fZXhwciwJLyogaW5wdXQgZm9yIEpTT04gaXRl bSBjb2VyY2lvbiAqLwogCQkJCXBhdGhzcGVjOwkJLyogcGF0aCBzcGVjaWZpY2F0aW9uIHZh bHVlICovCiAKLQlFeHByU3RhdGUgICpkZWZhdWx0X29uX2VtcHR5OwkvKiBPTiBFTVBUWSBE RUZBVUxUIGV4cHJlc3Npb24gKi8KLQlFeHByU3RhdGUgICpkZWZhdWx0X29uX2Vycm9yOwkv KiBPTiBFUlJPUiBERUZBVUxUIGV4cHJlc3Npb24gKi8KIAlMaXN0CSAgICphcmdzOwkJCS8q IHBhc3NpbmcgYXJndW1lbnRzICovCiB9IEpzb25FeHByU3RhdGU7CiAKQEAgLTgzMSw4ICs4 MzksOCBAQCBleHRlcm4gdm9pZCBFeGVjRXZhbFN5c1ZhcihFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJICAgRXhwckNvbnRleHQgKmVjb250ZXh0LCBUdXBs ZVRhYmxlU2xvdCAqc2xvdCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbEpzb25Db25zdHJ1Y3Rv cihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQkJRXhwckNv bnRleHQgKmVjb250ZXh0KTsKLWV4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbkV4cHIoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKLQkJCQkJCQkgRXhwckNvbnRleHQgKmVj b250ZXh0KTsKK2V4dGVybiBpbnQgRXhlY0V2YWxKc29uRXhwcihFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wKTsKK2V4dGVybiBib29sIEV4ZWNFdmFsSnNvbkV4cHJTa2lw KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOwogCiBleHRlcm4gdm9pZCBF eGVjQWdnSW5pdEdyb3VwKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFucyBw ZXJ0cmFucywgQWdnU3RhdGVQZXJHcm91cCBwZXJncm91cCwKIAkJCQkJCQkgRXhwckNvbnRl eHQgKmFnZ2NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBh dGguaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKaW5kZXggZTkxMzRiN2VhYjQu LmEzM2E3NzBmN2FhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKQEAgLTI4MCwxMCArMjgwLDYg QEAgZXh0ZXJuIERhdHVtIEpzb25QYXRoUXVlcnkoRGF0dW0gamIsIEpzb25QYXRoICpqcCwg SnNvbldyYXBwZXIgd3JhcHBlciwKIAkJCQkJCSAgIGJvb2wgKmVtcHR5LCBib29sICplcnJv ciwgTGlzdCAqdmFycyk7CiBleHRlcm4gSnNvbmJWYWx1ZSAqSnNvblBhdGhWYWx1ZShEYXR1 bSBqYiwgSnNvblBhdGggKmpwLCBib29sICplbXB0eSwKIAkJCQkJCQkJIGJvb2wgKmVycm9y LCBMaXN0ICp2YXJzKTsKLQotZXh0ZXJuIGludAlFdmFsSnNvblBhdGhWYXIodm9pZCAqdmFy cywgY2hhciAqdmFyTmFtZSwgaW50IHZhck5hbWVMZW4sCi0JCQkJCQkJSnNvbmJWYWx1ZSAq dmFsLCBKc29uYlZhbHVlICpiYXNlT2JqZWN0KTsKLQogZXh0ZXJuIFBHRExMSU1QT1JUIGNv bnN0IFRhYmxlRnVuY1JvdXRpbmUgSnNvbmJUYWJsZVJvdXRpbmU7CiAKICNlbmRpZgotLSAK Mi4xNy4xCgo= --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0009-Remove-support-of-DEFAULT-ON-EMPTY-in-SQL-JSON-f.patch" Content-Disposition: attachment; filename*0="v10-0009-Remove-support-of-DEFAULT-ON-EMPTY-in-SQL-JSON-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNThlN2M3YzgzY2I2NWYxZWIzMTBlMmU3ODYyN2RjYzlkMWI5YmIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjkgQXVnIDIwMjIgMjM6MjM6MDIgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAwOS8xMF0gUmVtb3ZlIHN1cHBvcnQgb2YgREVGQVVMVCBPTiBFTVBU WSBpbiBTUUwvSlNPTgogZnVuY3Rpb25zCgotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwg ICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHIuYyAgICAgICAgICAgICB8IDIxIC0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYyAgICAgICB8IDI3ICsrKystLS0tCiBzcmMvYmFja2VuZC9qaXQv bGx2bS9sbHZtaml0X2V4cHIuYyAgICAgICAgIHwgMzIgKysrLS0tLS0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAgICAgIHwgMTMgLS0tLQogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICB8IDMzICsrLS0tLS0tLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAgICAgICAgICB8ICAzICstCiBzcmMv aW5jbHVkZS9vcHRpbWl6ZXIvY2xhdXNlcy5oICAgICAgICAgICAgIHwgIDIgLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dCB8IDc0ICsrKysrKysrKy0t LS0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwgICAg ICB8IDM0ICsrKysrLS0tLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyks IDE2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s IGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCA4ZGQ2M2MwNDU1Ni4uOGUwM2ExODMx YWIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbApAQCAtMTc5NzYsNyArMTc5NzYsNyBAQCBGUk9NCiAgICAgICAgIDxw YXJhbWV0ZXI+Y29udGV4dF9pdGVtPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPnBhdGhfZXhw cmVzc2lvbjwvcGFyYW1ldGVyPgogICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJ Tkc8L2xpdGVyYWw+IHsgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8bGl0ZXJhbD5B UzwvbGl0ZXJhbD4gPHBhcmFtZXRlcj52YXJuYW1lPC9wYXJhbWV0ZXI+IH0gPG9wdGlvbmFs PiwgLi4uPC9vcHRpb25hbD48L29wdGlvbmFsPgogICAgICAgICA8b3B0aW9uYWw+IDxsaXRl cmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gPHBhcmFtZXRlcj5kYXRhX3R5cGU8L3BhcmFtZXRl cj4gPC9vcHRpb25hbD4KLSAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9s aXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+REVGQVVMVDwv bGl0ZXJhbD4gPHBhcmFtZXRlcj5leHByZXNzaW9uPC9wYXJhbWV0ZXI+IH0gPGxpdGVyYWw+ T04gRU1QVFk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8 bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB9IDxs aXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiA8L29wdGlvbmFsPgogICAgICAgICA8b3B0aW9u YWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwvbGl0ZXJh bD4gfCA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiA8cGFyYW1ldGVyPmV4cHJlc3Npb248 L3BhcmFtZXRlcj4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25hbD4p CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgpAQCAtMTgwMTcsNyArMTgwMTcsNyBA QCBGUk9NCiAgICAgICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFs PiA8cGFyYW1ldGVyPmRhdGFfdHlwZTwvcGFyYW1ldGVyPiA8b3B0aW9uYWw+IDxsaXRlcmFs PkZPUk1BVCBKU09OPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPkVOQ09ESU5HIFVU Rjg8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+CiAgICAg ICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5XSVRIT1VUPC9saXRlcmFsPiB8IDxsaXRlcmFs PldJVEg8L2xpdGVyYWw+IHsgPGxpdGVyYWw+Q09ORElUSU9OQUw8L2xpdGVyYWw+IHwgPG9w dGlvbmFsPjxsaXRlcmFsPlVOQ09ORElUSU9OQUw8L2xpdGVyYWw+PC9vcHRpb25hbD4gfSB9 IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IDxsaXRl cmFsPldSQVBQRVI8L2xpdGVyYWw+IDwvb3B0aW9uYWw+CiAgICAgICAgIDxvcHRpb25hbD4g eyA8bGl0ZXJhbD5LRUVQPC9saXRlcmFsPiB8IDxsaXRlcmFsPk9NSVQ8L2xpdGVyYWw+IH0g PGxpdGVyYWw+UVVPVEVTPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPk9OIFNDQUxB UiBTVFJJTkc8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IDwvb3B0aW9uYWw+Ci0gICAgICAgIDxv cHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9s aXRlcmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRlcmFsPiB7IDxvcHRpb25hbD4gPGxpdGVy YWw+QVJSQVk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IHwgPGxpdGVyYWw+T0JKRUNUPC9saXRl cmFsPiB9IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPHBhcmFtZXRlcj5leHByZXNz aW9uPC9wYXJhbWV0ZXI+IH0gPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IDwvb3B0aW9u YWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8 bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRlcmFsPiB7IDxv cHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IHwgPGxpdGVy YWw+T0JKRUNUPC9saXRlcmFsPiB9IH0gPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IDwv b3B0aW9uYWw+CiAgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJh bD4gfCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRlcmFs PiB7IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IHwg PGxpdGVyYWw+T0JKRUNUPC9saXRlcmFsPiB9IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJh bD4gPHBhcmFtZXRlcj5leHByZXNzaW9uPC9wYXJhbWV0ZXI+IH0gPGxpdGVyYWw+T04gRVJS T1I8L2xpdGVyYWw+IDwvb3B0aW9uYWw+KQogICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJh PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggNjgyMjdlYmVlMjEuLjVlYTdlNmI0 MjFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTQxNjYsOSArNDE2Niw3IEBA IEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpleHByLCBFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKnNjcmF0Y2gsCiAJaW50CQkJc2tpcF9zdGVwX29mZjsKIAlpbnQJCQll eGVjcGF0aF9zdGVwX29mZjsKIAlpbnQJCQlkb25lX3N0ZXBfb2ZmOwotCWludAkJCWRlZmF1 bHRfb25fZW1wdHlfc3RlcF9vZmYgPSAtMTsKIAlpbnQJCQlkZWZhdWx0X29uX2Vycm9yX3N0 ZXBfb2ZmID0gLTE7Ci0JaW50CQkJZGVmYXVsdF9vbl9lbXB0eV9qdW1wX29mZiA9IC0xOwog CiAJLyogSlNPTl9UQUJMRSBwcmV1ZG8tZnVuY3Rpb24gcmV0dXJucyBjb250ZXh0IGl0ZW0g YXMgYSByZXN1bHQgKi8KIAlpZiAoamV4cHItPm9wID09IEpTT05fVEFCTEVfT1ApCkBAIC00 MjM1LDE2ICs0MjMzLDYgQEAgRXhlY0luaXRKc29uRXhwcihKc29uRXhwciAqamV4cHIsIEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwKIAlleGVjcGF0aF9zdGVw X29mZiA9IHN0YXRlLT5zdGVwc19sZW47CiAJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2Ny YXRjaCk7CiAKLQlpZiAoamV4cHItPm9uX2VtcHR5ICYmIGpleHByLT5vbl9lbXB0eS0+ZGVm YXVsdF9leHByKQotCXsKLQkJZGVmYXVsdF9vbl9lbXB0eV9zdGVwX29mZiA9IHN0YXRlLT5z dGVwc19sZW47Ci0JCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+b25fZW1wdHkt PmRlZmF1bHRfZXhwciwgc3RhdGUsIHJlc3YsIHJlc251bGwpOwotCi0JCXNjcmF0Y2gtPm9w Y29kZSA9IEVFT1BfSlVNUDsKLQkJZGVmYXVsdF9vbl9lbXB0eV9qdW1wX29mZiA9IHN0YXRl LT5zdGVwc19sZW47Ci0JCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOwotCX0K LQogCWlmIChqZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhwcikKIAl7CiAJCWRlZmF1bHRf b25fZXJyb3Jfc3RlcF9vZmYgPSBzdGF0ZS0+c3RlcHNfbGVuOwpAQCAtNDI2MSwxNSArNDI0 OSw2IEBAIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpleHByLCBFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsCiAJLyogRUVPUF9KU09ORVhQUl9QQVRIICov CiAJc3RlcCA9ICZzdGF0ZS0+c3RlcHNbZXhlY3BhdGhfc3RlcF9vZmZdOwogCXN0ZXAtPmQu anNvbmV4cHIuanVtcF9kb25lID0gZG9uZV9zdGVwX29mZjsKLQlzdGVwLT5kLmpzb25leHBy Lmp1bXBfZGVmYXVsdF9vbl9lbXB0eSA9Ci0JCWRlZmF1bHRfb25fZW1wdHlfc3RlcF9vZmYg PiAwID8gZGVmYXVsdF9vbl9lbXB0eV9zdGVwX29mZiA6IGRvbmVfc3RlcF9vZmY7CiAJc3Rl cC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRfb25fZXJyb3IgPQogCQlkZWZhdWx0X29uX2Vy cm9yX3N0ZXBfb2ZmID4gMCA/IGRlZmF1bHRfb25fZXJyb3Jfc3RlcF9vZmYgOiBkb25lX3N0 ZXBfb2ZmOwotCi0JLyogRUVPUF9KVU1QICovCi0JaWYgKGRlZmF1bHRfb25fZW1wdHlfanVt cF9vZmYgPiAwKQotCXsKLQkJc3RlcCA9ICZzdGF0ZS0+c3RlcHNbZGVmYXVsdF9vbl9lbXB0 eV9qdW1wX29mZl07Ci0JCXN0ZXAtPmQuanVtcC5qdW1wZG9uZSA9IGRvbmVfc3RlcF9vZmY7 Ci0JfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRl cnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggMjI5 NTlhZTU2OWMuLjM1ZjIwZDg4MjMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy SW50ZXJwLmMKQEAgLTE4NTUsMTQgKzE4NTUsMTAgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCUVF T19DQVNFKEVFT1BfSlNPTkVYUFJfUEFUSCkKIAkJewogCQkJLyogdG9vIGNvbXBsZXggZm9y IGFuIGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLwotCQkJaW50CQkJcmVzID0gRXhlY0V2YWxK c29uRXhwcihzdGF0ZSwgb3ApOwotCi0JCQlpZiAocmVzID09IDApCi0JCQkJRUVPX0pVTVAo b3AtPmQuanNvbmV4cHIuanVtcF9kZWZhdWx0X29uX2VtcHR5KTsKLQkJCWVsc2UgaWYgKHJl cyA9PSAtMSkKLQkJCQlFRU9fSlVNUChvcC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRfb25f ZXJyb3IpOwotCQkJZWxzZQorCQkJaWYgKEV4ZWNFdmFsSnNvbkV4cHIoc3RhdGUsIG9wKSkK IAkJCQlFRU9fSlVNUChvcC0+ZC5qc29uZXhwci5qdW1wX2RvbmUpOworCQkJZWxzZQorCQkJ CUVFT19KVU1QKG9wLT5kLmpzb25leHByLmp1bXBfZGVmYXVsdF9vbl9lcnJvcik7CiAJCX0K IAogCQlFRU9fQ0FTRShFRU9QX0xBU1QpCkBAIC01NDAzLDExICs1Mzk5LDEwIEBAIEV4ZWNF dmFsSnNvbkV4cHJTa2lwKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgogICogUmV0dXJuIHZhbHVlOgotICogICAxIC0gT2ssIGp1bXAg dG8gdGhlIGVuZCBvZiBKc29uRXhwcgotICogICAwIC0gZW1wdHkgcmVzdWx0LCBuZWVkIHRv IGV4ZWN1dGUgREVGQVVMVCBPTiBFTVBUWSBleHByZXNzaW9uCi0gKiAgLTEgLSBlcnJvciBv Y2N1cmVkLCBuZWVkIHRvIGV4ZWN1dGUgREVGQVVMVCBPTiBFUlJPUiBleHByZXNzaW9uCisg KiAgIHRydWUgIC0gT2ssIGp1bXAgdG8gdGhlIGVuZCBvZiBKc29uRXhwcgorICogICBmYWxz ZSAtIGVycm9yIG9jY3VyZWQsIG5lZWQgdG8gZXhlY3V0ZSBERUZBVUxUIE9OIEVSUk9SIGV4 cHJlc3Npb24KICAqLwotaW50Citib29sCiBFeGVjRXZhbEpzb25FeHByKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiB7CiAJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUg PSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKQEAgLTU0MzksMTQgKzU0MzQsMTYgQEAgRXhl Y0V2YWxKc29uRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCiAJ CQllcnJvciA9IHRydWU7IC8qIGZhbGxiYWNrIHRvIGVycm9yIGJlaGF2aW9yICovCiAJCX0K LQkJZWxzZSBpZiAoamV4cHItPm9uX2VtcHR5LT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0RF RkFVTFQpCi0JCQlyZXR1cm4gMDsJLyoganVtcCB0byBERUZBVUxUIE9OIEVNUFRZIGV4cHJl c3Npb24gKi8KIAkJZWxzZQorCQl7CisJCQlBc3NlcnQoamV4cHItPm9uX2VtcHR5LT5idHlw ZSAhPSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpOyAvKiBub3Qgc3VwcG9ydGVkICovCisKIAkJ CS8qIEV4ZWN1dGUgT04gRU1QVFkgYmVoYXZpb3IgKi8KIAkJCXJlcyA9IEV4ZWNFdmFsSnNv bkJlaGF2aW9yKGpleHByLT5vbl9lbXB0eSwKIAkJCQkJCQkJCSAgIGpleHByLT5yZXR1cm5p bmctPnR5cGlkLAogCQkJCQkJCQkJICAgamV4cHItPnJldHVybmluZy0+dHlwbW9kLAogCQkJ CQkJCQkJICAgb3AtPnJlc251bGwpOworCQl9CiAJfQogCiAJaWYgKGVycm9yKQpAQCAtNTQ1 NCw3ICs1NDUxLDcgQEAgRXhlY0V2YWxKc29uRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wKQogCQlBc3NlcnQoIXRocm93X2Vycm9ycyk7CiAKIAkJaWYgKGpleHBy LT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUKQotCQkJcmV0dXJu IC0xOwkvKiBqdW1wIHRvIERFRkFVTFQgT04gRVJST1IgZXhwcmVzc2lvbiAqLworCQkJcmV0 dXJuIGZhbHNlOwkvKiBqdW1wIHRvIERFRkFVTFQgT04gRVJST1IgZXhwcmVzc2lvbiAqLwog CiAJCS8qIEV4ZWN1dGUgT04gRVJST1IgYmVoYXZpb3IgKi8KIAkJcmVzID0gRXhlY0V2YWxK c29uQmVoYXZpb3IoamV4cHItPm9uX2Vycm9yLApAQCAtNTQ2NCw1ICs1NDYxLDUgQEAgRXhl Y0V2YWxKc29uRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCX0K IAogCSpvcC0+cmVzdmFsdWUgPSByZXM7Ci0JcmV0dXJuIDE7CS8qIGp1bXAgdG8gdGhlIGVu ZCBvZiBleHByZXNzaW9uICovCisJcmV0dXJuIHRydWU7CS8qIGp1bXAgdG8gdGhlIGVuZCBv ZiBleHByZXNzaW9uICovCiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9s bHZtaml0X2V4cHIuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmlu ZGV4IGVkNTNhZDkzNDQzLi42OWViODZhYWYwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdF9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2 bWppdF9leHByLmMKQEAgLTI0NDEsMzQgKzI0NDEsMjIgQEAgbGx2bV9jb21waWxlX2V4cHIo RXhwclN0YXRlICpzdGF0ZSkKIAkJCWNhc2UgRUVPUF9KU09ORVhQUl9QQVRIOgogCQkJCXsK IAkJCQkJTExWTVZhbHVlUmVmIHZfcmV0OwotCQkJCQlMTFZNVmFsdWVSZWYgdl9zd2l0Y2g7 Ci0JCQkJCWludAkJCW5fanVtcHMgPSAwOwogCiAJCQkJCXZfcmV0ID0gYnVpbGRfRXZhbFhG dW5jKGIsIG1vZCwgIkV4ZWNFdmFsSnNvbkV4cHIiLAogCQkJCQkJCQkJCQl2X3N0YXRlLCBv cCk7Ci0KLQkJCQkJaWYgKG9wLT5kLmpzb25leHByLmp1bXBfZGVmYXVsdF9vbl9lbXB0eSAh PSBvcC0+ZC5qc29uZXhwci5qdW1wX2RvbmUpCi0JCQkJCQluX2p1bXBzKys7CisJCQkJCXZf cmV0ID0gTExWTUJ1aWxkWkV4dChiLCB2X3JldCwgVHlwZVN0b3JhZ2VCb29sLCAiIik7CiAK IAkJCQkJaWYgKG9wLT5kLmpzb25leHByLmp1bXBfZGVmYXVsdF9vbl9lcnJvciAhPSBvcC0+ ZC5qc29uZXhwci5qdW1wX2RvbmUpCi0JCQkJCQluX2p1bXBzKys7Ci0KLQkJCQkJaWYgKCFu X2p1bXBzKQotCQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3AtPmQuanNvbmV4cHIu anVtcF9kb25lXSk7CisJCQkJCQlMTFZNQnVpbGRDb25kQnIoYiwKKwkJCQkJCQkJCQlMTFZN QnVpbGRJQ21wKGIsCisJCQkJCQkJCQkJCQkJICBMTFZNSW50RVEsCisJCQkJCQkJCQkJCQkJ ICB2X3JldCwKKwkJCQkJCQkJCQkJCQkgIGxfc2Jvb2xfY29uc3QoMCksCisJCQkJCQkJCQkJ CQkJICAiIiksCisJCQkJCQkJCQkJb3BibG9ja3Nbb3AtPmQuanNvbmV4cHIuanVtcF9kZWZh dWx0X29uX2Vycm9yXSwKKwkJCQkJCQkJCQlvcGJsb2Nrc1tvcC0+ZC5qc29uZXhwci5qdW1w X2RvbmVdKTsKIAkJCQkJZWxzZQotCQkJCQl7Ci0JCQkJCQl2X3N3aXRjaCA9IExMVk1CdWls ZFN3aXRjaChiLCB2X3JldCwKLQkJCQkJCQkJCQkJCSAgIG9wYmxvY2tzW29wLT5kLmpzb25l eHByLmp1bXBfZG9uZV0sCi0JCQkJCQkJCQkJCQkgICBuX2p1bXBzKTsKLQotCQkJCQkJaWYg KG9wLT5kLmpzb25leHByLmp1bXBfZGVmYXVsdF9vbl9lbXB0eSAhPSBvcC0+ZC5qc29uZXhw ci5qdW1wX2RvbmUpCi0JCQkJCQkJTExWTUFkZENhc2Uodl9zd2l0Y2gsIGxfaW50MzJfY29u c3QoMCksCi0JCQkJCQkJCQkJb3BibG9ja3Nbb3AtPmQuanNvbmV4cHIuanVtcF9kZWZhdWx0 X29uX2VtcHR5XSk7Ci0KLQkJCQkJCWlmIChvcC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRf b25fZXJyb3IgIT0gb3AtPmQuanNvbmV4cHIuanVtcF9kb25lKQotCQkJCQkJCUxMVk1BZGRD YXNlKHZfc3dpdGNoLCBsX2ludDMyX2NvbnN0KC0xKSwKLQkJCQkJCQkJCQlvcGJsb2Nrc1tv cC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1bHRfb25fZXJyb3JdKTsKLQkJCQkJfQorCQkJCQkJ TExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3AtPmQuanNvbmV4cHIuanVtcF9kb25lXSk7CiAK IAkJCQkJYnJlYWs7CiAJCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5j CmluZGV4IDZlYjkyMzg5MmY0Li5iMTMzZGFkMTBjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2NsYXVzZXMuYwpAQCAtNTM1NSwxNiArNTM1NSwzIEBAIHB1bGxfcGFyYW1pZHNf d2Fsa2VyKE5vZGUgKm5vZGUsIEJpdG1hcHNldCAqKmNvbnRleHQpCiAJcmV0dXJuIGV4cHJl c3Npb25fdHJlZV93YWxrZXIobm9kZSwgcHVsbF9wYXJhbWlkc193YWxrZXIsCiAJCQkJCQkJ CSAgKHZvaWQgKikgY29udGV4dCk7CiB9Ci0KLWJvb2wKLWV4cHJfY2FuX3Rocm93X2Vycm9y cyhOb2RlICpleHByKQotewotCWlmICghZXhwcikKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYg KElzQShleHByLCBDb25zdCkpCi0JCXJldHVybiBmYWxzZTsKLQotCS8qIFRPRE8gY29uc2lk ZXIgbW9yZSBjYXNlcyAqLwotCXJldHVybiB0cnVlOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9l eHByLmMKaW5kZXggYzAyNTMwYTM2NzEuLmY5NjMzNGNlMDg4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMKQEAgLTQyNjMsNyArNDI2Myw2IEBAIHN0YXRpYyBOb2RlICoKIGNvZXJj ZURlZmF1bHRKc29uRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25FeHByICpqc2V4cHIs CiAJCQkJCSAgYm9vbCBpc19vbl9lbXB0eSwgTm9kZSAqZGVmZXhwcikKIHsKLQlOb2RlCSAg ICpvcmlnX2RlZmV4cHIgPSBkZWZleHByOwogCWludAkJCWxvY2F0aW9uOwogCU9pZAkJCWV4 cHJ0eXBlOwogCkBAIC00Mjc2LDYgKzQyNzUsMTIgQEAgY29lcmNlRGVmYXVsdEpzb25FeHBy KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkV4cHIgKmpzZXhwciwKIAlpZiAobG9jYXRpb24g PCAwKQogCQlsb2NhdGlvbiA9IGpzZXhwci0+bG9jYXRpb247CiAKKwlpZiAoaXNfb25fZW1w dHkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIkRFRkFVTFQgT04gRU1QVFkgZXhwcmVzc2lv bnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgbG9jYXRpb24pKSk7CisKIAlkZWZleHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBz dGF0ZSwKIAkJCQkJCQkJCWRlZmV4cHIsCiAJCQkJCQkJCQlleHBydHlwZSwKQEAgLTQyOTMs MzEgKzQyOTgsNyBAQCBjb2VyY2VEZWZhdWx0SnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBKc29uRXhwciAqanNleHByLAogCQkJCQkJZm9ybWF0X3R5cGVfYmUoanNleHByLT5yZXR1 cm5pbmctPnR5cGlkKSksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0 aW9uKSkpOwogCi0JLyogRG9uJ3QgYWxsb3cgdW5zYWZlIERFRkFVTCBPTiBFTVBUWSBleHBy ZXNzaW9ucywgdW5sZXNzIEVSUk9SIE9OIEVSUk9SICovCi0JaWYgKCFpc19vbl9lbXB0eSB8 fAotCQlqc2V4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQot CQlyZXR1cm4gZGVmZXhwcjsKLQotCWlmICghZXhwcl9jYW5fdGhyb3dfZXJyb3JzKGRlZmV4 cHIpKQotCQlyZXR1cm4gZGVmZXhwcjsKLQotCS8qIFRyeSB0byBzaW1wbGlmeSBleHByZXNz aW9uIGlmIHRoZXJlIGlzIG5vbi1lbXB0eSBjb2VyY2lvbiAqLwotCWlmIChkZWZleHByICE9 IG9yaWdfZGVmZXhwciAmJgotCQkhZXhwcl9jYW5fdGhyb3dfZXJyb3JzKG9yaWdfZGVmZXhw cikpCi0JewotCQlkZWZleHByID0gZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLCBkZWZl eHByKTsKLQotCQlpZiAoIWV4cHJfY2FuX3Rocm93X2Vycm9ycyhkZWZleHByKSkKLQkJCXJl dHVybiBkZWZleHByOwotCX0KLQotCWVyZXBvcnQoRVJST1IsCi0JCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkgZXJybXNnKCJ1bnNhZmUgREVGQVVM VCBPTiBFTVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpLAotCQkJIGVycmhp bnQoIlVzZSBFUlJPUiBPTiBFUlJPUiBjbGF1c2Ugb3IgdHJ5IHRvIHNpbXBsaWZ5IGV4cHJl c3Npb24gaW50byBjb25zdGFudC1saWtlIGZvcm0uIiksCi0JCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7Ci0KLQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gZGVm ZXhwcjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNF eHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGIwMDViZjQ0 MGRkLi5kNjc0MTljNjZhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y0V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC02OTgs NyArNjk4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwckV2YWxTdGVwCiAJCXsKIAkJCXN0cnVj dCBKc29uRXhwclN0YXRlICpqc2VzdGF0ZTsKIAkJCWludAkJCWp1bXBfZG9uZTsKLQkJCWlu dAkJCWp1bXBfZGVmYXVsdF9vbl9lbXB0eTsgLyogT04gRU1QVFkgREVGQVVMVCBleHByZXNz aW9uICovCiAJCQlpbnQJCQlqdW1wX2RlZmF1bHRfb25fZXJyb3I7IC8qIE9OIEVSUk9SIERF RkFVTFQgZXhwcmVzc2lvbiAqLwogCQl9CQkJanNvbmV4cHI7CiAKQEAgLTgzOSw3ICs4Mzgs NyBAQCBleHRlcm4gdm9pZCBFeGVjRXZhbFN5c1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wLAogCQkJCQkJICAgRXhwckNvbnRleHQgKmVjb250ZXh0LCBUdXBsZVRh YmxlU2xvdCAqc2xvdCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbEpzb25Db25zdHJ1Y3RvcihF eHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQkJRXhwckNvbnRl eHQgKmVjb250ZXh0KTsKLWV4dGVybiBpbnQgRXhlY0V2YWxKc29uRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKK2V4dGVybiBib29sIEV4ZWNFdmFsSnNvbkV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gYm9vbCBF eGVjRXZhbEpzb25FeHByU2tpcChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w KTsKIAogZXh0ZXJuIHZvaWQgRXhlY0FnZ0luaXRHcm91cChBZ2dTdGF0ZSAqYWdnc3RhdGUs IEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMsIEFnZ1N0YXRlUGVyR3JvdXAgcGVyZ3JvdXAs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY2xhdXNlcy5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL2NsYXVzZXMuaAppbmRleCA0ZDYxYjg4YzE2MS4uNmM1MjAzZGM0 NDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9jbGF1c2VzLmgKKysrIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL2NsYXVzZXMuaApAQCAtNTUsNiArNTUsNCBAQCBleHRl cm4gUXVlcnkgKmlubGluZV9zZXRfcmV0dXJuaW5nX2Z1bmN0aW9uKFBsYW5uZXJJbmZvICpy b290LAogCiBleHRlcm4gQml0bWFwc2V0ICpwdWxsX3BhcmFtaWRzKEV4cHIgKmV4cHIpOwog Ci1leHRlcm4gYm9vbCBleHByX2Nhbl90aHJvd19lcnJvcnMoTm9kZSAqZXhwcik7Ci0KICNl bmRpZgkJCQkJCQkvKiBDTEFVU0VTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pzb25iX3NxbGpzb24ub3V0CmluZGV4IDBlMDdiYmM4NThmLi5mY2Q5MjExMzBmNSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iX3NxbGpzb24ub3V0CkBA IC01MzcsMTEgKzUzNyw5IEBAIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAk LmEnIE5VTEwgT04gRU1QVFkgREVGQVVMVCAnMicgT04gRVJST1IpOwogKDEgcm93KQogCiBT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxUICcyJyBPTiBF TVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7Ci0ganNvbl92YWx1ZSAKLS0tLS0tLS0tLS0t LQotIDIKLSgxIHJvdykKLQorRVJST1I6ICBERUZBVUxUIE9OIEVNUFRZIGV4cHJlc3Npb25z IGFyZSBub3Qgc3VwcG9ydGVkCitMSU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcx JywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVNUFRZIC4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFNFTEVDVCBKU09O X1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZIERFRkFVTFQgJzMn IE9OIEVSUk9SKTsKICBqc29uX3ZhbHVlIAogLS0tLS0tLS0tLS0tCkBAIC01NzYsNyArNTc0 LDcgQEAgU0VMRUNUCiAJCWpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywKIAkJJyQuKiA/IChA ID4gJHgpJyBQQVNTSU5HIHggQVMgeAogCQlSRVRVUk5JTkcgaW50Ci0JCURFRkFVTFQgLTEg T04gRU1QVFkKKwkJTlVMTCBPTiBFTVBUWQogCQlERUZBVUxUIC0yIE9OIEVSUk9SCiAJKSB5 CiBGUk9NCkBAIC01ODUsNyArNTgzLDcgQEAgRlJPTQogLS0tKy0tLS0KICAwIHwgLTIKICAx IHwgIDIKLSAyIHwgLTEKKyAyIHwgICAKICgzIHJvd3MpCiAKIFNFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIgKScgQVMgYSk7CkBA IC02MzQsMzEgKzYzMiwyNSBAQCBTRUxFQ1QgSlNPTl9WQUxVRSgnMSc6Ompzb25iLCAnJC54 JyBSRVRVUk5JTkcgaW50CiAgICAgICAgICAgICAgICAgICBERUZBVUxUIDEgLyB4IE9OIEVN UFRZCiAgICAgICAgICAgICAgICAgICBERUZBVUxUIDIgT04gRVJST1IpCiBGUk9NIChWQUxV RVMgKDE6OmludCksICgwKSkgeCh4KTsKLUVSUk9SOiAgdW5zYWZlIERFRkFVTFQgT04gRU1Q VFkgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQKK0VSUk9SOiAgREVGQVVMVCBPTiBF TVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZAogTElORSAyOiAgICAgICAgICAg ICAgICAgICBERUZBVUxUIDEgLyB4IE9OIEVNUFRZCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgotSElOVDogIFVzZSBFUlJPUiBPTiBFUlJPUiBjbGF1c2Ugb3IgdHJ5 IHRvIHNpbXBsaWZ5IGV4cHJlc3Npb24gaW50byBjb25zdGFudC1saWtlIGZvcm0uCiBTRUxF Q1QgSlNPTl9WQUxVRSgnMSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcgaW50IERFRkFVTFQg LTEgT04gRU1QVFkpOwotIGpzb25fdmFsdWUgCi0tLS0tLS0tLS0tLS0KLSAgICAgICAgIC0x Ci0oMSByb3cpCi0KK0VSUk9SOiAgREVGQVVMVCBPTiBFTVBUWSBleHByZXNzaW9ucyBhcmUg bm90IHN1cHBvcnRlZAorTElORSAxOiAuLi5TT05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcg UkVUVVJOSU5HIGludCBERUZBVUxUIC0xIE9OIEVNUFQuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxFQ1Qg SlNPTl9WQUxVRSgnMSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgJy0x JyBPTiBFTVBUWSk7Ci0ganNvbl92YWx1ZSAKLS0tLS0tLS0tLS0tLQotICAgICAgICAgLTEK LSgxIHJvdykKLQorRVJST1I6ICBERUZBVUxUIE9OIEVNUFRZIGV4cHJlc3Npb25zIGFyZSBu b3Qgc3VwcG9ydGVkCitMSU5FIDE6IC4uLlNPTl9WQUxVRSgnMSc6Ompzb25iLCAnJC54JyBS RVRVUk5JTkcgaW50IERFRkFVTFQgJy0xJyBPTiBFTS4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFNFTEVDVCBK U09OX1ZBTFVFKCcxJzo6anNvbmIsICckLngnIFJFVFVSTklORyBpbnQgREVGQVVMVCAnZXJy JyBPTiBFTVBUWSk7Ci1FUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGlu dGVnZXI6ICJlcnIiCitFUlJPUjogIERFRkFVTFQgT04gRU1QVFkgZXhwcmVzc2lvbnMgYXJl IG5vdCBzdXBwb3J0ZWQKIExJTkUgMTogLi4uU09OX1ZBTFVFKCcxJzo6anNvbmIsICckLngn IFJFVFVSTklORyBpbnQgREVGQVVMVCAnZXJyJyBPTiBFLi4uCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogU0VMRUNU IEpTT05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJOSU5HIGludCBERUZBVUxUIC0x OjpmbG9hdCBPTiBFTVBUWSk7Ci1FUlJPUjogIHVuc2FmZSBERUZBVUxUIE9OIEVNUFRZIGV4 cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkCitFUlJPUjogIERFRkFVTFQgT04gRU1QVFkg ZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQKIExJTkUgMTogLi4uU09OX1ZBTFVFKCcx Jzo6anNvbmIsICckLngnIFJFVFVSTklORyBpbnQgREVGQVVMVCAtMTo6ZmxvYXQgLi4uCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgotSElOVDogIFVzZSBFUlJPUiBPTiBFUlJPUiBjbGF1c2Ugb3IgdHJ5IHRvIHNp bXBsaWZ5IGV4cHJlc3Npb24gaW50byBjb25zdGFudC1saWtlIGZvcm0uCiAtLSBKU09OX1FV RVJZCiBTRUxFQ1QKIAlKU09OX1FVRVJZKGpzLCAnJCcpLApAQCAtODI3LDcgKzgxOSw3IEBA IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSk7 CiAgCiAoMSByb3cpCiAKLVNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBE RUZBVUxUICciZW1wdHkiJyBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn W10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1Ip OwogIGpzb25fcXVlcnkgCiAtLS0tLS0tLS0tLS0KICAiZW1wdHkiCkBAIC0xMDU1LDcgKzEw NDcsNyBAQCBDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50cyAoCiAJQ09OU1RS QUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQyCiAJCUNIRUNLIChKU09OX0VYSVNUUyhqczo6 anNvbmIsICckLmEnIFBBU1NJTkcgaSArIDUgQVMgaW50LCBpOjp0ZXh0IEFTIHR4dCwgYXJy YXlbMSwyLDNdIGFzIGFycikpCiAJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQz Ci0JCUNIRUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGludCBE RUZBVUxUICgnMTInIHx8IGkpOjppbnQgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkK KwkJQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IE5V TEwgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKIAlDT05TVFJBSU5UIHRlc3RfanNv bmJfY29uc3RyYWludDQKIAkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBX SVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8IGpzb25i ICdbMTBdJykKIAlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDUKQEAgLTEwNzMs NyArMTA2NSw3IEBAIENSRUFURSBUQUJMRSB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzICgKIENo ZWNrIGNvbnN0cmFpbnRzOgogICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQxIiBDSEVDSyAo anMgSVMgSlNPTikKICAgICAidGVzdF9qc29uYl9jb25zdHJhaW50MiIgQ0hFQ0sgKEpTT05f RVhJU1RTKGpzOjpqc29uYiwgJyQuImEiJyBQQVNTSU5HIGkgKyA1IEFTIGludCwgaTo6dGV4 dCBBUyB0eHQsIEFSUkFZWzEsIDIsIDNdIEFTIGFycikpCi0gICAgInRlc3RfanNvbmJfY29u c3RyYWludDMiIENIRUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5J TkcgaW50ZWdlciBERUZBVUxUICgnMTInOjp0ZXh0IHx8IGkpOjppbnRlZ2VyIE9OIEVNUFRZ IEVSUk9SIE9OIEVSUk9SKSA+IGkpCisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDMiIENI RUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgaW50ZWdlciBF UlJPUiBPTiBFUlJPUikgPiBpKQogICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ0IiBDSEVD SyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGpzb25iIFdJVEgg Q09ORElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwgJ1sxMF0nOjpq c29uYikKICAgICAidGVzdF9qc29uYl9jb25zdHJhaW50NSIgQ0hFQ0sgKEpTT05fUVVFUlko anM6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBjaGFyYWN0ZXIoNSkgT01JVCBRVU9URVMg RU1QVFkgQVJSQVkgT04gRU1QVFkpID4gKCdhJzo6YnBjaGFyIENPTExBVEUgIkMiKSkKICAg ICAidGVzdF9qc29uYl9jb25zdHJhaW50NiIgQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29u YiwgJ3N0cmljdCAkLiJhIicgUkVUVVJOSU5HIGludGVnZXIgVFJVRSBPTiBFUlJPUikgPCAy KQpAQCAtMTA4Nyw3ICsxMDc5LDcgQEAgT1JERVIgQlkgMTsKICAoKEpTT05fRVhJU1RTKChq cyk6Ompzb25iLCAnc3RyaWN0ICQuImEiJyBSRVRVUk5JTkcgaW50ZWdlciBUUlVFIE9OIEVS Uk9SKSA8IDIpKQogICgoSlNPTl9RVUVSWSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5J TkcgY2hhcmFjdGVyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgn YSc6OmJwY2hhciBDT0xMQVRFICJDIikpKQogICgoSlNPTl9RVUVSWSgoanMpOjpqc29uYiwg JyQuImEiJyBSRVRVUk5JTkcganNvbmIgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIEVNUFRZ IE9CSkVDVCBPTiBFUlJPUikgPCAnWzEwXSc6Ompzb25iKSkKLSAoKEpTT05fVkFMVUUoKGpz KTo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGludGVnZXIgREVGQVVMVCAoKCcxMic6OnRl eHQgfHwgaSkpOjppbnRlZ2VyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpKQorICgo SlNPTl9WQUxVRSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgaW50ZWdlciBFUlJP UiBPTiBFUlJPUikgPiBpKSkKICAoKGpzIElTIEpTT04pKQogIChKU09OX0VYSVNUUygoanMp Ojpqc29uYiwgJyQuImEiJyBQQVNTSU5HIChpICsgNSkgQVMgaW50LCAoaSk6OnRleHQgQVMg dHh0LCBBUlJBWVsxLCAyLCAzXSBBUyBhcnIpKQogKDYgcm93cykKQEAgLTE0MjQsMjIgKzE0 MTYsMjIgQEAgU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVN TlMgKGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIEVSUk9SIE8KIEVSUk9SOiAganNvbnBhdGgg bWVtYmVyIGFjY2Vzc29yIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYW4gb2JqZWN0CiBTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFU SCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBqdDsKIEVSUk9S OiAgbm8gU1FML0pTT04gaXRlbQotU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICci YSInLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcgICBERUZBVUxUIDEgT04gRU1QVFkg REVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyAgIE5VTEwgT04gRU1QVFkg REVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CiAgYSAKIC0tLQogIDIKICgxIHJvdykKIAotU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQg UEFUSCAnc3RyaWN0ICQuYScgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJP UikpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09M VU1OUyAoYSBpbnQgUEFUSCAnc3RyaWN0ICQuYScgTlVMTCBPTiBFTVBUWSBERUZBVUxUIDIg T04gRVJST1IpKSBqdDsKICBhIAogLS0tCiAgMgogKDEgcm93KQogCi1TRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdsYXgg JC5hJyBERUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0Owog IGEgCiAtLS0KLSAxCisgIAogKDEgcm93KQogCiAtLSBKU09OX1RBQkxFOiBFWElTVFMgUEFU SCB0eXBlcwpAQCAtMTc2MSw3ICsxNzUzLDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAk WypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50 IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlhIGludCBwYXRoICds YXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAogCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCiAJCSkKQEAgLTE3OTAsNyArMTc4Miw3IEBAIGZyb20KIAkJanR0Lmpz LCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxpdHks Ci0JCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJYSBp bnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBvbiBlcnJvciwK IAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQg cGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCkBAIC0xODIwLDcgKzE4MTIsNyBAQCBmcm9t CiAJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBv cmRpbmFsaXR5LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0 eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEg b24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAtMTg1MCw3ICsxODQy LDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAog CQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBk ZWZhdWx0IC0xIG9uIGVycm9yLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFz IHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAogCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCiAJCSkKQEAgLTE4 ODAsNyArMTg3Miw3IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQlj b2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5h JyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Ig b24gZW1wdHkgZGVmYXVsdCAtMSBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQog CQkpCkBAIC0xOTA5LDcgKzE5MDEsNyBAQCBmcm9tCiAJCWp0dC5qcywnc3RyaWN0ICRbKl0n IGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAotCQkJYSBpbnQgcGF0 aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAk LmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCiAJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBh dGggJyQnICkKIAkJKQpAQCAtMTkzOCw3ICsxOTMwLDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0 cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJ CWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlhIGludCBw YXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAogCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRo ICckJyApLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMg KCBjIGludCBwYXRoICckJyApCiAJCSkKQEAgLTE5NjYsNyArMTk1OCw3IEBAIGZyb20KIAkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9yZGlu YWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBvbiBl cnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgg YiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBw YyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCkBAIC0xOTk0LDcgKzE5ODYsNyBA QCBmcm9tCiAJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQlu IGZvciBvcmRpbmFsaXR5LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBv biBlbXB0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1 bHQgLTEgb24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIg Y29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAtMjAyNSw3 ICsyMDE3LDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVt bnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRl ZmF1bHQgLTEgb24gZW1wdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBl bXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJb Kl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAogCQkJbmVzdGVkIHBhdGgg J3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCiAJCSkK QEAgLTIxOTUsNyArMjE4Nyw3IEBAIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAx MjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOwogIDEyMwogKDEgcm93KQogCi1TRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2InIERFRkFVTFQg J2ZvbycgT04gRU1QVFkpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30n LCAnJCcgfHwgJy4nIHx8ICdiJyBFUlJPUiBPTiBFTVBUWSBERUZBVUxUICdmb28nIE9OIEVS Uk9SKTsKICBqc29uX3ZhbHVlIAogLS0tLS0tLS0tLS0tCiAgZm9vCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYl9zcWxqc29uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsCmluZGV4IDQzYTE5NGFkMDlmLi43NmQ0YzljYzE0 ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwKQEAgLTE0OCw3 ICsxNDgsNyBAQCBTRUxFQ1QKIAkJanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLAogCQknJC4q ID8gKEAgPiAkeCknIFBBU1NJTkcgeCBBUyB4CiAJCVJFVFVSTklORyBpbnQKLQkJREVGQVVM VCAtMSBPTiBFTVBUWQorCQlOVUxMIE9OIEVNUFRZCiAJCURFRkFVTFQgLTIgT04gRVJST1IK IAkpIHkKIEZST00KQEAgLTIzNyw3ICsyMzcsNyBAQCBTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnW10nLCAnJFsqXScgRU1QVFkgT04gRU1QVFkpOwogU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1tdJywgJyRbKl0nIEVNUFRZIEFSUkFZIE9OIEVNUFRZKTsKIFNFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPQkpFQ1QgT04gRU1QVFkpOwogU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZKTsKLVNFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBF TVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04g RU1QVFkgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOwogCiBTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgTlVMTCBPTiBFUlJPUik7CiBT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgRU1Q VFkgQVJSQVkgT04gRVJST1IpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIENSRUFURSBUQUJMRSB0 ZXN0X2pzb25iX2NvbnN0cmFpbnRzICgKIAlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3Ry YWludDIKIAkJQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJyQuYScgUEFTU0lORyBp ICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBhcnJheVsxLDIsM10gYXMgYXJyKSkKIAlD T05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDMKLQkJQ0hFQ0sgKEpTT05fVkFMVUUo anM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgKCcxMicgfHwgaSk6Omlu dCBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKQorCQlDSEVDSyAoSlNPTl9WQUxVRShq czo6anNvbmIsICckLmEnIFJFVFVSTklORyBpbnQgTlVMTCBPTiBFTVBUWSBFUlJPUiBPTiBF UlJPUikgPiBpKQogCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50NAogCQlDSEVD SyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBF UiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwganNvbmIgJ1sxMF0nKQogCUNPTlNUUkFJTlQg dGVzdF9qc29uYl9jb25zdHJhaW50NQpAQCAtNTE1LDkgKzUxNSw5IEBAIFNFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckLmEn IEVSUk9SIE9OIEVNUFRZCiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAn JCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnc3RyaWN0ICQuYScgRVJST1IgT04gRU1QVFkpIEVS Uk9SIE9OIEVSUk9SKSBqdDsKIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScs ICckJyBDT0xVTU5TIChhIGludCBQQVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJS T1IgT04gRVJST1IpIGp0OwogCi1TRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBE RUZBVUxUIDIgT04gRVJST1IpKSBqdDsKLVNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ3N0cmljdCAkLmEnIERFRkFVTFQg MSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKLVNFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEn IERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEgg JyQnICAgTlVMTCBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEgg J3N0cmljdCAkLmEnIE5VTEwgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGlu dCBQQVRIICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0 OwogCiAtLSBKU09OX1RBQkxFOiBFWElTVFMgUEFUSCB0eXBlcwogU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQ0IEVYSVNUUyBQQVRI ICckLmEnKSk7CkBAIC03NzYsNyArNzc2LDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAk WypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50 IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlhIGludCBwYXRoICds YXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAogCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCiAJCSkKQEAgLTc5MSw3ICs3OTEsNyBAQCBmcm9tCiAJCWp0dC5qcywn c3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAot CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCWEgaW50 IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCiAJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBh dGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAtODA3LDcgKzgwNyw3IEBAIGZyb20KIAkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9yZGlu YWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBvbiBl cnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgg YiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBw YyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCkBAIC04MjMsNyArODIzLDcgQEAg ZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBm b3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24g ZW1wdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0 IC0xIG9uIGVycm9yLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNv bHVtbnMgKCBiIGludCBwYXRoICckJyApLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNb Kl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCiAJCSkKQEAgLTgzOSw3ICs4 MzksNyBAQCBmcm9tCiAJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAo CiAJCQluIGZvciBvcmRpbmFsaXR5LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVs dCAtMSBvbiBlbXB0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5 IGRlZmF1bHQgLTEgb24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScg YXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAt ODU1LDcgKzg1NSw3IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQlj b2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5h JyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Ig b24gZW1wdHkgZGVmYXVsdCAtMSBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQog CQkpCkBAIC04NzEsNyArODcxLDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBh cyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGgg J2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlhIGludCBwYXRoICdsYXggJC5h JyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAogCQkJbmVzdGVkIHBhdGgg J3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAogCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRo ICckJyApCiAJCSkKQEAgLTg4Nyw3ICs4ODcsNyBAQCBmcm9tCiAJCWp0dC5qcywnc3RyaWN0 ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAotCQkJYSBp bnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCWEgaW50IHBhdGgg J2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCiAJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQn ICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKIAkJKQpAQCAtOTAzLDcgKzkwMyw3IEBAIGZyb20KIAkJanR0Lmpz LCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxpdHks Ci0JCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJYSBp bnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBvbiBlcnJvciwK IAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQg cGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCkBAIC05MTksNyArOTE5LDcgQEAgZnJvbQog CQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3Jk aW5hbGl0eSwKLQkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHks CisJCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9u IGVycm9yLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMg KCBiIGludCBwYXRoICckJyApLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCiAJCSkKQEAgLTk4Nyw3ICs5ODcsNyBA QCBGUk9NIEpTT05fVEFCTEUoCiAtLSBFeHRlbnNpb246IG5vbi1jb25zdGFudCBKU09OIHBh dGgKIFNFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicg fHwgJ2EnKTsKIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8 ICcuJyB8fCAnYScpOwotU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAn JCcgfHwgJy4nIHx8ICdiJyBERUZBVUxUICdmb28nIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYicgRVJST1IgT04g RU1QVFkgREVGQVVMVCAnZm9vJyBPTiBFUlJPUik7CiBTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKIFNFTEVDVCBKU09OX1FVRVJZ KGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScgV0lUSCBXUkFQUEVSKTsK IC0tIFNob3VsZCBmYWlsIChpbnZhbGlkIHBhdGgpCi0tIAoyLjE3LjEKCg== --------------g00NurbAwSD8acROP1fIlyRc Content-Type: text/x-patch; charset=UTF-8; name="v10-0010-Remove-support-of-DEFAULT-ON-ERROR-in-SQL-JSON-f.patch" Content-Disposition: attachment; filename*0="v10-0010-Remove-support-of-DEFAULT-ON-ERROR-in-SQL-JSON-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmMmU3NTgzYjUxYmI1MjlkMDliYjRlODBiZDk5M2QxOTkxNDcwZjM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMjIgMjI6MzI6MDYgKzAzMDAKU3ViamVj dDogW1BBVENIIHYxMCAxMC8xMF0gUmVtb3ZlIHN1cHBvcnQgb2YgREVGQVVMVCBPTiBFUlJP UiBpbiBTUUwvSlNPTgogZnVuY3Rpb25zCgotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwg ICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHByLmMgICAgICAgICAgICAgfCAgMTUgLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHJJbnRlcnAuYyAgICAgICB8ICAzMSArLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2 bWppdF9leHByLmMgICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMgICAgICAgICAgICAgICB8ICAxNSAtCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYyAgICAgICAgICAgICAgIHwgIDI3IC0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 ICAgICAgICAgICAgICAgICAgIHwgIDQ5ICstLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYyAgICAgICAgICAgICB8ICA4NSArLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfanNvbnRhYmxlLmMgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC91dGlscy9taXNj L3F1ZXJ5anVtYmxlLmMgICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjRXhwci5oICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9tYWtl ZnVuY3MuaCAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oICAgICAgICAgICAgICAgfCAgMjEgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvanNvbmJfc3FsanNvbi5vdXQgfCA0MzIgKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpzb24uc3FsICAgICAgfCAgMjQgKy0KIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgIDEgLQogMTggZmls ZXMgY2hhbmdlZCwgMjg1IGluc2VydGlvbnMoKyksIDUwNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dt bAppbmRleCA4ZTAzYTE4MzFhYi4uYTM3NGI2YjAxMWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMTc5Nzcs NyArMTc5NzcsNyBAQCBGUk9NCiAgICAgICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+UEFTU0lO RzwvbGl0ZXJhbD4geyA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDxsaXRlcmFsPkFT PC9saXRlcmFsPiA8cGFyYW1ldGVyPnZhcm5hbWU8L3BhcmFtZXRlcj4gfSA8b3B0aW9uYWw+ LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+CiAgICAgICAgIDxvcHRpb25hbD4gPGxpdGVy YWw+UkVUVVJOSU5HPC9saXRlcmFsPiA8cGFyYW1ldGVyPmRhdGFfdHlwZTwvcGFyYW1ldGVy PiA8L29wdGlvbmFsPgogICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+RVJST1I8L2xp dGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5PTiBFTVBUWTwv bGl0ZXJhbD4gPC9vcHRpb25hbD4KLSAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVS Uk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+REVG QVVMVDwvbGl0ZXJhbD4gPHBhcmFtZXRlcj5leHByZXNzaW9uPC9wYXJhbWV0ZXI+IH0gPGxp dGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IDwvb3B0aW9uYWw+KQorICAgICAgICA8b3B0aW9u YWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwvbGl0ZXJh bD4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25hbD4pCiAgICAgICAg PC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICBSZXR1cm5zIHRoZSByZXN1bHQgb2Yg YXBwbHlpbmcgdGhlCkBAIC0xODAwNCwxMCArMTgwMDQsNyBAQCBGUk9NCiAgICAgICAgIDxs aXRlcmFsPmpzb25fdmFsdWUoanNvbmIgJyIwMzowNCAyMDE1LTAyLTAxIicsICckLmRhdGV0 aW1lKCJISDI0Ok1JJm5ic3A7WVlZWS1NTS1ERCIpJyBSRVRVUk5JTkcgZGF0ZSk8L2xpdGVy YWw+CiAgICAgICAgIDxyZXR1cm52YWx1ZT4yMDE1LTAyLTAxPC9yZXR1cm52YWx1ZT4KICAg ICAgICA8L3BhcmE+Ci0gICAgICAgPHBhcmE+Ci0gICAgICAgIDxsaXRlcmFsPmpzb25fdmFs dWUoanNvbmIgJ1sxLDJdJywgJ3N0cmljdCAkWypdJyBERUZBVUxUIDkgT04gRVJST1IpPC9s aXRlcmFsPgotICAgICAgICA8cmV0dXJudmFsdWU+OTwvcmV0dXJudmFsdWU+Ci0gICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93 PgogICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1 bmNfc2lnbmF0dXJlIj4KQEAgLTE4MDE4LDcgKzE4MDE1LDcgQEAgRlJPTQogICAgICAgICA8 b3B0aW9uYWw+IHsgPGxpdGVyYWw+V0lUSE9VVDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5XSVRI PC9saXRlcmFsPiB7IDxsaXRlcmFsPkNPTkRJVElPTkFMPC9saXRlcmFsPiB8IDxvcHRpb25h bD48bGl0ZXJhbD5VTkNPTkRJVElPTkFMPC9saXRlcmFsPjwvb3B0aW9uYWw+IH0gfSA8b3B0 aW9uYWw+IDxsaXRlcmFsPkFSUkFZPC9saXRlcmFsPiA8L29wdGlvbmFsPiA8bGl0ZXJhbD5X UkFQUEVSPC9saXRlcmFsPiA8L29wdGlvbmFsPgogICAgICAgICA8b3B0aW9uYWw+IHsgPGxp dGVyYWw+S0VFUDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5PTUlUPC9saXRlcmFsPiB9IDxsaXRl cmFsPlFVT1RFUzwvbGl0ZXJhbD4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5PTiBTQ0FMQVIgU1RS SU5HPC9saXRlcmFsPiA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgogICAgICAgICA8b3B0aW9u YWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwvbGl0ZXJh bD4gfCA8bGl0ZXJhbD5FTVBUWTwvbGl0ZXJhbD4geyA8b3B0aW9uYWw+IDxsaXRlcmFsPkFS UkFZPC9saXRlcmFsPiA8L29wdGlvbmFsPiB8IDxsaXRlcmFsPk9CSkVDVDwvbGl0ZXJhbD4g fSB9IDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiA8L29wdGlvbmFsPgotICAgICAgICA8 b3B0aW9uYWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwv bGl0ZXJhbD4gfCA8bGl0ZXJhbD5FTVBUWTwvbGl0ZXJhbD4geyA8b3B0aW9uYWw+IDxsaXRl cmFsPkFSUkFZPC9saXRlcmFsPiA8L29wdGlvbmFsPiB8IDxsaXRlcmFsPk9CSkVDVDwvbGl0 ZXJhbD4gfSB8IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxwYXJhbWV0ZXI+ZXhwcmVz c2lvbjwvcGFyYW1ldGVyPiB9IDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiA8L29wdGlv bmFsPikKKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB8 IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+RU1QVFk8L2xpdGVyYWw+IHsg PG9wdGlvbmFsPiA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gfCA8bGl0 ZXJhbD5PQkpFQ1Q8L2xpdGVyYWw+IH0gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4g PC9vcHRpb25hbD4pCiAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFJl dHVybnMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jCmluZGV4IDVlYTdlNmI0MjFhLi45MWVmYTI1OTY1NyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jCkBAIC00MTY0LDkgKzQxNjQsNyBAQCBFeGVjSW5pdEpzb25FeHByKEpzb25F eHByICpqZXhwciwgRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpzY3JhdGNoLAog CUxpc3RDZWxsICAgKmFyZ2V4cHJsYzsKIAlMaXN0Q2VsbCAgICphcmduYW1lbGM7CiAJaW50 CQkJc2tpcF9zdGVwX29mZjsKLQlpbnQJCQlleGVjcGF0aF9zdGVwX29mZjsKIAlpbnQJCQlk b25lX3N0ZXBfb2ZmOwotCWludAkJCWRlZmF1bHRfb25fZXJyb3Jfc3RlcF9vZmYgPSAtMTsK IAogCS8qIEpTT05fVEFCTEUgcHJldWRvLWZ1bmN0aW9uIHJldHVybnMgY29udGV4dCBpdGVt IGFzIGEgcmVzdWx0ICovCiAJaWYgKGpleHByLT5vcCA9PSBKU09OX1RBQkxFX09QKQpAQCAt NDIzMCwyNSArNDIyOCwxMiBAQCBFeGVjSW5pdEpzb25FeHByKEpzb25FeHByICpqZXhwciwg RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpzY3JhdGNoLAogCS8qIFN0ZXAgZm9y IHRoZSBhY3R1YWwgSlNPTiBwYXRoIGV2YWx1YXRpb24uICovCiAJc2NyYXRjaC0+b3Bjb2Rl ID0gRUVPUF9KU09ORVhQUl9QQVRIOwogCXNjcmF0Y2gtPmQuanNvbmV4cHIuanNlc3RhdGUg PSBqc2VzdGF0ZTsKLQlleGVjcGF0aF9zdGVwX29mZiA9IHN0YXRlLT5zdGVwc19sZW47CiAJ RXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CiAKLQlpZiAoamV4cHItPm9uX2Vy cm9yLT5kZWZhdWx0X2V4cHIpCi0JewotCQlkZWZhdWx0X29uX2Vycm9yX3N0ZXBfb2ZmID0g c3RhdGUtPnN0ZXBzX2xlbjsKLQkJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5v bl9lcnJvci0+ZGVmYXVsdF9leHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7Ci0JfQotCiAJ LyogQWRqdXN0IGp1bXAgbG9jYXRpb25zICovCiAJZG9uZV9zdGVwX29mZiA9IHN0YXRlLT5z dGVwc19sZW47CiAKIAkvKiBFRU9QX0pTT05FWFBSX1NLSVAgKi8KIAlzdGVwID0gJnN0YXRl LT5zdGVwc1tza2lwX3N0ZXBfb2ZmXTsKIAlzdGVwLT5kLmpzb25leHByX3NraXAuanVtcF9k b25lID0gZG9uZV9zdGVwX29mZjsKLQotCS8qIEVFT1BfSlNPTkVYUFJfUEFUSCAqLwotCXN0 ZXAgPSAmc3RhdGUtPnN0ZXBzW2V4ZWNwYXRoX3N0ZXBfb2ZmXTsKLQlzdGVwLT5kLmpzb25l eHByLmp1bXBfZG9uZSA9IGRvbmVfc3RlcF9vZmY7Ci0Jc3RlcC0+ZC5qc29uZXhwci5qdW1w X2RlZmF1bHRfb25fZXJyb3IgPQotCQlkZWZhdWx0X29uX2Vycm9yX3N0ZXBfb2ZmID4gMCA/ IGRlZmF1bHRfb25fZXJyb3Jfc3RlcF9vZmYgOiBkb25lX3N0ZXBfb2ZmOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggMzVmMjBkODgyMzIuLmEyNzg4 N2IzY2I2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVy cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTE4 NTUsMTAgKzE4NTUsOCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHBy Q29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJRUVPX0NBU0UoRUVPUF9KU09O RVhQUl9QQVRIKQogCQl7CiAJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxl bWVudGF0aW9uICovCi0JCQlpZiAoRXhlY0V2YWxKc29uRXhwcihzdGF0ZSwgb3ApKQotCQkJ CUVFT19KVU1QKG9wLT5kLmpzb25leHByLmp1bXBfZG9uZSk7Ci0JCQllbHNlCi0JCQkJRUVP X0pVTVAob3AtPmQuanNvbmV4cHIuanVtcF9kZWZhdWx0X29uX2Vycm9yKTsKKwkJCUV4ZWNF dmFsSnNvbkV4cHIoc3RhdGUsIG9wKTsKKwkJCUVFT19ORVhUKCk7CiAJCX0KIAogCQlFRU9f Q0FTRShFRU9QX0xBU1QpCkBAIC01MjM0LDEyICs1MjMyLDEyIEBAIEV4ZWNKc29uUXVlcnlD b2VyY2lvbihKc29uRXhwciAqamV4cHIsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAogICog dHlwZS4KICAqLwogc3RhdGljIERhdHVtCi1FeGVjRXZhbEpzb25CZWhhdmlvcihKc29uQmVo YXZpb3IgKmJlaGF2aW9yLCBPaWQgcmV0X3R5cGlkLAorRXhlY0V2YWxKc29uQmVoYXZpb3Io SnNvbkJlaGF2aW9yVHlwZSBiZWhhdmlvciwgT2lkIHJldF90eXBpZCwKIAkJCQkJIGludDMy IHJldF90eXBtb2QsIGJvb2wgKmlzX251bGwpCiB7CiAJKmlzX251bGwgPSBmYWxzZTsKIAot CXN3aXRjaCAoYmVoYXZpb3ItPmJ0eXBlKQorCXN3aXRjaCAoYmVoYXZpb3IpCiAJewogCQlj YXNlIEpTT05fQkVIQVZJT1JfRU1QVFlfQVJSQVk6CiAJCQlpZiAocmV0X3R5cGlkID09IEpT T05CT0lEKQpAQCAtNTI3MCw3ICs1MjY4LDcgQEAgRXhlY0V2YWxKc29uQmVoYXZpb3IoSnNv bkJlaGF2aW9yICpiZWhhdmlvciwgT2lkIHJldF90eXBpZCwKIAkJCXsKIAkJCQlEYXR1bQkJ cmVzOwogCQkJCWJvb2wJCW9rIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9Ci0JCQkJCUV4 ZWNKc29uQ29lcmNlQm9vbChiZWhhdmlvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9UUlVF LAorCQkJCQlFeGVjSnNvbkNvZXJjZUJvb2woYmVoYXZpb3IgPT0gSlNPTl9CRUhBVklPUl9U UlVFLAogCQkJCQkJCQkJICAgcmV0X3R5cGlkLCByZXRfdHlwbW9kLCAmcmVzKTsKIAogCQkJ CUFzc2VydChvayk7IC8qIHJldHVybmluZyB0eXBlIG11c3QgYmUgY2hlY2tlZCBpbiBwYXJz ZXIgKi8KQEAgLTUyODQsMTIgKzUyODIsMTMgQEAgRXhlY0V2YWxKc29uQmVoYXZpb3IoSnNv bkJlaGF2aW9yICpiZWhhdmlvciwgT2lkIHJldF90eXBpZCwKIAkJCSppc19udWxsID0gdHJ1 ZTsKIAkJCXJldHVybiAoRGF0dW0pIDA7CiAKLQkJY2FzZSBKU09OX0JFSEFWSU9SX0RFRkFV TFQ6CisJCWNhc2UgSlNPTl9CRUhBVklPUl9VTlNQRUM6CisJCWNhc2UgSlNPTl9CRUhBVklP Ul9FUlJPUjoKIAkJCUFzc2VydCgwKTsKIAkJCXJldHVybiAoRGF0dW0pIDA7CS8qIG11c3Qg YmUgaGFuZGxlZCBieSBjYWxsZXIgKi8KIAogCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBTUUwvSlNPTiBiZWhhdmlvciAlZCIsIGJlaGF2aW9yLT5idHlwZSk7 CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9KU09OIGJlaGF2aW9yICVkIiwg YmVoYXZpb3IpOwogCQkJcmV0dXJuIChEYXR1bSkgMDsKIAl9CiB9CkBAIC01NDAyLDcgKzU0 MDEsNyBAQCBFeGVjRXZhbEpzb25FeHByU2tpcChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wKQogICogICB0cnVlICAtIE9rLCBqdW1wIHRvIHRoZSBlbmQgb2YgSnNvbkV4 cHIKICAqICAgZmFsc2UgLSBlcnJvciBvY2N1cmVkLCBuZWVkIHRvIGV4ZWN1dGUgREVGQVVM VCBPTiBFUlJPUiBleHByZXNzaW9uCiAgKi8KLWJvb2wKK3ZvaWQKIEV4ZWNFdmFsSnNvbkV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKIHsKIAlKc29uRXhwclN0 YXRlICpqc2VzdGF0ZSA9IG9wLT5kLmpzb25leHByLmpzZXN0YXRlOwpAQCAtNTQxMiw3ICs1 NDExLDcgQEAgRXhlY0V2YWxKc29uRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wKQogCUpzb25QYXRoICAgKnBhdGg7CiAJYm9vbAkJZW1wdHkgPSBmYWxzZTsKIAli b29sCQllcnJvciA9IGZhbHNlOwotCWJvb2wJCXRocm93X2Vycm9ycyA9IGpleHByLT5vbl9l cnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKwlib29sCQl0aHJvd19lcnJv cnMgPSBqZXhwci0+b25fZXJyb3IgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKIAogCWl0ZW0g PSBqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIudmFsdWU7CiAJcGF0aCA9IERhdHVtR2V0SnNv blBhdGhQKGpzZXN0YXRlLT5wYXRoc3BlYy52YWx1ZSk7CkBAIC01NDIzLDkgKzU0MjIsOSBA QCBFeGVjRXZhbEpzb25FeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3Ap CiAKIAlpZiAoZW1wdHkgJiYgIWVycm9yKQogCXsKLQkJQXNzZXJ0KGpleHByLT5vbl9lbXB0 eSk7CS8qIGl0IGlzIG5vdCBKU09OX0VYSVNUUyAqLworCQlBc3NlcnQoamV4cHItPm9uX2Vt cHR5ICE9IEpTT05fQkVIQVZJT1JfVU5TUEVDKTsJLyogaXQgaXMgbm90IEpTT05fRVhJU1RT ICovCiAKLQkJaWYgKGpleHByLT5vbl9lbXB0eS0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9F UlJPUikKKwkJaWYgKGpleHByLT5vbl9lbXB0eSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQog CQl7CiAJCQlpZiAodGhyb3dfZXJyb3JzKQogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC01NDM2 LDcgKzU0MzUsNyBAQCBFeGVjRXZhbEpzb25FeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3ApCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlBc3NlcnQoamV4cHItPm9uX2Vt cHR5LT5idHlwZSAhPSBKU09OX0JFSEFWSU9SX0RFRkFVTFQpOyAvKiBub3Qgc3VwcG9ydGVk ICovCisJCQlBc3NlcnQoamV4cHItPm9uX2VtcHR5ICE9IEpTT05fQkVIQVZJT1JfREVGQVVM VCk7IC8qIG5vdCBzdXBwb3J0ZWQgKi8KIAogCQkJLyogRXhlY3V0ZSBPTiBFTVBUWSBiZWhh dmlvciAqLwogCQkJcmVzID0gRXhlY0V2YWxKc29uQmVoYXZpb3IoamV4cHItPm9uX2VtcHR5 LApAQCAtNTQ1MCw5ICs1NDQ5LDYgQEAgRXhlY0V2YWxKc29uRXhwcihFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCXsKIAkJQXNzZXJ0KCF0aHJvd19lcnJvcnMpOwog Ci0JCWlmIChqZXhwci0+b25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfREVGQVVM VCkKLQkJCXJldHVybiBmYWxzZTsJLyoganVtcCB0byBERUZBVUxUIE9OIEVSUk9SIGV4cHJl c3Npb24gKi8KLQogCQkvKiBFeGVjdXRlIE9OIEVSUk9SIGJlaGF2aW9yICovCiAJCXJlcyA9 IEV4ZWNFdmFsSnNvbkJlaGF2aW9yKGpleHByLT5vbl9lcnJvciwKIAkJCQkJCQkJICAgamV4 cHItPnJldHVybmluZy0+dHlwaWQsCkBAIC01NDYxLDUgKzU0NTcsNCBAQCBFeGVjRXZhbEpz b25FeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCiAJfQogCiAJKm9w LT5yZXN2YWx1ZSA9IHJlczsKLQlyZXR1cm4gdHJ1ZTsJLyoganVtcCB0byB0aGUgZW5kIG9m IGV4cHJlc3Npb24gKi8KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xs dm1qaXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5k ZXggNjllYjg2YWFmMGEuLmQ1MTdlZDQ4MGY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9q aXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X2V4cHIuYwpAQCAtMjQzOSwyNyArMjQzOSw5IEBAIGxsdm1fY29tcGlsZV9leHByKEV4 cHJTdGF0ZSAqc3RhdGUpCiAJCQkJfQogCiAJCQljYXNlIEVFT1BfSlNPTkVYUFJfUEFUSDoK LQkJCQl7Ci0JCQkJCUxMVk1WYWx1ZVJlZiB2X3JldDsKLQotCQkJCQl2X3JldCA9IGJ1aWxk X0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25FeHByIiwKLQkJCQkJCQkJCQkJdl9z dGF0ZSwgb3ApOwotCQkJCQl2X3JldCA9IExMVk1CdWlsZFpFeHQoYiwgdl9yZXQsIFR5cGVT dG9yYWdlQm9vbCwgIiIpOwotCi0JCQkJCWlmIChvcC0+ZC5qc29uZXhwci5qdW1wX2RlZmF1 bHRfb25fZXJyb3IgIT0gb3AtPmQuanNvbmV4cHIuanVtcF9kb25lKQotCQkJCQkJTExWTUJ1 aWxkQ29uZEJyKGIsCi0JCQkJCQkJCQkJTExWTUJ1aWxkSUNtcChiLAotCQkJCQkJCQkJCQkJ CSAgTExWTUludEVRLAotCQkJCQkJCQkJCQkJCSAgdl9yZXQsCi0JCQkJCQkJCQkJCQkJICBs X3Nib29sX2NvbnN0KDApLAotCQkJCQkJCQkJCQkJCSAgIiIpLAotCQkJCQkJCQkJCW9wYmxv Y2tzW29wLT5kLmpzb25leHByLmp1bXBfZGVmYXVsdF9vbl9lcnJvcl0sCi0JCQkJCQkJCQkJ b3BibG9ja3Nbb3AtPmQuanNvbmV4cHIuanVtcF9kb25lXSk7Ci0JCQkJCWVsc2UKLQkJCQkJ CUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wLT5kLmpzb25leHByLmp1bXBfZG9uZV0pOwot Ci0JCQkJCWJyZWFrOwotCQkJCX0KKwkJCQlidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhl Y0V2YWxKc29uRXhwciIsIHZfc3RhdGUsIG9wKTsKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJs b2Nrc1tvcG5vICsgMV0pOworCQkJCWJyZWFrOwogCiAJCQljYXNlIEVFT1BfTEFTVDoKIAkJ CQlBc3NlcnQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCAyODI4OGRjZmMx MC4uZjA1ZTdmNzk2MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04NTIsMjEgKzg1 Miw2IEBAIG1ha2VKc29uVmFsdWVFeHByKEV4cHIgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1h dCkKIAlyZXR1cm4ganZlOwogfQogCi0vKgotICogbWFrZUpzb25CZWhhdmlvciAtCi0gKgkg IGNyZWF0ZXMgYSBKc29uQmVoYXZpb3Igbm9kZQotICovCi1Kc29uQmVoYXZpb3IgKgotbWFr ZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmRlZmF1bHRfZXhw cikKLXsKLQlKc29uQmVoYXZpb3IgKmJlaGF2aW9yID0gbWFrZU5vZGUoSnNvbkJlaGF2aW9y KTsKLQotCWJlaGF2aW9yLT5idHlwZSA9IHR5cGU7Ci0JYmVoYXZpb3ItPmRlZmF1bHRfZXhw ciA9IGRlZmF1bHRfZXhwcjsKLQotCXJldHVybiBiZWhhdmlvcjsKLX0KLQogLyoKICAqIG1h a2VKc29uVGFibGVKb2luZWRQbGFuIC0KICAqCSAgIGNyZWF0ZXMgYSBqb2luZWQgSnNvblRh YmxlUGxhbiBub2RlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGUwMjQwYmVlZWFiLi4w MWYwMmViNzhiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI1MDEsMTEgKzI1MDEs NiBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJaWYgKHdhbGtl cihqZXhwci0+cGFzc2luZ192YWx1ZXMsIGNvbnRleHQpKQogCQkJCQlyZXR1cm4gdHJ1ZTsK IAkJCQkvKiB3ZSBhc3N1bWUgd2Fsa2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBwYXNzaW5nX25h bWVzICovCi0JCQkJaWYgKGpleHByLT5vbl9lbXB0eSAmJgotCQkJCQl3YWxrZXIoamV4cHIt Pm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIsIGNvbnRleHQpKQotCQkJCQlyZXR1cm4gdHJ1ZTsK LQkJCQlpZiAod2Fsa2VyKGpleHByLT5vbl9lcnJvci0+ZGVmYXVsdF9leHByLCBjb250ZXh0 KSkKLQkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAg LTM1MzcsMTEgKzM1MzIsNiBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihOb2RlICpub2Rl LAogCQkJCU1VVEFURShuZXdub2RlLT5mb3JtYXR0ZWRfZXhwciwgamV4cHItPmZvcm1hdHRl ZF9leHByLCBOb2RlICopOwogCQkJCU1VVEFURShuZXdub2RlLT5wYXNzaW5nX3ZhbHVlcywg amV4cHItPnBhc3NpbmdfdmFsdWVzLCBMaXN0ICopOwogCQkJCS8qIGFzc3VtZSBtdXRhdG9y IGRvZXMgbm90IGNhcmUgYWJvdXQgcGFzc2luZ19uYW1lcyAqLwotCQkJCWlmIChuZXdub2Rl LT5vbl9lbXB0eSkKLQkJCQkJTVVUQVRFKG5ld25vZGUtPm9uX2VtcHR5LT5kZWZhdWx0X2V4 cHIsCi0JCQkJCQkgICBqZXhwci0+b25fZW1wdHktPmRlZmF1bHRfZXhwciwgTm9kZSAqKTsK LQkJCQlNVVRBVEUobmV3bm9kZS0+b25fZXJyb3ItPmRlZmF1bHRfZXhwciwKLQkJCQkJICAg amV4cHItPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIsIE5vZGUgKik7CiAJCQkJcmV0dXJuIChO b2RlICopIG5ld25vZGU7CiAJCQl9CiAJCQlicmVhazsKQEAgLTQ0MzgsMTUgKzQ0MjgsNiBA QCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcihOb2RlICpub2RlLAogCQkJCQlyZXR1cm4g dHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwotCQljYXNlIFRfSnNvbkJlaGF2aW9yOgotCQkJewot CQkJCUpzb25CZWhhdmlvciAqamIgPSAoSnNvbkJlaGF2aW9yICopIG5vZGU7Ci0KLQkJCQlp ZiAoamItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfREVGQVVMVCAmJgotCQkJCQl3YWxrZXIo amItPmRlZmF1bHRfZXhwciwgY29udGV4dCkpCi0JCQkJCXJldHVybiB0cnVlOwotCQkJfQot CQkJYnJlYWs7CiAJCWNhc2UgVF9Kc29uRnVuY0V4cHI6CiAJCQl7CiAJCQkJSnNvbkZ1bmNF eHByICpqZmUgPSAoSnNvbkZ1bmNFeHByICopIG5vZGU7CkBAIC00NDU1LDEwICs0NDM2LDYg QEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJu IHRydWU7CiAJCQkJaWYgKGpmZS0+b3V0cHV0ICYmIHdhbGtlcihqZmUtPm91dHB1dCwgY29u dGV4dCkpCiAJCQkJCXJldHVybiB0cnVlOwotCQkJCWlmICh3YWxrZXIoamZlLT5vbl9lbXB0 eSwgY29udGV4dCkpCi0JCQkJCXJldHVybiB0cnVlOwotCQkJCWlmICh3YWxrZXIoamZlLT5v bl9lcnJvciwgY29udGV4dCkpCi0JCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7 CiAJCWNhc2UgVF9Kc29uVGFibGU6CkBAIC00NDc3LDEwICs0NDU0LDYgQEAgcmF3X2V4cHJl c3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwKIAogCQkJCWlmICh3YWxrZXIoanRjLT50 eXBlTmFtZSwgY29udGV4dCkpCiAJCQkJCXJldHVybiB0cnVlOwotCQkJCWlmICh3YWxrZXIo anRjLT5vbl9lbXB0eSwgY29udGV4dCkpCi0JCQkJCXJldHVybiB0cnVlOwotCQkJCWlmICh3 YWxrZXIoanRjLT5vbl9lcnJvciwgY29udGV4dCkpCi0JCQkJCXJldHVybiB0cnVlOwogCQkJ CWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX05FU1RFRCAmJiB3YWxrZXIoanRjLT5jb2x1bW5z LCBjb250ZXh0KSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRl eCBmOTAzNzc2MWY5Ni4uM2FiMzIzYmQ3OTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjgxLDEx ICsyODEsMTEgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlNZXJnZVdoZW5DbGF1 c2UgKm1lcmdld2hlbjsKIAlzdHJ1Y3QgS2V5QWN0aW9ucyAqa2V5YWN0aW9uczsKIAlzdHJ1 Y3QgS2V5QWN0aW9uICprZXlhY3Rpb247Ci0JSnNvbkJlaGF2aW9yICpqc2JlaGF2aW9yOwor CUpzb25CZWhhdmlvclR5cGUganNiZWhhdmlvcjsKIAlzdHJ1Y3QKIAl7Ci0JCUpzb25CZWhh dmlvciAqb25fZW1wdHk7Ci0JCUpzb25CZWhhdmlvciAqb25fZXJyb3I7CisJCUpzb25CZWhh dmlvclR5cGUgb25fZW1wdHk7CisJCUpzb25CZWhhdmlvclR5cGUgb25fZXJyb3I7CiAJfQkJ CW9uX2JlaGF2aW9yOwogCUpzb25RdW90ZXMJanNfcXVvdGVzOwogfQpAQCAtNzMwLDcgKzcz MCw2IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJCWpzb25fYmVoYXZpb3Jf ZW1wdHkKIAkJCQkJanNvbl9iZWhhdmlvcl9lbXB0eV9hcnJheQogCQkJCQlqc29uX2JlaGF2 aW9yX2VtcHR5X29iamVjdAotCQkJCQlqc29uX2JlaGF2aW9yX2RlZmF1bHQKIAkJCQkJanNv bl92YWx1ZV9iZWhhdmlvcgogCQkJCQlqc29uX3F1ZXJ5X2JlaGF2aW9yCiAJCQkJCWpzb25f ZXhpc3RzX2Vycm9yX2JlaGF2aW9yCkBAIC0xNjUzMiw1OSArMTY1MzEsNTQgQEAganNvbl9l bmNvZGluZzoKIAkJOwogCiBqc29uX2JlaGF2aW9yX2Vycm9yOgotCQkJRVJST1JfUAkJeyAk JCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FUlJPUiwgTlVMTCk7IH0KKwkJ CUVSUk9SX1AJCXsgJCQgPSBKU09OX0JFSEFWSU9SX0VSUk9SOyB9CiAJCTsKIAoganNvbl9i ZWhhdmlvcl9udWxsOgotCQkJTlVMTF9QCQl7ICQkID0gbWFrZUpzb25CZWhhdmlvcihKU09O X0JFSEFWSU9SX05VTEwsIE5VTEwpOyB9CisJCQlOVUxMX1AJCXsgJCQgPSBKU09OX0JFSEFW SU9SX05VTEw7IH0KIAkJOwogCiBqc29uX2JlaGF2aW9yX3RydWU6Ci0JCQlUUlVFX1AJCXsg JCQgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfVFJVRSwgTlVMTCk7IH0KKwkJ CVRSVUVfUAkJeyAkJCA9IEpTT05fQkVIQVZJT1JfVFJVRTsgfQogCQk7CiAKIGpzb25fYmVo YXZpb3JfZmFsc2U6Ci0JCQlGQUxTRV9QCQl7ICQkID0gbWFrZUpzb25CZWhhdmlvcihKU09O X0JFSEFWSU9SX0ZBTFNFLCBOVUxMKTsgfQorCQkJRkFMU0VfUAkJeyAkJCA9IEpTT05fQkVI QVZJT1JfRkFMU0U7IH0KIAkJOwogCiBqc29uX2JlaGF2aW9yX3Vua25vd246Ci0JCQlVTktO T1dOCQl7ICQkID0gbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9SX1VOS05PV04sIE5V TEwpOyB9CisJCQlVTktOT1dOCQl7ICQkID0gSlNPTl9CRUhBVklPUl9VTktOT1dOOyB9CiAJ CTsKIAoganNvbl9iZWhhdmlvcl9lbXB0eToKLQkJCUVNUFRZX1AJCXsgJCQgPSBtYWtlSnNv bkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfRU1QVFlfT0JKRUNULCBOVUxMKTsgfQorCQkJRU1Q VFlfUAkJeyAkJCA9IEpTT05fQkVIQVZJT1JfRU1QVFlfT0JKRUNUOyB9CiAJCTsKIAoganNv bl9iZWhhdmlvcl9lbXB0eV9hcnJheToKLQkJCUVNUFRZX1AgQVJSQVkJeyAkJCA9IG1ha2VK c29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWSwgTlVMTCk7IH0KKwkJCUVN UFRZX1AgQVJSQVkJeyAkJCA9IEpTT05fQkVIQVZJT1JfRU1QVFlfQVJSQVk7IH0KIAkJCS8q IG5vbi1zdGFuZGFyZCwgZm9yIE9yYWNsZSBjb21wYXRpYmlsaXR5IG9ubHkgKi8KLQkJCXwg RU1QVFlfUAkJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FTVBUWV9B UlJBWSwgTlVMTCk7IH0KKwkJCXwgRU1QVFlfUAkJeyAkJCA9IEpTT05fQkVIQVZJT1JfRU1Q VFlfQVJSQVk7IH0KIAkJOwogCiBqc29uX2JlaGF2aW9yX2VtcHR5X29iamVjdDoKLQkJCUVN UFRZX1AgT0JKRUNUX1AJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9F TVBUWV9PQkpFQ1QsIE5VTEwpOyB9Ci0JCTsKLQotanNvbl9iZWhhdmlvcl9kZWZhdWx0Ogot CQkJREVGQVVMVCBhX2V4cHIJeyAkJCA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklP Ul9ERUZBVUxULCAkMik7IH0KKwkJCUVNUFRZX1AgT0JKRUNUX1AJeyAkJCA9IEpTT05fQkVI QVZJT1JfRU1QVFlfT0JKRUNUOyB9CiAJCTsKIAogCiBqc29uX3ZhbHVlX2JlaGF2aW9yOgog CQkJanNvbl9iZWhhdmlvcl9udWxsCiAJCQl8IGpzb25fYmVoYXZpb3JfZXJyb3IKLQkJCXwg anNvbl9iZWhhdmlvcl9kZWZhdWx0CiAJCTsKIAoganNvbl92YWx1ZV9vbl9iZWhhdmlvcl9j bGF1c2Vfb3B0OgogCQkJanNvbl92YWx1ZV9iZWhhdmlvciBPTiBFTVBUWV9QCi0JCQkJCQkJ CQl7ICQkLm9uX2VtcHR5ID0gJDE7ICQkLm9uX2Vycm9yID0gTlVMTDsgfQorCQkJCQkJCQkJ eyAkJC5vbl9lbXB0eSA9ICQxOyAkJC5vbl9lcnJvciA9IEpTT05fQkVIQVZJT1JfVU5TUEVD OyB9CiAJCQl8IGpzb25fdmFsdWVfYmVoYXZpb3IgT04gRU1QVFlfUCBqc29uX3ZhbHVlX2Jl aGF2aW9yIE9OIEVSUk9SX1AKIAkJCQkJCQkJCXsgJCQub25fZW1wdHkgPSAkMTsgJCQub25f ZXJyb3IgPSAkNDsgfQogCQkJfCBqc29uX3ZhbHVlX2JlaGF2aW9yIE9OIEVSUk9SX1AKLQkJ CQkJCQkJCXsgJCQub25fZW1wdHkgPSBOVUxMOyAkJC5vbl9lcnJvciA9ICQxOyB9CisJCQkJ CQkJCQl7ICQkLm9uX2VtcHR5ID0gSlNPTl9CRUhBVklPUl9VTlNQRUM7ICQkLm9uX2Vycm9y ID0gJDE7IH0KIAkJCXwgIC8qIEVNUFRZICovCi0JCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0g TlVMTDsgJCQub25fZXJyb3IgPSBOVUxMOyB9CisJCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0g SlNPTl9CRUhBVklPUl9VTlNQRUM7ICQkLm9uX2Vycm9yID0gSlNPTl9CRUhBVklPUl9VTlNQ RUM7IH0KIAkJOwogCiBqc29uX3F1ZXJ5X2V4cHI6CkBAIC0xNjY1NiwxOCArMTY2NTAsMTcg QEAganNvbl9xdWVyeV9iZWhhdmlvcjoKIAkJCXwganNvbl9iZWhhdmlvcl9udWxsCiAJCQl8 IGpzb25fYmVoYXZpb3JfZW1wdHlfYXJyYXkKIAkJCXwganNvbl9iZWhhdmlvcl9lbXB0eV9v YmplY3QKLQkJCXwganNvbl9iZWhhdmlvcl9kZWZhdWx0CiAJCTsKIAoganNvbl9xdWVyeV9v bl9iZWhhdmlvcl9jbGF1c2Vfb3B0OgogCQkJanNvbl9xdWVyeV9iZWhhdmlvciBPTiBFTVBU WV9QCi0JCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0gJDE7ICQkLm9uX2Vycm9yID0gTlVMTDsg fQorCQkJCQkJCQkJeyAkJC5vbl9lbXB0eSA9ICQxOyAkJC5vbl9lcnJvciA9IEpTT05fQkVI QVZJT1JfVU5TUEVDOyB9CiAJCQl8IGpzb25fcXVlcnlfYmVoYXZpb3IgT04gRU1QVFlfUCBq c29uX3F1ZXJ5X2JlaGF2aW9yIE9OIEVSUk9SX1AKIAkJCQkJCQkJCXsgJCQub25fZW1wdHkg PSAkMTsgJCQub25fZXJyb3IgPSAkNDsgfQogCQkJfCBqc29uX3F1ZXJ5X2JlaGF2aW9yIE9O IEVSUk9SX1AKLQkJCQkJCQkJCXsgJCQub25fZW1wdHkgPSBOVUxMOyAkJC5vbl9lcnJvciA9 ICQxOyB9CisJCQkJCQkJCQl7ICQkLm9uX2VtcHR5ID0gSlNPTl9CRUhBVklPUl9VTlNQRUM7 ICQkLm9uX2Vycm9yID0gJDE7IH0KIAkJCXwgIC8qIEVNUFRZICovCi0JCQkJCQkJCQl7ICQk Lm9uX2VtcHR5ID0gTlVMTDsgJCQub25fZXJyb3IgPSBOVUxMOyB9CisJCQkJCQkJCQl7ICQk Lm9uX2VtcHR5ID0gSlNPTl9CRUhBVklPUl9VTlNQRUM7ICQkLm9uX2Vycm9yID0gSlNPTl9C RUhBVklPUl9VTlNQRUM7IH0KIAkJOwogCiBqc29uX3RhYmxlOgpAQCAtMTY3NTcsNyArMTY3 NTAsNyBAQCBqc29uX3RhYmxlX2V4aXN0c19jb2x1bW5fZGVmaW5pdGlvbjoKIAkJCQkJbi0+ d3JhcHBlciA9IEpTV19OT05FOwogCQkJCQluLT5vbWl0X3F1b3RlcyA9IGZhbHNlOwogCQkJ CQluLT5wYXRoc3BlYyA9ICQ0OwotCQkJCQluLT5vbl9lbXB0eSA9IE5VTEw7CisJCQkJCW4t Pm9uX2VtcHR5ID0gSlNPTl9CRUhBVklPUl9VTlNQRUM7CiAJCQkJCW4tPm9uX2Vycm9yID0g JDU7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAg LTE2NzcxLDcgKzE2NzY0LDcgQEAganNvbl90YWJsZV9lcnJvcl9iZWhhdmlvcjoKIAoganNv bl90YWJsZV9lcnJvcl9jbGF1c2Vfb3B0OgogCQkJanNvbl90YWJsZV9lcnJvcl9iZWhhdmlv ciBPTiBFUlJPUl9QCXsgJCQgPSAkMTsgfQotCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQk ID0gTlVMTDsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gSlNPTl9CRUhBVklP Ul9VTlNQRUM7IH0KIAkJOwogCiBqc29uX3RhYmxlX2NvbHVtbl9wYXRoX3NwZWNpZmljYXRp b25fY2xhdXNlX29wdDoKQEAgLTE2OTc3LDcgKzE2OTcwLDcgQEAganNvbl9leGlzdHNfcHJl ZGljYXRlOgogCiBqc29uX2V4aXN0c19lcnJvcl9jbGF1c2Vfb3B0OgogCQkJanNvbl9leGlz dHNfZXJyb3JfYmVoYXZpb3IgT04gRVJST1JfUAkJeyAkJCA9ICQxOyB9Ci0JCQl8IC8qIEVN UFRZICovCQkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQkJ eyAkJCA9IEpTT05fQkVIQVZJT1JfVU5TUEVDOyB9CiAJCTsKIAoganNvbl9leGlzdHNfZXJy b3JfYmVoYXZpb3I6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCBmOTYzMzRjZTA4 OC4uZDFjZWRmMjIyZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9l eHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNDA2Nywy MCArNDA2NywxNCBAQCB0cmFuc2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBKc29uRm9ybWF0VHlwZSBmb3JtYXQsIExpc3QgKmFyZ3MsCiAvKgogICogVHJhbnNm b3JtIGEgSlNPTiBCRUhBVklPUiBjbGF1c2UuCiAgKi8KLXN0YXRpYyBKc29uQmVoYXZpb3Ig KgotdHJhbnNmb3JtSnNvbkJlaGF2aW9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkJlaGF2 aW9yICpiZWhhdmlvciwKK3N0YXRpYyBKc29uQmVoYXZpb3JUeXBlCit0cmFuc2Zvcm1Kc29u QmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSBiZWhhdmlvciwKIAkJCQkJICBKc29uQmVoYXZp b3JUeXBlIGRlZmF1bHRfYmVoYXZpb3IpCiB7Ci0JSnNvbkJlaGF2aW9yVHlwZSBiZWhhdmlv cl90eXBlID0gZGVmYXVsdF9iZWhhdmlvcjsKLQlOb2RlCSAgICpkZWZhdWx0X2V4cHIgPSBO VUxMOworCWlmIChiZWhhdmlvciA9PSBKU09OX0JFSEFWSU9SX1VOU1BFQykKKwkJcmV0dXJu IGRlZmF1bHRfYmVoYXZpb3I7CiAKLQlpZiAoYmVoYXZpb3IpCi0JewotCQliZWhhdmlvcl90 eXBlID0gYmVoYXZpb3ItPmJ0eXBlOwotCQlpZiAoYmVoYXZpb3JfdHlwZSA9PSBKU09OX0JF SEFWSU9SX0RFRkFVTFQpCi0JCQlkZWZhdWx0X2V4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJz ZShwc3RhdGUsIGJlaGF2aW9yLT5kZWZhdWx0X2V4cHIpOwotCX0KLQlyZXR1cm4gbWFrZUpz b25CZWhhdmlvcihiZWhhdmlvcl90eXBlLCBkZWZhdWx0X2V4cHIpOworCXJldHVybiBiZWhh dmlvcjsKIH0KIAogLyoKQEAgLTQxMzIsMTcgKzQxMjYsMTcgQEAgdHJhbnNmb3JtSnNvbkV4 cHJDb21tb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMpCiAJCQkJ CQkJICZqc2V4cHItPnBhc3NpbmdfdmFsdWVzLCAmanNleHByLT5wYXNzaW5nX25hbWVzKTsK IAogCWlmIChmdW5jLT5vcCAhPSBKU09OX0VYSVNUU19PUCAmJiBmdW5jLT5vcCAhPSBKU09O X1RBQkxFX09QKQotCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9y KHBzdGF0ZSwgZnVuYy0+b25fZW1wdHksCisJCWpzZXhwci0+b25fZW1wdHkgPSB0cmFuc2Zv cm1Kc29uQmVoYXZpb3IoZnVuYy0+b25fZW1wdHksCiAJCQkJCQkJCQkJCQkgSlNPTl9CRUhB VklPUl9OVUxMKTsKIAogCWlmIChmdW5jLT5vcCA9PSBKU09OX0VYSVNUU19PUCkKLQkJanNl eHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9u X2Vycm9yLAorCQlqc2V4cHItPm9uX2Vycm9yID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKGZ1 bmMtPm9uX2Vycm9yLAogCQkJCQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfRkFMU0UpOwogCWVs c2UgaWYgKGZ1bmMtPm9wID09IEpTT05fVEFCTEVfT1ApCi0JCWpzZXhwci0+b25fZXJyb3Ig PSB0cmFuc2Zvcm1Kc29uQmVoYXZpb3IocHN0YXRlLCBmdW5jLT5vbl9lcnJvciwKKwkJanNl eHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihmdW5jLT5vbl9lcnJvciwK IAkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX0VNUFRZKTsKIAllbHNlCi0JCWpzZXhwci0+ b25fZXJyb3IgPSB0cmFuc2Zvcm1Kc29uQmVoYXZpb3IocHN0YXRlLCBmdW5jLT5vbl9lcnJv ciwKKwkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihmdW5jLT5v bl9lcnJvciwKIAkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwpOwogCiAJcmV0dXJu IGpzZXhwcjsKQEAgLTQyNTYsNTEgKzQyNTAsNiBAQCB0cmFuc2Zvcm1Kc29uRnVuY0V4cHJP dXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMsCiAJCQkJCQkJ CQkgICBqc2V4cHItPnJldHVybmluZyk7CiB9CiAKLS8qCi0gKiBDb2VyY2UgYW4gZXhwcmVz c2lvbiBpbiBKU09OIERFRkFVTFQgYmVoYXZpb3IgdG8gdGhlIHRhcmdldCBvdXRwdXQgdHlw ZS4KLSAqLwotc3RhdGljIE5vZGUgKgotY29lcmNlRGVmYXVsdEpzb25FeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvbkV4cHIgKmpzZXhwciwKLQkJCQkJICBib29sIGlzX29uX2VtcHR5 LCBOb2RlICpkZWZleHByKQotewotCWludAkJCWxvY2F0aW9uOwotCU9pZAkJCWV4cHJ0eXBl OwotCi0JaWYgKCFkZWZleHByKQotCQlyZXR1cm4gTlVMTDsKLQotCWV4cHJ0eXBlID0gZXhw clR5cGUoZGVmZXhwcik7Ci0JbG9jYXRpb24gPSBleHByTG9jYXRpb24oZGVmZXhwcik7Ci0K LQlpZiAobG9jYXRpb24gPCAwKQotCQlsb2NhdGlvbiA9IGpzZXhwci0+bG9jYXRpb247Ci0K LQlpZiAoaXNfb25fZW1wdHkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coIkRFRkFVTFQgT04g RU1QVFkgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSwKLQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7Ci0KLQlkZWZleHByID0gY29lcmNlX3Rv X3RhcmdldF90eXBlKHBzdGF0ZSwKLQkJCQkJCQkJCWRlZmV4cHIsCi0JCQkJCQkJCQlleHBy dHlwZSwKLQkJCQkJCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCwKLQkJCQkJCQkJCWpz ZXhwci0+cmV0dXJuaW5nLT50eXBtb2QsCi0JCQkJCQkJCQlDT0VSQ0lPTl9FWFBMSUNJVCwK LQkJCQkJCQkJCUNPRVJDRV9JTVBMSUNJVF9DQVNULAotCQkJCQkJCQkJbG9jYXRpb24pOwot Ci0JaWYgKCFkZWZleHByKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNP REVfQ0FOTk9UX0NPRVJDRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGNhc3QgREVGQVVMVCBl eHByZXNzaW9uIHR5cGUgJXMgdG8gJXMiLAotCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwcnR5 cGUpLAotCQkJCQkJZm9ybWF0X3R5cGVfYmUoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSks Ci0JCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwotCi0JcmV0 dXJuIGRlZmV4cHI7Ci19Ci0KIC8qCiAgKiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwgSlNPTl9R VUVSWSwgSlNPTl9FWElTVFMgZnVuY3Rpb25zIGludG8gYSBKc29uRXhwciBub2RlLgogICov CkBAIC00MzIxLDE0ICs0MjcwLDYgQEAgdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQogCQkJanNleHByLT5yZXR1cm5pbmct PmZvcm1hdC0+Zm9ybWF0X3R5cGUgPSBKU19GT1JNQVRfREVGQVVMVDsKIAkJCWpzZXhwci0+ cmV0dXJuaW5nLT5mb3JtYXQtPmVuY29kaW5nID0gSlNfRU5DX0RFRkFVTFQ7CiAKLQkJCWpz ZXhwci0+b25fZW1wdHktPmRlZmF1bHRfZXhwciA9Ci0JCQkJY29lcmNlRGVmYXVsdEpzb25F eHByKHBzdGF0ZSwganNleHByLCB0cnVlLAotCQkJCQkJCQkJICBqc2V4cHItPm9uX2VtcHR5 LT5kZWZhdWx0X2V4cHIpOwotCi0JCQlqc2V4cHItPm9uX2Vycm9yLT5kZWZhdWx0X2V4cHIg PQotCQkJCWNvZXJjZURlZmF1bHRKc29uRXhwcihwc3RhdGUsIGpzZXhwciwgZmFsc2UsCi0J CQkJCQkJCQkgIGpzZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhwcik7Ci0KIAkJCWJyZWFr OwogCiAJCWNhc2UgSlNPTl9RVUVSWV9PUDoKQEAgLTQzMzYsMTQgKzQyNzcsNiBAQCB0cmFu c2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1 bmMpCiAKIAkJCXRyYW5zZm9ybUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGZ1bmMsIGpz ZXhwcik7CiAKLQkJCWpzZXhwci0+b25fZW1wdHktPmRlZmF1bHRfZXhwciA9Ci0JCQkJY29l cmNlRGVmYXVsdEpzb25FeHByKHBzdGF0ZSwganNleHByLCB0cnVlLAotCQkJCQkJCQkJICBq c2V4cHItPm9uX2VtcHR5LT5kZWZhdWx0X2V4cHIpOwotCi0JCQlqc2V4cHItPm9uX2Vycm9y LT5kZWZhdWx0X2V4cHIgPQotCQkJCWNvZXJjZURlZmF1bHRKc29uRXhwcihwc3RhdGUsIGpz ZXhwciwgZmFsc2UsCi0JCQkJCQkJCQkgIGpzZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhw cik7Ci0KIAkJCWpzZXhwci0+d3JhcHBlciA9IGZ1bmMtPndyYXBwZXI7CiAJCQlqc2V4cHIt Pm9taXRfcXVvdGVzID0gZnVuYy0+b21pdF9xdW90ZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9qc29udGFibGUuYwppbmRleCBiYzMyNzIwMTdlZi4uZGIxY2I5OWVkNDAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKQEAgLTgzLDggKzgzLDggQEAgdHJh bnNmb3JtSnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbHVtbiAqanRjLCBOb2RlICpjb250 ZXh0SXRlbUV4cHIsCiAJamZleHByLT5vdXRwdXQgPSBvdXRwdXQ7CiAJamZleHByLT5vbl9l bXB0eSA9IGp0Yy0+b25fZW1wdHk7CiAJamZleHByLT5vbl9lcnJvciA9IGp0Yy0+b25fZXJy b3I7Ci0JaWYgKCFqZmV4cHItPm9uX2Vycm9yICYmIGVycm9yT25FcnJvcikKLQkJamZleHBy LT5vbl9lcnJvciA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FUlJPUiwgTlVM TCk7CisJaWYgKGpmZXhwci0+b25fZXJyb3IgPT0gSlNPTl9CRUhBVklPUl9VTlNQRUMgJiYg ZXJyb3JPbkVycm9yKQorCQlqZmV4cHItPm9uX2Vycm9yID0gSlNPTl9CRUhBVklPUl9FUlJP UjsKIAlqZmV4cHItPm9taXRfcXVvdGVzID0ganRjLT5vbWl0X3F1b3RlczsKIAlqZmV4cHIt PndyYXBwZXIgPSBqdGMtPndyYXBwZXI7CiAJamZleHByLT5sb2NhdGlvbiA9IGp0Yy0+bG9j YXRpb247CkBAIC00MjMsOCArNDIzLDcgQEAgYXBwZW5kSnNvblRhYmxlQ29sdW1ucyhKc29u VGFibGVDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMpCiAJUGFyc2VTdGF0ZSAqcHN0YXRl ID0gY3h0LT5wc3RhdGU7CiAJSnNvblRhYmxlICAqanQgPSBjeHQtPnRhYmxlOwogCVRhYmxl RnVuYyAgKnRmID0gY3h0LT50YWJsZWZ1bmM7Ci0JYm9vbAkJZXJyb3JPbkVycm9yID0ganQt Pm9uX2Vycm9yICYmCi0JanQtPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VS Uk9SOworCWJvb2wJCWVycm9yT25FcnJvciA9IGp0LT5vbl9lcnJvciA9PSBKU09OX0JFSEFW SU9SX0VSUk9SOwogCiAJZm9yZWFjaChjb2wsIGNvbHVtbnMpCiAJewpAQCAtNTQyLDkgKzU0 MSw3IEBAIG1ha2VQYXJlbnRKc29uVGFibGVOb2RlKEpzb25UYWJsZUNvbnRleHQgKmN4dCwg Y2hhciAqcGF0aFNwZWMsIExpc3QgKmNvbHVtbnMpCiAJLyogc2F2ZSBlbmQgb2YgY29sdW1u IHJhbmdlICovCiAJbm9kZS0+Y29sTWF4ID0gbGlzdF9sZW5ndGgoY3h0LT50YWJsZWZ1bmMt PmNvbHZhbGV4cHJzKSAtIDE7CiAKLQlub2RlLT5lcnJvck9uRXJyb3IgPQotCQljeHQtPnRh YmxlLT5vbl9lcnJvciAmJgotCQljeHQtPnRhYmxlLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNP Tl9CRUhBVklPUl9FUlJPUjsKKwlub2RlLT5lcnJvck9uRXJyb3IgPSBjeHQtPnRhYmxlLT5v bl9lcnJvciA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOwogCiAJcmV0dXJuIG5vZGU7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggODk2NGY3M2I5MjkuLjIzYmJiMDlj NzEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC04NTQ0LDcgKzg1NDQs NyBAQCBnZXRfanNvbl9yZXR1cm5pbmcoSnNvblJldHVybmluZyAqcmV0dXJuaW5nLCBTdHJp bmdJbmZvIGJ1ZiwKIH0KIAogc3RhdGljIHZvaWQKLWdldF9qc29uX2JlaGF2aW9yKEpzb25C ZWhhdmlvciAqYmVoYXZpb3IsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKK2dldF9qc29u X2JlaGF2aW9yKEpzb25CZWhhdmlvclR5cGUgYmVoYXZpb3IsIGRlcGFyc2VfY29udGV4dCAq Y29udGV4dCwKIAkJCQkgIGNvbnN0IGNoYXIgKm9uKQogewogCS8qCkBAIC04NTUzLDYgKzg1 NTMsNyBAQCBnZXRfanNvbl9iZWhhdmlvcihKc29uQmVoYXZpb3IgKmJlaGF2aW9yLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQsCiAJICovCiAJY29uc3QgY2hhciAqYmVoYXZpb3JfbmFt ZXNbXSA9CiAJeworCQkiIFVOU1BFQ0lGSUVEIiwKIAkJIiBOVUxMIiwKIAkJIiBFUlJPUiIs CiAJCSIgRU1QVFkiLApAQCAtODU2MCwxNyArODU2MSwxMyBAQCBnZXRfanNvbl9iZWhhdmlv cihKc29uQmVoYXZpb3IgKmJlaGF2aW9yLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJ CSIgRkFMU0UiLAogCQkiIFVOS05PV04iLAogCQkiIEVNUFRZIEFSUkFZIiwKLQkJIiBFTVBU WSBPQkpFQ1QiLAotCQkiIERFRkFVTFQgIgorCQkiIEVNUFRZIE9CSkVDVCIKIAl9OwogCi0J aWYgKChpbnQpIGJlaGF2aW9yLT5idHlwZSA8IDAgfHwgYmVoYXZpb3ItPmJ0eXBlID49IGxl bmd0aG9mKGJlaGF2aW9yX25hbWVzKSkKLQkJZWxvZyhFUlJPUiwgImludmFsaWQganNvbiBi ZWhhdmlvciB0eXBlOiAlZCIsIGJlaGF2aW9yLT5idHlwZSk7CisJaWYgKChpbnQpIGJlaGF2 aW9yIDwgMSB8fCBiZWhhdmlvciA+PSBsZW5ndGhvZihiZWhhdmlvcl9uYW1lcykpCisJCWVs b2coRVJST1IsICJpbnZhbGlkIGpzb24gYmVoYXZpb3IgdHlwZTogJWQiLCBiZWhhdmlvcik7 CiAKLQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgYmVoYXZpb3JfbmFt ZXNbYmVoYXZpb3ItPmJ0eXBlXSk7Ci0KLQlpZiAoYmVoYXZpb3ItPmJ0eXBlID09IEpTT05f QkVIQVZJT1JfREVGQVVMVCkKLQkJZ2V0X3J1bGVfZXhwcihiZWhhdmlvci0+ZGVmYXVsdF9l eHByLCBjb250ZXh0LCBmYWxzZSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0 LT5idWYsIGJlaGF2aW9yX25hbWVzW2JlaGF2aW9yXSk7CiAKIAlhcHBlbmRTdHJpbmdJbmZv KGNvbnRleHQtPmJ1ZiwgIiBPTiAlcyIsIG9uKTsKIH0KQEAgLTg1OTcsMTAgKzg1OTQsMTAg QEAgZ2V0X2pzb25fZXhwcl9vcHRpb25zKEpzb25FeHByICpqc2V4cHIsIGRlcGFyc2VfY29u dGV4dCAqY29udGV4dCwKIAl9CiAKIAlpZiAoanNleHByLT5vcCAhPSBKU09OX0VYSVNUU19P UCAmJgotCQlqc2V4cHItPm9uX2VtcHR5LT5idHlwZSAhPSBkZWZhdWx0X2JlaGF2aW9yKQor CQlqc2V4cHItPm9uX2VtcHR5ICE9IGRlZmF1bHRfYmVoYXZpb3IpCiAJCWdldF9qc29uX2Jl aGF2aW9yKGpzZXhwci0+b25fZW1wdHksIGNvbnRleHQsICJFTVBUWSIpOwogCi0JaWYgKGpz ZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9IGRlZmF1bHRfYmVoYXZpb3IpCisJaWYgKGpzZXhw ci0+b25fZXJyb3IgIT0gZGVmYXVsdF9iZWhhdmlvcikKIAkJZ2V0X2pzb25fYmVoYXZpb3Io anNleHByLT5vbl9lcnJvciwgY29udGV4dCwgIkVSUk9SIik7CiB9CiAKQEAgLTExMzY0LDcg KzExMzYxLDcgQEAgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29u VGFibGVQYXJlbnQgKm5vZGUsCiAJCQlkZWZhdWx0X2JlaGF2aW9yID0gSlNPTl9CRUhBVklP Ul9OVUxMOwogCQl9CiAKLQkJaWYgKGpleHByLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9C RUhBVklPUl9FUlJPUikKKwkJaWYgKGpleHByLT5vbl9lcnJvciA9PSBKU09OX0JFSEFWSU9S X0VSUk9SKQogCQkJZGVmYXVsdF9iZWhhdmlvciA9IEpTT05fQkVIQVZJT1JfRVJST1I7CiAK IAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgUEFUSCAiKTsKQEAgLTExNDQ3LDcg KzExNDQ0LDcgQEAgZ2V0X2pzb25fdGFibGUoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAlhcHBlbmRDb250ZXh0S2V5d29y ZChjb250ZXh0LCAiUExBTiAiLCAwLCAwLCAwKTsKIAlnZXRfanNvbl90YWJsZV9wbGFuKHRm LCAoTm9kZSAqKSByb290LCBjb250ZXh0LCB0cnVlKTsKIAotCWlmIChqZXhwci0+b25fZXJy b3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRU1QVFkpCisJaWYgKGpleHByLT5vbl9lcnJv ciAhPSBKU09OX0JFSEFWSU9SX0VNUFRZKQogCQlnZXRfanNvbl9iZWhhdmlvcihqZXhwci0+ b25fZXJyb3IsIGNvbnRleHQsICJFUlJPUiIpOwogCiAJaWYgKFBSRVRUWV9JTkRFTlQoY29u dGV4dCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxl LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1ZXJ5anVtYmxlLmMKaW5kZXggZWVhYTBi MzFmZTIuLmFhYjc0MzQ1YTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3F1ZXJ5anVtYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWp1bWJs ZS5jCkBAIC03OTgsMTMgKzc5OCw4IEBAIEp1bWJsZUV4cHIoSnVtYmxlU3RhdGUgKmpzdGF0 ZSwgTm9kZSAqbm9kZSkKIAkJCQkJQVBQX0pVTUJfU1RSSU5HKGxmaXJzdF9ub2RlKFN0cmlu ZywgdGVtcCktPnN2YWwpOwogCQkJCX0KIAkJCQlKdW1ibGVFeHByKGpzdGF0ZSwgKE5vZGUg KikgamV4cHItPnBhc3NpbmdfdmFsdWVzKTsKLQkJCQlpZiAoamV4cHItPm9uX2VtcHR5KQot CQkJCXsKLQkJCQkJQVBQX0pVTUIoamV4cHItPm9uX2VtcHR5LT5idHlwZSk7Ci0JCQkJCUp1 bWJsZUV4cHIoanN0YXRlLCBqZXhwci0+b25fZW1wdHktPmRlZmF1bHRfZXhwcik7Ci0JCQkJ fQotCQkJCUFQUF9KVU1CKGpleHByLT5vbl9lcnJvci0+YnR5cGUpOwotCQkJCUp1bWJsZUV4 cHIoanN0YXRlLCBqZXhwci0+b25fZXJyb3ItPmRlZmF1bHRfZXhwcik7CisJCQkJQVBQX0pV TUIoamV4cHItPm9uX2VtcHR5KTsKKwkJCQlBUFBfSlVNQihqZXhwci0+b25fZXJyb3IpOwog CQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgVF9MaXN0OgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmgKaW5kZXggZDY3NDE5YzY2YTkuLjRkMjE1OWJhN2VmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNFeHByLmgKQEAgLTY5Nyw4ICs2OTcsNiBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0 ZXAKIAkJc3RydWN0CiAJCXsKIAkJCXN0cnVjdCBKc29uRXhwclN0YXRlICpqc2VzdGF0ZTsK LQkJCWludAkJCWp1bXBfZG9uZTsKLQkJCWludAkJCWp1bXBfZGVmYXVsdF9vbl9lcnJvcjsg LyogT04gRVJST1IgREVGQVVMVCBleHByZXNzaW9uICovCiAJCX0JCQlqc29uZXhwcjsKIAog CQkvKiBmb3IgRUVPUF9KU09ORVhQUl9TS0lQICovCkBAIC04MzgsNyArODM2LDcgQEAgZXh0 ZXJuIHZvaWQgRXhlY0V2YWxTeXNWYXIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwKIAkJCQkJCSAgIEV4cHJDb250ZXh0ICplY29udGV4dCwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uQ29uc3RydWN0b3IoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29u dGV4dCk7Ci1leHRlcm4gYm9vbCBFeGVjRXZhbEpzb25FeHByKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3ApOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uRXhwcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiBib29sIEV4ZWNFdmFs SnNvbkV4cHJTa2lwKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOwogCiBl eHRlcm4gdm9pZCBFeGVjQWdnSW5pdEdyb3VwKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3Rh dGVQZXJUcmFucyBwZXJ0cmFucywgQWdnU3RhdGVQZXJHcm91cCBwZXJncm91cCwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvbWFrZWZ1bmNzLmgKaW5kZXggMDZlNjM2OTAyNmEuLjMwM2I2NmUwYTI3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9tYWtlZnVuY3MuaApAQCAtMTA5LDcgKzEwOSw2IEBAIGV4dGVybiBWYWN1dW1SZWxh dGlvbiAqbWFrZVZhY3V1bVJlbGF0aW9uKFJhbmdlVmFyICpyZWxhdGlvbiwgT2lkIG9pZCwg TGlzdCAqdmFfCiBleHRlcm4gSnNvbkZvcm1hdCAqbWFrZUpzb25Gb3JtYXQoSnNvbkZvcm1h dFR5cGUgdHlwZSwgSnNvbkVuY29kaW5nIGVuY29kaW5nLAogCQkJCQkJCQkgIGludCBsb2Nh dGlvbik7CiBleHRlcm4gSnNvblZhbHVlRXhwciAqbWFrZUpzb25WYWx1ZUV4cHIoRXhwciAq ZXhwciwgSnNvbkZvcm1hdCAqZm9ybWF0KTsKLWV4dGVybiBKc29uQmVoYXZpb3IgKm1ha2VK c29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2RlICpleHByKTsKIGV4dGVy biBOb2RlICptYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUg dHlwZSwKIAkJCQkJCQkJCSBOb2RlICpwbGFuMSwgTm9kZSAqcGxhbjIsIGludCBsb2NhdGlv bik7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1ZShOb2RlICprZXksIE5vZGUgKnZh bHVlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiMzc2MDMxODU2Mi4uM2E2NjNj ZGU4OWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE2NzgsOCArMTY3OCw4IEBA IHR5cGVkZWYgc3RydWN0IEpzb25GdW5jRXhwcgogCUpzb25FeHByT3AJb3A7CQkJCS8qIGV4 cHJlc3Npb24gdHlwZSAqLwogCUpzb25Db21tb24gKmNvbW1vbjsJCQkvKiBjb21tb24gc3lu dGF4ICovCiAJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIG91dHB1dCBjbGF1c2UsIGlmIHNw ZWNpZmllZCAqLwotCUpzb25CZWhhdmlvciAqb25fZW1wdHk7CQkvKiBPTiBFTVBUWSBiZWhh dmlvciwgaWYgc3BlY2lmaWVkICovCi0JSnNvbkJlaGF2aW9yICpvbl9lcnJvcjsJCS8qIE9O IEVSUk9SIGJlaGF2aW9yLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29uQmVoYXZpb3JUeXBlIG9u X2VtcHR5OwkvKiBPTiBFTVBUWSBiZWhhdmlvciwgaWYgc3BlY2lmaWVkICovCisJSnNvbkJl aGF2aW9yVHlwZSBvbl9lcnJvcjsJLyogT04gRVJST1IgYmVoYXZpb3IsIGlmIHNwZWNpZmll ZCAqLwogCUpzb25XcmFwcGVyIHdyYXBwZXI7CQkvKiBhcnJheSB3cmFwcGVyIGJlaGF2aW9y IChKU09OX1FVRVJZIG9ubHkpICovCiAJYm9vbAkJb21pdF9xdW90ZXM7CS8qIG9taXQgb3Ig a2VlcCBxdW90ZXM/IChKU09OX1FVRVJZIG9ubHkpICovCiAJaW50CQkJbG9jYXRpb247CQkv KiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwpAQCAtMTcwMSw4ICsxNzAx LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29sdW1uCiAJSnNvbldyYXBwZXIgd3Jh cHBlcjsJCS8qIFdSQVBQRVIgYmVoYXZpb3IgZm9yIGZvcm1hdHRlZCBjb2x1bW5zICovCiAJ Ym9vbAkJb21pdF9xdW90ZXM7CS8qIG9taXQgb3Iga2VlcCBxdW90ZXMgb24gc2NhbGFyIHN0 cmluZ3M/ICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIG5lc3RlZCBjb2x1bW5zICovCi0J SnNvbkJlaGF2aW9yICpvbl9lbXB0eTsJCS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCi0JSnNv bkJlaGF2aW9yICpvbl9lcnJvcjsJCS8qIE9OIEVSUk9SIGJlaGF2aW9yICovCisJSnNvbkJl aGF2aW9yVHlwZSBvbl9lbXB0eTsJLyogT04gRU1QVFkgYmVoYXZpb3IgKi8KKwlKc29uQmVo YXZpb3JUeXBlIG9uX2Vycm9yOwkvKiBPTiBFUlJPUiBiZWhhdmlvciAqLwogCWludAkJCWxv Y2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gSnNv blRhYmxlQ29sdW1uOwogCkBAIC0xNzU2LDcgKzE3NTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBK c29uVGFibGUKIAlKc29uQ29tbW9uICpjb21tb247CQkJLyogY29tbW9uIEpTT04gcGF0aCBz eW50YXggZmllbGRzICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIGxpc3Qgb2YgSnNvblRh YmxlQ29sdW1uICovCiAJSnNvblRhYmxlUGxhbiAqcGxhbjsJCS8qIGpvaW4gcGxhbiwgaWYg c3BlY2lmaWVkICovCi0JSnNvbkJlaGF2aW9yICpvbl9lcnJvcjsJCS8qIE9OIEVSUk9SIGJl aGF2aW9yLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29uQmVoYXZpb3JUeXBlIG9uX2Vycm9yOwkv KiBPTiBFUlJPUiBiZWhhdmlvciwgaWYgc3BlY2lmaWVkICovCiAJQWxpYXMJICAgKmFsaWFz OwkJCS8qIHRhYmxlIGFsaWFzIGluIEZST00gY2xhdXNlICovCiAJYm9vbAkJbGF0ZXJhbDsJ CS8qIGRvZXMgaXQgaGF2ZSBMQVRFUkFMIHByZWZpeD8gKi8KIAlpbnQJCQlsb2NhdGlvbjsJ CS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCmluZGV4IDI1YTBmYjhhNDQ1Li5lMDBjNDAzZmRlNyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJp bW5vZGVzLmgKQEAgLTE0MjgsMTUgKzE0MjgsMTUgQEAgdHlwZWRlZiBlbnVtIEpzb25Gb3Jt YXRUeXBlCiAgKi8KIHR5cGVkZWYgZW51bSBKc29uQmVoYXZpb3JUeXBlCiB7Ci0JSlNPTl9C RUhBVklPUl9OVUxMID0gMCwKKwlKU09OX0JFSEFWSU9SX1VOU1BFQyA9IDAsCisJSlNPTl9C RUhBVklPUl9OVUxMLAogCUpTT05fQkVIQVZJT1JfRVJST1IsCiAJSlNPTl9CRUhBVklPUl9F TVBUWSwKIAlKU09OX0JFSEFWSU9SX1RSVUUsCiAJSlNPTl9CRUhBVklPUl9GQUxTRSwKIAlK U09OX0JFSEFWSU9SX1VOS05PV04sCiAJSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWSwKLQlK U09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVCwKLQlKU09OX0JFSEFWSU9SX0RFRkFVTFQKKwlK U09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVAogfSBKc29uQmVoYXZpb3JUeXBlOwogCiAvKgpA QCAtMTU0MCwxNyArMTU0MCw2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25Jc1ByZWRpY2F0ZQog CWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24g Ki8KIH0gSnNvbklzUHJlZGljYXRlOwogCi0vKgotICogSnNvbkJlaGF2aW9yIC0KLSAqCQly ZXByZXNlbnRhdGlvbiBvZiBKU09OIE9OIC4uLiBCRUhBVklPUiBjbGF1c2UKLSAqLwotdHlw ZWRlZiBzdHJ1Y3QgSnNvbkJlaGF2aW9yCi17Ci0JTm9kZVRhZwkJdHlwZTsKLQlKc29uQmVo YXZpb3JUeXBlIGJ0eXBlOwkJLyogYmVoYXZpb3IgdHlwZSAqLwotCU5vZGUJICAgKmRlZmF1 bHRfZXhwcjsJLyogZGVmYXVsdCBleHByZXNzaW9uLCBpZiBhbnkgKi8KLX0gSnNvbkJlaGF2 aW9yOwotCiAvKgogICogSnNvbkV4cHIgLQogICoJCXRyYW5zZm9ybWVkIHJlcHJlc2VudGF0 aW9uIG9mIEpTT05fVkFMVUUoKSwgSlNPTl9RVUVSWSgpLCBKU09OX0VYSVNUUygpCkBAIC0x NTY1LDggKzE1NTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uRXhwcgogCUxpc3QJICAgKnBh c3NpbmdfbmFtZXM7CS8qIFBBU1NJTkcgYXJndW1lbnQgbmFtZXMgKi8KIAlMaXN0CSAgICpw YXNzaW5nX3ZhbHVlczsgLyogUEFTU0lORyBhcmd1bWVudCB2YWx1ZXMgKi8KIAlKc29uUmV0 dXJuaW5nICpyZXR1cm5pbmc7CS8qIFJFVFVSTklORyBjbGF1c2UgdHlwZS9mb3JtYXQgaW5m byAqLwotCUpzb25CZWhhdmlvciAqb25fZW1wdHk7CQkvKiBPTiBFTVBUWSBiZWhhdmlvciAq LwotCUpzb25CZWhhdmlvciAqb25fZXJyb3I7CQkvKiBPTiBFUlJPUiBiZWhhdmlvciAqLwor CUpzb25CZWhhdmlvclR5cGUgb25fZW1wdHk7CS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCisJ SnNvbkJlaGF2aW9yVHlwZSBvbl9lcnJvcjsJLyogT04gRVJST1IgYmVoYXZpb3IgKi8KIAlK c29uV3JhcHBlciB3cmFwcGVyOwkJLyogV1JBUFBFUiBmb3IgSlNPTl9RVUVSWSAqLwogCU9p ZAkJCWNvbGxhdGlvbjsJCS8qIENvbGxhdGlvbiBvZiByZXN1bHQsIG9yIEludmFsaWRPaWQg aWYgbm9uZSAqLwogCWJvb2wJCW9taXRfcXVvdGVzOwkvKiBLRUVQL09NSVQgUVVPVEVTIGZv ciBKU09OX1FVRVJZICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iX3NxbGpzb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9z cWxqc29uLm91dAppbmRleCBmY2Q5MjExMzBmNS4uNTYxMGE5NGYzZGQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmJfc3FsanNvbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYl9zcWxqc29uLm91dApAQCAtMzM0LDExICsz MzQsOSBAQCBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGludCk7CiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGludCBFUlJPUiBPTiBFUlJPUik7CiBFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZv ciB0eXBlIGludGVnZXI6ICJhYWEiCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSIn LCAnJCcgUkVUVVJOSU5HIGludCBERUZBVUxUIDExMSBPTiBFUlJPUik7Ci0ganNvbl92YWx1 ZSAKLS0tLS0tLS0tLS0tLQotICAgICAgICAxMTEKLSgxIHJvdykKLQorRVJST1I6ICBzeW50 YXggZXJyb3IgYXQgb3IgbmVhciAiREVGQVVMVCIKK0xJTkUgMTogLi4uRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBERUZBVUxUIDExLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklO RyBpbnQpICsgMjM0OwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQpAQCAtMzc2LDExICszNzQs OSBAQCBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIi1pbmYiJywgJyQnIFJFVFVSTklORyBm bG9hdDQpOwogKDEgcm93KQogCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImVyciInLCAn JCcgUkVUVVJOSU5HIGZsb2F0NCBERUZBVUxUIC0xIE9OIEVSUk9SKTsKLSBqc29uX3ZhbHVl IAotLS0tLS0tLS0tLS0tCi0gICAgICAgICAtMQotKDEgcm93KQotCitFUlJPUjogIHN5bnRh eCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiAuLi5DVCBKU09OX1ZBTFVF KGpzb25iICciZXJyIicsICckJyBSRVRVUk5JTkcgZmxvYXQ0IERFRkFVTFQgLTEuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5H IGZsb2F0NCBFUlJPUiBPTiBFUlJPUik7CiBFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4 IGZvciB0eXBlIHJlYWw6ICJlcnIiCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAgJzEuMjMn LCAgJyQnIFJFVFVSTklORyBmbG9hdDgpOwpAQCAtNDA4LDExICs0MDQsOSBAQCBTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnIi1pbmYiJywgJyQnIFJFVFVSTklORyBmbG9hdDgpOwogKDEg cm93KQogCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5H IGZsb2F0OCBERUZBVUxUIC0xIE9OIEVSUk9SKTsKLSBqc29uX3ZhbHVlIAotLS0tLS0tLS0t LS0tCi0gICAgICAgICAtMQotKDEgcm93KQotCitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBv ciBuZWFyICJERUZBVUxUIgorTElORSAxOiAuLi5DVCBKU09OX1ZBTFVFKGpzb25iICciZXJy IicsICckJyBSRVRVUk5JTkcgZmxvYXQ4IERFRkFVTFQgLTEuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5HIGZsb2F0OCBFUlJP UiBPTiBFUlJPUik7CiBFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGRv dWJsZSBwcmVjaXNpb246ICJlcnIiCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAgJzEuMjMn LCAgJyQnIFJFVFVSTklORyBudW1lcmljKTsKQEAgLTQ0MCwxMSArNDM0LDkgQEAgU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyItaW5mIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7CiAo MSByb3cpCiAKIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciZXJyIicsICckJyBSRVRVUk5J TkcgbnVtZXJpYyBERUZBVUxUIC0xIE9OIEVSUk9SKTsKLSBqc29uX3ZhbHVlIAotLS0tLS0t LS0tLS0tCi0gICAgICAgICAtMQotKDEgcm93KQotCitFUlJPUjogIHN5bnRheCBlcnJvciBh dCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiAuLi5UIEpTT05fVkFMVUUoanNvbmIgJyJl cnIiJywgJyQnIFJFVFVSTklORyBudW1lcmljIERFRkFVTFQgLTEuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImVyciInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMg RVJST1IgT04gRVJST1IpOwogRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlw ZSBudW1lcmljOiAiZXJyIgogLS0gVGVzdCBmb3IgZG9tYWluIHR5cGVzCkBAIC00NzAsOSAr NDYyLDkgQEAgRVJST1I6ICByZXR1cm5pbmcgdHlwZSBzcWxqc29uYl9pbnRfbm90X251bGwg aXMgbm90IHN1cHBvcnRlZCBpbiBKU09OX1ZBTFVFKCkKIExJTkUgMTogU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJzEnLCAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vLi4uCiAg ICAgICAgICAgICAgICBeCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnIFJF VFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVMVCBOVUxMIE9OIEVSUk9SKTsK LUVSUk9SOiAgcmV0dXJuaW5nIHR5cGUgc3FsanNvbmJfaW50X25vdF9udWxsIGlzIG5vdCBz dXBwb3J0ZWQgaW4gSlNPTl9WQUxVRSgpCi1MSU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVFKGpz b25iICcxJywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9uby4uLgotICAgICAgICAg ICAgICAgXgorRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiREVGQVVMVCIKK0xJ TkUgMTogLi4uKGpzb25iICcxJywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3Rf bnVsbCBERUZBVUxUIE5VLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0gVGVzdCByZXR1cm5pbmcgb2Ygbm9u LXNjYWxhciBpdGVtcwogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1tdJywgJyQnKTsKICBq c29uX3ZhbHVlIApAQCAtNDk5LDExICs0OTEsOSBAQCBTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnMScsICckLmEnKTsKIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAk LmEnIEVSUk9SIE9OIEVSUk9SKTsKIEVSUk9SOiAganNvbnBhdGggbWVtYmVyIGFjY2Vzc29y IGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYW4gb2JqZWN0CiBTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUICdlcnJvcicgT04gRVJST1IpOwotIGpz b25fdmFsdWUgCi0tLS0tLS0tLS0tLS0KLSBlcnJvcgotKDEgcm93KQotCitFUlJPUjogIHN5 bnRheCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiBTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUICdlcnJvcicgT04uLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRVJST1IpOwog IGpzb25fdmFsdWUgCiAtLS0tLS0tLS0tLS0KQEAgLTUxMyw2MSArNTAzLDQ1IEBAIFNFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVSUk9SKTsKIFNF TEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZIEVS Uk9SIE9OIEVSUk9SKTsKIEVSUk9SOiAgbm8gU1FML0pTT04gaXRlbQogU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsKLSBq c29uX3ZhbHVlIAotLS0tLS0tLS0tLS0tCi0gMgotKDEgcm93KQotCitFUlJPUjogIHN5bnRh eCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUIDIgT04gRVJST1IuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsK LSBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KK0VSUk9SOiAgc3lu dGF4IGVycm9yIGF0IG9yIG5lYXIgIkRFRkFVTFQiCitMSU5FIDE6IFNFTEVDVCBKU09OX1ZB TFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFNFTEVDVCBKU09O X1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVSUk9SKTsKLSBq c29uX3ZhbHVlIAotLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KK0VSUk9SOiAgc3ludGF4 IGVycm9yIGF0IG9yIG5lYXIgIkRFRkFVTFQiCitMSU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVSUk9SKS4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFVTFQgJzIn IE9OIEVSUk9SKTsKLSBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0K K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkRFRkFVTFQiCitMSU5FIDE6IC4u LkVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIE5VTEwgT04gRU1QVFkgREVG QVVMVCAnMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xh eCAkLmEnIERFRkFVTFQgJzInIE9OIEVNUFRZIERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKLUVS Uk9SOiAgREVGQVVMVCBPTiBFTVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZAor RVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiREVGQVVMVCIKIExJTkUgMTogU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicgT04gRU1Q VFkgLi4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBP TiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7Ci0ganNvbl92YWx1ZSAKLS0tLS0tLS0t LS0tLQotIDMKLSgxIHJvdykKLQorRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAi REVGQVVMVCIKK0xJTkUgMTogLi4uQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5h JyBFUlJPUiBPTiBFTVBUWSBERUZBVUxUICczLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKIEVSUk9SOiAg SlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmds ZXRvbiBzY2FsYXIgaXRlbQogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJyRb Kl0nIERFRkFVTFQgJzAnIE9OIEVSUk9SKTsKLSBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0t Ci0gMAotKDEgcm93KQotCitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJERUZB VUxUIgorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzEsMl0nLCAnJFsqXScg REVGQVVMVCAnMCcgT04gRVJST1IuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KIFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIiAiXScs ICckWypdJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsKIEVSUk9SOiAgaW52YWxp ZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogIiAiCiBTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBERUZBVUxUIDIgKyAzIE9O IEVSUk9SKTsKLSBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0tCi0gICAgICAgICAgNQotKDEg cm93KQotCitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElO RSAxOiAuLi5DVCBKU09OX1ZBTFVFKGpzb25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcg aW50IERFRkFVTFQgMiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn WyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBERUZBVUxUIDIgKyAzIE9OIEVSUk9SKTsK LSBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0tCi0gICAgICAgICAgMQotKDEgcm93KQotCitF UlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiAuLi5D VCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFV TFQgMiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QKIAl4LAogCUpTT05fVkFMVUUoCkBAIC01NzUs MTUgKzU0OSwxNSBAQCBTRUxFQ1QKIAkJJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIHggQVMg eAogCQlSRVRVUk5JTkcgaW50CiAJCU5VTEwgT04gRU1QVFkKLQkJREVGQVVMVCAtMiBPTiBF UlJPUgorCQlOVUxMIE9OIEVSUk9SCiAJKSB5CiBGUk9NCiAJZ2VuZXJhdGVfc2VyaWVzKDAs IDIpIHg7Ci0geCB8IHkgIAotLS0tKy0tLS0KLSAwIHwgLTIKLSAxIHwgIDIKLSAyIHwgICAK KyB4IHwgeSAKKy0tLSstLS0KKyAwIHwgIAorIDEgfCAyCisgMiB8ICAKICgzIHJvd3MpCiAK IFNFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcg KDEsIDIgKScgQVMgYSk7CkBAIC02MzIsMjUgKzYwNiwyNSBAQCBTRUxFQ1QgSlNPTl9WQUxV RSgnMSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcgaW50CiAgICAgICAgICAgICAgICAgICBE RUZBVUxUIDEgLyB4IE9OIEVNUFRZCiAgICAgICAgICAgICAgICAgICBERUZBVUxUIDIgT04g RVJST1IpCiBGUk9NIChWQUxVRVMgKDE6OmludCksICgwKSkgeCh4KTsKLUVSUk9SOiAgREVG QVVMVCBPTiBFTVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZAorRVJST1I6ICBz eW50YXggZXJyb3IgYXQgb3IgbmVhciAiREVGQVVMVCIKIExJTkUgMjogICAgICAgICAgICAg ICAgICAgREVGQVVMVCAxIC8geCBPTiBFTVBUWQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgogU0VMRUNUIEpTT05f VkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJOSU5HIGludCBERUZBVUxUIC0xIE9OIEVN UFRZKTsKLUVSUk9SOiAgREVGQVVMVCBPTiBFTVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1 cHBvcnRlZAotTElORSAxOiAuLi5TT05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJO SU5HIGludCBERUZBVUxUIC0xIE9OIEVNUFQuLi4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitFUlJPUjogIHN5bnRh eCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxV RSgnMSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgLTEuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CiBTRUxFQ1QgSlNPTl9WQUxVRSgnMSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcgaW50IERF RkFVTFQgJy0xJyBPTiBFTVBUWSk7Ci1FUlJPUjogIERFRkFVTFQgT04gRU1QVFkgZXhwcmVz c2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQKLUxJTkUgMTogLi4uU09OX1ZBTFVFKCcxJzo6anNv bmIsICckLngnIFJFVFVSTklORyBpbnQgREVGQVVMVCAnLTEnIE9OIEVNLi4uCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiREVGQVVMVCIKK0xJTkUgMTog U0VMRUNUIEpTT05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJOSU5HIGludCBERUZB VUxUICctLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgogU0VMRUNUIEpTT05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcg UkVUVVJOSU5HIGludCBERUZBVUxUICdlcnInIE9OIEVNUFRZKTsKLUVSUk9SOiAgREVGQVVM VCBPTiBFTVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZAotTElORSAxOiAuLi5T T05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJOSU5HIGludCBERUZBVUxUICdlcnIn IE9OIEUuLi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJE RUZBVUxUIgorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxVRSgnMSc6Ompzb25iLCAnJC54JyBS RVRVUk5JTkcgaW50IERFRkFVTFQgJ2UuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QgSlNPTl9WQUxVRSgn MSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgLTE6OmZsb2F0IE9OIEVN UFRZKTsKLUVSUk9SOiAgREVGQVVMVCBPTiBFTVBUWSBleHByZXNzaW9ucyBhcmUgbm90IHN1 cHBvcnRlZAotTElORSAxOiAuLi5TT05fVkFMVUUoJzEnOjpqc29uYiwgJyQueCcgUkVUVVJO SU5HIGludCBERUZBVUxUIC0xOjpmbG9hdCAuLi4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitFUlJPUjogIHN5bnRh eCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiBTRUxFQ1QgSlNPTl9WQUxV RSgnMSc6Ompzb25iLCAnJC54JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgLTEuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CiAtLSBKU09OX1FVRVJZCiBTRUxFQ1QKIAlKU09OX1FVRVJZKGpzLCAnJCcpLApAQCAtODIw LDExICs3OTQsOSBAQCBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJS T1IgT04gRU1QVFkpOwogKDEgcm93KQogCiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10n LCAnJFsqXScgRVJST1IgT04gRU1QVFkgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOwot IGpzb25fcXVlcnkgCi0tLS0tLS0tLS0tLS0KLSAiZW1wdHkiCi0oMSByb3cpCi0KK0VSUk9S OiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkRFRkFVTFQiCitMSU5FIDE6IC4uLkxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgREVGQVVMVCAn Ii4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KIFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF UlJPUiBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKTsKICBqc29uX3F1ZXJ5IAogLS0tLS0tLS0t LS0tCkBAIC04NTUsMTEgKzgyNyw5IEBAIFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwy XScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CiBFUlJPUjogIEpTT04gcGF0aCBleHByZXNz aW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gaXRlbSB3aXRob3V0 IHdyYXBwZXIKIEhJTlQ6ICBVc2UgV0lUSCBXUkFQUEVSIGNsYXVzZSB0byB3cmFwIFNRTC9K U09OIGl0ZW0gc2VxdWVuY2UgaW50byBhcnJheS4KIFNFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMSwyXScsICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBFUlJPUik7Ci0ganNvbl9x dWVyeSAKLS0tLS0tLS0tLS0tLQotICJlbXB0eSIKLSgxIHJvdykKLQorRVJST1I6ICBzeW50 YXggZXJyb3IgYXQgb3IgbmVhciAiREVGQVVMVCIKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9OLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb24pOwogIGpzb25f cXVlcnkgCiAtLS0tLS0tLS0tLS0KQEAgLTE0MTcsMjMgKzEzODcsMTcgQEAgRVJST1I6ICBq c29ucGF0aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmpl Y3QKIFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChh IGludCBQQVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0 OwogRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyAgIE5VTEwgT04gRU1Q VFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7Ci0gYSAKLS0tLQotIDIKLSgxIHJvdykKLQor RVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiREVGQVVMVCIKK0xJTkUgMTogLi4u ImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnICAgTlVMTCBPTiBFTVBUWSBERUZB VUxUIDIgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgogU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICci YSInLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnc3RyaWN0ICQuYScgTlVMTCBPTiBFTVBU WSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKLSBhIAotLS0tCi0gMgotKDEgcm93KQotCitF UlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJERUZBVUxUIgorTElORSAxOiAuLi4k JyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3QgJC5hJyBOVUxMIE9OIEVNUFRZIERFRkFV TFQgMiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdsYXggJC5hJyBOVUxMIE9OIEVNUFRZIERF RkFVTFQgMiBPTiBFUlJPUikpIGp0OwotIGEgCi0tLS0KLSAgCi0oMSByb3cpCi0KK0VSUk9S OiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkRFRkFVTFQiCitMSU5FIDE6IC4uLiwgJyQn IENPTFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIE5VTEwgT04gRU1QVFkgREVGQVVMVCAy IC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KIC0tIEpTT05fVEFCTEU6IEVYSVNUUyBQQVRIIHR5cGVzCiBTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDQg RVhJU1RTIFBBVEggJyQuYScpKTsKICBhIApAQCAtMTc1MywyNCArMTcxNywyNCBAQCBmcm9t CiAJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBv cmRpbmFsaXR5LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVm YXVsdCAtMSBvbiBlcnJvciwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVt cHR5IG51bGwgb24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMg cGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQogCSkganQ7 Ci0gbiB8IGEgIHwgYiB8IGMgIAotLS0tKy0tLS0rLS0tKy0tLS0KLSAxIHwgIDEgfCAgIHwg ICAKLSAyIHwgIDIgfCAxIHwgICAKLSAyIHwgIDIgfCAyIHwgICAKLSAyIHwgIDIgfCAzIHwg ICAKLSAyIHwgIDIgfCAgIHwgMTAKLSAyIHwgIDIgfCAgIHwgICAKLSAyIHwgIDIgfCAgIHwg MjAKLSAzIHwgIDMgfCAxIHwgICAKLSAzIHwgIDMgfCAyIHwgICAKLSA0IHwgLTEgfCAxIHwg ICAKLSA0IHwgLTEgfCAyIHwgICAKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0t LS0KKyAxIHwgMSB8ICAgfCAgIAorIDIgfCAyIHwgMSB8ICAgCisgMiB8IDIgfCAyIHwgICAK KyAyIHwgMiB8IDMgfCAgIAorIDIgfCAyIHwgICB8IDEwCisgMiB8IDIgfCAgIHwgICAKKyAy IHwgMiB8ICAgfCAyMAorIDMgfCAzIHwgMSB8ICAgCisgMyB8IDMgfCAyIHwgICAKKyA0IHwg ICB8IDEgfCAgIAorIDQgfCAgIHwgMiB8ICAgCiAoMTEgcm93cykKIAogLS0gZGVmYXVsdCBw bGFuIChvdXRlciwgdW5pb24pCkBAIC0xNzgyLDI1ICsxNzQ2LDI1IEBAIGZyb20KIAkJanR0 LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxp dHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0IC0x IG9uIGVycm9yLAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgbnVs bCBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1 bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypd JyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4gZGVmYXVs dCAob3V0ZXIsIHVuaW9uKQogCSkganQ7Ci0gbiB8IGEgIHwgYiB8IGMgIAotLS0tKy0tLS0r LS0tKy0tLS0KLSAxIHwgIDEgfCAgIHwgICAKLSAyIHwgIDIgfCAxIHwgICAKLSAyIHwgIDIg fCAyIHwgICAKLSAyIHwgIDIgfCAzIHwgICAKLSAyIHwgIDIgfCAgIHwgMTAKLSAyIHwgIDIg fCAgIHwgICAKLSAyIHwgIDIgfCAgIHwgMjAKLSAzIHwgIDMgfCAxIHwgICAKLSAzIHwgIDMg fCAyIHwgICAKLSA0IHwgLTEgfCAxIHwgICAKLSA0IHwgLTEgfCAyIHwgICAKKyBuIHwgYSB8 IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAxIHwgMSB8ICAgfCAgIAorIDIgfCAyIHwg MSB8ICAgCisgMiB8IDIgfCAyIHwgICAKKyAyIHwgMiB8IDMgfCAgIAorIDIgfCAyIHwgICB8 IDEwCisgMiB8IDIgfCAgIHwgICAKKyAyIHwgMiB8ICAgfCAyMAorIDMgfCAzIHwgMSB8ICAg CisgMyB8IDMgfCAyIHwgICAKKyA0IHwgICB8IDEgfCAgIAorIDQgfCAgIHwgMiB8ICAgCiAo MTEgcm93cykKIAogLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMpKQpA QCAtMTgxMiwyNSArMTc3NiwyNSBAQCBmcm9tCiAJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFz IHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAotCQkJYSBpbnQgcGF0aCAn bGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBvbiBlcnJvciwKKwkJCWEgaW50 IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IG51bGwgb24gZXJyb3IsCiAJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQn ICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKIAkJKQogCQlwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCiAJ KSBqdDsKLSBuIHwgYSAgfCBiIHwgYyAgCi0tLS0rLS0tLSstLS0rLS0tLQotIDEgfCAgMSB8 ICAgfCAgIAotIDIgfCAgMiB8IDEgfCAgIAotIDIgfCAgMiB8IDIgfCAgIAotIDIgfCAgMiB8 IDMgfCAgIAotIDIgfCAgMiB8ICAgfCAxMAotIDIgfCAgMiB8ICAgfCAgIAotIDIgfCAgMiB8 ICAgfCAyMAotIDMgfCAgMyB8IDEgfCAgIAotIDMgfCAgMyB8IDIgfCAgIAotIDQgfCAtMSB8 IDEgfCAgIAotIDQgfCAtMSB8IDIgfCAgIAorIG4gfCBhIHwgYiB8IGMgIAorLS0tKy0tLSst LS0rLS0tLQorIDEgfCAxIHwgICB8ICAgCisgMiB8IDIgfCAxIHwgICAKKyAyIHwgMiB8IDIg fCAgIAorIDIgfCAyIHwgMyB8ICAgCisgMiB8IDIgfCAgIHwgMTAKKyAyIHwgMiB8ICAgfCAg IAorIDIgfCAyIHwgICB8IDIwCisgMyB8IDMgfCAxIHwgICAKKyAzIHwgMyB8IDIgfCAgIAor IDQgfCAgIHwgMSB8ICAgCisgNCB8ICAgfCAyIHwgICAKICgxMSByb3dzKQogCiAtLSBzcGVj aWZpYyBwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikpCkBAIC0xODQyLDI1ICsxODA2LDI1 IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJ CW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBl bXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJy b3Igb24gZW1wdHkgbnVsbCBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5i WypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkp CiAJCXBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKIAkpIGp0OwotIG4gfCBhICB8IGMg IHwgYiAKLS0tLSstLS0tKy0tLS0rLS0tCi0gMSB8ICAxIHwgICAgfCAgCi0gMiB8ICAyIHwg MTAgfCAgCi0gMiB8ICAyIHwgICAgfCAgCi0gMiB8ICAyIHwgMjAgfCAgCi0gMiB8ICAyIHwg ICAgfCAxCi0gMiB8ICAyIHwgICAgfCAyCi0gMiB8ICAyIHwgICAgfCAzCi0gMyB8ICAzIHwg ICAgfCAxCi0gMyB8ICAzIHwgICAgfCAyCi0gNCB8IC0xIHwgICAgfCAxCi0gNCB8IC0xIHwg ICAgfCAyCisgbiB8IGEgfCBjICB8IGIgCistLS0rLS0tKy0tLS0rLS0tCisgMSB8IDEgfCAg ICB8ICAKKyAyIHwgMiB8IDEwIHwgIAorIDIgfCAyIHwgICAgfCAgCisgMiB8IDIgfCAyMCB8 ICAKKyAyIHwgMiB8ICAgIHwgMQorIDIgfCAyIHwgICAgfCAyCisgMiB8IDIgfCAgICB8IDMK KyAzIHwgMyB8ICAgIHwgMQorIDMgfCAzIHwgICAgfCAyCisgNCB8ICAgfCAgICB8IDEKKyA0 IHwgICB8ICAgIHwgMgogKDExIHJvd3MpCiAKIC0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIHVu aW9uKQpAQCAtMTg3MiwyNCArMTgzNiwyNCBAQCBmcm9tCiAJCWp0dC5qcywnc3RyaWN0ICRb Kl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAotCQkJYSBpbnQg cGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBvbiBlcnJvciwKKwkJ CWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IG51bGwgb24gZXJyb3IsCiAJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBh dGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQogCQlwbGFuIGRlZmF1bHQgKGlubmVyKQogCSkg anQ7Ci0gbiB8IGEgIHwgYiB8IGMgIAotLS0tKy0tLS0rLS0tKy0tLS0KLSAyIHwgIDIgfCAx IHwgICAKLSAyIHwgIDIgfCAyIHwgICAKLSAyIHwgIDIgfCAzIHwgICAKLSAyIHwgIDIgfCAg IHwgMTAKLSAyIHwgIDIgfCAgIHwgICAKLSAyIHwgIDIgfCAgIHwgMjAKLSAzIHwgIDMgfCAx IHwgICAKLSAzIHwgIDMgfCAyIHwgICAKLSA0IHwgLTEgfCAxIHwgICAKLSA0IHwgLTEgfCAy IHwgICAKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAyIHwgMiB8IDEg fCAgIAorIDIgfCAyIHwgMiB8ICAgCisgMiB8IDIgfCAzIHwgICAKKyAyIHwgMiB8ICAgfCAx MAorIDIgfCAyIHwgICB8ICAgCisgMiB8IDIgfCAgIHwgMjAKKyAzIHwgMyB8IDEgfCAgIAor IDMgfCAzIHwgMiB8ICAgCisgNCB8ICAgfCAxIHwgICAKKyA0IHwgICB8IDIgfCAgIAogKDEw IHJvd3MpCiAKIC0tIHNwZWNpZmljIHBsYW4gKHAgaW5uZXIgKHBiIHVuaW9uIHBjKSkKQEAg LTE5MDEsMjQgKzE4NjUsMjQgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBw CiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGggJ2xh eCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCisJCQlhIGludCBw YXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBudWxsIG9uIGVycm9yLAogCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCiAJCSkKIAkJcGxhbiAocCBpbm5lciAocGIgdW5pb24gcGMpKQogCSkg anQ7Ci0gbiB8IGEgIHwgYiB8IGMgIAotLS0tKy0tLS0rLS0tKy0tLS0KLSAyIHwgIDIgfCAx IHwgICAKLSAyIHwgIDIgfCAyIHwgICAKLSAyIHwgIDIgfCAzIHwgICAKLSAyIHwgIDIgfCAg IHwgMTAKLSAyIHwgIDIgfCAgIHwgICAKLSAyIHwgIDIgfCAgIHwgMjAKLSAzIHwgIDMgfCAx IHwgICAKLSAzIHwgIDMgfCAyIHwgICAKLSA0IHwgLTEgfCAxIHwgICAKLSA0IHwgLTEgfCAy IHwgICAKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAyIHwgMiB8IDEg fCAgIAorIDIgfCAyIHwgMiB8ICAgCisgMiB8IDIgfCAzIHwgICAKKyAyIHwgMiB8ICAgfCAx MAorIDIgfCAyIHwgICB8ICAgCisgMiB8IDIgfCAgIHwgMjAKKyAzIHwgMyB8IDEgfCAgIAor IDMgfCAzIHwgMiB8ICAgCisgNCB8ICAgfCAxIHwgICAKKyA0IHwgICB8IDIgfCAgIAogKDEw IHJvd3MpCiAKIC0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQpAQCAtMTkzMCw3ICsx ODk0LDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCiAJCWNvbHVtbnMg KAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9y IG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCisJCQlhIGludCBwYXRoICdsYXggJC5h JyBlcnJvciBvbiBlbXB0eSBudWxsIG9uIGVycm9yLAogCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAogCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyAp CiAJCSkKQEAgLTE5NTgsNyArMTkyMiw3IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsq XScgYXMgcAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBw YXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJ YSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgbnVsbCBvbiBlcnJvciwKIAkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0 aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5z ICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCkBAIC0xOTg2LDI2ICsxOTUwLDI2IEBAIGZyb20K IAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJCW4gZm9yIG9y ZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBkZWZh dWx0IC0xIG9uIGVycm9yLAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1w dHkgbnVsbCBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBw YiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkpCiAJCXBsYW4g ZGVmYXVsdCAob3V0ZXIsIGNyb3NzKQogCSkganQ7Ci0gbiB8IGEgIHwgYiB8IGMgIAotLS0t Ky0tLS0rLS0tKy0tLS0KLSAxIHwgIDEgfCAgIHwgICAKLSAyIHwgIDIgfCAxIHwgMTAKLSAy IHwgIDIgfCAxIHwgICAKLSAyIHwgIDIgfCAxIHwgMjAKLSAyIHwgIDIgfCAyIHwgMTAKLSAy IHwgIDIgfCAyIHwgICAKLSAyIHwgIDIgfCAyIHwgMjAKLSAyIHwgIDIgfCAzIHwgMTAKLSAy IHwgIDIgfCAzIHwgICAKLSAyIHwgIDIgfCAzIHwgMjAKLSAzIHwgIDMgfCAgIHwgICAKLSA0 IHwgLTEgfCAgIHwgICAKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAx IHwgMSB8ICAgfCAgIAorIDIgfCAyIHwgMSB8IDEwCisgMiB8IDIgfCAxIHwgICAKKyAyIHwg MiB8IDEgfCAyMAorIDIgfCAyIHwgMiB8IDEwCisgMiB8IDIgfCAyIHwgICAKKyAyIHwgMiB8 IDIgfCAyMAorIDIgfCAyIHwgMyB8IDEwCisgMiB8IDIgfCAzIHwgICAKKyAyIHwgMiB8IDMg fCAyMAorIDMgfCAzIHwgICB8ICAgCisgNCB8ICAgfCAgIHwgICAKICgxMiByb3dzKQogCiAt LSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCkBAIC0yMDE3LDI2ICsx OTgxLDI2IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5z ICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJv ciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJYSBpbnQgcGF0aCAnbGF4ICQu YScgZXJyb3Igb24gZW1wdHkgbnVsbCBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcg KQogCQkpCiAJCXBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKIAkpIGp0OwotIG4gfCBh ICB8IGIgfCBjICAKLS0tLSstLS0tKy0tLSstLS0tCi0gMSB8ICAxIHwgICB8ICAgCi0gMiB8 ICAyIHwgMSB8IDEwCi0gMiB8ICAyIHwgMSB8ICAgCi0gMiB8ICAyIHwgMSB8IDIwCi0gMiB8 ICAyIHwgMiB8IDEwCi0gMiB8ICAyIHwgMiB8ICAgCi0gMiB8ICAyIHwgMiB8IDIwCi0gMiB8 ICAyIHwgMyB8IDEwCi0gMiB8ICAyIHwgMyB8ICAgCi0gMiB8ICAyIHwgMyB8IDIwCi0gMyB8 ICAzIHwgICB8ICAgCi0gNCB8IC0xIHwgICB8ICAgCisgbiB8IGEgfCBiIHwgYyAgCistLS0r LS0tKy0tLSstLS0tCisgMSB8IDEgfCAgIHwgICAKKyAyIHwgMiB8IDEgfCAxMAorIDIgfCAy IHwgMSB8ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAyIHwgMiB8IDIgfCAxMAorIDIgfCAyIHwg MiB8ICAgCisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8IDMgfCAxMAorIDIgfCAyIHwgMyB8 ICAgCisgMiB8IDIgfCAzIHwgMjAKKyAzIHwgMyB8ICAgfCAgIAorIDQgfCAgIHwgICB8ICAg CiAoMTIgcm93cykKIAogc2VsZWN0CkBAIC0yMDUxLDcgKzIwMTUsNyBAQCBmcm9tCiAJCSck WypdJyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50 IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZXJyb3IsCisJCQlhIGludCBwYXRoICds YXggJC5hJyBudWxsIG9uIGVycm9yLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0n IGFzIHBiIGNvbHVtbnMgKAogCQkJCWIgdGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKIAkJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBiMSBjb2x1bW5zICgKQEAgLTIxODgs MTEgKzIxNTIsOSBAQCBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAneyJhIjogMTIzfScsICck JyB8fCAnLicgfHwgJ2EnKTsKICgxIHJvdykKIAogU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdiJyBFUlJPUiBPTiBFTVBUWSBERUZBVUxU ICdmb28nIE9OIEVSUk9SKTsKLSBqc29uX3ZhbHVlIAotLS0tLS0tLS0tLS0tCi0gZm9vCi0o MSByb3cpCi0KK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkRFRkFVTFQiCitM SU5FIDE6IC4uLm5iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYicgRVJST1IgT04g RU1QVFkgREVGQVVMVCAnZi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFNFTEVDVCBKU09OX1FVRVJZKGpzb25i ICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOwogIGpzb25fcXVlcnkgCiAtLS0t LS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iX3NxbGpz b24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmJfc3FsanNvbi5zcWwKaW5kZXgg NzZkNGM5Y2MxNGUuLjY0NDJmYTBiYzY0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qc29uYl9zcWxqc29uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29u Yl9zcWxqc29uLnNxbApAQCAtMTQ5LDcgKzE0OSw3IEBAIFNFTEVDVAogCQknJC4qID8gKEAg PiAkeCknIFBBU1NJTkcgeCBBUyB4CiAJCVJFVFVSTklORyBpbnQKIAkJTlVMTCBPTiBFTVBU WQotCQlERUZBVUxUIC0yIE9OIEVSUk9SCisJCU5VTEwgT04gRVJST1IKIAkpIHkKIEZST00K IAlnZW5lcmF0ZV9zZXJpZXMoMCwgMikgeDsKQEAgLTc3Niw3ICs3NzYsNyBAQCBmcm9tCiAJ CWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRp bmFsaXR5LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVs dCAtMSBvbiBlcnJvciwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5 IG51bGwgb24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIg Y29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAtNzkxLDcg Kzc5MSw3IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5z ICgKIAkJCW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJv ciBvbiBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJYSBpbnQgcGF0aCAnbGF4ICQu YScgZXJyb3Igb24gZW1wdHkgbnVsbCBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcg KQogCQkpCkBAIC04MDcsNyArODA3LDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypd JyBhcyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBh dGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCisJCQlh IGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBudWxsIG9uIGVycm9yLAogCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRo ICckJyApLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMg KCBjIGludCBwYXRoICckJyApCiAJCSkKQEAgLTgyMyw3ICs4MjMsNyBAQCBmcm9tCiAJCWp0 dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFs aXR5LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAt MSBvbiBlcnJvciwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IG51 bGwgb24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29s dW1ucyAoIGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sq XScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAtODM5LDcgKzgz OSw3IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgK IAkJCW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBv biBlbXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScg ZXJyb3Igb24gZW1wdHkgbnVsbCBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQog CQkpCkBAIC04NTUsNyArODU1LDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBh cyBwCiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGgg J2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCisJCQlhIGlu dCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBudWxsIG9uIGVycm9yLAogCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICck JyApLAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBj IGludCBwYXRoICckJyApCiAJCSkKQEAgLTg3MSw3ICs4NzEsNyBAQCBmcm9tCiAJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5 LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBv biBlcnJvciwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IG51bGwg b24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAtODg3LDcgKzg4Nyw3 IEBAIGZyb20KIAkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAogCQljb2x1bW5zICgKIAkJ CW4gZm9yIG9yZGluYWxpdHksCi0JCQlhIGludCBwYXRoICdsYXggJC5hJyBlcnJvciBvbiBl bXB0eSBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJy b3Igb24gZW1wdHkgbnVsbCBvbiBlcnJvciwKIAkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5i WypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKIAkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQogCQkp CkBAIC05MDMsNyArOTAzLDcgQEAgZnJvbQogCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBw CiAJCWNvbHVtbnMgKAogCQkJbiBmb3Igb3JkaW5hbGl0eSwKLQkJCWEgaW50IHBhdGggJ2xh eCAkLmEnIGVycm9yIG9uIGVtcHR5IGRlZmF1bHQgLTEgb24gZXJyb3IsCisJCQlhIGludCBw YXRoICdsYXggJC5hJyBlcnJvciBvbiBlbXB0eSBudWxsIG9uIGVycm9yLAogCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAogCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCiAJCSkKQEAgLTkxOSw3ICs5MTksNyBAQCBmcm9tCiAJCWp0dC5qcywn c3RyaWN0ICRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5LAot CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZXJyb3Igb24gZW1wdHkgZGVmYXVsdCAtMSBvbiBl cnJvciwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGVycm9yIG9uIGVtcHR5IG51bGwgb24g ZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAo IGIgaW50IHBhdGggJyQnICksCiAJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKIAkJKQpAQCAtOTM5LDcgKzkzOSw3IEBA IGZyb20KIAkJJyRbKl0nIGFzIHAKIAkJY29sdW1ucyAoCiAJCQluIGZvciBvcmRpbmFsaXR5 LAotCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlcnJvciwKKwkJCWEg aW50IHBhdGggJ2xheCAkLmEnIG51bGwgb24gZXJyb3IsCiAJCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCiAJCQkJYiB0ZXh0IGZvcm1hdCBqc29uIHBh dGggJyQnLAogCQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGIxIGNvbHVtbnMg KApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA4YTA1ODU5OTRlZS4uMjFlN2Zk NDgxMzEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cisr KyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjMyLDcgKzEyMzIs NiBAQCBKc29uQXJyYXlBZ2cKIEpzb25BcnJheUNvbnN0cnVjdG9yCiBKc29uQXJyYXlRdWVy eUNvbnN0cnVjdG9yCiBKc29uQmFzZU9iamVjdEluZm8KLUpzb25CZWhhdmlvcgogSnNvbkJl aGF2aW9yVHlwZQogSnNvbkNvbW1vbgogSnNvbkNvbnN0cnVjdG9yRXhwcgotLSAKMi4xNy4x Cgo= --------------g00NurbAwSD8acROP1fIlyRc--